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. FutureOS is developed by TFM of FutureSoft in Z80 assembler. The development of FutureOS and its applications continues from 1989 up to now (2013).
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 128K (most C64 only have 64K), 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.
The OS itself has about 45.000 lines of code, the source code is about 580 KB in size.
Requirements
The core of the OS needs 64 KB ROM. Compatible products are EPROM-cards, the 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) 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, but the jumps are very quick.
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 6128plus (not CPC464 or 664), because of their support for RAM configuration C3 (essential for the mouse pointer). FutureOS is not compatible with native AMSDOS or CP/M programs. 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.
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 size of the text window is fixed to the space needed to display 64 different file names at once (this equals one complete 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 etc.) available for the CPC.
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
Files can be viewed on-screen (scroll up and down) or printed. 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 viewed. 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.
SPARtan mode
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. It 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 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
CBM
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. Using CBM as the standard (G/T)UI for FutureOS programs helps making them looking similar and useable in an intuitive way. A part of the CBM is located in the FutureOS ROMs, another part can be individually adapted to its target applications and will be integrated in the application itself.
File system
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 applikation). 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
- 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 additonal expansion RAM blocks will be occupied for directory buffering, but there is no reduction in free main memory (first 64 KB).
- FutureOS provides all needed functions to check for, order, allocate and manage expansion RAM up to 4 MB. Also files of that length can be loaded and saved at once.
OS supported Hardware
printer ports
- 7 bit printer port (native)
- 8 bit printer port 6128 Plus using Amstrads CRTC solution
- 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 DS B-drive
- Dobbertin D-DOS Double drive. Up to four drives 80 track, doublesided.
- Dobbertin XD-DOS X-drive 80 tracks, DS
- Vortex disc drives FI-D, F1-S, M1-D, M1-S. Own FDC, up to four drives 80 track, doublesided.
- Vortex disc drives F1-X, M1-X. Up to 80 track, doublesided.
and ...
- HxC Floppy Emulator (firmware updated!)
Expansion cards
- C4CPC Only the version for the 6128 Plus
- CPC Booster+ (partial)
- MegaFlash
- SYMBiFACE II
- 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 and SYMBiFACE II IDE support, but only low-level, FutureOS IDE-ROM needed
- Dobbertin HD20 (72 KB/s data transfer rate)
- IDE8255 IDE support, but only low-level, FutureOS IDE-ROM needed
Joysticks
- Analog Joystick (6128 Plus)
- Digital Joysticks 1 and 2
Memory expansions
- c't 512 KB internal RAM expansion (DIY) (c't magazine)
- Dk'tronics 64-512 KB and compatibles (Dobbertin, Inicron, SYMBiFACE II, RAM BOX)
- RAM7's RAM expansion (up to 2 MB)
- Jareks 4 MB RAM expansion up to 4 MB
- X-MEM
- Y-MEM
Real-Time-Clocks
- Dk'tronics Real Time Clock
- Dobbertin Smart Watch (at ROM select 15)
- SYMBiFACE II
Sound and Music
- CTC-AY aka PlayCity
- Digiblaster
- FuturePlayer for MP3 samples up to 128 KB
- Soundplayer
Networking
- CPC Booster+ and TotO's MiniBooster
- Virtual Net 96
- Amstrad / Pace Z80-SIO Interface
- Schneider Z80-STI Interface
There is limited support at the moment
Additional HIDs (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 (Schneider Magazin)
- AMX_Mouse
- AMX PS/2 Mouse Adapter
- CPC-Mousepack (Reisware)
- GEOS mouse (C64)
- PS/2 mouse of SYMBiFACE II
Lightpens
- Dk'tronics lightpen
- Happy Computer Light Pen (DIY from german magazine)
- Lindy Light Pen
Graphic Tablets
Trackballs
- Atari ST trackball adapter (Schneider Magazin)
- 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 are available without the need to load them from an external medium. Multiple files can be copied between different physical media in one go.
A small machine monitor is also provided. The FutureOS Monitor provides features like CPU register editing, I/O ports, memory editing and display and manipulation of the ASIC contents (6128 Plus). Memory blocks can be copied or initialised. It is possible to call 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.
- Burnin Wheels (Soft scrolling car racing game)
- Captain Future (4 MB movie that uses Jareks 4 MB expansion)
- Cyber Chicken (3D space game)
- CBM (non resident OS expansion)
- Darth Vader (stand alone demo)
- FilmeMacher (movie player)
- FIOLIB (C library)
- Flash ROManager (management of Jareks Flash ROM expansion)
- FuturePlayer (MP3 and WAV player) - Ask TFM for MP3 files on discs
- FutureView (disc mag)
- Gerelakos (RPG under construction)
- 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 (a Giana Sisters Clone) WIP name "A tribute to the Sisters..."
- ROManager (management of the SYMBiFACE II Pseudo-ROMs)
- Rotating Fractal (stand alone demo)
- Star Trek sample demo
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
- FutureOS.de
- FutureOS Downloads & Mailing list
- Try and use FutureOS online at JavaCPC
- FutureOS, le supersonique du CPC
- Interview de TFM
-- Youtube Videos --
- Installing FutureOS on a MegaFlash
- A Tribute to the Sisters Level 1
- A Tribute to the Sisters Level 2
- Filmemacher / Moviemaker Demo 1
- Filmemacher / Moviemaker Demo 2
- Filmemacher / Moviemaker Demo 3
- Some fun with MacDeath's R-Type GFX
- Let it snow... let it snow... let it snow...
- Playing an 8 bit Star Trek Sample on Digiblaster
- Showing a 4 MB video on an Amstrad CPC using Jareks 4 MB expansion
- Forth issue of FutureView IV
- Display the keyboard matrix of the CPC
- Showing the file-headers / icons of files on disc
- How to install a Wallpaper?
- Formatting batches of discs ultrafast using MMcR
- Using RUNC framework to run Small C programs under FutureOS