This project is an implementation of a TRS-80 Model 1 emulator on a PIC32 processor. It provides VGA video out and PS/2 keyboard in so as to be usable with commonly available console hardware to-date.
More specifically, I am using an existing PIC32 'breakout board' (the 'UBW32') mounted on another board that provides some connectors for VGA and PS/2 keyboard, originally intended for the 'UBW32 Colour Maximite'. This was a great convenience to me in avoiding laying out a board (and soldering the fine-pitch smd!), but that should still be feasible to anyone wanting to do so, since there are very few external parts from the PIC32 -- my focus was getting the software running.
I have also adapted this to the Olimex Duinomite-mini board. That board has a few limitations (monochrome, only one PWM channel, finicky power supply), but is otherwise serviceable.
Progress notes are logged via 'tech notes' entries in the Timeline, which realizes a blog, of sorts. (Note: incidentally, you'll need to log in as 'anonymous' to get the embedded images in the documentation. This is some permission issue I don't understand. Also, you may need to hit 'refresh' sometimes if one of the images doesn't come down due to some other issue I don't understand. See next paragraph on how to do this.)
If you log in as 'anonymous' via login page; you'll be able to see more details about code checkins, and also be able to download the code as a zip/tarball for your perusal (sorry; the whole anonymous bit is about avoiding spiders eating up bandwidth).
Portions of this code were derived from other sources:
- Geoff Graham has generously given me permission to extract hardware drivers from the original Maximite for things like video, keyboard, etc. This has saved me so, so, so much time, allowing me to focus on the emulation.
- the Z-80 CPU emulator core is derived from the module taken from Tim Mann's emulator for X-windows: xtrs. This was a huge time-saver also (it in turn is derived from some prior code, the history too long to list here, but see his site for more details).
- various Microchip library code for SD Card, USB, etc., is used. This is freely usable with the proviso that it is used only on Microchip products. So, you can't take to code and, say, run it on an STM32. Get STMicroelectronics' library for those things and port (actually, I was originally going to do this on an STM32F4, but I had some PIC32MX on-hand when I started).