FutureOS
Introduction: FutureOS is a new very fast OS for the Amstrad CPC6128 and 6128plus. 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. Multi-tasking programs can be used. FutureOS provides all kind of 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 pure machine code.
GUI 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. Applications can call the GUI as an subroutine. Therefore FutureOS is easy to handle, after learning how to work with it. The icons are fixed, so you will ever work with the same desktop. Every FutureOS computer looks the same, there is no need to search for an icon or for a function.
Hardware The OS supports nearly all hardware ever made for the CPC! This is also true for very new hardware like the CPC-Booster+ and the CPC-IDE-Interface/Symbiface.
Software FutureOS is compatible with the old data-, file- and format structures (f. e. File-header, Disc-formats). But it is not compatible with ancient AmsDOS or CP/M programs. FutureOS and some MB’s of software can be downloaded at: www.FutureOS.de.
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). The core of the OS itself is executed directly in (EP)ROM where it is divided in four 16 KB blocks. It jumps very fast from ROM to ROM with the help of a little common area. This has the advantage that all the RAM of your CPC is saved for applications and data. Furthermore it allows efficient memory management, file-handling and it brings high system stability (a virus or harmful code is not able to infect ROM J). Under 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. 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).
Supporting it all: The idea of FutureOS was not only to develop a very 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). And all the stuff work properly together. Another point is, that you can program very freely. You can use interrupt mode 1 or 2 (standard under FutureOS). If you design expansion hardware, you will love IM 2. A programmer can use all Z80-CPU registers. In contrast to all other CPC-OS, which steals the second register set of the Z80, FutureOS allows you to treat all registers like you want (the only exception is the I register, which is used when IM 2 is active). Further you can use all the RST vectors and the Interrupt-Entry at &0038 (IM 1) for your own programs. You like to program that free way? Just assemble your program for start address &0000: own RSTs, own charset, all Z80 registers, expansion-memory usage between &4000-&7FFF. FutureOS programs can be made very mighty and efficient.
Plug and Play? PCs sometimes have trouble with Plug and Play. If you connect any hardware expansion to a CPC, FutureOS will automatically detect that expansion, initialise it and make it accessible. The special multisync architecture of the OS allows you to add and remove hardware whenever you want. 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. No problem, they were all properly recognised. The same is true for other hardware expansions. However, you can switch external hardware in the configuration-bytes on or off.
Drives, hard-discs and mass storage Standard OS like AmsDOS, CP/M or M$-DOS work only with one drive (or partition) at one time. If someone wants to use another drive, he/she must leave the actual drive and activate the new drive (AmsDOS: “|B” /// CP/M and DOS: “B:”). FutureOS don’t has 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… 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. Just do it! It’s easy. If you want you can copy the same files to different target drives or hard-disc partitions. If you want to use that files again, just click the Re-Tag icon.
Files, Filenames, Fileheaders and more… 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 you erase a file with FutureOS, this file is not only shifted to User &E5, it will be completely purged from the directory. If you erase a bunch of files, you will see the improvement. FutureOS renames and erases files video oriented, it’s very comfortable and fast, because the buffered directory is only written once to disc. Furthermore you can type files (scroll up and down), print files, print directories, rename files (user and name). You can use lower case letters if you want, as mentioned before. The name of a typical program is “B00:ScreenSaver” for example. To be honest, you really don’t see the “.“ in the file-name, that’s more beautiful. 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 (you can use overscan if you like that). Well, when looking at file-headers you can look at the file-header of a normal AmsDOS file or you can display the icon-like file-header of a FutureOS program. A 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, 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.
A little Machine monitor From the Desktop you can call a little machine monitor. Just click on the Monitor icon. 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). You can copy or initialise memory blocks. 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 Programming for FutureOS is just programming for Z80 very freely. You can use the routines provided by the OS and you can use the routines of FutureOS. In clear words your program can call the Desktop like a subroutine. An example is GMSK (or programs which use CBM). This program asks you to tag some source pictures. Ok, the program calls the Desktop. Now you are in your well known GUI. You can now insert a disc, read the directory and tag all the files you want (to work with). Then, when you think that you have done it, just click the OK icon and the program continues … That means, that parts of every program look equal. You can work with every program, because you work in principle with your Desktop. It’s always the same. And therefore using a new, unknown program should be very easy. But this depends also on the programmer J
How to program for FutureOS ? 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 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. 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.
CBM – A menu system for FutureOS 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.
The End… FutureOS is for programmers who want to use the CPC at its limits. 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, managing of big amounts of data, bigger games and programming languages. On the other hand you can use FutureOS as a very fast tool for managing your data, especially copying discs & files and to manage all the stuff which you normally do with nine different programs.
Further information: