0100 ;ASCII ART CONVERTER (v 2.0)0105 ;BY PAUL TUPACZEWSKI0110 ;(c)1987, ANTIC PUBLISHING INC.0115     .OPT NO LIST0120     .OPT OBJ0125 ;0130 LOHI1 = $CF     ;Page 00135 LOHI =  $CB     ;variables.0140 POINTER = $CD0145 ICCOM = $0342   ;CIO command0150 ICBAL = $0344   ;CIO lo and0155 ICBAH = $0345   ;Hi buffer adrs0160 ICBLL = $0348   ;CIO lo and0165 ICBLH = $0349   ;hi buffer lens0170 CIOV =  $E456   ;OS CIO routine0175 ICAX1 = $034A   ;CIO aux10180 ICAX2 = $034B   ;CIO aux20185 SDLSTL = $0230  ;Dlist pointer0190 SDMCTL = $022F  ;DMA0195 VDSLST = $0200  ;DLI pointer0200 NMIEN = $D40E   ;DLI switch0205 WSYNC = $D40A   ;Wait for sync0210 ;0215     *=  $20000220 ;0225 START0230     LDX #$30    ;First,0235     LDA #3      ;open our0240     STA ICCOM,X ;keyboard0245     LDA # <KH   ;channel.0250     STA ICBAL,X0255     LDA # >KH0260     STA ICBAH,X0265     LDA #40270     STA ICAX1,X0275     LDA #00280     STA ICAX2,X0285     JSR CIOV    ;Do it!0290 ;0295 ;Main loop.0300 ST10305     JSR CLEARFN ;Clear the0310 ;               filename area.0315     JSR CLRBIGBUF ;Clear our0320 ;                 screen memory0325     JSR CLEARALLELSE0330     JSR CLOSE   ;Close channels0335 ;0340     LDX #$20    ;Close disk0345     LDA #$0C    ;channel.0350     STA ICCOM,X0355     JSR CIOV0360     LDA # <DLIST1 ;Show the0365     STA SDLSTL  ;  main display0370     LDA # >DLIST1 ;list.0375     STA SDLSTL+10380     LDA #33     ;Smaller0385     STA SDMCTL  ;screen0390     LDA #$C4    ;green0395     STA 710     ;GR.0 lines0400     LDA # <DLI  ;start our0405     STA VDSLST  ;DLI's0410     LDA # >DLI0415     STA VDSLST+10420     LDA #$C00425     STA NMIEN0430     LDA # <ST1  ; Where we go0435     STA MNUJMP+1 ;after an0440     LDA # >ST1  ; error.0445     STA MNUJMP+20450 ;0455 GETKEYS0460     JSR GETKEY  ;Get a key.0465     LDA KEY     ;Is it a0470     CMP #32     ;space?0475     BEQ CONVERT ;Yes, convert.0480 ;0485     CMP #'G     ;Is it G?0490     BNE NO1     ;No.0495 ;0500     LDA #'+-32  ;Toggle from0505     SEC         ;GR.7 to0510     SBC L5+19   ;GR.7+ or0515     STA L5+19   ;vice versa.0520     JMP GETKEYS ;back.0525 ;0530 NO10535     CMP #'P     ;Is it P?0540     BNE NO2     ;No.0545 ;0550     INC POS     ;Yes, change0555     LDA POS     ;picture0560     CMP #4      ;positioning.0565     BNE NOTOVER0570 ;0575     LDA #00580     STA POS0585 ;0590 NOTOVER0595     LDX POS     ;Show arrow.0600     LDA ARWS,X0605     STA L4+230610     JMP GETKEYS0615 ;0620 NO20625     CMP #'C     ;Is it C?0630     BNE NO3     ;No.0635 ;0640     LDA #1      ;Toggle column0645     SEC         ;from 80-132 and0650     SBC COL     ;vice versa.0655     STA COL0660     ASL A0665     ASL A0670     LDY #00675     TAX 0680 LOOPQ0685     LDA COLS,X  ; Show our0690     STA L1+23,Y ;columns.0695     INX 0700     INY 0705     CPY #40710     BNE LOOPQ0715 ;0720     JMP GETKEYS0725 ;0730 NO30735     CMP #'D     ;Is it D?0740     BNE NO4     ;No.0745 ;0750     INC FILENAME+1 ;Increment0755     LDA FILENAME+1 ;default0760     CMP #'9     ;   drive.0765     BNE OKDRIVE0770 ;0775     LDA #'10780     STA FILENAME+10785 OKDRIVE0790     LDA FILENAME+10795     SEC 0800     SBC #$200805     STA L2+140810     JMP GETKEYS0815 ;0820 NO40825     CMP #'L     ;Is it L?0830     BNE GETKEYS ;No. Start over.0835 ;0840     JSR INPUT   ;Get filename.0845     JMP GETKEYS ;Back.0850 ;0855 ;  Start conversion.0860 ;0865 CONVERT0870     LDA FILENAME+3 ;Is there0875     CMP #32     ;  a filename?0880     BNE GOTAF1  ;  Yes.0885 ;0890     JMP GETKEYS ; Do over.0895 GOTAF10900     JSR SETMD   ; Set borders.0905     LDA # <SELECT ;Prompt for0910     STA SDLSTL  ; "Default or0915     LDA # >SELECT ;Edit?"0920     STA SDLSTL+10925 DEFRNT0930     JSR GETKEY  ;Get a key.0935     LDA KEY0940     CMP #'U     ;Is it U?0945     BEQ USEDEFS ;Yes!0950 ;0955     CMP #'E     ;Is it E?0960     BNE DEFRNT  ;No, try again.0965 ;0970     JMP GOTAFILENM ;edit them.0975 ;0980 USEDEFS0985     LDX #0      ;Copy default to0990 USE10995     LDA DEFAULTS,X ;gray shade1000     STA CHARCOLR+32,X ;chart.1005     INX 1010     CPX #641015     BNE USE11020 ;1025     JMP DONEFIGR ;Good, convert.1030 ;1035 GOTAFILENM1040     LDA # <DLIST3 ; Show1045     STA SDLSTL  ;   our1050     LDA # >DLIST3 ;"Edit"1055     STA SDLSTL+1 ;  screen.1060     LDA #0      ;Black-out1065     STA 711     ;extra text.1070     LDA #$40    ;DLI's1075     STA NMIEN   ;off.1080     JSR OPEN    ;Open disk1085     JSR CLRBUFF ;Clear buffer1090     JSR CLRCOLS ;Clear gray1095 ;                shade chart.1100     LDA #0      ;Temp var.1105     STA TEMP1110 GETLOOP1115     LDX #$10    ;   OK, get1120     LDA #7      ;256 bytes off1125     STA ICCOM,X ;the file.1130     LDA # <BUFFER1135     STA ICBAL,X1140     LDA # >BUFFER1145     STA ICBAH,X1150     LDA #01155     STA ICBLL,X1160     LDA #11165     STA ICBLH,X1170     JSR CIOV1175     LDY #01180 SRCHLOOP1185     LDA BUFFER,Y ;  Check for1190     JMP CHECK4RTN ; a RETURN.1195 ;1200 BACKHR1205     TAX         ;Find individual1210     LDA CHARCOLR,X ;occurences.1215     BNE SRCHCONT1220 ;1225     INC CHARCOLR,X1230     LDA BUFFER,Y1235     SEC 1240     SBC #321245     LDX TEMP1250     STA DISPLINE,X1255     JMP LOP1260 ;1265 SRCHCONT1270     INY         ; Continue it.1275     BNE SRCHLOOP1280 ;1285     LDX #$101290     LDA ICCOM+1,X1295     CMP #136    ; End Of File?1300     BNE GETLOOP ; No.1305 ;1310 EOF1315     JSR CLOSE   ; Close disk.1320     LDA #$46    ; Turn the text1325 ;                 on again.1330     STA 7111335     LDA #0      ; Clear temp var1340     STA TEMP1345 INPUT11350     LDX TEMP    ; Show arrow.1355     LDA #$40+'^ ; ^ is actually1360 ;                 CTRL-UPARROW.1365     STA ARL,X1370     LDA CRL,X   ; Show cursor.1375     CLC 1380     ADC #$801385     STA CRL,X1390 KEYGET1395     JSR GETKEY  ; Get a key.1400     LDA KEY1405     CMP #155    ; Is it RETURN?1410     BEQ DONEFIGR ;Yes.1415 ;1420     CMP #126    ;Is it BKSPACE?1425     BNE NOBK    ;No.1430 ;1435     LDA TEMP    ;At start?1440     BEQ KEYGET  ;Yes.1445 ;1450     JSR ERASECR ;Erase cursor.1455     DEC TEMP    ;Back up!1460     JMP INPUT1  ;get key...1465 ;1470 NOBK1475     CMP #32     ;Is it a SPACE?1480     BNE NOSPC   ;No.1485 ;1490     LDA TEMP    ;At end?1495     CMP #311500     BEQ KEYGET  ;Yes.1505 ;1510     JSR ERASECR ;Erase cursor.1515     INC TEMP    ;Onward!1520     JMP INPUT1  ;Get key...1525 ;1530 NOSPC1535     CMP #48     ;Have1540     BCC KEYGET  ;a1545 ;                number1550     CMP #'4     ;from 01555     BCS KEYGET  ;to 3?1560 ;1565     SEC 1570     SBC #48     ;Good, change1575     STA TEMP+1  ;ATASCII to #.1580     LDX TEMP    ;Show it.1585     LDA ARL-32,X1590     CLC 1595     ADC #$201600     TAX 1605     LDA TEMP+1  ;   Store value1610     STA CHARCOLR,X ;in gray1615 ;                   shade chart.1620     LDX TEMP1625     LDA TEMP+11630     CLC 1635     ADC #$101640     STA CRL,X   ;Next cursor pos1645     LDA #01650     STA ARL,X1655     INC TEMP1660     JMP INPUT11665 ;1670 DONEFIGR1675     JSR OPEN    ;OK, open again.1680 GR7SCRN1685     JSR OPENS   ;Let the OS1690 ;               take care of the1695 ;               screen mem.1700 REST1705     LDA #34     ;Normal screen.1710     STA SDMCTL1715     LDA #0      ;Start at1720     STA XX      ;0,01725     STA YY1730     LDA #12     ;Our colors...1735     STA 712     ;(wonderful1740     LDA #10     ;grays.)1745     STA 7081750     LDA #71755     STA 7091760     LDA #21765     STA 7101770     LDA #$40    ;No DLI's.1775     STA NMIEN1780 GETLOOP21785     LDX #$10    ;Get 2561790     LDA #7      ;bytes off1795     STA ICCOM,X ;the disk...1800     LDA # <BUFFER1805     STA ICBAL,X1810     LDA # >BUFFER1815     STA ICBAH,X1820     LDA #01825     STA ICBLL,X1830     LDA #11835     STA ICBLH,X1840     JSR CIOV1845 ;1850     LDX #$10    ;End Of File?1855     LDA ICCOM+1,X1860     CMP #1361865     BNE ZZZZOOM ;No.1870 ;1875     JSR CLREST  ;Clear the rest.1880 ZZZZOOM1885     LDA #0      ;Temp. pointer1890     STA P2561895 PLOTLOOP1900     LDX P2561905     LDA BUFFER,X ;Get chr by chr1910     CMP #155    ;Is it ATASCII1915 ;                      RETURN ?1920     BEQ LF      ;Yes.1925 ;1930     CMP #13     ;Is it ASCII1935 ;                      RETURN ?1940     BEQ LF      ;Yes.1945 ;1950     CMP #10     ;Is it ASCII1955 ;                     linefeed?1960     BEQ IT      ;Yes.1965 ;1970     TAX 1975     LDY COL     ;  OK. Offset1980     LDA COLAMT,Y ; the X1985     CLC         ;  values.1990     ADC XX1995     STA TEMP+12000     LDA CHARCOLR,X ; Get gray2005     LDX TEMP+1  ; shade color.2010     LDY YY2015     JSR PLOTROUT ;Plot it.2020     INC XX      ; Next X.2025 IT2030     INC P256    ;Inc. buffer.2035     LDA P256    ;Done?2040     BNE PLOTLOOP ;No.2045 ;2050     JMP GETLOOP3 ;Get more.2055 ;2060 LF2065     LDA #0      ;RETURN handler.2070     STA XX      ;X=0,2075     INC YY      ;Y=Y+1.2080     JMP ITZNEET ;Next!2085 ;2090 GETLOOP32095     LDA $0353   ;EOF?2100     CMP #1362105     BNE GETLOOP2 ;No.2110 ;2115     JSR CLOSE   ;Close disk.2120 ENDIT2125     JMP TOGLS   ;Done, wait2130 ;                for toggles.2135 ;2140 ; Plotting handler.2145 ;2150 PLOTROUT2155     STA TEMP+2  ;  Store2160     LDA POS     ;  all our2165     BNE PLOTROUT1 ;X and Y2170 ;                  and offset2175     LDA TEMP+2  ;  for2180     JMP PLOT    ;  positioning.2185 ;2190 PLOTROUT12195     CMP #12200     BNE PLOTROUT22205 ;2210     TXA 2215     STA TEMP+12220     TYA 2225     STA TEMP2230 MD2235     LDA #1282240     SEC 2245     SBC TEMP+12250     TAY 2255     LDA TEMP2260     TAX 2265     LDA TEMP+22270     JMP PLOT2275 ;2280 PLOTROUT22285     CMP #22290     BNE PLOTROUT32295 ;2300     STX TEMP+12305     STY TEMP2310     LDA #1592315     SEC 2320     SBC TEMP+12325     TAX 2330     LDA #952335     SEC 2340     SBC TEMP2345     TAY 2350     LDA TEMP+22355     JMP PLOT2360 ;2365 PLOTROUT32370     TXA 2375     STA TEMP+12380     TYA 2385     STA TEMP2390 MD22395     LDA #-$202400     CLC 2405     ADC TEMP+12410     TAY 2415     LDA #1592420     SEC 2425     SBC TEMP2430     TAX 2435     LDA TEMP+22440     JMP PLOT2445 ;2450 ; Final finish.2455 ;2460 TOGLS2465     LDA 53279   ; OPTION?2470     CMP #32475     BEQ MENYOU  ;Yes.2480 ;2485     LDA #72490     STA 7092495     LDA 764     ;Keypress?2500     CMP #2552505     BEQ NOSLCT  ;no.2510 ;2515     LDA L5+19   ;Toggle screens.2520     BEQ HIR2525 ;2530     LDA #1922535     STA BTM+12540     BNE YUMP2545 ;2550 HIR2555     LDA #962560     STA BTM+12565 YUMP2570     JSR TRANSFER72575     LDA #2552580     STA 7642585 ;2590 NOSLCT2595     LDA # <MENYOU ; Where we go2600     STA MNUJMP+1 ;  if we get2605     LDA # >MENYOU ; an error.2610     STA MNUJMP+22615     JMP TOGLS   ;Back!2620 ;2625 MENYOU2630     LDA SDLSTL  ;Another2635     STA LOHI1   ;menu.2640     LDA SDLSTL+1 ;Show it.2645     STA LOHI1+12650     LDA # <DLIST02655     STA SDLSTL2660     LDA # >DLIST02665     STA SDLSTL+12670     LDA #122675     STA 7092680     LDA L2+142685     STA LSAVE+202690 ;2695 CONSKYS2700     LDA 53279   ;START key?2705     CMP #62710     BNE MORECONS ;No.2715 ;2720     LDA LOHI1   ;Otherwise,2725     STA SDLSTL2730     LDA LOHI1+12735     STA SDLSTL+12740     JMP TOGLS   ;Back!2745 ;2750 MORECONS2755     LDA 764     ;Key?2760     CMP #$FF2765     BEQ CONSKYS ;No.2770 ;2775     JSR GETKEY  ;Get a key.2780     LDA KEY     ;Is it 1-4?2785     CMP #'12790     BCC CONSKYS2795 ;2800     CMP #'52805     BCS CONSKYS2810 ;2815     CMP #'3     ;YES! Is it 3?2820     BNE NOPEY2  ;No.2825 ;2830     JSR INPUTQ  ;Get filename.2835     JMP CONSKYS ;try again.2840 ;2845 NOPEY22850     CMP #'4     ;Is it 4?2855     BNE NOPEY   ;No.2860 ;2865     JMP ST1     ;Restart.2870 ;2875 NOPEY2880     LDA LSAVE+22 ;First, is2885     BEQ CONSKYS ; there a2890 ;                a filename? No!2895 ;2900     LDA KEY     ;Yes, but which2905     CMP #'1     ;mode? 1?2910     BNE NOPEY1  ;No...2915 ;2920     JSR OPENSVE ;Open save file2925     LDA #0      ;temp...2930     STA TEMP2935     LDA 88      ;Start screen2940     STA LOHI    ;address.2945     LDA 892950     STA LOHI+12955 LB2960     LDY #02965 LOADBUFF2970     LDA (LOHI),Y ;Our EXPAND2975     STA BUFFER,Y ;routine...2980 ;                 Changes GR.72985     STA BUFFER+40,Y ;into GR.7+2990     INY 2995     CPY #403000     BNE LOADBUFF3005 ;3010     LDX #$10    ;Save to disk.3015     LDA #113020     STA ICCOM,X3025     LDA # <BUFFER3030     STA ICBAL,X3035     LDA # >BUFFER3040     STA ICBAH,X3045     LDA #803050     STA ICBLL,X3055     LDA #03060     STA ICBLH,X3065     JSR CIOV3070     LDA $03533075     CMP #1      ;Any errors?3080     BNE OHOH1   ;Yes.3085 ;3090     LDA LOHI    ;Next screen3095 ;                bytes.3100     CLC 3105     ADC #403110     STA LOHI3115     LDA LOHI+13120     ADC #03125     STA LOHI+13130     INC TEMP3135     LDA TEMP3140     CMP #96     ;End of screen?3145     BNE LB      ;No.3150 ;3155     JMP CLOSESAVE ;Yes, close.3160 ;3165 NOPEY13170     CMP #'2     ; Not this one!3175     BNE CONSKYSQ ;ARRRGH!3180 ;3185     JSR OPENSVE ;Open for save.3190     LDX #$10    ;Plain 62 sector3195     LDA #11     ;save.3200     STA ICCOM,X3205     LDA 883210     STA ICBAL,X3215     LDA 893220     STA ICBAH,X3225     LDA # <76803230     STA ICBLL,X3235     LDA # >76803240     STA ICBLH,X3245     JSR CIOV3250     JMP CHECKERR ;Done.3255 ;3260 CONSKYSQ3265     JMP CONSKYS ;Loop back.3270 ;3275 OHOH13280     JMP OHOH    ;Ditto.3285 ;3290 CHECKERR3295     LDA $0353   ;Error?3300     CMP #13305     BNE OHOH1   ;Yes.3310 ;3315     JMP CLOSESAVE ;Close disk.3320 ;3325 MORECONS13330     JMP MORECONS ;Back.3335 ;3340 CLEARALLELSE3345     LDX #0      ;Clear all else!3350 CAE13355     LDA #03360     STA DISPLINE,X ;Show lines.3365     INX 3370     CPX #963375     BNE CAE13380 ;3385     LDA #0      ;colors!3390     STA 7123395     LDA #103400     STA 7093405     LDX #03410     TXA 3415 CLEARCHCLS3420     STA CHARCOLR,X ;Gray shades!3425     INX 3430     CPX #1203435     BNE CLEARCHCLS3440 ;3445     RTS 3450 ;3455 ITZNEET3460     LDX POS     ;Other stuff!3465     LDA L5+193470     BNE UDDER13475 ;3480     LDA ENDZ,X3485     CMP YY3490     BNE LEEVE3495 ;3500     JMP NXTSCRN3505 ;3510 UDDER13515     LDA ENDZZ,X3520     CMP YY3525     BNE LEEVE3530 ;3535     JMP NXTSCRN23540 ;3545 LEEVE3550     JMP IT3555 ;3560 NXTSCRN3565     LDA #963570     STA BTM+13575     JSR TRANSFER73580 NX3585     LDA #0      ;Clear screens!3590     STA XX3595     STA YY3600     JMP IT3605 ;3610 NXTSCRN23615     LDA #1923620     STA BTM+13625     JSR TRANSFER73630     JMP NX3635 ;3640 CLOSESAVE3645     LDX #$10    ;Close the save3650     LDA #11     ;by appending3655 ;                color info.3660     STA ICCOM,X3665     LDA # <COLORSD3670     STA ICBAL,X3675     LDA # >COLORSD3680     STA ICBAH,X3685     LDA #43690     STA ICBLL,X3695     LDA #03700     STA ICBLH,X3705     JSR CIOV3710     LDX #$103715     LDA #$0C3720     STA ICCOM,X3725     JSR CIOV3730     JMP CONSKYS ;Back.3735 ;3740 COLORSD3745     .BYTE 12,10,6,2 ;Our screen3750 ;                   gray shades.3755 ;3760 OPENSVE3765     LDX #$10    ;Open for3770     LDA #3      ;disk write.3775     STA ICCOM,X3780     LDA # <FILENAME3785     STA ICBAL,X3790     LDA # >FILENAME3795     STA ICBAH,X3800     LDA #83805     STA ICAX1,X3810     LDA #03815     STA ICAX2,X3820     JSR CIOV3825     LDA $0353   ;Error?3830     CMP #13835     BNE OHOH    ;YES!!!3840 ;3845     RTS 3850 ;3855 OHOH3860     PLA 3865     JMP ERROR3870 ;3875 ; Input filename3880 ;3885 INPUTQ3890     JSR CLEARFN ;Clear filename3895     LDX #03900 INPLOOPQ3905     STX TEMP3910     LDA #$803915     LDX TEMP3920     STA LSAVE+22,X3925     JSR GETKEY  ;Get loop.3930     LDX TEMP3935     LDA KEY3940     CMP #126    ;Backspace??3945     BNE NOTBKSPQ ;No.3950 ;3955     CPX #0      ; First spot?3960     BEQ INPLOOPQ ;Yes.3965 ;3970     LDA #0      ; Back up.3975     STA LSAVE+22,X3980     LDA #323985     STA FILENAME+3,X3990     DEX 3995     JMP INPLOOPQ4000 ;4005 NOTBKSPQ4010     CMP #155    ;RETURN?4015     BEQ FINIQ   ;Yes.4020 ;4025     CPX #12     ;At end?4030     BEQ INPLOOPQ ;Yes.4035 ;4040     STA FILENAME+3,X ;Save chr.4045     SEC 4050     SBC #324055     STA LSAVE+22,X4060     INX 4065     JMP INPLOOPQ4070 ;4075 FINIQ4080     LDA #0      ;End it.4085     STA LSAVE+22,X4090     RTS 4095 ;4100 ; Open S: device4105 ;4110 OPENS4115     LDX #$20    ;Open it.4120     LDA #34125     STA ICCOM,X4130     LDA # <SH4135     STA ICBAL,X4140     LDA # >SH4145     STA ICBAH,X4150     LDA #84155     STA ICAX1,X4160     LDA L5+19   ;Pick a mode,4165     BNE EIGHT   ;any mode.4170 ;4175     LDA #74180     STA ICAX2,X4185     JMP OPENIT4190 ;4195 EIGHT4200     LDA #84205     STA ICAX2,X4210 OPENIT4215     JSR CIOV4220     LDA L5+194225     BEQ LATERONDUDES4230 ;4235     LDA SDLSTL  ;Store DL addr.4240     CLC 4245     ADC #34250     STA LOHI4255     LDA SDLSTL+14260     ADC #04265     STA LOHI+14270     LDY #04275 SRCHDL4280     LDA (LOHI),Y ;Change GR.84285 ;                 to GR.7+4290     CMP #$4F4295     BNE NOMLD4300 ;4305     LDA #$4E4310     STA (LOHI),Y4315     LDA LOHI4320     CLC 4325     ADC #24330     STA LOHI4335     LDA LOHI+14340     ADC #04345     STA LOHI+14350     JMP NXTDLB4355 ;4360 NOMLD4365     CMP #$0F4370     BNE NOREGL4375 ;4380     LDA #$0E4385     STA (LOHI),Y4390     BNE NXTDLB4395 ;4400 NOREGL4405     CMP #$414410     BNE NXTDLB4415 ;4420     RTS 4425 ;4430 NXTDLB4435     LDA LOHI4440     CLC 4445     ADC #14450     STA LOHI4455     LDA LOHI+14460     STA POINTER+14465     STA LOHI+14470     JMP SRCHDL4475 ;4480 LATERONDUDES4485     RTS 4490 ;4495 SH4500     .BYTE "S:"  ;Screen handler.4505 ;4510 TRANSFER74515     LDA #0      ;Move screens.4520     STA TEMP4525     LDA 884530     STA LOHI4535     LDA 894540     STA LOHI+14545     LDA # <SCRN24550     STA POINTER4555     LDA # >SCRN24560     STA POINTER+14565 TR14570     LDY #04575 TR24580     LDA (LOHI),Y4585     PHA 4590     LDA (POINTER),Y4595     STA (LOHI),Y4600     PLA 4605     STA (POINTER),Y4610     INY 4615     CPY #404620     BNE TR24625 ;4630     INC TEMP4635     LDA TEMP4640 BTM4645     CMP #964650     BEQ DONETRNS4655     LDA LOHI4660     CLC 4665     ADC #404670     STA LOHI4675     LDA LOHI+14680     ADC #04685     STA LOHI+14690     LDA POINTER4695     CLC 4700     ADC #404705     STA POINTER4710     LDA POINTER+14715     ADC #04720     STA POINTER+14725     JMP TR14730 ;4735 DONETRNS4740     RTS 4745 ;4750 CLRBIGBUF4755     LDA #0      ;Clear screens.4760     STA TEMP4765     LDA # <SCRN24770     STA LOHI4775     LDA # >SCRN24780     STA LOHI+14785 CLRB14790     LDY #04795     TYA 4800 CLRB24805     STA (LOHI),Y4810     INY 4815     CPY #404820     BNE CLRB24825 ;4830     INC TEMP4835     LDA TEMP4840     CMP #1924845     BEQ DONECLRING4850 ;4855     LDA LOHI4860     CLC 4865     ADC #404870     STA LOHI4875     LDA LOHI+14880     ADC #04885     STA LOHI+14890     JMP CLRB14895 ;4900 DONECLRING4905     RTS 4910 ;4915 SETMD4920     LDA L5+19   ;Offset borders.4925     BNE PLUSG4930 ;4935     LDA #1284940     STA MD+14945     LDA #-324950     STA MD2+14955     RTS 4960 ;4965 PLUSG4970     LDA #1764975     STA MD+14980     LDA #164985     STA MD2+14990     RTS 4995 ;5000 CLREST5005     LDX $0358   ;Buffer pointer.5010     LDA #325015 RESTLP5020     STA BUFFER,X5025     INX 5030     BNE RESTLP5035 ;5040     RTS 5045 ;5050 CHECK4RTN5055     CMP #155    ;ATASCII RETURN?5060     BNE NEXT15065 ;5070     JMP SRCHCONT5075 ;5080 NEXT15085     CMP #13     ;ASCII RETURN?5090     BNE NEXT25095 ;5100     JMP SRCHCONT5105 ;5110 NEXT25115     CMP #10     ;ASCII LF?5120     BNE XIT15125 ;5130     JMP SRCHCONT5135 ;5140 XIT15145     JMP BACKHR5150 ;5155 ERASECR5160     LDA #0      ;Erase cursor.5165     LDX TEMP5170     STA ARL,X5175     LDA CRL,X5180     SEC 5185     SBC #$805190     STA CRL,X5195     RTS 5200 ;5205 CLRBUFF5210     LDX #05215     TXA 5220 CLROOP5225     STA BUFFER,X5230     INX 5235     BNE CLROOP5240 ;5245     RTS 5250 ;5255 CLRCOLS5260     LDX #05265     TXA 5270 CLRCLOOP5275     STA CHARCOLR,X5280     INX 5285     CPX #1205290     BNE CLRCLOOP5295 ;5300     RTS 5305 ;5310 OPEN5315     LDX #$10    ;Open disk file.5320     LDA #35325     STA ICCOM,X5330     LDA # <FILENAME5335     STA ICBAL,X5340     LDA # >FILENAME5345     STA ICBAH,X5350     LDA #45355     STA ICAX1,X5360     LDA #05365     STA ICAX2,X5370     JSR CIOV5375     LDA $0353   ;Error?5380     CMP #15385     BNE ERROR   ;Yes.5390 ;5395     RTS 5400 ;5405 CLOSE5410     LDX #$10    ;Close it!5415     LDA #$0C5420     STA ICCOM,X5425     JMP CIOV5430 ;5435 ERROR5440     LDA # <ERR  ;ERROR!!!5445     STA SDLSTL5450     LDA # >ERR5455     STA SDLSTL+15460     LDA $03535465     STA $D45470     LDA #05475     STA $D55480     JSR $D9AA   ;Convert ERR #5485     JSR $D8E6   ;to screen mem.5490     CLD 5495     LDY #$FF5500 PNUM5505     INY 5510     LDA ($F3),Y5515     AND #$1F5520     STA ERRLIN+10,Y5525     LDA ($F3),Y5530     BPL PNUM5535 ;5540     JSR RAZZ    ;Buzz.5545     JSR CLOSE   ;Close.5550     JSR GETKEY  ;Get a key.5555 MNUJMP5560     JMP ST15565 ;5570 INPUT5575     JSR CLEARFN ;Clear filename.5580     LDX #05585 INPLOOP5590     STX TEMP5595     LDA #$805600     LDX TEMP5605     STA L2+16,X5610     JSR GETKEY  ;This5615     LDX TEMP    ;input5620     LDA KEY     ;loop5625     CMP #126    ;is5630     BNE NOTBKSP ;identical5635 ;                to5640     CPX #0      ;the5645     BEQ INPLOOP ;other5650 ;                input5655     LDA #0      ;loop.5660     STA L2+16,X5665     LDA #325670     STA FILENAME+3,X5675     DEX 5680     JMP INPLOOP5685 ;5690 NOTBKSP5695     CMP #1555700     BEQ FINI5705 ;5710     CPX #125715     BEQ INPLOOP5720 ;5725     STA FILENAME+3,X5730     SEC 5735     SBC #325740     STA L2+16,X5745     INX 5750     JMP INPLOOP5755 ;5760 FINI5765     LDA #05770     STA L2+16,X5775     RTS 5780 ;5785 CLEARFN5790     LDX #0      ;Clear5795 LOOPCLR5800     LDA #32     ;filename.5805     STA FILENAME+3,X5810     LDA #05815     STA L2+16,X5820     STA LSAVE+22,X5825     INX 5830     CPX #135835     BNE LOOPCLR5840 ;5845     RTS 5850 ;5855 RAZZ5860     LDY #$20    ;Razz routine.5865 RAZZ15870     LDX #$7F    ;Same as CTRL-25875 RAZZ25880     STX 532795885     STX WSYNC5890     DEX 5895     BPL RAZZ25900 ;5905     DEY 5910     BPL RAZZ15915 ;5920     RTS 5925 ;5930 TEMP5935     .BYTE 0,0,0 ;Temp. Vars.5940 ;5945 PLOT5950     STA COLOR   ;Plot routines.5955     STX XSTOR5960     STY YSTOR5965     LDA YSTOR5970     ASL A5975     STA POINTER5980     LDA #05985     ROL A5990     STA POINTER+15995     JMP CONT6000 ;6005 COLOR6010     .BYTE 0     ;Color hold6015 XSTOR6020     .BYTE 0     ;storage...6025 ;6030 GETKEY6035     LDX #$30    ;Get a key6040     LDA #7      ;routine.6045     STA ICCOM,X6050     LDA # <KEY6055     STA ICBAL,X6060     LDA # >KEY6065     STA ICBAH,X6070     LDA #16075     STA ICBLL,X6080     LDA #06085     STA ICBLH,X6090     JMP CIOV6095 ;6100 KEY6105     .BYTE 0     ;Key value.6110 ;6115 CONT6120     ASL POINTER ; The plot6125     ROL POINTER+1 ;routine.6130     ASL POINTER ;(Kinda complex)6135     LDA POINTER6140     STA STOR16145     ROL POINTER+16150     LDA POINTER+16155     STA STOR26160     ASL POINTER6165     ROL POINTER+16170     ASL POINTER6175     ROL POINTER+16180     LDA POINTER6185     CLC 6190     ADC STOR16195     STA POINTER6200     LDA POINTER+16205     ADC STOR26210     STA POINTER+16215     LDA 886220     CLC 6225     ADC POINTER6230     STA POINTER6235     LDA 896240     ADC POINTER+16245     STA POINTER+16250     LDA XSTOR6255     AND #36260     TAX 6265     LDA XSTOR6270     LSR A6275     LSR A6280     CLC 6285     ADC POINTER6290     STA POINTER6295     LDA POINTER+16300     ADC #06305     STA POINTER+16310     LDY COLOR6315     LDA BMASK2,X6320     AND COLORS,Y6325     STA STOR16330     LDA BMASK1,X6335     LDY #06340     AND (POINTER),Y6345     ORA STOR16350     STA (POINTER),Y6355     RTS 6360 ;6365 ; Various stuff.6370 ;6375 COLORS6380     .BYTE $00,$55,$AA,$FF ;plot6385 ;                         colors6390 BMASK16395     .BYTE $3F,$CF,$F3,$FC ;Masks6400 ;                          for6405 BMASK26410     .BYTE $C0,$30,$0C,$03 ;plot6415 ;                      routines.6420 YSTOR6425     .BYTE 0     ;Storage6430 STOR16435     .BYTE 0     ;for6440 STOR26445     .BYTE 1     ;plot routine6450 KH6455     .BYTE "K:"  ;Keybd handler.6460 COLS6465     .SBYTE "80  132 " ;Columns.6470 COL6475     .BYTE 0     ;Col. toggle.6480 ARWS6485     .SBYTE "" ;Our arrows6490 POS6495     .BYTE 0     ;Position code.6500 FILENAME6505     .BYTE "D1:               "6510 ;    Filename buffer6515 CHARCOLR6520     *=  *+120   ;Where we place6525 ;       our edited gray shades.6530 BUFFER6535     *=  *+256   ;Load-in buffer6540 COLAMT6545     .BYTE 40,14 ;Col. amounts.6550 ;DEFAULTS are our default6555 ;gray shades.6560 DEFAULTS6565     .BYTE 0,2,1,3,2,2,3,1,2,26570     .BYTE 3,2,1,1,1,1,3,3,3,36575     .BYTE 3,3,3,3,3,2,2,2,2,2,26580     .BYTE 3,3,3,3,3,3,3,3,3,36585     .BYTE 3,3,3,3,3,3,3,3,3,36590     .BYTE 3,3,3,3,3,3,3,2,2,26595     .BYTE 1,16600 ;6605 LOP6610     INC TEMP6615     LDA TEMP6620     CMP #326625     BEQ DONELDING6630 ;6635     JMP SRCHCONT6640 ;6645 DONELDING6650     JMP EOF6655 ;6660 ; Our display lists/data.6665 ;6670 DLIST16675     .BYTE $70,$70,$70,$70,$706680     .BYTE $70,$F0,$476685     .BYTE  <LINES, >LINES6690     .BYTE $90,$02,$70,$02,$006695     .BYTE $02,$00,$02,$00,$026700     .BYTE $00,$02,$00,$026705     .BYTE $41, <DLIST1, >DLIST16710 SELECT6715     .BYTE $70,$70,$70,$70,$476720     .BYTE  <SLCTLINE, >SLCTLINE6725     .BYTE $07,$416730     .BYTE  <SELECT, >SELECT6735 SLCTLINE6740     .SBYTE "SE DEFAULTS OR "6745     .SBYTE "DIT YOUR OWN?  "6750 LINES6755     .SBYTE +$C0," ART CONVERTER! "6760     .SBYTE " (c)1987, Antic Publishing Inc. "6765 L16770     .SBYTE "   olumn of printout: 80       "6775 L26780     .SBYTE "   oad file D1:                "6785     .SBYTE "   efault drive number         "6790 L46795     .SBYTE "   icture postioning:         "6800 L56805     .SBYTE "   raphics mode: 7             "6810     .SBYTE "    starts the conversion  "6815 ;6820 ;* Our DLI's.6825 ;6830 DLI6835     PHA 6840     TXA 6845     PHA 6850     LDX #$906855 LLL6860     STX WSYNC6865     STX $D0196870     INX 6875     CPX #$A06880     BNE LLL6885 ;6890     LDA # <DLI16895     STA VDSLST6900     LDA # >DLI16905     STA VDSLST+16910     PLA 6915     TAX 6920     PLA 6925     RTI 6930 ;6935 DLI16940     PHA 6945     TXA 6950     PHA 6955     LDX #06960     LDY #$0E6965 LLL16970     STX WSYNC6975     LDA #$4A6980     STA $D0186985     LDA #06990     STA $D0176995     INX 7000     CPX #97005     BNE LLL17010 ;7015     LDA #$C47020     STA $D0187025     LDA #107030     STA $D0177035     LDA # <DLI7040     STA VDSLST7045     LDA # >DLI7050     STA VDSLST+17055     PLA 7060     TAX 7065     PLA 7070     RTI 7075 ;7080 ; More display lists.7085 ;7090 DLIST37095     .BYTE $70,$70,$70,$70,$477100     .BYTE  <LINES2, >LINES27105     .BYTE $07,$70,$70,$70,$707110     .BYTE $70,$02,$00,$02,$007115     .BYTE $02,$70,$70,$70,$707120     .BYTE $70,$06,$00,$067125     .BYTE $41, <DLIST3, >DLIST37130 LINES27135     .SBYTE +$80," NOW SEARCHING  "7140     .SBYTE +$80,"FILE FOR BYTES.."7145 DISPLINE7150     .SBYTE "                                "7155 ARL7160     .SBYTE "                                "7165 CRL7170     .SBYTE "                                "7175     .SBYTE +$C0,"  ENTER DATA:   "7180     .SBYTE +$C0,"0=WHITE, 3=BLACK"7185 XX7190     .BYTE 1     ;Our screen X7195 YY7200     .BYTE 1     ;and Y values.7205 P2567210     .BYTE 1     ;Pointer...7215 ;7220 ; Yet another display list.7225 ;7230 DLIST07235     .BYTE $70,$70,$70,$70,$707240     .BYTE $70,$70,$477245     .BYTE  <LINESF, >LINESF,$307250     .BYTE $70,$02,$00,$02,$007255     .BYTE $02,$00,$02,$00,$027260     .BYTE $20,$027265     .BYTE $41, <DLIST0, >DLIST07270 LINESF7275     .SBYTE +$80,"  CHOOSE AN OPTION: " 123456789012345678907280     .SBYTE "          Save screen - mode 7         "7285     .SBYTE "          Save screen - mode 7+        "7290     .SBYTE "          Enter save filename          "7295     .SBYTE "          Restart program              "7300     .SBYTE "  toggles screens,  for scrn"7305 LSAVE7310     .SBYTE "     Save filename D1:                  "7315 ;7320 ; Our screen boundaries for all7325 ; positioning modes.7330 ;7335 ENDZ7340     .BYTE 96,160,96,1607345 ENDZZ7350     .BYTE 192,160,192,1607355 SCRN2 = $4000   ;Buffer screen.7360 ;7365 ; Guess what. A display list7370 ; to handle errors.7375 ;7380 ERR7385     .BYTE $70,$70,$70,$70,$707390     .BYTE $70,$70,$70,$70,$707395     .BYTE $47, <ERRLIN, >ERRLIN7400     .BYTE $41, <ERR, >ERR7405 ERRLIN7410     .SBYTE "  ERROR -                     "7415 ;7420 ;* Where we start from.7425     *=  $02E0   ;Init addr.7430 ;7435     .WORD START7440     .END 