Previous Page Single Page Next Page  

* FIG FORTH FOR SERIES-16 MACHINES PAGE 99

4319 IFZ HSA 4320 * SOFTWARE SIGNED MULTIPLY 4321 LDA =-1 4322 STA T3 ASSUME -VE MULTIPLIER, SIGN EXTENSION 4323 CRA 4324 IAB CLEAR B 4325 LDA 2,1 MULTIPLICAND 4326 LGL 1 TOP BIT TO CARRY 4327 STA 2,1 MULTIPLICAND 4328 LDA =-15 COUNTER 4329 STA T1 4330 SSC WAS TOP BIT SET? 4331 JMP MST2 NO - DON'T SUBTRACT MUTIPLIER 4332 * YES - THIS BIT WORTH -2^15 4333 LDA 1,1 GET MULTIPLIER 4334 CAS ='100000 IS IT MIN INT. VALUE? 4335 SKP 4336 JMP MST1 SO NEGATED IS +2^15 4337 TCA NEGATE 4338 SMI NEGATIVE RESULT? 4339 JMP MST1 NO, B = 0 ALREADY 4340 * NEGATED MULTIPLIER IS -VE SO ORIGINAL IS +VE 4341 IAB NO - PRESERVE A 4342 CRA 4343 STA T3 SIGN EXTENSION 4344 LDA =-1 SET B TO -1 4345 IAB 4346 MST1 IAB SWAP ACCUM. WORDS TO RIGHT PLACE 4347 JMP UST1 JUMP INTO UNSIGNED ROUTINE FOR 15 BITS 4348 * 4349 * TOP BIT OF MULTIPLICAND CLEAR, SO ACCUMULATOR 4350 * STARTS AT ZERO, BUT NEED TO SORT SIGN EXTEND 4351 * OF MULTIPLIER 4352 MST2 LDA 1,1 GET MULTIPLIER 4353 CSA SIGN TO CARRY 4354 CRA 4355 SSC POSITIVE? 4356 STA T3 YES - CLEAR SIGN EXTENSION 4357 JMP MST1 OFF TO UNSIGNED ROUTINE 4358 EJCT 4359 ELSE 4360 * HARDWARE SIGNED MULTIPLY 4361 04523 1 02 00002 LDA 2,1 4362 04524 1 16 00001 MPY 1,1 RESULT IN 16-0-15 FORMAT 4363 * IT WOULD REALY HAVE HELPED IF OVERFLOW 4364 * WENT TO C, BUT IT DOESN'T 4365 04525 0 11 00713 CAS ='100000 OVERFLOW? 4366 04526 100000 SKP NO 4367 04527 0 01 04544 JMP MST1 YES 4368 04530 000201 IAB
  Previous Page Single Page Next Page