Trailing-Edge
-
PDP-10 Archives
-
klad_sources
-
klad.sources/kipnt.mac
There are no other files named kipnt.mac in the archive.
SUBTTL SIMULATOR MACHINE REGISTER PRINT
;*PROGRAM INITIALIZATION AND BREAK SETUP
SENTRY: SETZM PNTCTL# ;CLEAR PRINT CONTROL
MOVEI 0
SKIPE USER ;USER MODE ?
CALL [SIXBIT/SETUWP/]
JFCL
SKIPE ONETIM# ;SET BREAK ONLY ON LOAD
JRST SX1
MOVE 0,SIMBRK ;PATCH TO SIMULATOR FOR PRINTOUT
MOVEM 0,SIMPN1+1
MOVE 0,[JRST SIMPN1]
MOVEM 0,SIMBRK
MOVE 0,[JRST ERRPNT]
MOVEM 0,ERR+1
SETOM ONETIM
SX1: SETZB AR,SVAR# ;CLEAR PSEUDO REGISTERS
SETZB MQ,SVMQ#
SETZB BR,SVBR#
SETZB AD,SVAD#
SETZB MB,SVMB#
SETZB PC,SVPC#
SETZB MA,SVMA#
SETZB SC,SVSC#
SETZM ARX
SETZM FE
SETZM SA
SETZM AB
SETZM ADX
SETZM SVADX#
SETZM SVFM#
SETZM SVARX#
SETZM SVFE#
SETZM SVSA#
SETZM SVAB#
JRST SIMGO ;GO TO SIMULATOR
SIMPN1: GO MRPNT
0
JRST SIMBRK+1
IFNDEF SIMASB,<
;*SPECIAL USER MODE MONITOR UUO EXECUTION
MUOEXC: 777000,,USR424 ;MUUO EXECUTE INSTRUCTION
JRST 2,@USR425 ;RETURN TO OBJECT SEQUENCE
USR420: HALT ;PAGE FAULT TRAP
USR421: JFCL ;ARITH TRAP
USR422: HALT ;PDL OV TRAP
USR423: HALT ;TRP 3 TRAP
USR424: 0 ;MUUO STORAGE
USR425: 0 ;C(PC) OF MUUO
USR427: 0 ;USER PAGE FAIL WORD
USR436: MUOEXC ;MUUO EXECUTION ADR, PUBLIC, NO TRAP
USR437: MUOEXC ; PUBLIC, TRAP
>
RENTR1: IFDEF SIMASB,<
JSR PNTTOT ;PRINT TOTALS >
DROPDV ;CLOSE LOGICAL FILE, USER MODE
CALL [SIXBIT/EXIT/] ;EXIT TO MONITOR
DDTEX: MOVEM 0,SAC0#
MOVEI [ASCIZ/
**********
/]
PNTALF
MOVE 0,SAC0
JRST DDTSRT
INPC: 0,,30000 ;EXEC MODE, STARTING ADDRESS
MASK: -1
INSTR: 0
CNTLPC: 0
UPRPC: 0,,-1
SWITCH: 0
ACS: BLOCK 20 ;SIMULATED AC'S
;*MACHINE REGISTER PRINT
;*THIS ROUTINE PRINTS THE CONTENTS OF THE SEVERAL
;*PSEUDO MACHINE REGISTERS AT VARIOUS TIMES IN
;*THE INSTRUCTION CYCLE.
MRPNT: PUSH P,0 ;SAVE 5 AC'S
PUSH P,T
PUSH P,T1
PUSH P,T2
PUSH P,T3
HRRZ T,STATE ;GET STATE REGISTER
CAMN T,STATSV# ;SAME AS PREVIOUS STATE ?
JRST HUNGCK ;YES, CHECK FOR HUNG
MOVEM T,STATSV
MOVEI 0,^D260 ;SETUP MAXIMUM TIME
MOVEM 0,HNGCNT# ;FOR ONE TIME STATE
MRPNT3: CAIN T,IT0 ;IS STATE IT0
GO IRPNT ;YES, PRINT PC AND INSTRUCTION
SKIPN PNTCTL ;PRINT CONTROL SET ?
JRST MRPNT2 ;NO,EXIT
HRRZ T,STATE
CAIN T,IT1 ;IS STATE IT1 ?
GO INTPNT ;YES, SAVE INITIAL CONDITIONS
MOVE 0,CONSW
TRNE 0,INHMS ;PRINT MACHINE STATES ?
JRST MRPNT2 ;NO, EXIT
HRRZ T,STATE
CAIE T,SCT2 ;IS STATE SCT2 ?
JRST .+3 ;NO
TRNE 0,INHSCT ;INHIBIT SCT2 PRINTOUT ?
JRST MRPNT2 ;YES, EXIT
MOVSI T1,-^D96
IFNDEF SIMASB,<
MOVSI T1,-^D120 ;CONVERT STATE TO SYMBOLIC >
CAMN T,STAB(T1)
JRST FOUND
AOBJN T1,.-2
MOVEI 0,[ASCII/XXX--/]
MRPNT1: PNTA ;PRINT SYMBOLIC STATE
MOVEI 0,TAB
PNTA
SETOM PNTSPC ;SET PRINT SPACE FLAG
SKIPE DBLAF ;DBL ARITH ?
JRST MRPNT4 ;YES
MOVE 0,PC
CAMN 0,SVPC
GO DITTO6
MOVEM 0,SVPC
PNT6 ;PRINT PC
MOVE 0,MA
CAMN 0,SVMA
GO DITTO6
MOVEM 0,SVMA
PNT6 ;PRINT MA
MOVE 0,AB
CAMN 0,SVAB
GO DITTO6
MOVEM 0,SVAB
PNT6 ;PRINT AB
MOVE 0,MB
CAMN 0,SVMB
GO DITTO
MOVEM 0,SVMB
PNTOCT ;PRINT MB
MRPNT5: MOVE 0,AD
CAMN 0,SVAD
GO DITTO
MOVEM 0,SVAD
PNTOCT ;PRINT AD
MOVE 0,AR
CAMN 0,SVAR
GO DITTO
MOVEM 0,SVAR
PNTOCT ;PRINT AR
MOVE 0,CONSW
TLNE PNTLPT
JRST .+4
MOVEI CRLF
PNTA
JRST .+3
MOVEI 0,[ASCII/ /]
PNTA
MOVE 0,@FMREG
CAMN 0,SVFM
GO DITTO
MOVEM 0,SVFM
PNTOCT ;PRINT FM
MOVE 0,BR
CAMN 0,SVBR
GO DITTO
MOVEM 0,SVBR
PNTOCT ;PRINT BR
MOVE 0,MQ
CAMN 0,SVMQ
GO DITTO
MOVEM 0,SVMQ
PNTOCT ;PRINT MQ
MOVE 0,SC
CAMN 0,SVSC
GO DITTO3
MOVEM 0,SVSC
PNT3 ;PRINT SC
MOVE 0,FE
CAMN 0,SVFE
GO DITTO3
MOVEM 0,SVFE
PNT3 ;PRINT FE
MOVE 0,SA
CAMN 0,SVSA
GO DITTO3
MOVEM 0,SVSA
PNT3 ;PRINT SA
MOVEI 0,CRLF
PNTA ;CR-LF
MRPNT2: POP P,T3 ;RESTORE AC'S
POP P,T2
POP P,T1
POP P,T
POP P,0
POPJ P, ;EXIT
FOUND: MOVEI 0,STAB1(T1) ;GET SYMBOLIC STATE
JRST MRPNT1
MRPNT4: MOVE 0,AB
CAMN 0,SVAB
GO DITTO6
MOVEM 0,SVAB
PNT6 ;PRINT AB
MOVE 0,ADX
CAMN 0,SVADX
GO DITTO
MOVEM 0,SVADX
PNTOCT ;PRINT ADX
MOVE 0,ARX
CAMN 0,SVARX
GO DITTO
MOVEM 0,SVARX
PNTOCT ;PRINT ARX
MOVEI SPACE
PNTA
JRST MRPNT5
DITTO: JUMPE 0,DITTO0
MOVEI 0,[ASCIZ/* /]
PNTAL
AOS (P)
AOS (P)
POPJ P,
DITTO0: MOVEI 0,[ASCIZ/0 /]
JRST DITTO+2
DITTO6: JUMPE 0,DITT60
MOVEI 0,[ASCIZ/* /]
JRST DITTO+2
DITT60: MOVEI 0,[ASCIZ/0 /]
JRST DITTO+2
DITTO3: JUMPE 0,DITT30
MOVEI 0,[ASCIZ/* /]
JRST DITTO+2
DITT30: MOVEI 0,[ASCIZ/0 /]
JRST DITTO+2
;*INSTRUCTION PRINT
;*THIS ROUTINE PRINTS THE PC AND THE INSTRUCTION
;*AT IT0 OF THE INSTRUCTION CYCLE.
IRPNT: SKIPE IRLTCH ;FIRST IT0
POPJ P, ;NO
SKIPE PNTCTL ;PREVIOUS INSTRUCTION PRINTED ?
GO INTFNL ;YES, PRINT PREVIOUS INIT/FINAL
SKIPN SNGLIN# ;SINGLE INSTRUCTION OPERATION ?
JRST IRPNT1+1 ;NO
SKIPN SNGL2# ;START OF SECOND INSTRUCTION ?
JRST IRPNT1 ;NO
SKIPE XCTF ;INST BEING EXECUTED ?
JRST IRPNT1 ;YES, SIM IT TO.
POP P,0 ;RETURN TO CALLING PROGRAM
POP P,T3
POP P,T2
POP P,T1
POP P,T
POP P,0
POP P,0
POPJ P,
IRPNT1: SETOM SNGL2 ;SET FIRST INSTR INDICATION
SETZM PNTCTL ;CLEAR PRINT CONTROL
IFNDEF SIMASB,<
MOVE 0,MB ;IS THIS SPECIAL LEAVE SIMULATION INST ?
CAMN 0,[776000,,SEXIT1]
JRST @0 ;YES, RETURN TO COMMAND OPERATION
TTALTM
JRST .+2 ;IF ALTMODE, GO TO DDT
JRST DDTEX5 ;CONTINUE WITH "SIMCON$G">
SIMCON: AOS SEQ#
MOVE 0,MB ;PRINT THIS INSTRUCTION
AND MASK
CAME INSTR
POPJ P, ;NO
HRRZ 0,PC
CAMGE 0,CNTLPC ;PC PAST LOWER LIMIT ?
POPJ P, ;NO
CAMLE 0,UPRPC ;PC ABOVE UPPER LIMIT ?
POPJ P, ;YES
SETOM PNTCTL ;NO, SET PRINT CONTROL
MOVE 0,CONSW
TRNN 0,SEQPNT ;PRINT SEQUENCE NUMBERS ?
JRST .+5 ;NO
MOVEI [ASCIZ/
SEQUENCE # = /]
PNTAL
MOVE 0,SEQ
PNTDEC
GO IRPNT2
JRST HDPNT
IRPNT2: SWITCH
TRNE INHIF ;INHIBIT INITIAL/FINAL RESULTS ?
JRST .+3 ;YES, DON'T DOUBLE SPACE
MOVEI 0,CRLF
PNTA
MOVEI 0,AST
PNTA
SETOM PNTSPC
MOVE 0,PC
MOVEM 0,SVPC1#
PNT6
MOVEI 0,SPACE
PNTA
GO PNTINS ;GO PRINT INSTRUCTION
MOVEI 0,TAB
PNTA
ACPNT: SKIPE CONNF#
JRST DVCPNT ;I/O PRINT DEVICE CODE
SETZM PNTSPC
MOVE 0,MB
ROT 0,-^D23
ANDI 0,17
MOVEM 0,SVAC#
PNTOCS
MOVEI 0,COMMA
PNTA
EFPNT: MOVE 0,MB
TLNE 0,20 ;INDIRECT BIT ON
JRST PNTIND ;YES, PRINT AN AT SIGN
MOVE 0,MB
PUT PNTSPC
SETZM PNTSPC
PNT6
GET PNTSPC
IDXPNT: MOVE 0,MB ;LOOK FOR INDEXING
TLNN 0,17
JRST IDXPN1
MOVEI 0,LFP
PNTA
MOVE 0,MB
LSH 0,-^D18
ANDI 0,17
PNTOCS
MOVEI 0,RTP
PNTA
IDXPN1: MOVEI 0,CRLF
PNTA
RTN
HDPNT: MOVE T,CONSW
TRNE T,INHMS ;PRINT MACHINE STATES ?
POPJ P, ;NO
MOVEI HDER1
SKIPE DBLAF ;DBL ARITH ?
MOVEI HDER2
PNTAL ;PRINT HEADER 1ST PART
MOVEI CRLF
TLNE T,PNTLPT ;PRINT ON LPT
MOVEI [ASCIZ/ /]
PNTAL ;PRINT SEPARATOR
MOVEI HDER3
PNTAL ;PRINT HEADER 2ND PART
SETZM SVAR ;SET TO PRINT ALL REGS AT IT0
SETZM SVADX
SETZM SVFM
SETZM SVMQ
SETZM SVBR
SETZM SVAD
SETZM SVMB
SETZM SVPC
SETZM SVMA
SETZM SVSC
SETZM SVARX
SETZM SVFE
SETZM SVSA
SETZM SVAB
POPJ P, ;RETURN TO MRPNT
PNTIND: MOVEI 0,ATSIN
PNTA
JRST EFPNT+3
DVCPNT: MOVE 0,MB ;I/O, PRINT DEVICE CODE
ROT 0,-^D24
ANDI 0,774
PNTOCS
JRST EFPNT-2
HUNGCK: SOSE HNGCNT ;IS SIMULATOR HUNG ?
JRST MRPNT3 ;NO, NOT YET
MOVEI [ASCIZ/
INSTRUCTION HUNG UP/]
PNTALF
JRST ERRPNT+4
ERRPNT: MOVEI [ASCIZ/
SIMULATOR ERROR AT PC = /]
PNTALF
MOVE 0,ERR
PNT6F
MOVEI [ASCIZ/
SIMULATED INSTRUCTION/]
PNTALF
GO IRPNT2
IFNDEF SIMASB,<
JRST VMHALT+4>
IFDEF SIMASB,<
ERRHLT
JRST BEGIN>
HDER1: ASCIZ?
STATE PC MA AB MB AD AR?
HDER2: ASCIZ?
STATE AB ADX ARX AD AR?
HDER3: ASCIZ?FM BR MQ SC FE SA
?
;*INSTRUCTION SYMBOLIC CONVERSION
;*THIS ROUTINE CONVERTS THE INSTRUCTION TO SYMBOLIC
;*AND PRINTS IT OUT.
PNTINS: SETZM CONNF#
SETZM DBLAF# ;CLEAR DOUBLE ARITHMETIC FLAG
HLRZ T,MB ;MOVE THE INSTRUCTION CODE TO RH OF T
LSH T,-^D9 ;CLEAR AC,I,X
MOVE T1,T
ANDI T,77
CAIN T1,777
JRST MUOXT ;MONITOR UUO EXECUTE INST
CAIL T1,700
JRST CONN ;I/O INSTRUCTIONS
CAIL T1,600
JRST TTTST ;TEST INSTRUCTIONS
CAIL T1,500
JRST HTST ;HALF WORD INSTRUCTION
CAIL T1,400
JRST BOTST ;BOOLE INSTRUCTIONS
CAIL T1,300
JRST COMTST ;COMPARE INSTRUCTIONS
CAIL T1,200
JRST MOVTST ;MOVE INSTRUCTIONS
CAIL T1,140
JRST FLTTST ;FLOATING INSTRUCTIONS
CAIL T1,130
JRST BYTST ;BYTE INSTRUCTIONS
CAIL T1,100
JRST NEWTST ;NEW INSTRUCTIONS
CAIL T1,40
JRST MUOTST ;MONITOR UUO'S
CAIE T1,0
JRST UUOTST ;LOCAL UUO'S
JRST MUOTST ; 0 - ILLEGAL INSTRUCTION
PTINS1: POPJ P,
IFDEF SIMASB,<
CONN: ERRHLT
JRST BEGIN >
FLTTST: ANDI T,37 ;FLOATING POINT
ROT T,-2
MOVEI 0,TBLFLT(T)
PNTA
ROT T,2
ANDI T,7
MOVE T2,FLTTAB(T)
MOVEI 0,TBLAD1(T)
INSOUT: PNTA
MOVEM T2,PTINDX#
POPJ P,
BYTST: ANDI T,7 ;UFA,DFN,FSC,BYTE
MOVE T2,BYTTAB(T)
MOVEI 0,TBLBYT(T)
JRST INSOUT
MOVTST: ANDI T,77
CAIGE T,70
CAIGE T,40
JRST .+4 ;MOVE,ADD,SUB,MUL,+ETC
MOVE T2,MOTAB-40(T)
MOVEI 0,TBLMO-40(T) ;SHIFTS,PUSH,POP,+ETC
JRST INSOUT
SETZ T1,
ROTC T,-2
CAIL T,10
SUBI T,6 ;ADD,SUB
MOVEI 0,TBLMV(T)
PNTA
ROTC T,2
CAIL T,20
JRST IMLTST
ANDI T,3
MOVE T2,MOVTAB(T)
MOVEI 0,TBLMOV(T)
JRST INSOUT
IMLTST: CAIL T,40
JRST ADDTST
ANDI T,3 ;IMUL,MUL,IDIV,DIV
MOVE T2,MULTAB(T)
MOVEI 0,TBLAD1+4(T)
JRST INSOUT
ADDTST: ANDI T,3 ;ADD, SUB
MOVE T2,FLTTAB+4(T)
MOVEI 0,TBLAD1+4(T)
JRST INSOUT
COMTST: ROT T,-3 ;MEM AND AC MOD AND TEST
MOVE T2,COMTAB(T)
MOVEI 0,TBLCOM(T)
PNTA
ROT T,3
ANDI T,7
MOVEI 0,TBLCM(T)
JRST INSOUT
BOTST: ROT T,-2 ;BOOLE
MOVEI 0,TBLBOL(T)
PNTA
ROT T,2
ANDI T,3
MOVE T2,FLTTAB+4(T)
MOVEI 0,TBLAD1+4(T)
JRST INSOUT
HTST: MOVEI 0,H. ;HALF WORD TRANSFERS
PNTA
ROT T,-2
MOVEI 0,TBLH(T)
PNTA
ROT T,2
ANDI T,3
MOVE T2,MOVTAB(T)
MOVEI 0,TBLMOV(T)
JRST INSOUT
TTTST: MOVEI 0,T. ;TEST
PNTA
MOVE T2,[XWD 16,1]
TRNE T,10
MOVE T2,[XWD 2,1]
TRNE T,1
JRST TTODD
ROT T,-3
MOVEI 0,TBLTA(T)
TTSTA: PNTA
ROT T,2
ANDI T,3
MOVEI 0,TBLTA1(T)
JRST INSOUT
TTODD: ROT T,-3
MOVEI 0,TBLTB(T)
JRST TTSTA
IFNDEF SIMASB,<
CONN: SETOM CONNF
HLRZ T,MB ;I/O
ROT T,-5
ANDI T,7
MOVE T2,CONTAB(T)
MOVEI 0,TBLCON(T)
JRST INSOUT >
NEWTST: ANDI T,17 ;DOUBLE, FIX, + ETC
CAIL T,10 ;DOUBLE ARITHMETIC ?
SETOM DBLAF ;YES
MOVE T2,NEWTAB(T)
MOVEI 0,TBLNEW(T)
JRST INSOUT
UUOTST: MOVE T2,UUOTAB
MOVEI 0,TBLUUO ;UUO'S
JRST INSOUT
MUOTST: MOVE T2,UUOTAB
MOVEI 0,TBLMUO ;MONITR UUO'S
JRST INSOUT
MUOXT: MOVE T2,MUOTAB ;MUUO EXECUTE INST
MOVEI 0,TBLMUX
JRST INSOUT
;*INITIAL/FINAL AC,E PRINTOUT
INTPNT: SKIPE BYF5
JRST IT12
HRRZ T2,AB ;GET E ADDRESS
MOVEM T2,SVAB1#
SETZM INIT1A#
SETZM INIT2A#
SETZM INIT3A#
SETZM INIT4A#
HLRZ T2,PTINDX ;GET PRINT INDEX, INITIAL
GO @SETLST(T2) ;SETUP INITIAL CONDITIONS
POPJ P,
IT12: HRRZ T3,AB ;PICKUP C(C(E))
MOVEM T3,SVAB2#
JRST CCE+1
SETLST: INDX0
INDX1
INDX2
INDX3
INDX4
INDX5
INDX6
INDX7
INDX10
INDX11
INDX12
INDX13
INDX14
INDX15
INDX16
INDX17
INDX20
INDX0: POPJ P, ;DON'T PRINT
INDX1: GO CAC ;PRINT C(AC)
POPJ P,
INDX2: GO CAC ;PRINT C(AC)
GO CE ;PRINT C(E)
POPJ P,
INDX3: GO CAC ;PRINT C(AC)
GO CAC1 ;PRINT C(AC+1)
POPJ P,
INDX4: GO CAC ;PRINT C(AC)
GO CAC1 ;PRINT C(AC+1)
GO CE ;PRINT C(E)
POPJ P,
INDX5: GO CAC ;PRINT C(AC)
GO CACR ;PRINT C(C(ACR))
POPJ P,
INDX6: GO CAC ;PRINT C(AC)
GO CACR1 ;PRINT C(C(ACR+1))
POPJ P,
INDX7: GO CAC ;PRINT C(AC)
GO CE ;PRINT C(E)
GO CCE ;PRINT C(C(E))
POPJ P,
INDX10: GO CAC ;PRINT C(AC)
GO CAC1 ;PRINT C(AC+1)
GO CE ;PRINT C(E)
GO CE1 ;PRINT C(E+1)
POPJ P,
INDX11: GO CE ;PRINT C(E)
POPJ P,
INDX12: GO CE ;PRINT C(E)
GO CE1 ;PRINT C(E+1)
POPJ P,
INDX13: GO CAC ;PRINT C(AC)
GO CACR ;PRINT C(C(ACR))
GO CE ;PRINT C(E)
POPJ P,
INDX14: GO CAC ;PRINT C(AC)
GO CACR1 ;PRINT C(C(ACR+1))
GO CE ;PRINT C(E)
POPJ P,
INDX15: GO CAC ;PRINT C(AC)
GO CACL ;PRINT C(C(ACL))
POPJ P,
INDX16: GO CAC ;PRINT C(AC)
GO E ;PRINT E
POPJ P,
INDX17: GO CAC ;PRINT C(AC)
GO CAC1 ;PRINT C(AC+1)
GO E ;PRINT E
POPJ P,
INDX20: GO E ;PRINT E
POPJ P,
CAC: MOVE T3,SVAC
MOVE 0,ACS(T3)
MOVEM 0,INIT1#
MOVEI [ASCIZ/C(AC)=/]
MOVEM INIT1A
POPJ P,
CAC1: ADDI T3,1
ANDI T3,17
MOVE 0,ACS(T3)
MOVEM 0,INIT2#
MOVEI [ASCIZ/C(AC+1)=/]
MOVEM INIT2A
POPJ P,
CACR: HRRZ T3,INIT1
GO CADR
MOVE 0,0(T3)
MOVEM 0,INIT2
MOVEI [ASCIZ/C(C(ACR))=/]
MOVEM INIT2A
POPJ P,
CACR1: HRRZ T3,INIT1
GO CADR
MOVE 0,1(T3)
MOVEM 0,INIT2
MOVEI [ASCIZ/C(C(ACR+1))=/]
MOVEM INIT2A
POPJ P,
CACL: HLRZ T3,INIT1
GO CADR
MOVE 0,0(T3)
MOVEM 0,INIT2
MOVEI [ASCIZ/C(C(ACL))=/]
MOVEM INIT2A
POPJ P,
E: MOVE 0,SVAB1
MOVEM 0,INIT3
MOVEI [ASCIZ/E =/]
MOVEM INIT3A
POPJ P,
CE: MOVE T3,SVAB1
GO CADR
MOVE 0,0(T3)
MOVEM 0,INIT3#
MOVEI [ASCIZ/C(E) =/]
MOVEM INIT3A
POPJ P,
CE1: MOVE 0,1(T3)
MOVEM 0,INIT4#
MOVEI [ASCIZ/C(E+1) =/]
MOVEM INIT4A
POPJ P,
CCE: HRRZ T3,SVAB2
CAML T3,VMEM
POPJ P,
GO CADR
MOVE 0,0(T3)
MOVEM 0,INIT4
MOVEI [ASCIZ/C(C(E))=/]
MOVEM INIT4A
POPJ P,
CADR: CAIG T3,17 ;IF GREATER THAN 17
JRST .+3
ADDI T3,OFFSET ;ADD IN OFFSET, PROG IN HIGH SEGMENT
RTN
ADDI T3,ACS ;IF NOT, POINT TO SIM AC'S
RTN
INTFNL: SWITCH
TRNE INHIF ;INHIBIT INITIAL/FINAL RESULTS ?
POPJ P, ;YES
MOVEI [ASCIZ?
FLAGS - INT/FINAL ?]
PNTAL
MOVE 0,SVPC1
HLR 0,PC
PNTHW
MOVEI CRLF
PNTA
INTFN1: MOVEI [ASCIZ/INITIAL
/]
PNTAL
SETOM PNTSPC ;SET PRINT SPACE AFTER OCTALS CONTROL
GO IFPNT ;PRINT INITIAL CONDITIONS
SETZM INIT1A
SETZM INIT2A
SETZM INIT3A
SETZM INIT4A
HRRZ T2,PTINDX ;GET PRINT INDEX, FINAL
JUMPE T2,INTFN2 ;IF ZERO, NO FINAL
MOVEI [ASCIZ/
FINAL
/]
PNTAL
GO @SETLST(T2) ;SETUP FINAL CONDITIONS
GO IFPNT ;PRINT
INTFN2: MOVEI [ASCIZ/
----------
/]
PNTAL
POPJ P,
IFPNT: SKIPN INIT1A
JRST .+5
MOVE INIT1A
PNTAL
MOVE INIT1
PNTHW ;PRINT C(AC)
SKIPN INIT2A
JRST .+5
MOVE INIT2A
PNTAL
MOVE INIT2
PNTHW ;PRINT C(AC+1), C(C(ACR)), C(C(ACR+1)), C(C(ACL))
MOVE 0,CONSW
TLNE PNTLPT
JRST .+3
MOVEI CRLF
PNTA
SKIPN INIT3A
JRST .+5
MOVE INIT3A
PNTAL
MOVE INIT3
PNTHW ;PRINT C(E), E
SKIPN INIT4A
JRST .+5
MOVE INIT4A
PNTAL
MOVE INIT4
PNTHW ;PRINT C(E+1), C(C(E))
RTN
;*THE INDEX NUMBERS IN THE FOLLOWING TABLE
;*INFORM THE PROGRAM WHICH REGISTERS TO PRINT
;*THE NUMBERS HAVE THE FOLLOWING SIGNIFICANCE.
;*INDEX REGISTERS
;*0 NONE
;*1 C(AC)
;*2 C(AC) C(E)
;*3 C(AC) C(AC+1)
;*4 C(AC) C(AC+1) C(E)
;*5 C(AC) C(C(ACR))
;*6 C(AC) C(C(ACR+1))
;*7 C(AC) C(E) C(C(E))
;*10 C(AC) C(AC+1) C(E) C(E+1)
;*11 C(E)
;*12 C(E) C(E+1)
;*13 C(AC) C(C(ACR)) C(E)
;*14 C(AC) C(C(ACR+1)) C(E)
;*15 C(AC) C(C(ACL))
;*16 C(AC) E
;*17 C(AC) C(AC+1) E
;*20 E
FLTTAB: XWD 2,1 ;FAD
XWD 4,3 ;FADL
XWD 2,11 ;FADM
XWD 2,2 ;FADB
XWD 2,1 ; -
XWD 16,1 ; I
XWD 2,11 ; M
XWD 2,2 ; B
BYTTAB: XWD 4,4 ;UFA
XWD 2,2 ;DFN
XWD 16,1 ;FSC
XWD 11,11 ;BYTES
XWD 7,7
XWD 7,7
XWD 7,7
XWD 7,7
MOTAB: XWD 16,1 ;ASH
XWD 16,1 ;ROT
XWD 16,1 ;LSH
XWD 3,3 ;JFFO
XWD 17,3 ;ASHC
XWD 17,3 ;ROTC
XWD 17,3 ;LSHC
XWD 0,0 ;ERR
XWD 2,2 ;EXCH
XWD 16,1 ;BLT
XWD 16,1 ;AOBJP
XWD 16,1 ;AOBJN
XWD 20,0 ;JRST
XWD 20,0 ;JFCL
XWD 20,11 ;XCT
XWD 16,1 ;MAP
XWD 6,5 ;PUSHJ
XWD 14,5 ;PUSH
XWD 13,2 ;POP
XWD 5,1 ;POPJ
XWD 11,11 ;JSR
XWD 16,1 ;JSP
XWD 2,2 ;JSA
XWD 15,1 ;JRA
MOVTAB: XWD 2,1 ; -
XWD 16,1 ; I
XWD 2,11 ; M
XWD 2,2 ; S
MULTAB: XWD 4,3 ; -
XWD 17,3 ; I
XWD 4,11 ; M
XWD 4,4 ; B
COMTAB: XWD 16,0 ;CAI
XWD 2,0 ;CAM
XWD 16,0 ;JUMP
XWD 2,1 ;SKIP
XWD 16,1 ;AOJ
XWD 2,2 ;AOS
XWD 16,1 ;SOJ
XWD 2,2 ;SOS
NEWTAB: XWD 10,3 ;DMOVE
XWD 10,3 ;DMOVN
XWD 2,1 ;FIX
0
XWD 10,12 ;DMOVM
XWD 10,12 ;DMNNM
XWD 2,1 ;FIXR
XWD 2,1 ;FLTR
XWD 10,3 ;DFAD
XWD 10,3 ;DFSB
XWD 10,3 ;DFMP
XWD 10,3 ;DFDV
0
0
0
0
UUOTAB: XWD 20,0 ;LUUO
MUOTAB: XWD 12,12 ;MUUO EXECUTION
IFNDEF SIMASB,<
CONTAB: XWD 7,7 ;BLKI
XWD 11,11 ;DATAI
XWD 7,7 ;BLKO
XWD 11,0 ;DATAO
XWD 20,0 ;CONO
XWD 11,11 ;CONI
XWD 20,0 ;CONSZ
XWD 20,0 ;CONSO
>
;*SIMULATOR SYMBOL TABLE
DEFINE INX (A)<
ASCII /A/>
TBLFLT: INX FAD; ;140
INX FADR; ;144
INX FSB; ;150
INX FSBR; ;154
INX FMP; ;160
INX FMPR; ;164
INX FDV; ;170
INX FDVR; ;174
TBLBYT: INX UFA; ;130
INX DFN; ;131
INX FSC; ;132
INX IBP; ;133
INX ILDB; ;134
INX LDB; ;135
INX IDPB; ;136
INX DPB; ;137
TBLMV: INX MOVE; ;200
INX MOVS; ;204
INX MOVN; ;210
INX MOVM; ;214
INX IMUL; ;220
INX MUL; ;224
INX IDIV; ;230
INX DIV; ;234
INX ADD; ;270
INX SUB; ;274
TBLMOV: ASCII / / ;0,4
INX I; ;1,5
INX M; ;2,6
INX S; ;3,7
TBLMO: INX ASH; ;240
INX ROT; ;241
INX LSH; ;242
INX JFFO; ;243
INX ASHC; ;244
INX ROTC; ;245
INX LSHC; ;246
INX ERR; ;247
INX EXCH; ;250
INX BLT; ;251
INX AOBJP; ;252
INX AOBJN; ;253
INX JRST; ;254
INX JFCL; ;255
INX XCT; ;256
INX MAP; ;257
INX PUSHJ; ;260
INX PUSH; ;261
INX POP; ;262
INX POPJ; ;263
INX JSR; ;264
INX JSP; ;265
INX JSA; ;266
INX JRA; ;267
TBLAD1: ASCII / / ;0
INX L; ;1
INX M; ;2
INX B; ;3
ASCII / / ;0,4
INX I; ;1,5
INX M; ;2,6
INX B; ;3,7
TBLCOM: INX CAI; ;300
INX CAM; ;310
INX JUMP; ;320
INX SKIP; ;330
INX AOJ; ;340
INX AOS; ;350
INX SOJ; ;360
INX SOS; ;370
TBLCM: ASCII / / ;0
INX L; ;1
INX E; ;1
INX LE; ;3
INX A; ;4
INX GE; ;5
INX N; ;6
INX G; ;7
TBLBOL: INX SETZ; ;400
INX AND; ;404
INX ANDCA; ;410
INX SETM; ;414
INX ANDCM; ;420
INX SETA; ;424
INX XOR; ;430
INX IOR; ;434
INX ANDCB; ;440
INX EQV; ;444
INX SETCA; ;450
INX ORCA; ;454
INX SETCM; ;460
INX ORCM; ;464
INX ORCB; ;470
INX SETO; ;474
H.: INX H; ;5XX
TBLH: INX LL; ;500
INX RL; ;504
INX LLZ; ;510
INX RLZ; ;514
INX LLO; ;520
INX RLO; ;524
INX LLE; ;530
INX RLE; ;534
INX RR; ;540
INX LR; ;544
INX RRZ; ;550
INX LRZ; ;554
INX RRO; ;560
INX LRO; ;564
INX RRE; ;570
INX LRE; ;574
T.: INX T; ;6XX
TBLTA: INX RN; ;600
INX DN; ;610
INX RZ; ;620
INX DZ; ;630
INX RC; ;640
INX DC; ;650
INX RO; ;660
INX DO; ;670
TBLTA1: ASCII / / ;0,1
INX E; ;2,3
INX A; ;4,5
INX N; ;6,7
TBLTB: INX LN; ;601
INX SN; ;611
INX LZ; ;621
INX SZ; ;631
INX LC; ;641
INX SC; ;651
INX LO; ;661
INX SO; ;671
IFNDEF SIMASB,<
TBLCON: INX BLKI; ;70000
INX DATAI; ;70004
INX BLKO; ;70010
INX DATAO; ;70014
INX CONO; ;70020
INX CONI; ;70024
INX CONSZ; ;70030
INX CONSO; ;70034
>
TBLNEW: INX DMOVE; ;120
INX DMOVN; ;121
INX FIX; ;122
INX ERR; ;123
INX DMOVM; ;124
INX DMVNM; ;125
INX FIXR; ;126
INX FLTR; ;127
INX DFAD; ;110
INX DFSB; ;111
INX DFMP; ;112
INX DFDV; ;113
INX ERR; ;114
INX ERR; ;115
INX ERR; ;116
INX ERR; ;117
TBLUUO: INX LUUO; ;001-037
TBLMUO: INX MUUO; ;0, 040-077
TBLMUX: INX MUOEX; ;MUUO EXECUTION
;*MACHINE STATES, K1-10
;*
STAB: IT0 ;INSTRUCTION TIME
IT1
IT2
ET0S ;EXECUTE TIME
ET1S
ET2S
FT1 ;FETCH TIME
FT2
FT3
FT4
FT5
FT6
FT7
ST1 ;STORE TIME
ST2
ST3
ST4
ST5
FAT1 ;FLOATING ADD TIME
FAT2
FAT3
FAT4
FMT1 ;FLOATING MULTIPLY TIME
FMT2
FDT0 ;FLOATING DIVIDE TIME
FDT1
FDT2
FDT3
FDT4
FDT5
FDT6
FDT7
FIXT1 ;FIX TIME
FIXT2
SCT1 ;SHIFT COUNT TIME
SCT2
SRT1 ;SHIFT ROUTINE TIME
DST1 ;DIVIDE SUBROUTINE TIME
DST2
DST3
DST4
DST5
DST6
NRT1 ;NORMALIZE ROUTINE TIME
NRT2
NRT3
NRT4
NRT5
NRT6
DMOVT1 ;DOUBLE MOVE TIME
DMVNT1
DMVNT2
DMVNT3
DFAT1 ;DOUBLE FLOATING ADD TIME
DFAT2
DFAT3
DFAT4
DFAT5
DFMT1 ;DOUBLE FLOATING MULTIPLY TIME
DFMT2
DFMT3
DFDT0 ;DOUBLE FLOATING DIVIDE TIME
DFDT1
DFDT2
DFDT3
DFDT4
DFDT5
DFDT6
DFDT7
DFDT8
DFDT9
DFDT10
DFDT11
DFDT12
DNT1 ;DOUBLE NORMALIZE TIME
DNT2
DNT3
DNT4
DNT5
DNT6
DNT7
DNT8
DNT9
BLTT0
BLTT1 ;BLT TIME
BLTT2
BLTT3
BLTT4
BLTT5
BLTT6
BLTT7
BLTT8
BLTT9
JFFOT1 ;JFFO TIME
MEMST ;MEMORY ROUTINE
INDONE ;INSTRUCTION DONE TIME
IFNDEF SIMASB,<
TTYDI ;TTY I/O TIME
TTYDO
TTYCO
TTYCI
TTYCNZ
TTYCNO
APRDI ;APR I/O TIME
APRDO
APRCO
APRCI
APRCNZ
APRCNO
PIDI ;PI I/O TIME
PIDO
PICO
PICI
PICNZ
PICNO
PGDI ;PAG I/O TIME
PGDO
PGCO
PGCI
PGCNZ
PGCNO
>
;*SYMBOLIC MACHINE STATES
STAB1: INX IT0
INX IT1
INX IT2
INX ET0
INX ET1
INX ET2
INX FT1
INX FT2
INX FT3
INX FT4
INX FT5
INX FT6
INX FT7
INX ST1
INX ST2
INX ST3
INX ST4
INX ST5
INX FAT1
INX FAT2
INX FAT3
INX FAT4
INX FMT1
INX FMT2
INX FDT0
INX FDT1
INX FDT2
INX FDT3
INX FDT4
INX FDT5
INX FDT6
INX FDT7
INX FIXT1
INX FIXT2
INX SCT1
INX SCT2
INX SRT1
INX DST1
INX DST2
INX DST3
INX DST4
INX DST5
INX DST6
INX NRT1
INX NRT2
INX NRT3
INX NRT4
INX NRT5
INX NRT6
INX DMVT1
INX DMVN1
INX DMVN2
INX DMVN3
INX DFAT1
INX DFAT2
INX DFAT3
INX DFAT4
INX DFAT5
INX DFMT1
INX DFMT2
INX DFMT3
INX DFDT0
INX DFDT1
INX DFDT2
INX DFDT3
INX DFDT4
INX DFDT5
INX DFDT6
INX DFDT7
INX DFDT8
INX DFDT9
INX DFD10
INX DFD11
INX DFD12
INX DNT1
INX DNT2
INX DNT3
INX DNT4
INX DNT5
INX DNT6
INX DNT7
INX DNT8
INX DNT9
INX BLTT0
INX BLTT1
INX BLTT2
INX BLTT3
INX BLTT4
INX BLTT5
INX BLTT6
INX BLTT7
INX BLTT8
INX BLTT9
INX JFFO1
INX MEMST
INX INDON
IFNDEF SIMASB,<
INX DATAI
INX DATAO
INX CONO
INX CONI
INX CONSZ
INX CONSO
INX DATAI
INX DATAO
INX CONO
INX CONI
INX CONSZ
INX CONSO
INX DATAI
INX DATAO
INX CONO
INX CONI
INX CONSZ
INX CONSO
INX DATAI
INX DATAO
INX CONO
INX CONI
INX CONSZ
INX CONSO
>