EP(C000)ASM;PROGRAMM "EPROMMER" FUER KC85/3-MODUL
;
;
;AUFTRAGGEBER:VEB MIKROELEKTRONIK
;	      "W.PIECK" MUEHLHAUSEN
;AUFTRAGNEHMER:VEB APPLIKATIONSZENTRUM
;	      MIKROELEKTRONIK BERLIN
;	      IfAM BERLIN
;	      ABT.IAA
;	      TEL.5800261/49
;
;VERSION 1.0
;
;STRUKTURBYTE: D9
;
;STARTADRESSE: C000H
;
;
;
;DAS NACHSTEHENDE PROGRAMM IST ALS
;ROM- UND RAMVERSION LAUFFAEHIG. DIE
;RAMVERSION (BANDVERSION) BELEGT DEN
;ARBEITSRAMBEREICH VON 400H BIS 22FFH.
;
;ALLE MENUPROGRAMME DES "EPROMMER"
;SIND HINTER DEM "IRM" LAUFFAEHIG, WENN
;EIN RAM-MODUL "M O11" IM ADR.-BEREICH
;4000-7FFFH ZUGEWIESEN WURDE.
;
;DAS PROGRAMM "EPROMMER" BENUTZT DIE
;ARBEITSZELLEN:
;
;	008H - 03FH LAUT UP.ABLAUF
;
;	UNTERPROGAMM "TAPE"
;
;	200H - 27FH KASSETTENPUFFER
;	280H - 285H BERECHNUNG
;		    UP.STARTADRESSE
;		    LT." UEBERSICHTEN"
;		    UND RUECKKEHR INS
;		    UNTERPROGRAMM "TAPE"
;
;
;DAS PROGRAMM "EPROMMER" GESTATTET DEN
;TEST NACHSTEHENDER UNTERPROGRAMMTEILE:
;
;	"READ"
;	"PROGRAMMING"
;
;MIT HILFE DER CODE-ABLAGE: 01-05 IN DER
;ARBEITSZELLE 36H (K28) KANN DER PRUEF-
;ZYKLUS VORBEREITET WERDEN.
;(DAS EINSCHREIBEN DER CODE ERFOLGT AUS
;MENUUNTERPROGRAMM "DISPLAY")
;
;CODE:  01 TESTET DEN LESEZYKLUS EINES
;	   EPROM'S
;	02 TESTET DEN PROGRAMMIERZYKLUS
;	   (1ms IMPULSE)
;	03 TESTET UEBERPROGRAMMIERZYKLUS
;	   (2ms IMPULSE)
;	04 TESTET 50ms IMPULSE
;	05 TESTET KONTROLLESEZYKLUS
;
;NACH DER EINGABE DER CODE ERFOLGT DER
;START AUS DEM MENUTEIL DES HAUPTPRO-
;GRAMMS. DER TEST KANN MIT DER BETAETI-
;GUNG DER TASTE "break" UNTERBROCHEN
;WERDEN.
;
;
;
;
;
	ORG 0C000H
;
;
	LD A,(K30)	;PROGRAMMFORTS.
	CP 1		;N.UP-AUSFUEHRG.
	JP Z TAPCS	;SAVE
	CP 5
	JP Z TAPCL	;LOAD
	JP ANF
;
;
	DEFW 7F7FH
	DEFM 'EPROMMER'
	DEFB 1
;
;ALLGEMEINER VEREINBARUNGSTEIL
;
P1DA	EQU 0B8H;PIO1 DATENW.ADR. PORT	A
P1DB	EQU 0B9H
P1SA	EQU 0BAH;PIO1 STEUERW.ADR.PORT A
P1SB	EQU 0BBH
P2DA	EQU 0BCH
P2DB	EQU 0BDH
P2SA	EQU 0BEH
P2SB	EQU 0BFH
UP	EQU 0F003H
FA	EQU (0B79CH)	;FENSTERANFANG
FG	EQU (0B79EH)	;FENSTERGROESSE
CA	EQU (0B7A0H)	;CURSORPOSITION
CO	EQU (0B7A3H)	;FARBE
;
;
ADR	EQU 0C0H; hw.-T.TABELLE (ASHEX)
;
;VEREINBARUNGSTEIL DER ARBEITSZELLEN
;
K1	EQU 8		;CUR.ADR EP.-TYP
K3	EQU 22H		;ASCIZ.ADR>GUELT
K4	EQU 20H		;ZELLE F.ALLG.A.
K5	EQU 32H		;DIFFER.FB-FA
K6	EQU 2EH		;PRUFSUMME
K7	EQU 0AH		;CUR.ADR Vpp
K8	EQU 0CH		;EPROMTYP 0-5
K9	EQU 0DH		;MENUTYP  0-7
K11	EQU 0EH		;Vpp	  0-2
K13	EQU 18H		;ASCI-FENST.A
K14	EQU 1CH		;ASCI-FENST.B
K15	EQU 24H		;ASCI-FENST.C
K16	EQU 10H		;FENST.A HEXWERT
K17	EQU 12H		;FENST.B HEXWERT
K18	EQU 14H		;FENST.C HEXWERT
K19	EQU 16H		;FENST.D HEXWERT
K20	EQU 28H		;UML.A.ASCI/DISP
K21	EQU 30H		;IMPULSZAEHLER
K22	EQU 2CH		;STARTADR PRUEFS
K23	EQU 0FH		;FARBBYTE
K24	EQU 3EH		;ZEITK.>IMPULS
K25	EQU 38H		;ZK.1ms
K26	EQU 3AH		;ZK.2ms
K27	EQU 3CH		;ZK.50ms
K28	EQU 36H		;PROG.-TEST-NR.
K29	EQU 281H	;UP.-STARTADR
K30	EQU 34H		;UP-NR.LT TAB.
K31	EQU 280H	;CODE "CALL"
K32	EQU 283H	;CODE "JP"
K33	EQU 284H	;LOW-TEIL ADR
K34	EQU 285H	;HIGH-TEIL ADR
K35	EQU 37H		;ZK.TAST.-EING.
	JP ANF1
;
;UP ZUR UMWANDLUNG VON 4 ASCI-ZEICHEN
;IN DIE HEXADEZIMALE DARSTELLUNG
;
ASHEX	LD H,ADR
	LD B,21H	;ZEIGER
;
;AUF TABELLE DER HEXADEZIMALCODE
;
;BERECHNUNGSBEISPIEL:
;
;REG. A:=30H ASCII-CODE("0");
;
;(ZEIGER) REG. L:=A+B ="low" TEIL ZEIGER
;	  REG. H      ="high"TEIL ZEIGER
;TABADR > C051H <0>
;
	LD A,(IY+03H)
	ADD B
	LD L,A
	LD A,(HL)
	LD E,A
	LD A,(IY+02H)
	ADD B
	LD L,A
	LD A,(HL)
	SLA A
	SLA A
	SLA A
	SLA A
	ADD E
	LD E,A
	LD A,(IY+01H)
	ADD B
	LD L,A
	LD A,(HL)
	LD D,A
	LD A,(IY)
	ADD B
	LD L,A
	LD A,(HL)
	SLA A
	SLA A
	SLA A
	SLA A
	ADD D
	LD D,A
	RET
	DEFB 0
	DEFB 1
	DEFB 2
	DEFB 3
	DEFB 4
	DEFB 5
	DEFB 6
	DEFB 7
	DEFB 8
	DEFB 9
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	DEFB 0AH
	DEFB 0BH
	DEFB 0CH
	DEFB 0DH
	DEFB 0EH
	DEFB 0FH
;
;TABELLE DER STEUERKODE FUER DIE
;BEARBEITUNG DER EPROM-TYPENAUSWAHL
;
TAB16C	DEFB 3EH
	DEFB 32H
	DEFB 33H
	DEFB 32H
	DEFB 32H
	DEFB 32H
	DEFB 0B2H
	DEFB 0BEH
	DEFB 3FH
TAB16B	DEFB 3EH
	DEFB 3AH
	DEFB 3BH
	DEFB 3AH
	DEFB 3AH
	DEFB 3AH
	DEFB 0BAH
	DEFB 0BEH
	DEFB 3FH
TAB16A	DEFB 3EH
	DEFB 36H
	DEFB 37H
	DEFB 36H
	DEFB 36H
	DEFB 36H
	DEFB 0B6H
	DEFB 0BEH
	DEFB 3FH
TAB32C	DEFB 9FH	;93H
	DEFB 53H
	DEFB 52H
	DEFB 53H
	DEFB 13H
	DEFB 93H
	DEFB 92H
	DEFB 9EH
	DEFB 1FH
TAB32B	DEFB 9FH	;9BH
	DEFB 5BH
	DEFB 5AH
	DEFB 5BH
	DEFB 1BH
	DEFB 9BH
	DEFB 9AH
	DEFB 9EH
	DEFB 1FH
TAB32A	DEFB 9FH	;97H
	DEFB 57H
	DEFB 56H
	DEFB 57H
	DEFB 17H
	DEFB 97H
	DEFB 96H
	DEFB 9EH
	DEFB 1FH
TAB64C	DEFB 1FH
	DEFB 12H
	DEFB 12H
	DEFB 12H
	DEFB 12H
	DEFB 12H
	DEFB 92H
	DEFB 9EH
	DEFB 1FH
TAB64B	DEFB 1FH
	DEFB 1AH
	DEFB 1AH
	DEFB 1AH
	DEFB 1AH
	DEFB 1AH
	DEFB 9AH
	DEFB 9EH
	DEFB 1FH
TAB64A	DEFB 1FH
	DEFB 16H
	DEFB 16H
	DEFB 16H
	DEFB 16H
	DEFB 16H
	DEFB 96H
	DEFB 9EH
	DEFB 1FH
TAB128C DEFB 1DH
	DEFB 10H
	DEFB 10H
	DEFB 10H
	DEFB 10H
	DEFB 10H
	DEFB 90H
	DEFB 9CH
	DEFB 1DH
TAB128B	DEFB 1DH
	DEFB 18H
	DEFB 18H
	DEFB 18H
	DEFB 18H
	DEFB 18H
	DEFB 98H
	DEFB 9CH
	DEFB 1DH
TAB128A	DEFB 1DH
	DEFB 14H
	DEFB 14H
	DEFB 14H
	DEFB 14H
	DEFB 14H
	DEFB 94H
	DEFB 9CH
	DEFB 1DH
TAB256C	DEFB 1DH
	DEFB 11H
	DEFB 10H
	DEFB 11H
	DEFB 11H
	DEFB 91H
	DEFB 90H
	DEFB 9CH
	DEFB 1DH
TAB256B DEFB 1DH
	DEFB 19H
	DEFB 18H
	DEFB 19H
	DEFB 19H
	DEFB 99H
	DEFB 98H
	DEFB 9CH
	DEFB 1DH
TAB256A DEFB 1DH
	DEFB 15H
	DEFB 14H
	DEFB 15H
	DEFB 15H
	DEFB 95H
	DEFB 94H
	DEFB 9CH
	DEFB 1DH
TAB256AC DEFB 1DH
	 DEFB 11H
	 DEFB 10H
	 DEFB 11H
	 DEFB 11H
	 DEFB 11H
	 DEFB 91H
	 DEFB 9CH
	 DEFB 1DH
TAB256AB DEFB 1DH
	 DEFB 19H
	 DEFB 18H
	 DEFB 19H
	 DEFB 19H
	 DEFB 19H
	 DEFB 99H
	 DEFB 9CH
	 DEFB 1DH
TAB256AA DEFB 1DH
	 DEFB 15H
	 DEFB 14H
	 DEFB 15H
	 DEFB 15H
	 DEFB 15H
	 DEFB 95H
	 DEFB 9CH
	 DEFB 1DH
;
;BEGINN DES HAUPTPROGRAMMS
;
ANF1	LD A,0CDH	;CODE "CALL"
	LD (K31),A
	LD A,0C3H	;CODE "JP"
	LD (K32),A
	LD A,0
	LD (K33),A	;low-T.ADR  "JP"
;
	LD A,0C0H
;
	LD (K34),A	;high-T.ADR "JP"
	LD A,0
	LD (3FH),A
	LD HL,3FH	;LOESCHEN DER
	LD DE,3EH	;ARBEITSZELLEN
	LD BC,37H	;"EPROMMER"
	LDDR
	LD HL,30H	;ZK.Vpp 1ms
	LD (K25),HL
	LD HL,60H	;ZK.Vpp 2ms
	LD (K26),HL
	LD HL,0A00H	;ZK.Vpp 50ms
	LD (K27),HL
	LD HL,32H	;IMPULSZAEHLER
	LD (K21),HL
	LD A,10H	;ZK.TASTATUR
	LD (K35),A	;BEST.TRAEGHEIT
;
ANF	LD SP,1C4H
	EXX
	LD DE,0		;DISPLAYANZ.AUS
	EXX
	LD HL,0B6F0H	;LEERZEICHEN-
	LD (K7),HL	;SPEICHER ZUM
			;LOESCHEN
			;Vpp AUSG.-FENST
;
;BILDSCHIRM LOESCHEN UND EINSTELLEN DES
;PAGEMODUS (FARBE: SW/GE)
;
	LD HL,0
	LD FA,HL
	LD HL,2028H
	LD FG,HL
	LD A,6
	LD CO,A
	CALL UP
	DEFB 23H
	DEFB 0CH
	DEFB 11H
	DEFB 0
;
;BILDSCHIRMAUSCHRIFTEN EPROMTYPENAUSWAHL
;
	LD HL,7
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '** PROGRAMMING DEVICE **'
	DEFB  0
	LD HL,200H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM 'EPROM - TYPE:'
	DEFB 0
	LD HL,401H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '1 = 2716'
	DEFB 0
	LD HL,501H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '2 = 2732'
	DEFB 0
	LD HL,601H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '3 = 2764'
	DEFB 0
	LD HL,701H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '4 = 27128'
	DEFB 0
	LD HL,801H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '5 = 27(C)256'
	DEFB 0
	LD HL,901H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '6 = 27(C)256A'
	DEFB 0
	LD HL,0A01H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '7 = EXIT'
	DEFB 0
;
;FENSTERAUFRUF FUER EINGABE TYPAUSWAHL
;
	LD HL,400H
	LD FA,HL
	LD HL,701H
	LD FG,HL
	LD A,86H
	LD CO,A
	CALL UP
	DEFB 23H
	DEFB 0CH
	DEFB 11H
	DEFB 0
;
;EINGABEROUTINE TYPAUSWAHL
;
	LD B,0		;ZEILENZAEHLER
			;IM FENSTER
FST	CALL UP
	DEFB 04H	;TAST.-EING. UP4
	CP 0BH		;CURSOR "up"?
	JR Z FST4	;WENN JA
	CP 0AH		;CURSOR "down"?
	JR Z FST2	;WENN JA
	CP 0DH		;"enter"?
	JR Z FST3	;WENN JA
	CALL ZKTAST	;EING.-VERZOEG.
	JR FST
FST2	LD A,B
	CP 6		;LETZTE ZEILE
			;IM FENSTER ?
	JR Z FST	;WENN JA
	CALL UP		;WENN NEIN
	DEFB 23H
	DEFB 0AH	;CURSOR "down"
	DEFB 0
	INC B		;ZAEHLER ERH.
	CALL ZKTAST	;EING.-VERZOEG.
	JR FST
FST4	LD A,B
	CP 0		;1.ZEILE
			;IM FENSTER ?
	JR Z FST	;WENN JA
	DEC B		;ZAEHLER ERN.
	CALL UP
	DEFB 23H
	DEFB 0BH	;CURSOR "up"
	DEFB 0
	CALL ZKTAST	;EING.-VERZOEG.
	JR FST
FST3	LD A,B
	LD (K8),A	;AKTUELLE ZEILE
			;=EPROMTYP
			;ABLEGEN
	CP 6		;LETZTE ZEILE ?
	JP Z EXIT	;WENN JA
	LD D,A		;UEBERG.AKTUELLE
			;ZEILE IM FENST.
	LD E,0		;UEBERG.AKTUELLE
			;SPALTE IM FENST
	CALL UP
	DEFB 32H	;BERECHNUG
			;VRAM-ADR
	LD (K1),HL	;ABLAGE DER ADR
	CALL UP
	DEFB 23H
	DEFM '*'	;KENNZEICHNUNG
			;DES AUSWAHLTYPS
	DEFB 0
;
;BILDSCHIRM AUSSCHRIFT "STICK EPROM"
;(INITIALISIERUNG DER PIO 1 UND 2)
;
	CALL H1
	CALL H4
	CALL H5
	CALL H3
;
;FENSTERAUFRUF FUER MENU-AUSGABE
;
MENU	LD SP,1C4H
	EXX
	LD DE,0		;DISPLAYANZ AUS
	EXX
	LD HL,0
	LD FA,HL
	LD HL,2028H
	LD FG,HL
	LD HL,1100H
	LD CA,HL
	LD A,6
	LD CO,A
;
;BILDSCHIRMAUSSCHRIFT DER MENUTABELLE
;
	CALL UP
	DEFB 23H
	DEFM 'MENU:'
	DEFB 0
	LD HL,1301H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '1 = READ'
	DEFB 0
	LD HL,1401H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '2 = COMPARE'
	DEFB 0
	LD HL,1501H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '3 = CHECKSUM'
	DEFB 0
	LD HL,1601H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '4 = CHECK OF BYTECHANGE'
	DEFB 0
	LD HL,1701H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '5 = BLANKTEST'
	DEFB 0
	LD HL,1801H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '6 = PROGRAMMING'
	DEFB 0
	LD HL,1901H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '7 = DISPLAY'
	DEFB 0
	LD HL,1A01H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '8 = TAPE'
	DEFB 0
	LD HL,1B01H
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM '9 = EXIT'
	DEFB 0
;
;FENSTERAUFRUF FUER MENUTYPEINGABE
;
	LD HL,1300H
	LD FA,HL
	LD HL,901H
	LD FG,HL
	LD A,86H
	LD CO,A
	CALL UP
	DEFB 23H
	DEFB 0CH
	DEFB 11H
	DEFB 0
;
;EINGABEROUTINE MENUTYP
;
	LD B,0		;ZEILENZAEHLER
			;IM AKT.FENSTER
FSM	CALL UP
	DEFB 04H	;TAST.EING. UP4
	CP 3		;TASTE "break" ?
	JP Z ANF	;WENN JA
	CP 0BH		;CURSOR "up" ?
	JR Z FSM4	;WENN JA
	CP 0AH		;CURSOR "down"
	JR Z FSM2	;WENN JA
	CP 0DH		;TASTE "enter" ?
	JR Z FSM3	;WENN JA
	CALL ZKTAST	;EING.VERZOEG.
	JR FSM
FSM2	LD A,B
	CP 8		;LETZTE ZEILE
			;IM FENSTER ?
	JR Z FSM	;WENN JA
	CALL UP
	DEFB 23H
	DEFB 0AH	;CURSOR "down"
	DEFB 0
	INC B		;ZEILENZ. ERH.
	CALL ZKTAST	;EING. VERZOEG.
	JR FSM
FSM4	LD A,B
	CP 0		;1.ZEILE
			;IM FENSTER ?
	JR Z FSM	;WENN JA
	DEC B		;ZEILENZ. ERN.
	CALL UP
	DEFB 23H
	DEFB 0BH	;CURSOR "up"
	DEFB 0
	CALL ZKTAST	;EING. VERZOEG.
	JR FSM
FSM3	LD A,B
	LD (K9),A	;ABSPEICHERN
			;DER AKTUELLEN
			;CUR. POS. IM F.
	CP 8		;LETZTE ZEILE ?
	JP Z EXIT	;WENN JA
	CALL UP
	DEFB 23H
	DEFM '*'	;AKT. CURSORPOS.
	DEFB 0		;KENNZEICHNEN
	LD A,80H	;ZK.FUER UP14
	CALL UP
	DEFB 14H	;"wait"	UP14
	LD A,(K9)	;UEBERG.CURSORP.
	CP 0		;1. ZEILE ?
	JR Z MAO4	;WENN JA
	CP 1		;2. ZEILE ?
	JR Z MAO5	;WENN JA
	CP 2		;3. ZEILE ?
	JR Z MAO6	;WENN JA
	CP 3		;4. ZEILE ?
	JR Z MAO7	;WENN JA
	CP 4		;5. ZEILE ?
	JR Z MAO8	;WENN JA
	CP 5		;6. ZEILE ?
	JR Z MAO9	;WENN JA
	CP 6		;7. ZEILE ?
	JR Z MA1O	;WENN JA
	CP 7		;8. ZEILE ?
	JR Z MA11	;WENN JA
	CP 8		;9. ZEILE ?
	JP Z MENU	;WENN JA
;
;FENSTERAUFRUF PROGRAMMENDE UND RUECK-
;KEHR INS >CAOS< BETRIEBSSYSTEM
;
EXIT	LD HL,0
	LD FA,HL
	LD HL,2028H
	LD FG,HL
	LD HL,0
	LD CA,HL
	LD A,7		;FARBE SW/WS
	LD CO,A
	CALL UP
	DEFB 23H
	DEFB 12H	;SCROLLING-MODUS
	DEFB 0CH	;BILDSCH.LOESCH.
	DEFB 0
	LD HL,100H
	LD FA,HL
	LD HL,1E28H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 12H	;"loop" UP12
	RET
;
;SPRUNGTABELLE
;
MAO4	JP LESEN
MAO5	JP COMPARE
MAO6	JP CHECKSU
MAO7	JP CHECK
MAO8	JP BLANK
MAO9	JP SCHREIBEN
MA1O	JP DISPLAY
MA11	JP TAPE
;
;ENDE DES HAUPTPROGRAMMS
;
;
;
;UNTERPROGRAMM EPROM >LESEN ("READ")
;
LESEN	LD A,6		;FARBE SW/GE
	LD CO,A
	CALL FA1000	;FENSTERAUFRUF
			;Z.10H; SP.0
	CALL DA7	;EPROMTYPABFRAGE
			;128,256,256A ?
			;WENN JA   > (1)
			;WENN NEIN > (2)
;
;    (1) AUSSCHRIFT "EXPAMDERAM (Y/N)"
	;TASTATUREINGABE "Y/N"
	;"Y" > MODULZUWEISUNG DURCH
	;      ROGRAMMFORTSETZUNG
	;"N" > UP-ENDE
;
;    (2);PROGRAMMFORTSETZUNG
;
	CALL FA1000
	CALL LESEIN	;FENSTEREINGABEN
;
        ;IN DIE FENSTER A,B UND C
	;KONTOLLE DER DATENGUELTIGKEIT
	;ANZEIGEAUFFORDERUNG
	;"STICK EPROM" ERLISCHT
;
	CALL BLESEN	;EPROM LESEN
;
	;EPROMTYPABFRAGE UND UEBERGABE
	;DER STARTADR. DER STEUERCODE-
	;TABELLE FUER EPROMAUSWAHLTYP
	;ZUSCHALTUNG Vcc
	;EINLESEN EPROMINHALT IN DEN RAM
;
	CALL DAPRUEF	;PRUEFSUMMEN-
			;BILDUG IM EPROM
;
        ;BEENDIGUNG DES UP.-LESEN
;
;
	CALL H1		;FENSTERAUFRUF
	CALL H4		;INITIALISIERUNG
			;PIO'S
;
	;BILDSCHIRMAUSSCHRIFT
	;"STICK EPROM"
	;INITIALISIERUG DER PIO 1 UND 2
	;(ABSCHALTEN DER SPANNUNG Vcc)
;
	CALL H5		;FARBSTEUERUNG
			;BLINKEN
	CALL H3		;AUSG. EPROMTYP
;
        ;UNTERPROGRAMM-ENDEABFRAGE
;
	LD A,6		;FARBE SW,GE
	LD (K23),A
	CALL DEYN	;UP EINGABE"Y/N"
L3	CP 59H		;ENDE
	JP Z DEABC2	;WENN JA >"MENU"
	CP 4EH		;PROGRAMMWIEDER-
			;HOLUNG
	JP Z LDISPL	;WENN JA >
			;"DISPLAYANZEIGE
	CALL DEYN
	JR L3
;
;UP.BLESEN IM UP.LESEN
;
BLESEN	LD A,(K8)
	CP 0
	JR Z L2716
	CP 1
	JR Z L2732
	CP 2
	JR Z L2764
	CP 3
	JR Z L27128
	CP 4
	JR Z L27256
	CP 5
	JR Z L27256
	LD HL,ANF
	EX (SP),HL
	RET
L2716	LD IY,TAB16C
	LD A,(K9)
	CP 0H
	JP Z L27XX
LL1	CP 1
	JP Z CMP	;COMPARE
	CP 2
	JP Z CHSU	;CHECKSUM
	CP 3
	JP Z C1		;CHECK
	CP 4
	JP Z B2		;BLANK
	CP 6
	JP Z D4		;DISROM
	LD HL,ANF
	EX (SP),HL
	RET
L2732	LD IY,TAB32C
	LD A,(K9)
	CP 0
	JP Z L27XX
	JR LL1
L2764	LD IY,TAB64C
	LD A,(K9)
	CP 0
	JP Z L27XX
	JR LL1
L27128	LD IY,TAB128C
	LD A,(K9)
	CP 0
	JP Z L27XX
	JR LL1
L27256	LD IY,TAB256A
	LD A,(K9)
	CP 0
	JP Z L27XX
	JR LL1
;
;EPROM-LESEROUTINE
;
L27XX	LD A,0FFH
	OUT P2SA
	OUT P2SA
	LD A,(IY+8)
	OUT P2DB
	LD A,10H
	CALL UP
	DEFB 14H	;EINSCHWINGZEIT
	LD HL,(K18)	;SENKE
	LD DE,(K16)	;QUELLE
	LD BC,(K5)	;BYTEZAHL
L16	LD A,E
	OUT P1DA
	CALL PGME	;PGM EIN?
	OUT P1DB
	LD A,(IY+7)
	OUT P2DB
	CALL IRMA
	IN A,P2DA
	LD (HL),A
	CALL IRME
	LD A,(IY+8)
	OUT P2DB
	LD A,B
	OR C
	JR Z LEND
	CALL UP
	DEFB 2AH	;BREAK ? (TEST)
	JP C ANF2
	LD A,(K28)
	CP 1		;PROG.-TEST 1 ?
	JR Z L16
	INC HL
	INC DE
	DEC BC
	JR L16
LEND	LD A,(IY+8)
	OUT P2DB
	RET
;
;UP.LESEIN IM UP.LESEN
;
LESEIN	CALL DA1
DEABC	CALL DA2
	CALL FEROM
	CALL FA1601
	CALL DA3
	CALL FA1606
	CALL DA200
	CALL FE1606
	CALL DE1606
	CALL GULC
	CALL SUBBA
	CALL ADDHLC
	CALL DA160DD
	LD HL,(K16)	;PF ROM(RAM K18)
	LD (K22),HL
	CALL H1
	CALL H6
	CALL H7
	CALL H3
	RET
	DEFB 23H
	DEFM 'ROM :     -'
	DEFB 0
	RET
;
;DISPLAY-ROUTINE IM UP. LESEN
;
	;FENSTERAUFRUF FUER BILDSCHIRM-
	;AUSGABE
;
LDISPL	LD HL,1D01H
	LD FA,HL
	LD HL,128H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM 'DISPLAY (Y/N):'
	DEFB 0
;
	;FENSTERAUFRUF FUER DATENEINGABE
;
	LD HL,1D0FH
	LD FA,HL
	LD HL,101H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 4		;TASTATUREINGABE
			;UP4
L4	CP 59H		;TASTE "Y" ?
	JP Z D1		;WENN JA
	CP 4EH		;TASTE "N" ?
	JP Z LESEN	;WENN JA
	CALL DEYN
	JR L4
;
	;FENSTER FUER BILDSCHIRMAUSGABE
;
D1	LD HL,1E01H
	LD FA,HL
	LD HL,128H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFM 'FROM ADR:'
	DEFB 0
;
	;FENSTER FUER DATENEINGABE
;
	EXX
	LD DE,1		;DISPLAYANZ EIN
	EXX
	LD HL,1E0AH
	LD FA,HL
	LD HL,104H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL DE140D	;ADRESSEINGABE
	CALL GUL118	;TEST AUF
			;GUELTIGKEIT
	CALL ASH118	;WANDLUNG DER
			;EINGABEDATEN
			;IN E. HEXADEZI-
			;MALWERT
	LD HL,1E0AH
	LD FA,HL
	LD HL,105H
	LD FG,HL
	LD HL,0
	LD CA,HL
	LD HL,(K17)
	CALL HEXASC	;AUSG.D.ADRESSE
;
	;FENSTERAUFRUF FUER DATENAUSGABE
	;DES EPROMINHALTES
;
	LD HL,0100H
	LD FA,HL
	LD HL,0C28H
	LD FG,HL
	LD HL,0
	LD CA,HL
	CALL UP
	DEFB 23H
	DEFB 0CH
	DEFB 12H
	DEFB 0
;
	;PROGRAMMAUSFUEHRUNG "DISPLAY"
	;IM UP. LESEN
;
	CALL DISRAM
	JP D1
ےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےےے