                                   Stand: 7. Juli im Jahr des CPC 2023

Datei: 'API-A-DE.TXT' (82 Seiten)

Datei zur Dokumentation aller Future Operating System Systemfunktionen
der Version .8 des OS.  Smtliche  fr den Anwender oder Programmierer
wichtige OS Funktionen des A-ROMs werden erklrt und lokalisiert.


       Alle OS Funktionen werden in folgender Form beschrieben:


1. Kurzbeschreibung: Die OS Funktion wird in einem Satz 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.


Im ROM A befindet sich die  Tastaturverwaltung, die Text- und Zeichen-
Verwaltung, Teile  der  Festplattenverwaltung,  die Druckerverwaltung.
Funktionen fr CPC-IDE, X-MASS, SYMBiFACE  II, III, CPC-Booster, Nova,
LambdaSpeak  und  MultiPlay.  Das  Dump  und  Porting-System,  die  OS
Funktionen der RTCs und vieles mehr.

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

FutureOS Homepage: http://www.FutureOS.de

           TESTE UND LESE DEN STATUS ALLER TASTEN
           ======================================

Kurzbeschreibung: Der Tastaturstatus  wird  getestet, falls irgendeine
Taste  gedrckt  ist,  wird  ihr   entsprechender  ASCII  Wert,  unter
Beachtung von SHIFT und CONTROL, bestimmt.

Label: H_ALLET

ROM-Nummer: A

Startadresse: &C02F

Einsprungbedingungen:  Die  Tastaturbersetzungstabellen  fr  Normal,
Shift, Control und Shift+Control mssen  intakt  sein. D.h. ab TAST_N,
TAST_S, TAST_C  und  TAST_SC  mssen  jehweils  80  Bytes  mit  Werten
zwischen &00 und &FE folgen. &00, &FF sollten nicht verwendet werden.

Aussprungbedingungen:
A = ASCII Wert, falls entsprechende Taste gedrckt ist.
A = &FF falls keine Taste gedrckt wird.

Manipuliert: AF, BC, DE, HL und XL.
PIO Status, Port A und C. PSG Register 14, Latch Adress Register.

Beschreibung: Diese OS Funktion ermittelt  ob eine Taste gerdckt ist.
Falls keine Taste gedrckt ist kehrt sie mit &FF im Akku zurck. Falls
aber gerade eine  Taste  gedrckt  ist  wird  auerdem  der  Shift und
Control Status der Tastatur berprft.

Es werden vier Zustnde unterschieden:
- weder Shift noch Control gedrckt,
- Shift allein gedrckt,
- Control allein gedrckt oder ...
- Shift und Control gemeinsam gerdckt.

Jeh nachdem wird aus einer von  vier Tabellen gelesen. Da die Tastatur
in einer 10 * 8 Matrix  angeordnet  ist enthlt jede der vier Tabellen
80  Bytes.  Der  aus   der   Tabelle   gelesene   Wert  wird  im  Akku
zurckgeliefert (siehe #EQU-API.DEU).


Beispiel: Einlesen der ersten gedrckten Taste

        LD   BC,(&FF01)
        OUT  (C),C              ; ROM A einblenden

SCHLEIFE        CALL H_ALLET            ; Tastatur einlesen,

        INC  A                  ; Test ob A = &FF
        JR   Z,SCHLEIFE         ; bis eine Taste gedrck wurde
        DEC  A                  ; Ausgleich des INC A

Der Akku ist nun mit dem ASCII Wert der gedrckten Taste geladen.


Bitte Beachten: Falls man einer Taste den ASCII Wert &FF zuordnet kann
man nicht mehr auf Anhieb unterscheiden ob eine Taste mit dem Wert &FF
oder gar keine Taste gedrckt  wurde.  Denn falls keine Taste gedrckt
wurde wird im Akku der Wert &FF bergeben.




        TESTE, LESE STATUS ALLER TASTEN, BEACHTE CAPS & EBENEN
        ======================================================

Kurzbeschreibung: Der Tastaturstatus  wird  getestet, falls irgendeine
Taste  gedrckt  ist,  wird  ihr   entsprechender  ASCII  Wert,  unter
Beachtung von SHIFT, CONTROL und dem CAPS-LOCK Status bestimmt.

Label: H_XALLET (Erweiterung von H_ALLET s.o.)

ROM-Nummer: A

Startadresse: &C115

Einsprungbedingungen:  Die  Tastaturbersetzungstabellen  fr  Normal,
Shift, Control und Shift+Control mssen  intakt  sein. D.h. ab TAST_N,
TAST_S, TAST_C  und  TAST_SC  mssen  jehweils  80  Bytes  mit  Werten
zwischen &00 und &FE folgen, &FF sollte nicht verwendet werden.
Die RAM-Variable CAPS mu einen korrekten Wert enthalten.

Aussprungbedingungen:
A = ASCII Wert, falls  entsprechende Taste gedrckt ist.
A = &00 und das Z-Flag ist gesetzt, falls CAPS gedrckt wurde.
A = &FF falls keine Taste gedrckt wird.

Manipuliert: AF, BC, DE, HL, XL und der  PIO Status, Port A und C. PSG
Register 14, Latch Adress Register. Auerdem wurde der Inhalt der RAM-
Variable CAPS verndert, falls die CAPS Taste gedrckt wurde.

Beschreibung: Diese OS  Funktion  ist  eine  Erweiterung  von H_ALLET.
Siehe unbedingt dort!!
Bei gedrckter Taste wird  ihr  Wert  im  Akku  bergeben. Wird gerade
keine Taste gedrckt,  dann  enthlt  der  Akku  &FF (S-Flag gesetzt).
Enthlt der  Akku  &00,  dann  wurde  CAPS  gedrckt,  und  damit  die
Tastaturebene gewechselt.

Folgende Steuerfunktionen stehen zur Verfgung:
CAPS allein =============> schaltet GROSS-SCHREIBUNG dauerhaft ein.
CAPS + SHIFT ============> schaltet SHIFT-Ebene dauerhaft ein.
CAPS + CONTROL ==========> schaltet CONTROL-Ebene dauerhaft ein.
CAPS + CONTROL + SHIFT ==> schaltet CONTROL+SHIFT-Ebene dauerhaft ein.

Drckt man dagegen eine "normale"  Taste (nicht CAPS, CONTROL, SHIFT),
dann wird ihr Wert, jeh nach Tastaturebene, im Akku bergeben.
Drckt man zu dieser Taste zustzlich  SHIFT, CONTROL oder beide, dann
wird diese  Information  mit  der  in  CAPS  enthaltenen Tastaturebene
geXORt. Gleiches hebt sich auf!

Beispiel:
Ist die SHIFT Tastaturebene aktiv, und  man drckt die Taste "s", dann
wird im  Akku  der  ASCII-Wert  von  "S"  bergeben.  Drckt  man aber
zustzlich zu "s" noch SHIFT, dann wird im Akku auch "s" bergeben, da
sich SHIFT XOR SHIFT aufhebt.
Der String-Editor STED benutzt diese  OS  Funktion,  mit ihm lt sich
der Sachverhalt leicht  nachvollziehen,  z.  B.  beim  Editieren eines
Namens.

Bitte Beachten: Falls man  einer  Taste  den  ASCII  Wert &00 oder &FF
zuordnet kann man nicht mehr  auf  Anhieb  unterscheiden ob eine Taste
(mit dem Wert &00, &FF, CAPS) bzw. keine Taste gedrckt wurde.





           TESTE OB IRGENDEINE TASTE GEDRCKT IST
           ======================================

Kurzbeschreibung:  Diese  OS  Funktion   testet  ob  irgendeine  Taste
gedrckt ist, ober nicht.

Label: TST_TS

ROM-Nummer: A

Startadresse: &C5FA

Einsprungbedingungen: -

Aussprungbedingungen:
Z-Flag gesetzt ==> Tastatur ist FREI, keine Taste gedrckt.
Z-Flag gelscht ==> irgendeine Taste wird gerade gedrckt.

Manipuliert: AF, BC, DE, L und PIO & PSG

Beschreibung: Um zu testen ob berhaupt irgendeine Taste gedrckt ist,
lt sich  diese  Routiene  verwenden.  Dabei  wird  nicht  auf  einen
Tastendruck gewartet, sondern der aktuelle Tastaturstatus ermittelt.
Beim Einsprung sind keine Parameter zu bergeben.
Nach dem Aussprung ist am  Z  Flag  zu  erkennen  ob gerade eine Taste
gedrckt ist. Ist das  Z-Flag  gesetzt  (Z,1),  dann  ist die Tastatur
frei, also wird  momentan  weder  irgendeine  Taste  noch der Joystick
bettigt. Wenn allerdings das Z-Flag  rckgesetzt  ist (NZ,0), so wird
momentan mindestens eine Taste gerdckt.
Um herauszufinden  welche  Taste  dies  ist,  kann  man  z.B.  H_ALLET
benutzen.

Bitte Beachten: Diese OS Funktion   wartet  NICHT  auf den Druck einer
Taste, sondern liefert den aktuellen Tastatur-Status.






























        HOLE WERT VON &0 BIS &F UND GIB IHN AN DEN CRT
        ==============================================

Kurzbeschreibung: Die Tastatur wird solange  abgefragt, bis eine Taste
von 0,1,2 bis  9,  eine  Taste  von  a,b,c  bis  f  oder  DEL gedrckt
wird. Der Shift und Control Status  wird dabei nicht beachtet. Ist ein
Wert von &0 bis &F gelesen  worden  so  wird dieser zustzlich auf dem
Bildschirm in Mode 2 ausgegeben,  als  ein  Zeichen das dem Zahlenwert
entspricht.

Label: A_F_0_9

ROM-Nummer: A

Startadresse: &C404

Einsprungbedingungen: Die Cursorposition C_POS mu einen gltigen Wert
haben, da sonst irgendwo ins RAM geschrieben wird. Mode 2 sollte aktiv
sein, da das Zeichen in Mode 2 ausgegeben wird.

Aussprungbedingungen: A = 0, 1,  2,  ..,  9,  &A,  &B, .., &F wenn die
entsprechende Taste von 0..9 oder  a..f  gedrckt wurde. Falls die DEL
Taste gedrckt wurde wird im Akku der Wert &FD geliefert.

Manipuliert: AF, BC, DE, HL und XL.
PIO Status, Port A und C. PSG Register 14, Latch Adress Register.

Beschreibung: Diese OS Funktion  fragt  die  Tastatur ab, bis entweder
die DEL Taste oder eine Taste mit der  Beschriftung 0 bis 9 oder A bis
F gedrckt wurde. Falls die DEL  Taste gedrckt wurde liefert der Akku
das Ergebniss &FD. Falls es eine Taste  im  Bereich von 0 bis 9 oder A
bis F war  so   wird  der  entsprechende  Wert  in  den  Akku geladen.
Zustzlich wird auf dem Bildschirm an der aktuellen Cursorposition das
zugehrige ASCII Zeichen ausgegeben. So bekommt der Akku z.B. den Wert
8 wenn  man  die  8-Taste  gedrckt  hat,  und  es  erscheint  auf dem
Bildschirm eine Acht. Drckt man z.B  die  C-Taste, dann wird der Akku
auf &C gesetzt und zustzlich der groe Buchstabe C auf dem Bildschirm
ausgegeben. Diese Funktion wird  dazu  verwendet um hexadezimale Werte
von  der  Tastatur  einzulesen.  Diese  werden  gleichzeitig  auf  dem
Bildschirm dargestellt. Es wird eine MODE 2 Ausgabefunktion verwendet.

Bitte Beachten: Die Funktion kehrt erst nach einem Tastendruck zurck.
Wird sie aufgerufen, und man drckt danach  keine Taste von 0 bis 9, A
bis F oder DEL, dann kehrt diese Funktion auch nicht mehr zurck.
Das Zeichen das auf dem Bildschirm dargestellt wird wird mit der Modus
2 Zeichenausgabe ausgegeben. Diese OS Funktion  sollte man also nur im
Modus 2 verwenden.

















                WARTE BIS TASTATUR FREI IST
                ===========================

Kurzbeschreibung: Warten bis keine Taste mehr gedrckt wird.

Label: WART_TS

ROM-Nummer: A

Startadresse: &C4DB

Einsprungbedingungen: -

Aussprungbedingungen: kehrt erst zurck wenn keine Taste gedrckt ist.

Manipuliert: AF, BC, DE und L.
PIO Status, Port A und C. PSG Register 14, Latch Adress Register.

Beschreibung: Diese OS Funktion  testet  die  gesammte Tastatur, beide
Joysticks und Mausanschlu (Joystick  kompatible  Muse) auf gedrckte
Tasten. Eine Rckkehr erfolgt erst  machdem  keine Taste mehr gedrckt
wird. Vom anologen Joystick-Port werden  nur die Feuerknpfe getestet.
Verwendung findet diese OS Funktion  z.B. dann, wenn man sicherstellen
will, da eine zuvor gedrckte Taste nun nicht mehr gedrckt wird.

Bitte Beachten: Wird  irgendeine  Taste  stndig  gedrckt, dann kehrt
diese OS Funktion nicht  mehr  zurck,  bis  sich  dies ndert. Einige
Erweiterungen am Joystickport knnen  u.  U.  einige  Signale fest auf
gedrckt legen, in diesem  Fall  sollte  man  diese  OS Funktion nicht
verwenden, da ja so eine Rckkehr nicht  mehr mglich ist. Es sei denn
durch das Entfernen jener  Erweiterung.  Die  Maus  aus dem Schneider-
Magazin  bzw.  Computer  Partner  setzt   z.   B.  einen  Eingang  des
Joystickports fest auf gedrckt. Mit  dieser  Maus sollte man diese OS
Funktion besser nicht benutzen.






























      WARTEN BIS DIE TASTATUR FREI- ODER DIE ZEIT ABGELAUFEN IST
      ==========================================================

Kurzbeschreibung:  Diese  OS  Funktion   dient   dazu  eine  bestimmte
Verzgerungsszeit verstreichen  zu  lassen,  solange  irgendeine Taste
gedrckt ist. Bei freigegebener Tastatur kehrt sie sofort zurck.

Label: XWART

ROM-Nummer: A

Startadresse: &C671

Einsprungbedingungen: Es sind folgende RAM-Variablen zu setzen:

VZ_MOD = VerZgerungsmodus (0=Anfangs VZ /// 1=Folge VZ) normal auf 0.
VZ_AG  = VerZgerung Anfang Generell (Wiederladewert) von &0000.&FFFF.
VZ_AA  = VerZgerung Anfang Aktuelle Restzeit von &0000 bis &FFFF.
VZ_FG  = VerZgerung Folge Generell (Wiederladewert) von &0000..&FFFF.
VZ_FA  = VerZgerung Folge Aktuelle Restzeit von &0000 bis &FFFF.

Aussprungbedingungen: Diese OS Funktion  kehrt  erst  dann zurck wenn
keine Taste mehr gedrckt  ist,  oder  wenn  die vorgegebene Wartezeit
abgelaufen ist.

Manipuliert: AF, BC, DE,  HL,  die  RAM-Variablen VZ_MOD, VZ_AA, VZ_FA
und der Status der PIO, und des PSG.

Beschreibung:  Diese  OS   Funktion   stellt   eine  Kombination  dar.
Einerseits wartet  sie  darauf,  da  die  Tastatur  freigegeben wird,
andererseits kehrt sie  sptestens  dann  zurck  wenn  die jehweilige
Wartezeit abgelaufen ist. Bei der Wartezeit unterscheidet man zwischen
Anfangsverzgerung    und    Folgeverzgerung.     Dabei    ist    die
Anfangsverzgerung die Zeit, die gewartet wird, wenn diese OS Funktion
bei gedrckter Taste das erste  Mal  aufgerufen  wird. Dagegen ist die
Folgeverzgerung die Zeit  die  bei  jeder  weiteren  Benutzung der OS
Funktion gewartet wird, vorrausgesetzt  es  ist  noch immer irgendeine
Taste gedrckt. Lt man zwischendurch die Taste los, dann wird wieder
mit der Anfangsverzgerung begonnen.  Wird  zu  irgend einem Zeitpunkt
keine Taste gedrckt, dann kehrt die OS Funktion sofort zurck.
Vor Aufruf dieser OS Funktion sind fnf Variablen mit Daten zu fllen,
dies wird aber  normalerweise  vom  OS  erledigt.  Man  kann die Werte
allerdings   ndern.   Die   8   Bit    Variable   VZ_MOD   gibt   den
Verzgerungsmodus an. Normalerweise  wird  sie  auf  &00 gesetzt, also
Anfangs VZ. Will man ohne  spezielle  Anfangs  VZ arbeiten, dann setzt
man sie auf einen Wert grer &00.
Die 16 Bit Variablen  VZ_AG  und  VZ_AA  (s.o.)  knnen einen Wert von
&0000 bis &FFFF annehmen, mssen  aber  auf  den gleichen Wert gesetzt
werden. In ihnen wird die Anfangsverzgerung gespeichert.
Auch die beiden 16 Bit  Variablen  VZ_FG  und  VZ_FA mssen den selben
Wert  zwischen   &0000   und   &FFFF   beinhalten,   sie   geben   die
Folgeverzgerung an.
Standartmig sollte man die fnf Variablen folgendermaen laden:

VZ_MOD =   &00
VZ_AG  = &1000
VZ_AA  = &1000
VZ_FG  = &0200
VZ_FA  = &0200

Bitte Beachten: Die VZ_ Variablen werden  vom OS gesetzt, man kann sie
aber anpassen. Dies hat Einfluss auf die Reaktion der Tastatur.


        TESTEN EINER TASTE ODER TASTENKOMBINATION
        =========================================

Kurzbeschreibung: Schneller Test einer  bestimmten Taste oder mehrerer
Tasten in einer Tastaturreihe der Tastaturmatrix.

Label: HOLE1TS

ROM-Nummer: A

Startadresse: &C561

Einsprungbedingungen:
H = Nummer der Tastaturreihe von 0 bis 9, wobei H keinesfalls den Wert
63 = &3F bersteigen darf.
L =  Maske  fr  die  zu  testende  Taste  oder  fr  die  zu testende
Tastenkombination innerhalb der Tastaturreihe, die durch H addressiert
wird. Hierbei symbolisiert jedes gesetzte Bit eine zu testende Taste.

Aussprungbedingungen: Der Akku hat den Wert  &00 und das Zero Flag ist
gesetzt  wenn  die   entsprechende   Taste,   oder   alle  Tasten  der
Tastenkombination gedrckt waren.
Ist der Akku ungleich  &00  und  das  Zero  Flag  gelscht, dann wurde
entweder die Taste nicht gedrckt,  oder  es  wurden nicht alle Tasten
der Tastenkombination gedrckt.

Manipuliert: AF, BC, DE und H
PIO Status, Port A und C. PSG Register 14, Latch Adress Register.

Beschreibung: Diese Funktion ermglicht es sehr schnell eine bestimmte
Taste zu testen. Anhand des Akkus und des Zero Flags kann man erkennen
ob die gewhlte Taste  zu  diesem  Zeitpunkt  gedrckt  wurde. Fr die
Verwendung dieser OS  Funktion  ist  es  erforderlich  den  Aufbau der
Tastaturmatrix im CPC zu kennen. Denn man teilt der Funktion lediglich
mit in welcher der 10 Reihen sich  die Taste befindet (Z80 Register H)
und welche der acht  Tasten  der  entsprechenden Reihe getestet werden
soll.
Es ist durchaus mglich in dieser 8-Bit  Maske mehr als nur ein Bit zu
setzen.  Es  wird  dann  eine  Kombination  von  bis  zu  acht  Tasten
abgefragt. Man erhlt allerdings nur dann die Meldung "gedrckt", wenn
alle Tasten gedrckt wurden.

Beispiel:

Will man z.B. die Taste mit dem  "S" testen, dann ld man das Register
H mit &07, da sich die  Taste  "S"  in dieser Matrixreihe der Tastatur
befindet. Die Taste S wird  innerhalb  der siebten Tastaturreihe durch
das 5. Bit, also Bit 4  dargestellt  man  ld  also das Register L mit
&10. &10 sieht im Binrsystem so aus: 0001 0000.
Will man mit der Taste  "S"  gleichzeitig  auch  die Taste "D" testen,
dann ld  man  das  Register  L  einfach  mit  dem  Wert  &30,  was im
Binrsystem fr 0011 0000 steht.  Es  wird  also  fr jede zu prfende
Taste ein Bit gesetzt.

Bitte Beachten: Beim Testen  einer  Tastenkombination  ist zu beachten
das alle Tasten dieser Kombination innerhalb EINER der 10 Matrixreihen
der Tastatur liegen.  Tasten  verschiedener  Matrixreihen knnen nicht
auf einmal getestet werden.






           KOMPLETTEN TASTATURSTATUS INS RAM LESEN
           =======================================

Kurzbeschreibung:  Alle  80  Tasten  werden   eingelesen  und  im  RAM
in 10 Bytes abgespeichert.

Label: HOLETST

ROM-Nummer: A

Startadresse: &C585

Einsprungbedingungen:  HL  =  Zeiger   auf   einen  10   Bytes  groen
Datenbereich ab dem die Tastaturinformation abzulegen ist.

Aussprungbedingungen: Die  10  Bytes  ab  HL  sind  mit  den aktuellen
Tastaturinformationen gefllt.  Achtung:  Eine  gedrckte  Taste  wird
durch ein gelschtes Bit symbolisiert. Steht  ein Bit auf 1 dann wurde
die zugehrige Taste nicht gedrckt.

Manipuliert: AF, BC, DE und HL
PIO Status, Port A und C. PSG Register 14, Latch Adress Register.

Beschreibung: Diese OS Funktion liet die komplette Tastaturmatrix ins
RAM. Da diese Matrix aus 10 Reihen zu acht Bit besteht werden 10 Bytes
an RAM bentigt, um die Daten  aufzunehmen.  Jede Taste wird durch ein
eigenes  Bit  symbolisiert.  In  die   anfangs  durch  HL  adressierte
Speicherstelle wird die Tastaturreihe 0 eingelesen, in HL + 1 wird die
Reihe Nr. 1 eingelesen, usw.  bis  schleilich  in  HL  + 9 die neunte
Reihe eingelesen wird.

Bitte Beachten: Da hier nur die Hardware eingelesen wird und die Daten
nicht bearbeitet werden stellt hier  ein gelschtes Bit eine gedrckte
Taste dar und  umgekehrt.  Ist  ein  Bit  also  gesetzt,  so wurde die
entsprechende Taste NICHT gedrckt.





























        ABFRAGE DER CURSORTASTEN UND DER COPY-TASTE
        ===========================================

Kurzbeschreibung: Diese OS Funktion gibt  dem Anwender die Mglichkeit
speziell die vier  Cursortasten  (=  Pfeiltasten)  und  die Copy-Taste
abzufragen.

Label: H_CURA

ROM-Nummer: A

Startadresse: &C250

Einsprungbedingungen: -

Aussprungbedingungen: Der Tastenstatus der  fnf  Tasten  wird im Akku
zurckgegeben. Die Bits haben folgende Bedeutung:

A = (nur Bits 0..4 relevant)

Bit 0: Pfeil AUF
Bit 1: Pfeil RECHTS
Bit 2: Pfeil AB
Bit 3: Pfeil LINKS
Bit 4: COPY

Manipuliert: AF, BC, DE, L und PIO, PSG

Beschreibung: Diese OS Funktion dient dazu gleichzeitig den Status von
allen vier Cursortasten und der Copy-Taste einzulesen.
Es gibt keine zu bergebenden  Parameter,  die  PIO und der PSG werden
entsprechend programmiert.
Diese Funktion bergibt den Tastaturstatus im Akku, dabei sind nur dir
unteren fnf  Bits  0..4  relevant.  Die  Bits  liefern  von  0  bis 4
folgenden  Tasten:  AUF,  RECHTS,  AB,   LINKS  und  COPY.  Wobei  ein
gelschtes Bit eine gedrckte Taste symbolisiert.

Bitte beachten: Achtung,  ein  Null-Bit  symbolisiert  eine  gedrckte
Taste. Ist ein Bit gesetzt, dann ist die Taste NICHT gedrckt.

























        ABFRAGE DER CURSORTASTEN, COPY UND KLEINES ENTER
        ================================================

Kurzbeschreibung: Diese OS Funktion gibt Aufschlu ber den Status der
vier Cursortasten, ber Copy, Enter, 'f.' und 'f1' Taste.

Label: H_CCE

ROM-Nummer: A

Startadresse: &C284

Einsprungbedingungen: -

Aussprungbedingungen: A = Tastaturstatus (Bits 0..5 relevant)
Bit 0: Pfeil AUF
Bit 1: Pfeil AB
Bit 2: Pfeil LINKS
Bit 3: Pfeil RECHTS
Bit 4: COPY
Bit 5: Enter
Bit 6: 'f.' Taste
Bit 7: 'f1' Taste

Manipuliert: AF, BC, DE, L und PIO, PSG

Beschreibung: Aufgabe dieser OS Funktion ist es den Tastaturstatus von
den vier Cursortasten, der Copy-Taste, der kleinen Enter-Taste und der
'f.' und 'f1' Tasten zu ermitteln.
Die Information wird im Akku  geliefert.  Die  Bits  von 0 bis 7 haben
folgende Bedeutung AUF, AB, LINKS, RECHTS, COPY, Enter, 'f.' und 'f1'.
Ein gelschtes Bit symbolisiert eine gedrckte Taste.
Diese OS Funktion ist zum Joystick  kompatibel, d. h. die Cursortasten
vertreten die vier Richtungen, in  die  man den Joystick bewegen kann.
Die Copy Taste emuliert Feuer 0 und das kleine Enter vertritt Feuer 1.
Diese Abfrage und die  Joystickabfrage  mittels  der OS Funktion H_JOY
sind also bitkompatibel.

Bitte beachten: Vorsicht, ist im Akku  ein  Bit gelscht, dann ist die
entsprechende Taste gerade  gedrckt.  Wenn  die  Taste nicht bettigt
wird, dann ist das zugehrige Bit gesetzt.























        CURSORTASTEN, COPY UND ESC EINLESEN UND AUSWERTEN
        =================================================

Kurzbeschreibung: Die Cursortasten und die  Tasten Copy und ESC werden
eingelesen. Bei ESC erfolgt  eine  Spezialbehandlung.  Sonst wird in A
ein Byte bergeben aus dem sich der Tastaturstatus ablesen lt.

Label: CUR_CPY

ROM-Nummer: A

Startadresse: &C6C0

Einsprungbedingungen: REG16_1 (System RAM Variable)  mu gleich dem SP
Register sein. Oder REG16_1 mu einen neuen Wert fr SP enthalten, der
bei Druck von ESC in SP geladen werden kann.

Aussprungbedingungen: Jeh nach gedrckter Taste  wird im Akku ein Wert
bergeben.

Cursor aufwrts ==> A = &F0
Cursor  abwrts ==> A = &F1
Cursor    links ==> A = &F2
Cursor   rechts ==> A = &F3
Copy   gedrckt ==> A = &A4

Falls ESC gedrckt wird, so wird  der  Wert  aus REG16_1 in SP geladen
und der Akku ist gelscht.

Manipuliert: AF, BC, DE und SP falls ESC gedrckt wurde.

Beschreibung: Diese OS  Funktion  liet  den  Tastaturstatus  der vier
Cussortasten, der Copy und  der  ESC  Taste  ein.  Falls eine der vier
Cursortasten oder die Copy Taste gedrckt  wird,  so wird der Akku mit
einem der folgenden Bytes geladen.

Cursor aufwrts gedrckt: .. Der Akku bekommt den Wert: &F0
Cursor abwrts gedrckt: ... Der Akku bekommt den Wert: &F1
Cursor links gedrckt: ..... Der Akku bekommt den Wert: &F2
Cursor rechts gedrckt: .... Der Akku bekommt den Wert: &F3
Copy gedrckt: ............. Der Akku bekommt den Wert: &A4

Wird allerdings die  ESCape  Taste  gedrckt  so  verhlt  sich die OS
Funktion vollkommen anders: Der  Akku  wird  gelscht  und aus der RAM
Variable  REG16_1  wird  ein  16  Bit  Wort  gelesen,  und  damit  der
Stackpointer SP geladen. Wird hier ein  falscher Wert benutzt, so wird
das System nach dem  nchsten  RET  Befehl  chancenlos abstrtzen. Der
Datentransfer von REG16_1  zu  SP  bietet  aber  folgende mchtige und
vielseitige Mglichkeit. An irgendeiner Stelle  des Programms wird der
Wert des Stackpointers  SP  in  die  Variable  REG16_1 geladen. Danach
knnen  nun  mehtere  CALL  Befehle   folgen,   d.h.  der  Stack  wird
manipuliert. Wird nun beim  Aufruf  dieser  OS  Funktion die ESC Taste
gedrckt, so wird der alte  Wert des Stackpointers wieder hergestellt,
und ein RET Befehl gegeben. Diese OS Funktion kehrt also bei ESC dahin
zurck wovon zuvor die Sicherung des Stacks durch einen Call ausgelst
wurde. Vor der Verwendung dieser OS  Funktion sollte man damit einzeln
experimentieren, und vor der  Sicherung  des  Stackpointers (s.o.) mu
mindestens ein CALL Befehl gegeben werden. Da bei ESC nach eben diesen
CALL zurckgekehrt wird.

Nchste Seite unbedingt weiterlesen !!!



Bitte Beachten: Ist die RAM Variable REG16_1 micht mit dem selben Wert
wie das Register SP, oder einem anderem  Wert  der auf ein 2 Byte Wort
innerhalb  des  Stacks  zeigt,   geladen,   so   wird  dies  zu  einem
Systemabsturtz fhren. Will man nur  die Cursortasten und Copy testen,
dann sollte man anstatt  dieser  OS  Funktion  die  H_CURA OS Funktion
verwenden. Trozdem ist diese  OS  Funktion sehr vielseitig einsetzbar,
wenn das Programm beim Druck  von  ESC  an irgend einer anderen Stelle
fortgesetzt werden soll.
Diese OS Funktion wird von der F_PORT Monitorfunktion benutzt.























































                ABFRAGE BEIDER DIGITAL-JOYSTICKS
                ================================

Kurzbeschreibung: Der aktuelle Status  beider digitalen Joysticks wird
ermittelt und in je einem Register geliefert.

Label: H_JOY

ROM-Nummer: A

Startadresse: &C2CC

Einsprungbedingungen: -

Aussprungbedingungen: Der Status der beiden Joysticks  wird in H und L
zurckgegeben. Nur Bits 0..5 relevant.

L = Joystick 0
H = Joystick 1

Die Bits haben folgende Bedeutung,  ein geleertes Bit entspricht einer
gedrckten Taste.

Bit 0: Joy 0 bzw. 1 AUF
Bit 1: Joy 0 bzw. 1 AB
Bit 2: Joy 0 bzw. 1 LINKS
Bit 3: Joy 0 bzw. 1 RECHTS
Bit 4: Feuer 0
Bit 5: Feuer 1
Bit 6: Feuer 2 - nur bei CPC old Generation, oder bei Atari ST Maus.

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

Beschreibung: Will man Informationen  ber  den  Status der Joysticks,
dann tritt diese OS  Funktion  in  Aktion.  Es  werden beide digitalen
Joysticks abgefragt. Die Daten  den  Joystick  0  werden im L Register
abgelegt, im H Register  befinden  sich  dann  die  Daten des zweitern
Joysticks. Beide Register haben  den  selben  Aufbau, es sind jehweils
nur die sechs unteren  Bits  relevant.  Die  Bits  0..5 haben folgende
Bedeutung: AUF, AB, LINKS, RECHTS, FEUER  0  und FEUER 1. Wobei je ein
GELSCHTES Bit eine GEDRCKTE  Taste  symbolisiert. Diese Funktion ist
zur OS Funktion H_CCE bitkompatibel (siehe dort).

Bitte beachten: Ein gesetztes  Bit  symbolisiert  eine NICHT gedrckte
Taste. Die 3. Feuertaste, 7. Bit wird bei den alten CPCs mitgeliefert,
sollte aber nicht verwendet werden, da  die  CPCs der Plus Serie, dank
des ASIC Bausteins  keinen  solchen  Anschluss  mehr  haben.  Die Plus
Besitzer knnen sich dieses  Bit  aber  sehr einfach selber dazulten,
und sind dann kompatibel.















 ABFRAGE VON DIGITAL-JOYSTICKS, MULTIPLAY, CURSORTASTEN, COPY & ENTER
 ====================================================================

Kurzbeschreibung: Der aktuelle Status beider digitalen Joysticks, bzw.
der beiden Joysticks am  MultiPlay,  bzw.  der  Cursortasten und Copy,
sowie des kleinen Enter wird ermittelt und im Akku bergeben.

Label: H_JC

ROM-Nummer: A

Startadresse: &FE6B

Einsprungbedingungen: -

Aussprungbedingungen: Der Akku enthlt die Tasten-Bits des ersten, des
zweiten Joysticks, oder  der  Cursortasten  mit  Copy  und dem kleinen
Enter. Diese OS Funktion ist Bit-kompatibel zu H_CCE und zu H_JOY.
Ist ein MultiPlay angeschlossen, so werden beide Joysticks abgefragt.

Die Bits haben folgende Bedeutung,  ein geleertes Bit entspricht einer
gedrckten Taste / aktivierten Eingabe.

Bit 0: Aufwrts
Bit 1: Abwrts
Bit 2: Links
Bit 3: Rechts
Bit 4: Feuer 0
Bit 5: Feuer 1
Bit 6: Feuer 2 - nur bei CPC6128, Atari ST Maus oder MultiPlay

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

Beschreibung: Mit dieser  OS  Funktion  lt  sich  der  Status beider
Joysticks am Computer, beider  Joysticks  am  MultiPlay und der Status
der Cursortasten mit Copy  und  dem  kleinen  Enter durch einen Aufruf
ermitteln. Der  Anwender  kann  also  mit  einem  der  vier  mglichen
digitalen  Joysticks,  oder  mit  den  Cursortasten  +  Copy  +  Enter
arbeiten. Diese OS Funktion fragt alle fnf Eingabemglichkeiten ab.
Allerdings existiert in der Abfragereihenfolge eine Prioritt: Oberste
Prioritt hat Joystick 0, dann kommt  Joystick 1, dann Joysticks 0 und
1 am MultiPlay, dann die Cursortasten  mit Copy und dem kleinen Enter.
Die Steuersignale von Joystick 0 so z.B. also denen von Joystick 1 und
Joystick 0 und 1 des MultiPlay, sowie der Tastatur berlegen etc.
Der Eingabe-Status wird im Akku  bergeben.  Es  sind jehweils nur die
sieben unteren Bits relevant. Die  Bits 0..6 haben folgende Bedeutung:
AUF, AB, LINKS, RECHTS, FEUER 0, 1  und 2. Wobei je ein GELSCHTES Bit
eine GEDRCKTE Taste symbolisiert.  Diese  OS  Funktion  ist zu den OS
Funktionen H_CCE und H_JOY bitkompatibel (siehe dort).

Bitte beachten: Ein gesetztes  Bit  symbolisiert  eine NICHT gedrckte
Taste. Die 3. Feuertaste, 7. Bit wird bei den alten CPCs mitgeliefert,
sowie bei der MultiPlay  Erweiterung,  nicht  aber  beim 6128plus. Die
Plus Serie hat keinen  solchen  Anschluss  mehr,  da  an den Joystick-
Anschlssen eine Diode gespaart  wurde.  Plus  User knnen sich dieses
Bit aber sehr einfach selber dazulten, und sind dann kompatibel.








  ABFRAGE VON MAUS, JOYSTICKS, MULTIPLAY, CURSORTASTEN, COPY & ENTER
  ==================================================================

Kurzbeschreibung: Der  aktuelle  Status  einer  angeschlossenen  Maus,
beider digitaler Joysticks, beider  Joysticks  am  MultiPlay, bzw. der
Cursortasten, Copy und des kleinen  Enters  wird ermittelt und im Akku
bergeben.

Label: H_JCM

ROM-Nummer: A

Startadresse: &FD77

Einsprungbedingungen: ROM A Variable KOBYB muss korrekt gesetzt sein

Aussprungbedingungen: Der Akku enthlt die  Daten der Maus, des ersten
oder zweiten Joysticks (CPC oder MultiPlay), oder der Cursortasten mit
Copy und dem kleinen Enter.  Diese  OS  Funktion ist Bit-kompatibel zu
H_JC, H_CCE und zu H_JOY.

Die Bits haben folgende Bedeutung,  ein geleertes Bit entspricht einer
gedrckten Taste / aktivierten Eingabe.

Bit 0: Aufwrts
Bit 1: Abwrts
Bit 2: Links
Bit 3: Rechts
Bit 4: Feuer 0
Bit 5: Feuer 1
Bit 6: Feuer 2

Manipuliert: AF, BC, DE, HL, IY, PIO und PSG

Beschreibung: Mit dieser OS Funktion  lt  sich der Status einer Maus
(SF2,  SF3  und  MultiPlay),  beider  Joysticks  am  Computer,  beider
Joysticks am MultiPlay und der  Cursortasten  mit Copy und dem kleinen
Enter durch einen Aufruf ermitteln.  Der  Anwender kann also mit Maus,
einem der vier mglichen  digitalen  Joysticks,  oder  mit den Cursor-
Tasten  +  Copy  +  Enter  arbeiten.  Diese  OS  Funktion  fragt  alle
Eingabemglichkeiten ab.
Allerdings existiert in der Abfragereihenfolge eine Prioritt: Oberste
Prioritt hat die Maus, dann Joystick 0  und 1 des CPC, dann Joysticks
0 und 1 am MultiPlay. Und  zuletzt  die  Cursortasten mit Copy und dem
kleinen Enter.
Der Eingabe-Status wird im Akku  bergeben.  Es  sind jehweils nur die
sieben unteren Bits relevant. Die Bits 0..6 haben folgende Bedeutung:
AUF, AB, LINKS, RECHTS, FEUER 0, 1  und 2. Wobei je ein GELSCHTES Bit
eine GEDRCKTE Taste symbolisiert.  Diese  OS  Funktion  ist zu den OS
Funktionen H_JC, H_CCE und H_JOY bitkompatibel (siehe dort).

Bitte beachten: Ein gesetztes  Bit  symbolisiert  eine NICHT gedrckte
Taste. Die 3. Feuertaste  (7.  Bit)  wird  bei  der  Maus und den CPCs
mitgeliefert, sowie bei  der  MultiPlay  Erweiterung.  Nicht aber beim
6128plus. Die Plus Serie hat keinen  solchen Anschluss mehr, da an den
Joystick-Anschlssen eine Diode gespaart wurde.  Plus User knnen sich
dieses  Bit  aber  sehr  einfach   selber  dazulten,  und  sind  dann
kompatibel.






           TESTE OB MultiPlay JOYSTICKS FREI SIND
           ======================================

Kurzbeschreibung: Diese OS Funktion tested ob die beiden Joysticks des
MultiPlay frei sind oder  ob  gerade  eine  Eingabe erfolgt. Es werden
beide Ports des MP abgefragt.

Label: TMPA

ROM-Nummer: A

Startadresse: &D9E6

Einsprungbedingungen: ROM A Variable KOBYB muss korrekt gesetzt sein

Aussprungbedingungen: Das Zero Flag  gibt  Aufschluss  ber den Status
beider MultiPlay Joysticks. Und Register BC enthlt den Wert &F991.

Z-Flag gesetzt: Es ist entweder  gar kein MultiPlay angeschlossen oder
           es  erfolgt  gerade  keine   Eingabe  ber  einen  der
           beiden Joysticks.

Z-Flag geleert: Es erfolgt gerade  eine  Eingabe ber einen oder beide
           der MultiPlay Joysticks.

Manipuliert: AF und BC

Beschreibung: Diese OS  Funktion  erlaubt  es  den  Status  der beiden
MultiPlay Joysticks abzufragen.
Zuerst wird das BIT 3  des Konfigurations-Bytes KF_MED abgefragt. Wenn
dieses Bit geleert  ist,  dann  ist  kein  MultiPlay angeschlossen und
diese Funktion kehrt mit gesetztem Zero-Flag zurck.
Falls ein MultiPlay angeschlossen ist werden beide Joysticks einglesen
und getestet. Falls gerade keine  Eingabe erfolgt kehrt TMPA ebenfalls
mit gesetztem Zero-Flag zurck.
Sollte das Zero-Flag jedoch geleert sein, so erfolgt gerade irgendeine
Eingabe ber einen oder beide Joysticks des MultiPlay.

Bitte beachten: Bei  gesetztem  Zero-Flag  kann  man  nicht  wissen ob
entweder gar kein MultiPlay  angeschlossen  ist  oder  ob gerade keine
Eingabe mittels Joystick erfolgt. Muse werden NICHT getestet.

Es existiert keine gesonderte OS  Funktion  zum Einlesen der MultiPlay
Joysticks, da man einfach nur die entsprechenden Ports einlesen muss:

Erster Joystick:        LD BC,&F990 ;Port des 1. Joysticks
                IN A,(C)

Zweiter Joystick:       LD BC,&F991 ;Port des 2. Joysticks
                IN A,(C)

Dabei symbolisiert ein gesetztes Bit eine gedrckte Taste / Richtung.
(Bei Tastatur und Joysticks des CPC  ist  es genau umgekehrt, beim CPC
symbolisiert ein gelschtes Bit eine gedrckte Taste).

BIT 0: Aufwrts
BIT 1: Abwrts
BIT 2: Links
BIT 3: Rechts
BIT 4: Erster Feuerknopf
BIT 5: Zweiter Feuerknopf
BIT 6: Dritter Feuerknopf
BIT 7: 0

                ABFRAGE VON CONTROL UND SHIFT
                =============================

Kurzbeschreibung: Die Tasten CONTROL und SHIFT werden auf ihren Status
hin untersucht.

Label: H_CS

ROM-Nummer: A

Startadresse: &C2F7

Einsprungbedingungen: -

Aussprungbedingungen:
A = Reihe 2 der Tastaturmatrix
Bit 5: SHIFT
Bit 7: CONTROL

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

Beschreibung: Um  den  Status  der  CONTROL  und  der  SHIFT  Taste zu
bestimmen, ruft man diese OS  Funktion  auf.  Sie  liefert im Akku die
gesammte Reihe 2 der Tastaturmatrix.
Die SHIFT-Taste  wird  durch  Bit  5  reprsentiert,  und  das  Bit  7
symbolisiert die CONTROL Taste. Die Bits  0..4 und Bit 6 symbolisieren
andere Tasten, und sind somit unbestimmt.

Bitte beachten:
GELEERTES BIT ==> GEDRCKTE TASTE
GESETZTES BIT ==> TASTE NICHT GEDRCKT

































                STEUERCODE-TABELLEN INS RAM KOPIEREN
                ====================================

Kurzbeschreibung: Die Steuercode-Tabellen fr  Mode 1 und 2 werden ins
RAM kopiert.

Label: CSTI

ROM-Nummer: A

Startadresse: &C71C

Einsprungbedingungen: -

Aussprungbedingungen: 64 Byte  Steuercode-Tabellen  ab  &B800 (MODE 1)
bzw. &B900 (MODE 2) wurden im RAM installiert.

Manipuliert: BC, DE, HL und &B800 .. &B83F ,  &B900 .. &B93F (je incl)

Beschreibung: Im  FutureOS  existieren  fr  Mode  1  und  fr  Mode 2
getrennte Zeichen-Ausgabe-OS Funktionen. Jeder  Mode hat seine eigenen
Steuerzeichen (siehe  dort!).  Fr  jedes  Steuerzeichen  existieren 2
Bytes im RAM, die auf die  aufzufufende  OS Funktion zeigen, so ist es
sehr einfach eigene Steuerzeichen einzubinden (siehe Handbuch!).
Ab &B800 bis incl. &B83F befinden  sich  die Sprungadressen der Mode 1
Zeichenausgabe. Analog  befinden  sich  von  &B900  bis  &B93F  die 32
Sprungadressen fr Mode 2.
Als Steuerzeichen sind grundstzlich die  ersten 32 Zeichen definiert,
jedes Steuerzeichen hat seine 2-Byte  Zieladresse. So werden fr jeden
Mode 64 Bytes belegt.
Nun, diese OS Funktion  macht  nichts  anderes  als die vordefinierten
Steuerzeichen-Tabellen aus dem ROM A  ins  RAM zu kopieren, somit sind
den Steuerzeichen definierte Funktionen zugeordnet.
Hat man  die  Tabellen  selber  verndert,  z.B.  um  eine  Datei  mit
speziellem  Format  anzuschauen,  dann  kann  diese  OS  Funktion  die
Tabellen wieder restaurieren.

Bitte Beachten: Diese OS Funktion  berschreibt  alle  per Hand genderten
nderungen in den Steuerzeichen-Tabellen.

























        AUSGABE EINES ZEICHENS IN MODE 1 MIT PEN 01
        ===========================================

Kurzbeschreibung: Ein  einzelnes  Zeichen  wird  im  Modus  1  an  der
aktuellen Cursorposition ausgegeben. Zuvor  wird die Cursorposition um
2 erhht. Es wird mit Pen 01 gezeichnet.

Label: PRI0BB

ROM-Nummer: A

Startadresse: &C7B3

Einsprungbedingungen: Die  Cursorposition  C_POS  mu  einen  gltigen
Wert zwischen &BFFE und &C7FE haben.
Das auszugebende ASCII Zeichen steht in L (0..255).

Aussprungbedingungen: Die Cursorposition wurde  um  2 erhht, d.h. man
kann unmittelbar ein weiteres Zeichen ausgeben.  Da in Modus 1 immer 2
Cursorpositionen addiert werden, kommen alle Zeichen die mit dieser OS
Funktion  ausgegeben  werden  auch  wirklich  hindereinander  auf  den
Monitor, ohne Spaces wie man irrtmlicherweise annehmen knnte.

Manipuliert: AF, BC, DE, HL sowie die RAM Variable C_POS.

Beschreibung: Diese OS Funktion  dient  dazu  um ein einzelnes Zeichen
auf dem Bildschirm auszugeben. Es mu Bildschirmmodus 1  eingeschaltet
werden. Das Zeichen wird  mit  Pen  01  ausgegeben.  Hat  man also die
Farbpalette nicht verndert, dann  erscheint  das  Zeichen in Blau auf
dem Bildschirm. Die RAM  Variable  C_POS  bestimmt  an welchem Ort das
Zeichen auszugeben ist. Das ein  Mode  1  Zeichen  im Video RAM 16 Bit
breit ist wird auch die Cursorposition C_POS  um 2 erhht. Das hat zur
Folge,  da  man  mit  dieser  OS  Funktion,  wenn  man  sie  mehrmals
hintereinander aufruft, eine Zeichenfolge ausgeben kann, bei der jedes
Zeichen auf das  andere  folgt.  Wenn  man  zwischendrinn jehweils die
Cursorposition um 1  erhht,  so  hat  man  automatisch zwischen jedem
Zeichen ein halbes SPACE, der Text ist dann nicht mehr so gedrngt.

Bitte Beachten: Die Grafikdaten  der  einzelnen  Zeichen werden ab der
Adresse &3800  gelesen.  Hier  beginnt  im  Lower  ROM  das sogenannte
Zeichen-  oder  Charakter  ROM,  in  dem   von  &3800  bis  &3FFF  die
Grafikdaten fr 256 Zeichen stehen. Bevon man ein Zeichen ausgiebt hat
man selber dafr Sorge zu tragen  da das untere ROM eingeblendet ist.
Ist dies nicht der  Fall,  dann  werden alle Grafikinformationen eines
Zeichens aus dem RAM gelesen. Dies  hat  aber  den Vorteil, da man ab
&3800 im RAM einen eigenen Zeichensatz ablegen kann.
Der Anwender hat vor Aufruf der OS Funktion unbedingt dafr zu sorgen,
da die RAM Variable C_POS  einen  gltigen  Wert  von &BFFE bis &C7FE
hat. Ist dies nicht der Fall, dann werden die Grafikdaten irgendwo ins
RAM geschrieben, und es ist u.U. ein Systemabsturtz die Folge.

Diese Einzelzeichenausgabe existiert fr die  Pens  1..3 in Mode 1. Es
knnen auch Zeichen ausgegeben werden,  deren linke Hlfte eine andere
Farbe als ihre rechte Hlfte  hat.  Auf  der  nchsten Seite sind alle
OS Funktionen fr die Mode 1 Einzel-Zeichen-Ausgabe aufgelistet.









        EINZELZEICHENAUSGABE MODE 1 - EIN- ODER ZWEI-FARBIG
        ===================================================


 Label  ! Adresse !  Pen linke Zeichenhlfte !  Pen rechts Hlfte
        !               !                            !
=================================================================
        !               !                            !
 PRI0GB !  &C73B  !         Pen 10 (Gelb)      !          Pen 01 (Blau)
        !               !                            !
-----------------------------------------------------------------
        !               !                            !
 PRI0BB !  &C7B3  !         Pen 01 (Blau)      !          Pen 01 (Blau)
        !               !                            !
-----------------------------------------------------------------
        !               !                            !
 PRI0GG !  &C84B  !         Pen 10 (Gelb)      !          Pen 10 (Gelb)
        !               !                            !
-----------------------------------------------------------------
        !               !                            !
 PRI0RR !  &C8E3  !         Pen 11 (Rot)       !          Pen 11 (Rot)
        !               !                            !
-----------------------------------------------------------------

Die Werte 01, 10 und 11 fr Pen sind binr zu verstehen.

Pen 01 bedeutet also Pen 1.

Pen 10 bedeutet also Pen 2.

Pen 11 bedeutet also Pen 3.


Der Zeichensatz ist ein 2K Bereich, er beginnt im Lower-ROM bei &3800.
Will man einen eigenen  Zeichensatz  verwenden,  dann  kann man diesen
also dort im RAM ablegen.




























        AUSGABE EINES EINZELNEN ZEICHENS IN MODE 2
        ==========================================

Kurzbeschreibung:  Ein  einzelnes  Zeichen  wird  in  Mode  2  an  der
aktuellen Cursorposition ausgegeben. Die  Cursorposition wird zuvor um
eins erhht.

Label: PR_2

ROM-Nummer: A

Startadresse: &C9BD

Einsprungbedingungen: Die  Cursorposition  C_POS  muss  einen gltigen
Wert zwischen &BFFF und  &C7FF  haben.  Das auszugebende ASCII Zeichen
steht in L (0-255).

Aussprungbedingungen: Ein  einzelnes  Zeichen  wurde  ausgegeben,  die
Cursorposition d.h. die Variable C_POS wurde um eins erhht.

Manipuliert: AF, B, DE, HL und die Ram Variable C_POS

Beschreibung:  Diese  OS  Funktion   dient   dazu  im  hochauflsendem
Bildschirmmodus 2 ein einzelnes  Zeichen  auszugeben. Bevor allerdings
das Zeichen ausgegeben wird, wird  die  Cursorposition um eins erhht.
Das Zeichen wird dann an die neue Position ausgegeben.

Bitte Beachten: In diesem Modus  ist  es mglich mit Zeichenattributen
zu arbeiten. Man kann Zeichen mit folgenden Attributen ausgeben:


Label !! Adresse !! Attribut und Erklrung.
      !!            !!
------!!---------!!------------------------
      !!            !!
PR_2  !! &C9BD   !! Normale Zeichenausgabe, kein Attribut
      !!            !!
PR_2D !! &D016   !! Durchgestrichene Zeichenausgebe (4. Zeile &FF)
      !!            !!
PR_2I !! &D064   !! Invertierte Zeichenausgebe (Pen <===> Paper)
      !!            !!
PR_2K !! &D0BA   !! Kursive Zeichenausgebe (Italics, schrg gestellt)
      !!            !!
PR_2U !! &D113   !! Unterstrichene Zeichenausgebe (8. Zeile &FF)
      !!            !!



















         AUSGABE EINES STRINGS IN MODE 1 (OHNE STEUERZEICHEN)
         ====================================================

Kurzbeschreibung: Eine Zeichenfolge von bis  zu 65536 Zeichen wird auf
dem Bildschirm dargestellt.  Alle  256  Zeichen  werden als grafisches
Symbol dargestellt, auch Steuerzeichen. Es wird Pen 01 benutzt.

Label: STR_BB

ROM-Nummer: A

Startadresse: &CA1C

Einsprungbedingungen: BC enthlt die  Anzahl der auszugebenden Zeichen
plus 1.
HL zeigt auf  das  erste  auszugebende  Zeichen.  Die  anderen Zeichen
folgen speicheraufwrts.
Die Ram Variable C_POS,  also  die  Cursorposition  mu einen gltigen
Wert im Bereich von &BFFE  bis  &C7FE  enthalten. Ist kein eigener RAM
Zeichensatz geladen, so sollte man  das  untere ROM einschalten, da es
ab &3800 die Grafikdaten fr alle 256 Zeichen enthlt.

Aussprungbedingungen: Die  Cursorposition  wurde  um  die  Anzahl  der
ausgegebenen  Zeichen  erhht.  Man  kann  also  anschlieend  weitere
Zeichen ausgeben, die dann  direkt  am  Ende  des zuletzt ausgegebenen
Strings angehngt werden.

Manipuliert: AF, BC, HL, AF', BC', DE', HL' und die Ramvariable C_POS.

Beschreibung: Diese OS Funktion  dient  dazu  um eine Zeichenfolge auf
dem Bildschirm darzustellen. Diese Zeichenfolge  kann  bis zu 64K lang
sein. Es knnen  nur  Zeichen  im  Bereich  von  0  bis 255 ausgegeben
werden, da  fr  jedes  Zeichen  ein  Byte  verwendet  wird.  Alle 256
verschiedenen Zeichen werden  als  grafische  Symbole ausgegeben, d.h.
auch Steuerzeichen erscheinen am Bildschirm  als grafisches Symbol. Um
das Aussehen der Zeichen zu  bestimmen,  kann  entweder das untere ROM
eingeblendet werden, das ab  &3800  die  Grafikdaten aller 256 Zeichen
enthlt, oder man kann vor dem  Aufruf  der OS Funktion das untere ROM
ausschalten und ab &3800 einen RAM Zeichesatz laden. Will man nun eine
Reiche von Bytes auf dem Bildschirm darstellen,  so ld man das 16 Bit
Register HL mit  der  Adresse  des  ersten  Bytes.  Alls anderen Bytes
folgen darauf mit ansteigenden  Adressen.  Die  Anzahl  der Bytes, die
ausgegeben werden sollen, schreibt man in  das 16 Bit Register BC. Nun
ruft man  die  OS  Funktion  durch  einen  CALL  auf  und  die Zeichen
erscheinen im  Modus  1  auf  dem  Bildschirm.  Es  wird  mit  Pen  01
gezeichnet. Diese OS Funktion sollte  nur im Bildschirmmodus 1 benutzt
werden.

Bitte Beachten: Ist weder ein RAM Zeichensatz geladen, noch bei Aufruf
der  OS Funktion  das   untere   ROM   eingeschaltet,   so   kann  das  zu
unvorhersehbaren Effekten auf  dem  Bildschirm  fhren,  die  zwar die
Stabilitt des Systems NICHT gefhrden,  aber zur Verwirrung des Users
beitragen.  Diese  OS Funktion  ist  nur  in   Mode  1  zu  benutzen,  der
Programmierer hat selber dafr Sorge  zu  tragen, da Mode 1 aktiviert
ist.

Diese OS Funktion zeichnet in Pen 1, es  ist  aber auch mglich Pen 2 oder
Pen 3 zu verwenden, oder ein Zeichen  in 2 Farben auszugeben. Wenn ein
Zeichen in zwei Farben dargestellt  wird,  dann werden die linken vier
Pixel in der einen und  die  rechten  4  Pixel  in einer anderen Farbe
dargestellt. Auf der folgenden Seite  folgt dazu eine Aufschlsselung.
Siehe  auch  unter  'AUSGEBE  EINES  ZEICHENS   IN  MODE  1'  und  der
Folgeseite.

           AUFSCHLSSELUNG DER EINZELNEN STRINGFUNKTIONEN:
           ===============================================


        ! Label  ! Addi. ! Pen links ! Pen rechts !
        !--------+-------+-----------+------------!
        ! STR_GB ! &CAC6 !    Pen 10 !     Pen 01 !
        !--------+-------+-----------+------------!
        ! STR_BB ! &CA1C !    Pen 01 !     Pen 01 !
        !--------+-------+-----------+------------!
        ! STR_GG ! &CB50 !    Pen 10 !     Pen 10 !
        !--------+-------+-----------+------------!
        ! STR_RR ! &CBFA !    Pen 11 !     Pen 11 !
        !-----------------------------------------!


Die Bezeichnung der Pens von 01, 10 und  11 ist binr zu lesen, so ist
Pen 01 also Pen 1, Pen 10  ist  Pen  2  dezimal und Pen 11 ist dann im
Dezimalsystem der Pen 3. Der Grund  fr diese binre Bezeichnung liegt
darin begrndet wie die Grafikdaten im Videoram verteilt sind.












































        AUSGABE EINES MODE 2 STRINGS OHNE STEUERZEICHEN
        ===============================================

Kurzbeschreibung: Eine Zeichenkette von bis  zu  65536 Zeichen wird im
Bildschirmmodus 2 ausgegeben. Steuerzeichen werden nicht beachtet.

Label: STR_2

ROM-Nummer: A

Startadresse: &CCE0

Einsprungbedingungen: BC = Anzahl  der  auszugebendne  Bytes + 1, also
die Lnge der Zeichenkette plus 1.
HL = Start der Zeichenkette die auf einmal ausgebeben werden soll.
Die Cursorposition, sprich die RAM  Variable  C_POS mu einen gltigen
Wert im Bereich von &BFFF bis &C7FF enthalten.
Ab  &3800  mu  ein   RAM   Zeichensatz   vorhanden   sein,  oder  der
Programmierer  mu  vor  Aufruf  der   OS   Funktion  das  untere  ROM
einblenden. Der Bildschirmmodus 2 sollte bereits aktiviert sein.

Aussprungbedingungen: Die  Cursorposition   wird  um  die  Anzahl  der
ausgegebenen Bytes (aus Register  BC)  erhht,  so da weitere Zeichen
ausgegeben werden knnen.
HL = Zeiger auf Byte nach ausgegebenem String. BC = &0000. B' = &08

Manipuliert: AF, BC, HL, BC', DE', HL' und die RAM Variable C_POS

Beschreibung: Mit dieser OS Funktion  ist  es  mglich im Mode 2 einen
String mit bliebiger Lnge bis 64K  auszugeben. Alle 256 Zeichen, auch
alle Steuerzeichen, werden als Grafik auf dem Bildschrirm ausgegeben.

Bitte Beachten: Vor Aufruf der  OS  Funktion  mu Mode 2 eingeschalten
werden, die Cursorposition muss gesetzt  werden,  und ab &3800 mu ein
zeichensatz vorhanden sein.

Es ist mglich diese Stringausgabe  mit verschiedenen Attributen durch
zufhren, siehe auch 'EINZELZEICHENAUSGEBE IN MODE 2'.


         !--------------------------------------------------!
         ! Label  ! Attribut des Strings          ! Adresse !
         !--------+-------------------------------+---------!
         ! STR_2  ! kein zustzliches Attribut.   !   &CCE0 !
         !--------+-------------------------------+---------!
         ! STR_2D ! Alle Zeichen durchgestrichen. !   &D161 !
         !--------+-------------------------------+---------!
         ! STR_2I ! Alle Zeichen invertiert.      !   &D1C2 !
         !--------+-------------------------------+---------!
         ! STR_2K ! Alle Zeichen kursiv.          !   &D22A !
         !--------+-------------------------------+---------!
         ! STR_2U ! Alle Zeichen unterstrichen.   !   &D296 !
         !--------------------------------------------------!











          AUSGABE EINES STRINGS MIT STEUERZEICHEN IN MODE 1
          =================================================

Kurzbeschreibung: Eine  Zeichenkette   beliebiger   Lnge  wird  unter
Beachtung aller Steuerzeichen in Mode 1 mit Pen 01 ausgegeben.

Label: TER_BB

ROM-Nummer: A

Startadresse: &CD4C

Einsprungbedingungen:  HL  =    Zeiger   auf   die   Startadresse  des
auszugebenden Strings,  wobei  das  Stringende  durch  ein  Null  Byte
festgesetzt wird.
Die Cursorposition C_POS mu einen gltigen  Wert im Bereich von &BFFE
bis &C7FE enthalten, ferner mu das untere ROM eingeschalten sein bzw.
ein RAM Zeichensatz geladen sein.

Aussprungbedingungen: -

Manipuliert: AF, DE, HL, AF', BC', DE', HL' und die Cursorposition.

Beschreibung: Mit dieser OS Funktion  ist es mglich eine Zeichenkette
in  Mode  1  auszugeben.  Es   wird   mit   Pen  01  gezeichnet.  Alle
Steuerzeichen werden beachtet. Bei Aufruf der OS Funktion zeigt HL auf
das erste Byte  des  Strings.  Ab  dieser  Adresse  werden  alle Bytes
gelesen, und entweder als Grafikzeichen ausgegeben (32...255) oder als
Steuerzeichen interpretiert. Als Steuerzeichen  werden alle Zeichen im
Bereich von 0..31 benutzt. Das  Ende  der  Zeichenkette wird durch ein
Nullbyte, also Steuerzeichen 00  interpretiert. Die Grafikdaten werden
ab &3800 gelesen, wobei  die  ersten  32  Zeichen  wiegesagt nicht als
Grafikzeichen   ausgegeben   werden,    sondern   als   Steuerfunktion
interpretiert werden.

Bitte Beachten: Die  Cursorposition  mu  vor  Aufruf  der OS Funktion
einen Wert im Bereich von &BFFE  bis &C7FE bekommen. Der Programmierer
hat dafr zu sorgen, ob ab &3800 ein RAM Zeichensatz geladen ist, oder
ob das untere ROM eingeblendet ist.

Wie  auch  bei  der   Stringausgabe   ohne  Steuerzeichen  knnen  die
auszugebenden Zeichen  in  Pen  1,  2,  3  oder  zweifarbig gezeichnet
werden.

        !-------------------------------------------!
        ! Label  ! Addi. ! linker Pen ! rechter Pen !
        !-------------------------------------------!
        ! TER_GB ! &CDF6 !     Pen 10 !      Pen 01 !
        !-------------------------------------------!
        ! TER_BB ! &CD4C !     Pen 01 !      Pen 01 !
        !-------------------------------------------!
        ! TER_GG ! &CE80 !     Pen 10 !      Pen 10 !
        !-------------------------------------------!
        ! TER_RR ! &CF2A !     Pen 11 !      Pen 11 !
        !-------------------------------------------!

Wobei 01 fr Pen 1 und 10 fr Pen 2 steht. Und 11 steht fr Pen 3.







        AUSGABE EINES MODE 2 STRINGS MIT STEUERZEICHEN
        ==============================================

Kurzbeschreibung: Eine Zeichenkette wird in Mode 2 und unter Beachtung
aller Steuerzeichen ausgegeben.

Label: TERM_2

ROM-Nummer: A

Startadresse: &D48C

Einsprungbedingungen: HL = erstes Byte der auszugebenden Zeichenkette.
Die Cursorposition C_POS mu auf  einen  Wert zwischen &BFFF und &C7FF
gesetzt werden. Ab &3800 mu ein Zeichensatz vorhanden sein.

Aussprungbedingungen: DE = Zeiger auf Byte nach ausgegebenen String

Manipuliert:  AF,  BC,   DE,   HL,   AF',   BC',   DE',  HL'  und  die
Cursorposition.

Beschreibung: Im Modus 2  wird  eine  Zeichenkette ausgegeben. Alle 32
Steuerzeichen (0..31)  werden  auch  als  solchen  interpretiert.  Bei
Aufruf der OS Funktion mu das  Doppelregister HL die Startadresse des
Strings enthalten. Ab &3800 mu  ein RAM Zeichensatz eingeblendet sein
bzw. das untere ROM mu eingeblendet  sein. Sobald die OS Funktion auf
ein Nullbyte trifft wird die Textausgabe abgebrochen.

Bitte Beachten: Die Cursorposition, der ROM Status und der Zeichensatz
men geprft sein.

Im Modus 2 ist es  mglich  einen  String mit verschiedenen Attributen
auszugeben. Siehe dazu auch 'AUSGABE EINES ZEICHENS IN MODE 2'


Label   ! Addi. ! Attribut des Strings.
-----------------------------------------------
TERM_2  ! &D48C ! kein weiteres Attribut.
-----------------------------------------------
TERM_2D ! &D2F7 ! Alle Zeichen durchgestrichen.
-----------------------------------------------
TERM_2I ! &D358 ! Alle Zeichen invertiert.
-----------------------------------------------
TERM_2K ! &D3C0 ! Alle Zeichen kursiv.
-----------------------------------------------
TERM_2U ! &D42C ! Alle Zeichen unterstrichen.
-----------------------------------------------

















        SETZE BILDSCHIRM AUF 64 SPALTEN UND 32 ZEILEN
        =============================================

Kurzbeschreibung: Das Format des Bildschrirms  wird auf 64 Spalten und
32 Zeilen gesetzt.

Label: S64X32

ROM-Nummer: A und D

Startadresse: &D5A8 (logisches ROM A) und &E6B5 (logisches ROM D)

Einsprungbedingungen: -

Aussprungbedingungen: MAX_CRX, MAX_CRY sind angeglichen.

Manipuliert: Flags, BC, DE, HL, CRTC Register 1, 2, 4, 6 und 7.

Beschreibung: Unabhngig  vom  bisherigen  Bildschirmformat  wird  der
Bildschirm auf 64 Mode 2  Spalten  und  32  Zeilen gesetzt. Dabei wird
aber weder der Bildschirmmodus gendert, noch der Bildschirm gelscht.


        SETZE BILDSCHIRM AUF 68 SPALTEN UND 30 ZEILEN
        =============================================

Label: S68X30

ROM-Nummer: A und D

Startadresse: &D5DB

Einsprungbedingungen: -

Aussprungbedingungen: MAX_CRX, MAX_CRY sind angeglichen.

Manipuliert: Flags, BC, DE, CRTC Register 1, 2, 4, 6 und 7

Beschreibung: Das Bildschirmformat wird auf  68  Mode 2 Spalten und 32
Zeilen gesetzt.


        SETZE BILDSCHIRM AUF 80 SPALTEN UND 25 ZEILEN
        =============================================

Kurzbeschreibung: -

Label: S80X25

ROM-Nummer: A und D

Startadresse: &D60E (logisches ROM A), &E6E7 (logisches ROM D)

Einsprungbedingungen: -

Aussprungbedingungen: MAX_CRX, MAX_CRY sind angeglichen.

Manipuliert: AF, BC, DE, CRTC Register 1, 2, 4, 6 und 7.

Beschreibung: Das Bildschirmformat wird auf  80  Mode 2 Zeichen und 25
Zeilen gesetzt.

Bitte Beachten: Der Bildschirmmodus wird nicht verndert.

  DARSTELLUNG EINES SPEICHERAUSZUGES (DUMP) IM 68 * 30 FORMAT MODE 2
  ==================================================================

Kurzbeschreibung: 480 Bytes Speicher werden  in MODE 2  im Bildschirm-
Format 68 Zeichen  auf  30  Zeilen  dargestellt.  Die  Ausgabe erfolgt
sowohl in HEX als auch in ASCII.

Label: F_DUMP

ROM-Nummer: A

Startadresse: &FE77

Einsprungbedingungen: HL = Startadresse  des  Dumps. Ab dieser Adresse
werden 480 Bytes in HEX und FSCW / ASCII ausgegeben.
Vor Aufruf der OS Funktion ist der  Bildschirm  auf das 68 * 30 Format
und Mode 2 zu schalten.

Aussprungbedingungen: Das untere ROM wurde eingeblendet (Status &7F82)

Manipuliert: AF, BC, DE, HL, AF', BC',  DE', HL' und die RAM Variablen
REG08_0, REG16_0 und C_POS.  Auerdem  wurde  der  2 KB Textbildschirm
benutzt. Und das untere ROM wurde eingeblendet (Status &7F82).

Beschreibung: Diese OS  Funktion  dient  dazu  um  480  Bytes, aus dem
gerade eingeblendeten Specher, darzustellen.
Es wird Bildschirmmodus 2 vorrausgesetzt.  MODE  2  mu man vor Aufruf
der OS Funktion selber aktivieren (die Befehle LD BC,&7F82 : OUT (C),C
erledigen das). Und das Bildschirmformat muss auf 68 Zeichen pro Zeile
und auf 30 Zeilen gesetzt  werden  (z.B.  mittels OS Funktion S68X30).
Das 16 Bit Register HL ld man mit der Startadresse des Speicherblocks
den man anzeigen will.  Der  Speicher wird folgendermaen dargestellt.
In jeder Zeile steht ganz links eine  16  Bit Adresse die sich auf die
nebenstehenden 16 Bytes bezieht. In  jeder  Zeile werden also 16 Bytes
dargestellt, und zwar zuerst  im  Hexadezimalsystem,  und dann in FSCW
Code. Der FSCW Coce entspricht hier  dem ASCII Code. Diese OS Funktion
ist ein Teil des Maschienensprache Monitors.
Nach dem Ende dieser OS Funktion ist das untere ROM eingeblendet!!!

Achtung: Die  aufrufende  OS  Funktion  muss  sich  also  oberhalb der
Adresse &4000 befinden, sonnst erfolgt  ein Rcksprung ins untere ROM,
also ein Crash!

Bitte Beachten: Die OS Funktion benutzt den Textbildschirm, d. h. alle
zuvor darin enthaltenen Daten sind verloren. Der Programmierer hat vor
Aufruf der OS Funktion selber den  Mode  2  und  das 68 * 30 Format zu
aktivieren.
Diese OS Funktion darf  nur  von  einer  Adresse  grer als &4000 aus
aufgerufen werden, da sie vor dem Rcksprung das untere ROM einblendet
und somit ein Rcksprung ins RAM unterhalb von &4000 unmglich ist.














         16 BIT EIN- UND AUSGABE ALLER PORTADRESSEN DES CPC
         ==================================================

Kurzbeschreibung: Anzeigen und editieren aller Ports des CPC.

Label: F_PORT

ROM-Nummer: A

Startadresse: &FE7A

Einsprungbedingungen: -

Aussprungbedingungen: Die vom Anwender vernderten Werte wurden an die
entsprechenden I/O Ports geschickt.
Beide ROM's sind eingeschalten, Mode  2  und  das  64 * 32 Format sind
aktiviert.

Manipuliert: AF, BC, DE, HL, IX,  YH,  AF',  BC', DE', HL' und die RAM
Variablen REG16_0, REG16_1 und C_POS.
Der RAM / ROM  Status  der  Gate  Arrays  und der Bildschirmmodus sind
verndert. Das Bildschirmformat  wird  auf  64  Spalten  und 32 Zeilen
gesetzt.

Beschreibung: Diese OS Funktion   ist  ein  Teil des Maschienensprache
Monitors. Da vor Aufruf der  OS  Funktion  im RAM das CUR_INV Programm
vorhanden sein mu sollte man diese OS Funktion mit Vorsicht benutzen.
Sie dient dazu, an die  verschiedensten  16  Bit  I/O Adressen den CPC
Werte zu versenden, oder diese  einzulesen.  Die  OS Funktion wird mit
den Cursortasten und Copy bedient. Mit  den Cursortasten whlt man die
gewnschte Ein- oder Ausgabeadresse. Will  man einen Wert einlesen, so
fhrt man den Cursor  auf  die  gewnschte  Adresse  und bettigt Copy
sofort wird der  Wert  des  Ports  eingelesen  und  auf dem Bildschirm
ausgegeben. Will man einen Wert ausgeben,  so fhrt man zuerst mit dem
Cursor die entsprechende Ausgabeadresse an,  dann drckt man Copy, mun
tippt man einen hexadezimalen Wert im  Bereich  von  00 bis FF ein und
drckt anschlieend Return. Es gibt auch  die Mglichkeit das High und
Lowbyte einer beliebigen  I/O  Adresse  einzugeben.  Will  man  die OS
Funktion werlaen, so whlt  man  eine  Ausgabefunktion an, und drckt
die ESC Taste anstatt einen Wert einzugeben.

Bitte Beachten:  Es  kann  zu  Systemabstrtzen  fhren,  wenn  man an
bestimmt  Ports  Werte  ausgiebt,  oder  von  bestimmten  Ports  Werte
einliet.  Nur  der  Assembler-Profi   sollte  dieses  imens  mchtige
Instrument  bedienen.   Der   Anfnger   knnte   erheblichen  Schaden
anrichten. Diese OS Funktion arbeitet mit abgeschaltenen Interrupts.


















    EINGABEFUNKTION FR 8 BIT WERTE MIT DARSTELLUNG AUF BILDSCHIRM
    ==============================================================

Kurzbeschreibung: Eingabe-Funktion fr Werte zwischen 0 und 255.

Label: RB_8 bzw. RBB_8

ROM-Nummer: A

Startadresse: &FE3B (RB_8) bzw. &FE35 (RRB_8)

Einsprungbedingungen: Die Cursorposition C_POS (RB_8) bzw. ein Zeichen
vor der Cursorposition C_POS-1 (RBB_8)  wird als Eingabestelle auf dem
Bildschirm benutzt.

Aussprungbedingungen: A enthlt den vom Anwender eingegebenen Wert und
das Carry Flag ist auf 1 gesetzt.
Kehrt die OS Funktion mit gelschtem Carry-Flag(NC) zurck, dann wurde
die Eingabe mittels ESC abgebrochen.

Manipuliert: AF, BC, DE, HL, AF', BC', DE', HL', IX, IY, PIO, PSG, und
die System RAM Variable C_POS, die die Cursorposition enthlt.

Beschreibung: Diese beiden OS  Funktionen stellen Eingabemglichkeiten
fr 8 Bit  Werte  (0-255)  in  MODE  2  dar.  Dabei  wird entweder die
aktuelle Cursorposition benutzt (OS Funktion  RB_8)  oder es wird eine
Stelle weiter links benutzt (OS Funktion  RBB_8). Im zweiten Fall wird
also das zu letzt eingegeben  Zeichen berschrieben, allerdings nur im
Dezimal-System. Dadurch  kann  ein  eventuelles  "&"  Zeichen  fr die
Eingabe von hexadezimalen Werten automatisch berschrieben werden.
Beide OS Funktionen RB_8 und  RBB_8  springen entweder zu BIT8_IN oder
B8DIN, abhngig davon ob FutureOS  im Dezimal- oder Hexadezimal-System
arbeitet. Bitte siehe auch dort!
Die Eingabe  wird  entweder  mit  RETURN  abgeschlossen  oder  mit ESC
abgebrochen. Bei Abbruch (ESC)  kehrt  die  OS Funktion mit gelschtem
Carry Flag zurck. Wurde die Eingabe  mit RETURN beendet, dann ist das
Carry Flag gesetzt.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurck, wenn entweder
ein RETURN bzw. ein ESC vom Anwender eingegeben wurde.
Bitte benutzen sie diese OS Funktion nur im Bildschirm MODUS 2.























 EINGABEFUNKTION FR 8 BIT WERTE (HEX) MIT DARSTELLUNG AUF BILDSCHIRM
 ====================================================================

Kurzbeschreibung: Eingabe-Funktion fr hexadezimale 8 Bit Werte. Dabei
bricht die ESC Taste die Eingabe ab.

Label: BIT8_IN

ROM-Nummer: A

Startadresse: &C31A

Einsprungbedingungen: Die Cursorposition C_POS  wird als Eingabestelle
auf dem Bildschirm benutzt.

Aussprungbedingungen: A = der vom Anwender eingegebene 8 Bit Wert.
Kehrt die OS Funktion mit gelschtem Carry-Flag(NC) zurck, dann wurde
die Eingabe mittels ESC abgebrochen.

Manipuliert: AF, BC, DE, HL, AF', BC',  DE', HL', IY, PIO, PSG und die
Variable C_POS, die die Cursorposition darstellt.

Beschreibung: Diese OS Funktion  stellt  eine Eingabemglichkeit fr 8
Bit Werte in MODE 2 dar.  Es wird die aktuelle Cursorposition benutzt.
Die Eingabe findet im  hexadezimalen  Zahlensystem  statt. Nach Aufruf
der OS Funktion werden vom  Anwender  zwei  Werte verlangt. Zuerst die
hherwertigen vier Bit, dann  die  niederwertigen  vier Bit. Es knnen
Werte d.h. Tasten im Bereich von 0 bis  9 und a bis f. benutzt werden.
Shift und Control werden nicht abgefragt.  Mit  DEL kann man den zuvor
eingegebenen Wert lschen. Die Eingabe wird mit RETURN abgeschlossen.
Abgesehen davon ist es mglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelschtem Carry Flag
zurck. Wurde die Eingabe mit RETURN  beendet, dann ist das Carry Flag
gesetzt. Die ESC Taste  ist  allerdings  wirkungslos, wenn schon beide
Werte eingegeben sind,  dann  ist  zuerst  einmal  DEL  zu drcken und
anschlieend die ESC Taste.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurck, wenn entweder
zwei Werte und ein RETURN bzw. ein ESC vom Anwender eingegeben wurden.
Andernfalls wartet das System bis  in  die  Unendlichkeit oder bis zum
nchsten Strohmausfall.

Bitte benutzen sie diese OS Funktion nur im Bildschirm MODUS 2.

Diese OS Funktion wird von der F_PORT Monitorfunktion benutzt.



















 EINGABEFUNKTION FR 8 BIT WERTE (DEZ) MIT DARSTELLUNG AUF BILDSCHIRM
 ====================================================================

Kurzbeschreibung: Inputfunktion fr dezimale 8 Bit Werte. Dabei bricht
die ESC Taste die Eingabe ab.

Label: B8DIN

ROM-Nummer: A

Startadresse: &FE41

Einsprungbedingungen: Die Cursorposition C_POS  wird als Eingabestelle
auf dem Bildschirm benutzt.

Aussprungbedingungen: A = der vom Anwender eingegebene 8 Bit Wert.
Kehrt die OS Funktion mit gelschtem Carry-Flag(NC) zurck, dann wurde
die Eingabe mittels ESC abgebrochen.

Manipuliert: AF, BC, DE, HL, IX, IY,  BC',  DE', HL', PIO, PSG und die
Variable C_POS, die die Cursorposition darstellt.

Beschreibung: Diese OS Funktion  stellt  eine Eingabemglichkeit fr 8
Bit Werte in MODE 2 dar.  Es wird die aktuelle Cursorposition benutzt.
Die Eingabe findet im dezimalen Zahlensystem statt. Nach Aufruf der OS
Funktion werden vom Anwender  drei  Werte  verlangt. Zuerst Hunderter,
dann Zehner, dann Einer. Es knnen Werte d. h. Tasten im Bereich von 0
bis 9 benutzt werden. Shift  und  Control  werden nicht abgefragt. Mit
DEL kann man den zuvor eingegebenen Wert lschen. Die Eingabe wird mit
RETURN abgeschlossen.
Abgesehen davon ist es mglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelschtem Carry Flag
zurck. Wurde die Eingabe mit RETURN  beendet, dann ist das Carry Flag
gesetzt.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurck, wenn entweder
RETURN bzw. ESC vom Anwender gedrckt wurden.

Bitte benutzen sie diese OS Funktion nur im Bildschirm MODUS 2.

























   EINGABEFUNKTION FR 16 BIT WERTE MIT DARSTELLUNG AUF BILDSCHIRM
   ===============================================================

Kurzbeschreibung: Eingabe-Funktion fr Werte zwischen 0 und 65535.

Label: RB_16 bzw. RBB_16

ROM-Nummer: A

Startadresse: &FE3E (RB_16) bzw. &FE38 (RBB_16)

Einsprungbedingungen: Die Cursorposition C_POS(RB_16) bzw. ein Zeichen
vor der Cursorposition C_POS-1 (RBB_16) wird als Eingabestelle auf dem
Bildschirm benutzt.

Aussprungbedingungen: DE' enthlt den vom Anwender eingegebenen 16 Bit
Wert und das Carry Flag ist auf 1 gesetzt.
Kehrt die OS Funktion mit gelschtem Carry-Flag(NC) zurck, dann wurde
die Eingabe mittels ESC abgebrochen.

Manipuliert: AF, BC, DE, HL, AF', BC', DE', HL', IX, IY, PIO, PSG, und
die System RAM Variable C_POS, die die Cursorposition enthlt.

Beschreibung: Diese beiden OS  Funktionen stellen Eingabemglichkeiten
fr 16 Bit Werte (0-65535)  in  MODE  2  dar.  Dabei wird entweder die
aktuelle Cursorposition benutzt (OS Funktion  RB_16) oder es wird eine
Stelle weiter links benutzt (OS Funktion RBB_16). Im zweiten Fall wird
also das zu letzt eingegeben  Zeichen berschrieben, allerdings nur im
Dezimal-System. Dadurch  kann  ein  eventuelles  "&"  Zeichen  fr die
Eingabe von hexadezimalen Werten automatisch berschrieben werden.
Beide OS Funktionen RB_16 und  RBB_16  springen entweder zu B16IN oder
B16DIN, abhngig davon ob FutureOS im Dezimal- oder Hexadezimal-System
arbeitet. Bitte siehe auch dort!
Die Eingabe  wird  entweder  mit  RETURN  abgeschlossen  oder  mit ESC
abgebrochen. Bei Abbruch (ESC)  kehrt  die  OS Funktion mit gelschtem
Carry Flag zurck. Wurde die Eingabe  mit RETURN beendet, dann ist das
Carry Flag gesetzt.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurck, wenn entweder
ein RETURN bzw. ein ESC vom Anwender eingegeben wurde.
Bitte benutzen sie diese OS Funktion nur im Bildschirm MODUS 2.























EINGABEFUNKTION FR 16 BIT WERTE (HEX) MIT DARSTELLUNG AUF BILDSCHIRM
=====================================================================

Kurzbeschreibung: Eingabe-Funktion  fr  hexadezimale  16  Bit  Werte.
Dabei bricht die ESC Taste die Eingabe ab.

Label: B16IN

ROM-Nummer: A

Startadresse: &C38A

Einsprungbedingungen: Die Cursorposition C_POS  wird als Eingabestelle
auf dem Bildschirm benutzt.

Aussprungbedingungen: DE' = der vom Anwender eingegebene 16 Bit Wert.
Kehrt die OS Funktion mit gelschtem Carry-Flag(NC) zurck, dann wurde
die Eingabe mittels ESC abgebrochen.

Manipuliert: AF, BC, DE, HL, AF', BC', DE', HL' und die Cursorposition
C_POS.

Beschreibung: Diese OS Funktion stellt  eine Eingabemglichkeit fr 16
Bit Werte in MODE 2 dar.  Es wird die aktuelle Cursorposition benutzt.
Die Eingabe findet im  hexadezimalen  Zahlensystem  statt. Nach Aufruf
der OS Funktion werden vom  Anwender  vier  Werte verlangt. Zuerst die
hherwertigen, dann die  niederwertigen  Bytes.  Es  knnen Werte d.h.
Tasten im Bereich von 0 bis 9  und  a bis f. benutzt werden. Shift und
Control  werden  nicht  abgefragt.   Mit   DEL   kann  man  den  zuvor
eingegebenen Wert lschen. Die Eingabe wird mit RETURN abgeschlossen.
Abgesehen davon ist es mglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelschtem Carry Flag
zurck. Wurde die Eingabe mit RETURN  beendet, dann ist das Carry Flag
gesetzt. Die ESC Taste  ist  allerdings  wirkungslos,  wenn schon alle
vier Werte eingegeben sind, dann ist  zuerst einmal DEL zu drcken und
anschlieend die ESC Taste.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurck, wenn entweder
vier Werte und ein RETURN bzw. ein ESC vom Anwender eingegeben wurden.
Ein anderer Ausstieg ist nicht mglich.

Bitte benutzen sie diese OS Funktion nur im Bildschirm MODUS 2.

Diese OS Funktion wird vom FutureOS Monitor benutzt.




















EINGABEFUNKTION FR 16 BIT WERTE (DEZ) MIT DARSTELLUNG AUF BILDSCHIRM
=====================================================================

Kurzbeschreibung: Eingabe-Funktion fr  dezimale  16  Bit Werte. Dabei
bricht die ESC Taste die Eingabe ab.

Label: B16DIN

ROM-Nummer: A

Startadresse: &FE44

Einsprungbedingungen: Die Cursorposition C_POS  wird als Eingabestelle
auf dem Bildschirm benutzt.

Aussprungbedingungen: DE' = der vom Anwender eingegebene 16 Bit Wert.
Kehrt die OS Funktion mit gelschtem Carry-Flag(NC) zurck, dann wurde
die Eingabe mittels ESC abgebrochen.

Manipuliert: AF, BC, DE, HL, BC', DE',  HL',  IX, IY, PIO, PSG und die
Cursorposition C_POS.

Beschreibung: Diese OS Funktion stellt  eine Eingabemglichkeit fr 16
Bit Werte in MODE 2 dar.  Es wird die aktuelle Cursorposition benutzt.
Die Eingabe findet im dezimalen Zahlensystem statt. Nach Aufruf der OS
Funktion werden  vom  Anwender  fnf  Werte  verlangt:  Zehntausender,
Tausender, Hunderter, Zehner und Einser. Es  knnen Werte d. h. Tasten
im Bereich von 0 bis 9 benutzt  werden. Shift und Control werden nicht
abgefragt. Mit DEL kann man  den  zuvor eingegebenen Wert lschen. Die
Eingabe wird mit RETURN abgeschlossen.
Abgesehen davon ist es mglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelschtem Carry Flag
zurck. Wurde die Eingabe mit RETURN  beendet, dann ist das Carry Flag
gesetzt.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurck, wenn entweder
RETURN bzw.  ein  ESC  vom  Anwender  eingegeben  wurden.  Ein anderer
Ausstieg ist nicht mglich.

Bitte benutzen sie diese OS Funktion nur im Bildschirm MODUS 2.
























        UMWANDLUNG EINES BYTES IN ZWEI ASCII ZEICHEN
        ============================================

Kurzbeschreibung: Eine  einzelnes  Byte  wird  in  zwei  ASCII Zeichen
umgewandelt. Diese kann man spter auf dem Bildschirm ausgeben, daruch
erscheint das Byte hexadezimal mit zwei Stellen.

Label: N_2_2C

ROM-Nummer: A

Startadresse: &D58A

Einsprungbedingungen: A  = enthlt das umzuwandelnde Quellbyte.
DE = Zeiger auf einen zwei Bytes  langen  Bereich in dem die beiden zu
generierenden ASCII Zeichen abgelegt werden sollen.

Aussprungbedingungen: DE wurde um 1 erhht.  In (DE) steht das untere,
in (DE-1) das hhere Nibble des Quellbytes.
Der Akku enthlt das niederwertige Nibble.

Manipuliert: AF, BC und DE wurde um 1 erhht.

Beschreibung: Will man ein beliebiges  Byte  von  &00  bis &FF auf dem
Bildschirm im hexadezimalen System  darstellen,  so  ist  es zuerst in
zwei ASCII Zeichen umzuwandeln.  Genau  dies  macht diese OS Funktion,
dabei wird in die durch DE adressierte Speicherstelle das obere Nibble
des Quellbytes geschrieben.  In  die  darauffolgende  Adresse wird das
untere Nibble geschrieben. Die  zwei  generierten ASCII Zeichen knnen
sofort  als  String  ausgegeben  werden,  und  es  erscheint  auf  dem
Bildschirm das Quellbyte, fr jedermann lesbar. Diese OS Funktion gibt
aber selber keine Zeichen auf dem Bildschirm aus.

Bitte Beachten: Wird DE vor  Aufruf  der  OS Funktion nicht mit  einem
gltigem  Wert  geladen,  so  werden   irgendwo  ins  RAM  zwei  Bytes
geschrieben. Dies kann unabsehbare Folgen nach sich ziehen.




























                ANZEIGEN & EDITIEREN EINES STRINGS
                ==================================

Kurzbeschreibung: Mittels  STED  lt  sich  ein  String  anzeigen und
editieren, oder neu generieren.

Label: STED

ROM-Nummer: A

Startadresse: &FE7D

Einsprungbedingungen:
 B = Obergrenze, 1. Zeichen OBERHALB des legalen Bereichs, von &01 bis
     &FF.
 C = Untergrenze, kleinstes legales Zeichen, von &00 bis &FF.
DE = Zeiger auf 1.  Byte  des  zu  editierenden Strings, von &0000 bis
     &FFFF.
HL = Zeiger auf Byte NACH dem Stringende, von &0000 bis &FFFF.

Aussprungbedingungen: String wurde durch den Anwender editiert.
A=&03 ==> Abbruch durch ESC!
A=&0E ==> Eingabe korrekt beendet.
Auerdem wurden der  Hauptspeicher  (RAM-Konfiguration  &C0) und beide
ROMs eingeblendet. Bildschirm MODE 2 wurde aktiv geschalten.

Manipuliert: AF, BC, DE, HL,  BC',  DE',  HL',  IX,  IY, RAM- und ROM-
Status sowie PIO und PSG.

Beschreibung: Mittels STED wird ein  bestehender String editiert, oder
ein neuer generiert.  Die  Stringlnge  ist  nur  vom Bildschirmformat
abhngig. STED luft in MODE 2.
Vor Aufruf der OS Funktion bergibt  man  in DE die Adresse des ersten
Bytes des Strings, in HL  wird  die  Adresse  des Bytes bergeben, da
oberhalb des Strings folgt. Die Stringlnge entspricht also HL - DE.
Auerdem kann  man  der  OS  Funktion  angeben  welcher Zeichenbereich
berhaupt zulssig  ist.  In  B  wird  der  Wert  des  ASCII  Zeichens
angegeben, da oberhalb des  legalen  Bereichs  liegt.  In  C wird das
erste legale Zeichen angegeben. Beispiel: B  =  &80  und C = &20, dann
drfen alle ASCII Zeichen von &20 bis &7F verwendet werden.
Wrend des Editierens kann der Anwender durch die vier Pfeiltasten und
DEL den Cursor  bewegen.  Der  Editiervorgang  wird  durch RETURN oder
ENTER abgeschlossen.
Man kann die Editierung auch durch  ESC abbrechen. Beim Aussprung wird
in A das Byte &0E(o.k.) bzw. &03(ESC) bergeben. Druch folgende Zeilen
kann dies getestet werden.

Beispiel:

  LD BC,&8020   ;Zeichen von &20 bis &7F sind legal
  LD DC,&8400   ;Editieren von &8400
  LD HL,&8420 + 1       ;bis &8420

  CALL STED             ;String editieren

  RRCA          ;Bit 0 ins Carry
  JR   C,ESC            ;Bit 0 ist "1", Editierung durch ESC abgebrochen.

Bitte Beachten: Der  String  darf  nicht  lnger  sein,  als  dies das
Bildschirmformat zult. Bei eimem Bildschirmformat von 64 Zeichen auf
32 Zeilen darf der String nicht lnger als knapp 2 KB sein.
STED ist nur in MODE 2 lauffhig. Und STED nur von &8000 bis &BFF0 aus
aufrufen! Bei Aufruf sollte HL grer DE sein.

           INVERTIEREN VON 2 MODE 2 ZEICHEN (MODE 1 CURSOR)
           ================================================

Kurzbeschreibung: Zwei  aufeinander  folgende  Mode  2  Zeichen werden
invertiert.

Label: CUR_INV

ROM-Nummer: A

Startadresse: &D4EC

Einsprungbedingungen: C_POS ==> Zeichen-Pos. ab der invertiert wird.

Aussprungbedingungen: Zwei Mode 2  Zeichen invertiert. Auerdem wurden
die ersten 64K eingeblendet, RAM-Konfiguration  &C0. Auch wurden beide
ROMs eingeblendet. Es wurde Bildschirm Mode 2 aktiviert.

Manipuliert: AF, BC, HL, 16 Bytes V-RAM und der RAM/ROM-Status.

Beschreibung: Diese OS Funktion dient  dazu einen Cursor darzustellen,
oder bessergesagt zu invertieren.  Dabei  handelt  es  entweder um ein
Mode 1 Zeichen oder  um  zwei  aufeinanderfolgende  Mode 2 Zeichen (16
Bit).
Durch  einen  zweiten  Aufruf  dieser  OS  Funktion  wird  ihr  Effekt
kompensiert, da die betroffenen Bits nur invertiert werden.
Die OS Funktion ist extrem  schnell,  blendet aber beim Rcksprung die
RAM-Konfiguration &C0 ein, also die  ersten 64K. Auerdem werden beide
ROMs (das obere und das untere) eingeblendet. Es ist Mode 2 aktiv.

Bitte Beachten: Es werden dieersten 64K eingeblendet.


           INVERTIEREN VON 1 MODE 2 ZEICHEN (MODE 2 CURSOR)
           ================================================

Kurzbeschreibung: Ein Mode 2 Zeichen wird invertiert.

Label: CUR_IV2

ROM-Nummer: A

Startadresse: &D544

Einsprungbedingungen: C_POS ==> Zeichen-Pos. ab der invertiert wird.

Aussprungbedingungen: Ein Mode 2  Zeichen  invertiert. Auerdem wurden
die ersten 64K  eingeblendet  (RAM-Konfiguration  &C0)  und beide ROMs
eingeblendet. Es wurde Bildschirm Mode 2 aktiviert.

Manipuliert: AF, BC, HL, 8 Bytes V-RAM und der RAM/ROM-Status.

Beschreibung: Diese OS Funktion dient  dazu einen Cursor darzustellen,
oder bessergesagt zu  invertieren.  Dabei  handelt  es  um  ein Mode 2
Zeichen (8 Bit breit).
Durch  einen  zweiten  Aufruf  dieser  OS  Funktion  wird  ihr  Effekt
kompensiert, da die betroffenen Bits nur invertiert werden.
Die OS Funktion ist extrem  schnell,  blendet aber beim Rcksprung die
RAM-Konfiguration &C0 ein, also die  ersten 64K. Auerdem werden beide
ROMs (das obere und das untere) eingeblendet. Es ist Mode 2 aktiv.

Bitte Beachten: Es werden die Standart 64K (Konfig &C0) eingeblendet.


           KOPFZEILE/HEADER EINER FUTURE-OS DATEI ANZEIGEN
           ===============================================

Kurzbeschreibung: Die Kopfzeile bzw. das  Icon  eines 128 Byte Headers
einer FutureOS Datei wird angezeigt.

Label: SHED

ROM-Nummer: A

Startadresse: &FE71

Einsprungbedingungen: Die RAM-Variable  C_POS  bestimmt  wo  die Daten
angezeigt werden sollen. Der Bildschirm  ist  auf  MODE  1 und 32 * 32
Zeichen zu schalten, u.U. ist der Bildschirm zu lschen.
Ein FutureOS Dateiheader mu ab &B400 im RAM liegen.

Aussprungbedingungen: Kopfzeile, Semigrafik-  oder  Grafik  Icon wurde
auf dem Bildschirm dargestellt.

Manipuliert: AF, BC, HL, IX, IY und das Video-RAM ab C_POS.

Beschreibung: Unter AmsDOS hat jede  NICHT-ASCII Datei einen 128 Bytes
Dateiheader, dieser  Dateikopf  ist  unter  FutureOS  stark  erweitert
worden. Der Dateikopf gibt  zustzliche  Informationen ber den Inhalt
einer Datei.
Diese OS Funktion gibt  lediglich  diese FutureOS spezifischen Zusatz-
Informationen am Bildschirm aus. Siehe Einsprung-Bedingungen!
Dabei handelt es sich entweder  um eine Kopfzeile, ein Semigrafik-Icon
oder eine echtes Grafikicon. Siehe dazu auch gesonderte Information.

Bitte Beachten: Ein FutureOS Dateiheader mu ab &B400 im RAM liegen.
Vor Aufruf der OS Funktion sollte  MODE  1 eingestellt werden, und der
Bildschirm auf 32 mal 32 MODE 1 Zeichen eingestellt werden.






























          ECHTZEITUHR-VERWALTUNG INS RAM KOPIEREN
          =======================================

Kurzbeschreibung: Kopiere Code der Echtzeituhr-Verwaltung ins RAM.

Label: DOBIN

ROM-Nummer: A

Startadresse: &FE6E

Einsprungbedingungen: -

Aussprungbedingungen: Der Smart-Code wurde ab  LUHR, RDUK und KOAS ins
RAM kopiert. Die Smart-Watch kann nun abgefragt werden.

Manipuliert: BC, DE, HL und die Flags.

Beschreibung: Die Dobbertin bzw. dxs  Echtzeituhr  wird am CPC wie ein
ROM angeschlossen. Um Daten von ihr  lesen  zu knnen, mu die von der
Uhr belegte ROM-Nummer eingeblendet werden.  Ist die Uhr eingeblendet,
dann  ist  das  FutureOS  natrlich   ausgeblendet.  Deshalb  sind  OS
Funktionen erforderlich die zuerst die  Uhr einblenden, die Zeit-Daten
lesen, und dann wieder das FutureOS einblenden.
Fr die Echtzeituhr der M4  Erweiterung  verhlt es sich hnlich, auch
hier wird Zeit und Datum aus M4 ROM gelesen.
OS Funktionen zum lesen oder schreiben  von Zeit und Datum mssen also
im RAM vorhanden  sein,  und  dort  mssen  sie  zuerst mal hinkopiert
werden.  Dies  ist  die   Aufgabe   von   DOBIN.   DOBIN  kopiert  die
entsprechenden OS Funktionen ins  RAM.  Normalerweise  wird DOBIN nach
jedem Systemstart aufgerufen, die Uhrverwaltung sollte sich also immer
im RAM befinden.
Sollte ein Programm  aber  das  entsprechende  RAM  berschreiben, was
tunlichst zu vermeiden ist, dann  knnen die Funktionen zur Verwaltung
von Echtzeituhren wieder hergestellt werden - eben mit DOBIN.
Um die Daten der Echtzeit-Uhr zu  lesen  verwendet man die OS Funktion
LUHR, sie liest Zeit  und  Datum  im  die  dafr vorgesehenen Bytes ab
UHR_00.
Sollte eine M4 Karte angeschlossen  sein,  so  wird die M4 Echtzeituhr
benutzt, selbst  wenn  die  Dobbertin  oder  die  dxs  RTC  zustzlich
angeschlossen ist.

Bitte Beachten: Es werden einige  OS  Funktionen  ins RAM kopiert. Die
Uhr wird jedoch mittels LUHR gelesen.




















          ASCII-ZEICHEN 8-FACH GEZOOMT DARSTELLEN
          =======================================

Kurzbeschreibung: Ein ASCII-Zeichen wird, in X- und Y- Richtung 8-fach
gezoomt, dargestellt.

Label: PR2GR

ROM-Nummer: A

Startadresse: &FE68

Einsprungbedingungen: L = Zeichen von &00 bis &FF, es mu Mode 2 aktiv
sein, RAM-Variablen C_POS und MAX_CRX mssen korrekte Werte enthalten.

Aussprungbedingungen: 8-fach gezoomtes Zeichen ab C_POS dargestellt.

Manipuliert: AF, BC, DE, HL, BC', HL', YL und das V-RAM.

Beschreibung: Diese OS Funktion dient  dazu  in  Mode 2 ein Zeichen 8-
fach gezoomt darzustellen. Das Zeichen wird ab C_POS ausgegeben, C_POS
selbst bleibt aber erhalten. Rechts  bzw.  unterhalb von C_POS sollten
noch acht Spalten bzw. Zeilen frei sein. Das Bildschirmformat (Spalten
* Zeilen) kann beliebig gewhlt  sein,  aber die korrekte Spalten-Zahl
mu in der RAM-Variable MAX_CRX enthalten sein.

           ACHT BIT BREITE BIT-MATRIX DARSTELLEN
           =====================================

Kurzbeschreibung: Eine acht Bit  breite,  und beliebig hohe Bit-Matrix
wird dargestellt. Siehe auch OS Funktion PR2GR, Prinzip ist hnlich.

Label: PR2GS

ROM-Nummer: A

Startadresse: &FE65

Einsprungbedingungen: HL = QuellAdr. Matrix-Daten, es mu Mode 2 aktiv
sein, RAM-Variablen C_POS und MAX_CRX mssen korrekte Werte enthalten.
YL = Anzahl der Zeilen der Matrix = Anz. Quellbytes ab HL.

Aussprungbedingungen: Bit-Matrix ab C_POS dargestellt.

Manipuliert: AF, BC, DE, HL, BC', HL', YL und das V-RAM.

Beschreibung: Diese OS Funktion hnelt  im Prinzip obigier OS Funktion
PR2GR, nur wird diesmal  kein  Zeichen  dargestellt, sondern eine Bit-
Matrix. Der Unterschie liegt darin, da  ein Zeichen immer 8 Bit breit
und hoch ist, wogegen die  Bit-Matrix  in  diesem Falle zwar ebenfalls
acht Bit breit ist, aber fast beliebig hoch.
Beim Aufruf wird die Anzahl der Zeilen, also die Hhe der Matrix in YL
bergeben, setzt man sie z.B. auf  10,  dann ist es mglich mit dieser
OS Funktion  die  komplette  Tastaturmatrix  darzustellen,  siehe auch
Programm "ZeigeTasten".
Beim Aufruf zeigt HL auf  das  erst  Quellbyte, diese Bytes werden von
oben nach unten, untereinander auf dem Bilschirm dargestellt. Da jedes
Byte bekanntlich acht Bit  hat,  ist  die  Matrix  auch immer acht Bit
breit.

Bitte Beachten: Die Anzahl der Matrix-Zeilen  darf nicht so gro sein,
dass die Matrix nach unten ber  den  Bildrand reicht! Die Matrix wird
zwar ab C_POS dargestellt, C_POS bleibt jedoch erhalten.

                   DRUCKEN EINES 7-BIT ZEICHENS
                   ============================

Kurzbeschreibung: Ein 7-Bit Wert (&00 ... &7F / 0 ... 127) wird an den
Drucker geschickt. Alle CPCs.

Label: DRZ7

ROM-Nummer: A

Startadresse: &D67B

Einsprungbedingungen: A = zu druckernder Wert &00..&7F // 0..127.
PIO Port B (Adresse &F5??) mu auf Eingabe stehen (Drucker-Status).

Aussprungbedingungen: Das Zero Flag  gibt  Aufschluss  ber den Erfolg
der Aktion.
Z-Flag  gesetzt ( Z) ==> Zeichen wurde korrekt an Drucker geschickt.
Z-Flag gelscht (NZ) ==> Drucker war NICHT bereit!

Manipuliert: F, BC und der Druckerport &EF??.

Beschreibung: DRZ7 ist eine OS Funktion, die es erlaubt auf allen CPCs
einen 7 Bit Wert an  den  Drucker  zu  schicken.  Der Akku enthlt bei
Aufruf den zu druckenden Wert, sein 8. Bit wird einfach ignoriert.
Wurde der Wert korrekt an  den  Drucker  geschickt,  dann kehrt die OS
Funktion mit gesetztem Zero  Flag  zurck.  Ist  das Zero-Flag dagegen
gelscht, dann war der Drucker nicht zur bernahme eines Bytes bereit.

Bitte Beachten: PIO Port B  muss  auf  Eingabe stehen, denn sonst kann
der  Status  des  Druckers  nicht  berprft  werden.  Dies  ist  aber
normalerweise der Fall. DIES GILT BEI ALLEN DRUCK-FUNKTIONEN!



                  WARTEN BIS DRUCKER BEREIT IST
                  =============================

Kurzbeschreibung: Diese OS Funktion wartet bis der Drucker bereit ist,
das erste/nchste Zeichen zu empfangen.

Label: XW_DR

ROM-Nummer: A

Startadresse: &D70D

Einsprungbedingungen: -

Aussprungbedingungen: Drucker ist bereit ein Zeichen zu empfangen.

Manipuliert: AF, BC und PIO Status (Port B ist Eingang).

Beschreibung: Will man  ein  Zeichen  an  den  Drucker  schicken, dann
sollte dieser auch dazu bereit  sein.  Diese  OS Funktion XW_DR warten
nun darauf, dass der Drucker  Bereitschaft  meldet. Dies ist der Fall,
wenn Bit 6 der PIO Port B gelscht ist.
XW_DR kehrt erst zurck,  wenn  der  Drucker  bereit ist. Anschlieend
kann man ein Zeichen an den Drucker schicken.

Bitte Beachten: Achtung,  ist  der  Drucker  z.B.  ausgeschalten, dann
kehrt XW_DR NICHT mehr zurck, da ja auf Bereitschaft gewartet wird.


        DRUCKEN EINES 8-BIT ZEICHENS (NUR 6128PLUS)
        ===========================================

Kurzbeschreibung: Ein 8-Bit Wert wird an den Drucker geschickt.
Nur fr 6128plus Computer!

Label: DRZP8

ROM-Nummer: A

Startadresse: &D657

Einsprungbedingungen: A = zu druckernder Wert &00 - &FF / 0 - 255.
PIO Port B (Adresse &F5??) mu auf Eingabe stehen (Drucker-Status).

Aussprungbedingungen: Das Zero Flag  gibt  Aufschluss  ber den Erfolg
der Aktion.
Z-Flag  gesetzt ( Z) ==> Zeichen wurde korrekt an Drucker geschickt.
Z-Flag gelscht (NZ) ==> Drucker war NICHT bereit!

Manipuliert: F, BC und der Druckerport &EF??.

Beschreibung: DRZP8 ist eine OS Funktion,  die es erlaubt auf dem 6128
Plus einen 8 Bit Wert an den Drucker zu schicken. Der Akku enthlt bei
Aufruf den zu druckenden Wert.
Wurde der Wert korrekt an  den  Drucker  geschickt,  dann kehrt die OS
Funktion mit gesetztem Zero  Flag  zurck.  Ist  das Zero-Flag dagegen
gelscht, dann war der Drucker nicht zur bernahme eines Bytes bereit.

Bitte Beachten: PIO Port B muss  auf Eingabe stehen. Diese OS Funktion
kann nur auf 6128plus Computern benutzt werden.

































           DRUCKEN EINES 8-BIT ZEICHENS (nur CPC Computer)
           ===============================================

Kurzbeschreibung: Ein 8-Bit Wert wird an den Drucker geschickt.
Nur fr CPC Computer!

Label: DRZO8

ROM-Nummer: A

Startadresse: &D66D

Einsprungbedingungen: A = zu druckernder Wert &00 - &FF / 0 - 255.
PIO Port B (Adresse &F5??) mu auf Eingabe stehen (Drucker-Status).

Aussprungbedingungen: Das Zero Flag  gibt  Aufschluss  ber den Erfolg
der Aktion.
Z-Flag  gesetzt ( Z) ==> Zeichen wurde korrekt an Drucker geschickt.
Z-Flag gelscht (NZ) ==> Drucker war NICHT bereit!

Manipuliert: F, BC und der Druckerport &EF??

Beschreibung: DRZO8 ist eine OS Funktion,  die es erlaubt auf den CPCs
alter Generation also 464/664/6128 und dem KCc einen 8 Bit Wert an den
Drucker zu schicken. Dies setzt  aber  vorraus, das der 8-Bit-Patch in
den CPC installiert wurde.  Siehe  Konfig-Bytes.  Der Akku enthlt bei
Aufruf den zu druckenden Wert.
Wurde der Wert korrekt an  den  Drucker  geschickt,  dann kehrt die OS
Funktion mit gesetztem Zero  Flag  zurck.  Ist  das Zero-Flag dagegen
gelscht, dann war der Drucker nicht zur bernahme eines Bytes bereit.

Bitte Beachten: PIO Port B muss auf Eingabe stehen.
Achtung: Diese OS Funktion setzt den PIO-8-Bit-Patch vorraus!































          DRUCKEN EINES STRINGS (7/8 BIT - CPC6128/6128plus)
          ==================================================

Kurzbeschreibung: Diese drei  OS  Funktionen  dienen  dem Ausdruck von
Stings. Je nach Rechner wird ein anderer Einsprung verwendet.

Labels:
o DRS7  : Drucken eines 7-Bit Strings auf allen CPCs, Plus und KCc
o DRSP8 : Drucken eines 8-Bit Strings auf dem 6128 Plus
o DRSO8 : Drucken eines 8-Bit Strings auf den CPCs 464/664/6128

ROM-Nummer: A

Startadresse: &D6F0 (DRS7) // &D692 (DRSP8) // &D6C5 (DRSO8)

Einsprungbedingungen: HL = Zeiger auf String-Anfang. &00 = End-Byte.

Aussprungbedingungen: Ein Rcksprung  erfolgt  erst  nach dem Ausdruck
aller Zeichen des Strings.

Manipuliert: AF, BC, DE, HL und der Drucker-Port.

Beschreibung: Will man mehrere Zeichen  ausdrucken, dann kann man eine
dieser OS Funktionen benutzen.
Jeh nach dem ob man 7- oder 8- Bit Werte ausdrucken will, jeh nach dem
ob man eine CPC Plus oder einen CPC der alten Generation benutzt, kann
man einen anderen Einsprung whlen.
Als Programm kann man in den  Konfig-Bytes nachschlagen um welchen CPC
es  sich  handelt,  und  ob  dieser  auch  mit  einer  8-Bit  Drucker-
Schnittstelle ausgerstet ist.
Beim Aufruf dieser OS  Funktion  mu  Register  HL  auf den Anfang der
auszudruckenden Zeichenkette zeigen. Dieser String  wird durch ein &00
Byte beendet.
Die OS Funktion kehrt  erst  nach  Ausdruck  aller Zeichen des Strings
zurck. Man sollte von  Aufruf  den  Status  des Druckers testen. Dies
geschieht z.B. folgendermaen:

TEST_DRUCKER LD  BC,&F782       ;PIO Steuerregister
        OUT (C),C       ;Port B als Eingang schalten.

        LD  B,&F5       ;PIO Port B
        IN  A,(C)       ;Drucker-Status lesen.
        BIT 6,A         ;Status testen.

        JR  NZ,DRUCKER_NICHT_BEREIT

        ;oder ...

        JR  Z,DRUCKER_IST_BEREIT


Bitte Beachten: Der Drucker mu bei  Aufruf einer dieser OS Funktionen
unbedingt bereit sein, denn sonst erfogt KEIN Rcksprung.











   HD20 - ERMITTLE DIE ANZAHL FREIER EINTRGE EINER HD20 PARTITION
   ===============================================================

Kurzbeschreibung: Diese OS Funktion  ermittelt  die  Anzahl der freien
IHV-Eintrge einer HD-Partition.

Label: EFED_HD

ROM-Nummer: A

Startadresse: &D71B

Einsprungbedingungen: REG08_1 = Partition 8...11 (entspricht I...L).
Das 32er IHV der Partition mu eingelesen sein.

Aussprungbedingungen: BC = &0020 // HL = &8000
DE = Anzahl der freien IHV/DIR Eintrge der Partition aus REG08_1.
Das 32er IHV/DIR der Partition ist ab &4000 eingeblendet.

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

Beschreibung: Diese  OS  Funktion  berechnet  die  Anzahl  der  freien
Eintrge  des  Inhaltsverzeichnisses   (IHV/DIR)   einer  Festplatten-
Partition.
Beim Aufruf wird die Nummer der  Partition in der RAM-Variable REG08_1
bergeben, die Partitionen  I,  J,  K  und  L  werden  dabei durch die
Nummern 8, 9, 10 und 11 symbolisiert, NICHT  durch 0 bis 3 wie bei den
HD - Ladefunktionen.
Die OS Funktion bercchnet die Anzahl  freier Eintrge und bergibt sie
in DE. Dabei kann DE Werte zwischen &0000 und &0200 annehmen, denn ein
16KB IHV stellt 512 Eintrge zur Verfgung.

Bitte Beachten:  Die  HD  mu  aktiv  sein  und  ihr  IHV  mu korrekt
eingelesen worden sein.






























       HD20 - BLOCKBELEGUNGSTABELLE EINER PARTITION GENERIEREN
       =======================================================

Kurzbeschreibung: Die Blockbelegungstabelle einer  HD - Partition wird
generiert.

Label: BBTG_HD

ROM-Nummer: A

Startadresse: &D73F

Einsprungbedingungen: REG08_1 = Partition 8...11 (entspricht I...L).
Das 32er IHV der Partition mu eingelesen sein.

Aussprungbedingungen: Blockbelegungstabelle ab &B000 im RAM.
Das 32er IHV/DIR der Partition ist ab &4000 eingeblendet.

Manipuliert: AF, BC, DE,  HL,  HL',  IX,  der  RAM-Status und der RAM-
Bereich von &B000 bis &B7FF.

Beschreibung: Diese OS Funktion  berechnet  die BBT (=Block-Belegungs-
Tabelle) einer Festplatten-Partition. Die BBT  wird ab &B000 angelegt,
und reicht normalerweise  (5  MB  Partition)  bis  &B50D,  maximal bis
&B7FF.
Die ersten vier Blcke (0 bis  3)  sind  fr das IHV/DIR der Partition
reserviert. Sucht man freie Blcke,  so  sollte  man  mit der Suche ab
Block &0004 = 4 beginnen. In dieser BBT steht das Block-Byte fr Block
&0000 in Adresse &B000, das fr  Block  &0001 in &B001 usw. Das letzte
Block-Byte fr Block &050D steht dann in Adresse &B50D.
Ein belegter Block wird dabei  durch  ein &FF Block-Byte symbolisiert,
ein freier Block durch ein &00 Block-Byte.
Beim Aufruf wird die Nummer der  Partition in der RAM-Variable REG08_1
bergeben, die Partitionen  I,  J,  K  und  L  werden  dabei durch die
Nummern 8, 9, 10 und 11 symbolisiert, NICHT  durch 0 bis 3 wie bei den
HD - Ladefunktionen.
Nach dem Rcksprung steht die BBT  ab  &B000 zur Verfgung, ihr folgen
&00 Bytes bis zur Adresse  &B7FF.  Das  32er  IHV der Partition bleibt
zwischen &4000 und &7FFF eingeblendet.

Bitte Beachten:  Die  HD  mu  aktiv  sein  und  ihr  IHV  mu korrekt
eingelesen worden sein.






















       HD20 - INHALTSVERZEICHNISSEINTRAG EINER DATEI GENERIEREN
       ========================================================

Kurzbeschreibung: Generierung  des  Inhaltsverzeichnisseintrages einer
auf HD zu sichernden Datei.

Label: EGEN_HD

ROM-Nummer: A

Startadresse: &D7A7

Einsprungbedingungen: 32er IHV/DIR mu ab &4000 eingeblendet sein.
BC = Blockanzahl der Datei, deren DIR-Eintag generiert werden soll.
REG16_8 = User(1), Name(8), Erweiterung(3) der Datei. 12 Bytes.
Ab &B000 mu eine BBT fr die HD Partition vorhanden sein.

Aussprungbedingungen: Die Datei hat im IHV/DIR ihren Eintrag erhalten.
Das 32er DIR/IHV der Partition ist nun unsortiert.

Manipuliert: AF, BC, E, BC', DE', HL', XL und das IHV ist unsortiert.

Beschreibung: Will man eine Datei auf  HD  speichern, dann mu man sie
auch im IHV(=Inhaltsverzeichniss)  mit  einem  oder mehreren Eintrgen
vermerken. Erst danach  kann  man  die  Speicher-Tablle mittels HD_TAB
generieren, und die eigentlichen Daten mit SHD4 bzw. SHD6 speichern.
Diese OS Funktion dient  nun  dazu  einer  zu speichernden Datei einen
oder  mehrere  Eintrge  im   IHV   zuzuweisen.   Dazu  sind  folgende
Einsprungbedingungen ntig:
o Das IHV, in das die Datei integriert werden soll, mu zwischen &4000
  und &7FFF eingeblendet sein (Dies erledigt z.B. BBTG_HD).
o Die BBT  (Block-Belegung-Tabelle)  dieser  Partition  (durch BBTG_HD
  generiert) mu ab &B000 im RAM stehen.
o Das Doppelregister BC enthlt die  Blockanzahl der Datei, deren IHV-
  Eintge (Extents) generiert werden sollen.
o Ab der RAM-Variable REG16_8 stehen 12 Bytes im RAM, die User(1Byte),
  Name(8) und Datei-Typ(3) der Datei enthalten.
Nach dem Aufruf der OS Funktion wurde fr die Datei ein Eintrag im IHV
generiert.
Fr jehweils 32 KB Dateilnge wird je  ein Eintrag im IHV belegt, denn
die Dobbertin HD hat eine Blockgre von 4 KB und 16 Bit Blocknummern.
Das IHV ist  nun  unsortiert.  Zum  sorieren  kann  man folgendermaen
vorgehen: ROM C einblenden, dann SSB0, ISWS und RRB0 aufrufen.
Bei der Generierung der Eintrge wird  die Record-Anzahl immer auf die
nchste 4 KB Grenze aufgerundet. Eine  17  KB Datei belegt auf HD also
20 KB. Siehe auch 4 KB Blockgre.

Bitte Beachten:  Beim  Rcksprung  ist  der  32er  IHV  der  Partition
unsortiert. Man sollte deshalb SSB0, ISWS, RRB0 (alle ROM C) aufrufen.















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

Kurzbeschreibung: Eine Datei wird (teilweise) auf Festplatte gesichert

Label: TSDHD (anfangs) und TDEHD (bei Dateirest)

ROM-Nummer: A

Startadresse: &D88D (TSDHD), &D87E (TSEHD)

Einsprungbedingungen:
a.) TSDHD:
A = Partition, auf die gespeichert werden soll: 8..11 (nur HD20 !!).
REG_BC1 = Dateilenge in KB.
REG16_8 = User(1), Name(8) und Extension(3) der Datei (12 Bytes).
b.) TSEHD: Die RAM  Variablen  REG_AF1,  REG_DE1,  REG_HL1, REG_IX und
REG16_8 bis REG16_8+12 mssen seit TSDHD erhalten worden sein.

Aussprungbedingungen: Der Akku liefert Informationen ber den Erfolg.
A = &FF ==> Die Datei wurde komplett auf HD geschrieben. Gut so!
A = &F0 ==> Die Datei wurde  nur  TEILWEISE auf HD geschrieben, es mu
    nochmals nachgeladen werden, der Rest wird mit TSEHD gesichert.
A = &00 ==> Es ist berhaupt kein DIR eingelesen.
A = &01 ==> Die gewhlte Partition ist nicht markiert.
A = &02 ==> Die Datei hat eine Lnge von 0 KB. Also auch Abbruch.
A = &04 ==> Im Ziel-DIR sind zu wenig Eintrge frei.
A = &05 ==> Es sind keine KZS im E-RAM belegt/sicherbar.

Bei TSDHD & TSEHD manipuliert: AF, BC, DE, HL, AF', BC', DE', HL', IX,
IY, RAM Variablen REG08_0,1, REG_DE1(low), REG_PC(low).
Nur bei TSDHD 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  und  die Inhaltsverzeichnisse
verndert.

Beschreibung: Diese  OS  Funktion  ist  das  Festplatten-Gegenstck zu
TEILA. Wrend TEILA eine  Datei  teilweise  ld,  dienen TSDHD / TSEHD
dazu die geladene Datei wieder abzuspeichern,  und zwar auf HD. Um auf
Diskette  Teil-zu-speichern  wrde  man  TEISI  /  TEISK  nutzen.  Das
Speichern geschieht hierbei komplett oder in Stckchen.
Zuerst springt  man  nach  TSDHD.  TSDHD  generiert  einen  Eintrag im
Inhaltsverzeichniss und  speichert  alle  KZS(Kurz-Zeit-Speicher)  auf
Diskette. Ein Fehler wird im Akku bergeben.
Kehrt TSDHD 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 s.o.
Es mu also erst der Dateirest mit TEILB nachgeladen werden, dann kann
dieser Rest mit TSEHD auf  HD  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  HD geschrieben. Dies hat z.B. dann
Sinn, wenn mehrere Dateien kopiert werden sollen.

Bitte Beachten: Das neue  DIR  mu  noch  mittels z.B. SIDIR gesichert
werden. Vor Aufruf  der  OS  Funktion  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.
ACHTUNG: TSDHD und TSEHD sind NUR fr HD zustndig. Die entsprechenden
OS Funktionen, um auf Disk Teil-zu-speichern sind in ROM C enthalten.

          TESTE OB DAS SYMBiFACE II VORHANDEN IST
          =======================================

Kurzbeschreibung: Diese Funktion ermittelt ob  ein SYMBiFACE II (nicht
CPC-IDE oder X-MASS) angeschlossen ist.

Label: T_SF

ROM-Nummer: A

Startadresse: &FE4D

Einsprungbedingungen: -

Aussprungbedingungen: Z-Flag gesetzt -> SYMBiFACE II angeschlossen
                        Zero gelscht --> SYMBiFACE II nicht vorhanden

Manipuliert: AF, BC und RTC-Millenium auf 20 gesetzt

Beschreibung: Diese Funktion wird dazu verwendet,  um zu testen ob ein
SYMBiFACE II angeschlossen ist. Je  nachdem,  ob ein SF2 angeschlossen
ist oder nicht, wird das Zero-Flag beeinflusst. Wenn ein SF2 vorhanden
ist, so wird das Zero Flag gesetzt, andernfalls gelscht.
Diese Funktion unterscheidet zwischen  CPC-IDE  bzw. X-MASS einerseits
und SYMBiFACE II andererseits.  Es  wird  die Existenz der Echtzeituhr
(RTC) getestet wird. Ein CPC-IDE  bzw.  X-MASS wird nicht erkannt, und
das Zero-Flag wird gelscht.

Bitte Beachten: Die CPC-IDE / X-MASS Erweiterungen wird nicht erkannt.
Diese Funktion setzt das Millenium-Byte der SF2-RTC auf 20.




          TESTE OB DAS SYMBiFACE III VORHANDEN IST
          ========================================

Kurzbeschreibung: Funktion tested ob das SYMBiFACE III vorhanden ist.

Label: T_SF3

ROM-Nummer: A

Startadresse: &D875

Einsprungbedingungen: -

Aussprungbedingungen: Z-Flag gesetzt -> SYMBiFACE III angeschlossen
                        Zero gelscht --> SYMBiFACE III nicht vorhanden

Manipuliert: AF und BC

Beschreibung: Diese Funktion wird dazu verwendet,  um zu testen ob ein
SYMBiFACE III angeschlossen ist. Je  nachdem, ob ein SF3 angeschlossen
ist oder nicht, wird das Zero-Flag beeinflusst. Ist ein SF3 vorhanden,
so wird das Zero Flag gesetzt, andernfalls gelscht.
Diese OS Funktion benutzt die Echo-Funktion  des  SF3 um zu testen, ob
es angeschlossen ist.

Bitte Beachten: -




          SCHREIBE ZEIT / DATUM IN DIE RTC DES SYMBIFACE II
          =================================================

Kurzbeschreibung: Diese OS Funktion  beschreibt  die RTC des SYMBiFACE
II mit Zeit- und Datums-Daten.

Label: S_SFRT

ROM-Nummer: A

Startadresse: &FE50

Einsprungbedingungen: HL = 7 Bytes Daten (Zeit, Datum; im BCD-Format)
                        Abfolge der 7  Bytes:  Sekunde,  Minute, Stunde,
                        Wochentag, Tag, Monat, Jahr

Aussprungbedingungen: Zeit-Daten in SYMBiFACE II-RTC geschrieben.

Manipuliert: AF, BC, DE, HL und SYMBiFACE II-RTC.

Beschreibung: S_SFRT dient dazu die  Echtzeituhr  des SYMBiFACE II mit
Zeit & Datum zu beschreiben. In  HL wird die Adresse eines Datenblocks
bergeben, der folgenden Aufbau hat:

- Sekunde       &00 - &59
- Minute        &00 - &59
- Stunde        &00 - &23
- Wochentag     &01 - &07 (1 = Montag)
- Tag   &00 - &31
- Monat &01 - &12
- Jahr  &00 - &99

Das Datenformat dieser  7  Bytes  ist  BCD,  diese  7  Bytes knnen an
beliebiger Stelle im Speicher lokalisiert sein.
Das FutureOS legt diese  7  Bytes  in  dieser  Form  ab UHR_SEK in den
System-Variablen ab. Will man die Uhr per Hand stellen, so kann dieser
Bereich ebenfalls verwendet werden.

Bitte Beachten: Es wird  nur  die  RTC  das  SYMBiFACE II beschrieben,
andere angeschlossene RTCs werden nicht beeinflusst.
























          SCHREIBE ZEIT / DATUM IN DIE RTC DES SYMBIFACE III
          ==================================================

Kurzbeschreibung: Diese OS Funktion  beschreibt  die RTC des SYMBiFACE
III mit Zeit- und Datums-Daten.

Label: S_SF3RTC

ROM-Nummer: A

Startadresse: &FE2C

Einsprungbedingungen:  Ab  der  System-Variable  UHR_SEK  mssen  sich
gltige Zeit-  und  Datums-Daten  befinden.  Es  wird  das  BCD-Format
verwendet.

Aussprungbedingungen: Zeit und Datum in SYMBiFACE III RTC geschrieben.

Manipuliert: AF, BC, DE, HL und SYMBiFACE III RTC.

Beschreibung: Die OS Funktion S_SF3RTC  dient dazu die Echtzeituhr des
SYMBiFACE III mit Zeit & Datum zu beschreiben.
Zeit und  Datum  werden  dafr  aus  den  System-Variablen  ab UHR_SEK
gelesen. Der Datenblock hat folgenden Aufbau:

- Sekunde       &00 - &59
- Minute        &00 - &59
- Stunde        &00 - &23
- Wochentag     &01 - &07 - ungenutzt
- Tag   &00 - &31
- Monat &01 - &12
- Jahr  &00 - &99

Das Datenformat dieser sieben Bytes ist BCD.

Bitte Beachten: Es wird  nur  die  RTC  das SYMBiFACE III beschrieben,
andere eventuell angeschlossene RTCs werden nicht beeinflusst.



























     SCHREIBE ZEIT / DATUM in die RTC des LAMBDASPEAK III oder FS
     ============================================================

Kurzbeschreibung: Diese OS Funktion beschreibt die RTC des LambdaSpeak
III bzw. FS mit Daten fr Zeit und Datum.

Label: S_LS3RTC

ROM-Nummer: A

Startadresse: &FE23

Einsprungbedingungen:  Ab  der  System-Variable  UHR_SEK  mssen  sich
gltige Zeit-  und  Datums-Daten  befinden.  Es  wird  das  BCD-Format
verwendet.

Aussprungbedingungen: Zeit und Datum wurden  in LambdaSpeak III/FS RTC
geschrieben.

Manipuliert: AF, BC, DE, HL und LambdaSpeak III/FS RTC.

Beschreibung: Die OS Funktion S_LS3RTC  dient dazu die Echtzeituhr des
LambdaSpeak III/FS mit Zeit & Datum zu beschreiben.
Zeit und  Datum  werden  dafr  aus  den  System-Variablen  ab UHR_SEK
gelesen. Der Datenblock hat folgenden Aufbau:

- Sekunde       &00 - &59
- Minute        &00 - &59
- Stunde        &00 - &23
- Wochentag     &00 - &06
- Tag   &00 - &31
- Monat &01 - &12
- Jahr  &00 - &99

Das Datenformat dieser sieben Bytes in den OS Variablen ist BCD.

Bitte Beachten: Es wird lediglich  die  RTC  des  LambdaSpeak III / FS
beschrieben,  andere  eventuell   angeschlossene   RTCs  werden  nicht
beeinflusst.

























        SCHREIBE ZEIT / DATUM in die RTC der NOVA Erweiterung
        =====================================================

Kurzbeschreibung: Diese OS Funktion beschreibt  die RTC der Nova Karte
mit Daten fr Zeit und Datum.

Label: S_NRTC

ROM-Nummer: A

Startadresse: &FCCA

Einsprungbedingungen:  Ab  der  System-Variable  UHR_SEK  mssen  sich
gltige Zeit-  und  Datums-Daten  befinden.  Es  wird  das  BCD-Format
verwendet.

Aussprungbedingungen: Zeit und Datum wurden in Nova RTC geschrieben
Bei gesetztem Carry wurden die Daten geschrieben.
Bei geleertem Carry wurde keine Nova Karte gefunden.

Manipuliert: AF, BC, DE, HL und die Nova RTC

Beschreibung: Die OS Funktion  S_NRTC  dient  dazu die Echtzeituhr der
Nova Karte mit Zeit & Datum zu beschreiben.
Zeit und  Datum  werden  dafr  aus  den  System-Variablen  ab UHR_SEK
gelesen. Der Datenblock hat folgenden Aufbau:

- Sekunde       &00 - &59
- Minute        &00 - &59
- Stunde        &00 - &23
- Wochentag     &00 - &06
- Tag   &00 - &31
- Monat &01 - &12
- Jahr  &00 - &99

Das Datenformat dieser sieben Bytes in den OS Variablen ist BCD.

Bitte Beachten: Es wird lediglich die RTC der Nova beschrieben, andere
eventuell angeschlossene RTCs werden nicht beeinflusst.

























           LESE ZEIT und DATUM der SYMBiFACE II-RTC ins RAM
           ================================================

Kurzbeschreibung: Die Daten (z.B. Zeit  und Datum) der Echtzeituhr des
SYMBiFACE II werden ins RAM gelesen.

Label: R_SFRT

ROM-Nummer: A

Startadresse: &FE53

Einsprungbedingungen: HL = Zeiger auf 10 Bytes Puffer im RAM

Aussprungbedingungen: Puffer (ab voriger Adresse  in HL) mit RTC-Daten
gefllt. Die  Abfolge:  Jahr,  Monat,  Tag,  Wochentag,  Alarm Stunde,
aktuelle  Stunde,  Alarm  Minute,   aktuelle  Minute,  Alarm  Sekunde,
aktuelle Sekunde.

Carry geleert --> Daten ordnungsgem gelesen!
Carry gesetzt --> Ein Fehler ist aufgetreten, z.B. ein Uhr-Update.

Manipuliert: AF, BC, D, HL und 10 Bytes ab altem HL im RAM.

Beschreibung: R_SFRT liest die Daten  der Echtzeituhr des SYMBiFACE II
ins RAM. Die Zieladresse wird vor Aufruf der Funktion in HL bergeben.
Nach dem Aufruf dieser OS Funktion stehen die 10 Byte RTC-Daten ab der
zuvor in HL bergebenen Adresse im RAM. Die Abfolge ist die folgende:

- Jahr                  &00 - &99
- Monat                 &01 - &12
- Tag                   &01 - &31
- Wochentag                     &01 - &07 (1 = Montag)
* Alarm Stunde          &00 - &23
- Aktuelle Stunde               &00 - &23
* Alarm Minute          &00 - &59
- Aktuelle Minute               &00 - &59
* Alarm Sekunde         &00 - &59
- Aktuelle Sekunde      &00 - &59

Die Daten werden ebenfalls wieder  im  BCD  Format bergeben. Siehe OS
Funktion zuvor.
Der Erfolg dieser OS Funktionen lt  sich am Carry-Flag erkennen. Ist
das Carry-Flag nach dem  Rcksprung  der  Funktion geleert wurden alle
Daten  ordnungsgem  gelesen.  Ist  das  Carry  nach  dem  Rcksprung
allerdings gesetzt, so  ist  ein  Fehler  aufgetreten,  in den meisten
Fllen  wird  von  der   Echtzeituhr   gerade  ein  'internes  Update'
duchgefhrt. In diesem Fall ist es  sinnvoll die Funktion einfach noch
ein mal aufzurufen.

Bitte Beachten: Nach der Ausfhrung  der  OS Funktion bitte eventuelle
Fehler durch das Carry-Flag analysieren.












          LESE ZEIT UND DATUM DER SYMBiFACE III RTC INS RAM
          =================================================

Kurzbeschreibung: Die  Daten  (Zeit  und  Datum)  der  Echtzeituhr des
SYMBiFACE III werden ins System-RAM (ab UHR_SEK) gelesen.

Label: R_SF3RTC

ROM-Nummer: A

Startadresse: &FE2F

Einsprungbedingungen: Ein SF3 sollte vorhanden sein

Aussprungbedingungen: Die sieben  System-Variablen  ab  UHR_SEK wurden
mit Daten der SF3 RTC gefllt.

Manipuliert: AF, BC, DE, HL und sieben Bytes ab UHR_SEK.

Beschreibung: Die OS Funktion R_SF3RTC liest die Daten der Echtzeituhr
des SYMBiFACE III  ins  System-RAM,  und  zwar  ab der System-Variable
UHR_SEK (plus folgende Zeit-/Datums-Bytes).
Nach dem Aufruf dieser OS  Funktion  stehen die sieben Bytes RTC-Daten
ab UHR_SEK im System-RAM:

- Aktuelle Sekunde      &00 - &59
- Aktuelle Minute               &00 - &59
- Aktuelle Stunde               &00 - &23
- Wochentag                     &01 - &07 - ungenutzt!
- Tag                   &01 - &31
- Monat                 &01 - &12
- Jahr                  &00 - &99

Die Daten werden ebenfalls wieder  im  BCD  Format bergeben. Siehe OS
Funktion zuvor.

Bitte Beachten: -



























LESE ZEIT und DATUM der LAMBDASPEAK III bzw. FS RTC ins RAM ab UHR_SEK
======================================================================

Kurzbeschreibung: Die  Daten  (Zeit  und  Datum)  der  Echtzeituhr des
LambdaSpeak III / FS werden ins System-RAM (ab UHR_SEK) gelesen.

Label: R_LS3RTC

ROM-Nummer: A

Startadresse: &FE26

Einsprungbedingungen: LambdaSpeak III oder FS mit RTC vorhanden

Aussprungbedingungen: Die sieben  System-Variablen  ab  UHR_SEK wurden
mit Daten der LS3/LFS RTC gefllt.

Manipuliert: AF, BC, DE, HL und sieben Bytes ab UHR_SEK

Beschreibung: Die OS Funktion R_SF3RTC liest die Daten der Echtzeituhr
des LambdaSpeak III/FS ins System-RAM, und zwar ab der System-Variable
UHR_SEK (plus folgende Zeit-/Datums-Bytes).
Nach dem Aufruf dieser OS  Funktion  stehen die sieben Bytes RTC-Daten
ab UHR_SEK im System-RAM:

- Aktuelle Sekunde      &00 - &59
- Aktuelle Minute               &00 - &59
- Aktuelle Stunde               &00 - &23
- Wochentag                     &00 - &06
- Tag                   &01 - &31
- Monat                 &01 - &12
- Jahr                  &00 - &99

Die Daten werden ebenfalls wieder  im  BCD  Format bergeben. Siehe OS
Funktionen zuvor.

Bitte Beachten: Ein LambdaSpeak III  bzw.  FS mit RTC sollte vorhanden
sein.


























         LESE ZEIT und DATUM der NOVA RTC ins RAM ab UHR_SEK
         ===================================================

Kurzbeschreibung: Die Daten (Zeit und  Datum) der Echtzeituhr der Nova
Erweiterung werden ins System-RAM (ab UHR_SEK) gelesen.

Label: R_NRTC

ROM-Nummer: A

Startadresse: &FCB6

Einsprungbedingungen: NOVA mit RTC vorhanden

Aussprungbedingungen: Die sieben  System-Variablen  ab  UHR_SEK wurden
mit Daten der NOVA RTC gefllt.
Bei gesetztem Carry wurden die Daten gelesen.
Bei geleertem Carry wurde keine Nova Karte gefunden.

Manipuliert: AF, BC, DE, HL und sieben Bytes ab UHR_SEK

Beschreibung: Die OS Funktion R_NRTC  liest  die Daten der Echtzeituhr
der Nova Erweiterung ins System-RAM,  und  zwar ab der System-Variable
UHR_SEK (plus folgende Zeit-/Datums-Bytes).
Nach dem Aufruf dieser OS  Funktion  stehen die sieben Bytes RTC-Daten
ab UHR_SEK im System-RAM:

- Aktuelle Sekunde      &00 - &59
- Aktuelle Minute               &00 - &59
- Aktuelle Stunde               &00 - &23
- Wochentag                     &00 - &06
- Tag                   &01 - &31
- Monat                 &01 - &12
- Jahr                  &00 - &99

Die Daten werden ebenfalls wieder  im  BCD  Format bergeben. Siehe OS
Funktionen zuvor.

Bitte Beachten: Eine Nova Karte mit RTC sollte vorhanden sein.

























 DATEN der SYMBIFACE II RTC in FUTUREOS RAM-VARIALBLEN TRANSFERIEREN
 ===================================================================

Kurzbeschreibung: Die zuvor mittels  R_SFRT gelesenen RTC-Daten werden
in das FutureOS Format konvertiert und ab UHR_SEK abgelegt.

Label: K_SF2O

ROM-Nummer: A

Startadresse: &FE56

Einsprungbedingungen: HL zeigt auf  10  Byte  RTC-Daten. Deren Abfolge
ist: Jahr, Monat, Tag, Wochentag, Alarm Stunde, aktuelle Stunde, Alarm
Minute, aktuelle Minute, Alarm Sekunde, aktuelle Sekunde.

Aussprungbedingungen: 7 Zeit / Datums-Bytes wurden ab UHR_SEK abgelegt

Manipuliert: F, BC, DE und HL

Beschreibung: Werden die Daten  der  SYMBiFACE  II Echtzeituhr mittels
R_SFRT in 10 Bytes RAM  gelesen,  so  entsprechen sie in ihrer Abfolge
nicht den Zeit-Bytes des FutureOS.  Die Funktion konvertiert die zuvor
eingelesenen Bytes in das  FutureOS  Zeit-  und Datums-Format. Vor dem
Aufruf dieser OS Funktion ist ihr in HL mitzuteilen ab welcher Adresse
die zuvor gelesenen  10  Bytes  stehen.  Nach  der  Rckkehr  diese OS
Funktion sind dann 7 Bytes  (Uhrzeit,  Wochentag, Datum) ab UHR_SEK in
den FutureOS System-Variablen abgelegt.

Bitte Beachten: Die  Alarm-Stunde,  -Minute,  und  -Sekunde wird nicht
konvertiert.

































  DIE ECHTZEITUHR DES SYMBIFACE II WIRD AUF BCD-KODIERUNG GESCHALTEN
  ==================================================================

Kurzbeschreibung: Die Zeitverwaltung  der  SYMBiFACE  II  RTC wird auf
BCD-Kodierung geschalten.

Label: RTC2BC

ROM-Nummer: A

Startadresse: &FE59

Einsprungbedingungen: -

Aussprungbedingungen: Zero-Flag gesetzt ==> BCD war bereits aktiviert
                        Zero-Flag geleert ==> RTC jetzt auf BCD gestellt

Manipuliert: AF, BC, DE, HL und die SF-RTC

Beschreibung: Die Echtzeituhr des SYMBiFACE  II wird auf BCD-Kodierung
gestellt. Die RTC beherrscht sowohl  BCD- als auch Binr-Kodierung, da
BCD aber einfacher  und  schneller  zu  handhaben  ist  wird  es unter
FutureOS  verwendet.  Auerdem  verwenden  die  Echtzeituhren  anderer
Hersteller (z.B.  Dobbertin)  ebenfalls  standartmig  BCD-Kodierung.
Unter FutureOS werden die zentralen Zeit-Daten in den System-Variablen
(ab UHR_00) dementsprechend ebenfalls im BCD Format verwaltet.

Bitte Beachten: Das Umstellen  der  SYMBiFACE  II  RTC  fhrt u.U. bei
nicht-FutureOS-Programmen zu  Problemen,  wenn  diese  nur  mit Binr-
Kodierung arbeiten knnen.


































           ALARM-ZEIT IN DIE RTC DES SYMBIFACE II SCHREIBEN
           ================================================

Kurzbeschreibung: Die Alarmzeit (Stunde, Minute,  Sekunde) der RTC des
SYMBiFACE II wird gesetzt.

Label: S_SFWZ

ROM-Nummer: A

Startadresse: &FE4A

Einsprungbedingungen: HL = Zeiger auf  drei  Bytes  Alarm Daten im BCD
Format. Aufbau: Sekunde (&00-&59), Minute (&00-&59), Stunde (&00-&23).

Aussprungbedingungen: Alarm-Zeit der SYMBiFACE II RTC gesetzt.

Manipuliert: AF, BC, DE, HL und SF-RTC (auf BCD gesetzt!)

Beschreibung: Die interne Alarm-Zeit der  Echtzeituhr des SYMBiFACE II
wird gesetzt. Bei Aufruf der OS Funktion mu HL einen Zeiger auf einen
drei Byte-Datenblock enthalten, der den folgenden Aufbau hat:
- Sekunde &00-&59
- Minute  &00-&59
- Stunde  &00-&23
Die drei Alarm-Zeit Bytes werden wie blich im BCD Format bergeben.

Bitte Beachten: Das setzen der  Alarm-Zeit  in  der SF-RTC fhrt nicht
automisch zum Auslsen eines Weck-Alarms  unter FutureOS, dazu mu die
entsprechende Weck-Zeit im Turbo-Desk eingestellt werden.


































   KONVERTIERE DATEN EINER PROPORTIONALEN MAUS INS JOYSTICK FORMAT
   ===============================================================

Kurzbeschreibung: Diese OS  Funktion  liest  die  Positionsdaten einer
aktiven proportionalen Maus ein und  wandelt  sie  in ein zum Joystick
kompatibles Format um

Label: M_CON

ROM-Nummer: A

Startadresse: &FD32

Einsprungbedingungen: -

Aussprungbedingungen: Register A enthlt  die Aktions-Bits. Ein leeres
Bit entspricht einer Feuertaste oder Richtung.

A = %1, Feuer 2, Feuer 1, Feuer 0, Rechts, Links, Unten, Oben (0=AN)

Manipuliert: AF, BC, DE, H und IY

Beschreibung:  Die  OS   Funktion   M_CON   dient   zur   Abfrage  der
angeschlossenen proportionalen Muse.  Es  werden  die  PS/2  Maus des
SYMBiFACE II, die  USB  Maus  des  SYMBiFACE  III  und  die  Muse des
MultiPlay berprft. Diese  Daten  werden  im Joystick Bit-kompatiblen
Format bergeben.
Falls keine Maus angeschlosse  ist  bzw.  keine  Maus bewegt wurde, so
kehrt diese OS Funktion mit dem Wert &FF in Register A zurck.
Ansonsten haben die einzelnen Bits die  selbe Bedeutung wie bei den OS
Funktionen H_JC, H_CCE und H_JOY.

Bit 0: Aufwrts
Bit 1: Abwrts
Bit 2: Links
Bit 3: Rechts
Bit 4: Feuer 0
Bit 5: Feuer 1
Bit 6: Feuer 2
Bit 7: 1 (immer auf 1 gesetzt)

Bitte Beachten: -






















                ABFRAGE EINER PROPORTIONALEN MAUS
                =================================

Kurzbeschreibung: Diese OS  Funktion  liest  die  Positionsdaten einer
angeschlossenen und betriebsbereiten  proportionalen  Maus  ein. Dabei
werden alle vom FutureOS untersttzten Muse bercksichtigt.

Label: R_ALM

ROM-Nummer: A

Startadresse: &FC6E

Einsprungbedingungen: -

Aussprungbedingungen: Das Zero-Flag informiert ber den Erfolg

Zero-Flag gesetzt: Keine Maus vorhanden oder sie wurde nicht bewegt
Zero-Flag geleert: Erfolg! Siehe Daten in folgenden Registern:

 D = Feuer-Tasten %000, Back, Fwd, Feuer 2, Feuer 1, Feuer 0 (1=AN)

 E = Mausrad &01-&1F (positiv) oder &FF-&E0 (negativ)

YL = delta X-Koordinate
   = %00000001 (+1) bis %00011111 - Maus nach rechts bewegt
   = %11111111 (-1) bis %11100000 - Maus nach links bewegt

YH = delta Y-Koordinate
   = %00000001 (+1) bis %00100000 - Maus runter
   = %11111111 (-1) bis %11100000 - Maus rauf

Manipuliert: AF, BC, DE, H und IY

Beschreibung:  Die  OS   Funktion   R_ALM   dient   zur   Abfrage  der
angeschlossenen proportionalen Muse.  Es  werden  die  PS/2  Maus des
SYMBiFACE II, die USB  Maus  des  SYMBiFACE  III  oder Albireo und die
Muse des MultiPlay berprft.
Falls keine Maus angeschlosse  ist  bzw.  keine  Maus bewegt wurde, so
kehrt diese OS Funktion mit  gesetzten  Zero-Flag zurck. Ist das Zero
Flag jedoch gelscht, so knnen die relevanten Daten aus den Registern
D, E, YL und YH gelesen werden.
Die bergebenen delta-X und delta-Y  Werte knnen dirket zur aktuellen
Position addiert werden.
Siehe dazu auch die nachfolgenden OS Funktionen.

Bitte  Beachten:  Diese  OS   Funktion   bercksichtigt  alle  vom  OS
untersttzten Muse.
















                ABFRAGE DER SYMBiFACE II PS/2 MAUS
                ==================================

Kurzbeschreibung: Diese OS Funktion liest  die Positionsdaten der PS/2
Maus des SYMBiFACE II ein.

Label: R_PS2

ROM-Nummer: A

Startadresse: &FE32

Einsprungbedingungen: -

Aussprungbedingungen: Das Zero-Flag informiert ber den Erfolg

Zero-Flag gesetzt: Keine Maus vorhanden oder sie wurde nicht bewegt
Zero-Flag geleert: Erfolg! Siehe Daten in folgenden Registern:

 D = Feuer-Tasten %000, Back, Fwd, Feuer 2, Feuer 1, Feuer 0 (1=AN)

 E = Mausrad &01-&1F (positiv) oder &FF-&E0 (negativ)

YL = delta X-Koordinate
   = %000 00001 (+1) bis %000 11111 (+31) - Maus nach rechts bewegt
   = %111 11111 (-1) bis %111 00000 (-31) - Maus nach links bewegt

YH = delta Y-Koordinate
   = %000 00001 (+1) bis %001 00000 (+32) - Maus runter
   = %111 11111 (-1) bis %111 00000 (-31) - Maus rauf

Manipuliert: AF, BC, DE, H und IY

Beschreibung: Die OS Funktion R_PS2  dient  zur  Abfrage der PS/2 Maus
des SYMBiFACE II. Falls keine PS/2  Maus angeschlossen ist wird in den
Doppelregistern DE und IY jeweils  der  Wert &0000 zurckgegeben. Dies
ist auch der Fall falls gar kein SF2 angeschlossen ist.
Falls die SF2 PS2  Maus  erfolgreich  abgefragt  wird,  dann werden in
Register D die fnf mglichen  Feuerknpfe  in den Bits 4-0 angegeben.
In Register E wird der Versatz  des Mausrads bermittelt. Und Register
IY (low) und IY (high) enthalten die X- bzw. Y-Koordinate respektive.
Negative Werte werden im 2er Komplement angegeben, so wird -1 z.B. als
11111111 (binr) angegeben. Dadurch  kann  der  bergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Mit T_SF kann geprft werden, ob das SF2 und damit die
PS2 Maus angeschlossen sind.
Die PS2 Maus muss vor  dem  Einschalten  des SF2 (und anschlieend des
CPC) angeschlossen  werden  um  benutzt  werden  zu  knnen.  Das  SF2
beherrscht in diesem Fall kein "hot plug and play".














                ABFRAGE DER SYMBiFACE III USB MAUS
                ==================================

Kurzbeschreibung: Diese OS Funktion  liest  die Positionsdaten der USB
Maus des SYMBiFACE III ein.

Label: R_USB3

ROM-Nummer: A

Startadresse: &FE29

Einsprungbedingungen: -

Aussprungbedingungen: Das Zero-Flag informiert ber den Erfolg

Zero-Flag gesetzt: Keine Maus vorhanden oder sie wurde nicht bewegt
Zero-Flag geleert: Erfolg! Siehe Daten in folgenden Registern:

 D = Feuer-Tasten %000, Back, Fwd, Feuer 2, Feuer 1, Feuer 0 (1=AN)

 E = Mausrad 0 bis 100 (positiv) oder -1 bis -100 (negativ)

YL = delta X-Koordinate
   = %000 00001 (+1) bis %011 11111 (+100) - Maus nach rechts bewegt
   = %111 11111 (-1) bis %100 00000 (-100) - Maus nach links bewegt

YH = delta Y-Koordinate
   = %000 00001 (+1) bis %010 00000 (+100) - Maus runter
   = %111 11111 (-1) bis %110 00000 (-100) - Maus rauf

Manipuliert: AF, BC, DE und IY

Beschreibung: Die OS Funktion R_USB3  dient  zur  Abfrage der USB Maus
des SYMBiFACE III. Falls keine USB  Maus angeschlossen ist wird in den
Doppelregistern DE und IY jeweils  der  Wert &0000 zurckgegeben. Dies
ist auch der Fall falls gar kein SF3 angeschlossen ist.
Falls die SF3 USB  Maus  erfolgreich  abgefragt  wird,  dann werden in
Register D die fnf mglichen  Feuerknpfe  in den Bits 4-0 angegeben.
In Register E wird der Versatz  des Mausrads bermittelt. Und Register
IY (low) und IY (high) enthalten die X- bzw. Y-Koordinate respektive.
Negative Werte werden im 2er Komplement angegeben, so wird -1 z.B. als
11111111 (binr) angegeben. Dadurch  kann  der  bergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Mit T_SF3 kann  geprft  werden,  ob das SF3 und damit
die USB Maus angeschlossen sind.
Die USB Maus sollte vor dem  Einschalten des SF3 (und anschlieend des
CPC) angeschlossen werden.















                        ABFRAGE DER ALBIREO USB MAUS
                        ============================

Kurzbeschreibung: Diese OS Funktion  liest  die Positionsdaten der USB
Maus des Albireo ein.

Label: R_ALB

ROM-Nummer: A

Startadresse: &FBF2

Einsprungbedingungen: -

Aussprungbedingungen: Das Zero-Flag informiert ber den Erfolg

Zero-Flag gesetzt: Die Albireo Maus wurde nicht benutzt
Zero-Flag geleert: Erfolg! Siehe Daten in folgenden Registern:

 D = Tasten: %000, Back, Fwd, Mausrad-Knopf, Feuer 1, Feuer 0 (1=AN)

 E = Mausrad 0 bis 100 (positiv) oder -1 bis -100 (negativ)

YL = delta X-Koordinate
   = %000 00001 (+1) bis %011 11111 (+100) - Maus nach rechts bewegt
   = %111 11111 (-1) bis %100 00000 (-100) - Maus nach links bewegt

YH = delta Y-Koordinate
   = %000 00001 (+1) bis %010 00000 (+100) - Maus runter
   = %111 11111 (-1) bis %110 00000 (-100) - Maus rauf

Manipuliert: AF, BC, DE, IY und das 8. Bit der OS Variable DEFRAS

Beschreibung: Die OS Funktion R_ALB dient zur Abfrage der USB Maus des
Albireo.  Falls  keine  USB  Maus   angeschlossen   ist  wird  in  den
Doppelregistern DE und IY jeweils der Wert &0000 zurckgegeben.
Falls die Albireo USB Maus erfolgreich  abgefragt wird, dann werden in
Register D die fnf mglichen  Feuerknpfe  in den Bits 4-0 angegeben.
In Register E wird der Versatz  des Mausrads bermittelt. Und Register
IY (low) und IY (high) enthalten die X- bzw. Y-Koordinate respektive.
Negative Werte werden im 2er Komplement angegeben, so wird -1 z.B. als
11111111 (binr) angegeben. Dadurch  kann  der  bergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Vor der Benutzung der  Albireo Maus sollte man prfen,
ob ein Albireo vorhanden ist (siehe Bit 1 der OS Variable KF_MED).
Wurde der Albireo USB Port fr  etwas  anderes genutzt, dann bitte die
OS Funktion 'IALM' in ROM  A  (an  Adresse  &FBB5) aufrufen, bevor die
Albireo Maus wieder abgefragt wird.  IALM manipuliert die Z80 Register
AF, BC, DE und HL.














                ABFRAGE DER BEIDEN MultiPlay MUSE
                ==================================

Kurzbeschreibung: Diese drei  OS  Funktionen  dienen  der  Abfrage der
beiden Muse, die an das MultiPlay (MP) angeschlossen werden knnen.

Labels: R_MPM, R_MPM1 und R_MPM2

ROM-Nummer: A

Startadresse: &FD5B(R_MPM), &FC7C(R_MPM1) und &FC99(R_MPM2)

Einsprungbedingungen: Bei  Verwendung  von  R_MPM1  und  R_MPM2 sollte
zuvor getestet werden, ob eine Maus an Port A oder B selektiert wurde.

Aussprungbedingungen: Das Zero-Flag informiert ber den Erfolg

Zero-Flag gesetzt: Keine Maus vorhanden oder sie wurde nicht bewegt
Zero-Flag geleert: Erfolg! Siehe Daten in folgenden Registern:

 D = Feuer-Tasten %00000, Feuer_2, Feuer_1, Feuer_0 (1=AN)

 E = Mausrad, immer &00 (aus Kompatibilitt zu R_PS2 und R_USB3)

YL = X-Koordinate
   = %0000 0001 (+1) bis %0000 1111 (+15) - Maus nach rechts bewegt
   = %1111 1111 (-1) bis %1111 0000 (-15) - Maus nach links bewegt

YH = Y-Koordinate
   = %0000 0001 (+1) bis %0000 1111 (+15) - Maus runter
   = %1111 1111 (-1) bis %1111 0000 (-15) - Maus rauf

Manipuliert: AF, BC, DE und IY. Und bei R_MPM auch Register L

Beschreibung: Die OS Funktionen  R_MPM,  R_MPM1  und R_MPM2 dienen zur
Abfrage der beiden Maus-Ports des  MultiPlay.  Dabei fragt R_MPM beide
Muse ab und liefert die Daten der ersten Maus, die bewegt wurde.
R_MPM1 und R_MPM2 fragen respektive die Maus  an Port 1 bzw. an Port 2
des MP ab. Diese beiden OS Funktionen darf man nur aufrufen, wenn auch
ein MP angeschlossen wurde  und  die  Ports  auf Maus-Betrieb gestellt
sind. Um das zu prfen bitte Bit 3  in OS Variable KF_MED und die Bits
1 und 0 in OS ROM A Variable KOBYB testen (siehe Handbuch). Nur die OS
Funktion R_MPM tested selbst ob eine Maus angeschlossen ist und bewegt
wurde.
Nach dem Rcksprung einer der  drei  OS  Funktionen gibt das Zero-Flag
an, ob die  Maus  bewegt  wurde.  Ist  das  Zero-Flag  gesetzt, so ist
entweder keine Maus bewegt worden  oder  keiner der MP-Ports wurde auf
'Maus' gestellt (siehe KOBYB in ROM A, siehe Handbuch).
Wurde eine Maus erfolgreich abgefragt,  dann  werden in Register D die
drei mglichen Feuerknpfe in den  Bits  2-0  angegeben. In Register E
steht der Wert &00. Und zwar aus  Grnden der Kompatibilitt zu den OS
Funktionen R_PS2 und R_USB3, die in E die Daten des Maus-Rads angeben.
Register IY (low) und IY (high)  enthalten die Vernderung der X- bzw.
Y-Koordinate respektive.
Negative Werte werden im 2er Komplement angegeben, so wird -1 z.B. als
11111111 (binr) angegeben. Dadurch  kann  der  bergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Nur OS Funktion  R_MPM  prft,  ob  sowohl MP als auch
eine Maus an einem Port des MP angeschlossen ist.




      DEKOMPRIMIERUNG EINER ADVANCED OCP ART STUDIO *.SCR DATEI
      =========================================================

Kurzbeschreibung:  Diese  beiden  OS   Funktionen   dienen  dazu  eine
komprimierte Bilddatei des Advanced OCP Art Studios zu dekomprimieren.

Label: OCPC0 und OCPXX

ROM-Nummer: A

Startadresse: &C18C (OCPC0) und &C18F (OCPXX)

Einsprungbedingungen: HL = Quelladresse  des komprimierten Bildes, das
zuvor ins RAM geladen wurde.
Bei OCPXX muss DE zustzlich mit  einer Zieladresse geladen werden, ab
der das entkomprimierte Bild (16 KB) abgelegt wird. Bei OCPC0 wird das
Bild automatisch ab &C000 abgelegt.

Aussprungbedingungen: Zero-Flag gesetzt --> 16KB entkomprimiertes Bild
liegt ab &C000 (bei OCPC0) bzw.  ab  Adresse,  die zuvor in DE geladen
wurde, im Speicher.
Zero-Flag gelscht --> Es ist ein Fehler aufgetreten!

Manipuliert: AF, BC, DE, HL, IX, IYL und RAM(entkomprimiertes Bild)

Beschreibung: Diese beiden OS Funktionen dienen dazu eine Bild - Datei
(*.SCR), die vom Zeichenprogramm  Advanced  OCP Art Studio komprimiert
wurde wieder zu entkomprimieren.
Dazu muss man das komprimiert Bild  zuerst ins RAM laden. Die Adresse,
an die das Bild geladen wurde, wird nun an OCPC0 bzw. OCPXX bergeben.
Nach dem Aufruf von OCPC0  befindet  sich  das entkomprimierte Bild ab
der Adresse &C000 (bis &FFFF) im RAM.
Soll das Bild an eine andere  Adresse im RAM entkomprimiert werden, so
ist OS Funktion OCPXX  zu  verwenden.  Vor  dem  Aufruf von OCPXX muss
allerdings Register  DE  mit  der  entsprechenden  Zieladresse geladen
werden.
Die 16 KB Grafik-Daten des  entkomprimierten Bildes werden nach Aufruf
der OS Funktion  im  RAM  abgelegt,  exakt  ab  der  Stelle, die zuvor
mittels DE spezifiziert wurde.

Bitte Beachten: Wird OCPXX anstelle von OCPC0 verwendet, so ist DE mit
einer Zieladresse zu laden,  aber  der  Platz  fr  16 KB Grafik-Daten
vorhanden ist.





















                 SCHNELLE 8 DURCH 8 BIT DIVISION
                 ===============================

Kurzbeschreibung: Diese OS Funktion dividiert 8 Bit durch 8 Bit.

Label: DIV88

ROM-Nummer: A

Startadresse: &C1DE

Einsprungbedingungen: D = Dividend (die Zahl die geteilt wird)
                        E = Divisor (die Zahl mit der "D" geteilt wird)

Aussprungbedingungen: D = Quotient (D/E)
                        A = Rest (unteilbarer Rest, der brig bleibt)

Manipuliert: AF, D

Beschreibung: Diese OS  Funktion  erlaubt  es  einen  8  Bit Wert sehr
schnell durch einen anderen 8 Bit Wert zu teilen (Integer Division).
In D wird der Dividend und in E der Divisor bergeben. Die OS Funktion
teilt den Inhalt von Register D durch den Wert aus Register E.
Nach Aufruf der OS Funktion steht  der  Quotient der Division (D/E) in
Register D. Sollte ein Rest brig  bleiben, so wird dieser in Register
A (Akkumulator) bergeben.

Bitte Beachten: Es handelt sich um  eine ganzzahlige Division. Auf dem
CPC existiert wohl keine schnellere Mglichkeit  8  Bit durch 8 Bit zu
teilen.


































        EDITIEREN DES SPEICHERS IM HEXADEZIMAL-MODUS
        ============================================

Kurzbeschreibung: Ein Speicherbereich  von  &01E0  Bytes  (der bereits
angezeigt wird) wird im Hexadezimal-Modus editiert.

Label: EDIT

ROM-Nummer: A

Startadresse: &FE5C

Einsprungbedingungen:
- Register IY enthlt die Adresse ab der editiert werden soll.
- Die RAM Variable MON_ROM enthlt  entweder  &82 oder &86, je nachdem
  ob das untere  ROM  oder  RAM  whrend  des  Editierens eingeblendet
  werden soll (zwischen &0000 und &3FFF).
- Die RAM Variable MON_RAM enthlt &C0 oder &C4, &C5 etc. je nachdm ob
  die ersten  64  KB  oder  Erweiterungs-RAM  whrend  des  Editierens
  eingeblendet sein soll.
- Der zu editierende Speicherbereich wird bereits angezeigt (F_DUMP).

Aussprungbedingungen: Speicher wurde editiert

Manipuliert: AF, BC, HL, AF', IX, PIO, PSG

Beschreibung: Beschrnkt einsetzbare EDITier-Funktion des Speichers.

Bitte Beachten: --- weitere Informationen folgen ---
           - CODE Beispiel auf nchster Seite -


































Beispiel: Editieren des Speichers mit F_DUMP und EDIT
=====================================================

 CALL S68X30 ;Setze Bildschirm auf 68 Zeichen und 30 Zeilen!

 LD HL,&4000:LD (REG16_1),HL ;Startadresse ab der editiert wird


ED_L0 LD HL,(REG16_1):CALL F_DUMP ;DUMP ROM (in E-RAM) - 480 Bytes

 CALL XWART ;Warten bis Tastatur frei ist

ED_L1 LD HL,&0804:CALL HOLE1TS:JP Z,ED_EX ;ESC!

 CALL H_JC
 RRCA:JR NC,ED_UP ;Auf
 RRCA:JR NC,ED_DN ;Ab
 RRCA:JR NC,ED_UP ;Links
 RRCA:JR NC,ED_DN ;Rechts
 RRCA:JR NC,ED_ED ;Feuer 0 (Editieren)
 RRCA:JR NC,ED_EX ;Feuer 1 (Beenden)
 JR ED_L1


ED_UP LD HL,(REG16_1):LD DE,&01E0:SBC HL,DE ;Auf / Links

 LD A,H:CP A,&40:JR NC,EDUPO ;HL >= &4000
 LD HL,&7E20

EDUPO LD (REG16_1),HL:JR ED_L0


ED_DN LD HL,(REG16_1):LD DE,&01E0:ADD HL,DE ;Ab / Rechts

 LD A,H:CP A,&80:JR C,EDUPO ;HL < &7FFF
 LD HL,&4000:JR EDUPO


ED_ED ;Feuer 0

 LD IY,(REG16_1):CALL EDIT ;EDIT ROM (in E-RAM) - 480 Bytes
 JR ED_L0


ED_EX RET ;Feuer 1 beendet



















           ABSCHALTEN ALLER KLANG-KANLE DES PSG
           =====================================

Kurzbeschreibung: Jegliche Klangproduktion durch  den  PSG wird sofort
abgeschalten.

Label: MAUS (Musik AUS)

ROM-Nummer: A

Startadresse: &FE5F

Einsprungbedingungen: -

Aussprungbedingungen: Musik-Ausgabe ausgeschalten

Manipuliert: AF, BC, DE (= &3F07) und PIO, PSG

Beschreibung:  MAUS  (Musik  AUS)  dient  dazu  die  komplette  Klang-
Erzeugung  durch  den  PSG  auszuschalten.  Alle  drei  Kanle  werden
ausgeschalten und die Lautstrke auf Null gesetzt.

Bitte Beachten: -









































        SENDEN EINES DATEN-BYTES AN EIN PSG REGISTER
        ============================================

Kurzbeschreibung: Ein Daten-Byte wird in ein PSG-Register geschrieben.

Label: S_PSG

ROM-Nummer: A

Startadresse: &FE62

Einsprungbedingungen: D = Daten-Byte fr den PSG
                        E = Nummer des PSG-Registers (Ziel)

Aussprungbedingungen:  Byte  aus  D   wurde   in  PSG-Register  aus  E
geschrieben.

Manipuliert: AF, BC, PIO und PSG

Beschreibung: Um ein beliebiges  Byte  in  ein beliebiges Register des
PSG zu schreiben wird S_PSG  benutzt.  Dabei  knnen alle Register des
PSG von &00 bis &0F verwendet werden.

Bitte Beachten: Nach  dem  Rcksprung  wurde  das  PIO Status-Register
manipuliert. Weiterhin wurde die Zeilen-Nummer der Tastatur-Matrix auf
Null gesetzt und ein eventuell laufender Kassettenrekorder angehalten.
Denn an den PIO Port C wurde zuletzt &00 geschickt.





































           ERMITTLE FREIEN 16 KB BLOCK IM ERWEITERUNGS-RAM
           ===============================================

Kurzbeschreibung: Ein freier 16 KB  Block  wird  in  den ersten 512 KB
E-RAM gesucht und in den System-Variablen als "genutzt" verbucht.

Label: EFER

ROM-Nummer: A

Startadresse: &D9C1

Einsprungbedingungen: -

Aussprungbedingungen: Der Akku A enthlt  die physikalische Nummer des
freien 16 KB E-RAMs (von &C4 bis &FF) das gefunden wurde. Oder ...
Enthlt der Akku den Wert 0  und  ist  das Zero-Flag gesetzt, so wurde
KEIN freies 16 KB E-RAM gefunden.
Wurde ein freies E-RAM gefunden  (physikalische  Nr. in A), so enthlt
das Registerpaar HL einen  Zeiger  auf  die zugehrige System-Variable
XRAM_C4 bis XRAM_FF. Diese XRAM_?? Variable wurde bereits mit dem Wert
&81 beschrieben, und das E-RAM dadurch als belegt markiert.

Manipuliert: AF, BC, HL, und eine der Variablen XRAM_C4 bis XRAM_FF.

Beschreibung: Die OS Funktion EFER dient  dazu ein freies 16 KB groes
Erweiterungs-RAM zu ermitteln.  Dabei  werden  nur  die  ersten 512 KB
durchsucht (physikalisch &7FC4 bis &7FFF).
Nach Aufruf von  EFER  wird  im  Akku  die  physikalische  Nummer (RAM
select) des freien 16 KB Blocks bergeben (&C4 bis &FF).
Ist das Zero-Flag gesetzt (und der  Akku  = &00), so wurde kein freies
E-RAM gefunden.
Neben der physikalischen E-RAM Nummer (in  A)  wird im Register HL ein
Zeiger auf die zu  dem  E-RAM  gehrende  XRAM Variable bergeben. Mit
Hilfe dieses Zeigers ist es mglich  dieses E-RAM nach Gebrauch wieder
freizugeben. Dies geschieht durch schreiben des Wertes &01.
Die entsprechende XRAM  Variable  wird  von  EFER  automatisch mit &81
beschreiben, damit ist das E-RAM  als  belegt  markiert und kann nicht
doppelt verwendet werden.

Ein Beispiel:
-------------

 CALL EFER              ;ermittle freies E-RAM
 JR   Z,FEHLER  ;Kein E-RAM frei !!!
 PUSH HL                ;Zeiger auf Variable XRAM_?? sichern

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

... ... ...             ;hier kann mit dem E-RAM gearbeitet werden

 POP HL         ;Zeiger auf Variable XRAM_?? holen
 LD  (HL),&01     ;E-RAM nach Gebrauch wieder freigeben

...

Bitte Beachten: Die System-Variablen  XRAM_C4  bis XRAM_FF mssen beim
Einsprung korrekte Werte enthalten (dies ist normalerweise der Fall).

Um ein auf diese Art belegtes E-RAM wieder freizugeben ist einfach die
von EFER in HL bergebene Variable/Adresse mit &01 zu beschreiben.


        XRAM-Variable in physikalische E-RAM Auswahl umrechnen
        ======================================================

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

Label: XR2ER

ROM-Nummer: A

Startadresse: &C022

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.

Manipuliert: AF und H.

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 XR2ER dient nun  dazu  eine  der XRAM Variablen in die
entsprechende Hardware E-RAM Auswahl  umzurechnen.  Dabei muss HL beim
Einsprung auf die XRAM-Variable zeigen. Nach dem Aussprung enthlt der
Akku den Wert (&C4...&FF) fr die Hardware E-RAM Auswahl.

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

 LD  B,&7F ;Gate Array - E-RAM Banking
 OUT (C),A ;E-RAM einblenden (zwischen &4000 und &7FFF)
























         LESE DATUM UND ZEIT VON EINER ECHTZEITUHR
         =========================================

Kurzbeschreibung: Datum  und  Zeit  werden  von  einer angeschlossenen
Echtzeituhr / Real-Time-Clock (RTC) gelesen.

Label: R_RTC

ROM-Nummer: A

Startadresse: &FE47

Einsprungbedingungen: Es sollte eine RTC vorhanden sein.

Aussprungbedingungen: Datum und Zeit  wurden  in  die UHR_?? Variablen
gelesen. Deren voriger Inhalt wurde in die AUH_?? Variablen kopiert.

Manipuliert: AF, BC, DE,  HL  die  System-Variablen UHR_00 bis UHR_JAR
und AUH_00 bis AUH_JAR. Ausserdem der RAM Bereich von &BE02 bis &BE0B.

Beschreibung: Fr den CPC existieren verschiedene Echtzeituhren (RTCs)
um den Computer mit aktuellen Zeit-Daten zu versorgen.
Die OS Funktion R_RTC prft,  ob  eine  RTC  von  Dobbertin / dxs, M4,
LambdaSpeak III  /  FS,  Nova  oder  die  des  SYMBiFACE  II  oder III
angeschlossen ist.  Falls  ja,  dann  werden  Zeit  und  Datum  in die
System-Variablen UHR_00  bis  UHR_JAR  eingelesen  (siehe  Datei  #OS-
VAR.DEU). Zeit  und  Datum  werden  dabei  vorteilhaft  im  BCD Format
abgelegt.
Die alten Werte fr Zeit und Datum  werden vor dem Einlesen in die die
System-Variablen AUH_00 bis AUH_JAR kopiert.

Bitte Beachten: Bei der Verwendung  dieser  OS Funktion solle entweder
eine Dobbertin RTC (bzw. der  Nachbau  von  dxs),  eine M4 Karte, eine
LambdaSpeak III/FS RTC, eine Nova RTC,  ein  SF-II oder SF-III mit RTC
vorhanden sein.





























    SCHREIBE DATUM UND ZEIT IN ALLE ANGESCHLOSSENEN ECHTZEITUHREN
    =============================================================

Kurzbeschreibung:  Datum  und  Zeit  werden  in  alle  angeschlossenen
Echtzeituhren / Real-Time-Clocks (RTCs) geschrieben.

Label: S_RTC

ROM-Nummer: A

Startadresse: &FD7D

Einsprungbedingungen: Es sollte mindestens eine RTC vorhanden sein.

Aussprungbedingungen: Datum und Zeit  wurden  von den UHR_?? Variablen
gelesen und in alle angeschlossenen RTCs geschrieben.

Manipuliert: AF, BC, DE, HL,  BC',  DE',  HL' und alle angeschlossenen
RTCs.

Beschreibung: Fr den CPC existieren verschiedene Echtzeituhren (RTCs)
um den Computer mit aktuellen Zeit-Daten zu versorgen.
Die OS Funktion S_RTC schreibt aktualisierte  Daten von Zeit und Datum
in alle momentan vorhandenen RTCs. Dabei werden die RTCs von Dobbertin
/ dxs, LambdaSpeak III/FS, Nova, SYMBiFACE II oder III bercksichtigt.
Dabei werden Zeit und  Datum  von  den  OS System-Variablen UHR_00 bis
UHR_JAR gelesen (siehe  Datei  #OS-VAR.DEU).  Zeit  und  Datum sind in
diesen Variablen stets im vorteilhaften BCD Format abgelegt.
Die alten Werte fr Zeit und Datum  werden vor dem Einlesen in die die
System-Variablen AUH_00 bis AUH_JAR kopiert.

Bitte Beachten: Bei der Verwendung  dieser  OS Funktion solle entweder
eine Dobbertin RTC (bzw. der Nachbau von dxs), eine LambdaSpeak III/FS
RTC, eine Nova RTC, ein SF-II oder SF-III mit RTC vorhanden sein.






























     GEBE TEXT AUF BILDSCHIRM (IN MODE 2) UND VIA LAMBDASPEAK AUS
     ============================================================

Kurzbeschreibung: Text wird auf  dem  Bildschirm  in MODE 2 ausgegeben
und parallen dazu mit dem LambdaSpeak Sprach-Synthesizer gesprochen.

Label: LTERM_2

ROM-Nummer: A

Startadresse: &FD7A

Einsprungbedingungen: Der Bildschirm-Modus 2 sollte aktiv sein.

Aussprungbedingungen: Der Text wurde am  Bildschirm ausgegeben und vom
LambdaSpeak gesprochen.

Manipuliert: AF, BC, DE, HL, AF',  BC',  DE', HL', die Cursor Position
C_POS und eine eventuelle vorherige Sprachausgabe wurde abgebrochen.

Beschreibung: Diese OS Funktion  LTERM_2  arbeitet  so  wie die TERM_2
Textausgabefunktion,  aber  zustzlich  wird  der  Text  auch  an  den
LambdaSpeak Sprachsynthesizer geschickt und gesprochen. Sollte aktuell
bereits ein Text gesprochen werden, so wird seine Ausgabe abgebrochen.
Der gesprochene Text  enthlt  dabei  keine  Kontroll-Kodes, und seine
Lnge ist auf 255 Bytes limitiert.
Sollte die Sprachausgabe abgeschalten sein (siehe OS Variable KOBYA in
ROM A), so wird kein Text gesprochen.
Fr die Textausgabe sollte der Bildschirm Modus 2 aktiv sein.

Bitte Beachten: Die Text Ausgabe erfolgt  fr MODE 2, also sollte MODE
2 auch aktiv sein.
Die maximale Textlnge betrgt 255 Bytes.
Die Sprachausgabe muss erlauft sein (siehe Variable KOBYA in ROM A).






























                 WANDLE BINR-ZAHL IN BCD-ZAHL UM
                 ================================

Kurzbeschreibung: Eine regulre binre Zahl (0-99) wird in eine Binr-
Codierte-Dezimal (BCD) Zahl umgewandelt.

Label: BIN2BCD (bzw. BIN2BCE, wenn Register E = 10)

ROM-Nummer: A

Startadresse: &FD34 (bzw. &FD36)

Einsprungbedingungen: D = Binrzahl von 0 bis 99
                        E = &0A (E = 10, bei Aufruf von BIN2BCE)

Aussprungbedingungen: A = BCD-Zahl (&00...&99)
                        E = &0A (Register E ist mit 10 geladen)

Manipuliert: AF und DE

Beschreibung: Diese OS Funktion(en) wandeln eine Binrzahl in eine BCD
Zahl um. BCD Zahlen lassen sich einfacher am Bildschirm darstellen. Im
FutureOS sind z.B. die Uhrzeit und  das  Datum in BCD Zahlen abgelegt,
siehe Variablen UHR_SEK bis UHR_JAR. Auch diverse Echtzeituhren nutzen
das BCD Format (z.B. die RTC von Dobbertin, dxs bzw. SYMBiFACE II).

Beispiel: Das Register D wird mit einer Binrzahl von 0 bis 99 geladen
und anschlieend wird die  OS  Funktion  BIN2BCD  aufgerufen. Nach dem
Rcksprung enthlt das Register A die  Zahl im BCD Format und Register
E wurde mit dem Wert &0A = 10 geladen.
Will man diese Funktion mehrmals verwenden, so kann man ab dem zweiten
Aufruf das Label BIN2BCE  verwenden  (denn  Register E enthlt bereits
den Wert 10. E dient hier als Divisor).

 LD   D,&12             ;D = &12 = 18 = Binrzahl
 CALL BIN2BCD   ;Binrzahl auf BCD konvertieren
 LD   (XXXX),A  ;A = &18, BCD Zahl ins RAM schreiben

 LD   D,&2D             ;D = 45
 CALL BIN2BCE   ;Binrzahl auf BCD, hier Label BIN2BCE verwendbar
 LD   (XXXX),A  ;A = &45, BCD Zahl in RAM

Bitte Beachten: Binr-Zahlen  grer  99  knnen  nicht  im BCD Format
dargestellt werden. Bitte nur Zahlen von 0 bis 99 verwenden.
Ruft man diese OS Funktion mit dem zweiten Label (BIN2BCE) auf, so ist
die Funktion um 2 us  schneller,  jedoch  muss  das  Register E mit 10
geladen sein. Dies ist nach erstmaligem Aufruf von BIN2BCD der Fall.

















                 WANDLE BCD-ZAHL IN BINR-ZAHL UM
                 ================================

Kurzbeschreibung: Eine Binr-Codierte-Dezimal (BCD)  Zahl wird in eine
regulre binre Zahl (0-99 / &00-&63) umgewandelt.

Label: BCD2BIN

ROM-Nummer: A

Startadresse: &FD4D

Einsprungbedingungen: A = BCD-Zahl von &00 bis &99

Aussprungbedingungen: A = Binrzahl von 0 bis 99 (= &00 bis &63)

Manipuliert: AF und DE

Beschreibung: Diese OS Funktion  wandelt  eine  binr codierte Dezimal
(BCD) Zahl in eine Binrzahl um.  BCD  Zahlen lassen sich einfacher am
Bildschirm darstellen. Im FutureOS sind z.B. die Uhrzeit und das Datum
in BCD Zahlen  abgelegt,  siehe  Variablen  UHR_SEK  bis UHR_JAR. Auch
diverse  Echtzeituhren  nutzen  das  BCD  Format  (z.B.  die  RTC  von
Dobbertin, dxs bzw. SYMBiFACE II).

Beispiel: Das Register A  wird  mit  einer  BCD  Zahl  von &00 bis &99
geladen und anschlieend wird die OS Funktion BCD2BIN aufgerufen. Nach
dem Rcksprung enthlt das Register A  die  Zahl im Binrzahl (= Byte)
Format.

Beispiel in Assembler:

 LD   A,&18             ;A = &18, BCD Zahl
 CALL BCD2BIN   ;BCD-Zahl in Binrzahl konvertieren
 LD   (XXXX),A  ;A = &12 = 18, binre Zahl ins RAM schreiben

Bitte Beachten: Binr-Zahlen  grer  99  knnen  nicht  im BCD Format
dargestellt werden. Bitte nur Zahlen von &00 bis &99 konvertieren.


























          WARTEN BIS DAS SYMBiFACE III BEREIT IST
          =======================================

Kurzbeschreibung: Warten bis das SYMBiFACE III Bereitschaft meldet.

Label: W_SF3

ROM-Nummer: A

Startadresse: &FD43

Einsprungbedingungen: Ein SF3 sollte vorhanden sein (siehe T_SF3)

Aussprungbedingungen: Das SF3 ist jetzt bereit Kommandos zu empfangen
                        Register BC = &FD41 = SF3 Status-Register
                        Zero-Flag gesetzt: SF3 meldet 'alles bestens'

Manipuliert: AF und BC

Beschreibung: Diese OS Funktion wartet so  lange bis das SYMBiFACE III
Bereitschaft meldet. Dabei liefert  Register  A  den  Wert des Status-
Registers des SF3: &00 (Zero  Flag  gesetzt)  =  alles in Ordnung. Ist
jedoch Register A = &02, dann ist ein Fehler aufgetreten.
Auerdem wird BC mit &FD41  geladen,  das  ist die Portadresse des SF3
Kommando-/Status-Registers.

Bitte Beachten: Diese OS  Funktion  sollte  nur verwendet werden, wenn
auch tatschlich ein SF3 angeschlossen ist.  Dies  kann man mit der OS
Funktion T_SF3 einmal testen.









SSS
===

Kurzbeschreibung: Bitte Kopie anlegen!!!

Label:

ROM-Nummer: A

Startadresse: &

Einsprungbedingungen:

Aussprungbedingungen:

Manipuliert:

Beschreibung:

Bitte Beachten:


Die neuste Version dieser Datei kann aus dem Internet bezogen werden:

http://www.FutureOS.de
