home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 12
/
64er_Magazin_Sonderheft_12_86-12_1986_Markt__Technik_de_Side_A.d64
/
merge.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
3KB
|
111 lines
10 sys9*4096:.opt o,oo
20 *=$c000
22 banfl = $2b ;zeiger auf basic-
24 banfh = $2c ;programm-start
26 bvarl = $2d ;zeiger auf start
28 bvarh = $2e ;der variablen
30 pol = $f7 ;zeiger in einzu-
32 poh = $f8 ;fuegendes programm
34 stat = $90 ;statuswort st
36 cpup = $01 ;prozessorport
38 znr = $12 ;basic-zeilennummer
40 sa = $b9 ;sekundaeradresse
42 fpmod = $3a ;flag f. prg-modus
44 ;
50 illdi = $b3ab ;illegal dir. error
52 lpara = $e1d4 ;load-param. holen
54 bload = $ffd5 ;load-routine d. bs
56 fausw = $e1d1 ;fehlerauswertung
58 loerr = $e19c ;load - error
60 einf = $a4a2 ;basic-z. einfuegen
62 veks = $e455 ;basic-vektoren setzen
64 setbp = $e1a7 ;basic-par. neu setzen
66 ewsl = $0302 ;zeiger auf
68 ewsh = $0303 ;eingabe-warteschleife
70 bep = $01fc ;basic-eingabe-puffer
90 ;
100 ;
110 ; merge a - anhaengen
120 ;
130 amerge jsr readpar ;parameter lesen
140 lda banfl:pha ;zeiger auf basic-
150 lda banfh:pha ;prg-start retten
160 lda bvarl ;zeiger auf basic-prg-
170 ldy bvarh ;start hinter basic-prg
180 sec ;setzen (neuer prg-start =
190 sbc #02 ;variablenstart - 2)
200 bcs ama:dey
210 ama sta banfl ;neue zeiger
220 sty banfh ;speichern
230 jsr load ;basic-prg laden
240 pla:sta banfh ;alte zeiger auf
250 pla ;basic-prg-start wieder-
260 sta banfl ;herstellen
270 jmp setbp ;basic-parameter setzen
300 ;
310 ; merge e - einfuegen
320 ;
330 emerge jsr readpar ;parameter lesen
340 ldy #$a0 ;anfangsadresse fuer load
350 sta pol ;& zeiger in einzuf. prg
360 sty poh ;auf $a000 setzen
370 jsr load ;basic-prg. laden
380 lda pointer+1:ldy pointer+2
390 sta ewsl ;zeiger auf eingabe-warte-
400 sty ewsh ;schleife neu setzen
410 ema ldy #255 ;zeiger in basic-zeile
420 emb lda cpup:and #%11111110
430 sta cpup ;basic-rom ausschalten
440 iny ;zeiger in zeile + 1
450 lda (pol),y ;zeichen aus prg holen
460 inc cpup ;basic-rom einschalten
470 cpy #01 ;zeiger in n. basic-z. ?
480 bcc emb ;low-byte - nicht beachten
490 bne emc ;kein teil des zeigers
500 tax ;00 fuer programmende ?
510 bne emb ;<>00 - nicht beachten
520 ldx #03 ;programmende - zeiger auf
530 jsr veks ;e-ws wiederherstellen
540 jmp setbp+4 ;basic-param. setzen
550 ;
560 emc cpy #04 ;zeilennummer ?
570 bcs emd ;kein teil d. zeilennummer
580 sta znr,y ;speichern
590 bcc emb ;unbedingter sprung
600 emd sta bep,y ;zeichen in puffer
610 tax:bne emb ;<>0 - kein zeilenende
620 tya:adc pol ;zeiger in einzuf. prg
630 sta pol ;auf anfang der naechsten
640 bcc eme ;programmzeile setzen
650 inc poh
660 eme iny ;laenge der zeile + 1
670 jmp einf ;zeile einfuegen
1000 ;
1010 ; unterroutinen
1020 ;
1030 ; eingabe-parameter holen
1040 ;
1050 readpar jsr lpara ;load-parameter
1060 lda #00 ;sekundaeradresse = 0
1070 sta sa ;(laden an feste adresse)
1080 ret rts
1100 ;
1110 ; basic-programm laden
1120 ;
1130 load tax ;low-byte der adresse
1140 lda cpup:and #%11111110
1150 sta cpup ;basic-rom ausschalten
1160 lda #00 ;flag fuer load
1170 jsr bload ;laden
1180 inc cpup ;basic-rom einschalten
1190 bcc loa ;kein fehler
1200 jmp fausw ;fehlerauswertung
1210 loa lda stat
1220 and #$bf ;status ueberpruefen
1230 beq ret ;kein fehler
1240 jmp loerr
1300 ;
1310 ; pointer fuer hypra-basic
1320 ;
1330 pointer jmp ema