forked from EtchedPixels/FUZIX
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathREADME
77 lines (53 loc) · 2.27 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
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)