SAAL Format: LABEL OPC OPERAND1, OPERAND2, OPERAND3 * comment
Lines beginning with * are comments. Operand fields are comma-separated. Whitespace is flexible.
Memory Map (961 chars):
| Symbol | Range | Use |
|---|---|---|
CARD | 000–079 | Card read buffer (80c) |
PRT | 080–211 | Print line buffer (132c) |
PCH | 212–291 | Card punch buffer (80c) |
WORK | 292–960 | Program + working storage |
Instructions (each occupies 12 chars in core):
| Op | Operands | Effect |
|---|---|---|
LDA | addr | A ← M[addr] |
STA | addr | M[addr] ← A |
ADD | addr | A ← A + M[addr] (digit, sets OV) |
SUB | addr | A ← A − M[addr] (digit) |
ADF | src,dst,len | M[dst..] ← M[dst..] + M[src..] (BCD field) |
SBF | src,dst,len | BCD field subtract |
MVC | src,dst,len | Move len chars |
CLR | addr,,len | Fill len chars with space |
CMP | a,b,len | Compare fields, set EQ/LT/GT |
INC | addr,,len | Increment BCD field by 1 |
DEC | addr,,len | Decrement BCD field by 1 |
JMP | addr | P ← addr |
JEQ | addr | Jump if EQ flag |
JNE | addr | Jump if not EQ |
JLT | addr | Jump if LT flag |
JGT | addr | Jump if GT flag |
JOV | addr | Jump on overflow (clears flag) |
JEF | addr | Jump on End-of-File from card reader |
RDC | — | Read next card into CARD; sets EOF if hopper empty |
PRT | — | Print PRT buffer, clear, advance paper |
PCH | — | Punch card from PCH buffer, clear |
HLT | — | Halt processor |
Directives:
ORG addr | Set assembly origin (default 292) |
LBL EQU n | Define symbol = numeric value |
LBL DC 'TEXT' | Define char constant(s) |
LBL DC 12345 | Define numeric digits |
LBL DS n | Reserve n spaces |
END | End of source |
Operand forms: a number (e.g. 080), a symbol (CARD),
or symbol+offset (CARD+5). Use empty operand for unused fields:
CLR PRT,,132