home *** CD-ROM | disk | FTP | other *** search
/ Antic Magazine 1989 June / Antic_Magazine_1989_06_Antic_Side_A.atr / prhand.m65 < prev    next >
Text File  |  2023-02-26  |  5KB  |  1 lines

  1. 0100 ; MODIFIED PRINTER HANDLER¢0102 ; BY BOB MARTIN¢0104 ; (c)1989, ANTIC PUBLISHING¢0110 ;INITIALIZATION ROUTINE FOR¢0120 ; SPECIAL PRINTER HANDLER¢0140 HATABS = $031A¢0150 ZPAGE1 = $CD¢0160 ;¢0170     *=  $0600¢0190 ;PRINTER HANDLER TABLE¢0210 NPTBL¢0220     .WORD 0,0,0¢0230 NPTBLPC¢0240     .WORD 0,0,0,0,0¢0260 ;OLD PRINTER PUT BYTE¢0280 OLDPNT¢0290     JMP OLDPNT¢0300 ;¢0320 ;INITIALIZE NEW PRINTER HANDLER¢0340 INSERT¢0350     LDX #0      :FIND P: HANDLER¢0360 PLOOP¢0370     LDA HATABS,X¢0380     CMP #'P¢0390     BEQ PFND¢0400     INX ¢0410     INX ¢0420     INX ¢0430     BNE PLOOP¢0440 ;¢0450 ;MOVE P: HANDLER TABLE TO NEW¢0460 ; LOCATION¢0480 PFND¢0490     LDA HATABS+1,X¢0500     STA ZPAGE1¢0510     LDA HATABS+2,X¢0520     STA ZPAGE1+1¢0530     LDA #NPTBL&$FF¢0540     STA HATABS+1,X¢0550     LDA #NPTBL/$0100¢0560     STA HATABS+2,X¢0570     LDY #15¢0580 PMVLP¢0590     LDA (ZPAGE1),Y¢0600     STA NPTBL,Y¢0610     DEY ¢0620     BPL PMVLP¢0630 ;¢0640 ;STORE OLD PUT BYTE ADDRESS THEN¢0650 ; CHANGE PUT BYTE ADDRESS TO¢0660 ; POINT TO MODIFIED PUT BYTE¢0670 ; ROUTINE¢0690     CLC ¢0700     LDA NPTBLPC¢0710     ADC #1¢0720     STA OLDPNT+1¢0730     LDA NPTBLPC+1¢0740     ADC #0¢0750     STA OLDPNT+2¢0760     LDA #[NPUTCH-1]&$FF¢0770     STA NPTBLPC¢0780     LDA #[NPUTCH-1]/$0100¢0790     STA NPTBLPC+1¢0800     RTS ¢0810 ;¢0820     *=  $02E2¢0830     .WORD INSERT¢0850 ;¢0860 ;MODIFIED PRINTER HANDLER¢0870 ;¢0880 ;INTERCEPTS THE PRINTER HANDLER¢0890 ; AND SENDS UNPRINTABLE¢0900 ; CHARACTERS AS DOT GRAPHICS¢0910 ; OTHER CHARACTERS ARE SENT AS¢0920 ; NORMAL MODE CHARACTERS¢0940 ;¢0950 ;POKE 1791 ($6FF) WITH A "0"¢0960 ; TO ENABLE.  ANY OTHER VALUE¢0970 ; WILL DISABLE THIS OPTION.¢0980 ;¢0990     *=  INSERT¢1000 ;¢1010 ;JUMP TO OLD PRINTER PUT BYTE¢1020 ;¢1030 PNTPUT¢1040     LDA HA¢1050 PNTPUT2¢1060     LDY HY¢1070     LDX HX¢1080     JSR OLDPNT¢1090     TYA ¢1100     BMI ERROR¢1110     STX RX¢1120     STY RY¢1130     RTS ¢1140 ERROR¢1150     PLA ¢1160     PLA ¢1170     RTS ¢1180 ;¢1190 ;MODIFIED PRINTER PUT BYTE¢1210 NPUTCH¢1220     STA HA      ;CK FOR¢1230     STY HY      ;UNPRINTABLE¢1240     STX HX      ;CHARACTERS¢1250     LDX $06FF¢1260     BEQ PNTOK¢1270     LDX $06FE¢1280     BNE CRGR¢1290     CMP #155¢1300     BEQ PNTOK¢1310 CRGR¢1315     CMP #96¢1320     BEQ NOPNT¢1330     CMP #32¢1340     BCC NOPNT¢1350     CMP #123¢1360     BCS NOPNT¢1370 PNTOK¢1380     JSR PNTPUT¢1390     RTS ¢1400 ;¢1410 ;HANDLER FOR UNPRINTABLE¢1420 ; CHARACTERS¢1430 ;¢1440 NOPNT¢1450     LDX #0¢1460 GRLOOP¢1470     STX HBIT¢1480     LDA GRCODE,X¢1490     JSR PNTPUT2¢1500     LDX HBIT¢1510     INX ¢1520     CPX CODELN¢1530     BCC GRLOOP¢1550 ;¢1560     LDA HA      ;GET INTERNAL¢1570     JSR ASC2SCN ;CODE # AND¢1580     STA $CC     ;CALC ADDR¢1590     LDA #0      ;OF FONT¢1600     STA ZPAGE1¢1610     STA ZPAGE1+1¢1620     LDX #2¢1630 ALOOP¢1635     CLC ¢1640     ROL $CC¢1650     ROL ZPAGE1¢1660     DEX ¢1670     BPL ALOOP¢1680     CLC ¢1690     LDA #$E0¢1700     ADC ZPAGE1¢1710     STA ZPAGE1¢1730 ;¢1740     LDX #$80    ;CALC THE 8¢1750     STX HBIT    ;BYTES¢1760 BLOOP¢1770     JSR SLICE¢1780     JSR PNTPUT2¢1790     LDA #0¢1800     STA ZPAGE1+1¢1810     LSR HBIT¢1820     LDX HBIT¢1830     BNE BLOOP¢1840     LDX RX¢1850     LDY RY¢1860     TYA ¢1870     RTS ¢1880 ;¢1890 ;CONVERT ASCII TO DISPLAY¢1900 ; MEMORY VALUE¢1910 ;¢1920 ASC2SCN¢1930     AND #$7F¢1940     CMP #96¢1950     BCS OUT¢1960     CMP #32¢1970     BCC GRCHR¢1980     SEC ¢1990     SBC #32¢2000     SEC ¢2010     BCS OUT¢2020 GRCHR¢2030     CLC ¢2040     ADC #64¢2050 OUT¢2060     RTS ¢2070 HBIT¢2075     .BYTE 0¢2080 HA  .BYTE 0¢2090 HY  .BYTE 0¢2100 HX  .BYTE 0¢2110 RX  .BYTE 0¢2120 RY  .BYTE 0¢2130 ;¢2140 ;CALCULATES THE VERTICAL-BYTE¢2150 ; FROM THE CHARACTER FONT¢2160 ;¢2170 ;ADDRESS OF CHARACTER¢2180 ; IN $CC & ZPAGE1¢2190 ;¢2200 ;BIT TO BE SENT TO PRINTER¢2210 ; IN X REGISTER¢2220 ;¢2230 ;RESULTING "SLICED" BYTE IS¢2240 ; RETURNED IN A AND HELD IN¢2250 ; #CE¢2260 ;¢2270 SLICE¢2280     LDA #$01    ;C.ITOH LDA #$80¢2290     STA $CB¢2300     LDY #$07¢2310 LOOP¢2320     TXA ¢2330     AND ($CC),Y¢2340     BEQ NOTSET¢2350     LDA $CB¢2360     ORA ZPAGE1+1¢2370     STA ZPAGE1+1¢2380 NOTSET¢2390     ASL $CB     ;C.ITOH LSR $CB¢2400     DEY ¢2410     BPL LOOP¢2420     LDA ZPAGE1+1¢2430     BIT HA      ;CK FOR INVID¢2440     BPL NOTINV¢2450     EOR #$FF¢2460     STA ZPAGE1+1¢2470 NOTINV¢2480     RTS ¢2490 ;¢2500 ;PUT THE CONTROL CODE TO CAUSE¢2510 ; YOUR PRINTER TO ACCEPT 8¢2520 ; DOT GRAPHICS BYTES HERE¢2530 ;¢2540 ;C.ITOH CONTROL CODE¢2550 ; GRCODE .BYTE 27,"S0008"¢2560 ;¢2570 GRCODE .BYTE 27,76,8,0¢2580 ;¢2590 CODELN .BYTE CODELN-GRCODE¢2600 ;¢2610     .END ¢