home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
s85xx
/
s8504a.d64
/
ep-sup.sou
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
11KB
|
660 lines
100 " .BA $C000 ;PC SETZEN
105 " ;***********************************
110 " ; E P S O N - S U P P O R T
115 " ;
120 " ;VERSION 1.7 (C)1984 BY A.DEL PINO
125 " ;
130 " ;***********************************
131 " ;
132 " ;VARIABLEN & SYSTEMADRESSEN
133 " ;
135 "HELP = $033C
140 "YVALUE = $14
145 "XVALUE = $033C
150 "X1 = $0350
155 "Y1 = X1+2
160 "X2 = X1+4
165 "Y2 = X1+6
170 "XSTEP = X1+8
175 "YSTEP = X1+10
180 "XDIFF = X1+12
185 "YDIFF = X1+14
190 "SUM = X1+16
195 "XMAX = 800
200 "YMAX = 552
205 "DISABLE = $34 ;ROM AUSBLENDEN
210 "ENABLE = 55 ;ROM EINBLENDEN
215 "FLAG = X1+18
220 "BITPOS = X1+19
225 "FLAG1 = X1+23
230 "FLAG2 = X1+24
235 "FLAG3 = X1+25
240 "LENGH = X1+26
245 "LINETYP = X1+27
246 " ;
247 " ;PROGRAMMSTART, ZEIGER VERBIEGEN
248 " ;
250 " LDA #<ESUP
255 " LDY #>ESUP
260 " STA $0308
265 " STY $0309
270 " LDA #<8190
275 " LDY #>8190
280 " STA $33
285 " STY $34
290 " STA $37
295 " STY $38
296 " ;
297 " ;PROMPT AUSGEBEN
298 " ;
300 " LDA #<PROMPT
305 " LDY #>PROMPT
310 " JMP $AB1E
311 " ;
312 " ;BASIC-TOKEN ERKENNEN
313 " ;
315 "ESUP JSR $73
320 " CMP #'&'
325 " BEQ SUPPORT
330 " JSR $79
335 " JMP $A7E7
340 "SUPPORT LDX #$FF
345 " LDY #0
350 " STY FLAG
355 "SLOOP INX
360 " INY
365 " LDA @STMTAB,X
370 " BEQ NEWSTMT
375 " CMP ($7A),Y
380 " BEQ SLOOP
385 "NXT INX
390 " LDA @STMTAB,X
395 " BNE NXT
400 " INC FLAG
405 " LDY #0
410 " LDA @STMTAB+1,X
415 " BNE SLOOP
420 " JMP $AF08
425 "NEWSTMT DEY
430 " CLC
435 " TYA
440 " ADC $7A
445 " STA $7A
450 " BCC L1
455 " INC $7B
456 " ;
457 " ;RETURN-ADRESSE AUF DEN STACK
458 " ;
460 "L1 LDA #$A7
465 " PHA
470 " LDA #$E9
475 " PHA
480 " LDA FLAG
485 " ASL
490 " TAX
495 " LDA @ENTRY+1,X
496 " ;
497 " ;ADRESSE DES NEUEN BEFEHLS AUF DEN STACK
500 " PHA
505 " LDA @ENTRY,X
510 " PHA
515 " JMP $73
516 " ;
517 " ;HIER SIND DIE NEUEN BEFEHLE...
518 " ;
520 " ;**************************
525 " ;
530 " ; &CLEAR
535 " ;
540 " ;**************************
545 "CLEAR LDA #<8192
550 " LDY #>8192
555 " STA $FB
560 " STY $FC
565 " SEI
570 " LDA #DISABLE
575 " STA 1
580 " LDY #0
585 " TYA
590 "CL1 STA ($FB),Y
595 " INY
600 " BNE CL1
605 " INC $FC
610 " LDX $FC
615 " CPX #$C0
620 " BNE CL1
625 " LDX #$C8
630 " STX $FC
635 "CL2 STA ($FB),Y
640 " INY
645 " BNE CL2
650 " INC $FC
655 " BNE CL2
660 " LDA #ENABLE
665 " STA 1
670 " CLI
675 " RTS
680 " ;**************************
685 " ;
690 " ; DOT - BEFEHLE
695 " ;
700 " ;**************************
705 "DOT LDA #0
710 " STA FLAG
715 " JSR VALUE+3
720 " STA XVALUE
725 " STY XVALUE+1
730 " JSR VALUE
735 "WORKDOT CPY #>YMAX
740 " BCC SE1
745 " CMP #<YMAX
750 " BCC SE1
755 " RTS
756 " ;
757 " ;ADRESSE DES PUNKTES BERECHNEN
758 " ;
760 "SE1 STA @HELP+2
765 " STY @HELP+3
770 " LDY #3
775 "SE2 CLC
780 " LSR @HELP+3
785 " ROR @HELP+2
790 " DEY
795 " BNE SE2
800 " CLC
805 " LDA @HELP+2
810 " ADC #>8192
815 " STA $FC
820 " LDA @HELP+2
825 " STA $FB
830 " ASL
835 " ADC $FC
840 " STA $FC
845 " LDA #0
850 " ASL $FB
855 " ROL
860 " ASL $FB
865 " ROL
870 " ASL $FB
875 " ROL
880 " ASL $FB
885 " ROL
890 " ASL $FB
895 " ROL
900 " ADC $FC
905 " STA $FC
910 "SE4 LDA $14
915 " AND #7
920 " TAX
925 " LDA @BIT,X
930 " STA BITPOS
935 " LDA XVALUE
940 " LDY XVALUE+1
945 " CPY #>XMAX
950 " BCC SE5
955 " CMP #<XMAX
960 " BCC SE5
965 " RTS
970 "SE5 ADC $FB
975 " STA $FB
980 " TYA
985 " ADC $FC
990 " CMP #$C0
995 " BCC SE6
1000 " ADC #7
1005 "SE6 STA $FC
1010 " SEI
1011 " ;
1012 " ;ROM AUSBLENDEN
1013 " ;
1015 " LDA #DISABLE
1020 " STA 1
1025 " LDY #0
1030 " BIT FLAG
1035 " BPL DOT0X
1040 " BVC INVERT
1041 " ;
1042 " ;PUNKT TESTEN 'BITTEST'
1043 " ;
1045 " LDA BITPOS
1050 " LDX #0
1055 " AND ($FB),Y
1060 " BEQ TS1
1065 " DEX
1070 "TS1 STX FLAG
1075 " JMP ENDDOT
1076 " ;
1077 " ;PUNKT INVERTIEREN
1078 " ;
1080 "INVERT LDA BITPOS
1085 " EOR ($FB),Y
1090 " STA ($FB),Y
1095 " JMP ENDDOT
1100 "DOT0X BVC SET
1101 " ;
1102 " ;PUNKT ZURUECKSETZEN
1103 " ;
1105 " LDA BITPOS
1110 " EOR #$FF
1115 " AND ($FB),Y
1120 " STA ($FB),Y
1125 " JMP ENDDOT
1126 " ;
1127 " ;PUNKT SETZEN
1128 " ;
1130 "SET LDA BITPOS
1135 " ORA ($FB),Y
1140 " STA ($FB),Y
1145 "ENDDOT LDA #ENABLE
1150 " STA 1
1155 " CLI
1160 " RTS
1165 " ;**************************
1170 " ;
1175 " ; &PRINT
1180 " ;
1185 " ;**************************
1186 " ;USERPORT-INTERFACE DURCH GEEIGNTES
1187 " ;SETZEN DER PORTBAUSTEIN-REGISTER
1188 " ;INITIALISIEREN. BEI DRUCKERN AM SERIELLEN BUS MUSS
1189 " ;HIER EIN FILE AUF DEN DRUCKER EROEFFNET WERDEN.
1190 "HARDCOPY SEI
1195 " LDA #$FF
1200 " STA $DD03
1205 " LDA $DD02
1210 " ORA #4
1215 " STA $DD02
1220 " LDA $DD00
1225 " ORA #4
1230 " STA $DD00
1235 " LDA #$10
1240 " STA $DD0D
1245 " LDA $DD0D
1250 " CLI
1251 " ;STEUERCODES FUER EPSON RX-80 AUSGEBEN
1255 " LDX #5
1260 "HC0 LDA @TABLE1,X
1265 " JSR CWROUT
1270 " DEX
1275 " BPL HC0
1280 " LDA #<8192
1285 " LDY #>8192
1290 " STA $FB
1295 " STY $FC
1300 " LDA #0
1305 " STA $FD
1306 " ;STEUERCODES FUER NEUE GRAFIKZEILE AUSGEBEN
1310 "HC1 LDX #0
1315 " LDA @TABLE2,X
1320 " JSR CWROUT
1325 " INX
1330 " CPX #14
1335 " BNE HC1+2
1336 " ;EINE GRAFIKZEILE (8*800 DOTS) AUSGEBEN
1340 " LDX #0
1345 "HC2 JSR WROUT
1350 " INX
1355 " BNE HC2
1360 "HC3 JSR WROUT
1365 " INX
1370 " BNE HC3
1375 "HC4 JSR WROUT
1380 " INX
1385 " BNE HC4
1390 "HC5 JSR WROUT
1395 " INX
1400 " CPX #<XMAX
1405 " BNE HC5
1410 " INC $FD
1415 " LDA $FD
1420 " CMP #69
1425 " BNE HC1
1430 " RTS
1431 " ;ROM AUSBLENDEN
1435 "WROUT SEI
1440 " LDA #DISABLE
1445 " STA 1
1446 " ;ADRESSE DES AUSZUGEBENDEN PUNKTES BERECHNEN
1450 " CLC
1455 " LDA $FB
1460 " ADC #<$800
1465 " STA $FE
1470 " LDA $FC
1475 " ADC #>$800
1480 " STA $FF
1485 " LDY #0
1490 " LDA $FC
1495 " CMP #$C0
1500 " BCS WR1
1505 " LDA ($FB),Y
1510 " .BY $2C
1515 "WR1 LDA ($FE),Y
1520 " INC $FB
1525 " BNE WR2
1530 " INC $FC
1531 " ;ROM WIEDER EINBLENDEN
1535 "WR2 LDY #ENABLE
1540 " STY 1
1545 " CLI
1546 " ;GEBE ASCII-ZEICHEN IM ACCU AUS
1547 " ;BEI DRUCKERN MIT SERIELLER SCHNITTSTELLE
1548 " ;MUSS HIER 'JMP $FFD2' STEHEN
1549 " ;UND DANACH AUCH EIN 'RTS'
1550 "CWROUT STA $DD01
1555 " LDA $DD00
1560 " AND #$FB
1565 " STA $DD00
1570 " ORA #4
1575 " STA $DD00
1580 "WAIT LDA $DD0D
1585 " AND #$10
1590 " BEQ WAIT
1595 " CLC
1600 " RTS
1605 " ;**************************
1610 " ;
1615 " ; LINE-BEFEHLE
1620 " ;
1625 " ;**************************
1630 "LINE LDA #0
1635 " STA FLAG
1640 " LDA #0
1645 " STA LINETYP
1650 " JSR VALUE+3
1655 " STA X1
1660 " STY X1+1
1665 " JSR VALUE
1670 " STA Y1
1675 " STY Y1+1
1680 " JSR VALUE
1685 " STA X2
1690 " STY X2+1
1695 " JSR VALUE
1700 " STA Y2
1705 " STY Y2+1
1710 " LDX #1
1715 " LDY #0
1720 " SEC
1725 " LDA X2
1730 " SBC X1
1735 " STA XDIFF
1740 " LDA X2+1
1745 " SBC X1+1
1750 " STA XDIFF+1
1755 " BPL LI1
1760 " DEX
1765 " DEX
1770 " DEY
1775 " EOR #$FF
1780 " STA XDIFF+1
1785 " LDA XDIFF
1790 " EOR #$FF
1795 " STA XDIFF
1800 " INC XDIFF
1805 " BNE LI1
1810 " INC XDIFF+1
1815 "LI1 STX XSTEP
1820 " STY XSTEP+1
1825 " LDX #1
1830 " LDY #0
1835 " SEC
1840 " LDA Y2
1845 " SBC Y1
1850 " STA YDIFF
1855 " LDA Y2+1
1860 " SBC Y1+1
1865 " STA YDIFF+1
1870 " BPL LI2
1875 " DEX
1880 " DEX
1885 " DEY
1890 " EOR #$FF
1895 " STA YDIFF+1
1900 " LDA YDIFF
1905 " EOR #$FF
1910 " STA YDIFF
1915 " INC YDIFF
1920 " BNE LI2
1925 " INC YDIFF+1
1930 "LI2 STX YSTEP
1935 " STY YSTEP+1
1940 " LDY #0
1945 " LDA XDIFF
1950 " ORA XDIFF+1
1955 " BNE LI3
1960 " DEY
1965 "LI3 STY SUM
1970 " STY SUM+1
1975 "LI4 LDA X1
1980 " LDY X1+1
1985 " STA XVALUE
1990 " STY XVALUE+1
1995 " LDA Y1
2000 " LDY Y1+1
2005 " STA YVALUE
2010 " STY YVALUE+1
2015 " JSR SCANN
2020 " JSR WORKDOT
2025 " LDA X1
2030 " CMP X2
2035 " BNE LI5
2040 " LDA X1+1
2045 " CMP X2+1
2050 " BNE LI5
2055 " LDA Y1
2060 " CMP Y2
2065 " BNE LI5
2070 " LDA Y1+1
2075 " CMP Y2+1
2080 " BNE LI5
2085 " RTS
2090 "LI5 BIT SUM+1
2095 " BPL LI6
2100 " CLC
2105 " LDA Y1
2110 " ADC YSTEP
2115 " STA Y1
2120 " LDA Y1+1
2125 " ADC YSTEP+1
2130 " STA Y1+1
2135 " CLC
2140 " LDA SUM
2145 " ADC XDIFF
2150 " STA SUM
2155 " LDA SUM+1
2160 " ADC XDIFF+1
2165 " STA SUM+1
2170 " JMP LI4
2175 "LI6 CLC
2180 " LDA X1
2185 " ADC XSTEP
2190 " STA X1
2195 " LDA X1+1
2200 " ADC XSTEP+1
2205 " STA X1+1
2210 " SEC
2215 " LDA SUM
2220 " SBC YDIFF
2225 " STA SUM
2230 " LDA SUM+1
2235 " SBC YDIFF+1
2240 " STA SUM+1
2245 " JMP LI4
2250 "VALUE JSR $AEFD
2255 " JSR $AD8A
2260 " JSR $B7F7
2265 " LDA $14
2270 " LDY $15
2275 " RTS
2276 " ;FLAG SETZEN FUER MODIFIZIERTEN PUNKT- UND LINIEN-FUNKTIONEN
2280 "RESETDOT LDA #$40
2285 " JMP DOT+2
2290 "INVERTDOT LDA #$80
2295 " JMP DOT+2
2300 "RESETLINE LDA #$40
2305 " JMP LINE+2
2310 "INVERTLINE LDA #$80
2315 " JMP LINE+2
2320 " ;**************************
2325 " ;
2330 " ; &EXIT
2335 " ;
2340 " ;**************************
2341 " ;ZEIGER WIEDER 'GERADEBIEGEN'
2345 "EXIT LDY #$A7
2350 " LDA #$E4
2355 " STA $0308
2360 " STY $0309
2365 " SEC
2370 " JSR $FF99
2375 " STX $37
2380 " STY $38
2385 " JMP $E39A ;SYSTEM AUFRUFEN
2386 " ; TEXT-BEFEHLE, FLAG SETZEN
2390 "INVTEXT LDA #$80
2395 " .BY $2C
2400 "RESTEXT LDA #$40
2405 " .BY $2C
2410 "TEXT LDA #0
2415 " STA FLAG
2420 " JSR VALUE+3
2425 " STA X1
2430 " STY X1+1
2435 " JSR VALUE
2440 " STA Y1
2445 " STY Y1+1
2450 " JSR STRING
2455 " BNE TXT1
2460 " RTS
2465 "TXT1 STA LENGH
2470 " STY FLAG3
2475 "TXT2 LDY FLAG3
2480 " LDA ($64),Y
2485 " CMP #$20
2490 " BCC TXT3
2495 " CMP #$40
2500 " BCC TXT3+2
2505 " CMP #$60
2510 " BCS TXT3
2515 " AND #$1F
2520 " .BY $2C
2525 "TXT3 LDA #$20
2530 " STA 2
2535 " LDA #$1A
2540 " ASL 2
2545 " ROL
2550 " ASL 2
2555 " ROL
2560 " ASL 2
2565 " ROL
2570 " STA 3
2575 " SEI
2580 " LDA #$31
2585 " STA 1
2590 " LDY #7
2595 "TXT4 LDA (2),Y
2600 " STA $200,Y
2605 " DEY
2610 " BPL TXT4
2615 " LDA #ENABLE
2620 " STA 1
2625 " CLI
2630 " LDA #0
2635 " STA FLAG1
2640 "TXT5 LDA #7
2645 " STA FLAG2
2650 "TXT6 LDX FLAG2
2655 " LDA $200,X
2660 " LDX FLAG1
2665 " AND @BIT,X
2670 " BEQ TXT8
2675 " LDA X1
2680 " LDY X1+1
2685 " STA XVALUE
2690 " STY XVALUE+1
2695 " LDY Y1+1
2700 " LDA FLAG2
2705 " CLC
2710 " ADC Y1
2715 " STA $14
2720 " BCC TXT7
2725 " INY
2730 "TXT7 JSR WORKDOT
2735 "TXT8 DEC FLAG2
2740 " BPL TXT6
2745 " INC X1
2750 " BNE TXT9
2755 " INC X1+1
2760 "TXT9 INC FLAG1
2765 " LDX FLAG1
2770 " CPX #8
2775 " BNE TXT5
2780 " INC FLAG3
2785 " LDA FLAG3
2790 " CMP LENGH
2795 " BNE TXT10
2800 " RTS
2805 "TXT10 JMP TXT2
2810 "STRING JSR $AEFD
2815 " JSR $AD9E
2820 " JSR $B6A3
2825 " LDY #0
2830 " LDA ($64),Y
2835 " STA $63
2840 " INY
2845 " LDA ($64),Y
2850 " TAX
2855 " INY
2860 " LDA ($64),Y
2865 " STA $65
2870 " STX $64
2875 " LDY #0
2880 " LDA $63
2885 " RTS
2890 "SCANN BIT LINETYP
2895 " BMI SCA1
2900 " RTS
2905 "SCA1 LDX #$F0
2910 " STX FLAG
2915 " JSR WORKDOT
2920 " LDA Y1
2925 " LDY Y1+1
2930 " STA $14
2935 " BIT FLAG
2940 " BPL SCA2
2945 " PLA
2950 " PLA
2955 " RTS
2960 "SCA2 LDX #0
2965 " STX FLAG
2970 " RTS
2975 "SCANNLN LDA #$FF
2980 " JMP LINE+7
2985 " ;**************************
2990 " ;
2995 " ; D A T E N B E R E I C H
3000 " ;
3005 " ;**************************
3010 "BIT .BY 128 64 32 16 8 4 2 1
3015 "TABLE1 .BY 13 8 'A' 27 '8' 27
3020 "TABLE2 .BY 10 13 ' ' 27 '*' 1 XMAX
3025 "PROMPT .BY 'EPSON-SUPPORT V1.7 ***' 13
3030 " .BY '(C)1984 BY ALEX DEL PINO' 13 0
3035 "STMTAB .BY 'CLEAR' 0
3040 " .BY 'DOT' 0
3045 " .BY 'RESETDOT' 0
3050 " .BY 'INVDOT' 0
3055 " .BY 'LINE' 0
3060 " .BY 'RESETLINE' 0
3065 " .BY 'INVLINE' 0
3070 " .BY 153 0
3075 " .BY 'EXIT' 0
3080 " .BY 'TEXT' 0
3085 " .BY 'INVTEXT' 0
3090 " .BY 'RESETTEXT' 0
3095 " .BY 'SCANLINE' 0 0
3100 "ENTRY .BY CLEAR-1 DOT-1 RESETDOT-1 INVERTDOT-1
3105 " .BY LINE-1 RESETLINE-1 INVERTLINE-1 HARDCOPY-1 EXIT-1
3110 " .BY TEXT-1 INVTEXT-1 RESTEXT-1 SCANNLN-1
3115 " .EN ;END OF SOURCE-FILE