blob: c18fd237db6fa8dcfcbea4e909e65eecec876a24 (
plain) (
tree)
|
|
* This program is the ugliest thing ever created by mankind. It's
* probably not correct. Email me at s@ricketyspace.net if you would
* like to look at Knuth's version of this program.
INST EQU 1000
GOOD EQU 1001
BAD EQU 1002
TABLE EQU 200
ORIG 0
START LD1 INST(5:5)
CMP1 =63=
JG BAD
LD1 INST(5:5) Load C field into I1.
LD1 TABLE,1
JMP 0,1
* Start switching table.
ORIG 300
* A, I, F field validation groups.
G01 JMP VFIELD
G02 LDA INST(4:4)
CMPA =2=
JG BAD
JMP GOOD
G03 LDA INST(4:4)
CMPA =5=
JG BAD
LDA INST(0:2) # Load M
JAN BAD
JMP GOOD
G04 JMP VMEM
G05 JMP VFIELD
G06 LDA INST(4:4)
CMPA =20=
JG BAD
JMP VMEM
G07 LDA INST(4:4)
CMPA =20=
JG BAD
JMP GOOD
G08 LDA INST(4:4)
CMPA =20=
JG BAD
JMP VMEM
G09 LDA INST(4:4)
CMPA =9=
JG BAD
JMP VMEM
G10 LDA INST(4:4)
CMPA =5=
JG BAD
JMP VMEM
G11 LDA INST(4:4)
CMPA =3=
JG BAD
JMP GOOD
G12 JMP VFIELD
VFIELD ADD INST(4:4) Load INST's F field to A.
CMPA =45=
JG BAD
SRC 5
DIV =8=
STX TMP Store remainder in memory.
CMPA TMP Compare quotient and remainder.
JG BAD
VMEM LD1 INST(3:3) Load I field of instruction.
CMP1 =6=
JG BAD
CMP1 =0=
JG GOOD
LD1 INST(0:2) Load AA field of instruction.
J1N BAD
CMP1 =3999=
JG BAD
JMP GOOD
HLT
ORIG 200
* EXX -> Entry for instruction with C = XX.
E00 CON GOOD
E01 CON G01
E02 CON G01
E03 CON G01
E04 CON G01
E05 CON G02
E06 CON G03
E07 CON G04
E08 CON G05
E09 CON G05
E10 CON G05
E11 CON G05
E12 CON G05
E13 CON G05
E14 CON G05
E15 CON G05
E16 CON G05
E17 CON G05
E18 CON G05
E19 CON G05
E20 CON G05
E21 CON G05
E22 CON G05
E23 CON G05
E24 CON G05
E25 CON G05
E26 CON G05
E27 CON G05
E28 CON G05
E29 CON G05
E30 CON G05
E31 CON G05
E32 CON G05
E33 CON G05
E34 CON G06
E35 CON G07
E36 CON G08
E37 CON G08
E38 CON G08
E39 CON G09
E40 CON G10
E41 CON G10
E42 CON G10
E43 CON G10
E44 CON G10
E45 CON G10
E46 CON G10
E47 CON G10
E48 CON G11
E49 CON G11
E50 CON G11
E51 CON G11
E52 CON G11
E53 CON G11
E54 CON G11
E55 CON G11
E56 CON G12
E57 CON G12
E58 CON G12
E59 CON G12
E60 CON G12
E61 CON G12
E62 CON G12
E63 CON G12
ORIG 1000
LDA 4000,1(4:3)
LD2 =42=
LD3 =69=
TMP NOP 00 Used to store temporary values.
HLT
END START
|