Difference between revisions of "FutureOS"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Utilities)
(some small corrections)
Line 2: Line 2:
  
 
== Introduction ==
 
== Introduction ==
'''FutureOS''' is an application starter/shell 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.
+
'''FutureOS''' is an application starter and shell 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 allows accessing files with a size of up to 512KB. FutureOS provides some standard disc and print utilities. Further applications are delivered for disc or hard-disc. FutureOS is written in assembler like most serious 8bit software.
  
 
== Requirements ==
 
== Requirements ==
The core of the OS needs 64 KB ROM. Compatible products are EPROM-cards, the ROM-RAM-BOX, [[SYMBiFACE II]], 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 needs 64 KB ROM. Compatible products are EPROM-cards, the ROM-RAM-BOX, [[SYMBiFACE II]], RAMcard or similar products. If you don't own such a card, you can take a look at FutureOS by using a compatible 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 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 itself is executed directly in ROM or EPROM where it is divided in four 16 KB blocks. It jumps between the ROMs with the help of a little common area. Depending on the number of buffered directories it requires between 24KB and 48KB of RAM. The remaining memory can be used 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.
  
 
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).
 
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).
  
 
== GUI ==
 
== GUI ==
The Desktop of FutureOS 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.
+
The Desktop of FutureOS is divided in two sections. First an 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.
  
 
The Desktop can be controlled using a joystick, mouse, trackball or light-pen. There is no command line. The user interface is graphical, you click on icons and files to select them for subsequent actions.
 
The Desktop can be controlled using a joystick, mouse, trackball or light-pen. There is no command line. The user interface is graphical, you click on icons and files to select them for subsequent actions.
  
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.
+
Applications can call the GUI as a subroutine. FutureOS is said to be easy to handle, after learning how to work with it. The icons are fixed, so you will always work with the same desktop.
  
 
== File system ==
 
== File system ==
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: [http://www.FutureOS.de www.FutureOS.de].
+
FutureOS is compatible with the CPCs native data-, file- and format structures (f. e. File-header, Disc-formats). It is not compatible with native [[Amsdos]] or [[CP/M]] programs. FutureOS and compatible applications can be downloaded at: [http://www.FutureOS.de www.FutureOS.de].
  
Filenames can use all 256 different characters and user numbers from 0 to 254 (except for &E5, which marks a deleted file). Different to Amsdos, a file that is erased under FutureOS will not be shifted to user &E5, but it will be physically removed from the directory. Files can be viewed on-screen (scroll up and down) or printed. You can also view the file-header. 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 are displayed as AmsDOS file or the icon-like file-header of a FutureOS program. An AmsDOS file-header has 128 bytes of which some bytes are unused. FutureOS makes use of those unused bytes so that files have 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. Also a FutureOS file-header can contain a graphical icon, a textual icon or a short description of the file. FutureOS work with old AmsDOS file-headers.
+
Filenames can use all 256 different characters and user numbers from 0 to 254 (except for &E5, which marks a deleted file). Different to Amsdos, a file that is erased under FutureOS will not be shifted to user &E5, but it will be physically removed from the directory. Files can be viewed on-screen (scroll up and down) or printed. You can also view the file-header. 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 are displayed as AmsDOS file or the icon-like file-header of a FutureOS program. An AmsDOS file-header has 128 bytes of which some bytes are unused. FutureOS makes use of those unused bytes so that files have a length definition of 24bit 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 work with old AmsDOS file-headers.
  
 
== Hardware ==
 
== Hardware ==
The OS supports many of the hardware available for the CPC, including the Vortex disc drives and the Dobbertin HD20.
+
The OS supports many of the hardware available for the CPC, including the Vortex disc drives, several mices and the Dobbertin HD20.
  
One idea of FutureOS was to support any hardware available. For example there are 3.5” B-drives, Vortex F1-D-drives, hard-discs, real-time-clocks, serial interfaces etc. Hardware expansion usually need their own drivers (DOS on Eprom). One of the future goals of FutureOS is to provide access to different expansions under one roof.
+
One idea of FutureOS was to support any hardware available. For example there are 3.5" B-drives, Vortex F1-D-drives, hard-discs, real-time-clocks, serial interfaces etc. Hardware expansion usually need drivers, which can be flexible added to an OS. In contrast to this one of the future goals of FutureOS is to provide a monolithik architecture, where all drivers are implemented in a hardcoded way.
 
+
FutureOS is planned to work with all known hardware expansions for the CPC. It should be possible to 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).
+
  
 
=== Drives, hard-discs and mass storage ===
 
=== Drives, hard-discs and mass storage ===
FutureOS supports up to eight drives and up to four hard-disc partitions. FutureOS buffers the directories read from any mass storage device in the expansion RAM.
+
FutureOS supports up to eight drives and up to four hard-disc partitions. It buffers the directories read from any mass storage device in the expansion RAM.
  
 
=== Plug and Play ===
 
=== Plug and Play ===
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.
+
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, if you are able to rewrite the ROM.
  
 
== Utilities ==
 
== Utilities ==
Tools like copy, format, verify or refresh a disc exist. You can copy files from different discs and partitions to different discs and partitions at once.
+
Tools like copy, format, verify or refresh a disc exist. You can copy files from different discs and partitions to other discs and partitions at once.
  
Example: You can copy files from drive A (User 0, 90 and 240) and hard-disc partition K (user 0, 12 and 180) to on or more different target drives or hard-disc partitions.
+
Example: You can copy files from drive A (User 0, 90 and 240) and hard-disc partition K (user 0, 12 and 180) to one or more different target drives or hard-disc partitions, a feature, what many users need all the time.
  
 
=== Machine monitor ===
 
=== Machine monitor ===
 
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. It is possible to call a routine with defined CPU registers and memory.
 
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. It is possible to call a routine with defined CPU registers and memory.
  
=== CBM a menu system for FutureOS ===
+
=== CBM - a menu system for FutureOS ===
 
The Command Bar Menu (CBM) provides an user-interface for own programs. It is not part of the OS itself. The source code is available and it's possible to use CBM for FutureOS programs. An example is the MP3-Player for FutureOS which uses CBM.
 
The Command Bar Menu (CBM) provides an user-interface for own programs. It is not part of the OS itself. The source code is available and it's possible to use CBM for FutureOS programs. An example is the MP3-Player for FutureOS which uses CBM.
  
 
== Developing for FutureOS ==
 
== Developing for FutureOS ==
An idea of FutureOS was to develop an OS which is able to deal with big files and applications while being easy to program. 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.
+
Most of the low level hardware resources must be accessed by the application itself, as FutureOS doesn't provide support for them. E.g. FutureOS doesn't include interrupt handling, which means, that you have to write your own handler at #38 or can switch to interrupt mode 2, if you own a special hardware expansion, which allows this mode. Depending on the existance and type of your own interrupt handler you may use the second Z80 register set when interrupts are enabled.
 
+
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.
+
  
 
=== Z80 Assembler ===
 
=== Z80 Assembler ===
Line 58: Line 54:
 
It also possible to use C as a programming language. There is a CP/M version of Small-C and also Windows-based cross-compilers of the C language. You have to use FIOLIB.C instead of IOLIB.C. becase FIOLIB.C contains all C functions to use FutureOS system-calls.
 
It also possible to use C as a programming language. There is a CP/M version of Small-C and also Windows-based cross-compilers of the C language. You have to use FIOLIB.C instead of IOLIB.C. becase FIOLIB.C contains 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. RUNC expands the features of FIOLIB. With RUNC it is possible to store functions in E-RAM, leaving more main memory free for applications.
+
You can use a normal C program compile it, assemble it, link the object-code with FIOLIB (an all other needed libraries) and add a header to the *.COM file with COMFU.COM. To start such an C-program under FutureOS you have to start the RUNC-environment. RUNC expands the features of FIOLIB. With RUNC it is possible to store functions in E-RAM, leaving more main memory free for applications.
  
 
== Plans for the next years ==
 
== Plans for the next years ==
Line 66: Line 62:
  
 
== Conclusion ==
 
== Conclusion ==
FutureOS was designed to be able to make free use of the resources of the machine. The OS has specialised file-handling and memory-management that support programs up to 512 KB. The idea is that development of word processors, scientific mathematics, graphics, sound (especially MP3), spreadsheet, management of big amounts of data, bigger games and programming languages should be possible in this environment, though, apart from a MP3 player, none of the examples were written so far.
+
FutureOS was designed as a library with some fast routines, while the application has to access and manage most of the resources of the machine by itself. It has specialised file-handling and memory-management that support programs up to 512 KB. The idea is that development of word processors, scientific mathematics, graphics, sound (especially MP3), spreadsheet, management of big amounts of data, bigger games and programming languages should be possible in this environment, though, apart from a MP3 player, none of the examples were written so far during the last 16 years.
  
FutureOS is also meant to be used as a tool for copying discs & files and to manage things that would normally require several separate programs (any examples here?).
+
FutureOS is also meant to be used as a disc and file copy tool including a machine monitor.
  
 
== Web links ==
 
== Web links ==
 
* [http://www.FutureOS.de FutureOS homepage]
 
* [http://www.FutureOS.de FutureOS homepage]
 
* [http://groups.yahoo.com/group/FutureOS/ FutureOS mailing list]
 
* [http://groups.yahoo.com/group/FutureOS/ FutureOS mailing list]

Revision as of 05:37, 10 August 2006

FutureOS main screen

Introduction

FutureOS is an application starter and shell 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 allows accessing files with a size of up to 512KB. FutureOS provides some standard disc and print utilities. Further applications are delivered for disc or hard-disc. FutureOS is written in assembler like most serious 8bit software.

Requirements

The core of the OS needs 64 KB ROM. Compatible products are EPROM-cards, the ROM-RAM-BOX, SYMBiFACE II, RAMcard or similar products. If you don't own such a card, you can take a look at FutureOS by using a compatible CPC Emulator (WinCPC, Caprice, WinApe).

The core of the OS itself is executed directly in ROM or EPROM where it is divided in four 16 KB blocks. It jumps between the ROMs with the help of a little common area. Depending on the number of buffered directories it requires between 24KB and 48KB of RAM. The remaining memory can be used 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.

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).

GUI

The Desktop of FutureOS is divided in two sections. First an 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.

The Desktop can be controlled using a joystick, mouse, trackball or light-pen. There is no command line. The user interface is graphical, you click on icons and files to select them for subsequent actions.

Applications can call the GUI as a subroutine. FutureOS is said to be easy to handle, after learning how to work with it. The icons are fixed, so you will always work with the same desktop.

File system

FutureOS is compatible with the CPCs native data-, file- and format structures (f. e. File-header, Disc-formats). It is not compatible with native Amsdos or CP/M programs. FutureOS and compatible applications can be downloaded at: www.FutureOS.de.

Filenames can use all 256 different characters and user numbers from 0 to 254 (except for &E5, which marks a deleted file). Different to Amsdos, a file that is erased under FutureOS will not be shifted to user &E5, but it will be physically removed from the directory. Files can be viewed on-screen (scroll up and down) or printed. You can also view the file-header. 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 are displayed as AmsDOS file or the icon-like file-header of a FutureOS program. An AmsDOS file-header has 128 bytes of which some bytes are unused. FutureOS makes use of those unused bytes so that files have a length definition of 24bit 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 work with old AmsDOS file-headers.

Hardware

The OS supports many of the hardware available for the CPC, including the Vortex disc drives, several mices and the Dobbertin HD20.

One idea of FutureOS was to support any hardware available. For example there are 3.5" B-drives, Vortex F1-D-drives, hard-discs, real-time-clocks, serial interfaces etc. Hardware expansion usually need drivers, which can be flexible added to an OS. In contrast to this one of the future goals of FutureOS is to provide a monolithik architecture, where all drivers are implemented in a hardcoded way.

Drives, hard-discs and mass storage

FutureOS supports up to eight drives and up to four hard-disc partitions. It buffers the directories read from any mass storage device in the expansion RAM.

Plug and Play

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, if you are able to rewrite the ROM.

Utilities

Tools like copy, format, verify or refresh a disc exist. You can copy files from different discs and partitions to other discs and partitions at once.

Example: You can copy files from drive A (User 0, 90 and 240) and hard-disc partition K (user 0, 12 and 180) to one or more different target drives or hard-disc partitions, a feature, what many users need all the time.

Machine monitor

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. It is possible to call a routine with defined CPU registers and memory.

CBM - a menu system for FutureOS

The Command Bar Menu (CBM) provides an user-interface for own programs. It is not part of the OS itself. The source code is available and it's possible to use CBM for FutureOS programs. An example is the MP3-Player for FutureOS which uses CBM.

Developing for FutureOS

Most of the low level hardware resources must be accessed by the application itself, as FutureOS doesn't provide support for them. E.g. FutureOS doesn't include interrupt handling, which means, that you have to write your own handler at #38 or can switch to interrupt mode 2, if you own a special hardware expansion, which allows this mode. Depending on the existance and type of your own interrupt handler you may use the second Z80 register set when interrupts are enabled.

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 64 KB or RAM remaining untouched.

Programming in C for FutureOS

It also possible to use C as a programming language. There is a CP/M version of Small-C and also Windows-based cross-compilers of the C language. You have to use FIOLIB.C instead of IOLIB.C. becase FIOLIB.C contains 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 a header to the *.COM file with COMFU.COM. To start such an C-program under FutureOS you have to start the RUNC-environment. RUNC expands the features of FIOLIB. With RUNC it is possible to store functions in E-RAM, leaving more main memory free for applications.

Plans for the next years

It is planned to support the following hardware during the next years:

Conclusion

FutureOS was designed as a library with some fast routines, while the application has to access and manage most of the resources of the machine by itself. It has specialised file-handling and memory-management that support programs up to 512 KB. The idea is that development of word processors, scientific mathematics, graphics, sound (especially MP3), spreadsheet, management of big amounts of data, bigger games and programming languages should be possible in this environment, though, apart from a MP3 player, none of the examples were written so far during the last 16 years.

FutureOS is also meant to be used as a disc and file copy tool including a machine monitor.

Web links