I’m sorry about your kitty. Thank you for posting about all the weird old hardware: Brother made some really underrated hardware that punched above its price class, but it’s always cheap and infuriating in places it doesn’t have to be.
This is really cool. I’d like to learn more about how extensions work; I looked at the source code for CivHack (a compatibility hack INIT for one of the Civilization games) to figure out how the boot icon drew but didn’t get very far in actually writing an extension of my own.
It’s a lot of fun to see what’s inside something like a gear selector. I hadn’t considered all the fanciness that’s required to get the backlight, selector light, etc working.
I was just kicking around the idea of building a Forth interpreter for my Sega SG-1000 clone, but I found it hard to decide just where to start. This nicely lays out at least some of the “core” words – very cool.
Neat. I did some sketches a while back to see if this could be ported to the Atari 2600. I suspect it can, but you need a huge RAM expansion in the cartridge
Is paging not a plausible thing for 2600 cartridges? I assume that they didn’t break a write pin out to the cartridge slot, but maybe you can do a door-knock or something.
The Atari 2600 cartridge slot has no R/W pin yes. Bankswitching is done by having the cartridge respond to reads to certain addresses. For example the F8 bankswitching scheme involves reading 1FF8/1FF9 to switch between bank 0/1. F6 gives 16k via 1FF6..1FF9 and F4 32k via 1FF4..1FFB.
Writes to cartridge RAM works by having separate addresses for reads and writes. This means operations like INC $1000 do not work. Instead you must LDX $1100, INX, STX $1000.
I have an X130e that was given to me by a friend who got a lot of them from a local school and had to defeat the BIOS password by shorting the pins during startup. This might have been a faster method!
So far, mine has been a lot more reliable than the machine in the article (busted clock?!) Knock on wood.
More suitable to the 6502 architecture than C, more modern than FORTH: https://github.com/dschmenk/PLASMA. It would be interesting to add it to the comparison.
I also became aware of Cowgol very recently, and I wish I had some time to devote to playing with it. It’s intended to be small enough to one day be self-hostable on those tiny machines.
Plus, I don’t think any other language gives a shoutout to the Apollo guidance computer on its front page:
(It used to support the Apollo Guidance Computer used in the Apollo spacecraft, but I had to remove the code generator while rewriting the compiler and I haven’t reworked the AGC backend.)
This is great. One of the big problems I’m running into with my own open-source board (ColecoVision clone) is that keeping the BOM up to date stinks.
I’ve got a bunch of fractional DigiKey carts as I swapped components out during bringup, etc and the web UI for DigiKey is so laggy that it’s annoying to keep up to date so I end up doing one big session at the ‘end’ where I’m comparing my printed-out BOM from KiCad against the DigiKey one by hand. I also can’t seem to figure out how to get KiCad to generate a CSV BOM that DigiKey will read.
Looking forward to trying this for my next project!
Thanks yeah, with the 1-click BOM extension you should at least have a reliable way to populate and empty Digikey carts. The BOM builder tool would help even more by finding alternatives and checking if they are in stock, and in there you can also directly import KiCad PCBs (still working on the .sch import). Just send me a message if you want to try out the hosted version (it’s still free, but just not completely public as we pay for the Octopart data).
I’ve been hugely impressed by everyone I’ve met from the Canadian Digital Service, so I’m glad they’re also gracious in handling down-the-dependency-chain bugs like this. Found them to be very dedicated people who care a lot about the work.
I am a little surprised that there is no OS-level service for “reachability” that react-native-netinfo could have polled instead? I guess on Android it would probably just go to Google anyway.
Lots of schematics posted here, including a CMOS-happy variant, but it looks like the author didn’t finish building theirs yet
Seems like the original schematics might be picky about using a modern CMOS Z80 (maybe the clock is a little dirty?) as opposed to one of the older variants, but you can still find those.
This is super cool. For a future crazy spare-time project, I was thinking of doing a Forth cartridge for the Famicom with a REPL using the BASIC keyboard. Of course, this is a much more practical thing.
Does anyone know of any good resources to undertake the creation of a custom chip? I’ve dabbled in FPGAs and VHDL before but don’t really understand how you go from that to a custom buildable chip.
Same here. I would like to replicate the function of some old 80s custom chips, but I’m not sure where to start other than “VHDL.” It seems like the OpenROAD project is named as a major EDA component of this initiative, but I’m also unclear on how I’d use it.
I wonder if it would have been easier in the short run to cold-call the library and pitch them on a contract. Give the money to charity afterward.
less fun though! :D
I’m sorry about your kitty. Thank you for posting about all the weird old hardware: Brother made some really underrated hardware that punched above its price class, but it’s always cheap and infuriating in places it doesn’t have to be.
Thank you, and I think you hit it on the head: it’s a weird machine that does more than you think it would and less than you think it should. ;)
It’s impressive how minimalist this is. I think I would have gotten higher chip counts with an actual CPU.
Definitely going to build one of these the next time I order PCBs.
This is a super cool idea. I want to get an NEC TK-80 now and see if I can replicate it with a PC-8001.
Hey, thanks! That sounds like an excellent project and almost certainly possible with a similar method.
This is quickly becoming my favourite feature of an already fun blog.
I reckon a CR2032 would work just fine with a blocking diode inserted.
It’s possible, I suppose. Still, it’s nice that it does recharge, but I agree it would be a lot more convenient.
Thanks for the kind word :)
It always warms my heart to see these older, more obscure architectures still get love now and then.
It hardly gets more obscure than Motorola 88000.
Getting working 88k hardware for testing at this point may be more of an achievement than setting up the backend! Super cool.
This is really cool. I’d like to learn more about how extensions work; I looked at the source code for CivHack (a compatibility hack INIT for one of the Civilization games) to figure out how the boot icon drew but didn’t get very far in actually writing an extension of my own.
It’s a lot of fun to see what’s inside something like a gear selector. I hadn’t considered all the fanciness that’s required to get the backlight, selector light, etc working.
I was just kicking around the idea of building a Forth interpreter for my Sega SG-1000 clone, but I found it hard to decide just where to start. This nicely lays out at least some of the “core” words – very cool.
This is a great article! When I wrote a NES emulator, indeed the cartridge mappers ended up being the most fascinating part of the NES.
You could probably teach a whole computer engineering class on just the mappers.
Neat. I did some sketches a while back to see if this could be ported to the Atari 2600. I suspect it can, but you need a huge RAM expansion in the cartridge
Or 3 more address lines. :(
Is paging not a plausible thing for 2600 cartridges? I assume that they didn’t break a write pin out to the cartridge slot, but maybe you can do a door-knock or something.
The Atari 2600 cartridge slot has no R/W pin yes. Bankswitching is done by having the cartridge respond to reads to certain addresses. For example the F8 bankswitching scheme involves reading 1FF8/1FF9 to switch between bank 0/1. F6 gives 16k via 1FF6..1FF9 and F4 32k via 1FF4..1FFB.
Writes to cartridge RAM works by having separate addresses for reads and writes. This means operations like INC $1000 do not work. Instead you must LDX $1100, INX, STX $1000.
No no bank switching was done AFAIK; it was just a silly joke.
This is wrong. See my reply to barbeque :)
Gah, I meant “no no, bank switching was done AFAIK” not “no, no bank switching was done AFAIK”.
Stupid comma.
I have an X130e that was given to me by a friend who got a lot of them from a local school and had to defeat the BIOS password by shorting the pins during startup. This might have been a faster method!
So far, mine has been a lot more reliable than the machine in the article (busted clock?!) Knock on wood.
More suitable to the 6502 architecture than C, more modern than FORTH: https://github.com/dschmenk/PLASMA. It would be interesting to add it to the comparison.
I also became aware of Cowgol very recently, and I wish I had some time to devote to playing with it. It’s intended to be small enough to one day be self-hostable on those tiny machines.
Plus, I don’t think any other language gives a shoutout to the Apollo guidance computer on its front page:
That’s a really nice job. I didn’t realize the charge techniques were similar between li-ion and lipo but it makes sense.
This is great. One of the big problems I’m running into with my own open-source board (ColecoVision clone) is that keeping the BOM up to date stinks.
I’ve got a bunch of fractional DigiKey carts as I swapped components out during bringup, etc and the web UI for DigiKey is so laggy that it’s annoying to keep up to date so I end up doing one big session at the ‘end’ where I’m comparing my printed-out BOM from KiCad against the DigiKey one by hand. I also can’t seem to figure out how to get KiCad to generate a CSV BOM that DigiKey will read.
Looking forward to trying this for my next project!
Thanks yeah, with the 1-click BOM extension you should at least have a reliable way to populate and empty Digikey carts. The BOM builder tool would help even more by finding alternatives and checking if they are in stock, and in there you can also directly import KiCad PCBs (still working on the .sch import). Just send me a message if you want to try out the hosted version (it’s still free, but just not completely public as we pay for the Octopart data).
Thanks for the offer - I’ll hit you up soon. Don’t have a lot of free time for another big project right now, but hopefully in the new year!
This is great! I’m going to follow these posts with glee.
I wonder how different would it be doing it in Pascal with THINK Pascal…
THINK Pascal had the best debugger going for years and years on Mac development. I knew a lot of people who swore by it for that reason alone.
I’ve been hugely impressed by everyone I’ve met from the Canadian Digital Service, so I’m glad they’re also gracious in handling down-the-dependency-chain bugs like this. Found them to be very dedicated people who care a lot about the work.
I am a little surprised that there is no OS-level service for “reachability” that
react-native-netinfo
could have polled instead? I guess on Android it would probably just go to Google anyway.Oh wow, this is great. Has anyone made one recently?
I’ve never heard of it before this article, but I’d sure like to build one. A quick google showed these projects, and there are probably lots more:
Seems like the original schematics might be picky about using a modern CMOS Z80 (maybe the clock is a little dirty?) as opposed to one of the older variants, but you can still find those.
This is super cool. For a future crazy spare-time project, I was thinking of doing a Forth cartridge for the Famicom with a REPL using the BASIC keyboard. Of course, this is a much more practical thing.
Does anyone know of any good resources to undertake the creation of a custom chip? I’ve dabbled in FPGAs and VHDL before but don’t really understand how you go from that to a custom buildable chip.
Same here. I would like to replicate the function of some old 80s custom chips, but I’m not sure where to start other than “VHDL.” It seems like the OpenROAD project is named as a major EDA component of this initiative, but I’m also unclear on how I’d use it.
Lots of reading ahead!