📄 com.u
字号:
call tdmove; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_7 call tdmove; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_3 call tdmove; ; ; ; ; call idle1; ; ; ; ;|* move matrix at ptr1 to ptr5tdmovelp: ; ; ; ; ; ptr5-tdmovelp2: ; ; ; recclk; rcsmsw ptr1; ptr5+ ; ; ; recclk; rcslsw ptr1; ; ; ; ; ptr5; lpreg- ; ; ; recoe; ramwe rcsmsw ptr5; ptr1+ ; ; ; recoe recclk;ramwe ptr5; jloop tdmovelp2;; ; recoe; ramwe rcslsw ptr5; rtn; ; ; recoe; ramwe ptr5;|* move data at ptr5 to ptr1tdmove: ; ; ; recclk; rcsmsw ptr5; ptr1- ; ; ; recclk; rcslsw ptr5; ; ; ; ; ptr1; ; ; ; recoe; ramwe rcsmsw ptr1; ; ; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr1; rtn; ; ; recoe; ramwe ptr1; ptr5-|*|* Update Shadow Registers|*routine c.update w01001110001 lnop ssub ; ; ; ; ; lpreg!8usr.loop: ; ; ; recclk; rcsmsw ptr1; ; ; ; recclk; rcslsw ptr1; ; ; ; ; ptr1; ; ; ; recoe; ramwe rcsmsw ptr1; lpreg- ; ; ; recoe recclk;ramwe ptr1; jloop usr.loop; ; ; recoe; ramwe rcslsw ptr1; ; ; ; recoe; ramwe ptr1; ptr1+ call idle1; ; ; ; ;|*|* Load Weitek Mode Control Bits 3-0|*routine c.ld3.0 w0100011010x las ssub| *save the value (checked in transcendentals) ; ; ; ; ; ptr5!szero ; ; ; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; jlt werr; woea; ; ; ; ; ; ; ; ; ptr5!c_smaxmode ; ; ; ; rcssp ptr5; call wait3; lbsf scmp csla; reg; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; jgt werr; woea; ; ; ; ; ; ; ; ; ptr5!c_dmode ; ; ; ; ptr5; ; ; opdsp dtor; ; ramwe rcssp ptr5; ; ; opdsp dtor; ; ramwe ptr5; call idle1; lmodeusr cslmac; ; ; ; mreg!|*|* Load LED Register With 0x1555 And Hang|*|routine c.led155 w01001011100 lnop ssub| ; ; ; ; ; ptr5!0x1555| call hang; ; ; ; ;|*|* Load LED Register With 0x2AAA And Hang|*|routine c.led2AA w01001011101 lnop ssub| ; ; ; ; ; ptr5!0x2AAA| call hang; ; ; ; ;|*|* Load LED Register With 0x777|* Set the Register Ram Select to X|* Set the Wdata Select to X & 3|* And Hang|*routine l.diag0 w01110010000 lnop ssub call .; ; ; ; ;routine c.regsel0 w01001000001 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; reg; ; ldptr; call idle1; ; ; ; ;routine l.diag1 w01110010001 lnop ssub ; ; ; ; ; ; ; ; ; ; jclr clp idl2; ; ; ; ;routine c.regsel1 w01001000011 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; reg; ; ptr1; call idle1; ; ; ; ;routine l.diag2 w01110010010 lnop ssub ; ; ; ; ; ; ; ; ; ; jclr clp idl2; ; ; ; ;routine c.regsel2 w01001000101 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; opdmsw; ; ptr2; call idle1; ; ; ; ;routine l.diag3 w01110010011 lnop ssub ; ; ; ; ; ; ; ; ; ; jclr clp idl2; ; ; ; ;routine c.regsel3 w01001000111 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; opdlsw; ; ptr3; call idle1; ; ; ; ;|* double precision unimplemented instructionroutine l.diag4 w01110010100 lnop ssub call invalid2; ; ; ; ;routine c.regsel4 w01001001001 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; reg; ; ptr4; call idle1; ; ; ; ;routine c.regsel5 w01001001011 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; reg; ; ptr5; call idle1; ; ; ; ;routine c.regsel6 w01001001101 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; opdmsw; ; imm2; call idle1; ; ; ; ;routine c.regsel7 w01001001111 lnop ssub ; ; ; ; ; ; ; ; ; ; ptr5!0x777 hng; ; opdlsw; ; imm3; call idle1; ; ; ; ;|*|* Read D21 and D22 into read latch|*routine l.diag8 w01110011000 lnop ssub ; ; opdmsw dtor; ; ; ; ; opdmsw dtor; recclk; ; cdata; ; ; ; ; jclr clp idl2; ; ; ; ; ; ; opdlsw dtor; ; ; ; ; opdlsw dtor; recclk; ; cdata; ; ; ; ; call hang; ; ; ; ;|*|* Initialize Instruction --|* load bits 4 through 11 on Weitek chips.|*routine c.init w01001011110 lnop ssub ; lmode7.4 0x6 cslmac; ; ; ; ; lmodef.c 0x0 cslmac; ; ; ; ; lmodeb.8 0x4 cslm; ; ; ; call idle1; lmodeb.8 0x0 csla; ; ; ;|*|* Restore Wstatus Register|* This instruction will: 1) set the valid bit, 2) reset the unimplimented|* instruction bit, and 3) set all other bits according to bits 11:8 in|* the operand.|*routine c.rest.wstat w01001010110 lnop ssub ; ; opdmsw dtor; recclk; ; ; ; dtor; ; ; call idle1 cstat restore;; ; ; ;|*|* Test Current User's Registers|* This test is designed to test the data registers for the current|* context. The intent is to optimize speed while catching:|* All hard data line errors.|* All hard address line errors.|* Any two registers in error and most other ram errors.|*|* To catch ram bits in error two test values are used which are|* complimentary. The registers are filled with the two values|* such that the hamming distance between two addresses of|* registers with the same data is 2: this should check all|* address problems. The registers are checked twice using|* complementary data and performing the second check in reverse sequence|* for sequence dependent errors. The check is performed in different|* ways on the different checks to catch more data errors (so|* that we will catch errors in adjoining addresses even though the|* address hamming distance is greater than one). The check is|* performed with a cumulative addition for speed's sake.|*|* The data values are:|* A: 0 100000...00 0000000....00000|* B: 1 011111...11 1111111....11111|* They are stored in the following order:|* A, B, B, A, B, A, A, B, B, A, A, B, A, B, B, A|*|* The checking summations are:|* 0 + 1 + 2 + 3 - 6 - 7 - 8 - 9 + A + B + 4 + 5 - C - D - E - F|* and|* F + E - D - C + 5 + 4 - B - A + 9 + 8 - 7 - 6 - 3 - 2 + 1 + 0|* (Notice that you can add A, B, B, A, but if you add|* B, A, A, B, an inexact will result)|*|*|* Test Current User's Registers - DESTRUCTIVE|*|* Enter with:|* ptr1 pointing at element 0 (i.e. reg_1 = 0)|*routine c.tstreg.d w01001110010 lnop ssub ; ; ; ; ; lpreg!32 ; ; ; ; ; ptr5!c_dtest call rdmovelp51;; ; recclk; rcsmsw ptr5; call ctest; ; ; ; ; call idle1; ; ; ; ;ctest: ; ; ; ; rcsmsw ptr1; ; lam csla; reg; ; rcslsw ptr1; ptr1+ ; lal csla; reg; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; ptr1+ ; lblf dadd csla; reg; ; ; lpreg!4 ; ; ; ; ;ctest.1:| *error if we get inexact, NaN, etc. ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.1; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.2:| *error if we get inexact, NaN, etc. ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.2; lalf dadd csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.3:| *error if we get inexact, NaN, etc. ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.3; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.4:| *error if we get inexact, NaN, etc. ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.4; lalf dadd csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.5:| *error if we get inexact, NaN, etc. ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.5; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.6:| *error if we get inexact, NaN, etc. ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.6; lalf dadd csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!6ctest.7: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1+ jloop ctest.7; lalf dsub csla csuxa ulsw;; ; ;| * NO error if we get inexact ; ; ; ; ; ptr5!c_dtestsolution1 ; ; ; ; ; ptr1- ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ; lalf dcmp csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa umsw; ; ; ; ; ; ; ; ; jne werr cstat; woea; ; ; ; ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lam csla; reg; ; rcslsw ptr1; ptr1- ; lal csla; reg; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; ptr1- ; lblf dadd csla; reg; ; ; lpreg!4 ; ; ; ; ;ctest.8: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.8; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.9: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.9; lalf dadd csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.A: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.A; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.B: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.B; lalf dadd csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.C: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.C; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!4ctest.D: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.D; lalf dadd csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; lpreg!6ctest.E: ; ; ; ; ; ; ; ; ; rcsmsw ptr1; ; lbm csla; reg; ; rcslsw ptr1; lpreg- ; lbl csla; reg; ; ; ptr5!c_dtestsolution2 ; lam csla csuxa umsw; ; ; ; ptr1- jloop ctest.E; lalf dsub csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; ptr1+ ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lbl csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ; lalf dcmp csla csuxa ulsw;; ; ; jwerr werr cstat;woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa umsw; ; ; ; ; ; ; ; ; jne werr cstat; woea; ; ; ; rtn; ; ; ; ;|*|* Test Current User's Registers - NON-DESTRUCTIVE|*routine c.tstreg.n w01001110011 lnop ssub ; ; ; ; ; lpreg!32 ; ; ; ; ; ptr5!c_dSCRATCH_0 call rdmovelp15;; ; recclk; rcsmsw ptr1; ; ; ; ; ; lpreg!32 ; ; ; ; ; ptr5!c_dtest call rdmovelp51;; ; recclk; rcsmsw ptr5; call ctest; ; ; ; ; ; ; ; ; ; lpreg!32 ; ; ; ; ; ptr5!c_dSCRATCH_0 call rdmovelp51;; ; recclk; rcsmsw ptr5; call idle1; ; ; ; ;|* move registers at ptr5 to ptr1rdmovelp51: ; ; ; recclk; rcslsw ptr5; ; ; ; ; ptr1; ptr5+ ; ; ; recoe; ramwe rcsmsw ptr1; lpreg- ; ; ; recoe recclk;ramwe ptr1; ; ; ; recoe; ramwe rcslsw ptr1; jloop rdmovelp51;; ; recoe; ramwe ptr1; rtn; ; ; recclk; rcsmsw ptr5; ptr1+|* move registers at ptr1 to ptr5rdmovelp15: ; ; ; recclk; rcslsw ptr1; ; ; ; ; ptr5; ptr1+ ; ; ; recoe; ramwe rcsmsw ptr5; lpreg- ; ; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr5; jloop rdmovelp15;; ; recoe; ramwe ptr5; rtn; ; ; recclk; rcsmsw ptr1; ptr5+|*|* Test the loop counter|*routine c.tstlpreg w01001011010 lnop ssub ; ; ; ; ; lpreg!0test.pt.a: hng; ; ; ; ; ; ; ; ; ; lpreg- jloop test.pt.a;; ; ; ; jloop0 test.pt.b;; ; ; ; ; ; ; ; ; hng; ; ; ; ;test.pt.b: hng; ; ; ; ; call idle1; ; ; ; ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -