From 408f2d2f91a9b6e0d0a5d9526f0aa2db87affdd6 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Tue, 30 Jan 2018 00:23:42 +0000 Subject: [PATCH] ubee: update notes --- Kernel/platform-ubee/README | 121 +++++++++++++++++++++++++++--------- 1 file changed, 92 insertions(+), 29 deletions(-) diff --git a/Kernel/platform-ubee/README b/Kernel/platform-ubee/README index 1cd0a8f3..3489997a 100644 --- a/Kernel/platform-ubee/README +++ b/Kernel/platform-ubee/README @@ -1,47 +1,110 @@ -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 -- 2.34.1