EP3ASM; ; ;UP."DISRAM" ; ;REALISIERT DIE ANZEIGE EINES ;RAM-BEREICHES IN ANLEHNUNG AN DIE ;DISPLAY-FUNKTION IM "CAOS" ; ; DISRAM LD HL,(K17) ;STARTADRESSE DLE LD DE,0BH ;ZEILENANZAHL D. ; ;DARSTELLUNG DADR CALL UP DEFB 1AH ;AUSG.STARTADR. CALL LEER ;AUSG.EINES ;LEER-ZEICHENS PUSH HL ;>> ;RETTEN STARTADR LD B,8 ;INFORMATIONS- ;ANZAHL JE ZEILE DHEX CALL IRMA LD A,(HL) ;AUSGABEINFORM. PUSH AF CALL IRME POP AF CALL UP ;AUSG. INFORM. DEFB 1CH CALL LEER ;LEER-ZEICHEN INC HL DJNZ DHEX ;AUSG.WEITERER ;7 INFORMATIONEN CALL LEER ;LEER-ZEICHEN POP HL ;<< ;STARTADR. HOLEN ; ;AUSGABE DER ASCII-CODE ; LD B,8 ;ZAEHLER DASCII CALL IRMA LD A,(HL) ;AUSGABEINFORM. PUSH AF CALL IRME POP AF CP 20H ;LEER-ZEICHEN ? JR C DCTRL ;WENN JA CP 7FH ; < 7FH ? JR C DANZ ;WENN JA LD A,2AH ;WENN NEIN ; := "*" JR DANZ DCTRL LD A,2EH ; := "." DANZ CALL CHROUT ;ZEICHENAUSG. INC HL DJNZ DASCII ;AUSG. WEITERER ;7 ZEICHEN LD A,0DH ;"enter" ZEILEN- CALL CHROUT ;SCHALTUG LD A,0AH ;CURSOR "down" CALL CHROUT DEC E ;LETZTE ZEILE ;IM FENSTER ? JP NZ DADR ;WENN NEIN ; D2 PUSH HL ;WENN JA CALL UP ;EINGABEABFRAGE DEFB 4 POP HL CP 0DH ;TASTE "enter" ? JP Z DLE ;WENN JA CP 3 ;TASTE "break" ? JR Z D6 ;WENN JA CP 13H ;TASTE "stop" ? JR Z D7 ;WENN JA JR D2 ; ;PROGRAMMFORTSETZUNG "break" ; D6 CALL UP DEFB 23H DEFB 11H DEFB 0 RET ; ;PROGRAMMFORTSETZUNG "stop" ;(KORREKTUR DER BILDSCHIRMAUSG.) ; D7 LD A,(K9) ;MENUTYP CP 0 ;LESEN ? JR Z D71 ;WENN JA CALL UP DEFB 23H DEFB 11H DEFB 0 LD HL,0A06H ;CURSOR IN EIN- LD CA,HL ;GRUNDSTELLUNG LD BC,0A06H ;CURSORPOSI- ;ZAEHLER ;(LETZTE ZEILE, 6.SPALTE) ; D8 CALL UP DEFB 4 ;INFORM.EINGABE CP 3 ;TASTE "break" ? JP Z D13 ;WENN JA CP 0DH ;TASTE "enter" ? JP Z D14 ;WENN JA CP 8 ;CURSOR "left" ? JR Z D9 ;WENN JA CP 20H ;TASTE "space" ? JR Z D10 ;WENN JA CP 9 ;CURSOR"right" ? JR Z D10 ;WENN JA CP 0AH ;CURSOR "down" ? JR Z D11 ;WENN JA CP 0BH ;CURSOR "up" ? JR Z D12 ;WENN JA CP 47H ; =, > 47H ? JR NC D8 ;WENN JA CP 30H ; < 30H ? JR C D8 ;WENN JA CALL UP ;AUSG.GUELT.ZIFF DEFB 0 LD A,C ; AKTUELLE ;SPALTENINFORM. CP 1CH ;LETZTE EING.SP? JR Z D15 ;WENN JA INC C ;ERHOEHEN SP.Z. JR D8 ; ;DISPLAY-FUNKTIONSBEARBEITUNG ;IM FALLE MENU-PROGRAMM "READ" ; D71 LD HL,D1 ;ENDE EX (SP),HL ;BEI > LDISPL RET ; ; D15 LD A,8 ;CURSOR "left" JR SZA ;STEUERZEICHEN ;AUSGABE ; ;PROGRAMMFORTSETZUNG ;CURSOR "left" ; D9 LD A,C CP 6 ;SPALTENANFANG ? JR Z D8 ;WENN JA DEC C ;SP.ZAHLER ERN. LD A,8 ;CURSOR "left" JR SZA ;STEUERZ. AUSG. ; ;PROGRAMMF. ;CURSOR "right" ; D10 LD A,C CP 1CH ;SPALTENENDE ? JR Z D8 ;WENN JA INC C ;SP.ZAEHLER ERH. LD A,9 ;CURSOR "right" JR SZA ;STEUERZ. AUSG. ; ;PROGRAMMF. ;CURSOR "down" ; D11 LD A,B CP 0AH ;LETZTE ZEILE ? JR Z D8 ;WENN JA INC B ;Z.ZAEHLER ERH. LD A,0AH ;CURSOR "down" JR SZA ;STEUERZ. AUSG. ; ;PROGRAMMF. ;CURSOR "UP" ; D12 LD A,B CP 0 ;1.ZEILE ? JR Z D8 ;WENN JA DEC B ;Z.ZAEHLER ERN. LD A,0BH ;CURSOR "up" ; ;STEUERZEICHENAUSGABE ; SZA CALL UP DEFB 24H JR D8 ; ;PROGRAMMF. ;TASTE "break" ;DATENEINGABEBESTAETIGUNG ; D13 LD DE,0 ;CURSORPOSITION LD CA,DE CALL UP DEFB 32H LD DE,K15 LD BC,4 ; ;UEBRTRAEGT DIE AKTUELLE ;AUSGABEADRESSE (OBERER LINKER ;BILDRAND) DER DISPLAY-FUNKTION ;IN DIE ARBEITSZELLEN ; LDIR LD IY,K15 CALL ASHEX ; ;WANDLUNG DER ADRESSE ;ASCII-HEXAD. ; LD (K18),DE ;ABLAGE DER ADR. LD BC,57H ;BYTEZAEHLER LD DE,6 ;CURSORPOSITION LD HL,(K18) ;STARTADR. D18 PUSH HL PUSH DE PUSH BC LD CA,DE ;CURSOR ; ;AUF ERSTES HEX-DUMP BYTE SETZEN ; CALL UP DEFB 32H LD DE,K20 ;ZIELADR. LD BC,2 LDIR ;UEBERGABE DATEN CALL ASHD ;IN ARBEITS- ;ZELLEN ASCII- ;HEXAD.-WANDLUNG ; POP BC ;BYTEZAEHLER POP DE ;CURSORPOSITION CALL IRMA LD HL,K20 ;HEXAD.-WERT AUF INC HL ;HL+1 LD A,(HL) ; := "WERT" POP HL ;STARTADR. RAM LD (HL),A ;UEBERG. "WERT" CALL IRME INC HL ;RAM+1 LD A,B OR C ;LETZTES BYTE JR Z D19 ;WENN JA DEC BC LD A,E ADD 3 CP 1EH ;LETZTE SPALTE ? JR Z D17 ;WENN JA LD E,A ;AKT. KURSOR- ;SPALTENPOS. JR D18 ; ; D17 INC D ;AKT. KURSOR- ;ZEILENPOS. LD E,6 ;SPALTENPOS. JR D18 ; D19 LD HL,D20 ;UP.-ENDE EX (SP),HL RET ; D20 LD HL,0 LD CA,HL CALL UP DEFB 23H DEFB 12H DEFB 0 LD HL,(K18) ;RAM-STARTADR. CALL DLE ;AUSGABE DES ;KORRIGIERTEN ;RAM-BEREICHES JP DRAM ; ; ;PROGRAMMF. ;TASTE "enter" ; D14 LD A,B CP 0AH ;LETZTE ZEILE ? JR Z D16 ;WENN JA INC B ;ZEILENSCHALTUNG ; ;KURSOR AUF NEUE POSITION ;EINSTELLEN ; D16 LD C,6 LD L,C LD H,B LD CA,HL JP D8 ; ; ;UP."DISROM" ; ;REALISIERT DIE DISPLAY-FUNKTION ;IN ANLEHNUNG AN DAS "CAOS" ;DIE DATENANZEIGE ERFOLGT AUS DEM EPROM ;OHNE VORHERIGER UMKOPIERUNG DES DATEN- ;INHALTES IN DEN RAM-BEREICH. ;EINE AENDERUNG DER AUSGABEDATEN IST ;NICHT MOEGLICH. ; DISROM JP BLESEN ;ERMITTLUNG ; ;DES EPROMTYP'S UND DER START- ;ADRESSE DER STEUERCODETABELLE ;RUECKKEHR ZUR MARKE "D4" ; D4 LD A,0FFH OUT P2SA OUT P2SA LD A,(IY+8) OUT P2DB LD A,10H ;ZK.EINSCHWING- ;ZEIT Vcc CALL UP DEFB 14H LD HL,(K16) ;EPROM-STARTADR. DELO LD DE,0BH ;DARSTELLUNG ;VON 11 ZEILEN DADRO CALL UP DEFB 1AH ;AUSG. STARTADR. CALL LEER ;AUSG. EINES ;LEER-ZEICHENS PUSH HL LD B,8 ;ZEICHENZAEHLER DHEXO CALL INROM ;EINLESEN EINES ;ZEICHENS VOM ;EPROM CALL UP DEFB 1CH ;AUSG.DES ;ZEICHENS LD A,(IY+8) OUT P2DB CALL LEER ;AUSG. EINES ;LEERZEICHENS INC HL DJNZ DHEXO ;FORTSETZUNG ;AUSG.WEITERER ;7 ZEICHEN ; ; ;AUSGABE DER ZUGEHOERIGEN ;8 ASCII-ZEICHEN ; CALL LEER ;AUSG. EINES ;LEERZEICHENS POP HL ;STARTADR. LD B,8 ;ZEICHENZAEHLER ; DASCIIO CALL INROM ;EINLESEN EINES ;ZEICHEN VOM ;EPROM PUSH AF LD A,(IY+8) OUT P2DB POP AF CP 20H ; < 20H ? ;WENN JA JR C DCTRLO ;STEUERZEICHEN ; ; CP 7FH ; < 7FH ? ;WENN JA JR C DANZO ;ASCII-ZEICHEN ; ; ;WENN NEIN LD A,2AH ; := "*" JR DANZO ;AUSGABE ; ; ;STEUERZEICHENAUSGABE ; DCTRLO LD A,2EH ; := "." DANZO CALL CHROUT PUSH BC ; LD BC,(K5) LD A,C OR B ;LETZTES EPROM ;LESE-BYTE ? JP Z D5 ;WENN JA DEC B LD (K5),BC ; POP BC INC HL DJNZ DASCIIO ;AUSG. WEITERER ;7 ASCII-CODE ; LD A,0DH ;AUSG. "enter" CALL CHROUT ; LD A,0AH ;CURSOR "down" CALL CHROUT DEC E ;LETZTE AUSGABE- ;ZEILE ? JR NZ DADRO ;WENN NEIN ; D3 PUSH HL CALL UP ;TASTATUREIN- DEFB 4 ;GABEABFRAGE POP HL CP 0DH ;TASTE "enter" ? JR Z DELO ;WENN JA CP 3 ;TASTE "break" ? JR NZ D3 ;WENN NEIN ; CALL UP ;UP. ENDE DEFB 23H DEFB 11H DEFB 0 RET ; ; D5 POP BC ;UP. ENDE ;FORTSETZUNG LD HL,DISPLAY ;> DISPLAY EX (SP),HL RET ; ; ;UP."INROM" ; ;EINLESEN EINES BYTE'S VOM EPROM ; ; INROM 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 RET ; ; ;UP."LEER" ; ;AUSGABE EINES LEERZEICHENS (space) ; ; LEER LD A,20H CHROUT CALL UP DEFB 24H RET ; ; ;UP."DRAM" ; ;HILFSPROGRAMM UP."DISRAM" ;(DATENEINGABE, KONTROLLE AUF GUELTIG- ;KEIT, AUFRUF FENSTER FUER DATENAUSGABE) ; DRAM EXX LD D,1 ;DISP.RAM EIN EXX CALL H1 CALL H8 LD A,6 LD CO,A LD HL,1000H LD FA,HL LD HL,0F28H LD FG,HL LD HL,403H LD CA,HL CALL UP DEFB 23H DEFM 'FROM ADR:' DEFB 0 DRAM1 CALL FA140D CALL FE140D CALL DE140D CALL GULB EXX LD DE,101H ;DIS.ANZ. EIN EXX LD HL,100H 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 CALL DISRAM JR DRAM ; ; ;UP."DROM" ; ;HILFSPROGRAMM FUER UP."DISROM" ;(DATENEINGABE, KONTROLLE AUF GUELTIG- ;KEIT, FENSTERAUFRUF FUER DATENAUSGABE, ;PROGRAMMBEENDIGUNG) ; DROM CALL H1 CALL H6 CALL H7 CALL H9 LD A,6 LD CO,A LD HL,1000H LD FA,HL LD HL,0F28H LD FG,HL LD HL,401H LD CA,HL CALL DA2 CALL FA1406 CALL DA00 CALL DA140DT CALL FE1406 CALL DE1406 CALL GULA CALL TABFR LD (K17),HL CALL SUBTA CALL SUBBA EXX LD DE,1 EXX LD HL,100H 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 CALL DISROM DYN LD A,6 LD (K23),A CALL H1 CALL H4 CALL H5 CALL H9 JP D27 ; ; ;UP."H9" ; ;HILFSPROGRAMM ZUR EPROM-TYP-AUSGABE ;IM UP."DISPLAY" ; H9 LD A,(K1) ;n.w.T CURSOR ;EPROM-TYP CP 0A0H ;2716 ? JR Z D22 CP 0C8H ;2732 ? JR Z D23 CP 0F0H ;2764 ? JR Z D24 CP 18H ;27128 ? JR Z D25 CP 40H ;27256 ? JR Z D26 CP 68H ;27256A ? JR Z D26 LD HL,ANF EX (SP),HL RET ; D22 CALL UP DEFB 23H DEFM ' 2716' DEFB 0 RET D23 CALL UP DEFB 23H DEFM ' 2732' DEFB 0 RET D24 CALL UP DEFB 23H DEFM ' 2764' DEFB 0 RET D25 CALL UP DEFB 23H DEFM ' 27128' DEFB 0 RET D26 CALL UP DEFB 23H DEFM ' 27(C)256' DEFB 0 RET ; ;UP. "DISPLAY" ENDE ; D27 CALL DEYN D21 CP 59H ;TASTE "Y" ? JP Z DEABC2 ;WENN JA >MENU CP 4EH ;TASTE "N" ? JP Z DISPLAY ;WENN JA CALL DEYN JR D21 ; ; ;UP."GUELT" ; ;TESTET DIE GUELTIGKEIT DER DATENEIN- ;GABE IN DEN FENSTERN A,B,C ; ;RECHTSBUENDIGES AUFREIHEN VON ASCII- ;ZEICHEN, DIE DEN CODE 0-0FH ENTSPRE- ;CHEN. LEERZEICHEN DIE ZWISCHEN GUEL- ;TIGEN ASCII-ZEICHEN ANGEORDNET SIND ;WERDEN AUSGEBLENDET. ANSCHLIESSEND WIRD ;DIE URSPRUENGLICHE ANZAHL VON LEERZEI- ;CHEN DURCH "NULLEN" (30H), WELCHE ALS ;VORNULLEN GESCHRIEBEN WERDEN AUFGE- ;FUELLT. EIN ERKANNTES BYTE "00" WIRD IN ;EIN LEERZEICHEN (20H) UMGEWANDELT. ;DER ASCII-CODE "2A" (*) BEWIRKT DEN ;RUECKSPRUNG INS "EPROMMER"-MENU. ; ; GUELT LD HL,(K3) ;INFORMATIONS- ;ZEIGER LD DE,(K3) ;UMLADE-ZEIGER ; ;EINGABESPEICHER XX XX XX XX ; ^ ; HL ; DE DEC HL LD (K4),HL LD IY,K4 INC HL LD A,L ADD 3 LD L,A LD E,A LD BC,0 A3 LD A,L CP (IY) ;LETZTES ;ZEICHEN ? JR Z A1 ;WENN JA ; LD A,(HL) ;AUSWERTUNG ;ZEICHEN CP 2AH ; := "*" ? JP Z ORG2 ;WENN JA > MENU CP 47H ; > "0FH" ? JP NC ORG ;WENN JA ;EINGABEWIEDERH. CP 30H ; =,< 30H ? JP C A2 ;WENN JA JR A5 A2 CP 30H ; = 30H ? JR Z A5 ;WENN JA CP 0 ; = "00" ? JR Z A6 ;WENN JA CP 20H ; = 20H ? JR NZ ORG ;WENN NEIN DEC HL INC BC JR A3 ; ;UMLADEN JEDES GUELTIGEN ZEICH- ;ENS ; A5 PUSH BC LDI POP BC DEC DE DEC DE DEC HL DEC HL JR A3 ; ;INHALT DURCH LEERZEICHEN ERSET- ;ZEN ; A6 LD (HL),20H JR A3 ; ;AUFFUELLEN DER LEERZEICHEN MIT ;"NULLEN" (30H) ; A1 LD A,C OR B JR Z A4 INC HL LD (HL),30H DEC BC JR A1 ; ;UP. ENDE ; A4 RET ; ; ;UP."ORG" ; ;BEENDIGUNG UP."X" UND SPRUNG ZUM ORGA- ;NISATORISCHEN VERTEILER (MA 28) ; ORG LD HL,MA28 EX (SP),HL RET MA28 LD A,(K9) CP 0 ;LESEN ? JP Z ORG3 CP 1 JP Z COMPARE CP 2 JP Z CHECKSU CP 3 JP Z CHECK CP 4 JP Z BLANK CP 5 JP Z SCHREIBEN CP 6 JP Z DISPLAY CP 7 JP Z TAPE JP MENU ; ; ;UP."ORG1" ; ;BEENDIGUNG UP."X" UND SPRUNG ZUR MARKE ;-MA 29- ;(TEST AUF ABRUCH "TASTE-break-" IM ;FENSTER "Vpp" UND RUECKSPRUNG INS"CAOS" ; ORG1 LD HL,MA29 EX (SP),HL RET MA29 LD A,(K11) CP 3 JP Z EXIT JP MENU ; ; ;UP."ORG2" ; ;BEENDIGUNG UP."X" UND RUECKSPRUNG ZUM ;PROGRAMM-WARMSTART "EPROMMER" ; ; ORG2 LD HL,ANF EX (SP),HL RET ; ; ;UP."ORG3" ; ;PROGRAMM-VERTEILER IM UP."READ" WENN ;IN DIESEM UP. DIE DISPLAY-FUNKTION ;AKTIVIERT WURDE. ;-(WENN JA > RUECKSPRUNG ZUR EINGABE ;'FROM:' ADRESSE; ERNEUTE AUSGABE DER ;DISPLAY-FUNKTION) ;-(WENN NEIN > RUECKSPRUNG ZUR FENSTER- ;EINGABE UP. "READ") ; ORG3 EXX LD A,E CP 1 ;DIS.-ANZ. EIN ? JR Z ORG31 EXX JP LESEN ORG31 EXX JP D1 ;'FROM:' ; ;UP."HEXASC" ; ;AUSGABE DES WERTES DES HL-REGISTERS ;ALS HEXADEZIMALWERT ; ; HEXASC CALL UP DEFB 1AH RET ; ; ;UP."TABFR" ; ;ERMITTELT DEN EPROM-TYP ; TABFR LD A,(K8) CP 0 ;2716 ? JP Z MA15 CP 1 ;2732 ? JP Z MA16 CP 2 ;2764 ? JP Z MA17 CP 3 ;27128 ? JP Z MA18 CP 4 ;27256 ? JP Z MA19 CP 5 ;27256A ? JP Z MA19 RET ; ;EPROM-TYP-SPEICHERKAPAZITAET ; MA15 LD HL,7FFH RET MA16 LD HL,0FFFH RET MA17 LD HL,1FFFH RET MA18 LD HL,3FFFH RET MA19 LD HL,7FFFH RET ; ; ;UP."ASHD" ; ;WANDLUNG ASCII-CODE-FOLGE IN EINEN ;HEXADEZIMALWERT IM UP."DISPLAY" ; ASHD LD IY,K20 CALL ASHEX LD (K20),DE RET ; ; ;UP."DAHLA" ; ;AUSGABE DES WERTES DES REGISTERS HL ;PLUS DEM WERT DES INHALTES DES FEN- ;STERS A. ;-IST DAS ERGEBNIS DER ADDITION ;>0FFFFH SO ERFOLGT DIE WERTAUSGABE ;"FFFF". ; ; DAHLA LD DE,(K16) ADD HL,DE JP C MA22 CALL HEXASC MA23 RET MA22 LD HL,0FFFFH CALL HEXASC JR MA23 ; ; ;UP."PIOINIT" ; ;INITIALISIERT DIE AUSGABEKANAELE ;(PIO 1 UND 2) ; PIOINIT LD A,0FFH ;BIT-EIN/AUSG. OUT P1SA LD A,0 ;PORT AUF AUSG. OUT P1SA OUT P1DA ;AUSG. bit 0-7 ;WERT 0 ; LD A,0FFH ;BIT-EIN/AUSG. OUT P1SB LD A,0 ;PORT AUF AUSG. OUT P1SB OUT P1DB ;AUSG. bit 0-7 ;WERT 0 ; LD A,0FFH ;BIT-EIN/AUSG. OUT P2SA OUT P2SA ;PORT AUF EING. ; LD A,0FFH ;BIT-EIN/AUSG. OUT P2SB LD A,0 ;AUSG. bit 0-7 OUT P2SB ;WERT 0 ; LD A,2EH ;GRUNDINITIALI- ;SIERUNG EPROM- OUT P2DB ;STEUERUNG RET ; ; ;UP."IMPULS" ; ;REALISIERT DIE AUSGABE EINES ;PROGRAMMIERIMPULSES ; ; IMPULS CALL IRME LD A,(IY+1) OUT P2DB LD A,0FFH OUT P2SA LD A,0 OUT P2SA CALL IRMA LD A,(HL) OUT P2DA CALL IRME LD A,(IY+2) OUT P2DB CALL PGMA ;PGM AUS? OUT P1DB CALL ZEIT LD A,(IY+3) OUT P2DB CALL PGME ;PGM EIN? OUT P1DB LD A,(IY+4) OUT P2DB LD A,(IY+5) OUT P2DB RET ; ; ;UP."VERIFY" ; ;VERGLEICHT IM PROGRAMMIER-MODUS ;DEN INHALT DER ROM-ZELLE MIT DEM ;SOLLWERT DER RAM-ZELLE ; VERIFY LD A,0FFH OUT P2SA OUT P2SA LD A,(IY+6) OUT P2DB CALL IRMA IN A,P2DA RET IRME IN A,88H SET 2,A OUT 88H RET IRMA IN A,88H RES 2,A OUT 88H RET ZEIT PUSH DE LD DE,(K24) Z1 DEC DE LD A,D OR E JR NZ Z1 POP DE RET DA7 LD A,(K8) CP 3 JR Z EXPAN CP 4 JR Z EXPAN CP 5 JR Z EXPAN RET EXPAN CALL UP DEFB 23H DEFM 'EXPANDER-RAM (Y/N):' DEFB 0 MA56 LD HL,1113H LD FA,HL LD HL,101H LD FG,HL LD HL,0 LD CA,HL CALL UP DEFB 4 CP 59H JR Z MA57 CP 4EH JP Z MA58 JR MA56 MA57 LD HL,1300H LD FA,HL LD HL,128H LD FG,HL LD HL,0 LD CA,HL CALL UP DEFB 23H DEFM 'SWITCH 43' DEFB 0 LD HL,1307H LD FA,HL LD HL,102H LD FG,HL LD HL,0 LD CA,HL CALL DE1406 CALL GUL114 CALL ASH114 LD HL,(K16) LD A,2 LD D,43H CALL UP DEFB 26H LD HL,0 LD (K16),HL MA58 RET CLEAR LD A,6 LD CO,A LD HL,616H LD FA,HL LD HL,611H LD FG,HL LD HL,0 LD CA,HL CALL UP DEFB 23H DEFB 11H DEFB 0CH DEFB 0 CALL CLEAR2 LD A,(K9) CP 5 JP Z DEABC21 ;> MENU JP DEABC2 ;> MENU CLEAR1 PUSH AF LD A,2 LD CO,A LD HL,1C12H LD FA,HL LD HL,110H LD FG,HL LD HL,0 LD CA,HL CALL UP DEFB 23H DEFB 11H DEFB 0CH DEFB 0 POP AF CP 44H JP Z SDUP JP SCHREIBEN CLEAR2 LD A,2 LD CO,A LD HL,1801H LD FA,HL LD HL,319H LD FG,HL LD HL,0 LD CA,HL CALL UP DEFB 23H DEFB 11H DEFB 0CH DEFB 0 RET LEP 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 RET PGME LD A,(K8) CP 2 ;2764? JR Z PGME1 CP 3 ;27128? JR Z PGME1 LD A,D RET PGME1 LD A,D SET 6,A RET PGMA LD A,(K8) CP 2 JR Z PGMA1 CP 3 JR Z PGMA1 LD A,D RET PGMA1 LD A,D RES 6,A RET ANF2 CALL PIOINIT LD HL,ANF EX (SP),HL RET COUNTO LD A,(IX+2) CALL UP DEFB 1CH LD A,3EH CALL UP DEFB 24H LD HL,0 LD CA,HL RET SAEND EX DE,HL SCF CCF SBC HL,DE RET UPINIT LD HL,(0B7B0H) ADD HL,DE ADD HL,DE LD E,(HL) INC HL LD D,(HL) LD (K29),DE RET ZKTAST PUSH AF PUSH BC LD A,(K35) CALL UP DEFB 14H POP BC POP AF RET ÿÿÿÿÿÿ