0100 ;ASCII ART CONVERTER (v 2.0)õ0105 ;BY PAUL TUPACZEWSKIõ0110 ;(c)1987, ANTIC PUBLISHING INC.õ0115     .OPT NO LISTõ0120     .OPT OBJõ0125 ;õ0130 LOHI1 = $CF     ;Page 0õ0135 LOHI =  $CB     ;variables.õ0140 POINTER = $CDõ0145 ICCOM = $0342   ;CIO commandõ0150 ICBAL = $0344   ;CIO lo andõ0155 ICBAH = $0345   ;Hi buffer adrsõ0160 ICBLL = $0348   ;CIO lo andõ0165 ICBLH = $0349   ;hi buffer lensõ0170 CIOV =  $E456   ;OS CIO routineõ0175 ICAX1 = $034A   ;CIO aux1õ0180 ICAX2 = $034B   ;CIO aux2õ0185 SDLSTL = $0230  ;Dlist pointerõ0190 SDMCTL = $022F  ;DMAõ0195 VDSLST = $0200  ;DLI pointerõ0200 NMIEN = $D40E   ;DLI switchõ0205 WSYNC = $D40A   ;Wait for syncõ0210 ;õ0215     *=  $2000õ0220 ;õ0225 STARTõ0230     LDX #$30    ;First,õ0235     LDA #3      ;open ourõ0240     STA ICCOM,X ;keyboardõ0245     LDA # <KH   ;channel.õ0250     STA ICBAL,Xõ0255     LDA # >KHõ0260     STA ICBAH,Xõ0265     LDA #4õ0270     STA ICAX1,Xõ0275     LDA #0õ0280     STA ICAX2,Xõ0285     JSR CIOV    ;Do it!õ0290 ;õ0295 ;Main loop.õ0300 ST1õ0305     JSR CLEARFN ;Clear theõ0310 ;               filename area.õ0315     JSR CLRBIGBUF ;Clear ourõ0320 ;                 screen memoryõ0325     JSR CLEARALLELSEõ0330     JSR CLOSE   ;Close channelsõ0335 ;õ0340     LDX #$20    ;Close diskõ0345     LDA #$0C    ;channel.õ0350     STA ICCOM,Xõ0355     JSR CIOVõ0360     LDA # <DLIST1 ;Show theõ0365     STA SDLSTL  ;  main displayõ0370     LDA # >DLIST1 ;list.õ0375     STA SDLSTL+1õ0380     LDA #33     ;Smallerõ0385     STA SDMCTL  ;screenõ0390     LDA #$C4    ;greenõ0395     STA 710     ;GR.0 linesõ0400     LDA # <DLI  ;start ourõ0405     STA VDSLST  ;DLI'sõ0410     LDA # >DLIõ0415     STA VDSLST+1õ0420     LDA #$C0õ0425     STA NMIENõ0430     LDA # <ST1  ; Where we goõ0435     STA MNUJMP+1 ;after anõ0440     LDA # >ST1  ; error.õ0445     STA MNUJMP+2õ0450 ;õ0455 GETKEYSõ0460     JSR GETKEY  ;Get a key.õ0465     LDA KEY     ;Is it aõ0470     CMP #32     ;space?õ0475     BEQ CONVERT ;Yes, convert.õ0480 ;õ0485     CMP #'G     ;Is it G?õ0490     BNE NO1     ;No.õ0495 ;õ0500     LDA #'+-32  ;Toggle fromõ0505     SEC         ;GR.7 toõ0510     SBC L5+19   ;GR.7+ orõ0515     STA L5+19   ;vice versa.õ0520     JMP GETKEYS ;back.õ0525 ;õ0530 NO1õ0535     CMP #'P     ;Is it P?õ0540     BNE NO2     ;No.õ0545 ;õ0550     INC POS     ;Yes, changeõ0555     LDA POS     ;pictureõ0560     CMP #4      ;positioning.õ0565     BNE NOTOVERõ0570 ;õ0575     LDA #0õ0580     STA POSõ0585 ;õ0590 NOTOVERõ0595     LDX POS     ;Show arrow.õ0600     LDA ARWS,Xõ0605     STA L4+23õ0610     JMP GETKEYSõ0615 ;õ0620 NO2õ0625     CMP #'C     ;Is it C?õ0630     BNE NO3     ;No.õ0635 ;õ0640     LDA #1      ;Toggle columnõ0645     SEC         ;from 80-132 andõ0650     SBC COL     ;vice versa.õ0655     STA COLõ0660     ASL Aõ0665     ASL Aõ0670     LDY #0õ0675     TAX õ0680 LOOPQõ0685     LDA COLS,X  ; Show ourõ0690     STA L1+23,Y ;columns.õ0695     INX õ0700     INY õ0705     CPY #4õ0710     BNE LOOPQõ0715 ;õ0720     JMP GETKEYSõ0725 ;õ0730 NO3õ0735     CMP #'D     ;Is it D?õ0740     BNE NO4     ;No.õ0745 ;õ0750     INC FILENAME+1 ;Incrementõ0755     LDA FILENAME+1 ;defaultõ0760     CMP #'9     ;   drive.õ0765     BNE OKDRIVEõ0770 ;õ0775     LDA #'1õ0780     STA FILENAME+1õ0785 OKDRIVEõ0790     LDA FILENAME+1õ0795     SEC õ0800     SBC #$20õ0805     STA L2+14õ0810     JMP GETKEYSõ0815 ;õ0820 NO4õ0825     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 CONVERTõ0870     LDA FILENAME+3 ;Is thereõ0875     CMP #32     ;  a filename?õ0880     BNE GOTAF1  ;  Yes.õ0885 ;õ0890     JMP GETKEYS ; Do over.õ0895 GOTAF1õ0900     JSR SETMD   ; Set borders.õ0905     LDA # <SELECT ;Prompt forõ0910     STA SDLSTL  ; "Default orõ0915     LDA # >SELECT ;Edit?"õ0920     STA SDLSTL+1õ0925 DEFRNTõ0930     JSR GETKEY  ;Get a key.õ0935     LDA KEYõ0940     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 USEDEFSõ0985     LDX #0      ;Copy default toõ0990 USE1õ0995     LDA DEFAULTS,X ;gray shadeõ1000     STA CHARCOLR+32,X ;chart.õ1005     INX õ1010     CPX #64õ1015     BNE USE1õ1020 ;õ1025     JMP DONEFIGR ;Good, convert.õ1030 ;õ1035 GOTAFILENMõ1040     LDA # <DLIST3 ; Showõ1045     STA SDLSTL  ;   ourõ1050     LDA # >DLIST3 ;"Edit"õ1055     STA SDLSTL+1 ;  screen.õ1060     LDA #0      ;Black-outõ1065     STA 711     ;extra text.õ1070     LDA #$40    ;DLI'sõ1075     STA NMIEN   ;off.õ1080     JSR OPEN    ;Open diskõ1085     JSR CLRBUFF ;Clear bufferõ1090     JSR CLRCOLS ;Clear grayõ1095 ;                shade chart.õ1100     LDA #0      ;Temp var.õ1105     STA TEMPõ1110 GETLOOPõ1115     LDX #$10    ;   OK, getõ1120     LDA #7      ;256 bytes offõ1125     STA ICCOM,X ;the file.õ1130     LDA # <BUFFERõ1135     STA ICBAL,Xõ1140     LDA # >BUFFERõ1145     STA ICBAH,Xõ1150     LDA #0õ1155     STA ICBLL,Xõ1160     LDA #1õ1165     STA ICBLH,Xõ1170     JSR CIOVõ1175     LDY #0õ1180 SRCHLOOPõ1185     LDA BUFFER,Y ;  Check forõ1190     JMP CHECK4RTN ; a RETURN.õ1195 ;õ1200 BACKHRõ1205     TAX         ;Find individualõ1210     LDA CHARCOLR,X ;occurences.õ1215     BNE SRCHCONTõ1220 ;õ1225     INC CHARCOLR,Xõ1230     LDA BUFFER,Yõ1235     SEC õ1240     SBC #32õ1245     LDX TEMPõ1250     STA DISPLINE,Xõ1255     JMP LOPõ1260 ;õ1265 SRCHCONTõ1270     INY         ; Continue it.õ1275     BNE SRCHLOOPõ1280 ;õ1285     LDX #$10õ1290     LDA ICCOM+1,Xõ1295     CMP #136    ; End Of File?õ1300     BNE GETLOOP ; No.õ1305 ;õ1310 EOFõ1315     JSR CLOSE   ; Close disk.õ1320     LDA #$46    ; Turn the textõ1325 ;                 on again.õ1330     STA 711õ1335     LDA #0      ; Clear temp varõ1340     STA TEMPõ1345 INPUT1õ1350     LDX TEMP    ; Show arrow.õ1355     LDA #$40+'^ ; ^ is actuallyõ1360 ;                 CTRL-UPARROW.õ1365     STA ARL,Xõ1370     LDA CRL,X   ; Show cursor.õ1375     CLC õ1380     ADC #$80õ1385     STA CRL,Xõ1390 KEYGETõ1395     JSR GETKEY  ; Get a key.õ1400     LDA KEYõ1405     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 NOBKõ1475     CMP #32     ;Is it a SPACE?õ1480     BNE NOSPC   ;No.õ1485 ;õ1490     LDA TEMP    ;At end?õ1495     CMP #31õ1500     BEQ KEYGET  ;Yes.õ1505 ;õ1510     JSR ERASECR ;Erase cursor.õ1515     INC TEMP    ;Onward!õ1520     JMP INPUT1  ;Get key...õ1525 ;õ1530 NOSPCõ1535     CMP #48     ;Haveõ1540     BCC KEYGET  ;aõ1545 ;                numberõ1550     CMP #'4     ;from 0õ1555     BCS KEYGET  ;to 3?õ1560 ;õ1565     SEC õ1570     SBC #48     ;Good, changeõ1575     STA TEMP+1  ;ATASCII to #.õ1580     LDX TEMP    ;Show it.õ1585     LDA ARL-32,Xõ1590     CLC õ1595     ADC #$20õ1600     TAX õ1605     LDA TEMP+1  ;   Store valueõ1610     STA CHARCOLR,X ;in grayõ1615 ;                   shade chart.õ1620     LDX TEMPõ1625     LDA TEMP+1õ1630     CLC õ1635     ADC #$10õ1640     STA CRL,X   ;Next cursor posõ1645     LDA #0õ1650     STA ARL,Xõ1655     INC TEMPõ1660     JMP INPUT1õ1665 ;õ1670 DONEFIGRõ1675     JSR OPEN    ;OK, open again.õ1680 GR7SCRNõ1685     JSR OPENS   ;Let the OSõ1690 ;               take care of theõ1695 ;               screen mem.õ1700 RESTõ1705     LDA #34     ;Normal screen.õ1710     STA SDMCTLõ1715     LDA #0      ;Start atõ1720     STA XX      ;0,0õ1725     STA YYõ1730     LDA #12     ;Our colors...õ1735     STA 712     ;(wonderfulõ1740     LDA #10     ;grays.)õ1745     STA 708õ1750     LDA #7õ1755     STA 709õ1760     LDA #2õ1765     STA 710õ1770     LDA #$40    ;No DLI's.õ1775     STA NMIENõ1780 GETLOOP2õ1785     LDX #$10    ;Get 256õ1790     LDA #7      ;bytes offõ1795     STA ICCOM,X ;the disk...õ1800     LDA # <BUFFERõ1805     STA ICBAL,Xõ1810     LDA # >BUFFERõ1815     STA ICBAH,Xõ1820     LDA #0õ1825     STA ICBLL,Xõ1830     LDA #1õ1835     STA ICBLH,Xõ1840     JSR CIOVõ1845 ;õ1850     LDX #$10    ;End Of File?õ1855     LDA ICCOM+1,Xõ1860     CMP #136õ1865     BNE ZZZZOOM ;No.õ1870 ;õ1875     JSR CLREST  ;Clear the rest.õ1880 ZZZZOOMõ1885     LDA #0      ;Temp. pointerõ1890     STA P256õ1895 PLOTLOOPõ1900     LDX P256õ1905     LDA BUFFER,X ;Get chr by chrõ1910     CMP #155    ;Is it ATASCIIõ1915 ;                      RETURN ?õ1920     BEQ LF      ;Yes.õ1925 ;õ1930     CMP #13     ;Is it ASCIIõ1935 ;                      RETURN ?õ1940     BEQ LF      ;Yes.õ1945 ;õ1950     CMP #10     ;Is it ASCIIõ1955 ;                     linefeed?õ1960     BEQ IT      ;Yes.õ1965 ;õ1970     TAX õ1975     LDY COL     ;  OK. Offsetõ1980     LDA COLAMT,Y ; the Xõ1985     CLC         ;  values.õ1990     ADC XXõ1995     STA TEMP+1õ2000     LDA CHARCOLR,X ; Get grayõ2005     LDX TEMP+1  ; shade color.õ2010     LDY YYõ2015     JSR PLOTROUT ;Plot it.õ2020     INC XX      ; Next X.õ2025 ITõ2030     INC P256    ;Inc. buffer.õ2035     LDA P256    ;Done?õ2040     BNE PLOTLOOP ;No.õ2045 ;õ2050     JMP GETLOOP3 ;Get more.õ2055 ;õ2060 LFõ2065     LDA #0      ;RETURN handler.õ2070     STA XX      ;X=0,õ2075     INC YY      ;Y=Y+1.õ2080     JMP ITZNEET ;Next!õ2085 ;õ2090 GETLOOP3õ2095     LDA $0353   ;EOF?õ2100     CMP #136õ2105     BNE GETLOOP2 ;No.õ2110 ;õ2115     JSR CLOSE   ;Close disk.õ2120 ENDITõ2125     JMP TOGLS   ;Done, waitõ2130 ;                for toggles.õ2135 ;õ2140 ; Plotting handler.õ2145 ;õ2150 PLOTROUTõ2155     STA TEMP+2  ;  Storeõ2160     LDA POS     ;  all ourõ2165     BNE PLOTROUT1 ;X and Yõ2170 ;                  and offsetõ2175     LDA TEMP+2  ;  forõ2180     JMP PLOT    ;  positioning.õ2185 ;õ2190 PLOTROUT1õ2195     CMP #1õ2200     BNE PLOTROUT2õ2205 ;õ2210     TXA õ2215     STA TEMP+1õ2220     TYA õ2225     STA TEMPõ2230 MDõ2235     LDA #128õ2240     SEC õ2245     SBC TEMP+1õ2250     TAY õ2255     LDA TEMPõ2260     TAX õ2265     LDA TEMP+2õ2270     JMP PLOTõ2275 ;õ2280 PLOTROUT2õ2285     CMP #2õ2290     BNE PLOTROUT3õ2295 ;õ2300     STX TEMP+1õ2305     STY TEMPõ2310     LDA #159õ2315     SEC õ2320     SBC TEMP+1õ2325     TAX õ2330     LDA #95õ2335     SEC õ2340     SBC TEMPõ2345     TAY õ2350     LDA TEMP+2õ2355     JMP PLOTõ2360 ;õ2365 PLOTROUT3õ2370     TXA õ2375     STA TEMP+1õ2380     TYA õ2385     STA TEMPõ2390 MD2õ2395     LDA #-$20õ2400     CLC õ2405     ADC TEMP+1õ2410     TAY õ2415     LDA #159õ2420     SEC õ2425     SBC TEMPõ2430     TAX õ2435     LDA TEMP+2õ2440     JMP PLOTõ2445 ;õ2450 ; Final finish.õ2455 ;õ2460 TOGLSõ2465     LDA 53279   ; OPTION?õ2470     CMP #3õ2475     BEQ MENYOU  ;Yes.õ2480 ;õ2485     LDA #7õ2490     STA 709õ2495     LDA 764     ;Keypress?õ2500     CMP #255õ2505     BEQ NOSLCT  ;no.õ2510 ;õ2515     LDA L5+19   ;Toggle screens.õ2520     BEQ HIRõ2525 ;õ2530     LDA #192õ2535     STA BTM+1õ2540     BNE YUMPõ2545 ;õ2550 HIRõ2555     LDA #96õ2560     STA BTM+1õ2565 YUMPõ2570     JSR TRANSFER7õ2575     LDA #255õ2580     STA 764õ2585 ;õ2590 NOSLCTõ2595     LDA # <MENYOU ; Where we goõ2600     STA MNUJMP+1 ;  if we getõ2605     LDA # >MENYOU ; an error.õ2610     STA MNUJMP+2õ2615     JMP TOGLS   ;Back!õ2620 ;õ2625 MENYOUõ2630     LDA SDLSTL  ;Anotherõ2635     STA LOHI1   ;menu.õ2640     LDA SDLSTL+1 ;Show it.õ2645     STA LOHI1+1õ2650     LDA # <DLIST0õ2655     STA SDLSTLõ2660     LDA # >DLIST0õ2665     STA SDLSTL+1õ2670     LDA #12õ2675     STA 709õ2680     LDA L2+14õ2685     STA LSAVE+20õ2690 ;õ2695 CONSKYSõ2700     LDA 53279   ;START key?õ2705     CMP #6õ2710     BNE MORECONS ;No.õ2715 ;õ2720     LDA LOHI1   ;Otherwise,õ2725     STA SDLSTLõ2730     LDA LOHI1+1õ2735     STA SDLSTL+1õ2740     JMP TOGLS   ;Back!õ2745 ;õ2750 MORECONSõ2755     LDA 764     ;Key?õ2760     CMP #$FFõ2765     BEQ CONSKYS ;No.õ2770 ;õ2775     JSR GETKEY  ;Get a key.õ2780     LDA KEY     ;Is it 1-4?õ2785     CMP #'1õ2790     BCC CONSKYSõ2795 ;õ2800     CMP #'5õ2805     BCS CONSKYSõ2810 ;õ2815     CMP #'3     ;YES! Is it 3?õ2820     BNE NOPEY2  ;No.õ2825 ;õ2830     JSR INPUTQ  ;Get filename.õ2835     JMP CONSKYS ;try again.õ2840 ;õ2845 NOPEY2õ2850     CMP #'4     ;Is it 4?õ2855     BNE NOPEY   ;No.õ2860 ;õ2865     JMP ST1     ;Restart.õ2870 ;õ2875 NOPEYõ2880     LDA LSAVE+22 ;First, isõ2885     BEQ CONSKYS ; there aõ2890 ;                a filename? No!õ2895 ;õ2900     LDA KEY     ;Yes, but whichõ2905     CMP #'1     ;mode? 1?õ2910     BNE NOPEY1  ;No...õ2915 ;õ2920     JSR OPENSVE ;Open save fileõ2925     LDA #0      ;temp...õ2930     STA TEMPõ2935     LDA 88      ;Start screenõ2940     STA LOHI    ;address.õ2945     LDA 89õ2950     STA LOHI+1õ2955 LBõ2960     LDY #0õ2965 LOADBUFFõ2970     LDA (LOHI),Y ;Our EXPANDõ2975     STA BUFFER,Y ;routine...õ2980 ;                 Changes GR.7õ2985     STA BUFFER+40,Y ;into GR.7+õ2990     INY õ2995     CPY #40õ3000     BNE LOADBUFFõ3005 ;õ3010     LDX #$10    ;Save to disk.õ3015     LDA #11õ3020     STA ICCOM,Xõ3025     LDA # <BUFFERõ3030     STA ICBAL,Xõ3035     LDA # >BUFFERõ3040     STA ICBAH,Xõ3045     LDA #80õ3050     STA ICBLL,Xõ3055     LDA #0õ3060     STA ICBLH,Xõ3065     JSR CIOVõ3070     LDA $0353õ3075     CMP #1      ;Any errors?õ3080     BNE OHOH1   ;Yes.õ3085 ;õ3090     LDA LOHI    ;Next screenõ3095 ;                bytes.õ3100     CLC õ3105     ADC #40õ3110     STA LOHIõ3115     LDA LOHI+1õ3120     ADC #0õ3125     STA LOHI+1õ3130     INC TEMPõ3135     LDA TEMPõ3140     CMP #96     ;End of screen?õ3145     BNE LB      ;No.õ3150 ;õ3155     JMP CLOSESAVE ;Yes, close.õ3160 ;õ3165 NOPEY1õ3170     CMP #'2     ; Not this one!õ3175     BNE CONSKYSQ ;ARRRGH!õ3180 ;õ3185     JSR OPENSVE ;Open for save.õ3190     LDX #$10    ;Plain 62 sectorõ3195     LDA #11     ;save.õ3200     STA ICCOM,Xõ3205     LDA 88õ3210     STA ICBAL,Xõ3215     LDA 89õ3220     STA ICBAH,Xõ3225     LDA # <7680õ3230     STA ICBLL,Xõ3235     LDA # >7680õ3240     STA ICBLH,Xõ3245     JSR CIOVõ3250     JMP CHECKERR ;Done.õ3255 ;õ3260 CONSKYSQõ3265     JMP CONSKYS ;Loop back.õ3270 ;õ3275 OHOH1õ3280     JMP OHOH    ;Ditto.õ3285 ;õ3290 CHECKERRõ3295     LDA $0353   ;Error?õ3300     CMP #1õ3305     BNE OHOH1   ;Yes.õ3310 ;õ3315     JMP CLOSESAVE ;Close disk.õ3320 ;õ3325 MORECONS1õ3330     JMP MORECONS ;Back.õ3335 ;õ3340 CLEARALLELSEõ3345     LDX #0      ;Clear all else!õ3350 CAE1õ3355     LDA #0õ3360     STA DISPLINE,X ;Show lines.õ3365     INX õ3370     CPX #96õ3375     BNE CAE1õ3380 ;õ3385     LDA #0      ;colors!õ3390     STA 712õ3395     LDA #10õ3400     STA 709õ3405     LDX #0õ3410     TXA õ3415 CLEARCHCLSõ3420     STA CHARCOLR,X ;Gray shades!õ3425     INX õ3430     CPX #120õ3435     BNE CLEARCHCLSõ3440 ;õ3445     RTS õ3450 ;õ3455 ITZNEETõ3460     LDX POS     ;Other stuff!õ3465     LDA L5+19õ3470     BNE UDDER1õ3475 ;õ3480     LDA ENDZ,Xõ3485     CMP YYõ3490     BNE LEEVEõ3495 ;õ3500     JMP NXTSCRNõ3505 ;õ3510 UDDER1õ3515     LDA ENDZZ,Xõ3520     CMP YYõ3525     BNE LEEVEõ3530 ;õ3535     JMP NXTSCRN2õ3540 ;õ3545 LEEVEõ3550     JMP ITõ3555 ;õ3560 NXTSCRNõ3565     LDA #96õ3570     STA BTM+1õ3575     JSR TRANSFER7õ3580 NXõ3585     LDA #0      ;Clear screens!õ3590     STA XXõ3595     STA YYõ3600     JMP ITõ3605 ;õ3610 NXTSCRN2õ3615     LDA #192õ3620     STA BTM+1õ3625     JSR TRANSFER7õ3630     JMP NXõ3635 ;õ3640 CLOSESAVEõ3645     LDX #$10    ;Close the saveõ3650     LDA #11     ;by appendingõ3655 ;                color info.õ3660     STA ICCOM,Xõ3665     LDA # <COLORSDõ3670     STA ICBAL,Xõ3675     LDA # >COLORSDõ3680     STA ICBAH,Xõ3685     LDA #4õ3690     STA ICBLL,Xõ3695     LDA #0õ3700     STA ICBLH,Xõ3705     JSR CIOVõ3710     LDX #$10õ3715     LDA #$0Cõ3720     STA ICCOM,Xõ3725     JSR CIOVõ3730     JMP CONSKYS ;Back.õ3735 ;õ3740 COLORSDõ3745     .BYTE 12,10,6,2 ;Our screenõ3750 ;                   gray shades.õ3755 ;õ3760 OPENSVEõ3765     LDX #$10    ;Open forõ3770     LDA #3      ;disk write.õ3775     STA ICCOM,Xõ3780     LDA # <FILENAMEõ3785     STA ICBAL,Xõ3790     LDA # >FILENAMEõ3795     STA ICBAH,Xõ3800     LDA #8õ3805     STA ICAX1,Xõ3810     LDA #0õ3815     STA ICAX2,Xõ3820     JSR CIOVõ3825     LDA $0353   ;Error?õ3830     CMP #1õ3835     BNE OHOH    ;YES!!!õ3840 ;õ3845     RTS õ3850 ;õ3855 OHOHõ3860     PLA õ3865     JMP ERRORõ3870 ;õ3875 ; Input filenameõ3880 ;õ3885 INPUTQõ3890     JSR CLEARFN ;Clear filenameõ3895     LDX #0õ3900 INPLOOPQõ3905     STX TEMPõ3910     LDA #$80õ3915     LDX TEMPõ3920     STA LSAVE+22,Xõ3925     JSR GETKEY  ;Get loop.õ3930     LDX TEMPõ3935     LDA KEYõ3940     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,Xõ3980     LDA #32õ3985     STA FILENAME+3,Xõ3990     DEX õ3995     JMP INPLOOPQõ4000 ;õ4005 NOTBKSPQõ4010     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 #32õ4055     STA LSAVE+22,Xõ4060     INX õ4065     JMP INPLOOPQõ4070 ;õ4075 FINIQõ4080     LDA #0      ;End it.õ4085     STA LSAVE+22,Xõ4090     RTS õ4095 ;õ4100 ; Open S: deviceõ4105 ;õ4110 OPENSõ4115     LDX #$20    ;Open it.õ4120     LDA #3õ4125     STA ICCOM,Xõ4130     LDA # <SHõ4135     STA ICBAL,Xõ4140     LDA # >SHõ4145     STA ICBAH,Xõ4150     LDA #8õ4155     STA ICAX1,Xõ4160     LDA L5+19   ;Pick a mode,õ4165     BNE EIGHT   ;any mode.õ4170 ;õ4175     LDA #7õ4180     STA ICAX2,Xõ4185     JMP OPENITõ4190 ;õ4195 EIGHTõ4200     LDA #8õ4205     STA ICAX2,Xõ4210 OPENITõ4215     JSR CIOVõ4220     LDA L5+19õ4225     BEQ LATERONDUDESõ4230 ;õ4235     LDA SDLSTL  ;Store DL addr.õ4240     CLC õ4245     ADC #3õ4250     STA LOHIõ4255     LDA SDLSTL+1õ4260     ADC #0õ4265     STA LOHI+1õ4270     LDY #0õ4275 SRCHDLõ4280     LDA (LOHI),Y ;Change GR.8õ4285 ;                 to GR.7+õ4290     CMP #$4Fõ4295     BNE NOMLDõ4300 ;õ4305     LDA #$4Eõ4310     STA (LOHI),Yõ4315     LDA LOHIõ4320     CLC õ4325     ADC #2õ4330     STA LOHIõ4335     LDA LOHI+1õ4340     ADC #0õ4345     STA LOHI+1õ4350     JMP NXTDLBõ4355 ;õ4360 NOMLDõ4365     CMP #$0Fõ4370     BNE NOREGLõ4375 ;õ4380     LDA #$0Eõ4385     STA (LOHI),Yõ4390     BNE NXTDLBõ4395 ;õ4400 NOREGLõ4405     CMP #$41õ4410     BNE NXTDLBõ4415 ;õ4420     RTS õ4425 ;õ4430 NXTDLBõ4435     LDA LOHIõ4440     CLC õ4445     ADC #1õ4450     STA LOHIõ4455     LDA LOHI+1õ4460     STA POINTER+1õ4465     STA LOHI+1õ4470     JMP SRCHDLõ4475 ;õ4480 LATERONDUDESõ4485     RTS õ4490 ;õ4495 SHõ4500     .BYTE "S:"  ;Screen handler.õ4505 ;õ4510 TRANSFER7õ4515     LDA #0      ;Move screens.õ4520     STA TEMPõ4525     LDA 88õ4530     STA LOHIõ4535     LDA 89õ4540     STA LOHI+1õ4545     LDA # <SCRN2õ4550     STA POINTERõ4555     LDA # >SCRN2õ4560     STA POINTER+1õ4565 TR1õ4570     LDY #0õ4575 TR2õ4580     LDA (LOHI),Yõ4585     PHA õ4590     LDA (POINTER),Yõ4595     STA (LOHI),Yõ4600     PLA õ4605     STA (POINTER),Yõ4610     INY õ4615     CPY #40õ4620     BNE TR2õ4625 ;õ4630     INC TEMPõ4635     LDA TEMPõ4640 BTMõ4645     CMP #96õ4650     BEQ DONETRNSõ4655     LDA LOHIõ4660     CLC õ4665     ADC #40õ4670     STA LOHIõ4675     LDA LOHI+1õ4680     ADC #0õ4685     STA LOHI+1õ4690     LDA POINTERõ4695     CLC õ4700     ADC #40õ4705     STA POINTERõ4710     LDA POINTER+1õ4715     ADC #0õ4720     STA POINTER+1õ4725     JMP TR1õ4730 ;õ4735 DONETRNSõ4740     RTS õ4745 ;õ4750 CLRBIGBUFõ4755     LDA #0      ;Clear screens.õ4760     STA TEMPõ4765     LDA # <SCRN2õ4770     STA LOHIõ4775     LDA # >SCRN2õ4780     STA LOHI+1õ4785 CLRB1õ4790     LDY #0õ4795     TYA õ4800 CLRB2õ4805     STA (LOHI),Yõ4810     INY õ4815     CPY #40õ4820     BNE CLRB2õ4825 ;õ4830     INC TEMPõ4835     LDA TEMPõ4840     CMP #192õ4845     BEQ DONECLRINGõ4850 ;õ4855     LDA LOHIõ4860     CLC õ4865     ADC #40õ4870     STA LOHIõ4875     LDA LOHI+1õ4880     ADC #0õ4885     STA LOHI+1õ4890     JMP CLRB1õ4895 ;õ4900 DONECLRINGõ4905     RTS õ4910 ;õ4915 SETMDõ4920     LDA L5+19   ;Offset borders.õ4925     BNE PLUSGõ4930 ;õ4935     LDA #128õ4940     STA MD+1õ4945     LDA #-32õ4950     STA MD2+1õ4955     RTS õ4960 ;õ4965 PLUSGõ4970     LDA #176õ4975     STA MD+1õ4980     LDA #16õ4985     STA MD2+1õ4990     RTS õ4995 ;õ5000 CLRESTõ5005     LDX $0358   ;Buffer pointer.õ5010     LDA #32õ5015 RESTLPõ5020     STA BUFFER,Xõ5025     INX õ5030     BNE RESTLPõ5035 ;õ5040     RTS õ5045 ;õ5050 CHECK4RTNõ5055     CMP #155    ;ATASCII RETURN?õ5060     BNE NEXT1õ5065 ;õ5070     JMP SRCHCONTõ5075 ;õ5080 NEXT1õ5085     CMP #13     ;ASCII RETURN?õ5090     BNE NEXT2õ5095 ;õ5100     JMP SRCHCONTõ5105 ;õ5110 NEXT2õ5115     CMP #10     ;ASCII LF?õ5120     BNE XIT1õ5125 ;õ5130     JMP SRCHCONTõ5135 ;õ5140 XIT1õ5145     JMP BACKHRõ5150 ;õ5155 ERASECRõ5160     LDA #0      ;Erase cursor.õ5165     LDX TEMPõ5170     STA ARL,Xõ5175     LDA CRL,Xõ5180     SEC õ5185     SBC #$80õ5190     STA CRL,Xõ5195     RTS õ5200 ;õ5205 CLRBUFFõ5210     LDX #0õ5215     TXA õ5220 CLROOPõ5225     STA BUFFER,Xõ5230     INX õ5235     BNE CLROOPõ5240 ;õ5245     RTS õ5250 ;õ5255 CLRCOLSõ5260     LDX #0õ5265     TXA õ5270 CLRCLOOPõ5275     STA CHARCOLR,Xõ5280     INX õ5285     CPX #120õ5290     BNE CLRCLOOPõ5295 ;õ5300     RTS õ5305 ;õ5310 OPENõ5315     LDX #$10    ;Open disk file.õ5320     LDA #3õ5325     STA ICCOM,Xõ5330     LDA # <FILENAMEõ5335     STA ICBAL,Xõ5340     LDA # >FILENAMEõ5345     STA ICBAH,Xõ5350     LDA #4õ5355     STA ICAX1,Xõ5360     LDA #0õ5365     STA ICAX2,Xõ5370     JSR CIOVõ5375     LDA $0353   ;Error?õ5380     CMP #1õ5385     BNE ERROR   ;Yes.õ5390 ;õ5395     RTS õ5400 ;õ5405 CLOSEõ5410     LDX #$10    ;Close it!õ5415     LDA #$0Cõ5420     STA ICCOM,Xõ5425     JMP CIOVõ5430 ;õ5435 ERRORõ5440     LDA # <ERR  ;ERROR!!!õ5445     STA SDLSTLõ5450     LDA # >ERRõ5455     STA SDLSTL+1õ5460     LDA $0353õ5465     STA $D4õ5470     LDA #0õ5475     STA $D5õ5480     JSR $D9AA   ;Convert ERR #õ5485     JSR $D8E6   ;to screen mem.õ5490     CLD õ5495     LDY #$FFõ5500 PNUMõ5505     INY õ5510     LDA ($F3),Yõ5515     AND #$1Fõ5520     STA ERRLIN+10,Yõ5525     LDA ($F3),Yõ5530     BPL PNUMõ5535 ;õ5540     JSR RAZZ    ;Buzz.õ5545     JSR CLOSE   ;Close.õ5550     JSR GETKEY  ;Get a key.õ5555 MNUJMPõ5560     JMP ST1õ5565 ;õ5570 INPUTõ5575     JSR CLEARFN ;Clear filename.õ5580     LDX #0õ5585 INPLOOPõ5590     STX TEMPõ5595     LDA #$80õ5600     LDX TEMPõ5605     STA L2+16,Xõ5610     JSR GETKEY  ;Thisõ5615     LDX TEMP    ;inputõ5620     LDA KEY     ;loopõ5625     CMP #126    ;isõ5630     BNE NOTBKSP ;identicalõ5635 ;                toõ5640     CPX #0      ;theõ5645     BEQ INPLOOP ;otherõ5650 ;                inputõ5655     LDA #0      ;loop.õ5660     STA L2+16,Xõ5665     LDA #32õ5670     STA FILENAME+3,Xõ5675     DEX õ5680     JMP INPLOOPõ5685 ;õ5690 NOTBKSPõ5695     CMP #155õ5700     BEQ FINIõ5705 ;õ5710     CPX #12õ5715     BEQ INPLOOPõ5720 ;õ5725     STA FILENAME+3,Xõ5730     SEC õ5735     SBC #32õ5740     STA L2+16,Xõ5745     INX õ5750     JMP INPLOOPõ5755 ;õ5760 FINIõ5765     LDA #0õ5770     STA L2+16,Xõ5775     RTS õ5780 ;õ5785 CLEARFNõ5790     LDX #0      ;Clearõ5795 LOOPCLRõ5800     LDA #32     ;filename.õ5805     STA FILENAME+3,Xõ5810     LDA #0õ5815     STA L2+16,Xõ5820     STA LSAVE+22,Xõ5825     INX õ5830     CPX #13õ5835     BNE LOOPCLRõ5840 ;õ5845     RTS õ5850 ;õ5855 RAZZõ5860     LDY #$20    ;Razz routine.õ5865 RAZZ1õ5870     LDX #$7F    ;Same as CTRL-2õ5875 RAZZ2õ5880     STX 53279õ5885     STX WSYNCõ5890     DEX õ5895     BPL RAZZ2õ5900 ;õ5905     DEY õ5910     BPL RAZZ1õ5915 ;õ5920     RTS õ5925 ;õ5930 TEMPõ5935     .BYTE 0,0,0 ;Temp. Vars.õ5940 ;õ5945 PLOTõ5950     STA COLOR   ;Plot routines.õ5955     STX XSTORõ5960     STY YSTORõ5965     LDA YSTORõ5970     ASL Aõ5975     STA POINTERõ5980     LDA #0õ5985     ROL Aõ5990     STA POINTER+1õ5995     JMP CONTõ6000 ;õ6005 COLORõ6010     .BYTE 0     ;Color holdõ6015 XSTORõ6020     .BYTE 0     ;storage...õ6025 ;õ6030 GETKEYõ6035     LDX #$30    ;Get a keyõ6040     LDA #7      ;routine.õ6045     STA ICCOM,Xõ6050     LDA # <KEYõ6055     STA ICBAL,Xõ6060     LDA # >KEYõ6065     STA ICBAH,Xõ6070     LDA #1õ6075     STA ICBLL,Xõ6080     LDA #0õ6085     STA ICBLH,Xõ6090     JMP CIOVõ6095 ;õ6100 KEYõ6105     .BYTE 0     ;Key value.õ6110 ;õ6115 CONTõ6120     ASL POINTER ; The plotõ6125     ROL POINTER+1 ;routine.õ6130     ASL POINTER ;(Kinda complex)õ6135     LDA POINTERõ6140     STA STOR1õ6145     ROL POINTER+1õ6150     LDA POINTER+1õ6155     STA STOR2õ6160     ASL POINTERõ6165     ROL POINTER+1õ6170     ASL POINTERõ6175     ROL POINTER+1õ6180     LDA POINTERõ6185     CLC õ6190     ADC STOR1õ6195     STA POINTERõ6200     LDA POINTER+1õ6205     ADC STOR2õ6210     STA POINTER+1õ6215     LDA 88õ6220     CLC õ6225     ADC POINTERõ6230     STA POINTERõ6235     LDA 89õ6240     ADC POINTER+1õ6245     STA POINTER+1õ6250     LDA XSTORõ6255     AND #3õ6260     TAX õ6265     LDA XSTORõ6270     LSR Aõ6275     LSR Aõ6280     CLC õ6285     ADC POINTERõ6290     STA POINTERõ6295     LDA POINTER+1õ6300     ADC #0õ6305     STA POINTER+1õ6310     LDY COLORõ6315     LDA BMASK2,Xõ6320     AND COLORS,Yõ6325     STA STOR1õ6330     LDA BMASK1,Xõ6335     LDY #0õ6340     AND (POINTER),Yõ6345     ORA STOR1õ6350     STA (POINTER),Yõ6355     RTS õ6360 ;õ6365 ; Various stuff.õ6370 ;õ6375 COLORSõ6380     .BYTE $00,$55,$AA,$FF ;plotõ6385 ;                         colorsõ6390 BMASK1õ6395     .BYTE $3F,$CF,$F3,$FC ;Masksõ6400 ;                          forõ6405 BMASK2õ6410     .BYTE $C0,$30,$0C,$03 ;plotõ6415 ;                      routines.õ6420 YSTORõ6425     .BYTE 0     ;Storageõ6430 STOR1õ6435     .BYTE 0     ;forõ6440 STOR2õ6445     .BYTE 1     ;plot routineõ6450 KHõ6455     .BYTE "K:"  ;Keybd handler.õ6460 COLSõ6465     .SBYTE "80  132 " ;Columns.õ6470 COLõ6475     .BYTE 0     ;Col. toggle.õ6480 ARWSõ6485     .SBYTE "" ;Our arrowsõ6490 POSõ6495     .BYTE 0     ;Position code.õ6500 FILENAMEõ6505     .BYTE "D1:               "õ6510 ;    Filename bufferõ6515 CHARCOLRõ6520     *=  *+120   ;Where we placeõ6525 ;       our edited gray shades.õ6530 BUFFERõ6535     *=  *+256   ;Load-in bufferõ6540 COLAMTõ6545     .BYTE 40,14 ;Col. amounts.õ6550 ;DEFAULTS are our defaultõ6555 ;gray shades.õ6560 DEFAULTSõ6565     .BYTE 0,2,1,3,2,2,3,1,2,2õ6570     .BYTE 3,2,1,1,1,1,3,3,3,3õ6575     .BYTE 3,3,3,3,3,2,2,2,2,2,2õ6580     .BYTE 3,3,3,3,3,3,3,3,3,3õ6585     .BYTE 3,3,3,3,3,3,3,3,3,3õ6590     .BYTE 3,3,3,3,3,3,3,2,2,2õ6595     .BYTE 1,1õ6600 ;õ6605 LOPõ6610     INC TEMPõ6615     LDA TEMPõ6620     CMP #32õ6625     BEQ DONELDINGõ6630 ;õ6635     JMP SRCHCONTõ6640 ;õ6645 DONELDINGõ6650     JMP EOFõ6655 ;õ6660 ; Our display lists/data.õ6665 ;õ6670 DLIST1õ6675     .BYTE $70,$70,$70,$70,$70õ6680     .BYTE $70,$F0,$47õ6685     .BYTE  <LINES, >LINESõ6690     .BYTE $90,$02,$70,$02,$00õ6695     .BYTE $02,$00,$02,$00,$02õ6700     .BYTE $00,$02,$00,$02õ6705     .BYTE $41, <DLIST1, >DLIST1õ6710 SELECTõ6715     .BYTE $70,$70,$70,$70,$47õ6720     .BYTE  <SLCTLINE, >SLCTLINEõ6725     .BYTE $07,$41õ6730     .BYTE  <SELECT, >SELECTõ6735 SLCTLINEõ6740     .SBYTE "¹SE DEFAULTS OR "õ6745     .SBYTE "‰DIT YOUR OWN?  "õ6750 LINESõ6755     .SBYTE +$C0," ART CONVERTER! "õ6760     .SBYTE " (c)1987, Antic Publishing Inc. "õ6765 L1õ6770     .SBYTE "   ˆolumn of printout: 80       "õ6775 L2õ6780     .SBYTE "   Ãoad file D1:                "õ6785     .SBYTE "   Ÿefault drive number         "õ6790 L4õ6795     .SBYTE "   ­icture postioning:         "õ6800 L5õ6805     .SBYTE "   «raphics mode: 7             "õ6810     .SBYTE "   ²­¡ˆ‰ starts the conversion  "õ6815 ;õ6820 ;* Our DLI's.õ6825 ;õ6830 DLIõ6835     PHA õ6840     TXA õ6845     PHA õ6850     LDX #$90õ6855 LLLõ6860     STX WSYNCõ6865     STX $D019õ6870     INX õ6875     CPX #$A0õ6880     BNE LLLõ6885 ;õ6890     LDA # <DLI1õ6895     STA VDSLSTõ6900     LDA # >DLI1õ6905     STA VDSLST+1õ6910     PLA õ6915     TAX õ6920     PLA õ6925     RTI õ6930 ;õ6935 DLI1õ6940     PHA õ6945     TXA õ6950     PHA õ6955     LDX #0õ6960     LDY #$0Eõ6965 LLL1õ6970     STX WSYNCõ6975     LDA #$4Aõ6980     STA $D018õ6985     LDA #0õ6990     STA $D017õ6995     INX õ7000     CPX #9õ7005     BNE LLL1õ7010 ;õ7015     LDA #$C4õ7020     STA $D018õ7025     LDA #10õ7030     STA $D017õ7035     LDA # <DLIõ7040     STA VDSLSTõ7045     LDA # >DLIõ7050     STA VDSLST+1õ7055     PLA õ7060     TAX õ7065     PLA õ7070     RTI õ7075 ;õ7080 ; More display lists.õ7085 ;õ7090 DLIST3õ7095     .BYTE $70,$70,$70,$70,$47õ7100     .BYTE  <LINES2, >LINES2õ7105     .BYTE $07,$70,$70,$70,$70õ7110     .BYTE $70,$02,$00,$02,$00õ7115     .BYTE $02,$70,$70,$70,$70õ7120     .BYTE $70,$06,$00,$06õ7125     .BYTE $41, <DLIST3, >DLIST3õ7130 LINES2õ7135     .SBYTE +$80," NOW SEARCHING  "õ7140     .SBYTE +$80,"FILE FOR BYTES.."õ7145 DISPLINEõ7150     .SBYTE "                                "õ7155 ARLõ7160     .SBYTE "                                "õ7165 CRLõ7170     .SBYTE "                                "õ7175     .SBYTE +$C0,"  ENTER DATA:   "õ7180     .SBYTE +$C0,"0=WHITE, 3=BLACK"õ7185 XXõ7190     .BYTE 1     ;Our screen Xõ7195 YYõ7200     .BYTE 1     ;and Y values.õ7205 P256õ7210     .BYTE 1     ;Pointer...õ7215 ;õ7220 ; Yet another display list.õ7225 ;õ7230 DLIST0õ7235     .BYTE $70,$70,$70,$70,$70õ7240     .BYTE $70,$70,$47õ7245     .BYTE  <LINESF, >LINESF,$30õ7250     .BYTE $70,$02,$00,$02,$00õ7255     .BYTE $02,$00,$02,$00,$02õ7260     .BYTE $20,$02õ7265     .BYTE $41, <DLIST0, >DLIST0õ7270 LINESFõ7275     .SBYTE +$80,"  CHOOSE AN OPTION: " 12345678901234567890õ7280     .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 LSAVEõ7310     .SBYTE "     Save filename D1:                  "õ7315 ;õ7320 ; Our screen boundaries for allõ7325 ; positioning modes.õ7330 ;õ7335 ENDZõ7340     .BYTE 96,160,96,160õ7345 ENDZZõ7350     .BYTE 192,160,192,160õ7355 SCRN2 = $4000   ;Buffer screen.õ7360 ;õ7365 ; Guess what. A display listõ7370 ; to handle errors.õ7375 ;õ7380 ERRõ7385     .BYTE $70,$70,$70,$70,$70õ7390     .BYTE $70,$70,$70,$70,$70õ7395     .BYTE $47, <ERRLIN, >ERRLINõ7400     .BYTE $41, <ERR, >ERRõ7405 ERRLINõ7410     .SBYTE "  ERROR -                     "õ7415 ;õ7420 ;* Where we start from.õ7425     *=  $02E0   ;Init addr.õ7430 ;õ7435     .WORD STARTõ7440     .END õ