COCO2
=====
+(Work in progress)
+
COCO or Dragon 64 with an IDE port, cartridge and 64K of RAM
Supported hardware:
- IDE (Glenside or compatible)
+ IDE (Cloud9 or compatible set at FF40) with either built in
+ cartridge RAM or separate cartridge
Memory Map
==========
+
+User View
+=========
0000-00FF Interrupt stack
0100-01FF Vectors (then wasted - could hide libc.o in there ?)
0200-19FF Display
1A00-1BFF udata/stack
-1C00-7FFF Code/Data for common plus some kernel
+1C00-7FFF Common, data and some kernel code
8000-FEFF User space
FF00-FFFF I/O etc
-Cartridge
+Kernel Mode View
+================
+0000-00FF Interrupt stack
+0100-01FF Vectors
+0200-19FF Display
+1A00-1BFF udata/stack
+1C00-7FFF Common, data and some kernel code
+8000-BFFF ROM
C000-FEFF Kernel
+FF00-FFFF I/O etc
Emulating in XRoar
TODO
====
-Loader code
-Set the display up correctly
+Test it
+Make the boot loader robust (timeout handling)
+Add magic numbers to check we loaded the right thing!
Support for a real time clock and clock locking
Review irq disabling. We shouldn't need much of this at all as we don't have
floppy hell to contend with, but the switchin/switchout logic needs to be
reviewed for interrupt safety and the IRQs re-enabled during swap in and
out. We should also be totally clean now on FIR blocking, so audio might
-actually be doable!
+actually be doable if not doing drivewire.
MPI switching
-Could we do a cartridge version
-- Re-order so common is in low memory
-- Support map_kernel/map_process flipping
-- Add asm helpers for user mode copying (trivial - and since we never copy
- into kernel ROM we can optimise them a lot - one map switch only)
- Fix IDE to support the map flip on transfers (needs little asm code
adding)
-- How to do discard, can we just take the hit or do we need to copy the
- entire cartridge into high RAM, run in high RAM with discard at say
- 0xA000 and then in platform_discard switch on map_kernel cartridge
- selection so we can let userspace blow away the upper 32K of the RAM
- mapping.
-
-16K Cartridge version would give us space for
-- Proper video (costs us about 8K)
-- Nice loader (just 'EXEC $C000' and go) < 1K
-- Probably all of sound/joysticks/printer/floppy and a few more buffers
-- Full size user memory bank (so can run full v7 shell) 4K
-
-
-Write a loader into the cartridge start so it bootstraps off disk and runs
-nicely
+- reclaim discard space by packing bss, then buffers then discard
-6847T1 lower case ?
+We have about 2K left to try and jam those bits in which might just about be
+enough to add support for very minimal MBR parsing and offsets. That would
+be a big improvement and make the current loading of the kernel image from
+blocks 1-51 of the disk sensible. If not we need to move it.