DEVNEUASM;---------------------------------------
;Hilfsprogramme zur Erweiterung von
;	EDAS V1.4	(Modul M027)
;mit Diskettenerweiterung D004-Floppy
;
;
;	Adressen BA00 C000 BBFC
;
;
;			` ml 20.05.1991
;---------------------------------------
;*REASS		nach MP 11/1988 Seite345
;
;Das Programm gestattet das befehls-
;weise Reassemblieren von Maschinen-
;programmen in einem modifizierten
;BOTOM-Modus des EDAS.
;Aufruf: REASS adr <prologbyte> <offset>
;(00 als Prologbyte wird ignoriert !)
;
;F3	Befehl reassemblieren
;F4	Byte reassemblieren
;BRK	REASS beenden
;---------------------------------------
;*SSAVE		nach FA 5/1990 Seite 226
;
;Das Programm gestattet das selektive
;Abspeichern von Quelltextteilen auf
;Kassette (bzw. Diskette). Der abzu-
;speichernde Teil ist durch ein 'und'-
;Zeichen am Anfang und Ende auf je einer
;gesonderten Zeile vom }brigen Text zu
;isolieren. Achtung! Das 'und'-Zeichen
;darf im }brigen Text nicht enthalten
;sein (sonst erfolgt eine fehlerhafte
;Bereichsauswahl oder Programmteile wer-
;den zerst|rt!)
;---------------------------------------
;*SCL		nach FA 5/1990 Seite 226
;
;Das Programm gestattet das selektive
;L|schen von Quelltextteilen, die vorher
;wie bei SSAVE zu isolieren sind.
;---------------------------------------
;*TAPE		wie bei DEVEX.KCC
;---------------------------------------
;*DISK		wie bei DEVEX.KCC
;---------------------------------------
;*LABEL		nach MP 1/88
;
;Anzeige der Adresse einer Marke. Der
;Name der Marke ist nach Aufforderung
;einzugeben.
;---------------------------------------
;*LABLIST n	nach MP 1/88
;
;Ausgabe einer Markentabelle auf dem
;Bildschirm. Mit n kann die Anzahl der
;Marken je Zeile vorgegeben werden. Kei-
;ne Angabe erzeugt 3 Marken/Zeile.
;---------------------------------------
;*DIR		wie bei SERVICE.KCC
;---------------------------------------
;*STAT		wie bei SERVICE.KCC
;---------------------------------------
;*ERA		wie bei SERVICE.KCC
;---------------------------------------
;*SETRO		wie bei SERVICE.KCC
;---------------------------------------
;*SETWR		wie bei SERVICE.KCC
;---------------------------------------
F3	EQU 15H
F4	EQU 17H
PV1	EQU 0F003H
KBD	EQU 04H
KBDS	EQU 0CH
WAIT	EQU 14H
INLIN	EQU 17H
ERRM	EQU 19H
HLHX	EQU 1AH
AHEX	EQU 1CH
OSTR	EQU 23H
OCHR	EQU 24H
BRKT	EQU 2AH
SPACE	EQU 2BH
CRLF	EQU 2CH
MTOP	EQU 74H
MBOT	EQU 72H
ARGN	EQU 0B781H
ARG1	EQU ARGN+1
ARG2	EQU ARG1+2
ARG3	EQU ARG2+2
ARG5	EQU ARG3+4
ARG6	EQU ARG5+2
NUMVX	EQU 0B797H
WINLG	EQU 0B79EH
CURSO	EQU 0B7A0H
SUTAB	EQU 0B7B0H
HIL1	EQU 0B7FEH
HIL2	EQU HIL1+1
;-------
	ORG 0BA00H
;
;UP Anzeige der akt. Adr. (Zeile 1DH)
;
AKTADR	PUSH HL
	PUSH DE
	LD HL,(CURSO)
	PUSH HL
	LD HL,1D00H
	LD (CURSO),HL
	CALL PV1
	DEFB OSTR
	DEFM ';'
	DEFB 0
	CALL ADRO
	POP HL
	LD (CURSO),HL
	POP DE
	POP HL
	RET
;
;UP Adresse anzeigen
;
ADRO	PUSH IY
	POP DE
	LD HL,(ARG3)
	ADD HL,DE
ADR	CALL PV1
	DEFB HLHX
	CALL PV1
	DEFB OSTR
	DEFB 8
	DEFB 'H'
	DEFB 0
	RET
;
;Hauptprogramm REASS 2.1
;
	DEFW 0DDDDH
	DEFM 'REASS'
	DEFB 1
	PUSH AF
	PUSH HL
	PUSH DE
	LD HL,TABI
	LD DE,0B900H
	LD BC,TABE-TABI+1
	LDIR		;Tasteninit.
	POP DE
	POP IY		;ADR nach IY
	POP AF
	CP 3		;3 Argumente ?
	JR Z,RE0
	LD HL,0
	LD (ARG3),HL	;kein Offset
RE0	CP 1
	JP C,ERR	;kein ARG
	LD A,0
	JR Z,RE01	;ohne Prologbyte
	LD A,E
RE01	LD (ARG5),A
	LD (ARG6),A
	AND A
	JR Z,RE02	;falls Prol 00H
	LD A,1
	LD (ARG6),A	;FLAG=1:Prolog
RE02	XOR A
	LD (HIL1),A
	LD (HIL2),A
	CALL 0C50CH	;BOTOM-Modus
	CALL 0C19FH	;einstellen
	LD A,1FH
	LD (WINLG+1),A
RE1	CALL 0C8A1H
	CALL PV1
	DEFB OSTR
	DEFM ' ;ORG 0'
	DEFB 0
	CALL ADRO	;ORG-Adresse
	CALL PV1
	DEFB CRLF
RE2	CALL PV1
	DEFB KBD
	CP F3
	CALL Z,RBEF	;Befehl REASS
	CP F4
	CALL Z,RBYTE	;Byte REASS
	CP 3		;BRK
	JR NZ,RE4
RE3	CALL 0C809H
	JR NZ,RE5
	LD HL,0C0DEH	;EDAS-MENU
	EX (SP),HL
	RET		;ENDE bei BRK
;
RE4	CALL ETAST
	LD A,(4AH)
	OR A
	JR Z,RE2	;weiter
RE5	CALL 0C755H
	JR RE1
;
;UP Tastenauswertung EDAS
;
EETAS	LD A,0DH
ETAST	CALL 0C609H
	LD HL,(CURSO)
	LD (48H),HL
	RET
;
;UP einen Befehl (Kopf) reassemblieren
;
RBEF	CALL AKTADR
	PUSH IY
	POP HL
	LD A,(ARG5)
	CP M
	JR NZ,RBEF1
	INC HL
	CP M
	JR NZ,RBEF1
	LD A,(ARG6)
	CP 1		;FLAG ?
	JR Z,PROA
RBEF1	LD DE,(ARG3)	;Offset
	LD A,9
	CALL 0D727H	;reassemblieren
	LD A,0BH	;Cursor up
	CALL PV1
	DEFB OCHR
	JP REND
;
PROA	LD A,(ARG5)
	PUSH AF
	CALL PV1
	DEFB OSTR
	DEFB 9
	DEFM 'DEFW 0'
	DEFB 0
	POP AF
	LD H,A
	LD L,A
	CALL ADR
	CALL EETAS
	CALL PV1
	DEFB OSTR
	DEFB 9
	DEFM 'DEFM '
	DEFB 27H
	DEFB 0
	INC IY
	INC IY
PROAM	LD A,(IY)
	CP 1		;Epilog 01H
	JR Z,PROAE
	CP 0		;Epilog 00H
	JR Z,PROAE
	CALL PV1
	DEFB OCHR
	INC IY
	JR PROAM
PROAE	LD A,27H
	CALL PV1
	DEFB OCHR
	CALL EETAS
	JR RBYTE2
;
;Bytewieses reassemblieren von Daten
;
RBYTE	CALL AKTADR
RBYTE2	CALL PV1
	DEFB OSTR
	DEFB 9
	DEFM 'DEFB 0'
	DEFB 0
	LD A,(IY)
	PUSH AF
	CALL PV1
	DEFB AHEX
	LD A,'H'
	CALL PV1
	DEFB OCHR
	POP AF
	CP 20H
	JR C,BEND	;Steuerzeichen
	CP 7FH
	JR NC,BEND	;keine Zi,Zei,Bu
	PUSH AF
	CALL PV1
	DEFB OSTR
	DEFW 0909H
	DEFM '; '
	DEFB 0
	POP AF
	CALL PV1
	DEFB OCHR	;ASCII-Anzeige
BEND	INC IY
REND	CALL EETAS
	CALL AKTADR
	XOR A
	RET
;
TABI	DEFB 0
	DEFB 5		;EDAS F1
	DEFB 0
	DEFB 6		;EDAS F2
	DEFB 0
	DEFB F3		;REASS F3
	DEFB 0
	DEFB F4		;REASS F4
	DEFB 0
	DEFM 'CALL'	;F5
TABE	DEFB 0
;-------
;Selektives Abspeichern:
;
	DEFW 0DDDDH
	DEFM 'SSAVE'
	DEFB 1
	CALL 0C5FEH	;C-Puffer l|sch.
	CALL SEL1	;Vorbereiten
	RET Z
	PUSH DE
	LD B,H
	LD C,L
	EX DE,HL
	LD A,26H
	CPIR
	JR NZ,SS1
	LD D,H
	LD E,L
	INC DE
	INC DE
	LD (46H),DE
	CPIR
	JR NZ,SS1
	DEC HL
	LD M,3
	PUSH HL
	CALL 0C246H
	POP HL
	LD M,26H
SS1	POP HL
	LD (46H),HL
	RET
;
;Selektives L|schen:
;
	DEFW 0DDDDH
	DEFM 'SCL'
	DEFB 1
	CALL SEL1
	RET Z
	LD B,H
	LD C,L
	EX DE,HL
	LD A,26H
	CPIR
	RET NZ
	LD D,H
	LD E,L
	DEC DE
	DEC DE
	CPIR
	RET NZ
	INC HL
	EX DE,HL
	PUSH HL
	LD BC,(46H)
	SBC HL,BC
	INC HL
	LD B,H
	LD C,L
	POP HL
	JR C,SC1
	LDDR
SC1	INC DE
	LD (46H),DE
	JP 0C1B6H
;
;UP f}r selektive Programme
;
SEL1	CALL 0C227H
	CALL 0C7C2H
	LD HL,(42H)
	LD DE,(46H)
	SBC HL,DE
	RET
;-------
;DEVEX-Diskettenerweiterung
;
START	LD HL,0
	LD B,80H
DEV02	LD A,M
	CP 7FH		;Test Prolog?
	INC HL
	JR Z,DEV01
	DJNZ DEV02
	JR DEV03
DEV01	LD M,0		;L|schen
DEV03	LD HL,(SUTAB)
	LD (SUBALT),HL	;merken SUTAB
	LD DE,SUBNEU
	LD (SUTAB),DE
	LD BC,SUBEND-SUBNEU
	LDIR
	LD HL,MBO	;MBO neu
	LD (SUBNEU+2),HL
	LD HL,MBI	;MBI neu
	LD (SUBNEU+10),HL
	LD HL,STAB	;ISRO-CSRI neu
	LD DE,SUBNEU+16
	LD C,8
	LDIR
	RET
;
STAB	DEFW ISRO
	DEFW CSRO
	DEFW ISRI
	DEFW CSRI
;-------
	DEFW 0DDDDH
	DEFM 'TAPE'
	DEFB 1
	JR DEV04
	DEFW 07F7FH
	DEFM 'TAPE'
	DEFB 1
DEV04	LD HL,(SUBALT)	;SUTAB alt
DEV06	LD (SUTAB),HL
	RET
;-------
	DEFW 0DDDDH
	DEFM 'DISK'
	DEFB 1
	JR DEV05
	DEFW 07F7FH
	DEFM 'DISK'
	DEFB 1
DEV05	LD HL,SUBNEU	;SUTAB neu
	JR DEV06
;-------
ISRO	LD (IX+2),0	;Blocknr.
	LD L,(IX+5)
	LD H,(IX+6)	;Blockpuffer
	LD E,11		;Anzahl
	CALL NAM1	;Name ausgeben
	LD D,11		;write open
DEV10	INC (IX+2)	;N{chster Bl.
	LD H,(IX+6)
	LD L,(IX+5)
	LD BC,81F2H	;Sektorpuffer
	LD E,80H	;Blockl{nge
DEV08	OUTI
	INC B
	INC B
	DEC E
	JR NZ,DEV08
DEV11	LD A,D		;Steuerbyte
	JP STEUER
;-------
MBO	LD D,3		;write normal
	JR DEV10
;-------
CSRO	CALL MBO
	RET C		;bei Fehler
	LD D,43H	;write close
	LD (IX+5),0
	LD (IX+6),0B7H
	JR DEV11
;-------
ISRI	LD (IX+2),0
	POP DE
	POP HL		;Name
	PUSH HL
	PUSH DE
	LD D,9		;read open
	LD E,11		;L{nge Name
	CALL NAM1	;Name ausgeben
	PUSH DE
	JR DEV13
;-------
MBI	PUSH DE
	LD D,1		;read normal
DEV13	CALL DEV11	;Steuerbyte
	POP DE
	RET C		;bei Fehler
	PUSH DE
	PUSH HL
	PUSH AF
	LD L,(IX+5)
	LD H,(IX+6)	;Puffer
	LD BC,80F2H
	LD E,80H	;L{nge
DEV14	INI
	INC B
	INC B
	DEC E
	JR NZ,DEV14	;Block lesen
	INC (IX+2)	;Blocknr.
	POP AF
	POP HL
	POP DE
	RET
;-------
CSRI	CALL PV1
	DEFB CRLF
	RET
;-----------------------
SUBALT	DEFW 0FBA8H	;SUTAB ALT
SUBNEU	DEFW 0E329H	;CRT
	DEFW MBO
	DEFW 0B7BDH	;UOT1
	DEFW 0B7C3H	;UOT2
	DEFW 0F238H	;KBD
	DEFW MBI
	DEFW 0B7C0H	;USIN1
	DEFW 0B7C6H	;USIN2
	DEFW ISRO
	DEFW CSRO
	DEFW ISRI
	DEFW CSRI
	DEFW 0E3CAH	;KBDS
	DEFW 0F0F6H	;BYE
	DEFW 0E3D5H	;KBDZ
	DEFW 0F621H	;COLOR
	DEFW 0F577H	;LOAD
	DEFW 0F56AH	;VERIF
	DEFW 0F17EH	;LOOP
	DEFW 0F1FAH	;NORM
	DEFW 0F1E0H	;WAIT
	DEFW 0F4EBH	;LARG
	DEFW 0F217H	;INTB
	DEFW 0F334H	;INLIN
	DEFW 0F392H	;RHEX
	DEFW 0F361H	;ERRM
	DEFW 0F354H	;HLHX
	DEFW 0F389H	;HLDE
	DEFW 0F376H	;AHEX
	DEFW 0F1B1H	;ZSUCH
	DEFW 0F200H	;SOUT
	DEFW 0F20DH	;SIN
	DEFW 0F1FDH	;NOUT
	DEFW 0F20AH	;NIN
	DEFW 0F3C7H	;GARG
	DEFW 0F1EEH	;OSTR
	DEFW 0F21DH	;OCHR
	DEFW 0F74AH	;CUCP
	DEFW 0E404H	;MODU
	DEFW 0E49BH	;JUMP
	DEFW 0E316H	;LDMA
	DEFW 0E318H	;LDAM
	DEFW 0E3DEH	;BRKT
	DEFW 0F35CH	;SPACE
	DEFW 0F36BH	;CRLF
	DEFW 0F372H	;HOME
	DEFW 0F65AH	;MODI
	DEFW 0F771H	;PUDE
	DEFW 0F760H	;PUSE
	DEFW 0F40BH	;SIXD
	DEFW 0E06AH	;DABR
	DEFW 0E05EH	;TCIF
	DEFW 0E04EH	;PADR
	DEFW 0F925H	;TON
	DEFW 0F4A5H	;SAVE
	DEFW 0F873H	;MBIN
	DEFW 0F86BH	;MBOUT
	DEFW 0F6E2H	;KEY
	DEFW 0F741H	;KEYLI
	DEFW 0F641H	;DISP
	DEFW 0F694H	;WININ
	DEFW 0F69EH	;WINAK
	DEFW 0F863H	;LINE
	DEFW 0F77AH	;CIRCLE
	DEFW 0FB81H	;SQR
	DEFW 0FB79H	;MULT
	DEFW 0F62AH	;CSTB
	DEFW 0F451H	;INIEA
	DEFW 0F45AH	;INIME
	DEFW 0F91CH	;ZKOUT
	DEFW 0F147H	;MENU
	DEFW 0F9CFH	;V24OUT
	DEFW 0F9F3H	;V24DUP
SUBEND
;--------------------
;
;Anzeige einer Marke
;
	DEFW 0DDDDH
	DEFM 'LABEL'
	DEFB 1
	CALL NAMIN	;Name eingeben
	EX DE,HL	;DE=Name
	LD HL,(MTOP)	;HL=TOP
	LD BC,(MBOT)	;BC=BOT
	PUSH DE
	JR LA0
;
LA5	PUSH DE
LA1	LD A,M		;Markenspeicher
	INC HL
	PUSH HL
	AND A
	SBC HL,BC	;Test auf Ende
	POP HL
	JR NC,LA2
	CP 0AH		;Trennzeichen
	JR NZ,LA1	;Adresse ?
LA0	PUSH HL
LA3	LD A,(DE)	;Vergleichskette
	CP M
	JR NZ,LA4	;falsch
	INC HL
	INC DE
	LD A,M
	CP ':'		;Trennnzeichen?
	JR NZ,LA3
	LD A,(DE)	;Ende der
	AND A		;Vergleichskette
	JR Z,LA7	;00 oder Space
	CP 20H
	JR NZ,LA4
LA7	POP HL
	DEC HL
	DEC HL
	LD E,M		;Adresse Low
	DEC HL
	LD L,M		;	 high
	LD H,E
	CALL PV1
	DEFB HLHX
LA6	POP DE
	CALL PV1
	DEFB CRLF
	RET
LA4	POP HL
	POP DE
	JR LA5		;weiter suchen
LA2	CALL PV1
	DEFB OSTR
	DEFM 'NOT FOUND'
	DEFB 0
	JR LA6		;beenden
;-------
;Ausgabe Markentabelle
;
	DEFW 0DDDDH
	DEFM 'LABLIST'
	DEFB 1
	LD A,(ARGN)	;ARG vorhanden?
	AND A
	LD A,3		;kein ARG ->3
	JR NZ,LL6	;Marken/Zeile
	LD (ARG1),A
LL6	LD HL,(MBOT)
	LD DE,(MTOP)
	SBC HL,DE
	JP C,ERR
	EX DE,HL	;HL=MTOP
LL2	LD A,(ARG1)
	LD B,A		;Anzahl Marken
LL1	LD E,M		;Adresse Low
	INC HL
	LD D,M		;	 high
	INC HL
	INC HL		;}berlesen 0AH
	EX DE,HL
	CALL PV1
	DEFB HLHX	;Adresse
	LD C,0		;L{nge=0
	EX DE,HL
LL3	LD A,M
	CALL PV1
	DEFB OCHR
	INC C		;L{nge+1
	INC HL
	LD A,M
	CP ':'		;Markenende
	JR NZ,LL3
	INC HL
	LD A,8
	SUB C		;Ausgabe SPC
	LD C,A		;bis Position
LL7	CALL PV1	;Markenanfang+8
	DEFB SPACE
	DEC C
	JR NZ,LL7
	AND A
	PUSH HL
	PUSH BC
	LD BC,(MBOT)	;Markentab-Ende
	SBC HL,BC	;erreicht?
	POP BC
	POP HL
	JR NC,LLE	;Ende erreicht
	DJNZ LL1	;Zeile fertig
	CALL PV1	;schreiben
	DEFB CRLF
	CALL PV1
	DEFB KBDS
	JR NC,LL2	;keine Taste
STP	CP 3
	JR Z,LLE	;BRK
	CP 13H
	JR NZ,LL2	;nicht STOP
	PUSH HL
	CALL PV1
	DEFB KBD
	POP HL
	JR STP
LLE	CALL PV1
	DEFB CRLF
	RET		;ENDE
;-------
;SERVICE-Programme
;
	DEFW 7F7FH
	DEFM 'FLOAD'
	DEFB 1
	CALL NAME
FLO	EX (SP),HL
	LD (NUMVX),HL
	EX (SP),HL
	LD A,9		;Lesen open
	CALL STEUER
	JR C,ERROR	;Fehler
	LD BC,90F2H
	IN A,(C)	;ARGN
	CP 2
	JP C,ERR	;wenn<2
	CP 10
	JP NC,ERR	;wenn>10
	INC B
	IN L,(C)
	INC B
	IN H,(C)	;HL=Ladeadr
	INC B
	IN E,(C)
	INC B
	IN D,(C)	;DE=Endadr
	CP 3
	JR C,NST1	;keine Startadr
	PUSH HL
	INC B
	IN L,(C)
	INC B
	IN H,(C)	;Startadr
	EX (SP),HL
NST1	PUSH AF
	LD A,(ARGN)
	AND A
	JR Z,NOFF	;ohne Offset
	LD BC,(ARG1)	;Offset
	ADD HL,BC
	POP AF
	JR C,NST2	;keine Startadr
	EX (SP),HL
	ADD HL,BC
	EX (SP),HL
NST2	EX DE,HL
	ADD HL,BC
	EX DE,HL
	PUSH AF
NOFF	POP AF
LST	LD A,1		;Lesen normal
	CALL STEUER
	JR Z,LOAD
ERROR	POP HL
	LD HL,(NUMVX)
	PUSH HL
	RET
;-------
LOAD	DEC C
LOA	INI
	INC B
	INC B
	PUSH HL
	SBC HL,DE
	POP HL
	RET NC		;wenn ENDE
	LD A,B
	AND A
	JR NZ,LOA
	JR LST
;-------------------
	DEFW 7F7FH
	DEFM 'FSAVE'
	DEFB 1
	CALL NAME
FSA	LD A,(ARGN)
	CP 2
	JP C,ERR	;wenn<2
	LD HL,ARGN
	LD DE,0B0BH	;Schreib open
	LD BC,91F2H
SAVE	OUTI
	INC B
	INC B
	DEC E
	JR NZ,SAVE
	LD A,D
	CALL STEUER
	RET C		;Fehler
	LD A,0
	LD (ARGN),A
	LD BC,81F2H
	BIT 3,D
	JR Z,SOPE	;wenn open
	LD HL,(ARG1)
SOPE	PUSH HL
	LD DE,(ARG2)
	AND A
	SBC HL,DE
	POP HL
	LD BC,81F2H
	LD DE,0380H	;Schreib normal
	JR NC,SCLO
	JR SAVE
SCLO	LD A,43H	;Schreib close
	JP STEUER
;-------------------
	DEFW 0DDDDH
	DEFM 'DIR'
	DEFB 1
	JR DIR
	DEFW 7F7FH
	DEFM 'DIR'
	DEFB 1
DIR	LD A,0DH	;Directory open
WDI	CALL STEUER
	RET C		;Fehler
	BIT 2,A		;Ende
	RET NZ
	LD E,38
	CALL ANZ
	LD A,05H	;Dir weiter
	JR WDI
;-------------------
	DEFW 0DDDDH
	DEFM 'STAT'
	DEFB 1
	JR STAT
	DEFW 7F7FH
	DEFM 'STAT'
	DEFB 1
STAT	LD A,15H	;Status
	CALL STEUER
	RET C		;Fehler
	LD E,20
ANZ	LD B,82H
ANZW	IN A,(C)
	INC B
	PUSH DE
	PUSH BC
	CALL PV1
	DEFB OCHR
	POP BC
	POP DE
	DEC E
	JR NZ,ANZW
	RET
;-------------------
	DEFW 7F7FH
	DEFM 'REN'
	DEFB 1
REN	CALL NAME
	LD A,29H	;Ren old
	CALL STEUER
	RET C		;Fehler
	CALL NAME
	LD A,21H	;Ren new
	JP STEUER
;-------------------
	DEFW 0DDDDH
	DEFM 'ERA'
	DEFB 1
	JR ERA
	DEFW 7F7FH
	DEFM 'ERA'
	DEFB 1
ERA	CALL NAME
	LD A,11H	;Era
	JP STEUER
;-------------------
	DEFW 0DDDDH
	DEFM 'SETRO'
	DEFB 1
	JR SETRO
	DEFW 7F7FH
	DEFM 'SETRO'
	DEFB 1
SETRO	CALL NAME
	LD A,25H	;Setro
	JP STEUER
;-------------------
	DEFW 0DDDDH
	DEFM 'SETWR'
	DEFB 1
	JR SETWR
	DEFW 7F7FH
	DEFM 'SETWR'
	DEFB 1
SETWR	CALL NAME
	LD A,31H	;Setwr
	JP STEUER
;-------
NAMIN	CALL PV1
	DEFB OSTR
	DEFM 'Name :'
	DEFB 0
	CALL PV1
	DEFB INLIN
	LD HL,6
	ADD HL,DE
	RET
;-------
NAME	CALL NAMIN
NAMOUT	LD E,12
NAM1	LD BC,83F3H	;Namenpuffer
NAM2	OUTI
	INC B
	INC B
	DEC E
	JR NZ,NAM2
	RET
;-------
STEUER	LD BC,80F3H
	OUT (C),A	;Steuerbyte
STEU	PUSH BC
	LD A,1
	CALL PV1
	DEFB WAIT
	POP BC
	IN A,(C)
	BIT 0,A
	JR NZ,STEU	;fertig ?
	AND A		;CY=0
	BIT 7,A
	RET Z		;kein Fehler
	INC B
	IN A,(C)	;Fehlernr.
	CALL PV1
	DEFB AHEX
ERR	CALL PV1
	DEFB ERRM
	SCF		;CY=1
	RET
;-------
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ