ER[DBEG0];	*INSERTED BY DBEG AND DGIB

%THIS FILE ASSEMBLES A BASE OF SUBROUTINES USED BY DG0, DG1, AND DGP.
WHEN AN ERROR IS DETECTED, EITHER "CBRK" IS CALLED OR THE "BREAK" MACRO
IS EXECUTED.  CURRENTLY, BREAK IS DEFINED TO BE THE BREAKPOINT BIT,
WHICH IS SUPPOSED TO STOP THE MICROPROCESSOR AND INTERRUPT THE NOVA.
%

M[BREAK,(BRKP[1]FRZBALUBC)];

SM[SLC,20]; SM[VSLC,200]; LM[LLC,20]; RM[RLC,10];


RVN[R7]; RVN[R10]; RVN[R11]; RVN[R12]; RVN[R13]; RVN[R14]; RVN[R15];
RVN[R16]; RVN[R37];

LVN[L7]; LVN[L10]; LVN[L11]; LVN[L12]; LVN[L13]; LVN[L14]; LVN[L15]; LVN[L37];

SVN[STEMP]; SVN[STEMP1]; SVN[STEMP2]; SVN[STEMP3]; SVN[STEMP4]; SVN[STEMP5];
MC[G,G]; MC[H,H]; MC[J,J]; MC[K,K]; MC[CUM,CUM]; SVN[COUNT];
SVN[IADR]; MC[OVF&G,OVF,G]; MC[PC0&G,PC0,G];
SV[77S,77]; SV[44S,44]; SV[-1S,777777 777777]; MC[IENABLE&G,IENABLE,G];

MCYCLE:	BRKP[1], GOTO[.+2]; *ALL DIAG. EXCEPT "DGIML" LOOP HERE
START:	COUNT←ARM←NULL, INHINT;
	IRET, P←MDR, INHINT;
	MDR←P+1, INHINT, GOTO[BEG1];

PQCOMP:	P#Q;
AZT:	RETURN[ALU=0];
CBRK:	BRKP[1], FRZBALUBC, RETURN;	*GET PROBLEM ADDRESS FROM STACK
RETN:	RETURN;

PEQZ:	P=Q, GOTO[AZT];
QZT:	AQ, GOTO[AZT];
NQZT:	Q←NOT Q, GOTO[AZT];
PZT:	Q←P, GOTO[AZT];
NPZT:	Q←NOT P, GOTO[AZT];

*ROUTINES FOR CYCLING Q LEFT A NUMBER OF POSITIONS
QLCY43:	Q LCY 1, P←B, B←P;
QLCY42:	Q LCY 1, P←B, B←P;
QLCY41:	Q LCY 1, P←B, B←P;
QLCY40:	Q LCY 1, P←B, B←P;
QLCY37:	Q LCY 1, P←B, B←P;
QLCY36:	Q LCY 1, P←B, B←P;
QLCY35:	Q LCY 1, P←B, B←P;
QLCY34:	Q LCY 1, P←B, B←P;
QLCY33:	Q LCY 1, P←B, B←P;
QLCY32:	Q LCY 1, P←B, B←P;
QLCY31:	Q LCY 1, P←B, B←P;
QLCY30:	Q LCY 1, P←B, B←P;
QLCY27:	Q LCY 1, P←B, B←P;
QLCY26:	Q LCY 1, P←B, B←P;
QLCY25:	Q LCY 1, P←B, B←P;
QLCY24:	Q LCY 1, P←B, B←P;
QLCY23:	Q LCY 1, P←B, B←P;
QLCY22:	Q LCY 1, P←B, B←P;
QLCY21:	Q LCY 1, P←B, B←P;
QLCY20:	Q LCY 1, P←B, B←P;
QLCY17:	Q LCY 1, P←B, B←P;
QLCY16:	Q LCY 1, P←B, B←P;
QLCY15:	Q LCY 1, P←B, B←P;
QLCY14:	Q LCY 1, P←B, B←P;
QLCY13:	Q LCY 1, P←B, B←P;
QLCY12:	Q LCY 1, P←B, B←P;
QLCY11:	Q LCY 1, P←B, B←P;
QLCY10:	Q LCY 1, P←B, B←P;
QLCY7:	Q LCY 1, P←B, B←P;
QLCY6:	Q LCY 1, P←B, B←P;
QLCY5:	Q LCY 1, P←B, B←P;
QLCY4:	Q LCY 1, P←B, B←P;
QLCY3:	Q LCY 1, P←B, B←P;
QLCY2:	Q LCY 1, P←B, B←P;
	Q LCY 1, P←B, B←P, RETURN;

*ROUTINES TO PRODUCE 2↑N-1.	CALLED WITH Q←-1
Q0:	Q←A0, RETURN;
Q1:	Q RSH 1;
Q2:	Q RSH 1;
Q3:	Q RSH 1;
Q4:	Q RSH 1;
Q5:	Q RSH 1;
Q6:	Q RSH 1;
Q7:	Q RSH 1;
Q10:	Q RSH 1;
Q11:	Q RSH 1;
Q12:	Q RSH 1;
Q13:	Q RSH 1;
Q14:	Q RSH 1;
Q15:	Q RSH 1;
Q16:	Q RSH 1;
Q17:	Q RSH 1;
Q20:	Q RSH 1;
Q21:	Q RSH 1;
Q22:	Q RSH 1;
Q23:	Q RSH 1;
Q24:	Q RSH 1;
Q25:	Q RSH 1;
Q26:	Q RSH 1;
Q27:	Q RSH 1;
Q30:	Q RSH 1;
Q31:	Q RSH 1;
Q32:	Q RSH 1;
Q33:	Q RSH 1;
Q34:	Q RSH 1;
Q35:	Q RSH 1;
Q36:	Q RSH 1;
Q37:	Q RSH 1;
Q40:	Q RSH 1;
Q41:	Q RSH 1;
Q42:	Q RSH 1;
Q43:	Q RSH 1, RETURN;

QL3:	Q LSH 1;
QL2:	Q LSH 1;
QL1:	Q LSH 1, RETURN;


BEG1:;