home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antic Magazine 1987 July
/
Antic_Magazine_1987_07_Antic.atr
/
artconvr.m65
< prev
next >
Wrap
Text File
|
2023-02-26
|
31KB
|
1 lines
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 " צסIJבד 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 " IJמךáידך toggles screens, צקIJפק 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 ¢