ubee: update notes
authorAlan Cox <alan@linux.intel.com>
Tue, 30 Jan 2018 00:23:42 +0000 (00:23 +0000)
committerAlan Cox <alan@linux.intel.com>
Tue, 30 Jan 2018 00:23:42 +0000 (00:23 +0000)
Kernel/platform-ubee/README

index 1cd0a8f..3489997 100644 (file)
-uBee draft code
+Memory Map:
+
+First 64K
+
+       0000-00FF               Vectors
+       0100-01FF               Free
+       0200-wherever           Kernel
+       DB00                    Discard
+       E400                    Common
+       F000                    Video
 
+(this will change once the video code is reworked to be)
 
-uBee disk formats
+       0000-0100               Vectors
+       0100-0200               Free for now (IRQ stack ?)
+       0200-wherever           Kernel
+       wherever                Discard (turned into buffers)
+       F400                    Common & Video
 
-These are stored by the emulator
+       (Video overlaid temporarily on 8000-8FFF)
 
-       track / head / sector
+The other memory is then overlaid on 0000-7FFF for user space
 
-       some tracks are differently biased in some cases (sector ids range
-       is weird)
+       0000-00FF               Vectors
+       0100-7CFF               Application
+       7D00-7FFF               Udata/stack cache (may be able to move
+                               oto 7DFF/7E00)
 
-DS40
-       side 0 track 0, side 1 track 0, side 0 track 1....
-SS80
-       side 0 track 0, track 1, track 2 ...
-DS80
-       side 0 track 0, side 1 track 0, side 0 track 1....
+Done so far:
 
-HD3    490 cyl 4 heads 32 sectors/track 512bytes/sec
+- Bootloader. Loads the image into 0200 using the ROM and runs it
+- Code to generate an SS80 bootable disk image
+- Basic initialization and setup, video and machine type probing
+- Sketch of various drivers
 
+To Do:
+- Debug TC keyboard code: shift/ctrl are busted - do we need repeat ?
+- Begin floppy and hard disk driver debug
+- Bank the video
+- Get init loading, load and test userspace
+- IDE driver
+- How to tell wd1010 system from 2793 from both with 0x58 switch
+- If we have wd1010 and fd wtf do we put IDE in major/minors ?
 
-IMG or NW (nanowasp) 40 track
-DS40
-       40 track, 2 head, 10 sectors per track 512 bytes per sector
-       double desnity 250Kbits/sec sector ids start at 1
+Longer Term
+- Support attributes, colour, RAM based fonts (load the ROM one into RAM
+  customised for bold/italic ?)
+- Hardware 6x45 scrolling
+- Do delayed video output via a buffer off vblank event for non premium
+- Non TC keyboard (lightpen keyboard)
+- Proper support for Z80 PIO interfaces
+- Z8530 SCC
+- Graphics not just vt interfaces
+- Maybe eventually switch to soft interrupt model and support soft serial
+  interrupts (ick)
 
-SS80:
-       80 tracks, 1 head, 10 sectors per track 512 bytes per sector
-       sector offset is 1
-DS80:
-       as above but system sectors range 1-10 and data uses 21-30
-       (tracks 2+ of each head)
 
-DS82/4: like DS80 but sane sector ids
+Notes:
 
+The Microbee disk systems do various early magic and then end up in the copy
+of the boot rom with rom services at E000-EFFF and using DE00-DFFF for data.
+(paging register is 0x04). Disk track 0 side 0 sector 1 is loaded at $80 and
+then executed from $80.
 
-SS80 seems to be the normal boot format
+At this point you have use of the ROM services and can load more data. The
+firmware routine loads sequential sectors without software skew loading in
+sector order then the next track same side. It seems to check for unknown
+sectors so probably works for any sector count.
 
-Skew: 2 5 8 1 4 7 10 3 6 9 (usually done by OS)
+Disk formats DS40, SS80 are nothing unusual (40 track or 80 track 512 bytes
+per sector) but store 10 sectors per track. They are soft skewed by the OS
+usually.
 
+DS80 is weird. Tracks 0/1 behave as expected but the sectors on a DS80 for
+the later tracks are numbered 21-30. The emulator only stores those sectors
+so you can't use this for sane stuff
 
-CP/M seems to load as
+DS82 is like DS80 but without the weird skew and only 1 system track for CP/M
 
-Track 0 Side 0 1-10, Side 1 1-9 (no skew)
+Fuzix should probably default to 9 sectors/track for compatibility with other
+platforms, but offer switches for 10 sec and density/side detect.
+
+(General question - should we add geometry hints to the superblock - we have
+room)
+
+There are three kinds of video
+
+Standard:
+       A 6545 with 2K of display memory and 128 8x16 ROM characters plus
+       128 in programmable character memory. No colour
+
+Premium:
+       The 6545 has
+       2K character memory
+       2K attribute memory
+       2K colour memory
+       up to 4 banks of programmable character memory
+
+256TC:
+       The 6545 has
+       2K character memory
+       2K attribute memory
+       16K PCG ram (up to 32K supported)
+
+
+
+High resolution video is sort of MSX like but cruder. The character memory is
+filled with unique character codes and the character ram is loaded with the
+bit patterns.
 
-then switches to CP/M itself which is doing soft skews