Trailing-Edge
-
PDP-10 Archives
-
klad_sources
-
klad.sources/dskae1.mac
There are no other files named dskae1.mac in the archive.
SUBTTL DIAGNOSTIC SECTION
START: SETZM USER# ;CLEAR USER CONTROL WORD
JSP 0,.+1 ;GET FLAGS
TLNE USERF ;IN USER MODE?
SETOM USER ;YES, SET USER CONTROL WORD
SKIPN MONFLG ;SPECIAL USER MODE?
SETZM USER ;YES, CLEAR USER CONTROL WORD
SKIPN USER
JRST STARTA
SKIPL MONCTL
TTCALL 3,PGMNAM
JRST STARTA
PGMNAM: ASCIZ/
DECSYSTEM-2020 BASIC INSTRUCTION DIAGNOSTIC (5) [DSKAE]
/
;BASIC INSTRUCTION TEST (5)
;THE TEST IS DESIGNED FOR INITIAL DEBUGGING OF
;PROCESSOR HARDWARE AND TO DETECT (SOLID) FAILURES
;IN THE FIELD.
STARTA: JRST .+1
SUBTTL TEST OF JSR INSTRUCTION
;**********
;THIS TEST VERIFIES THAT JSR STORES THE FLAGS AND PC IN LOCATION E.
;IN THIS CASE, E IS CLEARED, CRY0 IS SET AND JSR IS EXECUTED.
;NEXT, E IS CHECKED FOR ITS CONTENTS NON-ZERO. IF C(E) IS NON-ZERO,
;THIS TEST PASSES.
C23000: SFLAG CRY0 ;SET CRY0 FLAG
SETZM .+2 ;PRELOAD E WITH 0
JSR .+1 ;*JSR SHOULD PLACE FLAGS AND PC INTO AC
0 ;E: PRESET TO 0, SHOULD RECEIVE FLAGS AND PC FROM JSR
SKIPN .-1 ;PASS IF C(E) IS NON-ZERO.
STOP
;**********
;THIS TEST VERIFIES THAT JSR IGNORES THE AC FIELD;
;HENCE, IT DOES NOT MODIFY THE SPECIFIED AC.
;IN THIS CASE, CRY0 IS SET. THE AC IS PRELOADED WITH -1,,-1 AND JSR IS EXECUTED.
;THE AC IS THEN CHECKED. IF C(AC)=-1,,-1, THIS TEST PASSES.
C23100: SFLAG CRY0 ;SET CRY0
SETO 1, ;PRELOAD AC WITH -1,,-1
JSR 1,.+1 ;*JSR SHOULD NOT MODIFY THE AC
0 ;STORE PC + FLAGS HERE
CAME 1,[-1] ;PASS IF C(AC)=-1,,-1
STOP
;**********
;THIS TEST VERIFIES THAT JSR STORES THE FLAGS IN E-LEFT HALF.
;IN THIS TEST, CRY0 IS SET, E IS CLEARED AND JSR IS EXECUTED.
;NEXT, C(E-LEFT) ARE PLACED INTO AC0 AND AC0 IS CHECKED FOR ITS CONTENTS NON-ZERO.
;IF C(AC0) ARE NON-ZERO, THIS TEST PASSES.
C23200: SFLAG CRY0 ;SET CRY0
SETZM .+2 ;CLEAR E
JSR .+1 ;*JSR SHOULD STORE FLAGS IN E
0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST)
HLLZ .-1 ;PUT FLAGS INTO AC0
SKIPN ;PASS IF C(AC0) NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT JSR TRANSFERS CONTROL TO E+1.
;IN THIS CASE, CRY0 IS SET AND E AND AC0 CLEARED; THEN, JSR IS EXECUTED.
;IF JSR RESUMES CONTROL AT E INSTEAD OF E+1, AC0 WILL BE MODIFIED;
;HENCE, THE TEST WILL FAIL WHEN AC0 IS CHECKED FOR 0 BECAUSE
;C(E) IS DECODED AS A MOVE INSTRUCTION.
C23300: SFLAG CRY0 ;SET CRY0
SETZB .+2 ;CLEAR AC0 AND E
JSR .+1 ;*JSR SHOULD RESUME CONTROL AT E+1
0 ;STORE FLAGS HERE (CRY0 MAKES THIS A MOVE INST)
SKIPE 0 ;PASS IF C(AC0)=0
STOP
;**********
;THIS TEST VERIFIES THAT JSR JUMPS TO E+1
;IN THIS CASE, AC0 IS CLEARED AND CRY0 IS SET; THEN, JSR .+2 IS EXECUTED.
;IF JSR DID NOT JUMP, ONES ARE LOADED WITH AC0; AND THE TEST FAILS.
;OTHERWISE, AC0 REMAINS CLEAR AND THE TEST PASSES
C23400: SFLAG CRY0 ;SET CRY0
SETZ ;CLEAR AC0
JSR .+2 ;*JSR SHOULD JUMP
SETO ;LOAD AC0 WITH ONES IF JSR FAILED TO JUMP
0 ;STORE FLAGS HERE
SKIPE ;PASS IF JSR JUMPED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC
;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION.
;THIS TEST WILL FAIL IF JSR STORES E INSTEAD OF PC IN E - RIGHT HALF.
;IN CASE OF FAILURE, AR PC EN AT ET2 WAS FAULTY.
C23500: SFLAG 0 ;CLEAR ALL FLAGS
JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT
HALT . ;JSR SHOULD SKIP OVER THIS HALT
0 ;STORE FLAGS AND PC HERE
HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0
CAIN .-2 ;FAIL IF C(AC0)=E
STOP
;**********
;THIS TEST VERIFIES THAT JSR STORES THE PC IN E - RIGHT HALF. THE PC
;IS ONE GREATER THAN THE LOCATION OF THE JSR INSTRUCTION.
;THIS TEST WILL PASS IF JSR STORES PC IN E - RIGHT HALF.
C23600: JSR .+2 ;*JSR SHOULD STORE PC+1 IN E - RIGHT
HALT . ;JSR SHOULD SKIP OVER THIS HALT
0 ;STORE FLAGS AND PC HERE
HRRZ .-1 ;PUT STORED CONTENTS OF E - RIGHT INTO AC0
CAIE C23600+1 ;PASS IF C(AC0)=C23600+1 [PC]
STOP
;**********
SUBTTL TEST OF JSA INSTRUCTION
;**********
;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1.
;IN THIS TEST, AC1 IS CLEARED AND A CAM 0,0 IS LOADED
;INTO THE AC OF THE JSA INSTRUCTION.
;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH ONES. AC1 IS CHECKED FOR ZEROS.
;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP.
C23700: SETZ 1, ;CLEAR AC1
MOVE [CAM] ;LOAD CAM INTO AC0
JSA .+2 ;*JSA SHOULD JUMP TO E+1
SETO 1 ;JSA SHOULD JUMP OVER THIS INSTRUCTION
0 ;PASS IF JSA JUMPED
SKIPE 1
STOP
;**********
;THIS TEST VERIFIES THAT JSA JUMPS TO LOCATION E+1.
;IN THIS TEST, AC1 IS CLEARED AND A MOVEI 1,1234 IS LOADED
;INTO THE AC OF THE JSA INSTRUCTION.
;IF JSA DOES NOT JUMP, AC1 WILL BE LOADED WITH 0,,1234. AC1 IS CHECKED FOR ZEROS.
;IF C(AC1)=0, THE TEST PASSES; OTHERWISE, THIS TEST FAILS BECAUSE JSA DID NOT JUMP.
C24000: SETZ 1, ;CLEAR AC1
MOVE [MOVEI 1,1234] ;LOAD MOVEI 1,1234 INTO AC
JSA .+1 ;*JSA SHOULD JUMP TO E+1
0 ;JSA SHOULD JUMP OVER THIS LOCATION
CAIN 1,1234 ;FAIL IF JSA DID NOT JUMP OVER PREVIOUS INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT JSA LOADS PC OF LOC OF JSA+1 INTO AC RIGHT.
;THIS TEST WILL FAIL IF JSA LOADS E INTO AC RIGHT INSTEAD OF PC.
C24100: JSA .+2 ;*JSA SHOULD LOAD PC INTO AC RIGHT
HALT . ;JSA SHOULD JUMP OVER THIS LOCATION
0 ;JSA SHOULD JUMP OVER THIS LOCATION
HRRZM 1 ;PUT C(AC-RIGHT) INTO AC1
CAIN 1,.-2 ;FAIL IF E WAS LOADED INTO AC-RIGHT INSTEAD OF PC
STOP
;**********
;THIS TEST VERIFIES THAT JSA PLACES C(AC) INTO E
;THIS TEST WILL FAIL IF EITHER 0,,E OR 0,,PC IS LOADED
;INTO E INSTEAD OF C(AC)
C24200: SETZB .+2 ;CLEAR AC,E
JSA .+1 ;*JSA SHOULD LOAD C(AC) [ZEROS] INTO E
0 ;JSA SHOULD PLACE ZEROS HERE
MOVE 1,.-1 ;SAVE C(AC)
CAIN 1,.-2 ;FAIL IF JSA LOADED 0,,E OR 0,,PC INTO E
STOP
;**********
;THIS TEST VERIFIES THAT JSA PLACES PC INTO AC-RIGHT
;THIS TEST WILL FAIL IF PC IS NOT LOADED INTO AC-RIGHT
C24300: MOVEI -1 ;PRELOAD AC WITH 0,,-1
JSA .+1 ;*JSA SHOULD PLACE E,,PC INTO THE AC
0 ;JSA SHOULD PLACE C(AC) HERE
TRNN -1 ;FAIL IF AR LT AR RT EN FAILED
STOP
;**********
;THIS TEST VERIFIES THAT JSA PLACES THE PC OF THE LOCATION OF JSA+1 IN AC-RIGHT
;THIS TEST FAILS IF A PC WAS NOT LOADED INTO AC RIGHT
C24400: SETZ ;CLEAR AC
JSA .+1 ;*JSA SHOULD LOAD PC INTO AC - RIGHT
0 ;JSA SHOULD PLACE C(AC) HERE
TRNN -1 ;PASS IF AC - RIGHT IS NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT JSA PLACES IN AC-LEFT
;THIS TEST FAILS IF JSA LOADS PC INSTEAD OF E INTO AC-LEFT
C24500: JSA .+2 ;*JSA SHOULD LOAD E INTO AC-LEFT
HALT . ;JSA SHOULD JUMP OVER THIS INSTRUCTION
0 ;E:
HLRZM 1 ;SAVE C(AC - LEFT)
CAIN 1,.-3 ;FAIL IF JSA LOADED PC INSTEAD OF E INTO AC-LEFT
STOP
;**********
;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC
;FIRST, THE AC IS PRELOADED WITH -1,,-1; THEN, JSA IS EXECUTED.
;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES
C24600: SETO ;PRELOAD AC WITH -1,,-1
JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC
HALT . ;JSA SHOULD JUMP OVER HERE, PC:
0 ;JSA SHOULD STORE C(AC) HERE, E:
CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC
STOP
;**********
;THIS TEST VERIFIES THAT JSA LOADS E,,PC INTO THE AC
;FIRST, THE AC IS PRELOADED WITH 0 JSA IS EXECUTED.
;THE AC IS CHECKED FOR E,,PC. IF C(AC)=E,,PC, THIS TEST PASSES
C24700: SETZ ;PRELOAD AC WITH 0
JSA .+2 ;*JSA SHOULD PLACE E,,PC INTO THE AC
HALT . ;JSA SHOULD JUMP OVER HERE, PC:
0 ;JSA SHOULD STORE C(AC) HERE, E:
CAME [XWD .-1,.-2] ;PASS IF C(AC)=E,,PC
STOP
;**********
;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E.
;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES;
;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0,
;THIS TEST PASSES.
C25000: SETZ ;CLEAR AC
SETOM .+2 ;PRELOAD E WITH -1,,-1
JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E
0 ;E: SHOULD GET C(AC) FROM JSA
SKIPE .-1 ;PASS IF C(E)=0
STOP
;**********
;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E.
;AC IS FIRST PRELOADED WITH -1,,-1 AND E IS CLEARED;
;THEN, JSA IS EXECUTED. E IS CHECKED FOR -1,,-1. IF C(E)=-1,,-1,
;THIS TEST PASSES.
C25100: SETOB 1 ;PRELOAD AC -1,,-1
SETZM .+2 ;PRELOAD E WITH 0
JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E
0 ;E: SHOULD GET C(AC) FROM JSA
CAME 1,.-1 ;PASS IF C(E)=-1,,-1
STOP
;**********
;THIS TEST VERIFIES THAT JSA LOADS C(AC) INTO E.
;AC IS FIRST CLEARED AND E IS PRELOADED WITH ONES;
;THEN JSA IS EXECUTED. E IS CHECKED FOR ZEROS. IF C(E)=0,
;THIS TEST PASSES.
C25200: MOVEI -1 ;PRELOAD AC WITH 0,,-1
JSA .+1 ;*JSA SHOULD PLACE C(AC) INTO E
0 ;E: SHOULD GET C(AC) FROM JSA
MOVE 1,.-1 ;PASS IF C(E)=0,,-1
CAIE 1,-1
STOP
;**********
;THIS TEST VERIFIES THAT JSA DOES NOT MODIFY AC+1
;IN THIS TEST, AC+1 IS PRELOADED WITH -1,,-1; THEN JSA IS EXECUTED
;AC+1 IS THEN CHECKED FOR ITS ORIGINAL CONTENTS, -1,,-1.
;IF C(AC+1)=-1,,-1, THIS TEST PASSES
C25300: SETOM 1 ;PRELOAD AC+1 WITH -1,,-1
JSA .+1 ;*JSA SHOULD NOT MODIFY AC+1
CAM ;JSA SHOULD JUMP OVER THIS, E:PC:
CAME 1,[-1] ;PASS IF AC+1 WAS NOT MODIFIED BY JSA
STOP
;**********
SUBTTL TEST OF JRA INSTRUCTION
;**********
;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E
;THIS TEST FAILS IF JRA DOES NOT JUMP TO E.
C25400: MOVE [JRST .+4] ;PRELOAD AC0 WITH JRST .+4
MOVSI 1,.+2 ;PRELOAD AC WITH E,,0
JRA 1,.+1 ;*JRA SHOULD JUMP TO NEXT INSTRUCTION
SKIPA ;PASS IF JRA JUMPS TO E
STOP
;**********
;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E
;THIS TEST FAILS IF JRA DOES NOT JUMP TO E.
C25500: MOVSI .+3 ;PRELOAD AC WITH E+1
JRA .+1 ;*JRA SHOULD JUMP TO NEXT SEQUENTIAL INSTRUCTION
SKIPA ;PASS IF JRA JUMPS TO E
STOP
;**********
;THIS TEST VERIFIES THAT JRA TRANSFERS CONTROL TO LOCATION E
;THIS TEST FAILS IF JRA DOES NOT JUMP TO E.
C25600: SETZB 1 ;PRELOAD AC0, AC1 WITH ZEROS
JRA .+2 ;*JRA SHOULD JUMP OVER NEXT SEQUENTIAL INSTRUCTION
SETO 1, ;LOAD AC1 WITH ONES IF JRA DOES NOT JUMP
SKIPE 1 ;PASS IF JRA JUMPED
STOP
;**********
;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC AND JUMPS TO E
;THIS TEST FAILS IF JRA JUMPS TO E+1 OR DOES NOT LOAD THE AC CORRECTLY.
C25700: SETZ ;CLEAR AC
JRA .+1 ;*JRA SHOULD PLACE 0 INTO THE AC AND JUMP .+1
SKIPE ;PASS IF AC WAS LOADED CORRECTLY
;AND JRA JUMPED CORRECTLY.
STOP
;**********
;THIS TEST VERIFIES THAT JRA PLACES C(C(AC-LEFT)) INTO THE AC
;FIRST, THE AC IS PRELOADED WITH 1,,2 AND AC1 AND AC2 ARE
;INITIALIZED WITH THEIR RESPECTIVE ADDRESSES; JRA IS EXECUTED, AND
;THE AC IS CHECKED FOR 0,,1, THE ORIGINAL C(C(AC-LEFT)). IF C(AC)=0,,1,
;THIS TEST PASSES
C26200: MOVE [XWD 1,2] ;PRELOAD AC WITH 1,,2
MOVEI 1,1 ;INITIALIZE AC1 WITH 0,,1
MOVEI 2,2 ;INITIALIZE AC2 WITH 0,,2
JRA .+1 ;*JRA SHOULD PLACE 0,,1 INTO THE AC
CAIE 1 ;PASS IF C(AC)=0,,1
STOP
;**********
;THIS TEST VERIFIES THAT JRA CAN RESTORE AC0 FROM AC0 WHEN AC0 IS THE
;SPECIFIED AC AND C(AC0-LEFT)=0.
;FIRST, AC0 IS PRELOADED AND JRA IS EXECUTED. THEN, AC0 IS CHECKED FOR
;ITS INITIAL CONTENTS. IF THE RESULT IN AC0, IS CORRECT, THIS TEST PASSES.
C26300: HRRZI [135531,,246642] ;PRELOAD AC0 WITH 0,, LITERAL ADDRESS
JRA .+1 ;*JRA SHOULD PLACE C(AC0) INTO AC0
CAIE [135531,,246642] ;PASS IF JRA PLACED C(AC0) INTO AC0
STOP
;**********
;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE
;SPECIFIED AC.
;FIRST, AC0 IS PRELOADED WITH [LITERAL ADDRESS ,,0] AND JRA IS EXECUTED. THEN,
;AC0 IS CHECKED FOR THE SPECIFIED LITERAL, 135246,,246135. IF
;C(AC0)=135246,,246135, THE TEST PASSES.
C26400: HRLZI [135246,,246135] ;PRELOAD AC0 WITH [LITERAL ADDRESS ,,0]
JRA .+1 ;*JRA SHOULD PLACE 135246,,246135 INTO AC0
CAME [135246,,246135];PASS IF C(AC0)=135246,,246135
STOP
;**********
;THIS TEST VERIFIES THAT JRA CAN RESOTRE AC0 FROM MEMORY WHEN AC0 IS THE
;SPECIFIED AC.
;FIRST, AC0 IS PRELOADED WITH [-1,, ADDRESS OF JCA INSTRUCTION] AND JRA IS EXECUTED.
;THEN, AC0 IS CHECKED FOR THE JRA INSTRUCTION. IF
;C(AC0)= THE JRA INSTRUCTION, THE TEST PASSES.
C26500: HRLOI .+1 ;PRELOAD AC WITH -1,, ADDRESS OF JRA INSTRUCTION
JRA .+1 ;*JRA SHOULD PLACE ITSELF INTO AC0
CAME .-1 ;PASS IF AC CONTAINS JRA INSTRUCTION
STOP
;**********
SUBTTL TESTS OF BIS FLAG
;**********
;THIS TEST VERIFIES THAT JRST 2, CAN CLEAR BIS
;FIRST, BIS IS SET VIA JRST 2, ;THEN, BIS IS CLEARED VIA JRST 2,.
;THE FLAGS ARE SAVED AND BIS IS CHECKED. THIS TEST PASSES IF BIS IS RESET;
;OTHERWISE JRST 2, FAILED TO RESET BIS.
C26600: SFLAG BIS ;SET BIS FLAG
SFLAG ;*RESET BIS FLAG
JSP .+1 ;SAVE FLAGS
TLNE BIS+37 ;PASS IF BIS FLAG IS RESET
STOP
;**********
;THIS TEST VERIFIES THAT JRST 2, CAN SET BIS.
;FIRST, BIS IS SET VIA JRST 2, AND THE FLAGS ARE SAVED.
;BIS IS THEN CHECKED. IF BIS IS SET, THIS TEST PASSES.
C26700: SFLAG BIS ;*SET BIS FLAG VIA JRST
JSP .+1 ;SAVE FLAGS
TLNN BIS ;PASS IF BIS FLAG IS SET
STOP
;**********
;THIS TEST VERIFIES THAT JSR ALWAYS RESETS BIS.
;FIRST BIS IS SET; THEN JSR IS EXECUTED. THE FLAGS ARE
;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSR, THIS TEST PASSES.
C27000: SFLAG BIS ;SET BIS
JSR .+1 ;*JSR SHOULD RESET BIS
0 ;JSR SAVES FLAGS HERE
JSP .+1 ;SAVE FLAGS
TLNE BIS ;PASS IF BIS FLAG IS RESET
STOP
;**********
;THIS TEST VERIFIES THAT JSP ALWAYS RESETS BIS.
;FIRST BIS IS SET; THEN JSP IS EXECUTED. THE FLAGS ARE
;THEN SAVED AND CHECKED. IF BIS WAS RESET VIA JSP, THIS TEST PASSES.
C27001: SFLAG BIS ;SET BIS
JSP .+1 ;*JSP SHOULD RESET BIS
JSP .+1 ;SAVE FLAGS
TLNE BIS ;PASS IF BIS FLAG IS RESET
STOP
;**********
;THIS TEST VERIFIES THAT THE BITS IN POSITIONS 8, 9 AND 10 ARE CLEARABLE.
;FIRST, THE ARITHMETIC FLAGS ARE CLEARED;
;THEN, BITS 8, 9 AND 10 OF THE PC-WORD IS EXAMINED.
;IF ANY OF THESE BITS ARE SET, THIS TEST FAILS BECAUSE THEY SHOULD BE CLEAR.
C27100: SFLAG ;CLEAR ARITHMETIC FLAGS
JSP .+1 ;SAVE FLAGS
TLNE 1600 ;PASS IF THESE BITS ARE CLEAR
STOP
;**********
SUBTTL TEST OF MSCL FWT INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT MOVEM PLACES C(AC) INTO E AND DOES
;NOT MODIFY C(AC).
;IN THIS CASE, C(AC)=252525,,252525 ANS C(E)=707070,,707070.
;HENCE, THE RESULT IN E SHOULD BE 252525,,252525.
;THE AC IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS
;FOUND IN THE AC, IT WAS CLOBBERED BY MOVEM, AND THIS TEST FAILS.
;E IS CHECKED FOR 252525,,252525. IF ANY OTHER NUMBER IS FOUND
;IN E, IT WAS UPDATED INCORRECTLY BY MOVEM.
C50000: MOVE [252525,,252525] ;PRELOAD AC WITH 252525,,252525
MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070
MOVEM 0,1 ;*MOVEM SHOULD PLACE 252525,,252525
;INTO E AND NOT AFFECT THE AC
CAME 0,[252525,,252525] ;PASS IF C(AC) IS NOT CLOBBERED
STOP
CAME 1,[252525,,252525] ;PASS IF E WAS UPDATED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT MOVES PLACES C(E) INTO THE AC IF AC IS NON-ZERO.
;IN THIS CASE, C(AC)=707070,,707070 AND C(E)=123456,,123456. HENCE, BOTH
;THE AC AND E SHOULD CONTAIN 123456,,123456 AFTER MOVES IS EXECUTED.
;BOTH AC AND E ARE CHECKED FOR 123456,,123456. IF EITHER AC OR E
;CONTAIN A DIFFERENT RESULT, THIS TEST FAILS
C50100: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVE 1,[123456,,123456] ;PRELOAD E WITH 123456,,123456
MOVES 2,1 ;*MOVES SHOULD PLACE 123456,,123456
;INTO BOTH AC AND E
CAME 2,[123456,,123456] ;PASS IF C(AC)=123456,,123456
STOP
CAME 1,[123456,,123456] ;PASS IF C(E)=123456,,123456
STOP
;**********
;THIS TEST VERIFIES THAT MOVES IS A NO-OP IF AC=0
;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=707070,,707070
;AFTER MOVES IS EXECUTED, AC AND E ARE CHECKED FOR THEIR ORIGINAL DATA.
;IF EITHER C(AC) OR C(E) CHANGED AS A RESULT OF MOVES, THIS TEST FAILS.
C50110: MOVE 1,[707070,,707070] ;PRELOAD E WITH 707070,,707070
SETO ;PRELOAD AC WITH -1,,-1
MOVES 0,1 ;*MOVES SHOULD FUNCTION AS A NO-OP
CAME 0,[-1,,-1] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
CAME 1,[707070,,707070] ;PASS IF C(E) WAS NOT MODIFIED
STOP
;**********
;THIS TEST VERIFIES THAT MOVSI LOADS THE WORD E,0 INTO THE AC.
;IN THIS CASE, C(AC)=707070,,707070 AND E=0,,-1.
;HENCE, THE RESULT IN THE AC SHOULD BE -1,,0.
;THE AC IS CHECKED FOR -1,,0. IF C(AC)=-1,,0, THIS TEST PASSES.
C50200: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVSI 1,-1 ;*MOVSI SHOULD PLACE -1,,0 INTO THE AC
CAME 1,[-1,,0] ;PASS IF C(AC)=1,,0
STOP
;**********
;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC)
;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3.
;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT
;IN E SHOULD BE 0,,1
C50300: SETO 1, ;PRELOAD AC WITH -1,,-1
MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3
MOVNM 1,2 ;*MOVNM SHOULD PLACE 0,,1 INTO E
;AND NOT AFFTECT C(AC)
CAME 1,[-1] ;PASS IF C(AC)=-1,,-1
STOP
CAIE 2,1 ;PASS IF C(E)=0,,1
STOP
;**********
;THIS TEST VERIFIES THAT MOVNM PLACES THE NEGATIVE OF C(AC)
;INTO E. IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-3.
;HENCE, THE RESULT IN THE AC SHOULD BE -1,,-1 AND THE RESULT
;IN E SHOULD BE 0,,1
C50301: SETO 1, ;PRELOAD AC WITH -1,,-1
MOVE 2,[-1,,-3] ;PRELOAD E WITH -1,,-3
MOVEM 2,E50301
MOVNM 1,E50301 ;*MOVNM SHOULD PLACE 0,,1 INTO E
;AND NOT AFFTECT C(AC)
CAME 1,[-1] ;PASS IF C(AC)=-1,,-1
STOP
MOVE 2,E50301
CAIE 2,1 ;PASS IF C(E)=0,,1
STOP
SKIPA ;GO TO NEXT TEST
E50301: 0 ;TESTED MEMORY LOCATION
;**********
;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E
;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0,
;C(AC)=0 AND C(E)=0,,1
;HENCE, THE RESULT IN THE AC SHOULD BE 0
;AND THE RESULT IN E SHOULD BE -1,,-1
C50400: SETZ ;CLEAR AC
MOVEI 2,1 ;PRELOAD E WITH 0,,1
MOVNS 0,2 ;*MOVNS SHOULD PLACE -1,,-1 INTO E
;AND SHOULD NOT AFFECT THE AC
SKIPE ;PASS IF THE AC IS UNALTERED
STOP
CAME 2,[-1] ;PASS IF C(E)=-1,,-1
STOP
;**********
;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E
;AND INTO THE AC IF THE AC IS NON-ZO. IN THIS CASE, AC=0,
;C(AC)=0 AND C(E)=0,,1
;HENCE, THE RESULT IN THE AC SHOULD BE 0
;AND THE RESULT IN E SHOULD BE -1,,-1
C50401: SETZ ;CLEAR AC
MOVEI 2,1 ;PRELOAD E WITH 0,,1
MOVEM 2,E50401
MOVNS 0,E50401 ;*MOVNS SHOULD PLACE -1,,-1 INTO E
;AND SHOULD NOT AFFECT THE AC
SKIPE ;PASS IF THE AC IS UNALTERED
STOP
MOVE 2,E50401
CAME 2,[-1] ;PASS IF C(E)=-1,,-1
STOP
SKIPA ;GO TO NEXT TEST
E50401: 0 ;TESTED MEMORY LOCATION
;**********
;THIS TEST VERIFIES THAT MOVNS PLACES THE NEGATIVE OF C(E) INTO E
;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1,
;C(AC=0 AND C(E)=3
;HENCE, THE RESULT IN THE AC SHOULD BE -1,,3
;AND THE RESULT IN E SHOULD BE -1,,3.
C50410: SETZ 1, ;CLEAR AC
MOVEI 2,3 ;PRELOAD WITH 0,,3
MOVNS 1,2 ;*MOVNS SHOULD PLACE -1,,-3 INTO E
;AND -1,,-3 INTO THE AC
CAME 1,[-1,,-3] ;PASS IF C(AC)=-1,,-3
STOP
CAME 2,[-1,,-3] ;PASS IF C(E)=-1,,-3
STOP
;**********
;THIS TEST VERIFIES THAT MOVMI MOVES THE WORD 0,,E INTO THE AC.
;IN THIS CASE, C(AC)=0 AND E=0,,-2. HENCE, THE RESULT IN THE AC
;SHOULD BE 0,,-2.
C50500: SETZ 1, ;CLEAR AC
MOVMI 1,-2 ;*MOVMI SHOULD PLACE 0,,-2 INTO AC
CAIE 1,-2 ;PASS IF C(AC)=0,,-2
STOP
;**********
;THIS TEST VERIFIES THAT MOVM MOVES THE MAGNITUDE OF C(E) NTO THE AC.
;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-2. HENCE, THE RESULT IN THE AC
;SHOULD BE 0,,2.
C50501: SETZ 1, ;CLEAR AC
MOVE 3,[-2] ;PRELOAD E WITH -1,,-2
MOVM 1,3 ;*MOVM SHOULD PLACE 0,,2 INTO AC
CAIE 1,2 ;PASS IF C(AC)=0,,2
STOP
;**********
;THIS TEST VERIFIES THAT MOVMM PLACES THE MAGNITUDE OF C(AC)
;INTO E. IN THIS CASE, C(AC)=-1,,-2 AND C(E)=0. HENCE, THE
;RESULT IN E SHOULD BE 0,,2 AND C(AC) SHOULD REMAIN UNCHANGED.
C50600: MOVE 1,[-1,,-2] ;PRELOAD AC WITH -1,,-2
SETZ 2, ;CLEAR E
MOVMM 1,2 ;*MOVMM SHOULD PLACE 0,,2 INTO E
;AND SHOULD NOT CHANGE C(AC)
CAME 1,[-1,,-2] ;PASS IF C(AC) IS NOT ALTERED
STOP
CAIE 2,2 ;PASS IF C(E)=0,,2
STOP
;**********
;THIS TEST VERIFIES THAT MONMS PLACES THE MAGNITUDE OF C(E) INTO E
;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=0, C(AC)=0
;AND C(E)=-1,,-2.
;HENCE, THE RESULT IN THE AC SHOULD BE 0 AND THE RESULT IN
;E SHOULD BE 0,,2.
C50700: SETZ ;CLEAR AC
MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-1
MOVMS 0,2 ;*MOVMS SHOULD PLACE 0,,1 INTO E
;AND SHOULD NOT CHANGE C(AC)
SKIPE ;PASS IF C(AC) IS UNALTERED
STOP
CAIE 2,2 ;PASS IF C(E)=0,,2
STOP
;**********
;THIS TEST VERIFIES THAT MOVMS PLACES THE MAGNITUDE OF C(E) INTO E
;AND INTO THE AC IF THE AC IS NON-ZERO. IN THIS CASE, AC=1, C(AC)=-1,,-1
;AND C(E)=-1,,-2.
;HENCE, THE RESULT IN THE AC SHOULD BE 0,,2 AND THE RESULT
;IN E SHOULD BE 0,,2.
C50710: SETO 1, ;PRELOAD AC WITH -1,,-1
MOVE 2,[-1,,-2] ;PRELOAD E WITH -1,,-2
MOVMS 1,2 ;*MOVMS SHOULD PLACE 0,,2 INTO E
;AND SHOULD PLACE 0,,2 INTO THE AC
CAIE 1,2 ;PASS IF C(AC)=0,,2
STOP
CAIE 2,2 ;PASS IF C(E)=0,,2
STOP
;**********
SUBTTL TEST OF MSCL ADD/SUB INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT SUBI SUBTRACTS THE WORD 0,,E FROM C(AC)
;AND PLACES THE RESULT INTO THE AC. IN THIS CASE, C(AC)=70 AND
;E=0,,2. HENCE, THE RESULT IN THE AC SHOULD BE 66.
C51000: MOVEI 1,70 ;PRELOAD AC WITH 70
SUBI 1,2 ;*SUBI SHOULD PLACE 66 INTO AC
CAIE 1,66 ;PASS IF C(AC)=66
STOP
;**********
;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND
;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE,
;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND
;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY.
C51100: MOVEI 1,100 ;PRELOAD AC WITH 0,,100
MOVEI 2,37 ;PRELOAD E WITH 0,,37
SUBM 1,2 ;*SUBM SHOULD PLACE
;0,,41 INTO E AND NOT CHANGE C(AC)
CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED
STOP
CAIE 2,41 ;PASS IF C(E)=0,,41
STOP
;**********
;THIS TEST VERIFIES THAT SUBM SUBTRACTS C(E) FROM C(AC) AND
;PLACES THE RESULT INTO E. THE AC IS UNAFFECTED. IN THIS CASE,
;C(AC)=100 AND C(E)=37. HENCE, THE RESULTS IN AC AND
;E SHOULD BE 0,,100 AND 0,,41 RESPECTIVELY.
C51101: MOVEI 1,100 ;PRELOAD AC WITH 0,,100
MOVEI 2,37 ;PRELOAD E WITH 0,,37
MOVEM 2,E51101
SUBM 1,E51101 ;*SUBM SHOULD PLACE
;0,,41 INTO E AND NOT CHANGE C(AC)
CAIE 1,100 ;PASS IF C(AC) IS UNCHANGED
STOP
MOVE 2,E51101
CAIE 2,41 ;PASS IF C(E)=0,,41
STOP
SKIPA ;GO TO NEXT TEST
E51101: 0 ;TEST WORD MEMORY
;**********
;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND
;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE,
;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH
;AC AND E SHOULD BE 0,,41.
C51200: MOVEI 1,100 ;PRELOAD AC WITH 0,,100
MOVEI 2,37 ;PRELOAD E WITH O,,37
SUBB 1,2 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E
CAIE 1,41 ;PASS IF C(AC)=0,,41
STOP
CAIE 2,41 ;PASS IF C(E)=0,,41
STOP
;**********
;THIS TEST VERIFIES THAT SUBB SUBTRACTS C(E) FROM C(AC) AND
;PLACES THE RESULT INTO BOTH AC AND E. IN THIS CASE,
;C(AC)=0,,100 AND C(E)=0,,37. HENCE, THE RESULT IN BOTH
;AC AND E SHOULD BE 0,,41.
C51201: MOVEI 1,100 ;PRELOAD AC WITH 0,,100
MOVEI 2,37 ;PRELOAD E WITH O,,37
MOVEM 2,E51201
SUBB 1,E51201 ;*SUBB SHOULD PLACE 0,,41 INTO BOTH AC AND E
CAIE 1,41 ;PASS IF C(AC)=0,,41
STOP
MOVE 2,E51201
CAIE 2,41 ;PASS IF C(E)=0,,41
STOP
SKIPA ;GO TO NEXT TEST
E51201: 0 ;TEST WORD MEMORY
;**********
SUBTTL TEST OF MSCL CAIX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E.
;IN THIS CASE, C(AC)=0,,1 AND E=0,,2
;HENCE, CAIL SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIL SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES
C51300: MOVEI 1,1 ;PRELOAD AC WITH 0,,1
CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E.
;IN THIS CASE, C(AC)=0,,2 AND E=0,,2.
;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES.
C51310: MOVEI 1,2 ;PRELOAD AC WITH 0,,2
CAIL 1,2 ;*CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAIL DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAIL COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN E
;IN THIS CASE, C(AC)=0,,3 AND E=0,,2
;HENCE, CAIL SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAIL DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES.
C51320: MOVEI 1,3 ;PRELOAD AC WITH 0,,3
CAIL 1,2 ;*CAIL SHOULD SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAIL DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E
;IN THIS CASE, C(AC)=-1,,-1 AND E=0
;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION
;IF CAILE SKIPS THE NEXT INSTRUCTION, THE TEST PASSES
C51400: SETO 1, ;PRELOAD AC WITH -1,,-1
CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E
;IN THIS CASE, C(AC)=0 AND E=0
;HENCE, CAILE SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAILE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C51410: SETZ 1, ;PRELOAD AC WITH 0
CAILE 1,0 ;*CAILE SHOULD SKIP THE NEXT INSTRUCTION.
STOP
;**********
;THIS TEST VERIFIES THAT CAILE COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO E
;IN THIS CASE, C(AC)=0,,1 AND E=0
;HENCE, CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAILE DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES
C51420: MOVEI 1,1 ;PRELOAD AC WITH 0,,1
CAILE 1,0 ;*CAILE SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAILE DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS
;SKIPS THE NEXT INSTRUCTION
;IN THIS CASE, C(AC)=-1,,-1 AND E=0
;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION
;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES
C51500: SETO 1, ;PRELOAD AC WITH -1,,-1
CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS
;SKIPS THE NEXT INSTRUCTION
;IN THIS CASE, C(AC)=0 AND E=0
;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES
C51510: SETZ 1, ;PRELOAD AC WITH 0
CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIA COMPARES C(AC) WITH E AND ALWAYS
;SKIPS THE NEXT INSTRUCTION
;IN THIS CASE, C(AC)=0,,1 AND E=0
;HENCE, CAIA SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIA SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C51520: MOVEI 1,1 ;PRELOAD AC WITH 0,,1
CAIA 1,0 ;*CAIA SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E.
;IN THIS CASE, C(AC)=0,,5 AND E=0,,6
;HENCE, CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAIGE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES
C51600: MOVEI 2,5 ;PRELOAD AC WITH 0,,5
CAIGE 2,6 ;*CAIGE SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAIGE DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E
;IN THIS CASE, C(AC)=0,,6 AND E=0,,6
;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C51610: MOVEI 2,6 ;PRELOAD AC WITH 0,,6
CAIGE ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIGE COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN OR EQUAL TO E.
;IN THIS CASE, C(AC)=0,,7 AND E=0,,6
;HENCE, CAIGE SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIGE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES
C51620: MOVEI 2,7 ;PRELOAD AC WITH 0,,7
CAIGE 2,6 ;*CAIGE SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIRIES THAT CAIN COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E.
;IN THIS CASE, C(AC)=0 AND E=0,,1
;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C51700: SETZ 6, ;PRELOAD AC WITH 0
CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E.
;IN THIS CASE, C(AC)=0,,1 AND E=0,,1
;HENCE, CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAIN DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES
C51710: MOVE 6,1 ;PRELOAD AC WITH 0,,1
CAIN 6,1 ;*CAIN SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAIN SKIPS
STOP
;**********
;THIS TEST VERIFIES THAT CAIN COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS NOT EQUAL TO E.
;IN THIS CASE, C(AC)=0,,2 AND E=0,,1
;HENCE, CAIN SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIN SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES
C51720: MOVEI 6,2 ;PRELOAD AC WITH
CAIN 6,1 ;*CAIN SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E.
;IN THIS CASE, C(AC)=0,,2 AND E=0,,3.
;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES
C52000: MOVEI 11,2 ;PRELOAD AC WITH 0,,2
CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAIG DID NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E.
;IN THIS CASE, C(AC)=0,,3 AND E=0,,3.
;HENCE, CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAIG DOES NOT SKIP THE NEXT INSTRUCTION, THE TEST PASSES.
C52010: MOVEI 11,3 ;PRELOAD AC WITH 0,,3
CAIG 11,3 ;*CAIG SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAIG DID NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAIG COMPARES C(AC) WITH E AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN E.
;IN THIS CASE, C(AC)=0,,4 AND E=0,,3.
;HENCE, CAIG SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAIG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C52020: MOVEI 11,4 ;PRELOAD AC WITH 0,,4
CAIG 11,3 ;*CAIG SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
SUBTTL TEST OF MSCL CAMX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAT OR EQUAL TO C(E).
;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=0
;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C52100: SETO 1, ;PRELOAD AC WITH -1,,-1
SETZ 2, ;PRELOAD E WITH 0
CAMLE 1,2 ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E).
;IN THIS CASE, C(AC)=0 AND C(E)=0
;HENCE, CAMLE SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAMLE SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES
C52110: SETZ 1, ;CLEAR AC
CAMLE 1,[0] ;*CAMLE SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
;THIS TEST VERIFIES THAT CAMLE COMPARES C(AC) WITH C(E) AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS LESS THAN OR EQUAL TO C(E).
;IN THIS CASE, C(AC)=0,,1 AND C(E)=0
;HENCE, CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAMLE DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES.
C52120: MOVEI 1,1 ;PRELOAD AC WITH 0,,1
SETZ 2, ;PRELOAD E WITH 0
CAMLE 1,2 ;*CAMLE SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAMLE DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E).
;IN THIS CASE, C(AC)=-1,,-2 AND C(E)=-1,,-2.
;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES.
C52200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2
CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION.
SKIPA ;PASS IF CAMG DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E).
;IN THIS CASE, C(AC)=-1,,-1 AND C(E)=-1,,-1.
;HENCE, CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION.
;IF CAMG DOES NOT SKIP THE NEXT INSTRUCTION, THIS TEST PASSES.
C52210: SETO 10, ;PRELOAD AC WITH -1,,-1.
CAMG 10,[-1,,-1] ;*CAMG SHOULD NOT SKIP THE NEXT INSTRUCTION
SKIPA ;PASS IF CAMG DOES NOT SKIP
STOP
;**********
;THIS TEST VERIFIES THAT CAMG COMPARES C(AC) WITH C(E) AND
;SKIPS THE NEXT INSTRUCTION IF C(AC) IS GREATER THAN C(E).
;IN THIS CASE, C(AC)=0 AND C(E)=-1,,-1.
;HENCE, CAMG SHOULD SKIP THE NEXT INSTRUCTION.
;IF CAMG SKIPS THE NEXT INSTRUCTION, THIS TEST PASSES.
C52220: SETZ 10, ;PRELOAD AC WITH 0
CAMG 10,[-1,,-1] ;*CAMG SHOULD SKIP THE NEXT INSTRUCTION
STOP
;**********
SUBTTL TEST OF MSCL JUMPX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND
;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR
;EQUAL TO 0. IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPLE SHOULD JUMP.
C52300: SETO 17, ;PRELOAD AC WITH -1,,-1
JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP
STOP
;**********
;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND
;JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR
;EQUAL TO 0. IN THIS CASE, C(AC)=0. HENCE, JUMPLE SHOULD JUMP.
C52310: SETZ 17, ;PRELOAD AC WITH 0
JUMPLE 17,.+2 ;*JUMPLE SHOULD JUMP
STOP
;**********
;THIS TEST VERIFIES THAT JUMPLE COMPARES C(AC) WITH 0 AND JUMPS
;TO THE LOCATION SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO
;0. IN THIS CASE, C(AC)=0,,1. HENCE, JUMPLE SHOULD NOT JUMP.
C52320: MOVEI 17,1 ;PRELOAD AC WITH 0,,1
JUMP 17,.+2 ;*JUMPLE SHOULD NOT JUMP
SKIPA ;PASS IF JUMPLE DOES NOT JUMP
STOP
;**********
;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO
;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC)=-1,,-1. HENCE, JUMPGE SHOULD NOT JUMP.
C52400: SETO 16, ;PRELOAD AC WITH -1,,-1
JUMPGE 16,.+2 ;*JUMPGE SHOULD NOT JUMP
SKIPA ;PASS IF JUMPGE DOES NOT JUMP
STOP
;**********
;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH O AND JUMPS TO
;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC)=0. HENCE, JUMPGE SHOULD JUMP.
C52410: SETZ 16, ;PRELOAD AC WITH 0
JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP
STOP
;**********
;THIS TEST VERIFIES THAT JUMPGE COMPARES C(AC) WITH 0 AND JUMPS TO
;THE LOCATION SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC)=0,,1. HENCE, JUMPGE SHOULD JUMP.
C52420: MOVEI 16,1 ;PRELOAD AC WITH 0,,1
JUMPGE 16,.+2 ;*JUMPGE SHOULD JUMP
STOP
;**********
SUBTTL TEST OF MSCL AOJX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND PLACES
;THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED
;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC)
;IS LESS THAN 0. IN THIS CASE, C(AC)=-1,,-2 BEFORE INCREMENTING.
;HENCE, AOJL SHOULD JUMP.
C52500: HRROI 15,-2 ;PRELOAD AC WITH -1,,-2
AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC) AND JUMP
STOP
CAME 15,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN 0.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJ SHOULD NOT JUMP
C52510: SETO 15, ;PRELOAD AC WITH
AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJL DID NOT JUMP
STOP
CAIE 15,0 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJL INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS 0 BEFORE INCREMENTING
;HENCE, AOJL SHOULD NOT JUMP
C52520: SETZ 15, ;PRELOAD AC WITH 0
AOJL 15,.+2 ;*AOJL SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJL DID NOT JUMP
STOP
CAIE 15,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS EQUAL TO 0
;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING
;HENCE, AOJE SHOULD NOT JUMP
C52600: HRROI 14,-2 ;PRELOAD AC WITH -1,,-2
AOJE 14,.+2 ;*AOJE SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJE DID NOT JUMP
STOP
CAME 14,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS EQUAL TO 0.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING.
;HENCE, AOJE SHOULD JUMP
C52610: SETO 14, ;PRELOAD AC WITH -1,,-1
AOJE 14,.+2 ;*AOJ SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 14,0 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS EQUAL TO 0.
;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING
;HENCE, AOJE SHOULD NOT JUMP
C52620: SETZ 14, ;PRELOAD AC WITH 0
AOJE 14,.+2 ;*AOJE SHOULD ADD 0,11 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJE DID NOT JUMP
STOP
CAIE 14,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO TLE$EC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJLE SHOULD
C52700: HRROI 13,-2 ;PRELOAD AC WITH -1,,-2
AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAME 13,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJLE SHOULD JUMP.
C52710: SETO 13, ;PRELOAD AC WITH -1,,-1
AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 13,0 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJLE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC) IS 0
;HENCE, AOJLE SHOULD NOT JUMP.
C52720: SETZ 13, ;PRELOAD AC WITH 0
AOJLE 13,.+2 ;*AOJLE SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJLE DID NOT JUMP
STOP
CAIE 13,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION
;SPECIFIED BY E.
;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING
;HENCE, AOJA SHOULD JUMP
C53000: HRROI 12,-2 ;PRELOAD AC WITH -1,,-2
AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAME 12,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION
;SPECIFIED BY E.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJA SHOULD JUMP
C53010: SETO 12, ;PRELOAD AC WITH -1,,-1
AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 12,0 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJA INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION
;SPECIFIED BY E.
;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING
;HENCE, AOJA SHOULD JUMP
C53020: SETZ 12, ;PRELOAD AC WITH 0
AOJA 12,.+2 ;*AOJA SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 12,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0
;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING
;HENCE, AOJGE SHOULD NOT JUMP
C53100: HRROI 11,-2 ;PRELOAD AC WITH -1,,-2
AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJGE DID NOT JUMP
STOP
CAME 11,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJ SHOULD JUMP
C53110: SETO 11, ;PRELOAD AC WITH -1,,-1
AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 11,0 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJGE INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0
;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING
;HENCE, AOJGE SHOULD JUMP
C53120: SETZ 11, ;PRELOAD AC WITH 0
AOJGE 11,.+2 ;*AOJGE SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 11,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0.
;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INCREMENTING
;HENCE, AOJN SHOULD JUMP
C53200: HRROI 10,-2 ;PRELOAD AC WITH -1,,-2
AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAME 10,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJ SHOULD NOT JUMP.
C53210: SETO 10, ;PRELOAD AC WITH -1,,-1
AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJN DID NOT JUMP
STOP
CAIE 10,0 ;PASS IF C(AC) INCREMENTED CORRRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJN INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS NOT EQUAL TO 0.
;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING
;HENCE, AOJN SHOULD JUMP.
C53220: SETZ 10, ;PRELOAD AC WITH 0
AOJN 10,.+2 ;*AOJN SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 10,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE REAULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN 0
;IN THIS CASE, C(AC) IS -1,,-2 BEFORE INC
;HENCE, AOJG SHOULD NOT JUMP
C53300: HRROI 7,-2 ;PRELOAD AC WITH -1,,-2
AOJG 7,.+2 ;*AOJG SHOULD ADD 0,11 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJG DID NOT JUMP
STOP
CAME 7,[-1] ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN 0.
;IN THIS CASE, C(AC) IS -1,,-1 BEFORE INCREMENTING
;HENCE, AOJG SHOULD NOT JUMP.
C53310: SETO 7, ;PRELOAD AC WITH -1,,-1
AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC)
;AND NOT JUMP
SKIPA ;PASS IF AOJG DID NOT JUMP
STOP
CAIE 7,0 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT AOJG INCREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN 0.
;IN THIS CASE, C(AC) IS 0 BEFORE INCREMENTING
;HENCE, AOJG SHOULD JUMP
C53320: SETZ 7, ;PRELOAD AC WITH 0
AOJG 7,.+2 ;*AOJG SHOULD ADD 0,,1 TO C(AC)
;AND JUMP
STOP
CAIE 7,1 ;PASS IF C(AC) INCREMENTED CORRECTLY
STOP
;**********
SUBTTL TEST OF MSCL AOSX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C53400: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 7,-2 ;PRELOAD E WITH -1,,-2
AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSL SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C53401: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 7,-2 ;PRELOAD E WITH -1,,-2
MOVEM 7,E53401
AOSL 6,E53401 ;*AOSL SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
MOVE 7,E53401
CAME 7,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
SKIPA ;GO TO NEXT TEST
E53401: 0 ;TEST WORD MEMORY
;**********
;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) ISLESS THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C53410: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETO 7, ;PRELOAD E WITH -1,,-1
AOSL 6,7 ;*AOSL SHOULD ADD 00,1 TO C(E)
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSL DID NOT SKIP
STOP
CAME 7,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSL INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, AOSL SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY
C53420: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 7, ;PRELOAD E WITH 0
AOSL 6,7 ;*AOSL SHOULD ADD 0,,1 TO C(E).
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSL DID NOT SKIP
STOP
CAME 7,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=5, C(AC)=707070,,707070AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C53500: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 6,-2 ;PRELOAD E WITH -1,,-2
AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSE DID NOT SKIP
STOP
CAME 6,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSE SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C53510: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETO 6, ;PRELOAD E WITH -1,,-1
AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 6,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(AC)=0
;BEFORE INCREMENTING. HENCE, AOSE SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY.
C53520: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 6, ;PRELOAD E WITH 0
AOSE 5,6 ;*AOSE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSE DID NOT SKIP
STOP
CAME 6,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C53600: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 5,-2 ;PRELOAD E WITH -1,,-2
AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP ZERO
STOP
CAME 5,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSLE SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C53610: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETOM 5, ;PRELOAD E WITH -1,,-1
AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E)
;UPDATE AC AND SKIP
STOP
CAME 5,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSLE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, AOSLE SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY.
C53620: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 5 ;PRELOAD E WITH 0
AOSLE 4,5 ;*AOSLE SHOULD ADD 0,,1 TO C(E)
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSLE DID NOT SKIP
STOP
CAME 5,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 4,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS
;THE NEXT INSTRUCTION.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C53700: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 4,-2 ;PRELOAD E WITH -1,,-2
AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 4,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSA INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS
;THE NEXT INSTRUCTION.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY
C53710: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETO 4, ;PRELOAD E WITH -1,,-1
AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 4,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 3,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOS INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS
;THE NEXT INSTRUCTION.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, AOSA SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY
C53720: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 4, ;PRELOAD E WITH 0
AOSA 3,4 ;*AOSA SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 4,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSGE SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY
C54000: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 3,-2 ;PRELOAD E WITH -1,,-2
AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSGE DID NOT SKIP
STOP
CAME 3,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 2,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY
C54010: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETO 3, ;PRELOAD E WITH 0
AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 3,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 2,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSGE INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=2, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, AOSGE SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY
C54020: MOVE 2,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 3, ;PRELOAD E WITH 0
AOSGE 2,3 ;*AOSGE SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 3,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 2,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY
C54100: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 2,-2 ;PRELOAD E WITH -1,,-2
AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 2,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 1,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSN SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY
C54110: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETO 2, ;PRELOAD E WITH -1,,-1
AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF AOSN DID NOT SKIP
STOP
CAME 2,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 1,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSN INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=1, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, AOSN SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY
C54120: MOVE 1,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 2, ;PRELOAD E WITH 0
AOSN 1,2 ;*AOSN SHOULD ADD 0,,1 TO C(E),
;UPDATE AC AND SKIP
STOP
CAME 2,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 1,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEST INSTRUCTION IF C(E) IS GREATER THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-2
;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1
;RESPECTIVELY
C54200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
HRROI 1,-2 ;PRELOAD E WITH -1,,-2
AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E),
;AND NOT SKIP
SKIPA ;PASS IF AOSG DID NOT SKIP
STOP
CAME 1,[-1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
;**********
;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=-1,,-1
;BEFORE INCREMENTING. HENCE, AOSG SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0
;RESPECTIVELY
C54210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETO 1, ;PRELOAD E WITH -1,,-1
AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E),
;AND NOT SKIP
SKIPA ;PASS IF AOSG DID NOT SKIP
STOP
CAME 1,[0] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
;***********
;THIS TEST VERIFIES THAT AOSG INCREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, AOSG SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1
;RESPECTIVELY
C54220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
SETZ 1, ;PRELOAD E WITH 0
AOSG 0,1 ;*AOSG SHOULD ADD 0,,1 TO C(E),
;AND SKIP
STOP
CAME 1,[1] ;PASS IF E INCREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
;**********
SUBTTL TEST OF MSCL SOJX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESTULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN 0.
;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJL
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1
C54300: MOVEI 17,0 ;PRELOAD AC WITH 0
SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 17,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;***********
;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN 0.
;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJL
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0.
C54310: MOVEI 17,1 ;PRELOAD AC WITH 0,,1
SOJL 17,.+2 ;*SOJL SHOULD SUBTRACT 0,,1 FROM C(AC)
SKIPA ;PASS IF SOJL DID NOT JUMP
STOP
CAME 17,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJL DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN 0
;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJ
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1
C54320: MOVEI 17,2 ;PRELOAD AC WITH 0,,2
SOJL 17,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP.
SKIPA ;PASS IF SOJL DID NOT JUMP
STOP
CAME 17,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS EQUAL TO 0.
;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJE
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1
C54400: MOVEI 16,0 ;PRELOAD AC WITH 0
SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP.
SKIPA ;PASS IF SOJE DID NOT JUMP
STOP
CAME 16,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS EQUAL TO 0
;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJ
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0
C54410: MOVEI 16,1 ;PRELOAD AC WITH 0,,1
SOJE 16,.+2 ;*SOJE SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 16,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS EQUAL TO 0.
;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJE
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1
C54420: MOVEI 16,2 ;PRELOAD AC WITH 0,,2
SOJE 16,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP.
SKIPA ;PASS IF SOJE DID NOT JUMP
STOP
CAME 16,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0
;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJLE
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1
C54500: MOVEI 15,0 ;PRELOAD AC WITH 0
SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 15,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUALTO 0.
;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJLE
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0
C54510: MOVEI 15,1 ;PRELOAD AC WITH 0,,1
SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 15,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJLE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS LESS THAN OR EQUAL TO 0.
;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJLE
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1
C54520: MOVEI 15,2 ;PRELOAD AC WITH 0,,2
SOJLE 15,.+2 ;*SOJLE SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP
SKIPA ;PASS IF SOJLE DID NOT JUMP
STOP
CAME 15,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION
;SPECIFIED BY E
;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJA
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1
C54600: MOVEI 14,0 ;PRELOAD AC WITH 0
SOJA 14,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 14,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION
;SPECIFIED BY E
;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJA
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0
C54610: MOVEI 14,1 ;PRELOAD AC WITH 0,,1
SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 14,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJA DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM ALWAYS JUMPS TO THE LOCATION
;SPECIFIED BY E
;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJA
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1
C54620: MOVEI 14,2 ;PRELOAD AC WITH 0,,2
SOJA 14,.+2 ;*SOJA SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 14,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0
;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE, SOJGE
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1
C54700: MOVEI 13,0 ;PRELOAD A C WITH 0
SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP
SKIPA ;PASS IF SOJGE DID NOT JUMP
STOP
CAME 13,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN OR EQUAL TO 0
;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJGE
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0
C54710: MOVEI 13,1 ;PRELOAD AC WITH 0,,1
SOJGE 13,.+2 ;*SOJ SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP
STOP
CAME 13,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIRIES THAT SOJGE DECREMENTS C(AC) BY 0,,1 AND PLACES THE
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS COMPARED
;TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED BY E IF C(AC IS
;GREATER THAN OR EQUAL TO 0. IN THIS CASE, C(AC = 0,,2 BEFORE
;DECREMENTING. HENCE, SOJGE SHOULD JUMP AND THE RESULT IN THE AC SHOULD
;BE 0,,1.
C54720: MOVEI 13,2 ;PRELOAD AC WITH 0,,2
SOJGE 13,.+2 ;*SOJGE SHOULD SUBTRACT0,,1 FROM C(AC)
;AND JUMP.
STOP
CAME 13,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS NON-ZERO.
;IN THIS CASE, C(AC)=0 BEFORE DECREMENTING. HENCE,SOJN
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1.
C55000: MOVEI 12,0 ;PRELOAD AC WITH 0
SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP.
STOP
CAME 12,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIRIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION SPECIFIED
;BY E IF C(AC) IS NON-ZERO.
;IN THIS CASE, C(AC) = 0,,1 BEFORE DECREMENTING. HENCE, SOJN
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0.
C55010: MOVEI 12,1 ;PRELOAD AC WITH 0,,1
SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP.
SKIPA ;PASS IF SOJN DID NOT JUMP
STOP
CAME 12,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJN DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS NON-ZERO.
;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJN
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1.
C55020: MOVEI 12,2 ;PRELOAD AC WITH 0,,2
SOJN 12,.+2 ;*SOJN SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND JUMP.
STOP
CAME 12,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN 0.
;IN THIS CASE, C(AC) = 0 BEFORE DECREMENTING. HENCE, SOJG
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE -1,,-1.
C55100: MOVEI 11,0 ;PRELOAD AC WITH 0
SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP.
SKIPA ;PASS IF SOJG DID NOT JUMP
STOP
CAME 11,[-1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIRIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN 0.
;IN THIS CASE, C(AC)=0,,1 BEFORE DECREMENTING. HENCE, SOJG
;SHOULD NOT JUMP AND THE RESULT IN THE AC SHOULD BE 0.
C55110: MOVEI 11,1 ;PRELOAD AC WITH 0,,1
SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT 0,,1 FROM C(AC)
;AND NOT JUMP.
SKIPA ;PASS IF SOJG DID NOT JUMP
STOP
CAME 11,[0] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
;THIS TEST VERIFIES THAT SOJG DECREMENTS C(AC) BY 0,,1 AND
;PLACES THE RESULT BACK INTO THE AC. THE RESULT IN THE AC IS
;COMPARED TO 0 AND THE PROGRAM JUMPS TO THE LOCATION
;SPECIFIED BY E IF C(AC) IS GREATER THAN 0.
;IN THIS CASE, C(AC)=0,,2 BEFORE DECREMENTING. HENCE, SOJG
;SHOULD JUMP AND THE RESULT IN THE AC SHOULD BE 0,,1.
C55120: MOVEI 11,2 ;PRELOAD AC WITH 0,,2
SOJG 11,.+2 ;*SOJG SHOULD SUBTRACT O,,1 FROM C(AC)
;AND JUMP.
STOP
CAME 11,[1] ;PASS IF C(AC) DECREMENTED CORRECTLY
STOP
;**********
SUBTTL TEST OF MSCL SOSX INSTRUCTIONS
;**********
;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSL SHOULD SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND -1,,-1
;RESPECTIVELY.
C55200: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 1,0 ;PRELOAD E WITH 0
SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E)
;AND SKIP
STOP
CAME 1,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
;**********
;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0
;RESPECTIVELY.
C55210: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 1,1 ;PRELOAD E WITH 0,,1
SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E),
;AND NOT SKIP.
SKIPA ;PASS IF SOSL DID NOT SKIP
STOP
CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
;**********
;THIS TEST VERIFIES THAT SOSL DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0
;RESPECTIVELY.
C55211: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 1,1 ;PRELOAD E WITH 0,,1
MOVEM 1,E55211
SOSL 0,E55211 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E),
;AND NOT SKIP.
SKIPA ;PASS IF SOSL DID NOT SKIP
STOP
MOVE 1,E55211
CAME 1,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF C(AC) WAS NOT MODIFIED
STOP
SKIPA ;GO TO NEXT TEST
E55211: 0 ;TEST WORD MEMORY
;**********
;THIS TEST VERIFIES THAT SOS DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=0, C(AC)=707070,,707070 AND C(E) 0,,2
;BEFORE INCREMENTING. HENCE, SOSL SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0,,1
;RESPECTIVELY.
C55220: MOVE 0,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 1,2 ;PRELOAD E WITH 0,,2
SOSL 0,1 ;*SOSL SHOULD SUBTRACT 0,,1 FROM C(E),
;AND NOT SKIP
SKIPA ;PASS IF SOSL DID NOT SKIP
STOP
CAME 1,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 0,[707070,,707070] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C55300: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 11,0 ;PRELOAD E WITH 0
SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSE DID NOT SKIP
STOP
CAME 11,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 10,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSE SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 707070,,707070 AND 0
;RESPECTIVELY.
C55310: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 11,1 ;PRELOAD E WITH 0,,1
SOSE 10,11 ;*SOS SHOULD SUBTRACT 0,,1 FROM C(E)
;UPDATE AC AND SKIP
STOP
CAME 11,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 10,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSE DECREMENTS C(E) BY 0,11 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=10, C(AC)=707070,,707070 AND C(E)=0,,2
;BEFORE INCREMENTING. HENCE, SOSE SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY.
C55320: MOVE 10,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 11,2 ;PRELOAD E WITH 0,,2
SOSE 10,11 ;*SOSE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSE DID NOT SKIP
STOP
CAME 11,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 10,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C55400: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 10,0 ;PRELOAD E WITH 0
SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 10,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 7,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=7, C(AC)=070707,,070707 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSLE SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C55410: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 10,1 ;PRELOAD E WITH 0,,1
SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 10,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 7,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSLE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS LESS THAN OR EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=7, C(AC)=707070,,707070 AND C(E)=0,,2
;BEFORE INCREMENTING. HENCE, SOSLE SHOULD NOT SKIP; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY.
C55420: MOVE 7,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 10,2 ;PRELOAD E WITH 0,,2
SOSLE 7,10 ;*SOSLE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSLE DID NOT SKIP
STOP
CAME 10,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 7,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS
;THE NEXT INSTRUCTION.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C55500: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 7,0 ;PRELOAD E WITH 0
SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 7,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 6,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS
;THE NEXT INSTRUCTION.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THEAC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSA SHOULD BE 0 AND 0
;RESPECTIVELY.
C55510: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 7,1 ;PRELOAD E WITH 0,,1
SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 7,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 6,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSA DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND ALWAYS SKIPS
;THE NEXT INSTRUCTION.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=6, C(AC)=707070,,707070 AND C(E)=0,,2
;BEFORE INCREMENTING. HENCE, SOSA SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY.
C55520: MOVE 6,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 7,2 ;PRELOAD E WITH 0,,2
SOSA 6,7 ;*SOSA SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 7,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 6,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSGE SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C55600: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 6,0 ;PRELOAD E WITH 0
SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSGE DID NOT SKIP
STOP
CAME 6,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 5,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE
;FINAL RESULTS IN ACAND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C55610: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 6,1 ;PRELOAD E WITH 0,,1
SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 6,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 5,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSGE DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN OR EQUAL TO 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=5, C(AC)=707070,,707070 AND C(E)=0,,2
;BEFORE INCREMENTING. HENCE, SOSGE SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY.
C55620: MOVE 5,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 6,2 ;PRELOAD E WITH 0,,2
SOSGE 5,6 ;*SOSGE SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 6,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 5,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES SOSN DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C55700: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 5,0 ;PRELOAD E WITH 0
SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 5,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 4,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC
;IN THIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSN SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C55710: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 5,1 ;PRELOAD E WITH 0,,1
SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSN DID NOT SKIP
STOP
CAME 5,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 4,[0] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSN DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS NON-ZERO
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;INtTHIS CASE, AC=4, C(AC)=707070,,707070 AND C(E)=0,,2
;BEFORE INCREMENTING. HENCE, SOSN SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 0,,1
;RESPECTIVELY
C55720: MOVE 4,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 5,2 ;PRELOAD E WITH 0,,2
SOSN 4,5 ;*SOSN SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 5,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 4,[1] ;PASS IF ACWAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIESTHAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0
;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE -1,,-1 AND -1,,-1
;RESPECTIVELY.
C56000: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 4,0 ;PRELOAD E WITH 0
SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSG DID NOT SKIP
STOP
CAME 4,[-1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 3,[-1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0.
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,1
;BEFORE INCREMENTING. HENCE, SOSG SHOULD NOT SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0 AND 0
;RESPECTIVELY.
C56010: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 4,1 ;PRELOAD E WITH 0,,1
SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND NOT SKIP
SKIPA ;PASS IF SOSG DID NOT SKIP
STOP
CAME 4,[0] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 3,[0] ;PASS IF AC WAS UPDATED IS AC NON-ZERO
STOP
;**********
;THIS TEST VERIFIES THAT SOSG DECREMENTS C(E) BY 0,,1 AND PLACES
;THE RESULT INTO E. THE RESULT IN E IS COMPARED TO 0 AND SKIPS
;THE NEXT INSTRUCTION IF C(E) IS GREATER THAN 0
;IF THE AC IS NON-ZERO, THE RESULT IS ALSO PLACED INTO THE AC.
;IN THIS CASE, AC=3, C(AC)=707070,,707070 AND C(E)=0,,2
;BEFORE INCREMENTING. HENCE, SOSG SHOULD SKIP ; AND THE
;FINAL RESULTS IN AC AND E SHOULD BE 0,,1 AND 011,
;RESPECTIVELY.
C56020: MOVE 3,[707070,,707070] ;PRELOAD AC WITH 707070,,707070
MOVEI 4,2 ;PRELOAD E WITH 0,,2
SOSG 3,4 ;*SOSG SHOULD SUBTRACT 0,,1 FROM C(E),
;UPDATE AC AND SKIP
STOP
CAME 4,[1] ;PASS IF E DECREMENTED CORRECTLY
STOP
CAME 3,[1] ;PASS IF AC WAS UPDATED IF AC NON-ZERO
STOP
;**********
ENDIT: SETZM TNUMB#
JRST BEGEND