Page 1 of 1

Decoding Branch Instructions

Posted: 29 Mar 2019, 21:34
by Martin_H
First off. Nice Job on the Gigatron!

I've been reading through the documentation, and I watched your YouTube video on how it worked. It was quite interesting to see how you did without microcode for instruction sequencing.

To really understand it, I read the ROM assembler, and mapped the machine code binary to address and data bus manipulations. I’ve been able to decode your assembler output for all instructions, except the conditional branch instructions as describe on the data sheet page https://gigatron.io/?page_id=482. For example:

0091 e000 jmp y,$00

e0 = 111 000 00, and 111 is a JUMP instruction, 000 decodes to far jump, with D being the least significant byte.

But the conditional branch:

0015 ec15 bne $0015

ec = 111 011 00, and 111 is a JUMP instruction, but 011 decodes to AC≥0, not AC≠0.

Moreover every conditional branch instruction I try to decode confounds me:

000f f013 beq .countMem1

f0 = 111 100 00, again 111 is a jump, but 100 decodes to AC<0

So I wonder what I am missing?

Re: Decoding Branch Instructions

Posted: 29 Mar 2019, 23:06
by marcelk
You're missing nothing. The web page was simply wrong... :oops: Thanks for spotting! No idea how it got permuted, as this order has never changed.

Re: Decoding Branch Instructions

Posted: 30 Mar 2019, 00:19
by Martin_H
Thanks for the reply. Glad that it's the web page and not me.

Also thanks for the link to the control unit. Reading through the schematics is next on my agenda.