Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/dskda3.mac
There are no other files named dskda3.mac in the archive.
;*MAINDEC-10-DSQZA [PART 2]

	IFNDEF	ONEPRT,<
DECVER==000
MCNVER==3

	XLIST
DEFINE	NAME	(MCNVER,DECVER),<

TITLE	KS10	DECSYSTEM 2020 DIAGNOSTICS KS-10 SIMULATOR PART 2, VER MCNVER,DECVER >

	LIST
	LALL

NAME	\MCNVER,\DECVER

	XALL
;*KS10 CENTRAL PROCESSOR SIMULATOR

;*COPYRIGHT 1978, 1979
;*DIGITAL EQUIPMENT CORPORATION
;*MARLBORO, MASS. 01752

;*JOHN R. KIRCHOFF

	NOSYM
IF2,<PRINTX	[STARTING PASS 2]>
>
SUBTTL	SIMULATOR PARAMETERS AND DEFINITIONS
; **********************************************************************

	SALL
	MLON

; **********************************************************************
;*ACCUMULATOR DEFINITIONS
; **********************************************************************

	F==0			;MISC LOGIC FLIP FLOPS
	T==1			;TEMPORARY REGISTERS
	T1==2
	T2==3
	T3==4
	S==5			;STATE REGISTER
	AR==6			;MACHINE REGISTERS
	MQ==7
	BR==10
	AD==11
	MB==12
	PC==13
	MA==14
	SC==15
	IR==16
	P==17			;PUSH DOWN POINTER

	IFNDEF	SIMASB,<
	OFFSET==400000		;SIMULATED PROGRAMS ARE IN HIGH SEGMENT>
	IFNDEF	ONEPRT,<
INTERN	XCTF,IRLTCH,ARX,FE,SA,AB,ADX,FMREG,INDONE,SIMBRK,SIMGO,ERR
INTERN	IT0,IT1,IT2,ET0S,ET1S,ET2S,FT1,FT2,FT3,FT4,FT5,FT6,FT7
INTERN	ST1,ST2,ST3,ST4,ST5,FAT1,FAT2,FAT3,FAT4
INTERN	FMT1,FMT2,FDT0,FDT1,FDT2,FDT3,FDT4,FDT5,FDT6,FDT7
INTERN	FIXT1,FIXT2,SCT1,SCT2,SRT1,DST1,DST2,DST3,DST4,DST5,DST6
INTERN	NRT1,NRT2,NRT3,NRT4,NRT5,NRT6
INTERN	DMOVT1,DMVNT1,DMVNT2,DMVNT3
INTERN	DFAT1,DFAT2,DFAT3,DFAT4,DFAT5
INTERN	DFMT1,DFMT2,DFMT3
INTERN	DFDT0,DFDT1,DFDT2,DFDT3,DFDT4,DFDT5,DFDT6,DFDT7,DFDT8
INTERN	DFDT9,DFDT10,DFDT11,DFDT12
INTERN	DNT1,DNT2,DNT3,DNT4,DNT5,DNT6,DNT7,DNT8,DNT9
INTERN	BLTT0,BLTT1,BLTT2,BLTT3,BLTT4,BLTT5,BLTT6,BLTT7,BLTT8,BLTT9
INTERN	JFFOT1,MEMST,BYF5
INTERN	TTYDI,TTYDO,TTYCO,TTYCI,TTYCNZ,TTYCNO
INTERN	APRDI,APRDO,APRCO,APRCI,APRCNZ,APRCNO
INTERN	PIDI,PIDO,PICO,PICI,PICNZ,PICNO
INTERN	PGDI,PGDO,PGCO,PGCI,PGCNZ,PGCNO
INTERN	STATE,TIME,INDONE

EXTERN	CPOPJ,INPC,ACS,DDTEX,SWITCH,JOBSYM,JOBSA
EXTERN	USR420,USR424,USR425,USR427,USR436
>
	DEFINE	BITS (FIRST,PREFIX,LIST)<
	.FOO.==FIRST
	IRP LIST<
	PREFIX'LIST==.FOO.
	.FOO.==.FOO.+.FOO.
>>
; **********************************************************************
;*CONTROL BIT DEFINITIONS - LEFT HALF BITS
; **********************************************************************

; **********************************************************************
;*CLOCKS
; **********************************************************************

	BITS (2,,<PCCLK>)

; **********************************************************************
;*EXECUTION TIME PULSE SWITCHES
; **********************************************************************

	BITS (1,ET,<0,1>)
	INFTST==4

; **********************************************************************
;*AD ENABLES
; **********************************************************************

	BITS (10,AD,<MAGIC,ARRP,ARLP,ARMI,BRRP,BRLP,BRMI
,FMRP,FMLP,FMMI,CR36,ADD,EQV,PL1L,MI1B>)
	ADFMPL==ADFMRP+ADFMLP
	ADARPL==ADARRP+ADARLP
	ADBRPL==ADBRRP+ADBRLP
	ADPL1B==ADPL1L+ADCR36
; **********************************************************************
;*CONTROL BIT DEFINITIONS - RIGHT HALF BITS
; **********************************************************************

; **********************************************************************
;*FETCH AND STORE SWITCHES
; **********************************************************************

	BITS (1,,<FCE,PSE,FCCACR,SCE,STORE
,SACINH,SACBR,SAC2,PCCHNG>)
	FCEPSE==FCE+PSE
	FCE2==PSE
	FCCACL==FCCACR+PSE
	SAIAC0==SACINH+SACBR

; **********************************************************************
;*MQ ENABLES
; **********************************************************************

	BITS (1,MQ,<SHR2,SHRT,SHLT,ADEN,CLR>)

; **********************************************************************
;*AUX AR ENABLES
; **********************************************************************

	BITS (.FOO.,AR,<SHR2,SHRT,SHLT,CLR>)

; **********************************************************************
;*BR ENABLES
; **********************************************************************

	BRAREN==1000

; **********************************************************************
;*AR ENABLES
; **********************************************************************

	BITS (2000,AR,<LTAD,RTAD,RARL,LARR,IREN>)
	ARFLGS==ARLTAD+ARLARR
	ARPCEN==ARRTAD+ARRARL
	ARADEN==ARLTAD+ARRTAD
	ARSWAP==ARRARL+ARLARR
; **********************************************************************
;*ADDRESS BUS ENABLES
; **********************************************************************

	BITS (.FOO.,AB,<PCEN,ABEN,ADEN>)
	LNGCYC==40000
	ADCLKINH==1

; **********************************************************************
;*CONTROL FF'S
; **********************************************************************

	BITS (ABPCEN,AB,<PC,AB,AD>)
	CLKINH==1
	ABAS==2
	DSF2SET==4
	DSF2CLR==10
	FLAG1==20
	FLAG2==40
	FLAG3==100
	SCP1S==200
	SCP1IN==400
	MUOF1S==1000
	MUOF1C==2000
	MUOF2S==4000
	MUOF2C==10000
; **********************************************************************
;*SCADDER BITS RIGHT HALF
; **********************************************************************

	SAMI22==1
	SAPL44==2
	SAZERO==3
	SAP220==4
	SAP110==5
	SAM110==6
	SAMI42==7
	SAMI16==10
	SAMI33==11
	SAMI32==12
	SAMI4==13
	SAPL10==14
	SAMI43==15
	SAPL43==16
	SAM100==17
	BITS (20,SA,<SCPL,SCMI,ADD,PL1,MSIZ,ARPOS,AREX,EQV,FEEN>)
	BITS (.FOO.,SC,<SAEN,AREN,SHRT,SCP1>)
	BITS (.FOO.,FE,<SAEN>)

; **********************************************************************
;*SCADDER BITS LEFT HALF
; **********************************************************************

	BITS (1,MB,<FMEN,AREN>)
	BITS (.FOO.,BR,<ARXEN>)
	BITS (.FOO.,ARX,<SR2,SHR,SHL,ADX,CLR>)
	BITS (.FOO.,AD,<MSKG,BRP2,MBRE,MBLE>)
	ADMBEN==ADMBRE+ADMBLE

; **********************************************************************
;*ADX BITS LEFT HALF
; **********************************************************************

	BITS (.FOO.,ADX,<BRM,FM2,FMM,FMP,EQV,ADD>)
	MEMREF=FCE!FCEPSE!SCE!FCCACL!FCCACR!FCE2
	PAGDLY==^D100
	WARNDLY==^D350
; **********************************************************************
;*FLAGS, LEFT HALF OF PC WORD
; **********************************************************************

	AROV==400000
	CRY0==200000
	CRY1==100000
	FOV==040000
	BIS==020000
	USERF==010000
	EXIOT==004000
	LIP==002000
	UOLIP==001000
	TN0==400
	TN1==200
	FXU==000100
	DCK==000040
SUBTTL	DISPATCH TABLE FOR INSTRUCTIONS
; **********************************************************************

TABLE:

; **********************************************************************
;*FORMAT OF DISPATCH TABLE
;*	FETCH CYCLE ENABLES, SWITCHES
;*	ET0 ADDRESS,, ET1 ADDRESS
;*	ET2 ENABLES AND CLOCKS, ET2 DISPATCH
; **********************************************************************

; **********************************************************************
;*UUO'S
; **********************************************************************

DEFINE UUOMAC <
	XWD ET0+ET1,STORE+SACINH
	XWD [MONUUO],[XWD ADARPL,0]
	XWD 0,ARIREN+ARRTAD
>
	IFNDEF	SIMASB,<
; **********************************************************************
;*ILLEGAL UUO							0
; **********************************************************************

	UUOMAC

; **********************************************************************
;*USER UUO'S							1-37
; **********************************************************************

	REPEAT 37,
<	XWD ET0+ET1+ADMAGIC,STORE+SACINH+UUOFD
	[XWD ADMAGIC,ARIREN+ABADEN+UUO1]
	XWD INFTST,0
>
; **********************************************************************
;*MONITOR UUO'S							40-77
; **********************************************************************

	REPEAT 40,
<	UUOMAC
>
; **********************************************************************
;*UNDEFINED OP CODES						100-107
; **********************************************************************

	REPEAT 10,
<	UUOMAC
>>
; **********************************************************************
;*DFAD, DFSB							110-111
; **********************************************************************

	REPEAT 2,
<	XWD ET0+ET1+ADFMPL,FCE2+SAC2+DFAFD+PCCHNG
	XWD [XWD ADFMPL,ARADEN+BRAREN+DFA0],[XWD ADBRPL,ARADEN+BRAREN+DFA1]
	ARADEN+BRAREN+DFA2
>
; **********************************************************************
;*DFMP								112
; **********************************************************************

	XWD	ET0+ET1+ADFMPL,FCE2+SAC2+DFMFD+PCCHNG
	XWD [XWD ADFMPL,ARADEN+BRAREN+DFM0],[XWD ADBRPL,ARADEN+DFM1]
	ARADEN+BRAREN+DFM2

; **********************************************************************
;*DFDV								113
; **********************************************************************

	XWD	ET0+ET1+ADFMPL,FCE2+SAC2+DFDFD+PCCHNG+SACBR
	XWD [XWD ADFMPL,ARADEN+BRAREN+DFD0],[ARADEN+DFD1]
	DFD2
; **********************************************************************
;*UNDEFINED OP CODES						114-117
; **********************************************************************

	REPEAT 4,
<	UUOMAC
>

; **********************************************************************
;*DMOVE,DMOVN							120-121
; **********************************************************************

	REPEAT 2,
<	SAC2+FCE2+PCCHNG+SRINST
	0
	DMOV2
>
; **********************************************************************
;*FIX								122
; **********************************************************************

	XWD	ET0+ET1,FCE+FIXFD
	XWD	[FIX0],[FIX1]
	FIX2

; **********************************************************************
;*UNDEFINED OP CODE						123
; **********************************************************************

	UUOMAC
; **********************************************************************
;*DMOVEM							124
; **********************************************************************

	XWD	ADFMPL,SCE+SACINH+PCCHNG
	0
	ARADEN+BRAREN

; **********************************************************************
;*DMOVNM							125
; **********************************************************************

	XWD	ADFMMI+ET0+ET1,SCE+SACINH+PCCHNG+DMVMFD
	XWD	[XWD ADADD+ADCR36+ADARPL+ADMAGIC,ARADEN+BRAREN+DMVNM0],
[XWD ADFMMI+ADCR36+ADADD,DMVNM1]
	DMVNM2

; **********************************************************************
;*FIXR								126
; **********************************************************************

	XWD	ET0+ET1,FCE+FIXFD
	XWD	[FIX0],[FIX1]
	FIX2

; **********************************************************************
;*FLTR								127
; **********************************************************************

	FCE+FLTFD
	0
	XWD	ADARPL,FLT2

; **********************************************************************
;*UFA								130
; **********************************************************************

	XWD	ADFMPL,FCE+FADFD
	0
	BRAREN+ARADEN+UFA2

; **********************************************************************
;*DFN								131
; **********************************************************************

	XWD	ET0+ET1+ADARPL,FCEPSE+SACBR+LNGCYC+DFNFD
	XWD	[XWD ADFMMI,DFN0],[BRAREN+ARADEN+DFN1]
	BRAREN+ARADEN
; **********************************************************************
;*FSC								132
; **********************************************************************

	XWD	ET0+ADFMPL,FSCFD
	XWD	[ARADEN+FSC0],0
	XWD	ADARPL,FSC2

; **********************************************************************
;*IBP								133
; **********************************************************************

	BLOCK 3

; **********************************************************************
;*XLDB SECOND PART						134-135
; **********************************************************************

	REPEAT 2,
<	XWD ET0+ET1,FCE+LDBFD
	XWD [LDB0],[XWD ADARPL+ADBRPL,BRAREN+LDB1]
	ARADEN+LDB2
>
; **********************************************************************
;*XDPB SECOND PART						136-137
; **********************************************************************

	REPEAT 2,
<	XWD ADFMPL+ET0+ET1,FCE+SCE+SACINH+DPBFD
	XWD [BRAREN+DPB0],[XWD ADARPL+ADBRPL,BRAREN+DPB1]
	ARADEN+DPB2
>
; **********************************************************************
;*FADXX								140-147
; **********************************************************************

	N==0
	REPEAT 10,
<	XWD <IFE N-5,<ET0>>+ADFMPL,<IFN N-5,<FCE>>+FADFD
+<IFN N&2,<SCE>>+<IFE N&3-2,<SACINH>>+<IFE N-1,<SAC2>>
	XWD [XWD ADFMPL,ARSWAP+FMP0],0
	BRAREN+ARADEN+FAD2
	N==N+1
>
; **********************************************************************
;*FSBXX								150-157
; **********************************************************************

	N==0
	REPEAT 10,
<	XWD <IFE N-5,<ET0>>+ADARMI+ADCR36+ADADD+ADMAGIC
+ET1,<IFN N-5,<FCE>>+FSBFD+<IFN N&2,<SCE>>+<IFE N&3-2,<SACINH>>
+<IFE N-1,<SAC2>>
	XWD [XWD ADARMI+ADCR36+ADADD+ADMAGIC,ARSWAP],
[XWD ADFMPL,ARADEN+FMP0]
	BRAREN+ARADEN+FAD2
	N==N+1
>
; **********************************************************************
;*FMPXX								160-167
; **********************************************************************

	N==0
	REPEAT 10,
<	XWD <IFE N-5,<ET0>>+ET1+ADFMPL,<IFN N-5,<FCE>>+FMPFD
+<IFN N&2,<SCE>>+<IFE N&3-2,<SACINH>>+<IFE N-1,<SAC2>>
	XWD [XWD ADFMPL,ARSWAP+FMP0],[ARADEN+BRAREN+FMP1]
	XWD ADARPL,FMP2
	N==N+1
>
; **********************************************************************
;*FDVXX								170-177
; **********************************************************************

	N==0
	REPEAT 10,
<	XWD ET1+ADFMPL+<IFE N-5,<ET0>>,<IFE N-1,<SAC2>>+<IFN N-5,<FCE>>+FDVFD
+<IFN N&2,<SCE>>+<IFE N&3-2,<SACINH>>
	XWD [XWD ADFMPL,ARSWAP+FMP0],[BRAREN+ARADEN+<IFE N-1,<-1>>+FDV1]
	FDV2+<IFE N-1,<-FDV2+FDV2L>>
	N==N+1
>
; **********************************************************************
;*MOVES, ALIAS FWT						200-217
; **********************************************************************

	N=0
	REPEAT 20,
<	XWD <IFE N&3-2,<ET0>>+
<IFN N&10,<IFN N&3-2,<ADCR36+ADARMI+ADADD+
ADFMMI>>>+ADFMPL,<IFE N&3,<FCE>>+<IFE N&3-3,<FCEPSE+SAIAC0>>
+<IFE N&3-2,<SCE+SACINH>>
	XWD [XWD <IFN N&10,<ADADD+ADMAGIC+ADCR36+ADARMI>>,ARADEN],0
	<IFE N&14-4,<ARSWAP>>+<IFE N&14-10,<ARADEN+ADSUB>>+<IFE N&14-14,<FWT>>
	N=N+1
>
; **********************************************************************
;*MULTIPLIES							220-227
; **********************************************************************

DEFINE SWCHES
	<XWD ET0+ET1+ADFMPL,<IFN N&3-1,<FCE>>+<IFN N&2,<SCE>>
+<IFE N&3-2,<SACINH>>+<IFN N&4,<IFN N&3-2,<SAC2>>>>

	N=0
	REPEAT 10,
<	SWCHES+LNGCYC+MULFD
	XWD [BRAREN+MUL0],[<IFE N&4,<IMUL1>>+<IFN N&4,<MUL1>>]
	<IFE N&4,<IMUL2>>+<IFN N&4,<MUL2>>
	N=N+1
>
; **********************************************************************
;*DIVIDES							230-237
; **********************************************************************

	N=0
	REPEAT 10,
<	SWCHES!<IFN N&3-2,<SAC2>>+DIVFD
	XWD [BRAREN+<IFN N&4,<ARADEN+DIV0>>+<IFE N&4,<ARADEN+IDIV0>>]
,[<IFN N&4,<DIV1>>+<IFE N&4,<IDIV1>>]
	XWD ADARPL+ADADD,<IFN N&4,<DIV2>>+<IFE N&4,<IDIV2>>
	N=N+1
>
; **********************************************************************
;*ASH, ROT, LSH							240-241-242
; **********************************************************************

	A0==<ADFMPL+ET0+ET1>B17+SRINST

	REPEAT 3,
<	A0
	XWD [ARADEN+BRAREN+SSHFT0],[SHFT1]
	SSHFT2
>
; **********************************************************************
;*JFFO								243
; **********************************************************************

	XWD ADFMPL+ET0+ET1,PCCHNG+LNGCYC+JFFOFD
	XWD [XWD ADBRPL,ARADEN+BRAREN+JFFO0],[XWD ADARPL,ABPCEN+JFFO1]
	XWD INFTST,JFFO2

; **********************************************************************
;*ASHC, ROTC, LSHC						244-245-246
; **********************************************************************

	REPEAT 3,
<	A0+SAC2
	XWD [ARADEN+BRAREN+DSHFT0],[XWD ADFMPL,SHFT1]
	DSHFT2
>
; **********************************************************************
;*UNDEFINED OP CODE						247
; **********************************************************************

	UUOMAC

; **********************************************************************
;*EXCH								250
; **********************************************************************

	XWD ADFMPL,FCEPSE+SACBR
	0
	BRAREN+ARADEN

; **********************************************************************
;*BLT								251
; **********************************************************************

	XWD ADARMI+ADFMPL+ADPL1L+ADADD+ET0+ET1,PCCHNG+BLTFD
	XWD [ARADEN+BLT0],[XWD ADADD+ADFMPL,ARRARL+BLT1]
	XWD ADARPL+PCCLK,ARPCEN+BRAREN+BLT2

; **********************************************************************
;*AOBJX								252-253
; **********************************************************************

	N=0
	REPEAT 2,
<	XWD ADFMPL+ADPL1B+ADADD,PCCHNG+LNGCYC+AOBJD
	0
	XWD ADBRPL,BRAREN+ARADEN+AOBJX+N
	N=1
>
; **********************************************************************
;*JRST								254
; **********************************************************************

	XWD 0,SACINH+PCCHNG+JRSTFD
	0
	ARPCEN+JRST1

; **********************************************************************
;*JFCL								255
; **********************************************************************

	XWD 0,SACINH+PCCHNG+JFCLFD
	0
	XWD	0,JFCL1

; **********************************************************************
;*XCT								256
; **********************************************************************

	XWD	INFTST,PCCHNG+SACINH+XCTFD
	0
	XCT2

; **********************************************************************
;*MAP								257
; **********************************************************************

	XWD	0,SCE+PCCHNG
	0
	ABPCEN+MAP2
; **********************************************************************
;*PUSHJ								260
; **********************************************************************

	A0==<ADFMPL+ADPL1B+ADADD>B17+PUSHD
	A1==A0+<ET0+ET1>B17+SACBR+STORE
	A2==ARADEN+BRAREN
	A3==<ADBRPL>B17

		A1
	XWD	[A2+PUSHES],[A3+ABADEN]
	XWD	PCCLK,ABPCEN+ARFLGS+ARPCEN+BRAREN+PUSHJ1

; **********************************************************************
;*PUSH								261
; **********************************************************************

		A1+FCE+ABADEN
	XWD	[A2+PUSH1],[A3]
		ARADEN+BRAREN+PUSH2

	A0==FCCACRT+<ADFMPL+ADMI1B+ADADD>B17
	A1==BRAREN+ARADEN+POPS+<ADBRPL>B17

; **********************************************************************
;*POP								262
; **********************************************************************

		A0+SCE+SACBR+<ET0>B17
	XWD	[A1],0
		BRAREN+ARADEN

; **********************************************************************
;*POPJ								263
; **********************************************************************

		A0+PCCHNG
		0
		A1+ABADEN

; **********************************************************************
;*JSR								264
; **********************************************************************

		PCCHNG+SCE+SACINH
		0
	XWD 	PCCLK,ARPCEN+ARFLGS+ABPCEN+PCINCL
; **********************************************************************
;*JSP								265
; **********************************************************************

	XWD	0,PCCHNG
		0
	XWD	ADBRPL,ARPCEN+ARFLGS+BRAREN

; **********************************************************************
;*JSA								266
; **********************************************************************

	XWD	ADARPL+ET0,SACBR+SCE+PCCHNG+ABADEN
	XWD	[XWD ADFMPL+PCCLK,ARLARR+ARPCEN+ABPCEN+PCINCL],0
	XWD	INFTST,BRAREN+ARADEN

; **********************************************************************
;*JRA								267
; **********************************************************************

	XWD	ADBRPL,FCCACL+PCCHNG+ABADEN
	0
	XWD	INFTST,0
; **********************************************************************
;*ADD-SUBTRACT							 270-277
; **********************************************************************

	N=0
	REPEAT 10,
<	XWD ADADD+ADFMPL+<IFE N&4,<ADARPL>>+<IFN N&4
,<ADARMI+ADCR36>>,<IFE N&3,<FCE>>+<IFN N&2,<FCEPSE>>+
<IFE N&3-2,<SACINH>>
	0
	ARADEN+ADSUB
	N=N+1
>
; **********************************************************************
;*COMPARES, JUMPS AND SKIPS					300-377
; **********************************************************************

	N=0
	REPEAT 20,
<	XWD ADFMPL+ADARMI+ADCR36+ADADD+ET0,SKPFD+ABPCEN+SACINH+
PCCHNG+<IFN N&10,<FCE>>
	XWD	[ADCLKINH,,0],0
	XWD 0,COMP
	N=N+1
>

	REPEAT 60,
<	<<ET0>B17>+PCCHNG+<IFN N&70-40,<SKPFD>>+<IFE N&10,<<ADFMPL>B17>>+<IFN N&10,<ABPCEN+SAIAC0
+<IFE N&70-30,<FCE>>+<IFE N&50-50,<FCEPSE>>+<ADARPL>B17>>
+<IFN N&40,<<ADADD>B17>>+<IFE N&70-50,<<ADCR36+ADMAGIC>B17>>
+<IFE N&70-40,<<ADCR36>B17+AOJD>>
	[ADCLKINH,,0],,0
	IFN N&10,<XWD 0,ARADEN+SKIPS>
	IFE N&10,<XWD ADBRPL,ARADEN+BRAREN+JUMPS>
	N=N+1
>
; **********************************************************************
;*BOOLEAN GROUP							400-477
; **********************************************************************

DEFINE CMP (X,LIST,ANS)
<	ANS==0
	IRP LIST <IFE <X&74>-<LIST*4>,<STOPI
	ANS==1>>>

	N=0
	REPEAT 100,
<	CMP (N,<0,5,12,17>,M)
	CMP (N,<7,13,15,16>,A6)
	CMP (N,<6,11>,A1)
	CMP (N,<1,2,3,6,11,15,16>,A2)
	CMP (N,<4,7,10,13,14>,A3)
	CMP (N,<1,4,5,11,13,16>,A4)
	CMP (N,<2,6,7,10,12,15>,A5)
	BFLGS==A1*ADEQV+A2*ADARPL+A3*ADARMI+A4*ADFMPL+A5*ADFMMI
	XWD BFLGS+A6*ET0,<IFE <N&3>,<<1-M>*FCE>>+<IFN <<N&2>*<1-M>>,<FCEPSE>>+
<IFE N&3-2,<SACINH>>+<IFN N&2,<M*SCE>>+<IFE <N&74>,<BOOL0D>>
	XWD [XWD ADARMI,ARADEN],0
	ARADEN
	N=N+1
>
; **********************************************************************
;*HALF WORDS							500-577
; **********************************************************************

	N=0
	REPEAT 100,
<	M=0
	IFE N&33-2,<M=FCEPSE>
	IFE N&3-3,<M=FCEPSE+SAIAC0>
	XWD <IFE N&3-2,<ADFMPL+ET0>>+<IFE N&72-40,<ADFMLP>>+<IFE N&72,
<ADFMRP>>+<IFN N&3-2,<<IFE <N&44>*<N-43>*<N-47>,<ADARLP>>+
<IFE <N&44-40>*<N-3>*<N-7>,<ADARRP>>>>,<IFE N&3,<FCE>>+M+
<IFE N&3-2,<SACINH+<IFN N&30,<SCE>>>>
	XWD [XWD <IFE N&70-40,<ADBRLP>>+<IFE N&70,<ADBRRP>>+
<IFE N&44-40,<ADARRP>>+<IFE N&44,<ADARLP>>,ARADEN+BRAREN],0
	<IFE N&44-44,<ARRARL>>+<IFE N&44-4,<ARLARR>>+<IFE N&44,
<ARLTAD>>+<IFE N&44-40,<ARRTAD>>+<IFE N&50-40,<ARLTAD>>+
<IFE N&50,<ARRTAD>>+<IFE N&30-30,<HWTETS+<IFN <N&4*10+N>&40,<2>>>>
	N=N+1>
; **********************************************************************
;*TEST GROUP							600-677
; **********************************************************************

	N=0
	REPEAT 100,
<	M=0
	IFN N&6,<M=1>
	IFE N&60-60,<M=1>
	A1=0
	IFE N&66-20,<A1=1>
	IFE N&66-40,<A1=1>
	A0=ADFMPL+M*ADARPL+<IFE N&66-40,<ADEQV>>+A1*ADARMI
	XWD <IFN N&1,<ET0>>+M*ET1+A0,<IFN N&10,<FCE>>+<IFE N&60,<SACINH>>
+<IFN N&6,<PCCHNG+ABPCEN>>+<IFE N&3-2,<LNGCYC>>
	XWD [XWD A0,ARSWAP+<IFN N&2,<TEST1>>],
[XWD <IFE N&60-20,<ADARMI+ADFMPL>>+<IFE N&60-40,
<ADEQV+ADFMPL+ADARMI>>+<IFE N&60-60,<ADBRMI+ADFMMI+ADEQV
+ADARPL+ADARMI>>+<IFE N&6-4,<PCCLK>>
,BRAREN+<IFN N&2,<TEST+<IFN N&4,<1>>>>]
	XWD	<IFN N&6,<INFTST>>,ARADEN
	N=N+1
>
	IFNDEF	SIMASB,<
; **********************************************************************
;*IOTS								700-
; **********************************************************************

	BLOCK	300

IFN TABLE+3000-.,<PRINTX TABLE LENGTH INCORRECT>
>
SUBTTL	DISPATCH TABLE FOR INSTRUCTIONS		TWO PART INST'S
; **********************************************************************

BPINC:
	N=3
	REPEAT 5,
<	XWD ADADD+<IFN N&5-5,<ET0+ADARPL+ADCR36+ADBRMI
+ADBRPL+ADMI1B>>,SACINH+<IFN N&4,<PCCHNG>>+<IFN N&5-5,<FCEPSE
+LNGCYC+BPIFD>>+<IFE N&5-5,<FCE+BPNIFD>>
	XWD [XWD ADADD,BYTE0],0
	BYTE2+<IFE N&4,<2>>
	N=N+1
>
BPNINC:
	XWD ADADD,SACINH+BPNI2D	;IBP (BYF6(1))
	0
	BYTE2+2

	REPEAT 4,
<	XWD ADADD,FCE+SACINH+PCCHNG+BPNIFD
	0
	BYTE2
>

DMVPT2:	XWD ADARPL+ADADD+ADCR36+ADMAGIC+ET0+ET1,STORE+SACINH+DMVEFD
	XWD [DMVE0A],[XWD ADFMPL,0]
	ARADEN

	XWD ADARPL+ADADD+ADCR36+ADMAGIC+ET0+ET1,STORE+SACINH+DMVEFD
	XWD [XWD ADADD+ADCR36+ADARPL+ADMAGIC,DMVE0A],[XWD ADFMMI+ADADD+ADCR36,DMVN1A]
	ARADEN+DMVN2A

	IFNDEF	SIMASB,<
MUUO2:	XWD ET0,STORE+SACINH
	XWD [MUUO02],0
	XWD 0,ARPCEN+ARFLGS

MUUO3:	ABADEN+PCCHNG+MUO3FD
	XWD 0,0
	XWD ADARPL,MUUO32
>
SUBTTL	DISPATCH SUBROUTINES FROM MAIN TABLE
; **********************************************************************

	DEFINE DSYM (A)
<	A==.-ETAB
	IFG A-777,<PRINTX DISPATCH TABLE OVERFLOW>>
	ETAB=.-1

DSYM AOBJX
	TRO	T,ABPCEN	;AOBJP
	SKIPL	AD		;AOBJN
	TRC	T,ABPCEN
	POPJ	P,

DSYM JRST1
	JRST	JRST2
DSYM JFCL1
	JRST	JFCL2

DSYM FWT
	JUMPGE	AR,CPOPJ
	TRO	T,ARADEN

DSYM ADSUB
ADSUB1:	MOVSI	T1,AROV!CRY0!CRY1
	AND	T1,ADFLGS
	TLNE	F,ADADD
	IOR	PC,T1
	TLNN	F,ADADD
	JRST	.+3
	TLNE	T1,AROV
	TLO	PC,TN1
	POPJ	P,

DSYM COMP
	PUSHJ	P,CNDPQR
	MOVE	T1,CONDQ
	IOR	T1,CONDP
	SKIPE	T1
	TLO	T,PCCLK
	MOVEI	S,ST1
	POPJ	P,

DSYM SKIPS
	TRNN	T3,SACINH
	SETOM	FMWRSET
	PUSHJ	P,ADSUB1
	PUSHJ	P,CNDPQR
	MOVE	T1,CONDR
	IOR	T1,CONDP
	SKIPE	T1
	TLO	T,PCCLK
	MOVEI	S,ST1
	POPJ	P,
DSYM XCT2
	TLNE	PC,USERF
	POPJ	P,
	TLNN	PC,EXIOT
	POPJ	P,
	TLNE	IR,(1B11)
	SETOM	XCTPWR#
	TLNE	IR,(1B12)
	SETOM	XCTPRD#
	POPJ	P,

DSYM JUMPS
	PUSHJ	P,ADSUB1
	PUSHJ	P,CNDPQR
	MOVE	T1,CONDP
	IOR	T1,CONDR
	SKIPN	T1
	TRO	T,ABPCEN
	SETOM	FMWRSET
	MOVEI	S,ST1
	POPJ	P,

DSYM HWTETS
	JUMPL	AR,HWTET1	;CHECKS AR0
	POPJ	P,
	TRNN	AR,400000	;CHECKS AR18
	POPJ	P,
HWTET1:	TRNE	T,ARLTAD+ARLARR
	TROA	T,ARRTAD
	TRO	T,ARLTAD
	POPJ	P,

DSYM TEST1
	SETOM	LONGSET
	POPJ	P,

DSYM TEST
	TLO	T,PCCLK
	SKIPE	AD
	TLC	T,PCCLK
	POPJ	P,

DSYM PUSH1
	SETOM	INSYNC

DSYM PUSHES
	MOVE	T1,ADFLGS	;PUSH,PUSHJ
	TLNE	T1,CRY0		;CARRY 0
	TRO	F,FLAG2
	POPJ	P,
DSYM PUSHJ1
	SETOM	PCP1FF

DSYM PUSH2
	TRNE	F,FLAG2
	TLO	PC,TN0
	POPJ	P,

DSYM POPS
	MOVE	T1,ADFLGS
	TLNN	T1,CRY0		;CARRY 0
	TLO	PC,TN0
	POPJ	P,

DSYM UUO1
	SETOM	ARSMR
	AOSA	MAGIC#

DSYM PCINCL
	SETZM	PCP1FF
	POPJ	P,

DSYM MUL0
	SETOM	MPY
	TRO	T,MQADEN+ARCLR
	TRO	T2,SCSAEN
	SETZM	ARGOLT
	MOVEI	T1,6
	MOVEM	T1,SINDEX
	PUSHJ	P,MPYFCN
	JUMPGE	AD,SCTC5
	JUMPGE	AR,SCTC5
	TRO	F,FLAG3
	JRST	SCTC5


DSYM IMUL1
	SETOM	LONGSET
	SKIPL	AD
	TLOA	T,ADARPL
	TLO	T,ADARMI
DSYM MUL1
	TRO	T,ARSHLT
	TRO	F,FLAG1
	MOVE	T1,@INSTPT
	TRNE	T1,SCE
	PUSHJ	P,MEMWSS
	POPJ	P,
DSYM IMUL2
	SETOM	ARMQEN
	JUMPN	AD,MUL1A

DSYM MUL2
	TLNE	AR,(1B0)
	TRNN	F,FLAG3
	POPJ	P,
MUL1A:	TLO	PC,AROV+TN1
	POPJ	P,


DSYM JFFO0
	SKIPE	AD
	TRO	F,FLAG1
	TLNN	AD,-1
	TRO	F,FLAG2
	JRST	FMAC2E

DSYM JFFO1
	TRNN	F,FLAG1
	POPJ	P,
	SETOM	PCP1FF
	TLO	T,PCCLK
	TRNN	F,FLAG2
	POPJ	P,
	TRO	T,ARLARR
	TRO	MQ,22
	POPJ	P,

DSYM JFFO2
	SETZM	SINDEX
	SETOM	ARMQEN
	TRO	T,MQADEN
JFFO2A:	PUSHJ	P,MQMIXR
	TRNE	F,FLAG1
	SKIPGE	MQMIX
	JRST	JFFO2B
	TLO	T,ADARPL+ADMAGIC+ADADD+ADCR36
	MOVEI	S,JFFOT1
	POPJ	P,

JFFO2B:	SETOM	FMWRSET
	MOVEI	S,ST1
	POPJ	P,

DSYM DIV0
	PUSHJ	P,FMAC2E
DSYM IDIV0
	TRO	T2,SCSAEN
	SKIPGE	@FMREG
	TLOA	T,ADCR36+ADADD+ADMAGIC+ADARPL
	TLOA	T,ADARMI
	TRO	F,FLAG3
	POPJ	P,

DSYM IDIV1
	TRO	T,ARCLR
	TLO	T,ADMAGIC
	AOS	MAGIC
	SETOM	LONGSET
IDIV1A:	TRO	T,MQADEN
	MOVEI	T1,12
	MOVEM	T1,SINDEX
	POPJ	P,

DSYM DIV2
	TRO	T,MQADEN
	TRNN	F,FLAG3
	JRST	.+3
	MOVE	T1,ADFLGS
	TLNE	T1,CRY1
	SETOM	ARMQEN
	JRST	.+3


DSYM IDIV2
	SKIPGE	MQ
	TRO	T,ARADEN
	MOVE	T1,[POINT 4,IR,12]
	MOVEM	T1,FMADREN
	TRO	F,DSF2SET
	MOVEI	S,DST1
	SKIPL	BR
	TLOA	T,ADBRMI+ADCR36
	TLO	T,ADBRPL
	POPJ	P,

DSYM DIV1
	TRNN	F,FLAG3
	JRST	DIV1A
	TLO	T,ADCR36+ADADD+ADFMMI
	TLO	T2,ADMSKG
	JRST	IDIV1A-1
DIV1A:	TLO	T,ADFMPL
	JRST	IDIV1A

DSYM DSHFT0
	PUSHJ	P,FMAC2E
DSYM SSHFT0
	MOVEI	T2,SAADD+SAP220+SCAREN
	SETOM	LONGSET
	TRNE	AR,1B18
	TROA	T2,SASCPL
	TRO	T2,SASCMI+SAPL1
	POPJ	P,

DSYM SHFT1
	MOVEI	T2,SAADD+SAP110
	SETOM	LONGSET
	SETZM	SHLONG#
	SKIPL	SA
	JRST	SHFT1A
	TRO	T2,SCSAEN
	SOSA	SHLONG
SHFT1A:	SKIPGE	SC
	TROA	T2,SASCPL
	TRO	T2,SASCMI+SAPL1
	POPJ	P,

DSYM DSHFT2
	TRO	T,MQADEN
	PUSHJ	P,FMACEN

DSYM SSHFT2
	MOVS	T3,IR
	ANDI	T3,773000
	MOVEI	S,SRT1
	SETOM	LONGSET
	SKIPL	SA
	JRST	SHFT2A
	CAIN	T3,241000
	TROA	T2,SASCPL+SCSAEN
SHFT2E:	TRO	T2,SAM110+SCSAEN
	POPJ	P,

SHFT2A:	JUMPL	SC,SHFT2B
	TRO	T2,SASCMI+SAPL1+SAADD+SAZERO
	JRST	SHFT2C

SHFT2B:	CAIE	T3,241000
	SKIPN	SHLONG
	TRO	T2,SASCPL
SHFT2C:	SKIPE	SHLONG
	CAIN	T3,241000
	POPJ	P,
	JRST	SHFT2E
DSYM BYTE0
	TDO	T2,[XWD ADMSKG,SAMSIZ+SAPL1+SAADD]
	SKIPGE	SA
	TROA	T,ARADEN
	TROA	T2,SAARPOS
	TRO	T2,SAPL44
	POPJ	P,

DSYM BYTE2
	TLO	T2,MBAREN
	SETOM	INRDY
	TRO	T,MQADEN	;ENTER HERE FOR IBP
	SETOM	ARPOSEN#
	JRST	FIX1A

DSYM LDB0
	TRO	T2,SCSAEN
	JUMPE	SC,CPOPJ
	SETZM	SINDEX
	JRST	DFAT1G

DSYM DPB0
	TRO	T,MQADEN
	SETOM	ARMQEN
	TRO	T2,SCSAEN
	JUMPE	SC,DPB0A
	SETOM	ARGOLT
	SETZM	SINDEX
	JRST	SCTC5
DPB0A:	TLO	T,ADARMI+ADBRPL
	POPJ	P,

DSYM DPB1
	TRO	T,MQADEN
	PUSHJ	P,MEMWSS

DSYM LDB1
	SETOM	ARMQEN
	POPJ	P,

DSYM DPB2
	SETOM	ARMQEN

DSYM LDB2
	SETZM	BYF6#
	TLZ	PC,BIS
	POPJ	P,
DSYM DMOV2
	TLO	T2,ADMBEN
	MOVEI	S,DMOVT1
	TLNE	IR,1000
	MOVEI	S,DMVNT1
	JRST	DFA2D

DSYM DMVNM1
	SETOM	LONGSET

DSYM DMVN1A
	TRO	T,MQADEN
	TLO	T2,ADMSKG
	POPJ	P,

DSYM DMVNM2
	MOVE	T1,ADFLGS
	TLNE	T1,(1B2)
	SETOM	ARMQEN
	POPJ	P,

DSYM DMVN2A
	TLZ	AD,(1B0)
	POPJ	P,

DSYM DMVE0A
	SETOM	INSYNC

DSYM DMVNM0
	JRST	FMAC2E
	IFNDEF	SIMASB,<
DSYM TTYFD
	LDB	T3,[POINT 3,IR,12]
	JRST	@TTAB1(T3)

DSYM TDISP
	LDB	T3,[POINT 3,IR,12]
	JRST	@TTAB2(T3)

DSYM APRFD
	LDB	T3,[POINT 3,IR,12]
	JRST	@APRTB1(T3)

DSYM PIFD
	LDB	T3,[POINT 3,IR,12]
	JRST	@PITAB1(T3)

DSYM PAGFD
	LDB	T3,[POINT 3,IR,12]
	JRST	@PAGTB1(T3)
>
DSYM BLT0
	SKIPGE	AD17.5#
	TRO	F,FLAG3
	SETOM	BLTF1#
	POPJ	P,

DSYM BLT1
	TRO	T,ARLARR
	TRNE	F,FLAG3
	TRC	T,ARLARR+ARLTAD
	POPJ	P,

DSYM BLT2
	SETZM	PCP1FF
	SKIPE	BLTF1
	MOVEI	S,BLTT0
	POPJ	P,

DSYM FLT2
	MOVEI	S,SCT2
	SETZM	ARGOLT
	JRST	FIX1B
DSYM FSC0
	TRO	T2,SAADD+SAAREX+SASCPL+SCAREN
	SKIPGE	@FMREG
	TRC	T2,SASCPL+SASCMI+SAPL1
	POPJ	P,

DSYM FSC2
	TRO	T2,SAADD+SAPL1+SAZERO+SASCPL
	SKIPL	@FMREG
	TRC	T2,SASCPL+SASCMI
	MOVEI	S,NRT1
	SETOM	ARSMR
	JRST	FIX1B

DSYM DFN0
	TDNN	AD,[777777777]
	TLOA	T,ADCR36+ADADD
	SOSA	ARESAEN		;AR0 _ AR0(0)
	TROA	F,FLAG3
	POPJ	P,
	TLO	T2,ADMSKG
	POPJ	P,

DSYM DFN1
	TRNN	F,FLAG3
	TLOA	T2,ADMSKG
	TLOA	T,ADBRPL
	TLO	T,ADBRMI+ADCR36+ADADD
	POPJ	P,

	PUSHJ	P,FMAC2E

DSYM FDV1
	TRO	T2,SAAREX+SAADD+SASCMI
	SKIPGE	T1,@FMREG
	TLOA	T,ADADD+ADCR36+ADARMI+ADMAGIC
	TROA	T2,SAPL1
	TRO	F,FLAG3
	TRNE	F,FLAG3
	SETOM	LONGSET
FDV1B:	MOVEI	T3,10
	MOVEM	T3,SINDEX
FDV1A:	XOR	T1,AR
	JUMPGE	T1,FIX1A
	TRC	T2,SASCMI+SASCPL
	JRST	FIX1A
DSYM FDV2L
	TRNE	F,FLAG3
	TLOA	T,ADFMMI+ADADD+ADCR36
	TLOA	T,ADFMPL
	TLO	T2,ADMSKG
	SETOM	LONGSET

DSYM FDV2
	TRO	T2,SASCMI
	MOVEI	S,FDT0
	TRNN	F,FLAG3
	TRCA	T2,SASCPL+SASCMI
	JRST	[TDNE AD,[777,,-1]
		TRO T,ARADEN
		JRST FDV2X]
FDV2X:	SETOM	BRSMR
	JRST	FIX1A

DSYM FIX0
	TRO	T2,SAADD+SAMI33+SASCPL
	JUMPGE	AR,FIX1A
	TRC	T2,SASCPL+SASCMI
	JRST	FIX1A

DSYM FIX1
	SETOM	LONGSET
	TRO	T2,SASCMI+SAPL1+SAADD+FESAEN+SAPL10
FIX1B:	MOVEI	T3,10
	MOVEM	T3,SINDEX
FIX1A:	TRO	T2,SCSAEN
	POPJ	P,

DSYM FIX2
	JUMPL	SC,FIX2A
	SKIPL	SA
	JRST	FIX2B
	TLO	PC,AROV+TN1
	MOVEI	S,INDONE
	POPJ	P,

DFAF:	TLNE	IR,1000		;IS IT DFSB ?
	TLO	T2,ADXFMP+ADXFMM+ADXEQV	;YES,  *** ECO 42 ***
	PUSHJ	P,DFLTF

FADF:
FMPF:	SETOM	STINH

DSYM FMP0
FMP0A:	TRO	T2,SAAREX
	POPJ	P,
DSYM FMP1
	TRO	T2,SAADD+SASCPL+SAAREX
	SKIPGE	T1,@FMREG
	TRO	T2,SAPL1
	SETOM	MPY
	JRST	FDV1B

DSYM FMP2
	SETOM	BRSMR
	SETOM	ARSMR
	SETOM	LONGSET
	TRO	T2,SAMI16+FESAEN
	MOVEI	S,FMT1
	POPJ	P,

DSYM UFA2
	PUSHJ	P,FMAC2E

DSYM FAD2
	SETOM	BRSMR
	TRO	T2,SAAREX+SAADD+SAPL1+SASCMI
	MOVEI	S,FAT1
FAD2A:	SETOM	LONGSET
	TRO	T2,FESAEN
	MOVE	T1,@FMREG
	JRST	FDV1B

DSYM DFA0
	TDO	T2,[XWD ADXEQV+ADXBRM+ARXADX,SAADD+SAPL1+SAAREX+SASCMI]  ;ECO 42
	PUSHJ	P,FMAC2E
	JRST	FAD2A

DSYM DFA1
	PUSHJ	P,FMACEN
	TLO	T2,ARXADX
	SKIPL	T1,SA
	TRO	T2,SASCMI+SAPL1+SAADD+SAZERO
	XOR	T1,AR
	JUMPGE	T1,FIX1A
	TRO	F,FLAG2
	JRST	FIX1A
DSYM DFA2
	TLO	T2,ADMBEN
	SKIPL	SC
	TRO	T2,SCSAEN
	TRO	T2,SAAREX
	TRNE	F,FLAG2
	TRCA	T2,SAAREX+SAFEEN
	JRST	[JUMPL	BR,DFA2A
		 TRO	T2,SAEQV+SASCPL+SASCMI
		 JRST	DFA2A]
	SKIPL	ARX
	JRST	[TLNE	IR,1000
		JRST	DFA2A
		JRST	.+2]	;ECO 42
	TLNE	IR,1000
	TRO	T2,SAEQV+SAZERO
DFA2A:	SKIPL	SA
	TRZ	F,FLAG2
;DFA2C:	TLNE	IR,1000		;ECO 42
;	TLO	T2,ADXFMP+ADXFMM+ADXEQV
	MOVEI	S,DFAT1
DFA2B:	MOVEI	T1,7
	MOVEM	T1,SINDEX
DFA2D:	SETOM	FCE2W#
	POPJ	P,

DSYM DFM0
	TDO	T2,[ARXADX,,SAAREX+SAADD+SASCPL]	;ECO 42
	TRO	T,MQADEN
	SETOM	BRSMR
	SETOM	MPY
	JRST	DFD0A

DSYM DFM1
	PUSHJ	P,FMACEN
	TRO	T2,SASCPL
	JUMPL	MQ,FIX1A
	JRST	FDV1A+2

DSYM DFM2
	TDO	T2,[XWD ADMBEN,SAMI43+FESAEN]
	MOVEI	S,DFMT1
	JRST	DFA2B

DSYM DFD0
	TDO	T2,[XWD ADXEQV+ADXFMP+ADXFMM+ARXADX,
SAAREX+SAADD+SASCMI]
DFD0A:	SETOM	LONGSET
	PUSHJ	P,FMAC2E
	SKIPL	T1,@FMREG
	TRO	T2,SAPL1
	JRST	FDV1A
DSYM DFD1
	TRO	T,MQADEN
	TRO	T2,SASCPL
	SKIPL	ARX
	TLOA	T,ADARPL
	TRCA	T2,SASCPL+SASCMI
	JRST	FIX1A
	TLO	T,ADADD+ADCR36+ADARMI+ADMAGIC
	TLO	T2,ADXADD+ADXFMP+ADXFMM+ARXADX
	TRO	F,FLAG3
	JRST	FIX1A

DSYM DFD2
	TDO	T2,[XWD ARXADX+ADMBEN,FESAEN]
	TRO	T,MQADEN
	SETOM	ARMQEN
	MOVEI	S,DFDT0
	MOVEI	T1,11
	JRST	DFA2B+1

	IFNDEF	SIMASB,<
DSYM MONUUO
	TRO	F,MUOF2S
	SETOM	MCSPEC#
	MOVEI	T1,424
	TLNE	PC,USERF
	MOVEI	T1,USR424
	MOVEM	T1,MCSADR#
	POPJ	P,

DSYM MUUO02
	SETOM	MCSPEC
	MOVEI	T1,425
	TLNE	PC,USERF
	MOVEI	T1,USR425
	MOVEM	T1,MCSADR
	POPJ	P,

DSYM MUUO32
	HLL	PC,AR
	TRO	F,MUOF1C
	MOVEI	S,ST1
	POPJ	P,

DSYM MUOXC2
	JRST	MUOXC3
>
	IFDEF	SIMASB,<
DSYM	MONUUO
	JSR	ERR

DSYM	MUUO32
	JSR	ERR
>

DSYM MAP2
	HRRZ	AR,MA
	POPJ	P,
SUBTTL	DISPATCH SUBROUTINES FROM MAIN TABLE - FETCH ACTIONS
; **********************************************************************

	DEFINE ASYM(A)
<	A==<.-AUXTAB>B26
	IFG .-AUXTAB-37,<PRINTX AUXTAB OVERFLOW>>

AUXTAB:	JFCL

ASYM MULFD
	TRO	T2,SAMI22

ASYM DIVFD
	PUSHJ	P,DIVF

ASYM MUO3FD

ASYM TCONSX

ASYM SKPFD

ASYM FSBFD

ASYM JFFOFD

ASYM SRINST
	SETOM	STINH

ASYM BPNI2D
	PUSHJ	P,BPNIF2

ASYM BPNIFD
	PUSHJ	P,BPNIF

ASYM BPIFD
	TRO	T2,SAARPOS+SAPL1+SAMSIZ+SAADD

ASYM LDBFD

ASYM DPBFD
	PUSHJ	P,LDBF

ASYM FIXFD
	PUSHJ	P,FIXF

ASYM FLTFD
	PUSHJ	P,FLTF

ASYM DFNFD
	TRO	T2,SAAREX+SASCPL+SASCMI+SAEQV

ASYM FSCFD
	PUSHJ	P,FSCF
ASYM FADFD
	PUSHJ	P,FADF

ASYM FMPFD
	PUSHJ	P,FMPF

ASYM FDVFD
	PUSHJ	P,FDVF

ASYM DFAFD
	PUSHJ	P,DFAF

ASYM DFMFD
	PUSHJ	P,DFMF

ASYM DFDFD
	PUSHJ	P,DFDF

ASYM BLTFD
	PUSHJ	P,BLTF

ASYM XCTFD
	PUSHJ	P,XCTFD1

ASYM AOBJD

ASYM PUSHD

ASYM BOOL0D

ASYM AOJD
	TLO	T2,ADMSKG

ASYM DMVMFD
	PUSHJ	P,XCTFD1+1

ASYM DMVEFD
	PUSHJ	P,DMVEA

ASYM UUOFD
	PUSHJ	P,UUOF

ASYM JFCLFD
	PUSHJ	P,JFCLF

ASYM JRSTFD
	PUSHJ	P,JRSTF
PCP1:	HRRZM	PC,PCP1G#
	SKIPN	PCP1FF#
	AOS	PCP1G
	POPJ	P,

CONDZ1:	MOVE	T1,PC
	LSH	T1,-11
	AND	T1,IR
	SETZM	CONDZ#
	TLNE	T1,740
	SETOM	CONDZ
	POPJ	P,

JFCL2:	TLNE	IR,(1B9)
	TLZ	PC,AROV
	TLNE	IR,(1B10)
	TLZ	PC,CRY0
	TLNE	IR,(1B11)
	TLZ	PC,CRY1
	TLNE	IR,(1B12)
	TLZ	PC,FOV
	SKIPN	CONDZ
	TLO	T,INFTST
	POPJ	P,

JFCLF:	PUSHJ	P,CONDZ1
	SKIPN	CONDZ
	TROA	T,ABPCEN
	TLO	T,INFTST
	POPJ	P,

JRSTF:	TLNE	IR,(1B10+1B11)
	JRST	.+3
	TLO	T,INFTST
	POPJ	P,
	SETOM	STINH
	POPJ	P,
JRST2:	TLO	T,ADBRPL
	TRO	T,BRAREN
	TLNN	IR,(1B10+1B11)
	POPJ	P,
	TLNE	IR,(1B10)
	SETZM	RUN#
	TLNN	IR,(1B11)
	JRST	JRST3
	HLLZ	T1,AR
	TLNE	PC,USERF	;USER MODE
	TLOA	T1,10000	;USER CANNOT LEAVE USER MODE
	JRST	.+3
	TLNN	PC,EXIOT
	TLZ	T1,4000		;USER CANNOT TURN ON USER IOT
	TLZ	T1,37
	HLL	PC,T1
	SETZM	BYF6
	TLNE	PC,BIS
	SETOM	BYF6
JRST3:	MOVEI	S,ST1
	POPJ	P,

	IFNDEF	SIMASB,<
MUOXC3:	MOVEM	17,MONTMP+17	;SAVE AC'S
	MOVEI	17,MONTMP
	BLT	17,MONTMP+16
	HRRI	PC,.+3		;SET ACTUAL FLAGS
	HLL	PC,USR425
	JRST	2,(PC)
	MOVE	0,USR424
	LSH	0,-^D27
	CAIN	0,041
	JRST	MUOXC5		;INIT UUO
	MOVSI	17,ACS		;GET SIMULATED AC'S
	BLT	17,17
	XCT	USR424		;EXECUTE MONITOR UUO
	SKIPA
MUOXC4:	AOS	USR425
	MOVEM	17,ACS+17	;PUT BACK SIM AC'S
	MOVEI	17,ACS
	BLT	17,ACS+16
	JSP	0,.+1		;GET ACTUAL FLAGS
	HLLM	0,USR425	;SETUP AS SIM FLAGS
	MOVEI	0,0
	CALL	[SIXBIT /SETUWP/]
	JFCL
	MOVSI	17,MONTMP
	BLT	17,17		;RESTORE AC'S
	POPJ	P,
MUOXC5:	MOVE	0,@USR425	;MUUO INIT EXECUTION
	MOVEM	0,MUOXC6	;SETUP ARG'S
	AOS	USR425
	MOVE	0,@USR425
	MOVEM	0,MUOXC6+1
	MOVSI	17,ACS		;GET SIMULATED AC'S
	BLT	17,17
	XCT	USR424		;EXECUTE INIT
MUOXC6:	0
	0
	SKIPA			;ERROR RETURN
	AOS	USR425		;NORMAL RETURN
	JRST	MUOXC4

MONTMP:	BLOCK	20
>
DMVEA:	TLNE	F,ADBRPL
	TRO	T,ARADEN
	POPJ	P,

DIVF:	TRO	T2,SAMI42
	TLC	T,ADFMPL+ADFMMI
	SETOM	STINH
	POPJ	P,

BPNIF:	TLO	T2,ADMSKG	;BYTE PTR NOT INC FETCH
BPNIF2:	TRO	T2,SAARPOS
	POPJ	P,

FIXF:	PUSHJ	P,FSCF
	JRST	FMP0A
FLTF:	PUSHJ	P,FSCF
	TRO	T2,SAMI4
	POPJ	P,

FSCF:	SETOM	STINH
	POPJ	P,

FDVF:	PUSHJ	P,FSCF
	JRST	FMP0A

LDBF:	TRO	T2,SASCMI+SAPL1+SAADD+SAZERO
	JUMPGE	SC,CPOPJ
	TRO	T2,SAM100
	POPJ	P,
DFMF:	PUSHJ	P,DFLTF
	JRST	FMP0A

DFLTF:	TLOA	T2,ARXCLR
BLTF:	PUSHJ	P,BLTFDA
	SETOM	STINH
	POPJ	P,

BLTFDA:	SETOM	PCP1FF
	JRST	DFDF+2

DFDF:	PUSHJ	P,DFLTF
	TDO	T2,[XWD ADXFMM+ADXEQV,SAAREX]
	SETOM	TNCLRI#
	POPJ	P,

UUOF:	SETOM	TNCLRI
	SETOM	XCTF#
	MOVEI	T1,40
	MOVEM	T1,MAGIC#

XCTFD1:	SETOM	XCTF
	SETOM	TNCLRI
	POPJ	P,
	IFNDEF	SIMASB,<
TDATAI:	MOVEI	S,TTYDI
	POPJ	P,

TDATAO:	MOVEI	S,TTYDO
	POPJ	P,

TCONO:	MOVEI	S,TTYCO
	TRO	T,ARLARR
	POPJ	P,

TCONI:	MOVEI	S,TTYCI
	POPJ	P,

TCONSZ:	MOVEI	S,TTYCNZ
	POPJ	P,

TCONSO:	MOVEI	S,TTYCNO
	POPJ	P,

TDTAI:	PUSHJ	P,MEMWSS
	POPJ	P,

TDTAO:	POPJ	P,

TCNO:	POPJ	P,

TCNI:	JRST	TDTAI

TCNSZ:
TCNSO:	MOVEI	S,ST1
	POPJ	P,

ADATAI:	MOVEI	S,APRDI
	POPJ	P,

ADATAO:	MOVEI	S,APRDO
	POPJ	P,

ACONO:	MOVEI	S,APRCO
	TRO	T,ARLARR
	POPJ	P,

ACONI:	MOVEI	S,APRCI
	POPJ	P,
ACONSZ:	MOVEI	S,APRCNZ
	POPJ	P,

ACONSO:	MOVEI	S,APRCNO
	POPJ	P,

PDATAI:	MOVEI	S,PIDI
	POPJ	P,

PDATAO:	MOVEI	S,PIDO
	POPJ	P,

PCONO:	MOVEI	S,PICO
	TRO	T,ARLARR
	POPJ	P,

PCONI:	MOVEI	S,PICI
	POPJ	P,

PCONSZ:	MOVEI	S,PICNZ
	POPJ	P,

PCONSO:	MOVEI	S,PICNO
	POPJ	P,

GDATAI:	MOVEI	S,PGDI
	POPJ	P,

GDATAO:	MOVEI	S,PGDO
	POPJ	P,

PGCONO:	MOVEI	S,PGCO
	TRO	T,ARLARR
	POPJ	P,

PGCONI:	MOVEI	S,PGCI
	POPJ	P,

GCONSZ:	MOVEI	S,PGCNZ
	POPJ	P,

GCONSO:	MOVEI	S,PGCNO
	POPJ	P,
>
SUBTTL	MASTER CLOCK ROUTINE
; **********************************************************************

SIMGO:
GO:	SETOM	INFTFF
	SETZM	INSYNC
	SETZM	PCP1FF
	MOVEI	F,ABPC
	MOVE	PC,INPC
	HRRZM	PC,PCP1G
	SETOM	RUN
	MOVEI	S,INDONE
GO1:	SETZM	MEMCMP-GO1+.
	SETZM	MEMCMP-GO1+.
	SETZM	MEMCMP-GO1+.
	SETZM	MEMCMP-GO1+.
	SETZM	MAMAOFF
	SETZM	MEMDONE
	SETZM	WARNED
	SETZM	TIME
	SETZM	MEMWR
	SETZM	MEMWRWT
	SETZM	FMADMA
	SETZM	XCTF
	SETZM	DSF2
	SETZM	TTST#
	SETZB	IR,BYF5
	SETZM	BYF6
	TLNE	PC,BIS
	SETOM	BYF6
	SETZM	DFDF1
	SETZM	SACBRFF
	SETZM	FCE2ST
	SETZM	FCE2W
	SETZM	FMWRSET
	SETZM	FMSINAC#
	SETZM	MCSPEC
	SETZM	MCSADR#
	SETZM	MEMGOINH#
	SETZM	BLTF1
	SETZM	MUUOF1
	SETZM	MUUOF2
	SETZM	TRPCYC
	SETZM	PICYC
	SETZM	TRPSAT
	SETZM	PIRDYS
	SETZM	TRPCSET
	SETZM	PSINFT
	SETZM	INSNXT#		;INST FETCH NEXT
	SETZB	AR,MQ
	SETZB	BR,AD
	SETZB	MB,MA
	SETZB	SC,IR
	SETZM	ARI08#
MAIN:	PUSHJ	P,FMVAL
	PUSHJ	P,ADDER
	PUSHJ	P,ADXER
	PUSHJ	P,ABMIXR
	PUSHJ	P,SCAD
	CAIN	S,INDONE
	PUSHJ	P,INDONE
	SKIPN	IRLTCH
	JRST	[HLLZ	IR,MB
		TLZ	IR,37
		JRST	.+1]
	HRRZM	S,STATE#
	SETZB	T,INRDYCLR
	SETZB	T2,INDNCLR
	SKIPE	INSNXT
	TLO	T,INFTST
	SETZM	INSNXT
	SETZM	FMWRSET
	SETZM	CLINSET
	SETZM	ARMQEN
	SETZM	LONGSET
	SETZM	ARPOSEN
	SETZM	BRSMR
	SETZM	ARSMR
	SETZM	ARESAEN
	SKIPE	INFTFF
	PUSHJ	P,INFTSB
SIMBRK:	MOVEI	S,ERR+1
	SETOM	ERR
	SKIPE	DSF2
	JRST	MAIN1
	SKIPE	DFDF1#
	PUSHJ	P,MAIN2
	JRST	DISP

MAIN1:	MOVE	T1,AD
	XOR	T1,BR
	SKIPL	T1
	TLOA	T,ADBRMI+ADCR36+ADADD+ADARPL
	TLO	T,ADBRPL+ADADD+ADARPL
	JRST	DISP

MAIN2:	MOVE	T1,ADX
	TLO	T2,ADXADD+ADXFMP
	LSH	T1,10
	XOR	T1,@FMREG
	SKIPL	T1
	TLOA	T,ADADD+ADARPL+ADBRMI+ADCR36
	TLOA	T,ADADD+ADARPL+ADBRPL
	TLC	T2,ADXFMP+ADXFMM
	POPJ	P,
DISP:	PUSHJ	P,@STATE
	MOVEM	T2,SCADEN#
	PUSHJ	P,ARMIXR
	PUSHJ	P,ARXMXR
	PUSHJ	P,BRMIXR
	PUSHJ	P,MQMIXR
	PUSHJ	P,MBMIXR
	PUSHJ	P,SCMIXR
	SKIPE	ARCLK
	MOVE	AR,ARMIX
	MOVE	T1,ARXMIX#
	SKIPE	ARXCLK#
	MOVEM	T1,ARX#
	SKIPE	BRCLK
	MOVE	BR,BRMIX
	SKIPE	MQCLK#
	MOVE	MQ,MQMIX
	SKIPE	MBCLK#
	MOVE	MB,MBMIX#
	SKIPE	SCCLK#
	MOVE	SC,SCMIX#
	MOVE	T1,SA
	MOVE	T2,SCADEN
	TRNE	T2,FESAEN
	MOVEM	T1,FE#
	TRC	T,ARFLGS
	TRCN	T,ARFLGS
	TLZ	PC,BIS
	TLNN	PC,BIS
	SETZM	BYF6
	TLNE	T,PCCLK
	HRR	PC,AB
	PUSHJ	P,PCP1
	TRZN	F,CLKINH
	PUSHJ	P,TIMCAL
	TLNE	T,ADCLKINH
	JRST	.+3
	TRNN	T,ABABEN
	PUSHJ	P,ADCLK
	PUSHJ	P,ABCLK
	SKIPE	FMWRSET
	PUSHJ	P,FMWR
	SKIPE	CLINSET
	TRO	F,CLKINH
	TRZE	F,SCP1S
	TROA	F,SCP1IN
	TRZ	F,SCP1IN
	SKIPE	LONGSET
	TROA	F,LNGCYC
	TRZ	F,LNGCYC
	TLNE	T,INFTST
	SETOM	INFTFF#
	SKIPE	FCE2W
	PUSHJ	P,FCE2SY
	SKIPN	BRSMR#
	JRST	.+4
	TLNE	BR,(1B0)
	TLOA	BR,377000
	TLZ	BR,377000
	TRZE	F,MUOF1S
	SETOM	MUUOF1#
	TRZE	F,MUOF1C
	SETZM	MUUOF1
	TRZE	F,MUOF2S
	SETOM	MUUOF2#
	TRZE	F,MUOF2C
	SETZM	MUUOF2
	SKIPE	TRPCSET#
	SETOM	TRPCYC
	SETZM	TRPCSET
	SKIPE	TRPSAT
	TLZ	PC,TN0+TN1
	SKIPE	TRPSAT
	SETZM	TRPCYC
	SETZM	TRPSAT
	JRST	MAIN
SUBTTL	LOGIC SUBROUTINES
; **********************************************************************

; **********************************************************************
;*ADDER
; **********************************************************************

ADDER:	MOVNI	AD,1
	TLNE	F,ADARLP
	HLL	AD,AR
	TLNE 	F,ADARRP
	HRR	AD,AR
	TLNE	F,ADARMI
	ANDCM	AD,AR
	HLLO	T1,MB
	MOVE	T2,SCADFF
	TLNE	T2,ADMBLE
	AND	AD,T1
	HRRO	T1,MB
	TLNE	T2,ADMBRE
	AND	AD,T1
	TLNN	T2,ADMSKG
	JRST	ADDER1
	SETZM	T1
	HLRZ	T3,IR
	TRC	T3,(DPB)
	TRNE	T3,774000
	TRNN	T3,773000
	MOVEI	T1,1
	LDB	T3,[POINT 6,AR,11]
	LSH	T1,(T3)
	AND	AD,T1
ADDER1:	MOVEM	AD,AD2#
	SETZM	ADOVF1#
	SKIPGE	AD
	HLLOM	ADOVF1
	MOVNI	AD,1
	TLNE	F,ADFMLP
	HLL	AD,@FMREG#
	TLNE	F,ADFMRP
	HRR	AD,@FMREG
	TLNE	F,ADFMMI
	ANDCM	AD,@FMREG
	HLLO	T1,BR
	TLNE	F,ADBRLP
	AND	AD,T1
	HRRO	T1,BR
	TLNE	F,ADBRRP
	AND	AD,T1
	TLNE	F,ADMAGIC
	AND	AD,MAGIC#
	TLNE	F,ADBRMI
	ANDCM	AD,BR
	SETZM	ADOVF#
	SKIPGE	AD
	HLLOM	ADOVF
	TLNN	T2,ADBRP2
	JRST	ADDER2
	MOVE	T1,BR
	LSH	T1,1
	AND	AD,T1
	JUMPL	BR,ADDER2
	SETZM	ADOVF
ADDER2:	MOVEM	AD,ADPR#
	TLNN	F,ADADD+ADEQV
	AND	AD,AD2
	TLNE	F,ADEQV
	EQV	AD,AD2
	HRRZ	T1,AD2
	TLNE	F,ADCR36
	ADDI	T1,1
	ADDI	T1,(AD)
	MOVEM	T1,AD4#
	HLRZS	T1
	TLNN	F,ADMI1B
	ADDI	T1,1
	TLNE	F,ADPL1L
	ADDI	T1,1
	LSHC	T1,-1
	MOVEM	T2,AD17.5#
	HLRZ	T2,AD
	MOVSM	T1,ADTEM#
	HRL	T1,ADOVF
	ADD	T1,T2
	HLRZ	T2,AD2
	HRL	T2,ADOVF1
	ADD	T1,T2
	HRLM	T1,AD4
	TLNE	F,ADADD
	HLRZM	T1,ADOVF
	JFCL	17,.+1
	HLLZ	T1,AD
	ADD	T1,ADTEM
	ADD	T1,AD2
	JSR	ADFLGS
ADFLGS:	0
	MOVE	T1,ADFLGS
	JOV	ADFLGO
	MOVE	T1,ADOVF1
	TLNE	F,ADEQV
	EQVM	T1,ADOVF
	TLNN	F,ADADD+ADEQV
	ANDM	T1,ADOVF
	TLNE	F,ADADD
	MOVE	AD,AD4
	POPJ	P,

ADFLGO:	TLO	T1,AROV
	MOVEM	T1,ADFLGS
	JRST	ADFLGS+3
; **********************************************************************
;*ADX
; **********************************************************************

ADXER:	MOVE	T1,ARX#
	MOVEM	T1,ADX#
	MOVNI	T1,1
	MOVE	T3,SCADFF
	TLNE	T3,ADXFMP
	MOVE	T1,@FMREG
	TLNE	T3,ADXFMM
	ANDCM	T1,@FMREG
	TLNE	T3,ADXBRM
	ANDCM	T1,BR
	SKIPL	T1
	TLZA	T1,377000
	TLO	T1,377000
	TLNN	T3,ADXFM2
	JRST	ADXER1
	MOVE	T2,@FMREG
	ASH	T2,1
	TLNE	BR,(1B1)
	TRO	T2,1
	SKIPL	T2
	TLZA	T2,376000
	TLO	T2,376000
	AND	T1,T2

ADXER1:	SETZM	ADXTMP#
	MOVE	T2,AD2
	XOR	T2,ADPR
	XOR	T2,AD4
	SKIPGE	T2
	AOS	ADXTMP
	MOVE	T2,T1
	ADD	T2,ADX
	ADD	T2,ADXTMP
	XOR	T2,ADX
	XOR	T2,T1
	SETZM	ADXCR0
	TLNE	T2,(1B7)
	SETOM	ADXCR0#
	TLNE	T3,ADXEQV
	EQVM	T1,ADX
	TLNN	T3,ADXEQV+ADXADD
	ANDM	T1,ADX
	TLNN	T3,ADXADD
	JRST	ADXER2
	ADD	T1,ADXTMP
	ADDM	T1,ADX
ADXER2:	MOVE	T1,AD2
	TLNE	T3,ADXEQV
	EQVM	T1,ADPR
	TLNN	T3,ADXEQV+ADXADD
	ANDM	T1,ADPR
	MOVE	T1,AD4
	TLNE	T3,ADXADD
	MOVEM	T1,ADPR
	POPJ	P,

; **********************************************************************
;*SHIFTCOUNT ADDER
; **********************************************************************

SCAD:	MOVE	T3,SCADFF
	MOVNI	T1,1
	TRNE	T3,SASCPL
	MOVE	T1,SC
	TRNE	T3,SAFEEN
	AND	T1,FE#
	TRNE	T3,SASCMI
	ANDCM	T1,SC
	LDB	T2,[POINT 6,AR,11]
	TRNE	T3,SAMSIZ
	ANDCM	T1,T2
	MOVEM	T1,SA#
	MOVNI	T1,1
	MOVEI	T2,17
	AND	T2,T3
	TRNE	T3,17
	MOVE	T1,SAMAGN-1(T2)
	LDB	T2,[POINT 6,AR,5]
	TRNE	T3,SAARPOS
	AND	T1,T2
	TRNE	T3,SAAREX
	JRST	SCAD4
SCAD3:	TRNE	T3,SAADD
	JRST	SCAD1
	TRNE	T3,SAEQV
	JRST	SCAD2
	ANDM	T1,SA
	POPJ	P,
SCAD1:	ADDM	T1,SA
	TRNE	T3,SAPL1
	AOS	SA
	POPJ	P,

SCAD2:	EQVM	T1,SA
	POPJ	P,

SCAD4:	LDB	T2,[POINT 8,AR,8]
	TRZN	T2,200
	ORCMI	T2,177
	AND	T1,T2
	JRST	SCAD3

SAMAGN:	-22
	44
	0
	220
	110
	-110
	-42
	-16
	-33
	-32
	-4
	10
	-43
	43
	-100
CNDPQR:	MOVE	T3,ADFLGS#
	TLNE	T3,100000	;CARRY 1
	TLC	T3,200000	;COMP CARRY 0
	SKIPGE	AD
	TLC	T3,200000
	SETZM	ADCOND#
	TLNE	T3,200000
	SETOM	ADCOND
	SETZM	IR6#
	SETZM	IR7#
	SETZM	IR8#
	TLNE	IR,(1B6)
	SETOM	IR6
	TLNE	IR,(1B7)
	SETOM	IR7
	TLNE	IR,(1B8)
	SETOM	IR8
	SETCM	T3,IR6		;COMPUTE COND P
	AND	T3,IR7
	MOVEM	T3,CONDP#
	SKIPE	AD
	SETZM	CONDP
	MOVE	T3,IR6
	ANDCM	T3,IR7
	ANDCM	T3,IR8
	IORM	T3,CONDP
	MOVE	T3,IR6
	ANDCM	T3,IR8
	SKIPN	AD
	MOVEI	T3,0
	IORM	T3,CONDP
	PUSHJ	P,CONDQR
	MOVEM	T1,CONDQ#
	SETZM	ADCOND
	SKIPGE	AD
	SETOM	ADCOND
	PUSHJ	P,CONDQR
	MOVEM	T1,CONDR#
	POPJ	P,
CONDQR:	SETCM	T3,IR6
	AND	T3,ADCOND
	AND	T3,IR8
	MOVEM	T3,T1
	MOVE	T3,IR6
	ANDCM	T3,IR7
	ANDCM	T3,ADCOND
	IORM	T3,T1
	MOVE	T3,IR6
	ANDCM	T3,ADCOND
	SKIPN	AD
	MOVEI	T3,0
	IORM	T3,T1
	POPJ	P,
SUBTTL	TIME PULSE SUBROUTINES - INSTRUCTION
; **********************************************************************

; **********************************************************************
;*IT0
; **********************************************************************

IT0:	SKIPN	T3,INRDY#
	JFCL			;FIX FOR TRAPPING
	CAML	T3,TIME#
	MOVEM	T3,TIME
	TLO	T2,ADMBRE
	SETZM	XCTF
	LDB	T1,[POINT 4,MB,17]
	SKIPE	T1
	TLOA	T,ADFMPL+ADADD+ADPL1L
	TLO	T2,ADMBLE
	TRO	T,ABADEN
	MOVEI	T1,^D20
	ADDM	T1,TIME
	MOVE	T1,[POINT 4,IR,12]
	TLNN	MB,37
	MOVEM	T1,FMADREN
	TRO	F,DSF2CLR
	SETZM	STINH
	SETZM	MPY
	SKIPN	XCTPACT#
	JRST	.+3
	SETZM	XCTPRD
	SETZM	XCTPWR
	SETZM	XCTPACT
	TLNN	PC,TN0+TN1
	JRST	IT0A		;TN=0
	SKIPE	TRPCYC#
	JRST	IT0A
	SKIPE	PICYC#
	JRST	IT0A
	MOVEI	S,IT2
	POPJ	P,
IT0A:	JSP	S,CPOPJ
; **********************************************************************
;*IT1
; **********************************************************************

IT1:	TRZ	F,FLAG1+FLAG2+FLAG3
	SETZM	MAGIC#
	SETZM	SACBRFF
	TRO	T,ARRTAD
	SETOM	INRDYCLR#
	SETOM	IRLTCH#
	LDB	T3,[POINT 9,IR,8]
	CAIN	T3,254		;SKIP IF NOT JRST
	TRO	T,ARLTAD
	CAIG	T3,137
	CAIGE	T3,133
	SKIPA
	JRST	IT1BYT
	SKIPE	BYF6
	JRST	IT1DMV
IT1BY2:	TLNE	MB,(1B13)
	JRST	.+5
	SKIPE	XCTPRD
	SETOM	XCTPACT
	SKIPE	XCTPWR
	SETOM	XCTPACT
	IFDEF	SIMASB,<
	CAIGE	T3,110
	JSR	ERR	>
	IMULI	T3,3		;PICKUP DISPATCH TABLE
	IFNDEF	SIMASB,<
	ADDI	T3,TABLE	>
	IFDEF	SIMASB,<
	ADDI	T3,TABLE-330	>
IT1A:	MOVEM	T3,INSTPT#
	SKIPN	T1,(T3)
	JRST	IT1H		;NO ENTRY
IT1G:	SKIPE	BYF5
	JRST	.+5
	MOVE	T3,2(T3)
	ANDI	T3,777
	CAIE	T3,SKIPS
	PUSHJ	P,IT1I
	MOVEI	T3,SAIAC0
	AND	T3,T1
	CAIN	T3,SACBR
	SETOM	SACBRFF
IT1C:	TLNE	MB,(1B13)
	JRST	IT1IND		;INDIRECT CYCLE

IT1B:	MOVEI	S,FT6		;MB13 (0) ACTIONS
	SETOM	INDNCLR#
	MOVE	T1,@INSTPT
	TRNN	T1,MEMREF!STORE!PCCHNG
	SETOM	INSNXT
	TRNN	T1,MEMREF!STORE!PCCHNG
	TRO	T,ABPCEN
	TLNE	MB,37
	JRST	.+3		;MB 13-17 NOT = 0
	TRNN	T1,MEMREF
	JRST	ETSEL		;ENABLE FETCH CYCLE ACTIONS
IT1D:	TRNE	T1,MEMREF	;MB13(0) AND MEMREF OR NOT MB14-17 = 0
	SKIPA
	TLO	T,ADARPL	;NOT MEMREF
	TRNE	T1,FCCACR	;FCCACRT OR FCCACLT
	TLOA	T,ADFMPL
	TRNN	T1,FCE!FCEPSE!SCE!FCE2
	PUSHJ	P,FMACEN	;FM ADR AC EN
	TRNE	T1,FCCACR
	TRNN	MB,17
	JRST	.+3
	SETOM	LONGSET
	TRO	T2,SAADD
	TRNE	T1,FCE
	TRNE	T1,STORE!PCCHNG
	SKIPA
	SETOM	INSYNC#
	TRNE	T1,SCE
	TRNE	T1,FCCACR!FCE!PCCHNG
	SKIPA
	SETOM	INSYNC		;INST FETCH START SET
	SETZM	SCENACR#
	TRNN	T1,SCE
	JRST	.+3
	TRNN	T1,FCCACR
	SETOM	SCENACR		;SET FLAG FOR SCE AND NOT FCCACR
	TRNN	T1,SCE
	JRST	.+4
	TRNE	T1,FCCACL
	JRST	.+2
	TRO	T,ABABEN
	TRNE	T1,FCCACR
	JRST	.+3
	TRNE	T1,FCE!FCEPSE!FCE2
	TRO	T,ABABEN
	SKIPE	SCENACR
	SETOM	CLINSET
	TRNE	T1,FCE!FCEPSE
	SETOM	CLINSET
	SKIPN	SCENACR
	JRST	.+3
	TRNN	T1,FCE
	SETOM	MEMWR#
	TRC	T1,FCEPSE
	TRCN	T1,FCEPSE
	SETOM	MEMWR
	TRC	T1,FCCACL
	TRCN	T1,FCCACL
	JRST	.+3
	TRNE	T1,FCEPSE!FCE!FCE2
	SETOM	MEMREAD#
	TRNE	T1,FCCACR!FCE
	JRST	IT1E
	TRNN	T1,FCE2
	JRST	IT1E
	MOVEI	S,FT7
	SETOM	FCE2ST
	JRST	IT1F+1

IT1E:	SKIPN	MEMREAD
	SKIPE	MEMWR
	JRST	IT1F
	TRNE	T1,FCCACR
	MOVEI	S,FT3
	TRC	T1,FCCACL
	TRCN	T1,FCCACL
	MOVEI	S,FT1
	CAIN	S,FT3
	TRO	T,ABADEN
	POPJ	P,

IT1F:	MOVEI	S,MEMST
	PUSH	P,["C"]
	POP	P,MEMSIN#
	TLNN	MB,17
	POPJ	P,
	SKIPN	MEMWR
	POPJ	P,
	PUSH	P,["K"]
	POP	P,MEMSIN
	POPJ	P,
IT1H:	SKIPE	2(T3)
	JRST	IT1G
	IFNDEF	SIMASB,<
	LDB	S,[POINT 10,IR,9]
	CAIN	S,1624		;TTY I/O
	JRST	TTIO
	CAIN	S,1601		;PI
	JRST	PIIO
	CAIN	S,1600		;APR
	JRST	APRIO
	CAIN	S,1602		;PAG
	JRST	PAGIO
	CAIN	S,1776
	JRST	MUOXCT		;MUUO EXECUTION
>
IT1DE:	JSR	ERR

IT1IND:	SKIPE	PIRDYS#
	JRST	PIT1A
	MOVEI	S,MEMST
	PUSH	P,["A"]
	POP	P,MEMSIN
	SETOM	CLINSET#
	TRO	T,ABABEN
	SETOM	MEMREAD#
	TLO	T,INFTST
	SETOM	PSINFT#
	POPJ	P,

	IFNDEF	SIMASB,<
MUOXCT:	MOVEI	T3,MUOBLK	;MUUO EXECUTE INSTRUCTION
	MOVEM	T3,INSTPT
	JRST	IT1G

MUOBLK:	SACINH
	0
	MUOXC2
>
IT1BYT:	SKIPE	BYF5#
	JRST	IT1BY2
	SUBI	T3,133
	IMULI	T3,3
	SKIPE	BYF6
	ADDI	T3,BPNINC
	SKIPN	BYF6
	ADDI	T3,BPINC
	JRST	IT1A

IT1DMV:	CAIG	T3,125		;DMOVNM
	CAIGE	T3,124		;DMOVEM
	JRST	IT1BY2
	TRNE	T3,1
	SKIPA	T3,[DMVPT2+3]
	MOVEI	T3,DMVPT2
	JRST	IT1A

IT1I:	LDB	T3,[POINT 3,IR,2]
	CAIN	T3,7
	POPJ	P,
	TRO	T,MQCLR
	POPJ	P,

; **********************************************************************
;*IT2
; **********************************************************************

IT2:	SETOM	TRPCSET
	SETZM	PFF1#
	SETOM	MCSPEC#
	MOVEI	T1,420
	TLNE	PC,USERF
	MOVEI	T1,USR420
	MOVEM	T1,MCSADR
	LDB	T1,[POINT 2,PC,10]
	ADDM	T1,MCSADR
	SETZM	INRDY
	SETOM	PCP1FF
	JRST	IT1IND

PIT1A:	MOVEI	S,PIT1
	POPJ	P,

PIT1:	JSR	ERR

	IFDEF	SIMASB,<
USR420:	0
USR427:	0
USR436:	0	>
SUBTTL	TIME PULSE SUBROUTINES - FETCH
; **********************************************************************

; **********************************************************************
;*FT1
; **********************************************************************

FT1:	TRO	T,BRAREN!ARADEN
	JSP	S,CPOPJ

; **********************************************************************
;*FT2
; **********************************************************************

FT2:	TDO	T,[XWD ADARPL,ABADEN+ARRARL]
	JSP	S,CPOPJ

; **********************************************************************
;*FT3
; **********************************************************************

FT3:	SKIPE	MUUOF1
	SKIPE	MUUOF2
	SKIPA
	JRST	MUOES3
	MOVE	T1,@INSTPT
	TRNN	T1,FCCACR
	JRST	.+3
	TRNN	T1,PSE
	TRO	T,BRAREN
	SETOM	MEMREAD
	TRO	T,ABABEN
	SETOM	CLINSET
	TRNN	T1,STORE!PCCHNG!SCE
	SETOM	INSYNC		;INST FETCH START SET
	SKIPN	MUUOF1
	JRST	FT3A
	SETOM	MCSPEC
	PUSH	P,[430]
	POP	P,MCSADR
	TLNN	PC,USERF
	JRST	FT3A
	PUSH	P,[USR436]
	POP	P,MCSADR
FT3A:	SKIPE	TRPCYC
	AOS	MCSADR
	TRNN	T1,SCE
	JRST	.+3
	PUSH	P,["B"]		;NEXT CYCLE FT4
	SKIPA
	PUSH	P,["C"]		;NEXT CYCLE FT6
	POP	P,MEMSIN
	MOVEI	S,MEMST
	POPJ	P,
; **********************************************************************
;*FT4
; **********************************************************************

FT4:	TDO	T,[XWD ADBRPL,ABADEN]
	JSP	S,CPOPJ

; **********************************************************************
;*FT5
; **********************************************************************

FT5:	TRO	T,ABABEN
	SETOM	CLINSET
	SETOM	MEMWR
	PUSH	P,["C"]
	POP	P,MEMSIN	;NEXT CYCLE FT6
	MOVE	T1,@INSTPT
	TRNN	PCCHNG
	SETOM	INSYNC		;INST FETCH START SET
	MOVEI	S,MEMST
	POPJ	P,

; **********************************************************************
;*FT6
; **********************************************************************

FT6:	PUSHJ	P,FMACEN
	SETOM	CLINCLR#
ETSEL:	MOVE	T1,@INSTPT
	TRNE	T1,LNGCYC
	SETOM	LONGSET#
	MOVE	T3,T1
	TDZ	T3,[XWD 3,077777]
	IOR	T,T3
	MOVEI	S,ET2S
	TLNE	T1,ET1
	MOVEI	S,ET1S
	TLNE	T1,ET0
	MOVEI	S,ET0S
	TRNE	T1,STORE
	JRST	.+3
	SKIPN	TNCLRI
	SETOM	TRPSAT#
	TRC	T,ARFLGS
	TRCN	T,ARFLGS
	SETOM	TRPSAT
	LDB	T3,[POINT 5,T1,26]
	XCT	AUXTAB(T3)	;FETCH CYCLE ACTIONS
	POPJ	P,
; **********************************************************************
;*FT7
; **********************************************************************

FT7:	TDO	T,[XWD ADADD+ADCR36+ADBRPL,BRAREN]
	TLO	T2,ADMSKG
	SETOM	CLINSET
	MOVEI	S,MEMST
	MOVN	T3,VERTIM
	ADDM	T3,TIME
	POPJ	P,

; **********************************************************************
;*FT8
; **********************************************************************

FT8:	PUSHJ	P,FMACEN
	MOVEI	S,FT6
	POPJ	P,

FMACEN:	MOVE	T3,[POINT 4,IR,12]
	MOVEM	T3,FMADREN#
	POPJ	P,

	IFNDEF	SIMASB,<
MUOES3:	MOVEI	T1,MUUO3
	MOVEM	T1,INSTPT
	JRST	FT3+4	>

	IFDEF	SIMASB,<
MUOES3:	JSR	ERR	>
SUBTTL	TIME PULSE SUBROUTINES	-EXECUTE-
; **********************************************************************

; **********************************************************************
;*ET0
; **********************************************************************

ET0S:	MOVE	T1,INSTPT
	MOVE	T3,(T1)
	HLRZ	T1,1(T1)
	MOVE	T1,(T1)
	MOVEI	S,ET2S
	TLNE	T3,ET1
	MOVEI	S,ET1S
	TRNE	T3,STORE
	JRST	ET0SA

ETPULS:	IOR	T,T1
	TRZ	T,777
	ANDI	T1,777
	TRNE	T1,777
	JRST	ETAB(T1)
	POPJ	P,

ET0SA:	MOVEI	S,"F"
	MOVEM	S,MEMSIN
	SETOM	MEMWR
	SETOM	CLINSET
	MOVEI	S,MEMST
	TRO	T,ABABEN
	JRST	ETPULS

; **********************************************************************
;*ET1
; **********************************************************************

ET1S:	MOVE	T1,INSTPT
	HRRZ	T1,1(T1)
	MOVE	T1,(T1)
	SETOM	CLINCLR
	MOVE	T3,@INSTPT
	TRNE	T3,STORE
	JRST	.+3
	SKIPN	TNCLRI
	SETOM	TRPSAT
	JSP	S,ETPULS
; **********************************************************************
;*ET2
; **********************************************************************

ET2S:	SETZM	MEMGOINH
	MOVE	T3,@INSTPT
	LDB	T1,[POINT 4,IR,12]
	TRC	T3,SAIAC0
	TRCE	T3,SAIAC0
	JRST	ET2SA
	TRZ	T3,SAIAC0
	SKIPN	T1
	TRO	T3,SACINH
ET2SA:	MOVE	T1,INSTPT
	MOVE	T1,2(T1)
	TRNE	T3,FCE
	TRNN	T3,PSE
	TRNE	T3,SCE+STORE
	JRST	ET2SB
	TRNE	T3,SACINH
	JRST	ET2SC
ET2SB:	SKIPN	STINH#
	MOVEI	S,ST1
	SKIPA
ET2SC:	MOVEI	S,INDONE
	SKIPE	STINH#
	JRST	ETPULS
	TRNN	T3,SACINH
	SETOM	FMWRSET#
	JRST	ETPULS
SUBTTL	TIME PULSE SUBROUTINES	-STORE-
; **********************************************************************

; **********************************************************************
;*ST1
; **********************************************************************

ST1A:	SKIPE	BLTF1#
	JRST	ST1B
	TRNN	T1,SAC2
	JRST	ST5A
	JRST	ST3A

ST1:	SETZM	SACBRFF
	SKIPE	BLTF1
	TLO	T,PCCLK
	HLRZ	T1,IR
	ANDI	T1,777000
	CAIN	T1,(JSP)
	TLO	T,INFTST
	CAIN	T1,(JSR)
	TLO	T,INFTST
	CAIN	T1,(PUSHJ)
	TLO	T,INFTST
	CAIN	T1,(POPJ)
	TLO	T,INFTST
	CAIN	T1,(DMOVE)
	TLO	T,INFTST
	CAIN	T1,(MAP)
	TLO	T,INFTST
	CAIE	T1,(BLT)
	JRST	.+3
	SKIPN	BLTF1
	TLO	T,INFTST
	CAIE	T1,(JRST)
	JRST	.+3
	TLNE	IR,(1B10+1B11)
	TLO	T,INFTST
	ANDI	T1,700000
	CAIN	T1,700000
	JRST	ST1C		;I/O
	MOVE	T1,INSTPT
	MOVE	T1,2(T1)
	ANDI	T1,777
	CAIN	T1,COMP
	TLO	T,INFTST
	CAIN	T1,SKIPS
	TLO	T,INFTST
	CAIN	T1,JUMPS
	TLO	T,INFTST
	CAIN	T1,AOBJX
	TLO	T,INFTST
	CAIN	T1,AOBJX+1
	TLO	T,INFTST
	CAIN	T1,MUUO32
	TLO	T,INFTST

ST1D:	SKIPE	MUUOF1
	TRO	F,MUOF2C
	SKIPE	MUUOF2
	TRO	F,MUOF1S
	MOVE	T1,@INSTPT
	TRNE	T1,SAC2
	PUSHJ	P,FMAC2E
	TRC	T1,FCE
	TRNN	T1,FCCACR+FCE
	TRNN	T1,PSE
	TRNE	T1,SCE+STORE
	SKIPA
	JRST	ST1A

ST1B:	SKIPN	STINAC
	SOSA	CLINSET#
	HRROM	MA,FMADMA#
	TLO	T2,MBAREN
	JSP	S,CPOPJ
; **********************************************************************
;*ST2
; **********************************************************************

ST2:	MOVE	T1,@INSTPT
	SETOM	LONGSET
	MOVEI	S,ST4
	SKIPE	T3,STINAC#
	SETOM	FMWRSET#
	SETZM	STINAC#
	MOVEM	T3,FMSINAC
	JUMPN	T3,ST2A
	MOVE	T3,TIME
	ADDI	T3,^D100
	CAMGE	T3,MEMWRWT#
	MOVE	T3,MEMWRWT
	MOVEM	T3,TIME
	PUSHJ	P,WRRST
	MOVE	T1,@INSTPT
ST2A:	SKIPE	BLTF1
	JRST	BLTT1X
	SKIPE	PFF1
	JRST	PFX1
	HLRZ	T3,IR
	ANDCM	T3,BYF6
	TRC	T3,(DMOVEM)
	TRNN	T3,776000
	JRST	ST2B
	SKIPE	MUUOF2
	JRST	ST2C
	SKIPE	MUUOF1
	JRST	FT2+1
	TRNN	T1,SAC2
	JRST	ST4A
	JSP	S,CPOPJ
; **********************************************************************
;*ST3
; **********************************************************************

ST3:
ST3A:	JSP	S,CPOPJ

; **********************************************************************
;*ST4
; **********************************************************************

ST4:	SETOM	ARMQEN
	SETOM	FMWRSET
	HLRZ	T1,IR
	ANDI	T1,777000
	CAIN	T1,(DMOVN)
	TLZ	MQ,(1B0)
	TRC	T1,110000	;DFAD
	TRNN	T1,774000
	TLZ	MQ,(1B0)
ST4A:	JSP	S,CPOPJ

; **********************************************************************
;*ST5
; **********************************************************************

ST5:	HLRZ	T3,IR
	TRC	T3,(DMOVEM)
	TRNN	T3,776000
	SETZM	BYF6
	SKIPN	BYF6
	TLZ	PC,BIS
ST5A:	MOVEI	S,INDONE
	POPJ	P,

ST2B:	TLO	T,ADBRPL
	TRO	T,ABADEN
	MOVEI	T3,DMVPT2
	TLNE	IR,(1B8)
	MOVEI	T3,DMVPT2+3
	MOVEM	T3,INSTPT
	SETOM	BYF6
	TLO	PC,BIS
	MOVEI	S,FT6
	POPJ	P,
	IFNDEF	SIMASB,<
ST2C:	MOVEI	T3,MUUO2
	MOVEM	T3,INSTPT
	MOVEI	S,FT6
	POPJ	P,	>

	IFDEF	SIMASB,<
ST2C:	JSR	ERR	>

ST1C:	LDB	T1,[POINT 2,IR,11]
	CAIN	T1,3		;CONSX
	TLO	T,INFTST
	JRST	ST1D

PFX1:	SETZM	BYF5
	SETZM	IRLTCH
	MOVE	T3,[POINT 4,MB,17]
	MOVEM	T3,FMADREN
	MOVEI	S,IT2
	POPJ	P,
SUBTTL	TIME PULSE SUBROUTINES	-DIVIDE SUBRTN-
; **********************************************************************

; **********************************************************************
;*DST1
; **********************************************************************

DST1:	SETZM	MAGIC		;FOR SIMULATOR
	TRO	T,ARSHLT+MQSHLT
	SETOM	ARGOLT
	JUMPL	AD,SCTC5
	TRO	F,DSF2CLR
	JSP	S,CPOPJ

; **********************************************************************
;*DST2
; **********************************************************************

DST2:	TLO	PC,AROV!TN1!DCK
	MOVS	T1,IR
	ANDI	T1,770000
	CAIN	T1,170000
	TLO	PC,FOV
	MOVE	T1,@INSTPT
	TRNE	T1,SCE
	PUSHJ	P,INFT3
	JRST	ST5A

; **********************************************************************
;*DST3
; **********************************************************************

DST3:	TRO	T,MQSHLT
	TRO	F,DSF2CLR
	TLNN	IR,(1B1)
	JRST	DST3A
	MOVE	T1,@INSTPT
	TRNE	T1,SCE
	PUSHJ	P,MEMWSS
DST3A:	TRO	T,ARADEN
	TRNN	F,FLAG1
	TRO	T2,SAZERO+SAPL1+SAADD
	TRO	T2,SCSAEN+SASCMI
	JSP	S,CPOPJ
; **********************************************************************
;*DST4
; **********************************************************************

DST4:	TRNN	MQ,1
	TRO	T,ARADEN
	TRNE	F,FLAG3
	TLOA	T,ADARMI+ADCR36+ADADD+ADMAGIC
	TLO	T,ADARPL
	TRO	T2,SCSAEN
	JSP	S,CPOPJ

; **********************************************************************
;*DST5
; **********************************************************************

DST5:	SETOM	ARMQEN
	TRO	T,MQADEN
	MOVE	T1,BR
	TRNE	F,FLAG3
	SETCA	T1,
	JUMPL	T1,DST5A
	TLNE	IR,204000
	JRST	DST5D
DST5E:	MOVEI	S,NRT1
	SETOM	LONGSET
	TRO	T2,SASCPL
	TLO	T,ADARPL
	POPJ	P,

DST5D:	TLNN	IR,(1B1)
	JRST	DST5F
DST5B:	MOVEI	S,ST1
DST5C:	MOVE	T1,@INSTPT
	TRNN	T1,SACINH
	SETOM	FMWRSET
	POPJ	P,

DST5F:	TLOA	T,ADARPL+ADCR36+ADMAGIC+ADADD
DST5A:	TLO	T,ADARMI+ADCR36+ADADD+ADMAGIC
	JSP	S,CPOPJ
; **********************************************************************
;*DST6
; **********************************************************************

DST6:	TRO	T,ARADEN
	TLNE	IR,(1B1)
	JRST	DST5B
	TLNE	IR,(1B6)
	TRC	T,ARADEN+ARSHRT+MQCLR
	JRST	DST5E

FXUSET:	SETZM	FXUH
	SKIPGE	SA
	SETOM	FXUH
	POPJ	P,
SUBTTL	TIME PULSE SUBROUTINES	-FLOATING DIVIDE-
; **********************************************************************

; **********************************************************************
;*FDT0
; **********************************************************************

FDT0:	TLNN	AR,(1B0)
	SETOM	ARSMR
	TLNE	AR,(1B0)
	SETOM	ARI08
	TRO	T,ARCLR
	TLO	T,ADARPL
	TRO	T2,FESAEN
	HLRZ	T1,IR
	TRC	T1,(FDVL)
	TRNE	T1,777000
	JRST	FDT1A
	TRO	T,MQADEN
	TRNE	F,FLAG3
	TDNN	AD,[777777777]
	JRST	.+2
	TLO	T,ADADD
	JSP	S,CPOPJ

; **********************************************************************
;*FDT1
; **********************************************************************

FDT1:	TLO	T,ADARPL
	TRO	T,ARADEN+MQSHLT
FDT1A:	TRO	F,DSF2SET
	JSP	S,CPOPJ

; **********************************************************************
;*FDT2
; **********************************************************************

FDT2:	TRO	T,ARSHRT+MQSHRT
	TLNE	IR,4000
	TROA	T2,SAMI33
	TRO	T2,SAMI32
	JSP	S,CPOPJ
; **********************************************************************
;*FDT3
; **********************************************************************

FDT3:	TRO	T2,SCSAEN
	TRO	T,MQSHLT+ARSHLT
	SETOM	LONGSET
	MOVEI	S,FDT4
	JUMPL	AD,CPOPJ
	MOVEI	S,DST2
	TRO	F,DSF2CLR
	POPJ	P,

; **********************************************************************
;*FDT4
; **********************************************************************

FDT4:	TRO	T,MQSHLT+ARSHLT
	MOVEI	S,SCT2
	PUSHJ	P,FMACEN
	SETOM	ARGOLT
	JUMPL	AD,CPOPJ
	TRO	T2,SCSCP1
	TRO	F,FLAG1
	POPJ	P,
; **********************************************************************
;*FDT5
; **********************************************************************

FDT5:	TRO	T,BRAREN+ARADEN
	SETOM	FMWRSET
	TRO	T2,SAAREX+SCSAEN+SASCPL+SAADD
	TRNE	F,FLAG1
	TRO	T2,SAPL1
	JSP	S,CPOPJ

; **********************************************************************
;*FDT6
; **********************************************************************

FDT6:	SETOM	ARMQEN
	PUSHJ	P,FMAC2E
	SETZM	SACBRFF
	TLO	T,ADARPL
	SETOM	LONGSET
	TRO	T2,SASCMI
	TRNN	F,FLAG3
	TRC	T2,SASCPL+SASCMI
	JSP	S,FIX1A

; **********************************************************************
;*FDT7
; **********************************************************************

FDT7:	SETOM	FMWRSET
	MOVEI	S,ST5
	MOVEI	T1,200(SC)
	TRNN	T1,400
	SKIPN	AD
	TROA	T,ARCLR
	SETOM	ARESAEN
	POPJ	P,
SUBTTL	TIME PULSE SUBROUTINES	-FLOATING MULTIPLY-
; **********************************************************************

; **********************************************************************
;*FMT1
; **********************************************************************

FMT1:	TRO	T2,SCSAEN
	TDO	T,[XWD ADARPL,ARCLR+MQADEN]
	MOVEI	S,SCT2
	SETZM	ARGOLT
	JRST	MPYFCN

; **********************************************************************
;*FMT2
; **********************************************************************

FMT2:	TRO	T2,SAPL1+SAADD+SASCPL+SAZERO
	SKIPL	@FMREG
	TRC	T2,SASCPL+SASCMI
	TRO	T,ARSHLT+MQSHLT
FMT2A:	TLO	T,ADARPL
	JSP	S,FIX1A
SUBTTL	TIME PULSE SUBROUTINES	-NORMALIZE-
; **********************************************************************

; **********************************************************************
;*NRT1
; **********************************************************************

NRT1:	TRO	T2,SCSAEN	;SC SCAD EN
	TLO	T,ADARPL	;AD AR + EN
	PUSHJ	P,FXUSET	;SCAD-1(1):AR FXU HOLD SET

	SETZM	NRRND#
	SETZM	NRPOS#
	SETZM	NRNEG#

	TLNN	IR,(1B6)
	JRST	.+3
	TLNE	MQ,(1B8)
	SETOM	NRRND		;IR06(1)^MQ08(1):NR RND

	JUMPL	AR,NRT1X	;JUMP IF AR00(1)
	TLNE	AR,(1B9)
	SETOM	NRPOS		;AR00(0)^AR09(1):NR POS

	MOVE	T3,IR
	TLC	T3,(UFA)
	TLCE	T3,777000
	JRST	NRT1X		;NOT UFA
	JUMPN	AD,.+2		;JUMP IF 'AD=0
	TDNE	MQ,[1B7-1]
	SETOM	NRPOS		;AR00(0)^IR UFA^('AD=0 OR 'MQ08-35=0):NR POS

NRT1X:	TLNN	AR,(1B9)
	SETOM	NRNEG		;AR09(0):NR NEG
	MOVE	T3,IR
	TLC	T3,(UFA)
	TLCN	T3,777000
	SETOM	NRNEG		;IR UFA:NR NEG
NRT1Y:	SKIPN	NRRND		;NRT1 NORMAL ROUND CHECK
	JRST	NRT1Z		;NOT ROUND
	JUMPL	AR,.+3
	TLNE	AR,(1B9)
	JRST	NRT1NR		;IR06(1)^MQ08(1)^AR00(0)^AR09(1):NRT1 NORMAL RND

	JUMPGE	AR,NRT1Z
	TLNE	AR,(1B9)	;HERE IF AR00(1)
	JRST	NRT1Z
	TDNN	MQ,[1B8-1]	;HERE IF AR09(0)
	JRST	NRT1Z
				;IR06(1)^MQ08(1)^AR00(1)^AR09(0)^'MQ09-35=0
NRT1NR:	TLO	T,ADMAGIC+ADCR36+ADADD
	SETOM	LONGSET

NRT1Z:	TLC	IR,070000	;NR ALL ZEROS CHECK
	TLCN	IR,070000
	JUMPE	AD,NRAZRO	;AD00-17=0^AD09-35=0^IR FDVXX:NR ALL ZERO
	TDNN	MQ,[1B7-1]
	JUMPE	AD,NRAZRO	;AD00-17=0^AD09-35=0^MQ08-35=0:NR ALL ZERO

	SKIPE	NRPOS		;NR POS^NR RND:NRT3 COND
	SKIPN	NRRND
	JRST	NRT1ZX

NRT13C:	MOVEI	S,NRT3		;NRT3 CONDITION
	TRO	T2,SASCPL+SAADD
	POPJ	P,
NRT1ZX:	SKIPN	NRNEG
	JRST	.+3
	TLNE	AR,(1B8)
	JRST	NRT13C		;AR08(1)^NR NEG:NRT3 COND

	SKIPN	NRPOS		;NR POS^'NR RND:NRT4 COND
	JRST	NRT12C
	SKIPE	NRRND
	JRST	NRT12C

NRT14C:	MOVEI	S,NRT4		;NRT4 CONDITION
	TRO	T2,SASCMI+SAPL1+SAZERO+SAADD
	SETOM	LONGSET
	POPJ	P,

NRT12C:	MOVEI	S,NRT2		;NRT2, NOTHING ELSE - MUST BE THIS
	POPJ	P,

NRAZRO:	TRO	T,MQCLR		;NR ALL ZEROS
	MOVE	T3,@INSTPT
	TRNN	T3,SACINH
NRT1I:	SETOM	FMWRSET		;'SAC INH:FM WR EN
	MOVEI	S,ST1
	POPJ	P,
; **********************************************************************
;*NRT2
; **********************************************************************

NRT2:	TDO	T,[ADARPL,,ARSHLT]
	TRO	T2,SCSCP1
	HLRZ	T3,IR
	TRC	T3,(FDV)
	TRNE	T3,770000
	TRO	T,MQSHLT	;'IR FDVXX:MQ SH LT

	SETZM	NRRND
	SETZM	NRPOS
	SETZM	NRNEG

	TLNN	IR,(1B6)
	JRST	.+3
	TLNE	MQ,(1B9)
	SETOM	NRRND		;IR06(1)^MQ09(1):NR RND

	TLNN	AR,(1B10)
	SETOM	NRNEG		;AR10(0):NR NEG

	JUMPL	AR,.+3
	TLNE	AR,(1B10)
	SETOM	NRPOS		;AR00(0)^AR10(1):NR POS

	SKIPN	NRRND
	JRST	NRT2X		;NOT ROUND
	SKIPE	NRPOS
	JRST	NRT2NR		;NR RND^NR POS:NRT2 NORMAL RND
	JUMPGE	AR,NRT2X
	TLNE	AR,(1B10)	;HERE IF AR00(1)
	JRST	NRT2X
	TDNN	MQ,[1B9-1]	;HERE IF AR10(0)
	JRST	NRT2X
				;NR RND^AR00(1)^AR10(0)^'MQ10-35=0:NRT2 NORM RND
NRT2NR:	TLO	T,ADMAGIC+ADCR36+ADADD
	SETOM	LONGSET
NRT2X:	SKIPN	NRPOS		;NR POS^'NR RND:NRT4 CONDITION
	JRST	NRT2Y
	SKIPE	NRRND
	JRST	NRT2Y

NRT24C:	JRST	NRT14C		;NRT4 CONDITION

NRT2Y:	JUMPGE	AR,.+3
	TLNE	AR,(1B10)	;HERE IF AR00(1)
	JRST	NRT12C		;AR00(1)^AR10(1):NRT2

	JUMPL	AR,.+3
	TLNN	AR,(1B10)
	JRST	NRT12C		;AR00(0)^AR10(0):NRT2

NRT2Z:	SKIPN	NRPOS
	JRST	.+3
	SKIPE	NRRND
	JRST	NRT13C		;NR POS^NR RND:NRT3 CONDITION

	SKIPN	NRNEG
	JRST	.+3
	TLNE	AR,(1B8)
	JRST	NRT13C		;AR08(1)^NR NEG:NRT3 CONDITION

NRT2XX:	JSR	ERR		;SHOULDN'T GET HERE
; **********************************************************************
;*NRT3
; **********************************************************************

NRT3:	SETOM	LONGSET
	TRO	T2,SAADD
	SKIPGE	AR
	TROA	T2,SASCPL
	TRO	T2,SASCMI+SAPL1+SAZERO
	TDNE	AD,[1B8-1]
	JRST	NRT3A
	TRO	T,ARSHRT
	HLRZ	T3,IR
	TRC	T3,(FDV)
	TRNE	T3,770000
	TRO	T,MQSHRT
	TROA	T2,SCSAEN

NRT3A:	TRO	T,ARADEN
	JSP	S,CPOPJ
; **********************************************************************
;*NRT4
; **********************************************************************

NRT4:	TRO	T2,SAMI33
	SETOM	ARESAEN
	MOVE	T1,@INSTPT
	TRNE	T1,SCE
	PUSHJ	P,MEMWSS
	MOVE	T1,SA
	ADDI	T1,200
	TRNN	T1,400
	JRST	NRT4A
	SKIPN	FXUH#
	TLOA	PC,AROV!FOV!TN1!FXU
NRT4D:	TLO	PC,AROV!FOV!TN1
NRT4A:	HLRZ	T3,IR
	TRC	T3,(FDVL)
	TRNE	T3,7000
	MOVEI	S,ST1
	TRNN	T3,777000
	JRST	NRT4B
	TRO	T,MQSHRT
	TRNN	T3,7000
	MOVEI	S,NRT5
	JRST	DST5C

NRT4B:	MOVEI	S,FDT5
	SETOM	SACBRFF#
	TRNE	F,FLAG3
	TLOA	T,ADFMMI
	TLO	T,ADFMPL
	POPJ	P,

; **********************************************************************
;*NRT5
; **********************************************************************

NRT5:	SETOM	ARMQEN
	SETOM	LONGSET
	PUSHJ	P,FMAC2E
	TRO	T2,SASCMI+SAPL1+SAMI33+SAADD
	JSP	S,CPOPJ
; **********************************************************************
;*NRT6
; **********************************************************************

NRT6:	SETOM	FMWRSET
	MOVEI	S,ST5
	MOVE	T1,SA
	ADDI	T1,200
	TRNN	T1,400
	TDNN	MQ,[1B8-1]
	TROA	T,ARCLR
	SETOM	ARESAEN
	POPJ	P,
SUBTTL	TIME PULSE SUBROUTINES	-DOUBLE NORMALIZE-
; **********************************************************************

DNT5A:	TRO	T,ARSHRT+MQSHRT
	TDO	T2,[XWD ARXSHR,SASCPL]
	TRZ	F,FLAG2
DNT5B:	JSP	S,FIX1A

; **********************************************************************
;*DNT1
; **********************************************************************

DNT1:	SETZM	MAGIC#
	TRZ	F,FLAG3
	TRO	T2,SCSAEN
	TLO	T,ADARPL
	SKIPN	T3,ARX
	TLNE	AR,377000
	JRST	DNT1B
	TRNN	F,FLAG1
	JRST	DNT1A
DNT1Z:	TRO	T,ARCLR
	JRST	NRAZRO

DNT1B:	SKIPE	ADXCR0
	SKIPL	SCADFF
	JRST	DNT1C
DNT1A:	JSP	S,CPOPJ

; **********************************************************************
;*DNT2
; **********************************************************************

DNT2:	TLO	T2,ADXBRM+ADXEQV+ARXCLR
	TRO	T,BRAREN+MQCLR
	SETOM	ARMQEN
	JSP	S,CPOPJ
; **********************************************************************
;*DNT3
; **********************************************************************

DNT3:	TDO	T2,[XWD ARXADX,SASCPL+SAPL43+SAADD]
	TRO	F,FLAG1
	JRST	DFAT1J

DNT1C:	JUMPGE	T3,DNT1G
	TLNE	T3,(1B9)
	TRNE	F,FLAG2
	SKIPA
	JRST	DNT1E
	TLNE	MQ,(1B1)
	TDNN	MQ,[1B1-1]
	JRST	DNT1D
DNT1F:	TDO	T,[XWD ADADD+ADCR36+ADMAGIC,MQCLR]
	TDO	T2,[XWD ADXFMP+ADXFMM+ADXADD,SASCPL+SAADD]
	JSP	S,CPOPJ

; **********************************************************************
;*DNT5
; **********************************************************************

DNT5:	SKIPL	ARX
	JRST	DNT5A
	TDO	T,[XWD ADARPL,ARADEN]
	TDO	T2,[XWD ARXADX,SAPL1+SAZERO+SAADD+SASCMI]
	MOVEI	S,DNT7
	POPJ	P,

DNT1E:	JSP	S,CPOPJ
; **********************************************************************
;*DNT4
; **********************************************************************

DNT4:	TDO	T2,[XWD ARXSHL,SCSCP1+SASCPL]
	TDO	T,[XWD ADARPL,ARSHLT+MQSHLT]
	TRO	F,FLAG2
	MOVS	T1,IR
	TRC	T1,112000	;DFMP
	SKIPL	T3,ARX
	TLC	T3,(1B10)
	TRNE	T1,777000
	TLNN	T3,(1B10)
	JRST	DFAT1K
	JRST	DNT1E

DNT1G:	TLNN	T3,(1B9)
	TRNE	F,FLAG2
	SKIPA
	JRST	DNT1E
	TLNE	MQ,(1B1)
	JRST	DNT1F
	JRST	DNT6A

DNT1D:	TRO	T2,SASCPL+SAADD
	JSP	S,CPOPJ

; **********************************************************************
;*DNT6
; **********************************************************************

DNT6:	TLO	T,ADARPL
	MOVE	T1,ARX
	JUMPN	AD,.+3
	TDNN	T1,[1B8-1]
	TDO	T2,[XWD ARXSHR,SCSAEN]
DNT6A:	TRO	T2,SAPL1+SAZERO+SASCMI+SAADD
	JSP	S,CPOPJ
; **********************************************************************
;*DNT7
; **********************************************************************

DNT7:	TDO	T,[XWD ADBRPL,MQADEN]
	TLO	T2,BRARXE
	SKIPGE	ARX
	TRO	F,FLAG3
	JSP	S,FIX1A

; **********************************************************************
;*DNT8
; **********************************************************************

DNT8:	TRO	T2,SASCPL
	TRNE	F,FLAG3
	TRC	T2,SASCPL+SASCMI
	MOVEI	T1,200(SC)
	TRNN	T1,400
	JRST	DNT8A
	TLO	PC,AROV!FOV!TN1
	SKIPN	FXUH
	TLO	PC,FXU

DNT8A:	TRO	T,ARADEN
	JSP	S,CPOPJ

; **********************************************************************
;*DNT9
; **********************************************************************

DNT9:	SETOM	ARESAE
	JRST	NRT1I
SUBTTL	TIME PULSE SUBROUTINES	-FIX-
; **********************************************************************

FIX2B:	SETOM	ARSMR
	SETOM	LONGSET
	TRO	T2,SAADD+SAPL1+SASCMI+SAZERO
	JSP	S,CPOPJ

; **********************************************************************
;*FIXT1
; **********************************************************************

FIXT1:	TRO	T2,SCSAEN
	SKIPL	SA
	JRST	NRT1I
FIX2C:	TLO	T,ADARPL
	SKIPGE	FE
	JRST	FIX2E
	SETOM	ARGOLT
	MOVEI	S,SCT2
	POPJ	P,

FIX2E:	SETZM	ARGOLT
	MOVEI	S,SCT1
	POPJ	P,

FIX2A:	MOVSI	T1,(1B1)
	ADD	T1,AR
	JUMPL	T1,FIX2F
	TRO	T,ARCLR

; **********************************************************************
;*FIXT2
; **********************************************************************

FIXT2:	TLNE	IR,4000
	JRST	FIXT2A

FIX2G:	JUMPGE	AR,NRT1I
	TDNN	MQ,[1B8-1]

FIXT2A:	TLNE	MQ,(1B8)
FIXT2B:	TRO	T,ARADEN
	JRST	NRT1I

FIX2F:	SETOM	ARSMR
	JRST	FIX2C
SUBTTL	TIME PULSE SUBROUTINES	-DBLE FLOATING ADD/MUL/DIV-
; **********************************************************************

; **********************************************************************
;*DFAT1
; **********************************************************************

DFAT1:	TDO	T2,[XWD ARXADX,FESAEN]
	TRO	T,ARADEN+ABPCEN
	PUSHJ	P,FXUSET
	TRNE	F,FLAG2
	JRST	DFAT1C
	JUMPGE	SC,DFAT1A
	TRC	SC,300
	TRCN	SC,300
	JRST	DFAT1A
	TLC	T2,ARXADX+ARXCLR
	TRC	T,ARADEN+ARCLR
	TLNE	IR,1000
	JRST	DFAT1B

DFAT1A:	TLNE	IR,3000
	JRST	DFAT1C
	TRC	SC,700
	TRCE	SC,700
	JRST	DFAT1B
DFAT1G:	TLO	T,ADARPL
	SETZM	ARGOLT
	MOVEI	S,SCT1
	POPJ	P,
DFAT1D:	TLNE	IR,1000
	JRST	DFAT1E
DFAT1H:	TRO	T2,SAFEEN+SAZERO+SAPL1+SAADD
DFAT1J:	TLO	T2,ADXADD+ADXFMP+ADXFMM
	TLO	T,ADADD+ADMAGIC+ADARPL
	MOVSI	T1,(1B8)
	MOVEM	T1,MAGIC#
	TRZ	F,FLAG2
	TLO	T,INFTST
DFAT1K:	MOVEI	S,DNT1
	POPJ	P,
DFAT1E:	TLO	T,ADADD+ADARMI+ADCR36+ADMAGIC
	TLO	T2,ADXADD+ADXFMP+ADXFMM
	JSP	S,CPOPJ
; **********************************************************************
;*DFAT2
; **********************************************************************

DFAT2:	TLO	T2,ARXADX
	TRO	T,ARADEN
	TRC	SC,700
	TRCE	SC,700
	JRST	DFAT2A
	TRNN	F,FLAG2
	JRST	DFAT1G
	JRST	DFAT1F

DFAT1C:	TRC	SC,700
	TRCE	SC,700
	JRST	DFAT1D
	TLNE	IR,3000
	JRST	DFAT1E
DFAT1F:	TLO	T,ADBRPL
	TLO	T2,ADXFMM+ADXEQV
	SETOM	SACBRFF
	JSP	S,CPOPJ

; **********************************************************************
;*DFAT3
; **********************************************************************

DFAT3:	TRO	T,MQADEN
	SETOM	FMWRSET
	TLO	T2,ADXBRM+ADXEQV+BRARXE+ARXADX
	JSP	S,CPOPJ
; **********************************************************************
;*DFAT4
; **********************************************************************

DFAT4:	TLO	T2,ARXADX
	SETOM	ARMQEN
	TRO	T,BRAREN+MQCLR
	SETZM	SACBRFF
	JRST	DFAT1G

DFAT2A:	TRNE	F,FLAG2
	JRST	DFAT1H

DFAT1B:	TLO	T,ADARPL+ADBRPL+ADADD
	TLO	T2,ADXFMP+ADXADD
	JSP	S,CPOPJ

; **********************************************************************
;*DFAT5
; **********************************************************************

DFAT5:	TRO	T,ARSHRT+MQSHRT
	TDO	T2,[XWD ARXSHR,SAFEEN]
	JRST	DFAT1J

; **********************************************************************
;*DFMT1
; **********************************************************************

DFMT1:	TDO	T,[XWD ADARPL,ARCLR+MQADEN]
	TLO	T2,MBAREN
	TRO	F,FLAG2
	SETZM	ARGOLT
	MOVEI	S,SCT1
	TRNN	MB,1
	JRST	FIX1A
	TLO	T,ADADD+ADBRPL
	TLO	T2,ADXADD+ADXFMP
	JRST	FIX1A

; **********************************************************************
;*DFMT2
; **********************************************************************

DFMT2:	TRZ	F,FLAG2
	TDO	T,[XWD ADARPL,ABPCEN+MQADEN]
	PUSHJ	P,MPYFCN
	MOVEI	S,SCT2
	JRST	FIX1A
; **********************************************************************
;*DFMT3
; **********************************************************************

DFMT3:	TRO	T,ARSHLT+MQSHLT
	TRZ	F,FLAG1
	TDO	T2,[XWD ARXSHL,SCSAEN+SASCPL+SAADD+SAPL1+SAZERO]
	PUSHJ	P,FXUSET
	JRST	DFAT1J

; **********************************************************************
;*DFDT0
; **********************************************************************

DFDT0:	TLO	T2,ADMBEN
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT1
; **********************************************************************

DFDT1:	TRO	T,ARADEN+MQSHRT
	TLO	T2,MBAREN+ARXSHR
	SETOM	DFDF1
	SETOM	FMWRSET
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT2
; **********************************************************************

DFDT2:	SETOM	ARMQEN
	TRO	T,BRAREN+MQCLR
	TRO	T2,SAMI32
	SETZM	SACBRFF
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT3
; **********************************************************************

DFDT3:	TRO	T,ABPCEN+ARSHLT+MQSHLT
	TLO	T2,ARXSHL
	SKIPL	ADX
	JRST	DFDT3A
	JSP	S,FIX1A
; **********************************************************************
;*DFDT4
; **********************************************************************

DFDT4:	TRO	T,ARSHLT+MQSHLT
	TLO	T2,ARXSHL
	SETOM	PCP1FF
	TRO	F,FLAG2
	SETOM	ARGOLT
	MOVE	T1,ADX
	TLNN	T1,(1B8)
	JRST	DFDT4A+1
	TROA	F,FLAG1+SCP1S
DFDT4A:	TRO	T2,SCSAEN
	MOVEI	S,SCT2
	POPJ	P,

DFDT3A:	JSP	S,FIX1A
; **********************************************************************
;*DFDT10
; **********************************************************************

DFDT10:	TLO	PC,AROV!FOV!TN1!DCK
DFD10A:	SETZM	DFDF1
	SETOM	TRPSAT
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT11
; **********************************************************************

DFDT11:	TLO	T2,ADMBEN
	TLO	T,INFTST
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT12
; **********************************************************************

DFDT12:	TRO	T,ARADEN
	SETOM	FMWRSET
	MOVEI	S,ST5
	POPJ	P,

; **********************************************************************
;*DFDT5
; **********************************************************************

DFDT5:	SETOM	ARMQEN
	TDO	T2,[XWD MBAREN+ADMBEN,SAMI42]
	SETZM	PCP1FF
	TRZ	F,FLAG2
	SETOM	TRPSAT
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT6
; **********************************************************************

DFDT6:	TDO	T,[XWD ADADD+ADARPL+ADBRPL,ARADEN+MQCLR]
	SETOM	DFDF1
	TLO	T2,ADXADD+ADXFMP+MBAREN
	MOVE	T1,AR
	ROT	T1,-1
	XOR	T1,@FMREG
	JUMPGE	T1,DFDT4A
	TLC	T2,ADXFMP+ADXFMM
	TLC	T,ADBRPL+ADBRMI+ADCR36
	JRST	DFDT4A
; **********************************************************************
;*DFDT7
; **********************************************************************

DFDT7:	TRO	T,MQSHLT
	TDO	T2,[XWD ADMBEN,SCSAEN+SAFEEN+SAZERO+SAEQV]
	PUSHJ	P,FMACEN
	SETOM	LONGSET
	SKIPGE	@FMREG
	TRC	F,FLAG3
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT8
; **********************************************************************

DFDT8:	SETOM	INSNXT
	PUSHJ	P,FXUSET
	TDNE	MQ,[1B0-1]
	JRST	DFDT8C
	JUMPN	AD,DFDT8A
	TRO	T,ARCLR
	JRST	NRT1I
DFDT8A:	TRNE	F,FLAG3
	TDOA	T,[XWD ADARMI+ADMAGIC+ADADD+ADCR36,ARADEN]
DFDT8D:	TLO	T2,ADMBEN
	MOVEI	S,DNT8
	POPJ	P,

DFDT8C:	TRNN	F,FLAG3
	JRST	DFDT8D
	SETOM	ARMQEN
	TLO	T,ADARMI+ADMAGIC+ADCR36+ADADD
	MOVSI	T1,(1B0)
	MOVEM	T1,MAGIC#
	JSP	S,CPOPJ

; **********************************************************************
;*DFDT9
; **********************************************************************

DFDT9:	TDO	T,[XWD ADEQV+ADMAGIC,MQADEN]
	SETZM	MAGIC#
	JRST	DFDT8D
SUBTTL	TIME PULSE SUBROUTINES	-FLT ADD, MISC-
; **********************************************************************

; **********************************************************************
;*FAT1
; **********************************************************************

FAT1:	SKIPL	T1,SA
	TRO	T2,SASCMI+SAPL1+SAADD+SAZERO
	XOR	T1,AR
	SKIPGE	T1
	TRO	F,FLAG2
	JSP	S,FIX1A

; **********************************************************************
;*FAT2
; **********************************************************************

FAT2:	SKIPL	SC
	TRO	T2,SCSAEN
	TLO	T,ADBRPL
	TRO	T2,SAAREX
	TRNN	F,FLAG2
	JRST	FAT2A
	TRC	T2,SAFEEN+SAAREX
	JUMPGE	BR,FAT2B
	JRST	FAT2C
FAT2A:	JUMPL	AR,FAT2C
	TROA	T2,SAEQV+SASCPL+SASCMI
FAT2B:	TRO	T2,SAEQV+SAZERO
FAT2C:	JSP	S,CPOPJ
; **********************************************************************
;*FAT3
; **********************************************************************

FAT3:	TRO	T2,FESAEN
	SETOM	BRSMR
	SETZM	ARGOLT
	MOVEI	S,SCT1
	TLO	T,ADARPL
	TRNN	F,FLAG2
	TRO	T,BRAREN
	JUMPGE	SC,FAT3A
	TRC	SC,300
	TRCE	SC,300
	JRST	[TRO	T,ARCLR
		JRST	FAT3B]
FAT3A:	TRNN	F,FLAG2
	TROA	T,ARADEN
	SETOM	ARSMR
FAT3B:	TRC	SC,700
	TRCN	SC,700
	POPJ	P,
	TLO	T,ADBRPL+ADADD
	SETOM	LONGSET
	JSP	S,CPOPJ

; **********************************************************************
;*FAT4
; **********************************************************************

FAT4:	SKIPL	T1,AD
	TLC	T1,(1B8)
	TLNE	T1,(1B8)
	TROA	T,ARADEN
	TROA	T,ARSHRT+MQSHRT
	TROA	T2,SAADD+SAZERO+SAPL1
	SETOM	LONGSET
	TRO	T2,SAFEEN
	JRST	FMT2A
; **********************************************************************
;*JFFOT1
; **********************************************************************

JFFOT1:	TRO	T,ARADEN+MQSHLT
	JRST	JFFO2A

; **********************************************************************
;*SRT1
; **********************************************************************

SRT1:	TRO	T2,SCSAEN
	LDB	T1,[POINT 3,IR,8]
	MOVE	T3,SRTAB(T1)
	MOVEM	T3,SINDEX
	HRRE	T3,BR
	HLLES	T3
	SETCAM	T3,ARGOLT
	MOVEI	S,SCT2
	SKIPN	ARGOLT
	MOVEI	S,SCT1
	SKIPN	SA
	JRST	ST5A
	TLO	T,ADARPL
	POPJ	P,

SRTAB:	4			;ASH
	1			;ROT
	0			;LSH
	.-.			;(JFFO)
	5			;ASHC
	2			;ROTC
	3			;LSHC

FMAC2E:	MOVSI	T3,(1B12)
	ADD	T3,IR
	MOVEM	T3,ACPL2#
	MOVE	T3,[POINT 4,ACPL2,12]
	MOVEM	T3,FMADREN
	POPJ	P,
; **********************************************************************
;*DMOVT1
; **********************************************************************

DMOVT1:	TRO	T,ABPCEN+MQADEN
	JRST	JFFO2B

; **********************************************************************
;*DMVNT1
; **********************************************************************

DMVNT1:	TDO	T,[XWD ADARMI+ADCR36+ADADD+ADMAGIC,ABPCEN
+BRAREN+ARADEN]
	SETOM	LONGSET
	JSP	S,CPOPJ

; **********************************************************************
;*DMVNT2
; **********************************************************************

DMVNT2:	TDO	T,[XWD ADBRMI+INFTST,MQADEN]
	MOVE	T1,ADFLGS
	TLNE	T1,(1B2)
	TLOA	T,ADADD+ADCR36
	JRST	.+2
	TLO	T2,ADMSKG
	JSP	S,CPOPJ

; **********************************************************************
;*DMVNT3
; **********************************************************************

DMVNT3:	TRO	T,ARADEN
	JRST	JFFO2B
SUBTTL	SHIFT SUBROUTINE
; **********************************************************************

; **********************************************************************
;*SCT1
; **********************************************************************

SCT1:	TRO	T2,SCSHRT
	TRNN	SC,1
	JRST	SCTC
	TRO	T,ARSHRT
	HLRZ	T1,IR
	TRC	T1,(ILDB)
	TRNE	T1,776000
	TRO	T,MQSHRT
	CAMGE	IR,[FIX]
	TLO	T2,ARXSHR

SCTC:	TRC	SC,37
	TRCE	SC,37
	JRST	[SKIPE	MPY#
		PUSHJ	P,MPYFCN
		JRST	SCTC1]
	SKIPE	MPY
	TRNE	F,FLAG2
	JRST	.+3
	TLO	T,ADARPL
	SETOM	LONGSET
	MOVE	T3,SCADFF
	TRNE	MQ,2
	TLNN	T3,ADBRP2
	JRST	SCTC1
	TRNN	F,FLAG2
	PUSHJ	P,MPYFN5
SCTC1:	MOVEI	T3,1(SC)
	JUMPE	T3,SCTC2
	TRNE	F,FLAG2
	SKIPN	INTRQ#
SCTC5:	TLOA	T,ADARPL
	JRST	DFD10A
	JSP	S,CPOPJ
; **********************************************************************
;*SCT2
; **********************************************************************

SCT2:	HLRZ	T1,IR
	TRO	T2,SCSCP1
	SKIPN	ARGOLT#
	JRST	SCT2R
	TRO	T,MQSHLT+ARSHLT
	CAMGE	IR,[FIX]
	TLO	T2,ARXSHL
	TRC	T1,(ASH)
	TRNE	T1,773000
	JRST	SCTC
	SKIPL	T1,AR
	TLC	T1,(1B1)
	TLNN	T1,(1B1)
	TLO	PC,AROV+TN1
	JRST	SCTC
SCT2R:	TRO	T,ARSHR2
	TRC	T1,(ILDB)
	TRNE	T1,776000
	TRO	T,MQSHR2
	CAMGE	IR,[FIX]
	TLO	T2,ARXSR2
	JRST	SCTC
SCTC2:	HLRZ	T1,IR
	ANDI	T1,777000
	SKIPN	DSF2#
	JRST	.+3
	TRO	T2,SAFEEN
	MOVEI	S,DST3
	CAIE	T1,112000	;DFMP
	JRST	SCTC3
	TRNN	F,FLAG2
	JRST	[TRO	T2,SAFEEN+SAADD+SAPL1+SAZERO
		MOVEI	S,DFMT3
		JRST	SCTC3]
	TDO	T2,[XWD ADMBEN,SAMI16]
	MOVEI	S,DFMT2
	SETOM	LONGSET
SCTC3:	CAIE	T1,113000	;DFDV
	JRST	SCTC4
	TRNE	F,FLAG2
	JRST	[SKIPE	INTRQ
		JRST	SCTC4
		SETZM	DFDF1
		MOVEI	S,DFDT5
		JRST	SCTC4]
	SETZM	DFDF1
	MOVEI	S,DFDT7
	TRO	T2,SAFEEN
	TRNN	F,FLAG1
	TRO	T2,SAADD+SAZERO+SAPL1
SCTC4:	MOVEI	T3,776000
	AND	T3,T1
	CAIE	T1,(FIX)
	CAIN	T1,(FIXR)
	TLOA	T,ADARPL+ADMAGIC+ADCR36+ADADD
	JRST	.+2
	MOVEI	S,FIXT2
	CAIN	T1,(FLTR)
	TROA	T2,SAMI43
	JRST	.+4
	TLO	T,ADARPL
	MOVEI	S,NRT1
	SETOM	LONGSET
	CAIN	T3,110000	;DFAD
	PUSHJ	P,DFAT1B
	CAIN	T3,(IDPB)
	TLO	T,ADARMI+ADBRPL
	ANDI	T3,774000
	CAIN	T3,(ILDB)
	JRST	.+3
	ANDI	T3,770000
	CAIN	T3,(IMUL)
	MOVEI	S,ET1S
	CAIN	T3,(ASH)
	PUSHJ	P,JFFO2B
	CAIE	T3,(FMP)
	JRST	.+3
	TRO	T2,SAFEEN
	MOVEI	S,FMT2
	CAIE	T3,(FAD)
	CAIN	T3,(FSB)
	JRST	.+3
	CAIE	T1,(UFA)
	POPJ	P,
	TLO	T,ADARPL+ADBRPL+ADADD
	MOVEI	S,FAT4
	SETOM	LONGSET
	POPJ	P,
SUBTTL	TIME PULSE SUBROUTINES	-INDONE-
; **********************************************************************

INDONE:	SKIPE	BYF5
	JRST	INDON1
	HLRZ	T3,IR
	ANDI	T3,774000
	CAIN	T3,134000
	SETOM	BYF5
	CAIN	T3,134000
	SETOM	BYF6
	SKIPE	BYF6
	TLO	PC,BIS
	CAIN	T3,134000
	SETOM	PSINFT
INDON2:	SKIPE	BYF5
	JRST	INDON3
	MOVEI	T3,^D50
	ADDM	T3,TIME
	SETZM	IRLTCH#
INDON3:	SKIPN	RUN#
	JRST	DDTEX
	MOVE	T3,[POINT 4,MB,17]
	MOVEM	T3,FMADREN
	SETOM	CLINSET
	SETZM	MEMWRWT#
	SKIPE	INFTFF
	JRST	INFTS2
	MOVEI	S,IT0
	POPJ	P,

ERR:	0
	HALT

INDON1:	SETZM	BYF5
	MOVE	PC,MA		;?BYTE IN MEMORY BUG FIX
	JRST	INDON2

	XLIST
	IFNDEF	SIMASB,<
	IFDEF	SIMLST,<LIST>
SUBTTL	TIME PULSE SUBROUTINES	-I/O-
TTIO:	MOVEI	T3,TBLK
	LDB	S,[POINT 3,IR,12]
	SKIPN	T1,TTAB(S)
	JRST	IT1DE
	MOVEM	T1,TBLK
	JRST	IT1A

TBLK:	0
	XWD	0,[TTYFD]
	XWD	0,TDISP

TTAB:	0			;BLKI
	XWD	ET1,ABPCEN+PCCHNG+SACINH+SCE	;DATAI
	0			;BLKO
	XWD	ET1,ABPCEN+PCCHNG+SACINH+FCE	;DATAO
	XWD	ET1,ABPCEN+PCCHNG+SACINH	;CONO
	XWD	ET1,ABPCEN+PCCHNG+SACINH+SCE	;CONI
	XWD	ET1,ABPCEN+PCCHNG+SACINH+TCONSX	;CONSZ
	XWD	ET1,ABPCEN+PCCHNG+SACINH+TCONSX	;CONSO

TTAB1:	0
	TDATAI
	0
	TDATAO
	TCONO
	TCONI
	TCONSZ
	TCONSO

TTAB2:	0
	TDTAI
	0
	TDTAO
	TCNO
	TCNI
	TCNSZ
	TCNSO

TTYDI:	TTCALL	2,AD		;INPUT CHAR
	JRST	.+1
	MOVE	T3,TTST
	TRO	T3,40		;SET INPUT DONE
	TRZ	T3,100		;CLEAR INPUT BUSY
	MOVEM	T3,TTST
TTYCMN:	MOVE	AR,AD
	TLO	T,INFTST
	MOVEI	S,ET2S
	POPJ	P,
TTYDO:	TTCALL	1,AR		;OUTPUT CHAR
	MOVE	T3,TTST
	TRO	T3,10		;SET OUTPUT DONE
	TRZ	T3,20		;CLEAR OUTPUT BUSY
	MOVEM	T3,TTST
	JRST	TTYCMN

TTYCO:	HRRZ	T3,AR
	TRZ	T3,773600
	IORM	T3,TTST#
	LSH	AR,-4
	TRZ	AR,777607
	ANDCAM	AR,TTST
	JRST	TTYCMN

TTYCI:	MOVE	AD,TTST
	TTCALL	13,0		;SKIP IF CHAR WAITING
	TRZA	AD,100		;NO CHAR, CLEAR INPUT BUSY
	TRO	AD,100		;CHAR, SET INPUT BUSY
	MOVEM	AD,TTST
	JRST	TTYCMN

TTYCNZ:	MOVE	AD,TTST
	TTCALL	13,0
	TRZA	AD,100
	TRO	AD,100
	MOVEM	AD,TTST
	TRNN	AD,(AR)
	TLO	T,PCCLK
	JRST	TTYCMN+1

TTYCNO:	MOVE	AD,TTST
	TTCALL	13,0
	TRZA	AD,100
	TRO	AD,100
	MOVEM	AD,TTST
	TRNE	AD,(AR)
	TLO	T,PCCLK
	MOVEI	S,ET2S
	POPJ	P,
APRIO:	MOVEI	T3,APRBLK
	LDB	S,[POINT 3,IR,12]
	SKIPN	T1,TTAB(S)	;SAME FETCH ACTIONS, SWITCHES
	JRST	IT1DE		;NO ENTRY
	MOVEM	T1,APRBLK
	JRST	IT1A

APRBLK:	0
	XWD	0,[APRFD]
	XWD	0,TDISP		;SAME ET2 ACTIONS

APRTB1:	0
	ADATAI
	0
	ADATAO
	ACONO
	ACONI
	ACONSZ
	ACONSO

PIIO:	MOVEI	T3,PIBLK
	LDB	S,[POINT 3,IR,12]
	SKIPN	T1,TTAB(S)	;SAME FETCH ACTIONS, SWITCHES
	JRST	IT1DE		;NO ENTRY
	MOVEM	T1,PIBLK
	JRST	IT1A

PIBLK:	0
	XWD	0,[PIFD]
	XWD	0,TDISP		;SAME ET2 ACTIONS

PITAB1:	0
	PDATAI
	0
	PDATAO
	PCONO
	PCONI
	PCONSZ
	PCONSO
PAGIO:	MOVEI	T3,PGBLK
	LDB	S,[POINT 3,IR,12]
	SKIPN	T1,TTAB(S)	;SAME FETCH ACTIONS, SWITCHES
	JRST	IT1DE		;NO ENTRY
	MOVEM	T1,PGBLK
	JRST	IT1A

PGBLK:	0
	XWD	0,[PAGFD]
	XWD	0,TDISP		;SAME ET2 ACTIONS

PAGTB1:	0
	GDATAI
	0
	GDATAO
	PGCONO
	PGCONI
	GCONSZ
	GCONSO
APRDI:	MOVE	AD,SWITCH
	JRST	TTYCMN

APRDO:	MOVEM	AR,APRDWD#	;APR DATAO WORD
	JRST	TTYCMN

APRCO:	MOVEM	AR,APCOWD#	;APR CONO WORD
	JRST	TTYCMN

APRCI:	MOVE	AD,APCIWD#	;APR CONI WORD
	JRST	TTYCMN

APRCNZ:	MOVE	AD,APCIWD
	TDNN	AD,AR
	TLO	T,PCCLK
	JRST	TTYCMN+1

APRCNO:	MOVE	AD,APCIWD
	TDNE	AD,AR
	TLO	T,PCCLK
	JRST	TTYCMN+1

PIDI:	JRST	TTYCMN

PIDO:	MOVEI	T2,"!"		;PRINT !
	TTCALL	1,T2
	MOVE	T2,AR
	MOVEI	T1,^D12
PIDO1:	MOVE	T3,T2
	ROT	T3,3
	ANDI	T3,7
	ADDI	T3,"0"
	TTCALL	1,T3		;PRINT 12 OCTAL DIGITS
	LSH	T2,3
	SOJG	T1,PIDO1
	MOVEI	T2,15		;CR
	TTCALL	1,T2
	MOVEI	T2,12		;LF
	TTCALL	1,T2
	MOVEI	T2,0
	JRST	TTYCMN
PICO:	HRRZM	AR,PICOWD#	;PI CONO WORD
	JRST	TTYCMN

PICI:	MOVE	AD,PICIWD#	;PI CONI WORD
	JRST	TTYCMN

PICNZ:	MOVE	AD,PICIWD
	TDNN	AD,AR
	TLO	T,PCCLK
	JRST	TTYCMN+1

PICNO:	MOVE	AD,PICIWD
	TDNE	AD,AR
	TLO	T,PCCLK
	JRST	TTYCMN+1

PGDI:	MOVE	AD,PGDTWD#	;PAG DATA WORD
	TLZ	AD,400000
	TRZ	AD,400000
	JRST	TTYCMN

PGDO:	MOVEM	AR,PGDTWD	;PAG DATA WORD
	JRST	TTYCMN

PGCO:	MOVEM	AR,PGCOWD#	;PAG CONO WORD
	JRST	TTYCMN

PGCI:	MOVE	AD,PGCIWD#	;PAG CONI WORD
	ADD	AD,PGCOWD
	JRST	TTYCMN

PGCNZ:	MOVE	AD,PGCIWD
	ADD	AD,PGCOWD
	TRNN	AD,(AR)
	TLO	T,PCCLK
	JRST	TTYCMN+1

PGCNO:	MOVE	AD,PGCIWD
	ADD	AD,PGCOWD
	TRNE	AD,(AR)
	TLO	T,PCCLK
	JRST	TTYCMN+1
>
	IFDEF	SIMLST,<LIST>
SUBTTL	TIME PULSE SUBROUTINES	-BLT-
; **********************************************************************

; **********************************************************************
;*BLTT0
; **********************************************************************

BLTT1X:	TDOA	T,[XWD ADBRPL+ADADD+ADPL1B,ABADEN]
BLTT0:	TDO	T,[XWD ADBRPL+ADADD,MQADEN]
	SETOM	LONGSET
	TLO	T2,ADMSKG
	JSP	S,CPOPJ

; **********************************************************************
;*BLTT1
; **********************************************************************

BLTT1:	TRO	T,ARADEN
	MOVE	T1,ADFLGS
	TLNN	T1,CRY0
	JRST	.+4
	SETOM	TRPSAT
	MOVEI	S,BLTT8
	POPJ	P,
	SKIPE	INTRQ
	JRST	BLTT7A
	SETOM	MEMREAD
	MOVEI	T1,"J"
	MOVEM	T1,MEMSIN
	TRO	T,ABABEN
	JSP	S,CPOPJ

; **********************************************************************
;*BLTT2
; **********************************************************************

BLTT2:	TRO	T,BRAREN
	SETOM	CLINSET
	MOVEI	S,MEMST
	POPJ	P,
; **********************************************************************
;*BLTT3
; **********************************************************************

BLTT3:	TRO	T,ABPCEN
	JSP	S,CPOPJ

; **********************************************************************
;*BLTT4
; **********************************************************************

BLTT4:	TRO	T,ABABEN
BLTT9A:	SETOM	CLINSET
	MOVEI	T1,"E"
	MOVEM	T1,MEMSIN
	SETOM	MEMWR
	MOVEI	S,MEMST
	POPJ	P,

; **********************************************************************
;*BLTT5
; **********************************************************************

BLTT5:	TLO	T,ADBRPL
	SETOM	PFF1
	JSP	S,CPOPJ
; **********************************************************************
;*BLTT6
; **********************************************************************

BLTT6:	TRO	T,ARADEN
BLTT7A:	JSP	S,CPOPJ

; **********************************************************************
;*BLTT7
; **********************************************************************

BLTT7:	TRO	T,ARPCEN+ARLARR
	SETOM	FMWRSET
	SETOM	PCP1FF
	SKIPN	PFF1
	JRST	BLTT7B
	TLO	T,ADMAGIC
	SETOM	LONGSET
BLTT7B:	JSP	S,CPOPJ

; **********************************************************************
;*BLTT8
; **********************************************************************

BLTT8:	SETOM	ARMQEN
	TDO	T,[XWD ADARPL,ABADEN+MQADEN]
	SETZM	BLTF1
	JSP	S,CPOPJ

; **********************************************************************
;*BLTT9
; **********************************************************************

BLTT9:	TDO	T,[XWD PCCLK,ABPCEN]
	SKIPE	PFF1
	JRST	.+3
	MOVEI	S,ST1
	POPJ	P,
	SETOM	ARMQEN
	SETOM	MCSPEC
	MOVEI	T1,426
	TLNE	PC,USERF
	MOVEI	T1,USR427
	MOVEM	T1,MCSADR
	JRST	BLTT9A
SUBTTL	REGISTER MIXERS, ETC.
; **********************************************************************

; **********************************************************************
;*BR
; **********************************************************************

BRMIXR:	SETZM	BRMIX
	SETOM	BRCLK#
	TRNN	T,BRAREN
	AOSA	BRCLK
	MOVEM	AR,BRMIX#
	MOVE	T1,AR
	ROT	T1,2
	HRRZ	T2,STATE
	CAIN	T2,DNT2
	DPB	T1,[POINT 1,BRMIX,0]
	MOVE	T3,SCADEN
	TLNN	T3,BRARXE
	POPJ	P,
	SETOM	BRCLK
	MOVE	T1,ARX
	IORM	T1,BRMIX
	POPJ	P,

; **********************************************************************
;*AB
; **********************************************************************

ABMIXR:	MOVE	T1,AB
	TRNE	F,ABPC
	MOVE	T1,PCP1G
	TRNE	F,ABAD
	HRRZ	T1,AD
	TRNE	F,ABAB
	HRRZ	T1,AB#
	MOVEM	T1,AB
	POPJ	P,

; **********************************************************************
;*FM
; **********************************************************************

FMVAL:	SKIPE	FMSINAC
	SETZM	FMADMA
	SKIPL	T1,FMADMA
	LDB	T1,FMADREN
	MOVEI	T1,ACS(T1)
	MOVEM	T1,FMREG
	SETZM	FMSINAC
	POPJ	P,
; **********************************************************************
;*AR
; **********************************************************************

ARMIXR:	SETZB	T1,ARCLK#
	TRNN	T,ARADEN!ARSWAP!ARPCEN!ARFLGS!ARIREN
	JRST	ARMIX1
	SETOM	ARCLK
	TRNE	T,ARLTAD
	HLL	T1,AD
	TRNE	T,ARRTAD
	HRR	T1,AD
	TRNE	T,ARRARL
	HLR	T1,AR
	TRNE	T,ARLARR
	HRL	T1,AR
	TRC	T,ARFLGS
	TRCN	T,ARFLGS
	HLL	T1,PC
	TRC	T,ARPCEN
	TRCN	T,ARPCEN
	HRR	T1,PCP1G
	TRNE	T,ARIREN
	IOR	T1,IR

ARMIX1:	SKIPE	ARSMR#
	PUSHJ	P,ARMIX6
	SKIPE	ARESAEN#
	PUSHJ	P,ARMIX7
	TRNE	T,ARSHLT
	PUSHJ	P,ARLT
	TRNE	T,ARSHRT
	PUSHJ	P,ARRT1
	TRNE	T,ARSHR2
	PUSHJ	P,ARRT2
	TRNE	T,ARCLR
	SETOM	ARCLK
	SKIPN	ARPOSEN
	JRST	ARMIX5
	MOVE	T2,SA
	MOVE	T3,AR
	DPB	T2,[POINT 6,T3,5]
	IOR	T1,T3
	SETOM	ARCLK
ARMIX5:	TRNE	F,FLAG1
	JRST	ARMIX2

ARMIX8:	SKIPE	T2,ARMQEN#
	IOR	T1,MQ

ARMIX3:	SKIPE	ARI08
	TLO	T1,1000
	SETZM	ARI08
	MOVEM	T1,ARMIX#
	JUMPE	T2,CPOPJ

ARMIX4:	SETOM	ARCLK
	POPJ	P,

ARMIX7:	MOVE	T2,SA
	ANDI	T2,377
	TRC	T2,200
	ROT	T2,-11
	IOR	T1,T2
	MOVE	T2,AR
	HLRZ	T3,IR
	TRC	T3,(DFN)
	TRNN	T3,777000
	TLC	T2,(1B0)
	SKIPA
ARMIX6:	SKIPL	T2,AR
	TLZA	T2,377000
	TLO	T2,377000
	IOR	T1,T2
	SETOM	ARCLK
	POPJ	P,

ARMIX2:	HLRZ	T3,IR
	TRC	T3,(IMUL)
	TRNE	T3,770000
	JRST	ARMIX8
	SKIPN	T2,ARMQEN
	JRST	ARMIX3
	MOVE	T2,MQ
	TLNN	AR,(1B0)
	TLZA	T2,(1B0)
	TLO	T2,(1B0)
	IOR	T1,T2
	JSP	T2,ARMIX3

ARLT:	MOVE	T3,SINDEX#
	HRRZ	T2,STATE
	CAIE	T2,DFDT3
	TDZA	T2,T2
	SETOM	T2
	AND	T2,MB
	MOVEM	T2,ARLTEM#
	SKIPE	DSF2
	JRST	ARLT1
	HLRZ	T2,IR
	TRC	T2,(FDV)
	TRNN	T2,770000
	JRST	.+3
ARLT1:	LDB	T2,AR35L(T3)
	IOR	T1,T2
	LDB	T2,AR0L(T3)
	MOVE	T3,AD
	LSH	T3,2
	ROTC	T2,-1
	JRST	ARRT1A

ARRT1:	MOVE	T3,SINDEX
	LDB	T2,AR0R1(T3)
	ROT	T2,-1
	IOR	T1,T2
	LDB	T2,AR1R1(T3)
	MOVE	T3,AD
	LSH	T3,1
	ROTC	T2,-2
ARRT1A:	IOR	T1,T3
	JRST	ARMIX4

ARRT2:	MOVE	T3,SINDEX
	LDB	T2,AR0R2(T3)
	ROT	T2,-1
	IOR	T1,T2
	LDB	T2,AR1R2(T3)
	LDB	T3,AR2R2(T3)
	LSH	T2,1
	IOR	T2,T3
	MOVE	T3,AD
	LSH	T3,1
	ROTC	T2,-3
	JRST	ARRT1A
; **********************************************************************
;*MQ
; **********************************************************************

MQMIXR:	SETZB	T1,MQCLK
	TRNE	T,MQADEN
	PUSHJ	P,MQLTB
	TRNE	T,MQSHLT
	PUSHJ	P,MQLT
	TRNE	T,MQSHRT
	PUSHJ	P,MQRT1
	TRNE	T,MQSHR2
	PUSHJ	P,MQRT2
	TRNE	T,MQCLR
	SETOM	MQCLK
	MOVEM	T1,MQMIX#
	POPJ	P,

MQLT:	MOVE	T3,SINDEX
	SETCAM	AD,NEGAD#
	SKIPN	DSF2
	SETZM	NEGAD
	MOVE	T2,ADX
	SETCAM	T2,NEGADX#
	LDB	T2,MQ35L(T3)
	IOR	T1,T2
	LDB	T2,MQ0L(T3)
	MOVE	T3,MQ
	LSH	T3,2
	ROTC	T2,-1
	MOVE	T2,SINDEX
	CAIN	T2,10		;FP SHIFT
	TLZ	T3,(1B7)
MQLTA:	TDOA	T1,T3
MQLTB:	IOR	T1,AD
	SETOM	MQCLK
	POPJ	P,

MQRT1:	MOVE	T3,SINDEX
	LDB	T2,MQ8R1(T3)
	ROT	T2,-11
	IOR	T1,T2
	LDB	T2,MQ0R1(T3)
	LDB	T3,MQ1R1(T3)
	LSH	T2,1
	IOR	T2,T3
	MOVE	T3,MQ
	LSH	T3,1
	ROTC	T2,-2
	TLZ	T3,(1B8)
	JRST	MQLTA
MQRT2:	MOVE	T3,SINDEX
	LDB	T2,MQ8R2(T3)
	ROT	T2,-11
	IOR	T1,T2
	LDB	T2,MQ9R2(T3)
	ROT	T2,-12
	IOR	T1,T2
	LDB	T2,MQ0R2(T3)
	ROT	T2,-1
	IOR	T1,T2
	LDB	T2,MQ1R2(T3)
	LDB	T3,MQ2R2(T3)
	LSH	T2,1
	IOR	T2,T3
	MOVE	T3,MQ
	LSH	T3,1
	ROTC	T2,-3
	TLZ	T3,(3B9)
	JRST	MQLTA

; **********************************************************************
;*MB
; **********************************************************************

MBMIXR:	MOVE	T3,SCADEN
	SETZB	T1,MBCLK
	TLNE	T3,MBAREN
	PUSHJ	P,MBMIX1
	TLNE	T3,MBFMEN
	PUSHJ	P,MBMIX2
	MOVEM	T1,MBMIX
	POPJ	P,

MBMIX1:	TDOA	T1,AR
MBMIX2:	IOR	T1,@FMREG
	SETOM	MBCLK
	POPJ	P,
; **********************************************************************
;*SC
; **********************************************************************

SCMIXR:	MOVE	T3,SCADEN
	SETZB	T1,SCCLK
	HRREI	T2,1(SC)
	TRNE	F,SCP1IN
	MOVE	T2,SC
	TRNE	T3,SCSCP1
	PUSHJ	P,SCMIX3
	TRNE	T3,SCSHRT
	PUSHJ	P,SCMIX4
	TRNE	T3,SCAREN
	PUSHJ	P,SCMIX5
	TRNE	T3,SCSAEN
	PUSHJ	P,SCMIX1
	MOVEM	T1,SCMIX
	POPJ	P,

SCMIX5:	MOVE	T2,AR
	ANDI	T2,377
	TRNE	AR,1B18
	ORCMI	T2,377
	SKIPA
SCMIX4:	ASH	T2,-1
SCMIX3:	TDO	T1,T2
	SETOM	SCCLK
	POPJ	P,
SCMIX1:	MOVE	T2,SA
	ANDI	T2,777
	TRNE	T2,400
	ORCMI	T2,777
	JRST	SCMIX3
; **********************************************************************
;*ARX
; **********************************************************************

ARXMXR:	SETZB	T1,ARXCLK
	EXCH	T,SCADEN
	TLNE	T,ARXCLR
	SETOM	ARXCLK
	TLNE	T,ARXADX
	PUSHJ	P,ARXMX1
	MOVE	T3,SINDEX
	TLNE	T,ARXSHL
	PUSHJ	P,ARXMX2
	TLNE	T,ARXSHR
	PUSHJ	P,ARXMX3
	TLNE	T,ARXSR2
	PUSHJ	P,ARXMX4
	TLNE	T1,(1B8)
	TLOA	T1,776000
	TLZ	T1,776000
	MOVEM	T1,ARXMIX
	EXCH	T,SCADEN
	POPJ	P,

ARXMX2:	MOVE	T2,ADX
	LSH	T2,1
	IOR	T1,T2
	LDB	T2,ARX35L(T3)
ARXMX5:	TDOA	T1,T2

ARXMX1:	IOR	T1,ADX
	SETOM	ARXCLK#
	POPJ	P,
ARXMX3:	MOVE	T2,ADX
	LSH	T2,-1
	TLZ	T2,777000
	IOR	T1,T2
	LDB	T2,ARX0R1(T3)
	ROT	T2,-11
	JRST	ARXMX5

ARXMX4:	MOVE	T2,ADX
	ASH	T2,-2
	JRST	ARXMX5
; **********************************************************************
;*ADCLK
; **********************************************************************

ADCLK:	TLZ	F,777770
	TDC	F,T
	TLZ	T,777770
	TDC	F,T
	MOVE	T1,SCADEN
	MOVEM	T1,SCADFF#
	TRZE	F,DSF2CLR
	SETZM	DSF2#
	TRZE	F,DSF2SET
	SETOM	DSF2
	POPJ	P,

; **********************************************************************
;*ABCLK
; **********************************************************************

ABCLK:	TRNE	T,ABADEN+ABPCEN+ABABEN	;IF NONE AND
	JRST	.+3
	TLNE	T,INFTST	;INST FETCH START
	TRO	T,ABABEN	;SET ABABEN
	TRNE	T,ABADEN+ABPCEN+ABABEN	;IF ENABLE, CLEAR OTHER FLOPS
	TRZ	F,ABAD+ABAB+ABPC+ABAS
	TRNE	T,ABPCEN	;SET FLOPS
	TRO	F,ABPC
	TRNE	T,ABADEN
	TRO	F,ABAD
	TRNE	T,ABABEN
	TRO	F,ABAB
	POPJ	P,

; **********************************************************************
;*FMWR
; **********************************************************************

FMWR:	SKIPL	T1,FMADMA
	LDB	T1,FMADREN
	MOVEI	T1,ACS(T1)
	CAME	T1,FMREG
	JSR	ERR
	MOVEM	AR,(T1)
	SKIPE	SACBRFF
	MOVEM	BR,(T1)
	POPJ	P,
; **********************************************************************
;*TIMCAL
; **********************************************************************

TIMCAL:	MOVE	T2,LONGTM
	SKIPGE	T3,SCADFF
	MOVE	T2,DPADTM
	JUMPL	T3,TIMC1
	TRNN	F,LNGCYC
	MOVE	T2,ADTIME
	TLNN	F,ADADD
	TRNE	T3,SAADD
	JRST	TIMC1
	MOVE	T2,ADTIME
	TRNN	F,LNGCYC
	MOVE	T2,VERTIM
TIMC1:	ADDM	T2,TIME
	POPJ	P,

; **********************************************************************
;*MPYFCN
; **********************************************************************

MPYFCN:	PUSH	P,T2
	PUSHJ	P,MQMIXR
	POP	P,T2
	MOVE	T1,MQMIX
	TRNE	F,FLAG1
	ADDI	T1,1
	ANDI	T1,3
	JRST	.+1(T1)
	POPJ	P,
	JRST	MPYFN1
	JRST	MPYFN2
	TRO	F,FLAG1
MPYFN5:	TLO	T,ADBRMI+ADADD+ADCR36
	TLO	T2,ADXFMM
	JRST	MPYFN4

MPYFN2:	TLOA	T,ADADD
MPYFN1:	TLOA	T,ADBRPL+ADADD
	TLOA	T2,ADXFM2+ADBRP2
	TLO	T2,ADXFMP
MPYFN3:	TRZ	F,FLAG1
MPYFN4:	TLNN	IR,(1B3)
	TLO	T2,ADXADD
	POPJ	P,
SUBTTL	SHIFT CONNECTIONS
; **********************************************************************

	DEFINE	PT(ADR,BIT)
<	POINT	1,ADR,BIT>

AR0L:	PT AD,1
	PT AD,1
	PT AD,1
	PT AD,1
	PT AR,0
	PT AR,0
	PT AD,1
	0
	PT AD,1
	0
	PT AD,1

AR35L:	0
	PT AR,0
	PT MQ,0
	PT MQ,0
	0
	PT MQ,1
	PT MQ,0
	PT MQ,1
	PT MQ,8
	PT ARLTEM,35
	PT MQ,1

AR0R1:	0
	PT AR,35
	PT MQ,35
	0
	PT AR,0
	PT AR,0
	.-.			;DON'T CARE CONDITION
	0
	PT ADOVF,35
	.-.
	.-.

AR0R2:	0
	PT AR,34
	PT MQ,34
	0
	PT AR,0
	PT AR,0
	PT ADOVF,34
	0
	PT ADOVF,34
	.-.
	.-.
AR1R2:	0
	PT AR,35
	PT MQ,35
	0
	PT AR,0
	PT AR,0
	PT ADOVF,35
	PT ADX,34
	PT ADOVF,35
	.-.
	.-.

AR1R1:
AR2R2:	PT AD,0
	PT AD,0
	PT AD,0
	PT AD,0
	PT AD,0
	PT AD,0
	PT AD,0
	PT ADX,35
	PT AD,0
	.-.
	.-.

ARX35L:	.-.
	.-.
	.-.
	.-.
	.-.
	.-.
	.-.
	PT AD,1
	.-.
	PT ADPR,1
	.-.

ARX9R2:
ARX0R1:	.-.
	.-.
	.-.
	.-.
	.-.
	.-.
	.-.
	PT ADX,7
	.-.
	0
	.-.
MQ0L:	PT MQ,1
	.-.
	PT MQ,1
	PT MQ,1
	.-.
	PT AD,0
	PT MQ,1
	0
	.-.
	PT MQ,1
	.-.

MQ0R2:	.-.
	.-.
	PT AD,34
	PT AD,34
	.-.
	PT AD,0
	PT AD,34
	0
	.-.
	.-.
	.-.

MQ1R2:	.-.
	.-.
	PT AD,35
	PT AD,35
	.-.
	PT AD,34
	PT AD,35
	PT AD,34
	.-.
	.-.
	.-.

MQ0R1:	.-.
	.-.
	PT AR,35
	PT AR,35
	.-.
	PT AD,0
	.-.
	0
	.-.
	0
	.-.
MQ1R1:	.-.
	.-.
	PT MQ,0
	PT MQ,0
	.-.
	PT AD,35
	.-.
	PT AD,35
	.-.
	PT ARX,35
	.-.

MQ2R2:	.-.
	.-.
	PT MQ,0
	PT MQ,0
	.-.
	PT AD,35
	PT MQ,0
	PT AD,35
	.-.
	.-.
	.-.

MQ35L:	0
	.-.
	PT AR,0
	0
	.-.
	0
	.-.
	0
	PT NEGAD,0
	PT NEGADX,8
	PT NEGAD,0
MQ8R2:	.-.
	.-.
	PT MQ,6
	PT MQ,6
	.-.
	PT MQ,6
	PT MQ,6
	PT MQ,6
	PT AD,34
	.-.
	.-.

MQ9R2:
MQ8R1:	.-.
	.-.
	PT MQ,7
	PT MQ,7
	.-.
	PT MQ,7
	PT MQ,7
	PT MQ,7
	PT AD,35
	PT MQ,7
	.-.
SUBTTL	MEMORY CONTROL SUBROUTINES
; **********************************************************************

; **********************************************************************
;*MEMST
; **********************************************************************

MEMST:	SETZM	STINAC
	MOVE	T1,TIME
	ADDI	T1,PAGDLY
	CAMGE	T1,MAMAOFF
	MOVE	T1,MAMAOFF
MEMSTA:	MOVE	MA,AB
	SKIPE	MCSPEC
	MOVE	MA,MCSADR
	MOVE	S,AB
	SKIPE	MCSPEC
	MOVE	S,MCSADR
	CAIGE	S,20
	JRST	ACREF
	ANDI	S,3
	ADDI	T1,^D82
	SKIPE	FCE2ST
	JRST	MEMST5
	SKIPE	INSYNC
	JRST	MEMST5
MEMST6:	MOVE	T3,MEMDONE#
	SKIPE	MEMREAD
	JRST	MEMST1
	MOVEM	T1,TIME
	CAMGE	T3,RDRST
	MOVE	T3,RDRST
	ADDI	T3,^D70
	CAIGE	T1,T3
	MOVE	T1,T3
MEMSTB:	CAMGE	T1,MEMCMP(S)
	MOVE	T1,MEMCMP(S)
	ADD	T1,ACKDLY(S)
	MOVEM	T1,MEMWRWT
	SKIPE	INSYNC
	PUSHJ	P,MEMST7
	MOVE	T3,T1
	ADDI	T3,^D60
	MOVEM	T3,MAMAOFF#
	ADD	T1,WARN(S)
	ADD	T1,CYCLE(S)
	ADDI	T1,WARNDLY
	MOVEM	T1,MEMCMP(S)
MEMST4:	MOVE	T1,MEMSIN
	HRRZ	S,MEMRET-"A"(T1)
	SETZM	MEMWR
	POPJ	P,

MEMST5:	MOVE	T3,T1
	ADDI	T3,^D155	;100(PG RDY)+30(IN SYNC)+25(AB PROP)
	MOVEM	T3,INSYNC
	JRST	MEMST6

MEMST7:	MOVE	T3,T1
	ADDI	T3,^D60
	CAMGE	T3,INSYNC
	MOVE	T3,INSYNC
	ADDI	T3,^D25
	MOVEM	T3,INSYNC
	POPJ	P,

MEMST1:	ADDI	T3,^D50
	CAIGE	T1,T3
	MOVE	T1,T3
	CAMGE	T1,MEMCMP(S)
	MOVE	T1,MEMCMP(S)
	SKIPLE	MEMFLG(S)
	JRST	MEMST3
	SKIPE	MEMFLG(S)
	JRST	MEMST2
	MOVE	T3,WARNED#
	ADDI	T3,^D50
	CAMGE	T1,T3
	MOVE	T1,T3
MEMST2:	ADD	T1,ACKDLY(S)
	SKIPE	INSYNC
	PUSHJ	P,MEMST7
	MOVE	T3,T1
	ADDI	T3,^D60
	MOVEM	T3,MAMAOFF
	ADD	T1,WARN(S)
	MOVEM	T1,WARNED
	ADDI	T1,WARNDLY
	MOVEM	T1,RDRST#
	MOVEM	T1,TIME
	SKIPLE	MEMFLG(S)
	MOVEM	T1,MEMDONE
	SKIPE	MEMWR
	MOVEM	T1,MEMWRWT
	ADD	T1,CYCLE(S)
	MOVEM	T1,MEMCMP(S)
	SKIPE	MCSPEC
	SKIPA	T1,MCSADR
	MOVE	T1,AB
	MOVEM	T1,AB
	SETZM	MCSPEC
	MOVE	MB,OFFSET(T1)
	MOVE	T1,MEMSIN
	HRRZ	S,MEMRET-"A"(T1)
	SKIPL	MEMRET-"A"(T1)
	MOVE	AR,MB
	SKIPE	FCE2ST#
	JRST	FCE2M

	SKIPE	INSYNC
	SKIPE	MEMWR
	JRST	MEMST8
	CAIE	T1,"C"
	JRST	INFT3
	SETCM	T1,@INSTPT
	TRNE	T1,FCE+SCE
	JRST	INFT3
	JRST	MEMST8
FCE2SY:	SETZM	FCE2W
	SKIPE	FCE2ST
	PUSHJ	P,FCE2S1
	MOVE	T1,INRDY
	CAMG	T1,TIME
	MOVE	T1,TIME
	ADD	T1,VERTIM
	MOVEM	T1,TIME
	POPJ	P,

; **********************************************************************
;*ACREF
; **********************************************************************

ACREF:	SKIPN	INSYNC
	JRST	ACREF2
	MOVE	T3,PCP1G
	MOVEM	T3,AB
	PUSHJ	P,INFT3A
ACREF2:	SKIPE	MEMREAD
	JRST	ACREF1
	ADDI	T1,^D55
	MOVEM	T1,TIME
	SETOM	STINAC
	JRST	MEMST4

ACREF1:	ADDI	T1,^D260
	MOVEM	T1,TIME
	MOVE	T1,MEMSIN
	SKIPL	MEMRET-"A"(T1)
	MOVE	AR,ACS(S)
	CAIE	T1,"C"
	JRST	ACREF3
	SETZM	PSINFT
	SETCM	T3,@INSTPT
	TRNE	T3,FCE+SCE

ACREF3:	SKIPE	MEMWR
	SETOM	STINAC
	SKIPGE	MEMRET-"A"(T1)
	MOVE	MB,ACS(S)
	HRRZ	S,MEMRET-"A"(T1)
	SKIPE	FCE2ST
	JRST	FCE2M
MEMST8:	SETZM	MEMREAD
	SETZM	MEMWR
	POPJ	P,

MEMST3:	MOVE	T3,RDRST
	ADDI	T3,^D50
	CAMGE	T1,T3
	MOVE	T1,T3
	JRST	MEMST2

; **********************************************************************
;*INFTSB
; **********************************************************************

INFTSB:	SKIPE	MEMWRWT
	JRST	INFTS1
	MOVEI	T1,20
	SKIPN	STINAC
	CAMLE	T1,AB
	JRST	INFTS3
INFTS2:	SKIPE	XCTF
	JRST	.+3
	SKIPN	PSINFT
	HRR	PC,AB
	SETZM	XCTF
	SKIPN	PSINFT
	SETZM	PCP1FF
	SETZM	INFTFF
	SETZM	PSINFT
	MOVEI	T1,"A"
INFT2A:	MOVEM	T1,MEMSIN
	PUSH	P,TIME
	MOVEI	T1,^D100
	ADDM	T1,TIME
	SETOM	MEMREAD
	PUSHJ	P,MEMST
	MOVE	T1,TIME
	MOVEM	T1,INRDY
	POP	P,TIME
	POPJ	P,
INFT3A:	SETOM	INFTFF
INFT3B:	SETZM	INSYNC

INFTS1:	TRZ	F,ABPC+ABAD+ABAS
	TRO	F,ABAB
	POPJ	P,

INFTS3:	SKIPE	PSINFT
	SETZM	INFTFF
	SETZM	PSINFT
	JRST	INFTS1
; **********************************************************************
;*WRRST
; **********************************************************************

WRRST:	SKIPE	MCSPEC
	MOVE	MA,MCSADR
	SETZM	MCSPEC
	MOVEM	AR,OFFSET(MA)
	MOVE	T1,TIME
	MOVEM	T1,MEMDONE
	MOVE	T3,MA
	ANDI	T3,3
	ADD	T1,WRCYC(T3)
	CAML	T1,MEMCMP(T3)
	MOVEM	T1,MEMCMP(T3)
	SETZM	MEMWRWT
	SKIPN	INSYNC
	POPJ	P,

INFT3:	HRRZ	T1,PCP1G
	SKIPE	MCSPEC
	MOVE	T1,MCSADR
	MOVEM	T1,AB
	CAIGE	T1,20
	JRST	INFT3A
	SKIPE	XCTF
	JRST	.+3
	SKIPN	PSINFT
	HRR	PC,AB
	SETZM	XCTF
	SKIPN	PSINFT
	SETZM	PCP1FF
	SETZM	PSINFT
	MOVEI	T1,"A"
INFT3C:	MOVEM	T1,MEMSIN
	SETOM	MEMREAD
	SETZB	T1,MEMWR
	EXCH	T1,INSYNC
	SUBI	T1,^D82
	PUSH	P,S
	PUSH	P,TIME
	PUSHJ	P,MEMSTA
	MOVE	T1,TIME
	MOVEM	T1,INRDY
	POP	P,TIME
INFT3D:	POP	P,S
	POPJ	P,
FCE2M:	HRRZM	AD,AB
	TRNN	AD,777760
	JRST	INFT3B
	SETZM	FCE2ST
	MOVEI	T1,"I"
	JRST	INFT3C

FCE2S1:	SETZM	FCE2ST
	MOVEI	T1,"I"
	PUSH	P,S
	PUSHJ	P,INFT2A
	JRST	INFT3D

MEMWSS:	SKIPE	STINAC
	POPJ	P,
	PUSH	P,S
	MOVE	S,MA
	ANDI	S,3
	MOVE	T1,TIME
	ADDI	T1,^D75
	PUSHJ	P,MEMSTB
	POP	P,S
	POPJ	P,
MEMCMP:	BLOCK	4		;LAST COMPLETION TIME
CYCLE:	REPEAT	4,<^D500>	;RD RST TO END OF CYCLE
WARN:	REPEAT	4,<0>		;ADR ACK TO WARN
ACKDLY:	REPEAT	4,<^D150>	;START TO ADR ACK
MEMFLG:	REPEAT	4,<0>		;MEM TYPE
WRCYC:	REPEAT	4,<^D500>	;TIME WRITE CYCLE COMPLETES

VERTIM:	^D110			;STRAIGHT THRU TIME (NO ADD)
ADTIME:	^D170			;FULL ADD TIME (NS)
LONGTM:	^D230			;ADD TIME PLUS AD=0 GATING
DPADTM:	^D230			;63-BIT ADD TIME

MEMRET:	SETZ	IT0
		FT4
		FT6
		ERR
		ST1
		ET1S
		ERR
		ERR
	SETZ	FCE2SY
		BLTT3
		FT8

	IFNDEF	ONEPRT,<
	LIT
	VAR
	END	30000	>
LIST