; ;*************************************************************** ;*************************************************************** ; B A S I C - E R W E I T E R U N G E N ;*************************************************************** ;*************************************************************** ;ADRESSEN UND DATEN AUS BASIC KERN /frueher. RE-TEIL ; BASIC EQU 0C00DH REBASIC EQU 0C08CH LDTOK EQU 0D0H SGTOK EQU 0B6H GBTOK EQU 08CH RTTOK EQU 08BH ELTOK EQU 0D4H TNTOK EQU 0A9H GTTOK EQU 088H DISTA EQU 354H PSBEG EQU 35FH ANF EQU 34EH NANF EQU 352H SVARP EQU 3D7H ENDEW EQU 350H STRDA EQU 3C0H PRFLG EQU 3FDH COLRE EQU 37EH RNDV EQU 31DH ININD EQU 309H IOCHL EQU 307H INTPR EQU 3EAH SNL14 EQU 0CDE1H SNL16 EQU 0CDF3H ARGV1 EQU 0D421H ARGV2 EQU 0D424H SLEN3 EQU 0D1A9H SNER1 EQU 0C348H FCER EQU 0C967H CPREG EQU 0C689H CPCOM EQU 0C8D6H DCHEX EQU 0C986H DCHE1 EQU 0C987H ZPOIT EQU 0C4BBH ZPOI1 EQU 0C4BEH TMEM1 EQU 0C327H LIN6 EQU 0C450H LIN10 EQU 0C48AH LIN11 EQU 0C493H LIN13 EQU 0C442H LIN15 EQU 0C44DH SGN1 EQU 0D6AEH NUMKO EQU 0D834H TCHAR EQU 0C8BDH TCHA1 EQU 0C8BEH SNALY EQU 0CD3AH SNAL6 EQU 0CD36H LEN1 EQU 0D330H CPRGT EQU 0C8DBH POS1 EQU 0D0C0H CPSTX EQU 0C8CCH SADB1 EQU 0D17EH STADB EQU 0D17BH STROP EQU 0D1E1H STRV1 EQU 0D2F2H STRS3 EQU 0D302H ERROO EQU 0C356H CSTS EQU 0DDF3H CI EQU 0DDE4H CO EQU 0DDD5H EPRV4 EQU 0C96CH EPRV3 EQU 0C96FH INP1 EQU 0D3E9H PRT2 EQU 0CB03H OTCHL EQU 0DE25H TESTC EQU 0DDC8H CASS1 EQU 0DCB2H INCHL EQU 0DE5FH ZFSTR EQU 0C8B7H ;ADRESSEN UND DATEN AUS CAOS RCOLO EQU 0B7A3H WIN9 EQU 0BA00H-10 VERTB EQU 0E00EH ; ; ERWEITERUNG 1 ;*************************************************************** ;* E: :TOKEN-LDTOK ;* : AUF TOKEN ;* A: <>: STARTADRESSE ROUTINE ;* : AUF TOKEN ;*************************************************************** ; ERW1: LD A,B SUB RETOK-LDTOK JR C,ERR1 CP CRTOK-RETOK+1 JR NC,ERR1 RLCA LD C,A LD B,0 EX DE,HL LD HL,ADRT1 JP ZFSTR ; ; ERWEITERUNG 2 ;*************************************************************** ;* E: AUF SIGNIF. ZEICHEN NACH PRTOK ;* WENN PRTFLG<>0 , DANN JP SNER ;* A: AUF ZEILENENDE ;*************************************************************** ERW2: LD A,M CP INTOK ;ZULAESSIG? RET C CP COTOK+1 ;PRINT-ERWEITERUNGEN ;VON PRINTINK BIS PRINT COLOR RET NC ; KEINS FUER PRINT ;-------------------------------------------------------------- CP ATTOK JP Z,AT ;START PRINTAT ;-------------------------------------------------------------- ;* * * * * * * * * * * * * * * * * * * * * * * * LD A,(PRFLG) ;DOPPAHPES AUFTRETEN ABBHOCKEN AND A JR NZ,ERR1 INC A LD (PRFLG),A ;--------------------------------------------------------------- ERW21: PUSH HL LD HL,RCOLO CALL VSAM POP HL LD (COLRE),A ;FARBE RETTEN ;-- -- -- -- -- -- -- -- -- -- -- -- LD A,M CP INTOK JR Z,INPRT CP COTOK JP Z,PRTCL ;PRINT COLOR ;-- -- -- -- -- -- -- -- -- -- -- -- CALL TCHAR CALL PAPER PAP1: LD A,M CP ';' ;PAPER n ; JR Z,CLRG1 JR ERR1 PRTCL: CALL TCHAR CALL COLORP JR PAP1 ERR1: JP SNER1 ;- - - - - - - - - - - - - - - - - - - - - - - INPRT: CALL TCHAR CALL INK LD A,M CP ';' JR Z,CLRG1 ;INKn CALL CPSTX DEFM ',' CP PPTOK JR NZ,ERR1 CALL TCHAR ;INK n,PAPER n; CALL PAPER CALL CPSTX DEFM ';' ;================================================== CLREG: CALL PRT2 ;PRINT2 LD A,(COLRE) PUSH HL LD HL,RCOLO CALL VSMA POP HL ;--------------------------------------------------- POP BC RET AT3: PUSH BC JR ERW21 ;--------------------------------------------------------------- CLRG1: CALL TCHAR JR CLREG ;**************************************************** ; ERWEITERUNG 3 ;*************************************************************** ;* VERTEILER ZU ZUSAETZLICHEN STANDARTFUNKTIONEN ;* E: AUF SIGN. ZEICHEN NACH TOKEN ;* =<> (TOKEN-SGTOK)*2 ;* A: AUF SIGN. ZEICHEN NACH TOKEN ;************************************************************** ERW3: LD A,C ;ZULAESSIG? CP VETOK+VETOK-SGTOK-SGTOK JP Z,VPEEK CP PTTOK+PTTOK-SGTOK-SGTOK JP Z,PTEST CP CITOK+CITOK-SGTOK-SGTOK JP Z,CSRLN CP VGTOK-SGTOK+VGTOK-SGTOK JP Z,VGET SUB IKTOK-SGTOK+IKTOK-SGTOK JR C,ERR1 CP ISTOK-IKTOK+ISTOK-IKTOK+1 JR NC,ERR1 ;NEIN ;--$----------------------------------------------------------- EX DE,HL LD BC,ADRT2 POP HL LD L,A ADD HL,BC LD C,M INC HL LD H,M LD L,C PUSH HL EX DE,HL RET ;ABSPRUNG ZUR ROUTINE STRIG: CALL CPSTX ;'('? DEFM '(' CALL ARGV1 ;PARAMETER 1 PUSH AF ;WERT RETTEN CALL CPCOM ;KOMMA? CALL SNALY ;PARAMETER 2 (STRING) CALL CPRGT ;')'? POP AF PUSH HL ;ZEILENZEIGER PUSH AF CALL LEN1 ;LAENGE UND ADRESSE PARAM.2 INC HL ;IN A UND HL INC HL LD E,(HL) INC HL LD D,(HL) POP BC ;PARAM.1 (WIEDERHOLFAKTOR) PUSH BC PUSH AF PUSH DE LD C,A ;LAENGE NEUER STRING BERECHNEN XOR A CP C JR Z,STR1 CP B JR Z,STR1 LD A,C DEC B JR Z,STR1 STR2: ADD A,C JR C,STRER DJNZ STR2 STR1: LD B,A ;LAENGE IN A UND BC LD C,0 PUSH BC CALL STROP ;PLATZ IN STRINGPOOL RESERVIEREN ;ADR.NEUER STRING IN DE POP BC ;LAENGE NEUER STRING IN BC POP BC ;ADR.ALTER STRING HOLEN PUSH BC CALL SADB1 ;EINTRAGEN IN STRDAT. POP HL EX (SP),HL ;ALTE LAENGE IN H LD A,H POP HL EX (SP),HL LD L,A INC H STR4: DEC H ;STRING EINTRAGEN PUSH HL PUSH BC JR Z,STR3 CALL STRV1 POP BC POP HL JR STR4 STR3: POP BC POP HL POP DE ;FERTIG ABSCHLUSS CALL STRS3 JP SLEN3 STRER: LD E,28 JP ERROO RENUM: PUSH HL LD HL,10 LD (DISTA),HL LD HL,(PSBEG) PUSH AF PUSH HL INC HL INC HL LD A,(HL) INC HL LD H,(HL) LD L,A LD (ANF),HL ;ANF=ERSTE ZEILE LD (NANF),HL ;NANF=ANF LD DE,(SVARP) ;DE=PROGR.ENDE DEC DE DEC DE RNUM1: POP HL ;HL=ZEILENADR. PUSH HL ;IN STACK LD A,(HL) INC HL LD H,(HL) LD L,A ;HL=NAECHSTE ZADR. CALL CPREG EX (SP),HL ;HL=ZEILENADR. ;STACK=NAECHSTE JR NZ,RNUM1 POP DE INC HL INC HL LD A,(HL) INC HL LD H,(HL) LD L,A LD (ENDEW),HL ;END=LETZTE ZEILE LD B,4 ;MAX 4 PARAMETER POP AF LD HL,ANF EX (SP),HL RNUM2: JR Z,RNUM5 ;KEIN PARAM.MEHR CALL DCHEX ;WERT IN DE PUSH AF LD A,D OR E RNUM3: JP Z,FCER ;PARAM.=0 POP AF EX (SP),HL LD (HL),E INC HL LD (HL),D INC HL ;PARAM.EINGETR. JR Z,RNUM5 ;KEIN PARAM.MEHR PUSH AF DEC B JR Z,RNUM4 ;ALLE PARAM. POP AF EX (SP),HL CALL CPCOM ;TEST AUF "," JR RNUM2 RNUM4: POP AF JP NZ,SNER ;KEIN ZEILENENDE RNUM5: LD HL,(ENDEW) LD DE,(ANF) CALL CPREG ;END-ANF? RNU5A: JP C,FCER LD HL,(PSBEG) RNUM6: CALL ZPOI1 ;SUCHE ADR*RON ANF. JR C,RNUM7 ;ZEILE GEFUNDEN JR Z,RNUM3 ;PROGR.ENDE JR RNUM6 RNUM7: POP HL PUSH BC ;ADR.VON ANF. LD DE,(ENDEW) ;END IN DE LD HL,0 LD (ENDEW),HL ;ZEILENZAELER RNUM8: LD H,B LD L,C LD C,(HL) INC HL LD B,(HL) LD A,B OR C JR Z,RNUM3 ;PROGR.ENDE INC HL LD A,(HL) INC HL LD H,(HL) LD L,A CALL CPREG LD HL,(ENDEW) INC HL LD (ENDEW),HL JR NZ,RNUM8 INC HL INC HL ADD HL,HL INC HL ;TABL=2*ZEILEN-ANZAHL+5 LD DE,(SVARP) ;PROGR.ENDE ADD HL,DE JR C,RNU5A ;TAB.ZU LANG CALL TMEM1 LD (SVARP),HL ;NEUES PROGR.ENDE XOR A DEC HL LD (HL),A DEC HL LD (HL),A DEC DE DEC DE EX DE,HL LD (HL),E INC HL LD (HL),D INC HL DEC A LD (HL),A ;TAB.HAT ZEILENNUMMER 65535 INC HL LD (HL),A INC HL EX DE,HL ;DE=TABANF.ADR LD HL,(NANF) ;HL=NANF LD (ANF),HL ;NEUE ZEILENNR. RNUM9: POP HL LD C,(HL) INC HL LD B,(HL) INC HL PUSH BC LD BC,ANF LD A,(HL) LD (DE),A LD A,(BC) LD (HL),A INC HL INC DE INC BC LD A,(HL) LD (DE),A LD A,(BC) LD (HL),A ;NEUE ZEILENNR.IN PROGRAMM ;ALTE ZEILENNR.IN TAB. INC DE LD HL,(ANF) LD BC,(DISTA) ADD HL,BC LD (ANF),HL ;NEUE ZEILENNR. LD HL,(ENDEW) DEC HL LD A,H OR L LD (ENDEW),HL JR NZ,RNUM9 LD (DE),A POP HL LD HL,(PSBEG) PUSH HL RNU10: POP HL LD C,(HL) INC HL LD B,M INC HL PUSH BC LD A,(HL) INC HL AND (HL) INC A JR Z,RNU13 RNU11: INC HL RNU12: LD A,(HL) OR A JR Z,RNU10 CP GTTOK JR Z,RNU24 CP GBTOK JR Z,RNU24 CP RTTOK JR Z,RNU1A CP ELTOK JR Z,RNU1A CP TNTOK JR NZ,RNU11 RNU1A: CALL DCHE1 LD A,E OR D call nz, RNU14 ;VERGLEICH MIT TABELLE call nz, RNU18 ;ZAHL AENDERN JR RNU12 RNU13: DEC HL LD (SVARP),HL DEC HL LD (HL),A DEC HL LD (HL),A POP HL POP HL JP LIN10 RNU24: CALL DCHE1 LD A,E OR D JR Z,RNU12 CALL RNU14 CALL NZ,RNU18 LD A,(HL) CP ',' JR NZ,RNU12 ;ANWEISUNGSENDE JR RNU24 RNU14: PUSH HL PUSH DE LD DE,65535 CALL ZPOIT ;TAB SUCHEN POP DE ;DE=ALTE JR* INC BC INC BC INC BC INC BC LD H,B LD L,C ;HL=TAB.ZEIGER LD BC,(NANF) ;BC=NEUE NR. RNU15: LD A,(HL) INC HL PUSH HL OR (HL) JR Z,RNU17 ;TAB.ENDE LD A,(HL) DEC HL LD L,(HL) LD H,A CALL CPREG JR Z,RNU16 ;ZAHL GEFUNDEN LD HL,(DISTA) ADD HL,BC LD B,H LD C,L POP HL INC HL JR RNU15 RNU16: LD A,0FFH OR A RNU17: POP HL POP HL RET RNU18: PUSH BC ;NEUE NR. EX DE,HL LD HL,(SVARP) SBC HL,DE PUSH HL ;PROGR.LAENGE RNU19: POP BC LD H,D LD L,E DEC DE LD A,(DE) CP ',' JR Z,RNU20 ;VORHER.ZAHL CP 03AH JR NC,RNU20 ;ZAHL STREICHEN PUSH BC PUSH DE LDIR POP DE JR RNU19 RNU20: EX DE,HL POP DE PUSH HL PUSH BC XOR A LD B,98H CALL SGN1 CALL NUMKO POP BC POP DE RNU21: INC HL INC DE RNU22: LD A,(HL) OR A JR Z,RNU23 PUSH BC PUSH HL EX DE,HL ADD HL,BC LD D,H LD E,L DEC HL LDDR POP HL LDI POP BC JR RNU22 RNU23: PUSH DE LD DE,(PSBEG) CALL LIN11 RNU26: INC HL LD A,(HL) INC HL OR (HL) JR NZ,RNU26 EX DE,HL LD (HL),E INC HL LD (HL),D INC DE INC DE LD (SVARP),DE POP HL LD D,H LD E,L RNU25: LD A,(HL) OR A INC HL JR NZ,RNU25 POP BC EX (SP),HL PUSH BC EX DE,HL RET ;******************************************** DELET: RET Z CALL DCHEX JP Z,LIN13 CALL CPCOM PUSH DE CALL DCHEX POP HL RET NZ EX DE,HL PUSH HL CALL ZPOIT JP NC,LIN15 POP DE PUSH AF PUSH BC CALL ZPOI1 JP NC,LIN15 POP BC JP LIN6 ;************************************************************** PAUSE: CALL TCHA1 ;PARAM.VORH. JR NZ,PAUS0 ;PARAMETER VORH. PAUS1: CALL KBDS ;OHNE PARAMETER JR NC,PAUS1 CP 03H ;BREAK? RET Z CP 0AH ;CURSOR DOWN JR NZ,PAUS1 JP CI ;TASTATUREINGABE PAUS0: CALL ARGV1 ;1.PARAMETER LD C,A PAUS3: LD A,16 LD E,14H CALL SCVSP ;SYSTEMSCHNITTSTELLE PUSH BC CALL KBDS ;STATUSABFRAGE POP BC JR NC,PAUS2 CP 03H ;BREAK? RET Z CP 0AH ;CURSOR DOWN JR NZ,PAUS2 JP CI ;TASTATURABFRAGE PAUS2: DEC C JR NZ,PAUS3 RET ;************************************************************ BEEPP: LD B,1 ; CALL TCHA1 ;PARAMETER VORH.? JR Z,BEE1 CALL ARGV1 ;PARAMETER ERF. LD B,A BEE1: LD A,7 LD E,0 BEE2: CALL SCVSP ;SYSTEMSCHNITTSTELLE DJNZ BEE1 RET WINDO: CALL TCHA1 ;PARAMETER VORHANDEN JR Z,WIND2 ;KEIN PARAMETER PUSH HL CALL ARGV1 ;1.PARAMETER EX (SP),HL LD HL,WIN9 CALL VSMA ;M IN A LADEN INC HL EX (SP),HL CALL CPCOM ;?KOMMA CALL ARGV1 ;2.PARAMETER EX (SP),HL CALL VSMA INC HL EX (SP),HL CALL CPCOM ;?KOMMA CALL ARGV1 ;3.PARAMETER EX (SP),HL CALL VSMA EX (SP),HL CALL CPCOM ;?KOMMA CALL ARGV1 ;4.PARAMETER EX (SP),HL LD D,A CALL BWSON ;BWS ANSCHALTEN CP 40 JR NC,ER5 LD A,(WIN9+2) LD E,A CP 40 ;ANZ.SPALTEN>40? JR NC,ER5 LD A,D SUB E JR C,ER5 INC A LD (WINLG),A LD A,E LD (WINAN),A LD A,(WIN9+1) CP 32 ;ANZAHL ZEILEN>32? JR NC,ER5 LD D,A LD A,(WIN9) CP 32 JR NC,ER5 LD E,A LD A,D SUB E JR C,ER5 INC A LD (WINLG+1),A LD A,E LD (WINAN+1),A JR WIND3 WIND2: PUSH HL ;STANDARDFENSTER CALL BWSON LD HL,100H LD (WINAN),HL LD HL,1E28H LD (WINLG),HL WIND3: LD HL,0 ;CURSOR LOESCHEN LD (CRSR),HL CALL BWSOF ;BWS ABSCHALTEN POP HL RET ER5: CALL BWSOF JR SNER ;************************************************************** BLOAD: PUSH HL LD HL,ARGN XOR A CALL VSMA ; POP HL LD E,10H JP SCVSP ;SYSTEMSCHNITTSTELLE ;*************************************************************** VPEEK: CALL SNL14 ;PARAMETER ERF. EX (SP),HL LD DE,SNL16 PUSH DE CALL EPRV3 ;PARAMETER RF. PUSH HL LD HL,8000H ADD HL,DE JR C,VP1 LD A,0BFH CP H VP1: JR C,SNER ;FEHLERROUTINE CALL VSAM POP HL JP INP1 ;*************************************************************** SNER: JP SNER1 ;FEHLERROUTINE KERN VPOKE: CALL EPRV4 ;PARAMETER ERF. PUSH DE CALL CPCOM ;KOMMA? CALL ARGV1 ;PARAMETER ERF. EX (SP),HL LD DE,8000H ADD HL,DE JR C,VP1 LD D,A LD A,0BFH CP H JR C,VP1 LD A,D CALL VSMA POP HL RET ;******************************** BORD: CALL ARGV1 ;PARAMETER ERF. RRCA RRCA RRCA AND 60H LD C,A LD B,9FH JP TON6 ;******************************************************** AT: LD A,(PRFLG) BIT 1,A SET 1,A ;PRINTFLAG SETZEN LD (PRFLG),A JR NZ,SNER ;FEHLER PUSH DE PUSH HL CALL BWSON LD HL,WINAN LD (WIN9),HL LD DE,WIN9-10 LD BC,6 LDIR LD HL,0 LD (WINAN),HL LD HL,2028H LD (WINLG),HL ;STANDARDFENSTER EINSTELLEN CALL BWSOF POP HL CALL LOKA1 ;CURSOR POSITIONIEREN CALL CPRGT ;'('? CALL CPSTX DEFM ';' LD A,M CP INTOK JR C,AT1 CP COTOK+1 JR NC,AT1 CALL AT3 AT2: PUSH HL CALL BWSON LD HL,WIN9-10 LD DE,WINAN ;FENSTER EINST. LD BC,6 LDIR CALL BWSOF POP HL POP DE POP BC RET AT1: CALL PRT2 ;BILDSCHIRMAUSGABE JR AT2 ;************************************************************ SNER2: JP SNER1 ;FEHLERROUTINE INK: CALL ARGV1 ;PARAMETER ERF. CP 32 JR NC,SNER2 ;PARAM.<32? SLA A SLA A SLA A LD D,A PUSH HL LD HL,RCOLO ;FARBBYTE LADEN CALL VSAM POP HL AND 07H JR PIP1 PAPER: CALL ARGV1 ;PARAMETER ERF. CP 8 JR NC,SNER2 ;PARAM.<8 ? LD D,A PUSH HL LD HL,RCOLO ;FARBBYTE LADEN CALL VSAM POP HL AND 0F8H PIP1: OR D PUSH HL LD HL,RCOLO CALL VSMA POP HL PIP2: RET COLORP: CALL TCHA1 ;PARAMETER VORH. ? JR Z,SNER2 CALL INK CALL TCHA1 ;1.PARAMETER RET Z CALL CPCOM ;KOMMA ? JR PAPER RET ;************************************************************ LOKA1: CALL TCHAR ;PARAMETER VORH. CALL CPSTX DEFM '(' LOKAT: CALL ARGV1 ;1.PARAMETER LD D,A PUSH HL LD HL,WINLG+1 CALL VSAM POP HL DEC A CP D JR C,SNER2 CALL CPCOM ;KOMMA ? PUSH DE CALL ARGV1 ;2.PARAMETER POP DE LD C,A PUSH HL LD HL,WINLG CALL VSAM POP HL DEC A CP C JR C,SNER2 LD A,C PUSH HL LD HL,CRSR ;CURSOR POSITIONIEREN CALL VSMA LD A,D INC HL LOK1: CALL VSMA POP HL RET ;************************************************************* INKEY: PUSH HL ;ZEILENZEIGER RETTEJ CALL KBDS ;AINGABE? JR NC,INKE1 LD A,1 CALL STADB ;VARIABLE BELEGEN CALL CI INKE3: LD HL,(STRDA+2) ;WERT EINTRAGEN LD (HL),A INKE2: JP SLEN3 INKE1: XOR A CALL STADB ;STRING MIT LAENGE 0 JR INKE2 ;================***********************====================== SOUND: CALL ARGV1 ;1.PARAMETER PUSH HL LD HL,ARG1 ;HL-->VRAM LD B,4 SND2: CALL VSMA INC HL EX (SP),HL ;HL-->ZEILE DEC B JR Z,SND1 PUSH BC CALL CPCOM ;KOMMA ? CALL ARGV1 ;2.PARAMETER POP BC EX (SP),HL ;HL-->VRAM JR SND2 SND1: CALL TCHA1 ;HL-->ZEILE JR Z,SND3 CALL CPCOM ;KOMMA ? CALL ARGV1 ;3.PARAMETER EX (SP),HL ;HL-->VRAM CALL VSMA INC HL EX (SP),HL ;HL-->ZEILE CALL TCHA1 ;PARAM.VORH. JR Z,SND3 CALL CPCOM ;KOMMA ? CALL ARGV1 ;4.PARAMETER EX (SP),HL ;HL-->VRAM CALL VSMA EX (SP),HL ;HL-->ZEILE SND3: LD E,35H ;ZTON POP BC JP SCVSP ;************************************************************* PSET: LD B,1 PSET1: PUSH BC CALL EPRV4 ;1.PARAMETER PUSH HL LD A,E LD HL,HOR CALL VSMA LD A,D INC HL CALL VSMA EX (SP),HL CALL CPCOM ;KOMMA ?? CALL ARGV1 ;2.PARAMETER EX (SP),HL INC HL CALL VSMA POP HL CALL PFARB ;FARBBYTE LADEN PS1: LD E,30H POP BC DEC B JR Z,PS2 DEC E PS2: CALL SCVSP JP C,SNER RET PRES: LD B,0 JR PSET1 ; PFARB: CALL TCHA1 ;PARAM.VORH. RET Z CALL CPCOM ;KOMMA ? CALL ARGV1 ;PARAM.ERF. PUSH HL LD HL,HOR+3 RLA RLA RLA JP LOK1 ; INSTR: CALL SNAL6 ;PARAMETER1 CALL CPCOM PUSH HL CALL LEN1 ;STRING LAENGE JR Z,INST LD B,A INC HL INC HL LD E,(HL) INC HL LD D,(HL) POP HL PUSH DE PUSH BC CALL SNALY ;PARAMETER 2 CALL CPRGT POP BC POP DE PUSH HL PUSH DE PUSH BC CALL LEN1 JR Z,INST INC HL INC HL LD C,(HL) INC HL LD H,(HL) LD L,C POP BC LD C,A POP DE PUSH HL INST1: PUSH BC PUSH DE LD A,(DE) INST2: CP (HL) JR Z,INST3 INC HL DEC C JR NZ,INST2 INST4: XOR A POP HL POP HL POP HL INST5: LD DE,SNL16 PUSH DE JP POS1 INST: JP FCER ;FC ERROR INST3: INC HL PUSH HL DEC HL INST6: INC HL DEC C JR Z,INST7 INC DE DEC B JR Z,INST8 LD A,(DE) CP (HL) JR Z,INST6 POP HL POP DE POP BC DEC C JR INST1 INST7: INC DE DEC B POP HL JR NZ,INST4 JR INST9 INST8: POP HL INST9: POP DE POP DE POP DE AND A SBC HL,DE LD A,L JR INST5 ;************************************************************** VSMA: LD E,28H JR VS1 VSAM: LD E,29H JR VS1 ;************************************************ KEYA: CALL ARGV1 ;PARAM.ERF. AND A JR Z,SNER4 CP 13 ;PARAM.<13 ? JR NC,SNER4 LD E,39H VS1: JP SCVSP ;***************************************** KEYLI1: LD E,3AH JR VS1 ;***************************************** SWIT: CALL ARGV1 ;PARAMETER ERF. PUSH AF CALL CPCOM ;KOMMA CALL ARGV1 ;2.PARAMETER LD D,A POP AF PUSH HL LD L,A LD A,2 LD E,26H CALL SCVSP POP HL RET ;******************************************** PTEST: CALL SNL14 ;1.PARAM. EX (SP),HL LD DE,SNL16 PUSH DE CALL EPRV3 ;2.PARAMETER PUSH HL LD A,E LD HL,HOR CALL VSMA LD A,D INC HL CALL VSMA LD E,2FH CALL SCVSP LD B,0 JR Z,PT1 INC HL INC HL CALL VSMA LD E,30H CALL SCVSP LD B,1 PT1: LD A,B POP HL JP INP1 SNER4: JP SNER1 ;****************************************** CLOSE: LD C,0 LD A,M CP 'I' JR Z,CL11 INC C CP 'O' JR NZ,SNER4 CL11: PUSH BC INC HL LD A,M CP '#' SNER5: JR NZ,SNER4 INC HL CALL ARGV1 AND 3 POP BC RET Z PUSH HL RLA ADD A,C PUSH AF DEC A LD B,0 SCF CL3: RL B DEC A JR NZ,CL3 LD HL,IOCHL LD A,M XOR B LD M,A POP AF POP HL SET 6,A PUSH DE LD E,A LD D,3 CALL VERTB POP DE RET ;***************************************** RAND: LD A,R LD (RNDV),A RET ;***************************************** ; OPEN: LD A,M INC HL CP 'I' JR Z,IOPEN CP 'O' SNAR6: JR NZ,SNER5 OOPEN: CALL OTCHL CALL TESTC OPEN1: RET Z LD A,0D5H CALL CASS1 LD HL,INTPR XOR A CALL CO POP HL RET IOPEN: CALL INCHL LD A,(ININD) AND 3 RET Z LD A,0D5H CALL CASS1 LD HL,INTPR CALL CI POP HL RET ;************************************** LINE1: LD BC,43EH JR GRAPH CIRCL1: LD BC,33FH GRAPH: PUSH BC CALL EPRV4 POP BC PUSH BC PUSH HL LD HL,ARG1 GRA1: LD A,E CALL VSMA INC HL LD A,D CALL VSMA INC HL DEC B JR Z,GRA2 EX (SP),HL PUSH BC CALL CPCOM CALL EPRV4 POP BC EX (SP),HL JR GRA1 GRA2: POP HL CALL PFARB POP DE JP SCVSP ;************************************* CSRLN: CALL SNL14 EX (SP),HL LD DE,SNL16 PUSH DE CALL ARGV2 PUSH HL AND A LD A,0 JR NZ,CSRL12 LD HL,WINAN+1 CALL VSAM CSRL12: LD B,A LD HL,CRSR+1 CALL VSAM ADD A,B POP HL JP INP1 ;*************************************** VGET: EX (SP),HL LD A,1 CALL STADB CALL BWSON LD DE,(CRSR) CALL VADR LD A,M CALL BWSOF JP INKE3 ; ;***************************************************************