Previous Page Single Page Next Page  

* FIG FORTH FOR SERIES-16 MACHINES PAGE 10

0384 * 0385 * 'HEADMAC.C' ALSO IMPLEMENTS A SECOND MACRO - 'STRG' THAT 0386 * CONVERTS ITS SINGLE ARGUMENT TO A STRING WITH LENGTH BYTE. IT 0387 * IS USED WHERE STRINGS ARE EMBEDDED IN THE PRECOMPILED FORTH. 0388 * 0389 * BOTH 'STRG' AND 'HEAD' ALLOW CHARACTERS IN THEIR STRING 0390 * ARGUMENT TO BE ESCAPED BY PRECEDING THEM BY A BACK-SLASH. 0391 * BACK-SLASH-COMMA ALLOWS A COMMA TO BE INCLUDED IN THE NAME, 0392 * (IT IS NOT INTERPRETED AS A SEPARATOR FOR THE NEXT ARGUMENT) 0393 * BACK-SLASH-SPACE ALLOWS A SPACE (AT THE START OR END OF THE 0394 * ARGUMENT) TO BE INCLUDED IN THE STRING. 0395 * 0396 * THE SINGLE 'PROPER' MACRO IMPLEMENTED USING THE 'MAC' 0397 * PREPROCESSOR IS 'NEXT' WHICH SIMPLY ASSEMBLES TO: 0398 * 0399 * IRS IP 0400 * JMP* IP 0401 * 0402 ****************************************************************** 0403 * 0404 * 32-BIT ARITHMETIC 0405 * 0406 ****************************************************************** 0407 * 0408 * ONE FAIRLY SUBSTANTIAL ISSUE WAS HOW TO DEAL WITH 32-BIT 0409 * ARITHMETIC. THIS IS AN ISSUE BECAUSE THE SERIES-16 MACHINES 0410 * WERE NOT INTENDED TO PERFORM 32-BIT ARITHMETIC. INSTEAD THEIR 0411 * NATURAL DOUBLE-WORD FORMAT HOLDS 31-BITS: 0412 * 0413 * A REGISTER B REGISTER 0414 * +--------------+ +--------------+ 0415 * |S|M.S. 15 BITS| |0|L.S. 15 BITS| 0416 * +--------------+ +--------------+ 0417 * 0418 * THE SIGN BIT OF THE LOWER WORD (OFTEN IN THE B REGISTER) IS 0419 * ALWAYS ZERO. THIS ISN'T TOTALLY RIDICULOUS AS A FORMAT SINCE 0420 * WHEN TWO SIGNED 16-BIT NUMBERS ARE MULTIPLIED THEY WILL FIT 0421 * IN A SIGNED 31-BIT NUMBER (EXCEPT FOR THE SINGLE OVERFLOWING 0422 * CASE OF -2^15 * -2^15). 0423 * 0424 * SOME CONSIDERATION WAS GIVEN TO ONLY IMPLEMENTING 31-BIT DOUBLE 0425 * WORD ARITHMETIC, BUT IN THE END THIS WAS REJECTED IN FAVOUR OF 0426 * 32-BIT ARITHMETIC, LIKE OTHER FIG FORTHS - THOUGH INEVITABLY 0427 * THIS WILL LEAD TO LOSS OF PERFORMANCE IN MATH-DOMINATED 0428 * APPLICATIONS. 0429 * 0430 * ONE MAJOR HURDLE IS THAT THE 16-BIT ADDITION AND SUBTRACTION 0431 * ROUTINES DO NOT PRODUCE A CARRY BIT - INSTEAD THE SO-CALLED 0432 * 'C' BIT GETS THE TWO'S COMPLEMENT OVERFLOW. THIS DOES HANG 0433 * TOGETHER AS A SELF-CONSISTENT SET OF DESIGN DECISIONS BECAUSE
  Previous Page Single Page Next Page