By default, the zd disassembler displays output in much the same way that the txd disassembler does. However, it also includes a visual mode which can be enabled with the -v flag.
Visual mode diagrams each instruction down to the bit level, allowing you to see exactly how instructions are assembled.
Examples:
┌────────────────────────────────────────────────────────────────────┐
│2c6: print - 0OP (main routine 2c6) │
└────────────────────────────────────────────────────────────────────┘
┌─ Short form
│ ┌─ Operand type: Omitted
│ │ ┌─ @print
┌┴┐ ┌┴┐ ┌──┴──┐
1 0 1 1 0 0 1 0
┌─ Words follow
│ ┌─ Shift A1
│ │ ┌─ Z
│ │ │ ┌─ o
│ ┌───┴───┐ ┌───┴───┐ ┌───┴───┐
0 0 0 1 0 0 1 1 1 1 1 1 0 1 0 0
┌─ Last word
│ ┌─ r
│ │ ┌─ k
│ │ │ ┌─ Shift A2
│ ┌───┴───┐ ┌───┴───┐ ┌───┴───┐
1 1 0 1 1 1 1 0 0 0 0 0 0 1 0 1
Full decoded text: Zork
┌────────────────────────────────────────────────────────────────────┐
│2cb: get_child - 1OP │
└────────────────────────────────────────────────────────────────────┘
┌─ Short form
│ ┌─ Operand type: Variable
│ │ ┌─ @get_child
┌┴┐ ┌┴┐ ┌──┴──┐
1 0 1 0 0 0 1 0
Operand: 11111111 (Gef)
Store: 00010101 (21) -> G05
┌─ Branch if true
│ ┌─ 14-bit branch
│ │ ┌─ +27 (2e8)
│ │ ┌────────────┴────────────┐
1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1
┌────────────────────────────────────────────────────────────────────┐
│2d0: add - 2OP │
└────────────────────────────────────────────────────────────────────┘
┌─ Variable form
│ ┌─ 2OP
│ │ ┌─ @add
┌┴┐ │ ┌───┴───┐
1 1 0 1 0 1 0 0
Operand types:
┌─ Small constant
│ ┌─ Large constant
│ │ ┌─ Omitted
│ │ │ ┌─ Omitted
┌┴┐ ┌┴┐ ┌┴┐ ┌┴┐
0 1 0 0 1 1 1 1
Operand 0: 00001010 (10)
Operand 1: 00000111 11010000 (2000)
Store: 00000110 (6) -> L05
┌────────────────────────────────────────────────────────────────────┐
│2d6: call_vs2 - VAR │
└────────────────────────────────────────────────────────────────────┘
┌─ Variable form
│ ┌─ VAR
│ │ ┌─ @call_vs2
┌┴┐ │ ┌───┴───┐
1 1 1 0 1 1 0 0
Operand types:
┌─ Large constant
│ ┌─ Variable
│ │ ┌─ Variable
│ │ │ ┌─ Small constant
┌┴┐ ┌┴┐ ┌┴┐ ┌┴┐
0 0 1 0 1 0 0 1
Operand types:
┌─ Small constant
│ ┌─ Small constant
│ │ ┌─ Small constant
│ │ │ ┌─ Small constant
┌┴┐ ┌┴┐ ┌┴┐ ┌┴┐
0 1 0 1 0 1 0 1
Operand 0: 00000000 01011000 (88)
Operand 1: 00000001 (L00)
Operand 2: 00010000 (G00)
Operand 3: 00000001 (1)
Operand 4: 00000010 (2)
Operand 5: 00000011 (3)
Operand 6: 00000100 (4)
Operand 7: 00000101 (5)
Call: 2c0
Store: 00000000 (0) -> -(SP)
┌────────────────────────────────────────────────────────────────────┐
│2e3: save_undo - EXT │
└────────────────────────────────────────────────────────────────────┘
┌─ Extended form
│ ┌─ @save_undo
┌──────┴──────┐ ┌──────┴──────┐
1 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1
Operand types:
┌─ Omitted
│ ┌─ Omitted
│ │ ┌─ Omitted
│ │ │ ┌─ Omitted
┌┴┐ ┌┴┐ ┌┴┐ ┌┴┐
1 1 1 1 1 1 1 1
Store: 00000000 (0) -> -(SP)
┌────────────────────────────────────────────────────────────────────┐
│2e7: quit - 0OP │
└────────────────────────────────────────────────────────────────────┘
┌─ Short form
│ ┌─ Operand type: Omitted
│ │ ┌─ @quit
┌┴┐ ┌┴┐ ┌──┴──┐
1 0 1 1 1 0 1 0