Difference between revisions of "FutureOS"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Plug and Play?)
(Applications / Demos / Games)
 
(402 intermediate revisions by 25 users not shown)
Line 1: Line 1:
[[Image:Future-os.jpg|400px|thumb|FutureOS main screen]]
+
[[Image:Future OS-Logo.gif|thumb|FutureOS-Logo]] [[Image:Future-os.jpg|thumb|400px|FutureOS main screen]]  
  
== Introduction ==
+
== Introduction ==
'''FutureOS''' is a application starter, disuised as OS for the Amstrad CPC6128 and 6128plus developed by [[TFM]]. Its development continues from 1990 up to now. The applications of FutureOS can be up to 512 KB in one piece. FutureOS has a memory management system, which divides RAM into 16 KB blocks. Further the file-system works with 24 Bit, files can be up to 16 MB long. FutureOS provides some standard utilities (like copy or format a disc; copy / rename / erase / type / print a file etc.). Further applications are delivered for disc or hard-disc. FutureOS is written in machine code.
+
  
== GUI ==
+
'''FutureOS''' is an revolutionary operating system for the Amstrad [[CPC6128|CPC6128]], [[Plus|6128Plus]], [[C-ONE|C-One]] and [[CPC TREX|CPC TREX]]. The version for the CPCPlus supports some of its special features. The CPC464 and CPC664 can run FutureOS with a [http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/open-source-diy-512kb-ram-expansion/msg163566/#msg163566 revaldinho's] 512 KB RAM expansion only.
The Desktop is divided in two sections. First a icon-section, where you can choose your functions. Second there is a section below, where you can browse through directories of discs and hard-disc partitions.
+
FutureOS is being developed by [[TFM|TFM]] of [[FutureSoft|FutureSoft]] in [[Z80|Z80]] assembler. The development of FutureOS and its applications continues from 1989 up to now (2019). Latest OS release was August 7, 2019.
Applications can call the GUI as an subroutine. FutureOS is said to be easy to handle, after learning how to work with it. The icons are fixed, so you will work with the same desktop.
+
  
== Hardware ==
+
On the Amstrad CPC many efforts to build a GUI were made. In other cases they were just extensions to realize some kind of a WIMP environment but weren't true operating systems with their own kernel, memory-management, BIOS, BDOS and so on. Therefore, the CPC's own OS (in combination with AmsDOS) and CP/M (Plus) were the only two known OSes for the series, but the question remained: since most CPCs have 128 KB (most C64 only have 64 KB), a screen-resolution of 640x200 (C64 only has 320x200) and some more advantages, why not have something similar? So the FutureOS-Project was born.
The OS supports many of the hardware available for the CPC. This is said to also be for new hardware like the CPC-Booster+ and the CPC-IDE-Interface/Symbiface.
+
  
== Software ==
+
FutureOS allows the user to control the computer with a broad variety of HIDs. The surface provides an icon section, a file section and a status section. The OS can deal with files up 16 MB (24 bit file-length) and it can load/save files up to 4 MB in one piece. It has a dynamic memory management system, which divides RAM usually into 16 KB blocks - or in smaller pieces. Further it supports a broad variety of hardware expansions. FutureOS is delivered together with a variety of utilities in the same four ROMs. Additional expansion ROMs can be added.
FutureOS is compatible with the CPCs native data-, file- and format structures (f. e. File-header, Disc-formats). But it is not compatible with native AmsDOS or CP/M programs. FutureOS and compatible applications can be downloaded at: www.FutureOS.de.
+
 
 +
FutureOS can be used with German, English, French and Spanish language interfaces.
 +
 
 +
The OS itself has about 63.000 lines of code, the source code is about 630 KB in size.
 +
 
 +
=== How to start FutureOS ===
 +
The RSX command '''|OS''' will start FutureOS. You get directly into the Turbo Desk, there you can tag a drive and start an application f.e. (see Desktop).
 +
 
 +
If you want to use FutureOS temporary then use the RSX command '''|FDESK''', this will save your first 48 KB RAM and you can leave FutureOS later and return to previous work.
  
 
== Requirements ==
 
== Requirements ==
The core of the OS needs 64 KB ROM. Compatible products are EPROM-cards, the ROM-RAM-BOX, Symbiface, RAMcard or similar products. If you don’t own such a card, you can take a look at FutureOS by using a very precise CPC Emulator (WinCPC, Caprice, WinApe).
+
It runs on 'off the shelf' hardware when using the Cartridge for the 6128 Plus.
The core of the OS itself is executed directly in (EP)ROM where it is divided in four 16 KB blocks. It jumps between the ROMs with the help of a little common area. So all the RAM of your CPC is saved for applications and data. Furthermore it contains memory management and file-handling. From AmsDOS/Basic you can start FutureOS with the RSX commands |OS or |FDESK. If you use |FDESK you can leave FutureOS and get back to BASIC where you have stopped before the first 64KB have been preserved.
+
The core of the OS needs 64 KB ROM. On the CPC6128 it needs a ROM expansion or similar. Compatible products are EPROM-cards, the [[X-MEM]], [[MegaFlash]], [[Inicron ROM-RAM-Box|ROM-RAM-BOX]], [[SYMBiFACE II|SYMBiFACE II]], [[Ramcard 128|RAMcard]], Jareks [[CPC.Flash|Flash-ROM]], [[MegaROM]] or similar products. If you don't own such a card, you can take a look at '''FutureOS''' by using a compatible CPC Emulator ([[JavaCPC|JavaCPC]], [[WinCPC|WinCPC]], [[CaPriCe|Caprice]], [[WinApe|WinApe]], [[!CPCemu|CPCEmu]], [[Arnold]], [[Sugarbox]]) or others.  
FutureOS only runs well on a CPC6128 or 6128plus, because they support the RAM configuration &C3 (which is essential for the mouse arrow of the GUI).
+
 
 +
The core of the OS itself is executed directly in (Pseudo-)ROM or [[Dobbertin EPROM 224|EPROM]] (in four 16 KB blocks). It jumps between the ROMs with the help of a little common area. Therefore the numbers of the four 16 KB ROMs are hardcoded and the jumps are very quick. Applications like ROManager can change all that numbers.
 +
 
 +
'''FutureOS''' uses 2 KB (&B800...&BFFF) of the first 64 KB; the remaining RAM is available to applications. Additional RAM can be reserved for DIRectory buffering. Furthermore the OS uses memory management (up to 4 MB), file-handling and specialized Low/Mid/High-level routines to access the hardware.
 +
 
 +
'''FutureOS''' can be launched from AmsDOS with the RSX commands |OS or |FDESK. If you use |FDESK you can leave '''FutureOS''' and get back to BASIC where you have stopped before - the first 48 KB (not the screen) have been preserved.  
 +
 
 +
'''FutureOS''' only runs well on a [[CPC6128|CPC6128]] or 6128 Plus (not CPC464 or 664, except you have a RAM expansion with full RAM mode &C3 support like the one from Revaldhino), because of their support for RAM configuration C3 (essential for the mouse pointer). FutureOS is not compatible with [[Firmware]] or [[CP/M|CP/M]] programs, but supports their data structure. It needs a [[Class]] 2  CPC,  it  runs  best  with  a [[Class]] 4 CPC or higher.
 +
 
 +
'''FutureOS''' does not require the native CPC-OS, except its character set. If you replace the lower ROM by the [[CPC FutureOS lower ROM]] for example, then FutureOS will start directly.
 +
 
 +
There is a Cartridge version of '''FutureOS''' which supports some Plus features.
 +
 
 +
== Limitations ==
 +
For CPCs with 128 KB there may be some limitations. The command |FDESK uses 48 KB E-RAM, a wallpaper uses 16 KB E-RAM. So in this case for example the E-RAM would be used up and this will inhibit some OS functionality (f.e. copy data). A RAM expansion is strongly suggested.
 +
In case the OS requires more RAM you can always switch the wallpaper off to gain 16 KB and use the |OS command to start FutureOS.
 +
 
 +
== Graphic User Interface  ==
 +
 
 +
The Graphic User Interface (GUI) of FutureOS presents the user with three sections:
 +
* the icon section (upper half of screen)
 +
* the file window (lower half of screen)
 +
* and the message base (the two bottom lines of the screen)
 +
 
 +
The GUI appears directly after starting FutureOS, but can also be used by applications. The user can browse through directories of discs and hard-disc partitions. The text window provides space to display one directory page, this is 64 different file names (equals one full directory of a Data, System or IBM formatted disc). Using the keys SHIFT and CONTROL you can browse page by page through the directories of devices.
 +
 
 +
A graphical mouse pointer is used to select devices, functions or files; this pointer can be controlled with nearly all of the pointer based HID devices (joystick, mouse, trackball, light-pen, Grafpad II, analogue joystick etc.) available for the CPC.
 +
 
 +
In addition functions provided by the GUI can be activated using hotkeys. Type "d" for example to read and display the directory of a drive.
 +
 
 +
Applications can call the GUI of the OS; and the user returns to the application using the OK icon. The icons are fixed, therefore the layout remains stable throughout its use and on every CPC using FutureOS.
 +
 
 +
In SPARtan mode the GUI only displays icons which can be used directly. Unused icons will be hidden. In this mode the GUI is more easy to use and you see a bigger part of the wallpaper (if loaded).
 +
 
 +
=== Desktop functions ===
 +
 
 +
Watch pictures or movies. View text-files on-screen (scroll up and down) or print them on your printer. When viewing a picture you can adjust MODE and screen format using the cursor keys. When typing a text file it is possible to set the number of columns and lines of the window the text is displayed in.
 +
 
 +
File headers can also be examined. FutureOS uses expanded but compatible file-headers, that allow a file to be up to 16 MB in length. The file-header can additionally specify the target RAM of a file. Further it can contain a file icon or a short file description.
 +
 
 +
One or more files can be LOADed, SAVEd, RENamed, ERAsed, COPYd or PRINTed on printer.
 +
 
 +
Previously used files can be retagged for a second usage, or all files can be untagged.
 +
 
 +
The I(nformation) icon provides any kind of help (if a help system is installed).
 +
 
 +
Further there is the [[FutureOS Monitor]], which provides access to RAM, ROM, Z80 registes, I/O ports and allows the testing of routines.
 +
 
 +
=== Auto-DIR ===
 +
If Auto-DIR is enabled, then it's enough to click at a drive Icon to read its DIRectory. You can select this feature using the 'Config OS' utility, either from disc or Tool-XROM.
 +
 
 +
=== Hot keys ===
 +
Hot keys can be used every time while working in the Desktop. To activate or deactivate a device (drive, hard disc partition f.e.) press Space first, then the corresponding letter from A to M.
 +
 
 +
A (retag All previously used files), B (jump over next file name without tagging), C (Copy discs), D (display Directory), E (Erase files or format discs), F (Filecopy), G (Go to function below mouse arrow or tag a file name), H (show IDE Hard-disc), I (get Information), J (Jump to first file name), L (Load file), M (enter Machine Monitor), N (reName file or disc), P (Print DIR or file), Q (Quit OS session or start new), S (Save file), U (Untag all files), V (View pictures of text), W (set Alarm time - Wecker), X (eXecute application), Y (edit date), Z (edit time).
 +
 
 +
=== SPARtan mode ===
 +
[[Image:SPARtan 1.png|thumb|right]]
 +
 
 +
The '''SPARtan''' mode reduces the number of displayed icons to a icon set which can be immediately used. Using the Desktop will be easier and you see more of your wallpaper.
 +
When the Spartan mode is off, all icons will be shown all the time.
 +
The Spartan mode can be activated by setting a bit in the configuration bytes, either by hand of by using the ''''Konfig OS'''' / ''''Config OS'''' utility (see system application disc).
 +
 
 +
=== Auto-DIR mode ===
 +
If the Auto-DIR option is switched on (like in recent releases) it's enough to click on an drive / partition icon to read, sort and show its DIRectory. Furthermore in this mode some 'AI' is activated f.e. when click at the Copy icon and no files are tagged the Desktop will directly jump into Disc-copy mode.
 +
If the Auto-DIR is off, then you need to do more things 'by hand', but you also have more control over the system.
 +
The Auto-DIR mode can be activated by setting a bit in the configuration bytes, either by hand of by using the ''''Konfig OS'''' / ''''Config OS'''' utility (see system application disc).
 +
 
 +
=== Wallpaper ===
 +
Like for most OS the background of the Desktop can be adapted. This is actually quite easy for FutureOS. Just use the application "-LoadHGB.64K" (English) / "-LadeHGB.64K" (German). HGB stands for "HinterGrundBild" and is German for Wallpaper. There are discs full of wallpapers.
 +
 
 +
If you want to create your own wallpapers then you'll need a MODE 2 screen with 512 x 256 pixel.
 +
 
 +
You also can load a wallpaper by hand: Place such a 16 KB (headerless) screen in one of the E-RAMs and set the right system variable of the OS (see file #D.). Here are some Wallpapers:
 +
 
 +
http://futureos.cpc-live.com/files/Wallpaper_HGBs_Deu-Eng.zip
 +
 
 +
Or take a direct look at some [[Wallpaper|Wallpapers]]
 +
 
 +
== FutureOS hardware monitor ==
 +
The [[FutureOS Monitor]] is a small built in machine monitor of the [[FutureOS]] operating system. It contains basic functions to access (expansion) memory and the Porting system to comfortably access all the CPCs I/O ports. When using FutureOS for the CPC Plus you can also access all memory mapped I/O (hardware sprites, DMA-sound, soft scrolling etc.).
 +
 
 +
=== Features ===
 +
* Dump RAM, ROM, expansion RAM or memory mapped I/O (CPC Plus)
 +
* Edit RAM, expansion RAM or memory mapped I/O (CPC Plus)
 +
* Access all I/O ports of the CPC and external hardware
 +
* Edit Z80 registers (previously to calling an machine program). This includes the first and second register set, both index registers, the stack pointer, R and I
 +
* Configure RAM, ROM, I/O for other functions
 +
* Move block of memory, ROM, RAM, expansion RAM
 +
* Initialize block of memory with an 8 or 16 bit value, RAM, expansion RAM
 +
* Call a machine program or OS function
 +
* Exit, brings you back to the Desktop
 +
 
 +
=== Images ===
 +
 
 +
<gallery>caption="Some preview images of the game">
 +
Image:OS-Mon_1.png
 +
Image:OS-Mon_2.png
 +
Image:OS-Mon_3.png
 +
</gallery>
 +
 
 +
== CBM ==
 +
[[Image:CBM.png|thumb|right]]
 +
 
 +
The "'''C'''ommand '''B'''ar '''M'''enu" ([[CBM|CBM]]) is a partially resident part of FutureOS, which can be easily linked into applications.
 +
* It's object oriented ('''OO''') user interface consists of several flexible windows, pull down menus and file selectors.
 +
* In addition hot keys can be used.
 +
* Using [[CBM|CBM]] as the standard (G/T)UI for FutureOS programs helps making them looking similar and usable in an intuitive way.
 +
* A part of the CBM is located in the FutureOS ROMs, the flexible part can be individually adapted to its target applications and will be integrated in the application itself.
 +
 
 +
== File system  ==
 +
[[Image:HERO-HED.JPG|thumb|192px|Example of FutureOS file header]]
 +
 
 +
The file system of FutureOS can handle multiple simultaneous floppy disc drives and hard disc partitions. After the selection of the devices FutureOS reads and buffers the directory entries of the devices. This speeds up the the data transfer significantly. Integrated utilities like the multi file copy can copy files from physical sources to different physical destinations in one run.
 +
 
 +
The file system is compatible with the CPCs native data-, file- and format structures (f. e. File header, Disc formats), but expanded in many ways. FutureOS supports the Data, IBM, System, Vendor and Vortex (704 KB) disc formats.
 +
 
 +
Filenames can use all 256 different characters and user areas from 0 to 254 (except for &amp;E5, which is reserved for deleted files). Unlike Amsdos, a file that is erased under FutureOS is not shifted to user &E5, but is physically removed from the directory. During this process the directory get sorted. File headers can be displayed as small text files or as graphic icons (f. e. a FutureOS application). An AmsDOS file header has 128 bytes of which most are unused. FutureOS makes use of those unused bytes so that files have a length definition of 24 bit (16 MB file length) and can have a physical RAM select. Therefore a file can be defined to be loaded everywhere in the external RAM. Also a [[FutureOS Header|FutureOS file-header]] can contain a graphical icon, a textual icon or a short description of the file.
 +
 
 +
FutureOS includes the fastest FDC-based disc- and file-reading and writing routines for the CPC. This is possible by ignoring the interleave factor, reading one physical sector directly after each other to the correct position in memory but also by just starting with the first appearing sector of every new track. In addition the DIRectory is buffered in RAM, the head of the floppy must not step back to look for the next block. The track step rate is increased and can be adjusted for every drive. It's even faster than optimized copy programs like Crowns' [[Crime|Crime]].
 +
 
 +
== Implementation of Hardware  ==
 +
 
 +
The OS supports many of the hardware available for the CPC. One of the ambitions of FutureOS is to support all hardware available. Hardware expansions usually need drivers that can be flexibly added to an OS. Contrary to this approach, a goal of FutureOS is to provide a monolithic architecture where all drivers are implemented in a hardcoded way.
 +
 
 +
*''Disc drives and hard discs:'' FutureOS supports up to eight floppy disc drives and up to four hard disc partitions (Dobbertin HD20 hard disc). It buffers the directories read from any mass storage device in the expansion RAM to speed up drive access.
 +
 
 +
*''Plug and Play:'' If a hardware expansion is connected to the CPC FutureOS will automatically detect that expansion, initialise it and make it available to user and applications. The architecture of the OS allows you to add and remove hardware on purpose (hot plug and play). You can switch external hardware on or off in the configuration bytes (use ConfigOS utility).
 +
 
 +
== Memory  Management ==
 +
=== RAM ===
 +
* Unlike other CPC-OS the FutureOS uses only small amounts of the memory of the CPC since it is located and executed in ROM.
 +
* When using the Desktop the OS uses the RAM between &A000 and &BFFF (8 KB).
 +
* In case an application is running: The RAM that is used by the OS can be reduced to the region between &B800 and &BFFF, in this case only 2 KB are occupied by system variables of the OS.
 +
* Depending on the amount of active drives and HD partitions additional expansion RAM blocks will be occupied for directory buffering, but there is no reduction in free main memory (first 64 KB). After loading data this buffers can be freed again of course.
 +
* FutureOS provides an expansion RAM manager containing all needed OS functions to check for, order, allocate, free and manage expansion RAM up to 4 MB.
 +
* Also files of that length (4 MB) can be loaded and saved at once. This depends on the amount of connected E-RAM of course.
 +
 
 +
=== ROM ===
 +
* The core OS uses 64 KB ROM
 +
* By using fixed ROM numbers quick jumps can be made from one ROM to another ROM without the need of using RAM. This is also true for additional ROMs which want to use the API in the care ROMs A-D.
 +
* FutureOS provides an expansion ROM (XROM) architecture which allows to add programs as expansion ROMs. For the native OS these ROMs are declared as "extension" and will NOT be initialized.
 +
 
 +
==== XROMs ====
 +
* Currently there are a few XROMs for FutureOS:
 +
** ROManager 2.19
 +
** System-Tools (English or German)
 +
** Wallpapers I, II and III
 +
* The XROMs can be automatically started, f.e. you can have your favorite wallpaper when starting FutureOS. The tools to setup autostart are on the XROM disc.
 +
 
 +
== OS supported Hardware  ==
 +
 
 +
==== Printer ports ====
 +
*7 bit [[Printer Port|printer port]] (native)
 +
*[[8bit Printer Ports|8 bit printer port]] 6128 Plus using Amstrads CRTC solution
 +
*[[Happy Computer 8bit Printer Mod|Happy Computer Mod]] using CAS_WRITE as Bit 7.
 +
 
 +
==== Drives ====
 +
*3" A, B, C and D drives (C, D need hardware patch)
 +
*3.5" and 5.25" drive
 +
*Atari ST 80 Track double-sided B-drive
 +
*[[Dobbertin|Dobbertin]] D-DOS Double drive. Up to four drives 80 track, double-sided.
 +
*[[Dobbertin|Dobbertin]] [[XD-DOS]] X-drive 80 tracks, DS
 +
*[[F1|Vortex disc drives FI-D, F1-S, M1-D, M1-S]]. Own FDC, up to four drives 80 track, double-sided.
 +
*[[F1|Vortex disc drives F1-X, M1-X]]. Up to 80 track, double-sided.
 +
and ...
 +
*[[HxC Floppy Emulator]] (On message "Disc is write protected" put a HFE in HxC or adjust its configuration)
 +
 
 +
==== Expansion cards ====
 +
*[[Albireo]] (partial)
 +
*[[AMRAM2]] (combined EPROM and S-RAM card)
 +
*[[C4CPC]] 6128 Plus version
 +
*[[CPC Booster]](+) and MiniBooster
 +
*[[M4 Board]] (RTC, ROM management)
 +
*[[SYMBiFACE II|SYMBiFACE II]] (partial)
 +
*[[SYMBiFACE III|SYMBiFACE III]] (partial)
 +
*HD64180 Coprocessor card
 +
*[[EPROM]] cards or EPROM simulator cards like the [[Britannia ROM Board]], [[Dobbertin]] EPROM card, [[Honeysoft ROM Board]], [[Inicron ROM-RAM-Box]], [[KDS Sideways ROM Board]], [[MegaFlash]], [[MegaROM]], [[SuperPower ROM Box]], [[SYMBiFACE II]], SuperROM Plus and others
 +
 
 +
==== Hard-disc ====
 +
*[[CPC-IDE]], [[SYMBiFACE II]] and [[X-MASS]] IDE support, but only low-level, FutureOS IDE-ROM needed
 +
*[[Dobbertin Harddisc|Dobbertin HD20]] (72 KB/s data transfer rate)
 +
*[[IDE8255]] IDE support, but only low-level, FutureOS IDE-ROM needed
 +
 
 +
==== Joysticks ====
 +
*[[Analog Joysticks|Analog Joystick]] (6128 Plus)
 +
*[[Digital Joysticks]] 1 and 2
 +
 
 +
==== Memory expansions ====
 +
* 4 MB expansion from Zaxon
 +
*[[c't 512 KB internal RAM expansion]] (DIY) (c't magazine)
 +
*[[Campursoft ROM Board]] (DIY)
 +
*[[CPC4MB|Jareks 4 MB RAM expansion]] provides 4 MB RAM
 +
*[[Dk'tronics memory expansion|Dk'tronics]] 64-512 KB and compatibles
 +
*[[Dobbertin Memory Expansion|Dobbertin]]
 +
*[[FlashGordon]]
 +
*[[Inicron RAM-Box|Inicron]]
 +
*[[Inicron ROM-RAM-Box]]
 +
*[[M4 Board]]
 +
*[[MegaFlash]]
 +
*[[RAM7 2MB memory expansion|RAM7's RAM expansion]]&nbsp;(up to 2 MB)
 +
*[[RAM BOX]]
 +
*[[SYMBiFACE II|SYMBiFACE II]]
 +
*[[X-MEM]]
 +
*[[Y-MEM]]
 +
*[[Z-MEM]]
 +
 
 +
CPC464 and CPC664 users can run FutureOS when using this RAM expansion:
 +
http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/open-source-diy-512kb-ram-expansion/msg163566/#msg163566
 +
 
 +
==== Real-Time-Clocks ====
 +
*[[Dobbertin Smart Watch]] and the version from dxs
 +
*[[LambdaSpeak III]]
 +
*[[M4 Board]]
 +
*[[SYMBiFACE II:Realtime clock|SYMBiFACE II]]
 +
*[[SYMBiFACE III]]
 +
*[[Dk'tronics Real Time Clock]]
 +
 
 +
==== Sound and Music ====
 +
*[[Amstrad SSA-1 Speech Synthesizer]]
 +
*[[CTC-AY SDK main fr|CTC-AY]] aka [[PlayCity]]
 +
*[[Digiblaster]]
 +
*[[Dk'tronics Speech Synthesizer]]
 +
*[[FuturePlayer]] for MP3 samples up to 128 kbps (max. 4 MB in size)
 +
*[[LambdaSpeak]] (also the MP3 module is fully supported)
 +
*[[Soundplayer]]
 +
 
 +
==== Networking ====
 +
*[[Amstrad Serial Interface]]
 +
*[[CPC Booster]]+ and TotO's MiniBooster
 +
*[[Schneider RS232 Interface]]
 +
*[[USIfAC]]
 +
*[[Virtual Net 96]]
 +
There is limited support at the moment
 +
 
 +
=== Additional HIDs (Hot Plug & Play compatible) ===
 +
 
 +
The following pointer-based input devices are supported by FutureOS. Applications can use them by calling the appropriate OS function in OS-ROMs A, C or D.
 +
 
 +
==== Mice ====
 +
*[[Atari-ST mouse adapter|Atari ST mouse adapter]] ([[CPC Magazin|Schneider Magazin]])
 +
*[[AMX Mouse|AMX Mouse]], [[PS2Mouse|AMX PS/2 Mouse Adapter]]
 +
*[[CPC-Mousepack 2.0|CPC-Mousepack]] (Reisware)
 +
*[[GEOS mouse|GEOS mouse]] ([[Commodore 64]] device)
 +
*[[SYMBiFACE II:PS/2 mouse|PS/2 mouse]] of [[SYMBiFACE II]]
 +
*[[USB mouse]] of [[SYMBiFACE III]]
 +
*[[Dk'tronics Mouse Interface]]
 +
 
 +
==== Lightpens ====
 +
*[[Dk'tronics Lightpen|Dk'tronics lightpen]]
 +
*[[Happy Computer Light Pen]] (DIY from German magazine)
 +
*[[Lindy Light Pen]]
 +
 
 +
==== Graphic Tablets ====
 +
*[[Grafpad II|Hegotron Grafpad II]]
 +
 
 +
==== Trackballs ====
 +
*[[Atari-ST mouse adapter|Atari ST trackball adapter]] (Schneider Magazin)
 +
*[[Marconi|Marconi trackball]]
 +
 
 +
== ROM-included Utilities  ==
 +
 
 +
The FutureOS ROMs already include several utilities as an addition to the operating system. Tools like copy (files or discs), format discs (data-, system-, ibm- and Vortex-format), erase files, rename files, type and print files, set alarm time, set time of RTC, verify discs or directory refreshing, display file-header etc. are available without the need to load them from an external medium.
 +
 
 +
Multiple files can be copied between different physical media and user numbers / directories in one go.
 +
 
 +
A small machine monitor is also provided. The [[FutureOS Monitor]] provides features like CPU register editing (all!), access to the I/O ports, memory dump and editing, and display and manipulation of the ASIC contents (6128 Plus). Memory blocks can be copied or initialized. It is possible to call (and return from) a routine with defined CPU registers (complete register set) and memory.
 +
 
 +
== OS functions ==
 +
 
 +
Only some examples are mentioned.
 +
* The String Editor: It allows to enter strings up to 64 KB, different character sets can be used, a range of legal letters can be defined, four keyboard levels (normal, shift, control and shift+control) can be used.
 +
 
  
== Supporting it all ==
+
== Developing for FutureOS ==
The idea of FutureOS was not only to develop a fast, easy programmable OS which is able to deal with big files and applications. One point that lead to the development of FutureOS was the wish that it should be possible to support all hardware (ever made for the CPC) with just one OS. Remember, there are 3.5” B-drives, Vortex F1-D-drives, hard-discs, real-time-clocks, serial interfaces and much more. Every piece of hardware has its own software (DOS on Eprom, drivers or whatever). Sadly all these software packages for expansion hardware aren’t compatible under AmsDOS L.
+
  
FutureOS was designed to work with all known hardware expansions for the CPC. You can use a 3.5” B-drive, external Vortex F1-S or F1-D, a serial interface (or two!), different RAM expansions and maybe a hard-disc (Dobbertin HD20 or CPC-IDE; CPC-IDE since system .9). All that is reported to work properly together.
+
You can develop very freely: the RSTs are free for use, you can choose the interrupt mode and access all the hardware. Also the second register set of the Z80 can be completely used by applications - in contrast to all other OS for the CPC.
  
Most of the low level system resources can be accessed freely, e.g you can use interrupt mode 1 or 2 (standard under FutureOS). Using IM 2 is mandatory when designing expansion hardware.
+
*''Z80 Assembler:'' You can use an assembler for AmsDOS or for CP/M. Switching between AmsDOS and FutureOS is fast and using |FDESK allows to come back to AmsDOS with the first 48 KB or RAM remaining untouched. There is a Z80 library for FutureOS the programmer can use for own applications.
  
A programmer can use almost all Z80-CPU registers. In contrast to the regular case, FutureOS allows to freely use both set of registers (the only exception is the I register, which is used when IM 2 is active). Further you can use the RST vectors and the Interrupt-Entry at &0038 (IM 1) for your own programs.
+
*''The Command Bar Menu:'' In addition [[CBM]] can make application development easy and quick. All needed sources are provided and explained. A variety of sample programs exist to show how to use CBM.
  
== Plug and Play? ==
+
*''Programming in C for FutureOS:'' With [[FIOLIB|FIOLIB]] - the IO-Lib for FutureOS it's also possible to use C as a programming language. Beside the usual I/O the FIOLIB provides a lot of valuable functions for management of text, keyboard, files, relative files, screen, colors, graphic and more.
If you connect a hardware expansion to a CPC, FutureOS will automatically detect that expansion, initialise it and make it accessible. The architecture of the OS allows you to add and remove hardware on purpose. An example: You add a trackball, you use it, then you connect and use a joystick and then you use a proportional mouse for example. You can turn external hardware in the configuration-bytes on or off.
+
  
== Drives, hard-discs and mass storage ==
+
== Applications / Demos / Games  ==
Standard OS like AmsDOS, CP/M or MS-DOS work only with one drive (or partition) at one time. If someone wants to use another drive, they must leave the actual drive and activate the new drive (AmsDOS: “|B” /// CP/M and DOS: “B:”). FutureOS doesn't have that restriction. You can use up to eight drives and up to four hard-disc partitions at the same time. Further you can work with IDE-hard-discs since system .9.
+
To select devices just click the drive-icons and partition-icons of the corresponding devices you want to use. And then click the DIRectory icon. Now FutureOS reads all the directories in RAM and you can work with all the files of all selected devices. FutureOS buffers all directories in expansion RAM. That speeds up file handling. For example a 178 KB file can be read (or written) in less than 9 seconds. Normally a FutureOS application is loaded in about one or two seconds from floppy disc or faster from hard-disc.
+
  
== Core Utilities ==
+
The following programs can be&nbsp;downloaded&nbsp;at the FutureOS homepage, see Weblinks below.  
Use the Desktop to start the embedded utilities, you can use the joystick, a mouse, a trackball or a light-pen. There is no command line. The user interface is graphical, you just click on icons and files to select them for subsequent actions.
+
For example you can copy, format, verify or refresh a disc. You can copy files in a multidirectional way. This feature allows you to copy files from different discs (and partitions) to different discs (and partitions) at once.
+
Example: I tag files on drive A (User 0, 90 and 240) and hard-disc partition K (user 0, 12 and 180) and now I want to copy them to drive B. It's also possible to copy the same files to different target drives or hard-disc partitions. If the user wants to use those files again, they can just click the Re-Tag icon.
+
  
== Files, Filenames, Fileheaders and more ==
+
*[[Burnin Wheels]] (Soft scrolling car racing game)
Filenames can use all 256 different characters, and you can use User-numbers from 0 to 254, except &E5 (this marks a deleted file). If a file is erased under FutureOS, this file is not only shifted to User &E5, being completely purged from the directory. If a bunch of files is deleted the improvement becomes obvious. FutureOS renames and erases files video oriented, it’s very comfortable and fast, because the buffered directory is only written once to disc (? - meaning not clear).
+
*[[Captain Future]] (4 MB movie that uses Jareks 4 MB expansion)
Furthermore one can show files on-screen (scroll up and down), print files, print directories, rename files (user and name).  
+
*[[Cyber Huhn|Cyber Chicken]] (3D space game)
You can type a file and you can show the file-header. When typing a text-file one can define columns and lines of a window in which the text should be presented (overscan can be used). When looking at file-headers you can look at the file-header of a normal AmsDOS file or the icon-like file-header of a FutureOS program can be displayed. An AmsDOS file-header has 128 bytes, but only few bytes are used (loading-address, file-length, start-address…). Under FutureOS this 128 byte file-header is expanded, and every byte is used. The FutureOS file-header has two advantages: A file has now a 24 Bit length and can have a physical RAM select. Therefore a file can be defined to be loaded everywhere in the external RAM. Another feature is the fact that a FutureOS file-header can contain a graphic-icon, a text-icon or a short description of the file. But FutureOS can still work with old AmsDOS file-headers.
+
*[[CBM|CBM]] (non resident OS expansion)
 +
*[[Darth Vader]] (stand alone demo)
 +
*[[FilmeMacher|FilmeMacher]] (movie player)
 +
*[[FIOLIB|FIOLIB]] (C library)
 +
*[[Flash ROManager|Flash ROManager]] (management of Jareks Flash ROM expansion)
 +
*[[FuturePlayer|FuturePlayer]] (MP3 and WAV player) - Ask TFM for MP3 files on discs
 +
*[[FutureView|FutureView]] (disc mag)
 +
*[[FutureTex|FutureTex]] (text editor)
 +
*[[Gerelakos|Gerelakos]] ([[RPG]] under construction)  
 +
*[[GMSK|GMSK]] (sprite converter)
 +
*[[Gravitation Zero]]
 +
*[[GSED]] (Graphic Playground Editor for 2D / 3D games)  
 +
*[[H.E.R.O.]] by [[Flynn]]
 +
*Kane (sprite grabber)
 +
*[[Meg Ryan sample]] demo
 +
*[[MegaFlashROManager]] (management of the MegaFlash Pseudo-ROMs for FutureOS and BASIC)
 +
*[[MMcR Format]] (Ultrafast formatting tool for batches of discs)
 +
*[[NGC4650A]]
 +
*[[Odiesofts Snow]]
 +
*[[Return of the Sisters|Return of the Sisters]] (a Giana Sisters Clone) WIP name "A tribute to the Sisters..."
 +
*[[ROManager|ROManager]] (management of a variety of Flash- and Pseudo-ROM cards)
 +
*[[Rotating Fractal]] (stand alone demo)
 +
*[[Star Trek sample demo]]
  
== A little Machine monitor ==
+
== Conclusion  ==
From the Desktop you can call a little machine monitor. This monitor provides features like editing of CPU registers and I/O ports, display and edit memory (or the content of the ASIC of the 6128plus). Memory blocks can be copied or initialised. Finally it is possible to call a routine (with defined CPU registers and memory). The monitor is piece of help for developing programs and for testing new hardware. Even the brand new CPC Booster+ and the CPC-IDE/Symbiface were supported.
+
  
== Programming environment ==
+
FutureOS is designed as an OS with fast system calls and support for nearly all CPC expansions. It has specialised file handling and memory management capabilities that support programs up to 4 MB and files up to 16 MB. The idea is that development of professional software, games, graphic tools, word processors, sound, management of big amounts of data, and programming languages are possible in this environment. At this point, the user can do all this, like listen to MP3 files, work with graphic, use and create C programs, watch movies, demos and play games (see weblinks).
Programming for FutureOS is just like programming for Z80. You can use the routines provided by the OS and you can use the routines of FutureOS. In simple words your program can call the Desktop like a subroutine. An example is GMSK (or programs which use CBM). This program asks the user to tag some source pictures; the program calls the Desktop and the user can now insert a disc, read the directory and tag all the files needed.
+
This achieves a uniform working environment throughout all programs.
+
  
== How to program for FutureOS ? ==
+
== Web links  ==
=== Z80 Assembler ===
+
You can use an assembler for AmsDOS or for CP/M. Work like usual and save the code to disc, then just activate FutureOS through the RSX command |OS or |FDESK. Now you just have to run the newly assembled program. And that’s it. After that you can return to the OS where your assembler is running. Switching between AmsDOS and FutureOS is quite fast, and using |FDESK allows to come back to AmsDOS with intact first 64 KB or RAM.
+
For programmers the file #E is of interest, it contains all needed EQUates. You should use #E as part of your source code. All the OS-routines are explained in detail in files ROM-?.DOK. The OS variables (EQUated in #E) are explained in file #D and in the FutureOS handbook.
+
  
=== Programming in C for FutureOS ===
+
=== General ===
If you don’t like to program assembler, you can use a very common and fast programming language: C! For example you can use the CP/M version of Small-C or a Windows-based cross-compiler of the C language. The only thing you have to do is to use FIOLIB.C instead of IOLIB.C. The file FIOLIB.C contain all C functions to use FutureOS system-calls.
+
*[http://www.FutureOS.de FutureOS.de]
You can use a normal C program compile it, assemble it, link the object-code with FIOLIB (an all other needed libraries) and add an header to the *.COM file with COMFU.COM. To start such an C-program under FutureOS you have to start the RUNC-environment first. RUNC strongly expands the features of FIOLIB. Thanks to RUNC it is possible to store functions in E-RAM, that means that you have more main memory for your C applications! This way the length of your C program only depends on connected RAM. Further information is provided at http://groups.yahoo.com/group/FutureOS/ and www.FutureOS.de.
+
*[http://groups.yahoo.com/group/FutureOS/ FutureOS Downloads & Mailing list]
 +
*[http://cpc-live.com/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]
  
== CBM – A menu system for FutureOS ==
+
=== Discussion Forum ===
What is CBM? This Command Bar Menu system provides an user-interface for nearly every thinkable program. It is not part of the OS itself, but takes strong advantages of the OS system calls. However, since the source is available, you can adapt CBM for all your FutureOS-programs very easily. Have a look at some of its functions. For example you can choose your colours, screen-mode (for editing, not for CBM) and interface-language (which is preselected through your configuration), deal with files and data. And the best is you can add your own functions to the Menu “Prog.Functions” 1 and 2. That’s enough space for all applications. For example the MP3-Player for FutureOS takes advantages of CBM.
+
*[http://www.cpcwiki.eu/forum/programming/futureos-corner/ Discussions in English]
 +
*[http://cpc-live.com/forum/index.php/board,5.0.html Diskussionen auf Deutsch]
  
== The End ==
+
=== Youtube Videos ===
FutureOS is for programmers who want to be able to escape from the conventions of the original machine. Due to its fast file-handling and memory-management it is ideal for bigger programs (up to 512 KB). Some examples are: word processors, scientific mathematics, graphics, sound (especially MP3), spreadsheet, management of big amounts of data, bigger games and programming languages.
+
*[http://www.youtube.com/watch?v=v5pELSnmnDM Installing FutureOS on a [[MegaFlash]]]
On the other hand FutureOS can be used as a very fast tool for managing your data, especially copying discs & files and to manage all the things that would normally require several separate programs.
+
*[http://www.youtube.com/watch?v=OQfZsoN4wrU A Tribute to the Sisters Level 1]
 +
*[http://www.youtube.com/watch?v=g5TTf68VDPk A Tribute to the Sisters Level 2]
 +
*[http://www.youtube.com/watch?v=srl5KJJpHJQ&feature=related Filmemacher / Moviemaker Demo 1]
 +
*[http://www.youtube.com/watch?v=BegY8i07iqA&feature=related Filmemacher / Moviemaker Demo 2]
 +
*[http://www.youtube.com/watch?v=XIeUEqPZ-04&feature=related Filmemacher / Moviemaker Demo 3]
 +
*[http://www.youtube.com/watch?v=RPyCKAttjEo Some fun with MacDeath's R-Type GFX]
 +
*[http://www.youtube.com/watch?v=VtVYaQuDw5c Let it snow... let it snow... let it snow...]
 +
*[http://www.youtube.com/watch?v=LPYBy-F-8s4&feature=related Playing an 8 bit Star Trek Sample on Digiblaster]
 +
*[http://www.youtube.com/watch?v=wBK2_LBDl6Y Showing a 4 MB video on an Amstrad CPC using Jareks 4 MB expansion]
 +
*[http://www.youtube.com/watch?v=MjllfqKZjyY Forth issue of FutureView IV]
 +
*[http://www.youtube.com/watch?v=wF0SbEJEO0A Display the keyboard matrix of the CPC]
 +
*[http://www.youtube.com/watch?v=pVPStMg5keU Showing the file-headers / icons of files on disc]
 +
*[http://www.youtube.com/watch?v=RGkiMJbWfpk How to install a Wallpaper?]
 +
*[http://www.youtube.com/watch?v=kc1a_56lJgA Formatting batches of discs ultrafast using MMcR]
 +
*[http://www.youtube.com/watch?v=6vWZeZpNYjg Using RUNC framework to run Small C programs under FutureOS]
  
== Web links ==
+
[[Category:4 MB RAM Software]]
* [http://www.FutureOS.de FutureOS homepage]
+
[[Category:Cartridges]]  
* [http://groups.yahoo.com/group/FutureOS/ FutureOS mailing list]
+
[[Category:CPC GUI]]
 +
[[Category:CPC_Plus]]
 +
[[Category:Digiblaster]]
 +
[[Category:Expansion ROM]]
 +
[[Category:Extended RAM Software]]
 +
[[Category:FutureOS]]
 +
[[Category:Operating_System]]

Latest revision as of 12:05, 12 November 2019

FutureOS-Logo
FutureOS main screen

Introduction

FutureOS is an revolutionary operating system for the Amstrad CPC6128, 6128Plus, C-One and CPC TREX. The version for the CPCPlus supports some of its special features. The CPC464 and CPC664 can run FutureOS with a revaldinho's 512 KB RAM expansion only. FutureOS is being developed by TFM of FutureSoft in Z80 assembler. The development of FutureOS and its applications continues from 1989 up to now (2019). Latest OS release was August 7, 2019.

On the Amstrad CPC many efforts to build a GUI were made. In other cases they were just extensions to realize some kind of a WIMP environment but weren't true operating systems with their own kernel, memory-management, BIOS, BDOS and so on. Therefore, the CPC's own OS (in combination with AmsDOS) and CP/M (Plus) were the only two known OSes for the series, but the question remained: since most CPCs have 128 KB (most C64 only have 64 KB), a screen-resolution of 640x200 (C64 only has 320x200) and some more advantages, why not have something similar? So the FutureOS-Project was born.

FutureOS allows the user to control the computer with a broad variety of HIDs. The surface provides an icon section, a file section and a status section. The OS can deal with files up 16 MB (24 bit file-length) and it can load/save files up to 4 MB in one piece. It has a dynamic memory management system, which divides RAM usually into 16 KB blocks - or in smaller pieces. Further it supports a broad variety of hardware expansions. FutureOS is delivered together with a variety of utilities in the same four ROMs. Additional expansion ROMs can be added.

FutureOS can be used with German, English, French and Spanish language interfaces.

The OS itself has about 63.000 lines of code, the source code is about 630 KB in size.

How to start FutureOS

The RSX command |OS will start FutureOS. You get directly into the Turbo Desk, there you can tag a drive and start an application f.e. (see Desktop).

If you want to use FutureOS temporary then use the RSX command |FDESK, this will save your first 48 KB RAM and you can leave FutureOS later and return to previous work.

Requirements

It runs on 'off the shelf' hardware when using the Cartridge for the 6128 Plus. The core of the OS needs 64 KB ROM. On the CPC6128 it needs a ROM expansion or similar. Compatible products are EPROM-cards, the X-MEM, MegaFlash, ROM-RAM-BOX, SYMBiFACE II, RAMcard, Jareks Flash-ROM, MegaROM or similar products. If you don't own such a card, you can take a look at FutureOS by using a compatible CPC Emulator (JavaCPC, WinCPC, Caprice, WinApe, CPCEmu, Arnold, Sugarbox) or others.

The core of the OS itself is executed directly in (Pseudo-)ROM or EPROM (in four 16 KB blocks). It jumps between the ROMs with the help of a little common area. Therefore the numbers of the four 16 KB ROMs are hardcoded and the jumps are very quick. Applications like ROManager can change all that numbers.

FutureOS uses 2 KB (&B800...&BFFF) of the first 64 KB; the remaining RAM is available to applications. Additional RAM can be reserved for DIRectory buffering. Furthermore the OS uses memory management (up to 4 MB), file-handling and specialized Low/Mid/High-level routines to access the hardware.

FutureOS can be launched from AmsDOS with the RSX commands |OS or |FDESK. If you use |FDESK you can leave FutureOS and get back to BASIC where you have stopped before - the first 48 KB (not the screen) have been preserved.

FutureOS only runs well on a CPC6128 or 6128 Plus (not CPC464 or 664, except you have a RAM expansion with full RAM mode &C3 support like the one from Revaldhino), because of their support for RAM configuration C3 (essential for the mouse pointer). FutureOS is not compatible with Firmware or CP/M programs, but supports their data structure. It needs a Class 2 CPC, it runs best with a Class 4 CPC or higher.

FutureOS does not require the native CPC-OS, except its character set. If you replace the lower ROM by the CPC FutureOS lower ROM for example, then FutureOS will start directly.

There is a Cartridge version of FutureOS which supports some Plus features.

Limitations

For CPCs with 128 KB there may be some limitations. The command |FDESK uses 48 KB E-RAM, a wallpaper uses 16 KB E-RAM. So in this case for example the E-RAM would be used up and this will inhibit some OS functionality (f.e. copy data). A RAM expansion is strongly suggested. In case the OS requires more RAM you can always switch the wallpaper off to gain 16 KB and use the |OS command to start FutureOS.

Graphic User Interface

The Graphic User Interface (GUI) of FutureOS presents the user with three sections:

  • the icon section (upper half of screen)
  • the file window (lower half of screen)
  • and the message base (the two bottom lines of the screen)

The GUI appears directly after starting FutureOS, but can also be used by applications. The user can browse through directories of discs and hard-disc partitions. The text window provides space to display one directory page, this is 64 different file names (equals one full directory of a Data, System or IBM formatted disc). Using the keys SHIFT and CONTROL you can browse page by page through the directories of devices.

A graphical mouse pointer is used to select devices, functions or files; this pointer can be controlled with nearly all of the pointer based HID devices (joystick, mouse, trackball, light-pen, Grafpad II, analogue joystick etc.) available for the CPC.

In addition functions provided by the GUI can be activated using hotkeys. Type "d" for example to read and display the directory of a drive.

Applications can call the GUI of the OS; and the user returns to the application using the OK icon. The icons are fixed, therefore the layout remains stable throughout its use and on every CPC using FutureOS.

In SPARtan mode the GUI only displays icons which can be used directly. Unused icons will be hidden. In this mode the GUI is more easy to use and you see a bigger part of the wallpaper (if loaded).

Desktop functions

Watch pictures or movies. View text-files on-screen (scroll up and down) or print them on your printer. When viewing a picture you can adjust MODE and screen format using the cursor keys. When typing a text file it is possible to set the number of columns and lines of the window the text is displayed in.

File headers can also be examined. FutureOS uses expanded but compatible file-headers, that allow a file to be up to 16 MB in length. The file-header can additionally specify the target RAM of a file. Further it can contain a file icon or a short file description.

One or more files can be LOADed, SAVEd, RENamed, ERAsed, COPYd or PRINTed on printer.

Previously used files can be retagged for a second usage, or all files can be untagged.

The I(nformation) icon provides any kind of help (if a help system is installed).

Further there is the FutureOS Monitor, which provides access to RAM, ROM, Z80 registes, I/O ports and allows the testing of routines.

Auto-DIR

If Auto-DIR is enabled, then it's enough to click at a drive Icon to read its DIRectory. You can select this feature using the 'Config OS' utility, either from disc or Tool-XROM.

Hot keys

Hot keys can be used every time while working in the Desktop. To activate or deactivate a device (drive, hard disc partition f.e.) press Space first, then the corresponding letter from A to M.

A (retag All previously used files), B (jump over next file name without tagging), C (Copy discs), D (display Directory), E (Erase files or format discs), F (Filecopy), G (Go to function below mouse arrow or tag a file name), H (show IDE Hard-disc), I (get Information), J (Jump to first file name), L (Load file), M (enter Machine Monitor), N (reName file or disc), P (Print DIR or file), Q (Quit OS session or start new), S (Save file), U (Untag all files), V (View pictures of text), W (set Alarm time - Wecker), X (eXecute application), Y (edit date), Z (edit time).

SPARtan mode

SPARtan 1.png

The SPARtan mode reduces the number of displayed icons to a icon set which can be immediately used. Using the Desktop will be easier and you see more of your wallpaper. When the Spartan mode is off, all icons will be shown all the time. The Spartan mode can be activated by setting a bit in the configuration bytes, either by hand of by using the 'Konfig OS' / 'Config OS' utility (see system application disc).

Auto-DIR mode

If the Auto-DIR option is switched on (like in recent releases) it's enough to click on an drive / partition icon to read, sort and show its DIRectory. Furthermore in this mode some 'AI' is activated f.e. when click at the Copy icon and no files are tagged the Desktop will directly jump into Disc-copy mode. If the Auto-DIR is off, then you need to do more things 'by hand', but you also have more control over the system. The Auto-DIR mode can be activated by setting a bit in the configuration bytes, either by hand of by using the 'Konfig OS' / 'Config OS' utility (see system application disc).

Wallpaper

Like for most OS the background of the Desktop can be adapted. This is actually quite easy for FutureOS. Just use the application "-LoadHGB.64K" (English) / "-LadeHGB.64K" (German). HGB stands for "HinterGrundBild" and is German for Wallpaper. There are discs full of wallpapers.

If you want to create your own wallpapers then you'll need a MODE 2 screen with 512 x 256 pixel.

You also can load a wallpaper by hand: Place such a 16 KB (headerless) screen in one of the E-RAMs and set the right system variable of the OS (see file #D.). Here are some Wallpapers:

http://futureos.cpc-live.com/files/Wallpaper_HGBs_Deu-Eng.zip

Or take a direct look at some Wallpapers

FutureOS hardware monitor

The FutureOS Monitor is a small built in machine monitor of the FutureOS operating system. It contains basic functions to access (expansion) memory and the Porting system to comfortably access all the CPCs I/O ports. When using FutureOS for the CPC Plus you can also access all memory mapped I/O (hardware sprites, DMA-sound, soft scrolling etc.).

Features

  • Dump RAM, ROM, expansion RAM or memory mapped I/O (CPC Plus)
  • Edit RAM, expansion RAM or memory mapped I/O (CPC Plus)
  • Access all I/O ports of the CPC and external hardware
  • Edit Z80 registers (previously to calling an machine program). This includes the first and second register set, both index registers, the stack pointer, R and I
  • Configure RAM, ROM, I/O for other functions
  • Move block of memory, ROM, RAM, expansion RAM
  • Initialize block of memory with an 8 or 16 bit value, RAM, expansion RAM
  • Call a machine program or OS function
  • Exit, brings you back to the Desktop

Images

CBM

CBM.png

The "Command Bar Menu" (CBM) is a partially resident part of FutureOS, which can be easily linked into applications.

  • It's object oriented (OO) user interface consists of several flexible windows, pull down menus and file selectors.
  • In addition hot keys can be used.
  • Using CBM as the standard (G/T)UI for FutureOS programs helps making them looking similar and usable in an intuitive way.
  • A part of the CBM is located in the FutureOS ROMs, the flexible part can be individually adapted to its target applications and will be integrated in the application itself.

File system

Example of FutureOS file header

The file system of FutureOS can handle multiple simultaneous floppy disc drives and hard disc partitions. After the selection of the devices FutureOS reads and buffers the directory entries of the devices. This speeds up the the data transfer significantly. Integrated utilities like the multi file copy can copy files from physical sources to different physical destinations in one run.

The file system is compatible with the CPCs native data-, file- and format structures (f. e. File header, Disc formats), but expanded in many ways. FutureOS supports the Data, IBM, System, Vendor and Vortex (704 KB) disc formats.

Filenames can use all 256 different characters and user areas from 0 to 254 (except for &E5, which is reserved for deleted files). Unlike Amsdos, a file that is erased under FutureOS is not shifted to user &E5, but is physically removed from the directory. During this process the directory get sorted. File headers can be displayed as small text files or as graphic icons (f. e. a FutureOS application). An AmsDOS file header has 128 bytes of which most are unused. FutureOS makes use of those unused bytes so that files have a length definition of 24 bit (16 MB file length) and can have a physical RAM select. Therefore a file can be defined to be loaded everywhere in the external RAM. Also a FutureOS file-header can contain a graphical icon, a textual icon or a short description of the file.

FutureOS includes the fastest FDC-based disc- and file-reading and writing routines for the CPC. This is possible by ignoring the interleave factor, reading one physical sector directly after each other to the correct position in memory but also by just starting with the first appearing sector of every new track. In addition the DIRectory is buffered in RAM, the head of the floppy must not step back to look for the next block. The track step rate is increased and can be adjusted for every drive. It's even faster than optimized copy programs like Crowns' Crime.

Implementation of Hardware

The OS supports many of the hardware available for the CPC. One of the ambitions of FutureOS is to support all hardware available. Hardware expansions usually need drivers that can be flexibly added to an OS. Contrary to this approach, a goal of FutureOS is to provide a monolithic architecture where all drivers are implemented in a hardcoded way.

  • Disc drives and hard discs: FutureOS supports up to eight floppy disc drives and up to four hard disc partitions (Dobbertin HD20 hard disc). It buffers the directories read from any mass storage device in the expansion RAM to speed up drive access.
  • Plug and Play: If a hardware expansion is connected to the CPC FutureOS will automatically detect that expansion, initialise it and make it available to user and applications. The architecture of the OS allows you to add and remove hardware on purpose (hot plug and play). You can switch external hardware on or off in the configuration bytes (use ConfigOS utility).

Memory Management

RAM

  • Unlike other CPC-OS the FutureOS uses only small amounts of the memory of the CPC since it is located and executed in ROM.
  • When using the Desktop the OS uses the RAM between &A000 and &BFFF (8 KB).
  • In case an application is running: The RAM that is used by the OS can be reduced to the region between &B800 and &BFFF, in this case only 2 KB are occupied by system variables of the OS.
  • Depending on the amount of active drives and HD partitions additional expansion RAM blocks will be occupied for directory buffering, but there is no reduction in free main memory (first 64 KB). After loading data this buffers can be freed again of course.
  • FutureOS provides an expansion RAM manager containing all needed OS functions to check for, order, allocate, free and manage expansion RAM up to 4 MB.
  • Also files of that length (4 MB) can be loaded and saved at once. This depends on the amount of connected E-RAM of course.

ROM

  • The core OS uses 64 KB ROM
  • By using fixed ROM numbers quick jumps can be made from one ROM to another ROM without the need of using RAM. This is also true for additional ROMs which want to use the API in the care ROMs A-D.
  • FutureOS provides an expansion ROM (XROM) architecture which allows to add programs as expansion ROMs. For the native OS these ROMs are declared as "extension" and will NOT be initialized.

XROMs

  • Currently there are a few XROMs for FutureOS:
    • ROManager 2.19
    • System-Tools (English or German)
    • Wallpapers I, II and III
  • The XROMs can be automatically started, f.e. you can have your favorite wallpaper when starting FutureOS. The tools to setup autostart are on the XROM disc.

OS supported Hardware

Printer ports

Drives

and ...

  • HxC Floppy Emulator (On message "Disc is write protected" put a HFE in HxC or adjust its configuration)

Expansion cards

Hard-disc

Joysticks

Memory expansions

CPC464 and CPC664 users can run FutureOS when using this RAM expansion: http://www.cpcwiki.eu/forum/amstrad-cpc-hardware/open-source-diy-512kb-ram-expansion/msg163566/#msg163566

Real-Time-Clocks

Sound and Music

Networking

There is limited support at the moment

Additional HIDs (Hot Plug & Play compatible)

The following pointer-based input devices are supported by FutureOS. Applications can use them by calling the appropriate OS function in OS-ROMs A, C or D.

Mice

Lightpens

Graphic Tablets

Trackballs

ROM-included Utilities

The FutureOS ROMs already include several utilities as an addition to the operating system. Tools like copy (files or discs), format discs (data-, system-, ibm- and Vortex-format), erase files, rename files, type and print files, set alarm time, set time of RTC, verify discs or directory refreshing, display file-header etc. are available without the need to load them from an external medium.

Multiple files can be copied between different physical media and user numbers / directories in one go.

A small machine monitor is also provided. The FutureOS Monitor provides features like CPU register editing (all!), access to the I/O ports, memory dump and editing, and display and manipulation of the ASIC contents (6128 Plus). Memory blocks can be copied or initialized. It is possible to call (and return from) a routine with defined CPU registers (complete register set) and memory.

OS functions

Only some examples are mentioned.

  • The String Editor: It allows to enter strings up to 64 KB, different character sets can be used, a range of legal letters can be defined, four keyboard levels (normal, shift, control and shift+control) can be used.


Developing for FutureOS

You can develop very freely: the RSTs are free for use, you can choose the interrupt mode and access all the hardware. Also the second register set of the Z80 can be completely used by applications - in contrast to all other OS for the CPC.

  • Z80 Assembler: You can use an assembler for AmsDOS or for CP/M. Switching between AmsDOS and FutureOS is fast and using |FDESK allows to come back to AmsDOS with the first 48 KB or RAM remaining untouched. There is a Z80 library for FutureOS the programmer can use for own applications.
  • The Command Bar Menu: In addition CBM can make application development easy and quick. All needed sources are provided and explained. A variety of sample programs exist to show how to use CBM.
  • Programming in C for FutureOS: With FIOLIB - the IO-Lib for FutureOS it's also possible to use C as a programming language. Beside the usual I/O the FIOLIB provides a lot of valuable functions for management of text, keyboard, files, relative files, screen, colors, graphic and more.

Applications / Demos / Games

The following programs can be downloaded at the FutureOS homepage, see Weblinks below.

Conclusion

FutureOS is designed as an OS with fast system calls and support for nearly all CPC expansions. It has specialised file handling and memory management capabilities that support programs up to 4 MB and files up to 16 MB. The idea is that development of professional software, games, graphic tools, word processors, sound, management of big amounts of data, and programming languages are possible in this environment. At this point, the user can do all this, like listen to MP3 files, work with graphic, use and create C programs, watch movies, demos and play games (see weblinks).

Web links

General

Discussion Forum

Youtube Videos