                              Stand: 29. Januar, im Jahre des CPC 2025

Datei: 'API-C-DE.DOK' (63 Seiten)

Datei zur Dokumentation aller  Future  Operating System Funktionen des
aktuellen OS  System  .8  Die  fr  den  Anwender  oder  Programmierer
wichtigen OS Funktionen aus ROM C werden erklrt und lokalisiert.


       Alle OS Funktionen werden in folgender Form beschrieben:


1. Kurzbeschreibung: In  einem  Satz  wird  kurz  die  Funktion der OS
Funktion beschrieben.

2. Label: Mit  diesem  Label  wird  die  OS  Funktion  im  Source Code
bezeichnet. In der mitgelieferten  Label-Bibliothek (siehe Datei #EQU-
API.DEU) mit den  jehweils  aktuellen  ROM  Adressen  findet ebenfalls
dieses Label Verwendung. Aus Grnden  der Kompatibilitt sollte man in
eigenen Programmen alle OS- / System-Funktionen (und System-Variablen)
stets mit diesen Labels ansprechen.

3. ROM-Nummer: Hier ist die  logische  ROM  - Nummer des FutureOS ROMs
angegeben, in dem die entsprechende OS Funktion zu finden ist.
Manche OS Funktionen kommen, wegen ihrer  Krze, in mehreren ROMs vor,
dann sind hier auch mehrere ROM Nummern angegeben.
Da die ROM Nummer logisch zu  verstehen  ist, sollte man sie nicht mit
dem physikalischen ROM Select gleichsetzen.  Wie man die physikalische
ROM Nummer eines der FutureOS ROMs ermittelt wird im Handbuch erklrt.

4. Startadresse: Gibt  die Einsprung-Adresse der OS Funktion an. Falls
diese in mehreren ROMs  vorkommt,  wird  hier  auch eine entsprechende
Anzahl von Adressen angegeben.

5. Einsprungbedingungen:  Die  Einsprungbedingungen  der  OS  Funktion
werden beschrieben und es wird sowohl auf Registerinhalte als auch auf
RAM-Variablen eingegangen.

6.  Aussprungbedingungen:  Die  Aussprungbedingungen  der  OS-Funktion
werden beschrieben und es wird sowohl auf Registerinhalte als auch auf
RAM-Variablen eingegangen.

7. Manipuliert: Es werden alle  manipulierten oder zerstrten Register
und RAM-Variablen  wiedergegeben.  Manchmal  werden  auch manipulierte
Pheripheriebausteine wiedergegeben.

8. Beschreibung: Es folgt  eine  vollstndige  Erklrung der Anwendung
und Wirkungsweise der beschriebenen OS Funktion.

9. Bitte Beachten: Es  werden  einige  wichtige  Details kurz erklrt.
Dies ist besonders wichtig,  da  alle  OS  Funktionen kompromilos auf
Hchstgeschwindigkeit  getrimmt worden  sind.  Bei falscher Handhabung
kann es zu Problemen mit der Systemstabilitt kommen.

Das ROM C stellt diverse OS Funktionen zur Verfgung, z.B. zum Bewegen
von Daten, fr die  DIRectory  /  InHaltsVerzeichnis (IHV) Verwaltung,
Laden und Speichern usw.
Viele High-Level OS Funktionen befinden sich in diesem ROM.


Die aktuelle Version dieser Datei finden Sie auch im Internet unter:

http://www.FutureOS.de

        EXTREM SCHNELLES FLLEN EINES SPEICHERBEREICHS
        ==============================================

Kurzbeschreibung: Diese OS  Funktion  stellt  die  schnellste  Art dar
einen greren Speicherbereich mit  einem  Byte  oder  einem zwei Byte
Wort zu fllen.

Label: F_FILL8 (Speicher mit einem Byte fllen, 8 Bit) oder
       F_FILL6 (Speicher mit einem zwei Byte Wort fllen, 16 Bit)

ROM-Nummer: C

Startadresse: &C01E (F_FILL8) oder &C01F (F_FILL6)

Einsprungbedingungen: BC = Lnge des zu fllenden Speicherbereichs

D  = Wert mit dem gefllt werden soll, bei der 8 Bit Version F_FILL8.
..... bzw. .....
DE = Wert mit dem gefllt werden soll, bei der 16 Bit Version F_FILL6.
HL = Startadresse des zu fllenden Speicherbereichs.

Aussprungbedingungen: Der Speicherbereich ist gefllt.

Manipuliert: AF, B, HL, HL' und bei F_FILL8 zustzlich E

Beschreibung:  Diese  OS  Funktion   fllt  einen  Speicherbereich  in
krzester Zeit. Um  so  grer  der  zu  fllende Speicherbereich ist,
desto schneller wird die OS Funktion. Pro Byte vergehen min. 1.5 us.
Man verwendet die OS Funktion z.B. um die 16 K des Bildschirmspeichers
mit &00 zu fllen, sprich den Bildschirm zu lchen.
Vor Aufruf der OS Funktion ld  man  HL  mit der Adresse des ersten zu
fllenden Bytes, BC erhlt die Anzahl  der  zu fllenden Bytes. Die OS
Funktion fllt den Speicher  aufsteigend.  Es  wird  also der Speicher
zwischen HL und HL + BC  gefllt.  Dies geschieht entweder mit einem 8
Bit Wert, hierzu verwendet man das  Label  F_FILL8, oder man fllt den
Speicher mit einem 16 Bit Wert, dies geschieht dann mit F_FILL6. Dabei
wird das Low- immer vor dem High-Byte in den Speicher geschrieben.
Will man mit 8 Bit fllen so ld  man vor Aufruf der OS Funktion das D
Register mit dem entsprechendem 8 -  Bit Wert. Bei Verwendung eines 16
Bit Wertes ld man diesen in das DE Register. Beispiele:

TEST_FILL_8     LD      BC,&4000 ;&4000 Bytes werden
                LD      D,&88    ;mit dem Byte &88 gefllt.
                LD      HL,&2000 ;Fllen ab Adresse &2000
                CALL    F_FILL8

TEST_FILL_16    LD      BC,&4000 ;&4000 Bytes werden
                LD      DE,&1234 ;mit dem Doppel-Byte &1234 gefllt.
                LD      HL,&2000 ;Fllen ab Adresse &2000
                CALL    F_FILL6

Falls ROM C vor Aufruf der OS Funktion nicht eingeblendet ist, so sind
folgende Befehle als erste Zeile einzufgen:

        LD   BC,(&FF0D) ;physikalische Nummer von ROM C holen
        OUT  (C),C      ;und ROM C einblenden!

Bitte Beachten: Diese OS  Funktion  berschreibt jeden ihr angegebenen
Speicherbereich.  Wenn  man   also   ein   Register   vor  dem  Aufruf
versehentlich mit einer  falschen  Adresse  ld,  dann  kann  dies die
Stabilitt des Systems gefhrden.
Beim 16-Bit fllen wird zuerst das Low-Bytes (Register E) und dann das
High-Byte (Register D) geschrieben.

        KOPIEREN EINES SPEICHERBEREICHES GRӺER 256 BYTES
        =================================================

Kurzbeschreibung: Diese  OS  Funktion  ermglicht  es  einen Speicher-
bereich von mindestens 256 Bytes extrem schnell zu kopieren.

Label: F_MOVE

ROM-Nummer: C

Startadresse: &C0C8

Einsprungbedingungen: BC =  Lnge  des  zu kopierenden Speicherblocks.
Diese Lnge mu mindestens &100  betragen.  Das  B Register darf nicht
gleich Null sein.

DE = Zieladresse des zu kopierenden Blocks.

HL = Quelladresse des zu kopierenden Blocks.

Aussprungbedingungen: Der Block wurde kopiert.

Manipuliert: AF, BC, DE und HL

Beschreibung: Ein Speicherbereich  der  mindestens  256  Bytes enthlt
wird mit Hchstgeschwindigkeit kopiert. Dabei kann im Speicher auf und
abwrts  kopiert  werdn.  Quell-  und   Zielblock  knnen  sich  dabei
berschneiden. Vor Aufruf der OS  Funktion  mu  HL auf des erste Byte
des Quellblocks zeigen, DE  mu  auf  das  erste  Bytes des Zielblocks
zeigen. Das Register BC enthlt die Anzahl der zu kopierenden Bytes es
mu aber mit mindestens 256 = &100 gefllt sein. Kleinere Blcke bitte
mit LDDR oder mit LDIR kopieren.

Beispiel:

HOLE_BILD       LD   DE,&C000   ;Zieladresse (zu kopierender Block)

        LD   HL,&4000   ;Quelladresse (zu kopierender Block)

        LD   B,H                ;Lnge des zu kopierenden Blocks
        LD   C,L                ;entspricht zufllig HL, beide &4000

        CALL F_MOVE


Bitte Beachten: Ist bei Aufruf  der  OS  Funktion  das Register BC mit
einem Wert kleiner als 256 = &100 geladen, so werden knapp 64K kopiert
und das System wird wohl abschmieren.
















          BLOCK SCHNELL SPEICHERAUFWRTS KOPIEREN
          =======================================

Kurzbeschreibung: Diese OS Funktion ist ein Teil von F_MOVE, sie dient
dazu Blcke  von  mindestens  256  Bytes  im  Speicher  nach  oben  zu
kopieren.

Label: LDD_256

ROM-Nummer: C

Startadresse: &C2E8

Einsprungbedingungen:
BC = Blocklnge in Bytes, mindestens 256 = &100.
DE > HL
DE = oberes Ende des Zielblocks.
HL = oberes Ende des Quellblocks.

Aussprungbedingungen: Der Block ist kopiert worden.

Manipuliert: AF, BC, DE und HL

Beschreibung: Dieser  OS  Funktion  dient  dazu  einen  Block  mit der
Mindestlnge von  256  =  &100  Bytes  zu  bertragen.  Dabei  m der
Zeilblock oberhalb  des  Quellblocks  liegen.  Wenn  der  Block  nicht
teilweise auf sich selbst kopiert  wird,  dann  kann der Quellblock an
eine beliebige  Adresse  kopierte  werden,  nur  eben  nicht  auf sich
selber. Will man den Block  also  teilweise  auf sich selber kopieren,
dann immer nur speicheraufwrts.

Bitte Beachten: Dei Blocklnge  BC  mu  mindestens  256  = &100 Bytes
sein, da  da  System  sonst  mit  hoher  Warscheinlichkeit abstrtzen
wrde.






























           BLOCK SCHNELL SPEICHERABWRTS KOPIEREN
           ======================================

Kurzbeschreibung: Diese OS Funktion ist ein Teil von F_MOVE, sie dient
dazu um Speicherbereiche von minimal  256 = &100 Bytes speicherabwrts
zu kopieren.

Label: LDI_256

ROM-Nummer: C

Startadresse: &C0D0

Einsprungbedingungen:
BC = Blocklnge in Bytes, mindestens 256 = &100.
DE < HL
DE = unters Ende des Zielblocks.
HL = unters Ende des Quellblocks.

Aussprungbedingungen: Der Block ist kopiert worden.

Manipuliert: AF, BC, DE und HL

Beschreibung: Dieser  OS  Funktion  dient  dazu  einen  Block  mit der
Mindestlnge von  256  =  &100  Bytes  zu  bertragen.  Dabei  m der
Zeilblock unterhalb  des  Quellblocks  liegen.  Wenn  der  Block nicht
teilweise auf sich selbst kopiert  wird,  dann  kann der Quellblock an
eine beliebige  Adresse  kopierte  werden,  nur  eben  nicht  auf sich
selber. Will man den Block  also  teilweise  auf sich selber kopieren,
dann immer nur speicherabwrts.

Bitte Beachten: Die Blocklnge in BC  mu  mindestens 256 = &100 Bytes
lang sein,  ist  dies  nicht  der  Fall  so  wird  das  System  mit an
Sicherheit grenzender Warscheinlichkeit abstrtzen.






























            ZEICHENSATZ VOM ROM INS RAM KOPIEREN
            ====================================

Kurzbeschreibung: OS Funktion kopiert den ROM-Zeichensatz ins RAM.

Label: INRZ

ROM-Nummer: C

Startadresse: &C9AD

Einsprungbedingungen: RAMCHAR bestimmt den Bildschirm-Modus.

Aussprungbedingungen: Zeichensatz von ROM ins RAM kopiert.

Manipuliert: AF, BC, DE, HL, RAM &3800-&3FFF, unteres RAM aktiv

Beschreibung: Diese OS Funktion kopiert  den ROM Zeichensatz (alle 256
Zeichen) von &3800 bis &3FFF  an  die  selben Adressen ins untere RAM.
Nach der Rckkehr ist das untere RAM eingeblendet. INRZ kann also auch
vom unterem RAM aus aufgerufen werden.
Der Video-Modus wird entsprechend der OS Variable RAMCHAR gesetzt.

Bitte Beachten: Der RAM Speicherbereich zwischen &3800 und &3FFF wurde
berschrieben.







































         TASTATUR-TABELLEN VOM ROM INS RAM KOPIEREN
         ==========================================

Kurzbeschreibung: OS Funktion kopiert  die  vier Tastatur-Tabellen vom
ROM ins RAM.

Label: INS_KMX

ROM-Nummer: C

Startadresse: &FCD5

Einsprungbedingungen: -

Aussprungbedingungen: Ab TAST_N,  TAST_S,  TAST_C  und  TAST_SC wurden
jeweils 80 Bytes Tasten-Daten aus ROM C ins System-RAM kopiert.

Manipuliert: AF, BC, DE, HL  und  jeweils  80 Bytes ab TAST_N, TAST_S,
TAST_C und TAST_SC

Beschreibung: Diese OS Funktion kopiert  die  Belegung aller 80 Tasten
vom ROM C ins System-RAM. Dabei  werden  fr die Ebenen Normal, Shift,
Control und Shift+Control jeweils 80  Bytes  kopiert. Und zwar jeweils
nach TAST_N  (&B980),  TAST_S  (&BA00),  TAST_C  (&BA80)  und  TAST_SC
(&BB00).
Die Quell-Daten dieser Tastatur-Tabellen  befinden  sich  in  ROM C ab
XAST_N (&FDAA). Hier kann  man  auch  dauerhafte  nderungen ins ROM C
einbringen.

Bitte Beachten: Die bisherige Tastatur-Belegung wurde berschrieben.


































        SORTIEREN EINES ZUVOR EINGELESENEN DIRECTORYS
        =============================================

Kurzbeschreibung:  Ein  zuvor  eingelesenes  Inhaltsverzeichnis  einer
Diskette wird sortiert.

Label: TS_D_IN

ROM-Nummer: C

Startadresse: &FDA7

Einsprungbedingungen: D = aufgerundetes Highbyte  des oberen Endes des
Speicherbereichs in dem  sich  das  zu  sortierende Inhaltsverzeichnis
befindet.

REG16_1 = Lnge des Inhaltsverzeichnisses  in  Bytes. z.B. &800 = 2048
Bytes beim Data Format oder &1000 =  4096 Bytes fr das Vortex Format.
Es spielt keine Rolle zu  wieviel  Prozent  das Directory gefllt ist,
die absolute Lnge ist entscheident.

REG16_2 = Zeiger  auf  den   Anfang    des  zu   sortierenden Inhalts-
verzeichnisses. Es ist das erste, unterste Byte gemeint.

REG16_3 = REG16_2. Beide Variablen men den gleichen Wert enthalten.

REG16_5 = Zeiger  auf  den  Anfang  eines  Pufferspeicherbereichs, der
genau so gro ist wie das zu sortierende Inhaltsverzeichnis.

REG16_6 = REG16_5. Beide Variablen men den gleichen Wert enthalten.

REG16_7 = Zeiger auf das  Ende  des durch REG16_5 adressierten Puffer-
bereichs. Der Programmierer kann  diesen  Wert  durch die Addition von
REG16_5 + REG16_1 erhalten, mu ihn  aber  selber  in diese 16 Bit RAM
Variable laden.

Aussprungbedingungen: Das Inhaltsverzeichnis ist sortiert.

Manipuliert: AF, BC, DE, HL, REG16_0, REG16_3, REG16_4 und REG16_6

Beschreibung: Diese OS Funktion fhrt der Reihe nach folgende Aktionen
aus. Zuerst werden  alle  leeren Inhaltsverzeichnis-Eintrge ausgefil-
tert, dann werden die  gltigen  Eintrge numeroalphabetisch sortiert.
Zuletzt wird der restliche  Platz  im  Inhaltsverzeichnis mit dem Wert
&E5 aufgefllt.
Am Beispiel des Directorys einer  Data-formatierten Disk wird hier die
Wirkungsweise besprochen. Angenommen das  Inhaltsverzeichnis wurde von
&6000 bis &6800  eingelesen.  Es  ist  also  &800  Bytes lang. Deshalb
schreiben wir in REG16_1 (Lnge) den Wert &800. In REG16_2 und REG16_3
wird der Wert &6000 geladen, das  ist  der Start des DIRs. Desweiteren
bentigt die OS  Funktion  zum  sortieren  einen  Pufferbereich in der
selben Lnge des Directoryblocks. Das das DIR also &800 Bytes lang ist
brauchen wir einen &800 Bytes  lange Pufferbereich, wir verwenden z.B.
den Bereich von &7000 bis &7800. In REG16_5 und REG16_6 laden wir also
den Wert &7000 (Start Pufferbereich). Und in REG16_7 laden wir nun den
Wert &7800. Nun  mssen  wir  noch  das  Prozessor-Register  D mit dem
Highbyte des  unsortierten  Inhaltsverzeichnisses  laden.  Dieser Wert
erhalten wir wenn wir die  Startadr.  des  DIR und die Lnge addieren,
und anschlieend durch 256 = &100  teilen.  Also &6000 + &800 = &6800.
Und &6800/&100 = &68. Register  D  wird  mit  &68  geladen. So und nun
knnen wir diese SortierOS Funktion auch schon aufrufen.
Nchste Seite gehts weiter. ...


Nachdem diese OS Funktion  das  Inhaltsverzeichnis  sortiert hat steht
das neue, sortierte Inhaltsverzeichnis dort wo auch das alte stand.
Bitte Beachten: Es mu  ein  Pufferbereich  zur  Verfgung stehen, der
genauso gro ist,  wie  das  zu  sortierende  Inhaltsverzeichnis. Alle
Adressen sind so zu whlen,  da  sie  durch  256 zu teilen sind, also
z.B. &100, &200, &300, ..., &8600, &8700, 8800.

Diese OS Funktion wird von der Benutzeroberflche TURBO DESK verwendet.
























































        UMWANDLUNG ALLER 32 BYTE IN 16 BYTE EINTRGE
        ============================================

Kurzbeschreibung: Diese OS Funktion wird  von der TURBO DESK Benutzer-
oberflche benutzt.

Label: DIRWA

ROM-Nummer: C

Startadresse: &FD9E

Einsprungbedingungen: TURBO_X mu einen gltigen Wert enthalten.
Bei TURBO_A bis TURBO_M mssen von  den  8 Bytes jehweils die ersten 4
Bytes mit gltigen Werten belegt sein. Bei inaktiven Laufwerken reicht
es aus deren Inaktivitt im Tagging Byte festzuschreiben.
Es mu mindestens halb so viel freier Erweiter- ungsspeicher vorhanden
sein,  wie  die  Speichermenge,   die   alle  eingelesenen  Directorys
verbrauchen.

Aussprungbedingungen: Zu jedem eingelesenen  Directorys eins Laufwerks
existiert mun  ein  ausgabereifes  Directory,  das  in  den  Variablen
TURBO_A bis TURBO_M  beschrieben  wird.  Auerdem  wurde  die Variable
TURBO_X aktualisiert.

Manipuliert: AF, BC, DE, HL, DE', HL', IY und XH

Beschreibung: Whlt man bei der Benutzeroberflche TURBO DESK z.B. die
Directoy Funktion an, dann  werden  zuerst alle Directokry eingelesen.
Diese    Inhaltsverzeichnisse    men     anschlieend     fr    die
Bildschrimausgabe  aufbereitet  werden,   dies   bernimmt   diese  OS
Funktion.  Es  wird  dabei  intensiver  Gebrauch  der  Systemvariablen
gemacht. Die Variablen  TURBO_A  bis  TURBO_M,  die  jeh  aus  8 Bytes
bestehen mssen bei aktivem  Laufwerk  in  den  ersten 4 Bytes gltige
Daten enthalten. Es mssen jedoch  alle Tagging Bytes dieser Variablen
einen Wert enthalten, der  den  Laufwerksstatus  anzeigt. Die Variable
TURBO_X  mu  einen  gltigen   Wert   enthalten,   so   da  fr  die
aufbereiteten Inhaltsverzeichnie genug  Platz  ist.  Die  OS Funktion
blendet das  zugehrige  RAM  eines  jeden  markierten  d.h. getaggten
Laufwerks  ein,   konvertiert   das   Directory   in   das   fr   die
Bildschirmausgabe   aufbereitete   Format,    und   speichert   diesen
aufbereiteten Datenblock im  Erweiterungspeicher  ab.  Die Information
darber wird in den Variablen  TURBO_A bis TURBO_M gesichert. Auerdem
wird die Systemvariable TURBO_X  aktualisiert,  sie  zeigt nun auf das
hchste freie Byte im hchstem freien 16K Erweiterungsblock.

Bitte Beachten: Diese OS  Funktion  sollte  nur dann aufgerufen werden
wenn genug RAM vorhanden ist, da  sie  bei einer zu geringen RAM Menge
abbricht.















                 LSCHEN DES BILDSCHIRMSPEICHERS
                 ===============================

Kurzbeschreibung: OS Funktion lscht den 16K Bildschirmspeicher.

Label: LESC

ROM-Nummer: C

Startadresse: &C017

Einsprungbedingungen: V-RAM mu bei &C000 beginnen (ist normal).

Aussprungbedingungen: Der Speicherbereich von &C000  bis &FFFF ist mit
&00 Bytes beschrieben worden. A=&00 und BC=DE=HL=&0000

Manipuliert: AF, BC, DE, HL, HL' und &4000 Bytes Video-RAM

Beschreibung: Diese OS Funktion  entspricht  in  etwa dem Basic Befehl
CLS, denn sie lscht  den  gesammten  Bildschirmspeicher von &C000 bis
&FFFF. Dieser Bereich wird mit &00 Bytes gefllt.
Die Besonderheit dieser OS  Funktion  ist ihre enorme Geschwindigkeit,
pro Byte werden nur 1.5 ys  verbraucht.  Nach knapp 0.025 Sekunden ist
alles vorbei.

Bitte Beachten: Es existiert keine  Mglichkeit  den 16 KB Bildschirm-
Speicher des CPC schneller zu lschen.


        LSCHEN DER UNTEREN BILDSCHIRMHLFTE AB ZEILE 15
        ================================================

Kurzbeschreibung: Beim 64 Zeichen auf 32 Zeilen Format wird die untere
Bildschirmhlfte von der 15. Zeile bis zum Bildschirmende gelscht.

Label: LEDA

ROM-Nummer: C

Startadresse: &C4F5

Einsprungbedingungen: V-RAM mu bei &C000 beginnen (ist normal).

Aussprungbedingungen: untere Bildschirmhlfte gelscht

Manipuliert: AF, BC, DE, HL, HL' und 18 Zeilen (15-32)

Beschreibung: Diese  OS  Funktion  dient  dazu  den  unteren  Teil des
Video- RAMs zu lschen (auf &00 zu  setzen).  Es wird ab der 15. Zeile
bis zum Ende des Bildschirms gelscht (18 Zeilen).
Diese OS Funktion sollte  nur  verwendet  werden  wenn das Bildschirm-
format auf 64 * 32 gesetzt wurde  (64  Zeichen pro Zeile und 32 Zeilen
pro Seite). Denn bei anderen  Formaten  wird nicht am Zeilenanfang mit
dem Lschen begonnen.
Da LEDA die FutureOS FILL Funktion  verwendet, ist sie praktisch nicht
mehr zu beschleunigen.
Diese OS Funktion wird z. B. vom  Turbo Desk verwendet, um den Bereich
zu lschen, in dem die Directorys dargestellt werden.

Bitte Beachten: Bilschirm mu  auf  64  Zeichen  bei 32 Zeilen gesetzt
sein.



  TABELLE GENERIEREN UM IBM, DATA ODER SYSTEM FORMAT DATEIEN ZU LADEN
  ===================================================================

Kurzbeschreibung: Eine Track, Sektor Tabelle  wird generiert. Fr IBM,
Data oder System Format.

Label: LTAI (IBM Format) // LTAB (DATA Format) // LTAS (SYSTEM Format)

ROM-Nummer: C

Startadresse: &C664 (LTAI) // &C539 (LTAB) // &C710 (LTAS)

Einsprungbedingungen:
HL  = 1. Byte des 1. Extents der Datei, 32er DIR
HL' = 1. Byte der Track, Sekror Tabelle (Ziel)

Aussprungbedingungen: Ladetabelle wurde generiert.

Manipuliert: AF, BC, DE, HL, BC', DE' und HL'

Beschreibung: Um eine  Datei  zu  laden  muss  zuerst eine Ladetabelle
generiert werden. Dies bernimmt diese OS Funktion fr IBM, System und
Data Format.
Dabei muss zuerst das 32er DIRectory eingeblendet werden, dann ld man
HL mit der Adresse des Anfangs  des  ersten  Extents der Datei die man
spter laden will. Auerdem ist HL'  mit  der Zieladresse zu laden, ab
der die zu generierende Tabelle (ent)stehen soll.

Aufbau der Tabelle bei IBM, System oder Data Format:

Die Tabelle beginnt mit einer Tracknummer, dieser folgt die Anzahl der
Sektoren, die von diesem Track zu  laden sind. Der Sektoranzahl folgen
die einzelnen Sektornummern.
Dannach folgt die nchste Tracknummer usw.
- Wenn die Sektoranzahl =  &FF  ist,  dann ist der entsprechende Track
komplett zu laden. In diesem  Fall  folgt  auf  die Traknummer nur das
Byte &FF, aber KEINE Sektornummern.  Nach  diesem &FF folgt direkt die
nchste Tracknummer.
- Ist  die  Tracknummer  =  &FF,  dann  ist  die  Tabelle  zuende. Das
Tabellenende wird also durch eine Tracknummer von &FF signalisiert.

Bitte Beachten: HL sollte mit einem  korrektem Wert geladen sein, denn
ist  ab  HL  kein   Extent   eines   32er   DIRs,   so  kann  dies  zu
unvorhersehbaren Fehlfunktionen fhren.




















         TABELLE GENERIEREN UM VORTEX FORMAT DATEIEN ZU LADEN
         ====================================================

Kurzbeschreibung: Eine  Track  -  Sektor  Tabelle  wird  generiert. Es
handelt sich um eine Datei auf VORTEX Format.

Label: LTAV

ROM-Nummer: C

Startadresse: &C7FB

Einsprungbedingungen:
HL  = 1. Byte des 1. Extents der Datei, 32er DIR
HL' = 1. Byte der Track, Sekror Tabelle (Ziel)

Aussprungbedingungen: Ladetabelle wurde generiert.

Manipuliert: AF, BC, DE, HL, BC', DE' und HL'
Die 2 Bytes vor HL'  werden  ebenfalls  manipuliert, da sie kurzzeitig
als Pseudotabelle verwendet werden.

Beschreibung: Um eine  Datei  zu  laden  muss  zuerst eine Ladetabelle
generiert werden. Diese OS Funktion  generiert eine Tabelle fr VORTEX
Format, dessen Tabellenaufbau von dem der anderen Formate abweicht.
Dabei muss zuerst das 32er DIRectory eingeblendet werden, dann ld man
HL mit der Adresse des Anfangs  des  ersten  Extents der Datei die man
spter laden will.
Auerdem ist  HL'  mit  der  Zieladresse  zu  laden,  ab  der  die  zu
generierende Tabelle (ent)stehen soll.

Aufbau der Tabelle bei Vortex Format:

Die Tabelle zu Vortex Format hat an sich den selben Aufbau wie Die zum
laden von System oder Data Format.
Der Unterschied liegt darin, da beim Vortex Format zu jeder Spur auch
immer eine Kopfnummer angegeben werden muss.
Die Kopfnummer ist  im  Bit  0  des  jehweiligen Trackbytes enthalten.
Rechnerisch wird dazu die Tracknummer  (0  bis 80) mit 2 multipliziert
und das Kopfbit (0 =  oben,  1  =  unten)  addiert. Fr die Ober- bzw.
Unter- Seite einer Spur sind also zwei Trackbytes enthalten.
Die physikalische Tracknummer kann  durch einfaches rechtsschieben mit
z.B. SRL A errechnet werden. Das Carry Bit hat dann die Kopfnummer.

Bitte Beachten: HL sollte mit einem  korrektem Wert geladen sein, denn
ist  ab  HL  kein   Extent   eines   32er   DIRs,   so  kann  dies  zu
unvorhersehbaren Fehlfunktionen fhren.
ACHTUNG: Die zwei Bytes  vor  HL'  werden manipuliert, eventuell darin
abgelegte Daten sind verloren.















        VERGLEICHEN ZWEIER EXTENTS IN EINEM DIRECTORY
        =============================================

Kurzbeschreibung: Diese OS  Funktion  gibt  Aufschlu  darber ob zwei
Extents der selben Datei angehren. Es werden User, Name und Extension
verglichen.

Label: EXCP

ROM-Nummer: C

Startadresse: &C94D

Einsprungbedingungen: DE = &XXX0 = 1. Extent, der zu Vergleichen ist.
                        HL = &YYY0 = 2. Extent, der zu Vergleichen ist.
Beide Extent-Adressen mssen durch 16 teilbar sein, d.h. die unteren 4
Bit in E und L mssen auf Null gesetzt sein.

Aussprungbedingungen: Z-FLAG gesetzt  (Z):  beide  Extents gehren zur
selben Datei.
Z-FLAG geleert  (NZ):  die  Extents  sind  ungleich,  gehren  also zu
verschiedenen Dateien.
DE und HL (Zeiger auf Extents) bleiben erhalten.

Manipuliert: AF und BC

Beschreibung: Manchmal ist es ntig  zwei Extents zu vergleichen, z.B.
um zu sehen ob eine Datei  noch  einen Extent hat. Fr solche Aufgaben
ist diese OS Funktion gedacht.
Beim Aufruf werden die Adressen  der  beiden zu vergleichenden Extents
in DE und HL bergeben. Aber  Achtung:  Beide Adressen mssen durch 16
teilbar sein, also der Form  &???0  entsprechen. Nun vergleicht die OS
Funktion die Usernummer, den Namen  und  die Extension der Datei. Alle
anderen Bytes werden nicht beachtet.  Von  den  32 Bytes eines Extents
werden also nur  die  ersten  12  verglichen.  Stimmen  diese 12 Bytes
berein, d.h. beide Extents gehren  zur  selben Datei, dann kehrt die
OS Funktion mit  gesetzten  Zero-Flag  zurck.  Sind  die Extents aber
unterschiedlich, so wird das Z-Flag gelscht.
Die Adressen beider Extents werden  erhalten,  nur die Register AF und
BC werden verndert.

Bitte Beachten: Die Adresse beider Extents muss durch 16 teilbar sein.
Sonst tritt  u.U  eine  Fehlfunktion  auf,  die  beim  Aussprung einen
falschen Status liefert.
Diese OS Funktion bezieht sich auf  ganz  normale 32 Byte Extents, wie
sie im Inhaltsverzeichnis stehen. Es  werden  jedoch nur die ersten 12
Bytes verglichen.

















      INHALTSVERZEICHNISSE NEU SORTIEREN UND WANDELN 32 ==> 16
      ========================================================

Kurzbeschreibung: Alle markierten & manipulierten Inhaltsverzeichnisse
werden neu  sortiert  und  anschlieen  vom  32er  in  den  16er Modus
gewandelt.

Label: ISWS

ROM-Nummer: C

Startadresse: &FDA1

Einsprungbedingungen: RAM Variablen TURBO_A..M mssen korrekt sein.

Aussprungbedingungen: Alle  betroffenen  DIRs  sind  neu  sortiert und
gewandelt worden.
Das untere ROM ist ausgeblendet.

Manipuliert: Alle  Register  auer  AF'  und  XL.  Die  RAM  Variablen
REG16_0..9 usw.
Achtung: Der RAM Bereich  von  &0000  bis  &3FFF ist verndert worden.
Diese 16 KB haben Pufferfunktion.

Beschreibung: Wurde(n)  ein(ige)  Inhaltsverzeichnis(se)  manipuliert,
z.B. durch eine  Dateioperation  wie  ERA,  REN  oder  hnliches, dann
befindet sich das  (befinden  sich  die)  Directory(s)  nicht  mehr in
sortiertem Zustand. Auch sind die 16er DIRs nicht mehr korrekt.
Diese OS Funktion prft welche  Laufwerke  aktiv  sind, und welche LWs
zustzlich auch noch verndert wurden (gesetztes Bit 3 in TURBO_A..M).
Bei  den  Laufwerken  die  tatschlich  aktiv  sind,  und  deren  DIRs
verndert wurden, wird diese OS  Funktion  aktiv.  Zuerst wird DIR fr
DIR erneut sortiert.  Danach  werden  neue  16er  DIRs  generiert. Nun
befinden sich die DIRs im selben Zustand, wie nach ihrem ersten Laden.
Es werden dabei jehweils die  alten  RAM  Blcke benutzt, so wird kein
Speicher verschwendet, eher gewonnen.
Was ist nun  ein  manipuliertes/verndertes  LW/DIR?  Der Status eines
Laufwerks wird dann auf MANIPULIERT  gesetzt,  wenn in seinem DIR eine
Vernderung durchgefhrt wurde. Benennt  man  z.B.  eine Datei mit dem
REN Icon um, dann wird der  Status des LWs automatisch auf MANIPULIERT
gesetzt. So kann diese OS Funktion  erkennen,  dass es hier was zu tun
gibt.

Bitte Beachten: Nach   Aufruf  der  OS  Funktion  ist   das untere ROM
ausgeschalten.  Die  Zeichenausgabe  funktioniert  nur  wenn  ein  RAM
Zeichensatz  geladen  wird  oder  wenn   man  das  untere  ROM  wieder
einblendet.
Der Speicherbereich von &0000  bis  &3FFF  wurde als Puffer verwendet.
Diese 16KB sind also berschrieben worden.















        ERWEITERUNGSRAMS TESTEN UND VARIABLEN SETZEN
        ============================================

Kurzbeschreibung: Alle 16K Erweiterungs-RAMs  werden auf Vorhandensein
getestet und die Systemvariablen entsprechend gesetzt.

Label: RANI bzw. RAMI

ROM-Nummer: C

Startadresse: &C8EF (RANI) bzw. &FD35 (RAMI)

Einsprungbedingungen: keine

Aussprungbedingungen: Die  32  System-Variablen   XRAM_C4  ..  XRAM_FF
wurden gesetzt:
Bit 0 = 0 ==> 16 KB RAM Block existiert NICHT.
Bit 0 = 1 ==> 16 KB RAM Block ist vorhanden.

Manipuliert: AF, BC, DE, HL, AF', BC', DE', HL'
             Und der RAM-Status (&7FC0, Hauptspeicher, 1. 64 KB aktiv)

RANI: In allen 32 Erweiterungs-RAMs (a  16  KB)  ist das erste Byte an
      Adresse &4000 manipuliert

RAMI: Die E-RAMs sind zwar erhalten, aber &B7C0-&B7DF ist manipuliert

Beschreibung: Beim Hochfahren des OS ist  es ntig zu erfahren wieviel
Erweiterungs-RAM vorhanden ist, und wo die Blcke liegen.
Diese OS Funktion testet die 32  Blcke  (je  16 KB) der ersten 512 KB
des Erweiterungs-RAMs. Diese Blcke  knnen  zwischen  &4000 und &7FFF
eingeblendet werden.  Im  System-RAM  existiert  fr  jeden  dieser 32
Blcke ein Byte. Diese  OS  Variablen  werden  mit XRAM_?? bezeichnet,
wobei '??' die Zeichenfolge C4, C5, C6, C7, CC, CD, CE, CF, D4, .. ,FF
enthalten kann. Die OS Variable  XRAM_C4  liegt  an Adresse &B900, die
anderen folgen. Alle 32 OS Variablen werden gesetzt.
Dabei bedeutet ein gesetztes erstes Bit,  dass  dieser 16 KB RAM Block
auch wirklich existiert. Dagegen  signalisiert  das auf Null gesetztes
Bit Null da der Block nicht vorhanden ist.
Das FutureOS spricht das gesammte  Erweiterung-RAM  in 16K Blcken an,
die zwischen &4000 und &7FFF eingeblendet werden.

Bitte Beachten: Die OS Funktion RANI manipuliert in jedem 16 KB  Block
des Erweiterungs-RAMs  das  erste  Byte  (an  Adresse  &4000).  Die OS
Funktion RAMI  konserviert  das  gesamte  E-RAM,  beschreibt  aber den
Speicher-Bereich von &B7C0-&B7DF.


















       FREIEN ERWEITERUNGSSPEICHER BERECHNEN, VARIABLEN SETZEN
       =======================================================

Kurzbeschreibung: Der  freie,  unbenutzte   Erweiterungsspeicher  wird
berechnet, die Systemvariablen werden entsprechend gesetzt.

Label: FESB

ROM-Nummer: C

Startadresse: &C998

Einsprungbedingungen: Die  32  System-Variablen   XRAM_C4  ..  XRAM_FF
mssen korrekt sein.

Aussprungbedingungen:
D  = Anzahl freier 16K Kurzzeitspeicher.
E  = &09
BC = &00F7
HL = &B9EF = Zeiger auf XRAM_FF

Manipuliert: AF, BC, DE, HL und u.U. XRAM_??

Beschreibung: Fr  alle  32   16KB   ErweiterungsRAMs  existiert  eine
Systemvariable XRAM_??. Diese Variable  gibt  Aufschlu darber ob das
entsprechende 16K RAM vorhanden ist, und wie es verwendet wird.
Die Aufgabe dieser OS Funktion ist  es  nun alle unbenutzten, oder als
Kurzzeitspeicher markierten, 16K RAMs zu zhlen und die entsprechenden
Systemvariablen XRAM_?? zu markieren.  Die  OS  Funktion bergibt in D
Register die Anzahl der freien 16  K  Blcke. Welche Blcke dies sind,
kann man aus  den  Systemvariablen  XRAM_??  lesen.  Die  Sys-Vars der
freien RAMs werden als Kurzzeitspeicher mit &09 markiert.

Bitte Beachten: Die Daten der  32  System-Variablen XRAM_C4 .. XRAM_FF
mssen korrekt sein.
Im Memory Map ist nachzulesen  welche  Bedeutung  die Bits der XRAM_??
Variablen haben.



























                   SUCHE ERSTE MARKIERTE DATEI
                   ===========================

Kurzbeschreibung: Alle Datei-Tagging-Bytes aller  Medien (A-O)  werden
nach der ersten markierten Datei durchsucht.

Label: FMD32

ROM-Nummer: C

Startadresse: &FD98

Einsprungbedingungen: Die OS  Variablen  TURBO_A  bis  TURBO_M und die
Datei-Tagging Bytes mssen korrekt sein.
A < &FF ===> normale Funktion
A = &FF ===> Dateistatus wird NICHT verndert!

Aussprungbedingungen:
HL = &0000 ==> Es wurde keine markierte Datei gefunden.
          Das Zero Flag ist gesetzt!
HL > &0000 ==> Das Zero Flag ist geleert. Und HL zeigt auf die Adresse
des ersten Extents im 32er DIR  der  ersten markierten Datei (Medium A
bis M). Bei Medium N und O zeigt HL  auf den Namen der Datei im M4 SD-
Inhaltsverzeichnis-E-RAM.
REG08_1 = A = Medium auf dem sich die markierte Datei befindet.
         Die Werte 0 bis 14 entsprechen den Medien 'A' bis 'O'.
REG08_2 = physikalische E-RAM Nummer von  &C4  bis &FF in dem sich das
gepufferte  Inhaltsverzeichnis  (32er   DIR)   der   markierten  Datei
befindet. Dieses E-RAM ist bereits  von  &4000 bis &7FFF eingeblendet.
Bei Medium 'N' oder 'O' (M4  SD-Karte)  ist  es  das E-RAM fr die M4-
Erweiterung.
REG16_6 bis REG32_1 = Enthalten den  16  Byte Dateinamen, so wie er im
16er DIR steht (im Format: 'A00:FileNameExt').
Bei den SD-Karten Medien  'N'  und  'O'  steht  hier eine konvertierte
Version des Dateinamens (in Format 'N--:FileNameExt').
FN_LR = &00 / &20, falls die Datei auf Medium 'N'/'O' gefunden wurde.
Die Laufwerksmotoren wurden eingeschalten.

Wenn A bei Aufruf ungleich &FF war:
Der Datei-Status wird  von  Tagged/Markiert  auf Used/Benutzt gesetzt,
eine soche Datei erscheint auf dem Bilschirm durchgestrichen. Ruft man
FMD32 nochmals auf, so wird die nchste markierte Datei gesucht.

Manipuliert: Alle Register auer IY.  RAM Status, Datei-Tagging Bytes,
Motor Status, REG08_1..2, REG16_6..REG32_1

Beschreibung: Dieses Unterprogramm  dient dazu in allen aktiven Medien
nach der ersten markierten Datei zu  suchen. Dabei wird von Laufwerk A
bis zu SD-Karte 'O' gesucht. Beim Einsprung mssen die Systemvariablen
in Ordnung sein.
Die OS Funktion bergibt  in  HL  die  Adresse  des ersten Extents der
ersten markierten Datei. Hat das  Register  HL  den Wert &0000 und das
Zero-Flag ist gesetzt, dann wurde keine markierte Datei gefunden.
Ansonsten wird im Akku und  in  REG08_1  das  Medium, auf dem sich die
markierte Datei befindet, bergeben.  Die  Werte  0 bis 14 entsprechen
den Laufwerken bzw. Medien 'A' bis 'O'.
Auerdem wird in REG08_2 die  physikalische  E-RAM  Nummer von &C4 bis
&FF bergeben, in dem  sich  das  gepufferte Inhaltsverzeichnis (32er)
der markierten Datei  befindet.  Dieses  E-RAM  wurde bereits zwischen
&4000 und &7FFF eingeblendet.
FMD32 startet die LW-Motoren, wenn  ein Laufwerk markiert ist. Trozdem
ist die restliche Hochlaufzeit abzuwarten,  oder zumindest solange mit
dem Laden der Datei zu warten bis das LW bereit (Ready) ist.

Bitte Beachten: Systemvariablen  mssen   unbedingt  korrekt  sein, da
sonst korrupte Daten bergeben werden. Fehlfunktion.

Achtung: Hat Register A vor Aufruf  der  OS  Funktion den Wert &FF, so
wird der Status der gefundenen  Datei NICHT verndert. Bei nochmaligem
Aufruf von FMD32 wrde man die selbe Datei nochmals finden!


























































         SUCHE ERSTE MARKIERTE DATEI - Nur A bis M
         =========================================

Kurzbeschreibung: Die Datei-Tagging-Bytes der  Medien  A  bis M werden
nach der ersten markierten Datei durchsucht.

Label: FMD32AM

ROM-Nummer: C

Startadresse: &FD26

Einsprungbedingungen: Die OS  Variablen  TURBO_A  bis  TURBO_M und die
Datei-Tagging Bytes mssen korrekt sein.
A < &FF ===> normale Funktion
A = &FF ===> Dateistatus wird NICHT verndert!

Aussprungbedingungen:
HL = &0000 ==> Es wurde keine markierte Datei gefunden.
          Das Zero Flag ist gesetzt!
HL > &0000 ==> Das Zero Flag ist geleert. Und HL zeigt auf die Adresse
des ersten Extents im 32er DIR  der  ersten markierten Datei (Medium A
bis M).
REG08_1 = A = Medium auf dem sich die markierte Datei befindet.
         Die Werte 0 bis 12 entsprechen den Medien 'A' bis 'M'.
REG08_2 = physikalische E-RAM Nummer von  &C4  bis &FF in dem sich das
gepufferte Inhaltsverzeichnis  (32  Byte  DIR)  der  markierten  Datei
befindet. Dieses E-RAM ist bereits von &4000 bis &7FFF eingeblendet.
REG16_6 bis REG32_1 = Enthalten den  16  Byte Dateinamen, so wie er im
16 Byte DIR steht (im Format: 'A00:FileNameExt').
Die Laufwerksmotoren wurden eingeschalten.

Wenn A bei Aufruf ungleich &FF war:
Der Datei-Status wird  von  Tagged/Markiert  auf Used/Benutzt gesetzt,
eine soche Datei erscheint auf dem Bilschirm durchgestrichen. Ruft man
FMD32AM nochmals auf, so wird die nchste markierte Datei gesucht.

Manipuliert: Alle Register auer IY.  RAM Status, Datei-Tagging Bytes,
Motor Status, REG08_1..2, REG16_6..REG32_1

Beschreibung: Dieses Unterprogramm  dient dazu in allen aktiven Medien
nach der ersten markierten Datei zu  suchen. Dabei wird von Laufwerk A
bis M gesucht. Beim  Einsprung  mssen  die Systemvariablen in Ordnung
sein.
Die OS Funktion bergibt  in  HL  die  Adresse  des ersten Extents der
ersten markierten Datei. Hat das  Register  HL  den Wert &0000 und das
Zero-Flag ist gesetzt, dann wurde keine markierte Datei gefunden.
Ansonsten wird im Akku und  in  REG08_1  das  Medium, auf dem sich die
markierte Datei befindet, bergeben.  Die  Werte  0 bis 12 entsprechen
den Laufwerken 'A' bis 'M'.
Auerdem wird in REG08_2 die  physikalische  E-RAM  Nummer von &C4 bis
&FF bergeben, in dem  sich  das  gepufferte Inhaltsverzeichnis (32er)
der markierten Datei  befindet.  Dieses  E-RAM  wurde bereits zwischen
&4000 und &7FFF eingeblendet.
FMD32AM startet die LW-Motoren, wenn ein Laufwerk markiert ist. Jedoch
ist die restliche Hochlaufzeit abzuwarten,  oder zumindest solange mit
dem Laden der Datei zu warten bis das LW bereit (Ready) ist.

Bitte Beachten: Systemvariablen  mssen   unbedingt  korrekt  sein, da
sonst korrupte Daten bergeben werden. Fehlfunktion.
Achtung: Hat Register A vor Aufruf  der  OS  Funktion den Wert &FF, so
wird der Status der gefundenen  Datei NICHT verndert. Bei nochmaligem
Aufruf von FMD32AM wrde man die selbe Datei nochmals finden!

      BLOCK-BELEGUNGS-TABELLE DATA/IBM/SYSTEM/VORTEX GENERIEREN
      =========================================================

Kurzbeschreibung:  Die  Blockbelegungstabelle  eines   Laufwerks  wird
generiert, aber nur Data, IBM, System oder Vortex Format. Das DIR darf
unsortiert sein.

Label: BBTG (LW in XL), BBTH (LW in A)

ROM-Nummer: C

Startadresse: &FD95 (BBTG), &FD53 (BBTH)

Einsprungbedingungen: A bzw. XL = Laufwerksnummer von 0 bis 7.
Inhaltsverzeichnis des Laufwerks mu eingelesen sein, System Variablen
sollten korrekt sein.

Aussprungbedingungen: Blockbelegungstabelle wurde von  &B600 bis &B6FF
generiert. Block &00 (Adr. &B600) wird nie beachtet.
XL = Laufwerk, dessen Tabelle generiert wurde.
XH = Laufwerks-Tag-Byte des Laufwerks aus A bzw. XL.
RAM des 32er DIRs des LWs aus A bzw. XL ist eingeblendet.

Manipuliert: AF, BC, DE, HL, AF', (XL), XH und der RAM Status

Beschreibung: Wenn man eine Datei von Hand speichern will, dann sollte
man wissen welche Blcke auf Diskette noch frei sind.
Um herauszufinden welche Blcke auf  einer  Disk mit Data, IBM, System
oder Vortex Format noch frei sind benutzt man diese OS Funktion.
Im Akku (Einsprung BBTH) bzw. IX low (Einsprung BBTG) bergibt man die
Nummer des Laufwerks, auf das  die  Datei geschrieben werden soll. Die
OS   Funktion    generiert    zwischen    &B600    und    B6FF    eine
Blockbelegungstabelle. In Adresse &B601 ist  der Status des Blocks &01
angegeben, in &B602 der Status von  Block  &02,  ... und so weiter bis
zum letzten Block.  Enthlt  ein  Byte  den  Wert  &00,  dann  ist der
entsprechende Block noch frei. Wenn dagegen in einem Byte der Wert &FF
steht, dann ist der  Block  bereits  von  einer  anderen Datei belegt.
Auerdem ist beim Aussprung das  RAM  des 32er DIRs des entsprechenden
LWs eingeblendet.
Das Inhaltsverzeichniss, dessen BBT generiert wird, mu nicht sortiert
sein.
ACHTUNG: Die Blcke des DIRs werden nicht als benutzt markiert! s.u.
Die verschiedenen Formate eines Laufwerkes haben eine unterschiedliche
Blockanzahl, und das DIR  belegt  andere  Blcke.  Bei  Vortex hat ein
Block nicht 1 KB sondern 4 KB.
LW mit   Data Format hat 180 Blcke, DIR in Block 0,1.
LW mit    IBM Format hat 156 Blcke, DIR in Block 0,1.
LW mit System Format hat 171 Blcke, DIR in Block 0,1.
LW mit Vortex Format hat 177 4K-Blcke, DIR in Block 0.

Bitte Beachten: Man  kann  nur  Blockbelegungstabellen  fr  Laufwerke
generieren, deren DIR ordnungsgem eingelesen wurde.
ACHTUNG: Die Blcke des DIRs  werden  nicht als benutzt markiert! Dies
ist einfach von Hand zu machen:
Bei Data, IBM und System Format  sind  die  Blcke &00 und &01 fr das
DIR reserviert. Beim Vortex-Format belegt  das  DIR nur den Block &00.
Das Register XH enthlt das  Laufwerks-Tag-Byte  des Laufwerks aus XL,
dies enthlt auch die Format-Information fr das LW.






           LADEN EINER DURCH IHREN NAMEN DEFINIERTEN DATEI
           ===============================================

Kurzbeschreibung: Eine Datei, deren Name  und  Medium bekannt ist wird
geladen.

Label: LADE_N

ROM-Nummer: C

Startadresse: &FD5C

Einsprungbedingungen:  Das  Inhaltsverzeichnis  in  dem  sich  die  zu
ladende Datei befindet mu eingelesen sein (Medium aktiviert, DIR-Icon
wurde benutzt).
 A = Medium (0..14) von dem die Datei geladen werden soll
     Ist das 8. Bit  gesetzt,  so  werden  Lade- und Start-Adresse des
     Headers ignoriert
DE = Zeiger auf User-Nummer (1 Byte),  Name (8 Bytes) und Extension (3
     Bytes) der Datei. Oder DE zeigt auf M4 Namen.
     Der Name muss sich innerhalb einer 256 Byte Page befinden.
Die OS Variable RAMCHAR  (&84-&86)  bestimmt  den Bildschirm-Modus 0-2
whrend des Ladens.

Falls die  zu  ladende  Datei  keinen  Header  hat,  oder  der  Header
ignoriert werden soll, sind auerdem folgende Daten anzugeben:
REG08_4 = Ladeart (0,1,2,3) - siehe OS Funktion(en) 'LADEN'
Fr die Ladearten 2 und 3 muss folgendes angegeben werden:
REG16_3 = Ladeadresse im RAM bzw. E-RAM, 16 Bit.
Fr die Ladeart 3 mu folgendes angegeben werden:
AKT_RAM = physikalische E-RAM Nummer, &C4, &C5 .. &FF

Aussprungbedingungen:  Im  Akku  wird   ein  Infobyte  bergegen,  da
Aufschlu ber den Verlauf der Operation gibt.
A = &00 ==>  Momentan  ist  berhaupt  kein  Inhaltsverzeichnis einge-
    lesen, deshalb kann auch keine Datei geladen werden.
A = &01 ==> Das Medium von dem die Datei geladen werden soll ist nicht
    markiert/aktiv, die Datei kann nicht geladen werden.
A = &02 ==>  Die  Datei  existiert  nicht  im  Inhaltsverzeichnis  des
    angegebenen Mediums --> Die E-RAM Konfiguration ist unbekannt!
A = &FF ==> Die Datei  sollte  ordnungsgem geladen sein, es ist aber
    durchaus sinnvoll noch die  7  Resultbytes  ab  FDC_RES zu testen,
    falls man von einem Floppy Disk Laufwerk geladen hat.
(REG_PC+1) = Code von 0 bis  14  des  Mediums  (A bis O, LW, HD20, MM,
SD-Karte) von dem die Datei geladen wurde.
Bei Ladeart 0  und  2  wurde  der  128  Byte  Datei-Header  nach &BC00
verschoben.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0-3,5,6, REG16_0,1, REG_PC  und  AKT_RAM. Auerdem die
RAM Bereiche von &B000 bis &B7FF  und  von &BC00 bis &BC7F, der E-RAM-
Status, der FDC, der Bildschirm  MODE  und  der Status der Motoren der
Laufwerke, die Datei-Markierungs-Bytes.  Bei  einem  Fehler  ist nicht
bekannt welches E-RAM von &4000 bis &7FFF eingeblendet ist.

Beschreibung: Diese OS Funktion  dient  dazu  eine  beliebige Datei zu
laden. Die Datei wird  durch  ihr  Quell-Medium, ihre User-Nummer (nur
A-M), ihren Namen und  ihre  Extension  eingeutig identifiziert. Dabei
ist es egal ob die  Datei  markiert  ist  oder  nicht, ihr Status wird
nicht beeinflusst.




Das Medium wird in A angegeben,  ist  das  8. Bit gesetzt, so wird ein
eventueller Dateiheader ignoriert.  Ansonsten  entscheidet  der Header
wohin die Datei geladen wird.  Ohne Datei-Header (oder mit ignoriertem
Header) entscheiden  folgende  RAM-Variablen,  an  welche  Adresse, in
welchen RAM Block, und auf welche Art die Datei geladen wird.
REG08_4 = Ladeart: Die Ladeart &02 ld die Datei in den Hauptspeicher,
          die Ladeart &03 ld die Datei ins Erweiterungs-RAM
REG16_3 = Ladeadresse im RAM bzw. E-RAM, 16 Bit
AKT_RAM = physikalische E-RAM Nummer, &C4, &C5 .. &FF
Wurde die Datei korrekt geladen, so  kehrt  die OS Funktion mit &FF im
Akku zurck, andernfalls ist  die  Fehlerursache im Akku verschlsselt
(RAM Konfiguration undefiniert). Es  empfiehlt  sich  immer auch die 7
Result-Bytes des FDCs zu testen. Diese stehen ab FDC_RES im RAM.
(REG_PC+1) enthlt die Nummer des  Mediums,  von der die Datei geladen
wurde. Dabei entsprechen die Nummern 0 bis 14 den Medien von A bis O.

Bitte Beachten: Wurde die Datei  korrekt  geladen, so kann man sicher-
heitshalber die 7 Resultbytes ab FDC_RES testen.














































      LADEN EINER MARKIERTEN DATEI IN DEN HAUPTSPEICHER AB &0000
      ==========================================================

Kurzbeschreibung: Eine  Datei  wird  ab  Adresse  &0000  in den Haupt-
speicher geladen. (Adresse &0000 ist Standart).

Label: LADEN

ROM-Nummer: C

Startadresse: &FD8F

Einsprungbedingungen: REG08_3 mit Wert &00 fllen fr diese Ladeart.
Systemvariablen mssen korrekt sein, ein DIR muss eingelesen sein, und
eine Datei muss in den Datei-Tagging-Bytes markiert sein.
A < &FF ===> normale Funktion
A = &FF ===> Dateistatus wird NICHT verndert!
Die OS Variable RAMCHAR  (&84-&86)  bestimmt  den Bildschirm-Modus 0-2
whrend des Ladens.

Aussprungbedingungen:  Datei  wurde  ab  der  Adresse   &0000  in  den
Hauptspeicher geladen. Ihr 128 Byte Header steht ab &BC00 im RAM.
(REG_PC+1) = Medium (0..12) von dem die Datei geladen wurde.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0,1,5, REG16_0, REG_PC. Auerdem  die RAM Bereiche von
&B000 bis &B7FF und von &BC00 bis  &BC7F, der RAM-Status, der FDC, die
Datei-Tagging Bytes und der Motor Status.

Beschreibung:  Diese  OS  Funktion  dient   dazu  eine  Datei  in  den
Hauptspeicher zu laden.
Wurde durch die Benutzeroberflche, oder von Hand, eine Datei markiert
(Datei-Tagging-Bytes), dann kann sie  durch  diese OS Funktion geladen
werden. Die  Datei  wird  automatisch  an  die  Standart-Adresse &0000
geladen. Man sollte darauf  achten,  da  die  Datei 40K (maximal 44K)
nicht berschreitet, da  sonst  wichtige  Teile  des  OS berschrieben
werden. Siehe Memory-Map in  #EQU-API.DEU.  Der  Datei-Header liegt ab
&BC00 im RAM.
Bei einer Fehlfunktion z.B. keine Datei markiert, gibt die OS Funktion
eine Fehlermeldung aus und springt in die Benutzeroberflche zurck.

Bitte Beachten: Es sollte  ein  DIR  eingelesen & eine  Datei markiert
sein. Maximale Dateigre  40  (44)  KB,  dann  ist  das  RAM komplett
verbraucht.
Achtung: Hat Register A vor Aufruf  der  OS  Funktion den Wert &FF, so
wird der Status der  geladenen  Datei  NICHT  verndert, beim nchsten
Aufruf  einer  Dateifunktion  wird  dann   die  selbe  Datei  nochmals
behandelt!
















  LADEN EINER MARK. DATEI IN DEN HAUPTSPEICHER AB BELIEBIGER ADRESSE
  ==================================================================

Kurzbeschreibung: Eine Datei wird ab  beliebiger Adresse in den Haupt-
speicher geladen.

Label: LADEN

ROM-Nummer: C

Startadresse: &FD8F

Einsprungbedingungen: REG08_3 mit Wert &02 fllen fr diese Ladeart
REG16_1 = Zieladresse der Datei
Systemvariablen mssen korrekt sein, ein DIR muss eingelesen sein, und
eine Datei muss in den Datei-Tagging-Bytes markiert sein.
A < &FF ===> normale Funktion
A = &FF ===> Dateistatus wird NICHT verndert!
Die OS Variable RAMCHAR  (&84-&86)  bestimmt  den Bildschirm-Modus 0-2
whrend des Ladens.

Aussprungbedingungen: Datei wurde ab  der  Adresse  aus REG16_1 in den
Hauptspeicher geladen. Ihr 128 Byte Header steht ab &BC00 im RAM.
(REG_PC+1) = Medium (0..12) von dem die Datei geladen wurde.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0,1,5, REG16_0, REG_PC. Auerdem  die RAM Bereiche von
&B000 bis &B7FF und von &BC00 bis  &BC7F, der RAM-Status, der FDC, die
Datei-Tagging Bytes und der Motor Status.

Beschreibung:  Diese  OS  Funktion  dient   dazu  eine  Datei  in  den
Hauptspeicher zu laden. Die  Zieladresse  ist  dabei frei whlbar, sie
wird in der Speicherstelle REG16_1 angegeben.
Wenn  man  eine  Datei  an  die   Adresse   &C000  ld,  also  in  den
Bildschirmspeicher, dann kann die Datei  maximal  60 K gro sein. Denn
sobald beim  LADEN  die  Adresse  &FFFF  berschritten  wird,  wird ab
Adresse &0000 weitergeladen. Man  sollte  sich  im  klaren sein welche
Speicherbereiche das OS bzw.  die  Benutzeroberflche  belegt. Der 128
Byte Datei-Header wird ab &BC00 ins RAM geschrieben.

Bitte Beachten: Es  sollte  auch  ein  DIR  eingelesen  &  eine  Datei
markiert sein.  Maximale  Dateigre  40(60)  KB,  dann  ist  das  RAM
komplett verbraucht.
Achtung: Hat Register A vor Aufruf  der  OS  Funktion den Wert &FF, so
wird der Status der  geladenen  Datei  NICHT  verndert, beim nchsten
Aufruf  einer  Dateifunktion  wird  dann   die  selbe  Datei  nochmals
behandelt!

















 LADEN EINER MARK.DATEI IN ERWEITERUNGSPEICHER AB BLOCK &C4,ADR.&4000
 ====================================================================

Kurzbeschreibung: Eine  Datei wird in  Block  &C4  ab Adresse &4000 in
den Erweiterungsspeicher geladen. (Standart).

Label: LADEN

ROM-Nummer: C

Startadresse: &FD8F

Einsprungbedingungen: REG08_3 mit Wert &01 fllen fr diese Ladeart.
Systemvariablen mssen korrekt sein, ein DIR muss eingelesen sein, und
eine Datei muss in den Datei-Tagging-Bytes markiert sein.
A < &FF ===> normale Funktion
A = &FF ===> Dateistatus wird NICHT verndert!
Die OS Variable RAMCHAR  (&84-&86)  bestimmt  den Bildschirm-Modus 0-2
whrend des Ladens.

Aussprungbedingungen: Datei wurde ab  Block  &C4  und Adresse &4000 in
den Erweiterungsspeicher geladen.
(REG_PC+1) = Medium (0..12) von dem die Datei geladen wurde.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0,1,5, REG16_0, REG_PC.  Auerdem  der RAM Bereich von
&B000 bis &B7FF, der RAM-Status, der  FDC, die Datei-Tagging Bytes und
der Motor Status.

Beschreibung:  Diese  OS  Funktion  dient  dazu  eine  Datei  in   den
Erweiterungsspeicher zu laden. Die Datei wird dabei automatisch ab dem
ersten  16K  Erweiterungsblock  &C4  und  der  Adresse  &4000  in  den
Erweiterungsspeicher geladen. Falls ein  Dateiheader existiert, bleibt
er vor der eigentlichen Datei (ab der Zieladresse) erhalten.
Der User sollte sich im klaren sein ob das Erweiterungs-RAM, in das er
laden  will,  berhaupt   existiert   d.h.   eine  Speichererweiterung
vorhanden ist. Darber geben  die  Speicherstellen  XRAM_C4 .. XRAM_FF
Auskunft.
Natrlich mu vor Aufruf  der  OS  Funktion  auch  eine Datei markiert
sein, da sonst eine Fehlermeldung ausgegeben  wird und die OS Funktion
in die Benutzeroberflche springt.

Bitte Beachten: Es  sollte  auch  ein  DIR  eingelesen  &  eine  Datei
markiert sein. Maximale Dateigre 512 KB, dann sptestens ist das RAM
komplett verbraucht.
Achtung: Hat Register A vor Aufruf  der  OS  Funktion den Wert &FF, so
wird der Status der  geladenen  Datei  NICHT  verndert, beim nchsten
Aufruf  einer  Dateifunktion  wird  dann   die  selbe  Datei  nochmals
behandelt!















   LADEN EINER MARKIERTEN DATEI IRGENDWO IN DEN ERWEITERUNGSPEICHER
   ================================================================

Kurzbeschreibung: Eine Datei wird in den Erweiterungsspeicher geladen,
dabei ist der Startblock und die Startadresse frei whlbar.

Label: LADEN

ROM-Nummer: C

Startadresse: &FD8F

Einsprungbedingungen: REG08_3 mit Wert &03 fllen fr diese Ladeart.
REG16_1 = Zieladresse der Datei, durch  256 teilbar z.B. &2300, &7800,
&C000.
AKT_RAM = RAM-Block ab dem geladen wird.
Systemvariablen mssen korrekt sein, ein DIR muss eingelesen sein, und
eine Datei muss in den Datei-Tagging-Bytes markiert sein.
A < &FF ===> normale Funktion
A = &FF ===> Dateistatus wird NICHT verndert!
Die OS Variable RAMCHAR  (&84-&86)  bestimmt  den Bildschirm-Modus 0-2
whrend des Ladens.

Aussprungbedingungen: Datei wurde ab Block aus AKT_RAM und Adresse aus
REG16_1 in den Erweiterungsspeicher geladen.
(REG_PC+1) = Medium (0..12) von dem die Datei geladen wurde.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0,1,5, REG16_0, REG_PC.  Auerdem  der RAM Bereich von
&B000 bis &B7FF, der RAM-Status, der  FDC, die Datei-Tagging Bytes und
der Motor Status.

Beschreibung:  Diese  OS  Funktion  dient  dazu  eine  Datei  in   den
Erweiterungsspeicher zu laden. Der Zielblock  und die Zieladresse sind
dabei frei whlbar. Falls ein Dateiheader existiert, bleibt er vor der
eigentlichen Datei (ab der Zieladresse) erhalten.
Siehe auch vorige OS  Funktionen,  obige  Restriktionen gelten auch in
diesem Fall.
Beim laden einer greren Datei  (einige  100 KB) mu zweifelsfrei der
Erweiterungsspeicher (E-RAM) benutzt werden. Um  etwas in das E-RAM zu
laden gibt man in der  Speicherstelle AKT_RAM die physikalische E-RAM-
Nummer &C4,..&FF an, in REG16_1 gibt man die Zeiladresse von &0000 bis
&7F00 an. Adressen mssen durch 256 teilbar sein, da sonst Lade-Fehler
auftreten werden.
Wenn man als Startadresse einen Wert  zwischen &0000 und &3F00 angibt,
dann wird anfangs in ein Stck des Hauptspeichers geladen.

Bitte Beachten: Es  sollte  auch  ein  DIR  eingelesen  &  eine  Datei
markiert sein. Maximale Dateigre 512 KB,  dann sptestens ist das E-
RAM komplett verbraucht.
Achtung: Hat Register A vor Aufruf  der  OS  Funktion den Wert &FF, so
wird der Status der  geladenen  Datei  NICHT  verndert, beim nchsten
Aufruf  einer  Dateifunktion  wird  dann   die  selbe  Datei  nochmals
behandelt!










      SICHERN ALLER REGISTER & EINSPRUNG IN DEN FutureOS MONITOR
      ==========================================================

Kurzbeschreibung: Bei Aufruf dieser  OS  Funktion werden alle Register
des Z80 Prozessors gesichert. Es erfolgt KEIN Rcksprung.

Label: CARET

ROM-Nummer: C

Startadresse: &FD62

Einsprungbedingungen: - KEINE -

Aussprungbedingungen: Es erfolgt KEIN Rcksprung!

Manipuliert: RAM Variablen: REG_AF1,  REG_BC1  ..  REG_R, REG_I werden
mit Prozessor-Register-Inhalten geladen.

Beschreibung: Diese OS Funktion  ist  ein  Teil des FutureOS Monitors.
Wird sie angesprungen, dann wird  der Inhalt ALLER Register (abgesehen
von PC)  in  die  RAM  Variablen  REG_AF1,  REG_BC1  ...  REG_R, REG_I
geschrieben. Der Inhalt des R  Registers  wird so korregiert, dass ein
unterbrochenes Programm dies nicht feststellen knnen sollte.
Diese OS Funktion kehrt nicht  zurck,  sondern  springt direkt in den
FutureOS Monitor ein, von dort aus  kann  man das zu testende Programm
wieder anspringen.
Will man eine OS Funktion testen, so kann man vor dem Aufruf dieser OS
Funktion die Adresse von CARET auf  den  Stack legen, und sie durch JP
anspringen. Wenn die zu testende OS Funktion mit RET endet, dann kommt
man automatisch nach CARET und in den Monitor.

Bitte Beachten: Auch das R Register wird korrekt behandelt. Es erfolgt
KEIN Rcksprung!






























        DATEI AUS DIR TILGEN, EINTRAG AUF &E5 SETZEN
        ============================================

Kurzbeschreibung: Bevor man eine Datei speichert, sollte man ihre alte
Version von  Diskette  tilgen.  Diese  Funktion  wird  von  dieser  OS
Funktion erfllt.

Label: EWEG

ROM-Nummer: C

Startadresse: &FD7A

Einsprungbedingungen:
REG08_1 = LW, aus dessen DIR die Datei entfernt werden soll.
Ab der RAM-Variable REG16_8 stehen 12  Bytes,  die User (1 Byte), Name
(8 Bytes), Extension (3  Bytes)  der  Datei darstellen, die eliminiert
werden soll.

Aussprungbedingungen:
Datei wurde aus dem Inhaltsverzeichnis entfernt.
Das Inhaltsverzeichnis ist nun unsortiert!
TURBO_? des LWs wurde als MANIPULIERT (Bit 3) markiert.
Das 32er  DIR  des  LWs  wurde  eingeblendet,  aber  nicht  im AKT_RAM
vermerkt.

Manipuliert: AF, BC, DE, HL, XH und der RAM-Status.

Beschreibung: Will man  eine  Datei  auf  Diskette  speichern,  so ist
mglicherweise schon eine Datei mit  der selben Bezeichnung vorhanden.
Diese OS  Funktion  entfernt  eine  durch  User,  Name  und  Extension
definierte Datei aus dem DIR eines bestimmten Laufwerks.
Beim Aufruf  werden  Laufwerk  und  Dateibezeichnung  angegeben.  Nach
entfernen der Datei aus dem DIR  ist selbiges natrlich unsortiert, es
sind einige mit &E5 markierte Eintrge  vorhanden, dies war einmal die
Datei.

Bitte Beachten: Diese OS Funktion  markiert in TURBO_? des behandelten
LWs  das  Bit  3,   das   Inhaltsverzeichnis   hat  also  den  Status:
MANIPULIERT, und wird von ISWS erkannt und auf Diskette geschrieben.
























         TABELLE FREIER BLCKE GENERIEREN (fr SAVE)
         ===========================================

Kurzbeschreibung: Will man eine Datei speichern, dann braucht man dazu
freie Blcke auf Disk. Diese  OS  Funktion  generiert eine Tabelle aus
freien Blcken, in die noch Daten gespeichert werden knnen. Nur Disk!

Label: BBTT

ROM-Nummer: C

Startadresse: &FD86

Einsprungbedingungen: BBTG(!) Tabelle mu ab &B600 vorhanden sein!
B  = Anzahl gesuchter, leerer Blcke 1..255.
C' = maximale Anzahl  der  Blocks  pro  Disk  bezogen auf das aktuelle
     Format.
HL = Zieladresse,  ab  der  die  Blocktabelle  freier Blcke generiert
     wird.
HL sollte am Anfang einer Page liegen,  es mssen alle Blcke in diese
Page passen. &XX00 !!!

Aussprungbedingungen:
Carry-Flag auf 1 gesetzt ==> Datei ist zu GROSS.
Carry-Flag mit 0 geleert ==>  alles  in  Ordnung, die Datei passt noch
auf die Disk.  ====>
HL = Ende der Blocktabelle.
Tabellen-Ende ist durch &00 markiert.

Manipuliert: AF, B, L und HL'

Beschreibung: Will man eine Datei  auf  Diskette  sichern, so wird sie
auf verschiedene Blocks verteilt.  Diese  OS  Funktion dient dazu eine
bestimmte Anzahl freier  Blcke  zu  bestimmen,  und  in  eine Tabelle
zusammenzufassen.
Bevor  man  diese   OS   Funktion   benutzt   mu   man   eine  Block-
belegungstabelle  generieren,  in  der  vermerkt  ist,  welche  Blcke
berhaupt   noch    frei    sind.    Dazu    verwendet    man    BBTG,
BlockBelegungsTabelle mu ab &B600 generiert werden. Ist Block &01 ein
DIR Block, so ist er von Hand  als besetzt zu markieren (DATA, SYSTEM,
IBM). Block &00 wird NICHT beachtet.
Anschlieend kann man diese OS Funktion  verwenden. Im Register B wird
die Anzahl gesuchter Blocks bergeben. Im  Data, System und IBM Format
ist jeder Block 1KB gro, aber im  Vortex Format hat ein Block bereits
4KB. Im Register C' (nicht C) ist die Gesammt-Anzahl freier Blcke des
aktuellen  Formates  anzugeben,  dies   ist   von   Format  zu  Format
verschieden, und hngt auch von der  Anzahl benutzter Spuren ab. In HL
wird schlielich die Zieladresse angegeben,  ab der die Tabelle freier
Blocke generiert werden soll. Es ist  darauf zu achten, dass die ganze
Tabelle innerhalb einer Page Platz  findet,  HL  sollte also mit &XX00
geladen werden.
Nun wird die OS Funktion angesprungen, die Tabelle wird generiert, und
der Erfolg der Operation wird  im  Carry Flag angezeigt. Bei gesetztem
Carry passt die Datei NICHT  auf  die  Diskette. Ist das Carry dagegen
geleert, dann passt die Datei auf die  Disk, und HL zeigt auf das Ende
der Tabelle freier Blcke. Das  Tabellenende  wird  durch ein &00 Byte
markiert.

Bitte Beachten: Gibt man beim Einsprung  die Blockanzahl im Register B
mit &00 an, so bedeutet dies dass  256 Blcke gesucht werden. B sollte
also einen Wert grer Null haben.
Vor Aufruf dieser OS Funktion  ist unbedingt eine Gesammt-Blocktabelle
ab &B600 mittels BBTG zu generieren! Nur fr Disk geeignet, nicht HD!

 ANZAHL FREIER EINTRGE EINES INHALTSVERZEICHMISSES ERMITTELN (DISK)
 ===================================================================

Kurzbeschreibung: Die Zahl freier 32  Byte DIR Eintrge wird bestimmt,
dies ist wichtig um Dateien sichern zu knnen. Nur fr Disketten.

Label: EFED

ROM-Nummer: C

Startadresse: &FD83

Einsprungbedingungen:
REG08_1 = Laufwerk, von 0  bis  7,  dessen DIR untersucht werden soll.
Systemvariablen mssen korrekt sein.
DIR darf unsortiert sein.

Aussprungbedingungen:
BC = &0020
 E = Anzahl freier 32B Eintrge des LWs.
HL = Start des 32er DIRs des LWs aus REG08_1.
32er DIR des LWs  ist  eingeblendet,  aber  die  Variable AKT_RAM wird
NICHT verndert.

Manipuliert: AF, BC, DE, HL und der RAM Status.

Beschreibung: Will man eine Datei auf Diskette sichern, so mu auch im
Inhaltsverzeichnis ein entsprechender  Eintrag  gemacht  werden. Groe
Dateien brauchen mehrere Eintrge.
Diese OS Funktion ermittelt nun  wieviele freie/leere 32 Byte Eintrge
in Inhaltsverzeichnis eines bestimmten Laufwerks noch frei sind.
In der RAM-Variable REG08_1 wird  das  LW  angegeben,  um dass es sich
handelt. Nun wird die OS Funktion aufgerufen.
Die OS Funktion bergibt  im  Register  E  die  Anzahl  freier 32 Byte
Eintrge. Auerdem zeigt HL auf den  Start  der 32er DIRs der LWs. Das
DIR RAM des LWs ist eingeblendet.

Bitte Beachten: Beim Aussprung  erhlt  BC  den  Wert  &0020, dies ist
wichtig, wenn man im Anschlu an diese OS Funktion EGEN aufrufen will.
Spart immerhin 3ys.
Die RAM-Konfig wird nicht in AKT_RAM vermerkt.
ACHTUNG: EFED ist  nur  fr  Disketten  zustndig,  fr HD-Partitionen
bitte die OS Funktion EFED_HD aus ROM A verwenden.





















INHALTSVERZEICHNIS-EINTRAG AUS TABELLE FREIER BLCKE GENERIEREN (SAVE)
======================================================================

Kurzbeschreibung: Aus  einer  Tabelle  freier  DIR-Blcke  werden DIR-
Eintrge generiert, und sofort ins DIR eingetragen. NUR DISKETTE!

Label: EGEM bzw. EGEN (BC muss &0020 sein!)

ROM-Nummer: C

Startadresse: &FD80 (EGEM) bzw. &FD7D (EGEN)

Einsprungbedingungen:
 A = Anzahl zu generierender 32 Bytes Eintrge.
BC = &0020 (NUR bei Einsprung in EGEN),
DE = Start Tabelle freier Blcke (von BBTT).
HL = Start 32er DIR des Ziel-Laufwerks.
HL'= 12 Bytes: User(1),Name(8),Extension(3)  der  zu sichernden Datei,
     OHNE Page-bertritt!
YL = &00 ===> 1K Blockgre (Data,  System, IBM) bzw.
YL > &00 ===> 4K  Blockgre  (Vortex  Format).  Das  32er DIR RAM mu
     bereits eingeblendet sein.
Im DIR mssen gengend freie Eintrge zur Verfgung stehen (==> EFED).
Das DIR darf unsortiert sein, freie Eintrge werden herausgepickt.

Aussprungbedingungen: Inhaltsverzeichnis-Eintrag wurde generiert.

Manipuliert: AF, BC, DE, HL, AF', BC', DE', HL' und DIR.

Beschreibung: Diese OS Funktion  erlaubt es, im RAM - gepufferten 32er
Directory Eintrge zu  installieren,  es  handelt  sich  also um einen
Eintrags-Generator. Dies ist z.B. beim sichern einer Datei ntig.
Zum Aufruf der OS Funktion  mssen:  Anzahl  32 Byte-Eintrge (A), der
Start  der  Tabelle  freier  Blcke   (DE),   der  Start  des  bereits
eingeblendeten 32er DIRs des  LWs  (HL), User,Name,Extension der Datei
(HL') und die Blockgre 0/&FF (YL) bekannt sein.
Nach verlassen der OS Funktion  ist  der  Eintrag  im DIR vermerkt. Es
darf keinesfalls mit korrupten Parametern Eingesprungen werden.
Das Inhaltsverzeichnis  des  LWs  ist  nun  bereit  um  es  nach einem
Sortiervorgang (ISWS) auf Diskette zu schreiben.

Bitte Beachten: Es stehen zwei Einsprnge zu Verfgung: EGEM und EGEN,
dabei ist EGEN um 3 us schneller,  braucht aber bereits den Wert &0020
im Registerpaar BC. Beim Einsprung  in  EGEM  kann BC einen beliebigen
Wert haben.
ACHTUNG: EGEM bzw. EGEN  sind  nur  fr  Disketten  zustndig, fr HD-
Partitionen bitte die OS Funktion EGEN_HD aus ROM A verwenden.

















        PROGRAMM VERLASSEN UND RCKKEHR INS DESKTOP
        ===========================================

Kurzbeschreibung: Dies ist  ein  Einsprung  /  Rcksprung  ins  OS fr
Programme, die die Icons intakt gehalten haben.

Label: FORA

ROM-Nummer: C

Startadresse: &FD77

Einsprungbedingungen: Die Icons des  Desktop  und das Bildschirmformat
(64 * 32) mssen noch erhalten sein.

Aussprungbedingungen: - KEINE -

Manipuliert: irrelevant

Beschreibung: Will ein kleineres Programm  wieder  ins Desktop bzw. OS
zurckkehren, so kann es diesen Einsprung verwenden, wenn die Icons in
der oberen Bildschirmhlfte noch intakt  sind,  und wenn das Bild noch
64 Zeichen auf 32 Zeilen enthlt.
Folgende Aktionen / Restaurationen werden ausgefhrt:
* Modus 2 schalten
* beide ROMs einblenden
* 1. Seite der aktuellen DIRs anzeigen, falls vorhanden.
* Sprung nach KLICK in ROM D und damit ins Desktop.

Bitte Beachten: Es erfolgt kein Rcksprung, es sei denn man prpariert
zuvor die Variablen des OK Icons und der User klickt irgendwann OK an.

































         (TEILWEISE) LADEN EINER DATEI IN KURZ-ZEIT-SPIECHER
         ===================================================

Kurzbeschreibung: Eine  Datei  wird,  wenn  mglich  komplett,  in die
freien 16K KZS geladen.

Label: TEILA (erstes Laden) // TEILB (Rest(e) nachladen)

ROM-Nummer: C

Startadresse: &FD74 (TEILA) // &FD71 (TEILB)

Einsprungbedingungen:
TEILA: XRAM_??, Disk und LW System-Variablen korrekt!
TEILB: REG08_2,4, (REG_PC+1), REG_IY, REG_SP unverndert lassen!!!

Aussprungbedingungen: gilt fr TEILA und TEILB:
A = &00 ==> Die Datei wurde komplett in KZS geladen.
A = &F0 ==> Die Datei  wurde  teilweise  in  die KZS geladen, alle KZS
            sind voll beladen, Rest mittels TEILB nachladen.
A = &FF ==> Keine markierte Datei gefunden
REG08_2  = 32er DIR E-RAM-Block der restlichen Datei
REG_IY   = Start Dateirest im 32er DIR, falls ein Rest zu laden ist.
REG_PC+1 = Medium 0-12 (Floppy, HD, MM) von dem geladen wurde.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE', HL', IX, IY, auerdem die
RAM-Variablen: REG08_0...5, REG16_0, 1, REG16_6...REG32_1 (nur TEILA),
AKT_RAM, REG_IY, REG_SP,  REG_PC  und  XRAM_C4..FF.  Auerdem der RAM-
Status, der Motor-Status und die FTB(File Tagging Byte)s.

Beschreibung: Diese OS Funktion  ermglicht  es,  eine beliebig lange,
markierte Datei in die Kurzzeit-Speicher E-RAM Blcke zu laden. Reicht
die Anzahl vohandener KZS (Kurzzeit-Speicher)  nicht  aus, so wird die
Datei nur  soweit  geladen  bis  alle  KZS  Blcke  beladen  sind. Der
Dateirest kann anschlieend nachgeladen  werden,  notfalls in mehreren
Schritten.
Will man eine (lange) Datei z.B. auf dem Bildschirm anzeigen, so passt
sie unter Umstnden nicht ganz in  den  Speicher, um dieses Problem zu
lsen wurde TEILA/TEILB entwickelt.
Zuerst markiert man die zu  ladende  Datei in den Datei-tagging-Bytes,
nun wird TEILA aufgerufen.  Alle  freien 16K Erweiterungsblocks werden
als KZS markiert, und die Datei  wird  Block fr Block in den Speicher
geladen.
Passt die Datei ganz in  den  Speicher,  so  kehrt die OS Funktion mit
A=&00 zurck. Es mu  also  kein  Dateirest  nachgeladen werden. Wurde
keine markierte Datei gefunden, so hat  A  den Wert &FF. War die Datei
zu gro um sie auf einmal zu laden,  so wurden alle KZS mit dem Anfang
der Datei beladen, und die OS Funktion kehrt mit A=&F0 zurck. Nun ist
dafr Sorge  zu  tragen,  da  die  RAM-Variablen  REG08_2,4,  REG_IY,
REG_PC+1 und REG_SP unverndert bleiben,  nur  dann kann der Dateirest
mit TEILB  nachgeladen  werden.  Die  Aussprungbedingungen  von  TEILB
entsprechen denen von TEILA.  Unter  Umstnden  ist  noch ein weiterer
Dateirest zu laden, dies hngt von der Gesammtlnge der Datei ab.

Bitte Beachten: Um TEILB  korrekt  aufzurufen mssen die RAM-Variablen
REG08_2, _4, REG_IY, REG_SP und REG_PC+1 unverndert bleiben!!








  (TEILWEISE) SICHERN EINER DATEI AUS DEM KURZ-ZEIT-SPIECHER (DISK)
  =================================================================

Kurzbeschreibung: Eine Datei wird (teilweise) aus dem KZS gesichert.

Label: TEISI (anfangs) und TEISK (bei Dateirest)

ROM-Nummer: C

Startadresse: &FD56 (TEISI), &FD59 (TEISK)

Einsprungbedingungen:
a.) TEISI:
A = Laufwerk, auf das gespeichert werden soll: 0..7 (keine HD, MM !!).
REG_BC1 = Blockanzahl der Datei insgesammt, formatabhngig.
Ab REG16_8 stehen 12 Bytes, die  User(1), Name(8) und Extension(3) der
Datei darstellen.
Der Motor des Ziel-Laufwerks muss bei Aufruf eingeschalten sein.
b.) TEISK: Die RAM  Variablen  REG_AF1,  REG_DE1,  REG_HL1, REG_IX und
REG16_8 bis REG16_8+12 mssen seit TEISI erhalten worden sein.

Aussprungbedingungen: Der Akku liefert  Informationen  ber den Erfolg
der Operation:
A = &FF ==> Die Datei wurde komplett auf Diskette geschrieben. Gut so!
A = &F0 ==> Die Datei wurde nur TEILWEISE auf Disk geschrieben, es mu
    nochmals nachgeladen werden, der Rest wird mit TEISK gesichert.
A = &00 ==> Es ist berhaupt kein DIR eingelesen.
A = &01 ==> Das gewhlte LW ist nicht markiert.
A = &02 ==> Die Datei hat eine Lnge von 0 KB. Also auch Abbruch.
A = &03 ==> Die Datei ist zu gro, auf Disk zu wenig Platz.
A = &04 ==> Im Ziel-DIR sind zu wenig Eintrge frei.
A = &05 ==> Es sind keine KZS im E-RAM frei.
A = &06 ==> Bei schreiben meldet das LW "nicht bereit".

Bei TEISI & TEISK manipuliert: AF, BC, DE, HL, AF', BC', DE', HL', IX,
IY, RAM Variablen FDC_RES, REG08_0,1, REG_DE1(low), REG_PC(low)
Nur bei TEISI manipuliert: RAM-Variablen TURBO_A bis M, REG16_0 bis 9,
REG32_1,2, REG_AF1, REG_HL1, REG_IX, das RAM von &B000 bis &BFFF.
Auerdem  wurden  die   RAM-Konfiguration,   die  Spurwechselzeit  der
Laufwerke und die Inhaltsverzeichnisse verndert.

Beschreibung: Diese OS Funktion  ist  das  Gegenstck zu TEILA. Wrend
TEILA eine Datei teilweise ld, dienen TEISI / TEISK dazu die geladene
Datei wieder abzuspeichern. Ganz oder in Stckchen.
Zuerst springt  man  nach  TEISI.  TEISI  generiert  einen  Eintrag im
Inhaltsverzeichniss und  speichert  alle  KZS(Kurz-Zeit-Speicher)  auf
Diskette. Ein Fehler wird im Akku bergeben.
Kehrt TEISI mit dem Byte  &FF  im  Akku  zurck,  dann wurde die Datei
komplett gesichert. Enthlt der Akku  jedoch  den  Wert &F0, so wurden
zwar alle KZS gespeichert,  aber  die  Datei  ist  lnger  als das zur
Verfgung stehende RAM.  Einige  RAM-Variablen  sind  nun zu erhalten,
siehe oben!! Es mu  also  erst  der  Dateirest  mit TEILB nachgeladen
werden, dann kann dieser Rest  mit  TEISK auf Disk geschrieben werden.
Dieser Vorgang kann sich  mehrmals  wiederholen,  wenn  die Datei lang
oder das E-RAM gering ist.
Das Inhaltsverzeichnis wird  zwar  mit  den  korrekten neuen Eintrgen
versorgt, jedoch wird es  nicht  auf  Disk  geschrieben. Dies hat z.B.
dann Sinn, wenn mehrere Dateien kopiert werden sollen.

Bitte Beachten: Bei Aufruf der OS Funktion mu der Motor des Laufwerks
an sein! Das  neue  DIR  mu  mach  Aufruf  von  TEISI/K mittels SIDIR
gesichert werden. Vor dem Aufruf kann es sinnvoll sein, einen weiteren
Block (unterhalb des DIR Puffers) als DIR Puffer zu vermerken. Da neue
Eintrge generiert werden, steigt der RAM Verbrauch im DIR Puffer.
        EINE SEITE TEXT AUF DEM BILDSCHIRM DARSTELLEN
        =============================================

Kurzbeschreibung: Eine Seite Text wird auf dem Bildschirm dargestellt.

Label: TYSAZ (normal) // TYSZA (Anzahl RETURNs variabel)

ROM-Nummer: C

Startadresse: &FD6E (TYSAZ) // &FD6B (TYSZA)

Einsprungbedingungen: fr alle Labels:
MAX_CRX = MODE 2 Spalten pro Zeile
MAX_CRY = Anzahl Zeilen pro Seite
REG08_6 = phys.RAM-Block (&C0,&C4,&C5,..,&FF), in  dem der Text steht,
          dieser Block mu  schon  eingeblendet  und  als KZS markiert
          sein.
REG16_0 = Start der auszugebenden Seite Text
REG16_1 = Textende in momentaner RAM-Konfiguration, also Byte oberhalb
          des akt. KZS bzw. Byte oberhalb des Pufferendes.
Fr TYSZA gilt auerdem:
XL = Anzahl  bereits   ausgegebener   RETURNs,   also  Anzahl  bereits
     verbrauchter Zeilen.

Aussprungbedingungen: gilt fr alle Labels:
A = &00 ==> Seite konnte korrekt dargestellt werden.
A = &FE ==> Seite wurde ausgegeben, das Textende wurde erreicht!
A = &FF ==> Seite  wurde   teilweise  ausgegeben, bitte den restlichen
            Text NACHLADEN! Dann TYSZA aufrufen und Rest ausgeben

Manipuliert: AF, BC, DE, HL,  AF',  BC', DE', HL', REG08_6, REG16_0,1,
C_POS und der RAM-Status

Beschreibung: Diese OS Funktion  dient  dazu  eine  Seite Text auf dem
Bildschirm darzustellen. Der Text  kann  irgendwo  im  RAM oder in den
Kurzzeit-Speichern liegen. Als Einsprung benutzt  man das Label TYSAZ.
Liegt  der  Text  in  den  KZS,   dann   wird  am  Ende  eines  Blocks
selbststndig der  nchste  KZS  eingeblendet,  und  der  dortige Text
fertig ausgegeben.
Normalerweise wird die OS  Funktion  mit  A  =  &00 zurckkehren. Dies
bedeutet, da die aktuelle Seite Text dargestellt wurde, aber der Text
noch nicht zu  Ende  ist.  Denn  wenn  das  absolute Textende erreicht
wurde, wird mit A = &FE beendet.
Kehrt die OS Funktion mit A = &FF  zurck, dann ist das Ende aller KZS
erreicht, das Dateiende aber noch  nicht.  Nun sind Daten z.B. mittels
TEILB (siehe auch vorige OS Funktionen) nachzuladen. Anschlieend kann
der Rest der aktuellen Seite mittels TYSZA ausgegeben werden.
Beim Einsprung in TYSZA  mu  XL  mit  der Anzahl bereits ausgegebener
RETURNs geladen sein, dies erledigt normalerweise TYSAZ, also XL bitte
intakt lassen (oder sichern).

Bitte Beachten: Bitte  Ein-  &  Aus-Sprung-Bedingungen  BEACHTEN! Beim
Einsprung braucht TYSZA mehr Parameter als TYSAZ.











         MULTIPLIKATION VON 8 MAL 8 BIT, MIT 16 BIT ERGEBNI
         ===================================================

Kurzbeschreibung: Zwei 8-Bit Werte werden miteinander multipliziert.

Label: MUL88

ROM-Nummer: C

Startadresse: &FD65

Einsprungbedingungen: Die Register H und  L  enthalten  je einen 8 Bit
Wert, diese sollen multipliziert werden.

Aussprungbedingungen: HL = 16 Bit Ergebni der Multiplikation.

Manipuliert: DE, HL und die Flags

Beschreibung: Da der Z80  keine  Multiplikationsbefehle  hat, mu sich
der Programmierer softwaremig behelfen.
Diese OS Funktion bietet eine sehr  schnelle 8 * 8 Bit Multiplikation.
Dabei werden die beiden zu multiplizierenden  Werte in den Registern H
und L angegeben.
Die OS Funktion bergibt das  16  Bit  Ergebniss im Doppelregister HL.
Eventuelle Vorzeichen werden nicht beachtet.

Bitte  Beachten:  Nur  positive  Werte  im   Bereich  von  0  bis  255
multiplizierbar.




































                 SICHERN EINER DATEI AUF DISKETTE
                 ================================

Kurzbeschreibung: Ein definierter  Speicherinhalt  wird  als Datei auf
Diskette oder HD gesichert.

Label: SICHRE

ROM-Nummer: C

Startadresse: &FD8C

Einsprungbedingungen:
Der Laufwerksmotor ist einzuschalten  (OUT  &FA7E,&FF). Der SAVE-Modus
mu in REG08_3 eingetragen werden: (als ASCII-Zahl+1)
REG08_3 = "1"+1 = &32 ==> Vordergrund Programm sichern, Daten aus RAM.
REG08_3 = "2"+1 = &33 ==> Hintergrund Programm sichern, Daten aus RAM.
REG08_3 = "3"+1 = &34 ==> Hauptspeicher sichern.
REG08_3 = "4"+1 = &35 ==> Erweiterungs-RAM.
REG16_6+1 = Ziellaufwerk, auf das  gesichert  werden soll. Das Ziel-LW
            wird durch das  entsprechende  ASCII Zeichen symbolisiert,
            fr Laufwerk A also z.B.: &41 (oder &61) ==> LW A (a) usw.

Bei SAVE-Modus 3 oder 4 sind weitere Daten anzugeben:
REG16_8 = 12 Bytes, geben die  User-Nr.  (1 Byte), Dateiname (8 Bytes)
          und Extension (3 Bytes) an.
REG_IX  = Quell-Adresse, ab der gespeichert werden soll. (16 Bit).
AKT_RAM = Quell-Block, aus dem/ab  dem gesichert werden soll. &C0-&FF.
REG_IY  = Datei-Lnge in KB (16 Bit). (Datei sollte max.512K haben).

Aussprungbedingungen: Datei wurde auf Diskette / HD gespeichert und im
IHV (Inhaltsverzeichnis) vermerkt.

Manipuliert: AF, BC, DE, HL,  AF', BC', DE', HL',  IX, IY, und die RAM
Variablen REG08_0,1,4, REG16_0 bis  REG32_1,  AKT_RAM, REG_R, der RAM-
Bereich von &8000 bis &9FFF und &B000 bis &BFFF.
Auerdem  wurden  die  E-RAM-Konfiguration,  die  Spurwechselzeit  der
Laufwerke und die Inhaltsverzeichnisse verndert. Ein DIR Puffer E-RAM
ist eingeblendet,  es  sollte  durch:  LD  BC,&7FC0:OUT  (C),C  wieder
ausgeblendet werden.

Beschreibung:  Dieses  Unterprogramm   erlaubt   es  einen  beliebigen
Speicherbereich als Datei auf  Diskette  oder  HD  zu schreiben und im
Inhaltsverzeichniss zu vermerken.
Die Variable REG08_3  gibt  an  wie  gesichert  werden  soll,  es kann
entweder ein bereits eingelesenes Programm  gesichert werden, oder ein
beliebiger RAM Bereich.
In jedem Fall ist in  REG16_6+1  das  Laufwerk von A..L anzugeben, und
zwar als ASCII Wert von &41 .. &4D. Siehe Einsprungbed. !!!

Bitte Beachten: Es kann  nur  auf  Laufwerke gespeichert werden, deren
Inhaltsverzeichnis bereits  eingelesen  und  in  den  Systemveariablen
vermerkt ist.
Man sollte dafr sorgen da sich auf das Laufwerk auch Daten schreiben
lassen.
Das LW wird in REG16_6+1 als ASCII Wert angegeben.








                ANZEIGE EINES FutureOS DATEIHEADERS
                ===================================

Kurzbeschreibung: Ein FutureOS Dateiheader wird angezeigt.

Label: DHED

ROM-Nummer: C

Startadresse: &FD5F

Einsprungbedingungen: Es sollte eine markierte Datei vorhanden sein.

Aussprungbedingungen: Header Informationen wurden angezeigt!
XL = &8C ==> Datei hatte gar keinen Header !!!
XL = &B3 ==> Datei hatte Header (wie angenommen).
Das System befindet sich in MODE  1.  Der  32 mal 32 Zeichen Modus ist
aktiv. Das untere ROM (Zeichensatz!) ist eingeblendet.
Der angezeigte Header liegt ab &B400 im RAM.
Die bearbeitete Datei bleibt markiert, d.h. FTB erhalten!

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0,1,5, REG16_0,  REG_PC  und  C_POS.  Auerdem die RAM
Bereiche von &B000 bis &B7FF und  von &BC00 bis &BC7F, der RAM-Status,
der Modus (1), der FDC, die Datei-Tagging Bytes und der Motor Status.

Beschreibung: Der 128 Byte Header  einer  Datei enthlt unter FutureOS
zustzliche Informationen. (Kopfzeile, Icon - bitte Nachschlagen).
Diese OS Funktion dient dazu  den  Header  der ersten markierten Datei
auf dem Bildschirm anzuzeigen, dies beinhaltet folgende Informationen:
- Kopfzeile bzw. Semigrafik- bzw. Grafik-Icon
- Ladeadresse & Ladeblock
- Dateilnge
- Startadresse & Startblock
Zur Darstellung dieser Informationen  wird  MODE  1 benutzt, alle vier
Farben finden Verwendung, sie sollten sich also etwas unterscheiden.

Bitte Beachten: Hat die Datei keinen  Header bricht die OS Funktion ab
und kehrt mit einer Fehlermeldung ins OS zurck.

























        LADEN DES DATEIHEADERS EINER MARKIERTEN DATEI
        =============================================

Kurzbeschreibung: Dateiheader der ersten markierten Datei laden.

Label: LADAH

ROM-Nummer: C

Startadresse: &FD92

Einsprungbedingungen: Es sollte eine markierte Datei vorhanden sein!

Aussprungbedingungen: 512 Bytes der ersten  markierten Datei stehen ab
&B400 im RAM. Der Header befindet sich also genau an dieser Adresse.
(REG_PC+1) = Code von 0 bis  14  des  Mediums (Laufwerk, HD20, MM, SD-
Karte) von dem die Datei geladen wurde

Manipuliert: siehe LADEN, dazu noch REG08_3, REG16_1

Beschreibung: Will man von einer Datei  ihren ersten Sektor oder ihren
Dateiheader laden, so kann man diese OS Funktion verwenden.
Es wird  die  erste  markierte  Datei  verwendet.  Sollte  keine Datei
markiert sein, dann bricht die OS Funktion mit einer Fehlermeldung ab,
und springt ins OS zurck.
Nach Aufruf der OS Funktion steht der  erste Sektor der Datei ab &B400
im RAM. Auerdem stehen User, Name  und  Extent  der Datei ab &B7E0 im
RAM.
Diese OS Funktion eignet  sich  besonders,  wenn  man den Header einer
Datei untersuchen will. Die FTBs (Dateistatus) bleiben erhalten.

Bitte Beachten: Irgendeine Datei sollte markiert sein.
































                  SICHERE L-RAM ALS LZS IM E-RAM
                  ==============================

Kurzbeschreibung: Das RAM von &0000 bis &3FFF wird im Erweiterungs-RAM
gesichert, dieses E-RAM  wird  als  Lang-Zeit-Speicher (LZS) markiert.
Siehe auch OS Funktion: RRB0.

Label: SSB0

ROM-Nummer: C

Startadresse: &FD4D

Einsprungbedingungen: Es sollte E-RAM vorhanden sein, davon sollte ein
16K Block als frei oder KZS markiert sein.

Aussprungbedingungen: Das Z-Flag gibt Aufschlu ber den Erfolg.
Zero-Flag geleert ==> Kein E-RAM frei, Unteres RAM nicht gesichert!
Zero-Flag gesetzt ==> Unteres RAM wurde korrekt gesichert
Die RAM-Variable L_RAM  enthlt  die  Nummer  des physikalischen E-RAM
Blocks von &C4 bis &FF. Dieses Erweiterungs-RAM wurde eingeblendet.
Falls kein freies E-RAM gefunden wurde  (Zero-Flag = 0) enthlt die OS
Variable L_RAM den Wert &00.
Das untere RAM wurde zwischen &0000 und &3FFF eingeblendet
Der Bildschirm Modus wurde auf 2 gesetzt

Manipuliert: AF, BC, DE, HL und die Variable L_RAM und XRAM_??.

Beschreibung: Unter FutureOS  hat  der  unterste  RAM  Block, also das
Lower-RAM (&0000 bis &3FFF) oft Pufferfunktion. Er wird z.B. von DIRWA
und von TS_D_IN als Zwischenspeicher benutzt.
Die OS Funktion SSB0 sichert  den  Lower-RAM Block im Erweiterungs(E)-
RAM, vorrausgesetzt dort sind noch 16  KB  frei. Der freie E-RAM Block
wird  als  Lang-Zeit-Speicher  (LZS)   markiert,   auerdem  wird  die
physikalische RAM-Konfiguration  des  E-RAMs  in  der  Variable  L_RAM
gesichert.

Bitte Beachten: Ist Z-Flag gelscht,  so  wurde  das untere RAM (&0000
bis &3FFF) nicht gesichert.

























                HOLE ALTES L-RAM AUS LZS DES E-RAM
                ==================================

Kurzbeschreibung: Das RAM  von  &0000  bis  &3FFF  wird  aus dem E-RAM
restauriert. Siehe auch OS Funktion: SSB0. s.o.

Label: RRB0

ROM-Nummer: C

Startadresse: &FD4A

Einsprungbedingungen: SSB0 sollte das L-RAM zuvor gesichert haben

Aussprungbedingungen: Das Z-Flag gibt Aufschlu ber den Erfolg.
Zero-Flag gesetzt ==> Fehler, L-RAM wurde nie gesichert!
Zero-Flag geleert ==> L-RAM wurde korrekt restauriert.
Der Zwischenspeicher-LZS des E-RAMs wurde wieder freigegeben.
Die Variable L_RAM wurde auf &00 gesetzt.

Manipuliert: AF, BC, DE, HL und die Variablen L_RAM und XRAM_??.

Beschreibung: Wurde das L-RAM (&0000  bis  &3FFF)  zuvor durch SSB0 im
E-RAM gesichert, dann  kann  man  es  durch  diese  OS Funktion (RRB0)
wieder restaurieren. Der  als  LZS  markierte  Block  des  E-RAMs wird
wieder freigegeben und als  KZS  markiert.  Auerdem wird die Variable
L_RAM auf &00 gesetzt.
Ist beim Rcksprung das Z-Flag gelscht,  dann wurde das L-RAM korrekt
restauriert. Bei gesetztem Z-Flag wurde das L-RAM gar nicht gesichert.

Bitte Beachten: L-RAM sollte zuvor (--> SSB0) gesichert worden sein.

































        DATEN DER RAM-DISK SCHTZEN - XRAM_?? NDERN
        ============================================

Kurzbeschreibung: Die durch  RAM-Disk-Dateien  belegten  Blcke des E-
RAMs werden geschtzt.

Label: PRO_MD

ROM-Nummer: C

Startadresse: &FD50

Einsprungbedingungen: -

Aussprungbedingungen: Die von RAM-Disk-Dateien  belegten Blcke des E-
RAMs werden in den XRAM_?? Variblen als USER-RAM (&11) vermerkt.
Die RAM-Konfiguration &CC  (5.  16K  Block)  ist  eingeblendet, dieser
Block enthlt das DIR der RAM-Disk.

Manipuliert: AF, BC, DE, HL, RAM-Status und die Variablen XRAM_CC..FF.

Beschreibung: Das FutureOS beinhaltet  eine dynamische RAM-Verwaltung.
Es benutzt also das gesammte freie  E-RAM. Unter Amsdos bzw. CP/M kann
das E-RAM als RAM-Disk  genutzt  werden. Das Inhaltsverzeichniss (DIR)
der RAM-Disk steht im Block  &7FCC  (5.  16K  Block) des E-RAMs ab der
Adresse &4000 im Speicher.
Diese OS  Funktion  schtzt  die  Dateien  der  RAM-Disk.  Dafr  wird
zunchst die hchste, von der RAM-Disk belegte, Blocknummer ermittelt.
Alle Blocks darunter  werden  in  den  XRAM_??  Variablen als USER-RAM
(&11) markiert. Von diesen  USER-RAMs  lat  das  FutureOS die Finger,
somit werden alle Daten der RAM-Disk erhalten.
Ist die RAM-Disk komplett  gefllt,  dann  sind alle Variablen XRAM_CC
bis XRAM_FF mit &11 markiert,  dem  FutureOS  stehen dann nur noch die
64KB der Blcke &C4, &C5, &C6 und &C7 zur Verfgung.
Diese OS Funktion wird bei  jedem System-Start aufgerufen, die Dateien
der RAM-Disk werden also automatisch geschtzt.
Hat man zuwenig RAM,  dann  kann  man  das  DIR  der RAM-Disk per Hand
lschen, und das System neu starten. Das FutureOS wird sich nun wieder
richtig wohl fhlen, aber man sollte  nicht vergessen zuvor ein Backup
der RAM-Disk anzufertigen.

Bitte Beachten: Auch Dateien die im  DIR der RAM-Disk gelscht wurden,
also auf  User  &E5  stehen  werden  erhalten.  Will  man  den  "Mll"
loswerden, dann kann  man  die  Dateien  entweder  von Hand entfernen,
indem man alle Blocknummern auf &00 setzt. Oder man kann alle RAM-Disk
Dateien  auf  Disk  kopieren,  dann  das  DIR  der  RAM-Disk  mit  &E5
initialisieren und dann die Dateien zurckkopieren.

















        ERMITTLE DIE BLOCK-ANZAHL DER ERSTEN MARKIERTEN DATEI
        =====================================================

Kurzbeschreibung: Die Blockanzahl  der  ersten  markierten  Datei wird
bestimmt.

Label: G_BLK

ROM-Nummer: C

Startadresse: &FD41

Einsprungbedingungen: Es sollte mindestens  eine  Datei markiert sein.
Die System-RAM-Variablen sollten korrekte Werte enthalten.

Aussprungbedingungen: Wenn eine markierte  Datei  gefunden wurde, dann
ist ihre Blockanzahl im Register BC gegeben. War keine Datei markiert,
dann enthlt das Register HL den Wert &0000.
REG_BC1 = BC = Anzahl Blcke der ersten markierten Datei.
HL = &0000 ==> es war gar keine Datei markiert.

Manipuliert: siehe FMD32

Beschreibung: Will man die  Block-Anzahl  einer  Datei bestimmen, dann
kann man diese OS  Funktion  dazu  benutzen.  Es  wird  die Anzahl der
Blcke der ersten markierten Datei bestimmt.
Beim Einsprung ist darauf zu achten, da das System-RAM korrekte Werte
enthlt, besonders die Variablen TURBO_?.  Wenn sich der Programmierer
an die Konventionen hlt, dann ist das kein Problem.
Diese OS  Funktion  funktioniert  fr  Data,  System,  IBM  und Vortex
Format, auch Dateien auf HD20 werden untersttzt.
Nach dem Aufruf der OS Funktion gibt  diese  im Register BC und in der
RAM-Variable REG_BC1  die  Block-Anzahl  der  ersten  markierten Datei
zurck.
Aber Achtung: Wenn  das  Register  HL  beim  Aussprung  den Wert &0000
enthlt, dann wurde gar keine markierte Datei gefunden.
Man beachte: Eine  Datei  hat  bei  verschiedenen  Formaten  auch eine
verschieden groe Block-Anzahl:
Nehmen wir an, die Datei 'MULTITAS.X16'  ist  7  KB gro, dann hat sie
unter Data, System und IBM  Format  auch  die Blockanzahl von 7. Aber,
unter Vortex-Format hat die  selbe  Datei  nur  zwei  Blcke und keine
sieben.

Bitte Beachten: RAM-Variablen mssen korrekte Werte enthalten.




















ERMITTLE DIE BLOCK-ANZAHL  EINER  DATEI  BEI  DATA,  SYSTEM,  IBM ODER
======================================================================
                            VORTEX FORMAT
                            =============

Kurzbeschreibung: Die Blockanzahl einer Datei wird bestimmt. Dabei mu
es sich aber um Data, System, IBM oder Vortex Format handeln.

Label: BLK_FD

ROM-Nummer: C

Startadresse: &FD47

Einsprungbedingungen: HL = Zeiger auf ersten Eintrag der Datei.
Die System-RAM-Variablen sollten korrekte Werte enthalten.

Aussprungbedingungen: BC = &00?? = Anzahl Blcke der Datei.

Manipuliert: AF, BC, DE, HL, IX und IY.

Beschreibung: Will man die  Block-Anzahl  einer Datei bestimmen, deren
erster Extent im 32er DIR bekannt ist, dann kann man diese OS Funktion
dazu benutzen. Die Datei mu sich aber auf einem Datentrger mit Data,
System, IBM oder Vortex Format befinden.
Beim Einsprung ist darauf  zu  achten,  da  das  Register  HL auf den
ersten Eintrag der zu untersuchenden Datei  zeigt. Damit ist der erste
Eintrag im 32er DIR gemeint.  Das  entsprechende  E-RAM, indem das DIR
der Datei gepuffert ist, mu natrlich eingeblendet sein.
Nach dem Aufruf der OS Funktion  gibt  diese im Register BC die Block-
Anzahl der Datei zurck.
Man beachte: Eine  Datei  hat  bei  verschiedenen  Formaten  auch eine
verschieden groe Block-Anzahl:
Nehmen wir an, die Datei BEER-TST.ASC ist 14K gro, dann hat sie unter
Data, System und IBM Format auch  die  Blockanzahl von 14. Aber, unter
Vortex-Format hat die selbe Datei nur vier Blcke und keine 14.

Bitte Beachten: Die Datei  mu  sich  auf  einem Datentrger mit Data,
System, IBM oder Vortex Format befinden.

























         ERMITTLE DIE BLOCK-ANZAHL EINER DATEI AUF FESTPLATTE
         ====================================================

Kurzbeschreibung: Die Blockanzahl einer Datei wird bestimmt. Dabei mu
es sich aber um eine Datei auf Festplatte handeln.

Label: BLK_HD

ROM-Nummer: C

Startadresse: &FD44

Einsprungbedingungen: HL = Zeiger auf ersten Eintrag der Datei.
Die System-RAM-Variablen sollten korrekte Werte enthalten.

Aussprungbedingungen: BC = &???? = Anzahl Blcke der Datei.

Manipuliert: AF, BC, DE, HL, IX und IY.

Beschreibung: Will man die  Block-Anzahl  einer Datei bestimmen, deren
erster Extent im 32er DIR bekannt ist, dann kann man diese OS Funktion
dazu benutzen. Die Datei mu sich aber auf der Dobbertin HD befinden.
Beim Einsprung ist darauf  zu  achten,  da  das  Register  HL auf den
ersten Eintrag der zu untersuchenden Datei  zeigt. Damit ist der erste
Eintrag im 32er DIR gemeint.  Das  entsprechende  E-RAM, indem das DIR
der Datei gepuffert ist, mu natrlich eingeblendet sein.
Nach dem Aufruf der OS Funktion  gibt  diese im Register BC die Block-
Anzahl der Datei zurck.
Achtung: Wrde sich die Datei  auf  Diskette befinden, dann knnte sie
eine erheblich abweichende Block-Anzahl aufweisen.

Bitte Beachten: Die Datei mu sich auf HD befinden.
































        WARTEN AUF DEN DRUCK EINER BELIEBIGEN TASTE
        ===========================================

Kurzbeschreibung: OS Funktion wartet auf den Druck irgendeiner Taste.

Label: WATA

ROM-Nummer: C

Startadresse: &FD38

Einsprungbedingungen: -

Aussprungbedingungen: Vom Anwender wurde ein  Taste gedrckt. Der Wert
dieser Taste + 1 wird in Register A bergeben (siehe H_ALLET).

Manipuliert: AF, BC, DE, HL, IX, PIO und PSG.

Beschreibung: Diese OS Funktion  dient  dazu  so  lange zu warten, bis
durch den Anwender eine beliebige Taste gedrckt wird. Die OS Funktion
bergibt den ASCII - Wert  der  "gedrckten  Taste  + 1" im Akku. Ohne
Tastendruck wartet die Funktion fr ewig.
Um  die  Tastatur  abzufragen   sollte   allerdings  die  OS  Funktion
'H_XALLET' verwendet werden.

Bitte Beachten: OS Funktion  kehrt  erst  NACH  dem  Druck einer Taste
zurck.





































          KONVERTIERE ZWEI ASCII-ZEICHEN IN EINEN 8 BIT WERT
          ==================================================

Kurzbeschreibung: Zwei  ASCII-Zeichen  werden  in  einen  8  Bit  Wert
konvertiert.

Label: CC2N

ROM-Nummer: C

Startadresse: &FD3B

Einsprungbedingungen: Ab HL liegen  zwei  ASCII-Zeichen  (0-9, A-F) im
RAM. Zuerst das hherwertige,  anschlieend das niederwertige Zeichen.
Ein Beispiel ist die Eingabe einer User-Nummer in einem Text-String.

Aussprungbedingungen: A  = 8 Bit Wert &00-&FF
                        HL = HL + &0001

Manipuliert: AF, B und HL

Beschreibung: Diese OS Funktion dient  dazu zwei ASCII-Zeichen, die im
Speicher abgelegt sind in einen 8 Bit Wert zu konvertieren. Bei Aufruf
der OS Funktion zeigt HL  auf  zwei  Zeichen im Speicher: (HL) enthlt
das hherwertige Zeichen und (HL+1)  enthlt das niederwertig Zeichen.
Nach dem Rcksprung der OS Funktion ist Register HL um Eins erhht und
der Akku enthlt einen 8 Bit Wert, der sich folgendermaen errechnet:

A = (HL)*16 + (HL+1)

Beispiel:

Die Adresse &4000 enthlt das Zeichen "7" und &4001 enthlt "B".

        LD   HL,&4000
        CALL CC2N

Der Akku enthlt nun &7B.

Diese OS Funktion eignet sich  lediglch  dazu  Zeichen von "0" bis "9"
und "A" bis "F" in einen 8 Bit Wert zu konvertieren.
Im FutureOS wird diese OS  Funktion  z.B.  dazu  benutzt, mit der Hand
eingegebene User-Nummern (2 Zeichen) in ein Byte umzurechnen.

Bitte Beachten: Die zu konvertierenden  Zeichen mssen zwischn "0" und
"9" bzw. "A" und "F" sein.


















 EIN BYTE WIRD IN FORM ZWEIER ZEICHEN AUF DEM BILDSCHIRM DARGESTELLT
 ===================================================================

Kurzbeschreibung: Ein Byte wird hexadezimal dargestellt.

Label: HAUT

ROM-Nummer: C

Startadresse: &FD3E

Einsprungbedingungen: A = Byte, das dargestellt werden soll.

Aussprungbedingungen:  Zwei  hexadezimale   Zeichen   wurden  auf  den
Bildschirm geschrieben.

Manipuliert: AF, BC, DE, HL, AF', IX, CUR_POS und REG08_0.

Beschreibung:  Diese  OS  Funktion  dient   dazu   einen  8  Bit  Wert
hexadezimal auf dem Bildschirm  darzustellen.  Das darzustellende Byte
wird im  Akku  bergeben.  Die  OS  Funktion  gibt  anschlieend  zwei
hexadezimal Zeichen auf  dem  Bildschirm  aus.  Dabei  muss Bildschirm
Modus 1 aktiviert sein. Die beiden  Zeichen  werden mit PEN 1 (BB!) ab
der aktuellen CURsor-POSition dargestellt.

Bitte Beachten: OS Funktion ist fr Mode 1 ausgelegt. Das Byte wird im
hexadezimalen Zahlensystem dargestellt.





































 TESTE OB 4 MB RAM ERWEITERUNG ANGESCHLOSSEN, SETZTE SYSTEM VARIABLEN
 ====================================================================

Kurzbeschreibung: Testet wie viel Erweiterungs - RAM (0,5 MB bis 4 MB)
am CPC angeschlossen ist. Die ersten 512 KB werden nicht beachtet.

Label: TXR4M

ROM-Nummer: C

Startadresse: &FD32

Einsprungbedingungen: -

Aussprungbedingungen: System-Variablen X4RXE,  X4RDC,  X4RBA und X4R98
wurden entsprechend des angeschlossenen Erweiterungs-RAMs gesetzt.
Das Register BC enthlt &7FC0 und der Hauptspeicher ist eingeblendet.

Manipuliert: AF, BC, DE, HL, AF',  IX,  Adresse  &4000  in allen 16 KB
Erweiterungs-RAM Blcken ab der RAM  Konfiguration  &7EC4. Und die RAM
Konfiguration selbst: Hauptspeicher ist eingeblendet.
Die ersten 512 KB E-RAM wurden jedoch nicht manipuliert.

Beschreibung: An den CPC kann  eine 4 MB RAM-Erweiterung angeschlossen
werden. Dieses Erweiterungs-RAM wird in  16  KB Blcken zwischen &7FC4
und &78FF angesprochen.
Diese OS Funktion testet welche einzelnen  512 KB Blcke der mglichen
4 MB RAM tatschlich angeschlossen /  ansprechbar sind. Die ersten 512
KB (Port &7Fxx) werden dabei nicht beachtet.
Fr jeden angeschlossenen 512 KB  Block werden die entsprechenden Bits
in den System RAM  Variablen  X4RXE,  X4RDC,  X4RBA bzw. X4R98 gesetzt
(siehe Datei #OS-VAR.DEU). Diese 512  KB Blcke werden jeweils mittels
der I/O-Ports &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx bzw. &78xx
angesprochen. Die ersten 512 KB (Port &7Fxx) werden nicht beachtet, da
diese ber die XRAM_?? Variablen verwaltet werden.
Nach dem  Rcksprung  der  OS  Funktion  TXR4M   sind  die  System RAM
Variablen zur Verwaltung von  4  MB  E-RAM  auf gltige Werte gesetzt.
(Das FutureOS ruft TXR4M  beim  Start  des  OS  einmal auf). Weiterhin
wurde die Adresse &4000 eines jeden  16  KB Blocks oberhalb des ersten
512 KB Blocks  manipuliert,  dies  entspricht  den RAM Konfigurationen
&7Exx, &7Dxx, &7Cxx, &7Bxx, &7Axx, &79xx und &78xx.

Bitte Beachten: Die  ersten  512  KB  Erweiterungs-RAM  (&7Fxx) werden
nicht beachtet und nicht verndert.
Das Erweiterungs-RAM, das ab  Port  &7Exx  bis Port &78xx angesprochen
wird, wurde in jedem 16 KB Block an Adresse &4000 manipuliert.


















  PHYSIKALISCHE E-RAM AUSWAHL IN ZEIGER AUF XRAM-VARIABLE UMRECHNEN
  =================================================================

Kurzbeschreibung: Konvertiert physikalische E-RAM  Auswahl (der ersten
512 KB  Erweiterungs-RAM)  in  einen  Zeiger  auf  eine  der Variablen
XRAM_C4..._FF.

Label: E2XRAM

ROM-Nummer: C

Startadresse: &C9D4

Einsprungbedingungen: A = physikalische E-RAM Auswahl &C4...&FF

Aussprungbedingungen:  HL  =  Zeiger  auf  eine  der  System-Variablen
                              XRAM_C4 bis XRAM_FF

Manipuliert: AF und HL

Beschreibung: An den CPC knnen bis  zum 4 MB Erweiterungs RAM (E-RAM)
angeschlossen werden. Dabei kommen  den  ersten  512 KB eine besondere
Rolle zu. Sie werden ber  den  Port  &7Fxx angesprochen. Um ein E-RAM
zwischen &4000 und &7FFF einzublenden wird  einer aus 32 Werten an den
Port &7Fxx gesendet (&C4, &C5,  &C6,  &C7,  &CC, &CD, ... &FF). Dieser
Wert wird als physikalische E-RAM Auswahl bezeichnet. Fr jeden dieser
32 E-RAM Blcke steht im  FutureOS  eine  XRAM Variable zur Verfgung,
die Aufschluss ber die Verwendung  dieses  16 KB Blocks gibt. Details
dazu sind im Handbuch und in Datei '#OS-VAR.DEU' zu finden.
Um nun den Wert einer  solchen  physikalischen  E-RAM Auswahl in einen
Zeiger auf die entsprechende  XRAM  Variable  umzurechnen  kann die OS
Funktion E2XRAM verwendet werden.
Dabei wird die physikalische E-RAM  Auswahl  in  A bergeben. Nach der
Rckkehr der OS Funktion zeigt HL auf die zugehrige XRAM Variable.

Bitte Beachten: Diese OS Funktion bedient  nur die ersten 512 KB E-RAM
(&7Fxx), denn nur fr diese 32 Blcke  von  je 16 KB E-RAM stehen XRAM
Variablen zur Verfgung.


























        XRAM-VARIABLE IN PHYSIKALISCHE E-RAM AUSWAHL UMRECHNEN
        ======================================================

Kurzbeschreibung: Ein Zeiger auf  eine  der  32 XRAM-Variablen wird in
die zugehrige physikalische Erweiterungs-RAM Auswahl umgerechnet.

Label: BJKG

ROM-Nummer: C

Startadresse: &C9F9

Einsprungbedingungen: HL = Zeiger auf OS Variable XRAM_C4...FF

Aussprungbedingungen: Der Akku A enthlt  die physikalische Nummer des
zugehrigen 16 KB E-RAM Blocks,  also  die  Hardware E-RAM Auswahl von
&C4 bis &FF.
Und Register B wurde mit dem Wert  &7F geladen um einen 'OUT (C),A' zu
ermglichen.

Manipuliert: AF und B

Beschreibung: Fr die Verwaltung  der  ersten  512 KB Erweiterungs-RAM
(E-RAM) stellt das  FutureOS  die  XRAM-Variablen  zur  Verfgung. Sie
tragen die Bezeichnungen XRAM_C4,  XRAM_C5  ...  XRAM_FF.  Jede der 32
Variablen gibt Aufschlu ber  die  Verwendung  des  zugehrigen 16 KB
groen E-RAM Blocks. Diese Blcke  werden physikalisch ber Port &7Fxx
mittels der Bytes &C4, &C5 ... &FF ausgewhlt. Ein Beispiel:

 LD  BC,&7FC4 ;Auswahl des ersten E-RAMs (&C4) ber den Port &7Fxx
 OUT (C),C    ;Das E-RAM im Bereich von &4000 bis &7FFF einblenden

Die OS Funktion BJKG dient  nun  dazu  eine  der XRAM-Variablen in die
entsprechende Hardware E-RAM Auswahl  umzurechnen.  Dabei muss HL beim
Einsprung auf eine  der  XRAM-Variablen  zeigen.  Nach  dem Rcksprung
enthlt der Akku den Wert &C4...&FF fr die Hardware E-RAM Auswahl.
Und Register B enthlt den Wert &7F. Mit dem Kommando 'OUT (C),A' kann
man den berechneten E-RAM Block direkt einblenden.

Bitte Beachten: Nach dem Rcksprung dieser  OS Funktion ist es mglich
das berechnete E-RAM direkt einzublenden:

 OUT (C),A ;E-RAM einblenden (zwischen &4000 und &7FFF)





















      FREIGEBEN EINES 16 KB E-RAM BLOCKS DER ERSTEN 512 KB E-RAM
      ==========================================================

Kurzbeschreibung: 16 KB Block des E-RAMs (erste 512 KB) freigeben.

Label: FER7F

ROM-Nummer: C

Startadresse: &C9CB

Einsprungbedingungen: A = physikalische E-RAM Auswahl &C4...&FF

Aussprungbedingungen: HL = Zeiger zugehrige Sys.-Variable XRAM_C4-FF

Manipuliert: AF, HL und die entsprechende XRAM_?? Variable

Beschreibung: Die OS Funktion  FER7F  dient  zur  Freigabe eines zuvor
belegten Blocks des Erweiterunngs-RAMs. Jeder  dieser Blcke ist 16 KB
gro und jeweils  512  KB  (also  32  Blcke)  werden  ber einen Port
angesprochen.
OS Funktion FER7F bezieht sich auf die  ersten 512 KB (Port &7Fxx) der
maximal mglichen 4 MB E-RAM des CPC.
Im FutureOS kommen den  ersten  512  KB  eine  besondere Rolle zu, fr
jeden 16 KB Block  existiert  eine  eigene  8  Bit System-Variable. Es
handelt sich dabei um XRAM_C4,  _C5,  bis  _FF.  Es gibt 32 von ihnen.
Diese XRAM Variablen  geben  ber  Vorhandensein  und  die Nutzung des
entsprechenden E-RAMs Aufschlu. Physikalisch werden diese 16 KB E-RAM
Blcke ber den Port &7Fxx  angesprochen.  Um ein E-RAM zwischen &4000
und &7FFF einzublenden wird  einer  aus  32  Werten  an den Port &7Fxx
gesendet (&C4, &C5, &C6, &C7, &CC, &CD, ... &FF). Dieser Wert wird als
physikalische E-RAM Auswahl bezeichnet. Details  dazu sind im Handbuch
und in Datei #OS-VAR.DEU zu finden.
Um nun ein  zuvor  benutztes  E-RAM  wieder  freizugeben  ld  man die
physikalische E-RAM Auswahl in Register A und ruft anschlieend die OS
Funktion FER7F auf. Sie gibt  den  E-RAM  Block durch Anpassung seiner
XRAM Variable frei. Nach der Rckkehr der OS Funktion zeigt HL auf die
zugehrige XRAM Variable.

Bitte Beachten: Diese OS Funktion bedient  nur die ersten 512 KB E-RAM
(&7Fxx), denn nur fr diese 32 Blcke  von  je 16 KB E-RAM stehen XRAM
Variablen zur Verfgung.






















  SUCHE FREIES E-RAM IN XRAM VARIABLEN -> KONVERTIERE IN PHYS. E-RAM
  ==================================================================

Kurzbeschreibung: In den  32  XRAM_C4..FF  Variablen  wird  ein freies
bzw. als Kurzzeitspeicher (KZS) markiertes E-RAM gesucht. Anschlieend
wird daraus der physikalische E-RAM Wert ermittelt (nur erste 512 KB).

Label: KZS2E

ROM-Nummer: C

Startadresse: &C9EA

Einsprungbedingungen: Die Variablen XRAMC4-FF enthalten korrekte Werte
                        und es ist mindestens ein 16 KB Block frei/KZS.

Aussprungbedingungen: A  = Physikalische E-RAM Nummer &C4...&FF
                        B  = &7F (ermglicht direkten OUT (C),A Befehl)
                        HL = Zeiger auf zugehrige XRAMC4..FF Variable

Manipuliert: AF, B und HL

Beschreibung: OS Funktion KZS2E bedient die ersten 512 KB (Port &7Fxx)
der mglichen 4 MB E-RAM des CPC. Fr jeden 16 KB Block der ersten 512
KB E-RAM existiert eine eigene 8  Bit System-Variable. Es handelt sich
dabei um die 32 Variablen XRAM_C4, C5, C6, C7, CC, CD...FF. Diese XRAM
Variablen geben ber Vorhandensein und  die Nutzung des entsprechenden
E-RAMs Aufschlu. Physikalisch werden  diese  16  KB E-RAM Blcke ber
den Port &7Fxx angesprochen.  Um  ein  E-RAM  zwischen &4000 und &7FFF
einzublenden wird einer aus 32 Werten an den Port &7Fxx gesendet (&C4,
&C5, &C6, &C7, &CC, &CD, ...  &FF). Dieser Wert wird als physikalische
E-RAM Auswahl bezeichnet. Details dazu  sind  im Handbuch und in Datei
#OS-VAR.DEU zu finden.
Diese OS  Funktion  sucht  einen  freien  bzw.  als  Kurzzeit-Speicher
markierten 16 KB E-RAM Block in  den XRAM Variablen. Nach der Rckkehr
der OS Funktion zeigt HL  auf  die zugehrige XRAM Variable. Ausserdem
wird daraus die physikalische E-RAM Auswahl berechnet (Register A). Um
den Befehl 'OUT (C),A' zu ermlgichen wird Register B mit dem Wert &7F
geladen. Beispiel:

 CALL KZS2E ;E-RAM ermitteln
 OUT  (C),A ;und zwischen &4000 und &7FFF einblenden

Da diese OS Funktion  nicht  gesondert  prft,  ob berhaupt ein E-RAM
frei ist sollte  sich  die  Applikation  zuvor  davon  berzeugt haben
(siehe OS Funktionsn zur E-RAM Verwaltung  im Handbuch). Denn ist kein
E-RAM frei / KZS so wird ein inkorrekter Wert bergeben.

Bitte Beachten: Es MUSS  zumindest  ein  freier  E-RAM Block vorhanden
sein, bzw. mindestens ein Block als KZS markiert sein.
Diese OS Funktion arbeitet mit den  ersten  512 KB E-RAM (&7Fxx), denn
nur fr diese 32 Blcke von je  16  KB E-RAM stehen XRAM Variablen zur
Verfgung.











Suche, Reserviere untersten freien 16 KB Extension-RAM Block ab &7EC4
=====================================================================

Kurzbeschreibung: In den bis zu  3,5 MB Extension-RAM / Vergrerungs-
RAM wird der erste  /  unterste  freie  16  KB  Block  gesucht und bei
Vorhandensein als "Belegt" markiert.

Label: R_16U

ROM-Nummer: C

Startadresse: &FC0D

Einsprungbedingungen: -

Aussprungbedingungen:
Zero Flag gesetzt: Extension-RAM  NICHT  vorhanden  oder bereits ALLES
                 belegt!
Zero Flag gelscht: Extension-RAM  existiert,  ist  frei und wurde nun
                  reserviert!
                  BC = Physikalische RAM Auswahl von &7EC4 bis &78FF

Manipuliert: AF, BC, DE, HL und ein Bit innerhalb der 28 X4RAM Bytes

Beschreibung: Die OS Funktion R_16U  reserviert den ersten (untersten)
freien 16 KB Block innerhalb des Extension-RAMs.
Das Extension-RAM wird auch als  Vergrerungs-RAM bezeichnet. Es kann
bis zu 3,5  MB  gro  sein,  dabei  werden  jeweils  512  KB  ber die
Portadressen &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx  oder &78xx
adressiert. Die  Verwaltung  erfolgt  analog  zu  den  ersten  512  KB
Expansion RAM,  das  via  Portadresse  &7Fxx  angesprochen  wird.  Das
Expansion RAM wird auch als Ausbau-RAM bezeichnet.
Das Erweiterungs-RAM wird  unter  FutureOS  zwischen  &4000  und &7FFF
eingeblendet und deshalb in Blcken von 16 KB genutzt.

Nach der Rckkehr von  R_16U  zeigt  das  Zero-Flag  an,  ob ein Block
gefunden wurde:
- Ist das Zero-Flag gesetzt (Z), dann wurde entweder kein freier E-RAM
  Block gefunden, oder es ist gar kein Extension-RAM angeschlossen.
- Ist das  Zero-Flag  auf  Null  gesetzt  (NZ),  so  wurde  ein  16 KB
  Extension-RAM  Block  gefunden  und   als   "Belegt"  markiert.  Die
  Portadresse des Blocks befindet sich in Register BC. Durch einen OUT
  (C),C kann dieser 16 KB E-RAM Block sofort eingeblendet werden.

Bitte Beachten: Kehrt diese OS  Funktion  mit  gesetztem Zero Flag (Z)
zurck, so ist nicht klar ob  bereits das gesamte Ext.-RAM belegt ist,
oder ob kein Ext.-RAM (mehr) vorhanden ist.

















 Suche, Reserviere obersten freien 16 KB Extension-RAM Block ab &78FF
 ====================================================================

Kurzbeschreibung: In den bis zu  3,5 MB Extension-RAM / Vergrerungs-
RAM wird der letzte  /  oberste  freie  16  KB  Block  gesucht und bei
Vorhandensein als "Belegt" markiert.

Label: R_16D

ROM-Nummer: C

Startadresse: &FC28

Einsprungbedingungen: -

Aussprungbedingungen:
Zero Flag gesetzt: Extension-RAM  NICHT  vorhanden  oder bereits ALLES
                 belegt!
Zero Flag gelscht: Extension-RAM  existiert,  ist  frei und wurde nun
                  reserviert!
                  BC = Physikalische RAM Auswahl von &7EC4 bis &78FF

Manipuliert: AF, BC, DE, HL und ein Bit innerhalb der 28 X4RAM Bytes

Beschreibung: Die OS Funktion R_16D  reserviert den letzten (obersten)
freien 16 KB Block innerhalb des Extension-RAMs.
Das Extension-RAM wird auch als  Vergrerungs-RAM bezeichnet. Es kann
bis zu 3,5  MB  gro  sein,  dabei  werden  jeweils  512  KB  ber die
Portadressen &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx  oder &78xx
adressiert. Die  Verwaltung  erfolgt  analog  zu  den  ersten  512  KB
Expansion RAM,  das  via  Portadresse  &7Fxx  angesprochen  wird.  Das
Expansion RAM wird auch als Ausbau-RAM bezeichnet.
Das Erweiterungs-RAM wird  unter  FutureOS  zwischen  &4000  und &7FFF
eingeblendet und deshalb in Blcken von 16 KB genutzt.

Nach der Rckkehr von  R_16D  zeigt  das  Zero-Flag  an,  ob ein Block
gefunden wurde:
- Ist das Zero-Flag gesetzt (Z), dann wurde entweder kein freier E-RAM
  Block gefunden, oder es ist gar kein Extension-RAM angeschlossen.
- Ist das  Zero-Flag  auf  Null  gesetzt  (NZ),  so  wurde  ein  16 KB
  Extension-RAM  Block  gefunden  und   als   "Belegt"  markiert.  Die
  Portadresse des Blocks befindet sich in Register BC. Durch einen OUT
  (C),C kann dieser 16 KB E-RAM Block sofort eingeblendet werden.

Bitte Beachten: Kehrt diese OS  Funktion  mit  gesetztem Zero Flag (Z)
zurck, so ist nicht klar ob  bereits das gesamte Ext.-RAM belegt ist,
oder ob kein Ext.-RAM (mehr) vorhanden ist.

















Belege / Reserviere definierten 16 KB Block des 3,5 MB Extension-RAMs
=====================================================================

Kurzbeschreibung: In den bis zu  3,5 MB Extension-RAM / Vergrerungs-
RAM wird ein definierter 16 KB Block als "Belegt" markiert.

Label: R_EXT

ROM-Nummer: C

Startadresse: &FC71

Einsprungbedingungen: BC = 16 KB Extension-RAM Block &7EC4-&78FF

Aussprungbedingungen:
Zero Flag gesetzt: Extension-RAM  Block  NICHT  vorhanden oder bereits
                 belegt!
Zero Flag gelscht: Extension-RAM Block  existiert, ist frei und wurde
                  nun reserviert!

Manipuliert: AF, DE, HL und ein Bit innerhalb der 28 X4RAM Bytes

Beschreibung: Die OS Funktion R_EXT reserviert einen durch Register BC
definieten 16 KB Block innerhalb des Extension-RAMs.
Das Extension-RAM wird auch als  Vergrerungs-RAM bezeichnet. Es kann
bis zu 3,5  MB  gro  sein,  dabei  werden  jeweils  512  KB  ber die
Portadressen &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx  oder &78xx
adressiert. Die  Verwaltung  erfolgt  analog  zu  den  ersten  512  KB
Expansion RAM,  das  via  Portadresse  &7Fxx  angesprochen  wird.  Das
Expansion RAM wird auch als Ausbau-RAM bezeichnet.
Das Erweiterungs-RAM wird  unter  FutureOS  zwischen  &4000  und &7FFF
eingeblendet und deshalb in Blcken von 16 KB genutzt.

Beim Aufruf dieser Funktion muss  Register  BC die physikalische E-RAM
I/O-Adresse, also die  E-RAM-Auswahl  (&7EC4...&78FF)  enthalten. Nach
der Rckkehr von R_EXT zeigt das Zero-Flag an, ob der gewnschte E-RAM
Block reserviert werden konnte:
- Ist das Zero-Flag gesetzt  (Z),  dann  ist  der E-RAM Block entweder
  bereits als "Belegt" markiert,  oder  es  ist gar kein Extension-RAM
  angeschlossen.
- Ist das Zero-Flag auf Null gesetzt (NZ), so war der gewnschte 16 KB
  Extension-RAM Block frei. Nun ist er  als "Belegt" markiert und kann
  genutzt werden. Die Portadresse  des  Blocks befindet sich weiterhin
  in Register BC. Durch einen OUT (C),C  kann dieser 16 KB E-RAM Block
  sofort eingeblendet werden.

Bitte Beachten: Kehrt diese OS  Funktion  mit  gesetztem Zero Flag (Z)
zurck, so ist nicht klar  ob  der  Ext.-RAM Block bereits belegt ist,
oder ob er gar nicht vorhanden ist.















        16 KB Block des 3,5 MB Extension-RAM freigeben
        ==============================================

Kurzbeschreibung: Ein definierter 16 KB E-RAM Block wird in den bis zu
3,5 MB Extension-RAM / Vergrerungs-RAM freigegeben.

Label: F_EXT

ROM-Nummer: C

Startadresse: &FC5F

Einsprungbedingungen: BC = 16 KB Extension RAM Block &7EC4-&78FF

Aussprungbedingungen: Ext-RAM in X4RAM Byte 0...27 als 'frei' markiert
(? Bit geleert)

Manipuliert: AF, DE, HL und ein Bit innerhalb der 28 X4RAM Bytes

Beschreibung: Die OS Funktion F_EXT gibt  einen durch BC definieten 16
KB Block innerhalb des Extension-RAMs frei.
Das Extension-RAM wird auch als  Vergrerungs-RAM bezeichnet. Es kann
bis zu 3,5  MB  gro  sein,  dabei  werden  jeweils  512  KB  ber die
Portadressen &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx  oder &78xx
adressiert. Die  Verwaltung  erfolgt  analog  zu  den  ersten  512  KB
Expansion RAM,  das  via  Portadresse  &7Fxx  angesprochen  wird.  Das
Expansion RAM wird auch als Ausbau-RAM bezeichnet.
Das Erweiterungs-RAM wird  unter  FutureOS  zwischen  &4000  und &7FFF
eingeblendet und deshalb in Blcken von 16 KB genutzt.

Beim Aufruf dieser Funktion muss  Register  BC die physikalische E-RAM
I/O-Adresse, also die  E-RAM-Auswahl  (&7EC4...&78FF)  enthalten. Nach
der Rckkehr von F_EXT wurde  der  gewnschte E-RAM Block freigegeben,
also in den X4RAM  Bits  als  "Frei"  markiert.  Dabei spielt es keine
Rolle ob der Block existiert  oder  nicht.  Dabei  wird der Inhalt des
Registers BC (= Portadresse des Blocks) erhalten.

Bitte Beachten: Es spielt keine Rolle  ob  der selektierte 16 KB E-RAM
Block existiert.

























Testen ob 16 KB Block des 3,5 MB Extension-RAM vorhanden und frei ist
=====================================================================

Kurzbeschreibung: Ein definierter 16 KB E-RAM Block wird in den bis zu
3,5 MB  Extension-RAM  /  Vergrerungs-RAM  darauf  getestet,  ob  er
existiert und frei ist.

Label: G_EXT

ROM-Nummer: C

Startadresse: &FC66

Einsprungbedingungen: BC = 16 KB Extension RAM Block &7EC4-&78FF

Aussprungbedingungen:
Zero Flag gesetzt: Extension-RAM nicht vorhanden oder belegt!
Zero Flag gelscht: Extension-RAM existiert und ist frei!

Manipuliert: AF, DE und HL

Beschreibung: Die OS Funktion G_EXT prft,  ob ein durch BC definieter
16 KB Block innerhalb des Extension-RAMs vorhanden und frei ist.
Das Extension-RAM wird auch als  Vergrerungs-RAM bezeichnet. Es kann
bis zu 3,5  MB  gro  sein,  dabei  werden  jeweils  512  KB  ber die
Portadressen &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx  oder &78xx
adressiert. Die  Verwaltung  erfolgt  analog  zu  den  ersten  512  KB
Expansion RAM,  das  via  Portadresse  &7Fxx  angesprochen  wird.  Das
Expansion RAM wird auch als Ausbau-RAM bezeichnet.
Das Erweiterungs-RAM wird  unter  FutureOS  zwischen  &4000  und &7FFF
eingeblendet und deshalb in Blcken von 16 KB genutzt.

Beim Aufruf dieser Funktion muss  Register  BC die physikalische E-RAM
I/O-Adresse, also die  E-RAM-Auswahl  (&7EC4...&78FF)  enthalten. Nach
der Rckkehr von G_EXT wurde  der  Status  des gewnschten E-RAM Block
ermittelt. Dabei wird der Inhalt  des  Registers BC (= Portadresse des
Blocks) erhalten.
- Bei gesetztem  Zero-Flag  (Z)  ist  der  E-RAM  Block entweder nicht
  vorhanden, oder bereits als belegt.
- Ist das Zero-Flag auf  Null  gesetzt  (NZ),  so existiert der selek-
  tierte E-RAM Block und ist aktuell als "Frei" markiert. Er kann also
  von einer Applikation reserviert und benutzt werden.

Bitte Beachten: Kehrt diese OS  Funktion  mit  gesetztem Zero Flag (Z)
zurck, so ist nicht klar  ob  der  Ext.-RAM Block berhaupt vorhanden
ist, oder ob er bereits belegt ist.


















 Teste ob definierter Extension-RAM Block (&7EC4-&78FF) vorhanden ist
 ====================================================================

Kurzbeschreibung: In den bis zu  3,5 MB Extension-RAM / Vergrerungs-
RAM wird ein definierter 16 KB Block auf "Vorhandensein" getestet.

Label: T_EXT

ROM-Nummer: C

Startadresse: &FC80

Einsprungbedingungen: BC = 16 KB Extension RAM Block &7EC4-&78FF
OS Variablen X4RXE, X4RDC, X4RBA, X4R98 sind korrekt gesetzt

Aussprungbedingungen:
Zero Flag gesetzt: Extension-RAM NICHT vorhanden!
Zero Flag gelscht: Extension-RAM existiert!

Manipuliert: AF, DE und HL

Beschreibung: OS Funktion T_EXT prft,  ob  ein durch BC definieter 16
KB Block innerhalb des Extension-RAMs  vorhanden  ist. Dabei spielt es
keine Rolle, ober der Block frei oder belegt ist.
Das Extension-RAM wird auch als  Vergrerungs-RAM bezeichnet. Es kann
bis zu 3,5  MB  gro  sein,  dabei  werden  jeweils  512  KB  ber die
Portadressen &7Exx,  &7Dxx,  &7Cxx,  &7Bxx,  &7Axx,  &79xx  oder &78xx
adressiert. Die  Verwaltung  erfolgt  analog  zu  den  ersten  512  KB
Expansion RAM,  das  via  Portadresse  &7Fxx  angesprochen  wird.  Das
Expansion RAM wird auch als Ausbau-RAM bezeichnet.
Das Erweiterungs-RAM wird  unter  FutureOS  zwischen  &4000  und &7FFF
eingeblendet und deshalb in Blcken von 16 KB genutzt.

Beim Aufruf dieser Funktion muss  Register  BC die physikalische E-RAM
I/O-Adresse, also die  E-RAM-Auswahl  (&7EC4...&78FF)  enthalten. Nach
der Rckkehr von T_EXT wurde ermittelt,  ob der gewnschte E-RAM Block
berhaupt  existiert.  Also  ob   er   physikalisch  an  den  Computer
angeschlossen ist. Dabei wird  der  Inhalt  des  Registers BC (= Port-
adresse des Blocks) erhalten.
- Bei gesetztem Zero-Flag (Z) ist  der E-RAM Block nicht vorhanden, da
  am Computer keine entsprechende RAM-Erweiterung angeschlossen wurde.
- Ist das Zero-Flag auf  Null  gesetzt  (NZ),  so existiert der selek-
  tierte  E-RAM   Block.   Eine   entsprechende   RAM-Erweiterung  ist
  vorhanden. Der E-RAM Block kann also benutzt werden.

Bitte Beachten: Diese OS  Funktion  gibt  keine Auskunft darber, ober
der Block gegenwrtig als "Frei" oder "Benutzt" markiert ist.

















         Berechne Zeiger auf X4RAM Byte (0-27) und Bit-Maske
         ===================================================

Kurzbeschreibung: Eine physikalische E-RAM  I/O  Auswahl wird in einen
Zeiger auf das zugehriges Byte  (der  X4RAM  Bytes) und eine passende
Bit-Maske fr das zugehrige Bit umgerechnet.

Label: C_EXT

ROM-Nummer: C

Startadresse: &FCB1

Einsprungbedingungen: BC = 16 KB Extension RAM Block &7EC4-&78FF

Aussprungbedingungen:
 A = Bit Maske = Zeiger auf 16 KB Block-Bit = &01, &02, &04, &08, &10,
     &20, &40 oder &80
HL = Zeiger auf Belegungsbyte = X4RAM + 0...27

Manipuliert: AF, DE und HL

Beschreibung:  Beim  Aufruf  dieser  Funktion  muss  Register  BC  die
physikalische E-RAM I/O-Adresse,  also  die  E-RAM-Auswahl  (&7EC4 bis
&78FF) enthalten. Die OS  Funktion  C_EXT  berechnet  einen Zeiger auf
eines der 28 X4RAM-Bytes (in Register  HL) und bergibt eine Bit-Maske
(in Register A) um ein  Bit  in  diesem Byte zu adressieren. Innerhalb
der Verwaltung des 3,5  MB  groen  Extension-RAMs  ist  dieses Bit in
diesem Byte der  in  BC  bergebenen Extension-RAM-Auswahl zugeordnet.
Das Register BC bleibt dabei erhalten.
Das gesetzte Bit  der  Bit-Maske  kann  nun  verwendet  werden, um das
entsprechende Bit des durch HL  adressierten X4RAM-Bytes zu prfen, zu
setzen oder zu lschen. Man kann  also  den  Status dieses 16 KB E-RAM
Blocks ermitteln oder verndern.  Dabei  enthlt die Bit-Maske jeweils
nur ein gesetztes Bit: A = &01, &02, &04, &08, &10, &20, &40 oder &80.

Bitte Beachten: -



























    LADEN UND DARSTELLEN EINES BILDES (CPC 17 KB, OCP KOMPRIMIERT)
    ==============================================================

Kurzbeschreibung: Ein normales CPC  Bild  (17  KB)  oder  ein OCP Bild
werden geladen und dargestellt. Bildschirm-Format und MODE lassen sich
dynamisch einstellen (Joystick bzw. Cursor-Tasten).

Label: ZEIBI bzw. ZEIBJ

ROM-Nummer: C

Startadresse: &FD2F (ZEIBI) bzw. &FD2C (ZEIBJ)

Einsprungbedingungen: Fr beide Einsprnge  gilt, dass eine Bild-Datei
in the File-Tagging-Bytes(FTB) markiert sein muss. Die erste markierte
Datei wird benutzt.
Bei ZEIBI muss der Datei-Header dieser Datei an &B400 geladen sein
Bei ZEIBJ enthlt H das  High-Byte  (HH)  eines Zeigers auf den Header
einer Datei. Das low-Byte dieser Adresse ist immer &00: Adr. = &HH00

Aussprungbedingungen: Das Zero Flag  gibt  Aufschluss  ber den Erfolg
der Aktion. Wenn  das  Zero-Flag  gesetzt  ist  (Z=1)  wurde  das Bild
erfolgreich dargestellt.
Sollte das Zero-Flag jedoch gelscht sein  (Z  =  0), dann hat es sich
bei der Datei entweder nicht um  ein  Bild gehandelt, oder es trat ein
anderer Fehler auf.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE',  HL', IX, IY und die RAM-
Variablen REG08_0,1,5, REG16_0,  REG_PC,  L_RAM  und XRAM_??. Auerdem
die RAM Bereiche von &B000 bis &B7FF und von &BC00 bis &BC7F, der FDC,
die PIO, der PSG, die Datei-Tagging Bytes, das Video-RAM (&C000-&FFFF)
und der Motor Status.

Beschreibung: Die OS Funktion ZEIBI bzw. ZEIBJ dienen dazu ein Bild zu
landen und darzustellen. Dabei kann  man mittels Joystick bzw. Cursor-
Tasten den Bildschirm-Modus  (rechts  -  links)  bzw.  das Bildschirm-
Format (auf - ab) verndern.
Vor dem Aufruf dieser OS Funktionen  muss entweder ein Datei-Header an
&B400 geladen werden (ZEIBI) oder das High-Byte eines Datei-Headers in
Register H geladen werden (ZEIBJ). Beim Laden des Datei-Headers sollte
A mit &FF geladen sein,  um  die  FTBs  zu erhalten (siehe OS Funktion
LADEN). Der Datei-Header muss dabei  an  den Anfang einer Page (&XX00)
geladen werden.  Die  vermutliche  Bild-Datei  muss  weiterhin  in den
File-Tagging-Bytes (FTB, siehe Handbuch) als erste markiert sein.
Beim Aufruf einer der beiden  OS  Funktionen wird zuerst ermittelt, ob
es sich tatschlich um ein Bild  handelt.  Wenn ja, dann wird das Bild
geladen, ntigenfalls dekomprimiert (OCP Advanced Art Studio Bild) und
anschlieend dargestellt. Whrend er  Darstellung kann der Bildschirm-
MODE gendert werden (rechts, links).  Und  es  kann  zwischen 80 x 25
bzw. 64 x 32 Zeichen  (MODE  2  Referenz) gewechselt werden (auf, ab).
Dabei knnen sowohl Joystick  als  auch Curstor-Tasten benutzt werden.
der Druck auf Feuer 1 bzw. Copy beendet die Darstellung des Bildes.
Beide OS Funktionen setzen das Zero-Flag, wenn alles funktioniert hat.
Ist das Zero-Flag jedoch gelscht  so  trat  ein  Fehler auf (z.B. die
Datei ist gar kein Bild).

Bitte Beachten: Es muss  sich  ein  Header  ab  &B400 befinden und die
zugehrige Datei muss markiert (getagged)  sein. Ansonsten kommt es zu
einer Fehlermeldung (Zero Flag gelscht).





          GENERIERE TDxxx VARIABLEN FR SCRI etc.
          =======================================

Kurzbeschreibung: RAM-Variablen DIRIN, TDRAM,  TDHST, TDANZ, TDAKT und
TDLWK werden fr OS Funktionen wie z.B. SCRI neu gesetzt.

Label: GEN_TDV

ROM-Nummer: C

Startadresse: &FD29

Einsprungbedingungen: RAM-Variablen TURBO_A...M korrekt gesetzt

Aussprungbedingungen: RAM-Variablen DIRIN, TDRAM,  TDHST, TDANZ, TDAKT
und TDLWK neu gesetzt

Manipuliert: AF, BC, DE, HL und die RAM-Variablen DIRIN, TDRAM, TDHST,
TDANZ, TDAKT und TDLWK

Beschreibung: OS Funktionen wie SCRI,  SC_AU  oder SC_AB bentigen die
aktuellen Werte in den  System-Variablen  DIRIN,  TDRAM, TDHST, TDANZ,
TDAKT und TDLWK.
Diese OS Funktion GEN_TDV setzt diese Variablen neu.
Dazu werden die Variablen TURBO_A, _B,  _C, _D bis TURBO_M ausgelesen,
diese mssen dementsprechend korrekte Werte enthalten.
Nach dem Lschen mehrerer Dateien  bzw. dem Formatieren einer Diskette
sollte diese OS Funktion (GEN_TDV)  aufgerufen  werden. Das wird durch
das Desktop erledigt.
Fr den Anwender bzw. eine  Applikation  ist  GEN_TDV nur zu benutzen,
wenn man direkt mit Inhaltsverzeichnissen  arbeitet. In solchen Fllen
wird GEN_TDV nach dem Schreiben von Inhaltsverzeichnissen aufgerufen.

Bitte Beachten: Beim Einsprung  mssen  die  RAM-Variablen TURBO_A bis
TURBO_M korrekt gesetzt sein.
























Die jeweils aktuelle Version dieser  Datei  (API-C-DE.DOK) ist auch im
Internet erhltlich:

http://www.FutureOS.de (siehe Downloads)
