; D1TestAsm.asm -- D1 stuff for test overlay ; Last edited: 30 April 1980 .get "d1pe.d" ; D1TEST .bext ShmvLp,WFLp,RFLp,ProcVALp .bext ShmvPrint,WFRFPrint,ProcVAPrint ; MDEBUG .bext ErrorStop ; D1CONFIG .bext HaveControl,HaveProcL,HaveProcH,HaveMemC,HaveMemD,HaveMemX,HaveIFU .bext CacheAMask0,CacheAMask1 ; Defined here .bext MEMMask,MEMAnalyze,MEMTST,MEMOne .bext REGMask,REGAnalyze,REGTST,REGOne .bext OtherNAM,OtherWID,OtherProc,OtherPrint,OtherMask,OtherTST,OtherOne .bext NOtherTests .txtm B .srel MEMMask: .MEMMask ; Memory masks for test-all MEMAnalyze: .MEMAnalyze ; Memory error analysis MEMTST: .MEMTST ; Memory test conditions MEMOne: .MEMOne ; Memory 1 vec's REGMask: .REGMask ; Register masks for test-all REGAnalyze: .REGAnalyze ; Register error analysis REGTST: .REGTST ; Register test conditions REGOne: .REGOne ; Register 1 vec's OtherNAM: .OtherNAM ; Other test names for DataTest OtherWID: .OtherWID ; Other test widths OtherProc: .OtherProc ; Other test EveryTimeList procs OtherPrint: .OtherPrint ; Other test setup & print procs OtherMask: .OtherMask ; Other test mask DVec pointers OtherTST: .OtherTST ; Other test conditions OtherOne: .OtherOne ; Other test 1 vec's NOtherTests: .OtherMask-.OtherNAM TFalse: 0 MakeIMX: .MakeIMX MakeIMBD: .MakeIMBD MakeProc16: .MakeProc16 MakeMCR: .MakeMCR MakeCACHEA: .MakeCACHEA .nrel ; ***DO NOT REORDER TABLES--LENGTH ERROR CHECK IS MADE*** ; Tables to control "Test" and "Test-All" in MTest.bcpl ; Entries are self-relative pointers to DVec's which are ValSize long .MEMMask: c177400-. ; $ABSOLUTE c177777-. ; TPC c177777-. ; TLINK 0 ; OLINK (n.t.) cIMBD-. ; IMBD 0 ; IM (virtual n.t.) cIMX-. ; IMX (absolute) c117400-. ; ALUFM Proc16-. ; T c170000-. ; RBASE c177400-. ; TIOA c174000-. ; MEMBASE Proc16-. ; RM Proc16-. ; STK 0 ; PIPE (n.t.) cBR-. ; BR cCACHEA-. ; CACHEA c177777-. ; CACHED cMAP-. ; MAP c177777-. ; VM cIFUM-. ; IFUM 0 ; LDR (n.t.) 0 ; MDATA (n.t.) 0 ; MADDR (n.t.) 0 ; DMUX (n.t.) 0 ; DHIST (n.t.) 0 ; VH (n.t.) 0 ; MD (n.t.) 0 ; TASKN (n.t.) 0 ; DEVICE (n.t.) 0 ; STKX (n.t.) 0 ; MSTAT (n.t.) 0 ; ABS (n.t.) 0 ; ROW (n.t.) 0 ; BRX (n.t.) .REGMask: c177777-. ; CPREG cAll-. ; MIR 0 ; IMOUT (n.t.) Proc16-. ; Q Proc16-. ; CNT Proc16-. ; SHC c140000-. ; MEMBX cSTKP-. ; STKP c170000-. ; TASK c170000-. ; PROCSRN MCRmsk-. ; MCR 0 ; CONFIG (n.t.) 0 ; PCX (n.t.) c14000-. ; INSSET 0 ; TESTSYNDROME (n.t.) 0 ; STROBE (n.t.) 0 ; D1OUT (n.t.) 0 ; UPTIME (n.t.) 0 ; TGLITCH (n.t.) 0 ; EVCNTA (n.t.) c177777-. ; EVCNTB 0 ; AATOVA (n.t.) cESTAT-. ; ESTAT .MEMTST: TFalse ; $ABSOLUTE HaveControl ; TPC HaveControl ; TLINK TFalse ; OLINK MakeIMBD ; IMBD (Test but not TestAll) TFalse ; IM (virtual) MakeIMX ; IMX (absolute) HaveProcL ; ALUFM MakeProc16 ; T HaveProcL ; RBASE HaveProcH ; TIOA HaveProcH ; MEMBASE MakeProc16 ; RM MakeProc16 ; STK TFalse ; PIPE HaveMemC ; BR MakeCACHEA ; CACHEA HaveMemD ; CACHED HaveMemX ; MAP HaveMemD ;* VM (Test but not TestAll) HaveIFU ; IFUM TFalse ; LDR TFalse ; MDATA TFalse ; MADDR TFalse ; DMUX TFalse ; DHIST TFalse ; VH TFalse ; MD TFalse ; TASKN TFalse ; DEVICE TFalse ; STKX TFalse ; MSTAT TFalse ; $ABS TFalse ; ROW TFalse ; BRX .REGTST: HaveControl ; CPREG HaveControl ; MIR TFalse ; IMOUT MakeProc16 ; Q MakeProc16 ; CNT MakeProc16 ; SHC HaveProcH ; MEMBX HaveProcL ; STKP HaveControl ; TASK HaveMemX ; PROCSRN MakeMCR ; MCR TFalse ; CONFIG TFalse ; PCX HaveIFU ; INSSET TFalse ; TESTSYNDROME TFalse ; STROBE TFalse ; D1OUT TFalse ; UPTIME TFalse ; TGLITCH TFalse ; EVCNTA HaveIFU ; EVCNTB TFalse ; AATOVA HaveControl ; ESTAT .MEMAnalyze: NoAnal-. ; $ABSOLUTE NoAnal-. ; TPC NoAnal-. ; TLINK NoAnal-. ; OLINK NoAnal-. ; IMBD NoAnal-. ; IM NoAnal-. ; IMX NoAnal-. ; ALUFM NoAnal-. ; T NoAnal-. ; RBASE NoAnal-. ; TIOA NoAnal-. ; MEMBASE NoAnal-. ; RM NoAnal-. ; STK NoAnal-. ; PIPE NoAnal-. ; BR NoAnal-. ; CACHEA NoAnal-. ; CACHED NoAnal-. ; MAP NoAnal-. ; VM NoAnal-. ; IFUM NoAnal-. ; LDR NoAnal-. ; MDATA NoAnal-. ; MADDR NoAnal-. ; DMUX NoAnal-. ; DHIST NoAnal-. ; VH NoAnal-. ; MD NoAnal-. ; TASKN NoAnal-. ; DEVICE NoAnal-. ; STKX NoAnal-. ; MSTAT NoAnal-. ; $ABS NoAnal-. ; ROW NoAnal-. ; BRX .REGAnalyze: NoAnal-. ; CPREG NoAnal-. ; MIR NoAnal-. ; IMOUT NoAnal-. ; Q NoAnal-. ; CNT NoAnal-. ; SHC NoAnal-. ; MEMBX NoAnal-. ; STKP NoAnal-. ; TASK NoAnal-. ; PROCSRN NoAnal-. ; MCR NoAnal-. ; CONFIG NoAnal-. ; PCX NoAnal-. ; INSSET NoAnal-. ; TESTSYNDROME NoAnal-. ; STROBE NoAnal-. ; D1OUT NoAnal-. ; UPTIME NoAnal-. ; TGLITCH NoAnal-. ; EVCNTA NoAnal-. ; EVCNTB NoAnal-. ; AATOVA NoAnal-. ; ESTAT .MEMOne: c1in16-. ; $ABSOLUTE c1in16-. ; TPC c1in16-. ; TLINK 0 ; OLINK c1inIM-. ; IMBD 0 ; IM c1inIM-. ; IMX c1in8-. ; ALUFM c1in16-. ; T c1in4-. ; RBASE c1in8-. ; TIOA c1in5-. ; MEMBASE c1in16-. ; RM c1in16-. ; STK 0 ; PIPE c1in32-. ; BR c1inCACHEA-. ; CACHEA c1in16-. ; CACHED c1in32-. ; MAP c1in16-. ; VM c1in32-. ; IFUM 0 ; LDR 0 ; MDATA 0 ; MADDR 0 ; DMUX 0 ; DHIST 0 ; VH 0 ; MD 0 ; TASKN 0 ; DEVICE 0 ; STKX 0 ; MSTAT 0 ; $ABS 0 ; ROW 0 ; BRX .REGOne: c1in16-. ; CPREG c1inIM-. ; MIR 0 ; IMOUT c1in16-. ; Q c1in16-. ; CNT c1in16-. ; SHC c1in2-. ; MEMBX c1in16-. ; STKP c1in4-. ; TASK c1in4-. ; PROCSRN c1in16-. ; MCR 0 ; CONFIG 0 ; PCX c1in5-. ; INSSET 0 ; TESTSYNDROME 0 ; STROBE 0 ; D1OUT 0 ; UPTIME 0 ; TGLITCH 0 ; EVCNTA c1in16-. ; EVCNTB 0 ; AATOVA c1in16-. ; ESTAT ; Table of other test names for "Test" action .OtherNAM: ShmvOp-. WF-. RF-. ProcVA-. .OtherMask: Proc16-. ; Mask for data out of Alu c17777-. ; Mask for data in ShC on WF c17417-. ; Mask for data in ShC on RF cProcVA-. ; 24-bit mask for ProcVA .OtherTST: MakeProc16 HaveProcH HaveProcH HaveMemC .OtherWID: 20 ; Shmv 20 ; WF 20 ; RF 40 ; ProcVA .OtherProc: ShmvLp WFLp RFLp ProcVALp .OtherPrint: ShmvPrint WFRFPrint WFRFPrint ProcVAPrint .OtherOne: c1in16-. c1in16-. c1in16-. c1in32-. ShmvOp: .txt "Shmv" WF: .txt "WF" RF: .txt "RF" ProcVA: .txt "ProcVA" cAll: 177777 177777 170000 cIFUM: 3777 177777 0 cESTAT: Henables 0 0 cBR: 7777 177777 0 c177777: 177777 0 0 cMAP: 3 177777 0 c17777: 17777 0 0 c117400: 117400 0 0 c17417: 17417 0 0 c140000: 140000 0 0 c170000: 170000 0 0 c174000: 174000 0 0 cSTKP: ; StkOvf, StkUfl not tested c177400: 177400 0 0 c14000: 14000 0 0 cProcVA: 377 177777 0 c1in2: 40000 0 0 c1in4: 10000 0 0 c1in5: 4000 0 0 c1in8: 400 0 0 c1in16: 1 0 0 c1in32: 0 1 0 c1inIM: 0 0 40000 ; Fill in the IMX mask with 0 if HaveControl false, else with full mask ; if HaveProcL & HaveProcH, else with full mask sans parity bits. .MakeIMX: sta 3 1 2 jsr MItst0 cIMX: 177777 177777 0 MItst0: lda 0 @lvHaveControl mov# 0 0 snr jmp MIret ; Return 0 indicating no test MItst1: lda 1 @lvHaveProcL lda 0 @lvHaveProcH and 0 1 lda 0 c170000 mov# 1 1 snr lda 0 c140000 sta 0 2 3 jmp MIret lvHaveControl: HaveControl ; Fill in IMBD mask with full mask if HaveProcL and HaveProcH both true, ; else with full mask sans parity bits. .MakeIMBD: sta 3 1 2 jsr MItst1 cIMBD: 177777 177777 0 ; Fill in the Proc16 vector with 0, -1, or 377 according to the values ; of HaveProcH and HaveProcL. .MakeProc16: sta 3 1 2 jsr MP16A Proc16: 0 0 0 MP16A: lda 0 @lvHaveProcL mov# 0 0 snr jmp MP16B lda 0 @lvHaveProcH mov# 0 0 snr lda 0 mp377 MP16B: sta 0 0 3 MIret: lda 3 1 2 jmp 1 3 lvHaveProcL: HaveProcL lvHaveProcH: HaveProcH mp377: 377 lvHaveMemC: HaveMemC lvHaveMemD: HaveMemD lvHaveMemX: HaveMemX mmMcrX: 160747 ; Victim, NextV untested mmMcrC: 160740 ; WakeOnCL, ReportSE', NoWake also untested lvCacheAMask0: CacheAMask0 lvCacheAMask1: CacheAMask1 ; Fill in the Mcr test mask according to HaveMemC and HaveMemX .MakeMCR: sta 3 1 2 lda 0 @lvHaveMemC mov# 0 0 snr jmp MP16B jsr MMA MCRmsk: 0 0 0 MMA: lda 0 mmMcrC lda 1 @lvHaveMemX mov# 1 1 szr lda 0 mmMcrX jmp MP16B ; Fill in the CACHEA test mask according to configuration. .MakeCACHEA: sta 3 1 2 lda 0 @lvHaveMemC mov# 0 0 snr jmp MP16B jsr MCA0 cCACHEA: 0 0 0 c1inCACHEA: 0 0 0 MCA0: lda 0 @lvCacheAMask1 sta 0 1 3 neg 0 1 and 1 0 sta 1 4 3 lda 0 @lvCacheAMask0 jmp MP16B NoAnal: 0 ; 1st two words are min. error count 0 ErrorStop ; 3rd word is procedure for analysis .end