0100 ; wi de l etters›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›