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 ¢