PDP-11/20 class machines don't support XOR. To simulate one...
// r1: r0 XOR r1
// r2: tmp
mov r0, r2
bic r1, r0
bic r2, r1
bis r0, r1
It's just the standard textbook formula: (NOT a) AND b) OR (a AND (NOT b). It's usually inefficient, better alternatives exist. But on the PDP-11, due the "BIC" instruction, I strongly suspect the textbook formula is optimal. #retrocomputing #PDP11
I'll need to manually implement I/O logic for stuff like bank switching to let Z80 efficiently use the whole RAM whilst being able to access the ROM.
Also TMS9918 and AY-3-8910 naturally have much lower clock speeds, so I'll need to learn to do clock stretching.
TMS9918 expects 8x 4 KiB TMS4116 as external VRAM, which is DRAM with negative voltage bias rail, but there's a neat hack I found to make it use a generic 32 KiB SRAM with some register chips. I might try to convert the YPbPr component video output to RGB VGA at some point.
This is going to be a very ambitious project that I most likely won't be able to accomplish, especially considering how inexperienced I am with hardware, but here are some notes. If anyone has any suggestions or ideas to share, hit me up.
Anyway, here they are:
3x TI TMS9929A (TMS9918 but YPrPb @ 50 Hz instead of NTSC)
5x Zilog Z84C0020 (Z80 @ 20 MHz)
5x Zilog Z84C0008 (Z80 @ 8 MHz)
4x GI AY-3-8910
4x UM61512AK (64 KiB SRAM)
An odd way to package chips but okay.
@erkin just to let you know that I have implemented tabbed browsing in my #Gemini client. I though you might want to check the code out as it can probably be similar to what you need for the same feature in Gophwr.
Thanks again for Gophwr, I got a lot of code and insight from it.
Powered entirely by coffee and beer
Main account: @erkin
"I appreciate SDF but it's a general-purpose server and the name doesn't make it obvious that it's about art." - Eugen Rochko