Working Board and Audio
Bringing up the new board this time was pleasantly straightforward.
I did have one mistake in the design: the enable lines for the data bus buffers were using LDS and UDS, which would have caused major bus contention issues when reading any data.
Fortunately, Lawrence Manning—who has designed his own 68000-based computer, the MAXI000 spotted the problem on the schematic. He saved me considerable time and frustration trying to work out why the board wasn’t booting. Fixing the issue was done by cutting the tracks to the enable pins and connecting them to some spare pins on the CPLD, so now the data lines for the bus are only enabled when the expansion bus is accessed.
With the board modifications done, I updated the CPLD and powered on the board. It started up and I was greeted with a prompt on the serial terminal, confirming the monitor code was running. I ran tests on the DRAM and IDE, and both seemed to be working fine. I had expected things to go fairly smoothly, as there weren’t any major changes in the main design over the last revision, but it was still a bonus to get things up and running so quickly.
Testing the expansion bus
With the main board working, it was time to start testing the expansion bus. Running simple tests and measuring signals on the scope showed that basic access to the bus was working correctly—the CS and ID lines, as well as the signal lines, all seemed to be correct. To test the bus properly, I had already designed a sound card based around the YM2151, based on the one that worked successfully on the previous revision.
On the expansion boards, there are two memory ranges for access. For expansion slot 1, the access is at a 256-byte (128-word) range. The other address is a 1M address range for accessing the board directly. On the YM2151, the 1M range is overkill, as only a couple of addresses are needed for register access, so this could easily be mapped into the 256-byte ID range and may be changed in the future. Currently, the entire 256-byte ID range is used to read an address hardcoded on a 74LS541 buffer with the board ID; on reflection, this was probably not the best use of the address range and may be an area that can be improved in the future.
The first test with the audio board was to use the monitor to read the address at 0xf8f500, which returned the correct value. I tested the board by modifying the VGM music player I used previously. This took a little while to get up and running due to some errors in my CPLD code, but I managed to resolve them and, within a few hours, had a working sound card. There are two joystick ports on the board which are currently untested, but the main purpose was to test if the expansion bus would work—and that’s been a success.
Here’s a capture of the X68000 version of the Space Harrier theme, recorded directly from the card.
Getting both boards working was easier than I had anticipated, largely because the design had been proven on my previous revision, so the work done there was not a complete waste.
Video and OS
There are two big steps needed next: getting a video board up and running, and developing a working operating system.
Longer term, I’m looking at a solution using an FPGA with at least VGA output. Until then, I have a board design based on the V9958 that I need to build and test.
For now, my main focus will be on getting a basic operating system running. My current development process is to write the software on the PC and transfer code in Motorola S-Record format. While this process isn’t too bad for smaller programs, some of the sound test programs can take several minutes to download. At the very least, I need to be able to load programs from disk.