Status: February 13, 2002 (Status as of February 1) Ben Hermans, LL.M managing
partner Hyperion Entertainment Read on...
1.0 AMIGA OS 4.0 DESIGN GOALS
- 1 - Migrate OS 3.9 from 68K to PPC
- 2 - Untie the OS from the Amiga custom chipsets
- 3 - Introduce modern functionality
- 4 - Eliminate key performance bottle-necks
- 5 - Prepare the Amiga OS as a host-OS for Amiga DE
1.1 DEVELOPMENT UPDATE
* Exec Second Generation (Exec SG)
Exec is the kernel of the AmigaOS and is currently written in 68K assembly.
Exec will be re-written for in C and new functionality will be introduced to
allow the deployment of OS 4 on any suitable PPC hardware including but not
limited to the Amiga One, Blizzard PPC, Cyberstorm PPC, Shark PPC from Elbox,
Pegasos from bPlan etc.
The following features are planned:
Hardware abstraction layer Virtual memory New library interface Resource tracking
and management Optional memory protection WarpOS backwards compatibility
The following design documents regarding Exec SG were already written and are
either finalised or being discussed:
- New library model (final draft)
- Hardware abstraction layer (first draft)
- Virtual environment (first draft)
All design documents are available as PDF files.
Both Dave Haynie and Heinz Wrobel have agreed to serve as technical consultants
and the design documents for the HAL and Virtual Environment are currently being
re-written to take account of the relevant feedback we collected.
Development status:
Actual coding on the higher level functionality of Exec is already under way.
Most of the high level functionality of Exec SG is already implemented
(some 50 functions) which includes all list and tag functions and most notably
the memory subsystem and parts of the new library scheme.
The memory system is for now limited to the classic memory system
i.e. the MemHeader/MemChunk functionality. A more sophisticated system is planned
and VM support will also be added down the line.
All of the implemented functions and especially the memory subsystem were successfully
tested and withstood torture tests without problem.
Work is currently underway on the booting process.
The plan is to adapt a remote gdb kernel so that the whole debugging process
can be cross-hosted on Linux thus making debugging substantially easier.
All in all the work is around 50% done.
* 68K emulation
The 68 emulation will be key to OS 4 with many parts of the operating system
still in 68K form as well as a very large base of applications and games in
68K.
Development status of the JIT emulator:
Nearly all 68040 integer instructions are now emulated and work is about to
start on FPU emulation, OS integration and further performance optimisation.
Emulated opcodes:
data transfer: "move" opcodes, moveq, lea, pea, movem, movec, clr,
scc arithmetics: add, addi, adda, addx, addq, sub, subi, suba, subx, subq, neg,
mulu, muls, divs, divu comparing: cmp, cmpi, cmpm, cmpa shifts: asl, lsl, rol,
asr, lsr, ror, roxr, roxl flow control: bra, dbra, bsr, jmp, jsr, rts, rtr conditional
branches: dbcc.x, bcc.x logic opcodes: eor, eori, not, andi, and, ori, or, btst,
bset, bclr, bchg, tas miscellaneous: nop, exg, swap, tst, ext, extb, link, unlk
Adressing: all addressing modes which are supported in 68020 Flag emulation:
negative, overflow, carry, zero, extended
During dynamic recomplilation a low-level flag data-flow analysis allows run-time
optimalisations of recompiled code.
* PPC native TCP/IP stack & PPP drivers
Early tests already suggest that this is the fastest TCP/IP stack found on
the Amiga.
Features are as follows:
- implemented as a single shared library - compatible with the Amiga standard
"bsdsocket" API, as defined by the AmiTCP product - enhanced API for
more control over the inner workings and configuration - built-in DHCP client
- Internet Superserver (inetd) - IP filtering and networking address translation
- drivers for asynchronous PPP (dial-up networking) and PPP over Ethernet
Development status:
The TCP/IP stack (Roadshow) and PPP drivers have been completed
with the following issues outstanding:
- GUI (also required for the PPP drivers)
- SSL implementation/integration.
SSL V2 is very close to completion.
* Re-implementation of the Amiga file system (FFS2) for PPC
FFS2 is a fully backwards compatible re-implementation in C of the Fast File
System. It supports media > 4 GByte, and a new variant of the file/directory
name storage format which allows for long file names (up to 108 characters).
Development status:
Completed and successfully tested.
* Recovery and Salvage tools for FFS2 and SFS
Salvage, Undelete, Unformat, Repair, RDBSalv, ReOrg/Defrag, Check Integrity
etc. with full support for FFS2 and SFS
Development status:
Filesystem Check, Salvage (recovery by copying to another partition), Undelete,
Optimize ("ReOrg"/"Defrag"), Find Partitions and Unformat
are done. The filesystem Repair function still needs some work. Localization
and user documenation is not done yet.
* PPC native RTG system (Picasso 96 V3)
The RTG system allows for the use of modern graphics cards such as the Matrox
and ATI cards on the Amiga.
Development status:
Permedia 2 driver: 85% completed Permedia 3 driver: 60% completed Voodoo 3 driver:
100% completed Matrox G450/G550: work in progress ATI Radeon family: work in
progress
Picasso 96 V3 will subsequently be ported to PPC with the use of the new Exec
SG library model for optimal performance.
An arithmetically optimised PPC native version of layers.library is planned.
* Warp3D (3D driver system)
Warp3D is a powerful yet low-level 3D API which is both available on the classic
Amiga and intent/Amiga DE which allows developers to rapidly migrate 3D content
between both platforms.
Development status:
Permedia 2 driver: 100% completed Permedia 3 driver: work to start upon completion
of 2D drivers Voodoo 3 driver: 100% completed Matrox G450/G550: work to start
upon completion of 2D drivers ATI Radeon family: work to start upon completion
of 2D drivers
* OpenGL 1.3 support (Mesa 4.0)
OpenGL is a cross-platform (Mac, Linux, Windows, AmigaDE etc.) high-level 3D
API originally developed by Silicon Graphics.
Support for OpenGL 1.3 will be provided by porting the open source project Mesa
(which now passes all SGI compliance tests) which will sit on top of Warp3D
so that graphics-card functionality not currently offered by the OpenGL API
may be supported nonetheless.
Development status:
Work will start once Warp3D V5 has been completed.
* PPC native RTA system based on AHI
Developer: Martin Blom and others
A Retargetable Audio System allows the use of plug-in soundcards (PCI or Zorro
II).
AHI by Martin Blom is currently the de facto standard on the Amiga and a PPC
native version will be offered with support for a wide variety of soundcards
including but not limited to all current Amiga soundcards and the Soundblaster
128 and Live (EMU10K1) cards.
Development status:
Martin Blom has started work on the Soundblaster Live drivers.
* PPC native Intuition and Reaction
* Reaction is the BOOPSI based GUI system for the Amiga, introduced in OS 3.5
and extended in OS 3.9.
The functionality of Reaction will be extended by providing more classes and
be integrating Reaction better within the OS.
The addition of the following classes is being contemplated:
-application.class - name not finalized. This class will be a "parent"
and likely unify window class and arexx class management together, ease management
of multi-window applications and support easy creation of applications as commodities.
-speedhint.class - a new help display class based on the speenthint code from
window.class, however this will allow for a more powerful API and future growth
path.
-popwin.gadget - similar to chooser.gadget but allows a popup display containing
most any other gadget as a child - most useful for a popup listview. For this
gadget to function, Intuition needs to gain some new ability. The safety of
making these changes and therefore including the gadget will need to be evaluated
via beta testing.
- prefs.class - a new baseclass that allows for custom plug-in preferences modules
for any of the ReAction classes. Subclasses need to be written for the existing
ReAction classes and supported in ReActionPrefs.
The following functionality will also be implemented:
Drag and Drop support.
New ghosted look
* Intuition will sport the following new features:
New DrawInfo pens, Enhanced window borders Resolution-adaptive system gadgets
User-selectable styles for system glyphs and 3D frames with support for external
plug-ins Configurable look for proportional gadgets New-style (3D recessed)
disabled look for gadgets where applicable Gad-Tools enhancements
(pop-up capability for cycle gadgets etc.) Full-user control of Workbench palette
Development status:
Work is expected to be completed in time for release of OS 4.0 with more work
already planned for subsequent updates of the OS 4.0.
* SCSI drivers for onboard (UW) SCSI controllers
The current SCSI drivers for the onboard SCSI controllers of the Cyberstorm
PPC and the BlizzardPPC are written in 68K code which cannot be emulated due
to the usage of MMU instructions and the different MMU pagesizes of the 68K
and PPC line of CPUs.
It is therefore necessary to replace these drivers.
Support for other SCRIPTS based PCI-based SCSI controllers is planned to allow
an easy migration of SCSI hardware to non-SCSI systems such as the AmigaOne.
Development status:
The SCSI driver framework is completed with work in progress on implementing
the actual driver for the Cyberstorm PPC onboard SCSI controller.
Good progress is being made and the driver is expected to be finished in time.
* WarpInput API
WarpInput is an API for multimedia controller devices (akin to DirectInput on
Windows) which allows a programmer to provide support through one API for a
wide variety of input-devices such as keyboard, mouse, joysticks(analog and
digital), track-ball, Playstation controller etc.
The design document is in its second draft and implementation has started.
Development status:
Work is underway to re-implement lowlevel.library in C.
* Minimal USB stack
A minimal USB stack would allow for the use of USB based keyboards and mice
which would effectively aid in untying the OS from the custom chipsets.
Development status:
Design documents are drafted and implementation work is underway.
* PPC native datatypes
PPC native datatypes for common formats such TIFF, JPEG, PNG and BMP.
Development status:
Completed but still need to be recompiled for OS 4.
* New HDToolbox
HDToolbox is a utiliy which allow for the formatting and partitioning of storage
devices.
The new incarnation of HDToolbox will offer substantially more functionality
than the current version.
Development status:
- Lowlevel part ('the Engine'):
Some 80% of the written code was tested with a total of about 85% written. Succesfully
tested code includes: removing/adding partition and filesystem, moving and sizing
partition, saving RDB back to disk or to a file. The automatic error reporting
and correction of RDB structures is still missing. This is the last remaining
major item which remains to be implemented in the Engine.
- Highlevel part (GUI):
The partitioning window is 100% complete owing to a new gadget designed by Massimo
Tantignone. So is the filesystem selection window barring the gadgets related
to the correction/error reporting of RDB values. Two windows remain to be fully
managed: the Installation window (already working but incomplete) and the lowlevel
SCSI utilities window which is fully designed but not yet working. Also missing
is a complete test of the GUI layout functionalities: the GUI will try to open
a custom screen if the current screen is not big enough but this is not tested
yet.
Still to do: support for localization and user documentation.
Overall the development status is estimated to be 85% completed.
* Support for TrueType/OpenType fonts
Currently the AmigaOS does not support TrueType fonts which is a serious deficiency.
A new font-engine as well as a reworked version of the bullet API, bullet.library,
diskfont.library is called for.
Development status:
Work on the initial version for OS 4 is around 95% completed.
BACK
|