http://www.bitsavers.org/pdf/intel/insite/INSITE_pgmLibrManVol2_Aug79.pdf [OCR of the Intel Insite Volume II catalog found on archive.org's copy of the document. Herb Johnson May 2024] INSITE VOLUME II INTEL SOFTWARE INDEX AND TECHNOLOGY EXCHANGE PROGRAM LIBRARY MANUAL SECTION 5 MATH AND NUMERICAL MANIPULATION PROGRAM BC1 Floating Point Math Package 5-1 BC2 Floating Point Format Conversion Package 5-5 BB1 16-Bit Multiply (32-Bit Result) ' 5-9 BB2 MPY16 16-Bit Multiply - 16-Bit Result . . . 5-12 BB3 16-Bit Multiply - 16-Bit Result '.'.'. 5-15 BB4 SMPY16 16-Bit 2's Complement Signed Multiplication . . 5-19 BB5 Binary Multiplication - 24-Bit 5-24 BB8 16-Bit Division - 16-Bit Results . . . . 5-29 BB9 DIV16 16-Bit Division - 16-Bit Result '.'.'.'. 5-33 BB10 BIN to BCD Conversion Routine " 5-36 BB11 BCD to BIN Conversion Routine . . . . 5-41 BB12 BCD to/from Binary Conversion 5-45 BB14 Gray to Binary Conversion 5-50 BA1 BCD Sum for 8008 '.'.'. 5-54 BB15 Log Base 2 5-57 [additional entries for Insite vol II not included here] BC1 FLOATING POINT MATH PACKAGE Package contains subroutines for Addition, Subtraction, Multiplication, Division, Negate, Absolute Value and Test of Floating Point numbers. Required software: none RAM Required: 63 bytes ROM Required: 768 bytes Maximum Subroutine Nesting Level: 1 Assembler/Compiler Used: MAC8 Programmer: C.E. Ohme Company: Address: 44750 Winding Lane ; Fremont, Ca. 94538 date 8/78 5-1 8008 BINARY FLOATING POINT SYSTEM THE 8008 BINARY FLOATING POINT SYSTEM CONSISTS OF A SET OF SUBROUTINES DESIGNED TO PERFORM ARITHMETIC OPERATIONS ON NUMERIC QUANTITIES REPRESENTED IN MEMORY. EACH NUMERIC QUANTITY OCCUPIES FOUR CONSECUTIVE WORDS (32 BITS) OF MEMORY. THE LARGEST MAGNITUDE THAT CAN BE REPRESENTED IS APPROXIMATELY 3.6 TIMES TEN TO THE 38TH POWER. THE SMALLEST NON-ZERO MAGNITUDE THAT CAN BE REPRESENTED IS APPROXIMATELY 2.7 TIMES TEN TO THE MINUS 39TH POWER. EACH NUMERIC QUANTITY IS REPRESENTED WITH A PRECISION OF ONE PART IN APPROXIMATELY 16,000,000. THE SOFTWARE CONSTITUTING THE FLOATING POINT SYSTEM IS DIVIDED INTO TWO SECTIONS, EACH OF WHICH OCCUPIES 3 BANKS OF ROM OR RAM. SECTION 1 IS INDEPENDENT OF OTHER SOFTWARE. SECTION 2 IS OPERABLE ONLY WHEN SECTION 1 E3 AVAILABLE IN MEMORY. IN ADDITION TO MEMORY REQUIRED FOR PROGRAM, 63 WORDS OF RAM ARE USED AS SCRATCHPAD. SOFTWARE SECTION 1 CONTAINS THE FOLLOWING SUBROUTINES: LOD - LOAD SPECIFIED DATA INTO THE FLOATING POINT ACCUMULATOR. ADD - ADD SPECIFIED DATA TO THE FLOATING POINT ACCUMULATOR. SUB - SUBTRACT SPECIFIED DATA FROM THE FLOATING POINT ACCUMULATOR. MUL - MULTIPLY SPECIFIED DATA TIMES THE FLOATING POINT ACCUMULATOR. DIV - DrVIDE SPECIFIED DATA INTO THE FLOATING POINT AC- CUMULATOR. TST - SET CONTROL BITS TO INDICATE ATTRIBUTES OF THE FLOATING POINT ACCUMULATOR. CHS - CHANGE THE SIGN OF THE FLOATING POINT ACCUMULATOR. ABS - SET THE SIGN OF THE FLOATING POINT ACCUMULATOR POSITIVE. STR - STORE IN SPECIFIED MEMORY THE VALUE IN THE REGISTERS AS RETURNED BY OTHER SUBROUTINES. INIT - MOVE CODE FROM ROM TO RAM IN PREPARATION FOR EXECUTION OF THE MUL AND DIV SUBROUTINES. SOFTWARE SECTION 2 CONTAINS SUBROUTINES WHICH ARE USED TO CONVERT DATA BETWEEN THE BINARY FLOATING POINT FORMAT AND A DECIMAL FORMAT SUITABLE FOR ENTRY OR DISPLAY ON INPUT/OUTPUT EQUIPMENT. THE DECIMAL FORMAT IS STORED IN MEMORY AS A SERIES OF CHARACTERS. RELATIVELY SIMPLE INPUT/ OUTPUT ROUTINES MAY BE USED TO INTERFACE THE MEMORY- RESIDENT CHARACTER STRINGS WITH ANY TYPE OF PHYSICAL I/O DEVICE. THE CHARACTER STRINGS CONSIST OF BCD REPRESENTATIONS OF DECIMAL DIGITS AND ARBITRARY REPRESENTATIONS OF +,-,., AN EXPONENTIAL SIGN (LETTER E), AND SPACE. CHARACTER STRINGS MAY NOT CROSS MEMORY BANK BOUNDARIES. AN INPUT STRING IS THEREFORE LIMITED TO 256 CHARACTERS. AN OUTPUT STRING CONSISTS OF 13 CHARACTERS. THE OUT SUBROUTINE GENERATES CHARACTER STRINGS IN 2 FORMATS; THE CHOICE OF FORMAT DEPENDS ON THE MAGNITUDE OF THE VALUE REPRESENTED. MAGNITUDES BETWEEN .1000000 AND 9999999. ARE REPRESENTED BY A SPACE OR MINUS SIGN, SEVEN DECIMAL DIGITS AND AN APPROPRIATELY POSITIONED DECIMAL POINT, AND FOUR SPACES. MAGNITUDES OUTSIDE THE RANGE ARE REPRESENTED BY A SPACE OR MINUS SIGN, A VALUE BETWEEN 1.000000 AND 9.999999, AN EXPONENTIAL SIGN, AND A SIGNED TWO-DIGIT POWER OF TEN. THE INP SUBROUTINE CONVERTS CHARACTER STRINGS IN EITHER OF THE ABOVE FORMATS, OR A MODIFIED VERSION OF THEM. THE LEADING SIGN MAY BE INCLUDED OR OMITTED. ANY NUMBER OF DIGITS MAY BE USED TO INDICATE THE VALUE, WITH OR WITHOUT AN INCLUDED DECIMAL POINT. IF A POWER-OF-TEN MULTLPLIER IS INDICATED IT MAY BE SIGNED OR UNSIGNED AND MAY CONTAIN ONE OR TWO DIGITS. AN INPUT STRING IS TERMINATED BY THE FIRST CHARACTER WHICH DEPARTS FROM THE FORMAT. THE FOLLOWING ARE EXAMPLES OF INPUT AND CORRESPONDING OUTPUT CHARACTER STRINGS. 3.141593 3.141593 -.0000000000001 -1.000000E-13 +1.6E5 160000.0 123456789 1.234568E+08 54321E-10 5.432100E-06 -2718281828E-9 -2.718282 BC2 - FLOATING POINT FORMAT CONVERSION PACKAGE Provides subroutines for conversion between floating point format and ASCII or BCD. Functions contained are: 1. Floating point to BCD conversion 2. BCD to floating point conversion 3. Floating point to fixed point (integer) conversion 4. Fixed point to floating point conversion required software: Floating Point Arithmetic and Utility Package RAM Required: 63 bytes ROM Required: 512 bytes Assembler/Compiler Used: MAC 8 Programmer: C.E. Ohme Company: 44750 winding Lane Fremont, Ca. 94538 8008 BIMAPC FLOATING POINT SYSTEM FORMAT CONVFRSION PACKAGE THE FORMAT CONVERSION PACKAGE OF THE 8008 BINARY FLOATING POINT SYSTEM CONTAINS SUBROUTINES FOP THE CONVERSION OF DATA BETWEEN THE FLOATING POINT SYSTEM NOTATION AND TWO OTHER FORMATS. THE NON-FLOATING-POINT FORMATS APE FOUR WORD FIXED POINT FORMAT AND VARIABLE LENGTH CHARACTER STRING FORMAT. THE FORMAT CONVERSION PACKAGE IS CONTAINER IN 512 CONSECUTIVE WORDS OF MEMORY (2 BANKS OF ROM) AND REOUIpES FOR ITS EXECUTION THAT THE ARITHMETIC AND UTILITY PACKAGE BE AVAILABLE IN MEMORY. THE COMBINATION OF THIS PACKAGE AND THE ARITHMETIC AND UTILITY PACKAGE USES ThE FIRST 64 WORDS OF A BANK OF RAM AS SCRATCHPAD MEMORY. THE FIXED POINT FORMAT DATA PROCESSED BY THIS PACKAGE CONSIST OF 32 BIT BlNAPY NUMBERS OCCUPYING FOUR WORDS. TWOS COMPLEMENT NOTATION IS USED TO REPRESENT NEGATIVE VALUES. THE POSITION OF THE BINARY POINT RELATIVE TO THE BITS REPRESENTING THE VALUE IS DENOTED BY A BINARY SCALING FACTOR. THE BINARY SCALING FACTOo IS NOT NORMALLY RECORDED IN THE COMPUTER, BUT WHEN A FORMAT CONVERSION SUBROUTINE IS CALLED THE BINARY SCALING FACTOR MUST BE SPECIFIED UN THE E REGISTER). A BINARY SrALlNG FACTOR OF ZERO INDICATES THE BINARY POINT IS IMMEDIATELY TO THE LEFT OF THE MOST SIGNIFICANT OF THE 32 BITS REPRESENTING THE VALUE. A BINARY SCALING FACTOR OF- 32 INDlCATFS THE BINARY POINT IS IMMEDIATELY TO THE RIGHT OF THE I EAST SIGNIFICANT BIT. THE PERMISSIBLE RANGE OF THF BINARY SCALING FACTOR IS -128(200 OCTAL) TO +127(177 OCTAL). THE CHARACTER STRING FORMAT DATA PROCESSEo BY THIS PACKAGE CONSIST OF BINARY REPRESENTATIONS OF CHARaCTEPS OCCUPYING CONSECUTIVE WORDS OF MEMORY. A CHARACTER STRING MAY NOT CROSS A MEMORY BANK BOUNDARY. THE CHARACTERS WHICH MAY BE INCLUDED IN A CHARACTFR STRING, AND THF CORRESPONDING OCTAL REPRESENTATIONS ARE LISTED BELOW. DECIMAL DIGITS 000B-011B BCD DIGITS SPACE 360B + 373B PLUS - 375B MINUS . 376B DECIMAL POINT EXPONENTIAL SIGN 025B LETTER E (THESE OCTAL REPRESENTATIONS CAN BE CONVERTED TO THE CORRESPONDING ASCII CHARACTERS BY ADDING o^OB TO EACH) THE OUT SUBROUTINE GENERATES CHARACTER STRINGS IN TWO FORMATS, EACH CONSISTING OF 13 CHARACTERS. THF FORMAT USED IN A SPECIFIC'.CASE IS DEPENDENT UPON THE MAGNITUDE 5-7 OF THE VALUE REPRESENTED. ZFRO AND MAGNITUDES BETWEEN .1000000 AND 9999Q99. ARE reppesfmtfd BY A SPACF OR MINUS SIGN* sevfn decimal DIGITS and an appropriately positioned decimal point, and foup spaces. MAGNITUDES OUTSIDE THE ABOVE RANGE ARE REPRESENTED BY A CPACE OP MINUS SIGN. A VALUE BETWEEN l.OOoOOO AND 9.999999, AN EXPONENTIAL SIGN, AND A SIGNED TWO DIGTT POwER OF TEN. THE INP SUBPOUTINF CONVERTS CHARACTER STRINGS IN EITHER OF THE ABOVE FORMATS. OR A MODIFIED VERSION OF THEM. THE LEADING SIGN CHARACTER MAY BE INCLUDED OR OMITTED. UP TO 37 DIGITS MAY BE USED TO INDICATE THE VALnE. WITH OP WITHOUT AN INCLUDED DECIMAL POINT. IF A POWER-OF-TEN MULTIPLIER IS INDICATFD IT MAY BE SIGNED OR UNSIGNED AND MAY CONTAIN ONE OR TWO DIGITS. AN INPUT CHARACTER STRING IS TERMINATED BY THE FIRST CHAPACTER WHICH DEPARTS FROM THE SPECIFIED FORMAT. THE FOLLOWING APE EXAMPLES OF INPUT AND CORRESPONDING OUTPUT CHARACTER STRINGS. 3.141593 3.141593 -.0000000000001 -1.000000E-n +1.6E5 160000.0 123456789 1.234568E+04 54321E-10 5.432100E-06 -2718281828 -2.718282E+09 THE INDIVIDUAL SUBROUTINES INCLUDED IN TH F FORMAT CONVERSION PACKAGE OF THE FLOATING POINT SYSTEM ARE DESCRIBED IN DETAIL BELOW. [end of routines provided by Ohme. There's many other routines described, some with source, in the Intel Insite catalog. - Herb Johnson 2024]