EP2ASM;
;UNTERPROGRAMM "DISPLAY"
;
;GESTATTET DAS DARSTELLEN HEXADEZIMALER,
;2 STELLIGER ZIFFERNFOLGEN UND DEREN
;UEBERSETZUNG IN DEN ASCII-CODE.
;DIE DARSTELLUNG DER ZIFFERNFOLGEN KANN
;AUS DEM EPROM ODER RAM-BEREICH ERFOLGEN
;WAEHREND DIE EPROM-DISPLAY-FUNKTION
;NUR ANGEZEIGT WERDEN KANN, GESTATTET
;DIE RAM-DISPLAY-FUNKTION AUCH EINE AEN-
;DERU^G DES ANGEZEIGTEN INFORMATIONGE-
;HALTES. HIERZU IST DIE TASTE "stop" ZU
;BETAETIGEN UND DER KURSOR SPRINGT IN
;DIE GRUNDEINGABESTELLUNG. MIT DEN CUR-
;SOR-TASTEN UND DER TASTE "enter" KANN
;DER CURSOR AUF DIE GEWUENSCHTE EINGA-
;POSITION BEWEGT WERDEN. EIN ZEILENAB-
;SCHLUSS DURCH BETAETIGEN DER TASTE
;"enter" IST nicht ERFORDERLICH.
;DER ABSCHLUSS DER EINGABE ERFOLGT MIT
;DER TASTE "break", DURCH DEREN BETAETI-
;GUNG EBENFALLS DIE BESTAETIGUNG DER
;EINGABE ERFOLGT.
;
;
DISPLAY LD A,6		;FARBE SW,GE
	LD CO,A
	CALL FA1000
	CALL DA10
	CALL UP
	DEFB 23H
	DEFM 'RAM/ROM:'
	DEFB 0
DDANF	LD HL,1115H
	LD FA,HL
	LD HL,103H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 17H
	LD DE,(0B7A0H)
	CALL UP
	DEFB 32H
	LD A,(HL)
	CP 52H		;EINGABEFEHLER ?
	JR NZ DDANF	;WENN JA
	INC HL
	LD A,(HL)
	CP 41H		;DISPLAY-RAM ?
	JP Z DRAM	;WENN JA
	CP 4FH		;DISPLAY-ROM ?
	JP Z DROM	;WENN JA
	JR DDANF
;
;
;UNTERPROGRAMM "TAPE"
;
;GESTATTET DAS EINLADEN (load) UND AUS-
;LADEN (save) VON DATENBLOCKEN IM RAM-
;(UND ROM-)BEREICH MIT EINER DATENFOLGE
;BIS ZU 32 K BYTE.
;DIE PROGRAMMROUTINEN "save" UND "load"
;KOENNEN UEBER DIE TASTE "break" ABGE-
;BROCHEN WERDEN.
;
;
TAPE	LD A,6		;FARBE SW/GE
	LD CO,A
	CALL FA1000
	CALL DA11
	CALL UP
	DEFB 23H
	DEFM 'SAVE/LOAD:'
	DEFB 0
TAP	LD HL,1117H
	LD FA,HL
	LD HL,103H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 17H
	LD DE,(0B7A0H)
	CALL UP
	DEFB 32H
	LD A,(HL)
	CP 53H		; <S> ?
	JR Z TAP1	;WENN JA
	CP 4CH		; <L> ?
	JR Z TAP2	;WENN JA
	JR TAP
TAP1	INC HL
	LD A,(HL)
	CP 41H		; <A> ?
	JR Z TSA	;WENN JA
	JR TAP
TAP2	INC HL
	LD A,(HL)
	CP 4FH		; <O> ?
	JP Z TLO	;WENN JA
	JR TAP
	;
	;ROUTINE "save"
	;
TSA	CALL FA1401
	CALL DA13
	CALL FERAM	;ADRESSENEINGABE
			;TEST AUF GUEL-
			;TIGKEIT
	LD HL,1501H
	LD FA,HL
	LD HL,106H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM 'NAME:'
	DEFB 0
	LD HL,1506H
	LD FA,HL
	LD HL,109H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 17H
	LD DE,(0B7A0H)
	CALL UP
	DEFB 32H
	LD DE,0B700H	;KASSETTENPUFFER
	LD BC,8
	LDIR		;TRANSPORTIERT
	;
	;DEN PROGRAMMNAMEN IN DEN
	;KASSETTENPUFFER
	;
	CALL FA1606	;FENST>COUNTO
	CALL UP
	DEFB 23H
	DEFB 11H
	DEFB 0
	LD IY,0B700H	;PUFFERADR
	LD HL,(K16)	;LADEADR
	LD DE,(K17)	;ENDADR
	LD (IX+2),0	;COUNT=0
	LD (IY+16),2	;ARGUMENT
	LD (IY+17),L	;>B700< 18.BYTE
	LD (IY+18),H	;	19.
	LD (IY+19),E	;	20.
	LD (IY+20),D	;	21.
	LD HL,0B700H
	LD (IX+5),L
	LD (IX+6),H
	CALL UP
	DEFB 8		;"out" VORBLOCK
			;UP.8
TSA1	LD HL,(K16)	;LADEADR
	LD BC,80H	;VORTON
	LD (IX+5),L	;PA.-UEBERG.LADR
	LD (IX+6),H
	LD DE,1		;UP.-NR. LT.CAOS
	LD (K30),DE
	CALL UPINIT	;BERECHNUNG DER
			;UP.STARTADR.
	CALL IRMA
	JP K31		;UP-START
			;"out" DATA
TAPCS	CALL IRME
	PUSH HL
	CALL COUNTO	;AUSG. BLOCKNR.
	POP HL
	LD (K16),HL
	LD DE,(K17)
	CALL SAEND	;LETZTER BLOCK	?
			;(BERECHNUNG)
	JR C TSA2	;WENN JA
	CALL UP		;WENN NEIN
	DEFB 2AH	;BREAK ?
	JR C TSA2	;WENN JA
	JR TSA1		;WENN NEIN
TSA2	LD BC,80H
	LD HL,0B700H
	LD (IX+6),H
	CALL UP
	DEFB 9		;CLOSE-ROUT.
			;UP.9
	;
	;UP.ENDE FUER "save" -UND "load"
	;-ROUTINE
	;
TAPEND	LD A,6
	LD (K23),A
	CALL DEYN
TEND	CP 59H		;TASTE "Y" ?
	JP Z DEABC2	;WENN JA >MENU
	CP 4EH		;TASTE "N" ?
	JP Z TAPE	;WENN JA
	CALL DEYN
	JR TEND
	;
	;ROUTINE "load"
	;
TLO	CALL FA1401
	CALL DA12
	CALL FA1406
	LD (IX+2),0
	LD HL,0B700H	;LADEADRESSE
			;VORBLOCK
	LD (IX+5),L
	LD (IX+6),H
	CALL UP
	DEFB 0AH	;"read" VORBLOCK
			;UP.0AH
	LD HL,(0B711H)
	LD (K16),HL
	CALL UP
	DEFB 1AH	;AUSG. LADEADR
	CALL FA140D
	LD HL,(0B713H)
	LD (K17),HL
	CALL UP
	DEFB 1AH	;AUSG. ENDADR
	LD HL,1506H
	LD FA,HL
	LD HL,109H
	LD FG,HL
	LD HL,0
	LD CA,HL
	LD B,8
	LD HL,0B700H	;K.-PUFFERADR.
TLO3	LD A,(HL)
	CALL UP
	DEFB 24H	;AUSG.(NAME)
	INC HL
	DJNZ TLO3
	CALL FA1606
	;
	;DATENTRANSPORT IN DEN RAM-
	;BEREICH
	;
TLO1	LD HL,(K16)	;LADEADR
	LD (IX+5),L
	LD (IX+6),H
	LD DE,5		;UP-NR.
	LD (K30),DE
	CALL UPINIT
	CALL IRMA
	JP K31		;"read" DATENBL.
TAPCL	PUSH AF
	CALL IRME
	POP AF
	JP C TLO2	;LESEFEHLER ?
	CALL COUNTO	;AUSG. BL.-NR.
	LD HL,(K16)
	LD BC,80H	;ADD-KONST.
	ADD HL,BC
	LD (K16),HL
	LD DE,(K17)	;ENDADR
	CALL SAEND	;LETZER BLOCK ?
	JR C TLO2	;WENN JA
	CALL UP		;WENN NEIN
	DEFB 2AH	;BREAK ?
	JR C TLO2	;WENN JA
	JR TLO1		;WENN NEIN
TLO2	CALL UP
	DEFB 0BH	;CLOSE MBI
			;UP.0BH
	JP TAPEND
;
;***************************************
;
;LISTE DER UNTERPROGRAMME
;
;***************************************
;
;UP."H1"
;
;DEFINIERT EIN FENSTER UND LOESCHT DEREN
;INHALT	(STICK EPROM UND Vpp)
;
H1	LD A,3CH
	LD CO,A
	LD HL,0D00H
	LD FA,HL
	LD HL,328H
	LD FG,HL
	CALL UP
	DEFB 23H
	DEFB 0CH
	DEFB 11H
	DEFB 0
	LD HL,105H
	LD CA,HL
	RET
;
;UP."H3"
;
;REALISIERT DIE AUSGABE "EPROM-TYPE"
;UND "Vpp"
;
H3   	LD HL,116H
	LD CA,HL
	LD B,8
	LD HL,(K1)
	INC HL
	INC HL
	INC HL
	INC HL
MA12	INC HL
	LD A,(HL)
	CALL UP
	DEFB 0
	DJNZ MA12
	LD HL,11FH
	LD CA,HL
	LD B,5
	LD HL,(K7)
	INC HL
	INC HL
	INC HL
	INC HL
MA13	INC HL
	LD A,(HL)
	CALL UP
	DEFB 0
	DJNZ MA13
	RET
;
;UP."H4"
;
;REALISIERT DIE AUSGABE "STICK EPROM"
;UND DIE GRUNDINITIALISIERUNG DER
;"PIO" -BAUGRUPPE
;
H4	CALL UP
	DEFB 23H
	DEFM ' STICK EPROM  >>'
	DEFB 0
	CALL PIOINIT
	RET
;
;UP."H5"
;
;REALISIERT DIE FARBE WS/GN IM BLINKMODE
;
H5	LD A,0BCH
	LD CO,A
	RET
;
;UP."H6"
;
;REALISIERT DIE LOESCHUNG "STICK EPROM"
;
H6	CALL UP
	DEFB 23H
	DEFM '                '
	DEFB 0
	RET
;
;UP. "H7"
;
;REALISIERT DIE AUSGABE DER FARBE WS/GN
;
H7	LD A,3CH
	LD CO,A
	RET
;
;UP. "H8"
;
;REALISIERT DIE AUSGABE
;"BACKGROUND DISPLAY OF IRM"
;
H8	CALL UP
	DEFB 23H
	DEFM 'BACKGROUND '
	DEFM 'DISPLAY OF '
	DEFM 'IRM'
	DEFB 0
	RET
;
;UNTERPROGRAMME "FA..."
;>>FENSTERAUFRUF FUER AUSGABE<<
;
;
;
;UP."FA100"
;
;FENSTERAUFRUF ZUR AUSGABE DER "MENU-
;PROGRAMMUEBERSICHT"
;
FA1000	LD HL,1000H
	LD FA,HL
	LD HL,0F28H
	LD FG,HL
	CALL UP
	DEFB 23H
	DEFB 0CH
	DEFB 11H
	DEFB 0
	LD HL,100H
	LD CA,HL
	RET
;
;UP."FA1401"
;
;FENSTERAUFRUF ZUR AUSGABE "ROM:/RAM:"
;
FA1401	LD HL,1401H
	LD FA,HL
	LD HL,128H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
;
;UP."FA1406"
;
;FENSTERAUFRUF (A) ZUR AUSGABE DER
;ANFANGSADR. "RAM/ROM-BEREICH"
;
FA1406	LD HL,1406H
	LD FA,HL
	LD HL,105H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
;
;UP."FA140D"
;
;FENSTERAUFRUF (B) ZUR AUSGABE DER
;ENDADR. "RAM/ROM-BEREICH"
;
FA140D	LD HL,140DH
	LD FA,HL
	LD HL,105H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
;
;UP."FA1601"
;
;FENSTERAUFRUF ZUR AUSGABE "RAM:/ROM:"
;
FA1601	LD HL,1601H
	LD FA,HL
	LD HL,128H
	LD FG,HL
	LD HL,0
	LD CA,HL
 	RET
;
;UP."FA1606"
;
;FENSTERAUFRUF (C) ZUR AUSGABE DER
;ANFANGSADR. "RAM/ROM-BEREICH"
;
FA1606	LD HL,1606H
	LD FA,HL
	LD HL,105H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
;
;UP."FA160D"
;
;FENSTERAUFRUF (D) ZUR AUSGABE DER
;ENDADR."RAM/ROM-BEREICH"
;
FA160D	LD HL,160DH
	LD FA,HL
	LD HL,105H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
;
;
;UNTERPROGRAMME "FE..."
;>>FENSTERAUFRUF FUER EINGBE<<
;
;
FE1406	LD HL,1406H	;FENSTER A
	LD FA,HL
	LD HL,104H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
FE140D	LD HL,140DH	;FENSTER B
	LD FA,HL
	LD HL,104H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
FE1606	LD HL,1606H	;FENSTER C
	LD FA,HL
	LD HL,104H
	LD FG,HL
	LD HL,0
	LD CA,HL
	RET
;
;UP."FEROM"
;
;DATENEINGABE IM FENSTER A UND B
;UND KONTROLLE AUF GUELTIGKEIT
;FUER EPROM-BEARBEITUNG
;
FEROM	CALL FA1406
	CALL DA00
	CALL DA140DT
	CALL FE1406
	CALL DE1406
	CALL GULA
	CALL SUBTA
	CALL FE140D
	CALL DE140D
	CALL GULB
	CALL SUBTB
	CALL SUBBA
	RET
;
;UP."FERAM"
;
;DATENEINGABE IM FENSTER A UND B
;UND KONTROLLE AUF GUELTIGKEIT
;FUER RAM-BEARBEITUNG
;
FERAM	CALL FE1406
	CALL DE1406
	CALL GULA
	CALL DA140D
	CALL FE140D
	CALL DE140D
	CALL GULB
	CALL SUBBA
	RET
;
;UNTERPROGRAMME "DE..."
;>>DATENEINGABE IN FENSTER<<
;
;
DE1406	CALL 0F003H	;FENSTER A
	DEFB 4
	CP 3		;TASTE "break" ?
	JP Z DEABC2	;WENN JA >MENU
	CP 0DH		;TASTE "enter" ?
	JR Z DEA3	;WENN JA
	CALL UP
	DEFB 0
	LD A,(K35)	;ZK.TASTATUREIN-
			;EINGABE
	CALL UP
	DEFB 14H	;"wait" UP14
	JR DE1406
DEA3	LD DE,0
	CALL UP
	DEFB 32H
	LD DE,K13
	LD BC,4
	LDIR		;ABSPEICHERN
			;DER DATENFOLGE
	RET
;
DE140D	CALL UP		;FENSTER B
	DEFB 4
	CP 3		;TASTE "break" ?
	JR Z DEB2	;WENN JA
	CP 0DH
	JR Z DEB3
	CALL UP
	DEFB 0
	LD A,(K35)
	CALL UP
	DEFB 14H
	JR DE140D
DEB3	LD DE,0
	CALL UP
	DEFB 32H
	LD DE,K14
	LD BC,4
	LDIR
	RET
DEB2	EXX
	LD A,D
	CP 1		;DISP.RAM AKTIV?
	JR Z DEB1	;WENN JA
	EXX
	JP DEABC2	;WENN NEIN
	;
DEB1	LD D,0		;DISP.RAM AUS
	EXX
	LD HL,DYN	;DISP. >DEYN
	EX (SP),HL
	RET
;
DE1606	CALL UP		;FENSTER C
	DEFB 4
	CP 3
	JP Z DEABC2
	CP 0DH
	JR Z DEC3
	CALL UP
	DEFB 0
	LD A,(K35)
	CALL UP
	DEFB 14H
	JR DE1606
DEC3	LD DE,0
	CALL UP
	DEFB 32H
	LD DE,K15
	LD BC,4
	LDIR
	RET
;
;UP."DEABC2"
;
;BEENDIGUNG DER DATENEINGABE UND RUECK-
;SPRUNG IN DAS PROGRAMMENU ODER ZUM
;PROGRAMMANFANG IN ABHAENGIGKEIT DES
;UP."DISPLAY"
;
DEABC2	EXX
	LD A,E
	CP 1		;DISPLAYANZ EIN
	JR Z DEABC3
	EXX
	LD A,(K9)
	CP 5
	JP Z CLEAR
DEABC21	CALL H1
	CALL H4
	CALL H5
	CALL H3
	LD A,6
	LD CO,A
	CALL FA1000
	LD HL,MENU
	EX (SP),HL
	RET
DEABC3	EXX
	LD HL,ANF
	EX (SP),HL
	RET
;
;UNTERPROGRAMME "DA..."
;>>DATENAUSGABE<<
;
;
DA1	CALL UP
	DEFB 23H
	DEFM 'READ :'
	DEFB 0
	LD HL,401H
	LD CA,HL
	RET
DA2	CALL UP
	DEFB 23H
	DEFM 'ROM :     -'
	DEFB 0
	RET
DA3	CALL UP
	DEFB 23H
	DEFM 'RAM :     -'
	DEFB 0
	RET
DA4	CALL UP
	DEFB 23H
	DEFM 'PROGRAMMING:'
	DEFB 0
	LD HL,401H
	LD CA,HL
	RET
DA5	CALL UP
	DEFB 23H
	DEFM 'BLANKTEST:'
	DEFB 0
	LD HL,401H
	LD CA,HL
	RET
DA6	CALL UP
	DEFB 23H
	DEFM 'CHECK BYTECHANGE'
	DEFB 0
	LD HL,401H
	LD CA,HL
	RET
DA8	CALL UP
	DEFB 23H
	DEFM 'COMPARE:'
	DEFB 0
	LD HL,401H
	LD CA,HL
	RET
DA9	CALL UP
	DEFB 23H
	DEFM 'CHECKSUM:'
	DEFB 0
	LD HL,10DH
	LD CA,HL
	RET
DA10	CALL UP
	DEFB 23H
	DEFM 'DISPLAY:'
	DEFB 0
	LD HL,10DH
	LD CA,HL
	RET
DA11	CALL UP
	DEFB 23H
	DEFM 'TAPE:'
	DEFB 0
	LD HL,10DH
	LD CA,HL
	RET
DA12	CALL UP
	DEFB 23H
	DEFM 'LOAD:     -'
	DEFB 0
	RET
DA13	CALL UP
	DEFB 23H
	DEFM 'SAVE:     -'
	DEFB 0
	RET
	DEFB 0
	LD HL,
DA00	LD HL,0
	CALL HEXASC
	RET
DA200	LD HL,400H
	CALL HEXASC
	RET
;
DA1406A	CALL FA1406	;FENSTER A
	LD HL,(K16)	;ADRESSE
	LD A,(K9)	;MENUTYP
	CP 5		;"PROGRAMMING" ?
	JR NZ DAX1	;WENN NEIN
	LD A,H
	OR L		;ADRESSE <0> ?
	JR Z DAX	;WENN JA
DAX1	CALL HEXASC	;AUSG.ADRESSE
	RET
DAX	LD HL,SFE	;RUECKKEHR
			;FENSTEREING.
			;PROGRAMMIER-
			;ROUTINE
	EX (SP),HL
	RET
;
DA140DB	CALL FA140D	;FENSTER B
	LD HL,(K17)	;ADRESSAUSG.
	CALL HEXASC
	RET
;
DA1606C	CALL FA1606	;FENSTER C
	LD HL,(K18)	;ADRESSAUSG.
	CALL HEXASC
 	RET
;
DA140D	CALL FA140D	;DATENAUSG. (B)
	;IN ABHAENGIGKEIT DER ERRECHNE-
	;TEN ADRESSE (B)
	;<B> > FFFFH => AUSG. FFFFH
	;<B> < FFFFH => AUSG.BERECHN.ADR
	;
	CALL TABFR
	CALL DAHLA
	RET
;
DA160DD	CALL FA160D	;FENSTER D
	LD HL,(K19)
	CALL HEXASC	;ADRESSAUSG.
	RET
;
DA140DT	CALL FA140D	;FENSTER B
	CALL TABFR	;EPROMTYPEND-
			;ADRESSEN
	CALL HEXASC	;AUSG.
	RET
;
DA160DT	CALL FA160D	;FENSTER D
	CALL TABFR	;EPROMTYPEND-
			;ADRESSEN
	CALL HEXASC	;AUSG.
	RET
;
GULA	CALL GUL114	;GUELTIGKEITS-
			;TEST FENSTER A
	CALL ASH114	;WANDLUNG
			;ASCII-HEXAD.
	CALL DA1406A	;AUSG. FENSTER A
	RET
;
GULB	CALL GUL118	;(ANALOG (B) )
	CALL ASH118
	CALL DA140DB
	RET
;
GULC	CALL GUL11C	;(ANALOG (C) )
	CALL ASH11C
	CALL DA1606C
	RET
;
GUL114	LD HL,K13	;GUELTIGKEITS-
			;TEST FENSTER A
	LD (K3),HL
	CALL GUELT
	RET
;
GUL118	LD HL,K14	;(ANALOG (B) )
	LD (K3),HL
	CALL GUELT
	RET
;
GUL11C	LD HL,K15	;(ANALOG (C) )
	LD (K3),HL
	CALL GUELT
	RET
;
ASH114	LD IY,K13	;WANDLUNG
			;<FENSTER A>
	CALL ASHEX	;ASCII-HEXAD.
	LD (K16),DE
	RET
;
ASH118	LD IY,K14	;(ANALOG (B) )
	CALL ASHEX
	LD (K17),DE
	RET
;
ASH11C	LD IY,K15	;(ANALOG (C) )
	CALL ASHEX
	LD (K18),DE
	RET
;
SUB	SCF
	CCF
	SBC HL,DE	;SUBTRAKTION
	JP C ORG	;ERGEBNIS NEG. ?
	RET
;
SUBBA	LD HL,(K17)	;  <FENSTER B>
	LD DE,(K16)	;- <FENSTER A>
	CALL SUB	;--------------
	LD (K5),HL	;  <BYTEZAEHLER>
	RET
;
ADDHLC	LD DE,(K18)	;  <FENSTER C>
	ADD HL,DE	;+   HL
			;--------------
			;ERG. > FFFFH ?
	JP C ORG	;WENN JA > ORG
	LD (K19),HL	; <D> := ERG.
	RET
;
SUBTC	CALL TABFR	; EPROMTYPKAPAZ.
	LD DE,(K18)	;- <FENSTER C>
	CALL SUB	;---------------
	LD (K22),HL	; <K22> := ERG.
	RET
;
SUBS	LD HL,(K22)	;  <K22>
	LD DE,(K5)	;- <BYTEZAEHLER>
	CALL SUB	;---------------
	RET
;
SUBTD	CALL TABFR	; EPROMTYPKAPAZ.
	LD DE,(K19)	;- <FENSTER D>
	CALL SUB	;---------------
	RET
;
SUBTA	CALL TABFR	; EPROMTYPKAPAZ.
	LD DE,(K16)	;- <FENSTER A>
	CALL SUB	;---------------
	RET
;
SUBTB	CALL TABFR	; EPROMTYPKAPAZ.
	LD DE,(K17)	;- <FENSTER B>
	CALL SUB	;---------------
	RET
;
SUBTBA	CALL TABFR	; EPROMTYPKAPAZ.
	LD DE,(K5)	;- <BYTEZAEHLER>
	CALL SUB	;--------------
	RET
;
;UP."DAPRUEF"
;
;BILDET DIE PRUEFSUMME IM EPROM
;
DAPRUEF	LD BC,(K5)
	LD HL,(K22)
	CALL PRUEF2	;PF ROM(RAM PF1)
	;
	;PROGRAMMFORTSETZUNG FUER
	;PRUEFSUMMENBILDUNG IM EPROM-UND
	;RAMBEREICH
	;AUSGABE DER PRUEFSUMME
	;
DAPREND	LD (K6),DE
	LD HL,1A01H
	LD FA,HL
	LD HL,128H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM ' CHECKSUM  *      *'
	DEFB 0
	LD HL,1A0EH
	LD FA,HL
	LD HL,105H
	LD FG,HL
	LD HL,0
	LD CA,HL
	LD HL,(K6)
	CALL HEXASC
	RET
;
;UP."PRUEF1"
;
;BEARBEITUNG PRUEFSUMMENBILDUNG IM RAM
;
PRUEF1	LD DE,0FFFFH
MA30	CALL IRMA
	LD A,(HL)
	PUSH AF
	CALL IRME
	POP AF
	CALL PRUEFX
	LD A,B
	OR C
	JR Z MA72
	INC HL
	DEC BC
	JR MA30
MA72	RET
;
;
;UP."PRUEF2"
;
;BEARBEITUNG PRUEFSUMMENBILDUNG
;IM EPROM
;
PRUEF2	LD DE,0FFFFH
	LD A,(IY+8)
	OUT P2DB
MA61	LD A,L
	OUT P1DA
	PUSH DE
	LD A,H
	LD D,A
	CALL PGME	;PGM EIN?
	OUT P1DB
	POP DE
	LD A,(IY+7)
	OUT P2DB
	IN A,P2DA
	PUSH AF
	LD A,(IY+8)
	OUT P2DB
	POP AF
	CALL PRUEFX
	LD A,B
	OR C
	JR Z MA71
	INC HL
	DEC BC
	JR MA61
MA71	RET
;
;UP."PRUEFX"
;
;BERECHNUNG DER PRUFSUMME FUER
;EPROM -UND RAM-BEREICH
;
PRUEFX	XOR D
	LD D,A
	RRCA
	RRCA
	RRCA
	RRCA
	AND 0FH
	XOR D
	LD D,A
	RRCA
	RRCA
	RRCA
	PUSH AF
	AND 1FH
	XOR E
	LD E,A
	POP AF
	PUSH AF
	RRCA
	AND 0F0H
	XOR E
	LD E,A
	POP AF
	AND 0E0H
	XOR D
	LD D,E
	LD E,A
	RET
;
;
;UP."DEYN"
;
;ERMOEGLICHT DIE ENTSCHEIDUNG ZUR
;WIEDERHOLUNG ODER BEENDIGUNG EINES
;MENU-PROGRAMMS
;
;
DEYN	LD HL,1C01H
	LD FA,HL
	LD HL,128H
	LD FG,HL
	LD HL,0
	LD CA,HL
	LD A,(K23)
	;
	;WIEDERHERSTELLUNG DER
	;URSPRUENGLICHEN FARBBILDUNG
	;ZU BEGINN DES MENU-PROGRAMMS
	;
	LD CO,A
	LD A,(K9)
	CP 5		;MENU-PROGRAMM
			;"PROGRAMMING" ?
	JR NZ DE1	;WENN NEIN
	;
	;AUSSCHRIFT "Y/N/D"
	;
	;"Y" > MENU-PROGRAMM ENDE
	;"N" > MENU-PROGRAMM WIEDERH.
	;"D" > EPROM DUPLIZIEREN
	;
	CALL UP
	DEFB 23H
	DEFM 'EXIT (Y/N/D):'
	DEFB 0
	LD HL,0B6F0H
	LD (K7),HL
	CALL H1
	CALL H4
	CALL H5
	CALL H3
	JR DE2
	;
DE1	CALL UP
	DEFB 23H
	DEFM 'EXIT (Y/N)  :'
	DEFB 0
	;
	;EINGABE ZUR ENTSCHEIDUNGSFRAGE
	;
DE2	LD HL,1C0EH
	LD FA,HL
	LD HL,101H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 4
	RET
ÿÿÿÿÿÿÿ