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