*********************************** * CPU TEST 9900 - FOR THE TI-994A * * JUNE 2002 - M.BRENT * *********************************** * COMPATIBLE WITH THE SAVE UTIL DEF START,SFIRST,SLAST,SLOAD AORG >3000 REF VSBW,VMBW * BASIC SETTINGS, WORKSPACES, ETC SLOAD BSS 32 SPARE BSS 32 TESTWS BSS 32 VECTOR DATA SLOAD VECTOS DATA >0000 TITLE TEXT 'TESTING:' COMPLT TEXT 'COMPLETE' FAILED TEXT 'FAILED!:' HEX TEXT '0123456789ABCDEF' * USED BY THE TESTS - E/A MANUAL TABLE1 DATA >3124 WORD DATA >F318 LIST DATA >0000,>0000,>FF3C COUNT DATA >0001 LOC DATA >0005 NEW DATA >0005 OLDVAL DATA >1225 NEWVAL DATA >8223 SBTEST DATA >2331 TRAN DATA BL1 BLTEST DATA SPARE,BLWP1 TESTBI DATA >C102 ONES DATA >FFFF TEMP DATA >2016 SWPBT DATA >F312 CHANGE DATA >6D03 CLRTST DATA >1234 SOCTST DATA >AAAA BITS DATA >F018 TESTVA DATA >AA24 * TEST ADDRESS TABLE TABLE DATA A,AB,ABS,AI,DEC,DECT,DIV DATA INC,INCT,MPY,NEG,S,SB,B DATA BL,BLWP,JEQ,JGT,JHE,JH DATA JL,JLE,JLT,JMP,JNC,JNE DATA JNO,JOP,JOC,RTWP,X,XOP DATA C,CB,CI,COC,CZC,LDCR DATA SBO,SBZ,STCR,TB,LI DATA LIMI,LWPI,MOV,MOVB,STST DATA STWP,SWPB,ANDI,ORI,XOR DATA INV,CLR,SETO,SOC,SOCB DATA SZC,SZCB,SRA,SRL,SLA,SRC DATA 0 * PROGRAM GO START SFIRST CLR R0 LI R1,>2000 L1 BLWP @VSBW INC R0 CI R1,768 JLT L1 LI R0,35 LI R1,TITLE LI R2,8 BLWP @VMBW LWPI TESTWS LI R5,TABLE MANLP MOV *R5+,R4 JEQ DONE LI R0,44 MOV R4,R1 LI R2,4 BLWP @VMBW INCT R4 INCT R4 MOV R4,@VECTOS BLWP @VECTOR JMP MANLP DONE LI R0,35 LI R1,COMPLT LI R2,8 BLWP @VMBW L2 LIMI 0 LIMI 2 JMP L2 FAIL LI R0,35 LI R1,FAILED LI R2,8 BLWP @VMBW DECT R11 DECT R11 MOV R11,R9 LI R0,67 BL @HEXDMP MOV R3,R9 LI R0,99 BL @HEXDMP JMP L2 HEXDMP MOV R9,R10 ANDI R10,>F000 SRL R10,12 LI R2,HEX A R10,R2 MOVB *R2,R1 BLWP @VSBW MOV R9,R10 ANDI R10,>0F00 SRL R10,8 INC R0 LI R2,HEX A R10,R2 MOVB *R2,R1 BLWP @VSBW MOV R9,R10 ANDI R10,>00F0 SRL R10,4 INC R0 LI R2,HEX A R10,R2 MOVB *R2,R1 BLWP @VSBW ANDI R9,>000F INC R0 LI R2,HEX A R9,R2 MOVB *R2,R1 BLWP @VSBW B *R11 * OPCODE TESTS - TEXT MUST BE 4 CHARS * WE'LL START SIMPLE WITH THE EXAMPLES * IN THE E/A MANUAL FOR NOW A TEXT 'A ' LI R5,>8 A R5,@TABLE1 STST R3 MOV @TABLE1,R4 CI R4,>312C JEQ A1 BL @FAIL A1 CI R5,8 JEQ A2 BL @FAIL A2 ANDI R3,>F800 CI R3,>C000 JEQ A3 BL @FAIL A3 RTWP AB TEXT 'AB ' LI R4,>7400 LI R2,WORD INC R2 AB R4,*R2+ STST R3 MOV @WORD,R5 CI R5,>F38C JEQ AB1 BL @FAIL AB1 CI R2,WORD+2 JEQ AB2 BL @FAIL AB2 CI R4,>7400 JEQ AB3 BL @FAIL AB3 ANDI R3,>FC00 CI R3,>8C00 JEQ AB4 BL @FAIL AB4 RTWP ABS TEXT 'ABS ' LI R7,4 ABS @LIST(7) STST R3 MOV @LIST+4,R5 CI R5,>00C4 JEQ ABS1 BL @FAIL ABS1 ANDI R3,>E800 CI R3,>8000 JEQ ABS2 BL @FAIL ABS2 RTWP AI TEXT 'AI ' LI R6,0 AI R6,>C STST R3 CI R6,>C JEQ AI1 BL @FAIL AI1 ANDI R3,>F800 CI R3,>C000 JEQ AI2 BL @FAIL AI2 RTWP DEC TEXT 'DEC ' DEC @COUNT STST R3 MOV @COUNT,R5 CI R5,0 JEQ DEC1 BL @FAIL DEC1 ANDI R3,>F800 CI R3,>3000 JEQ DEC2 BL @FAIL DEC2 RTWP DECT TEXT 'DECT' LI R4,>2C10 DECT R4 STST R3 CI R4,>2C0E JEQ DECT1 BL @FAIL DECT1 ANDI R3,>F800 CI R3,>D000 JEQ DECT2 BL @FAIL DECT2 RTWP DIV TEXT 'DIV ' LI R4,>0000 LI R5,>000C DIV @LOC,R4 STST R3 CI R4,>0002 JEQ DIV1 BL @FAIL DIV1 CI R5,>0002 JEQ DIV2 BL @FAIL DIV2 ANDI R3,>0800 CI R3,>0000 JEQ DIV3 BL @FAIL DIV3 LI R4,>0005 LI R5,>000C MOV R4,@LOC DIV @LOC,R4 STST R3 ANDI R3,>0800 CI R3,>0800 JEQ DIV4 BL @FAIL DIV4 RTWP INC TEXT 'INC ' LI R4,0 MOV R4,@COUNT INC @COUNT STST R3 MOV @COUNT,R4 CI R4,>0001 JEQ INC1 BL @FAIL INC1 ANDI R3,>F800 CI R3,>C000 JEQ INC2 BL @FAIL INC2 RTWP INCT TEXT 'INCT' LI R5,>2100 INCT R5 STST R3 CI R5,>2102 JEQ INCT1 BL @FAIL INCT1 ANDI R3,>F800 CI R3,>C000 JEQ INCT2 BL @FAIL INCT2 RTWP MPY TEXT 'MPY ' LI R5,>0012 LI R6,>1B31 STST R2 MPY @NEW,R5 STST R3 CI R5,>0000 JEQ MPY1 BL @FAIL MPY1 CI R6,>005A JEQ MPY2 BL @FAIL MPY2 MOV @NEW,R7 CI R7,>0005 JEQ MPY3 BL @FAIL MPY3 C R2,R3 JEQ MPY4 BL @FAIL MPY4 RTWP NEG TEXT 'NEG ' LI R5,>A342 NEG R5 STST R3 CI R5,>5CBE JEQ NEG1 BL @FAIL NEG1 ANDI R3,>E800 CI R3,>C000 JEQ NEG2 BL @FAIL NEG2 RTWP S TEXT 'S ' S @OLDVAL,@NEWVAL STST R3 MOV @NEWVAL,R5 CI R5,>6FFE JEQ S1 BL @FAIL S1 ANDI R3,>F800 CI R3,>D800 JEQ S2 BL @FAIL S2 RTWP SB TEXT 'SB ' LI R6,SBTEST LI R1,>1344 SB *R6+,R1 STST R3 CI R6,SBTEST+1 JEQ SB1 BL @FAIL SB1 CI R1,>F044 JEQ SB2 BL @FAIL SB2 ANDI R3,>FC00 CI R3,>8000 JEQ SB3 BL @FAIL SB3 RTWP B TEXT 'B ' LI R3,B1 B *R3 BL @FAIL B1 RTWP BL TEXT 'BL ' BL @BL1 BL2 BL @FAIL BL1 CI R11,BL2 JEQ BL3 BL @FAIL BL3 RTWP BLWP TEXT 'BLWP' BLWP @BLTEST BLWP2 BL @FAIL BLWP1 CI R13,SLOAD JEQ BLWP3 BL @FAIL BLWP3 CI R14,BLWP2 JEQ BLWP4 BL @FAIL BLWP4 LWPI SLOAD RTWP JEQ TEXT 'JEQ ' C R1,R1 JEQ JEQ1 BL @FAIL JEQ1 LI R1,0 CI R1,5 JEQ JEQ2 RTWP JEQ2 BL @FAIL JGT TEXT 'JGT ' LI R1,2 CI R1,1 JGT JGT1 BL @FAIL JGT1 CI R1,>7FFE JGT JGT2 RTWP JGT2 BL @FAIL JHE TEXT 'JHE ' LI R1,>FFF0 CI R1,>1 JHE JHE1 BL @FAIL JHE1 LI R1,1 CI R1,1 JHE JHE2 BL @FAIL JHE2 CI R1,5 JHE JHE3 RTWP JHE3 BL @FAIL JH TEXT 'JH ' LI R1,5 CI R1,1 JH JH1 BL @FAIL JH1 CI R1,5 JH JH2 RTWP JH2 BL @FAIL JL TEXT 'JL ' LI R1,1 CI R1,5 JL JL1 BL @FAIL JL1 CI R1,1 JL JL2 RTWP JL2 BL @FAIL JLE TEXT 'JLE ' LI R1,1 CI R1,5 JLE JLE1 BL @FAIL JLE1 CI R1,1 JLE JLE2 BL @FAIL JLE2 CI R1,0 JLE JLE3 RTWP JLE3 BL @FAIL JLT TEXT 'JLT ' LI R1,>FFF0 CI R1,5 JLT JLT1 BL @FAIL JLT1 CI R1,>FFFF JLT JLT2 BL @FAIL JLT2 CI R1,>FFF0 JLT JLT3 RTWP JLT3 BL @FAIL JMP TEXT 'JMP ' JMP JMP1 BL @FAIL JMP2 JMP JMP3 BL @FAIL JMP1 JMP JMP2 BL @FAIL JMP3 RTWP JNC TEXT 'JNC ' LI R1,5 INC R1 JNC JNC1 BL @FAIL JNC1 LI R1,>FFFF INC R1 JNC JNC2 RTWP JNC2 BL @FAIL JNE TEXT 'JNE ' LI R1,5 CI R1,1 JNE JNE1 BL @FAIL JNE1 CI R1,5 JNE JNE2 RTWP JNE2 BL @FAIL JNO TEXT 'JNO ' LI R1,5 NEG R1 JNO JNO1 BL @FAIL JNO1 LI R1,>8000 NEG R1 JNO JNO2 RTWP JNO2 BL @FAIL JOP TEXT 'JOP ' LI R0,>0000 LI R1,>0100 CB R1,R0 JOP JOP1 BL @FAIL JOP1 LI R1,>0300 CB R1,R0 JOP JOP2 RTWP JOP2 BL @FAIL JOC TEXT 'JOC ' LI R1,>FFFF INC R1 JOC JOC1 BL @FAIL JOC1 LI R1,1 INC R1 JOC JOC2 RTWP JOC2 BL @FAIL RTWP TEXT 'RTWP' LI R5,>A5A5 LWPI SPARE LI R13,SLOAD LI R14,RTWP1 LI R15,>8800 RTWP BL @FAIL RTWP1 STST R3 CI R5,>A5A5 JEQ RTWP2 BL @FAIL RTWP2 CI R3,>8800 JEQ RTWP3 BL @FAIL RTWP3 RTWP X TEXT 'X ' * >1002 IS JMP $+2 LI R5,>1002 X R5 BL @FAIL RTWP XOP TEXT 'XOP ' MOV @RTWP1,@>8300 STST R3 MOV @RTWP3,@>8302 RTWP LI R6,>1234 XOP R6,2 XOP0 MOV @>83B6,R5 MOV *R5,R7 CI R7,>1234 JEQ XOP1 BL @FAIL XOP1 MOV @>83BA,R5 CI R5,SLOAD JEQ XOP2 BL @FAIL XOP2 MOV @>83BC,R5 CI R5,XOP0 JEQ XOP3 BL @FAIL XOP3 MOV @>83A6,R3 ANDI R3,>0200 CI R3,>0200 JEQ XOP5 BL @FAIL XOP5 RTWP C TEXT 'C ' LI R4,>FFFF LI R5,>0000 C R4,R5 STST R3 ANDI R3,>E000 CI R3,>8000 JEQ C1 BL @FAIL C1 LI R4,>7FFF LI R5,>0000 C R4,R5 STST R3 ANDI R3,>E000 CI R3,>C000 JEQ C2 BL @FAIL C2 LI R4,>8000 LI R5,>0000 C R4,R5 STST R3 ANDI R3,>E000 CI R3,>8000 JEQ C3 BL @FAIL C3 LI R4,>8000 LI R5,>7FFF C R4,R5 STST R3 ANDI R3,>E000 CI R3,>8000 JEQ C4 BL @FAIL C4 LI R4,>7FFF LI R5,>7FFF C R4,R5 STST R3 ANDI R3,>E000 CI R3,>2000 JEQ C5 BL @FAIL C5 LI R4,>7FFF LI R5,>8000 C R4,R5 STST R3 ANDI R3,>E000 CI R3,>4000 JEQ C6 BL @FAIL C6 RTWP CB TEXT 'CB ' LI R4,>0000 LI R5,>FF00 CB R5,R4 STST R3 ANDI R3,>E400 CI R3,>8000 JEQ CB1 BL @FAIL CB1 LI R4,>0000 LI R5,>7F00 CB R5,R4 STST R3 ANDI R3,>E400 CI R3,>C400 JEQ CB2 BL @FAIL CB2 LI R4,>7F00 LI R5,>8000 CB R5,R4 STST R3 ANDI R3,>E400 CI R3,>8400 JEQ CB3 BL @FAIL CB3 LI R4,>7F00 LI R5,>7F00 CB R5,R4 STST R3 ANDI R3,>E400 CI R3,>2400 JEQ CB4 BL @FAIL CB4 LI R4,>8000 LI R5,>7F00 CB R5,R4 STST R3 ANDI R3,>E400 CI R3,>4400 JEQ CB5 BL @FAIL CB5 RTWP CI TEXT 'CI ' LI R9,>2183 CI R9,>F330 STST R3 ANDI R3,>E000 CI R3,>4000 JEQ CI1 BL @FAIL CI1 RTWP COC TEXT 'COC ' LI R8,>E306 COC @TESTBI,R8 STST R3 ANDI R3,>2000 CI R3,>2000 JEQ COC1 BL @FAIL COC1 LI R8,>E301 COC @TESTBI,R8 STST R3 ANDI R3,>2000 CI R3,>0000 JEQ COC2 BL @FAIL COC2 RTWP CZC TEXT 'CZC ' LI R8,>2301 CZC @TESTBI,R8 STST R3 ANDI R3,>2000 CI R3,>0000 JEQ CZC1 BL @FAIL CZC1 LI R8,>2201 CZC @TESTBI,R8 STST R3 ANDI R3,>2000 CI R3,>2000 JEQ CZC2 BL @FAIL CZC2 RTWP * NOT SURE HOW TO TEST THE CRU OFFHAND LDCR TEXT 'LDCR' RTWP SBO TEXT 'SBO ' RTWP SBZ TEXT 'SBZ ' RTWP STCR TEXT 'STCR' RTWP TB TEXT 'TB ' RTWP * LI TEXT 'LI ' LI R7,5 STST R3 ANDI R3,>E000 CI R3,>C000 JEQ LI1 BL @FAIL LI1 RTWP LIMI TEXT 'LIMI' LIMI 0 STST R3 ANDI R3,>000F CI R3,>0000 JEQ LIMI1 BL @FAIL LIMI1 LIMI 2 STST R3 ANDI R3,>000F CI R3,>2 JEQ LIMI2 BL @FAIL LIMI2 LIMI 0 RTWP LWPI TEXT 'LWPI' LI R5,>7654 MOV R5,@SPARE LWPI SPARE CI R0,>7654 JEQ LWPI1 BL @FAIL LWPI1 LWPI SLOAD RTWP MOV TEXT 'MOV ' LI R7,5 MOV R7,R7 STST R3 ANDI R3,>E000 CI R3,>C000 JEQ MOV1 BL @FAIL MOV1 LI R9,>3416 MOV @ONES,R9 STST R3 ANDI R3,>E000 CI R3,>8000 JEQ MOV2 BL @FAIL MOV2 CI R9,>FFFF JEQ MOV3 BL @FAIL MOV3 RTWP MOVB TEXT 'MOVB' LI R4,>542B MOVB @TEMP+1,R4 STST R3 ANDI R3,>E400 CI R3,>C400 JEQ MOVB1 BL @FAIL MOVB1 CI R4,>162B JEQ MOVB2 BL @FAIL MOVB2 RTWP STST TEXT 'STST' * STST IS PRETTY WELL TESTED BY NOW RTWP STWP TEXT 'STWP' STWP R5 CI R5,SLOAD JEQ STWP1 BL @FAIL STWP1 RTWP SWPB TEXT 'SWPB' LI R0,SWPBT STST R4 SWPB *R0+ STST R3 MOV @SWPBT,R5 CI R5,>12F3 JEQ SWPB1 BL @FAIL SWPB1 CI R0,SWPBT+2 JEQ SWPB2 BL @FAIL SWPB2 C R3,R4 JEQ SWPB3 BL @FAIL SWPB3 RTWP ANDI TEXT 'ANDI' LI R0,>D2AB ANDI R0,>6D03 STST R3 CI R0,>4003 JEQ ANDI1 BL @FAIL ANDI1 ANDI R3,>E000 CI R3,>C000 JEQ ANDI2 BL @FAIL ANDI2 RTWP ORI TEXT 'ORI ' LI R5,>D2AB ORI R5,>6D03 STST R3 CI R5,>FFAB JEQ ORI1 BL @FAIL ORI1 ANDI R3,>E000 CI R3,>8000 JEQ ORI2 BL @FAIL ORI2 RTWP XOR TEXT 'XOR ' LI R2,>D2AA XOR @CHANGE,R2 STST R3 CI R2,>BFA9 JEQ XOR1 BL @FAIL XOR1 ANDI R3,>E000 CI R3,>8000 JEQ XOR2 BL @FAIL XOR2 RTWP INV TEXT 'INV ' LI R11,>157A INV R11 STST R3 CI R11,>EA85 JEQ INV1 BL @FAIL INV1 ANDI R3,>E000 CI R3,>8000 JEQ INV2 BL @FAIL INV2 RTWP CLR TEXT 'CLR ' LI R11,CLRTST+1 CLR *R11 MOV @CLRTST,R5 CI R5,>0000 JEQ CLR1 BL @FAIL CLR1 RTWP SETO TEXT 'SETO' SETO R5 CI R5,>FFFF JEQ SETO1 BL @FAIL SETO1 RTWP SOC TEXT 'SOC ' LI R5,>FF00 SOC R5,@SOCTST STST R3 MOV @SOCTST,R6 CI R6,>FFAA JEQ SOC1 BL @FAIL SOC1 ANDI R3,>E000 CI R3,>8000 JEQ SOC2 BL @FAIL SOC2 CI R5,>FF00 JEQ SOC3 BL @FAIL SOC3 RTWP SOCB TEXT 'SOCB' LI R5,>F013 LI R8,>AA24 SOCB R5,R8 STST R3 CI R8,>FA24 JEQ SOCB1 BL @FAIL SOCB1 CI R5,>F013 JEQ SOCB2 BL @FAIL SOCB2 ANDI R3,>E400 CI R3,>8000 JEQ SOCB3 BL @FAIL SOCB3 RTWP SZC TEXT 'SZC ' LI R5,>6D03 LI R4,>D2AA SZC R5,R4 STST R3 CI R4,>92A8 JEQ SZC1 BL @FAIL SZC1 CI R5,>6D03 JEQ SZC2 BL @FAIL SZC2 ANDI R3,>E000 CI R3,>8000 JEQ SZC3 BL @FAIL SZC3 RTWP SZCB TEXT 'SZCB' SZCB @BITS,@TESTVA STST R3 MOV @TESTVA,R5 CI R5,>0A24 JEQ SZCB1 BL @FAIL SZCB1 MOV @BITS,R5 CI R5,>F018 JEQ SZCB2 BL @FAIL SZCB2 ANDI R3,>E400 CI R3,>C000 JEQ SZCB3 BL @FAIL SZCB3 RTWP SRA TEXT 'SRA ' LI R5,>8224 LI R0,>F326 SRA R5,0 STST R3 CI R5,>FE08 JEQ SRA1 BL @FAIL SRA1 ANDI R3,>F000 CI R3,>9000 JEQ SRA2 BL @FAIL SRA2 RTWP SRL TEXT 'SRL ' LI R0,>FFEF SRL R0,3 STST R3 CI R0,>1FFD JEQ SRL1 BL @FAIL SRL1 ANDI R3,>F000 CI R3,>D000 JEQ SRL2 BL @FAIL SRL2 RTWP SLA TEXT 'SLA ' LI R10,>1357 SLA R10,5 STST R3 CI R10,>6AE0 JEQ SLA1 BL @FAIL SLA1 ANDI R3,>F800 CI R3,>C800 JEQ SLA2 BL @FAIL SLA2 RTWP SRC TEXT 'SRC ' LI R2,>FFEF SRC R2,7 STST R3 CI R2,>DFFF JEQ SRC1 BL @FAIL SRC1 ANDI R3,>F000 CI R3,>9000 JEQ SRC2 BL @FAIL SRC2 RTWP SLAST END