[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 6502 Multitasking OS announce



Andre Fachat (fachat@physik.tu-chemnitz.de) wrote:

:                             OS/A65
:                             ------

: This is the announcement of "OS/A65", a 6502 CPU operating system
: I wrote some time ago and which I now put on the Web. It is
: copyrighted under the GNU public license.

After I received some mail, I thought I should give some more info.
Besides that I'm going to port the kernel startup and the video
device to the C64 to actually show how to do some porting.
It should be working within a week (I have many other things on
my schedule...)

so long
Andre

----------------------

The MMU, which I used in my homemade system is non of the ususal
68xxx or something, it's a 74ls610, a 'standard' TTL chip.
Because of this it has no resemblence with the C128 or C64 so
called MMU. It has 16 registers with 12 bit each (only 8 are used)
that expand the upper 4 address bits to 8. I.e. the contents of the 
appropriate register is used as the upper 8 address bits, while the
upper 4 CPU address bits are used to select the register.
So the computer can - indirectly - access 1 MByte of memory.

I have no idea of how this resembles the Atari or 65816 memory management. 
The idea of the MMU is to switch between different memory environments 
for the different tasks. Other page sizes or even other mechanisms should be 
working too after some development.

With a MMU, the computer can run the same program multiple times,
without any change. Each task has its own memory. 
But then, it's slow: for each timing critical task the multitasking
has to be switched off by a SEI statement. 
This slows the system down. Sending infrared commands for the 
audio equipment needs to shut down irq handling all the time 
during the send - characters may get lost on a serial line, for 
example.

Without a MMU, only programs that use different memory locations
can be executed. The stack is divided into several areas, thus
shortening the stack for each task but allowing several tasks
to coexist. This version is a bit faster, as no MMU handling has to be
done, but this doesn't do much. Without MMU, in contrast to the version
with MMU, an NMI routine is available, that might be able to handle 
very time critical stuff. 

The memory needs depend on what you do with the system. 
The kernel itself needs 4kByte of ROM to run in, not more. The total ROM
size depends on which programs you put in the ROM. I have a 32kByte
EPROM with kernel, fsiec, fsibm, fsdev, shell and monitor, stdlib,
and many devices.
With MMU you have to have 4kByte RAM for the system, and at least 4kByte
for each task. Devices need 4kByte only of they don't use the 
kernel page.
A system without MMU can pack the used memory locations much better,
so it should be running fine in 8kByte (which I haven't tested, though).
32kByte are almost always enough.


To port the system to, e.g. the C64, you have to take the version
without MMU, of course. The kernel is hardware independent, there just
have to be some irq sources (handled by devices) to allow task switching
when a task is interrupted (in my homebuilt computer there is a 50Hz irq
line). The startup code has to be modified for the CPU registers.

Then the video device has to be modified to handle the VIC interface
and the C64 keyboard, may be also allowing several consoles.
The fsiec filesystem has to be modified to handle the C64 serial bus 
interface. 

Then a first test version should actually be ready to go, with 
fsiec, fsdev, null device, spooler device and video devices.

Hm, that sounds to simple to me that I wonder why I haven't done it
before...


I do not sell any hardware, nor do I build them for free ;-)
The boards I have are completely handwired and I will never
give them away.


--
fachat@physik.tu-chemnitz.de | Andre Fachat,        Phone: ++49-371-531-3551
-----------------------------| Vettersstr. 72/622,  09126 Chemnitz,  Germany
Distribution via the         |---------------------------------------------- 
Microsoft Network prohibited!| Unix was invented prior to user-friendlyness!