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