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