Verwendete IO-Ports bzw. Hardware:
ähnlich [f665b6a92491f043ed4704051cfc38b1]
PN VIDEOTEXT
;
ORG 00100H
MFREE: EQU 01800H
ANZS: EQU 50
ZANF: EQU 00E00H
PDR: EQU 050H
PFL: EQU 052H
PIIC: EQU 056H
;
BEGIN: JMP ANF
JMP PGET
JMP DISP
JMP STAT
JMP CTON
JMP CTOFF
JMP PSEIT
;
JMP INIT
JMP RUFE
JMP READ
JMP SEND
ICADR: DB 022H
;
ANF: CALL INIT
CALL CTON
LD HL,LOGO
CALL SEND
MAIN: LD SP,000B0H
LD HL,R11
CALL SEND
LD HL,EVSS
CALL SEND
RST 020H
DB 2,12,13,13
DB 13,' '
DB 'Z 1013 - '
DB 'Videotext'
DB ' 1.1'
DB 13,' '
DB '*********'
DB '*********'
DB '******'
DB 13,13,13
DB ' S ... '
DB 'Lesen ein'
DB 'er Seite'
DB 13,13
DB ' U ... '
DB 'Lesen ein'
DB 'er Unter'
DB 'seite'
DB 13,13
DB ' L ... '
DB 'Laden von'
DB ' 50 Seite'
DB 'n'
DB 13,13
DB ' l ... '
DB 'Laden von'
DB ' Seiten '
DB 'maskiert'
DB 13,13
DB ' D ... '
DB 'Druck aus'
DB ' Seitensp'
DB 'eicher'
DB 13,13
DB ' T ... '
DB 'Wandeln '
DB 'in Textfi'
DB 'le'
DB 13,13
DB ' B ... '
DB 'Bildschir'
DB 'manzeige'
DB 13,13
DB ' V ... '
DB 'Druckvari'
DB 'anten'
DB 13,13
DB 08DH
TAST: RST 020H
DB 2
DB 13,13
DB ' Wahl'
DB ': >_<',8
DB 088H
NKPL: LD HL,00300H
WKEYP: RST 020H
DB 4
OR A
JRNZ KEYPR-#
DEC HL
LD A,H
OR L
JRNZ WKEYP-#
LD HL,RZ1
CALL SEND
LD HL,SPACE
LD DE,32
CALL RTXT
LD HL,SPACE
LD DE,0EC00H
LD B,32
WK3: LD A,M
CMP 32
CAC VTSTZ
LD (DE),A
INC HL
INC DE
DJNZ WK3-#
JR NKPL-#
KEYPR: CMP 3
JRNZ DM2-#
RST 020H
DB 2,08CH
RST 038H
DM2: PUSH AF
RST 020H
DB 0
RST 020H
DB 2
DB '<',13,08DH
POP AF
LD HL,TAST
PUSH HL
CMP 'S'
JPZ SEITE
CMP 'L'
JPZ LMEM
CMP 'l'
JPZ LMEM
CMP 'D'
JPZ DMEM
CMP 'B'
JPZ TVGET
CMP 'T'
JPZ ASCII
CMP 'U'
JPZ USEIT
CMP 'V'
JPZ DVAR
POP HL
JMP MAIN
;
ASCII: LD HL,MFREE
LD B,ANZS
ASCL1: CALL MKASC
DJNZ ASCL1-#
LD HL,MFREE
LD B,ANZS
ASCL2: CALL MKET
DJNZ ASCL2-#
RET
MKASC: LD D,24
MKZEA: LD E,40
MKSPA: LD A,M
CMP 32
CAC VTSTZ
LD M,A
INC HL
DEC E
JRNZ MKSPA-#
DEC D
JRNZ MKZEA-#
RET
VTSTZ: LD A,32
RET
MKET: PUSH BC
LD B,24
LD DE,40
MKEL: LD M,01EH
ADD HL,DE
DJNZ MKEL-#
POP BC
RET
SEITE: CALL ENTS
RUSS: LD HL,MFREE
CALL PGET
LD HL,MFREE
CALL DISP
RST 020H
DB 2
DB 'Drucken'
DB 0A0H
CALL ASK
CAZ PSEIT
RET
USEIT: CALL ENTS
CALL ENTU
JR RUSS-#
ENTU: RST 020H
DB 2
DB 'Sub'
DB 'seite: -'
DB 088H
LD HL,SIDE+6
LD B,1
US2: CALL ORDN
JRC US2-#
LD M,A
INC HL
ADD 030H
RST 020H
DB 0
DJNZ US2-#
RST 020H
DB 2,08DH
CALL CUS
RET
ENTS: CALL SNORM
RST 020H
DB 2
DB 'Seite:'
DB ' ---'
DB 8,8,088H
LD HL,SIDE
LD B,3
LS2: CALL ORDN
JRC LS2-#
LD M,A
INC HL
ADD 030H
RST 020H
DB 0
DJNZ LS2-#
RST 020H
DB 2
DB ' '
DB 0A0H
CALL CSI
RET
ORDN: RST 020H
DB 1
CMP '0'
RC
SUB 030H
CMP 10
CCF
RET
SNORM: LD HL,SIDE
LD B,7
CLRP: LD M,0
INC HL
DJNZ CLRP-#
JR RHOLD-#
CUS: LD HL,SIDE+3
LD B,4
CUS2: LD A,M
OR 010H
LD M,A
INC HL
DJNZ CUS2-#
CSI: LD HL,SIDE
LD B,3
CSI2: LD A,M
OR 010H
LD M,A
INC HL
DJNZ CSI2-#
RHOLD: LD A,(SIDE)
OR 8
LD (SIDE),A
RET
DMEM: CALL VFS
RST 020H
DB 2,13,13
DB 'D für Dr'
DB 'uck / T '
DB 'für TV'
DB 08DH
LD HL,(02BH)
LD (SPACE+4),HL
LD B,68
JZH: LD A,8
RST 020H
DB 0
DJNZ JZH-#
DML: RST 020H
DB 1
CMP 3
JRZ GOMM-#
CMP 13
JRZ SMPR-#
CMP 'D'
JRZ SMPR-#
CMP 'T'
JRZ SMTV-#
CMP 8
CAZ CUL
CMP 9
CAZ CUR
JR DML-#
GOMM: LD HL,(SPACE+4)
LD (02BH),HL
RET
SMPR: CALL DSFOU
JRNC DML-#
PUSH HL
CALL PSEIT
POP HL
JR SMP2-#
SMTV: CALL DSFOU
JRNC DML-#
SMP2: CALL DIHL
JR DML-#
DIHL: CALL CUR
RET
DSFOU: LD HL,(02BH)
LD DE,MFREE
LD C,ANZS
LD (SPACE+2),HL
SMPL: LD (SPACE),DE
LD HL,8
ADD HL,DE
EX DE,HL
LD HL,(SPACE+2)
LD A,(DE)
CMP M
JRNZ NSPG-#
INC DE
INC HL
LD A,(DE)
CMP M
JRNZ NSPG-#
INC DE
INC HL
LD A,(DE)
CMP M
JRNZ NSPG-#
LD HL,(SPACE)
SCF
RET
NSPG: LD DE,(SPACE)
LD HL,960
ADD HL,DE
EX DE,HL
DEC C
RZ
JR SMPL-#
CUL: PUSH AF
RST 020H
DB 2
DB 8,8,8,088H
POP AF
RET
CUR: PUSH AF
RST 020H
DB 2
DB 9,9,9,089H
POP AF
RET
VFS: RST 020H
DB 2,13
DB 'verfügba'
DB 're Seite'
DB 'n:'
DB 08DH
LD HL,MFREE
LD B,ANZS
VFSL: CALL ZNR
LD DE,960
ADD HL,DE
DJNZ VFSL-#
RET
ZNR: PUSH HL
PUSH BC
LD DE,8
ADD HL,DE
LD B,3
ZNRL: LD A,M
RST 020H
DB 0
INC HL
DJNZ ZNRL-#
RST 020H
DB 14
POP BC
POP HL
RET
LMEM: PUSH AF
CALL SNORM
POP AF
PUSH AF
CMP 'l'
CAZ MASK
CALL RHOLD
RST 020H
DB 2
DB 'Lade '
DB 'Seite '
DB '01 ...'
DB 8,8,8,8,8
DB 0B1H
POP AF
LD B,ANZS
LD C,0
LD HL,MFREE
LML: PUSH AF
PUSH BC
CMP 'L'
JRZ CLPG-#
CALL PGET
LML2: POP BC
CALL COUNT
POP AF
DJNZ LML-#
RET
CLPG: CALL LPGET
JR LML2-#
MASK: RST 020H
DB 2
DB 'Maske:'
DB 0A0H
RST 020H
DB 16
LD DE,(016H)
LD B,7
LD HL,SIDE
MAL: PUSH HL
RST 020H
DB 3
LD A,L
POP HL
LD M,A
INC HL
DJNZ MAL-#
RET
COUNT: INC C
PUSH BC
XOR A
INC C
TCAD: INC A
DAA
DEC C
JRNZ TCAD-#
PUSH AF
RST 020H
DB 2,8,088H
POP AF
RST 020H
DB 6
POP BC
RET
LPGET: PUSH HL
LD HL,R11
CALL SEND
LD HL,SSUCH
CALL SEND
FPW1: CALL ARRIV
JRNZ FPW1-#
LD HL,SREAD
CALL SEND
POP HL
LD DE,40
CALL RTXT
PUSH HL
LD HL,RARR
CALL SEND
FPW2: LD HL,ARRD
CALL SEND
CALL RR11
CMP '#'
JRZ FPW2-#
CALL CTOFF
LD HL,SRE2
CALL SEND
POP HL
LD DE,920
CALL RTXT
CALL CTON
RET
PGET: PUSH HL
LD HL,R11
CALL SEND
LD HL,SSUCH
CALL SEND
POP HL
PW1: CALL ARRIV
JRNZ PW1-#
PUSH HL
CALL W100
CALL CTOFF
LD HL,SREAD
CALL SEND
POP HL
LD DE,960
CALL RTXT
CALL CTON
RET
ARRIV: PUSH HL
RST 020H
DB 4
CMP 3
JPZ MAIN
LD HL,DARR
CALL SEND
CALL RR11
POP HL
BIT 5,A
RET
TVGET: NOP
DISP: PUSH HL
LD HL,TVD
CALL SEND
POP HL
RET
STAT: LD HL,R11B
CALL SEND
RR11: LD HL,SPACE
LD DE,1
CALL RTXT
LD HL,SPACE
LD A,M
RET
WSEC1: LD B,10
WSL: CALL W100
DJNZ WSL-#
RET
W100: LD HL,01DFDH
PAU1: DEC HL
LD A,H
OR L
JRNZ PAU1-#
RET
CTON: PUSH HL
LD HL,CON
CALL SEND
POP HL
RET
CTOFF: PUSH HL
LD HL,COFF
CALL SEND
POP HL
RET
;
; Grundroutinen für
; IIC-Steuerung
;
RUFE: LD D,0
RNXT: LD A,D
CALL START
CALL SBYTE
CAZ IDENT
CALL STOP
INC D
LD A,D
OR A
JRNZ RNXT-#
RET
RTXT: PUSH HL
LD HL,R11R
CALL SEND
POP HL
READ: CALL START
LD A,(ICADR)
INC A
CALL SBYTE
JPNZ NOIC
PUSH BC
LD B,D
LD C,E
RLP: LD D,1
DEC BC
LD A,B
OR A
JRNZ RLP2-#
LD D,C
RLP2: CALL RBYTE
LD M,A
INC HL
LD A,B
OR C
JRNZ RLP-#
POP BC
CALL STOP
RET
SEND: CALL START
LD A,(ICADR)
CALL SBYTE
JPNZ NOIC
PUSH BC
LD B,M
SLP: INC HL
LD A,M
CALL SBYTE
JPNZ ERROR
DJNZ SLP-#
POP BC
CALL STOP
RET
RBYTE: PUSH BC
LD A,2
OUT PIIC
LD B,8
RLOOP: SET 0,A
OUT PIIC
IN PIIC
BIT 3,A
SCF
JRZ RHI-#
CCF
RHI: RL C
RES 0,A
OUT PIIC
DJNZ RLOOP-#
XOR A
CMP D
JRNZ REND-#
LD A,2
REND: OUT PIIC
SET 0,A
OUT PIIC
RES 0,A
OUT PIIC
SET 1,A
OUT PIIC
LD A,C
POP BC
RET
SBYTE: PUSH BC
LD B,8
LD C,A
XOR A
SLOOP: SET 1,A
RLC C
JRC SHI-#
RES 1,A
SHI: OUT PIIC
SET 0,A
OUT PIIC
RES 0,A
OUT PIIC
DJNZ SLOOP-#
POP BC
SET 1,A
OUT PIIC
SET 0,A
OUT PIIC
IN PIIC
CPL
BIT 3,A
CPL
RES 0,A
OUT PIIC
RET
START: PUSH AF
LD A,1
OUT PIIC
XOR A
OUT PIIC
POP AF
RET
STOP: PUSH AF
XOR A
OUT PIIC
OR 1
OUT PIIC
OR 3
OUT PIIC
POP AF
RET
INIT: LD A,0FFH
OUT PIIC
OUT PIIC+1
LD A,0FCH
OUT PIIC+1
CALL STOP
RET
PRHL: PUSH AF
PR2: LD A,M
OR A
JRZ PRE-#
CMP 32
JRNC PR3-#
LD A,32
PR3: RST 020H
DB 0
INC HL
JR PR2-#
PRE: POP AF
RET
ERROR: RST 020H
DB 2
DB 13
DB 'Fehler.'
DB 08DH
CALL STOP
RST 038H
NOIC: LD A,(ICADR)
LD D,A
CALL IDM
RST 020H
DB 2
DB 'nicht.'
DB 08DH
CALL STOP
RST 038H
IDENT: CALL IDM
RST 020H
DB 2,8
DB '.',08DH
RET
IDM: CALL NAME
RST 020H
DB 2
DB ' meldet'
DB ' sich'
DB 0A0H
RET
NAME: RST 020H
DB 2
DB 'IC'
DB 0A0H
LD A,D
RST 020H
DB 6
RET
;
; Grundroutinen für
; Druckerausgabe
;
DVAR: LD B,0
RST 020H
DB 2
DB 'Vollgraf'
DB 'ik '
DB 0A0H
CALL ASK
JRZ DRVG-#
LD B,1
DRVG: RST 020H
DB 2
DB 'alle Zei'
DB 'chen'
DB 0A0H
CALL ASK
LD A,B
JRNZ DRCD-#
OR 2
DRCD: LD (DROPT),A
RET
ASK: RST 020H
DB 2
DB ' (J)/N :'
DB 0A0H
RST 020H
DB 1
CMP 'J'
JRZ MAY-#
CMP 'j'
JRZ MAY-#
LD A,'N'
MAY: PUSH AF
RST 020H
DB 0
RST 020H
DB 2,08DH
POP AF
RET
PSEIT: PUSH HL
LD HL,PENT
LD B,3
CALL PGIVE
POP HL
LD B,24
NXZ: PUSH BC
CALL PZEIL
POP BC
RST 020H
DB 4
CMP 3
RZ
DJNZ NXZ-#
CALL LFPR
JR LFPR-#
PZEIL: LD A,(DROPT)
BIT 0,A
JRNZ PZNZ-#
PUSH HL
LD HL,CVGA
LD B,5
CALL PGIVE
POP HL
PZNZ: XOR A
LD (STRG),A
LD (HFA),A
LD A,7
LD (VFA),A
LD B,40
PLOP: LD A,M
CALL VGRA
INC HL
DJNZ PLOP-#
LD A,13
CALL POUT
LFPR: LD A,10
CALL POUT
RET
VGRA: PUSH HL
PUSH DE
PUSH BC
LD HL,STRG
CMP 8
CAC SASC
CMP 16
JRC SLE-#
CMP 018H
CAC SGRA
CMP 24
CAZ CONC
CMP 28
CAZ BBKG
CMP 29
CAZ FBKG
CMP 30
CAZ SHLD
CMP 31
CAZ RHLD
CMP 32
JRNC NUG-#
SLE: LD A,32
NUG: BIT 1,M
CANZ TRANS
LD (LAST),A
LD B,A
LD A,(DROPT)
BIT 1,A
JRNZ TOS-#
BIT 2,M
JRNZ NTOS-#
LD A,(VFA)
AND 00FH
LD C,A
LD A,(HFA)
AND 00FH
CMP C
JRNZ TOS-#
NTOS: LD B,32
TOS: LD A,(DROPT)
BIT 0,A
JRNZ PNZ2-#
LD HL,ZANF
LD D,0
LD E,B
SLA E
RL D
SLA E
RL D
SLA E
RL D
ADD HL,DE
LD B,8
CALL PGIVE
PPOP: POP BC
POP DE
POP HL
RET
PNZ2: LD A,B
CALL POUT
JR PPOP-#
TRANS: LD B,A
LD A,(DROPT)
BIT 0,A
JRNZ TSPC-#
LD A,B
CMP 040H
JRNC GR40-#
ADD 080H
RET
GR40: CMP 060H
RC
CMP 080H
RNC
SUB 060H
RET
TSPC: LD A,32
RET
SHLD: SET 0,M
RET
RHLD: RES 0,M
RET
SASC: RES 1,M
RES 2,M
LD (VFA),A
RET
SGRA: SET 1,M
RES 2,M
LD (VFA),A
BIT 0,M
RZ
LD A,(LAST)
RET
BBKG: XOR A
LD (HFA),A
RET
FBKG: LD A,(VFA)
LD (HFA),A
RET
CONC: SET 2,M
RET
PGIVE: LD A,M
CALL POUT
INC HL
DJNZ PGIVE-#
RET
POUT: PUSH AF
OUT PDR
PRL: IN PFL
BIT 0,A
JRNZ PRL-#
POP AF
RET
PENT: DB 27,'3',24
CVGA: DB 27,'*',5
DA 320
VFA: DB 0
HFA: DB 0
LAST: DB 0
STRG: DB 0
DROPT: DB 0
R11: DB 2,0,0
R11B: DB 2,0,3
R11R: DB 1,11
CON: DB 2,1,4
COFF: DB 2,1,36
UHR: DB 4,8,0,0,32
RZ1: DB 4,8,0,0,8
SSUCH: DB 9,2,0
SIDE: DB 8,0,0
USM: DB 0,0,0,0
EVSS: DB 9,2,0
DB 019H,010H,015H
DB 010H,011H,0,0
SREAD: DB 4,8,0
DB 0,0
SRE2: DB 4,8,0
DB 1,0
DARR: DB 4,8,0
DB 25,9
RARR: DB 7,8,0
DB 0,7
DB '###'
ARRD: DB 4,8,0
DB 0,8
SZ25: DB 4,8,0
DB 25,0
TVD: DB 5,4
TVDS: DB 0
TVDM: DB 0AAH,0AAH
DB 7
LOGO: DB 11,8,0
DB 0,0
DB 3,'*Z-VT*'
;
SPACE: DB 0
END
;
END
Kopf für Endfassung:
PN VIDEOTEXT
;
ORG 00100H
MFREE: EQU 01800H
ANZS: EQU 50
ZANF: EQU 00E00H
PDR: EQU 050H
Hardware-Anschluß:
Pin 0: SCL out
Pin 1: SDA out
Pin 2: SCL in
Pin 3: SDA in
erste Meldungen des SAA 5243
(022H) am 16.9.93 !