Skip to content

Latest commit

 

History

History

platform-sbc2g

System support for the SBC2G

The SBC2G is a variant on Grant Searle's classic design but with banked RAM
added. An external 8Hz timer is needed as with other related boards (eg 
Tom's SBC).

Supported Hardware

SBC 2G with 512K of RAM (128K is not currently supported)

Hardware

For more information, where to get boards etc please see:
	http://www.retrobrewcomputers.org

TODO

Support 128K RAM case (we still get two processes in RAM so it's not bad)

Implementation

This platform uses the standard banked memory model. One lower 32K bank is
assigned to the kernel (Bank 0). The upper memory is fixed at bank 1, and
bank 2-15 are available to applications, one per bank.

During execution the current per process data and stack (udata) live in the
upper bank near the top of memory. When a process is switched out they are saved
into the top of the low 32K space.

Memory Layout

Kernel
0000-00FF	Interrupt vectors
0100-7FFF	Kernel code

User
0000-00FF	Interrupt vectors
0100-7DFF	User process	(currently 7CFF needs fixing)
7E00-7FFF	Copy of task kernel stack and variables

8000-????	Kernel
????-EFFF	Disk buffers
F000-FDFF	Kernel common area and stacks
FE00-FFFF	Reserved for firmware


Notes

There are a variety of clever things that could be done to make this platform
more useful but at a cost. Firstly there is a lot of space free in the top 32K
so 8000-AFFF could probably be made user space and copied in and out each task
switch. As a single user machine doesn't switch much the cost isn't too high
and more becomes possible.

Disk Setup

The boot arrangements on the system are a bit weird. You can put a partition
table in low space but you can't boot off the low 8MB. This is a real pain
and requires you leave a small gap at 8MB in the partition table to stuff
in the boot loader.

I use the following table

Disk 38.2 MiB, 40017920 bytes, 78160 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xbcc8699a

Device Boot Start   End Sectors  Size Id Type
foo1         2048 16383   14336    7M 7f unknown
foo2        16512 78159   61648 30.1M 7e unknown

The Fuzix image still goes in the intended place (sectors 2+ of the device
in the space before the first partition)