0 ;WINDOWS2.ASM›01 ; ..TEST INTO GRAPHICS SCREENS..›02 ; BIT to BIT PAIR Expansion with›03 ; conversion for 4 color Graphics›04 ; with string input capability.›05 ; vs.2 by Dave Culbertson›06 ; (C) Jun 11,1984 CE Softwart›07 ;›08 ;EQUATES›09 DAT = $CB ;ADR OF RESULT STRING.›10 SW = $CD ;FLAG FOR 2 NIBBLES.›11 TMP = $CE ;HOLDS WORKING BYTE.›12 COL = $CF ;COLOR MODIFIER REG.›13 COL1 = $D0 ;COPY OF COLOR MODIFIER.›14 YINR = $D1 ;Y POINTER INNER LOOP.›15 YOUT = $D2 ;Y POINTER OUTER LOOP.›16 CHR = $D3 ;ADR OF SOURCE STRING.›17 PT = $D5 ;PTR INTO CS.›18 INV = $D7 ;INVERSE FLAG.›19 NUM = $D8 ;LEN OF STRING.›20 NUM1 = $D9 ;COPY OF LEN*2.›21 TEA = $DA ;TEMP AREA.›22 PTR = $DB ;PTR TO WORK AREA ($400).›23 CS = 756 ;PAGE PNTR OF CHAR SET.›24 ;›25 *= $4000 ;IGNORE (RELOCATABLE)›26 GET THE VARIABLES›27 ;›28 PLA ›29 PLA ›30 STA DAT+1›31 PLA ›32 STA DAT›33 PLA ›34 STA CHR+1›35 PLA ›36 STA CHR›37 PLA ›38 PLA ›39 STA NUM ;GET NUMBER OF CHRS›40 ASL A›41 STA NUM1 ;NUM1=NUM*2›42 PLA ›43 PLA ›44 AND #3 ;ONLY BITS 1&2 OK.›45 CLC ›46 ROR A›47 ROR A›48 ROR A›49 AND #192 ;ONLY PASS BITS 7&8.›50 STA COL ;STORE COLOR CODE.›51 STA COL1 ;AND A COPY.›52 LDA #0 ;POINT TO PAGE 4.›53 STA PTR›54 LDA #4›55 STA PTR+1›56 ; CONVERT FROM CHARACTER TO›57 ; ADR OF PLACE IN CHARACTER SET›58 BE LDA #0 ;CLEAR WORK AREA.›59 TAY ›60 BF STA (PTR),Y›61 INY ›62 CPY #16›63 BNE BF›64 LDA #255›65 STA INV ;NORMAL MODE.›66 LDY #0 ;Y=0›67 LDA (CHR),Y ;GET THE CHARACTER›68 CMP #128 ;IS A <127?›69 BCC T ;YES GOTO T›70 STY INV ;SET INVERSE.›71 EOR #128›72 ;›73 T CMP #96 ;IS IT LOWERCASE?›74 BCC U ;NO,GOTO U.›75 LDY #3 ;SET OFFSET.›76 BCS Q ;GOTO Q.›77 ;›78 U CMP #64 ;IS IT UPPERCASE?›79 BCC V ;NO,GOTO V.›80 LDY #1 ;SET PAGE 1.›81 BCS Q ;GOTO Q.›82 ;›83 V CMP #32 ;IS IT A SYMBOL?›84 BCC W ;NO,GOTO W.›85 BCS Q ;YES,GOTO Q.›86 ; 1st ISLAND TO BEGINNING.›87 IS CLC ›88 BCC BE ;GOTO BEGINNING.›89 ;›90 W LDY #2 ;A GRAPHICS CHR!›91 ;›92 Q AND #31 ;NOW ACC <32!›93 ASL A ;MULTIPLY BY 8!›94 ASL A›95 ASL A›96 STA PT ;INDEX INTO PAGE.›97 CLC ;MOVE PAGE OFFSET.›98 TYA ›99 ADC CS ;ADD C.S. TO OFFSET.›0100 STA PT+1 ;STORE IT.›0101 ; MAIN ROUTINE›0102 LDY #0›0103 STY YINR›0104 STY YOUT›0105 S LDX #0›0106 STX SW›0107 LDY YOUT›0108 LDA (PT),Y›0109 STA TMP›0110 B LDY YINR›0111 LDA TMP›0112 BMI C›0113 ;›0114 LDA (PTR),Y›0115 ORA COL›0116 STA (PTR),Y›0117 C CLC ›0118 ROR COL›0119 CLC ›0120 ROR COL›0121 ASL TMP›0122 INX ›0123 CPX #4›0124 BNE B›0125 ;›0126 LDA INV ;CHECK FOR INVERSE?›0127 BEQ D›0128 SEC ;INVERT BITS›0129 SBC (PTR),Y›0130 STA (PTR),Y›0131 D LDA COL1 ;ADJUST FOR NEXT›0132 STA COL›0133 INC YINR›0134 INC SW›0135 LDA SW›0136 CMP #2›0137 BNE B›0138 ;›0139 INC YOUT›0140 LDY YOUT›0141 CPY #8›0142 BNE S›0143 BEQ K ;HOP OVER ISLAND.›0144 ; 2nd ISLAND TO BEGINNING›0145 HOP CLC ›0146 BCC IS ;GOTO BEGINNING.›0147 ; CONVERT DAT TO STRING FORMAT.›0148 K LDA DAT ;PUSH DAT ON STACK›0149 PHA ›0150 LDA DAT+1›0151 PHA ›0152 LDY #0›0153 AG LDA (PTR),Y›0154 STA (DAT),Y›0155 INY ›0156 CPY #2›0157 BNE AG›0158 J LDA (PTR),Y›0159 TAX ›0160 INY ›0161 LDA (PTR),Y›0162 PHA ›0163 INY ›0164 STY TEA›0165 LDY NUM1›0166 TXA ›0167 STA (DAT),Y›0168 PLA ›0169 INY ›0170 STA (DAT),Y›0171 CLC ›0172 LDA DAT›0173 ADC NUM1›0174 STA DAT›0175 BCC G›0176 INC DAT+1›0177 G LDY TEA›0178 CPY #16›0179 BNE J›0180 PLA ;RECOVER & BUMP DAT›0181 STA DAT+1›0182 CLC ›0183 PLA ›0184 ADC #2›0185 STA DAT›0186 BCC I›0187 INC DAT+1›0188 I INC CHR ;INCREMENT CHR›0189 BNE H›0190 INC CHR+1›0191 H DEC NUM›0192 BNE HOP ;DO NEXT CHARACTER.›0193 RTS ›