.Z80 ;********************************************* ;* * ;* J P R - 1 M I K R O B A S I C 2.4 * ;* * ;********************************************* ; TITLE * * * M I K R O B A S I C * * * PAGE 60 ; INCLUDE B:EQUMON.MAC ; ORG 0D00H .PHASE 0D00H ; TOP: LD HL,(TXTUNF) INC HL RET JP BRST LENGHT: LD HL,(LEGT) DEC HL RET JP BRST+9 BEND: CALL ENDCHK JR RSTART ; ;START ; START: LD SP,SKLEP CALL DISP CALL NULDIS CALL HOME XOR A LD (MODE),A LD (PORT24),A LD DE,MSG1 CALL PRTSTG LD HL,TOP LD (RANPNT),HL LD HL,TXTBGN LD (TXTUNF),HL LD HL,BUFA LD (BUFFER),HL LD HL,BUFE LD (BUFEND),HL LD HL,TXTE START1: LD (TXTEND),HL ; ;RSTART HORKY START ; RSTART: CALL CRLF RSTAR1: LD SP,SKLEP LD DE,OK SUB A LD (MODE),A CPL LD (MASKIN),A CALL PRTSTG LD HL,ST2+1 LD (CURRNT),HL ST2: LD HL,0 LD (LOPVAR),HL LD (STKGOS),HL ST3: LD B,'>' CALL GETLN ST5: PUSH DE CALL DBUFF CALL TSTNUM CALL IGNB LD A,H OR L POP BC JP Z,DIRECT DEC DE LD A,H LD (DE),A DEC DE LD A,L LD (DE),A PUSH BC PUSH DE LD A,C SUB E PUSH AF CALL FNDLN PUSH DE JP NZ,ST4 PUSH DE CALL FNDNTXT POP BC LD HL,(TXTUNF) CALL MVUP LD H,B LD L,C LD (TXTUNF),HL ST4: POP BC LD HL,(TXTUNF) POP AF PUSH HL CP 3 JP Z,RSTART ADD A,L LD L,A LD A,0 ADC A,H LD H,A CALL DTXTE CALL COMP JP NC,QSORRY LD (TXTUNF),HL POP DE CALL MVDOWN POP DE POP HL CALL MVUP JP ST3 ; MSG1: DB 'MIKRO BASIC',0 ; ;TABULKA KLICOVYCH SLOV ; TAB1: DB 'LIST',0 DW LIST DB 'LLIST',0 DW LLIST DB 'RUN',0 DW RUN DB 'NEW',0 DW NEW DB 'REWIND',0 DW REWIND TXMON: DB 'MONITOR',0 DW MONIT DB 'RAM',0 DW RAM DB 'LOAD',0 DW LOAD DB 'SAVE',0 DW SAVE ; TAB2: DB 'NEXT',0 DW NEXT DB 'LET',0 DW LET DB 'CLS',0 DW CLS DB 'CLEAR',0 DW CLEAR DB 'HARD',0 DW HARD DB 'DISPL',0 DW DISPL DB 'IF',0 DW IFF DB 'GOTO',0 DW GOTO DB 'GOSUB',0 DW GOSUB DB 'RETURN',0 DW RETURN DB 'REM',0 DW REM DB 'FOR',0 DW FOR DB 'INPUT',0 DW INPUT DB 'PRINT',0 DW PRINT DB 'LPRINT',0 DW LPRINT DB 'END',0 DW BEND DB 'STOP',0 DW STOP DB 'CALL',0 DW BCALL DB 'OUTCHAR',0 DW OUTCHR DB 'OUT',0 DW BOUT DB 'O$',0 DW O DB 'I$',0 DW I DB 'WAIT',0 DW WAIT DB 'BEEP',0 DW BEEP DB 'POKE',0 DW POKE DB 'MASK',0 DW MASK DB 'TAB',0 DW TAB DB 'BYTE',0 DW BYTE DB 'WORD',0 DW WORD DB 0 DW DEFLT TAB4: DB 'RND',0 DW RND DB 'ABS',0 DW ABS DB 'SIZE',0 DW SIZE DB 'PEEK',0 DW PEEK DB 'INCHAR',0 DW INCHAR DB 'HEX',0 DW HEX DB 'INM',0 DW INM DB 'IN',0 DW BIN DB 27H,0 DW QUOTE DB 'TOP',0 DW TOP DB 'AREM',0 DW AREM DB 'LEN',0 DW LENGHT DB 0 DW XP40 TAB5: DB 'TO',0 DW FR1 DB 0 DW QWHAT TAB6: DB 'STEP',0 DW FR2 DB 0 DW FR3 TAB8: DB '>=',0 DW XP11 DB '#',0 DW XP12 DB '>',0 DW XP13 DB '=',0 DW XP15 DB '<=',0 DW XP14 DB '<',0 DW XP16 DB 0 DW XP17 RET ; ;INGB VYNECHANI MEZER PODLE DE ; IGNB: LD A,(DE) CP ' ' RET NZ INC DE JR IGNB ; ;FINI ; FINI: POP AF CALL FIN JP QWHAT ; ;INDEXOVA PROMENA ; TSTV: CALL IGNB SUB 40H RET C JR NZ,TV1 INC DE CALL PARN ADD HL,HL JP C,QHOW PUSH DE EX DE,HL CALL SIZE CALL COMP JP C,ASORRY LD HL,(TXTEND) CALL SUBDE POP DE RET ; ;VYPOCET ADRESY ULOZENI PROMENE ; TV1: CP 1BH CCF RET C INC DE LD HL,VARBGN RLCA ADD A,L LD L,A LD A,0 ADC A,H LD H,A RET ; ;TSCF POROVNAND TEXTU PODLE DE SE ZNAKEM ;KTERY JE ZA CALL.... JE-LI SHODNY POKRACU- ;JE SE ZA CALL....+2 JINAK NA ADRESE ;O N VYSSI. N JE NA ADRESE CALL...+2 ; TSCF: EX (SP),HL CALL IGNB CP (HL) INC HL JR Z,TC2 PUSH BC LD C,(HL) LD B,0 ADD HL,BC POP BC DEC DE TC2: INC DE INC HL EX (SP),HL RET ; ;TSTNUM PREVOD ASCII CISLA Z BUFFERU PODLE ;DE NA BINARNI CISLO V HL ; TSTNUM: LD HL,0 LD B,H CALL IGNB TN1: CP '0' RET C CP 3AH RET NC LD A,0F0H AND H JR NZ,QHOW INC B PUSH BC LD B,H LD C,L ADD HL,HL ADD HL,HL ADD HL,BC ADD HL,HL LD A,(DE) INC DE AND 0FH ADD A,L LD L,A LD A,0 ADC A,H LD H,A POP BC LD A,(DE) JP P,TN1 ; ;QHOW OTAZKA HOW ; QHOW: PUSH DE AHOW: LD DE,HOW JP ERROR ; ;TEXTY OTAZEK ; HOW: DB 'HOW?',0DH OK: DB 'READY',0DH WHAT: DB 'WHAT?',0DH SORRY: DB 'SORRY',0DH ; ;NEW ; NEW: CALL ENDCHK LD HL,TXTBGN LD (TXTUNF),HL ; ;RUN ; RUN: CALL ENDCHK LD DE,TXTBGN RUNNXL: LD HL,0 CALL FNDLP JP C,RSTART RUNTSL: EX DE,HL LD (CURRNT),HL EX DE,HL INC DE INC DE RUNSML: XOR A LD (MODE),A CALL CONT LD HL,TAB2-1 JP EXEC ; ;GOTO ; GOTO: CALL EXPR PUSH DE CALL ENDCHK CALL FNDLN JP NZ,AHOW POP AF JP RUNTSL ; ;HARD ; HARD: CALL PRNTST CALL FINI ; ;DISPL ; DISPL: CALL DISP CALL FINI ; ;LIST ; LLIST: CALL PRNTST LIST: CALL TSTNUM LD A,0FFH LD (LISTC),A CALL IGNB CP 0DH JR NZ,LS4 LS0: CALL FNDLN LS1: JR C,LS6 LD A,(LISTC) CP 0FFH JR Z,LS5 DEC A JP Z,RSTART LS5: LD (LISTC),A LS3: CALL PRTLN CALL FNDLP JR LS1 LS4: CP '+' JR NZ,LS0 INC DE CALL IGNB PUSH HL CALL TSTNUM LD A,L INC A INC A LD (LISTC),A POP HL JP LS0 LS6: CALL DISP JP RSTAR1 ; ;PRINT ; LPRINT: CALL PRNTST PRINT: LD C,8 CALL TSCF DB ':' DB 9 CALL CRLF CALL DISP JP RUNSML CALL TSCF DB 0DH DB 9 CALL CRLF PR6: CALL DISP JP RUNNXL PR0: CALL TSCF DB '*' DB 14 CALL EXPR LD A,L RRCA RRCA AND 0C0H LD (MODE),A JP PR3 CALL TSCF DB '#' DB 7 CALL EXPR LD C,L JP PR3 CALL QTSTG JP PR8 PR3: CALL TSCF DB ',' DB 6 CALL FIN JP PR0 CALL CRLF CALL DISP CALL FINI PR8: CALL EXPR PUSH BC CALL PRTNUM POP BC JR PR3 ; ;GOSUB ; GOSUB: CALL PUSHA CALL EXPR PUSH DE CALL FNDLN JP NZ,AHOW LD HL,(CURRNT) PUSH HL LD HL,(STKGOS) PUSH HL LD HL,0 LD (LOPVAR),HL ADD HL,SP LD (STKGOS),HL JP RUNTSL ; ;RETURN ; RETURN: CALL ENDCHK LD HL,(STKGOS) LD A,H OR L JP Z,QWHAT LD SP,HL POP HL LD (STKGOS),HL POP HL LD (CURRNT),HL POP DE CALL POPA CALL FINI ; ;FOR ; FOR: CALL PUSHA CALL SETVAL DEC HL LD (LOPVAR),HL LD HL,TAB5-1 JP EXEC ; FR1: CALL EXPR LD (LOPLMT),HL LD HL,TAB6-1 JP EXEC ; FR2: CALL EXPR JR FR4 ; FR3: LD HL,1 FR4: LD (LOPINC),HL LD HL,(CURRNT) LD (LOPLN),HL EX DE,HL LD (LOPPT),HL LD BC,0AH LD HL,(LOPVAR) EX DE,HL LD H,B LD L,B ADD HL,SP DB 3EH FR7: ADD HL,BC LD A,(HL) INC HL OR (HL) JR Z,FR8 LD A,(HL) DEC HL CP D JR NZ,FR7 LD A,(HL) CP E JP NZ,FR7 EX DE,HL LD HL,0 ADD HL,SP LD B,H LD C,L LD HL,0AH ADD HL,DE CALL MVDOWN LD SP,HL FR8: LD HL,(LOPPT) EX DE,HL CALL FINI ; ;NEXT ; NEXT: CALL TSTV JP C,QWHAT LD (VARNXT),HL NX0: PUSH DE EX DE,HL LD HL,(LOPVAR) LD A,H OR L JP Z,AWHAT CALL COMP JR Z,NX3 POP DE CALL POPA LD HL,(VARNXT) JR NX0 NX3: LD E,(HL) INC HL LD D,(HL) LD HL,(LOPINC) PUSH HL LD A,H XOR D LD A,D ADD HL,DE JP M,NX4 XOR H JP M,NX5 NX4: EX DE,HL LD HL,(LOPVAR) LD (HL),E INC HL LD (HL),D LD HL,(LOPLMT) POP AF OR A JP P,NX1 EX DE,HL NX1: CALL CKHLDE POP DE JR C,NX2 LD HL,(LOPLN) LD (CURRNT),HL LD HL,(LOPPT) EX DE,HL CALL FINI NX5: POP HL POP DE NX2: CALL POPA CALL FINI ; ;REM ; REM: EX DE,HL LD (ARMM),HL EX DE,HL LD HL,0 JP IFFR ; ;AREM ; AREM: LD HL,(ARMM) RET ; ; ;CLEAR ; CLEAR: LD HL,VARBGN PUSH DE LD DE,27*2 LD C,0 CALL NULD20 POP DE CALL FINI ; ;IF ; IFF: CALL EXPR IFFR: LD A,H OR L JP NZ,RUNSML CALL FNDSKP JP NC,RUNTSL JP RSTART ; ;CHYBA VSTUPU ; INPERR: LD HL,(STKINP) LD SP,HL POP HL LD (CURRNT),HL POP DE POP DE ; ;INPUT ; INPUT: IP1: PUSH DE CALL QTSTG JP IP2 CALL TSTV JR C,IP4 JR IP3 IP2: PUSH DE CALL TSTV JP C,QWHAT LD A,(DE) LD C,A SUB A LD (DE),A POP DE CALL PRTSTG LD A,C DEC DE LD (DE),A IP3: PUSH DE EX DE,HL LD HL,(CURRNT) PUSH HL LD HL,IP1 LD (CURRNT),HL LD HL,0 ADD HL,SP LD (STKINP),HL PUSH DE LD B,':' CALL GETLN CALL DBUFF CALL EXPR POP DE EX DE,HL LD (HL),E INC HL LD (HL),D POP HL LD (CURRNT),HL CALL CONT POP DE IP4: POP AF CALL TSCF DB ',' DB 3 JP IP1 CALL FINI DEFLT: LD A,(DE) CP 0DH JP Z,LT1 ; ;LET ; LET: CALL SETVAL CALL TSCF DB ',' DB 3 JP LET LT1: CALL FINI ; ;EXPR VYHODNOCENI VYRAZU ; EXPR: CALL EXPR2 PUSH HL EXPR1: LD HL,TAB8-1 JP EXEC XP11: CALL XP18 RET C LD L,A RET XP12: CALL XP18 RET Z LD L,A RET XP13: CALL XP18 RET Z RET C LD L,A RET XP14: CALL XP18 LD L,A RET Z RET C LD L,H RET XP15: CALL XP18 RET NZ LD L,A RET XP16: CALL XP18 RET NC LD L,A RET XP17: POP HL RET XP18: LD A,C POP HL POP BC PUSH HL PUSH BC LD C,A CALL EXPR2 EX DE,HL EX (SP),HL CALL CKHLDE POP DE LD HL,0 LD A,1 RET EXPR2: CALL TSCF DB '-' DB 6 LD HL,0 JP XP26 CALL TSCF DB '+' DB 0 CALL EXPR3 XP23: CALL TSCF DB '+' DB 15H PUSH HL CALL EXPR3 XP24: EX DE,HL EX (SP),HL LD A,H XOR D LD A,D ADD HL,DE POP DE JP M,XP23 XOR H JP P,XP23 JP QHOW CALL TSCF DB '-' DB 92H XP26: PUSH HL CALL EXPR3 CALL CHGSGN JP XP24 EXPR3: CALL EXPR4 XP31: CALL TSCF DB '*' DB 2DH PUSH HL CALL EXPR4 LD B,0 CALL CHKSGN EX (SP),HL CALL CHKSGN EX DE,HL EX (SP),HL LD A,H OR A JP Z,XP32 LD A,D OR D EX DE,HL JP NZ,AHOW XP32: LD A,L LD HL,0 OR A JP Z,XP35 XP33: ADD HL,DE JP C,AHOW DEC A JP NZ,XP33 JP XP35 CALL TSCF DB '/' DB 4EH PUSH HL CALL EXPR4 LD B,0 CALL CHKSGN EX (SP),HL CALL CHKSGN EX DE,HL EX (SP),HL EX DE,HL LD A,D OR E JP Z,AHOW PUSH BC CALL DIVIDE LD H,B LD L,C POP BC XP35: POP DE LD A,H OR A JP M,QHOW LD A,B OR A CALL M,CHGSGN JP XP31 EXPR4: LD HL,TAB4-1 JP EXEC XP40: CALL TSTV JP C,XP41 LD A,(HL) INC HL LD H,(HL) LD L,A RET XP41: CALL TSTNUM LD A,B OR A RET NZ PARN: CALL TSCF DB '(' DB 09 CALL EXPR CALL TSCF DB ')' DB 1 RET JP QWHAT ; ;RND ; RND: CALL PARN LD A,H OR A JP M,QHOW OR L JP Z,QHOW PUSH DE PUSH HL LD HL,(RANPNT) LD DE,0FF3H ;CONTE CALL COMP JP C,RA1 LD HL,COMP RA1: LD E,(HL) INC HL LD D,(HL) LD (RANPNT),HL POP HL EX DE,HL PUSH BC CALL DIVIDE POP BC POP DE INC HL RET ; ;ABS ; ABS: CALL PARN DEC DE CALL CHKSGN INC DE RET ; ;SIZE ; SIZE: LD HL,(TXTUNF) PUSH DE EX DE,HL LD HL,(TXTEND) CALL SUBDE POP DE RET ; ;DIVIDE ; DIVIDE: PUSH HL LD L,H LD H,0 CALL DV1 LD B,C LD A,L POP HL LD H,A DV1: LD C,0FFH DV2: INC C CALL SUBDE JR NC,DV2 ADD HL,DE RET SUBDE: LD A,L SUB E LD L,A LD A,H SBC A,D LD H,A RET CHKSGN: LD A,H OR A RET P CHGSGN: LD A,H OR L RET Z LD A,H PUSH AF CPL LD H,A LD A,L CPL LD L,A INC HL POP AF XOR H JP P,QHOW LD A,B XOR 80H LD B,A RET ; CKHLDE: LD A,H XOR D JP P,CK1 EX DE,HL CK1: JP COMP ; ;SETVAL ; SETVAL: CALL TSTV JP C,QWHAT PUSH HL CALL TSCF DB '=' DB 0AH CALL EXPR LD B,H LD C,L POP HL LD (HL),C INC HL LD (HL),B RET JP QWHAT ; ;FIN ; FIN: CALL TSCF DB ':' DB 4 POP AF JP RUNSML CALL TSCF DB 0DH DB 4 POP AF JP RUNNXL RET ; ;ENDCHK ; ENDCHK: CALL IGNB CP 0DH RET Z QWHAT: PUSH DE AWHAT: LD DE,WHAT ERROR: SUB A LD (MODE),A CALL PRTSTG CALL DISP POP DE LD A,(DE) PUSH AF SUB A LD (DE),A LD HL,(CURRNT) PUSH HL LD A,(HL) INC HL OR (HL) POP DE JP Z,RSTART LD A,(HL) OR A JP M,INPERR CALL PRTLN DEC DE POP AF LD (DE),A LD A,03FH CALL OUTC SUB A CALL PRTSTG JP RSTART QSORRY: PUSH DE ASORRY: LD DE,SORRY JP ERROR ; ;GETLN ; GETLN: LD A,B CALL OUTC CALL DBUFF GL1: CALL CI CP 8 JR Z,GL3 CP 07FH JR Z,GL4 CALL OUTC LD (DE),A INC DE CP 0DH RET Z LD A,E CXBUFE: PUSH HL LD HL,(BUFEND) CP L POP HL JR NZ,GL1 GL3: LD A,E CXBUFA: PUSH HL LD HL,(BUFFER) CP L POP HL JR Z,GL4 CALL GL5 JR GL1 GL4: CALL CRLF LD B,'>' JP GETLN GL5: DEC DE LD A,8 CALL OUTC LD A,' ' CALL OUTC LD A,8 JP OUTC ; ;FNDLN ; FNDLN: LD A,H OR A JP M,QHOW LD DE,TXTBGN FNDLP: PUSH HL LD HL,(TXTUNF) DEC HL CALL COMP POP HL RET C LD A,(DE) SUB L LD B,A INC DE LD A,(DE) SBC A,H JR C,FL2 DEC DE OR B RET ; ;FNDNTXT ; FNDNTXT:INC DE FL2: INC DE FNDSKP: LD A,(DE) CP 0DH JR NZ,FL2 INC DE JR FNDLP ; ;PRTSTG ; PRTSTG: LD B,A PS1: LD A,(DE) INC DE CP B RET Z CALL OUTC CP 0DH JR NZ,PS1 RET ; ;QTSTG ; QTSTG: CALL TSCF DB '"' DB 0FH LD A,'"' QT1: CALL PRTSTG CP 0DH POP HL JP Z,PR6 QT2: INC HL INC HL INC HL JP (HL) RET ; ;PRTNUM ; PRTNUM: LD B,0 CALL CHKSGN JP P,PN1 LD B,2DH DEC C PN1: PUSH DE LD DE,0AH PUSH DE DEC C PUSH BC PN2: CALL DIVIDE LD A,B OR C JR Z,PN3 EX (SP),HL DEC L PUSH HL LD H,B LD L,C JR PN2 PN3: POP BC PN4: DEC C LD A,C OR A JP M,PN5 LD A,020H CALL OUTC JR PN4 PN5: LD A,B OR A CALL NZ,OUTC LD E,L PN6: LD A,E CP 0AH POP DE RET Z ADD A,030H CALL OUTC JR PN6 ; ;PRTLN ; PRTLN: LD A,(DE) LD L,A INC DE LD A,(DE) LD H,A INC DE LD C,4 CALL PRTNUM LD A,20H CALL OUTC SUB A CALL PRTSTG RET ; ;MVUP ; MVUP: CALL COMP RET Z LD A,(DE) LD (BC),A INC DE INC BC JR MVUP ; ;MVDOWN ; MVDOWN: LD A,B SUB D JR NZ,MD1 LD A,C SUB E RET Z MD1: DEC DE DEC HL LD A,(DE) LD (HL),A JP MVDOWN ; ;POPA ; POPA: POP BC POP HL LD (LOPVAR),HL LD A,H OR L JP Z,PP1 POP HL LD (LOPINC),HL POP HL LD (LOPLMT),HL POP HL LD (LOPLN),HL POP HL LD (LOPPT),HL PP1: PUSH BC RET ; ;PUSHA ; PUSHA: LD HL,STKLMT CALL CHGSGN POP BC ADD HL,SP JP NC,QSORRY LD HL,(LOPVAR) LD A,H OR L JR Z,PU1 LD HL,(LOPPT) PUSH HL LD HL,(LOPLN) PUSH HL LD HL,(LOPLMT) PUSH HL LD HL,(LOPINC) PUSH HL LD HL,(LOPVAR) PU1: PUSH HL PUSH BC RET ; ;CRLF,OUTC ; CRLF: LD A,0DH OUTC: PUSH AF CP 0DH JR Z,LINEF CALL CO H2: POP AF RET LINEF: CALL CROUT JR H2 CROUT: LD A,0DH JP CO ; ;NULOVANI DISPLEJE ; CLS: CALL NULDIS CALL HOME CALL FINI ; ;DIRECT MODUL ; DIRECT: LD HL,TAB1-1 EXEC: CALL IGNB PUSH DE EX1: LD A,(DE) INC DE CP '.' JR Z,EX3 INC HL CP (HL) JP Z,EX1 LD A,0 DEC DE CP (HL) JR Z,EX5 EX2: INC HL CP (HL) JP NZ,EX2 INC HL INC HL POP DE JP EXEC EX3: LD A,0 EX4: INC HL CP (HL) JR NZ,EX4 EX5: INC HL LD A,(HL) INC HL LD H,(HL) LD L,A POP AF JP (HL) ; ;DBUFF ; DBUFF: PUSH HL LD HL,(BUFFER) LD D,H LD E,L POP HL RET DTXTE: PUSH HL LD HL,(TXTEND) LD D,H LD E,L POP HL RET ; ;MASKA ; MASK: CALL EXPR LD A,L LD (MASKIN),A CALL FINI ; ;RAM ; RAM: CALL EXPR EX DE,HL LD HL,TXTE EX DE,HL CALL COMP JP C,ASORRY LD A,H OR A JP M,ASORRY LD A,(HL) CPL LD (HL),A LD B,(HL) CP B JP NZ,ASORRY LD (BUFEND),HL LD A,L SUB 64 LD L,A LD A,H SBC A,00 LD H,A LD (BUFFER),HL DEC HL DEC HL JP START1 ; ;CALL ; BCALL: CALL EXPR PUSH DE LD BC,HERE PUSH BC JP (HL) HERE: POP DE CALL FINI ; ;OUT ; BOUT: CALL EXPR PUSH HL CALL TSCF DB ',' DB 1AH CALL EXPR LD B,L LD A,0D3H LD (IOBUFA),A POP HL LD A,L LD (IOBUFB),A LD A,0C9H LD (IOBUFC),A LD A,B CALL IOBUFA CALL FINI JP QWHAT ; ;WAIT ; WAIT: CALL EXPR PUSH DE WAIT1: LD H,100 CALL WAIT2 DEC L JR NZ,WAIT1 POP DE CALL FINI ; ;BEEP ; BEEP: CALL EXPR PUSH DE BEEP1: EX DE,HL CALL PIP ;PIPO10 POP DE CALL FINI WAIT2: LD D,100 WAIT3: DEC D JR NZ,WAIT3 DEC H RET Z JR WAIT2 ; ;TAB ; TAB: CALL PARN A1: LD A,H OR L CALL Z,FINI DEC HL LD A,20H CALL CO JP A1 ; ;IN,INM ; BIN: CALL INEM LD L,A RET INM: CALL INEM LD L,A LD A,(MASKIN) AND L LD L,A RET INEM: CALL PARN PUSH HL LD A,0DBH LD (IOBUFA),A POP HL LD A,L LD (IOBUFB),A LD A,0C9H LD (IOBUFC),A CALL IOBUFA LD H,0 RET ; ;O$ ; O: CALL EXPR PUSH DE EX DE,HL XOR A CALL PRTSTG ZZZ4: POP DE CALL FINI ; ;I$ ; I: CALL EXPR PUSH DE EX DE,HL LD HL,(TXTUNF) EX DE,HL CALL COMP JP C,ASORRY CALL DBUFF CALL GL1 LD B,H LD C,L EX DE,HL DEC HL CALL DBUFF PUSH DE CALL MVUP XOR A LD (BC),A POP DE INC HL CALL SUBDE EX DE,HL LD HL,LEGT LD (HL),E INC HL LD (HL),D JP ZZZ4 ; ;PEEK ; PEEK: CALL PARN LD L,(HL) LD H,0 RET ; ;POKE ; POKE: CALL EXPR PUSH HL CALL TSCF DB ',' DB 9 CALL EXPR LD A,L POP HL LD (HL),A CALL FINI JP QWHAT ; ;BYTE ; BYTE: CALL PARN LD A,L CALL WRIT2 CALL FINI ; ;WORD ; WORD: CALL PARN CALL PRHL CALL FINI ; WRIT2: PUSH AF RRCA RRCA RRCA RRCA CALL IST POP AF IST: AND 0FH ADD A,90H DAA ADC A,40H DAA JP OUTC ; ;QUOTE ; QUOTE: LD A,(DE) INC DE LD L,A LD H,0 CALL TSCF DB 27H DB 1 RET JP QWHAT ; ; ; OUTCHR: CALL EXPR LD A,L CALL CO CALL FINI ; ;INCHAR ; INCHAR: CALL CI LD H,0 LD L,A RET ; ;HEX ; HEX: PUSH BC LD HL,0 CALL TSCF DB '(' DB 1DH HNXTH: LD A,(DE) CP 0DH JP Z,QWHAT CALL NIBBLE JP C,QWHAT ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL LD B,0 LD C,A ADD HL,BC INC DE CALL TSCF DB ')' DB 3 JP POPRET JP HNXTH JP QWHAT POPRET: POP BC RET ; ;TEST TLACITKA CONTROL C ; CONT: LD A,030H ;SHIFT OUT (00H),A IN A,(01H) BIT 0,A ;JE ZMACKNUT ? RET NZ LD A,0B4H ;CTRL C OUT (00H),A IN A,(01H) BIT 0,A RET NZ CALL TUK JR BREAK STOP: CALL ENDCHK BREAK: LD HL,(CURRNT) EX DE,HL CALL CRLF LD A,'*' CALL OUTC CALL PRTLN JP RSTART ; ; LOAD ; LOAD: CALL ENTFNM CALL MGIREC CALL GETMGF LD L,A CALL GETMGF LD H,A LD (TXTUNF),HL EX DE,HL LD HL,TXTBGN LOAD1: CALL COMP JP RSTART CALL GETMGF LD (HL),A INC HL JR LOAD1 ; ; SAVE ; SAVE: CALL ENTFNM CALL MGORE1 LD HL,(TXTUNF) LD A,L CALL PUTMGF LD A,H CALL PUTMGF EX DE,HL LD HL,TXTBGN SAVE1: CALL COMP JP Z,RSTART LD A,(HL) CALL PUTMGF INC HL JR SAVE1 ; ; PREPNUTI VYSTUPU NA DISPLEJ NEBO DISPLEJ + TISKARNU ; PRNTST: LD HL,COP ZZZ3: LD (CO+1),HL RET DISP: LD A,0C3H ;JMP LD (CO),A LD HL,OUTDIS JR ZZZ3 ; NULD20: LD (HL),C INC HL DEC DE LD A,D OR E JR NZ,NULD20 RET ; PRHL: LD A,H CALL WRIT2 LD A,L JP WRIT2 ; ; NIBBLE ; NIBBLE: SUB '0' RET C CP 'G'-'0' CCF RET C CP 10 CCF RET NC SUB 'A'-'9'-1 CP 10 RET ; CI ; CI: PUSH BC CALL KLIN LD A,C POP BC RET ; ; OUTDIS ; OUTDIS: PUSH AF PUSH BC LD C,A PUSH HL CALL MONTCO POP HL POP BC POP AF RET ; ; NASTAVENI ADRESY DISPLEJE ; HOME: LD HL,0FC00H LD (RADEK),HL RET ; VYSTUP NA TISKARNU ; COP: PUSH HL PUSH PSW PUSH BC LD C,A CALL PRTOUT POP BC POP PSW POP HL RET ; DW 0FFFFH DW 0FFFFH DB 'KONEC BASICU' DW 0FFFFH ; .DEPHASE ; ; ; DEFINICE RAM ; ; ORG 4000H .PHASE 4000H ; SKLEP EQU 0FBFFH PORT24: DS 1 LEGT: DS 2 IOBUFA: DS 1 IOBUFB: DS 1 IOBUFC: DS 1 LISTC: DS 1 CO: DS 3 ;OP. CODE JMP (C3)+ADR CO NEBO PRTOUT MASKIN: DS 1 CURRNT: DS 2 STKGOS: DS 2 VARNXT: DS 2 STKINP: DS 2 LOPVAR: DS 2 LOPINC: DS 2 LOPLMT: DS 2 LOPLN: DS 2 LOPPT: DS 2 RANPNT: DS 2 ARMM: DS 2 MODE: DS 1 TXTUNF: DS 2 DS 40 STKLMT: DS 2 VARBGN: DS 54 TXTEND: DS 2 BUFFER: DS 2 BUFEND: DS 2 TXTBGN: DS 2 DS 1722 TXTE: DS 2 BUFA: DS 64 BUFE: DS 1 BRST: DS 18 ; ;************************************************************** .DEPHASE END