Source file: /~heha/vt/viewers/vt080.zip/src/RESDATA.ASM

;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
;%%% 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
Wrong umlauts? - Assume file is ANSI (CP1252) encoded