Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Fathom Update

Sign in to follow this  


I am about to make the third revision to my virtual cpu, Fathom. This last one should support just about everything that I plan to add to it and there shouldnt be any more major changes after its complete.

But there are some design decisions I have come to, specifically about the instruction set. The Z80, IIRC, uses up to 4 or 5 bytes for certain instructions. But I orginally wanted Fathoms instruction set to use only a single byte per instruction, though thats impossible if it has a 16bit address bus. Now, I could squeeze most of the instructions (such as all of the variations of the LD instruction) into a single byte, if I cut down on the number of registers and such. But I didnt like that idea, nor did I like the idea of having to do something like
LD R0, 5
LD R13, R0
Instead of being able to do:
LD R13, 5

So I guess what im going to do is only have the core instruction in the first byte. What I mean by that is, LD RX, RX will have its own instruction and be expecting the next byte to specify which two registers it is acting on. I could also go somewhere in the middle of these two choices, some instructions fit all of the variations in the first byte, while others expect a byte after it.

Does anyone get what im saying? Or even care? :)
Sign in to follow this  

1 Comment

Recommended Comments

The extra long instructions on the Z80 are usually down to using a prefix byte, eg $DD makes the following instruction uses IX instead of HL. In the interests of code density I'd probably use a similar scheme whereby you have small, fast, specific instructions where possible and longer generic instructions where not.

Sounds like an interesting project, and I look forwards to reading more about it!

Share this comment

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!