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›