Decoding Branch Instructions

Using, learning, programming and modding the Gigatron and anything related.
Forum rules
Be nice.
Post Reply
Martin_H
Posts: 5
Joined: 29 Mar 2019, 21:27

Decoding Branch Instructions

Post by Martin_H » 29 Mar 2019, 21:34

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?

User avatar
marcelk
Posts: 252
Joined: 13 May 2018, 08:26

Re: Decoding Branch Instructions

Post by marcelk » 29 Mar 2019, 23:06

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.

Martin_H
Posts: 5
Joined: 29 Mar 2019, 21:27

Re: Decoding Branch Instructions

Post by Martin_H » 30 Mar 2019, 00:19

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.

Post Reply