28

The MK 3880 Mostek CPU Technical manual (it's the Z80 implementation from Mostek) has a section called "Hardware implementation examples" which may help you. Besides, the Thomas Scherrer Z80-Family Official Support Page has a section devoted to circuit schematics based upon the Z80 processor. If you are in Facebook, there is a group devoted to share ...


11

How about a Turing machine implemented with relays? If I didn't miscount, there are 8 relays plus 1 relay for each bit of the state (for a total of 12 with 4-bit state). Let's see your conditions: It's Turing complete (obviously). No transistors, no RAM. Has small amount of memory (on the tape, no SRAM) Has a motorized clock. Will be hard to get below ...


9

You might be having some sort of short between A7 and some other CPU line. Your program doesn't use/need this line, but refresh does. The fact that "weird behavior" starts when A7 is toggled for the first time, definitely hints that it is connected to something it shouldn't be. Depending on where it is connected to, if your memory fetch (from ROM) is not ...


9

Games have "sets" (AKA versions). The software changes but not the hardware. For instance Pengo set 2 is harder than set 1 and has a different music (to avoid lawsuits?) If you can "mod" an existing game, then ignore the checksums, you could run your own game. You would have messages like: g8x_p6.bin WRONG CHECKSUMS: EXPECTED: CRC(7e3471d3) SHA1(...


8

I just found this discussion and I wanted to correct a few mistakes by Jules about one of my projects, the YGREC8 (I'm the YG of YGREC). There are many relay-based projects, look at https://hackaday.io/project/11798-relay-based-projects (but it's not exhaustive). Every project uses relays in a particular way, and by far the best choice is DPDT relays (2 ...


8

There is a lot what could go wrong here a list of hints: code I see no ORG directive in the code so are you sure you are placing your code in the right place of memory? Also I would feel safer with interrupts disabled. I would expect something like: org 0 reset: di ld a,0xAA loop0: out (00),a inc a jp loop0 Interrupts There are /...


7

Found the actual problem (i believe). I was used to connecting rom's /CS to A15 to have both a rom and a ram later on, on a 6502 system but as it turns out there is a handy /MREQ signal on the Z80.Excluding all the address decoding, the solution was to connect /MREQ to /CS of the rom.


7

IMHO, the easiest way to make that lonely Z80 into something you can play with is to hitch it to an Arduino. The Arduino can generate the clock, control the data lines, operate some of the control signals. With a setup like that, you can free-run the Z80 to see if it's working correctly, and watch its other signals to see what's going on. Speed may be an ...


7

Neither of these are quite what you're looking for, but I'm including them because I think they're worth looking at nonetheless, and I think both are more interesting than the designs you've linked already: http://relaysbc.sourceforge.net/arch.html is a single-board computer whose CPU is implemented using 83 relays (it does have some semiconductors for ...


6

Way 2.1 to pin a non-masked interrupt, attach a crystal with a frequency of 10KHz (not sure about this value, but with another value idea is same), and in the non-masked interrupt handler, increase the value of the variable globalMicroseconds. That is, each crystal tick - means that one microsecond has passed. Way 2.2 use a programable timer chip, as is done ...


6

There are several revisions of the C-64 board (see, e.g., here , or here), with two major form factors: the old "long board" and the new "short board". The long board (which I happen to have on my bench right now) is approximately 39cm wide and 18cm long, the short board is just as wide, but a little, well, shorter. If you need exact dimensions and drill ...


5

The IPL binary they're referring to is what's more commonly called the ROM "boot code", and it exists in every Nintendo 64 cartridge. Despite containing ordinary mask ROMs, in practice N64 cartridges work more like disk drives. The CPU doesn't execute code in the cartridge ROMs directly, instead the N64 firmware loads the first 4096 bytes of the ROM into ...


5

Brief look shows that you use [A15:A8] in circuit feeding CS pin; Z80 is having only 256 distinctive ports controlled by OUT command family, thus you must drop [A15:A8] out of the equation. Please look into the Z80 manual/datasheet here, you will find the following: The contents of Register C are placed on the bottom half (A0 through A7) of the address bus ...


5

People do use KiCad for this job! The S100 Computers group have created many, many boards using KiCad (included in the list here) and provide the KiCad files used to create each of them. Including the relevant libraries. These will be in 2013 format, but you can convert them to a later format if neccesary. For 8086 components, S100 Computers - 8086 CPU ...


5

It's funny you should ask this now, Daniel (who runs the site you found the ROMs and schematic on) and Phil (another 8-bit enthusiast) recently produced an EEPROM-based PCB for exactly this purpose. You can find out more about it on the system.cfg forum (in French). Daniel has many other Thomson hardware projects, including an SD card reader and associated ...


4

Unless you want to build a barebones/simple computer basically from scratch, I'm not sure there's really much you can do with just a CPU chip on its own. Maybe there are some simple tests you can run without having a full computer built up around it, or maybe not, I don't know, but you won't really be able to use it as a processor without building most, if ...


4

You have correctly surmised the two approaches to measuring time, not just on the Z80 but in computers in general. With a processor like the Z80 where every instruction takes a known number of cycles, you can simply count cycles to keep track of time. All branches, subroutines and loops in your code must be accounted for in the cycle count. It's ...


4

Now I'm stuck - I need to be able to count milliseconds and microseconds in the code. Forget about microseconds. Single instructions on a Z80 are already in the range of 1 µs or even longer, depending on the clock speed used. For fast CPUs it's fine to use some 'standard' value; for classic CPUs it's more appropriate to use a unit that fits your game design....


2

your best bet would be to hook up binary counter directly to your CPU clock and use it as divider that creates interrupt ... For example if you got 4.0MHz and want ~1ms resolution then divide the clock by 2^12 so use 11th bit of counter (counting from zero) ... that will divide the clock by 4096 resulting in roughly 1ms interrupt ... Then just write ISR ...


1

There are a lot of easy and simple constructions, based on the Z80 CPU. I prefer the simple Grant Searle's Computer. If you prefer the more simple way, you could try the ready-made solution, like the RC2014 Homebrew Computer.


Only top voted, non community-wiki answers of a minimum length are eligible