0100 ; w⑦i d⇦e❎ le❎t④t④e❎r②s③¢0110 ; BY BILL MORRIS¢0120 ;¢0130 ONECHAR =$6FE ; TEMPORARY¢0140 HALFCHAR =$6FF ; HOLDERS¢0150 CHBAS =$2F4 ; CHAR SET POINTER¢0160 NUMBERS =$45 ; BORROWED FROM DUP¢0170 CAPS =$CC ; SAFE FROM BASIC¢0180 CONTROL =$CE¢0190 LOWER =$47 ;ALSO BELONGS TO DUP¢0200 *=$0600¢0210 PLA ; SETUP RETURN TO BASIC¢0220 ; LO BYTE OF PAGE # VARIABLES =0¢0230 LDA #0¢0240 STA $45 ; LO BYTE NUMBERS ADR¢0250 STA $CC ; LO BYTE CAPS ADR¢0260 STA $CE ; LO BYTE CONTROL CHARS¢0270 STA $47 ; LO BYTE LOWER CASE¢0280 SEC¢0290 LDA $59 ; PAGE # SCREEN MEMORY¢0300 SBC #1¢0310 STA $48 ; PAGE # LOWER CASE¢0320 SBC #1¢0330 STA $CF ; PAGE # CONTROL CHARS¢0340 SBC #1¢0350 STA $CD ; PAGE # CAPS¢0360 SBC #1¢0370 STA $46 ; PAGE # NUMBERS¢0380 LDY #0 ; SET COUNTER¢0390 ; BEGIN SPREADING LETTERS,¢0400 ;ONE BYTE AT A TIME¢0410 START LDA $E000,Y ; COPY NUMBERS¢0420 STA (NUMBERS),Y ; STORE THEM¢0430 LDA $E100,Y ; COPY CAPS¢0440 STA (CAPS),Y ; STORE UNCHANGED¢0450 STA ONECHAR ; MAKE EXTRA COPY¢0460 LSR A ; SHIFT LEFT¢0470 LSR A ; NYBBLE INTO¢0480 LSR A ; RIGHT NYBBLE,LEAVING¢0490 LSR A ; LEFT NYBBLE EMPTY¢0500 STA HALFCHAR ; FILE IT AWAY¢0510 LDA ONECHAR ; THAT EXTRA COPY¢0520 AND #$0F ; KILL LEFT NYBBLE¢0530 JSR BIT3 ; SPREAD RIGHT NYBBLE¢0540 STA (CONTROL),Y ; STORE RIGHT¢0550 ; HALF OF NEW LETTER¢0560 LDA HALFCHAR ; GET OTHER HALF¢0570 JSR BIT3 ; SPREAD IT¢0580 STA (LOWER),Y ; STORE LEFT HALF¢0590 INY ;COUNTER = COUNTER +1¢0600 CPY #26*8 ; 8 BYTES TO A LETTER¢0610 ; 26 LETTERS TO AN ALPHABET¢0620 BNE START ; NEXT Y¢0630 FINISH LDA $E000,Y ;STORE¢0640 STA (NUMBERS),Y ;MISC.¢0650 LDA $E100,Y ;CHARACTERS¢0660 STA (CAPS),Y ;UNCHANGED¢0670 LDA $E200,Y¢0680 STA (CONTROL),Y¢0690 LDA $E300,Y¢0700 STA (LOWER),Y¢0710 INY¢0720 CPY #$FF ; DONE¢0730 BNE FINISH¢0740 LDA $46 ; FIRST PAGE # NEW SET¢0750 STA CHBAS ; POKED INTO POINTER¢0760 RTS ; RETURN TO BASIC, BYE BYE¢0770 ;¢0780 ; SUBROUTINE TO SPREAD HALF¢0790 ; A BITE INTO THE FULL BYTE¢0800 ;¢0810 BIT3 TAX ; SAVE A COPY¢0820 AND #8 ; SEE IF BIT 3 IS ON¢0830 CMP #8 ; 00001000¢0840 BNE BIT2; IF NOT GOTO BIT2¢0850 TXA ; GET THE COPY¢0860 CLC ;¢0870 ADC #$B8; BIT 3 OFF, 6 & 7 ON¢0880 ; 11000000¢0890 JMP CLR2 ; BYPASS NEXT LINE¢0900 BIT2 TXA ; GET UNALTERED COPY¢0910 CLR2 TAX ; STASH LATEST VERSION¢0920 AND #4 ; SEE IF BIT 2 IS ON¢0930 CMP #4 ; 00000100¢0940 BNE BIT1; IF NOT, THEN BIT1¢0950 TXA¢0960 CLC¢0970 ADC #$2C IF SO, DO THIS¢0980 JMP CLR1; 00110000¢0990 BIT1 TXA¢1000 CLR1 TAX¢1010 AND #2 ; BIT 1?¢1020 CMP #2 ; 00000010¢1030 BNE BIT0¢1040 TXA¢1050 CLC¢1060 ADC #$0A ; BECOMES¢1070 JMP CLR0 ; 00001100¢1080 BIT0 TXA¢1090 CLR0 TAX¢1100 AND #1 ; 00000001¢1110 CMP #1¢1120 BNE BIT86¢1130 TXA¢1140 CLC¢1150 ADC #$02 ; 00000011¢1160 JMP CLR86¢1170 BIT86 TXA¢1180 CLR86 RTS ; RETURN¢