home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh2x
/
sh27c.d64
/
split-screen.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
29KB
|
1,157 lines
100 ;*********************************
110 ;*** ***
120 ;*** (null)URS ***
130 ;*** (null)AUBEREIEN MIT CHR$RAFIK UND ***
140 ;*** ATNSSEMBLER ***
150 ;*** ***
160 ;*********************************
170 ;*** ***
180 ;*** PEEKASIC-VALRWEITERUNG ***
190 ;*** (null)PLIT-(null)CREEN ***
200 ;*** ***
210 ;*********************************
220 ;*** ***
230 ;*** (LEN) 1988 BY (null)HOMAS (null)IPP ***
240 ;*** 8000 (null)UENCHEN 82 ***
250 ;*** ***
260 ;*********************************
270 ;
280 +$C000
290 USR$C000
300 ;
310 ;*********************************
320 ;*** PEEKASIC-VALRWEITERUNG ***
330 ;*********************************
340 ;
350 ;*** (null)ABELS ***
360 ;
370 TAB(CHRGET=$0073; CHRGET-(null)OUTINE
380 TAB(CHRGOT=$0079; CHRGOT-(null)OUTINE
390 TAB(TXTPTR=$007A; CHRGET-(null)EIGER
400 ;
410 TAB(IGONE=$0308; (null)EKTOR ZUM (null)OUTINENAUFRUF
420 TAB(GONE1=$A7E4; ALTER RIGHT$NHALT VON RIGHT$GONE
430 TAB(INTEND=$A7E7; VALNDE DER RIGHT$NTERPRETERSCHLEIFE
440 ;
450 ;*** VALRWEITERUNG EINSCHALTEN ***
460 ;
470 MID$#$FF; (null)PEICHERGRENZE AUF $7FFF HERABSETZEN
480 (null)$37; LSB (null)PEICHERENDE
490 MID$#$7F
500 (null)$38; MSB (null)PEICHERENDE
510 ;
520 MID$#<(START); LSB DER EIGENEN (null)OUTINE
530 (null)IGONE; IN (null)EKTOR SCHREIBEN
540 MID$#>(START); MSB DER EIGENEN (null)OUTINE
550 (null)IGONE+1; IN (null)EKTOR SCHREIBEN
560 ;
570 (null); (null)UECKSPRUNG INS PEEKASIC
580 ;
590 ;*** VALRWEITERUNG AUSSCHALTEN ***
600 ;
610 AUS MID$#<(GONE1); (null)EKTOR AUF (null)ORMALWERT ZURUECKSTELLEN
620 (null)IGONE; LSB
630 MID$#>(GONE1)
640 (null)IGONE+1;MSB
650 ;
660 (null); (null)OUTINENENDE
670 ;
680 ;*** ERWEITERTE RIGHT$NTERPRETERSCHLEIFE ***
690 ;
700 START (null)CHRGET; (null)EICHEN HOLEN
710 ;
720 STR$#$60; PEEKUCHSTABE ?
730 (null)ENDE; => PEEKASIC-LENODE
740 STR$#$41; PEEKUCHSTABE ATN ?
750 (null)ENDE; => (null)ONDERZEICHEN
760 ;
770 (null)AKKU; ATNKKU SICHERN
780 ;
790 PEEK#$00
800 (null)BEFNR; PEEKEFEHLSNUMMER AUF 0 SETZEN
810 ;
820 ERW1 LEN#$00; PEEKASICTEXTINDEX AUF 0 SETZEN
830 RIGHT$BEFNR; PEEKEFEHLSNUMMER +1
840 MID$BEFTAB,X; (null)EICHEN AUS PEEKEFEHLSTABELLE HOLEN
850 (null)ERW2; KEIN (null)RENNZEICHEN
860 MID$AKKU; ATNKKU HOLEN
870 ENDE (null)CHRGOT; CHRGOT AUFRUFEN
880 (null)INTEND; ZURUECK INS NORMALE PEEKASIC
890 ;
900 ;*** ATNDRESSE SUCHEN ***
910 ;
920 ERW2 STR$(TXTPTR),Y; (null)ERGLEICH MIT PEEKASICTEXT
930 (null)OVRD; UNGLEICH -> (null)EST UEBERLESEN
940 (null); PEEKASICTEXTINDEX + 1
950 (null); PEEKEFEHLSTAB.-RIGHT$NDEX + 1
960 MID$BEFTAB,X; NAECHSTES (null)EICHEN HOLEN
970 (null)ERW2; => PRUEFEN
980 ;
990 ;
1000 (null)
1010 (null); PEEKEFEHLSINDEX UM PEEKEFEHLSLAENGE ERHOEHEN
1020 VALTXTPTR
1030 (null)TXTPTR
1040 (null)ERW3; (null)EBERTRAG ?
1050 RIGHT$TXTPTR+1; MSB ERHOEHEN
1060 ;
1070 ERW3 MID$BEFNR; PEEKEFEHLSNUMMER VERDOPPELN
1080 (null)
1090 (null); ALS RIGHT$NDEX IN (null)PRUNGTABELLE
1100 MID$SPRTAB1,X; LSB LESEN
1110 (null)SPRUNG+1; LSB SCHREIBEN
1120 MID$SPRTAB2,X; MSB LESEN
1130 (null)SPRUNG+2; MSB SCHREIBEN
1140 ;
1150 SPRUNG (null)$FFFF; STR$UMMY
1160 ;
1170 (null)ENDE; ZURUECK INS PEEKASIC
1180 ;
1190 ;*** RESTL. PEEKEFEHLSTEXT UEBERLESEN ***
1200 ;
1210 OVRD (null); PEEKEFEHLSTAB.-RIGHT$NDEX + 1
1220 MID$BEFTAB,X; NAECHSTES (null)EICHEN HOLEN
1230 (null)OVRD; => KEIN (null)RENNZEICHEN
1240 (null); PEEKEFEHLSTAB.-RIGHT$NDEX+1
1250 (null)ERW1; NAECHSTER PEEKEFEHL
1260 ;
1270 ;*** (null)ABELLEN FUER VALRWEITERUNG ***
1280 ;
1290 ;*** (null)PRUNGTABELLE ***
1300 ;
1310 SPRTAB1 FN$E7
1320 SPRTAB2 FN$A7
1330 SPC(AUS
1340 SPC(IR
1350 SPC(IA
1360 SPC(GL
1370 SPC(SP
1380 SPC(EP
1390 SPC(LN
1400 SPC(CP
1410 SPC(HC
1420 SPC(SA
1430 SPC(LO
1440 FN$00,$00
1450 ;
1460 ;*** PEEKEFEHLSTABELLE ***
1470 ;
1480 BEFTAB NOT"OFF
1490 [165]$00
1500 [168]"IRQ
1510 FN$00
1520 NOT"TEXT
1530 [165]$00
1540 [168]"GCL
1550 FN$00
1560 NOT"SET
1570 [165]$00
1580 [168]"ERASE
1590 FN$00
1600 NOT"LINE
1610 [165]$00
1620 [168]"CHAR
1630 FN$00
1640 NOT"HC
1650 [165]$00
1660 [168]"SA
1670 FN$00
1680 NOT"LO
1690 [165]$00,$00
1700 ;
1710 ;*** [200]ILFSZELLEN ***
1720 ;
1730 AKKU [165]$00
1740 BEFNR [165]$00
1750 ;
2000 ;*********************************
2010 ;*** [210]ASTERZEILENINTERRUPT ***
2020 ;*********************************
2030 ;
2040 ;*** [204]ABELS: [199]RAFIK ***
2050 ;
2060 [163]V1=$D011; [193]DR. [199]RAFIKMODUS
2070 [163]V2=$D018; [193]DR. [214]IDEORAM
2080 [163]CIA=$DD00; 16[203]-[211]ELECTION
2090 [163]CLRSCR=$E544; [212]EXTBILDSCHIRM LOESCHEN
2100 [163]CURSOR=$E510; [195]URSOR SETZEN
2110 [163]XCUR=$00D3; X-[203]OORDINATE DES [195]URSOR
2120 [163]YCUR=$00D6; Y-[203]OORDINATE DES [195]URSOR
2130 [163]HELP1=$00FA; [218]EROPAGESPEICHERSTELLE
2140 [163]HELP2=$00FB; [218]EROPAGESPEICHERSTELLE
2150 [163]BITMAP=$8000; [194]ITMAPADRESSE
2160 [163]VIDEORAM=$A000; [214]IDEORAMADRESSE
2170 ;
2180 ;*** [205]AKROS: [199]RAFIK EIN/AUS, [214]IDEORAM LOESCHEN, [195]URSOR SETZEN ***
2190 ;
2200 [161]GRA; [199]RAFIK EINSCHALTEN
2210 [202]#$3B; [194]ITMAPMODUS EINSCHALTEN
2220 [210]V1
2230 [202]#$80; [214]IDEORAM SELECTIEREN
2240 [210]V2
2250 [202]#$01; 16[203]-[194]EREICH SELECTIEREN
2260 [210]CIA
2270 [162]
2280 ;
2290 [161]TXT; [199]RAFIK AUSSCHALTEN
2300 [202]#$1B; [194]ITMAPMODUS AUSSCHALTEN
2310 [210]V1
2320 [202]#$15; [214]IDEORAM ZURUECKSETZEN
2330 [210]V2
2340 [202]#$03; 16[203]-[194]EREICH SELECTIEREN
2350 [210]CIA
2360 [162]
2370 ;
2380 [161]VRAM; [214]IDEORAM LOESCHEN
2390 [202]#208; [214]IDEORAMWERT
2400 ;
2410 [195]#>(VIDEORAM); [211]TARTADRESSE DES [214]IDEORAMS IN [218][208] SCHREIBEN
2420 [212]HELP2; MSB
2430 [195]#<(VIDEORAM)
2440 [212]HELP1; LSB
2450 [194]#$04; [201]NDEX FUER AEUSSERE [211]CHLEIFE
2460 VL1 [210](HELP1),Y; [194]YTE IM [214]IDEORAM MIT 208 UEBERSCHREIBEN
2470 [237]; [217] + 1 ; INNERE [211]CHLEIFE 256 MAL
2480 [246]VL1; => [217]<>0
2490 [201]HELP2; MSB DER [214]IDEORAMPOSITION + 1
2500 [238]; AEUSSERER [211]CHLEIFENZAEHLER - 1
2510 [246]VL1; => [216]<>0
2520 [162]
2530 ;
2540 [161]CUR
2550 [202]#12; 12. [218]EILE
2560 [210]YCUR; IN [218][208] SCHREIBEN
2570 [202]#$00; 0. [211]PALTE
2580 [210]XCUR; IN [218][208] SCHREIBEN
2590 [213]CURSOR; [195]URSOR SETZEN UND [210]OUTINENENDE
2600 [162]
2610 ;
2620 ;*** [204]ABEL: [210]ASTERZEILENINTERRUPT ***
2630 ;
2640 [163]IRQ=$0314; [201][210][209]-[214]EKTOR
2650 [163]RASTER=$D012; [210]ASTERZEILEN [210]EGISTER; MSB (7.[194]IT) = RASTER-1
2660 [163]RIRQEN=$D01A; [214][201][195]-[201][210][209] [197]NABLE [210]EGISTER
2670 [163]REQIRQ=$D019; [214][201][195]-[201][210][209] [210]EQUEST [210]EGISTER
2680 [163]CIAIRQ=$DC0D; [195][201][193]1 [201][210][209] [203]ONTROLL [210]EGISTER
2690 [163]CNTIRQ=$EA31; [195][201][193] [201][210][209] [210]OUTINE
2700 [163]ENDIRQ=$EA81; [197]NDE DER NORMALEN [201][210][209] [210]OUTINE
2710 ;
2720 ;*** [201]NIT: [214]EKTOREN VERBIEGEN, [201][210][209] ZULASSEN ***
2730 ;
2740 IR [232]; [201]NTERRUPT SPERREN
2750 ;
2760 [202]#<(MAINIRQ); [201][210][209]-[214]EKTOR AUF EIGENE [201][210][209] [210]OUTINE VERBIEGEN
2770 [210]IRQ; LSB
2780 [202]#>(MAINIRQ)
2790 [210]IRQ+1; MSB
2800 ;
2810 [202]#$00; [210]ASTERZEILE 0 (OBERHALB DES [194]ILDSCHIRMFENSTERS)
2820 [210]RASTER; IN [210]EGISTER SCHREIBEN
2830 [202]RASTER-1; MSB (7.[194]IT) LOESCHEN
2840 [198]#$7F
2850 [210]RASTER-1
2860 ;
2870 [202]#%10000001; [210]ASTER [201][210][209] ZULASSEN
2880 [210]RIRQEN
2890 ;
2900 [202]#128; TIMER-IRQ AUS
2910 [210]$DC0E
2920 ;
2940 [231]; [201]NTERRUPT WIEDER ZULASSEN
2950 ;
2960 ;*** [194]ILDSCHIRM UND [214]IDEORAM LOESCHEN, [195]URSOR SETZEN ***
2970 ;
2980 [214]CLRSCR; [212]EXTBILDSCHIRM LOESCHEN
2990 VRAM; [214]IDEORAM LOESCHEN
3000 CUR; [195]URSOR SETZEN
3010 ;
3020 ;*** VERAENDERTE [201][210][209]-[210]OUTINE ***
3030 ;
3040 MAINIRQ [232]; [201]NTERRUPT SPERREN
3050 [202]REQIRQ; [201][210][209] VON [210]ASTERSTRAHL ?
3060 [210]REQIRQ; [210]EGISTER ZURUECKSCHREIBEN UND LOESCHEN
3070 [241]RASTERIRQ; ZUR [210]ASTER [201][210][209] [210]OUTINE
3080 [202]CIAIRQ; LOESCHEN DES [195][201][193]1 [203]ONTROLL [210]EGISTER
3090 [231]; [201]NTERRUPT WIEDER ZULASSEN
3100 [213]ENDIRQ; ZUM [197]NDE DER NORMALEN [201][210][209] [210]OUTINE
3110 ;
3120 ;*** [210]ASTER [201][210][209] [210]OUTINE ***
3130 ;
3140 RASTERIRQ [232]; [201]NTERRUPT SPERREN
3150 [202]RASTER; [210]ASTERZEILEN-[210]EGISTER AUSLESEN
3170 [246]TEXTFE; => RASTER = $91
3180 ;
3190 GRA; [199]RAFIK EINSCHALTEN
3200 ;
3210 [202]#$91; 145. [210]ASTERZEILE, [213]MSCHALTUNG AUF [212]EXT
3220 [210]RASTER; IN [210]EGISTER SCHREIBEN
3230 [202]RASTER-1; MSB (7.[194]IT)[160]LOESCHEN
3240 [198]#$7F
3250 [210]RASTER-1
3260 ;
3270 [231]; [201]NTERRUPT WIEDER ZULASSEN
3280 [213]CNTIRQ; ZUR [195][201][193] [201][210][209] [210]OUTINE
3290 ;
3300 TEXTFE [194]#$07; [215]ARTESCHLEIFE, BIS DER [210]ASTERSTRAHL IM [210]AND IST
3310 IRQWAIT [228]
3320 [238]
3330 [246]IRQWAIT
3340 ;
3350 TXT; [199]RAFIK AUSSCHALTEN, [212]EXTBILDSCHIRM EINSCHALTEN
3360 ;
3370 [202]#$00; 0. [218]EILE, [213]MSCHALTUNG AUF [199]RAFIK
3380 [210]RASTER; IN [210]EGISTER SCHREIBEN
3390 [202]RASTER-1; MSB (7.[194]IT) LOESCHEN
3400 [198]#$7F
3410 [210]RASTER-1
3420 ;
3430 [231]; [201]NTERRUPT WIEDER ZULASSEN
3440 [213]ENDIRQ; ZUM [197]NDE DER [201][210][209]-[210]OUTINE
3450 ;
3460 ;*** [210]ASTERZEILENINTERRUPT WIEDER AUSSCHALTEN ***
3470 ;
3480 IA [232]; [201]NTERRUPT SPERREN
3485 ;
3490 [202]#$00; [210]ASTER [201][210][209] AUSSCHALTEN
3500 [210]RIRQEN; IN [210]EGISTER SCHREIBEN
3510 ;
3520 [202]#<(CNTIRQ); [201][210][209]-[214]EKTOR WIEDER HERSTELLEN
3530 [210]IRQ; LSB
3540 [202]#>(CNTIRQ)
3550 [210]IRQ+1; MSB
3560 ;
3570 [202]#1; TIMER-IRQ EIN
3580 [210]$DC0E
3590 ;
3600 TXT; [199]RAFIK AUSSCHALTEN, [212]EXTBILDSCHIRM EINSCHALETEN
3610 ;
3620 [231]; [201]NTERRUPT WIEDER ZULASSEN
3630 [227]; [210]OUTINENENDE
3640 ;
4000 ;*********************************
4010 ;*** [199]RAFIK LOESCHEN ***
4020 ;*********************************
4030 ;
4040 GL [202]#>(BITMAP); [194]ITMAPADRESSE IN [218][208] SCHREIBEN
4050 [210]HELP2; MSB
4060 [202]#<(BITMAP)
4070 [210]HELP1; LSB
4080 ;
4090 [194]#$20; AEUSSERER [211]CHLEIFENINDEX, 32 MAL
4100 GL2 [218]; INNERER [211]CHLEIFENINDEX [217] AUF 0 SETZEN
4110 GL1 [210](HELP1),Y; [206]ULLBYTE IN [194]ITMAP SCHREIBEN
4120 [237]; [217] + 1, INNERE [211]CHLEIFE
4130 [246]GL1; => [217]<>0
4140 [201]HELP2; MSB DER [194]ITMAPPOSITION ERHOEHEN
4150 [238]; [216] - 1, AEUSSERE [211]CHLEIFE
4160 [246]GL2; => [216]<>0
4170 ;
4180 [227]; => [216]=0, 32*256 [211]CHLEIFENDURCHLAEUFE,
4190 ; ) [210]OUTINENENDE
4200 ;
5000 ;*********************************
5010 ;*** [211]ET [208]OINT, [197]RASE [208]OINT ***
5020 ;*********************************
5030 ;
5040 ;*** [204]ABELS ***
5050 ;
5060 [163]BAL=$F9; [194]YTE-[193]DRESSE LOW
5070 [163]BAH=$FA; [194]YTE-[193]DRESSE HIGH
5080 [163]YWERT=$FB; Y-[203]OORDINATE
5090 [163]XWERTL=$14; X-[203]OORDINATE LOW
5100 [163]XWERTH=$15; X-[203]OORDINATE HIGH
5110 [163]CHKCOM=$AEFD; AUF [203]OMMA IM [194]ASICTEXT PRUEFEN
5120 [163]GETPAR=$B7EB; HOLT 16-[194]IT INTEGER [215]ERT IN $14/$15
5130 ; UND 8-[194]IT INTEGER [215]ERT IN [216]-[210]EGISTER
5140 ;
5150 ;*** [205]AKRO: [194]ERECHNUNG ***
5160 ;
5170 [161]CALC; [194]ERECHNUNGSTEIL FUER [211]ET [208]OINT UND [197]RASE [208]OINT
5180 [202]#$00; BAL LOESCHEN
5190 [210]BAL
5200 ;
5210 [202]YWERT; Y IN [193]KKU
5220 [205]; [Y/8]
5230 [205]
5240 [205]
5250 ;
5260 [210]BAH; [193]KKU([Y/8])*5 = [193]KKU*4 + [193]KKU
5270 [203]
5280 [203]
5290 [197]BAH
5300 ;
5310 [205]; [193]KKU(5*[Y/8])*64 = [193]KKU*256/4
5320 [208]BAL; => MSB -> LSB UND 16-[194]IT [196]IVISION MIT 4
5330 [205]
5340 [208]BAL
5350 ;
5360 [197]#>(BITMAP); [194]ITMAP HINZUADDIEREN
5370 [210]BAH; [193]KKU(320*[Y/8]+$8000) SPEICHERN
5380 ;
5390 [202]XWERTL; LSB(X)
5400 [198]#$F8; [X/8]*8
5410 ;
5420 [197]BAL; 16-[194]IT [193]DDITION:
5430 [210]BAL; [193]KKU([X/8]*8) + BAL/BAH
5440 [202]XWERTH; MSB(X)
5450 [197]BAH; WIRD UNVERAENDERT HINZUADDIERT
5460 [210]BAH
5470 ;
5480 [202]YWERT; Y-[Y/8]*8, [210]EST DER [196]IVISION Y/8
5490 [198]#$07
5500 ;
5510 [218]; ALS [201]NDEX IN [217] VERWENDEN
5520 ;
5530 [202]XWERTL; LSB(X)
5540 [198]#$07; X-[X/8]*8, ERGIBT [194]IT-[206]UMMER
5550 ;
5560 [216]; ALS [201]NDEX IN [216] VERWENDEN
5570 [162]
5580 ;
5590 ;*** [211]ET [208]OINT ***
5600 ;
5610 SP [214]CHKCOM; AUF [203]OMMA PRUEFEN
5620 [214]GETPAR; X UND Y HOLEN
5630 [211]YWERT; [216](X) IN [218][208] SCHREIBEN
5640 ;
5650 SET CALC; [194]YTE UND [194]IT ERRECHNEN
5660 ;
5670 [202]POT1,X; [194]YTE AUS [212]ABELLE LESEN
5680 [206](BAL),Y; [194]YTE MIT [199]RAFIKBYTE VERKNUEPFEN
5690 [210](BAL),Y; VERKNUEPFTES [194]YTE ZURUECKSCHREIBEN
5700 ;
5710 [227]; [210]OUTINENENDE
5720 ;
5730 ;*** [212]ABELLE DER 2ER [208]OTENZEN ***
5740 ;
5750 POT1 [165]$80,$40,$20,$10
5760 [165]$08,$04,$02,$01
5770 ;
5780 ;
5790 ;*** [197]RASE [208]OINT ***
5800 ;
5810 EP [214]CHKCOM; AUF [203]OMMA PRUEFEN
5820 [214]GETPAR; X UND Y HOLEN
5830 [211]YWERT; [216](X) IN [218][208] SCHREIBEN
5840 ;
5850 CALC; [194]YTE UND [194]IT ERRECHNEN
5860 ;
5870 [202]POT2,X; [194]YTE AUS [212]ABELLE LESEN
5880 [198](BAL),Y; [194]YTE MIT [199]RAFIKBYTE VERKNUEPFEN
5890 [210](BAL),Y; VERKNUEPFTES [194]YTE ZURUECKSCHREIBEN
5900 ;
5910 [227]; [210]OUTINENENDE
5920 ;
5930 ;*** [212]ABELLE MIT DEN INVERTIERTEN 2ER [208]OTENZEN ***
5940 ;
5950 POT2 [165]$7F,$BF,$DF,$EF
5960 [165]$F7,$FB,$FD,$FE
5970 ;
7000 ;*********************************
7010 ;*** [204]INE-[210]OUTINE ***
7020 ;*********************************
7030 ;
7040 ;*** [208]ARAMETER HOLEN ***
7050 ;
7060 LN [214]CHKCOM; AUF [203]OMMA PRUEFEN
7070 [214]GETPAR; X1 UND Y1 HOLEN
7080 ;
7090 [211]YWERT; Y1 IN [218][208] ABLEGEN
7100 [202]$14; LSB(X1)
7110 [210]X1L; ZWISCHENSPEICHERN
7120 [202]$15; MSB(X1)
7130 [210]X1H; ZWISCHENSPEICHERN
7140 ;
7150 [214]CHKCOM; AUF [203]OMMA PRUEFEN
7160 [214]GETPAR; X2 UND Y2 HOLEN
7170 ;
7180 [211]Y2; Y2 SPEICHERN
7190 [202]$14; LSB(X2)
7200 [210]X2L; SPEICHERN
7210 [202]$15; MSB(X2)
7220 [210]X2H; SPEICHERN
7230 ;
7240 [202]X1L; ZWISCHENGESPEICHERTER X1-[215]ERT IN [218][208] ABLEGEN
7250 [210]XWERTL; LSB
7260 [202]X1H
7270 [210]XWERTH; MSB
7280 ;
7290 [234]; [196]EZIMALMODUS LOESCHEN
7300 ;
7310 ;*** [194]EGINN DER [211]TRUKTURIERUNG ***
7320 ;
7330 ;---------------------------------
7340 ;
7350 [230]; DX = X2 - X1
7360 [202]X2L; LSB(X2)
7370 [209]XWERTL; MINUS LSB(X1)
7380 [210]DX; [197]RGEBNIS IN DX
7390 [202]X2H; MSB(X2)
7400 [209]XWERTH; MINUS MSB(X1)
7410 [210]DX+1; [197]RGEBNIS IN DX+1 ([200]IGH-[194]YTE)
7420 ;
7430 ;---------------------------------
7440 ;
7450 [240]LINE1; => DX > 0, 7. [194]IT DES MSB IST ENTSCHEIDEND
7460 ;
7470 ;---------------------------------
7480 ;
7490 [200]#$FF; DX = -DX = NOT(DX) + 1
7500 [210]DX+1; NOT(MSB(DX)), SPEICHERN
7510 [202]DX
7520 [200]#$FF; NOT(LSB(DX))
7530 [229]; 1 ADDIEREN
7540 [197]#$01; LSB(DX) = LSB(DX) + 1
7550 [210]DX
7560 [244]NOTINC1; => KEIN [213]EBERTRAG
7570 [201]DX+1; BEI [213]EBERTRAG: MSB(DX) = MSB(DX) +1
7580 ;
7590 NOTINC1 [202]#$FF; XADD = -1 = $FFFF
7600 [210]XADD; LSB
7610 [210]XADD+1; MSB
7620 [213]LINE2; ZUM NAECHSTEN [194]LOCK
7630 ;
7640 ;---------------------------------
7650 ;
7660 LINE1 [202]#$01; XADD = +1 = $0001
7670 [210]XADD; LSB
7680 [202]#$00
7690 [210]XADD+1; MSB
7700 ;
7710 ;---------------------------------
7720 ;
7730 LINE2 [202]DX+1; IST DX = 0 ?
7740 [246]LINE3; => DX <> 0
7750 [202]DX
7760 [246]LINE3; => DX <> 0
7770 ;
7780 ;---------------------------------
7790 ;
7800 [202]#$00; REST = 0 = $00
7810 [210]REST; LSB
7820 [210]REST+1; MSB
7830 [213]LINE4; ZUM NAECHSTEN [194]LOCK
7840 ;
7850 ;---------------------------------
7860 ;
7870 LINE3 [202]#$FF; REST = -1 = $FFFF
7880 [210]REST; LSB
7890 [210]REST+1; MSB
7900 ;
7910 ;---------------------------------
7920 ;
7930 LINE4 [230]; DY = Y2 - Y1
7940 [202]Y2; LSB(Y2)
7950 [209]YWERT; MINUS YWERT
7960 [210]DY; SPEICHERN
7970 [202]#$00; MSB(Y2) = 0
7980 [209]#$00; MINUS 0
7990 [210]DY+1; SPEICHERN
8000 ;
8010 ;---------------------------------
8020 ;
8030 [240]LINE5; => DY > 0 ; 7.[194]IT DES MSB IST ENTSCHEIDENT
8040 ;
8050 ;---------------------------------
8060 ;
8070 [200]#$FF; DY = -DY = NOT(DY) + 1
8080 [210]DY+1; NOT(MSB(DY)), SPEICHERN
8090 [202]DY
8100 [200]#$FF; NOT(LSB(DY))
8110 [229]; 1 ADDIEREN
8120 [197]#$01;
8130 [210]DY; SPEICHERN
8140 [244]NOTINC2; => KEIN [213]EBERTRAG
8150 [201]DY+1; [213]EBERTRAG => MSB(DY) = MSB(DY) + 1
8160 ;
8170 NOTINC2 [202]#$FF; YADD = -1 = $FF
8180 [210]YADD; SPEICHERN
8190 [213]LINE6; ZUM NAECHSTEN [194]LOCK
8200 ;
8210 ;---------------------------------
8220 ;
8230 LINE5 [202]#$01; YADD = +1
8240 [210]YADD;ASPEICHERN
8250 ;
8260 ;---------------------------------
8270 ;
8280 LINE6 [202]DY+1; IST DX > DY ?
8290 [196]DX+1; MSB [214]ERGLEICH
8300 [244]LINE7; => DX > DY
8310 [202]DY
8320 [196]DX; LSB [214]ERGLEICH
8330 [244]LINE7; => DX > DY
8340 ;
8350 ;---------------------------------
8360 ;
8370 [202]#$FF; LIN = -1 = $FF
8380 [210]LIN; SPEICHERN
8390 [213]LINE8; ZUM NAECHSTEN [194]LOCK
8400 ;
8410 ;---------------------------------
8420 ;
8430 LINE7 [202]#$01; LIN = +1 = $01
8440 [210]LIN; SPEICHERN
8450 ;
8460 ;---------------------------------
8470 ;
8480 LINE8 [214]SET; [208]UNKT SETZEN
8490 ;
8500 ;---------------------------------
8510 ;
8520 LINE9 [202]YWERT; IST Y1 = Y2 ?
8530 [196]Y2; VERGLEICHEN
8540 [246]LINE10; => Y1 <> Y2
8550 [202]XWERTL; IST X1 = X2 ?
8560 [196]X2L; LSB(X1) MIT LSB(X2) VERGLEICHEN
8570 [246]LINE10; => X1 <> X2
8580 [202]XWERTH
8590 [196]X2H; MSB(X1) MIT MSB(X2) VERGLEICHEN
8600 [246]LINE10; => X1 <> X2
8610 ;
8620 ;---------------------------------
8630 ;
8640 [227]; Y1 = Y2 UND X1 = X2 => [197]NDE
8650 ;
8660 ;---------------------------------
8670 ;
8680 LINE10 [202]REST+1; MSB(REST) , IST REST < 0 ?
8690 [241]ZWEIG1; => 7.[194]IT DES MSB GESETZT => REST < 0
8700 ;
8710 ;---------------------------------
8720 ;
8730 ZWEIG2 [230]; REST >= 0 =>[160]REST = REST - DX
8740 [202]REST; LSB(REST)
8750 [209]DX; MINUS LSB(DX)
8760 [210]REST; SPEICHERN
8770 [202]REST+1; MSB(REST)
8780 [209]DX+1; MINUS MSB(DX)
8790 [210]REST+1; SPEICHERN
8800 ;
8810 [229]; Y1 = Y1 + YADD
8820 [202]YWERT; Y1
8830 [197]YADD; YADD ADDIEREN
8840 [210]YWERT; SPEICHERN
8850 ;
8860 ;---------------------------------
8870 ;
8880 [202]LIN; IST LIN > 0 ?
8890 [241]LINE8; => LIN < 0 => [208]UNKT SETZEN
8900 [213]LINE9; => LINE => 0
8910 ;
8920 ;---------------------------------
8930 ;
8940 ZWEIG1 [229]; REST = REST + DY
8950 [202]REST; LSB(REST)
8960 [197]DY; LSB(DY) ADDIEREN
8970 [210]REST; SPEICHERN
8980 [202]REST+1; MSB(REST)
8990 [197]DY+1; MSB(DY) ADDIEREN
9000 [210]REST+1; SPEICHERN
9010 ;
9020 [229]; X1 = X1 + XADD
9030 [202]XWERTL; LSB(X1)
9040 [197]XADD; LSB(XADD) ADDIEREN
9050 [210]XWERTL; SPEICHERN
9060 [202]XWERTH; MSB(X1)
9070 [197]XADD+1; MSB(XADD) ADDIEREN
9080 [210]XWERTH; SPEICHERN
9090 ;
9100 ;---------------------------------
9110 ;
9120 [202]LIN; IST LIN < 0 ?
9130 [241]LINE9; => LIN < 0
9140 [213]LINE8; => LIN >= 0 => SET POINT
9150 ;
9160 ;---------------------------------
9170 ;
9180 ;*** [211]PEICHERADRESSEN ***
9190 ;
9200 X1L [165]$00; LSB(X1) [218]WISCHENSPEICHER
9210 X1H [165]$00; MSB(X1) [218]WISCHENSPEICHER
9220 Y1 [165]$00; Y1 [218]WISCHENSPEICHER
9230 X2L [165]$00; LSB(X2)
9240 X2H [165]$00; MSB(X2)
9250 Y2 [165]$00; Y2
9260 REST [165]$00,$00; [210]EST
9270 LIN [165]$00,$00; [218]EIGER LIN
9280 DX [165]$00,$00; DX = X2 - X1
9290 DY [165]$00,$00; DY = Y2 - Y1
9300 XADD [165]$00,$00; X STEP: +1/-1
9310 YADD [165]$00,$00; Y STEP: +1/-1
9320 ;
10000 ;*********************************
10010 ;*** [195]HAR ***
10020 ;*********************************
10030 ;
10040 ;*** [204]ABELS ***
10050 ;
10060 [163]ERROR=$A437; [198]EHLERMELDUNG AUSGEBEN
10070 [163]FRMEVL=$AD9E; [194]ASICAUSDRUCK HOLEN
10080 [163]ERESTR=$B6A3; [211]TRINGVERWALTUNG
10090 [163]GETBYT=$B79E; LIEST 8-[194]IT INTEGER [215]ERT VON [194]ASICTEXT EIN
10100 [163]CHARHI=$D8; HIGH-[194]YTE DES [218]EICHENSATZSPEICHER
10110 ;
10120 ;*** [198]EHLERMELDUNG AUSGEBEN ***
10130 ;
10140 ILLERR [194]#14; [198]EHLERNUMMER IN [216]
10150 [213]ERROR; [198]EHLERMELDUNG AUSGEBEN: [201]LLEGAL [209]UANTITY [197]RROR
10160 ;
10170 ;*** [208]ARAMETER HOLEN ***
10180 ;
10190 ;*** [218]EILE AUS [194]ASICTEXT HOLEN ***
10200 ;
10210 CP [214]CHKCOM; AUF [203]OMMA PRUEFEN
10220 [214]GETBYT; [218]EILE NACH [216] HOLEN
10230 [192]#13; AUF [218]ULASSIGKEIT PRUEFEN
10240 [245]ILLERR; => [218]EILE >= 13 => [197]RROR
10250 [211]ZEILE; SPEICHERN
10260 ;
10270 ;*** [211]PALTE AUS [194]ASICTEXT HOLEN ***
10280 ;
10290 [214]CHKCOM; AUF [203]OMMA PRUEFEN
10300 [214]GETBYT; [211]PALTE NACH [216] HOLEN
10310 [192]#40; AUF [218]ULAESSIGKEIT PRUEFEN
10320 [245]ILLERR; => [211]PALTE >= 40 => [197]RROR
10330 [211]SPALTE; SPEICHERN
10340 ;
10350 ;*** [211]TRING AUF [194]ASICTEXT HOLEN ***
10360 ;
10370 [214]CHKCOM; AUF [203]OMMA PRUEFEN
10380 [214]FRMEVL; [211]TRING AUS [194]ASICTEXT HOLEN
10390 [214]ERESTR; [211]TRINGVERWALTUNG
10395 [247]ILLERR; [211]TRINGLAENGE = 0 ? => [197]RROR
10400 [210]STRLEN; [211]TRINGLAENGE SPEICHERN
10410 [202]$22; LSB DER [211]TRINGADRESSE
10420 [210]CHAR3+1; SPEICHERN
10430 [202]$23; MSB DER [211]TRINGADRESSE
10440 [210]CHAR3+2; SPEICHERN
10450 ;
10460 ;*** [210]ICHTUNG AUS [194]ASICTEXT HOLEN ***
10470 ;
10480 [214]CHKCOM; AUF [203]OMMA PRUEFEN
10490 [214]GETBYT; [210]ICHUNG IN [216] HOLEN
10500 ;
10510 ;*** [210]ICHTUNG AUSWERTEN ***
10520 ;
10530 ; CPX #$00 ; IST [210]ICHTUNG = 0 ?
10540 [247]WAAGRECHT; => [210]ICHTUNG = 0
10550 ;
10560 [202]#$40; [210]ICHTUNG SENKRECHT: [201]NKREMENT IST $0140 = 320
10570 [210]INCREM; LSB SPEICHERN
10580 [202]#$01
10590 [210]INCREM+1; MSB SPEICHERN
10600 [213]CHAR1; WEITER ZUR [194]ERECHNUNG
10610 ;
10620 WAAGRECHT [211]INCREM+1; [210]ICHTUNG WAAGRECHT: [201]NKREMENT = $0008 = 8; MSB
10630 [202]#$08; LSB
10640 [210]INCREM; SPEICHERN
10650 ;
10660 ;*** [208]OSITION IN DER [194]ITMAP BERECHNEN ***
10670 ;
10680 ;*** [218]EILE * 320 ***
10690 ;
10700 CHAR1 [202]#$00; LSB(HPOINT) = 0
10710 [210]HPOINT+1; SPEICHERN
10720 ;
10730 [202]ZEILE; [218]EILE IN [193]KKU; [193]KKU(ZEILE)*5=[193]KKU*4+[218]EILE
10740 [203]; * 2
10750 [203]; * 2
10760 [197]ZEILE; + [218]EILE
10770 ;
10780 [205]; [193]KKU(5*[218]EILE)*64 = [193]KKU*256/4
10790 [208]HPOINT+1; => LSB -> MSB UND 16-[194]IT [196]IVISION MIT 4
10800 [205]
10810 [208]HPOINT+1
10820 [197]#>(BITMAP); [193]KKU(320*[218]EILE)+[194]ITMAP
10830 [210]HPOINT+2
10840 ;
10850 ;*** [211]PALTE * 8 + [200]POINT ***
10860 ;
10870 [202]SPALTE; [211]PALTE IN [193]KKU HOLEN
10880 [203]; * 2
10890 [203]; * 2
10900 [203]; * 2
10910 [244]ADDSPALTE; [213]EBERTRAG ?
10920 [201]HPOINT+2; MSB(HPOINT) + 1
10925 [229]; [213]EBERTRAG LOESCHEN
10930 ADDSPALTE [197]HPOINT+1; LSB(HPOINT) = LSB(HPOINT) + [211]PALTE * 8
10940 [210]HPOINT+1; SPEICHERN
10950 [244]CHANGESTR; [213]EBERTRAG ?
10960 [201]HPOINT+2; MSB(HPOINT) + 1
10970 ;
10980 ;*** [211]TRING AUSLESEN UND WANDELN ***
10990 ;
11000 CHANGESTR [195]#$00; [201]NDEX = 0
11010 STRLOOP [212]INDEX; SPEICHERN
11020 ;
11030 CHAR3 [202]$FFFF,Y; Y-TES [218]EICHEN VON [211]TRING AUSLESEN
11040 ;
11050 ;*** [211]TRING WANDELN ***
11060 ;
11070 [241]CHAR5; [218]EICHEN > 128
11080 [196]#32; < 32 ? ODER = <[211]PACE> ?
11090 [247]CHAR6; <[211]PACE> -> BLEIBT UNVERAENDERT
11110 [244]NEXTY; [211]TEUERZEICHEN UEBERSPRINGEN
11120 CHAR11 [196]#64; < 64 ; [211]ONDERZEICHEN ?
11130 [244]CHAR6; [211]ONDERZEICHEN BLEIBEN UNVERAENDERT
11140 [196]#96; < 96 ; [203]LEINBUCHSTABE ?
11150 [245]CHAR4; 96 =< [218]EICHEN < 128 => 5. [194]IT LOESCHEN
11160 [198]#%10111111; 6. [194]IT LOESCHEN, DA [203]LEINBUCHSTABE
11170 [213]CHAR6; WEITERMACHEN
11180 CHAR4 [198]#%11011111; 5. [194]IT LOESCHEN, DA [199]ROSSBUCHSTABE
11190 [213]CHAR6; WEITERMACHEN
11200 CHAR5 [196]#160; < 160 ? [211]TEUERZEICHEN ?
11210 [244]NEXTY; [211]TEUERZEICHEN UEBERSPRINGEN
11220 [247]CHAR6; <2. [211]PACE> -> BLEIBT UNVERAENDERT
11230 [196]#192; < 192 ? [199]RAFIKZEICHEN ?
11240 [245]CHAR7; [196]OPPELBELEGUNG
11250 [200]#%11000000; 6. UND 7. [194]IT UMKEHREN
11260 [213]CHAR6; WEITERMACHEN
11270 CHAR7 [196]#224; =< 224 ? [199]ROSSBUCHSTABEN ([196]OPPELBELEGUNG)
11280 [247]CHAR9; <3. [211]PACE>
11300 [198]#%01111111; 7. [194]IT LOESCHEN
11320 [196]#127; [195]ODE = 255 (=127 DA 7. [194]IT GELOESCHT)
11330 [246]CHAR6; WEITER
11340 [202]#94; 255 -> 94
11350 [213]CHAR6; [199]RAFIKZEICHEN, WEITERMACHEN
11360 CHAR9 [202]#32; <3. [211]PACE>
11385 ;
11390 ;*** [195]HAR POINTER IM [218][211][193] BERECHENEN ***
11400 ;
11410 CHAR6 [194]#$00; MSB(MVCHAR) = 0
11420 [211]MVCHAR+2; SPEICHERN
11430 ;
11440 [203]; MVCHAR * 8
11450 [207]MVCHAR+2
11460 [203]
11470 [207]MVCHAR+2
11480 [203]
11490 [207]MVCHAR+2; GLEICHZEITIG [195]ARRY-[198]LAG LOESCHEN
11500 [210]MVCHAR+1; LSB SPEICHERN
11510 [202]#CHARHI; MSB VON [195]HARACTER-[210][207][205]
11520 [197]MVCHAR+2; ADDIEREN
11530 [210]MVCHAR+2; MSB SPEICHERN
11540 ;
11550 ;*** [218]EICHEN AUS [218][211][193] IN [194]ITMAP SCHREIBEN ***
11560 ;
11570 [232]; [201]NTERRUPT SPERREN
11580 [202]$01; [208]ROZESSORPORT AUSLESEN
11590 [210]PROCESSOR; [201]NHALT SICHERN
11600 [198]#%11111011; [218][211][193]-[210][207][205] ZUM [204]ESEN FREIGEBEN
11610 [210]$01; ZURUECKSCHREIBEN
11620 ;
11630 [195]#$07; [201]NDEX FUER 8 [211]CHLEIFENDURCHLAEUFE
11640 MVCHAR [202]$FFFF,Y; [194]YTE AUS [218][211][193]-[210][207][205][160]AUSLESEN
11650 HPOINT [210]$FFFF,Y; [194]YTE IN [194]ITMAP SCHREIBEN
11660 [236]; [201]NDEX ERNIEDRIEGEN
11670 [240]MVCHAR; SCHON FERTIG ? => [206]EIN, [211]PRUNG NACH MVCHAR
11680 ;
11690 [202]PROCESSOR; ALTEN [208]ROZESSORPORTZUSTAND WIEDER HOLEN
11700 [210]$01; SPEICHERN
11710 [231]; [201]NTERRUPT WIEDER FREIGEBEN
11720 ;
11730 ;*** [194]ITMAP UM [201]NKREMENT ERHOEHEN ***
11740 ;
11750 [229]; HPOINT + INCREMENT
11760 [202]HPOINT+1; LSB
11770 [197]INCREM; ADDIEREN
11780 [210]HPOINT+1; SPEICHERN
11790 [202]HPOINT+2; MSB
11800 [197]INCREM+1; ADDIEREN
11810 [210]HPOINT+2; SPEICHERN
11820 ;
11830 NEXTY [195]INDEX; [201]NDEX IN [217]
11840 [237]; + 1
11850 [193]STRLEN; IST [201]NDEX SCHON [211]TRINGLAENGE ?
11860 [247]CHAREND; [201]NDEX = [211]TRINGLAENGE => [210]OUTINENENDE
11870 [213]STRLOOP; => [201]NDEX < [211]TRINGLAENGE
11880 ;
11890 CHAREND [227]; [201]NDEX = [211]TRINGLAENGE => [210]OUTINENENDE
11900 ;
11910 ;*** [200]ILFSZELLEN ***
11920 ;
11930 ZEILE [165]$00; [218]EILE
11940 SPALTE [165]$00; [211]PALTE
11950 STRLEN [165]$00; [211]TRINGLAENGE
11960 INDEX [165]$00; [201]NDEX
11970 INCREM [165]$00,$00; [201]NCREMENT
11980 PROCESSOR [165]$00; [208]ROZESSORPORTZUSTAND
11990 ;
12000 ;******************
12010 ;*** [200]ARDCOPY ***
12020 ;******************
12030 ;
12040 ;*** [204]ABELS ***
12050 ;
12060 [163]SETFLS=$FFBA; [198]ILEPARAMETER SETZEN
12070 [163]OPEN=$FFC0; [198]ILE EROEFFNEN
12080 [163]CLOSE=$FFC3; [198]ILE SCHLIESSEN
12090 [163]CHKOUT=$FFC9; [195][205][196]-[205]ODUS EIN
12100 [163]CLRCH=$FFCC; [195][205][196]-[205]ODUS AUS
12110 [163]PRINT=$FFD2; [218]EICHEN AUSGEBEN
12120 ;
12130 ;*** [205]AKROS ***
12140 ;
12150 [161]ESC; [197][211][195]-[211]EQUENZ UEBERMITTELN
12160 [202]#$1B; [197][211][195]-[211]EQUENZ
12170 [214]PRINT; [218]EICHEN ZUM [196]RUCKER SENDEN
12180 [162]
12190 ;
12200 [161]CR; [195][210]-[211]EQUENZ UEBERMITTELN
12210 [202]#$0D; [195][210]-[211]EQUENZ
12220 [214]PRINT; [218]EICHEN ZUM [196]RUCKER SENDEN
12230 [162]
12240 ;
12250 [161]INIT; [196]RUCKER INITIALISIEREN
12260 ESC; [197][211][195] @ ; 27 64 ; $1B $40
12270 [202]#$40; @
12280 [214]PRINT; [218]EICHEN ZUM [196]RUCKER SENDEN
12290 CR
12300 [162]
12310 ;
12320 ;*** [207][208][197][206] 4,4,1 : [195][205][196] 4 ***
12330 ;
12340 HC [202]#$04; LOGISCHE [198]ILENUMMER
12350 [194]#$04; [199]ERAETEADRESSE 4 FUER [196]RUCKER
12360 [195]#$01; [211]EKUNDAERADRESSE 1 FUER [204]INEARKANAL
12370 [214]SETFLS; [198]ILEPARAMETER SETZEN
12380 [214]OPEN; [198]ILE EROEFFNEN
12390 [194]#$04; LOGISCHE [198]ILENUMMER
12400 [214]CHKOUT; [195]OMMUNICATIONN DIRECT EIN
12410 ;
12420 ;*** [197][211][195] @, [197][211][195] 3 N, [197][211][195] L N ***
12430 ;
12440 INIT; [197][211][195] @, [196]RUCKER INITIALISIEREN
12450 ;
12460 ESC; [197][211][195] 3 N (N = 24), [218]EILENVORSCHUB AUF 24/216 [218]OLL
12470 [202]#$33; '3'
12480 [214]PRINT; [218]EICHEN '3' ZUM [196]RUCKER SENDEN
12490 [202]#$18; N = $18 = 24
12500 [214]PRINT; [195][200][210]$(24) ZUM [196]RUCKER SENDEN
12510 CR
12520 ;
12530 ESC; [197][211][195] L N (N = 12), LINKER [210]AND BEI 12 SETZEN
12540 [202]#$6C; 'L'
12550 [214]PRINT; [218]EICHEN 'L' ZUM [196]RUCKER SENDEN
12560 [202]#$0C; N = $0C = 12
12570 [214]PRINT; [195][200][210]$(12) ZUM [196]RUCKER SENDEN
12580 CR
12590 ;
12600 ;*** [210]OUTINENVARIABLEN INITIALISIEREN ***
12610 ;
12620 [202]#<(BITMAP); [194]ITMAPADRESSE IM [196]UMMY SCHREIBEN
12630 [210]DUMMY+1; LSB
12640 [202]#>(BITMAP)
12650 [210]DUMMY+2; MSB
12660 ;
12670 [202]#$0C; 12 [218]EILEN
12680 [210]LINE; SPEICHERN
12690 ;
12700 ;*** [199]RAFIK EINSCHALTEN: [197][211][195] [204] N1 N2 ***
12710 ;
12720 LNLOOP ESC
12730 [202]#$4C; '[204]'
12740 [214]PRINT; [218]EICHEN '[204]' ZUM [196]RUCKER SENDEN
12750 [202]#$80; N1 = $80 = 128 = LSB
12760 [214]PRINT; [195][200][210]$(128) ZUM [196]RUCKER SENDEN
12770 [202]#$02; N2 = $02 = 2 = MSB
12780 [214]PRINT; [195][200][210]$(2)[160]ZUM [196]RUCKER SENDEN
12790 ;
12800 ;*** [194]LOCK INDEX ***
12810 ;
12820 [202]#40; 40 [194]LOECKE
12830 [210]BLOCK; SPEICHERN
12840 ;
12850 ;*** EIN 8-[194]YTE [194]LOCK SPEIGELN ***
12860 ;
12870 BKLOOP [195]#$00; [194]LOCKSCHLEIFE
12880 TURN1 [194]#$00
12890 DUMMY [202]$FFFF,Y; [194]ITMAPBYTE IN [193]KKU EINLESEN
12900 TURN2 [203]; [194]IT AUS [194]ITMAPBYTE AUSLESEN
12910 [207]CHR,X; [194]IT IN [196]RUCKERBYTE REINSCHIEBEN
12920 [239]
12930 [192]#$08; IST [216] SCHON 8 ?
12940 [246]TURN2; => [216] <> 8 => [194]ITMAPBYTES NOCH NICHT ABGEARBEITET
12950 [237]
12960 [193]#$08; IST [217] SCHON 8 ?
12970 [246]TURN1; => [217]<> 8 => [196]RUCKERBYTES NOCH NICHT FERTIG
12980 ;
12990 ;*** 8-[194]YTE [194]LOCK DRUCKEN ***
13000 ;
13010 [194]#$00; [201]NDEX AUF 0 SETZEN
13020 PRNT [202]CHR,X; X-TES [196]RUCKERBYTE IN [193]KKU
13030 [214]PRINT; [194]YTE DRUCKEN
13040 [214]PRINT; [194]YTE DRUCKEN
13050 [239]; [201]NDEX ERHOEHEN
13060 [192]#$08; IST [216] SCHON 8 ?
13070 [246]PRNT; => [216] <> 8 => NAECHSTES [194]YTE DRUCKEN
13080 ;
13090 ;*** [211]CHLEIFENFORTSCHALTUNG ***
13100 ;
13110 [229]; [194]ITMAPBYTE + 8
13120 [202]DUMMY+1; LSB
13130 [197]#$08; 8 ADDIEREN
13140 [210]DUMMY+1; SPEICHERN
13150 [244]NOTINC; KEIN [213]EBERTRAG
13160 [201]DUMMY+2; => [213]EBERTRAG, MSB(DUMMY) + 1
13170 ;
13180 NOTINC [199]BLOCK; BLOCK = BLOCK - 1
13190 [246]BKLOOP; IST [194]LOCK SCHON 0 ? => [194]LOCK <> 0
13200 ;
13210 ;*** [195][210] SENDEN ***
13220 ;
13230 CR
13240 ;
13250 ;*** [211]CHLEIFENFORTSCHALTUNG ***
13260 ;
13270 [199]LINE; LINE = LINE - 1
13280 [246]LNLOOP; IST [204]INE SCHON 0 ? => [204]INE <> 0
13290 ;
13300 ;*** [206][207][212]([195][205][196] 4) : [195][204][207][211][197] 4 ***
13310 ;
13320 INIT; [196]RUCKER INITIALISIEREN
13330 [214]CLRCH; [195]OMMUNICATION DIRECT AUS
13340 [202]#$04; LOGISCHE [198]ILENUMMER
13350 [214]CLOSE; [198]ILE SCHLIESSEN
13360 ;
13370 [227]; [210]OUTINENENDE
13380 ;
13390 ;*** [200]ILFSZELLEN ***
13400 ;
13410 CHR [165]$00,$00,$00,$00; [196]RUCKERBYTES
13420 [165]$00,$00,$00,$00
13430 BLOCK [165]$00; [194]LOCKINDEX
13440 LINE [165]$00; [204]INEINDEX
13450 ;
14000 ;**********************
14010 ;*** [211]AVE-[210]OUTINE ***
14020 ;**********************
14030 ;
14040 ;*** [204]ABELS ***
14050 ;
14060 [163]LISTEN=$FFB1; [198]LOPPY ZUM [197]MPFANG SCHALTEN
14070 [163]SALIST=$FF93; [211]EKUNDAERADRESSE FUER [204][201][211][212][197][206]
14080 [163]CLSFILE=$F642; [198]ILE SCHLIESSEN
14090 [163]SENDNM=$F3D5; [198]ILENAME FUER [204][201][211][212][197][206] UND [212][193][204][203]
14100 [163]IECOUT=$FFA8; [194]YTE AUF SERIELLEM [194]US AUSGEBEN
14110 ;
14120 [163]ADRESS1=$FA; [218][208]-[211]PEICHER FUER LSB([194]ITMAPBYTE)
14130 [163]ADRESS2=$FB; [218][208]-[211]PEICHER FUER MSB([194]ITMAPBYTE)
14140 ;*** [205]AKRO ***
14150 ;
14160 [161]FILENAME; [198]ILENAME UEBERMITTELN
14170 [214]CHKCOM; AUF [203]OMMA PRUEFEN
14180 [214]FRMEVL; [211]TRING HOLEN
14190 [214]ERESTR; [211]RTINGVERWALTEN
14200 ;
14210 [210]$B7; [198]ILENAMENLAENGE SPEICHERN
14220 [202]$22; LSB DER [193]DRESSE AUF DEN [198]ILENAMEN
14230 [210]$BB; IN [218][208]-[218]EIGER AUF [198]ILENAME SPEICHERN
14240 [202]$23; MSB
14250 [210]$BC; IN [218][208]-[218]EIGER AUF [198]ILENAME SPEICHERN
14260 [162]
14270 ;
14280 ;*** [198]ILE EROEFFNEN ***
14290 ;
14300 SA FILENAME; [198]ILENAME UEBERMITTELN
14310 ;
14320 [202]#$08; [199]ERAETEADRESSE
14330 [210]$BA; [218][208]-[218]EIGER FUER AKTUELLES [199]ERAET
14340 [202]#$61; [211]EKUNDAERADRESSE 1 FUER [211]PEICHERN + $60
14350 [210]$B9; [218][208]-[218]EIGER FUER AKTUELLE [211]EKUNDAERADRESSE
14360 ;
14370 [214]SENDNM; [198]ILENAME SENDEN
14380 ;
14390 [202]$BA; [199]ERAETEADRESSE
14400 [214]LISTEN; [204]ISTEN SENDEN
14410 [202]$B9; [211]EKUNDAERADRESSE
14420 [214]SALIST; [211]EKUNDAERADRESSE SENDEN
14430 ;
14440 ;*** [208]ROGRAMMADRESSE $8000 ***
14450 ;
14460 [202]#<(BITMAP); LSB(BITMAP)
14465 [210]ADRESS1; IN [218][208] SCHREIBEN
14470 [214]IECOUT; AUF SERIELLEN [194]US AUSGEBEN
14480 [202]#>(BITMAP); MSB(BITMAP)
14485 [210]ADRESS2; IN [218][208] SCHREIBEN
14490 [214]IECOUT; AUF SERIELLEN [194]US AUSGEBEN
14500 ;
14510 ;*** [194]ITMAP SPEICHERN ***
14520 ;
14580 [194]#$0F; $0F00 [194]ITMAPBYTES SPEICHERN
14590 SAVE2 [195]#$00; INNERE [211]CHLEIFE
14600 SAVE1 [202](ADRESS1),Y; [194]ITMAPBYTE IN [193]KKU HOLEN
14610 [214]IECOUT; AUF SERIELLEN [194]US AUSGEBEN
14620 [237]
14630 [246]SAVE1; SCHON 256 [194]YTES AUSGEGEBEN ?
14640 [201]ADRESS2; ADRESS2 = ADRESS2 + 1
14650 [238]; AEUSSEREN [211]CHLEIFENINDEX UM 1 ERNIEDRIGEN
14660 [246]SAVE2; SCHON $0F00 [194]YTES ABGESPEICHERT?
14670 ;
14680 ;*** [198]ILE SCHLIESSEN ***
14690 ;
14700 [214]CLSFILE; [198]ILE SCHLIESSEN
14710 ;
14720 [227]; [210]OUTINENENDE
14730 ;
15000 ;**********************
15010 ;*** [204]OAD-[210]OUTINE ***
15020 ;**********************
15030 ;
15040 ;*** [204]ABELS ***
15050 ;
15060 [163]TALK=$FFB4; [212][193][204][203] SENDEN
15070 [163]SATALK=$FF96; [211]EKUNDAERADRESSE FUER [212][193][204][203][160]SENDEN
15080 [163]IECIN=$FFA5; [218]EICHEN VON SERIELLEN [194]US HOLEN
15090 [163]STATUS=$90; [211]TATUSBYTE [211][212]
15100 ;
15110 ;*** [198]ILE EROEFFNEN ***
15120 ;
15130 LO FILENAME; [198]ILNAME UEBERMITTELN
15140 ;
15150 [202]#$08; [199]ERAETEADRESSE
15160 [210]$BA; [218][208]-[218]EIGER FUER AKTUELLES [199]EREAET
15170 [202]#$60; [211]EKUNDAERADRESSE 0 + $60
15180 [210]$B9; [218][208]-[218]EIGER FUER AKTUELLE [211]EKUNDAERADRESSE
15190 ;
15200 [214]SENDNM; [198]ILENAMEN SENDEN
15210 ;
15220 [202]$BA; [199]ERAETEADRESSE
15230 [214]TALK; [212]ALK SENDEN
15240 [202]$B9; [211]EKUNDAERADRESSE
15250 [214]SATALK; [211]EKUNDAERADRESSE FUER [212]ALK SENDEN
15260 ;
15270 ;*** [208]ROGRAMMADRESSE UEBERLESEN ***
15280 ;
15290 [214]IECIN; [194]YTE VON SERIELLEN [194]US EINLESEN
15300 [214]IECIN; [194]YTE VON SERIELLEN [194]US EINLESEN
15310 ;
15320 ;*** [194]ITMAP EINLESEN ***
15330 ;
15340 [202]#<(BITMAP); [194]ITMAPADRESSE IN [218][208] SCHREIBEN
15350 [210]ADRESS1; LSB
15360 [202]#>(BITMAP)
15370 [210]ADRESS2; MSB
15380 ;
15390 [194]#$0F; AEUSSEREN [211]CHLEIFENZAEHLER AUF $0F SETZEN
15400 [195]#$00; INNEREN [211]CHLEIFENZAEHLER AUF $00 SETZEN
15410 LOAD1 [214]IECIN; [194]YTE VON SERIELLEN [194]US EINLESEN
15420 [210](ADRESS1),Y; [194]YTE IN [194]ITMAP SCHREIBEN
15430 [202]STATUS; [211]TATUSBYTE [211][212] EINLESEN
15440 [246]LOAD2; => [197][207][198] ([197]ND OF [198]ILE)
15450 [237]
15460 [246]LOAD1; IST INNERE [211]CHLEIFEN SCHON ABGEADREITET ?
15470 [201]ADRESS2; MSB(ADRESS) = MSB(ADRESS) + 1
15480 [238]
15490 [246]LOAD1; SCHON ALLE [194]YTES EINGELESEN ? (-> LOAD1, DA Y=0)
15500 ;
15510 ;*** [198]ILE SCHLIESSEN ***
15520 ;
15530 LOAD2 [214]CLSFILE; [198]ILE SCHLIESSEN
15540 ;
15550 [227]; [210]OUTINENENDE
15560 ;
15570 ;*** [197]NDE DES [211]OURCETEXTES ***
15580 ;