home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh1x
/
sh12a.d64
/
merge.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
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