INSERT[D1LANG]; INSERT[ALUD1]; TITLE[D1TEST1]; *THIS FILE IS A TEST OF THE MICROASSEMBLER MP[BIT0,100000]; MP[BIT4,4000]; MP[BIT10,200]; MP[BIT14,10]; MP[BIT1, 40000]; MP[BIT5,2000]; MP[BIT11,100]; MP[BIT15, 4]; MP[BIT2, 20000]; MP[BIT6,1000]; MP[BIT12, 40]; MP[BIT16, 2]; MP[BIT3, 10000]; MP[BIT7, 400]; MP[BIT13, 20]; MP[BIT17, 1]; SP[LEFTHALF,BIT0,BIT1,BIT2,BIT3,7000,BIT7]; NSP[RIGHTHALF,BIT0,BIT1,BIT2,BIT3,BIT4,3400]; RMREGION[RGN1]; RESERVE[2]; RVN[RTEMP1]; RVN[RTEMP2]; RV[BLAST,BIT1,BIT2,BIT4,BIT6,BIT10,BIT12]; RV[LFTHLF,LEFTHALF]; RV[RTHLF,RIGHTHALF]; RVN[SVLINK]; RVN[R1A]; RVN[R1B]; RV[R1C,BIT1]; RVN[R1D]; RVN[R1E]; RVN[R1F]; RVN[R1G]; RVN[R1H]; RMREGION[RGN2]; RESERVE[2]; RVN[RTEMP3]; RVN[RTEMP4]; RV[FOO,20,BIT2,BIT17]; RVREL[RSV0,0]; RVREL[RSV1,1]; MC[MIDDLE,BIT4,BIT5,BIT6,BIT7,377]; MSC[TWO,2]; MSC[SIX,BIT16,BIT15]; NMC[LFOUR,RIGHTHALF,BIT4,BIT5,BIT6,BIT7]; DEVICE[DSP,123]; BR[MDS,0]; BR[L,1]; BR[G,2]; TOP LEVEL; *ASSEMBLY OF CONSTANTS, SMALL CONSTANTS, RM_, T_, AND A LITTLE ALU STUFF START: T_LFOUR, GLOBAL; RBASE_RBASE[RGN1]; BRNCH0: RTEMP2_MIDDLE; BRNCH1: RTEMP1_(RTEMP1) OR (34C); BRNCH2: T_ID OR (BLAST); BRNCH4: CNT_2S; BRNCH3: RTEMP1_T_177400C; BRNCH6: RTEMP1_MD, T_(RTEMP1) OR (1000C); BRNCH9: T_MD, RTEMP1_(RTEMP1) OR (3377C); BRNCH8: RTEMP1_((RTEMP1) AND NOT T) RSH 1; BRNCH7: RTEMP3_RTEMP1; RTEMP1_T_MD; *BRANCHING CLAUSES BRNCH: GOTO[.+2,ALU<0], WAKEUP[FLT]; BRANCH[.+1]; T_ID, GOTO[BRNCH,R ODD]; BRANCH[BRNCH], RSV0_NOT(LINK); BRANCH[BRNCH], RSV1_TIOA&STKP; SUBROUTINE; CORETURN, T_MD, TISID, RSV0_T; * SCORETURN[ALU=0]; RETURN, RSV0_SHC; TOPLEVEL; CALL[START], STORE_RSV0, DBUF_Q; CALL[START], T_POINTERS; BRANCH[.+1], T_Q; BRANCH[.+2,ALU>=0], T_ID OR (Q); DBLBRANCH[BRNCH4,BRNCH5,ALU=0], T_ID OR (MD); GOTO[BRNCH2,ALU#0], T_(RSV0) OR Q; GOTO[BRNCH3,R EVEN]; DBLGOTO[BRNCH6,.+2,R EVEN,R>=0]; BRANCH[.+1]; * DBLCALL[BRNCH7,BRNCH8,CARRY',CNT=0&-1]; SET[XTASK,1]; GOTO[.+2,IOATTEN',ALU<0]; BRANCH[.+1]; BRANCH[.+1]; SET[XTASK,0]; IFUJUMP[0]; IFUJUMP[3,R ODD]; IFUJUMP[3]; RDTPC_T; RDTPC_EMU; LDTPC_T; LDTPC_FLT; SUBROUTINE; BRNCH5: RETURN; RETURN[ALU=0]; TOP LEVEL; IMLHR0POK_T; IMLHR0PBAD_T; IMLHR0'POK_T; IMLHR0'PBAD_T; IMRHBPOK_T; IMRHBPBAD_T; IMRHB'POK_T; IMRHB'PBAD_T; *ALU OPERATIONS TALU0: RTEMP1_A0; T_A1; TALU1: RTEMP1_T; RTEMP1_T, B_RTEMP1; T_RTEMP1; T_RTEMP1, B_177401C; T_NOT(RTEMP1); T_NOT(RTEMP1), B_177777C; T_NOT T; T_NOT T, B_MD; T_(17S)+(T); T_NOT(17S); T_(RTEMP1) AND (177400C); T_Q OR MD; T_(ID) OR (MD); T_(RTEMP1) OR (PCX'); T_T#(RTEMP1); T_(RTEMP1)#T; T_(RTEMP1)#(T); T_(T)#(RTEMP1); T_T#MD; T_T+MD; T_T+(RTEMP1); TALU2: T_T # (PIPE1); T_T#(PIPE1); T_T XOR (PIPE1); T_(T) XOR (PIPE1); T_T+(PCX'); T_(RTEMP1), XORCARRY; T_NOT T; T_NOT(RTEMP1); T_NOT T; T_NOT T; T_NOT ID; T_NOT ID; SET[TIMTAB,101]; DATA[(TIMD: BYT0[BIT10,BIT7] BYT1[BIT11] BYT2[BIT12] BYT3[BIT13] AT[TIMTAB])]; DATA[(BYT0[BIT7] BYT1[BIT15] BYT2[BIT13] BYT3[BIT14] AT[TIMTAB,1])]; TDISP: T_BIGBDISPATCH_RTEMP1; RTEMP1_T, MULTIPLY; BDISPATCH_T; TAMUX: T_T, B_Q; *SHOULD USE ASEL T_ID; *SHOULD USE ASEL T_RTEMP1, B_34C; *SHOULD USE ASEL A_T, B_Q, RTEMP1_SHIFTNOMASK; *SHOULD USE FF FOR T A_RTEMP1, B_Q, RTEMP1_SHIFTLMASK; *SHOULD USE FF FOR RTEMP1 A_RTEMP1, B_Q, RTEMP1_SHIFTRMASK; *SHOULD USE FF FOR RTEMP1 T_SHIFTBOTHMASKS[RTEMP1]; A_Q, RTEMP1_SHMDLMASK, GOTO[TAMUX,ALU>=0]; A_MD, RTEMP1_SHMDBOTHMASKS; T_XSHIFTNOMASK; T_XSHIFTRMASK; T_XSHIFTLMASK; T_XSHIFTBOTHMASKS; T_XSHMDRMASK; T_XSHMDLMASK; T_XSHMDBOTHMASKS; TNEWSH: RTEMP1_LSH[T,0]; RTEMP1_LSH[T,1,MD]; RTEMP1_LSH[RTEMP1,2,0]; T_LSH[RTEMP1,17]; RTEMP1_RSH[T,0]; RTEMP1_RSH[RTEMP1,17]; RTEMP1_RCY[T,RTEMP1,0]; RTEMP1_RCY[RTEMP1,T,13]; T_LCY[T,RTEMP1,0]; T_LCY[RTEMP1,T,17]; T_LDF[T,1,13,MD]; T_LDF[RTEMP1,1,13,MD]; T_LDF[RTEMP1,17,1]; RTEMP1_LDF[RTEMP1,2,12]; BRANCH[.+1]; RTEMP1_DPF[RTEMP1,2,12]; RTEMP1_DPF[RTEMP1,2,12,MD]; T_DPF[T,1,13]; T_DPF[T,15,2,0]; TFF20: T_T-(RTEMP1)-1, XORCARRY; T_T-(RTEMP1)-1, XORSAVEDCARRY; T_T+1, CARRY20; TFF30: T_INPUT; T_INPUTNOPE; FETCH_T, T_RTEMP1, RISID; FETCH_RTEMP1, T_T, TISID; OUTPUT_T; FLIPMEMBASE; TFF70: BIGBDISPATCH_T; BDISPATCH_T; MULTIPLY; Q_LINK; T_RTEMP1_MD; FREEZEBC; NOFF; KNOWRBASE[RGN1]; TASEL: RBASE_RBASE[RTEMP1]; T_(RTEMP1) OR T, DIVIDE; MULTIPLY; MEMBX_0S; MEMBX_3S; MEMBASE_10S; MEMBASE_30S; MEMBASE_L; MEMBASE_G; MEMBASEX_L; *THESE FIRST FOUR SHOULD LEAVE FA[X] FOR RTEMP1 FETCH_RTEMP1; STORE_RTEMP1, DBUF_T; T_(FETCH_T), XORCARRY; STORE_T, DBUF_377C; T_(FETCH_Q), XORCARRY; T_(FETCH_MD), XORCARRY; T_(FETCH_ID), XORCARRY; XORCARRY, T_(STORE_Q); XORCARRY, T_(STORE_MD); XORCARRY, T_(STORE_ID); SET[XTASK,14]; IOSTORE_RTEMP1; IOFETCH_RTEMP1; BLOCK; SET[XTASK,0]; IFETCH_RTEMP1; LONGFETCH_T, B_RTEMP1; FETCH_RTEMP1, FREEZEBC; FETCH_0S; FETCH_17S; PREFETCH_RTEMP1; PREFETCH_T; PREFETCH_Q; MAP_RTEMP1, MAPBUF_T; MAP_T, T_MAPBUF_RTEMP1; MAP_MD, MAPBUF_T; MAP_Q, MAPBUF_Q; FLUSH_T; FLUSH_RTEMP1; FLUSH_MD; FLUSH_RTEMP1; DUMMYREF_RTEMP1; T_1S; SET[XTASK,1]; Q_T; Q_RTEMP1; Q_MD; TFF100: PCF_T; IFUTEST_T; IFUTICK; MEMBASE_T; RBASE_T; POINTERS_T; TFF120: LOADTESTSYNDROME; LOADMCR[T,RTEMP1]; BRLO_T; BRHI_T; PROCSRN_Q; CFLAGS_T; TFF130: MOS_T; GENOUT_T; RESCHEDULE; NORESCHEDULE; IFUMRH_T; IFUMLH_T; IFURESET; BRKINS_T; TFF140: USEDMD; MIDASSTROBE_T; TASKINGOFF; TASKINGON; STKP_Q; STKP_T; STKP_MD; STKP_B; STKP_RTEMP1; RESTORESTKP; CNT_Q; CNT_MD; CNT_T; CNT_RTEMP1; CNT_B; LINK_Q; TFF150: Q LSH 1; Q RSH 1; TIOA_Q; HOLD&TASKSIM_Q; WF_T; RF_T; SHC_Q; TFF160: T_FAULTINFO'; T_PIPE0; T_VAHI; T_PIPE1; T_VALO; T_PIPE2'; T_PIPE3'; T_MAP'; T_PIPE4'; T_ERRORS'; T_CONFIG'; T_PIPE5'; TFF170: T_JUNK'; T_IFUMRH'; T_IFUMLH'; T_(T)+(PCX'); T_DBUF; T_RWCPREG; T_LINK; TFF200: RBASE_0S; RBASE_RBASE[RTEMP1]; TIOA[DSP]; MEMBASEX_0S; MEMBASEX_3S; MEMBX_0S; MEMBX_3S; TFF260: T_(ALUFMRW_RTEMP1),ALUF[17]; T_(ALUFMRW_T), ALUF[0]; T_(ALUFMRW_Q), ALUF[16]; T_(ALUFMRW_MD), ALUF[17]; T_(ALUFMRW_B); T_ALUFMEM, ALUF[3]; T_CNT; T_POINTERS; T_TIOA&STKP; T_SHC; TFF270: T_(RTEMP1) RSH 1; T_(T) RSH 1; SET[XTASK,0]; T_(ID) RSH 1; SET[XTASK,1]; T_(MD) RSH 1; T_(PD_Q) RSH 1; T_(RTEMP1) RCY 1; T_(RTEMP1) BRSH 1; DIVIDE; RTEMP1_(RTEMP1) XOR T, CDIVIDE; T_(T) LSH 1; T_(T) ARSH 1; TFF>277: MEMBASE_0S; MEMBASE_37S; MEMBASE_L; MEMBASE_G; CNT_3S; CNT_20S; CNT_1S; *New form of NOTIFY WAKEUP[FLT]; WAKEUP[EMU]; BRANCH[.+1]; TH3LIT: T_25H; T_0H; T_13H; T_1H; T_31H; T_7H; T_14H; T_214H; T_222H; T_22H; T_35H; T_27H; T_23H; T_33H; T_200H; T_36H; BRANCH[.+1]; SET[XTASK,0]; TSTKP: STKP_STKP+1, BREAKPOINT; STKP_STKP-1; STKP_STKP-2; STACK_T; STACK&+1_T; STACK&-1_T; STACK&-2_T; STACK-4_T; STACK-3_T; STACK-2_T; STACK-1_T; STACK+1_T; STACK+2_T; STACK+3_T; T_STACK; T_STACK&-1; T_STACK&+1; T_STACK&+3; T_STACK&+2; T_STACK&-3; T_STACK&-4; T_STACK&-2, BRANCH[.]; INSSET[0,1]; IFUREG[0,2,MDS,TFF150,17,1,0]; *LENGTH=2, NO N, SIGN-EXTEND, NO-PA IFUJMP[1,2,L,TFF150,0]; *LEN=2, NO N, NO-SIGN-EXTEND, NO-PA IFUJMP[2,1,L,TFF150,177740]; IFUJMP[3,1,L,TFF150,37]; IFUPAUSE[4,3,MDS,TFF150,1,1,1]; *LEN=3, N=1, SIGN-EXTEND, PA=1 END;