platform-sbc2g
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
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)