Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/dbkaem.mac
There are no other files named dbkaem.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	;MENTION OUR NAME
	JRST	STARTA

PGMNAM:	ASCIZ/
PDP-10 KI10 BASIC INSTRUCTION DIAGNOSTIC (5) [DBKAE]
/


;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

;**********
	JRST	BEGEND