Running DOS & Unix on an 8-bit Commodore
- Track: Retrocomputing devroom
- Room: UB5.230
- Day: Sunday
- Start: 14:40
- End: 15:05
- Video only: ub5230
- Chat: Join the conversation!
In 1983, Commodore introduced CBM-II, the successor to their aging line of PET business computers. It featured a 6502 CPU running at 2 MHz and up to 256 kB memory. But its most interesting feature was a second CPU interface, which (much like Acorn's Tube) allowed to attach various CPUs to the system.
Commodore designed two cards: Z80 (for running CP/M) and 8088 (for running MS-DOS). Back in these days, though, MS-DOS had a separate version for each platform. Therefore you could only run specially crafted Commodore MS-DOS 1.25 on the computer, because it was obviously not PC-compatible.
A few years ago I set out to fix this deficiency. I asked myself: is it possible to make the platform (more) PC compatible? As it turns out, it is, and practically without any modifications to the original design. You just need to write a piece of software that emulates the PC BIOS and some parts of the PC hardware platform. For this, one wire needs to be added to the hardware, which generates a NMI when an I/O chip is accessed; the emulation software then simulates the non-existing I/O peripheral.
Based on this work, I was able to make the platform compatible enough to run modern FreeDOS, as well as other PC software: Norton Commander, Turbo Pascal, QBASIC and more.
As a follow-up, I designed a Z8000 processor card using the second CPU interface; this card is meant to emulate the abandoned Commodore 900 Unix workstation. This is a work in progress right now; so far the card is able to boot the Commodore 900 BIOS and complete the I/O chip self test (the I/O chips are obviously also emulated in software). By the time of the talk, the progress is expected to be much farther :)
The PC emulation software is available on GitHub: https://github.com/MichalPleban/cbm2-pc-emulator/
And the hardware: https://github.com/MichalPleban/cbm2-8088-ram-board/
Speakers
Michal Pleban |