Dies ist eine alte Version des Dokuments!
Version OS 1.2
AS V1.42 Beta [Bld 85] - source file os.asm - page 1 - 5/12/2013 9:23:58 1/ 0 : page 0 2/ 0 : 3/ 0 : ;------------------------------------------------------------------------------ 4/ 0 : ; 20.05.2004 volker pohlers; letzte Änderung 12.05.2013 5/ 0 : ; basierend auf der PDF-Datei von U. Zander habe ich das Listing korrigiert 6/ 0 : ; und an den Arnold-Assembler angepasst. Das erzeugte Binärfile entspricht 7/ 0 : ; zu 100% dem BIOS des Z9001. 8/ 0 : ; Lediglich die Meldungstexte wurden an die Schreibweise des BIOS des Z9001 9/ 0 : ; angepasst (orig. Zeilen 2225-2252). 10/ 0 : ; 11/ 0 : ; vp 2007: Einbindung aller bekannten Versionen des OS 12/ 0 : ; vp 2007: Einbinden der ROMBANK-Erweiterung von U.Zander 13/ 0 : ; vp 2007: erweiterte Dokumentation im Listing 14/ 0 : ; vp 19.10.2009: OS 1.1 ergänzt 15/ 0 : ; vp 21.01.2011: neu strukturiert, einzelne Patches sind optional wählbar 16/ 0 : ; neu eorpatch, krtgrafik, extcio 17/ 0 : ; vp 24.01.2011 neuer Patch von U.Zander f. SHLOC 18/ 0 : ; vp 12.05.2013 Kommentare f. Kassettenroutinen erweitert 19/ 0 : ;------------------------------------------------------------------------------ 20/ 0 : ; extcio: Um SD-Karten/RAM-Disk etc. einfach nutzbar zu machen, wurden die 21/ 0 : ; Routinen zum Blocklesen und -schreiben als Erweiterung verfügbar gemacht. 22/ 0 : ; auf Adr. 58h und und 5Ah werdne die Adressen der externen Routinen f. MAREK 23/ 0 : ; und KARAM erwartet. Eine solche Erweiterung wird erkannt und genutzt, wenn sich 24/ 0 : ; auf der Zieladresse der Wert 3AH befindet (das ist der Befehl "LD A,(nn)") 25/ 0 : ;------------------------------------------------------------------------------ 26/ 0 : 27/ 0 : ; OS-Version 1.1, 1.2 oder 1.3 28/ 0 : =$C osver equ 12 ;11,12,13 29/ 0 : 30/ 0 : ; Systemversion, setzt sich aus Einzelpatches zusammen 31/ 0 : =os sysver equ "os" ;os,rb21,rb,vp 32/ 0 : 33/ 0 : =>TRUE if sysver == "os" 34/ 0 : ;Standard-OS, keine Patches 35/ 0 : =$0 tastneu equ 0 ; geänderte Tastaturabfrage Version RB21 36/ 0 : =$0 shlocFlg equ 0 ; Nutzung von Adr. 26h (SHLOC) statt PIO 88h f. CAPS LOCK Flag 37/ 0 : ;; nur wenn tastneu = 1, können die nachfolgenden Patches genutzt werden 38/ 0 : =$0 farb16 equ 0 ; 16-Farben-Unterstützung 39/ 0 : =$0 rombank equ 0 ; ROM-Bank durchsuchen 40/ 0 : =$0 rommenu equ 0 ; Option f. ROM-Bank: autom. Aufruf von "H" 41/ 0 : =$0 eorpatch equ 0 ; Geänderte Speicherinitialisierung wg. abschaltbarer Module 42/ 0 : =$0 krtgrafik equ 0 ; bei interner Zeichenausgabe KRT abschalten 43/ 0 : =$0 extcio equ 0 ; ext. Kassettenroutinen ermöglichen 44/ 0 : ;geänderte Begrüßung 16 Zeichen, wenn leer, dann orig. "robotron Z 9001" 45/ 0 : ;resmsg equ "robotron Z 9001" 46/ 0 : 47/ 0 : =>FALSE elseif sysver == "rb21" 48/ 0 : ; Version U. Zander RB21 49/ 0 : tastneu equ 1 ; geänderte Tastaturabfrage Version RB21 50/ 0 : shlocFlg equ 0 ; Nutzung von Adr. 26h (SHLOC) statt PIO 88h f. CAPS LOCK Flag 51/ 0 : farb16 equ 1 ; 16-Farben-Unterstützung 52/ 0 : rombank equ 1 ; ROM-Bank durchsuchen 53/ 0 : rommenu equ 1 ; Option f. ROM-Bank: autom. Aufruf von "H" 54/ 0 : eorpatch equ 0 ; Geänderte Speicherinitialisierung wg. abschaltbarer Module 55/ 0 : krtgrafik equ 0 ; bei interner Zeichenausgabe KRT abschalten 56/ 0 : extcio equ 0 ; ext. Kassettenroutinen ermöglichen 57/ 0 : resmsg equ " Z-80 COMPUTER Ë" ; U. Zander f. RB21 58/ 0 : 59/ 0 : =>FALSE elseif sysver == "rb" 60/ 0 : ; Version U. Zander farb16neu 24.01.2011 61/ 0 : ; Änderung gegenüber tastneu: Nutzung von Adr. 26h (SHLOC) statt PIO 88h f. CAPS LOCK Flag 62/ 0 : tastneu equ 1 ; geänderte Tastaturabfrage Version RB21 63/ 0 : shlocFlg equ 1 ; Nutzung von Adr. 26h (SHLOC) statt PIO 88h f. CAPS LOCK Flag 64/ 0 : farb16 equ 1 ; 16-Farben-Unterstützung 65/ 0 : rombank equ 1 ; ROM-Bank durchsuchen 66/ 0 : rommenu equ 0 ; Option f. ROM-Bank: autom. Aufruf von "H" 67/ 0 : eorpatch equ 1 ; Geänderte Speicherinitialisierung wg. abschaltbarer Module 68/ 0 : krtgrafik equ 0 ; bei interner Zeichenausgabe KRT abschalten 69/ 0 : extcio equ 0 ; ext. Kassettenroutinen ermöglichen 70/ 0 : resmsg equ "robotron Z9001 Ë" ; farb16 71/ 0 : 72/ 0 : =>FALSE elseif sysver == "vp" 73/ 0 : ; Version VP 74/ 0 : tastneu equ 1 ; geänderte Tastaturabfrage Version RB21 75/ 0 : shlocFlg equ 1 ; Nutzung von Adr. 26h (SHLOC) statt PIO 88h f. CAPS LOCK Flag 76/ 0 : farb16 equ 1 ; 16-Farben-Unterstützung 77/ 0 : rombank equ 0 ; ROM-Bank durchsuchen 78/ 0 : rommenu equ 0 ; Option f. ROM-Bank: autom. Aufruf von "H" 79/ 0 : eorpatch equ 1 ; Geänderte Speicherinitialisierung wg. abschaltbarer Module 80/ 0 : krtgrafik equ 1 ; bei interner Zeichenausgabe KRT abschalten 81/ 0 : extcio equ 1 ; ext. Kassettenroutinen ermöglichen 82/ 0 : resmsg equ "Z9001 kompakt " ; VP 83/ 0 : [33] endif 84/ 0 : 85/ 0 : ;PN MONITOR 16.08.85 86/ 0 : ; 87/ 0 : ;MONITOR FUER SERIENGERAET 1985 88/ 0 : ;V 01.02. 89/ 0 : ; 90/ 0 : ; TITL ' R0BOTRON Z 9001 - MONITOR ' 91/ 0 : ; 92/ 0 : cpu z80 93/ F000 : ORG 0F000H 94/ F000 : ; 95/ F000 : ;******************************************************************* 96/ F000 : ;* * 97/ F000 : ;* MONITOR - D E F I N I T I O N E N * 98/ F000 : ;* * 99/ F000 : ;******************************************************************* 100/ F000 : ; 101/ F000 : =4H IOBYT: EQU 4 ;I/O-BYTE 102/ F000 : =BH SPSV: EQU 0BH ;REGISTER FUER NUTZERSTACK 103/ F000 : =DH BCSV: EQU 0DH ;REGISTER FUER BC 104/ F000 : =FH ASV: EQU 0FH ;REGISTER FUER A 105/ F000 : =13H JOYR: EQU 13H ;SPIELHEBEL 1 106/ F000 : =14H JOYL: EQU 14H ;SPIELHEBEL 2 107/ F000 : =15H LISW: EQU 15H ;SCHALTER FUER DRUCKERAUSGABE 108/ F000 : =16H BSW: EQU 16H ;SCHALTER KONTROLLTON 109/ F000 : =17H COLSW: EQU 17H ;PUFFER FARBSTEUERCODE 110/ F000 : =1BH DMA: EQU 1BH ;ZEIGER AUF KASSETTENPUFFER 111/ F000 : =1DH STUND: EQU 1DH ;PUFFER STUNDEN 112/ F000 : =1EH MIN: EQU 1EH ;PUFFER MINUTEN 113/ F000 : =1FH SEK: EQU 1FH ;PUFFER SEKUNDEN 114/ F000 : =23H COUNT: EQU 23H ;ZAEHLER CTC2 - INTERRUPTS 115/ F000 : =24H LAKEY: EQU 24H ;LETZTES GUELTIGES ZEICHEN 116/ F000 : =25H KEYBU: EQU 25H ;TASTATURPUFFER 117/ F000 : =26H SHLOC: EQU 26H ;SCHALTER SHIFT LOCK 118/ F000 : =27H ATRIB: EQU 27H ;AKTUELLES FARBATRIBUT 119/ F000 : =2BH CHARP: EQU 2BH ;ZEIGER AUF SPALTE 120/ F000 : =2CH LINEP: EQU 2CH ;ZEIGER AUF ZEILE 121/ F000 : =2DH CURS: EQU 2DH ;PHYS. CURSORADRESSE 122/ F000 : =2FH PU: EQU 2FH ;HILFSZELLE (TIME + Status CONST) 123/ F000 : =33H WORKA: EQU 33H ;HILFSZELLE (ASGN) 124/ F000 : =34H BUFFA: EQU 34H ;PUFFER FARBCODE Zeichen unter Cursor 125/ F000 : =35H BU: EQU 35H ;HILFSZELLE (RCONB) 126/ F000 : =36H EOR: EQU 36H ;ZEIGER AUF LOG. RAM - ENDE 127/ F000 : =3BH P1ROL: EQU 3BH ;1. ZU ROLLENDE ZEILE-1 128/ F000 : =3CH P2ROL: EQU 3CH ;LETZTE ZU ROLLENDE ZEILE+1 129/ F000 : =3DH P3ROL: EQU 3DH ;1. ZU ROLLENDE SPALTE-1 130/ F000 : =3EH P4ROL: EQU 3EH ;LETZTE ZU ROLLENDE SPALTE+1 131/ F000 : =3FH BUFF: EQU 3FH ;PUFFER FUER ZEICHEN unter Cursor 132/ F000 : =40H PARBU: EQU 40H ;HILFSZELLE (ASGN) 133/ F000 : =5CH FCB: EQU 5CH ;FILE-CONTROL-BLOCK 134/ F000 : =69H PSUM: EQU 69H ;PRUEFSUMME 135/ F000 : =6AH ARB: EQU 6AH ;ARBEITSZELLE 136/ F000 : =6BH BLNR: EQU 6BH ;BLOCKNUMMER 137/ F000 : =6CH LBLNR: EQU 6CH ;ZU LESENDE BLOCKNUMMER 138/ F000 : =6DH AADR: EQU 6DH ;ANFANGSADRESSE 139/ F000 : =6FH EADR: EQU 6FH ;ENDADRESSE 140/ F000 : =71H START: EQU 71H ;STARTADRESSE 141/ F000 : =80H CONBU: EQU 80H ;CCP ZEICHENKETTENPUFFER 142/ F000 : 143/ F000 : =>FALSE if extcio 144/ F000 : EXTRD: EQU FCB-4 ;Adr. ext. MAREK-Routine. Diese muss mit LD A,(nn) beginnen 145/ F000 : EXTWR: EQU FCB-2 ;Adr. ext. KARAM-Routine. Diese muss mit LD A,(nn) beginnen 146/ F000 : [143] endif 147/ F000 : 148/ F000 : =80H STDMA: EQU 80H ;STANDARDPUFFER FUER KASSETTE 149/ F000 : =100H INTLN: EQU 100H ;INTERNER ZWISCHENPUFFER 150/ F000 : =EC00H SCTOP: EQU 0EC00H ;ADR. ZEICHENSPEICHER 151/ F000 : =EFC0H MAPPI: EQU 0F000H-64 ;SYSTEMBYTE 152/ F000 : =EFC1H MAPAR: EQU MAPPI+1 ;64 BIT KONFIG.-REGISTER 153/ F000 : =EFC9H ATTY: EQU MAPAR+8 ;ADR. TREIBERADRESSVEKTOR 154/ F000 : =EFCBH ACRT1: EQU ATTY+2 ;VEKT.-ADR. CRT-TREIBER CONST 155/ F000 : =EFCDH ABAT: EQU ACRT1+2 ;VEKT.-ADR. BAT-TREIBER CONST 156/ F000 : =EFE3H ACRT2: EQU ACRT1+24 ;VEKT.-ADR. CRT-TREIBER LIST 157/ F000 : =EFE9H TXCON: EQU ATTY+32 ;ZEICHENKETTENADRESSVEKTOR 158/ F000 : ;VEKT.-ADR. STRING FUER CONST 159/ F000 : =EFEBH TXRDR: EQU TXCON+2 ;VEKT.-ADR. STRING FUER READER 160/ F000 : =EFEDH TXPUN: EQU TXCON+4 ;VEKT.-ADR. STRING FUER PUNCH 161/ F000 : =EFEFH TXLPT: EQU TXCON+6 ;VEKT.-ADR. STRING FUER LIST 162/ F000 : =28H LINEL: EQU 40 ;LAENGE PHYSISCHE BILDSCHIRMZEILE 163/ F000 : =400H ONEKB: EQU 400H ;KONSTANTE 1 KBYTE 164/ F000 : =1H STIOB: EQU 1 ;STANDARD I/O-BYTE 165/ F000 : =2H TYPIE: EQU 2 ;TYP EINGABEFEHLER 166/ F000 : =3H ZYPRE: EQU 3 ;TYP BEREICHSFEHLER 167/ F000 : =8H CURSL: EQU 8 ;CURSOR LINKS 168/ F000 : =9H CURSR: EQU 9 ;CURSOR RECHTS 169/ F000 : =AH CURSD: EQU 0AH ;CURSOR RUNTER (LF) 170/ F000 : =BH CURSU: EQU 0BH ;CURSOR HOCH 171/ F000 : =CH CLEAR: EQU 0CH ;BILDSCHIRM LOESCHEN 172/ F000 : =DH CARIG: EQU 0DH ;CURSOR AN ZEILENANFANG (CR) 173/ F000 : =20H SPACE: EQU 20H ;LEERZEICHEN 174/ F000 : =20H FIRST: EQU SPACE ;1. DRUCKBARES ZEICHEN 175/ F000 : ; 176/ F000 : ; System-PIO ist PIO1 177/ F000 : =88H DPIO1A: equ 88H ;Daten Kanal A Video 178/ F000 : =89H DPIO1B: equ 89H ;Daten Kanal B User-E/A 179/ F000 : =8AH SPIO1A: equ 8aH ;Steuerung Kanal A 180/ F000 : =8BH SPIO1B: equ 8bH ;Steuerung Kanal B 181/ F000 : 182/ F000 : ; Tastatur-PIO ist PIO2 183/ F000 : =90H DPIOA: EQU 90H ;TASTATUR-PIO A DATEN 184/ F000 : =91H DPIOB: EQU 91H ;TASTATUR-PIO B DATEN 185/ F000 : =92H SPIOA: EQU 92H ;TASTATUR-PIO A KOMMANDO 186/ F000 : =93H SPIOB: EQU 93H ;TASTATUR-PIO B KOMMANDO 187/ F000 : =80H CTC0: EQU 80H 188/ F000 : =82H CTC2: EQU 82H 189/ F000 : =83H CTC3: EQU 83H 190/ F000 : ; 191/ F000 : ; EJEC 192/ F000 : ; 193/ F000 : ;******************************************************************* 194/ F000 : ;* * 195/ F000 : ;* OPERATING SYSTEM - S P R U N G TA B E L L E * 196/ F000 : ;* * 197/ F000 : ;******************************************************************* 198/ F000 : ; 199/ F000 : C3 64 F6 RESET: JP INIT ;KALTSTART 200/ F003 : C3 AE F6 JP WBOOT ;WARMSTART 201/ F006 : C3 56 F7 CSTS: JP CONST ;STATUS CONST 202/ F009 : C3 7F F7 CONSI: JP CONIN ;EINGABE ZEICHEN VON CONST 203/ F00C : C3 83 F7 CONSO: JP COOUT ;AUSGABE ZEICHEN ZU CONST 204/ F00F : C3 9E F7 LISTO: JP LIST ;AUSGABE ZEICHEN ZU LIST 205/ F012 : C3 AE F7 PUNO: JP PUNCH ;AUSGABE ZEICHEN ZU PUNCH 206/ F015 : C3 A8 F7 READI: JP READR ;EINGABE ZEICHEN VON READER 207/ F018 : C3 C4 F7 GETST: JP GSTIK ;ABFRAGE SPIELHEBEL 208/ F01B : C3 DE F5 JP BOSER ;NICHT GENUTZT 209/ F01E : C3 0B F8 SETTI: JP STIME ;STELLEN UHRZEIT 210/ F021 : C3 FC F7 GETTI: JP GTIME ;ABFRAGE UHRZEIT 211/ F024 : C3 DF F7 SETDM: JP SDMA ;SETZEN ADR. KASSETTENPUFFER 212/ F027 : C3 34 F4 READS: JP READ ;BLOCKLESEN SEQUENTIELL 213/ F02A : C3 6F F4 WRITS: JP WRITE ;BLOCKSCHREIBEN SEQUENTIELL 214/ F02D : C3 A4 F7 JP LLIST ;STATUS LIST 215/ F030 : C3 33 F7 JP GCURS ;ABFRAGE PHYS. CURSORADRESSE 216/ F033 : C3 37 F7 JP SCURS ;SETZEN PHYS. CURSORADRESSE 217/ F036 : C3 DE F5 JP BOSER ;NICHT GENUTZT 218/ F039 : C3 D2 F7 GETIO: JP GIOBY ;ABFRAGE I/O-BYTE 219/ F03C : C3 D9 F7 SETIO: JP SIOBY ;SETZEN I/O-BYTE 220/ F03F : C3 E5 F7 GETM: JP GMEM ;LOGISCHER SPEICHERTEST 221/ F042 : C3 F4 F7 SETM: JP SMEM ;SETZEN SPEICHERKONFIGURATION 222/ F045 : ; 223/ F045 : ; EJEC 224/ F045 : ; 225/ F045 : ;******************************************************************* 226/ F045 : ;* * 227/ F045 : ;* BASIC OPERATING SYSTEM - A D R E S S T A B E L L E * 228/ F045 : ;* * 229/ F045 : ;******************************************************************* 230/ F045 : ; 231/ F045 : 64 F6 JPVEK: DW INIT ;KALTSTART/RESET <00> 232/ F047 : 09 F0 DW CONSI ;EINGABE VON CONST <01> 233/ F049 : 0C F0 DW CONSO ;AUSGABE ZU CONST <02> 234/ F04B : 15 F0 DW READI ;EINGABE VON READER <03> 235/ F04D : 12 F0 DW PUNO ;AUSGABE ZU PUNCH <04> 236/ F04F : 0F F0 DW LISTO ;AUSGABE ZU LIST <05> 237/ F051 : 18 F0 DW GETST ;ABFRAGE SPIELHEBEL <06> 238/ F053 : 39 F0 DW GETIO ;ABFRAGE I/O-BYTE <07> 239/ F055 : 3C F0 DW SETIO ;SETZEN I/O-BYTE <08> 240/ F057 : E2 F3 DW PRNST ;AUSGABE ZEICHENKETTE <09> 241/ F059 : 65 F3 DW RCONB ;EINGABE ZEICHENKETTE <10> 242/ F05B : 06 F0 DW CSTS ;STATUS CONST <11> 243/ F05D : F3 F3 DW RETVN ;ABFRAGEVERSIONSNUMMER <12> 244/ F05F : F8 F3 DW OPENR ;OPEN LESEN KASSETTE <13> 245/ F061 : 2D F4 DW CLOSR ;CLOSE LESEN KASSETTE <14> 246/ F063 : 45 F4 DW OPENW ;OPEN SCHREIBEN KASSETTE <15> 247/ F065 : 6A F4 DW CLOSW ;CLOSE SCHREIBEN KASSETTE <16> 248/ F067 : 3C F7 DW GETCU ;ABFRAGE LOG. CURSORADR. <17> 249/ F069 : 3B F7 DW SETCU ;SETZEN LOG. CURSORADR. <18> 250/ F06B : DE F5 DW BOSER ;NICHT GENUTZT 251/ F06D : 27 F0 DW READS ;BLOCKLESEN SEQUENTIELL <20> 252/ F06F : 2A F0 DW WRITS ;BLOCKSCHREIBEN SEQUENTIELL <21> 253/ F071 : 1E F0 DW SETTI ;STELLEN UHRZEIT <22> 254/ F073 : 21 F0 DW GETTI ;ABFRAGE UHRZEIT <23> 255/ F075 : A8 F4 DW PRITI ;AUSGABE UHRZEIT <24> 256/ F077 : E3 FA DW INITA ;INITIALISIERUNG TASTATUR <25> 257/ F079 : 24 F0 DW SETDM ;SETZEN ADR. KASSETTENPUFF. <26> 258/ F07B : 3F F0 DW GETM ;LOG. SPEICHERTEST <27> 259/ F07D : 42 F0 DW SETM ;SETZEN SPEICHERKONFIG. <28> 260/ F07F : 3E F7 DW DCU ;LOESCHEN CURSOR <29> 261/ F081 : 3D F7 DW SCU ;ANZEIGE CURSOR <30> 262/ F083 : B9 F5 DW COEXT ;VORVERARBEITEN ZEICHENKET. <31> 263/ F085 : DE F5 DW BOSER ;NICHT GENUTZT 264/ F087 : D8 F4 DW RRAND ;BLOCKLESEN <33> 265/ F089 : ; 266/ F089 : ; EJEC 267/ F089 : ; 268/ F089 : ;******************************************************************* 269/ F089 : ;* * 270/ F089 : ;* C O N S O L - C O M M A N D - P R O G R A M * 271/ F089 : ;* * 272/ F089 : ;******************************************************************* 273/ F089 : ; 274/ F089 : 21 89 F0 GOCPM: LD HL,GOCPM 275/ F08C : E5 PUSH HL ;RUECKKEHRADR. KELLERN 276/ F08D : 21 80 00 LD HL,STDMA 277/ F090 : 22 1B 00 LD (DMA),HL ;STANDARDKASSETTENPUFFER 278/ F093 : 3E 3E LD A,'>' 279/ F095 : CD 05 F3 CALL OUTA ;AUSGABE PROMPT 280/ F098 : CD 5C F3 CALL GETMS ;EINGABE KOMMANDOZEILE 281/ F09B : 38 23 JR C, DISPE ;STOP-TASTE ODER FEHLER 282/ F09D : CD B9 F5 CALL COEXT ;VORVERARB. EINGABEZEILE 283/ F0A0 : D8 RET C ;ZEICHENKETTE LEER 284/ F0A1 : 21 EA F5 LD HL,ERDIS 285/ F0A4 : E5 PUSH HL ;ADR. FEHLERROUTINE KELLERN 286/ F0A5 : CD EA F1 CALL GVAL ;1.PARAMETER HOLEN 287/ F0A8 : CA E6 F5 JP Z, ERPAR ;KEIN NAME 288/ F0AB : ;******************************************************************* 289/ F0AB : ;* BEHANDLUNG TRANSIENTKOMMANDOS * 290/ F0AB : ;******************************************************************* 291/ F0AB : ; 292/ F0AB : ;NAMEN IM SPEICHER SUCHEN 293/ F0AB : C5 INDV: PUSH BC ;TRENNZEICHEN MERKEN 294/ F0AC : CD 8E F2 CALL CPROM ;NAMEN IM SPEICHER SUCHEN 295/ F0AF : C1 POP BC 296/ F0B0 : 28 07 JR Z, JMPHL ;NAMEN GEFUNDEN (HL)=STARTADR. 297/ F0B2 : ;******************************************************************* 298/ F0B2 : ;* PROGRAMM LADEN UND STARTEN * 299/ F0B2 : ;******************************************************************* 300/ F0B2 : CD 26 F5 INFIL: CALL LOAD1 ;DATEI LADEN 301/ F0B5 : D8 RET C ;FEHLER BEIM LADEN 302/ F0B6 : 2A 71 00 LD HL,(START) ;(HL)=GELESENE STARTADRESSE 303/ F0B9 : E9 JMPHL: JP (HL) ;SPRUNG ZUR AUSFUEHRUNG 304/ F0BA : ;******************************************************************* 305/ F0BA : ;* A S G N - KOMMANDO * 306/ F0BA : ;******************************************************************* 307/ F0BA : ; Funktion: Zuweisung log. Gerät - phys. Gerät 308/ F0BA : ; Anzeige der aktuellen Zuweisung 309/ F0BA : ; a) Eingang 310/ F0BA : ; - ASGN 311/ F0BA : ; gerufen von: GOCPM über JMP (HL) 312/ F0BA : ; Parameter : CY 0 weitere Parameter im Konsolpuffer 313/ F0BA : ; 1 keine weiteren Parameter 314/ F0BA : ; b) gerufene Programme 315/ F0BA : ; c) Ausgang 316/ F0BA : ; - ALDEV 317/ F0BA : ; - DISPA 318/ F0BA : ; 319/ F0BA : 08 ASGN: EX AF, AF' 320/ F0BB : 30 2A JR NC, ALDEV ;WEITERE PARAMETER FOLGEN 321/ F0BD : ; 322/ F0BD : ;ANZEIGE DER AKTUELLEN ZUWEISUNGEN 323/ F0BD : ; 324/ F0BD : ; Funktion: Anzeige der aktuellen Gerätezuweisung 325/ F0BD : ; a) Eingang 326/ F0BD : ; - DISPA 327/ F0BD : ; gerufen von: ASGN, ALDEV 328/ F0BD : ; Parameter : SADV Stringadreßvektor zur Adressierung der zum log. Gerät 329/ F0BD : ; definierten Ausgebestrings 330/ F0BD : ; LOGDV Tabelle der logischen Geräte 331/ F0BD : ; - DISPE 332/ F0BD : ; gerufen von: GOCPM Zeichen-E/A-Fehler in der Kommandoeingabe 333/ F0BD : ; b) gerufene Programme 334/ F0BD : ; - OCRLF Ausgabe CRLF 335/ F0BD : ; - PRNST Ausgabe String 336/ F0BD : ; - OUTA Ausgabe Zeichen 337/ F0BD : ; c) Ausgang 338/ F0BD : ; - WBOOT Fehler nach Gerätezuweisung bei Zeichenausgabe 339/ F0BD : ; d) Return 340/ F0BD : ; Parameter: - 341/ F0BD : ; 342/ F0BD : CD FE F2 DISPA: CALL OCRLF 343/ F0C0 : DA AE F6 DISPE: JP C, WBOOT ;FEHLER NACH ZUWEISUNG 344/ F0C3 : 06 04 LD B,4 ;ANZAHL DER LOG. GERAETE 345/ F0C5 : 21 E9 EF LD HL,TXCON ;ADRESSTABELLE ZEICHENKETTEN 346/ F0C8 : 11 D5 FB LD DE,PHYDV+2 ;NAMENSTABELLE DER GERAETE 347/ F0CB : CD E2 F3 DA2: CALL PRNST 348/ F0CE : 3E 3A LD A,':' 349/ F0D0 : CD 05 F3 CALL OUTA 350/ F0D3 : D5 PUSH DE 351/ F0D4 : 5E LD E,(HL) ; 352/ F0D5 : 23 INC HL ; 353/ F0D6 : 56 LD D,(HL) ;(DE)=ADRESSE DER ZUGEHOERIGEN 354/ F0D7 : 23 INC HL ;ZEICHENKETTE 355/ F0D8 : E5 PUSH HL 356/ F0D9 : CD E2 F3 CALL PRNST ;AUSGABE ZEICHENKETTE 357/ F0DC : E1 POP HL 358/ F0DD : D1 POP DE 359/ F0DE : 13 INC DE 360/ F0DF : 13 INC DE 361/ F0E0 : 13 INC DE ;NAECHSTER GERAETENAME 362/ F0E1 : CD FE F2 CALL OCRLF 363/ F0E4 : 10 E5 DJNZ DA2 364/ F0E6 : C9 RET 365/ F0E7 : ; 366/ F0E7 : ; 367/ F0E7 : ;ZUWEISUNG LOGISCHES GERAET - PHYSISCHES GERAET 368/ F0E7 : ; 369/ F0E7 : ; a) Eingang 370/ F0E7 : ; - ALDEV 371/ F0E7 : ; gerufen von: ASGN 372/ F0E7 : ; Parameter : CONBU Konsolpuffer mit weiteren Eingabeparametern 373/ F0E7 : ; b) gerufene Programme 374/ F0E7 : ; - GVAL Parameter übernehmen 375/ F0E7 : ; - LOCK log. Gerätenamen suchen 376/ F0E7 : ; - CDEL Zeichentest 377/ F0E7 : ; - LOPDV Suchen phys. Gerätenamen 378/ F0E7 : ; - INDV Einlesen Treiberprogramm 379/ F0E7 : ; - EXIO Prüfen der Zuweisung 380/ F0E7 : ; c) Ausgang 381/ F0E7 : ; - ERPAR Parameterfehler 382/ F0E7 : ; - ERINP Eingabefehler 383/ F0E7 : ; - DISPA 384/ F0E7 : ; 385/ F0E7 : CD EA F1 ALDEV: CALL GVAL ;NAECHSTEN PARAMETER HOLEN 386/ F0EA : 28 2C JR Z, ALDE1 ;KEIN NAME 387/ F0EC : 08 EX AF, AF' 388/ F0ED : DA E6 F5 JP C, ERPAR ;NAECHSTER PARAMETER FEHLT 389/ F0F0 : C5 PUSH BC ;TRENNZEICHEN MERKEN 390/ F0F1 : 01 09 04 LD BC,409H ;(B)=ANZAHL LOG. GERAETE 391/ F0F4 : ;(C)=LAENGE TABELLENNAME 392/ F0F4 : 21 D5 FB LD HL,PHYDV+2 393/ F0F7 : CD B8 F2 CALL LOCK ;NAME SUCHEN 394/ F0FA : 58 LD E,B 395/ F0FB : C1 POP BC 396/ F0FC : 20 50 JR NZ, ALD00 ;NAME NICHT GEFUNDEN 397/ F0FE : 3E 04 LD A,4 398/ F100 : 93 SUB E 399/ F101 : 87 ADD A, A 400/ F102 : 32 33 00 LD (WORKA),A ;ZWISCHENERGEBNIS MERKEN 401/ F105 : 22 40 00 LD (PARBU),HL ;ADR. ZEICHENKETTE MERKEN 402/ F108 : 79 LD A,C 403/ F109 : FE 3A CP A, ':' 404/ F10B : 20 05 JR NZ, ALDE0 405/ F10D : CD C4 F1 CALL CDEL 406/ F110 : FE 3D CP A, '=' 407/ F112 : C2 E2 F5 ALDE0: JP NZ, ERINP ;FALSCHE TRENNZEICHEN 408/ F115 : CD EA F1 CALL GVAL ;LETZTEN PARAMETER HOLEN 409/ F118 : 28 5B ALDE1: JR Z, ALDER ;KEIN NAME 410/ F11A : C5 PUSH BC ;TRENNZEICHEN MERKEN 411/ F11B : CD B2 F2 CALL LOLDV ;PHYS. GERAETENAMEN SUCHEN 412/ F11E : C1 POP BC 413/ F11F : 28 17 JR Z, ALD0 ;NAMEN GEFUNDEN 414/ F121 : CD AB F0 CALL INDV ;TREIBER VON KASSETTE HOLEN 415/ F124 : D8 RET C ;FEHLER BEIM LADEN 416/ F125 : 417/ F125 : ALD: 418/ F125 : =>FALSE IF osver == 11 419/ F125 : ex af, af' 420/ F125 : =>TRUE ELSE 421/ F125 : 00 NOP 422/ F126 : [418] ENDIF 423/ F126 : 424/ F126 : E5 PUSH HL 425/ F127 : D5 PUSH DE 426/ F128 : 7C LD A,H ;(H)=LOG. GERAETENUMMER (0,2,4,6,) 427/ F129 : 84 ADD A, H 428/ F12A : 85 ADD A, L ;(L)=PHYS. GERAETENUMMER 429/ F12B : 87 ADD A, A 430/ F12C : 16 00 LD D,0 431/ F12E : 5F LD E,A 432/ F12F : 21 C9 EF LD HL,ATTY ;TABELLE DER TREIBERADRESSEN 433/ F132 : 19 ADD HL,DE 434/ F133 : 71 LD (HL),C ; 435/ F134 : 23 INC HL ;ADRESSE IN TABELLE BRINGEN 436/ F135 : 70 LD (HL),B ; 437/ F136 : D1 POP DE 438/ F137 : E1 POP HL 439/ F138 : 3A 04 00 ALD0: LD A,(IOBYT) ;I/O-BYTE MERKEN 440/ F13B : 08 EX AF, AF' 441/ F13C : 30 37 JR NC, ALDER ;ZU VIELE PARAMETER 442/ F13E : 3A 33 00 LD A,(WORKA) ;ZWISCHENERGEBNIS ZURUECK 443/ F141 : 47 LD B,A 444/ F142 : 4D LD C,L 445/ F143 : BC CP A, H ; 446/ F144 : 28 0A JR Z, ALD1 ; 447/ F146 : 95 SUB L ; 448/ F147 : 3C INC A ; 449/ F148 : FE 06 CP A, 6 ;TEST AUF ZULAESSIGE GERAETE 450/ F14A : 28 04 JR Z, ALD1 ; 451/ F14C : 3D DEC A ; 452/ F14D : B8 CP A, B ; 453/ F14E : 20 25 ALD00: JR NZ, ALDER ;FALSCHES GERAET 454/ F150 : D5 ALD1: PUSH DE 455/ F151 : 58 LD E,B ;(E)=INTERNE NUMMER LOG. GERAET 456/ F152 : ;(C)=NUMMER PHYS.GERAET 457/ F152 : 21 04 00 LD HL,IOBYT 458/ F155 : 06 09 LD B,9 459/ F157 : 3C INC A 460/ F158 : CB 1E ALD6: RR (HL) ; 461/ F15A : 3D DEC A ; 462/ F15B : 20 07 JR NZ, ALD66 ; 463/ F15D : CB 39 SRL C ;I/O-BYTE MODIFIZIEREN 464/ F15F : CB 1E RR (HL) ; 465/ F161 : CB 39 SRL C ; 466/ F163 : 05 DEC B ; 467/ F164 : 10 F2 ALD66: DJNZ ALD6 468/ F166 : 43 LD B,E 469/ F167 : CD CE F2 CALL EXIO ;ZUWEISUNG PRUEFEN 470/ F16A : D1 POP DE 471/ F16B : 30 0B JR NC, ALD7 ;ZUWEISUNGSFEHLER 472/ F16D : 08 EX AF, AF' 473/ F16E : 32 04 00 LD (IOBYT),A ;I/O-BYTE RESTAURIEREN 474/ F171 : 3E 04 LD A,4 475/ F173 : 37 SCF 476/ F174 : C9 RET 477/ F175 : C3 E6 F5 ALDER: JP ERPAR 478/ F178 : 2A 40 00 ALD7: LD HL,(PARBU) ;ZEICHENKETTENADR. ZURUECK 479/ F17B : 73 LD (HL),E ; 480/ F17C : 23 INC HL ;ADRESSE EINTRAGEN IN TABELLE 481/ F17D : 72 LD (HL),D ; 482/ F17E : C3 BD F0 JP DISPA ;ZUWEISUNG ANZEIGEN 483/ F181 : ; 484/ F181 : ;******************************************************************* 485/ F181 : ;* T I M E - KOMMANDO * 486/ F181 : ;******************************************************************* 487/ F181 : ; 488/ F181 : 08 TIME_: EX AF, AF' 489/ F182 : 38 34 JR C, ZAU ;KEIN WEITERER PARAMETER 490/ F184 : 06 03 LD B,3 ;ANZAHL PARAMETER 491/ F186 : 3E 17 LD A,23 ;BEREICHSGRENZE STUNDEN 492/ F188 : 32 2F 00 T0: LD (PU),A 493/ F18B : C5 PUSH BC 494/ F18C : CD EA F1 CALL GVAL ;NAECHSTEN PARAMETER HOLEN 495/ F18F : C1 POP BC 496/ F190 : 20 E3 JR NZ, ALDER ;KEINE ZAHL 497/ F192 : D8 RET C ;NICHT KONVERTIERBAR 498/ F193 : 5F LD E,A 499/ F194 : 3A 2F 00 LD A,(PU) 500/ F197 : BB CP A, E ;VERGLEICH MIT BEREICH 501/ F198 : 3E 03 LD A,3 502/ F19A : D8 RET C ;WERT ZU GROSS 503/ F19B : 4D T1: LD C,L 504/ F19C : 6C LD L,H 505/ F19D : 63 LD H,E 506/ F19E : 08 EX AF, AF' 507/ F19F : 38 10 JR C, T3 ;KEIN WEITERER PARAMETER 508/ F1A1 : 3E 3B LD A,59 ;GRENZE FUER MINUTEN; SEKUNDEN 509/ F1A3 : 10 E3 DJNZ T0 510/ F1A5 : C3 E2 F5 JP ERINP ;ZU VIELE PARAMETER 511/ F1A8 : 22 1E 00 T2: LD (MIN),HL 512/ F1AB : 79 LD A,C 513/ F1AC : 32 1D 00 LD (STUND),A 514/ F1AF : B7 OR A 515/ F1B0 : C9 RET 516/ F1B1 : ;FEHLENDE PARAMETER MIT 00 BELEGEN 517/ F1B1 : 1E 00 T3: LD E,0 518/ F1B3 : 08 EX AF, AF' 519/ F1B4 : 10 E5 DJNZ T1 520/ F1B6 : 18 F0 JR T2 ;EINTRAGEN 521/ F1B8 : ; 522/ F1B8 : ;AUSGABE DER AKTUELLEN UHRZEIT 523/ F1B8 : ; 524/ F1B8 : 11 01 01 ZAU: LD DE,INTLN+1 ;ZWISCHENPUFFER 525/ F1BB : CD A8 F4 CALL PRITI ;ZEICHENKETTE ERZEUGEN 526/ F1BE : CD E2 F3 CALL PRNST ;ZEICHENKETTE AUSGEBEN 527/ F1C1 : C3 FE F2 JP OCRLF 528/ F1C4 : ; 529/ F1C4 : ;ZEICHENTEST IN EINGABEZEILE 530/ F1C4 : ; 531/ F1C4 : ; Funktion: Übernahme des nächsten Zeichens aus dem Konsolpuffer 532/ F1C4 : ; Löschen des Zeichens mit Leerzeichen 533/ F1C4 : ; Test des Zeichens auf Trennzeichen (20H,’,’.’:’,0) 534/ F1C4 : ; a) Eingang 535/ F1C4 : ; - CDEL 536/ F1C4 : ; gerufen von: GVAL, ALDER 537/ F1C4 : ; Parameter : CONBU Konsolpuffer 538/ F1C4 : ; - CDEL2 539/ F1C4 : ; gerufen von: GVAL Test eines Zeichens auf Trennzeichen 0 540/ F1C4 : ; Parameter : A zu testendes Zeichen 541/ F1C4 : ; Z 1 542/ F1C4 : ; b) gerufene Programme 543/ F1C4 : ; - CDELI Zeichentest 544/ F1C4 : ; c) Ausgang 545/ F1C4 : ; - 546/ F1C4 : ; d) Return 547/ F1C4 : ; Parameter: A, C getestetes Zeichen 548/ F1C4 : ; Z 0 kein Trennzeichen, 1 Trennzeichen 549/ F1C4 : ; CY 1 Trennzeichen, 0 (Kennzeichen für Stringende) 550/ F1C4 : ; CONBU getestetes Zeichen gelöscht mit Leerzeichen 551/ F1C4 : ; 552/ F1C4 : 21 81 00 CDEL: LD HL,CONBU+1 553/ F1C7 : 23 CDEL1: INC HL 554/ F1C8 : 7E LD A,(HL) 555/ F1C9 : FE 20 CP A, ' ' 556/ F1CB : 28 FA JR Z, CDEL1 ;1. ZEICHEN<>20H SUCHEN 557/ F1CD : CD D7 F1 CALL CDELI ;TRENNZEICHENTEST 558/ F1D0 : 4F CDEL2: LD C,A 559/ F1D1 : C0 RET NZ ;ZEICHEN 560/ F1D2 : FE 01 CP A, 1 561/ F1D4 : D8 RET C ;ENDE ZEICHENKETTE 562/ F1D5 : BF CP A, A 563/ F1D6 : C9 RET ;TRENNZEICHEN 564/ F1D7 : ; 565/ F1D7 : ;TEST AUF TRENNZEICHEN UND LOESCHEN GESTESTETES ZEICHEN 566/ F1D7 : 7E CDELI: LD A,(HL) 567/ F1D8 : B7 OR A 568/ F1D9 : C8 RET Z ;ENDE ZEICHENKETTE 569/ F1DA : E5 PUSH HL 570/ F1DB : C5 PUSH BC 571/ F1DC : 21 AB FC LD HL,DTAB ;TABELLE DER TRENNZEICHEN 572/ F1DF : 01 05 00 LD BC,5 573/ F1E2 : ED B1 CPIR 574/ F1E4 : C1 POP BC 575/ F1E5 : E1 POP HL 576/ F1E6 : 36 20 LD (HL),' ' ;LOESCHEN ZEICHEN IN PUFFER 577/ F1E8 : 23 INC HL 578/ F1E9 : C9 RET 579/ F1EA : ; 580/ F1EA : ;PARAMETER AUS EINGABEZEILE HOLEN 581/ F1EA : ; 582/ F1EA : ; Funktion: Löschen internen Puffer (INTLN). 583/ F1EA : ; Übernahme Parameter aus CONBU nach INTLN 584/ F1EA : ; Test auf Parameterart 585/ F1EA : ; Konvertieren Parameter, wenn dieser ein Wert ist 586/ F1EA : ; a) Eingang 587/ F1EA : ; - GVAL 588/ F1EA : ; gerufen von: WBOOT, GOCPM, ALDEV, STIME, LOAD 589/ F1EA : ; Parameter : CONBU Konsolpuffer 590/ F1EA : ; b) gerufene Programme 591/ F1EA : ; - CDEL Übernahme Zeichen aus CONBU und Test 592/ F1EA : ; - CDEL1 Test Zeichen 593/ F1EA : ; - CDEL2 Test Zeichen 594/ F1EA : ; - CONV konvertieren Parameter 595/ F1EA : ; c) Ausgang 596/ F1EA : ; - ERINP Eingabefehler im Parameter 597/ F1EA : ; d) Return 598/ F1EA : ; Parameter: Z 1 Parameter war Dezimalzahl 599/ F1EA : ; 0 Parameter war keine Zahl 600/ F1EA : ; CY 0 kein Fehler 601/ F1EA : ; 1 Fehler im Parameter 602/ F1EA : ; A Konvertierte Dezimalzahl, wenn Z = 1 und CY = 0 603/ F1EA : ; C den Parameter begrenzendes Trennzeichen 604/ F1EA : ; B Länge des Parameters 605/ F1EA : ; HL Adresse des nächsten Zeichens in CONBU 606/ F1EA : ; CY’ 0 weitere Parameter in CONBU (ist in Doku falsch!) 607/ F1EA : ; 1 keine weiteren Parameter (ist in Doku falsch!) 608/ F1EA : ; A’ den Parameter begrenzendes Trennzeichen 609/ F1EA : ; INTLN Länge des Parameters 610/ F1EA : ; INTLN+1. . . übernommener Parameter 611/ F1EA : ; CONBU übernommener Parameter und Trennzeichen gelöscht mit 612/ F1EA : ; Leerzeichen 613/ F1EA : ; 614/ F1EA : 11 52 01 GVAL: LD DE,INTLN+82 615/ F1ED : AF XOR A 616/ F1EE : 06 51 LD B,81 617/ F1F0 : 12 MOP0: LD (DE),A ; 618/ F1F1 : 1B DEC DE ;LOESCHEN ZWISCHENPUFFER 619/ F1F2 : 10 FC DJNZ MOP0 ; 620/ F1F4 : E5 PUSH HL 621/ F1F5 : CD C4 F1 CALL CDEL ;TEST AUF TRENNZEICHEN 622/ F1F8 : 38 0D JR C, MOP3 ;ENDE DER ZEICHENKETTE 623/ F1FA : 28 0B JR Z, MOP3 ;TRENNZEICHEN GEFUNDEN 624/ F1FC : 12 MOP1: LD (DE),A 625/ F1FD : 04 INC B ;ALLE ZEICHEN BIS 626/ F1FE : 13 INC DE ;ZUM NAECHSTEN TRENNZEICHEN 627/ F1FF : CD D7 F1 CALL CDELI ;UEBERNEHMEN 628/ F202 : 20 F8 JR NZ, MOP1 ; 629/ F204 : CD D0 F1 CALL CDEL2 630/ F207 : 78 MOP3: LD A,B 631/ F208 : 32 00 01 LD (INTLN),A ;PARAMETERLAENGE MERKEN 632/ F20B : 79 LD A,C 633/ F20C : E1 POP HL ;TRENNZEICHEN MERKEN 634/ F20D : 08 EX AF, AF' 635/ F20E : 3A 01 01 LD A,(INTLN+1) 636/ F211 : FE 30 CP A, '0' 637/ F213 : 38 16 JR C, GV3 638/ F215 : FE 3A CP A, '9'+1 639/ F217 : 30 12 JR NC, GV3 640/ F219 : E5 PUSH HL 641/ F21A : C5 PUSH BC 642/ F21B : 11 00 01 LD DE,INTLN 643/ F21E : CD 15 F8 CALL VIEXT ;KONVERTIEREN PARAMETER 644/ F221 : C1 POP BC 645/ F222 : E1 POP HL 646/ F223 : 38 02 JR C, GV2 ;NICHT KONVERTIERBAR 647/ F225 : BF CP A, A 648/ F226 : C9 RET ;IN ORDNUNG 649/ F227 : BF GV2: CP A, A 650/ F228 : C3 E2 F5 JP ERINP ;NICHT KONVERTIERBAR 651/ F22B : FE 40 GV3: CP A, 40H 652/ F22D : 38 F8 JR C, GV2 653/ F22F : 37 SCF 654/ F230 : C9 RET ;PARAMETER KEINE DEZIMALZAHL 655/ F231 : ; 656/ F231 : ;AENDERN LOGISCHE SPEICHERKONFIGURATION 657/ F231 : ; 658/ F231 : E5 MOD: PUSH HL ;(HL)=SPEICHERADRESSE 659/ F232 : C5 PUSH BC ;(C)=STATUS (1 RAM, 0 ROM) 660/ F233 : CD 4D F2 CALL CHR0 661/ F236 : F5 PUSH AF 662/ F237 : CB 39 SRL C 663/ F239 : 18 06 JR CR1 664/ F23B : ; 665/ F23B : ;LOGISCHER SPEICHERTEST 666/ F23B : ; 667/ F23B : E5 CHRAM: PUSH HL ;(HL)=SPEICHERADRESSE 668/ F23C : C5 PUSH BC 669/ F23D : CD 4D F2 CALL CHR0 670/ F240 : F5 PUSH AF 671/ F241 : CD 69 F2 CR1: CALL CHR5 672/ F244 : F1 POP AF 673/ F245 : C1 POP BC 674/ F246 : E1 POP HL 675/ F247 : F5 PUSH AF 676/ F248 : B7 OR A 677/ F249 : ED 52 SBC HL,DE ;HL=HL-400H 678/ F24B : F1 POP AF ;(A)=STATUS (1 RAM, 0 ROM) 679/ F24C : C9 RET 680/ F24D : ; 681/ F24D : 11 00 04 CHR0: LD DE,400H 682/ F250 : AF XOR A 683/ F251 : ED 52 CHR1: SBC HL,DE 684/ F253 : 3C INC A 685/ F254 : 30 FB JR NC, CHR1 686/ F256 : 21 C1 EF LD HL,MAPAR ;ADR. 64 BIT REGISTER FUER 687/ F259 : ;SPEICHERSTATUS 688/ F259 : D6 08 CHR2: SUB 8 689/ F25B : 23 INC HL 690/ F25C : 30 FB JR NC, CHR2 691/ F25E : C6 08 CHR3: ADD A, 8 692/ F260 : 2B DEC HL 693/ F261 : 28 FB JR Z, CHR3 694/ F263 : 06 09 CR33: LD B,9 695/ F265 : CB 16 CHR4: RL (HL) 696/ F267 : 3D DEC A 697/ F268 : C8 RET Z 698/ F269 : 10 FA CHR5: DJNZ CHR4 699/ F26B : C9 RET 700/ F26C : ; 701/ F26C : ;ZEICHENKETTENVERGLEICH 702/ F26C : ; 703/ F26C : ; Funktion: Stringvergleich 704/ F26C : ; a) Eingang 705/ F26C : ; - CHEC 706/ F26C : ; gerufen von: LOCK, OPENR 707/ F26C : ; Parameter : HL Adresse String 1 708/ F26C : ; DE Adresse String 2 709/ F26C : ; B Anzahl zu vergleichender Zeichen 710/ F26C : ; b) gerufene Programme 711/ F26C : ; - 712/ F26C : ; c) Ausgang 713/ F26C : ; - 714/ F26C : ; d) Return 715/ F26C : ; Parameter: Z 1 String 1 = String 2 716/ F26C : ; DE unverändert 717/ F26C : ; HL Wort vor String 2 718/ F26C : ; 719/ F26C : E5 CHEC: PUSH HL ;ADR. 1. ZEICHENKETTE 720/ F26D : D5 PUSH DE ;ADR. 2. ZEICHENKETTE 721/ F26E : EB EX DE,HL 722/ F26F : 1A CHC0: LD A,(DE) 723/ F270 : FE 20 CP A, 20H 724/ F272 : 28 04 JR Z, CH0 725/ F274 : FE 40 CP A, 40H 726/ F276 : 38 02 JR C, CHC01 727/ F278 : E6 DF CH0: AND A, 0DFH ;NUR GROSSBUCHSTABEN 728/ F27A : BE CHC01: CP A, (HL) 729/ F27B : 13 INC DE 730/ F27C : 23 INC HL 731/ F27D : 20 0C JR NZ, CHC1 732/ F27F : 10 EE DJNZ CHC0 ;(B)=ANZAHL ZEICHEN 733/ F281 : D1 POP DE 734/ F282 : D1 POP DE ;ADR. 1. ZEICHENKETTE 735/ F283 : 6B LD L,E 736/ F284 : 62 LD H,D 737/ F285 : 2B DEC HL 738/ F286 : 7E LD A,(HL) 739/ F287 : 2B DEC HL 740/ F288 : 6E LD L,(HL) 741/ F289 : 67 LD H,A ;(HL)=WORT VOR 1. ZEICHENKETTE 742/ F28A : C9 RET 743/ F28B : D1 CHC1: POP DE 744/ F28C : E1 POP HL 745/ F28D : C9 RET 746/ F28E : ; 747/ F28E : ;SUCHEN TRANSIENTKOMMANDO IM SPEICHER 748/ F28E : ; 749/ F28E : ; Funktion: Suchen Kommando im Speicher 750/ F28E : ; Kommando muß auf integraler 100H-Grenze beginnen 751/ F28E : ; Aufbau:JP KOMM 752/ F28E : ; DB 'KNAME ' ;8 Zeichen mit Space aufgefüllt 753/ F28E : ; DA 00 ;Ende Kommandofeld 754/ F28E : ; oder JP KOMM1 755/ F28E : ; DB 'K1NAME ' 756/ F28E : ; DB 0 ;Ende Kommando 1 757/ F28E : ; JP KOMM2 758/ F28E : ; DB 'K2NAME ' 759/ F28E : ; DB 0 ;Ende Kommando 2 760/ F28E : ; ... 761/ F28E : ; JP KOMMN 762/ F28E : ; DB 'KNNAME ' 763/ F28E : ; DA 0 ;Ende Kommandofeld 764/ F28E : ; a) Eingang 765/ F28E : ; - CPROM 766/ F28E : ; gerufen von: WBOOT, GOCPM 767/ F28E : ; Parameter : INTLN INTLN+1 enthält Kommando in der Länge 8 Bytes 768/ F28E : ; b) gerufene Programme 769/ F28E : ; - LOCK Suchen String 770/ F28E : ; c) Ausgang 771/ F28E : ; d) Return 772/ F28E : ; Parameter: Z 0 Kommando nicht gefunden 773/ F28E : ; 1 Kommando gefunden 774/ F28E : ; HL Adresse der Kommandoroutine 775/ F28E : ; DE Adresse des Kommandos im Speicher 776/ F28E : ; 777/ F28E : 21 00 FC CPROM: LD HL,0FC00H ;ANFANGSADRESSE 778/ F291 : E5 CP1: PUSH HL 779/ F292 : 3E C3 CP2: LD A,0C3H 780/ F294 : ED A1 CPI ;SPRUNGBEFEHL SUCHEN 781/ F296 : 20 12 JR NZ, CP22 ;AUF NAECHSTER ADRESSSE SUCHEN 782/ F298 : 23 INC HL 783/ F299 : 23 INC HL 784/ F29A : C5 PUSH BC 785/ F29B : 01 0B 01 LD BC,10BH 786/ F29E : CD B8 F2 CALL LOCK ;VERGLEICH ZEICHENKETTE 787/ F2A1 : C1 POP BC 788/ F2A2 : 28 0C JR Z, CPE1 ;GEFUNDEN 789/ F2A4 : AF XOR A 790/ F2A5 : 2B DEC HL 791/ F2A6 : 2B DEC HL 792/ F2A7 : BE CP A, (HL) ;00h statt C3h (Listendende)? 793/ F2A8 : 20 E8 JR NZ, CP2 ;WEITER MIT KOMMANDOTABELLE 794/ F2AA : E1 CP22: POP HL 795/ F2AB : 25 CP3: DEC H ;NAECHSTE 100H-GRENZE 796/ F2AC : =>FALSE if rombank 797/ F2AC : JP ROMBK ;Sprung zur ROM-Bank 798/ F2AC : =>TRUE else 799/ F2AC : 20 E3 JR NZ, CP1 800/ F2AE : 24 INC H 801/ F2AF : [796] endif 802/ F2AF : C9 RET ;NICHT GEFUNDEN 803/ F2B0 : C1 CPE1: POP BC ;TRANS.-KOMMANDO GEFUNDEN 804/ F2B1 : C9 RET 805/ F2B2 : ;VERGLEICH EINGABE MIT TREIBERNAMEN BAT UND CRT 806/ F2B2 : 01 06 02 LOLDV: LD BC,0206H 807/ F2B5 : 21 26 FC LD HL,LOGDV+2 ;NAMENSTABELLE 808/ F2B8 : ;VERGLEICH 809/ F2B8 : 11 01 01 LOCK: LD DE,INTLN+1 810/ F2BB : C5 LOCK1: PUSH BC 811/ F2BC : 41 LD B,C 812/ F2BD : 05 DEC B 813/ F2BE : 05 DEC B 814/ F2BF : CD 6C F2 CALL CHEC 815/ F2C2 : C1 POP BC 816/ F2C3 : C8 RET Z ;GEFUNDEN 817/ F2C4 : 79 LD A,C 818/ F2C5 : 23 LOCK2: INC HL 819/ F2C6 : 3D DEC A 820/ F2C7 : 20 FC JR NZ, LOCK2 821/ F2C9 : 10 F0 DJNZ LOCK1 822/ F2CB : F6 01 OR 1 823/ F2CD : C9 RET 824/ F2CE : ; 825/ F2CE : ;PRUEFEN TREIBERADRESSE ENTSPRECHEND I/O-BYTE 826/ F2CE : ; 827/ F2CE : ; Funktion: Lesen einer ausgewählten Treiberadresse 828/ F2CE : ; Prüfen der gültigen Zuweisung 829/ F2CE : ; a) Eingang 830/ F2CE : ; - EXIO 831/ F2CE : ; gerufen von: ALDEV, CONST 832/ F2CE : ; Parameter : B interne Nummer des log. Gerätes (0, 2, 4, 6) 833/ F2CE : ; 0 : CONST 834/ F2CE : ; 6 : LIST 835/ F2CE : ; IOBYT 836/ F2CE : ; Treiberadreßvektor 837/ F2CE : ; b) gerufene Programme 838/ F2CE : ; - COMPW Vergleichen DE und HL 839/ F2CE : ; c) Ausgang 840/ F2CE : ; - 841/ F2CE : ; d) Return 842/ F2CE : ; Parameter: CY 1 keine Treiberadresse gefunden (FFFFH) 843/ F2CE : ; 0 Adresse gefunden 844/ F2CE : ; HL Treiberadresse 845/ F2CE : ; 846/ F2CE : F5 EXIO: PUSH AF 847/ F2CF : 16 00 LD D,0 848/ F2D1 : 58 LD E,B ;INTERNE LOG. GERAETENUMMER 849/ F2D2 : 78 LD A,B ;(0, 2, 4, 6) 850/ F2D3 : B7 OR A 851/ F2D4 : 3A 04 00 LD A,(IOBYT) 852/ F2D7 : 28 04 JR Z, SH1 853/ F2D9 : CB 3F SH: SRL A 854/ F2DB : 10 FC DJNZ SH 855/ F2DD : CB 23 SH1: SLA E 856/ F2DF : E6 03 AND A, 3 857/ F2E1 : 83 ADD A, E 858/ F2E2 : 5F LD E,A 859/ F2E3 : 21 C9 EF LD HL,ATTY ;TABELLE DER TREIBERADRESSEN 860/ F2E6 : F1 POP AF 861/ F2E7 : 19 ADD HL,DE ;ADRESSE DER BENOETIGTEN 862/ F2E8 : 19 ADD HL,DE ;TREIBERADR. BERECHNEN 863/ F2E9 : E5 PUSH HL 864/ F2EA : 5E LD E,(HL) 865/ F2EB : 23 INC HL 866/ F2EC : 56 LD D,(HL) 867/ F2ED : 21 FF FF LD HL,-1 868/ F2F0 : EB EX DE,HL 869/ F2F1 : CD BC FC CALL COMPW ;TREIBERADR. = FFFFH 870/ F2F4 : ;JA --> GERAET NICHT ZUGEWIESEN 871/ F2F4 : D1 POP DE 872/ F2F5 : 3F CCF 873/ F2F6 : C9 RET ;(HL)=ADR. DER TREIBERROUTINE 874/ F2F7 : ; 875/ F2F7 : E5 MOVE: PUSH HL 876/ F2F8 : D5 PUSH DE 877/ F2F9 : C5 PUSH BC 878/ F2FA : ED B0 LDIR 879/ F2FC : 18 0E JR OUTS2 880/ F2FE : ; 881/ F2FE : 3E 0D OCRLF: LD A,0DH 882/ F300 : CD 05 F3 CALL OUTA 883/ F303 : 3E 0A LD A,0AH 884/ F305 : ; 885/ F305 : E5 OUTA: PUSH HL 886/ F306 : D5 PUSH DE 887/ F307 : C5 PUSH BC 888/ F308 : 4F LD C,A 889/ F309 : CD 83 F7 CALL COOUT 890/ F30C : C1 OUTS2: POP BC 891/ F30D : D1 POP DE 892/ F30E : E1 POP HL 893/ F30F : C9 RET 894/ F310 : ; 895/ F310 : 3E 20 OSPAC: LD A,20H 896/ F312 : 18 F1 JR OUTA 897/ F314 : ; 898/ F314 : ; EJEC 899/ F314 : ; 900/ F314 : ;******************************************************************* 901/ F314 : ;* * 902/ F314 : ;* B A S I C - O P E R A T I N G - S Y S T E M * 903/ F314 : ;* * 904/ F314 : ;******************************************************************* 905/ F314 : ; 906/ F314 : ED 73 0B 00 BOS: LD (SPSV),SP ;SICHERN ANWENDERSTACK 907/ F318 : 31 C0 01 LD SP,1C0H ;BOS - STACK 908/ F31B : 37 SCF 909/ F31C : 3F CCF 910/ F31D : E5 PUSH HL 911/ F31E : D5 PUSH DE 912/ F31F : F5 PUSH AF 913/ F320 : ED 43 0D 00 LD (BCSV),BC 914/ F324 : 32 0F 00 LD (ASV),A 915/ F327 : 21 45 F3 LD HL,BOSE 916/ F32A : E5 PUSH HL ;RUECKKEHRADRESSE KELLERN 917/ F32B : 3E 21 LD A,33 918/ F32D : B9 CP A, C 919/ F32E : DA DE F5 JP C, BOSER ;UNERLAUBTER SYSTEMRUF 920/ F331 : 06 00 LD B,0 921/ F333 : 21 45 F0 LD HL,JPVEK ;ADRESSTABELLE DER SYSTEMRUFE 922/ F336 : 09 ADD HL,BC 923/ F337 : 09 ADD HL,BC 924/ F338 : 7E LD A,(HL) 925/ F339 : 23 INC HL 926/ F33A : 66 LD H,(HL) 927/ F33B : 6F LD L,A 928/ F33C : 4B LD C,E ;EINGANGSPARAMETER 929/ F33D : 42 LD B,D ;UEBERNEHMEN 930/ F33E : 3A 0F 00 LD A,(ASV) 931/ F341 : E5 PUSH HL ;SYSTEMRUFADRESSE KELLERN 932/ F342 : 2E 03 LD L,3 ;ANFANGSWERT FUER CURSORRUFE 933/ F344 : C9 RET ;SPRUNG ZUR AUSFUEHRUNG 934/ F345 : ; 935/ F345 : ;AUSGANG AUS BOS 936/ F345 : 30 06 BOSE: JR NC, BOSE1 ;KEIN FEHLER 937/ F347 : CD EA F5 CALL ERDIS ;AUSGABE FEHLERMELDUNG 938/ F34A : F1 POP AF 939/ F34B : 37 SCF ;SETZEN FEHLERSTATUS 940/ F34C : F5 PUSH AF 941/ F34D : F1 BOSE1: POP AF 942/ F34E : D1 POP DE 943/ F34F : E1 POP HL 944/ F350 : 3A 0F 00 LD A,(ASV) 945/ F353 : ED 4B 0D 00 LD BC,(BCSV) 946/ F357 : ED 7B 0B 00 LD SP,(SPSV) 947/ F35B : C9 RET 948/ F35C : ; 949/ F35C : ;EINGABE ZEICHENKETTE IN MONITORPUFFER 950/ F35C : ; 951/ F35C : ; Funktion: Eingabe String in Monitorpuffer (80H) 952/ F35C : ; a) Eingang 953/ F35C : ; - GETMS 954/ F35C : ; gerufen von: GOCPM, REQU 955/ F35C : ; Parameter : - 956/ F35C : ; b) gerufene Programme 957/ F35C : ; - CONIN Eingabe Zeichen 958/ F35C : ; - OUTA Ausgabe Zeichen in A 959/ F35C : ; c) Ausgang 960/ F35C : ; - RCONB 961/ F35C : ; Parameter: DE Adresse Consolepuffer (80H) 962/ F35C : ; 963/ F35C : 11 80 00 GETMS: LD DE,CONBU 964/ F35F : 3E 50 LD A,80 ;LAENGE INITIALISIEREN 965/ F361 : 12 LD (DE),A 966/ F362 : 3A 0F 00 LD A,(ASV) 967/ F365 : ; 968/ F365 : ;EINGABE ZEICHENKETTE 969/ F365 : ; 970/ F365 : 6B RCONB: LD L,E 971/ F366 : 62 LD H,D 972/ F367 : 23 INC HL 973/ F368 : 4D LD C,L 974/ F369 : 44 LD B,H 975/ F36A : 03 INC BC 976/ F36B : 36 00 LD (HL),0 ;LAENGE ZEICHENKETTE = 0 977/ F36D : 32 35 00 LD (BU),A 978/ F370 : E5 GETS1: PUSH HL 979/ F371 : D5 PUSH DE 980/ F372 : C5 PUSH BC 981/ F373 : CD 7F F7 CALL CONIN ;EINGABE EIN ZEICHEN 982/ F376 : C1 POP BC 983/ F377 : D1 POP DE 984/ F378 : E1 POP HL 985/ F379 : D8 RET C ;FEHLER BEI ZEICHENEINGABE 986/ F37A : E5 PUSH HL 987/ F37B : 21 17 00 LD HL,COLSW ;ZELLE FUER FARBSTEUERZEICHEN 988/ F37E : 34 INC (HL) 989/ F37F : 35 DEC (HL) ; HL <> 0 ? 990/ F380 : E1 POP HL 991/ F381 : 20 2B JR NZ, GETS0 ;dann UEBERNEHMEN FARBCODE 992/ F383 : FE 03 CP A, 03 ;STOP - TASTE 993/ F385 : 20 03 JR NZ, GETS2 994/ F387 : AF XOR A 995/ F388 : 37 SCF 996/ F389 : C9 RET 997/ F38A : FE 1F GETS2: CP A, 1FH ;DEL - TASTE 998/ F38C : 28 1B JR Z, GETS5 ;LOESCHEN LETZTES ZEICHEN 999/ F38E : FE 02 CP A, 2 ;CLLN - TASTE 1000/ F390 : 20 07 JR NZ, GETS4 1001/ F392 : CD C6 F3 GETS3: CALL GETBS 1002/ F395 : 20 FB JR NZ, GETS3 ;LOESCHEN GESAMTE ZEILE 1003/ F397 : 18 D7 JR GETS1 1004/ F399 : FE 0D GETS4: CP A, 0DH ;ENTER - TASTE 1005/ F39B : 28 20 JR Z, GETSE ;ENDE 1006/ F39D : FE 0B CP A, 0BH ;CURSOR HOCH 1007/ F39F : 28 CF JR Z, GETS1 ;IGNORIEREN 1008/ F3A1 : FE 0A CP A, 0AH ;CURSOR RUNTER 1009/ F3A3 : 28 CB JR Z, GETS1 ;IGNORIEREN 1010/ F3A5 : FE 08 CP A, 8 ;CURSOR LINKS 1011/ F3A7 : 20 05 JR NZ, GETS0 1012/ F3A9 : CD C6 F3 GETS5: CALL GETBS ;LETZTES ZEICHEN LOESCHEN 1013/ F3AC : 18 C2 JR GETS1 1014/ F3AE : FE 10 GETS0: CP A, 10H ;CTRL/P 1015/ F3B0 : 28 03 JR Z, GETS8 ;NUR AUSFUEHREN 1016/ F3B2 : 34 INC (HL) ;ZEICHEN IN 1017/ F3B3 : 02 LD (BC),A ;ZEICHENKETTE 1018/ F3B4 : 03 INC BC ;UEBERNEHMEN 1019/ F3B5 : CD 05 F3 GETS8: CALL OUTA ;AUSGABE DES ZEICHENS 1020/ F3B8 : D8 RET C ;FEHLER BEI AUSGABE 1021/ F3B9 : 1A LD A,(DE) 1022/ F3BA : BE CP A, (HL) ;PUFFER VOLL? 1023/ F3BB : 20 B3 JR NZ, GETS1 1024/ F3BD : 3A 35 00 GETSE: LD A,(BU) 1025/ F3C0 : 32 0F 00 LD (ASV),A 1026/ F3C3 : C3 FE F2 JP OCRLF 1027/ F3C6 : ; 1028/ F3C6 : ;BEHANDLUNG EIN ZEICHEN LOESCHEN 1029/ F3C6 : 34 GETBS: INC (HL) 1030/ F3C7 : 35 GBS1: DEC (HL) 1031/ F3C8 : C8 RET Z ;ALLES GELOESCHT 1032/ F3C9 : 0B DEC BC 1033/ F3CA : 0A LD A,(BC) 1034/ F3CB : FE 09 CP A, 9 ;CURSOR RECHTS 1035/ F3CD : 1036/ F3CD : 28 0C JR Z, GBS2 1037/ F3CF : FE 20 CP A, 20H 1038/ F3D1 : 38 F4 JR C, GBS1 ;STEUERZEICHEN GEFUNDEN 1039/ F3D3 : 3E 08 LD A,8 1040/ F3D5 : CD 05 F3 CALL OUTA 1041/ F3D8 : CD 10 F3 CALL OSPAC 1042/ F3DB : 3E 08 GBS2: LD A,8 1043/ F3DD : CD 05 F3 CALL OUTA 1044/ F3E0 : 35 DEC (HL) 1045/ F3E1 : C9 RET 1046/ F3E2 : ; 1047/ F3E2 : ;AUSGABE ZEICHENKETTE 1048/ F3E2 : 1A PRNST: LD A,(DE) 1049/ F3E3 : B7 OR A ;ZEICHENKETTENENDE ? 1050/ F3E4 : 20 06 JR NZ, PRN1 1051/ F3E6 : 3A 17 00 LD A,(COLSW) 1052/ F3E9 : B7 OR A ;WAR 0-BYTE EIN FARBCODE ? 1053/ F3EA : C8 RET Z ;KEIN FARBCODE 1054/ F3EB : AF XOR A 1055/ F3EC : CD 05 F3 PRN1: CALL OUTA 1056/ F3EF : D8 RET C ;FEHLER BEI AUSGABE 1057/ F3F0 : 13 INC DE 1058/ F3F1 : 18 EF JR PRNST ;NAECHSTES ZEICHEN 1059/ F3F3 : ; 1060/ F3F3 : ;ABFRAGE VERSIONSNUMMER 1061/ F3F3 : ; 1062/ F3F3 : =>FALSE RETVN: IF osver == 11 1063/ F3F3 : LD HL,101H 1064/ F3F3 : =>TRUE ELSEIF osver == 12 1065/ F3F3 : 21 02 01 LD HL,102H 1066/ F3F6 : =>FALSE ELSEIF osver == 13 1067/ F3F6 : LD HL,103H 1068/ F3F6 : [1062] ENDIF 1069/ F3F6 : 18 38 JR CLR1 1070/ F3F8 : ; 1071/ F3F8 : ;OPEN FUER KASSETTE LESEN 1072/ F3F8 : ; 1073/ F3F8 : CD 93 F5 OPENR: CALL REQU ;AUSGABE STARTMELDUNG 1074/ F3FB : 3C INC A 1075/ F3FC : D8 RET C ;STOP GEGEBEN 1076/ F3FD : E5 PUSH HL 1077/ F3FE : AF XOR A ;BLOCKNUMMER 0 LESEN 1078/ F3FF : 32 6C 00 LD (LBLNR),A 1079/ F402 : CD 34 F4 CALL READ ;BLOCKLESEN 1080/ F405 : E1 POP HL 1081/ F406 : 22 1B 00 LD (DMA),HL ;PUFFERADR. ZURUECKSETZEN 1082/ F409 : D8 RET C ;LESEFEHLER 1083/ F40A : E5 PUSH HL 1084/ F40B : 11 11 00 LD DE,17 ;OFFS. AADR (= AADR-FCB) 1085/ F40E : 19 ADD HL,DE 1086/ F40F : 11 6D 00 LD DE,AADR 1087/ F412 : 1088/ F412 : =>FALSE IF osver == 11 1089/ F412 : LD BC,6 1090/ F412 : =>TRUE ELSE 1091/ F412 : 01 08 00 LD BC,8 1092/ F415 : [1088] ENDIF 1093/ F415 : 1094/ F415 : ED B0 LDIR ;DATEIPARAMETER UEBERNEHMEN 1095/ F417 : D1 POP DE 1096/ F418 : 21 5C 00 LD HL,FCB 1097/ F41B : 06 0B LD B,11 1098/ F41D : CD 6C F2 CALL CHEC ;NAMENSVERGLEICH 1099/ F420 : 3E 0D LD A,13 1100/ F422 : 37 SCF 1101/ F423 : C0 RET NZ ;FALSCHE DATEI GELESEN 1102/ F424 : 1103/ F424 : =>FALSE IF osver == 11 1104/ F424 : LD a,(fcb+11) 1105/ F424 : =>TRUE ELSE 1106/ F424 : 3A 73 00 LD A,(FCB+23) ;SCHUTZBYTE 1107/ F427 : [1103] ENDIF 1108/ F427 : 1109/ F427 : B7 OR A 1110/ F428 : C8 RET Z ;KEIN SCHUTZ 1111/ F429 : 32 C0 EF LD (MAPPI),A ;SYSTEMSCHUTZ EIN 1112/ F42C : C9 RET 1113/ F42D : ; 1114/ F42D : ;CLOSE FUER KASSETTE LESEN 1115/ F42D : ; 1116/ F42D : 21 6D 00 CLOSR: LD HL,AADR ;ADRESSE DER DATEIPARAMETER 1117/ F430 : 22 0D 00 CLR1: LD (BCSV),HL ;UEBERGEBEN 1118/ F433 : C9 RET 1119/ F434 : ; 1120/ F434 : ;BLOCKLESEN SEQUENTIELL 1121/ F434 : ; 1122/ F434 : CD D8 F4 READ: CALL RRAND ;BLOCK LESEN 1123/ F437 : D8 RET C ;LESEFEHLER 1124/ F438 : 22 1B 00 LD (DMA),HL ;PUFFERADR. UM 128 ERHOEHEN 1125/ F43B : 21 6C 00 LD HL,LBLNR 1126/ F43E : 34 INC (HL) ;ZU LESENDE BLOCKNUMMER ERHOEHEN 1127/ F43F : F5 PUSH AF 1128/ F440 : CD 10 F3 CALL OSPAC ;AUSGABE LEERZEICHEN 1129/ F443 : F1 POP AF 1130/ F444 : C9 RET 1131/ F445 : ; 1132/ F445 : ;OPEN FUER KASSETTE SCHREIBEN 1133/ F445 : ; 1134/ F445 : CD 93 F5 OPENW: CALL REQU ;AUSGABE STARTMELDUNG 1135/ F448 : 3C INC A 1136/ F449 : D8 RET C ;STOP GEGEBEN 1137/ F44A : E5 PUSH HL 1138/ F44B : 21 5C 00 LD HL,FCB 1139/ F44E : 22 1B 00 LD (DMA),HL ;SCHREIBEN DES FCB 1140/ F451 : 3E 00 LD A,0 1141/ F453 : 1142/ F453 : =>FALSE IF osver == 11 1143/ F453 : LD (fcb+11),a 1144/ F453 : =>TRUE ELSE 1145/ F453 : 32 73 00 LD (FCB+23),A ;KEIN SCHUTZ 1146/ F456 : [1142] ENDIF 1147/ F456 : 1148/ F456 : 01 70 17 LD BC,1770H ;LANGER VORTON 1149/ F459 : AF XOR A 1150/ F45A : 32 6B 00 LD (BLNR),A ;BLOCKNUMMER 0 1151/ F45D : 3E 02 LD A,2 1152/ F45F : 32 6C 00 LD (LBLNR),A 1153/ F462 : CD 72 F4 CALL WRIT1 ;SCHREIBEN BLOCK 1154/ F465 : E1 POP HL 1155/ F466 : 22 1B 00 LD (DMA),HL ;PUFFERADR. AUF AUSGANGSWERT 1156/ F469 : C9 RET 1157/ F46A : ; 1158/ F46A : ;CLOSE FUER KASSETTE SCHREIBEN 1159/ F46A : ; 1160/ F46A : 3E FF CLOSW: LD A,0FFH 1161/ F46C : 32 6B 00 LD (BLNR),A ;BLOCKNUMMER FFH 1162/ F46F : ; 1163/ F46F : ;BLOCKSCHREIBEN SEQUENTIELL 1164/ F46F : ; 1165/ F46F : 01 A0 00 WRITE: LD BC,0A0H ;KURZER VORTON 1166/ F472 : ED 5B 1B 00 WRIT1: LD DE,(DMA) ;PUFFERADRESSE 1167/ F476 : 3A C0 EF LD A,(MAPPI) 1168/ F479 : B7 OR A 1169/ F47A : 28 04 JR Z, WRIT2 ;KEIN SCHUTZ VOR SCHREIBEN 1170/ F47C : 3E 09 WERR: LD A,9 ;SCHREIBSCHUTZ 1171/ F47E : 37 WERR1: SCF ;FEHLERAUSGANG 1172/ F47F : C9 RET 1173/ F480 : 2A 36 00 WRIT2: LD HL,(EOR) ;LOGISCHES RAM - ENDE 1174/ F483 : D5 PUSH DE 1175/ F484 : 11 7F 00 LD DE,7FH 1176/ F487 : ED 52 SBC HL,DE 1177/ F489 : D1 POP DE 1178/ F48A : CD BC FC CALL COMPW ;ADRESSVERGLEICH 1179/ F48D : 3E 0A LD A,10 1180/ F48F : 38 ED JR C, WERR1 ;BLOCK LIEGT HINTER RAM - ENDE 1181/ F491 : EB EX DE,HL 1182/ F492 : CD 3B F2 CALL CHRAM ;LOGISCHER SPEICHERTEST 1183/ F495 : 30 E5 JR NC, WERR ;BEREICH IST GESCHUETZT/ROM 1184/ F497 : CD D6 FE CALL KARAM ;AUSGABE BLOCK 1185/ F49A : 22 1B 00 LD (DMA),HL ;PUFFERADR. UM 128 ERHOEHEN 1186/ F49D : 21 6B 00 LD HL,BLNR 1187/ F4A0 : 7E LD A,(HL) 1188/ F4A1 : 32 0F 00 LD (ASV),A ;BLOCKNUMMER ZURUECKGEBEN 1189/ F4A4 : 34 INC (HL) ;BLOCKNUMMER ERHOEHEN 1190/ F4A5 : C3 E3 FA JP INITA ;TASTATUR INITIALISIERN 1191/ F4A8 : ; 1192/ F4A8 : ;AUSGABE DER AKTUELLEN UHRZEIT 1193/ F4A8 : ; 1194/ F4A8 : D5 PRITI: PUSH DE 1195/ F4A9 : 01 1D 00 LD BC,STUND ;ADRESSE DER UHRZEIT 1196/ F4AC : 16 03 LD D,3 1197/ F4AE : 21 01 01 LD HL,INTLN+1 ;ZWISCHENPUFFER 1198/ F4B1 : E5 PUSH HL 1199/ F4B2 : 2B DEC HL 1200/ F4B3 : 36 3A PRTI1: LD (HL),':' 1201/ F4B5 : 23 INC HL 1202/ F4B6 : 0A LD A,(BC) 1203/ F4B7 : C5 PUSH BC 1204/ F4B8 : B7 OR A 1205/ F4B9 : 28 07 JR Z, PRTI3 1206/ F4BB : 47 LD B,A ; 1207/ F4BC : AF XOR A ;INTERNE ZAHL 1208/ F4BD : C6 01 PRTI2: ADD A, 1 ;IN BCD - ZAHL UMWANDELN 1209/ F4BF : 27 DAA ; 1210/ F4C0 : 10 FB DJNZ PRTI2 ; 1211/ F4C2 : 77 PRTI3: LD (HL),A 1212/ F4C3 : 3E 33 LD A,33H ; 1213/ F4C5 : ED 67 RRD ;IN DRUCKBARE ZEICHEN 1214/ F4C7 : 23 INC HL ;UMWANDELN 1215/ F4C8 : 77 LD (HL),A ; 1216/ F4C9 : 23 INC HL 1217/ F4CA : 36 00 LD (HL),0 ;ENDE ZEICHENKETTE 1218/ F4CC : C1 POP BC 1219/ F4CD : 03 INC BC 1220/ F4CE : 15 DEC D 1221/ F4CF : 20 E2 JR NZ, PRTI1 1222/ F4D1 : E1 POP HL 1223/ F4D2 : D1 POP DE 1224/ F4D3 : 0E 08 LD C,8 1225/ F4D5 : C3 F7 F2 JP MOVE ;KETTE ZUR ANGEGEBENEN ADR. 1226/ F4D8 : ; 1227/ F4D8 : ;BLOCKLESEN 1228/ F4D8 : ; 1229/ F4D8 : 2A 36 00 RRAND: LD HL,(EOR) ;LOGISCHES RAM - ENDE 1230/ F4DB : 11 7F 00 LD DE,7FH 1231/ F4DE : ED 52 SBC HL,DE 1232/ F4E0 : ED 5B 1B 00 LD DE,(DMA) ;PUFFERADRESSE 1233/ F4E4 : CD BC FC CALL COMPW ;ADRESSVERGLEICH 1234/ F4E7 : 3E 0A LD A,10 1235/ F4E9 : D8 RET C ;BLOCK UEBERSCHREIBT RAM - ENDE 1236/ F4EA : EB EX DE,HL 1237/ F4EB : CD 3B F2 CALL CHRAM ;LOGISCHER SPEICHERTEST 1238/ F4EE : 3E 09 LD A,9 1239/ F4F0 : 30 1D JR NC, ERAND ;BEREICH GESCHUETZT/ROM 1240/ F4F2 : F5 RR1: PUSH AF 1241/ F4F3 : F1 RR2: POP AF 1242/ F4F4 : CD 59 FF CALL MAREK ;EINGABE BLOCK 1243/ F4F7 : CD E3 FA CALL INITA ;TASTATUR INITIALISIEREN 1244/ F4FA : F5 PUSH AF 1245/ F4FB : E5 PUSH HL 1246/ F4FC : 21 6C 00 LD HL,LBLNR ;ZU LESENDE BLOCKNUMMER 1247/ F4FF : 3A 6B 00 LD A,(BLNR) ;GELESENE BLOCKNUMMER 1248/ F502 : BE CP A, (HL) 1249/ F503 : E1 POP HL 1250/ F504 : 38 ED JR C, RR2 ;BLOCKNUMMER NOCH NICHT ERREICHT 1251/ F506 : 28 09 JR Z, RROK ;GEFUNDEN 1252/ F508 : FE FF CP A, 0FFH 1253/ F50A : 28 05 JR Z, RROK ;ENDEBLOCK GELESEN 1254/ F50C : F1 POP AF 1255/ F50D : 3E 0B LD A,11 ;BLOCKNUMMER ZU GROSS 1256/ F50F : 37 ERAND: SCF 1257/ F510 : C9 RET 1258/ F511 : F1 RROK: POP AF 1259/ F512 : 3E 0C LD A,12 1260/ F514 : D8 RET C ;LESEFEHLER 1261/ F515 : 3A 6B 00 LD A,(BLNR) ;RUECKGABE EOF - KENNZEICHEN 1262/ F518 : 3C INC A 1263/ F519 : 3E 00 LD A,0 1264/ F51B : 20 01 JR NZ, RROK1 1265/ F51D : 3C INC A 1266/ F51E : 32 0F 00 RROK1: LD (ASV),A ;1 WENN ENDEBLOCK, SONST 0 1267/ F521 : C9 RET 1268/ F522 : ; 1269/ F522 : ; 1270/ F522 : ; 1271/ F522 : ; 1272/ F522 : ;******************************************************************* 1273/ F522 : ;* C L O A D - KOMMANDO * 1274/ F522 : ;******************************************************************* 1275/ F522 : ; 1276/ F522 : ; 1277/ F522 : ; Funktion: Laden eines Programms 1278/ F522 : ; a) Eingang 1279/ F522 : ; - LOAD 1280/ F522 : ; gerufen von: INFIL, CLOAD 1281/ F522 : ; Parameter : CONBU mit gesuchtem Namen 1282/ F522 : ; b) gerufene Programme 1283/ F522 : ; - GVAL Parameterübernahme 1284/ F522 : ; - MOV verschieben Speicherbereich 1285/ F522 : ; - OPENR Eröffnen für Lesen 1286/ F522 : ; - READ Lesen eines Blockes 1287/ F522 : ; - REA Abfrage Bedienerhandlung bei Fehler 1288/ F522 : ; c) Ausgang 1289/ F522 : ; - ERPAR Parameterfehler 1290/ F522 : ; - ERINP Eingabefehler 1291/ F522 : ; - OCRLF Ausgabe CR/LF nach Einlesen 1292/ F522 : ; Parameter: CY 0 keine Fehler 1293/ F522 : ; 1 Fehler, Code in A 1294/ F522 : ; Programm ab Anfangsadresse im Speicher 1295/ F522 : ; DMA nach Programm 1296/ F522 : ; 1297/ F522 : CD EA F1 LOAD: CALL GVAL ;NAECHSTEN PARAMETER HOLEN 1298/ F525 : C8 RET Z ;KEIN GUELTIGER NAME 1299/ F526 : ; 1300/ F526 : ;DATEI LADEN OHNE START 1301/ F526 : 21 E6 F5 LOAD1: LD HL,ERPAR 1302/ F529 : E5 PUSH HL 1303/ F52A : 3A 00 01 LD A,(INTLN) ;PARAMETERLAENGE 1304/ F52D : FE 09 CP A, 9 1305/ F52F : D0 RET NC ;NAME ZU LANG 1306/ F530 : 11 5C 00 LD DE,FCB 1307/ F533 : 3E 08 LD A,8 1308/ F535 : CD 88 F5 CALL MOV ;NAME IN FCB EINTRAGEN 1309/ F538 : 08 EX AF, AF' 1310/ F539 : 30 0E JR NC, LOAD3 ;DATEITYP FOLGT 1311/ F53B : 08 EX AF, AF' 1312/ F53C : 21 43 4F LD HL,4F43H ;STANDARDEINTRAGUNG 1313/ F53F : 22 64 00 LD (FCB+8),HL ; 1314/ F542 : 3E 4D LD A,'M' ;COM VORNEHMEN 1315/ F544 : 32 66 00 LD (FCB+10),A ; 1316/ F547 : 18 16 JR LOA33 1317/ F549 : 79 LOAD3: LD A,C 1318/ F54A : FE 2E CP A, '.' 1319/ F54C : E1 POP HL 1320/ F54D : C2 E2 F5 JP NZ, ERINP ;FALSCHES TRENNZEICHEN 1321/ F550 : E5 PUSH HL 1322/ F551 : CD EA F1 CALL GVAL ;PARAMETER HOLEN 1323/ F554 : C8 RET Z ;KEIN GUELTIGER TYP 1324/ F555 : 3E 03 LD A,3 1325/ F557 : B8 CP A, B ;TYP IST ZU LANG 1326/ F558 : D8 RET C 1327/ F559 : 11 64 00 LD DE,FCB+8 ;TYP IN FCB EINTRAGEN 1328/ F55C : CD 88 F5 CALL MOV 1329/ F55F : E1 LOA33: POP HL 1330/ F560 : 08 EX AF, AF' 1331/ F561 : D2 E2 F5 JP NC, ERINP ;ZU VIELE PARAMETER 1332/ F564 : CD F8 F3 LOAD4: CALL OPENR 1333/ F567 : 30 09 JR NC, LOAD5 ;KEIN FEHLER 1334/ F569 : B7 OR A 1335/ F56A : 37 SCF 1336/ F56B : C8 RET Z ;STOP GEGEBEN 1337/ F56C : CD A3 F5 CALL REA ;AUSG. FEHLERMELD. WARTEN REAKT. 1338/ F56F : D8 RET C ;STOP GEGEBEN 1339/ F570 : 18 F2 JR LOAD4 ;WIEDERHOLUNG 1340/ F572 : 2A 6D 00 LOAD5: LD HL,(AADR) ;DATEIANFANGSADRESSE 1341/ F575 : 22 1B 00 LD (DMA),HL ;NACH ADR. KASSETTENPUFFER 1342/ F578 : CD 34 F4 LOA55: CALL READ ;LESEN BLOCK 1343/ F57B : 30 05 JR NC, LOAD6 ;KEIN FEHLER 1344/ F57D : CD A3 F5 CALL REA ;AUSG. FEHLERMELD. WARTEN REAKT. 1345/ F580 : D8 RET C ;STOP GEGEBEN 1346/ F581 : AF XOR A 1347/ F582 : B7 LOAD6: OR A 1348/ F583 : 28 F3 JR Z, LOA55 ;WEITER BIS DATEIENDE LESEN 1349/ F585 : C3 FE F2 JP OCRLF 1350/ F588 : ; 1351/ F588 : 21 01 01 MOV: LD HL,INTLN+1 ;ZWISCHENPUFFER 1352/ F58B : 47 LD B,A 1353/ F58C : 7E MOV2: LD A,(HL) 1354/ F58D : 12 LD (DE),A 1355/ F58E : 23 INC HL 1356/ F58F : 13 INC DE 1357/ F590 : 10 FA DJNZ MOV2 1358/ F592 : C9 RET 1359/ F593 : ; 1360/ F593 : ;AUSGABE STARTMELDUNG, WARTEN AUF ENTER 1361/ F593 : ; 1362/ F593 : ; Funktion: Ausgabe String 'start tape' , warten auf ENTER 1363/ F593 : ; a) Eingang 1364/ F593 : ; - REQU 1365/ F593 : ; gerufen von: OPENR, OPENW 1366/ F593 : ; - REQU0 1367/ F593 : ; gerufen von: REA 1368/ F593 : ; b) gerufene Programme 1369/ F593 : ; - PRNST Ausgabe String 1370/ F593 : ; - GETMS Eingabe String 1371/ F593 : ; c) Ausgang 1372/ F593 : ; - 1373/ F593 : ; d) Return 1374/ F593 : ; Parameter: A FFH wenn STOP 1375/ F593 : ; 0 sonst 1376/ F593 : ; 1377/ F593 : 11 48 FC REQU: LD DE,TXTRC ;TEXTADRESSE STARTMELDUNG 1378/ F596 : CD E2 F3 CALL PRNST ;AUSGABE TEXT 1379/ F599 : CD 5C F3 REQU0: CALL GETMS ;EINGABE ZEICHENKETTE 1380/ F59C : 2A 1B 00 LD HL,(DMA) 1381/ F59F : D0 RET NC ;KEIN STOP 1382/ F5A0 : 3E FF LD A,0FFH 1383/ F5A2 : C9 RET 1384/ F5A3 : ; 1385/ F5A3 : ;AUSGABE FEHLERMELDUNG, WARTEN AUF BEDIENERREAKTION 1386/ F5A3 : ; 1387/ F5A3 : ; Funktion: Ausgabe Fehlermeldung, warten auf Bedienerhandlung 1388/ F5A3 : ; a) Eingang 1389/ F5A3 : ; - REA 1390/ F5A3 : ; gerufen von: LOAD 1391/ F5A3 : ; Parameter: A Fehlercode 1392/ F5A3 : ; b) gerufene Programme 1393/ F5A3 : ; - REQUO warten auf Bedienerhandlung 1394/ F5A3 : ; - MOD verändern Speicherkonfiguration (bei Fehler 9) 1395/ F5A3 : ; c) Ausgang 1396/ F5A3 : ; - 1397/ F5A3 : ; d) Return 1398/ F5A3 : ; Parameter: CY 0 kein STOP 1399/ F5A3 : ; 1 STOP, Fehlercode in A 1400/ F5A3 : ; 1401/ F5A3 : CD EA F5 REA: CALL ERDIS ;AUSGABE FEHLERMELDUNG 1402/ F5A6 : CD 99 F5 REA1: CALL REQU0 ;EINGABE ZEICHENKETTE 1403/ F5A9 : D8 RET C ;STOP GEGEBEN 1404/ F5AA : 3A 0F 00 LD A,(ASV) 1405/ F5AD : FE 09 CP 9 ;FEHLER DURCH GESCHUETZT. BEREICH 1406/ F5AF : 37 SCF 1407/ F5B0 : 3F CCF 1408/ F5B1 : C0 RET NZ ;NEIN 1409/ F5B2 : 0E 01 LD C,1 1410/ F5B4 : CD 31 F2 CALL MOD ;SCHUTZ AUFHEBEN, DA NICHT STOP 1411/ F5B7 : B7 OR A 1412/ F5B8 : C9 RET 1413/ F5B9 : ; 1414/ F5B9 : ;VORVERARBEITEN EINER ZEICHENKETTE 1415/ F5B9 : ; 1416/ F5B9 : 13 COEXT: INC DE 1417/ F5BA : 1A LD A,(DE) ;LAENGE ZEICHENKETTE 1418/ F5BB : B7 OR A 1419/ F5BC : 28 1E JR Z, COMP3 ;ZEICHENKETTE LEER 1420/ F5BE : 6B LD L,E 1421/ F5BF : 62 LD H,D 1422/ F5C0 : E5 PUSH HL 1423/ F5C1 : 23 INC HL 1424/ F5C2 : 13 INC DE 1425/ F5C3 : 47 LD B,A 1426/ F5C4 : 0E 00 LD C,0 1427/ F5C6 : EB EX DE,HL 1428/ F5C7 : 3E 1F LD A,1FH 1429/ F5C9 : BE COMP1: CP A, (HL) 1430/ F5CA : 30 05 JR NC, COMP2 ;STEUERZEICHEN UEBERGEHEN 1431/ F5CC : ED A0 LDI ;ZEICHEN UEBERNEHMEN 1432/ F5CE : 03 INC BC 1433/ F5CF : 03 INC BC 1434/ F5D0 : 2B DEC HL 1435/ F5D1 : 23 COMP2: INC HL ;NAECHSTES ZEICHEN 1436/ F5D2 : 10 F5 DJNZ COMP1 1437/ F5D4 : E1 POP HL 1438/ F5D5 : 71 LD (HL),C ;NEUE LAENGE EINTRAGEN 1439/ F5D6 : EB EX DE,HL 1440/ F5D7 : 79 LD A,C 1441/ F5D8 : B7 OR A 1442/ F5D9 : 36 00 LD (HL),0 ;0-BYTE AN KETTE ANHAENGEN 1443/ F5DB : C0 RET NZ 1444/ F5DC : 37 COMP3: SCF ;NEUE ZEICHENKETTE IST LEER 1445/ F5DD : C9 RET 1446/ F5DE : ; 1447/ F5DE : ; 1448/ F5DE : 3E 07 BOSER: LD A,7 1449/ F5E0 : 37 SCF 1450/ F5E1 : C9 RET 1451/ F5E2 : 3E 02 ERINP: LD A,TYPIE 1452/ F5E4 : 37 SCF 1453/ F5E5 : C9 RET 1454/ F5E6 : 3E 01 ERPAR: LD A,1 1455/ F5E8 : 37 SCF 1456/ F5E9 : C9 RET 1457/ F5EA : ; 1458/ F5EA : ;AUSGEBEN FEHLERMELDUNG 1459/ F5EA : ; 1460/ F5EA : ; Funktion: Ausgabe Fehlermeldung 1461/ F5EA : ; a) Eingang 1462/ F5EA : ; - ERDIS 1463/ F5EA : ; gerufen von: BOSE, REA, GOCPM 1464/ F5EA : ; Parameter : A Fehlercode 1465/ F5EA : ; CY 1 (bei 0 RET) 1466/ F5EA : ; b) gerufene Programme 1467/ F5EA : ; - PRNST Ausgabe String 1468/ F5EA : ; - OUTA Ausgabe Zeichen in A 1469/ F5EA : ; - OCRCF Ausgabe CR/LF34 1470/ F5EA : ; c) Ausgang 1471/ F5EA : ; - 1472/ F5EA : ; d) Return 1473/ F5EA : ; Parameter: CY 1 1474/ F5EA : ; A Fehlercode 1475/ F5EA : ; 1476/ F5EA : D0 ERDIS: RET NC ;KEIN FEHLER 1477/ F5EB : FE FF CP A,0FFH 1478/ F5ED : 37 SCF 1479/ F5EE : C8 RET Z ;KEINE MELDUNG, NUR INTERN 1480/ F5EF : 32 0F 00 LD (ASV),A ;FEHLERNUMMER ZURUECKGEBEN 1481/ F5F2 : B7 OR A 1482/ F5F3 : 37 SCF 1483/ F5F4 : C8 RET Z ;KEINE MELDUNG, NUR WARNUNG 1484/ F5F5 : F5 PUSH AF 1485/ F5F6 : 1486/ F5F6 : =>TRUE IF osver <> 11 1487/ F5F6 : AF XOR A 1488/ F5F7 : 32 15 00 LD (LISW),A ;DRUCKER AUS 1489/ F5FA : [1486] ENDIF 1490/ F5FA : 1491/ F5FA : CD FE F2 CALL OCRLF 1492/ F5FD : F1 POP AF 1493/ F5FE : 11 5B FC LD DE,TXTE 1494/ F601 : D6 05 SUB 5 1495/ F603 : 30 0C JR NC, ERD1 1496/ F605 : F5 PUSH AF ;A = 1...4 1497/ F606 : CD E2 F3 CALL PRNST 1498/ F609 : F1 POP AF 1499/ F60A : C6 35 ADD A, 35H 1500/ F60C : CD 05 F3 CALL OUTA 1501/ F60F : 18 4D JR ERD6 1502/ F611 : D6 02 ERD1: SUB 2 1503/ F613 : D8 RET C ;A = 5 U. 6 1504/ F614 : F5 PUSH AF ;A = 7...13 1505/ F615 : 11 56 FC LD DE,TXTBE 1506/ F618 : CD E2 F3 CALL PRNST 1507/ F61B : 3E 3A LD A,':' 1508/ F61D : CD 05 F3 CALL OUTA 1509/ F620 : CD 10 F3 CALL OSPAC 1510/ F623 : F1 POP AF 1511/ F624 : 20 04 JR NZ, ERD2 1512/ F626 : 06 08 LD B,8 ;A = 7 1513/ F628 : 18 03 JR ERD21 1514/ F62A : 3D ERD2: DEC A 1515/ F62B : 20 0F JR NZ, ERD3 1516/ F62D : 21 CC FB ERD21: LD HL,PHYDV-7 ;A = 8 1517/ F630 : 11 09 00 LD DE,9 1518/ F633 : CB 38 SRL B 1519/ F635 : 04 INC B 1520/ F636 : 19 ERD22: ADD HL,DE 1521/ F637 : 10 FD DJNZ ERD22 1522/ F639 : EB EX DE,HL 1523/ F63A : 18 1F JR ERD5 1524/ F63C : 11 62 FC ERD3: LD DE,TXTMP 1525/ F63F : 3D DEC A 1526/ F640 : 28 19 JR Z, ERD5 ;A = 9 1527/ F642 : 11 73 FC LD DE,TXTEO 1528/ F645 : 3D DEC A 1529/ F646 : 28 13 JR Z, ERD5 ;A = 10 1530/ F648 : 11 81 FC LD DE,TXTNB 1531/ F64B : 3D DEC A 1532/ F64C : 28 0D JR Z, ERD5 ;A = 11 1533/ F64E : 11 92 FC LD DE,TXTPT 1534/ F651 : 3D DEC A 1535/ F652 : 28 07 JR Z, ERD5 ;A = 12 1536/ F654 : 11 9D FC LD DE,TXTNF 1537/ F657 : 3D DEC A 1538/ F658 : 28 01 JR Z, ERD5 ;A = 13 1539/ F65A : 1B DEC DE 1540/ F65B : CD E2 F3 ERD5: CALL PRNST ;AUSGABE MELDUNG 1541/ F65E : CD FE F2 ERD6: CALL OCRLF 1542/ F661 : AF STERR: XOR A 1543/ F662 : 37 ENDER: SCF 1544/ F663 : C9 RET 1545/ F664 : ; 1546/ F664 : ;******************************************************************* 1547/ F664 : ;* * 1548/ F664 : ;* O P E R A T I N G - S Y S T E M * 1549/ F664 : ;* * 1550/ F664 : ;******************************************************************* 1551/ F664 : ; 1552/ F664 : ;INITIALISIERUNG DES COMPUTERS 1553/ F664 : ; 1554/ F664 : F3 INIT: DI 1555/ F665 : 31 00 02 LD SP,200H ;CCP- UND ANWENDERSTACK 1556/ F668 : 1557/ F668 : =>FALSE IF eorpatch 1558/ F668 : 1559/ F668 : ;s.http://www.sax.de/~zander/z9001/tip/tipc.html 1560/ F668 : LD BC,100H ;100 Bytes 1561/ F668 : LD H,C 1562/ F668 : LD L,C ;HL=0000 1563/ F668 : LD (HL),0FFH ;Adresse 0000 mit FF beschreiben 1564/ F668 : LD D,H 1565/ F668 : LD E,L ;DE=0000 1566/ F668 : INC DE ;DE=0001 1567/ F668 : LDIR ;001 bis 100 mit FF füllen 1568/ F668 : 1569/ F668 : =>TRUE else 1570/ F668 : 1571/ F668 : 0E 00 LD C,0 1572/ F66A : 2A 36 00 LD HL,(EOR) ;LOGISCHES RAM - ENDE 1573/ F66D : 5D LD E,L 1574/ F66E : 54 LD D,H 1575/ F66F : 13 INC DE 1576/ F670 : 06 01 LD B,1 1577/ F672 : ED B0 LDIR ;LOESCHEN 100H BYTES AB 1578/ F674 : ;LOG. RAM - ENDE 1579/ F674 : [1557] ENDIF 1580/ F674 : 1581/ F674 : 3E 02 LD A,2 1582/ F676 : ED 47 LD I,A 1583/ F678 : 3C INC A 1584/ F679 : D3 8A OUT SPIO1A, A 1585/ F67B : 3E CF LD A,0CFH 1586/ F67D : D3 8A OUT SPIO1A, A ;PIO 1 PORT A IN BYTEAUSGABE 1587/ F67F : AF XOR A 1588/ F680 : D3 8A OUT SPIO1A, A 1589/ F682 : D3 88 OUT DPIO1A, A 1590/ F684 : ;PHYSISCHER SPEICHERTEST, SETZEN SPEICHERKONFIGURATION 1591/ F684 : 21 00 FC MEMTE: LD HL,0FC00H 1592/ F687 : 06 40 LD B,64 ;64 1k BYTES BEREICHE 1593/ F689 : 7E MEMT0: LD A,(HL) 1594/ F68A : 2F CPL 1595/ F68B : 77 LD (HL),A 1596/ F68C : 56 LD D,(HL) 1597/ F68D : BA CP A, D 1598/ F68E : 2F CPL 1599/ F68F : 77 LD (HL),A 1600/ F690 : 0E 01 LD C,1 1601/ F692 : 28 06 JR Z, MEMT1 ;RAM GEFUNDEN 1602/ F694 : 0D DEC C 1603/ F695 : 2B DEC HL 1604/ F696 : 22 36 00 LD (EOR),HL ;VORLAEUFIGES LOG. RAM - ENDE 1605/ F699 : 23 INC HL 1606/ F69A : CD 31 F2 MEMT1: CALL MOD ;MERKEN KONFIG. IM 64 BIT - REGISTER 1607/ F69D : 10 EA DJNZ MEMT0 1608/ F69F : 1609/ F69F : =>FALSE if osver == 11 1610/ F69F : ld a, 0C3h 1611/ F69F : ld (5), a 1612/ F69F : [1609] ENDIF 1613/ F69F : 1614/ F69F : 21 14 F3 LD HL,BOS ;ADR. BOS FUER CALL 0005 1615/ F6A2 : 22 06 00 LD (6),HL 1616/ F6A5 : CD E0 F6 CALL IOST ;INITIALISIEREN STANDARD-E/A 1617/ F6A8 : 11 30 FC LD DE,MSG 1618/ F6AB : =>FALSE if rommenu 1619/ F6AB : CALL MENUE ;Menüanzeige (nur Version 2) 1620/ F6AB : =>TRUE else 1621/ F6AB : CD E2 F3 CALL PRNST 1622/ F6AE : [1618] endif 1623/ F6AE : ; 1624/ F6AE : ;WARMSTART, TEILINITIALISIERUNG 1625/ F6AE : ; 1626/ F6AE : F3 WBOOT: DI 1627/ F6AF : 31 00 02 LD SP,200H 1628/ F6B2 : 3E C3 LD A,0C3H ;JMP - CODE 1629/ F6B4 : 32 00 00 LD (0),A ;FUER CALL 0000 UND 1630/ F6B7 : 1631/ F6B7 : =>TRUE IF osver <> 11 1632/ F6B7 : 32 05 00 LD (5),A ;CALL 0005 SPEICHERN 1633/ F6BA : [1631] ENDIF 1634/ F6BA : 1635/ F6BA : 21 AE F6 LD HL,WBOOT ;ADR. WBOOT FUER CALL 0000 1636/ F6BD : 22 01 00 LD (1),HL 1637/ F6C0 : 3A 04 00 LD A,(IOBYT) 1638/ F6C3 : E6 FC AND A, 0FCH ;ZUWEISEN CONST:=CRT 1639/ F6C5 : F6 01 OR 1 ; 1640/ F6C7 : CD 12 F7 CALL IOST1 ;TEILINITIALISIERUNG TREIBER 1641/ F6CA : 11 F7 FB LD DE,TXTWB 1642/ F6CD : CD E2 F3 CALL PRNST 1643/ F6D0 : 21 23 00 LD HL,0023H ;'#' 1644/ F6D3 : 22 82 00 LD (CONBU+2),HL ;PSEUDOEINGABE # 1645/ F6D6 : CD EA F1 CALL GVAL ;PARAMETER HOLEN 1646/ F6D9 : CD 8E F2 CALL CPROM ;TRANSIENTKOMMANDO SUCHEN 1647/ F6DC : C2 89 F0 JP NZ, GOCPM ;NICHT GEFUNDEN 1648/ F6DF : E9 JP (HL) ;SPRUNG ZUR SYSTEMERWEITERUNG 1649/ F6E0 : ; 1650/ F6E0 : ;INITIALISIERUNG STANDARD-E/A 1651/ F6E0 : 21 C9 EF IOST: LD HL,ATTY ;TABELLE TREIBERADRESSEN 1652/ F6E3 : 11 CA EF LD DE,ATTY+1 1653/ F6E6 : 01 1F 00 LD BC,31 1654/ F6E9 : 36 FF LD (HL),-1 1655/ F6EB : ED B0 LDIR ;ALLE AUF FFFFH LOESCHEN 1656/ F6ED : 11 00 02 LD DE,200H 1657/ F6F0 : 21 B0 FC LD HL,INTV 1658/ F6F3 : 0E 0C LD C,12 1659/ F6F5 : ED B0 LDIR ;INTERRUPTADRESSEN LADEN 1660/ F6F7 : =>TRUE if sysver = "os" 1661/ F6F7 : 21 24 FC LD HL,LOGDV ; original 1662/ F6FA : =>FALSE elseif ; bei UZ 1663/ F6FA : LD HL,LOGDV+1 1664/ F6FA : [1660] endif 1665/ F6FA : 22 EB EF LD (TXRDR),HL ;ZEICHENKETTENADRESSEN 1666/ F6FD : 22 ED EF LD (TXPUN),HL ;FUER TREIBER 1667/ F700 : 22 EF EF LD (TXLPT),HL ;INITIALISIEREN 1668/ F703 : 21 B4 F7 LD HL,BAT ; 1669/ F706 : 22 CD EF LD (ABAT),HL ; 1670/ F709 : AF XOR A 1671/ F70A : 32 27 00 LD (ATRIB),A ;FARBE LOESCHEN 1672/ F70D : 32 C0 EF LD (MAPPI),A ;SYSTEMSCHUTZ LOESCHEN 1673/ F710 : 3E 01 LD A,STIOB ;STANDARD-I/O-BYTE 1674/ F712 : ; 1675/ F712 : ;TEILINITIALISIERUNG 1676/ F712 : 32 04 00 IOST1: LD (IOBYT),A 1677/ F715 : 21 26 FC LD HL,LOGDV+2 1678/ F718 : 22 E9 EF LD (TXCON),HL ;ADRESSE VON 'CRT' EINTRAGEN 1679/ F71B : 21 F1 F8 LD HL,CRT 1680/ F71E : 22 CB EF LD (ACRT1),HL ;TREIBERADRESSE VON CRT LADEN 1681/ F721 : 22 E3 EF LD (ACRT2),HL ;(FUER CONST UND LIST) 1682/ F724 : ED 5E IM 2 1683/ F726 : 11 FF FF LD DE,0FFFFH 1684/ F729 : 1B IOST2: DEC DE 1685/ F72A : 7B LD A,E 1686/ F72B : B2 OR D 1687/ F72C : 20 FB JR NZ, IOST2 ;ENTPRELLEN RESETTASTE 1688/ F72E : 32 15 00 LD (LISW),A ;DRUCKER AUS 1689/ F731 : 3D DEC A 1690/ F732 : E9 JP (HL) ;INITIALISIERUNG VON CRT 1691/ F733 : ; 1692/ F733 : ;ABFRAGE LOGISCHE CURSORADRESSE 1693/ F733 : ; 1694/ F733 : 2E 07 GCURS: LD L,7 1695/ F735 : 18 07 JR DCU 1696/ F737 : ; 1697/ F737 : ;SETZEN physische CURSORADRESSE 1698/ F737 : ; 1699/ F737 : 2E 05 SCURS: LD L,5 ; L := 8 (Fkt. Setzen phys.. Cursoradresse) 1700/ F739 : 59 LD E,C ;PARAMETER UEBERNEHMEN 1701/ F73A : 50 LD D,B ; 1702/ F73B : ; 1703/ F73B : ;SETZEN logische CURSORADRESSE 1704/ F73B : ; in: L=3, Anfangswert fuer Cursorrufe (BOS) 1705/ F73B : ; 1706/ F73B : 2C SETCU: INC L ; L := 6 (Fkt. Setzen log. Cursoradresse) 1707/ F73C : ; 1708/ F73C : ;ABFRAGE PHYSISCHE CURSORADRESSE 1709/ F73C : ; 1710/ F73C : 2C GETCU: INC L ; L := 5 (Fkt. Abfrage phys. und log. Cursoradresse) 1711/ F73D : ; 1712/ F73D : ;ANZEIGEN CURSOR 1713/ F73D : ; 1714/ F73D : 2C SCU: INC L ; L := 4 (Fkt. Cursor anzeigen) 1715/ F73E : ; 1716/ F73E : ;LOESCHEN CURSOR 1717/ F73E : ; in: L=3, Anfangswert fuer Cursorrufe (BOS) (Fkt. Cursor löschen) 1718/ F73E : ; 1719/ F73E : 7D DCU: LD A,L ;A=Fkt. des CONST-Treibers 1720/ F73F : CD 58 F7 CALL CONS1 ;AUSFUEHREN DURCH CONST 1721/ F742 : D8 RET C ;FEHLER 1722/ F743 : FE 03 CP A, 3 1723/ F745 : C8 RET Z ; bei bei Fkt. 3 (Cursor löschen) 1724/ F746 : 4D LD C,L ; 1725/ F747 : 44 LD B,H ; 1726/ F748 : FE 06 CP A, 6 ; 1727/ F74A : D0 RET NC ; Fkt. >= 6 1728/ F74B : 22 0D 00 LD (BCSV),HL ;RUECKGABE PARAMETER 1729/ F74E : FE 04 CP A, 4 ; 1730/ F750 : C8 RET Z ; bei Fkt. 4 (Cursor anzeigen) 1731/ F751 : ; bei Fkt. 5 (Abfrage phys. und log. Cursoradresse) 1732/ F751 : ED 53 BC 01 LD (1BCH),DE ; Pos. von DE im BOS-Stack (SP = 1C0H) 1733/ F755 : C9 RET 1734/ F756 : ; 1735/ F756 : ; CONST, CONIN, CONOUT, LIST, LLIST, READER,PUNCH (CONST1, LIST1, RDR1) 1736/ F756 : ; Funktion: Verzweigen zu log. Geräten 1737/ F756 : ; a) Eingang 1738/ F756 : ; gerufen von: Systemruf, Cursorruf 1739/ F756 : ; Parameter: bei OUT Zeichen in C 1740/ F756 : ; b) gerufene Programme 1741/ F756 : ; - EXIO Test Gerätezuweisung, Startadresse der Gerätetreiber holen 1742/ F756 : ; c) Ausgang 1743/ F756 : ; - 1744/ F756 : ; d) Return 1745/ F756 : ; Parameter: CY 0 kein Fehler 1746/ F756 : ; 1 Fehler, Code in A 1747/ F756 : ; B interne log. Gerätenummer 1748/ F756 : ; A bei IN Zeichen 1749/ F756 : ; 1750/ F756 : ; 1751/ F756 : ;ABFRAGE STATUS CONST 1752/ F756 : ; 1753/ F756 : 3E 00 CONST: LD A,0 1754/ F758 : 06 00 CONS1: LD B,0 ;INTERNE LOG. GERAETENR. CONST 1755/ F75A : C5 CONS2: PUSH BC 1756/ F75B : D5 PUSH DE 1757/ F75C : CD CE F2 CALL EXIO ;VERFUEGBARKEIT TREIBER PRUEFEN 1758/ F75F : D1 POP DE 1759/ F760 : 30 04 JR NC, CONS3 ;IN ORDNUNG 1760/ F762 : C1 POP BC 1761/ F763 : 3E 08 CON22: LD A,8 ;NICHT ZUGEWIESEN 1762/ F765 : C9 RET 1763/ F766 : E5 CONS3: PUSH HL 1764/ F767 : 21 6F F7 LD HL,CONS4 1765/ F76A : E3 EX (SP),HL ;RUECKKEHRADR. KELLERN 1766/ F76B : 32 2F 00 LD (PU),A 1767/ F76E : E9 JP (HL) ;SPRUNG ZUR TREIBERROUTINE 1768/ F76F : ; 1769/ F76F : C1 CONS4: POP BC 1770/ F770 : 4F LD C,A 1771/ F771 : 38 F0 JR C, CON22 ;FEHLER 1772/ F773 : 3A 2F 00 LD A,(PU) 1773/ F776 : FE 02 CP A, 2 ;WAR RUF EINE EINGABE? 1774/ F778 : D0 RET NC ;NEIN 1775/ F779 : 79 LD A,C 1776/ F77A : 32 0F 00 LD (ASV),A ;STATUS ODER ZEICHEN ZURUECK 1777/ F77D : B7 OR A 1778/ F77E : C9 RET 1779/ F77F : ; 1780/ F77F : ;EINGABE VON CONST 1781/ F77F : ; 1782/ F77F : 3E 01 CONIN: LD A,1 1783/ F781 : 18 D5 JR CONS1 1784/ F783 : ; 1785/ F783 : ;AUSGABE ZU CONST 1786/ F783 : ; 1787/ F783 : 79 COOUT: LD A,C 1788/ F784 : FE 10 CP A, 10H ;CTRL/P 1789/ F786 : 20 08 JR NZ, COOU1 1790/ F788 : 3A 15 00 LD A,(LISW) 1791/ F78B : EE 01 XOR 1 ;DRUCKER EIN/AUS 1792/ F78D : 32 15 00 LD (LISW),A 1793/ F790 : 1794/ F790 : =>FALSE if osver == 11 1795/ F790 : ret 1796/ F790 : COOU1: ld a, (LISW) 1797/ F790 : or a 1798/ F790 : push bc 1799/ F790 : call nz, LIST 1800/ F790 : pop hl 1801/ F790 : ld c, l 1802/ F790 : ret c 1803/ F790 : ld a, 2 1804/ F790 : jr CONS1 1805/ F790 : =>TRUE ELSE 1806/ F790 : 3E 02 COOU1: LD A,2 1807/ F792 : C5 PUSH BC 1808/ F793 : CD 58 F7 CALL CONS1 ;AUSGABE ZU CONST 1809/ F796 : E1 POP HL 1810/ F797 : 4D LD C,L 1811/ F798 : D8 RET C ;FEHLER 1812/ F799 : 3A 15 00 LD A,(LISW) 1813/ F79C : B7 OR A 1814/ F79D : C8 RET Z ;KEINE AUSGABE ZU LIST 1815/ F79E : [1794] ENDIF 1816/ F79E : 1817/ F79E : ; 1818/ F79E : ;AUSGABE ZU LIST 1819/ F79E : ; 1820/ F79E : 3E 02 LIST: LD A,2 1821/ F7A0 : 06 06 LIST1: LD B,6 ;INTERNE LOG. GERAETENR. LIST 1822/ F7A2 : 18 B6 JR CONS2 1823/ F7A4 : ; 1824/ F7A4 : ;ABFRAGE STATUS LIST 1825/ F7A4 : ; 1826/ F7A4 : 3E 00 LLIST: LD A,0 1827/ F7A6 : 18 F8 JR LIST1 1828/ F7A8 : ; 1829/ F7A8 : ;EINGABE VON READER 1830/ F7A8 : ; 1831/ F7A8 : 3E 01 READR: LD A,1 1832/ F7AA : 06 02 RDR1: LD B,2 ;INTERNE LOG. GERAETENR. READER 1833/ F7AC : 18 AC JR CONS2 1834/ F7AE : ; 1835/ F7AE : ;AUSGABE ZU PUNCH 1836/ F7AE : ; 1837/ F7AE : 3E 02 PUNCH: LD A,2 1838/ F7B0 : 06 04 LD B,4 ;INTERNE LOG. GERAETENR. PUNCH 1839/ F7B2 : 18 A6 JR CONS2 1840/ F7B4 : ; 1841/ F7B4 : ;STEUERPROGRAMM FUER BATCH-MODE VON CONST 1842/ F7B4 : ; 1843/ F7B4 : FE 01 BAT: CP A, 1 ;EINGABE GEFORDERT 1844/ F7B6 : 28 F0 JR Z, READR 1845/ F7B8 : FE FF CP A, 0FFH ;INITIALISIERUNG GEFORDERT 1846/ F7BA : 20 E4 JR NZ, LIST1 ;AUSGABE 1847/ F7BC : 1848/ F7BC : 1849/ F7BC : =>FALSE if osver == 11 1850/ F7BC : CALL 0FFEEh ; ????? 1851/ F7BC : =>TRUE ELSE 1852/ F7BC : CD AA F7 CALL RDR1 ;INIT. READER 1853/ F7BF : [1849] ENDIF 1854/ F7BF : 1855/ F7BF : D8 RET C ;FEHLER 1856/ F7C0 : 3E FF LD A,0FFH 1857/ F7C2 : 18 DC JR LIST1 ;INIT. LIST 1858/ F7C4 : ; 1859/ F7C4 : ;ABFRAGE SPIELHEBEL 1860/ F7C4 : ; 1861/ F7C4 : CD 8F FE GSTIK: CALL GPIOD ;TASTATUR-PIO DIREKT LESEN 1862/ F7C7 : ED 4B 13 00 LD BC,(JOYR) 1863/ F7CB : ED 43 0D 00 LD (BCSV),BC ;RUECKGABE PARAMETER 1864/ F7CF : C3 E9 FA JP INPIO ;INIT. TASTATUR-PIO 1865/ F7D2 : ; 1866/ F7D2 : ;ABFRAGE I/O-BYTE 1867/ F7D2 : ; 1868/ F7D2 : 3A 04 00 GIOBY: LD A,(IOBYT) 1869/ F7D5 : 32 0F 00 LD (ASV),A ;RUECKGABE PARAMETER 1870/ F7D8 : 4F LD C,A 1871/ F7D9 : ; 1872/ F7D9 : ;SETZEN I/O-BYTE 1873/ F7D9 : ; 1874/ F7D9 : 79 SIOBY: LD A,C 1875/ F7DA : 32 04 00 LD (IOBYT),A 1876/ F7DD : B7 OR A 1877/ F7DE : C9 RET 1878/ F7DF : ; 1879/ F7DF : ;SETZEN KASSETTENPUFFER 1880/ F7DF : ; 1881/ F7DF : ED 43 1B 00 SDMA: LD (DMA),BC 1882/ F7E3 : B7 OR A 1883/ F7E4 : C9 RET 1884/ F7E5 : ; 1885/ F7E5 : ;LOGISCHER SPEICHERTEST 1886/ F7E5 : ; 1887/ F7E5 : 69 GMEM: LD L,C 1888/ F7E6 : 60 LD H,B 1889/ F7E7 : CD 3B F2 CALL CHRAM ;TEST DER ADRESSE IN HL 1890/ F7EA : 3E 01 LD A,1 1891/ F7EC : 38 01 JR C, GM1 ;RAM GEFUNDEN 1892/ F7EE : 3D DEC A ;GESCHUETZT/ROM 1893/ F7EF : 32 0F 00 GM1: LD (ASV),A ;RUECKGABE PARAMETER 1894/ F7F2 : B7 OR A 1895/ F7F3 : C9 RET 1896/ F7F4 : ; 1897/ F7F4 : ;SETZEN SPEICHERKONFIGURATION 1898/ F7F4 : ; 1899/ F7F4 : 69 SMEM: LD L,C 1900/ F7F5 : 60 LD H,B 1901/ F7F6 : 4F LD C,A 1902/ F7F7 : CD 31 F2 CALL MOD ;STATUS FUER ADR. IN HL AENDERN 1903/ F7FA : B7 OR A 1904/ F7FB : C9 RET 1905/ F7FC : ; 1906/ F7FC : ;ABFRAGE AKTUELLE UHRZEIT 1907/ F7FC : ; 1908/ F7FC : 3A 1D 00 GTIME: LD A,(STUND) 1909/ F7FF : 32 0F 00 LD (ASV),A ;RUECKGABE PARAMETER 1910/ F802 : 2A 1E 00 LD HL,(MIN) 1911/ F805 : 4C LD C,H 1912/ F806 : 45 LD B,L 1913/ F807 : ED 43 0D 00 LD (BCSV),BC ; 1914/ F80B : ; 1915/ F80B : ;STELLEN DER UHR 1916/ F80B : ; 1917/ F80B : 32 1D 00 STIME: LD (STUND),A 1918/ F80E : 68 LD L,B 1919/ F80F : 61 LD H,C 1920/ F810 : 22 1E 00 LD (MIN),HL 1921/ F813 : B7 OR A 1922/ F814 : C9 RET 1923/ F815 : ; 1924/ F815 : ;2-STELLIGE DEZIMALZAHL IN INTERNE DARSTELLUNG KONVERTIEREN 1925/ F815 : ; 1926/ F815 : ; Funktion: Umwandlung Parameterstring (Dezimalzahl) in interne Darstellung (ein Byte) 1927/ F815 : ; a) Eingang 1928/ F815 : ; - VIEXT 1929/ F815 : ; gerufen von: GEVAL 1930/ F815 : ; Parameter : DE Stringadresse 1931/ F815 : ; b) gerufene Programme 1932/ F815 : ; - FORMS formatieren Eingabe-String 1933/ F815 : ; c) Ausgang 1934/ F815 : ; - 1935/ F815 : ; d) Return 1936/ F815 : ; Parameter: DE Adresse nach String 1937/ F815 : ; A Wert 1938/ F815 : ; 1939/ F815 : 1A VIEXT: LD A,(DE) 1940/ F816 : B7 OR A 1941/ F817 : 37 SCF 1942/ F818 : C8 RET Z ;ZEICHENKETTE LEER 1943/ F819 : 3E 02 LD A,2 ;NEUE LAENGE DER ZEICHENKETTE 1944/ F81B : CD 36 F8 CALL FORMS ;AUF NEUE LAENGE BRINGEN 1945/ F81E : D8 RET C ;ZU VIELE DEZIMALSTELLEN 1946/ F81F : 01 02 00 LD BC,2 ;(C)=ANZAHL DER STELLEN 1947/ F822 : 1A ADEC1: LD A,(DE) 1948/ F823 : 13 INC DE 1949/ F824 : D6 30 SUB 30H 1950/ F826 : D8 RET C ;FEHLER 1951/ F827 : FE 0A CP A, 10 1952/ F829 : 3F CCF 1953/ F82A : D8 RET C ;FEHLER 1954/ F82B : 80 ADD A, B 1955/ F82C : 0D DEC C 1956/ F82D : C8 RET Z 1957/ F82E : 87 ADD A, A 1958/ F82F : 47 LD B,A 1959/ F830 : 87 ADD A, A 1960/ F831 : 87 ADD A, A 1961/ F832 : 80 ADD A, B 1962/ F833 : 47 LD B,A ;(B)=ZAHL 1963/ F834 : 18 EC JR ADEC1 1964/ F836 : ; 1965/ F836 : ;ZEICHENKETTE AUF BESTIMMTE LAENGE FORMATIEREN 1966/ F836 : ; 1967/ F836 : ; Funktion: Formatieren String auf n Bytes für Konvertierung in interne Zahl 1968/ F836 : ; Ausblenden bzw. Einfügen von Vornullen 1969/ F836 : ; a) Eingang 1970/ F836 : ; - FORMS 1971/ F836 : ; gerufen von: VIEXT37 1972/ F836 : ; Parameter: DE Stringadresse 1973/ F836 : ; A neue gewünschte Länge 1974/ F836 : ; b) gerufene Programme 1975/ F836 : ; - MOVE verschieben Speicherbereich 1976/ F836 : ; c) Ausgang 1977/ F836 : ; - 1978/ F836 : ; d) Return 1979/ F836 : ; Parameter: DE Adresse 1. Zeichen neuer String 1980/ F836 : ; CY 0 kein Fehler 1981/ F836 : ; 1 zu viele signifikante Stellen (keine Vornullen) 1982/ F836 : ; 1983/ F836 : 6B FORMS: LD L,E ;(DE)=ADR. DER KETTENLAENGE 1984/ F837 : 62 LD H,D 1985/ F838 : 13 INC DE 1986/ F839 : BE CP A, (HL) 1987/ F83A : C8 RET Z ;LAENGE ERREICHT 1988/ F83B : 06 00 LD B,0 1989/ F83D : 4E LD C,(HL) 1990/ F83E : 38 13 JR C, DHAZ ;ALT > NEU 1991/ F840 : 77 LD (HL),A ;NEUE LAENGE 1992/ F841 : 91 SUB C 1993/ F842 : 09 FORM1: ADD HL,BC ; 1994/ F843 : 5D LD E,L ; 1995/ F844 : 54 LD D,H ; 1996/ F845 : 13 INC DE ; 1997/ F846 : C5 PUSH BC ; 1998/ F847 : ED B8 LDDR ;VORNULLEN EINFUEGEN 1999/ F849 : C1 POP BC ; 2000/ F84A : EB EX DE,HL ; 2001/ F84B : 36 30 LD (HL),'0' ; 2002/ F84D : EB EX DE,HL ; 2003/ F84E : 03 INC BC ; 2004/ F84F : 3D DEC A ; 2005/ F850 : 20 F0 JR NZ, FORM1 ; 2006/ F852 : C9 RET 2007/ F853 : ; 2008/ F853 : F5 DHAZ: PUSH AF 2009/ F854 : 23 INC HL 2010/ F855 : 23 INC HL 2011/ F856 : 1A LD A,(DE) 2012/ F857 : FE 30 CP A, '0' 2013/ F859 : 20 0A JR NZ, DHAZE ;KEINE VORNULL 2014/ F85B : 0D DEC C 2015/ F85C : CD F7 F2 CALL MOVE ;LOESCHEN VORNULL 2016/ F85F : 1B DEC DE 2017/ F860 : 79 LD A,C 2018/ F861 : 12 LD (DE),A ;NEUE LAENGE 2019/ F862 : F1 POP AF 2020/ F863 : 18 D1 JR FORMS 2021/ F865 : ; 2022/ F865 : F1 DHAZE: POP AF ;ZU VIELE SIGNIFIKANTE STELLEN 2023/ F866 : 37 SCF 2024/ F867 : C9 RET 2025/ F868 : ; 2026/ F868 : ;******************************************************************* 2027/ F868 : ;* CRT - TREIBER TEIL 1: BILDSCHIRM * 2028/ F868 : ;******************************************************************* 2029/ F868 : ; 2030/ F868 : ;FARBCODEBERECHNUNG 2031/ F868 : D6 14 COL: SUB 14H ;(A)=FARBSTEUERCODE 2032/ F86A : 38 15 JR C, RAND ;RANDFARBE AENDERN 2033/ F86C : 28 06 JR Z, INK ;VORDERGRUNDFARBE AENDERN 2034/ F86E : 2035/ F86E : PAPER: 2036/ F86E : =>FALSE IF farb16 2037/ F86E : LD B,0F0H ;Unterstützung für 16 Farben 2038/ F86E : =>TRUE ELSE 2039/ F86E : 06 F8 LD B,0F8H ;HINTERGRUNDFARBE AENDERN 2040/ F870 : [2036] ENDIF 2041/ F870 : 2042/ F870 : 7B LD A,E ;ALTER FARBCODE 2043/ F871 : A0 P1: AND A, B 2044/ F872 : B1 OR C ;(C)=ALTER FARBCODE 2045/ F873 : C9 RET ;(A)=RSULTIERENDER FARBCODE 2046/ F874 : ; 2047/ F874 : 2048/ F874 : INK: 2049/ F874 : =>FALSE IF farb16 2050/ F874 : CALL INK16 ;Unterstützung für 16 Farben 2051/ F874 : =>TRUE else 2052/ F874 : 7B LD A,E 2053/ F875 : 06 8F LD B,8FH 2054/ F877 : [2049] ENDIF 2055/ F877 : 2056/ F877 : CB 21 I0: SLA C 2057/ F879 : CB 21 I1: SLA C 2058/ F87B : CB 21 SLA C 2059/ F87D : CB 21 SLA C 2060/ F87F : 18 F0 JR P1 2061/ F881 : ; 2062/ F881 : DB 88 RAND: IN A, DPIO1A ;SYSTEMPORT PIO 1 2063/ F883 : =>FALSE IF farb16 2064/ F883 : CALL BORD 2065/ F883 : AND B 2066/ F883 : OR C 2067/ F883 : =>TRUE else 2068/ F883 : 06 C7 LD B,0C7H 2069/ F885 : CD 79 F8 CALL I1 2070/ F888 : [2063] ENDIF 2071/ F888 : D3 88 R1: OUT DPIO1A, A 2072/ F88A : F1 POP AF ;RUECKKEHRADR. VERNICHTEN 2073/ F88B : 18 0E JR MCOL2 2074/ F88D : ; 2075/ F88D : ;ZEICHENAUSGABE 2076/ F88D : ; 2077/ F88D : ; Funktion: Behandlung alle Sonderzeichen (Farbe, Bell, Blinken, Invers) 2078/ F88D : ; a) Eingang 2079/ F88D : ; - OCHAR 2080/ F88D : ; gerufen von: CRT 2081/ F88D : ; Parameter : C Zeichen 2082/ F88D : ; b) gerufene Programme 2083/ F88D : ; - COL Farbbehandlung 2084/ F88D : ; - BELL1 Tonausgabe vorbereiten/beenden 2085/ F88D : ; - INIVT Initialisieren Ton 2086/ F88D : ; - AUS1 Ausgabe Ton 2087/ F88D : ; - OC Ausgabe ASCII-Zeichen 2088/ F88D : ; - MIAT Farbcode invertieren 2089/ F88D : ; 2090/ F88D : 3A 27 00 OCHAR: LD A,(ATRIB) ;AKTUELLER FARBCODE 2091/ F890 : 5F LD E,A 2092/ F891 : 7E LD A,(HL) ;(HL)=ADR. VON COLSW 2093/ F892 : B7 OR A 2094/ F893 : 28 09 JR Z, OCH1 ;ZEICHEN IST KEIN FARBCODE 2095/ F895 : CD 68 F8 MCOL: CALL COL ;NEUEN FARBCODE BERECHNEN 2096/ F898 : 32 27 00 MCOL1: LD (ATRIB),A ;NEUER AKTUELLER FARBCODE 2097/ F89B : AF MCOL2: XOR A 2098/ F89C : 77 LD (HL),A ;FARBSCHALTERLOESCHEN 2099/ F89D : C9 RET 2100/ F89E : ; 2101/ F89E : 2102/ F89E : OCH1: 2103/ F89E : =>FALSE if farb16 2104/ F89E : JP CTRLAD ;AUSZUGEBENDES ZEICHEN 2105/ F89E : MF8A1: 2106/ F89E : =>TRUE else 2107/ F89E : 79 LD A,C ;AUSZUGEBENDES ZEICHEN 2108/ F89F : D6 05 SUB 5 2109/ F8A1 : [2103] ENDIF 2110/ F8A1 : 2111/ F8A1 : 28 39 JR Z, SCOL ;STEUERCODE RANDFARBE GEFUNDEN (05 (F) CTRL/E) 2112/ F8A3 : 3D DEC A 2113/ F8A4 : 20 05 JR NZ, OCH3 2114/ F8A6 : ;06 (F) CTRL/F Blinken EIN/AUS 2115/ F8A6 : 7B BLINK: LD A,E ;BLINKBIT EIN/AUS 2116/ F8A7 : EE 80 XOR 80H ;BLINKBIT AENDERN 2117/ F8A9 : 18 ED JR MCOL1 2118/ F8AB : 3D OCH3: DEC A 2119/ F8AC : 20 1D JR NZ, OCH4 2120/ F8AE : ;07 CTRL/G Ausgabe eines Summertones 2121/ F8AE : F3 BELL: DI ;AUSGABE TASTATURTON 2122/ F8AF : CD C4 F8 CALL BELL1 ;SUMMER EIN/AUS 2123/ F8B2 : CD 0D FF CALL INIVT ;INIT. TONAUSGABE 2124/ F8B5 : 01 30 00 LD BC,30H ;ANZAHL TOENE 2125/ F8B8 : CD 31 FF BELL0: CALL AUS1 ;AUSGABE 2126/ F8BB : ED A1 CPI ; 2127/ F8BD : EA B8 F8 JP PE,BELL0 ; 2128/ F8C0 : 3E 03 LD A,3 2129/ F8C2 : D3 80 OUT CTC0, A ;CTC 0 HALT 2130/ F8C4 : DB 88 BELL1: IN A, DPIO1A 2131/ F8C6 : EE 80 XOR 80H 2132/ F8C8 : D3 88 OUT DPIO1A, A 2133/ F8CA : C9 RET 2134/ F8CB : ; 2135/ F8CB : D6 0A OCH4: SUB 0AH 2136/ F8CD : 20 06 JR NZ, OCH44 2137/ F8CF : ;11 CTRL/Q Kontrollton EIN/AUS 2138/ F8CF : 2B DEC HL ;(HL)=ADR. SCHALT. KONTROLLTON 2139/ F8D0 : 7E LD A,(HL) ; 2140/ F8D1 : EE 01 XOR 1 ;UMSCHALTEN 2141/ F8D3 : 77 LD (HL),A ; 2142/ F8D4 : C9 RET 2143/ F8D5 : ; 2144/ F8D5 : D6 03 OCH44: SUB 3 2145/ F8D7 : 28 03 JR Z, SCOL ;FARBSTEUERCODE VORDERGRUND 2146/ F8D9 : 3D DEC A 2147/ F8DA : 20 02 JR NZ, OCH5 ;KEIN FARBSTEUERCODE HINTERGRUND 2148/ F8DC : ; 14 (F) COLOR CTRL/T nächstes Zeichen ist Code für Vordergrundfarbe 2149/ F8DC : ; 15 (F) SHIFT+COLOR o. CTRL/U nächstes Zeichen ist Code für Hintergrundfarbe 2150/ F8DC : 79 SCOL: LD A,C ; C = 14h oder 15h 2151/ F8DD : 77 LD (HL),A ;FARBSTEUERCODE IN COLSW MERKEN 2152/ F8DE : 3D OCH5: DEC A 2153/ F8DF : 28 0A JR Z, INVER ;FARBEN INVERTIEREN (bei A=15 und A=16) 2154/ F8E1 : ; sonst normale Zeichenausgabe 2155/ F8E1 : CD 7D F9 CALL OC ;AUSGABE DES ZEICHENS 2156/ F8E4 : 3A 16 00 LD A,(BSW) 2157/ F8E7 : B7 OR A 2158/ F8E8 : C8 RET Z ;KEIN KONTROLLTON 2159/ F8E9 : 18 C3 JR BELL ;KONTROLLTON AUSGEBEN 2160/ F8EB : ; 16 (F) CTRL/V Inversdarstellung aller folgenden Zeichen 2161/ F8EB : 7B INVER: LD A,E 2162/ F8EC : CD D6 FA CALL MIAT ;FARBE INVERTIEREN 2163/ F8EF : 18 A7 JR MCOL1 2164/ F8F1 : ; 2165/ F8F1 : ;STEUERPROGRAMM DES CRT - TREIBERS 2166/ F8F1 : ; 2167/ F8F1 : ; Funktion: Bildschirmtreiber, Tastaturtreiber, Steuerprogramm 2168/ F8F1 : ; a) Eingang 2169/ F8F1 : ; - CRT 2170/ F8F1 : ; gerufen von: CONST1 (über JMP (HL)) 2171/ F8F1 : ; Parameter : A Art des Rufes 2172/ F8F1 : ; FF Init. 2173/ F8F1 : ; 0 Status Tastatur 2174/ F8F1 : ; 1 Eingabe 2175/ F8F1 : ; 2 Ausgabe 2176/ F8F1 : ; (C Zeichen bei Ausgabe) 2177/ F8F1 : ; 3 Cursor löschen 2178/ F8F1 : ; 4 Cursor setzen 2179/ F8F1 : ; 5 Abfrage log. Cursoradr. 2180/ F8F1 : ; 6 Setzen log. Cursoradr. 2181/ F8F1 : ; (DE Adresse; Zeile/Spalte) 2182/ F8F1 : ; 7 Abfrage phys. Cursoradr. 2183/ F8F1 : ; 8 Setzen phys. Cursoradr. 2184/ F8F1 : ; (DE Adresse) 2185/ F8F1 : ; b) gerufene Programme 2186/ F8F1 : ; - OC Ausgabe ASCII-Zeichen 2187/ F8F1 : ; c) Ausgang 2188/ F8F1 : ; - INITA Tastaturinitialisierung 2189/ F8F1 : ; - OCHAR Ausgabe Zeichen 2190/ F8F1 : ; - OC Ausgabe ASCII-Zeichen (für Cursoroperationen) 2191/ F8F1 : ; d) Return 2192/ F8F1 : ; Parameter: A Zeichen bei IN 2193/ F8F1 : ; DE, HL Adressen bei Cursorabfrage 2194/ F8F1 : ; DE log. 2195/ F8F1 : ; HL phys. 2196/ F8F1 : ; ; 2197/ F8F1 : 21 17 00 CRT: LD HL,COLSW ;HL FUER FARBBEHANDLUNG STELLEN 2198/ F8F4 : 3C INC A 2199/ F8F5 : 20 23 JR NZ, CRT1 2200/ F8F7 : F3 ICRT: DI ;INITIALISIERUNG CRT 2201/ F8F8 : 21 00 19 LD HL,1900H ;(24 Zeilen) 2202/ F8FB : 22 3B 00 LD (P1ROL),HL ;STANDARDFENSTER 2203/ F8FE : 26 29 LD H,29H ;EINSTELLEN (40 Spalten) L = 0 2204/ F900 : 22 3D 00 LD (P3ROL),HL ; 2205/ F903 : 26 00 LD H,0 ; L = 0 2206/ F905 : 22 23 00 LD (COUNT),HL ; 2207/ F908 : 22 25 00 LD (KEYBU),HL ;ARBEITSZELLEN LOESCHEN 2208/ F90B : 22 13 00 LD (JOYR),HL ; 2209/ F90E : 22 16 00 LD (BSW),HL ; 2210/ F911 : DB 88 IN A, DPIO1A 2211/ F913 : E6 38 AND A, 38H ;GRAFIKANZEIGE UND 2212/ F915 : D3 88 OUT DPIO1A, A ;TASTATURSUMMER AUS 2213/ F917 : C3 E3 FA JP INITA ;INIT. TASTATUR 2214/ F91A : ; 2215/ F91A : 3D CRT1: DEC A 2216/ F91B : 20 04 JR NZ, CRT2 2217/ F91D : 2218/ F91D : ; 00 Abfrage Status 2219/ F91D : ; Return: 2220/ F91D : ; A Status 2221/ F91D : ; 0 kein Zeichen bei Eingabegerät, nicht bereit bei Ausgabegerät 2222/ F91D : ; sonst Zeichen liegt an bei Eingabegerät, 2223/ F91D : ; (im installierten CRT-Treiber wird der Zeichencode übergeben) 2224/ F91D : 3A 25 00 STAT: LD A,(KEYBU) ;STATUS ABFRAGEN 2225/ F920 : C9 RET 2226/ F921 : ; 2227/ F921 : 3D CRT2: DEC A 2228/ F922 : 20 21 JR NZ, CRT3 2229/ F924 : 3A 25 00 CI: LD A,(KEYBU) ;TASTATUREINGABE 2230/ F927 : B7 OR A 2231/ F928 : 28 FA JR Z, CI ;WARTEN AUF ZEICHEN, 01 Eingabe Zeichen 2232/ F92A : F5 PUSH AF 2233/ F92B : AF XOR A 2234/ F92C : 32 25 00 LD (KEYBU),A ;TASTATURPUFFER LOESCHEN 2235/ F92F : 32 13 00 LD (JOYR),A ;SPIELHEBELPUFFER 2236/ F932 : 32 14 00 LD (JOYL),A ;LOESCHEN 2237/ F935 : 7E LD A,(HL) ;(HL)=ADR. FARBSCHALTER 2238/ F936 : B7 OR A 2239/ F937 : 28 0A JR Z, CI2 ;ZEICHEN IST KEIN FARBCODE 2240/ F939 : F1 POP AF 2241/ F93A : 2242/ F93A : =>FALSE if farb16 2243/ F93A : CP A, 49H 2244/ F93A : JR NC, CI ;KEIN GUELTIGER FARBCODE 2245/ F93A : JP FARB16C ;WANDELN IN INTERNEN FARBCODE 2246/ F93A : MF941: OR A ;KEIN GUELTIGER FARBCODE 2247/ F93A : =>TRUE else 2248/ F93A : FE 39 CP A, 39H 2249/ F93C : 30 E6 JR NC, CI ;KEIN GUELTIGER FARBCODE 2250/ F93E : D6 31 SUB 31H ;WANDELN IN INTERNEN FARBCODE 2251/ F940 : 38 E2 JR C, CI ;KEIN GUELTIGER FARBCODE 2252/ F942 : [2242] ENDIF 2253/ F942 : 2254/ F942 : F5 PUSH AF 2255/ F943 : F1 CI2: POP AF 2256/ F944 : C9 RET 2257/ F945 : ; 2258/ F945 : 3D CRT3: DEC A 2259/ F946 : CA 8D F8 JP Z, OCHAR ;02 ZEICHEN AUSGEBEN 2260/ F949 : 0E 00 LD C,0 ;ZUFAELLIGES ZEICHEN LOESCHEN 2261/ F94B : 3D DEC A 2262/ F94C : CA 33 FA JP Z, DELC ;03 CURSOR LOESCHEN 2263/ F94F : 3D DEC A 2264/ F950 : CA F3 F9 JP Z, SETC ;04 CURSOR ANZEIGEN 2265/ F953 : 3D DEC A 2266/ F954 : 20 08 JR NZ, CRT4 2267/ F956 : 2268/ F956 : ; 05 Abfrage logische und physische Cursoradresse 2269/ F956 : ; Return: 2270/ F956 : ; HL physische Cursoradresse 2271/ F956 : ; DE logische Cursoradresse 2272/ F956 : CD 7D F9 GLCU: CALL OC ;ABFRAGE LOG. CURSORADRESSE 2273/ F959 : ;HL MIT PHYS. ADR. LADEN 2274/ F959 : ED 5B 2B 00 LD DE,(CHARP) ;LOG. ADRESSE 2275/ F95D : C9 RET 2276/ F95E : ; 2277/ F95E : 3D CRT4: DEC A 2278/ F95F : 28 18 JR Z, SLCU ;06 LOG. CURSORADRESSE SETZEN 2279/ F961 : 3D DEC A 2280/ F962 : 28 19 JR Z, OC ;07 ABFRAGE PHYS. CURSORADRESSE 2281/ F964 : ;HL MIT PHYS. ADR. LADEN 2282/ F964 : 3D DEC A ;08 Setzen Cursor auf physische Adresse 2283/ F965 : C0 RET NZ ;KEIN GUELTIGER RUF 2284/ F966 : 2285/ F966 : ; 08 Setzen Cursor auf physische Adresse 2286/ F966 : ; Eingang: 2287/ F966 : ; DE physische Cursoradresse 2288/ F966 : 21 00 EC SPCU: LD HL,0EC00H ;CURSOR AUF PHYS. ADR. SETZEN 2289/ F969 : EB EX DE,HL 2290/ F96A : ED 52 SBC HL,DE 2291/ F96C : D8 RET C ;ADR. NICHT IM ZEICHENSPEICHER 2292/ F96D : 11 28 00 LD DE,40 ;UMRECHNEN PHYS. --> LOG. ADR. 2293/ F970 : ED 52 SP1: SBC HL,DE 2294/ F972 : 3C INC A 2295/ F973 : 30 FB JR NC, SP1 2296/ F975 : 19 ADD HL,DE 2297/ F976 : 2C INC L 2298/ F977 : 67 LD H,A 2299/ F978 : EB EX DE,HL 2300/ F979 : 2301/ F979 : ;06 Setzen Cursor auf logische Adresse 2302/ F979 : ; Eingang: 2303/ F979 : ; DE logische Cursoradresse 2304/ F979 : ED 53 2B 00 SLCU: LD (CHARP),DE ;CURSOR AUF LOG. ADR. SETZEN 2305/ F97D : 2306/ F97D : ; 07 Abfrage physische Cursoradresse 2307/ F97D : ; Return: 2308/ F97D : ; HL physische Cursoradresse 2309/ F97D : 2310/ F97D : ; 2311/ F97D : ;******************************************************************* 2312/ F97D : ;* PHYSISCHER BILDSCHIRMTREIBER * 2313/ F97D : ;******************************************************************* 2314/ F97D : ; 2315/ F97D : ; Funktion: phys. Bildschirmtreiber 2316/ F97D : ; a) Eingang 2317/ F97D : ; - OC 2318/ F97D : ; gerufen von: CRT, OCHAR 2319/ F97D : ; Parameter : C ASCII-Zeichen 2320/ F97D : ; b) gerufene Programme 2321/ F97D : ; - DELC Cursor löschen 2322/ F97D : ; - ROLU Rollen hoch 2323/ F97D : ; - ROLD Rollen runter 2324/ F97D : ; - MIAT Farbcode investieren 2325/ F97D : ; c) Ausgang 2326/ F97D : ; - 2327/ F97D : ; d) Return 2328/ F97D : ; Parameter: HL phys. Cursoradresse 2329/ F97D : ; 2330/ F97D : =>FALSE OC: if krtgrafik 2331/ F97D : jp ocx 2332/ F97D : =>TRUE else 2333/ F97D : 21 F3 F9 LD HL,SETC ;ADR. FUER ABSCHLIESSENDES 2334/ F980 : [2330] endif 2335/ F980 : E5 oc0: PUSH HL ;CURSOR ANZEIGEN KELLERN 2336/ F981 : CD 33 FA CALL DELC ;CURSOR LOESCHEN 2337/ F984 : ; HL = (CURS), DE= (CURS)-ONEKB (=Adr. im Farbspeicher) 2338/ F984 : 79 LD A,C ;AUSZUGEBENDES ZEICHEN 2339/ F985 : D6 08 SUB 8 ;CURSOR LINKS 2340/ F987 : D8 RET C ;FEHLER 2341/ F988 : 28 4E JR Z, DECCP ;DEC ZEICHENZEIGER 2342/ F98A : 3D DEC A ;CURSOR RECHTS 2343/ F98B : 28 30 JR Z, INCCP ;INC ZEICHENZEIGER 2344/ F98D : 3D DEC A ;CURSOR RUNTER (LF) 2345/ F98E : 28 3B JR Z, INCLP ;INC ZEILENZEIGER 2346/ F990 : 3D DEC A ;CURSOR HOCH 2347/ F991 : 28 53 JR Z, DECLP ;DEC ZEILENZEIGER 2348/ F993 : 3D DEC A 2349/ F994 : 28 0D JR Z, HOME ;LOESCHEN BILDSCHIRM 2350/ F996 : 3D DEC A 2351/ F997 : 28 1E JR Z, CR ;CURSOR AUF ZEILENANFANG (CR) 2352/ F999 : FE 13 CP A, FIRST-0DH 2353/ F99B : D8 RET C ;KEIN DRUCKBARES ZEICHEN 2354/ F99C : ;Zeichenausgabe 2355/ F99C : ; HL = (CURS), DE= (CURS)-ONEKB (=Adr. im Farbspeicher) 2356/ F99C : 71 DIS: LD (HL),C ;ZEICHEN IN ZEICHENSPEICHER 2357/ F99D : 3A 27 00 LD A,(ATRIB) ;AKTUELLER FARBCODE 2358/ F9A0 : 12 LD (DE),A ;FARBCODE IN FARBSPEICHER 2359/ F9A1 : 18 1A JR INCCP ;INC ZEICHENZEIGER 2360/ F9A3 : ;Sonderzeichen 2361/ F9A3 : 3A 3B 00 HOME: LD A,(P1ROL) 2362/ F9A6 : 3C INC A 2363/ F9A7 : 32 2C 00 LD (LINEP),A ;CURSOR AUF 1. ZEILE 2364/ F9AA : 47 LD B,A 2365/ F9AB : 3A 3C 00 LD A,(P2ROL) 2366/ F9AE : 90 SUB B ;AKTUELLE ZEILENZAHL 2367/ F9AF : 47 LD B,A 2368/ F9B0 : C5 HOME1: PUSH BC 2369/ F9B1 : CD 4F FA CALL ROLU ;ROLLEN AUFWAERTS 2370/ F9B4 : C1 POP BC 2371/ F9B5 : 10 F9 DJNZ HOME1 ;BIS FENSTER LEER 2372/ F9B7 : 3A 3D 00 CR: LD A,(P3ROL) 2373/ F9BA : 32 2B 00 LD (CHARP),A ;CURSOR AUF 1. SPALTE-1 2374/ F9BD : ;INC ZEICHENZEIGER 2375/ F9BD : 21 2B 00 INCCP: LD HL,CHARP 2376/ F9C0 : 11 3E 00 LD DE,P4ROL 2377/ F9C3 : 34 INC (HL) ;CURSOR AUF NAECHSTE SPALTE 2378/ F9C4 : 1A LD A,(DE) 2379/ F9C5 : BE CP A, (HL) ;CURSOR AUS DEM FENSTER? 2380/ F9C6 : C0 RET NZ 2381/ F9C7 : 1B DEC DE 2382/ F9C8 : 1A LD A,(DE) 2383/ F9C9 : 3C INC A 2384/ F9CA : 77 LD (HL),A ;CURSOR AUF 1. SPALTE 2385/ F9CB : ;INC ZEILENZEIGER 2386/ F9CB : 21 2C 00 INCLP: LD HL,LINEP 2387/ F9CE : 34 INC (HL) ;CURSOR AUF NAECHSTE ZEILE 2388/ F9CF : 3A 3C 00 LD A,(P2ROL) 2389/ F9D2 : 3D DEC A 2390/ F9D3 : BE CP A, (HL) ;CURSOR AUS DEM FENSTER? 2391/ F9D4 : D0 RET NC 2392/ F9D5 : 77 LD (HL),A ;CURSOR AUF LETZTE ZEILE 2393/ F9D6 : 18 77 JR ROLU ;ROLLEN AUFWAERTS 2394/ F9D8 : ;DEC ZEICHENZEIGER 2395/ F9D8 : 21 2B 00 DECCP: LD HL,CHARP 2396/ F9DB : 11 3D 00 LD DE,P3ROL 2397/ F9DE : 35 DEC (HL) ;CURSOR AUF VORHERGEHENDE SPALTE 2398/ F9DF : 1A LD A,(DE) 2399/ F9E0 : BE CP A, (HL) ;CURSOR AUS DEM FENSTER? 2400/ F9E1 : C0 RET NZ 2401/ F9E2 : 13 INC DE 2402/ F9E3 : 1A LD A,(DE) 2403/ F9E4 : 3D DEC A 2404/ F9E5 : 77 LD (HL),A ;CURSOR AUF LETZTE SPALTE 2405/ F9E6 : ;DEC ZEILENZEIGER 2406/ F9E6 : 21 2C 00 DECLP: LD HL,LINEP 2407/ F9E9 : 35 DEC (HL) 2408/ F9EA : 3A 3B 00 LD A,(P1ROL) 2409/ F9ED : BE CP A, (HL) ;CURSOR AUS DEM FENSTER? 2410/ F9EE : D8 RET C 2411/ F9EF : 3C INC A 2412/ F9F0 : 77 LD (HL),A ;CURSOR AUF 1. ZEILE 2413/ F9F1 : 18 5D JR ROLD ;ROLLEN ABWAERTS 2414/ F9F3 : ;CURSOR WIEDER ANZEIGEN 2415/ F9F3 : ; 04 Cursor anzeigen 2416/ F9F3 : ; Return: 2417/ F9F3 : ; HL physische Cursoradresse 2418/ F9F3 : 3A 2B 00 SETC: LD A,(CHARP) 2419/ F9F6 : 4F LD C,A 2420/ F9F7 : 3A 2C 00 LD A,(LINEP) 2421/ F9FA : 47 LD B,A 2422/ F9FB : 21 D8 EB LD HL,SCTOP-LINEL ;ZEICHENSPEICHERADR.-ZEILENLAENGE 2423/ F9FE : 11 28 00 LD DE,LINEL ;ZEILENLAENGE 2424/ FA01 : 19 SETC1: ADD HL,DE ; 2425/ FA02 : 10 FD DJNZ SETC1 ; 2426/ FA04 : 41 LD B,C ;BERECHNEN CURSORADR. 2427/ FA05 : 2B DEC HL ; 2428/ FA06 : 23 SETC2: INC HL ; 2429/ FA07 : 10 FD DJNZ SETC2 ; 2430/ FA09 : 22 2D 00 LD (CURS),HL ;MERKEN CURSORADRESSE 2431/ FA0C : 3A C8 EF LD A,(MAPAR+7) ;KONFGURATIONSBYTE FUER FARBE 2432/ FA0F : CB 6F BIT 5,A ;FARBVARIANTE? 2433/ FA11 : 20 06 JR NZ, SETC5 ;FARBE 2434/ FA13 : 7E LD A,(HL) ;KEINE FARBE->MERKEN ZEICHEN 2435/ FA14 : 32 3F 00 LD (BUFF),A ; 2436/ FA17 : 36 FF LD (HL),0FFH ;SETZEN CURSOR 2437/ FA19 : 11 00 04 SETC5: LD DE,ONEKB 2438/ FA1C : E5 PUSH HL 2439/ FA1D : ED 52 SBC HL,DE ;ZUGEHOERIGE FARBCODEADRESSE 2440/ FA1F : 7E LD A,(HL) ; 2441/ FA20 : 32 34 00 LD (BUFFA),A ;MERKEN FARBCODE 2442/ FA23 : 3A 27 00 LD A,(ATRIB) 2443/ FA26 : EE 80 XOR 80H ;BLINKEN FUER CURSOR INVERTIEREN 2444/ FA28 : 47 LD B,A 2445/ FA29 : AE XOR (HL) 2446/ FA2A : E6 F0 AND A, 0F0H 2447/ FA2C : 78 LD A,B 2448/ FA2D : 2449/ FA2D : =>FALSE if farb16 2450/ FA2D : NOP ;FARBE BLEIBT 2451/ FA2D : NOP 2452/ FA2D : NOP 2453/ FA2D : =>TRUE else 2454/ FA2D : CC D6 FA CALL Z, MIAT ;CURSORFARBE INVERTIEREN 2455/ FA30 : [2449] ENDIF 2456/ FA30 : 2457/ FA30 : 77 LD (HL),A ;CURSORFARBE SETZEN 2458/ FA31 : E1 POP HL 2459/ FA32 : C9 RET 2460/ FA33 : ; 2461/ FA33 : ;LOESCHEN CURSOR 2462/ FA33 : ; 03 Cursor löschen 2463/ FA33 : 2A 2D 00 DELC: LD HL,(CURS) 2464/ FA36 : 3A C8 EF LD A,(MAPAR+7) ;KONFIGURATIONSBYTE FUER FARBE 2465/ FA39 : CB 6F BIT 5,A ;FARBVARIANTE? 2466/ FA3B : 20 04 JR NZ, DELC1 ;FARBE 2467/ FA3D : 3A 3F 00 LD A,(BUFF) ;KEINE FARBE 2468/ FA40 : 77 LD (HL),A ;ZEICHEN ZURUECK 2469/ FA41 : 11 00 04 DELC1: LD DE,ONEKB 2470/ FA44 : E5 PUSH HL 2471/ FA45 : B7 OR A 2472/ FA46 : ED 52 SBC HL,DE ;ZUGEHOERIGE FARBCODEADRESSE 2473/ FA48 : 3A 34 00 LD A,(BUFFA) 2474/ FA4B : 77 LD (HL),A ;ALTEN FARBCODE ZURUECK 2475/ FA4C : EB EX DE,HL 2476/ FA4D : E1 POP HL 2477/ FA4E : C9 RET 2478/ FA4F : ; 2479/ FA4F : ;BILDSCHIRM ROLLEN (FENSTER) 2480/ FA4F : ; 2481/ FA4F : ; Funktion: Bildschirm rollen, letzte Zeile löschen38 2482/ FA4F : ; a) Eingang 2483/ FA4F : ; - ROLU, ROLD 2484/ FA4F : ; gerufen von: OC 2485/ FA4F : ; - ROLL 2486/ FA4F : ; gerufen von: ROLU, ROLD 2487/ FA4F : ; Parameter : A <>0 runter 2488/ FA4F : ; =0 hoch 2489/ FA4F : ; b) gerufene Programme 2490/ FA4F : ; - MOVE Speicher verschieben 2491/ FA4F : ; 2492/ FA4F : 3E ROLU: DB 3EH ;LD A, 2493/ FA50 : ; 2494/ FA50 : AF ROLD: XOR A 2495/ FA51 : ; 2496/ FA51 : F5 ROL: PUSH AF 2497/ FA52 : 21 D8 EB LD HL,SCTOP-LINEL ;ZEICHENSPEICHERADR.-ZEILENLAENGE 2498/ FA55 : 11 28 00 LD DE,LINEL ;ZEILENLAENGE 2499/ FA58 : 3A 3B 00 LD A,(P1ROL) 2500/ FA5B : 3C INC A 2501/ FA5C : 4F LD C,A 2502/ FA5D : 3A 3C 00 LD A,(P2ROL) 2503/ FA60 : 3D DEC A 2504/ FA61 : 47 LD B,A 2505/ FA62 : F1 POP AF 2506/ FA63 : C5 PUSH BC 2507/ FA64 : B7 OR A ;ROLLEN ABWAERTS? 2508/ FA65 : 28 01 JR Z, ROL1 2509/ FA67 : 41 LD B,C 2510/ FA68 : 19 ROL1: ADD HL,DE 2511/ FA69 : 10 FD DJNZ ROL1 ;1. ZU ROLLENDE ZEILE 2512/ FA6B : C1 POP BC 2513/ FA6C : F5 PUSH AF 2514/ FA6D : 78 LD A,B 2515/ FA6E : 91 SUB C 2516/ FA6F : 28 37 JR Z, ENDRO ;EINE ZEILE, NUR LOESCHEN 2517/ FA71 : 47 LD B,A 2518/ FA72 : F1 ROL2: POP AF 2519/ FA73 : E5 PUSH HL 2520/ FA74 : B7 OR A ;ROLLEN ABWAERTS? 2521/ FA75 : 28 03 JR Z, ROL3 2522/ FA77 : 19 ADD HL,DE 2523/ FA78 : 18 02 JR ROL4 2524/ FA7A : ED 52 ROL3: SBC HL,DE 2525/ FA7C : D1 ROL4: POP DE 2526/ FA7D : F5 PUSH AF 2527/ FA7E : E5 PUSH HL 2528/ FA7F : C5 PUSH BC 2529/ FA80 : ; 2530/ FA80 : ;EINE ZEILE IN ROLLRICHTUNG UMSPEICHERN 2531/ FA80 : 3A 3D 00 MOVEL: LD A,(P3ROL) 2532/ FA83 : 3C INC A 2533/ FA84 : 47 LD B,A 2534/ FA85 : 2B DEC HL 2535/ FA86 : 1B DEC DE 2536/ FA87 : 23 MOVL1: INC HL 2537/ FA88 : 13 INC DE 2538/ FA89 : 10 FC DJNZ MOVL1 ;1. SPALTE SUCHEN 2539/ FA8B : 4F LD C,A 2540/ FA8C : 3A 3E 00 LD A,(P4ROL) 2541/ FA8F : 91 SUB C 2542/ FA90 : 4F LD C,A ;ZEICHENANZAHL 2543/ FA91 : CD F7 F2 CALL MOVE ;UMSPEICHERN 2544/ FA94 : C5 PUSH BC 2545/ FA95 : 01 00 04 LD BC,ONEKB 2546/ FA98 : EB EX DE,HL 2547/ FA99 : ED 42 SBC HL,BC ;ADR. IM FARBSPEICHER 2548/ FA9B : EB EX DE,HL 2549/ FA9C : ED 42 SBC HL,BC 2550/ FA9E : C1 POP BC 2551/ FA9F : ED B0 LDIR 2552/ FAA1 : C1 POP BC 2553/ FAA2 : E1 POP HL 2554/ FAA3 : 11 28 00 LD DE,LINEL 2555/ FAA6 : 10 CA DJNZ ROL2 2556/ FAA8 : F1 ENDRO: POP AF 2557/ FAA9 : ; 2558/ FAA9 : ;ZEILE LOESCHEN 2559/ FAA9 : 3A 3D 00 DELLI: LD A,(P3ROL) 2560/ FAAC : 3C INC A 2561/ FAAD : 4F LD C,A 2562/ FAAE : 47 LD B,A 2563/ FAAF : 23 DELL1: INC HL 2564/ FAB0 : 10 FD DJNZ DELL1 ;1. SPALTE SUCHEN 2565/ FAB2 : 5D LD E,L 2566/ FAB3 : 54 LD D,H 2567/ FAB4 : 2B DEC HL 2568/ FAB5 : 3A 3E 00 LD A,(P4ROL) 2569/ FAB8 : 91 SUB C 2570/ FAB9 : 4F LD C,A ;ANZAHL ZEICHEN 2571/ FABA : 0D DEC C 2572/ FABB : 36 20 LD (HL),SPACE 2573/ FABD : C5 PUSH BC 2574/ FABE : F5 PUSH AF 2575/ FABF : C4 F7 F2 CALL NZ, MOVE ;LOESCHEN 2576/ FAC2 : 11 00 04 LD DE,ONEKB 2577/ FAC5 : ED 52 SBC HL,DE ;ADR. IM FARBSPEICHER 2578/ FAC7 : 3A 27 00 LD A,(ATRIB) ;AKTUELLER FARBCODE 2579/ FACA : CB BF RES 7,A ;KEIN BLINKEN 2580/ FACC : 77 LD (HL),A 2581/ FACD : F1 POP AF 2582/ FACE : C1 POP BC 2583/ FACF : C8 RET Z 2584/ FAD0 : 5D LD E,L 2585/ FAD1 : 54 LD D,H 2586/ FAD2 : 13 INC DE 2587/ FAD3 : ED B0 LDIR ;LOESCHEN FARBSPEICHER 2588/ FAD5 : C9 DELEN: RET 2589/ FAD6 : ; 2590/ FAD6 : ;FARBCODE INVERTIEREN 2591/ FAD6 : MIAT: 2592/ FAD6 : =>FALSE if farb16 2593/ FAD6 : JP MIATN 2594/ FAD6 : NOP 2595/ FAD6 : MFADA: 2596/ FAD6 : =>TRUE else 2597/ FAD6 : 0E 00 LD C,0 2598/ FAD8 : CB 27 SLA A 2599/ FADA : [2592] ENDIF 2600/ FADA : 2601/ FADA : CB 19 RR C ;MERKEN BLINKBIT 2602/ FADC : 07 RLCA 2603/ FADD : 07 RLCA 2604/ FADE : 07 RLCA 2605/ FADF : E6 7F AND A, 7FH 2606/ FAE1 : B1 OR C ;BLINKBIT ZURUECK 2607/ FAE2 : C9 RET 2608/ FAE3 : ; 2609/ FAE3 : ;******************************************************************* 2610/ FAE3 : ;* CRT-TREIBER TEIL 2: TASTATUR * 2611/ FAE3 : ;******************************************************************* 2612/ FAE3 : ; 2613/ FAE3 : ;INITIALISIERUNG TASTATUR 2614/ FAE3 : ; 2615/ FAE3 : F3 INITA: DI 2616/ FAE4 : F5 PUSH AF 2617/ FAE5 : CD F7 FA CALL INICT ;CTC INITIALISIEREN 2618/ FAE8 : F1 POP AF 2619/ FAE9 : ; 2620/ FAE9 : ;INITIALISIERUNG TASTATUR-PIO DATEN A AUF 0 2621/ FAE9 : F5 INPIO: PUSH AF 2622/ FAEA : CD 15 FB CALL INITT ;INIT. PIO DATEN A AUF FFH 2623/ FAED : 3E 83 LD A,83H ;INTERRUPT 2624/ FAEF : D3 93 OUT SPIOB, A ;Interrupt ein 2625/ FAF1 : AF XOR A ;A=0 2626/ FAF2 : D3 90 OUT DPIOA, A ;SPIOA alle Leitungen auf 0 2627/ FAF4 : ;bei Tastendruck wird jetzt ein LOW-Pegel von PIOA auf PIOB durchgeleitet 2628/ FAF4 : ;dieser löst einen Interrupt aus --> INTP 2629/ FAF4 : F1 POP AF 2630/ FAF5 : FB EI 2631/ FAF6 : C9 RET 2632/ FAF7 : ; 2633/ FAF7 : ;INITIALISIERUNG CTC 2634/ FAF7 : 3E 03 INICT: LD A,3 ;Steuerwort CTC: Reset 2635/ FAF9 : D3 80 OUT CTC0, A 2636/ FAFB : D3 82 OUT CTC2, A 2637/ FAFD : D3 8A OUT 8AH, A ;Steuerung PIO1 Kanal A, Interrupt aus 2638/ FAFF : AF XOR A 2639/ FB00 : D3 80 OUT CTC0, A ;INTERRUPT-VEKTOR = 00h 2640/ FB02 : 3E C7 LD A,0C7H ;ZAEHLERINTERRUPT (Steuerwort CTC3: EI, Reset, Zeitkonstante folgt) 2641/ FB04 : D3 83 OUT CTC3, A 2642/ FB06 : 3E 40 LD A,40H ;Zeitkonstante 64, zusammen mit CTC2 ergibt das einen Takt von 1 sek = 1 Hz 2643/ FB08 : D3 83 OUT CTC3, A 2644/ FB0A : 3E 27 INIC1: LD A,27H ;ZEITGEBER KEIN INTERRUPT (Steuerwort CTC2: Vorteiler 256, Reset, Zeitkonstante folgt) 2645/ FB0C : D3 82 OUT CTC2, A 2646/ FB0E : 3E 96 LD A,96H ;Zeitkonstante: 2,4576 Mhz / 256 / 96h = 64 Hz 2647/ FB10 : D3 82 OUT CTC2, A 2648/ FB12 : 3E 03 LD A,3 2649/ FB14 : C9 RET 2650/ FB15 : ; 2651/ FB15 : ;INITIALISIERUNG TASTATUR-PIO DATEN A AUF FFH 2652/ FB15 : 3E CF INITT: LD A,0CFH ;BIT E/A 2653/ FB17 : D3 92 OUT SPIOA, A 2654/ FB19 : AF XOR A ;ALLES AUSGAENGE 2655/ FB1A : D3 92 OUT SPIOA, A 2656/ FB1C : 3E 08 LD A,8 ;Interruptvektor 2657/ FB1E : D3 93 OUT SPIOB, A 2658/ FB20 : 3E CF LD A,0CFH ;BIT E/A 2659/ FB22 : D3 93 OUT SPIOB, A 2660/ FB24 : 3E FF LD A,0FFH ;ALLES EINGAENGE 2661/ FB26 : D3 93 OUT SPIOB, A 2662/ FB28 : 3E 17 LD A,17H ;Interruptsteuerwort, OR, LOW-aktiv, Maske folgt 2663/ FB2A : D3 93 OUT SPIOB, A 2664/ FB2C : AF XOR A ;A=0, Interrupt-Maske 2665/ FB2D : D3 93 OUT SPIOB, A ;alle Eingänge mit Interrupt 2666/ FB2F : 3D DEC A ;A=FF 2667/ FB30 : D3 90 OUT DPIOA, A ;mit FF init. 2668/ FB32 : C9 RET 2669/ FB33 : 2670/ FB33 : =>TRUE IF tastneu = 0 2671/ FB33 : 2672/ FB33 : ; 2673/ FB33 : ;UMC0DIERUNGSTABELLE FUER SONDERTASTEN+SHIFT 2674/ FB33 : ;S64..S78 2675/ FB33 : 18 TAB1: DB 18H ; tab right 2676/ FB34 : 1E DB 1EH ; CONT 2677/ FB35 : 1F DB 1FH ; DEL 2678/ FB36 : 5D DB 5DH ; ] 2679/ FB37 : 00 DB 0 2680/ FB38 : 08 DB 8 ; cu left 2681/ FB39 : 09 DB 9 ; cu right 2682/ FB3A : 0A DB 0AH ; cu down 2683/ FB3B : 0B DB 0BH ; cu up 2684/ FB3C : 02 DB 2 ; CL LN 2685/ FB3D : 0D DB 0DH ; ENTER 2686/ FB3E : 03 DB 3 ; STOP 2687/ FB3F : 20 DB 20H ; space 2688/ FB40 : ; 2689/ FB40 : ;UMCODIERUNGSTASTEN FUER SONDERTASTEN 2690/ FB40 : ;S64..S78 2691/ FB40 : 19 TAB2: DB 19H ; tab left 2692/ FB41 : 13 DB 13H ; PAUSE 2693/ FB42 : 1A DB 1AH ; INS 2694/ FB43 : 5E DB 5EH ; ^ 2695/ FB44 : 00 DB 0 2696/ FB45 : 08 DB 8 ; cu left 2697/ FB46 : 09 DB 9 ; cu right 2698/ FB47 : 0A DB 0AH ; cu down 2699/ FB48 : 0B DB 0BH ; cu up 2700/ FB49 : 1B DB 1BH ; ESC 2701/ FB4A : 0D DB 0DH ; ENTER 2702/ FB4B : 03 DB 3 ; STOP 2703/ FB4C : 20 DB 20H ; space 2704/ FB4D : 00 DB 0 2705/ FB4E : 14 DB 14H ; COLOR 2706/ FB4F : 00 DB 0 2707/ FB50 : 7E DB 7EH ;INTERNER CODE GRAFIC-TASTE 2708/ FB51 : 1C DB 1CH ; LIST 2709/ FB52 : 1D DB 1DH ; RUN 2710/ FB53 : 7D DB 7DH ;INTERNER CODE SHLOC-TSTE 2711/ FB54 : ; 2712/ FB54 : ;UMCODIERUNGSTABELLE FUER GRAFIKSYMBOLE 2713/ FB54 : AB TABG: DB 0ABH ;CTRL/A 2714/ FB55 : 2715/ FB55 : =>FALSE if osver == 11 2716/ FB55 : DB 8Ch ; CTRL B 2717/ FB55 : =>TRUE ELSE 2718/ FB55 : 8D DB 8DH 2719/ FB56 : [2715] ENDIF 2720/ FB56 : 2721/ FB56 : 82 DB 82H ; CTRL C 2722/ FB57 : 85 DB 85H ; CTRL D 2723/ FB58 : 86 DB 86H ; CTRL E 2724/ FB59 : 84 DB 84H ; CTRL F 2725/ FB5A : CF DB 0CFH ; CTRL G 2726/ FB5B : C3 DB 0C3H ; CTRL H 2727/ FB5C : 96 DB 96H ; CTRL I 2728/ FB5D : 90 DB 90H ; CTRL J 2729/ FB5E : 9B DB 9BH ; CTRL K 2730/ FB5F : 9C DB 9CH ; CTRL L 2731/ FB60 : AF DB 0AFH ; CTRL M 2732/ FB61 : C4 DB 0C4H ; CTRL N 2733/ FB62 : 95 DB 95H ; CTRL O 2734/ FB63 : 92 DB 92H ; CTRL P 2735/ FB64 : AE DB 0AEH ; CTRL Q 2736/ FB65 : 87 DB 87H ; CTRL R 2737/ FB66 : AC DB 0ACH ; CTRL S 2738/ FB67 : 8C DB 8CH ; CTRL T 2739/ FB68 : 91 DB 91H ; CTRL U 2740/ FB69 : 83 DB 83H ; CTRL V 2741/ FB6A : AD DB 0ADH ; CTRL W 2742/ FB6B : 80 DB 80H ; CTRL X 2743/ FB6C : 81 DB 81H ; CTRL Y 2744/ FB6D : C2 DB 0C2H ; CTRL Z 2745/ FB6E : 00 DB 0 2746/ FB6F : 00 DB 0 2747/ FB70 : 00 DB 0 2748/ FB71 : 93 DB 93H ;CTRL/^ 2749/ FB72 : 00 DB 0 2750/ FB73 : 00 DB 0 2751/ FB74 : EC DB 0ECH ; SHIFT 1 2752/ FB75 : ED DB 0EDH ; SHIFT 2 2753/ FB76 : EE DB 0EEH ; SHIFT 3 2754/ FB77 : EF DB 0EFH ; SHIFT 4 2755/ FB78 : F0 DB 0F0H ; SHIFT 5 2756/ FB79 : CA DB 0CAH ; SHIFT 6 2757/ FB7A : CC DB 0CCH ; SHIFT 7 2758/ FB7B : D0 DB 0D0H ; SHIFT 8 2759/ FB7C : D1 DB 0D1H ; SHIFT 9 2760/ FB7D : DA DB 0DAH ; SHIFT : 2761/ FB7E : DE DB 0DEH ; SHIFT ; 2762/ FB7F : FC DB 0FCH ; ',' 2763/ FB80 : DF DB 0DFH ; SHIFT = 2764/ FB81 : FD DB 0FDH ; '.' 2765/ FB82 : DB DB 0DBH ; '?' 2766/ FB83 : B3 DB 0B3H ;'0' 2767/ FB84 : A0 DB 0A0H ; '1' 2768/ FB85 : A1 DB 0A1H ; '2' 2769/ FB86 : 9E DB 9EH ; '3' 2770/ FB87 : 9F DB 9FH ; '4' 2771/ FB88 : C0 DB 0C0H ; '5' 2772/ FB89 : C7 DB 0C7H ; '6' 2773/ FB8A : B4 DB 0B4H ; '7' 2774/ FB8B : B0 DB 0B0H ; '8' 2775/ FB8C : B1 DB 0B1H ; '9' 2776/ FB8D : 8F DB 8FH ; ':' 2777/ FB8E : FE DB 0FEH ; ';' 2778/ FB8F : DC DB 0DCH ; SHIFT ',' 2779/ FB90 : FF DB 0FFH ; '=' 2780/ FB91 : DD DB 0DDH ; SHIFT '.' 2781/ FB92 : BE DB 0BEH ; '?' 2782/ FB93 : B2 DB 0B2H ;'@' 2783/ FB94 : A3 DB 0A3H ; 'A' 2784/ FB95 : F9 DB 0F9H ; 'B' 2785/ FB96 : AA DB 0AAH ; 'C' 2786/ FB97 : A5 DB 0A5H ; 'D' 2787/ FB98 : A9 DB 0A9H ; 'E' 2788/ FB99 : 88 DB 88H ; 'F' 2789/ FB9A : C8 DB 0C8H ; 'G' 2790/ FB9B : C6 DB 0C6H ; 'H' 2791/ FB9C : BC DB 0BCH ; 'I' 2792/ FB9D : B6 DB 0B6H ; 'J' 2793/ FB9E : BB DB 0BBH ; 'K' 2794/ FB9F : BA DB 0BAH ; 'L' 2795/ FBA0 : 2796/ FBA0 : =>FALSE IF osver = 11 2797/ FBA0 : DB 0FBH 2798/ FBA0 : =>TRUE ELSEIF osver = 12 2799/ FBA0 : B7 DB 0B7H ; 'M' 2800/ FBA1 : =>FALSE ELSEIF osver = 13 2801/ FBA1 : DB 0FBH 2802/ FBA1 : [2796] ENDIF 2803/ FBA1 : 2804/ FBA1 : FA DB 0FAH ; 'N' 2805/ FBA2 : BD DB 0BDH ; 'O' 2806/ FBA3 : B8 DB 0B8H ; 'P' 2807/ FBA4 : A8 DB 0A8H ; 'Q' 2808/ FBA5 : C1 DB 0C1H ; 'R' 2809/ FBA6 : A6 DB 0A6H ; 'S' 2810/ FBA7 : 89 DB 89H ; 'T' 2811/ FBA8 : B5 DB 0B5H ; 'U' 2812/ FBA9 : F8 DB 0F8H ; 'V' 2813/ FBAA : A4 DB 0A4H ; 'W' 2814/ FBAB : A2 DB 0A2H ; 'X' 2815/ FBAC : A7 DB 0A7H ; 'Y' 2816/ FBAD : C5 DB 0C5H ; 'Z' 2817/ FBAE : 98 DB 98H ; CONTR : 2818/ FBAF : 00 DB 0 2819/ FBB0 : D7 DB 0D7H ; SHIFT ^ 2820/ FBB1 : B9 DB 0B9H ; ^ 2821/ FBB2 : D2 DB 0D2H ; SHIFT 0 2822/ FBB3 : D3 DB 0D3H ; SHIFT @ 2823/ FBB4 : F2 DB 0F2H ; SHIFT A 2824/ FBB5 : E0 DB 0E0H ; SHIFT B 2825/ FBB6 : E2 DB 0E2H ; SHIFT C 2826/ FBB7 : F4 DB 0F4H ; SHIFT D 2827/ FBB8 : E8 DB 0E8H ; SHIFT E 2828/ FBB9 : F5 DB 0F5H ; SHIFT F 2829/ FBBA : F6 DB 0F6H ; SHIFT G 2830/ FBBB : 8A DB 8AH ; SHIFT H 2831/ FBBC : D4 DB 0D4H ; SHIFT I 2832/ FBBD : 8B DB 8BH ; SHIFT J 2833/ FBBE : D8 DB 0D8H ; SHIFT K 2834/ FBBF : D9 DB 0D9H ; SHIFT L 2835/ FBC0 : CD DB 0CDH ; SHIFT M 2836/ FBC1 : CE DB 0CEH ; SHIFT N 2837/ FBC2 : D5 DB 0D5H ; SHIFT O 2838/ FBC3 : D6 DB 0D6H ; SHIFT P 2839/ FBC4 : EA DB 0EAH ; SHIFT Q 2840/ FBC5 : E7 DB 0E7H ; SHIFT R 2841/ FBC6 : F3 DB 0F3H ; SHIFT S 2842/ FBC7 : E6 DB 0E6H ; SHIFT T 2843/ FBC8 : C9 DB 0C9H ; SHIFT U 2844/ FBC9 : E1 DB 0E1H ; SHIFT V 2845/ FBCA : E9 DB 0E9H ; SHIFT W 2846/ FBCB : E3 DB 0E3H ; SHIFT X 2847/ FBCC : E4 DB 0E4H ; SHIFT Y 2848/ FBCD : CB DB 0CBH ; SHIFT Z 2849/ FBCE : 94 DB 94H ; CONTR < 2850/ FBCF : 9D DB 9DH ; CONTR , 2851/ FBD0 : 97 DB 97H ; CONTR = 2852/ FBD1 : 9A DB 9AH ; CONTR . 2853/ FBD2 : 99 DB 99H ; CONTR ? 2854/ FBD3 : 2855/ FBD3 : =>FALSE ELSE ; tastneu = 1 2856/ FBD3 : 2857/ FBD3 : ;Neue Tastaturtabelle: 2858/ FBD3 : ; 2859/ FBD3 : ;TABELLE FUER ALLE TASTEN 2860/ FBD3 : ; 2861/ FBD3 : TAB1: 2862/ FBD3 : ;Spalte 0 2863/ FBD3 : DB '0' 2864/ FBD3 : DB '8' 2865/ FBD3 : DB '@' 2866/ FBD3 : DB 'H' 2867/ FBD3 : DB 'P' 2868/ FBD3 : DB 'X' 2869/ FBD3 : DB 08H ; <- 2870/ FBD3 : DB 00H ; SHIFT 2871/ FBD3 : ;Spalte 1 2872/ FBD3 : DB '1' 2873/ FBD3 : DB '9' 2874/ FBD3 : DB 'A' 2875/ FBD3 : DB 'I' 2876/ FBD3 : DB 'Q' 2877/ FBD3 : DB 'Y' 2878/ FBD3 : DB 09H ; -> 2879/ FBD3 : DB 14H ; COLOR 2880/ FBD3 : ; Spalte 2 2881/ FBD3 : DB '2' 2882/ FBD3 : DB ':' 2883/ FBD3 : DB 'B' 2884/ FBD3 : DB 'J' 2885/ FBD3 : DB 'R' 2886/ FBD3 : DB 'Z' 2887/ FBD3 : DB 0AH ; cursor down 2888/ FBD3 : DB 00H ; CONTROL 2889/ FBD3 : ; Spalte 3 2890/ FBD3 : DB '3' 2891/ FBD3 : DB ';' 2892/ FBD3 : DB 'C' 2893/ FBD3 : DB 'K' 2894/ FBD3 : DB 'S' 2895/ FBD3 : DB 19H ; |<- 2896/ FBD3 : DB 0BH ; cursor up 2897/ FBD3 : DB 11H ; GRAFIK 2898/ FBD3 : ; Spalte 4 2899/ FBD3 : DB '4' 2900/ FBD3 : DB ',' 2901/ FBD3 : DB 'D' 2902/ FBD3 : DB 'L' 2903/ FBD3 : DB 'T' 2904/ FBD3 : DB 13H ; PAUSE 2905/ FBD3 : DB 1BH ; ESC 2906/ FBD3 : DB 1CH ; LIST 2907/ FBD3 : ; Spalte 5 2908/ FBD3 : DB '5' 2909/ FBD3 : DB '=' 2910/ FBD3 : DB 'E' 2911/ FBD3 : DB 'M' 2912/ FBD3 : DB 'U' 2913/ FBD3 : DB 1AH ; INS 2914/ FBD3 : DB 0DH ; ENTER 2915/ FBD3 : DB 1DH ; RUN 2916/ FBD3 : ; Spalte 6 2917/ FBD3 : DB '6' 2918/ FBD3 : DB '.' 2919/ FBD3 : DB 'F' 2920/ FBD3 : DB 'N' 2921/ FBD3 : DB 'V' 2922/ FBD3 : DB '^' 2923/ FBD3 : DB 03H ; STOP 2924/ FBD3 : DB 10H ; SHIFT LOCK 2925/ FBD3 : ; Spalte 7 2926/ FBD3 : DB '7' 2927/ FBD3 : DB '?' 2928/ FBD3 : DB 'G' 2929/ FBD3 : DB 'O' 2930/ FBD3 : DB 'W' 2931/ FBD3 : DB '[' ; (S68) 2932/ FBD3 : DB ' ' ; SPACE 2933/ FBD3 : DB ']' ; (S88) 2934/ FBD3 : ; 2935/ FBD3 : ;TABELLE DER SONDERTASTEN (24) 2936/ FBD3 : ; 2937/ FBD3 : TAB2: DB '1' 2938/ FBD3 : DB '2' 2939/ FBD3 : DB '3' 2940/ FBD3 : DB '4' 2941/ FBD3 : DB '5' 2942/ FBD3 : DB '6' 2943/ FBD3 : DB '7' 2944/ FBD3 : DB '8' 2945/ FBD3 : DB '9' 2946/ FBD3 : DB '0' 2947/ FBD3 : DB ':' 2948/ FBD3 : DB ';' 2949/ FBD3 : DB ',' 2950/ FBD3 : DB '=' 2951/ FBD3 : DB '.' 2952/ FBD3 : DB '?' 2953/ FBD3 : DB 19H ; |<- 2954/ FBD3 : DB 13H ; PAUSE 2955/ FBD3 : DB 1AH ; INS 2956/ FBD3 : DB 1BH ; ESC 2957/ FBD3 : DB 20H ; SPACE 2958/ FBD3 : DB 1CH ; LIST 2959/ FBD3 : DB 1DH ; RUN 2960/ FBD3 : DB 14H ; INK 2961/ FBD3 : ; 2962/ FBD3 : ;TABELLE DER SONDERTASTEN + SHIFT 2963/ FBD3 : ; 2964/ FBD3 : DB '!' 2965/ FBD3 : DB '"' ; " 2966/ FBD3 : DB '#' 2967/ FBD3 : DB '$' 2968/ FBD3 : DB '%' 2969/ FBD3 : DB '&' 2970/ FBD3 : DB 27H ; ’ 2971/ FBD3 : DB '(' 2972/ FBD3 : DB ')' 2973/ FBD3 : DB '_' 2974/ FBD3 : DB '*' 2975/ FBD3 : DB '+' 2976/ FBD3 : DB '<' 2977/ FBD3 : DB '-' 2978/ FBD3 : DB '>' 2979/ FBD3 : DB 2FH ; / 2980/ FBD3 : DB 18H ; ->| 2981/ FBD3 : DB 1EH ; CONT 2982/ FBD3 : DB 1FH ; DEL 2983/ FBD3 : DB 02H ; CLLN 2984/ FBD3 : DB 20H ; SPACE 2985/ FBD3 : DB 7CH ; | 2986/ FBD3 : DB 7FH ; 2987/ FBD3 : DB 15H ; PAPER 2988/ FBD3 : DB 0FFH 2989/ FBD3 : DB 0FFH 2990/ FBD3 : 2991/ FBD3 : if rommenu 2992/ FBD3 : ;Menü, nur in der Version 2.1 implementiert, sonst alles 0FFH: 2993/ FBD3 : MENUE: CALL PRNST 2994/ FBD3 : LD A,(IOBYT) 2995/ FBD3 : AND 0FCH 2996/ FBD3 : OR 01H 2997/ FBD3 : CALL IOST1 2998/ FBD3 : LD HL,0048H ; "H" 2999/ FBD3 : LD (CONBU+2),HL ; PSEUDOEINGABE "H" 3000/ FBD3 : CALL GVAL 3001/ FBD3 : CALL CPROM ; SUCHEN KOMMANDO IM SPEICHER 3002/ FBD3 : RET NZ ; NICHT GEFUNDEN 3003/ FBD3 : JP (HL) ; SPRUNG ZUM PROGRAMM "H" 3004/ FBD3 : [2991] endif 3005/ FBD3 : 3006/ FBD3 : ;------------------------------------------------------------------------------ 3007/ FBD3 : ; Patches V Pohlers 3008/ FBD3 : ;------------------------------------------------------------------------------ 3009/ FBD3 : 3010/ FBD3 : ; Anpassung Zeichenausgabe: Jedesmal die orig. Grafik wieder einschalten 3011/ FBD3 : if krtgrafik 3012/ FBD3 : ocx: ld a,0 3013/ FBD3 : out 0b8h,a ;KRT-Grafik aus 3014/ FBD3 : LD HL,SETC ;orig. Code 3015/ FBD3 : jp oc0 3016/ FBD3 : [3011] endif 3017/ FBD3 : 3018/ FBD3 : 3019/ FBD3 : if extcio 3020/ FBD3 : ; Anpassung Kassettenroutinen - Testen auf ext. Erweiterung 3021/ FBD3 : ; Block lesen 3022/ FBD3 : marekx: 3023/ FBD3 : LD HL,(EXTRD) 3024/ FBD3 : LD A,(HL) ;steht auf Anfang der EXTRD-Routine der 3025/ FBD3 : CP A, 3AH ;Befehl "LD A,(nn)" 3026/ FBD3 : Jr NZ,marekx1 3027/ FBD3 : jp (HL) ;dann Ansprung von EXTRD 3028/ FBD3 : ; sonst orig Code von MAREK 3029/ FBD3 : marekx1: 3030/ FBD3 : DI 3031/ FBD3 : CALL INIC1 3032/ FBD3 : jp marek0 3033/ FBD3 : 3034/ FBD3 : ; Block schreiben 3035/ FBD3 : karamx: 3036/ FBD3 : LD HL,(EXTWR) 3037/ FBD3 : LD A,(HL) ;steht auf Anfang der EXTWR-Routine der 3038/ FBD3 : CP A, 3AH ;Befehl "LD A,(nn)" 3039/ FBD3 : Jr NZ,karamx1 3040/ FBD3 : jp (HL) ;dann Ansprung von EXTWR 3041/ FBD3 : ; sonst orig Code von KARAM 3042/ FBD3 : karamx1: 3043/ FBD3 : DI 3044/ FBD3 : XOR A 3045/ FBD3 : LD (PSUM),A 3046/ FBD3 : jp karam0 3047/ FBD3 : [3019] endif 3048/ FBD3 : 3049/ FBD3 : 3050/ FBD3 : org 0FBD3h 3051/ FBD3 : ;------------------------------------------------------------------------------ 3052/ FBD3 : [2670] ENDIF 3053/ FBD3 : 3054/ FBD3 : ; 3055/ FBD3 : ;TABELLE DER LOGISCHEN GERAETE 3056/ FBD3 : E9 EF PHYDV: DW TXCON 3057/ FBD5 : 43 4F 4E 53 54 20 DB "CONST " 3058/ FBDB : 00 DB 0 3059/ FBDC : EB EF DW TXCON+2 3060/ FBDE : 52 45 41 44 45 52 DB "READER" 3061/ FBE4 : 00 DB 0 3062/ FBE5 : ED EF DW TXCON+4 3063/ FBE7 : 50 55 4E 43 48 20 DB "PUNCH " 3064/ FBED : 00 DB 0 3065/ FBEE : EF EF DW TXCON+6 3066/ FBF0 : 4C 49 53 54 20 20 DB "LIST " 3067/ FBF6 : 00 DB 0 3068/ FBF7 : ; 3069/ FBF7 : ;WBOOT - MELDUNG 3070/ FBF7 : 0A TXTWB: DB 0AH 3071/ FBF8 : 0D DB 0DH 3072/ FBF9 : 4F 53 DB "OS" 3073/ FBFB : 0A DB 0AH 3074/ FBFC : 0D DB 0DH 3075/ FBFD : 00 DB 0 3076/ FBFE : ; 3077/ FBFE : ;TABELLE DER RESIDENTEN KOMMANDOS 3078/ FBFE : ; 3079/ FC00 : ORG RESET+0C00H 3080/ FC00 : ; 3081/ FC00 : C3 BA F0 RESCO: JP ASGN 3082/ FC03 : 41 53 47 4E 20 20 DB "ASGN " 20 20 3083/ FC0B : 00 DB 0 3084/ FC0C : C3 81 F1 JP TIME_ 3085/ FC0F : 54 49 4D 45 20 20 DB "TIME " 20 20 3086/ FC17 : 00 DB 0 3087/ FC18 : C3 22 F5 JP LOAD 3088/ FC1B : 43 4C 4F 41 44 20 DB "CLOAD " 20 20 3089/ FC23 : 00 DB 0 3090/ FC24 : ; 3091/ FC24 : ;TABELLE DER PHYSISCHEN GERAETE IM MONITOR 3092/ FC24 : 01 00 LOGDV: DW 0001 ;LOG. GERAET CONST, PHYS. CRT 3093/ FC26 : 43 52 54 DB "CRT" 3094/ FC29 : 00 DB 0 3095/ FC2A : 02 00 DW 0002 ;LOG. GERAET CONST, PHYS. BAT 3096/ FC2C : 42 41 54 DB "BAT" 3097/ FC2F : 00 DB 0 3098/ FC30 : ; 3099/ FC30 : ;RESET - MELDUNG 3100/ FC30 : 14 MSG: DB 14H ; Color 3101/ FC31 : 01 DB 1 3102/ FC32 : 0C DB 0CH 3103/ FC33 : =>UNDEFINED IFNDEF resmsg 3104/ FC33 : 72 6F 62 6F 74 72 DB "robotron Z 9001" 6F 6E 20 20 5A 20 39 30 30 31 3105/ FC43 : =>FALSE ELSE 3106/ FC43 : DB resmsg 3107/ FC43 : [3103] ENDIF 3108/ FC43 : 0A DB 0AH 3109/ FC44 : 0D DB 0DH 3110/ FC45 : 14 DB 14H ; Color 3111/ FC46 : 02 DB 2 3112/ FC47 : 00 DB 0 3113/ FC48 : ; 3114/ FC48 : 0A TXTRC: DB 0AH 3115/ FC49 : =>FALSE if osver == 11 3116/ FC49 : DB 0DH 3117/ FC49 : [3115] ENDIF 3118/ FC49 : 73 74 61 72 74 20 DB "start tape" 74 61 70 65 3119/ FC53 : 0A DB 0AH 3120/ FC54 : 0D DB 0DH 3121/ FC55 : 00 DB 0 3122/ FC56 : ; 3123/ FC56 : ;FEHLERMELDUNGEN 3124/ FC56 : TXTBE: 3125/ FC56 : =>TRUE IF osver <> 11 3126/ FC56 : 07 DB 07 ;CTRL/G 3127/ FC57 : [3125] ENDIF 3128/ FC57 : 3129/ FC57 : 42 4F 53 2D DB "BOS-" 3130/ FC5B : 65 72 72 6F 72 TXTE: DB "error" 3131/ FC60 : 07 DB 07 3132/ FC61 : 00 DB 0 3133/ FC62 : 6D 65 6D 6F 72 79 TXTMP: DB "memory protected" 20 70 72 6F 74 65 63 74 65 64 3134/ FC72 : 00 DB 0 3135/ FC73 : 65 6E 64 20 6F 66 TXTEO: DB "end of memory" 20 6D 65 6D 6F 72 79 3136/ FC80 : 00 DB 0 3137/ FC81 : 72 65 63 6F 72 64 TXTNB: DB "record not found" 20 6E 6F 74 20 66 6F 75 6E 64 3138/ FC91 : 00 DB 0 3139/ FC92 : 62 61 64 20 72 65 TXTPT: DB "bad record" 63 6F 72 64 3140/ FC9C : 00 DB 0 3141/ FC9D : 66 69 6C 65 20 6E TXTNF: DB "file not found" 6F 74 20 66 6F 75 6E 64 3142/ FCAB : ; 3143/ FCAB : ;TABELLE DER TRENNZEICHEN 3144/ FCAB : 00 DTAB: DB 0 3145/ FCAC : 20 2C 2E 3A DB " ,.:" 3146/ FCB0 : ; 3147/ FCB0 : ;INTERRUPTADRESSEN 3148/ FCB0 : 43 FF INTV: DW IKACT ;KASSETTE SCHREIBEN CTC0 3149/ FCB2 : 00 00 DW 0 ; CTC1 3150/ FCB4 : FB FC DW ICTC ;VORTEILER UHR CTC2 3151/ FCB6 : C2 FC DW INUHR ;SEKUNDENTAKT UHR CTC3 3152/ FCB8 : E4 FC DW INTP ;TASTATUR PIOB 3153/ FCBA : BD FF DW IKEP ;KASSETTE LESEN PIO1AS 3154/ FCBC : ; 3155/ FCBC : E5 COMPW: PUSH HL 3156/ FCBD : B7 OR A 3157/ FCBE : ED 52 SBC HL,DE 3158/ FCC0 : E1 POP HL 3159/ FCC1 : C9 RET 3160/ FCC2 : ; 3161/ FCC2 : ;UHRINTERRUPTROUTINE 3162/ FCC2 : ; 3163/ FCC2 : FB INUHR: EI 3164/ FCC3 : E5 PUSH HL 3165/ FCC4 : C5 PUSH BC 3166/ FCC5 : F5 PUSH AF 3167/ FCC6 : 21 20 00 LD HL,SEK+1 3168/ FCC9 : 06 02 LD B,2 3169/ FCCB : 3E 3C LD A,60 3170/ FCCD : 2B INUH1: DEC HL 3171/ FCCE : 34 INC (HL) 3172/ FCCF : BE CP A, (HL) 3173/ FCD0 : 20 0D JR NZ, INUH3 3174/ FCD2 : 36 00 LD (HL),0 3175/ FCD4 : 10 F7 DJNZ INUH1 3176/ FCD6 : 3E 18 LD A,24 3177/ FCD8 : 2B DEC HL 3178/ FCD9 : 34 INC (HL) 3179/ FCDA : BE CP A, (HL) 3180/ FCDB : 20 02 JR NZ, INUH3 3181/ FCDD : 36 00 LD (HL),0 3182/ FCDF : F1 INUH3: POP AF 3183/ FCE0 : C1 POP BC 3184/ FCE1 : E1 POP HL 3185/ FCE2 : ED 4D RETI 3186/ FCE4 : ; 3187/ FCE4 : ;TASTATURINTERRUPTROUTINE 3188/ FCE4 : ;wird durch PIOB aktiv, wenn ein Eingang auf LOW geht 3189/ FCE4 : ;weiter geht es mit einem Interrupt durch CTC2 --> ICTC 3190/ FCE4 : ; 3191/ FCE4 : F5 INTP: PUSH AF 3192/ FCE5 : 3E 0A LD A,10 3193/ FCE7 : 32 23 00 LD (COUNT),A ;INTERRUPTZAEHLER LADEN 3194/ FCEA : 3E 7F LD A,7FH ;FUER ENTPRELLEN 3195/ FCEC : 32 24 00 LD (LAKEY),A ;LETZES ZEICHEN LOESCHEN 3196/ FCEF : 3E A5 LD A,0A5H ;CTC 2 INTERRUPT ERLAUBEN 3197/ FCF1 : D3 82 OUT CTC2, A ;EI, Zeitgeber, Vorteiler 256, Zeitkonstantenstart, Zeitkonstante folgt 3198/ FCF3 : 3E 96 LD A,96H ;Zeitkonstante: 2,4576 Mhz / 256 / 96h = 64 Hz 3199/ FCF5 : D3 82 OUT CTC2, A 3200/ FCF7 : F1 POP AF 3201/ FCF8 : FB EI 3202/ FCF9 : ED 4D RETI 3203/ FCFB : ; 3204/ FCFB : ;INTERRUPTROUTINE ZUM TASTATUR ENTPRELLEN/REPEAT - FUNKTION 3205/ FCFB : ;wird durch CTC2 aktiv 3206/ FCFB : ; 3207/ FCFB : FB ICTC: EI 3208/ FCFC : F5 PUSH AF 3209/ FCFD : E5 PUSH HL 3210/ FCFE : 21 23 00 LD HL,COUNT 3211/ FD01 : 35 DEC (HL) 3212/ FD02 : 28 13 JR Z, ICTC2 ;TASTATUR ABFRAGEN 3213/ FD04 : 3E 07 LD A,7 3214/ FD06 : A6 AND A, (HL) 3215/ FD07 : 20 22 JR NZ, ENDI ;NOCH NICHT WIEDER ABFRAGEN 3216/ FD09 : 23 INC HL ;(HL)=ADR. LAKEY 3217/ FD0A : CD 30 FD CALL DECO ;TASTATUR ABFRAGEN WENN LAKEY <>0 3218/ FD0D : 28 1C JR Z, ENDI ;KEIN GUELTIGER TASTENCODE 3219/ FD0F : BE CP A, (HL) ;VERGLEICH MIT LETZTEM CODE 3220/ FD10 : 28 19 JR Z, ENDI 3221/ FD12 : 2B DEC HL 3222/ FD13 : 36 28 LD (HL),40 ;NACH 1. ZEICHEN LANGE PAUSE 3223/ FD15 : 18 07 JR ICTC3 3224/ FD17 : 36 06 ICTC2: LD (HL),6 ;SCHNELLES REPEAT 3225/ FD19 : CD 33 FD CALL DECO0 ;TASTATUR ABFRAGEN 3226/ FD1C : 28 0D JR Z, ENDI ;KEIN GUELTIGER CODE 3227/ FD1E : 23 ICTC3: INC HL 3228/ FD1F : 77 LD (HL),A 3229/ FD20 : 3A 25 00 LD A,(KEYBU) 3230/ FD23 : FE 03 CP A, 3 ;STOP 3231/ FD25 : 28 04 JR Z, ENDI ;NICHT UEBERSCHREIBEN 3232/ FD27 : 7E LD A,(HL) 3233/ FD28 : 32 25 00 LD (KEYBU),A ;ZEICHEN IN TASTATURPUFFER 3234/ FD2B : E1 ENDI: POP HL 3235/ FD2C : F1 POP AF 3236/ FD2D : FB EI 3237/ FD2E : ED 4D RETI 3238/ FD30 : 3239/ FD30 : ; TASTATURMATRIX 3240/ FD30 : ; 3241/ FD30 : ; PIO2A, Port 90H 3242/ FD30 : ; 3243/ FD30 : ; A0 A1 A2 A3 A4 A5 A6 A7 3244/ FD30 : ; | | | | | | | | 3245/ FD30 : ; TI0 TI1 TI2 TI3 TI4 TI5 TI6 TI7 3246/ FD30 : ; | | | | | | | | 3247/ FD30 : ; ------------------------------------------------- PIO2B, Port 91H 3248/ FD30 : ; | S11 | S12 | S13 | S14 | S15 | S16 | S17 | S18 |--TO0-B0 3249/ FD30 : ; | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 3250/ FD30 : ; ------------------------------------------------- 3251/ FD30 : ; | S21 | S22 | S23 | S24 | S25 | S26 | S27 | S28 |--TO1-B1 3252/ FD30 : ; | 8 | 9 | : | ; | , | = | . | ? | 3253/ FD30 : ; ------------------------------------------------- 3254/ FD30 : ; | S31 | S32 | S33 | S34 | S35 | S36 | S37 | S38 |--TO2-B2 3255/ FD30 : ; | @ | A | B | C | D | E | F | G | 3256/ FD30 : ; ------------------------------------------------- 3257/ FD30 : ; | S41 | S42 | S43 | S44 | S45 | S46 | S47 | S48 |--TO3-B3 3258/ FD30 : ; | H | I | J | K | L | M | N | O | 3259/ FD30 : ; ------------------------------------------------- 3260/ FD30 : ; | S51 | S52 | S53 | S54 | S55 | S56 | S57 | S58 |--TO4-B4 3261/ FD30 : ; | P | Q | R | S | T | U | V | W | 3262/ FD30 : ; ------------------------------------------------- 3263/ FD30 : ; | S61 | S62 | S63 | S64 | S65 | S66 | S67 |(S68)|--TO5-B5 3264/ FD30 : ; | X | Y | Z | tab |pause| ins | ^ | | 3265/ FD30 : ; ------------------------------------------------- 3266/ FD30 : ; | S71 | S72 | S73 | S74 | S75 | S76 | S77 | S78 |--TO6-B6 3267/ FD30 : ; |left |right| down| up | esc |enter|stop |space| 3268/ FD30 : ; ------------------------------------------------- 3269/ FD30 : ; | S81 | S82 | S83 | S84 | S85 | S86 | S87 |(S88)|--TO7-B7 3270/ FD30 : ; |shift|color|contr|graph|list | run |shlck| | 3271/ FD30 : ; ------------------------------------------------- 3272/ FD30 : ; 3273/ FD30 : 3274/ FD30 : =>TRUE IF tastneu = 0 3275/ FD30 : 3276/ FD30 : ; 3277/ FD30 : ;DECODIEREN DER TASTATURMATRIX 3278/ FD30 : 7E DECO: LD A,(HL) ;(HL)=ADR. LAKEY 3279/ FD31 : B7 OR A 3280/ FD32 : C8 RET Z 3281/ FD33 : ; 3282/ FD33 : ; Funktion: dekodieren Tastaturmatrix 3283/ FD33 : ; a) Eingang 3284/ FD33 : ; - DECOO 3285/ FD33 : ; gerufen von: ICTC 3286/ FD33 : ; b) gerufene Programme 3287/ FD33 : ; - GPIOD Abfrage Tastatur PIO 3288/ FD33 : ; c) Ausgang 3289/ FD33 : ; - 3290/ FD33 : ; d) Return 3291/ FD33 : ; Parameter: A Zeichen 3292/ FD33 : ; Z 1 Fehler 3293/ FD33 : ; 0 gültig 3294/ FD33 : ; 3295/ FD33 : E5 DECO0: PUSH HL 3296/ FD34 : D5 PUSH DE 3297/ FD35 : C5 PUSH BC 3298/ FD36 : 21 68 FE LD HL,ERDEC 3299/ FD39 : E5 PUSH HL ;ADR. FUER ENDEBEHANDLUNG 3300/ FD3A : CD 8F FE CALL GPIOD ;LESEN TASTATUR-PIO 3301/ FD3D : 7A DEC2: LD A,D 3302/ FD3E : B7 OR A 3303/ FD3F : C8 RET Z ;KEIN KONTAKT IN MATRIXZEILE 3304/ FD40 : 7B LD A,E 3305/ FD41 : B7 OR A 3306/ FD42 : C8 RET Z ;KEIN KONTAKT IN MATRIXSPALTE 3307/ FD43 : 3A 26 00 LD A,(SHLOC) 3308/ FD46 : B7 OR A 3309/ FD47 : 28 06 JR Z, DEC22 ;KEIN SHIFT LOCK 3310/ FD49 : CB C3 SET 0,E 3311/ FD4B : CB FA SET 7,D ;BIT WIE BEI SHIFT STELLEN 3312/ FD4D : CB BD RES 7,L 3313/ FD4F : E5 DEC22: PUSH HL 3314/ FD50 : D5 PUSH DE 3315/ FD51 : ;ZEILE DECODIEREN 3316/ FD51 : 5A LD E,D 3317/ FD52 : 0E 08 LD C,8 3318/ FD54 : CD 81 FE CALL M0 3319/ FD57 : 67 LD H,A 3320/ FD58 : CD 89 FE CALL M2 3321/ FD5B : 6F LD L,A 3322/ FD5C : D1 POP DE 3323/ FD5D : C1 POP BC 3324/ FD5E : C0 RET NZ 3325/ FD5F : ;SPALTE DECODIEREN 3326/ FD5F : C5 PUSH BC 3327/ FD60 : 0E 01 LD C,1 3328/ FD62 : AF XOR A 3329/ FD63 : CD 83 FE CALL M01 3330/ FD66 : F5 PUSH AF 3331/ FD67 : 84 ADD A, H 3332/ FD68 : 67 LD H,A 3333/ FD69 : F1 POP AF 3334/ FD6A : 85 ADD A, L 3335/ FD6B : BF CP A, A 3336/ FD6C : CD 89 FE CALL M2 3337/ FD6F : 6F LD L,A 3338/ FD70 : C1 POP BC 3339/ FD71 : C0 RET NZ 3340/ FD72 : ; 3341/ FD72 : DB 88 IN A, DPIO1A ;BIT FUER GRAFIK HOLEN (LED) 3342/ FD74 : 5F LD E,A 3343/ FD75 : 7D LD A,L 3344/ FD76 : FE 48 CP A, 72 3345/ FD78 : 28 6E JR Z, EINET ;EINZELTASTE 3346/ FD7A : FE 41 CP A, 65 3347/ FD7C : 28 06 JR Z, SHT0 3348/ FD7E : FE 46 CP A, 70 3349/ FD80 : 20 0D JR NZ, SHT1 3350/ FD82 : 3E A9 LD A,7DH+44 ;INTERNER CODE SHIFT LOCK + 44 3351/ FD84 : ; 3352/ FD84 : D6 2C SHT0: SUB 44 3353/ FD86 : 6F LD L,A 3354/ FD87 : 7C LD A,H 3355/ FD88 : FE 38 CP A, 56 3356/ FD8A : C0 RET NZ 3357/ FD8B : 7D LD A,L 3358/ FD8C : C3 38 FE JP ER1 3359/ FD8F : FE 40 SHT1: CP A, 64 3360/ FD91 : 28 6B JR Z, ZWEIT ;ZWEI TASTEN 3361/ FD93 : D0 RET NC 3362/ FD94 : D6 39 SUB 57 3363/ FD96 : D8 RET C 3364/ FD97 : 84 ADD A, H 3365/ FD98 : CB 78 BIT 7,B 3366/ FD9A : 28 2D JR Z, CONTT ;CONTROLTASTE 3367/ FD9C : 01 90 00 LD BC,90H ;B=0, C=DPIO1A 3368/ FD9F : 26 05 LD H,00000101B 3369/ FDA1 : ED 61 OUT (C), H 3370/ FDA3 : 0C INC C 3371/ FDA4 : ED 60 IN H, (C) 3372/ FDA6 : 0D DEC C 3373/ FDA7 : ED 41 OUT (C), B 3374/ FDA9 : CB 7C BIT 7,H 3375/ FDAB : C8 RET Z 3376/ FDAC : 3C INC A 3377/ FDAD : FE 0C SHT2: CP A, 12 3378/ FDAF : 38 64 JR C, UCO20 3379/ FDB1 : 28 60 JR Z, UCO30 3380/ FDB3 : FE 0E CP A, 14 3381/ FDB5 : 38 5E JR C, UCO20 3382/ FDB7 : 28 5A JR Z, UCO30 3383/ FDB9 : FE 0F CP A, 15 3384/ FDBB : 28 58 JR Z, UCO20 3385/ FDBD : D6 2B SUB 43 3386/ FDBF : 38 4E JR C, UCO93 3387/ FDC1 : FE 0D CP A, 13 3388/ FDC3 : D0 RET NC 3389/ FDC4 : 21 33 FB LD HL,TAB1 ;SONDERTASTEN + SHIFT 3390/ FDC7 : 18 55 JR UCOTA 3391/ FDC9 : ; 3392/ FDC9 : 3D CONTT: DEC A ;TASTE + CONTROL 3393/ FDCA : D6 0A CONT2: SUB 10 3394/ FDCC : D8 RET C 3395/ FDCD : D6 06 SUB 6 3396/ FDCF : C8 RET Z 3397/ FDD0 : 30 0D JR NC, CONT3 3398/ FDD2 : FE FA CP A, 0FAH 3399/ FDD4 : 20 02 JR NZ, COT22 3400/ FDD6 : D6 1F SUB 1FH 3401/ FDD8 : CB 73 COT22: BIT 6,E ;GRAFIK-MODE? 3402/ FDDA : C8 RET Z 3403/ FDDB : D6 80 SUB 80H 3404/ FDDD : 18 38 JR ENDE 3405/ FDDF : FE 1B CONT3: CP A, 27 3406/ FDE1 : 38 34 JR C, ENDE 3407/ FDE3 : FE 1E CP A, 30 3408/ FDE5 : C0 RET NZ 3409/ FDE6 : 18 2F CONT4: JR ENDE 3410/ FDE8 : ; 3411/ FDE8 : 7C EINET: LD A,H ;EINZELTASTE 3412/ FDE9 : FE 0C CP A, 12 3413/ FDEB : 38 26 JR C, UCO30 3414/ FDED : 28 26 JR Z, UCO20 3415/ FDEF : FE 0E CP A, 14 3416/ FDF1 : 38 20 JR C, UCO30 3417/ FDF3 : 28 20 JR Z, UCO20 3418/ FDF5 : D6 2B SUB 43 3419/ FDF7 : 38 18 JR C, UCO73 3420/ FDF9 : 21 40 FB LD HL,TAB2 ;SONDERTASTEN 3421/ FDFC : 18 20 JR UCOTA 3422/ FDFE : ; 3423/ FDFE : 78 ZWEIT: LD A,B ;ZWEI TASTEN BETAETIGT 3424/ FDFF : A9 XOR C 3425/ FE00 : BA CP A, D 3426/ FE01 : C0 RET NZ 3427/ FE02 : 3E 03 LD A,3 3428/ FE04 : A4 AND A, H 3429/ FE05 : 7C LD A,H 3430/ FE06 : 20 C2 JR NZ, CONT2 3431/ FE08 : B7 OR A 3432/ FE09 : 20 A2 JR NZ, SHT2 3433/ FE0B : 3E 5F LD A,'_' 3434/ FE0D : 18 08 JR ENDE 3435/ FE0F : ;BERECHNEN CODES ALPHA-NUM.-ZEICHEN 3436/ FE0F : C6 20 UCO93: ADD A, 20H 3437/ FE11 : C6 2B UCO73: ADD A, 2BH 3438/ FE13 : C6 10 UCO30: ADD A, 10H 3439/ FE15 : C6 20 UCO20: ADD A, 20H 3440/ FE17 : CB 73 ENDE: BIT 6,E ;GRAFIK-MODE? 3441/ FE19 : 28 1D JR Z, ER1 3442/ FE1B : 21 53 FB LD HL,TABG-1 ;GRAFIK-CODES 3443/ FE1E : 06 00 UCOTA: LD B,0 3444/ FE20 : 4F LD C,A ;TABELLENOFFSET 3445/ FE21 : 09 ADD HL,BC 3446/ FE22 : 7E LD A,(HL) 3447/ FE23 : FE 5E CP A, '^' 3448/ FE25 : 28 F0 JR Z, ENDE 3449/ FE27 : FE 5D CP A, 5DH 3450/ FE29 : 28 EC JR Z, ENDE 3451/ FE2B : B7 OR A 3452/ FE2C : E1 POP HL 3453/ FE2D : 20 0A JR NZ, ER2 ;GUELTIGER CODE 3454/ FE2F : 3E 7F LD A,7FH 3455/ FE31 : 32 24 00 LD (LAKEY),A ;LOESCHEN 3456/ FE34 : 3E 0A LD A,10 3457/ FE36 : 18 43 JR ERDC2 3458/ FE38 : E1 ER1: POP HL 3459/ FE39 : FE 7E ER2: CP A, 7EH ;INTERNER CODE GRAFIK 3460/ FE3B : 20 0D JR NZ, ER22 3461/ FE3D : 7B LD A,E 3462/ FE3E : EE 40 XOR 40H ;GRAFIK-LED EIN/AUS 3463/ FE40 : D3 88 OUT DPIO1A, A 3464/ FE42 : AF ER21: XOR A 3465/ FE43 : 32 24 00 LD (LAKEY),A ;WAR NUR INTERNE CODIERUNG 3466/ FE46 : 3E 28 LD A,40 ;LANGE REPEATPAUSE 3467/ FE48 : 18 31 JR ERDC2 3468/ FE4A : FE 7D ER22: CP A, 7DH ;INTERNER CODE SHIFT LOCK 3469/ FE4C : 20 0A JR NZ, ER3 3470/ FE4E : 3A 26 00 LD A,(SHLOC) 3471/ FE51 : EE 01 XOR 1 ;SHIFT LOCK EIN/AUS 3472/ FE53 : 32 26 00 LD (SHLOC),A 3473/ FE56 : 18 EA JR ER21 3474/ FE58 : C1 ER3: POP BC 3475/ FE59 : D1 POP DE 3476/ FE5A : E1 POP HL 3477/ FE5B : FE 5D CP A, 5DH 3478/ FE5D : 28 06 JR Z, ER4 3479/ FE5F : FE 60 CP A, 60H 3480/ FE61 : 20 03 JR NZ, ER5 3481/ FE63 : D6 21 SUB 21H 3482/ FE65 : 3C ER4: INC A 3483/ FE66 : B7 ER5: OR A 3484/ FE67 : C9 RET 3485/ FE68 : ;DEKODIERUNGSFEHLER 3486/ FE68 : 3E 83 ERDEC: LD A,83H ;PIO UND CTC NEU INIT. 3487/ FE6A : D3 93 OUT SPIOB, A 3488/ FE6C : AF XOR A 3489/ FE6D : D3 90 OUT DPIOA, A 3490/ FE6F : 3E 25 LD A,25H 3491/ FE71 : D3 82 OUT CTC2, A 3492/ FE73 : 3E 96 LD A,96H 3493/ FE75 : D3 82 OUT CTC2, A 3494/ FE77 : AF XOR A 3495/ FE78 : 32 24 00 LD (LAKEY),A 3496/ FE7B : 32 23 00 ERDC2: LD (COUNT),A 3497/ FE7E : AF XOR A 3498/ FE7F : 18 D7 JR ER3 3499/ FE81 : ; 3500/ FE81 : 3E F7 M0: LD A,-9 3501/ FE83 : 06 08 M01: LD B,8 3502/ FE85 : 81 M1: ADD A, C 3503/ FE86 : CB 3B SRL E 3504/ FE88 : D8 RET C 3505/ FE89 : 10 FA M2: DJNZ M1 3506/ FE8B : C0 RET NZ 3507/ FE8C : 81 ADD A, C 3508/ FE8D : BF CP A, A 3509/ FE8E : C9 RET 3510/ FE8F : 3511/ FE8F : =>FALSE ELSE ; tastneu = 1 3512/ FE8F : 3513/ FE8F : ; 3514/ FE8F : ;DECODIEREN DER TASTATURMATRIX 3515/ FE8F : DECO: LD A, (HL) ;(HL)=ADR. LAKEY 3516/ FE8F : OR A 3517/ FE8F : RET Z 3518/ FE8F : DECO0: PUSH HL 3519/ FE8F : PUSH DE 3520/ FE8F : PUSH BC 3521/ FE8F : LD HL, ERDEC ;DECODIERFEHLER_NEU 3522/ FE8F : PUSH HL ;ADR. FUER ENDEBEHANDLUNG 3523/ FE8F : CALL GPIOD ;LESEN TASTATUR-PIO 3524/ FE8F : DEC2: LD A, D ;D=Zeile 3525/ FE8F : OR A 3526/ FE8F : RET Z ;KEIN KONTAKT IN MATRIXZEILE 3527/ FE8F : LD A, E ;E=Spalte 3528/ FE8F : OR A 3529/ FE8F : RET Z ;KEIN KONTAKT IN MATRIXSPALTE 3530/ FE8F : LD A, H ;H=Control-Taste 3531/ FE8F : AND 80H 3532/ FE8F : LD H, 0C0H 3533/ FE8F : LD B, 0FBH 3534/ FE8F : CALL MFDE0 3535/ FE8F : JR Z, DEC3 3536/ FE8F : LD A, L 3537/ FE8F : AND 80H 3538/ FE8F : LD H, 20H 3539/ FE8F : LD B, 0FEH 3540/ FE8F : CALL MFDE0 3541/ FE8F : JR Z, DEC3 3542/ FE8F : if shlocFlg 3543/ FE8F : ld a,(SHLOC) 3544/ FE8F : else 3545/ FE8F : IN A, (DPIO1A) 3546/ FE8F : [3542] endif 3547/ FE8F : AND 1 3548/ FE8F : LD H, 20H 3549/ FE8F : JR NZ, DEC3 3550/ FE8F : LD H, 0 3551/ FE8F : DEC3: LD A, H 3552/ FE8F : OR A 3553/ FE8F : JR Z, DEC4 3554/ FE8F : LD A, D 3555/ FE8F : AND 7FH 3556/ FE8F : JR Z, DEC4 3557/ FE8F : LD D, A 3558/ FE8F : DEC4: XOR A 3559/ FE8F : LD C, 8 3560/ FE8F : CALL MFDE9 3561/ FE8F : RET NZ 3562/ FE8F : RET NC 3563/ FE8F : SUB C 3564/ FE8F : LD C, 1 3565/ FE8F : LD E, D 3566/ FE8F : CALL MFDE9 3567/ FE8F : RET NZ 3568/ FE8F : RET NC 3569/ FE8F : SUB C 3570/ FE8F : LD C, H 3571/ FE8F : LD HL, TAB1 ;TABELLE FUER ALLE TASTEN 3572/ FE8F : LD D, 0 3573/ FE8F : LD E, A 3574/ FE8F : ADD HL, DE 3575/ FE8F : LD A, (HL) 3576/ FE8F : CP 40H 3577/ FE8F : JR C, MFD9F ;wenn Sondertaste 3578/ FE8F : ADD A, C 3579/ FE8F : DEC5: LD B, A 3580/ FE8F : IN A, (DPIO1A) 3581/ FE8F : AND 40H ;Grafikmodus? 3582/ FE8F : JR Z, DEC6 3583/ FE8F : SET 7, B ;dann Bit 7 setzen 3584/ FE8F : DEC6: LD A, B 3585/ FE8F : DEC7: POP BC 3586/ FE8F : DEC8: POP BC 3587/ FE8F : POP DE 3588/ FE8F : POP HL 3589/ FE8F : OR A 3590/ FE8F : RET 3591/ FE8F : ; Sondertasten 3592/ FE8F : MFD9F: BIT 7, C 3593/ FE8F : RET NZ 3594/ FE8F : OR A 3595/ FE8F : RET Z 3596/ FE8F : CP 3 ;STOPTASTE? 3597/ FE8F : JR Z, MFDB2 3598/ FE8F : CP 10H ;SHIFT LOCK? 3599/ FE8F : JR Z, MFDC9 3600/ FE8F : JR C, DEC7 3601/ FE8F : CP 11H ;GRAFIK? 3602/ FE8F : JR Z, MFDD8 3603/ FE8F : ; 3604/ FE8F : MFDB2: BIT 5, C 3605/ FE8F : JR Z, MFDC3 3606/ FE8F : LD HL, TAB2 ;TABELLE DER SONDERTASTEN 3607/ FE8F : LD BC, 24 ;ANZAHL DER SONDERTASTEN 3608/ FE8F : CPIR 3609/ FE8F : RET NZ 3610/ FE8F : LD C, 23 ;ANZAHL DER SONDERTASTEN - 1 3611/ FE8F : ADD HL, BC 3612/ FE8F : LD A, (HL) 3613/ FE8F : MFDC3: CP 1AH 3614/ FE8F : JR C, DEC7 3615/ FE8F : JR DEC5 3616/ FE8F : ;SHIFT LOCK 3617/ FE8F : MFDC9: if shlocFlg 3618/ FE8F : ld hl, SHLOC 3619/ FE8F : ld a, (hl) 3620/ FE8F : xor 1 3621/ FE8F : ld (hl), a 3622/ FE8F : else 3623/ FE8F : IN A, (DPIO1A) 3624/ FE8F : XOR 1 3625/ FE8F : OUT (DPIO1A), A 3626/ FE8F : [3617] endif 3627/ FE8F : ER21: XOR A 3628/ FE8F : LD (LAKEY), A ;WAR NUR INTERNE CODIERUNG 3629/ FE8F : LD A, 40 ;LANGE REPEATPAUSE 3630/ FE8F : POP BC 3631/ FE8F : JR ERDC2 3632/ FE8F : ;GRAFIK 3633/ FE8F : MFDD8: IN A, (DPIO1A) ;GRAFIK-LED EIN/AUS 3634/ FE8F : XOR 40H 3635/ FE8F : OUT (DPIO1A), A 3636/ FE8F : JR ER21 3637/ FE8F : ; 3638/ FE8F : MFDE0: RET NZ 3639/ FE8F : PUSH AF 3640/ FE8F : LD A, E 3641/ FE8F : AND B 3642/ FE8F : JR Z, MFDE7 3643/ FE8F : LD E, A 3644/ FE8F : MFDE7: POP AF 3645/ FE8F : RET 3646/ FE8F : ; 3647/ FE8F : MFDE9: LD B, 8 3648/ FE8F : MFDEB: ADD A, C 3649/ FE8F : SRL E 3650/ FE8F : RET C 3651/ FE8F : DJNZ MFDEB 3652/ FE8F : RET 3653/ FE8F : ; DEKODIERUNGSFEHLER 3654/ FE8F : ERDEC: LD A, 83H ;PIO UND CTC NEU INIT 3655/ FE8F : OUT (SPIOB), A 3656/ FE8F : XOR A 3657/ FE8F : OUT (DPIOA), A 3658/ FE8F : LD A, 25H 3659/ FE8F : OUT (CTC2), A 3660/ FE8F : LD A, 96H 3661/ FE8F : OUT (CTC2), A 3662/ FE8F : XOR A 3663/ FE8F : LD (LAKEY), A 3664/ FE8F : ERDC2: LD (COUNT), A 3665/ FE8F : XOR A 3666/ FE8F : JR DEC8 3667/ FE8F : 3668/ FE8F : if rombank 3669/ FE8F : ; 3670/ FE8F : ;ROM-BANK-ROUTINE 3671/ FE8F : ; 3672/ FE8F : ROMBK: JP NZ, CP1 ;EPROM-BANK 3673/ FE8F : OUT (78H), A ;BANK SCHALTEN 3674/ FE8F : LD A, (0EC27H) ;BILDSCHIRMZELLE (1. ZEILE, LETZTES ZEICHEN) 3675/ FE8F : ;; INC A 3676/ FE8F : dec a 3677/ FE8F : LD (0EC27H), A ;WERT ZURUECK 3678/ FE8F : JP NZ, CPROM ;SUCHEN KOMMANDO IM SPEICHER 3679/ FE8F : INC H 3680/ FE8F : RET 3681/ FE8F : 3682/ FE8F : [3668] endif 3683/ FE8F : 3684/ FE8F : if farb16 3685/ FE8F : 3686/ FE8F : ;CTRL-A, CTRL-D 3687/ FE8F : CTRLAD: LD A, C 3688/ FE8F : DEC A ;PRUEFEN CTRL-A 3689/ FE8F : JR Z, UMZ ;JA, ZEICHENSATZ UMSCHALTEN 3690/ FE8F : SUB 3 ;PRUEFEN CTRL-D 3691/ FE8F : JR Z, UMBL ;UMSCHALTEN INK/BLINK 3692/ FE8F : DEC A 3693/ FE8F : JP MF8A1 ;ZURUECK ZU OCH1 3694/ FE8F : 3695/ FE8F : UMBL: 3696/ FE8F : ;; OUT (70H), A ;SETZEN INK/BLINK-FLIPFLOP 3697/ FE8F : ;; LD A, (MAPAR+7) ;(FARBRAMZELLE) 3698/ FE8F : ;; BIT 5, A ;SCHWARZ-WEISS? 3699/ FE8F : ;; RES 5, A 3700/ FE8F : ;; JR NZ, ABSP ;FARBVARIANTE 3701/ FE8F : ;; SET 5, A ;LADEN FARBVARIANTE 3702/ FE8F : 3703/ FE8F : in a, (DPIO1A) 3704/ FE8F : xor 1 3705/ FE8F : out (DPIO1A), a 3706/ FE8F : ld a, (0EFC8h) 3707/ FE8F : xor 20h ; Toggle Bit 5 3708/ FE8F : 3709/ FE8F : ABSP: LD (MAPAR+7), A ;IN DIE FARBRAMZELLE 3710/ FE8F : LD A, (ATRIB) 3711/ FE8F : RES 7, A 3712/ FE8F : LD (ATRIB), A 3713/ FE8F : RET 3714/ FE8F : 3715/ FE8F : ;;UMZ: OUT (74H), A ;UMSCHALTEN ZEICHENSATZ 3716/ FE8F : UMZ: OUT (0BBH), A ;UMSCHALTEN ZEICHENSATZ 3717/ FE8F : RET 3718/ FE8F : [3684] endif 3719/ FE8F : 3720/ FE8F : if farb16 3721/ FE8F : ; Unterstützung für 16 Farben, CRT-Treiber (Teil 2): 3722/ FE8F : 3723/ FE8F : ; FARBBEHANDLUNG INK 3724/ FE8F : INK16: LD A, (MAPAR+7) ;FARBRAMZELLE 3725/ FE8F : BIT 5, A ;FARBE? 3726/ FE8F : JR Z, INKNEU 3727/ FE8F : BLINK_: LD B, 8FH ;ALTE MASKE 3728/ FE8F : LD A, E 3729/ FE8F : RET 3730/ FE8F : INKNEU: LD B, 0FH ;NEUE MASKE 3731/ FE8F : LD A, E 3732/ FE8F : RET 3733/ FE8F : ; FARBBEHANDLUNG BORDER 3734/ FE8F : BORD: LD B, 0C5H ;NEUE MASKE 3735/ FE8F : SLA C 3736/ FE8F : SLA C 3737/ FE8F : SLA C 3738/ FE8F : BIT 6, C ;PRUEFEN NEUE FARBE 3739/ FE8F : JR Z, MFE64 ;KEINE NEUE FARBE 3740/ FE8F : SET 1, C ;SETZEN FARBBIT NEU 3741/ FE8F : RES 6, C ;RUECKSETZEN GRAFIK 3742/ FE8F : RET 3743/ FE8F : MFE64: RES 1, C ;RUECKSETZEN FARBBIT 3744/ FE8F : RET 3745/ FE8F : ; FARBERWEITERUNG COLOR A-H 3746/ FE8F : FARB16C: 3747/ FE8F : SUB 31H 3748/ FE8F : JP C, CI ; >= 1 3749/ FE8F : CP 8 3750/ FE8F : JR C, MFE77 ; <= 8 3751/ FE8F : SUB 8 3752/ FE8F : CP 8 3753/ FE8F : JP C, CI ; <= H 3754/ FE8F : MFE77: JP MF941 3755/ FE8F : ; MIAT NEU 3756/ FE8F : MIATN: LD C, A 3757/ FE8F : LD A, (MAPAR+7) 3758/ FE8F : BIT 5, A ;PRUEFEN FARBE 3759/ FE8F : LD A, C 3760/ FE8F : JR Z, I_MIAT 3761/ FE8F : LD C, 0 3762/ FE8F : SLA A 3763/ FE8F : JP MFADA 3764/ FE8F : I_MIAT: RLCA 3765/ FE8F : RLCA 3766/ FE8F : RLCA 3767/ FE8F : RLCA 3768/ FE8F : RET 3769/ FE8F : [3720] endif 3770/ FE8F : 3771/ FE8F : org 0FE8Fh 3772/ FE8F : [3274] ENDIF ; tastneu = 1 3773/ FE8F : 3774/ FE8F : ; 3775/ FE8F : ;TASTATUR - PIO ABFRAGEN 3776/ FE8F : F3 GPIOD: DI 3777/ FE90 : DB 91 IN A, DPIOB 3778/ FE92 : 2F CPL 3779/ FE93 : 57 LD D,A ;NEGIERTE MATRIXZEILE 3780/ FE94 : 3E 03 LD A,3 3781/ FE96 : D3 93 OUT SPIOB, A 3782/ FE98 : 3E FB LD A,11111011B ;PRUEFEN CONTROL-TASTE 3783/ FE9A : D3 90 OUT DPIOA, A 3784/ FE9C : DB 91 IN A, DPIOB 3785/ FE9E : 67 LD H,A 3786/ FE9F : 3E FE LD A,11111110B ;PRUEFEN SHIFT-TASTE 3787/ FEA1 : D3 90 OUT DPIOA, A 3788/ FEA3 : DB 91 IN A, DPIOB 3789/ FEA5 : 6F LD L,A 3790/ FEA6 : 3E CF LD A,0CFH 3791/ FEA8 : D3 92 OUT SPIOA, A 3792/ FEAA : 3E FF LD A,0FFH 3793/ FEAC : D3 92 OUT SPIOA, A 3794/ FEAE : 3E CF LD A,0CFH 3795/ FEB0 : D3 93 OUT SPIOB, A 3796/ FEB2 : AF XOR A 3797/ FEB3 : D3 93 OUT SPIOB, A 3798/ FEB5 : D3 91 OUT DPIOB, A 3799/ FEB7 : DB 90 IN A, DPIOA 3800/ FEB9 : 2F CPL 3801/ FEBA : 5F LD E,A ;NEGIERTE MATRIXSPALTE 3802/ FEBB : 3E 80 LD A,80H ;SPIELHEBEL 1 ABFRAGEN 3803/ FEBD : D3 91 OUT DPIOB, A 3804/ FEBF : DB 90 IN A, DPIOA 3805/ FEC1 : 2F CPL 3806/ FEC2 : 32 13 00 LD (JOYR),A 3807/ FEC5 : 3E 40 LD A,40H ;SPIELHEBEL 2 ABFRAGEN 3808/ FEC7 : D3 91 OUT DPIOB, A 3809/ FEC9 : DB 90 IN A, DPIOA 3810/ FECB : 2F CPL 3811/ FECC : 32 14 00 LD (JOYL),A 3812/ FECF : CD 15 FB CALL INITT ;TATSTATUR INIT. 3813/ FED2 : AF XOR A 3814/ FED3 : D3 90 OUT DPIOA, A 3815/ FED5 : C9 RET 3816/ FED6 : ; 3817/ FED6 : ORG RESET+0ED6H 3818/ FED6 : ; 3819/ FED6 : ;******************************************************************* 3820/ FED6 : ;* KASSETTEN - E/A * 3821/ FED6 : ;******************************************************************* 3822/ FED6 : ; 3823/ FED6 : ;SCHREIBEN EINES BLOCKES 3824/ FED6 : ; 3825/ FED6 : ; Funktion: Schreiben eines Blockes 3826/ FED6 : ; a) Eingang 3827/ FED6 : ; - KARAM 3828/ FED6 : ; gerufen von: WRIT 3829/ FED6 : ; Parameter : DMA Blockadresse 3830/ FED6 : ; BLNR Blocknummer 3831/ FED6 : ; BC Anzahl der Vortonzeichen 3832/ FED6 : ; b) gerufene Programme 3833/ FED6 : ; - INIC1 CTC vorinitialialisieren 3834/ FED6 : ; - INIVT Vorton initialisieren 3835/ FED6 : ; - AUS1 Ausgabe 1 Bit 3836/ FED6 : ; - AUST Ausgabe Trennzeichen 3837/ FED6 : ; - KAUBT Ausgabe 1 Byte 3838/ FED6 : ; c) Ausgang 3839/ FED6 : ; - DYNST Ausgabe der letzten Halbperiode 3840/ FED6 : ; d) Return 3841/ FED6 : ; 3842/ FED6 : KARAM: 3843/ FED6 : =>FALSE if extcio 3844/ FED6 : jp karamx 3845/ FED6 : nop 3846/ FED6 : nop 3847/ FED6 : =>TRUE else 3848/ FED6 : F3 DI 3849/ FED7 : AF XOR A 3850/ FED8 : 32 69 00 LD (PSUM),A 3851/ FEDB : [3843] endif 3852/ FEDB : CD 0A FB karam0: CALL INIC1 3853/ FEDE : D3 93 OUT SPIOB, A ;TASTATUR AUS (A ist 3) 3854/ FEE0 : CD 0D FF CALL INIVT ;VORTON INIT. 3855/ FEE3 : CD 31 FF KARA1: CALL AUS1 ;VORTON AUSGEBEN 3856/ FEE6 : ED A1 CPI 3857/ FEE8 : EA E3 FE JP PE,KARA1 ;BC MAL 3858/ FEEB : CD 29 FF CALL AUST ;TRENNZEICHEN 3859/ FEEE : 3A 6B 00 LD A,(BLNR) 3860/ FEF1 : CD 18 FF CALL KAUBT ;BLOCKNUMMER AUSGEBEN 3861/ FEF4 : 2A 1B 00 LD HL,(DMA) ;BLOCKADRESSE 3862/ FEF7 : 06 80 LD B,80H ;ANZAHL BYTES 3863/ FEF9 : 7E KARA2: LD A,(HL) 3864/ FEFA : CD 18 FF CALL KAUBT ;AUSGABE DATENBYTE 3865/ FEFD : 3A 69 00 LD A,(PSUM) 3866/ FF00 : 86 ADD A, (HL) ;NEUE PRUEFSUMME 3867/ FF01 : 32 69 00 LD (PSUM),A 3868/ FF04 : 23 INC HL 3869/ FF05 : 10 F2 DJNZ KARA2 3870/ FF07 : CD 18 FF CALL KAUBT ;PRUEFSUMME AUSGEBEN 3871/ FF0A : 7A LD A,D 3872/ FF0B : 18 2B JR DYNST ;LETZTE HALBPERIODE AUSGEBEN 3873/ FF0D : ; 3874/ FF0D : ;VORTON INITIALISIEREN 3875/ FF0D : 3E 85 INIVT: LD A,85H ;Steuerwort CTC: (EI, Zeitkonstante folgt) 3876/ FF0F : D3 80 OUT CTC0, A ;CTC0 3877/ FF11 : 3E 40 LD A,40H ;VORTON 1 3878/ FF13 : D3 80 OUT CTC0, A ;CTC0 Zeitkonstante: 2,4576 Mhz / 16 / 40h = 2400 Hz 3879/ FF15 : FB EI 3880/ FF16 : 57 LD D,A ;LAENGE HALBPERIODE 3881/ FF17 : C9 RET 3882/ FF18 : ; 3883/ FF18 : ;SCHREIBEN EINES BYTES 3884/ FF18 : ; 3885/ FF18 : ; Funktion: Ausgabe eines Bytes 3886/ FF18 : ; a) Eingang 3887/ FF18 : ; - KAUBT 3888/ FF18 : ; gerufen von: KARAM 3889/ FF18 : ; Parameter : A Byte 3890/ FF18 : ; D Länge Halbperiode vorheriges Bit 3891/ FF18 : ; - AUST 3892/ FF18 : ; gerufen von: KARAM 3893/ FF18 : ; Parameter : D Länge Halbperiode vorheriges Bit 3894/ FF18 : ; - AUS1 3895/ FF18 : ; gerufen von: KARAM 3896/ FF18 : ; Parameter : D Länge Halbperiode vorheriges Bit 3897/ FF18 : ; b) gerufene Programme 3898/ FF18 : ; - AUS1, AUS0 Ausgabe 1 Bit, 0 Bit 3899/ FF18 : ; - DYNST Warten eine Halbperiode 3900/ FF18 : ; c) Ausgang 3901/ FF18 : ; - 3902/ FF18 : ; d) Return 3903/ FF18 : ; Parameter: D Länge Halbperiode vorheriges Bit 3904/ FF18 : ; 3905/ FF18 : C5 KAUBT: PUSH BC 3906/ FF19 : 4F LD C,A 3907/ FF1A : 06 08 LD B,8 3908/ FF1C : CB 09 KAUB1: RRC C 3909/ FF1E : F5 PUSH AF 3910/ FF1F : DC 31 FF CALL C, AUS1 ;1 BIT 3911/ FF22 : F1 POP AF 3912/ FF23 : D4 2D FF CALL NC, AUS0 ;0 BIT 3913/ FF26 : 10 F4 DJNZ KAUB1 3914/ FF28 : C1 POP BC 3915/ FF29 : 1E 80 AUST: LD E,80H ;TRENNZEICHEN Zeitkonstante: 2,4576 Mhz / 16 / 80h = 600 Hz 3916/ FF2B : 18 06 JR AUS 3917/ FF2D : 1E 20 AUS0: LD E,20H ;0 BIT Zeitkonstante: 2,4576 Mhz / 16 / 20h = 1200 Hz 3918/ FF2F : 18 02 JR AUS 3919/ FF31 : 1E 40 AUS1: LD E,40H ;1 BIT Zeitkonstante: 2,4576 Mhz / 16 / 40h = 2400 Hz 3920/ FF33 : 7A AUS: LD A,D 3921/ FF34 : CD 38 FF CALL DYNST ;LETZTE HALBPERIODE NOCH AUSGEB. 3922/ FF37 : 7A LD A,D ;1. HALBPERIODE NEUES BIT 3923/ FF38 : 32 6A 00 DYNST: LD (ARB),A 3924/ FF3B : 3A 6A 00 DY1: LD A,(ARB) 3925/ FF3E : B7 OR A 3926/ FF3F : 20 FA JR NZ, DY1 ;WARTEN BIS FLANKE AUSGEGEBEN 3927/ FF41 : 53 LD D,E ;LAENGE NEUE HALBPERIODE 3928/ FF42 : C9 RET 3929/ FF43 : ; 3930/ FF43 : ;INTERRRUPTROUTINE ZUM SCHREIBEN 3931/ FF43 : ; 3932/ FF43 : ; Funktion: Interruptroutine Schreiben 3933/ FF43 : ; a) Eingang 3934/ FF43 : ; - IKACT 3935/ FF43 : ; Parameter: ARB Länge nächste Halbperiode39 3936/ FF43 : ; b) gerufene Programme 3937/ FF43 : ; - 3938/ FF43 : ; c) Ausgang 3939/ FF43 : ; - 3940/ FF43 : ; d) Return 3941/ FF43 : ; Parameter: ARB 0 3942/ FF43 : ; 3943/ FF43 : F5 IKACT: PUSH AF 3944/ FF44 : 3E 03 LD A,3 ;Steuerwort CTC (Reset) 3945/ FF46 : D3 80 OUT CTC0, A ;CTC0 3946/ FF48 : 3E 85 LD A,85H ;Steuerwort CTC (EI, Zeitkonstante folgt) 3947/ FF4A : D3 80 OUT CTC0, A ;CTC0 3948/ FF4C : 3A 6A 00 LD A,(ARB) ;Zeitkonstante holen 3949/ FF4F : D3 80 OUT CTC0, A ;ZAEHLERWERT ENTSPR. ZEICHEN 3950/ FF51 : AF XOR A 3951/ FF52 : 32 6A 00 LD (ARB),A ;Arbeitszelle auf 0 setzen als Fertigmarkierung 3952/ FF55 : F1 POP AF 3953/ FF56 : FB EI 3954/ FF57 : ED 4D RETI 3955/ FF59 : ; 3956/ FF59 : ;LESEN EINES BLOCKES 3957/ FF59 : ; 3958/ FF59 : ; Funktion: Lesen eines Blockes 3959/ FF59 : ; a) Eingang 3960/ FF59 : ; - MAREK 3961/ FF59 : ; gerufen von: RRAND 3962/ FF59 : ; Parameter : DMA 3963/ FF59 : ; b) gerufene Programme 3964/ FF59 : ; - INIC1 CTC vorinitialisieren 3965/ FF59 : ; - LSTOP Warten eine Periode 3966/ FF59 : ; - LS1 Warten eine Halbperiode41 3967/ FF59 : ; - IBYTE Lesen eines Bytes 3968/ FF59 : ; c) Ausgang 3969/ FF59 : ; - 3970/ FF59 : ; d) Return 3971/ FF59 : ; Parameter: BLNR Blocknummer 3972/ FF59 : ; PSUM Prüfsumme 3973/ FF59 : ; CY 0 kein Fehler 3974/ FF59 : ; 1 Fehler 3975/ FF59 : ; 3976/ FF59 : MAREK: 3977/ FF59 : =>FALSE if extcio 3978/ FF59 : JP marekx ;Patch f. ext. Routine 3979/ FF59 : nop 3980/ FF59 : =>TRUE else 3981/ FF59 : F3 DI 3982/ FF5A : CD 0A FB CALL INIC1 3983/ FF5D : [3977] endif 3984/ FF5D : D3 93 MAREK0: OUT SPIOB, A ;TASTATUR AUS 3985/ FF5F : D3 8A OUT SPIO1A, A 3986/ FF61 : 3E 05 LD A,5 3987/ FF63 : D3 80 OUT CTC0, A ;CTC 0 ZUM ZEIT MESSEN 3988/ FF65 : 3E B0 LD A,0B0H ;STARTWERT 3989/ FF67 : D3 80 OUT CTC0, A 3990/ FF69 : 3E 0F LD A,0FH 3991/ FF6B : D3 8A OUT SPIO1A, A 3992/ FF6D : 3E 0A LD A,0AH ;Interruptvektor 20A -> IKEP 3993/ FF6F : D3 8A OUT SPIO1A, A 3994/ FF71 : 3E E7 LD A,0E7H ;SYSTEM PIO INTERRUPT ERLAUBT 3995/ FF73 : D3 8A OUT SPIO1A, A 3996/ FF75 : FB EI 3997/ FF76 : 06 16 MA1: LD B,22 ;22 VORTOENE SUCHEN 3998/ FF78 : CD D1 FF MA2: CALL LSTOP ;EIN BIT/TRENNZEICHEN LESEN 3999/ FF7B : 38 F9 JR C, MA1 ;0 BIT GELESEN 4000/ FF7D : FE 90 CP A, 90H 4001/ FF7F : 38 F5 JR C, MA1 ;TRENNZEICHEN GELESEN 4002/ FF81 : 10 F5 DJNZ MA2 4003/ FF83 : 06 02 LD B,2 ;1 TRENNZEICHEN 4004/ FF85 : AF MA3: XOR A 4005/ FF86 : 32 69 00 LD (PSUM),A 4006/ FF89 : 4F LD C,A 4007/ FF8A : 32 6A 00 LD (ARB),A 4008/ FF8D : CD E0 FF CALL LS1 ;EINE HALBPERIODE MESSEN 4009/ FF90 : FE 52 CP A, 52H 4010/ FF92 : 30 F1 JR NC, MA3 ;KEIN TRENNZEICHEN 4011/ FF94 : 10 EF DJNZ MA3 4012/ FF96 : CD E8 FF CALL IBYTE ;BLOCKNUMMER LESEN 4013/ FF99 : D8 RET C ;FEHLER 4014/ FF9A : 32 6B 00 LD (BLNR),A 4015/ FF9D : 06 80 LD B,80H ;ANZAHL BYTES 4016/ FF9F : 2A 1B 00 LD HL,(DMA) ;BLOCKADRESSE 4017/ FFA2 : CD E8 FF MA4: CALL IBYTE ;DATENBYTE LESEN 4018/ FFA5 : D8 RET C ;FEHLER 4019/ FFA6 : 77 LD (HL),A 4020/ FFA7 : 3A 69 00 LD A,(PSUM) 4021/ FFAA : 86 ADD A, (HL) ;NEUE PRUEFSUMME 4022/ FFAB : 32 69 00 LD (PSUM),A 4023/ FFAE : 23 INC HL 4024/ FFAF : 10 F1 DJNZ MA4 4025/ FFB1 : CD E8 FF CALL IBYTE ;PRUEFSUMME LESEN 4026/ FFB4 : D8 RET C ;FEHLER 4027/ FFB5 : 47 LD B,A 4028/ FFB6 : 3A 69 00 LD A,(PSUM) 4029/ FFB9 : B8 CP A, B 4030/ FFBA : C8 RET Z ;IN ORDNUNG 4031/ FFBB : 37 SCF 4032/ FFBC : C9 RET ;FEHLER 4033/ FFBD : ; 4034/ FFBD : ;INTERRUPTROUTINE ZUM LESEN 4035/ FFBD : ; 4036/ FFBD : ; Funktion: Interruptroutine lesen 4037/ FFBD : ; a) Eingang 4038/ FFBD : ; - IKEP 4039/ FFBD : ; b) gerufene Programme 4040/ FFBD : ; - 4041/ FFBD : ; c) Ausgang 4042/ FFBD : ; - 4043/ FFBD : ; d) Return 4044/ FFBD : ; Parameter A Länge einer Halbperiode 4045/ FFBD : ; 4046/ FFBD : F5 IKEP: PUSH AF 4047/ FFBE : DB 80 IN A, CTC0 4048/ FFC0 : F5 PUSH AF 4049/ FFC1 : 3E 07 LD A,7 4050/ FFC3 : D3 80 OUT CTC0, A 4051/ FFC5 : 3E B0 LD A,0B0H ;NEUE ZEITMESSUNG 4052/ FFC7 : D3 80 OUT CTC0, A ;Startwert 4053/ FFC9 : F1 POP AF 4054/ FFCA : 32 6A 00 LD (ARB),A ;gemessener Wert 4055/ FFCD : F1 POP AF 4056/ FFCE : FB EI 4057/ FFCF : ED 4D RETI 4058/ FFD1 : ; 4059/ FFD1 : ;LESEN EINES ZEICHENS 4060/ FFD1 : ; 4061/ FFD1 : ; Funktion: Lesen eines Bits 4062/ FFD1 : ; a) Eingang 4063/ FFD1 : ; - LSTOP 4064/ FFD1 : ; gerufen von: MAREK, IBYTE 4065/ FFD1 : ; - LS1 4066/ FFD1 : ; gerufen von: MAREK 4067/ FFD1 : ; b) gerufene Programme 4068/ FFD1 : ; - 4069/ FFD1 : ; c) Ausgang 4070/ FFD1 : ; - 4071/ FFD1 : ; d) Return 4072/ FFD1 : ; Parameter: C Länge der Periode 4073/ FFD1 : ; CY 1 0 Bit 4074/ FFD1 : ; 0 und C < 90H Trennz. 4075/ FFD1 : ; 0 und C >= 90H 1 Bit 4076/ FFD1 : ; 4077/ FFD1 : 4078/ FFD1 : ;Bit Wert B0-x *2 Return 4079/ FFD1 : ; KAUBT 4080/ FFD1 : ;------------------------------------- 4081/ FFD1 : ;0 20h 90h 120h Cy=1 4082/ FFD1 : ;1 40h 70h E0h > 90h 4083/ FFD1 : ;Trennz 80h 30h 60h < 90h 4084/ FFD1 : 4085/ FFD1 : AF LSTOP: XOR A 4086/ FFD2 : 32 6A 00 LD (ARB),A 4087/ FFD5 : 3A 6A 00 LS0: LD A,(ARB) 4088/ FFD8 : B7 OR A 4089/ FFD9 : 28 FA JR Z, LS0 ;WARTEN AUF 1. FLANKE 4090/ FFDB : 4F LD C,A 4091/ FFDC : AF XOR A 4092/ FFDD : 32 6A 00 LD (ARB),A 4093/ FFE0 : 3A 6A 00 LS1: LD A,(ARB) 4094/ FFE3 : B7 OR A 4095/ FFE4 : 28 FA JR Z, LS1 ;WARTEN AUF 2. FLANKE 4096/ FFE6 : 81 ADD A, C 4097/ FFE7 : C9 RET 4098/ FFE8 : ; 4099/ FFE8 : ;LESEN EINES BYTES 4100/ FFE8 : ; 4101/ FFE8 : ; Funktion: Lesen eines Bytes 4102/ FFE8 : ; a) Eingang 4103/ FFE8 : ; - IBYTE 4104/ FFE8 : ; gerufen von: MAREK 4105/ FFE8 : ; b) gerufene Programme 4106/ FFE8 : ; - LSTOP Lesen eines Bits 4107/ FFE8 : ; c) Ausgang 4108/ FFE8 : ; - 4109/ FFE8 : ; d) Return 4110/ FFE8 : ; Parameter: A, E Byte 4111/ FFE8 : ; CY 1 Fehler 4112/ FFE8 : ; 0 kein Fehler 4113/ FFE8 : ; 4114/ FFE8 : 16 08 IBYTE: LD D,8 4115/ FFEA : AF XOR A 4116/ FFEB : 5F LD E,A 4117/ FFEC : CD D1 FF IB1: CALL LSTOP ;LESEN EIN ZEICHEN 4118/ FFEF : 3F CCF 4119/ FFF0 : 30 04 JR NC, IB2 ;0 BIT 4120/ FFF2 : FE 90 CP A, 90H 4121/ FFF4 : D8 RET C ;TRENNZEICHEN 4122/ FFF5 : 37 SCF ;1 BIT 4123/ FFF6 : CB 1B IB2: RR E 4124/ FFF8 : 15 DEC D 4125/ FFF9 : 20 F1 JR NZ, IB1 4126/ FFFB : CD D1 FF CALL LSTOP ;LESEN TRENNZEICHEN 4127/ FFFE : 7B LD A,E 4128/ FFFF : C9 RET 4129/ 10000 : ; 4130/ 10000 : END