home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 33
/
64er_Magazin_Sonderheft_33_19xx_Markt__Technik_de_Side_B.d64
/
uncover.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
153 lines
10 .os
20 .ba$c200
30 bind .de$a533
40 numout .de$bdcd
50 bsout .de$e10c
60 textanf .de$002b
70 varanf .de$002d
80 feldanf .de$002f
90 feldend .de$0031
100 l1 .de$0050
110 h1 .de$0051
120 l2 .de$0052
130 h2 .de$0053
140 l3 .de$0054
150 h3 .de$0055
160 vorsch .de$0056
170 mem .de$0334
180 endldy # 0
190 s0 lda l1,y ;speichern der
200 sta mem,y ;zeropage-zeiger
210 iny
220 cpy # 7
230 bne s0
240 clc
250 ;ausloten des basicprogrammendes
260 jsr bind
270 ldy #0
280 lda textanf, y ;uebertragen
290 sta l1 ;des basiczeigers
300 iny ;zur freien
310 lda textanf, y ;benutzung
320 sta h1
330 dey
340 lda(l1),y ;zeigt auf den
350 ;1.linkpointer,lowbyte
360 sta l3 ;merken
370 iny
380 lda(l1),y ;1.lp,hibyte
390 sta h3 ;merken
400 s1 lda(l3),y ;zeigt auf naechsten
410 ;linkpointer(hi-byte!)
420 ;ist dieses null, so ist texten-
430 ;de ausreichend nachgewiesen
440 beq s6 ;dann weiter
450 pha
460 dey ;zeiger
470 lda (l3),y;auf neue l.p.
480 sta l3 ;-adresse
490 iny
500 pla ;aktualisieren
510 sta h3
520 bne s1 ;von vorne
530 ;**
540 ;**
550 ;pruefen der einzelnen
560 ;basiczeilen
570 s6 ldy #$01
580 lda(l1),y ;ist letzte zeile
590 beq schluss ;fertigprint
600 ldy # $04 ;byte direkt nach
610 lda(l1),y ;zeilennummer
620 beq korrektur
630 ;(falls nextull)
640 ldy #$01
650 lda(l1),y ;zeiger anhand des
660 pha ;linkpointers
670 dey ;auf naechste
680 lda(l1),y ;zeile richten
690 sta l1
700 pla
710 sta h1
720 bne s6
730 ;**
740 ;**
750 korrektur iny
760 test: iny
770 lda(l1),y
780 cmp #":" ;test auf doppelpunkt
790 clc
800 beq test:
810 cmp # $0 ;nur ":"printprint
820 bne =+1
830 dey
840 sty vorsch ;vorschub beim
850 ;verschieben
860 clc
870 lda l1
880 sta l2
890 lda h1
900 sta h2
910 s8 ldy vorsch ;verschieberoutine
920 lda(l2),y
930 ldy #$04
940 sta(l2),y
950 inc l2
960 bne s8
970 lda h2
980 cmp h3 ;schon am textendeprint
990 beq s9
1000 inc h2
1010 bne s8
1020 s9 sec
1030 tya
1040 sbc vorsch
1050 adc l3 ;zeiger auf text-
1060 bcs = + 2 ;ende dekrementieren
1070 dec h3
1080 clc
1090 sta l3
1100 ;**
1110 ;**
1120 ;zeilennummernausgabe
1130 lda #$20
1140 jsr bsout
1150 ldy #$02
1160 lda (l1),y ;low-
1170 tax
1180 iny
1190 lda (l1),y ;&hi-byte der z.n.
1200 jsr numout ;in a/x ausgeben
1210 lda $d3 ;cursorspalte
1220 cmp #$21 ;crsr zu weit rechtsprint
1230 clc
1240 bmi = + 5
1250 lda #$0d ;in diesem fall
1260 jsr bsout ;carriage return
1270 jsr bind
1280 clv ;(ruecksprung sichern)
1290 bvc ret
1300 schluss ;vorbereitung des basic-
1310 lda #$2
1320 adc l1 ;erhoehung um 2
1330 bcc = +2 ;zeigt dann auf beginn
1340 inc h1 ;der variablen etc.
1350 clc
1360 sta varanf ;korrektur der zeiger
1370 sta feldanf
1380 sta feldend
1390 lda h2
1400 sta varanf+1
1410 sta feldanf+1
1420 sta feldend+1
1430 ldy #$0
1440 t0 lda mem,y ;urspr.werte zurueck
1450 sta l1,y ;in zero-page
1460 iny
1470 cpy # 7
1480 bne t0
1490 clc
1500 ;back to basic
1510 rts
1520 .en