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