[Coco] CoCo 3 FPGA? (Really long message)
Becker, Gary
Gary.Becker at amd.com
Tue Jul 31 18:09:39 EDT 2007
Since I have not done any documentation on the CoCo3FPGA yet, I will
explain some of the features and my thoughts.
As I have already mentioned, I have no capabilities to adapt floppy
drives into the system. To overcome this limitation, I have modified
Tandy's Disk Basic to read and write sectors over a serial port to files
located on a Windows based computer. The serial transfer runs at 115200
baud. Disk accesses are faster using this method over the original CoCo
floppy. The Windows computer mounts disk images and serves them up. I
setup 4 normal sized disks for DECB and up to 5 drives for NitrOS-9,
i.e. 2 HDD and 3 floppies.
The FPGA that I am using comes with enough block (built into the FPGA)
RAM to hold the original CoCo3 ROM and the Disk BASIC ROM. I have set
the Disk BASIC ROM to appear to be in slot 4 of a MPI.
The FPGA board comes with 1M of static RAM. In DECB, you get the full
512K of memory. DECB does not have the native support for more than
that. I have not tried to extend DECB to allow the full use, and I do
not really see a reason for doing so. What I have done is use the top
64K of the extra 512K for two additional "ROMs" that appear to be
located in slots 2 and 3 in the MPI. The final slot 1 in the MPI is
empty so I can boot without a ROM if I want to. The board includes 8 two
position switches and I use two of them to choose the MPI slot. Of
course you can change the slot selection in software in the normal
manner. I will need to write a simple program to load the RAM into the
two ROM slots. In NitrOS-9, you get the full 1M of RAM.
I have added the sound capabilities of the CoCo3. This requires some
external circuitry. I have used an R-2R DAC in the past and was not
satisfied with the capabilities; especially at increased CPU speeds. So
I am converting the 6 bit digital to a pulse width modulated pulse
stream with 64 different pulse widths. This pulse stream runs fast
enough where a simple low pass filter should be able to convert it to
audio. This filter is the additional circuitry needed. I will be
building prototype circuitry soon for testing.
I am sorry to say, I have no plans to support the standard CoCo
joysticks. This joystick uses a DAC to sense the position of the
joystick. As I mentioned in the last paragraph, the response was
unacceptable in my past tests. What I am planning is a different type of
joystick. I have not tested this interface. Using a joystick that has 4
switches, I will emulate the analog circuitry. Using the value written
to the DAC and the inputs from the 4 switches, the comparator output can
be read by the software. The different type of joystick will be software
compatible with the original joystick, but with only three positions
vertical, up, middle, and down, and three positions horizontal, right,
middle, and left. I will have a separate serial mouse interface to use
with NitrOS-9. The hires joystick interface is completely out.
I also need to explain my stance on commercialization. I am not against
someone developing an adapter board that plugs into this development
board to give more capabilities. Or even a new board that includes
everything a hobbyist / student needs. I would be glad to work on
development with someone, I have a few expansion ideas myself. I can
easily see additional storage options like IDE / Compact Flash. Or even
something like a full analog joystick interface. I believe a prototyping
area and a CoCo compatible ROM slot is mandatory. What I would prefer
not to happen is someone package this system up for mass market
consumption similar to the $25 arcade games based on the Commodore 64
platform that you see at Wal-Mart.
Oh yea, one other thing. With the help of John Kent, the creator of the
6809 core I am using and System09, the CoCo3FPGA is now running at
approximately 16 MHz. But I still have some testing to do to make sure
it is reliable.
Gary
More information about the Coco
mailing list