ZXGame Propeller Coprocessor for the ZX81 Computer
Bean
Posts: 8,129
Note: I have changed this to reflect the module now being called ZXGame.
I've had the idea for a while about making coprocessor for the ZX81 from the propeller by basically connecting the propeller pins directly (almost) to the ZX81 bus.
I wanted the propeller to be memory-mapped because ZX81 BASIC doesn't have anyway to "talk" to I/O ports. And I wanted it to be usable from BASIC.
I wasn't sure if the propeller would be fast enough, but with the right code, it handles it with no problem.
The ZX81 has it's ROM at address 0 to 8191, and it's RAM starts at 16384. So I memory mapped the propeller right at the 8K memory location.
Because I wanted to use as many of the propeller pin as possible for user I/O the module is only partially decode.
It only decodes A15,A14,A13 and A0 and A1. So the module's address repeats every 4 bytes between 8K and 16K, and I only have 4 address that I can read/write.
The base address is 8192,8193,8194, and 8195.
I also needed to connect the /WR /RD and /MREQ pins as well as the 8 data bits (D0 thru D7). So it takes a lot of pins to pull it off.
With only 4 memory address available, I took a "register" type approach to using the module.
I have reserved memory address 8195 for module status. Bit 7 is high when the module is busy.
The ZXGame module supports VGA, Sound, and Wii Classic Controllers
Bean
I've had the idea for a while about making coprocessor for the ZX81 from the propeller by basically connecting the propeller pins directly (almost) to the ZX81 bus.
I wanted the propeller to be memory-mapped because ZX81 BASIC doesn't have anyway to "talk" to I/O ports. And I wanted it to be usable from BASIC.
I wasn't sure if the propeller would be fast enough, but with the right code, it handles it with no problem.
The ZX81 has it's ROM at address 0 to 8191, and it's RAM starts at 16384. So I memory mapped the propeller right at the 8K memory location.
Because I wanted to use as many of the propeller pin as possible for user I/O the module is only partially decode.
It only decodes A15,A14,A13 and A0 and A1. So the module's address repeats every 4 bytes between 8K and 16K, and I only have 4 address that I can read/write.
The base address is 8192,8193,8194, and 8195.
I also needed to connect the /WR /RD and /MREQ pins as well as the 8 data bits (D0 thru D7). So it takes a lot of pins to pull it off.
With only 4 memory address available, I took a "register" type approach to using the module.
I have reserved memory address 8195 for module status. Bit 7 is high when the module is busy.
The ZXGame module supports VGA, Sound, and Wii Classic Controllers
Bean
Comments
I've long wanting to do one for the R6502 (or the SY6502). But I would start with the SY6507 one because I have one in stock.
----
And this message is supported by the Dwarfs of the Lonely Mountain.
Interesting work there. Please keep us updated on your progress
I also changed the name to ZXGame to reflect this.
I have a couple beta testers lined up, and I plan to use this port to exchange information with them.
I have posted everything needed for anyone to build their own if they want.
Bean
I have update the documentation and added a zip file with some ZX81 demos.
Bean
Thanks for sharing the files. I've been following this on ZX Sinclair World and Facebook. I've always thought the Propeller would be a great interface to the ZX81. I did interface the Propeller running the AY-3-8910 to the ZX81 as a sound chip. It worked if the ZX was doing pokes through Basic but was too slow to handle assembly code.
Also, you do need to wait after each command in assembly (and sometimes when using FAST mode in BASIC).
I have a status flag that can be read to see if the interface is busy.
Bean
Tim
Try the zip file to the right of the picture.
I fixed it. The forum got confused when I deleted the old files and uploaded a new one.
Bean
Thanks - Tim
I will still post Propeller related content here, but I don't want to hog-up the Parallax forum.
If you are interested please join.
http://zxgame.forumotion.com/
Bean