Quick help
Syntax
One instruction or directive per line, addresses in decimal TTSS
(track+sector, 00–63 each):
; a full-line or trailing comment 1000 b 2000 ; <location> <opcode-letter> <address> 1005 dw 5 ; <location> dw <signed-decimal> start 1000 ; declares the entry point
Opcodes
| Letter | Name | Semantics |
|---|---|---|
| z | Stop | Halts computation. |
| b | Bring | acc = mem[addr] |
| y | Store address | Replaces mem[addr]'s address-field bits with the accumulator's. |
| r | Return address | Stores (this instruction's address)+2 into mem[addr]'s address field — call/return idiom. |
| i | Input | Shifts one 4-bit code per step into the accumulator, until 8 characters or a stop code. |
| d | Divide | acc = acc / mem[addr], rounded. Overflows outside a magnitude of 1. |
| n | N Multiply | acc = low 31 bits of acc * mem[addr] (magnitudes). Left-shifting idiom. |
| m | M Multiply | acc = top 30 bits of acc * mem[addr] (magnitudes) + XOR sign. Fractional idiom. |
| p | addr's track field (6 bits) is the literal output code — not a memory address. | |
| e | Extract | acc = acc & mem[addr] (bitwise AND mask). |
| u | Unconditional transfer | counter = addr. |
| t | Test | Branches to addr if the accumulator is negative. |
| h | Hold and Store | mem[addr] = acc; acc unaffected. |
| c | Clear and Store | mem[addr] = acc, then acc = 0. |
| a | Add | acc = acc + mem[addr] (signed). Overflows outside [-2^30, 2^30-1]. |
| s | Subtract | acc = acc - mem[addr] (signed). Overflows outside [-2^30, 2^30-1]. |
Drum timing
3700 RPM = 17ms/revolution, 64 sectors/revolution, 265,625 ns/sector. Every memory access (fetch or operand) pays a rotational wait for the drum to bring the right sector under the head; register-only operations are free. This is the one piece of the real machine's behavior the emulator keeps faithful — see the Drum readout above.
Elsewhere on the site
Your programs are saved in this browser only and are lost if you clear site data. Log in or register to keep them in your account; they'll be moved there automatically.
Tips
The editor doesn't check your program as you type. Press Assemble & Load to find out whether it assembles, on the debugger page.