Part 1 - Change of Plans
Although version 1 of FPGABee is a fairly complete implementation of a ROM based Microbee (cassette save was missing), I lost interest in it after it became more of a software emulation project and less focused on the hardware and FPGA side of things. The whole point of FPGABee was to teach myself about FPGA's and I didn't want just another software project.
My original idea was to support cassette and disk images on a FAT formatted SD card. The FAT format excluded me from implementing this in hardware and so a software emulation seemed the only choice. I've realized however that I really don't need to support FAT - if I use a very simple custom file system I should be able to implement the disk controller entirely in hardware.
I've decided to target the Premium 128K model with hard disk. I don't think there were a lot of hard disk machines made back in the Microbee's heyday, but playing around with the hard disk support in ubee512 shows that it seems to work well. Also the WD1002 disk controller used in the hard disk models is simpler to implement than the drive controller in the floppy based models.
So I've started FPGABee version 2 by removing some of version 1's functionality:
- the second processor core.
- the flash memory controller that was used to share the flash memory between the two processor cores.
- the cassette support - with disk support wouldn't be necessary.
I've also spent some time figuring out what will be needed to make it work. The HDD operating system will be expecting a number of system features that will need to be implemented before I can expect it to boot. The main areas I'm going to have to address are:
- A complete 6545 CRTC controller. The video controller is currently hard wired to 60x16, with an 8x16 character cell. The disk based models default to 80x24 with an 8x11 character cell.
- Colour support. I could probably boot without this, but I think while working on the video controller I might as well add colour - I don't think it's that complicated.
- Memory bank switching. As a 16-bit processor, the Microbee's Z80 processor has an address space of 64K. To access additional RAM the Premium 128K uses a bank switching mechanism.
- The disk controller - obviously.
So that's the plan. I think I'll tackle the video controller first.