S3 JOB TEST SIGN BIT MANIPULATION (SUBTRACT)
ORG 500
START CS 332
CS
MLCWA@TEST OF SIGN BIT CONTROLS (SUBTRACT)@,250
W
CS 299
MLCWA@------------------------------------@,250
W
CS 299
H
*
MLCWA@A: NO SIGN@,250
W
CS 299
*
* A=0 B=0, B B
*
MLC N2,ADATA
MLC N1,BDATA
MLC B1,EXP
B WRT
*
* A=0, B=0, B=A => AB
*
MLC N2,ADATA
MLC N2,BDATA
MLC AB0,EXP
B WRT
*
* A=B, B=0 B>A => AB
*
MLC N1,ADATA
MLC N2,BDATA
MLC AB1,EXP
B WRT
*
* A=0, B=A B B
*
MLC N2,ADATA
MLC A1,BDATA
MLC B1,EXP
B WRT
*
* A=0, B = A, A=B => AB
*
MLC N1,ADATA
MLC A1,BDATA
MLC AB0,EXP
B WRT
*
* A=0, B=A, B>A => AB
*
MLC N1,ADATA
MLC A2,BDATA
MLC AB1,EXP
B WRT
*
* A=0, B=B, B B
*
MLC N2,ADATA
MLC B1,BDATA
MLC B3,EXP
B WRT
*
* A=0, B=B, B>A => B
*
MLC N1,ADATA
MLC B2,BDATA
MLC B3,EXP
B WRT
*
MLCWA@A: A-BIT@,250
W
CS 299
*
* A=A, B=0, B < A => B
*
MLC A2,ADATA
MLC N1,BDATA
MLC B1,EXP
B WRT
*
* A=A, B=0, B>A => AB
*
MLC A1,ADATA
MLC N2,BDATA
MLC AB1,EXP
B WRT
*
* A=A, B=0, B=A => AB
*
MLC A1,ADATA
MLC N1,BDATA
MLC AB0,EXP
B WRT
*
* A=A, B=A, B B
*
MLC A2,ADATA
MLC A1,BDATA
MLC B1,EXP
B WRT
*
* A=A, B=A, B>A => AB
*
MLC A1,ADATA
MLC A2,BDATA
MLC AB1,EXP
B WRT
*
* A=A, B=A, B=A => AB
*
MLC A1,ADATA
MLC A1,BDATA
MLC AB0,EXP
B WRT
*
* A=A, B=B, B B
*
MLC A2,ADATA
MLC B1,BDATA
MLC B3,EXP
B WRT
*
* A=A, B=B, B>A => B
*
MLC A1,ADATA
MLC B2,BDATA
MLC B3,EXP
B WRT
*
* A=A, B=B, A=B => B
*
MLC A1,ADATA
MLC B1,BDATA
MLC B2,EXP
B WRT
*
* A=A, B=AB, B B
*
MLC A2,ADATA
MLC AB1,BDATA
MLC B1,EXP
B WRT
*
* A=A, B=AB, B>A => AB
*
MLC A1,ADATA
MLC AB2,BDATA
MLC AB1,EXP
B WRT
*
* A=A, B=AB, B=A => AB
*
MLC A1,ADATA
MLC AB1,BDATA
MLC AB0,EXP
B WRT
*
MLCWA@A: B-BIT@,250
W
CS 299
*
* A=B, B=0 B 0
*
MLC B2,ADATA
MLC N1,BDATA
MLC N3,EXP
B WRT
*
* A=B, B=0, B>A => 0
*
MLC B1,ADATA
MLC N2,BDATA
MLC N3,EXP
B WRT
*
* A=B, B=0, A=B => 0
*
MLC B1,ADATA
MLC N1,BDATA
MLC N2,EXP
B WRT
*
* A=B, B=A, B A
*
MLC B2,ADATA
MLC A1,BDATA
MLC A3,EXP
B WRT
*
* A=B, B=A, B>A => A
*
MLC B1,ADATA
MLC A2,BDATA
MLC A3,EXP
B WRT
*
* A=B, B=A, A=B => A
*
MLC B1,ADATA
MLC A1,BDATA
MLC A2,EXP
B WRT
*
* A=B, B=B, B AB
*
MLC B2,ADATA
MLC B1,BDATA
MLC AB1,EXP
B WRT
*
* A=B, B=B, B>A => B
*
MLC B1,ADATA
MLC B2,BDATA
MLC B1,EXP
B WRT
*
* A=B, B=B, B=A => B
*
MLC B1,ADATA
MLC B1,BDATA
MLC B0,EXP
B WRT
*
* A=B, B=AB, BAB
*
MLC B2,ADATA
MLC AB1,BDATA
MLC AB3,EXP
B WRT
*
* A=B, B=AB, B>A => AB
*
MLC B1,ADATA
MLC AB2,BDATA
MLC AB3,EXP
B WRT
*
* A=B, B=AB, A=B => AB
*
MLC B1,ADATA
MLC AB1,BDATA
MLC AB2,EXP
B WRT
*
MLCWA@A: AB-BIT@,250
W
CS 299
*
* A = AB, B=0, B B
*
MLC AB2,ADATA
MLC N1,BDATA
MLC B1,EXP
B WRT
*
* A=AB, B=0, B>A => AB
*
MLC AB1,ADATA
MLC N2,BDATA
MLC AB1,EXP
B WRT
*
* A=AB, B=0, B=A => AB
*
MLC AB1,ADATA
MLC N1,BDATA
MLC AB0,EXP
B WRT
*
* A = AB, B=A, B B
*
MLC AB2,ADATA
MLC A1,BDATA
MLC B1,EXP
B WRT
*
* A=AB, B=A, B>A => AB
*
MLC AB1,ADATA
MLC A2,BDATA
MLC AB1,EXP
B WRT
*
* A=AB, B=A, B=A => AB
*
MLC AB1,ADATA
MLC A1,BDATA
MLC AB0,EXP
B WRT
*
* A=AB,B=B, A>B => B
*
MLC AB2,ADATA
MLC B1,BDATA
MLC B3,EXP
B WRT
*
* A=AB, B=B, A B
*
MLC AB1,ADATA
MLC B2,BDATA
MLC B3,EXP
B WRT
*
* A=AB, B=B, A=B => B
*
MLC AB1,ADATA
MLC B1,BDATA
MLC B2,EXP
B WRT
*
* A=AB, B=AB, B B
*
MLC AB2,ADATA
MLC AB1,BDATA
MLC B1,EXP
B WRT
*
* A=AB, B=AB, B>A => AB
*
MLC AB1,ADATA
MLC AB2,BDATA
MLC AB1,EXP
B WRT
*
* A=AB, B=AB, B=A => AB
*
MLC AB1,ADATA
MLC AB1,BDATA
MLC AB0,EXP
B WRT
*
* TEST OF SUBTRACT FROM SELF
*
MLCWA@SINGLE-OPERAND SUBTRACT@,250
W
CS 299
* NO SIGN
MLC N1,ADATA
MLC AB0,EXP
B WRT1
* AB SIGN
MLC AB1,ADATA
MLC AB0,EXP
B WRT1
* A SIGN
MLC A1,ADATA
MLC AB0,EXP
B WRT1
* B SIGN
MLC B1,ADATA
MLC B0,EXP
B WRT1
*
* THAT'S ALL
*
MLCWA@END OF SIGN TEST@,250
W
CS 299
H *-3
*
* SUBROUTINE TO COMPUTE RESULT AND PRINT IT OUT
*
WRT SBR WRTR+3
MLC BDATA,SUM
S ADATA,SUM
MLZS SUM,SIGN
MLNS SUM,DIGITS
MLC
MLCWA@)@,280
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWASUM
MLCWA@, GOT: @
SBR P1+3
MLZS EXP,SIGN
MLNS EXP,DIGITS
MLC
P1 NOP 0
MLCWA@)@
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWAEXP
MLCWA@: EXPECTED: @
SBR P2+3
MLZS BDATA,SIGN
MLNS BDATA,DIGITS
MLC
P2 NOP 0
MLCWA@)@
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWABDATA
MLCWA@ + @
SBR P3+3
MLZS ADATA,SIGN
MLNS ADATA,DIGITS
MLC
P3 NOP 0
MLCWA@)@
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWAADATA
SBR P4+3
C SUM,EXP
BE OK
P4 NOP 0
MLCWA@********** @
OK W
CS 299
WRTR B 0
*
* SUBROUTINE TO SUBTRACT FIELD FROM ITSELF AND PRINT RESULT
*
WRT1 SBR WRT1R+3
MLC ADATA,SUM
S SUM
MLZS SUM,SIGN
MLNS SUM,DIGITS
MLC
MLCWA@)@,280
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWASUM
MLCWA@, GOT: @
SBR P1A+3
MLZS EXP,SIGN
MLNS EXP,DIGITS
MLC
P1A NOP 0
MLCWA@)@
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWAEXP
MLCWA@: EXPECTED: @
SBR P2A+3
MLZS ADATA,SIGN
MLNS ADATA,DIGITS
MLC
P2A NOP 0
MLCWA@)@
MLCWASIGN
MLCWADIGITS
MLCWA@ (@
MLCWA@ ONE-ADDRESS SUBTRACT @
SBR P4A+3
C SUM,EXP
BE OKA
P4A NOP 0
MLCWA@********** @
OKA W
CS 299
WRT1R B 0
*
AB0 DCW +00
AB1 DCW +01
AB2 DCW +02
AB3 DCW +03
A0 DCW @0Ø@
A1 DCW @0/@
A2 DCW @0S@
A3 DCW @0T@
B0 DCW -00
B1 DCW -01
B2 DCW -02
B3 DCW -03
N0 DCW 00
N1 DCW 01
N2 DCW 02
N3 DCW 03
SUM DCW #2
EXP DCW #2
ADATA DCW #2
BDATA DCW #2
SIGN DCW @ @
DIGITS DCW #2
END START