Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => FutureOS => Topic started by: TFM on 13. January 2012, 02:26:29

Title: Deutscher Artikel über FutureOS in der CPCWiki-Deutsch.
Post by: TFM on 13. January 2012, 02:26:29
Dieser Artikel stand in der Deutschen CPC Wiki, solange es die noch gab. Falls der Eine oder Andere mal Interesse hat...


== Einleitung ==

'''FutureOS''' ist ein Betriebssystem für die Amstrad / Schneider [[CPC6128|CPC6128]], [[Plus|6128Plus]], [[C-ONE|C-One]] und [[CPC TREX|CPC TREX]]. Die Version für den CPCPlus unterstützt einige seiner erweiterten Fähigkeiten. FutureOS wird von [[TFM|TFM]] of [[FutureSoft|FutureSoft]] in [[Z80|Z80]] Assembler entwickelt. Die Entwickllung von FutureOS und seiner Applikationen begann 1989 und wird bis heute (2011) fortgesetzt. FutureOS kann durch diverse HIDs bedient werden. Seine Benutzeroberfläche in Bereiche für Icons und Dateinamen unterteilt. Es kann mit Dateien bis 4 MB am Stück gearbeitet werden. FutureOS bietet eine dynamische Speicherverwaltung, die mit 16 KB Blöcken (oder kleineren Abschnitten RAM) arbeitet. Weiterhin wird eine Vielzahl von Hardware-Erweiterungen unterstützt. FutureOS wird zusammen mit einer Auswahl von Applikationen in vier 16 KB ROMs geliefert. Weitere Erweiterungs-ROMs können hinzugefügt werden.

== Vorraussetzungen ==

Der Betriebssystem-Kern besteht aus 64 KB ROM. Man benötigt also kompatible Hardware wie z.B. EPROM-Karte, [[Inicron ROM-RAM-Box|ROM-RAM-BOX]], [[SYMBiFACE II|SYMBiFACE II]], [[Ramcard 128|RAMcard]], Jareks [[CPC.Flash|Flash-ROM]], [[MegaROM]] oder ähnlich Produkte. Wenn man keinen solche Karte besitzt, dann ist es möglich '''FutureOS''' auf einem kompatiblen CPC Emulator ([[JavaCPC|JavaCPC]], [[WinCPC|WinCPC]], [[CaPriCe|Caprice]], [[WinApe|WinApe]], [[!CPCemu|CPCEmu]]) zu installieren.

Der Betriebssystem-Kern wird direkt im (Pseudo-)ROM oder [[Dobbertin EPROM 224|EPROM]] ausgeführt (innerhalb von vier 16 KB Blöcken). Sprünge von ROM zu ROM erfolgen mit Hilfe eines kleinen (256 Bytes) gemeinsamen Bereiches. Dementsprechend sind die Nummern der vier 16 KB OS ROMs hart kodiert – und die Sprünge sind sehr schnell (9 µs).

'''FutureOS''' benötigt ledigleich 2 KB RAM (&B800...&BFFF) der ersten 64 KB des Hauptspeichers. Das verbeibende RAM steht Applikationen zur Verfügung. Erweiterungs-RAM wird zur Pufferung von Inhaltsverzeichnissen verwendet. Das OS bietet dynamische Speicherverwaltung (bis zu 4 MB RAM), Datei-Verwaltung und spezialisierte OS Funktionen zur schnellen Kontrolle der Hardware.

'''FutureOS''' kann von AmsDOS aus mit den RSX Befehlen |OS oder |FDESK gestartet werden. Wenn man |FDESK benutzt, dann kehrt man nach dem Beenden von '''FutureOS''' ins BASIC zurück, an die Stelle von der man FutureOS aufgerufen hat. Dabei werden die ersten 48 KB erhalten (nicht der Bildschirmspeicher).

'''FutureOS''' läuft nur auf dem [[CPC6128|CPC6128]] oder 6128plus (sehr eingeschränkt auf dem CPC464 oder 664), denn diese Rechner unterstützen die RAM Konfiguration C3 (essenziell für den Mauspfeil). FutureOS ist mit normalen [[AMSDOS|AMSDOS]] oder [[CP/M|CP/M]] Programmen nicht kompatibel. Es benötigt mindestens einen [[Klasse]] 2  CPC,  aber es läuft am besten auf einem [[Klasse]] 4 CPC oder höher.

== User Interface  ==

Die Grafische Benutzeroberfläche (GUI) von FutureOS ist dreigeteilt: In der oberen Hälfte des Bildschirms befinden sich die Icons, darunter die Dateinamen und ganz unten eine Nachrichtenzeile. Die GUI erscheint direkt nach dem Start des OS, aber sie kann auch von Anwendungen aus aufgerufen werden. Der Anwender kann durch Inhaltsverzeichnisse von Disketten und Festplatten blättern. Die Größe des Textfensters ist fest auf 64 Dateinamen gesetzt. Das entspricht dem Inhaltsverzeichnis einer Diskette im Data- oder System-Format. Anstatt zu scrollen wird (mittels Shift und Control) seitenweise geblättert. Mittels des Mauspfeils selektiert man Geräte, Funktionen oder Dateien. Dieser Mauspfeil kann mit praktisch allen (HID) Eingabemedien für den CPC kontrolliert werden (z.B. Joystick, Maus, Trackball, Lichtgriffel, Grafpad II etc.).

Anwendungen können die GUI aufrufen und der Anwender kann mittels des OK Icons wieder zurück in die Applikation gelangen. Die Icons haben feste Standart-Positionen auf dem Bildschirm, so ist die GUI auf jedem CPC gleich und läßt sich intuitiv bedienen.

Dateien können auf dem Bildschirm (man kann auf und ab rollen) oder dem Drucker ausgegeben werden. Die Anzahl von Zeilen und Spalten auf dem Bildschirm kann dabei frei gewählt werden.

Auch Datei-Header können betrachtet werden. Dabei benutzt FutureOS einen stark erweiterten, aber kompatiblen Datei-Header. Dieser erlaubt eine Dateilänge von bis zu 16 MB. Zusätzlich kann der Datei-Header das Erweiterungs-RAM definieren in das geladen werden soll. Außerdem kann er ein Icon oder eine kurze Dateibeschreibung enthalten.

Daneben enthält FutureOS den [[FutureOS Monitor]], er erlaubt den Zugriff auf das RAM, ROM, die Z80 Register und die Eingabe- und Ausgabe-Ports des CPC. Routinen können mit gesetzten Registern aufgerufen werden, bei Rücksprung werden die Register gesichert. Außerdem bietet der Monitor den Zugriff auf die Memory-Mapped Baugruppen den CPC Plus.

== CBM  ==

Neben dem Desktop gibt steht eine weitere Oberfläche zur Verfügung. Das "Command Bar Menü" ([[CBM|CBM]]) ist ein nur teilweise ROM-residenter Teil der FutureOS. Anwendungen lassen sich leicht integrieren. Die Benutzerschnittstelle besteht aus mehreren flexiblen ,,Pull-Down" Menüs und Datei-Auswahlmenüs. Die Verwendung des [[CBM|CBM]] als Standart UI für FutureOS Applikationen hilf dabei Programme ähnlicher zu gestalten, damit sind sie leichter und intuitiver zu bedienen. Ein Teil des CBM befindet sich in den FutureOS ROMs. Der andere Teil wird – entsprechend der Applikation – individuell angepasst und in den Quellcode der Applikation integriert.

== File system  ==

Das Dateisystem von FutureOS kann mehrere Floppy Disk Laufwerke und Hard-Disk Partitionen simultan verwalten. Nach der Auswahl der Laufwerke liest FutureOS die Inhaltsverzeichnisse in Puffer RAM ein. Die beschleunigt den Floppy Betrieb erheblich. Der Multi-Datei-Kopiermodus erlaubt es in einem Durchlauf Dateien von verschiedenen Laufwerken auf verschiedene andere Laufwerke zu kopieren.

Das Dateisystem ist kompatibel zu den Standartformaten des CPC (z.B. Data-, System-, IBM, Vendor und Vortex (704 KB) Format) und den Datei-Headern. Aber es ist stark erweitert.

Dateinamen können alle 256 Zeichen enthalten, und es können Usernummern von 0 bis 254 verwendet werden (abgesehen von User &E5, reserviert für gelöschte Dateien). Im Gegensatz zu AmsDOS wird eine unter FutureOS gelöschte Datei nicht nach User &E5 verschoben, sondern wirklich aus dem Inhaltsverzeichnis entfernt. Bei dieser Gelegenheit wird das Inhaltsverzeichnis gleich sortiert. Datei-Header können als kurzer Text oder als Icon (z. B. FutureOS Applikation) dargestellt werden. Der AmsDOS Dateiheader besteht aus 128 Bytes, von denen die meisten ungenutzt sind. FutureOS nutzt diese ungenutzten Bytes, so dass die Dateilänge mit 24 Bit angegeben wird (eine Datei kann bis zu 16 MB groß sein). Auch läßt sich neben der Ladeadresse ein Ziel RAM im Erweiterungs-Speicher definieren. Der erweiterte Dateiheader ermöglicht es eine Datei überall hin ins Erweiterungs-RAM zu laden und zu starten. Außerdem kann der FutureOS Datei-Header ein Grafik-Icon, ein Semigrafik-Icon oder einen kurzen Text (Beschreibung der Datei) enthalten.

FutureOS enthält die schnellste Floppy Disk Controller (FDC) Verwaltung (Dateien schreiben und lesen) für den CPC. Das wird durch geschicktes ignorieren des Interleave-Faktors erreicht, physikalisch werden Sektoren in der Reihenfolge gelesen in der sie sich auf der Diskette befinden. Dabei werden die Daten direkt an die richtige Adresse gelesen. Außerdem wird mit dem Lesen immer da begonnen, wo sich er Schreib-/Lese-Kopf des Laufwerks gerade befindet.Dies gilt auch für die Dobbertin Festplatte. Weiterhin werden die Inhaltsverzeichnisse der angeschlossenen Massenspeicher im Erweiterungs-RAM gepuffert, dies erspart das wiederholte ,,Nachschlagen" beim lesen bzw. schreiben längerer oder mehrerer Dateien. Die Step-Rate-Zeit kann für jedes Laufwerk individuell eingestellt werden, sie ist unter FutureOS generell kleiner gehalten. So ist FutureOS viel schneller als z. B. Crowns' [[Crime|Crime]].

== Implementation der Hardware ==

Das FutureOS unterstützt fast alle Erweiterungs-Hardware, die für den CPC angeboten wurde oder wird. Auch Neuentwicklungen wie z. B. das MegaFlashROM werden unterstützt. Ein Hauptziel der Entwicklung von FutureOS war es ein OS zu programmieren, welches alle zum CPC erhältlichen Erweiterungen gleichzeitig unterstützt. Hardware-Erweiterungen benötigen normalerweise Treiber, die von einem OS flexibel nachgeladen werden können. In Gegensatz zu diesem Ansatz enthält FutureOS bereits alle ,,Treiber" in optimaler Form. Dadurch wird die Geschwindigkeit gesteigert und sehr hohe Systemstabilität gewährleistet.
*''Disketten- und Festplatten-Laufwerke:'' FutureOS unterstützt bis zu acht Floppy-Disk Laufwerk und bis zu vier Festplatten-Partitionen (Dobbertin HD20 Hard Disk).

*''Plug und Play:'' Sobald Hardware-Erweiterungen an den CPC angeschlossen werden, werden diese sofort vom OS erkannt, initialisiert und dem Anwender und Applikationen zur Verfügung gestellt. Die Architektur von FutureOS erlaubt es Erweiterungen während des Betriebs des CPC anzuschließen bzw. zu entfernen (Heißes Plug und Play). In den Konfigurations-Bytes kann externe Hardware ein- oder ausgeschalten werden (siehe KonfigOS Programm auf der Tools Diskette)

== Verwendung von RAM-Speicher ==
Das OS benutzt nur sehr geringe Mengen des Hauptspeichers des CPCs, da es selbst im ROM ausgeführt wird. Wenn das Desktop verwendet wird, dann belegt das OS den RAM Bereich zwischen &A000 und &BFFF (8 KB). Sobald eine Applikation gestartet wird sinkt der benötigte RAM Bereich auf 2 KB (&B800 bis &BFFF). In Abhängigkeit von der Anzahl aktivierter Laufwerke wird zusätzlich noch Erweiterung-RAM belegt.
FutureOS bietet alle benötigten Funktionen zur Speicher-Management. Es verwaltet RAM bis zu 4 MB.

== Vom OS unterstützte Hardware  ==

'''Drucker-Ports<br>'''
*7 Bit [[Printer Port|printer port]] (nativ)
*[[8 Bit Printer Ports|8 bit printer port]] 6128 Plus, Amstrads CRTC Lösung
*[[Happy Computer 8 Bit Printer Mod|Happy Computer Mod]] nutzt das CAS_WRITE als Bit 7.

'''Laufwerke<br>'''

*3" A, B, C und D Laufwerke (C, D benötigen einen Hardware Patch)
*3.5" und 5.25" Laufwerke aller Art
*Atari ST 80 Track DS B-Laufwerk
*[[Dobbertin|Dobbertin]] D-DOS Doppel-Laufwerk. Bis zu vier Laufwerke mit 80 Spuren und zwei Seiten (DS)
*[[Dobbertin|Dobbertin]] [[XD-DOS]] X-Laufwerk, 80 Spuren, DS
*[[F1|Vortex Disketten-Laufwerke FI-D, F1-S, M1-D, M1-S]]. Eigener FDC, bis zu vier Laufwerke mit 80 Spuren, doppelseitig (DS)
*[[F1|Vortex disc drives F1-X, M1-X]]. 80 Spuren, DS
und ...
*[[HxC Floppy Emulator]] (mit dem Firmware Update!)

'''Erweiterungs-Karten<br>'''
*[[CPC Booster]]+
*[[FuturePlayer]]
*[[MegaFlash]]
*[[SYMBiFACE II|SYMBiFACE II]]
*HD64180 Coprozessors Karte
*[[EPROM]] Karten oder EPROM Simulatoren wie das [[Britannia ROM Board]], [[Dobbertin]] EPROM Karte, [[Honeysoft ROM Karte]], [[Inicron ROM-RAM-Box]], [[KDS Sideways ROM Karte]], [[MegaFlashROM]], [[MegaROM]], [[SuperPower ROM Box]], [[SYMBiFACE II]], SuperROM Plus und andere

'''Festplatten'''

*[[CPC-IDE]] und [[SYMBiFACE II]] IDE Unterstützung bisher nur mit Low-Level-Routinen, das FutureOS IDE-ROM wird benötigt (192 KB/s Datentransferrate)
*[[Dobbertin Harddisc|Dobbertin HD20]] (72 KB/s Datentransferrate)
*[[IDE8255]] IDE support, but only low-level, FutureOS IDE-ROM benötigt

'''Joysticks<br>'''

*[[Analoge Joysticks|Analoger Joystick]] (6128 Plus)
*[[Digitale Joysticks]] 1 und 2

'''Speichererweiterungen<br>'''

*[[c't 512 KB interne RAM Erweiterung]] (DIY) (c't Magazin)
*[[Dk'tronics Speichererweiterung|Dk'tronics]] 64-512 KB und Kompatible wie z. B. ([[Dobbertin Speichererweiterung|Dobbertin]], [[Inicron RAM-Box|Inicron]] oder [[SYMBiFACE II|SYMBiFACE II]])
*[[RAM7 2 MB Speichererweiterung|RAM7's RAM Erweiterung]] (bis zu 2 MB)
*[[CPC4MB|Jareks 4 MB RAM Erweiterung]] bis zu 4 MB

'''Echtzeituhren'''

*[[Dk'tronics Echtzeituhr]]
*[[Dobbertin Smart Watch]] (muss auf ROM select 15 liegen)
*[[SYMBiFACE II: Echtzeituhr|SYMBiFACE II]]

'''Netzwerke'''
*[[CPC Booster]]+
*[[Virtual Net 96]]
Die Unterstützung beide Netzwerke ist momentan eher rudimentär.

== Zusätzliche HIDs ==

Die folgenden Pfeil-basierten Eingabegeräte werden von FutureOS unterstützt. Applikationen können diese Geräte durch Aufruf der Entsprechenden OS Funktionen in den ROMs A, C oder D benutzen.

'''Mäuse<br>'''
*[[Atari-ST Maus Adapter|Atari ST Maus Adapter]] (Schneider Magazin)
*[[AMX Maus|AMX_Maus]]
*[[PS2Maus|AMX PS/2 Maus Adapter]]
*[[CPC-Mousepack 2.0|CPC-Mousepack]] (Reisware)
*[[GEOS Maus]] ([[Commodore C64]])
*[[SYMBiFACE II: PS/2 Maus|PS/2 Maus]] des [[SYMBiFACE II]]

'''Lichtgriffel<br>'''

*[[Dk'tronics Lichtgriffel]
*[[Happy Computer Lichtgriffel]] (DIY des Happy Computer Magazins)
*[[Lindy Lichtgriffel]]

'''Grafik Tablets<br>'''

*[[Grafpad II|Hegotron Grafpad II]]

'''Trackbälle<br>'''

*[[Atari-ST Maus Adapter|Atari ST Trackball Adapter]] (Schneider Magazin)
*[[Marconi|Marconi Trackball]]

== Eingebaute Applikationen ==

Die FutureOS ROMs enthalten bereits eine Reihe von Applikationen als Teil des OS. Werkzeuge wie Kopieren (Dateien oder Disketten), Formatieren von Disketten (Data-, System-, IBM- oder Vortex-Format), Dateien löschen, Dateien umbenennen, Dateien auf dem Bildschirm oder Drucker ausgeben, einen Alarm setzen (Wecker), Zeit der Echtzeituhr setzen, Disketten prüfen oder Inhaltsverzeichnisse auffrischen etc. stehen dem Anwender jederzeit zur Verfügung ohne extra geladen werden zu müssen. Es können mehrere Dateien in einem Rutsch von und auf mehrere Geräte kopier werden (Multidirektionelles Dateikopieren).

Ein kleiner Maschinen-Monitor stehe ebenfalls zur Verfügung. Der [[FutureOS Monitor]] erlaubt es alle Register der Z80 zu editieren, Routinen aufzurufen, anschließend die Register anzuzeigen, die I/O Ports komfortabel zu bedienen, Speicher anzuzeigen und zu editieren. Beim CPC Plus kann auch auf die Memory-Mapped Baugruppen des ASIC zugegriffen werden. Weiterhin können Speicherblöcke kopiert oder mit einem 8 bzw. 16 Bit Wert gefüllt werden.

== Programm-Entwicklung für FutureOS ==

FutureOS bietet die Möglichkeit in sehr freien Grenzen Programme zu schreiben: Die RST-Einsprünge stehen alle zur Verfügung, der Interrupt-Mode kann beliebig gewählt werden und die gesamte Hardware kann bei Bedarf direkt bedient werden. Der Zweitregister-Satz der Z80 steht dem Anwender / der Applikation frei zur Verfügung – im Gegensatz zu allen anderen OS des CPC.

*''Z80 Assembler:'' Jeder Assembler für Amsdos oder CP/M kann verwendet werden. Das Umschalten zwischen den OS kann mit dem RSX Befehl |FDESK schnell bewerkstelligt werden. Dabei werden die ersten 48 KB des CPCs gesichert und nach dem Verlassen von FutureOS ist man da wo man zuvor war. Es gibt eine Z80 Bibliothek für den FutureOS Programmierer und für Applikationen. Außerdem kann man die [[CBM]] Oberfläche in eigene Programme einbinden, das ist schnell und einfach möglich.


*''Programmierung in C für FutureOS:'' Mit der [[FIOLIB|FIOLIB]] – der IO-Lib (Bibliothek) für FutureOS können C Programme für FutureOS erstellt werden. Es kann zwischen verschiedenen C Dialekten gewählt werden. Neben den üblichen I/O Funktionen bietet die FIOLIB einen Vielzahl wertvoller Routinen für Text, Tastatur, Dateien, relative Dateien, Bildschirm, Farben, Grafiken und vieles mehr.

== Applikationen / Demos / Spiele ==

Die folgenden Programme können über die FutureOS Heimseite heruntergeladen werden, siehe folgende Internet-Links.

*[[Captain Future]] (4 MB Film, der Jareks 4 MB RAM ausnutzt)
*[[CBM|CBM]] (OS Erweiterung, teilweise resident)
*[[Darth Vader]] (Demo)
*[[FilmeMacher|FilmeMacher]] (Erzeugt komprimierte Vollbild-Filme am CPC)
*[[FIOLIB|FIOLIB]] (C Bibliothek)
*[[Flash ROManager|Flash ROManager]] (Management von Jareks Flash ROM Erweiterung)
*[[FuturePlayer|FuturePlayer]] (MP3 und WAV player) – Frage TFM nach MP3 Dateien
*[[FutureView|FutureView]] (Disketten-Zeitschrift)
*[[Gerelakos|Gerelakos]] ([[RPG]] in Arbeit)
*[[GMSK|GMSK]] (Sprite Konverter)
*[[Gravitation Zero]]
*[[GSEd]] (Grafischer Spielfeld Editor für 2D / 3D Spiele)
*[[H.E.R.O.]] von [[Flynn]]
*Kane (Sprite Verwaltung)
*Meg Ryan Sample Demo
*[[MegaFlashROManager]] (Verwaltung der MegaFlash Pseudo-ROM Erweiterung von Bryce, für FutureOS und BASIC)
*[[NGC4650A]]
*[[Odiesoft's Schnee]]
*[[A Tribute to the Sisters]] (Ein Giana Sisters Klon) in Arbeit
*[[ROManager]] (Verwaltung der Pseudo-ROMs des [[SYMBiFACE II]]
*[[Rotating Fractal]]
*[[Star Trek sample demo]]

== Zusammenfassung ==

FutureOS wurde als OS mit extrem schnellen OS-Funktionen entwickelt, die fast alle Hardware-Erweiterungen des CPC unterstützen. Es bietet spezialisierte Verwaltung von Daten, Dateien bis zu 16 MB und Speicher bis zu 4 MB. Es ist ideal geeignet um professionelle Software zu entwickeln, Spiele, Grafikprogramme, Text- und Daten-Verarbeitungen, Musiksoftware und generell der Umgang mit großen Datenmengen. Auch Programmiersprachen stehen zur Verfügung. Die Weblinks geben zusätzliche Informationen.

== Web Links ==

*[http://www.FutureOS.de FutureOS.de]
*[http://groups.yahoo.com/group/FutureOS/ FutureOS Downloads & Mailing list]
*[https://cpcwiki.de/javacpc.php?system=FutureOS&title=FutureOS&full=true&boot=|os&disc=FutureOS_Darth.dsk&discb=FutureOS_Fraktal.dsk&discc=FutureOS_FV-I.dsk&discd=FutureOS_FV-II.dsk&disce=FutureOS_FV-III.dsk&discf=FutureOS_FV-IVeng.dsk&discg=FutureOS_NGC4650A.dsk Try and use FutureOS online at JavaCPC]
*[http://koaks.amstrad.free.fr/amstrad/documents/article_futureos.html FutureOS, le supersonique du CPC]
*[http://www.phenixinformatique.com/modules/smartsection/item.php?itemid=15 Interview de TFM]

-- Youtube Videos --
*[OQfZsoN4wrU A Tribute to the Sisters Level 1]
*[g5TTf68VDPk A Tribute to the Sisters Level 2]
*[srl5KJJpHJQ&feature=related Filmemacher / Moviemaker Demo 1]
*[BegY8i07iqA&feature=related Filmemacher / Moviemaker Demo 2]
*[XIeUEqPZ-04&feature=related Filmemacher / Moviemaker Demo 3]
*[RPyCKAttjEo Some fun with MacDeath's R-Type GFX]
*[VtVYaQuDw5c Let it snow... let it snow... let it snow...]
*[LPYBy-F-8s4&feature=related Playing an 8 bit Star Trek Sample on Digiblaster]
*[wBK2_LBDl6Y Showing a 4 MB video on an Amstrad CPC using Jareks 4 MB expansion]