.TITLE INSTRUCTION DECODE/ENCODE TABLE .CSECT ZDDT, STATIC .GLOBL ddtini, ddtins ; THE FIVE PARAMETERS TO THE CODE OP-CODE DESCRIBE AN INSTRUCTION: ; ; THE FIRST PARAMETER IS THE LOWER LIMIT OF VALUES THAT WILL FALL ; INTO THAT OP-CODE (THE TABLE MUST BE SCANNED SEQUENTIALLY) ; IF THERE IS NOT NEXT INSTRUCTION, SO SIGNIFY WITH AN BLANK LINE ; ; THE SECOND PARAMETER IS THE OP-CODE TEXT ; ; THE THIRD PARAMETER TELLS THE MACHINE SUITABILITY ; 0 MEANS ANY MACHINE HAS THIS INSTRUCTION. 1 MEANS ; 11/40 AND UP ONLY, 2 MEANS 11/45 ONLY, 3 MEANS 11/23 ONLY ; THINGS HAVE GOTTEN SO COMPLICATED WITH THE ADDITIONAL MODELS IN ; THE LINE THAT THIS IS NO LONGER USED; ALL INSTRUCTIONS ARE ALWAYS ; DECODED AND IT IS UP TO THE HUMAN TO FIGURE OUT WHAT'S LEGAL. ; ; THE FOURTH PARAMETER TELLS HOW TO DECODE THE PARAMETERS: ; 0 MEANS NO PARAMETERS ; 1 MEANS "NNNNNN" (16 BIT NUMBER) ; 2 MEANS DECODE CONDITION CODE BITS (NZVC) ; 3 MEANS "N" (3 BIT NUMBER) ; 4 MEANS "XXX" (8 BIT DISPLACEMENT) ; 5 MEANS "R,DD" ; 6 MEANS "NN" (6 BIT NUMBER) ; 7 MEANS "SS,DD" (OR "DD,SS") ; 10 MEANS "R" ; 11 MEANS "R,NN" (6 BIT DISPLACEMENT) ; 12 MEANS "NNN" (8 BIT NUMBER) ; 13 MEANS "DD" (OR "SS") ; 14 MEANS "DD,R" (SAME INST FORMAT AS 5, PRINTS DIFFERENT) ; ; THE FIFTH PARAMETER IS 1 IF THIS INSTRUCTION IS LEGAL IN BYTE MODE ; ; NOTE THAT THE ACCUMULATED OPCODE STRINGS MUST BE LESS THAN 255 BYTES ; BECAUSE THE OFFSET INTO THE TABLE IS ONLY ONE BYTE. THE FPP OPCODES ; HAVE BEEN LEFT OUT TO SAVE SPACE, AND THE 11/40 STYLE FPP OPCODES ; HAVE ALSO BEEN ELIMINATED. SEVERAL OTHERS REMOVED TOO FOR ROOM. ; ; NOTE ALSO THAT THE LAST REAL LINE MUST BE DUPLICATED, WITH A BOTTOM ; VALUE OF 177777; THIS IS AN ARTIFACT OF THE WAY THE SEARCH ALGORITHM ; WORKS. I COULD HAVE FIXED IT STORING TOPS, NOT BOTTOMS, BUT IT WOULD ; HAVE BEEN PAINFUL. ; ; NOTE ALSO THAT THERE MUST BE AT LEAST ONE LINE AT THE END WITH NO ; STRING BECAUSE THERE IS NO 'END OF STRING' INFORMATION; IT SIMPLY ; USES THE START ADDRESS OF THE NEXT STRING AS THE END OF THE PREVIOUS. .MACRO INSTRS CODE 0,HALT,0,0,0 CODE 1,WAIT,0,0,0 CODE 2,RTI,0,0,0 CODE 3,BPT,0,0,0 CODE 4,IOT,0,0,0 CODE 5,RESET,0,0,0 CODE 6,RTT,1,0,0 ; CODE 7,MFPT,3,0,0 ; CODE 10,ILG,0,1,0 CODE 7,ILG,0,1,0 CODE 100,JMP,0,13,0 CODE 200,RTS,0,10,0 ; CODE 210,MAINT,1,3,0 ; CODE 220,ILG,0,1,0 CODE 210,ILG,0,1,0 CODE 230,SPL,2,3,0 CODE 240,NOP,0,0,0 CODE 241,CL,0,2,0 CODE 257,CCC,0,0,0 CODE 260,XNOP,0,0,0 CODE 261,SE,0,2,0 CODE 277,SCC,0,0,0 CODE 300,SWAB,0,13,0 CODE 400,BR,0,4,0 CODE 1000,BNE,0,4,0 CODE 1400,BEQ,0,4,0 CODE 2000,BGE,0,4,0 CODE 2400,BLT,0,4,0 CODE 3000,BGT,0,4,0 CODE 3400,BLE,0,4,0 CODE 4000,JSR,0,5,0 CODE 5000,CLR,0,13,1 CODE 5100,COM,0,13,1 CODE 5200,INC,0,13,1 CODE 5300,DEC,0,13,1 CODE 5400,NEG,0,13,1 CODE 5500,ADC,0,13,1 CODE 5600,SBC,0,13,1 CODE 5700,TST,0,13,1 CODE 6000,ROR,0,13,1 CODE 6100,ROL,0,13,1 CODE 6200,ASR,0,13,1 CODE 6300,ASL,0,13,1 CODE 6400,MARK,1,6,0 CODE 6500,MFPI,1,13,0 CODE 6600,MTPI,1,13,0 CODE 6700,SXT,1,13,0 CODE 7000,ILG,0,1,0 CODE 10000,MOV,0,7,1 CODE 20000,CMP,0,7,1 CODE 30000,BIT,0,7,1 CODE 40000,BIC,0,7,1 CODE 50000,BIS,0,7,1 CODE 60000,ADD,0,7,0 CODE 70000,MUL,1,14,0 CODE 71000,DIV,1,14,0 CODE 72000,ASH,1,14,0 CODE 73000,ASHC,1,14,0 CODE 74000,XOR,1,5,0 ; CODE 75000,FADD,1,10,0 ; CODE 75010,FSUB,1,10,0 ; CODE 75020,FMUL,1,10,0 ; CODE 75030,FDIV,1,10,0 CODE 75000,FOP,1,6,0 ; CODE 75040,EUUO,3,12,0 ; CODE 75400,UUO,3,12,0 ; CODE 76000,ILG,0,1,0 CODE 75040,ILG,0,1,0 CODE 77000,SOB,1,11,0 CODE 100000,BPL,0,4,0 CODE 100400,BMI,0,4,0 CODE 101000,BHI,0,4,0 CODE 101400,BLOS,0,4,0 CODE 102000,BVC,0,4,0 CODE 102400,BVS,0,4,0 ; CODE 103000,BCC,0,4,0 CODE 103000,BHIS,0,4,0 ; CODE 103400,BCS,0,4,0 CODE 103400,BLO,0,4,0 CODE 104000,EMT,0,12,0 CODE 104400,TRAP,0,12,0 CODE 105000,ILG,0,1,0 CODE 106400,MTPS,0,13,0 CODE 106500,MFPD,2,13,0 CODE 106600,MTPD,2,13,0 CODE 106700,MFPS,0,13,0 CODE 160000,SUB,0,7,0 CODE 170000,XFOP,2,1,0 CODE 177777,XFOP,2,1,0 CODE 0,,0,1,0 .ENDM ; OP-CODE TABLES COME HERE IN SEVERAL PARTS .MACRO CODE BOT,STR,LEG,PARM,BYT .IF LE, <400 - ..ADDR> .ERROR ..ADDR ;INST STRINGS TOO LONG FOR BYTE ADDRESSING .ENDC .WORD BOT .BYTE < + + PARM> .BYTE ..ADDR .NCHR ..LEN, STR ..ADDR = <..ADDR + ..LEN> .ENDM ddtini: ..ADDR = 0 INSTRS .MACRO CODE BOT,STR,LEG,PARM,BYT .ASCII /STR/ .ENDM ddtins: INSTRS .EVEN .END