Verwendete IO-Ports bzw. Hardware:
;******************************
;* BETRIEBSSYSTEM FÜR Z 1013 *
;* VERSION 1.2, (Anweisungen) *
;* DIRK AMBRAS , 23.11.1989 *
;******************************
;
ORG 09000H
CAOS: EQU 08000H
PRNST: EQU CAOS+3
PRKEY: EQU CAOS+6
PKEY: EQU CAOS+9
ERR1: EQU CAOS+12
ZLEN: EQU CAOS+15
;
BSST: EQU 0EB00H
JPM: EQU BSST+0FFH
AME: EQU BSST
DATA: EQU BSST+1
HLM: EQU 01BH
DEM: EQU 01DH
BCM: EQU 023H
MEMA: EQU BSST+16
MEMHL: EQU BSST+17
MEMDE: EQU BSST+19
FLAG: EQU BSST+21
MEBL: EQU BSST+22
KEYTA: EQU BSST+23
R20: EQU 0F0E8H
R38: EQU 0F058H
FKZ: EQU 18
STM: EQU 06DH
PDR: EQU 050H
PFL: EQU 052H
;
KEYM1: DB 'KEY '
DB 0
KEYM2: DB ' : '
DB 0
DB STM,STM
DB 'ldir'
DB 1
CMP 3
JPC ERR1
LDIR
RET
;
DB STM,STM
DB 'exit'
DB 1
LD A,0BBH
LD (JPM),A
LD HL,R20
LD (021H),HL
LD HL,R38
LD (039H),HL
JMP R38
;
DB STM,STM
DB 'prolog'
DB 1
LD A,L
LD (MEBL),A
RET
;
DB STM,STM
DB 'big'
DB 1
LD A,(FLAG)
XOR 1
MSE: LD (FLAG),A
RET
;
DB STM,STM
DB 'little'
DB 1
LD A,(FLAG)
XOR 2
JR MSE-#
;
DB STM,STM
DB 'begin'
DB 1
LD A,(FLAG)
XOR 4
JR MSE-#
;
DB STM,STM
DB 'typ'
DB 1
LD A,(FLAG)
XOR 8
JR MSE-#
;
DB STM,STM
DB 'new'
DB 1
LD HL,CAOS
LD DE,129
SBC HL,DE
LD B,H
LD C,L
LD H,D
LD L,E
DEC HL
LD M,0
LDIR
JMP CAOS
;
DB STM,STM
DB 'JUMP'
DB 1
CMP 1
JPNZ ERR1
JMP M
;
DB STM,STM
DB 'SAVE'
DB 1
LD A,0
LD IY,0
JMP 0E006H
;
DB STM,STM
DB 'LOAD'
DB 1
LD IY,0
JMP 0E003H
;
MTEXT: DB 32,8,8,8,0
SPHL: EQU DATA+12
DB STM,STM
DB 'MODIFY'
DB 1
MODIF: LD (SPHL),HL
RST 020H
DB 7
RST 020H
DB 14
LD A,M
RST 020H
DB 6
LD DE,MTEXT
CALL PRNST
RST 020H
DB 16
LD DE,(DATA+14)
RST 020H
DB 3
JRNC MSUCH-#
MERR: CALL ERR1
LD HL,(SPHL)
JR MODIF-#
MSUCH: INC DE
MS2: LD (SPHL),HL
RST 020H
DB 3
JRC FME-#
CMP 3
JRNC MERR-#
LD A,L
LD HL,(SPHL)
MSET: LD M,A
INC HL
JR MSUCH-#
FME: LD HL,(SPHL)
LD A,(DE)
CMP '.'
RZ
CMP 027H
JRZ STRG-#
CMP '/'
JRNZ MODIF-#
INC DE
RST 020H
DB 3
JRC MERR-#
JR MODIF-#
STRG: INC DE
LD A,(DE)
CMP 32
JRZ MSUCH-#
LD M,A
INC HL
JR STRG-#
;
MODDI: LD HL,(MEMHL)
LD A,11
RST 020H
DB 0
JR MODIF-#
DB STM,STM
DB 'DISPLAY'
DB 1
CMP 1
JRNZ NSDE-#
INC A
LD DE,0FFFFH
NSDE: CMP 3
JRNC SWJ-#
LD C,4
SWJ: CMP 4
JRC DP4-#
LD A,(DATA+6)
LD B,A
JR DIS3-#
DP4: PUSH BC
CALL ZLEN
LD A,C
POP BC
CMP 32
JRZ KLB-#
LD B,8
JR DIS3-#
KLB: LD B,6
DIS3: LD (SPHL),BC
DIS4: LD A,(DATA+13)
LD B,A
DIS5: PUSH BC
RST 020H
DB 7
RST 020H
DB 14
PUSH HL
DIS2: LD A,M
RST 020H
DB 6
RST 020H
DB 14
INC HL
DJNZ DIS2-#
RST 020H
DB 14
POP HL
POP BC
LD (MEMHL),HL
DZE2: LD A,M
CALL PKEY
INC HL
DJNZ DZE2-#
RST 020H
DB 2,09EH
PUSH DE
EX DE,HL
SBC HL,DE
EX DE,HL
POP DE
RC
DEC C
JRNZ DIS4-#
RST 020H
DB 1
CMP 3
RZ
CMP 013H
JRZ MODDI-#
LD BC,(SPHL)
JR DIS5-#
SKEY: LD HL,KEYTA
LD C,0FFH
SK1: LD A,B
CMP 1
JRZ TKEY-#
XOR A
CPIR
DJNZ SK1-#
TKEY: LD DE,JPM-2
EX DE,HL
DEC A
SBC HL,DE
RET
;
DB STM,STM
DB 'TFIND'
DB 1
CMP 1
JRNZ TFC-#
LD DE,0FFFFH
LD (01DH),DE
TFC: RST 020H
DB 2
DB 'TEXT :'
DB 0A0H
RST 020H
DB 16
RST 020H
DB 2,082H
LD HL,(01BH)
FTF: LD DE,(016H)
LD B,0
LD (023H),HL
TPF: LD A,(DE)
CMP 32
JRZ TFOU-#
CMP M
JRNZ TPF2-#
INC HL
INC DE
INC B
JR FTF-#
TPF2: INC HL
PUSH HL
PUSH DE
LD DE,(01DH)
OR A
SBC HL,DE
POP DE
POP HL
JRNC TFE-#
JR TPF-#
TFE: RST 020H
DB 7
RET
TFOU: LD A,B
OR A
RZ
LD HL,(023H)
RST 020H
DB 7
RST 020H
DB 14
INC HL
JR FTF-#
;
DB STM,STM
DB 'COMPARE'
DB 1
CMP 3
JRNC COMP-#
LD BC,0
COMP: LD A,(DE)
CMP M
JRNZ UGL-#
GOCO: DEC BC
INC HL
INC DE
LD A,B
OR C
RZ
JR COMP-#
UGL: RST 020H
DB 7
RST 020H
DB 14
LD A,M
RST 020H
DB 6
RST 020H
DB 2
DB ' :'
DB 0A0H
EX DE,HL
RST 020H
DB 7
RST 020H
DB 14
EX DE,HL
LD A,(DE)
RST 020H
DB 6
RST 020H
DB 2,08DH
RST 020H
DB 1
CMP 13
RNZ
JR GOCO-#
;
DB STM,STM
DB 'KEY'
DB 1
LD A,L
OR A
JPZ ERR1
LD B,0
KWA: INC B
DEC A
DAA
JRNZ KWA-#
LD A,B
CMP FKZ+1
JPNC ERR1
CALL SKEY
EX DE,HL
LD (DATA+10),HL
CPIR
LD (SPHL),HL
LD B,FKZ+1
CALL SKEY
RC
LD A,L
PUSH AF
LD DE,(DATA+10)
PUSH DE
CALL PRKEY
LD HL,(SPHL)
POP DE
SBC HL,DE
DEC L
POP AF
ADD L
LD (DATA+9),A
BBY: RST 020H
DB 1
CMP 3
JRZ KEND-#
CMP 1
JRZ KCLR-#
LD C,A
LD A,(DATA+9)
CMP L
JRZ BBY-#
INC L
LD A,C
CALL PKEY
JR BBY-#
KCLR: LD A,L
OR A
JRZ BBY-#
RST 020H
DB 2,081H
DEC L
JR BBY-#
KEND: LD E,L
LD D,0
LD HL,(02BH)
LD M,0
SBC HL,DE
EX DE,HL
LD HL,(DATA+10)
KMEM: LD A,(DE)
LD B,M
LD M,A
OR A
JRZ KLDD-#
LD A,B
OR A
JRZ KLDI-#
INC DE
INC HL
JR KMEM-#
KLDD: LD A,B
OR A
JRZ KEE1-#
PUSH HL
LD HL,JPM-2
LD DE,(SPHL)
DEC DE
SBC HL,DE
LD B,H
LD C,L
EX DE,HL
POP DE
LDIR
KEE1: RST 020H
DB 2,09EH
RET
KLDI: LD C,L
LD HL,JPM-3
KI2: LD B,M
INC HL
LD M,B
DEC HL
DEC HL
LD A,C
CMP L
JRNZ KI2-#
INC HL
LD M,0
DEC HL
JR KMEM-#
;
DB STM,STM
DB 'KEYLIST'
DB 1
KEYLI: LD B,1
LD A,B
LD DE,KEYTA
KL2: PUSH AF
PUSH DE
LD DE,KEYM1
CALL PRNST
LD A,B
RST 020H
DB 6
LD DE,KEYM2
CALL PRNST
POP DE
LD C,0
CALL PRKEY
PUSH DE
LD A,C
AND A
JRZ DZEI-#
RST 020H
DB 2,09EH
DZR: POP DE
INC DE
LD A,B
INC A
DAA
LD B,A
POP AF
INC A
CMP FKZ+1
JRC KL2-#
RET
DZEI: LD A,2
RST 020H
DB 0
JR DZR-#
;
DB STM,STM
DB 'inp'
DB 1
LD C,L
UPIN: IN A
RST 020H
DB 6
RST 020H
DB 2,09EH
RET
;
DB STM,STM
DB 'out'
DB 1
LD C,L
OUT E
JR UPIN-#
END
;
END
;
DB STM,STM
DB 'CFIND'
DB 1
CMP 1
JRNZ CFC-#
LD DE,0FFFFH
LD (01DH),DE
CFC: PUSH HL
RST 020H
DB 2
DB 'CODE :'
DB 0A0H
RST 020H
DB 16
LD DE,(016H)
RST 020H
DB 3