                                   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.  Sðmtliche  fôr den Anwender oder Programmierer
wichtige OS Funktionen des A-ROMs werden erklðrt 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 Grônden  der Kompatibilitðt 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  Kôrze, 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 erklðrt.

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 zerstórten Register
und RAM-Variablen  wiedergegeben.  Manchmal  werden  auch manipulierte
Pheripheriebausteine wiedergegeben.

8. Beschreibung: Es folgt  eine  vollstðndige  Erklðrung der Anwendung
und Wirkungsweise der beschriebenen OS Funktion.

9. Bitte Beachten: Es  werden  einige  wichtige  Details kurz erklðrt.
Dies ist besonders wichtig,  da  alle  OS  Funktionen kompromiºlos auf
Hóchstgeschwindigkeit  getrimmt worden  sind.  Bei falscher Handhabung
kann es zu Problemen mit der Systemstabilitðt kommen.


Im ROM A befindet sich die  Tastaturverwaltung, die Text- und Zeichen-
Verwaltung, Teile  der  Festplattenverwaltung,  die Druckerverwaltung.
Funktionen fôr 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  gedrôckt  ist,  wird  ihr   entsprechender  ASCII  Wert,  unter
Beachtung von SHIFT und CONTROL, bestimmt.

Label: H_ALLET

ROM-Nummer: A

Startadresse: &C02F

Einsprungbedingungen:  Die  Tastaturôbersetzungstabellen  fôr  Normal,
Shift, Control und Shift+Control môssen  intakt  sein. D.h. ab TAST_N,
TAST_S, TAST_C  und  TAST_SC  môssen  jehweils  80  Bytes  mit  Werten
zwischen &00 und &FE folgen. &00, &FF sollten nicht verwendet werden.

Aussprungbedingungen:
A = ASCII Wert, falls entsprechende Taste gedrôckt ist.
A = &FF falls keine Taste gedrôckt 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 gerdôckt ist.
Falls keine Taste gedrôckt ist kehrt sie mit &FF im Akku zurôck. Falls
aber gerade eine  Taste  gedrôckt  ist  wird  auºerdem  der  Shift und
Control Status der Tastatur ôberprôft.

Es werden vier Zustðnde unterschieden:
- weder Shift noch Control gedrôckt,
- Shift allein gedrôckt,
- Control allein gedrôckt oder ...
- Shift und Control gemeinsam gerdôckt.

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


Beispiel: Einlesen der ersten gedrôckten 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 gedrôck wurde
        DEC  A                  ; Ausgleich des INC A

Der Akku ist nun mit dem ASCII Wert der gedrôckten 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 gedrôckt  wurde.  Denn falls keine Taste gedrôckt
wurde wird im Akku der Wert &FF ôbergeben.




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

Kurzbeschreibung: Der Tastaturstatus  wird  getestet, falls irgendeine
Taste  gedrôckt  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  Tastaturôbersetzungstabellen  fôr  Normal,
Shift, Control und Shift+Control môssen  intakt  sein. D.h. ab TAST_N,
TAST_S, TAST_C  und  TAST_SC  môssen  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 gedrôckt ist.
A = &00 und das Z-Flag ist gesetzt, falls CAPS gedrôckt wurde.
A = &FF falls keine Taste gedrôckt wird.

Manipuliert: AF, BC, DE, HL, XL und der  PIO Status, Port A und C. PSG
Register 14, Latch Adress Register. Auºerdem wurde der Inhalt der RAM-
Variable CAPS verðndert, falls die CAPS Taste gedrôckt wurde.

Beschreibung: Diese OS  Funktion  ist  eine  Erweiterung  von H_ALLET.
Siehe unbedingt dort!!
Bei gedrôckter Taste wird  ihr  Wert  im  Akku  ôbergeben. Wird gerade
keine Taste gedrôckt,  dann  enthðlt  der  Akku  &FF (S-Flag gesetzt).
Enthðlt der  Akku  &00,  dann  wurde  CAPS  gedrôckt,  und  damit  die
Tastaturebene gewechselt.

Folgende Steuerfunktionen stehen zur Verfôgung:
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.

Drôckt man dagegen eine "normale"  Taste (nicht CAPS, CONTROL, SHIFT),
dann wird ihr Wert, jeh nach Tastaturebene, im Akku ôbergeben.
Drôckt man zu dieser Taste zusðtzlich  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 drôckt die Taste "s", dann
wird im  Akku  der  ASCII-Wert  von  "S"  ôbergeben.  Drôckt  man aber
zusðtzlich 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 lðºt 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 gedrôckt wurde.





           TESTE OB IRGENDEINE TASTE GEDRÔCKT IST
           ======================================

Kurzbeschreibung:  Diese  OS  Funktion   testet  ob  irgendeine  Taste
gedrôckt ist, ober nicht.

Label: TST_TS

ROM-Nummer: A

Startadresse: &C5FA

Einsprungbedingungen: -

Aussprungbedingungen:
Z-Flag gesetzt ==> Tastatur ist FREI, keine Taste gedrôckt.
Z-Flag gelóscht ==> irgendeine Taste wird gerade gedrôckt.

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

Beschreibung: Um zu testen ob ôberhaupt irgendeine Taste gedrôckt ist,
lðºt 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
gedrôckt ist. Ist das  Z-Flag  gesetzt  (Z,1),  dann  ist die Tastatur
frei, also wird  momentan  weder  irgendeine  Taste  noch der Joystick
betðtigt. Wenn allerdings das Z-Flag  rôckgesetzt  ist (NZ,0), so wird
momentan mindestens eine Taste gerdôckt.
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 gedrôckt
wird. Der Shift und Control Status  wird dabei nicht beachtet. Ist ein
Wert von &0 bis &F gelesen  worden  so  wird dieser zusðtzlich 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 gôltigen 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  gedrôckt wurde. Falls die DEL
Taste gedrôckt 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 gedrôckt wurde. Falls die DEL  Taste gedrôckt 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.
Zusðtzlich wird auf dem Bildschirm an der aktuellen Cursorposition das
zugehórige ASCII Zeichen ausgegeben. So bekommt der Akku z.B. den Wert
8 wenn  man  die  8-Taste  gedrôckt  hat,  und  es  erscheint  auf dem
Bildschirm eine Acht. Drôckt man z.B  die  C-Taste, dann wird der Akku
auf &C gesetzt und zusðtzlich der groºe 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 zurôck.
Wird sie aufgerufen, und man drôckt danach  keine Taste von 0 bis 9, A
bis F oder DEL, dann kehrt diese Funktion auch nicht mehr zurôck.
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 gedrôckt wird.

Label: WART_TS

ROM-Nummer: A

Startadresse: &C4DB

Einsprungbedingungen: -

Aussprungbedingungen: kehrt erst zurôck wenn keine Taste gedrôckt 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  Mðuse) auf gedrôckte
Tasten. Eine Rôckkehr erfolgt erst  machdem  keine Taste mehr gedrôckt
wird. Vom anologen Joystick-Port werden  nur die Feuerknópfe getestet.
Verwendung findet diese OS Funktion  z.B. dann, wenn man sicherstellen
will, daº eine zuvor gedrôckte Taste nun nicht mehr gedrôckt wird.

Bitte Beachten: Wird  irgendeine  Taste  stðndig  gedrôckt, dann kehrt
diese OS Funktion nicht  mehr  zurôck,  bis  sich  dies ðndert. Einige
Erweiterungen am Joystickport kónnen  u.  U.  einige  Signale fest auf
gedrôckt legen, in diesem  Fall  sollte  man  diese  OS Funktion nicht
verwenden, da ja so eine Rôckkehr nicht  mehr móglich 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 gedrôckt. 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
Verzógerungsszeit verstreichen  zu  lassen,  solange  irgendeine Taste
gedrôckt ist. Bei freigegebener Tastatur kehrt sie sofort zurôck.

Label: XWART

ROM-Nummer: A

Startadresse: &C671

Einsprungbedingungen: Es sind folgende RAM-Variablen zu setzen:

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

Aussprungbedingungen: Diese OS Funktion  kehrt  erst  dann zurôck wenn
keine Taste mehr gedrôckt  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  spðtestens  dann  zurôck  wenn  die jehweilige
Wartezeit abgelaufen ist. Bei der Wartezeit unterscheidet man zwischen
Anfangsverzógerung    und    Folgeverzógerung.     Dabei    ist    die
Anfangsverzógerung die Zeit, die gewartet wird, wenn diese OS Funktion
bei gedrôckter Taste das erste  Mal  aufgerufen  wird. Dagegen ist die
Folgeverzógerung die Zeit  die  bei  jeder  weiteren  Benutzung der OS
Funktion gewartet wird, vorrausgesetzt  es  ist  noch immer irgendeine
Taste gedrôckt. Lðºt man zwischendurch die Taste los, dann wird wieder
mit der Anfangsverzógerung begonnen.  Wird  zu  irgend einem Zeitpunkt
keine Taste gedrôckt, dann kehrt die OS Funktion sofort zurôck.
Vor Aufruf dieser OS Funktion sind fônf Variablen mit Daten zu fôllen,
dies wird aber  normalerweise  vom  OS  erledigt.  Man  kann die Werte
allerdings   ðndern.   Die   8   Bit    Variable   VZ_MOD   gibt   den
Verzógerungsmodus an. Normalerweise  wird  sie  auf  &00 gesetzt, also
Anfangs VZ. Will man ohne  spezielle  Anfangs  VZ arbeiten, dann setzt
man sie auf einen Wert gróºer &00.
Die 16 Bit Variablen  VZ_AG  und  VZ_AA  (s.o.)  kónnen einen Wert von
&0000 bis &FFFF annehmen, môssen  aber  auf  den gleichen Wert gesetzt
werden. In ihnen wird die Anfangsverzógerung gespeichert.
Auch die beiden 16 Bit  Variablen  VZ_FG  und  VZ_FA môssen den selben
Wert  zwischen   &0000   und   &FFFF   beinhalten,   sie   geben   die
Folgeverzógerung an.
Standartmðºig sollte man die fônf Variablen folgendermaºen 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  fôr  die  zu  testende  Taste  oder  fôr  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 gedrôckt waren.
Ist der Akku ungleich  &00  und  das  Zero  Flag  gelóscht, dann wurde
entweder die Taste nicht gedrôckt,  oder  es  wurden nicht alle Tasten
der Tastenkombination gedrôckt.

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

Beschreibung: Diese Funktion ermóglicht es sehr schnell eine bestimmte
Taste zu testen. Anhand des Akkus und des Zero Flags kann man erkennen
ob die gewðhlte Taste  zu  diesem  Zeitpunkt  gedrôckt  wurde. Fôr 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 móglich in dieser 8-Bit  Maske mehr als nur ein Bit zu
setzen.  Es  wird  dann  eine  Kombination  von  bis  zu  acht  Tasten
abgefragt. Man erhðlt allerdings nur dann die Meldung "gedrôckt", wenn
alle Tasten gedrôckt wurden.

Beispiel:

Will man z.B. die Taste mit dem  "S" testen, dann lðd 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  lðd  also das Register L mit
&10. &10 sieht im Binðrsystem so aus: 0001 0000.
Will man mit der Taste  "S"  gleichzeitig  auch  die Taste "D" testen,
dann lðd  man  das  Register  L  einfach  mit  dem  Wert  &30,  was im
Binðrsystem fôr 0011 0000 steht.  Es  wird  also  fôr jede zu prôfende
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 kónnen 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  groºen
Datenbereich ab dem die Tastaturinformation abzulegen ist.

Aussprungbedingungen: Die  10  Bytes  ab  HL  sind  mit  den aktuellen
Tastaturinformationen gefôllt.  Achtung:  Eine  gedrôckte  Taste  wird
durch ein gelóschtes Bit symbolisiert. Steht  ein Bit auf 1 dann wurde
die zugehórige Taste nicht gedrôckt.

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

Beschreibung: Diese OS Funktion lieºt die komplette Tastaturmatrix ins
RAM. Da diese Matrix aus 10 Reihen zu acht Bit besteht werden 10 Bytes
an RAM benótigt, 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  schleiºlich  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 gelóschtes Bit eine gedrôckte
Taste dar und  umgekehrt.  Ist  ein  Bit  also  gesetzt,  so wurde die
entsprechende Taste NICHT gedrôckt.





























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

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

Label: H_CURA

ROM-Nummer: A

Startadresse: &C250

Einsprungbedingungen: -

Aussprungbedingungen: Der Tastenstatus der  fônf  Tasten  wird im Akku
zurôckgegeben. 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 fônf  Bits  0..4  relevant.  Die  Bits  liefern  von  0  bis 4
folgenden  Tasten:  AUF,  RECHTS,  AB,   LINKS  und  COPY.  Wobei  ein
gelóschtes Bit eine gedrôckte Taste symbolisiert.

Bitte beachten: Achtung,  ein  Null-Bit  symbolisiert  eine  gedrôckte
Taste. Ist ein Bit gesetzt, dann ist die Taste NICHT gedrôckt.

























        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 gelóschtes Bit symbolisiert eine gedrôckte 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 gelóscht, dann ist die
entsprechende Taste gerade  gedrôckt.  Wenn  die  Taste nicht betðtigt
wird, dann ist das zugehórige 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 lðºt.

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 fôr SP enthalten, der
bei Druck von ESC in SP geladen werden kann.

Aussprungbedingungen: Jeh nach gedrôckter Taste  wird im Akku ein Wert
ôbergeben.

Cursor aufwðrts ==> A = &F0
Cursor  abwðrts ==> A = &F1
Cursor    links ==> A = &F2
Cursor   rechts ==> A = &F3
Copy   gedrôckt ==> A = &A4

Falls ESC gedrôckt wird, so wird  der  Wert  aus REG16_1 in SP geladen
und der Akku ist gelóscht.

Manipuliert: AF, BC, DE und SP falls ESC gedrôckt wurde.

Beschreibung: Diese OS  Funktion  lieºt  den  Tastaturstatus  der vier
Cussortasten, der Copy und  der  ESC  Taste  ein.  Falls eine der vier
Cursortasten oder die Copy Taste gedrôckt  wird,  so wird der Akku mit
einem der folgenden Bytes geladen.

Cursor aufwðrts gedrôckt: .. Der Akku bekommt den Wert: &F0
Cursor abwðrts gedrôckt: ... Der Akku bekommt den Wert: &F1
Cursor links gedrôckt: ..... Der Akku bekommt den Wert: &F2
Cursor rechts gedrôckt: .... Der Akku bekommt den Wert: &F3
Copy gedrôckt: ............. Der Akku bekommt den Wert: &A4

Wird allerdings die  ESCape  Taste  gedrôckt  so  verhðlt  sich die OS
Funktion vollkommen anders: Der  Akku  wird  gelóscht  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  nðchsten  RET  Befehl  chancenlos abstôrtzen. Der
Datentransfer von REG16_1  zu  SP  bietet  aber  folgende mðchtige und
vielseitige Móglichkeit. An irgendeiner Stelle  des Programms wird der
Wert des Stackpointers  SP  in  die  Variable  REG16_1 geladen. Danach
kónnen  nun  mehtere  CALL  Befehle   folgen,   d.h.  der  Stack  wird
manipuliert. Wird nun beim  Aufruf  dieser  OS  Funktion die ESC Taste
gedrôckt, so wird der alte  Wert des Stackpointers wieder hergestellt,
und ein RET Befehl gegeben. Diese OS Funktion kehrt also bei ESC dahin
zurôck wovon zuvor die Sicherung des Stacks durch einen Call ausgelóst
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 zurôckgekehrt wird.

Nðchste 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 fôhren. 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
zurôckgegeben. Nur Bits 0..5 relevant.

L = Joystick 0
H = Joystick 1

Die Bits haben folgende Bedeutung,  ein geleertes Bit entspricht einer
gedrôckten 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
GELÓSCHTES Bit eine GEDRÔCKTE  Taste  symbolisiert. Diese Funktion ist
zur OS Funktion H_CCE bitkompatibel (siehe dort).

Bitte beachten: Ein gesetztes  Bit  symbolisiert  eine NICHT gedrôckte
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 kónnen sich dieses  Bit  aber  sehr einfach selber dazulóten,
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 enthðlt 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
gedrôckten Taste / aktivierten Eingabe.

Bit 0: Aufwðrts
Bit 1: Abwðrts
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  lðºt  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  móglichen
digitalen  Joysticks,  oder  mit  den  Cursortasten  +  Copy  +  Enter
arbeiten. Diese OS Funktion fragt alle fônf Eingabemóglichkeiten ab.
Allerdings existiert in der Abfragereihenfolge eine Prioritðt: Oberste
Prioritðt 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 GELÓSCHTES Bit
eine GEDRÔCKTE 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 gedrôckte
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-
Anschlôssen eine Diode gespaart  wurde.  Plus  User kónnen sich dieses
Bit aber sehr einfach selber dazulóten, 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 enthðlt 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
gedrôckten Taste / aktivierten Eingabe.

Bit 0: Aufwðrts
Bit 1: Abwðrts
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  lðºt  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 móglichen  digitalen  Joysticks,  oder  mit den Cursor-
Tasten  +  Copy  +  Enter  arbeiten.  Diese  OS  Funktion  fragt  alle
Eingabemóglichkeiten ab.
Allerdings existiert in der Abfragereihenfolge eine Prioritðt: Oberste
Prioritðt 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 GELÓSCHTES Bit
eine GEDRÔCKTE 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 gedrôckte
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-Anschlôssen eine Diode gespaart wurde.  Plus User kónnen sich
dieses  Bit  aber  sehr  einfach   selber  dazulóten,  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 enthðlt 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 zurôck.
Falls ein MultiPlay angeschlossen ist werden beide Joysticks einglesen
und getestet. Falls gerade keine  Eingabe erfolgt kehrt TMPA ebenfalls
mit gesetztem Zero-Flag zurôck.
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. Mðuse 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 gedrôckte Taste / Richtung.
(Bei Tastatur und Joysticks des CPC  ist  es genau umgekehrt, beim CPC
symbolisiert ein gelóschtes Bit eine gedrôckte Taste).

BIT 0: Aufwðrts
BIT 1: Abwðrts
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  reprðsentiert,  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 ==> GEDRÔCKTE TASTE
GESETZTES BIT ==> TASTE NICHT GEDRÔCKT

































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

Kurzbeschreibung: Die Steuercode-Tabellen fôr  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  fôr  Mode  1  und  fôr  Mode 2
getrennte Zeichen-Ausgabe-OS Funktionen. Jeder  Mode hat seine eigenen
Steuerzeichen (siehe  dort!).  Fôr  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 fôr Mode 2.
Als Steuerzeichen sind grundsðtzlich die  ersten 32 Zeichen definiert,
jedes Steuerzeichen hat seine 2-Byte  Zieladresse. So werden fôr 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  verðndert,  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 geðnderten
Ð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 erhóht. Es wird mit Pen 01 gezeichnet.

Label: PRI0BB

ROM-Nummer: A

Startadresse: &C7B3

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

Aussprungbedingungen: Die Cursorposition wurde  um  2 erhóht, 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 irrtômlicherweise annehmen kónnte.

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 verðndert, 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 erhóht. 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  erhóht,  so  hat  man  automatisch zwischen jedem
Zeichen ein halbes SPACE, der Text ist dann nicht mehr so gedrðngt.

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 fôr 256 Zeichen stehen. Bevon man ein Zeichen ausgiebt hat
man selber dafôr 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 dafôr zu sorgen,
daº die RAM Variable C_POS  einen  gôltigen  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 fôr die  Pens  1..3 in Mode 1. Es
kónnen auch Zeichen ausgegeben werden,  deren linke Hðlfte eine andere
Farbe als ihre rechte Hðlfte  hat.  Auf  der  nðchsten Seite sind alle
OS Funktionen fôr die Mode 1 Einzel-Zeichen-Ausgabe aufgelistet.









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


 Label  ! Adresse !  Pen linke Zeichenhðlfte !  Pen rechts Hðlfte
        !               !                            !
=================================================================
        !               !                            !
 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 fôr Pen sind binðr 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 erhóht.

Label: PR_2

ROM-Nummer: A

Startadresse: &C9BD

Einsprungbedingungen: Die  Cursorposition  C_POS  muss  einen gôltigen
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 erhóht.

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

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

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


Label !! Adresse !! Attribut und Erklðrung.
      !!            !!
------!!---------!!------------------------
      !!            !!
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, schrðg 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 enthðlt die  Anzahl der auszugebenden Zeichen
plus 1.
HL zeigt auf  das  erste  auszugebende  Zeichen.  Die  anderen Zeichen
folgen speicheraufwðrts.
Die Ram Variable C_POS,  also  die  Cursorposition  muº einen gôltigen
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 fôr alle 256 Zeichen enthðlt.

Aussprungbedingungen: Die  Cursorposition  wurde  um  die  Anzahl  der
ausgegebenen  Zeichen  erhóht.  Man  kann  also  anschlieºend  weitere
Zeichen ausgeben, die dann  direkt  am  Ende  des zuletzt ausgegebenen
Strings angehðngt 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 kónnen  nur  Zeichen  im  Bereich  von  0  bis 255 ausgegeben
werden, da  fôr  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
enthðlt, 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 lðd 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  fôhren,  die  zwar die
Stabilitðt des Systems NICHT gefðhrden,  aber zur Verwirrung des Users
beitragen.  Diese  OS Funktion  ist  nur  in   Mode  1  zu  benutzen,  der
Programmierer hat selber dafôr Sorge  zu  tragen, daº Mode 1 aktiviert
ist.

Diese OS Funktion zeichnet in Pen 1, es  ist  aber auch móglich 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 Aufschlôsselung.
Siehe  auch  unter  'AUSGEBE  EINES  ZEICHENS   IN  MODE  1'  und  der
Folgeseite.

           AUFSCHLÔSSELUNG 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 binðr 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  fôr diese binðre Bezeichnung liegt
darin begrôndet 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 Lðnge der Zeichenkette plus 1.
HL = Start der Zeichenkette die auf einmal ausgebeben werden soll.
Die Cursorposition, sprich die RAM  Variable  C_POS muº einen gôltigen
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)  erhóht,  so daº weitere Zeichen
ausgegeben werden kónnen.
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  móglich im Mode 2 einen
String mit bliebiger Lðnge 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 móglich diese Stringausgabe  mit verschiedenen Attributen durch
zufôhren, siehe auch 'EINZELZEICHENAUSGEBE IN MODE 2'.


         !--------------------------------------------------!
         ! Label  ! Attribut des Strings          ! Adresse !
         !--------+-------------------------------+---------!
         ! STR_2  ! kein zusðtzliches 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   Lðnge  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 gôltigen  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 móglich 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 dafôr zu sorgen, ob ab &3800 ein RAM Zeichensatz geladen ist, oder
ob das untere ROM eingeblendet ist.

Wie  auch  bei  der   Stringausgabe   ohne  Steuerzeichen  kónnen  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 fôr Pen 1 und 10 fôr Pen 2 steht. Und 11 steht fôr 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
môºen geprôft sein.

Im Modus 2 ist es  móglich  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: Unabhðngig  vom  bisherigen  Bildschirmformat  wird  der
Bildschirm auf 64 Mode 2  Spalten  und  32  Zeilen gesetzt. Dabei wird
aber weder der Bildschirmmodus geðndert, noch der Bildschirm gelóscht.


        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 verðndert.

  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.  Auºerdem  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 lðd man mit der Startadresse des Speicherblocks
den man anzeigen will.  Der  Speicher wird folgendermaºen 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 Rôcksprung 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  gróºer als &4000 aus
aufgerufen werden, da sie vor dem Rôcksprung das untere ROM einblendet
und somit ein Rôcksprung ins RAM unterhalb von &4000 unmóglich 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 verðnderten 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
verðndert. 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 wðhlt man die
gewônschte Ein- oder Ausgabeadresse. Will  man einen Wert einlesen, so
fðhrt man den Cursor  auf  die  gewônschte  Adresse  und betðtigt Copy
sofort wird der  Wert  des  Ports  eingelesen  und  auf dem Bildschirm
ausgegeben. Will man einen Wert ausgeben,  so fðhrt man zuerst mit dem
Cursor die entsprechende Ausgabeadresse an,  dann drôckt man Copy, mun
tippt man einen hexadezimalen Wert im  Bereich  von  00 bis FF ein und
drôckt anschlieºend Return. Es gibt auch  die Móglichkeit das High und
Lowbyte einer beliebigen  I/O  Adresse  einzugeben.  Will  man  die OS
Funktion werlaºen, so wðhlt  man  eine  Ausgabefunktion an, und drôckt
die ESC Taste anstatt einen Wert einzugeben.

Bitte Beachten:  Es  kann  zu  Systemabstôrtzen  fôhren,  wenn  man an
bestimmt  Ports  Werte  ausgiebt,  oder  von  bestimmten  Ports  Werte
einlieºt.  Nur  der  Assembler-Profi   sollte  dieses  imens  mðchtige
Instrument  bedienen.   Der   Anfðnger   kónnte   erheblichen  Schaden
anrichten. Diese OS Funktion arbeitet mit abgeschaltenen Interrupts.


















    EINGABEFUNKTION FÔR 8 BIT WERTE MIT DARSTELLUNG AUF BILDSCHIRM
    ==============================================================

Kurzbeschreibung: Eingabe-Funktion fôr 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 enthðlt den vom Anwender eingegebenen Wert und
das Carry Flag ist auf 1 gesetzt.
Kehrt die OS Funktion mit gelóschtem Carry-Flag(NC) zurÔck, 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 enthðlt.

Beschreibung: Diese beiden OS  Funktionen stellen Eingabemóglichkeiten
fôr 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  fôr die
Eingabe von hexadezimalen Werten automatisch ôberschrieben werden.
Beide OS Funktionen RB_8 und  RBB_8  springen entweder zu BIT8_IN oder
B8DIN, abhðngig 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 gelóschtem
Carry Flag zurôck. Wurde die Eingabe  mit RETURN beendet, dann ist das
Carry Flag gesetzt.

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























 EINGABEFUNKTION FÔR 8 BIT WERTE (HEX) MIT DARSTELLUNG AUF BILDSCHIRM
 ====================================================================

Kurzbeschreibung: Eingabe-Funktion fôr 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 gelóschtem Carry-Flag(NC) zurÔck, 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 Eingabemóglichkeit fôr 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
hóherwertigen vier Bit, dann  die  niederwertigen  vier Bit. Es kónnen
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 lóschen. Die Eingabe wird mit RETURN abgeschlossen.
Abgesehen davon ist es móglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelóschtem Carry Flag
zurôck. 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 drôcken und
anschlieºend die ESC Taste.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurôck, 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
nðchsten Strohmausfall.

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

Diese OS Funktion wird von der F_PORT Monitorfunktion benutzt.



















 EINGABEFUNKTION FÔR 8 BIT WERTE (DEZ) MIT DARSTELLUNG AUF BILDSCHIRM
 ====================================================================

Kurzbeschreibung: Inputfunktion fôr 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 gelóschtem Carry-Flag(NC) zurÔck, 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 Eingabemóglichkeit fôr 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 kónnen 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 lóschen. Die Eingabe wird mit
RETURN abgeschlossen.
Abgesehen davon ist es móglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelóschtem Carry Flag
zurôck. Wurde die Eingabe mit RETURN  beendet, dann ist das Carry Flag
gesetzt.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurôck, wenn entweder
RETURN bzw. ESC vom Anwender gedrôckt wurden.

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

























   EINGABEFUNKTION FÔR 16 BIT WERTE MIT DARSTELLUNG AUF BILDSCHIRM
   ===============================================================

Kurzbeschreibung: Eingabe-Funktion fôr 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' enthðlt den vom Anwender eingegebenen 16 Bit
Wert und das Carry Flag ist auf 1 gesetzt.
Kehrt die OS Funktion mit gelóschtem Carry-Flag(NC) zurÔck, 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 enthðlt.

Beschreibung: Diese beiden OS  Funktionen stellen Eingabemóglichkeiten
fôr 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  fôr die
Eingabe von hexadezimalen Werten automatisch ôberschrieben werden.
Beide OS Funktionen RB_16 und  RBB_16  springen entweder zu B16IN oder
B16DIN, abhðngig 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 gelóschtem
Carry Flag zurôck. Wurde die Eingabe  mit RETURN beendet, dann ist das
Carry Flag gesetzt.

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























EINGABEFUNKTION FÔR 16 BIT WERTE (HEX) MIT DARSTELLUNG AUF BILDSCHIRM
=====================================================================

Kurzbeschreibung: Eingabe-Funktion  fôr  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 gelóschtem Carry-Flag(NC) zurÔck, 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 Eingabemóglichkeit fôr 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
hóherwertigen, dann die  niederwertigen  Bytes.  Es  kónnen 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 lóschen. Die Eingabe wird mit RETURN abgeschlossen.
Abgesehen davon ist es móglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelóschtem Carry Flag
zurôck. 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 drôcken und
anschlieºend die ESC Taste.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurôck, wenn entweder
vier Werte und ein RETURN bzw. ein ESC vom Anwender eingegeben wurden.
Ein anderer Ausstieg ist nicht móglich.

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

Diese OS Funktion wird vom FutureOS Monitor benutzt.




















EINGABEFUNKTION FÔR 16 BIT WERTE (DEZ) MIT DARSTELLUNG AUF BILDSCHIRM
=====================================================================

Kurzbeschreibung: Eingabe-Funktion fôr  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 gelóschtem Carry-Flag(NC) zurÔck, 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 Eingabemóglichkeit fôr 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  fônf  Werte  verlangt:  Zehntausender,
Tausender, Hunderter, Zehner und Einser. Es  kónnen 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 lóschen. Die
Eingabe wird mit RETURN abgeschlossen.
Abgesehen davon ist es móglich  die  Eingabe  mit  Hilfe der ESC Taste
abzubrechen, die OS  Funktion  kehrt  dann  mit  gelóschtem Carry Flag
zurôck. Wurde die Eingabe mit RETURN  beendet, dann ist das Carry Flag
gesetzt.

Bitte Beachten: Die OS Funktion kehrt  erst dann zurôck, wenn entweder
RETURN bzw.  ein  ESC  vom  Anwender  eingegeben  wurden.  Ein anderer
Ausstieg ist nicht móglich.

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 spðter auf dem Bildschirm ausgeben, daruch
erscheint das Byte hexadezimal mit zwei Stellen.

Label: N_2_2C

ROM-Nummer: A

Startadresse: &D58A

Einsprungbedingungen: A  = enthðlt 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 erhóht.  In (DE) steht das untere,
in (DE-1) das hóhere Nibble des Quellbytes.
Der Akku enthðlt das niederwertige Nibble.

Manipuliert: AF, BC und DE wurde um 1 erhóht.

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 kónnen
sofort  als  String  ausgegeben  werden,  und  es  erscheint  auf  dem
Bildschirm das Quellbyte, fôr 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
gôltigem  Wert  geladen,  so  werden   irgendwo  ins  RAM  zwei  Bytes
geschrieben. Dies kann unabsehbare Folgen nach sich ziehen.




























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

Kurzbeschreibung: Mittels  STED  lðºt  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.
Auºerdem 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  Stringlðnge  ist  nur  vom Bildschirmformat
abhðngig. STED lðuft 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 Stringlðnge entspricht also HL - DE.
Auºerdem kann  man  der  OS  Funktion  angeben  welcher Zeichenbereich
ôberhaupt zulðssig  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
dôrfen alle ASCII Zeichen von &20 bis &7F verwendet werden.
Wðrend 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  lðnger  sein,  als  dies das
Bildschirmformat zulðºt. Bei eimem Bildschirmformat von 64 Zeichen auf
32 Zeilen darf der String nicht lðnger als knapp 2 KB sein.
STED ist nur in MODE 2 lauffðhig. Und STED nur von &8000 bis &BFF0 aus
aufrufen! Bei Aufruf sollte HL gróºer 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. Auºerdem 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 Rôcksprung die
RAM-Konfiguration &C0 ein, also die  ersten 64K. Auºerdem 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. Auºerdem 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 Rôcksprung die
RAM-Konfiguration &C0 ein, also die  ersten 64K. Auºerdem 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 lóschen.
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  zusðtzliche  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 kónnen, muº die von der
Uhr belegte ROM-Nummer eingeblendet werden.  Ist die Uhr eingeblendet,
dann  ist  das  FutureOS  natôrlich   ausgeblendet.  Deshalb  sind  OS
Funktionen erforderlich die zuerst die  Uhr einblenden, die Zeit-Daten
lesen, und dann wieder das FutureOS einblenden.
Fôr die Echtzeituhr der M4  Erweiterung  verhðlt es sich ðhnlich, auch
hier wird Zeit und Datum aus M4 ROM gelesen.
OS Funktionen zum lesen oder schreiben  von Zeit und Datum môssen also
im RAM vorhanden  sein,  und  dort  môssen  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  kónnen 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  dafôr 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  zusðtzlich
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 môssen 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 gewðhlt  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 môssen 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 Hóhe der Matrix in YL
ôbergeben, setzt man sie z.B. auf  10,  dann ist es móglich 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 gelóscht (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 enthðlt 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  zurôck.  Ist  das Zero-Flag dagegen
gelóscht, 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  ôberprôft  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/nðchste 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 gelóscht ist.
XW_DR kehrt erst zurôck,  wenn  der  Drucker  bereit ist. Anschlieºend
kann man ein Zeichen an den Drucker schicken.

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


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

Kurzbeschreibung: Ein 8-Bit Wert wird an den Drucker geschickt.
Nur fôr 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 gelóscht (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 enthðlt bei
Aufruf den zu druckenden Wert.
Wurde der Wert korrekt an  den  Drucker  geschickt,  dann kehrt die OS
Funktion mit gesetztem Zero  Flag  zurôck.  Ist  das Zero-Flag dagegen
gelóscht, 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 fôr 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 gelóscht (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 enthðlt bei
Aufruf den zu druckenden Wert.
Wurde der Wert korrekt an  den  Drucker  geschickt,  dann kehrt die OS
Funktion mit gesetztem Zero  Flag  zurôck.  Ist  das Zero-Flag dagegen
gelóscht, 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 Rôcksprung  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 wðhlen.
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 ausgerôstet 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
zurôck. Man sollte von  Aufruf  den  Status  des Druckers testen. Dies
geschieht z.B. folgendermaºen:

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 Rôcksprung.











   HD20 - ERMITTLE DIE ANZAHL FREIER EINTRÐGE EINER HD20 PARTITION
   ===============================================================

Kurzbeschreibung: Diese OS Funktion  ermittelt  die  Anzahl der freien
IHV-Eintrðge 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 Eintrðge 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
Eintrðge  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 Eintrðge und ôbergibt sie
in DE. Dabei kann DE Werte zwischen &0000 und &0200 annehmen, denn ein
16KB IHV stellt 512 Eintrðge zur Verfôgung.

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 Blócke (0 bis  3)  sind  fôr das IHV/DIR der Partition
reserviert. Sucht man freie Blócke,  so  sollte  man  mit der Suche ab
Block &0004 = 4 beginnen. In dieser BBT steht das Block-Byte fôr Block
&0000 in Adresse &B000, das fôr  Block  &0001 in &B001 usw. Das letzte
Block-Byte fôr 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 Rôcksprung steht die BBT  ab  &B000 zur Verfôgung, 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 fôr 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 Eintrðgen
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  Eintrðge  im   IHV   zuzuweisen.   Dazu  sind  folgende
Einsprungbedingungen nótig:
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 enthðlt die  Blockanzahl der Datei, deren IHV-
  Eintðge (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 fôr die Datei ein Eintrag im IHV
generiert.
Fôr jehweils 32 KB Dateilðnge wird je  ein Eintrag im IHV belegt, denn
die Dobbertin HD hat eine Blockgróºe von 4 KB und 16 Bit Blocknummern.
Das IHV ist  nun  unsortiert.  Zum  sorieren  kann  man folgendermaºen
vorgehen: ROM C einblenden, dann SSB0, ISWS und RRB0 aufrufen.
Bei der Generierung der Eintrðge wird  die Record-Anzahl immer auf die
nðchste 4 KB Grenze aufgerundet. Eine  17  KB Datei belegt auf HD also
20 KB. Siehe auch 4 KB Blockgróºe.

Bitte Beachten:  Beim  Rôcksprung  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 = Dateilðenge 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 môssen 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 gewðhlte Partition ist nicht markiert.
A = &02 ==> Die Datei hat eine Lðnge von 0 KB. Also auch Abbruch.
A = &04 ==> Im Ziel-DIR sind zu wenig Eintrðge 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.
Auºerdem wurden  die  RAM-Konfiguration  und  die Inhaltsverzeichnisse
verðndert.

Beschreibung: Diese  OS  Funktion  ist  das  Festplatten-Gegenstôck zu
TEILA. Wðrend TEILA eine  Datei  teilweise  lðd,  dienen TSDHD / TSEHD
dazu die geladene Datei wieder abzuspeichern,  und zwar auf HD. Um auf
Diskette  Teil-zu-speichern  wôrde  man  TEISI  /  TEISK  nutzen.  Das
Speichern geschieht hierbei komplett oder in Stôckchen.
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  zurôck,  dann wurde die Datei
komplett gesichert. Enthðlt der Akku  jedoch  den  Wert &F0, so wurden
zwar alle KZS gespeichert,  aber  die  Datei  ist  lðnger  als das zur
Verfôgung 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 Eintrðgen
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 Eintrðge generiert werden, steigt der RAM Verbrauch
im DIR Puffer.
ACHTUNG: TSDHD und TSEHD sind NUR fôr HD zustðndig. 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 gelóscht --> 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 gelóscht.
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 gelóscht.

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 gelóscht --> 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 gelóscht.
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 kónnen 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  môssen  sich
gôltige 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  dafôr  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 fôr Zeit und Datum.

Label: S_LS3RTC

ROM-Nummer: A

Startadresse: &FE23

Einsprungbedingungen:  Ab  der  System-Variable  UHR_SEK  môssen  sich
gôltige 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  dafôr  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 fôr Zeit und Datum.

Label: S_NRTC

ROM-Nummer: A

Startadresse: &FCCA

Einsprungbedingungen:  Ab  der  System-Variable  UHR_SEK  môssen  sich
gôltige 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  dafôr  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
gefôllt. 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 lðºt  sich am Carry-Flag erkennen. Ist
das Carry-Flag nach dem  Rôcksprung  der  Funktion geleert wurden alle
Daten  ordnungsgemðº  gelesen.  Ist  das  Carry  nach  dem  Rôcksprung
allerdings gesetzt, so  ist  ein  Fehler  aufgetreten,  in den meisten
Fðllen  wird  von  der   Echtzeituhr   gerade  ein  'internes  Update'
duchgefôhrt. In diesem Fall ist es  sinnvoll die Funktion einfach noch
ein mal aufzurufen.

Bitte Beachten: Nach der Ausfôhrung  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 gefôllt.

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 gefôllt.

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 gefôllt.
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  Rôckkehr  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 Binðr-Kodierung, da
BCD aber einfacher  und  schneller  zu  handhaben  ist  wird  es unter
FutureOS  verwendet.  Auºerdem  verwenden  die  Echtzeituhren  anderer
Hersteller (z.B.  Dobbertin)  ebenfalls  standartmðºig  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  fôhrt u.U. bei
nicht-FutureOS-Programmen zu  Problemen,  wenn  diese  nur  mit Binðr-
Kodierung arbeiten kónnen.


































           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 fôhrt nicht
automisch zum Auslósen 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 enthðlt  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 Mðuse.  Es  werden  die  PS/2  Maus des
SYMBiFACE II, die  USB  Maus  des  SYMBiFACE  III  und  die  Mðuse des
MultiPlay ôberprôft. 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 zurôck.
Ansonsten haben die einzelnen Bits die  selbe Bedeutung wie bei den OS
Funktionen H_JC, H_CCE und H_JOY.

Bit 0: Aufwðrts
Bit 1: Abwðrts
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 unterstôtzten Mðuse berôcksichtigt.

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 Mðuse.  Es  werden  die  PS/2  Maus des
SYMBiFACE II, die USB  Maus  des  SYMBiFACE  III  oder Albireo und die
Mðuse des MultiPlay ôberprôft.
Falls keine Maus angeschlosse  ist  bzw.  keine  Maus bewegt wurde, so
kehrt diese OS Funktion mit  gesetzten  Zero-Flag zurôck. Ist das Zero
Flag jedoch gelóscht, so kónnen die relevanten Daten aus den Registern
D, E, YL und YH gelesen werden.
Die ôbergebenen delta-X und delta-Y  Werte kónnen dirket zur aktuellen
Position addiert werden.
Siehe dazu auch die nachfolgenden OS Funktionen.

Bitte  Beachten:  Diese  OS   Funktion   berôcksichtigt  alle  vom  OS
unterstôtzten Mðuse.
















                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 zurôckgegeben. 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 fônf móglichen  Feuerknópfe  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 (binðr) angegeben. Dadurch  kann  der  ôbergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Mit T_SF kann geprôft werden, ob das SF2 und damit die
PS2 Maus angeschlossen sind.
Die PS2 Maus muss vor  dem  Einschalten  des SF2 (und anschlieºend des
CPC) angeschlossen  werden  um  benutzt  werden  zu  kónnen.  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 zurôckgegeben. 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 fônf móglichen  Feuerknópfe  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 (binðr) angegeben. Dadurch  kann  der  ôbergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Mit T_SF3 kann  geprôft  werden,  ob das SF3 und damit
die USB Maus angeschlossen sind.
Die USB Maus sollte vor dem  Einschalten des SF3 (und anschlieºend 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 zurôckgegeben.
Falls die Albireo USB Maus erfolgreich  abgefragt wird, dann werden in
Register D die fônf móglichen  Feuerknópfe  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 (binðr) angegeben. Dadurch  kann  der  ôbergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Vor der Benutzung der  Albireo Maus sollte man prôfen,
ob ein Albireo vorhanden ist (siehe Bit 1 der OS Variable KF_MED).
Wurde der Albireo USB Port fôr  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 MÐUSE
                ==================================

Kurzbeschreibung: Diese drei  OS  Funktionen  dienen  der  Abfrage der
beiden Mðuse, die an das MultiPlay (MP) angeschlossen werden kónnen.

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 Kompatibilitðt 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
Mðuse 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 prôfen 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 Rôcksprung 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 móglichen Feuerknópfe in den  Bits  2-0  angegeben. In Register E
steht der Wert &00. Und zwar aus  Grônden der Kompatibilitðt 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 Verðnderung der X- bzw.
Y-Koordinate respektive.
Negative Werte werden im 2er Komplement angegeben, so wird -1 z.B. als
11111111 (binðr) angegeben. Dadurch  kann  der  ôbergebene Wert sofort
zur aktuellen Koordinate addiert werden.

Bitte Beachten: Nur OS Funktion  R_MPM  prôft,  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 zusðtzlich 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 gelóscht --> 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  fôr  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 Móglichkeit  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 enthðlt die Adresse ab der editiert werden soll.
- Die RAM Variable MON_ROM enthðlt  entweder  &82 oder &86, je nachdem
  ob das untere  ROM  oder  RAM  wðhrend  des  Editierens eingeblendet
  werden soll (zwischen &0000 und &3FFF).
- Die RAM Variable MON_RAM enthðlt &C0 oder &C4, &C5 etc. je nachdm ob
  die ersten  64  KB  oder  Erweiterungs-RAM  wðhrend  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: Beschrðnkt einsetzbare EDITier-Funktion des Speichers.

Bitte Beachten: --- weitere Informationen folgen ---
           - CODE Beispiel auf nðchster 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-KANÐLE 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  Kanðle  werden
ausgeschalten und die Lautstðrke 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 fôr 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  kónnen alle Register des
PSG von &00 bis &0F verwendet werden.

Bitte Beachten: Nach  dem  Rôcksprung  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 enthðlt  die physikalische Nummer des
freien 16 KB E-RAMs (von &C4 bis &FF) das gefunden wurde. Oder ...
Enthðlt 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 enthðlt
das Registerpaar HL einen  Zeiger  auf  die zugehórige 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 groºes
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  gehórende  XRAM Variable ôbergeben. Mit
Hilfe dieses Zeigers ist es móglich  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 môssen 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 zugehórige Erweiterungs-RAM Auswahl umgerechnet.

Label: XR2ER

ROM-Nummer: A

Startadresse: &C022

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

Aussprungbedingungen: Der Akku A enthðlt  die physikalische Nummer des
zugehórigen 16 KB E-RAM Blocks,  also  die  Hardware E-RAM Auswahl von
&C4 bis &FF.

Manipuliert: AF und H.

Beschreibung: Fôr die Verwaltung  der  ersten  512 KB Erweiterungs-RAM
(E-RAM) stellt das  FutureOS  die  XRAM-Variablen  zur  Verfôgung. Sie
tragen die Bezeichnungen XRAM_C4,  XRAM_C5  ...  XRAM_FF.  Jede der 32
Variablen gibt Aufschluº ôber  die  Verwendung  des  zugehórigen 16 KB
groºen E-RAM Blocks. Diese Blócke  werden physikalisch ôber Port &7Fxx
mittels der Bytes &C4, &C5 ... &FF ausgewðhlt. 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 enthðlt der
Akku den Wert (&C4...&FF) fôr die Hardware E-RAM Auswahl.

Bitte Beachten: Nach dem Rôcksprung dieser  OS Funktion ist es móglich
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: Fôr den CPC existieren verschiedene Echtzeituhren (RTCs)
um den Computer mit aktuellen Zeit-Daten zu versorgen.
Die OS Funktion R_RTC prôft,  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 fôr 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: Fôr 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 berôcksichtigt.
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 fôr 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  zusðtzlich  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  enthðlt  dabei  keine  Kontroll-Kodes, und seine
Lðnge ist auf 255 Bytes limitiert.
Sollte die Sprachausgabe abgeschalten sein (siehe OS Variable KOBYA in
ROM A), so wird kein Text gesprochen.
Fôr die Textausgabe sollte der Bildschirm Modus 2 aktiv sein.

Bitte Beachten: Die Text Ausgabe erfolgt  fôr MODE 2, also sollte MODE
2 auch aktiv sein.
Die maximale Textlðnge betrðgt 255 Bytes.
Die Sprachausgabe muss erlauft sein (siehe Variable KOBYA in ROM A).






























                 WANDLE BINÐR-ZAHL IN BCD-ZAHL UM
                 ================================

Kurzbeschreibung: Eine regulðre binðre Zahl (0-99) wird in eine Binðr-
Codierte-Dezimal (BCD) Zahl umgewandelt.

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

ROM-Nummer: A

Startadresse: &FD34 (bzw. &FD36)

Einsprungbedingungen: D = Binðrzahl 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 Binðrzahl 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 Binðrzahl von 0 bis 99 geladen
und anschlieºend wird die  OS  Funktion  BIN2BCD  aufgerufen. Nach dem
Rôcksprung enthðlt 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 enthðlt bereits
den Wert 10. E dient hier als Divisor).

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

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

Bitte Beachten: Binðr-Zahlen  gróºer  99  kónnen  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 BINÐR-ZAHL UM
                 ================================

Kurzbeschreibung: Eine Binðr-Codierte-Dezimal (BCD)  Zahl wird in eine
regulðre binðre Zahl (0-99 / &00-&63) umgewandelt.

Label: BCD2BIN

ROM-Nummer: A

Startadresse: &FD4D

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

Aussprungbedingungen: A = Binðrzahl von 0 bis 99 (= &00 bis &63)

Manipuliert: AF und DE

Beschreibung: Diese OS Funktion  wandelt  eine  binðr codierte Dezimal
(BCD) Zahl in eine Binðrzahl 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 anschlieºend wird die OS Funktion BCD2BIN aufgerufen. Nach
dem Rôcksprung enthðlt das Register A  die  Zahl im Binðrzahl (= Byte)
Format.

Beispiel in Assembler:

 LD   A,&18             ;A = &18, BCD Zahl
 CALL BCD2BIN   ;BCD-Zahl in Binðrzahl konvertieren
 LD   (XXXX),A  ;A = &12 = 18, binðre Zahl ins RAM schreiben

Bitte Beachten: Binðr-Zahlen  gróºer  99  kónnen  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.
Auºerdem 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 tatsðchlich 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
