10 ;›20 ;ALTERING GRAPHICS CHARACTERS›30 ;›50  *=$0600›60  JMP MOVDAT›70 ;›80 CHBAS=$02F4›90 NEWADR=$5000›0100 TABLEN=1024›0110 ;›0120 MVSRCE=$B0;PAGE ZERO PTR›0130 MVDEST=MVSRCE+2;DITTO›0140 CHRADR=MVDEST+2;DITTO›0150 ;›0160 LENPTR=$6000;ANOTHER POINTER›0170 RAMCHR=LENPTR+2;DITTO›0180 ;›0190 SHAPE .BYTE $18,$DB,$42,$7E,$18,$7E,$66,$E7;A MAN›0200 ;›0210 START=MOVDAT›0220 ;›0230 MOVDAT›0240 ;›0250 ; STORE VALUES IN PONTERS›0260 ;›0270  LDA #0›0280  STA MVSRCE;LOW BYTE›0290  LDA CHBAS;HIGH BYTE›0300  STA MVSRCE+1;HIGH BYTE›0310 ;›0320  LDA #NEWADR&255›0330  STA MVDEST›0340  LDA #NEWADR/256›0350  STA MVDEST+1›0360 ;›0370  LDA #TABLEN&255›0380  STA LENPTR›0390  LDA #TABLEN/256›0400  STA LENPTR+1›0410 ;›0420 ;START MOVE›0430 ;›0440  LDY #0›0450  LDX LENPTR+1›0460  BEQ MVPART›0470 MVPAGE›0480  LDA (MVSRCE),Y›0490  STA (MVDEST),Y›0500  INY›0510  BNE MVPAGE›0520  INC MVSRCE+1›0530  INC MVDEST+1›0540  DEX›0550  BNE MVPAGE›0560 MVPART›0570  LDX LENPTR›0580  BEQ MVEXIT›0590 MVLAST›0600  LDA (MVSRCE),Y›0610  STA (MVDEST),Y›0620  INY›0630  DEX›0640  BNE MVLAST›0650 MVEXIT›0660 ;›0670 ;PART II: CHANGE CHARACTER›0680 ;›0690 ;WE'LL ALTER THE CHARACTER "A"›0700 ;›0710  LDA #33;RAM CODE: "A"›0720  STA RAMCHR›0730 ;›0740 ;NOW WE CALCULATE RAMCHR'S ADR›0750 ;›0760  LDA #0›0770  STA RAMCHR+1;CLEARING IT›0780  LDA RAMCHR;#33:AN "A"›0790  CLC›0800  ASL A;MULT BY 2›0810  ROL RAMCHR+1;GET CARRY›0820  ASL A;AGAIN›0830  ROL RAMCHR+1›0840  ASL A;AND AGAIN›0850  ROL RAMCHR+1›0860  STA RAMCHR;MULT BY 8 DONE›0870 ;›0880 FNDADR›0890  CLC›0900  LDA RAMCHR›0910  ADC #NEWADR&255›0920  STA CHRADR›0930  LDA RAMCHR+1›0940  ADC #NEWADR/256›0950  STA CHRADR+1›0960 ;›0970 ;NOW WE CHANGE THE CHARACTER›0980 ;›0990 NEWCHR›1000  LDY #0; NR OF BYTES+1›1010 DOSHAPE›1020  LDA SHAPE,Y›1030  STA (CHRADR),Y›1040  INY›1050  CPY #8;WRONG IN BOOK›1060  BCC DOSHAPE;REPEAT TILL DONE›1070 ;›1080 ;STORE NEW CHR SET ADR IN CHBAS›1090 ;›1100  LDA #NEWADR/256;HIGH BYTE›1110  STA CHBAS›1120 ;›1130 FINI›1140  RTS››