diff --git a/src/syseng/11sim.427 b/src/syseng/11sim.427 index b8f3bb9e..f241d3d1 100644 --- a/src/syseng/11sim.427 +++ b/src/syseng/11sim.427 @@ -9229,7 +9229,9 @@ DGTRM: PUSHJ P,DGNUM ;TRY TO GET NUMBER. [ERROR [ASCIZ/U/]] DRSPEC ;SOB, MARK, SPL. DRASH ;MUL, DIV, ASH, ASHC. - REPEAT 3,DGTSER + DRFPMS ;2-OP FP11 INSN, MEMORY SOURCE. + DRFPMD ;2-OP FP11 INSN, MEMORY DESTINATION. + DGTSER ;JRST THRU STE TO HERE TO GET VALUE OF REGISTER SYMBOL. DGVREG: SETOM DGVRGP @@ -9715,6 +9717,35 @@ DRSOB1: MOVNS T2 ;IN SOB, OFFSET IS SUBTRACTED (ADDED FOR BRANCHES) JRST DRSOB2 ;TOO LARGE OR FORWARD. JRST DREMT2 +;HANDLE 2-OP FP11 INSN, MEMORY SOURCE. +DRFPMS: PUSHJ P,DRINSP + PUSHJ P,DRADDR ;GET 1ST ADDRESS. + LSH I1,8. ;PUT IN WITH OP CODE. + MOVEM T3,%S ;THIS IS THE SOURCE OPERAND. + ADDI I1,(T2) + CAIN T0,", ;SKIP OVER A COMMA. + GETCHR + PUSHJ P,DRFPAC ;GE FP11 ACCUMULATOR. + MOVEI T3,(T2) + TLO T3,REGBIT+.5KBIT + LSH T2,6 + JRST DR2AR1 + +;HANDLE 2-OP FP11 INSN, MEMORY DESTINATION. +DRFPMD: PUSHJ P,DRINSP + PUSHJ P,DRFPAC ;GET FP11 ACCUMULATOR. + LSH I1,2 ;MAKE ROOM FOR REG. NUM. + MOVEI T3,(T2) ;PREPARE TO SET %S + TLO T3,REGBIT+.5KBIT ;TO A REG. NUM. + JRST DR2AR2 + +DRFPAC: PUSHJ P,DGVPSP ;GET ACCUMULATOR NO. + MOVEI T2,(T2) + SKIPE DGVALP ;IF NO NUMBER, + CAILE T2,3 ;OR OUT OF RANGE, + JRST DERR ;(>7), ERROR. + POPJ P, + ;HANDLE JSR, RTS. DRJSR: PUSHJ P,DRINSP PUSHJ P,DRJSR1 ;READ REG. NUM. @@ -12078,6 +12109,41 @@ IRP INSN,,[HALT,WAIT,RTI,BPT,IOT,RESET,RTT] INSNUM INSNUM==INSNUM+1 TERMIN + +IRP INSN,,[CFCC,SETF,SETI,SETD,SETL] + SIXBIT/INSN/ + INSNUM +TERMIN + + INSNUM==1701 +IRP INSN,,[LDFPS,STFPS,STST,CLRF,TSTF,ABSF,NEGF] + SIXBIT/INSN/ + 3,,INSNUM + INSNUM==INSNUM+1 +TERMIN + + INSNUM==362 +IRP INSN,,[MULF,MODF,ADDF,LDF,SUBF,CMPF] + SIXBIT/INSN/ + 15,,INSNUM + INSNUM==INSNUM+1 +TERMIN + SIXBIT/STF/ + 16,,370 + SIXBIT/DIVF/ + 15,,371 + SIXBIT/STEXP/ + 16,,372 + SIXBIT/STCFI/ + 16,,373 + SIXBIT/STCFF/ + 16,,374 + SIXBIT/LDEXP/ + 15,,375 + SIXBIT/LDCIF/ + 15,,376 + SIXBIT/LDCFF/ + 15,,377 SYMDRG: IRPS AA,,[