;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%% Residente Daten - konstant %%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%% zu VI2C %%%
label AcqOff$ byte
dps 1,24h ;Pascal-Strings für die CCT-Programmierung
label AcqOn$ byte
dps 1,04h ;ohne EP??
;%%% zu RESIDENT %%%
label dc$ byte
dps 4,0
;%%% zu ESTIMATE %%%
VTI$ db '.VTI',0 ;doppelt: .VT als Hauptfile und .VTI für Index
align 2
PGTStrOri db '00:00:00' ;Default für Uhrzeit (Erste Seite)
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%% Residente Daten - initialisiert %%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
align 2
;%%% zu VI2C %%%
LoadTick dw 0
Waits dw 4
pI2Cerr dw ofs I2Cstderr ;Standard Critical Error Handler
I2CErrors dw 0
I2CBasis dw 0 ;Auto Detect
Barometer dd 55555555h
;%%% zu RESIDENT %%%
label Igr$ byte
dps 8,0,0,0 ;Pascal-String
DosErrH dw ofs StdDosErrH
CLFlag db 0 ;Kommandozeilen-Schalter
TheSw db 07eh ;der Ein/Aus-Schalter für die ganze Maschine
;Bit 7 Rattermaschinen-Hauptschalter
;Bit 6-2 müssen alle 1 sein
;Bit 1 Erlaubnis der Arbeit des Int08 (Hintergrundarbeit)
;Bit 0 Request vom Timer ist anhängig
MaxIdx dw INDEXSIZE ;Freier Speicher = maximale Dateigröße in KB
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%% Residente Daten - uninitialisiert %%%
;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;**********************************************************
;*** Ab hier können transiente Routinen gelegt werden, ***
;*** die nur ganz am Anfang gerufen werden sollen ***
;*** ■ InstallationsCheck, Hilfetext ***
;**********************************************************
align 2
SemaFile db 80h dup (?) ;Der Dateiname der Semaphorendatei
;%%% zu STATISTICS %%%
struc tStatistics
News dw ?
Equals dw ?
Updates dw ?
Deletes dw ?
Faults dw ?
ends
Stats tStatistics <>
Buf0 db 8 dup (?) ;Hilfspuffer
Buf db 1024 dup (?) ;Vorbereitungs- und Lesepuffer für CCT
;**********************************************************
;*** Ab hier können alle anderen transienten Routinen ***
;*** gelegt werden, insbesondere solche, die die Suche ***
;*** vorbereiten, ■ Portsuche, RAM-Test, MakeSemaFile ***
;**********************************************************
extrn MyTimer:word ;Besserer Ersatz der BIOS-Uhr
CurVTHandle dw ? ;gleich vor dem Inhalt der Datei plaziert...
;****************************
;*** Semaphordatei-Abbild ***
;****************************
CurVT db 9 dup (?) ;Aktueller Videotext-Sendername ASCIIZ
GarbFlg db ?
ctrl0 dw ? ;Bit-Speicher
;0: Rolling Header (bei Spezialaufgabe) ein/aus
;1: Suche nach Pseudoseiten ein/aus
;2: Trage auch die 3stelligen Zahlen in Prädiktortabelle ein ein/aus
;3: [Teste Rolling Header NICHT auf Senderwechsel (RTL4-Problem) ein/aus]
;4: Lösche NICHT die Seite, bei der eine Unterseite 0 und eine <>0 gefunden wurde
;5: Quiet on/off (0=Piepser EIN!)
;6: Indexdatei zum VT-File NICHT schreiben e/a
;7: Fehler beim I²C-Bus (Standard-Fehlerroutine)
;8: Die Semaphorendatei muß am Ende geschrieben (erneuert) werden
; (Ist bei jedem Schreibzugriff auf CurVT..Req1 zu setzen!)
;9: Garbage Collection Mode aktiv
;10: Einlese-Mode aktiv
;11: Die VT-Datei ist NOCH NICHT vollständig aktualisiert (wird von VTFile_Load_Init gesetzt)
;12: Überlauf-Effekte bei den Indizes aufgetreten
;13: DOS-ERROR bei der Semaphorendatei aufgetreten
;14: DOS-ERROR bei der *.VT-Datei aufgetreten
;15: Disk Full (Schreibfehler)
ctrl1 dw ?
FuzzySender db ? ;z.Z. nicht benutzt (Null)
FuzzyQuality db ?
;...Zellen werden durch VPOLL_INIT ratzekahl gelöscht
Req1 tReq 8 dup (<>) ;Requests vom Level 1 (Via Datei)
;*******************************
;*** Ende des Datei-Abbildes ***
;*******************************
Req0 tReq 4 dup (<>) ;Requests vom Level 0 (Via Int2F) / Nicht in Datei
;...Zellen werden durch ResetSeeks zu VPOLL_INIT und VTFILE_LOAD_INIT belegt.
label ReqE tAcq ;Die Speicherzelle hinter den Requests
Acq0 tAcq <>
Acq1 tAcq <>
Acq2 tAcq <>
Acq3 tAcq <>
label AcqE tAcq ;Die Speicherzelle hinter diesen Spiegeln
;OldTimer dw ?
pTime dw ? ;Zeit bis zum Start des nächsten Fertigmeldpieps
;VTFileComplete dw ? ;Rhythmischer Pieps wenn VTFile okay scheint
OldCtrls dw ? ;geXORter Spiegel für ctrl0 und ctrl1
;Bei Abweichung wird OldCtrls angeglichen und Semaphordatei geschrieben
CurIdx dw ? ;Anzahl Indizes=Dateigröße in KB
GarbDIdx dw ? ;Zielindex für Garbagefunktion
Loecher dw ? ;Anzahl der 1-KB-Löcher in der Datei
;%%% zu ESTIMATE %%%
PGTimeTmp db 4 dup (?) ;Ob Stunde/Minute/Sekunde ist Sendersache!
;1 Byte ist einfach Reserve falls 8 Ziffern.
PGTime db 4 dup (?) ;Ob Stunde/Minute/Sekunde ist Sendersache!
;1 Byte ist einfach Reserve falls 8 Ziffern.
PGTStr db 8 dup (?) ;Kopie für die Uhrzeit, wegen der Lesefehler...
MSList db 800 dup (?) ;die Listelemente
;%%% zu PREDICT %%%
bitfield db 256 dup (?)
LastPut dw ?
LastGet dw ?
;%%% zu RESIDENT %%%
nbuf db 9 dup (?) ;Hilfpuffer für letzten HL-String
HLineChange db ?
DisCount db ? ;Zähler für GLEICH gelesene NEUE Kopfzeilen
DosError db ?
HLineCopy db 32 dup (?) ;Hier liegt die "rollende Kopfzeile"
stime dw ? ;naja, ein DB hätte es ja auch getan(?)
;Muß übrigens NICHT unbedingt initialisiert werden
;%%% zu RESIDENT %%%
DTA db 2ch dup (?) ;1 Byte mehr wegen Alignment
OldTime dw ? ;korrigiert sich selbst
OldDate dw ?
ringzaehler dw ? ;Startwert-Eintragung bei VPOLL_INIT
;evtl. "EXTRN"isieren und FAR PTR drauf zeigen lassen
;Aufbau Indexeintrag
; 1 Word Seite Bit15=1: "Loch" in der Datei
; 1 Word Unterseite Bit15=1: Seite wurde vom Dekoder (mind. 1x) gefunden
; Bit14=1: Im Vergleich zur letzten Seite trat ein Unterschied auf
align 2 ;sicherheitshalber
UDATASEG
Buf2 db 1024 dup (?) ;Lesepuffer für Datei
Index tReq INDEXSIZE dup (<>) ;Hier beginnt er, der GRÖSSTE Speicherfresser
Detected encoding: OEM (CP437) | 1
|
|