# Model 100 System Map Part 3 (2943-3D7F)

From Bitchin100 DocGarden

## Origin

This is a derived work of the "Model 100 System Map", Copyright (C) 1985, Robert D. Covington, Systems Information Management Consultants.

2943H - LEN Function 294FH - ASC Function 295FH - CHR$ Function 296DH - STRING$ Function 298EH - SPACE$ Function 29ABH - LEFT$ Function 29DCH - RIGHT$ Function 29E6H - MID$ Function 2A07H - VAL Function 2A37H - INSTR Function 2B4CH - FRE Function 2B69H - Double precision subtract (FAC1=FAC1-FAC2). Entry: FAC1 - First double precision number FAC2 - Second double precision number Exit: FAC1 - Result of operation All other registers destroyed 2B78H - Double precision addition (FAC1=FAC1+FAC2). Entry: FAC1 - First double precision number FAC2 - Second double precision number Exit: FAC1 - Result of operation All other registers destroyed 2C4FH - Add the BCD number in the buffer pointed to by HL to the BCD number in the buffer pointed to by DE leaving the result in the buffer pointed to by DE. Since no decimals are significant, numbers must be padded with zeros for place holders. B contains the precision (number of bytes) of the numbers added. Entry: HL - Points to the end of the first BCD number buffer DE - Points to the end of the second BCD number buffer B - Number of bytes to add (2 times the number of digits added) Exit: HL & DE - Decremented past last byte of buffer B = 0 A - Destroyed 2CFFH - Double precision multiply (FAC1=FAC1*FAC2) Entry: FAC1 - First double precision number FAC2 - Second double precision number Exit: FAC1 - Result of operation All other registers destroyed 2DC7H - Double precision divide (FAC1=FAC1/FAC2) Entry: FAC1 - Double precision numerator FAC2 - Double precision denominator Exit: FAC1 - Result of operation All other registers destroyed 2EE6H - Move the memory pointed to by HL to the memory pointed to by DE for C bytes. HL and DE are decremented on each cycle of the move. Entry: HL - Points to end of source memory DE - Points to end of destination memory C - Number of bytes to move Exit: HL & DE - Decremented past last byte moved A - Destroyed 2EEFH - COS Function Entry: FAC1 - Angle in radians Exit: FAC1 - Result of COSine 2F09H - SIN Function Entry: FAC1 - Angle in radians Exit: FAC1 - Result of SINe 2F58H - TAN Function Entry: FAC1 - Angle in radians Exit: FAC1 - Result of TANgent 2F71H - ATN Function Entry: FAC1 - TANgent value Exit: FAC1 - Angle in radians 2FCFH - LOG Function Entry: FAC1 - LOG value Exit: FAC1 - Result of LOG 305AH - SQR Function Entry: FAC1 - Number to find square root of Exit: FAC1 - Square root of number 30A4H - EXP Function Entry: FAC1 - Value for EXP Exit: FAC1 - Natural exponent result 313EH - RND Function 31A0H - Double precision square of FAC1 (FAC1=FAC1 squared) Entry: FAC1 - Double precision number to square Exit: FAC1 - Result of FAC1 squared All other registers destroyed 31B5H - Move FAC1 to FAC2 Exit: All registers destroyed 31B8H - Move the floating point buffer pointed to by HL to FAC2. Entry: HL - Points to 8 byte floating point buffer Exit: All registers destroyed 31C1H - Move FAC2 to FAC1 Exit: All registers destroyed 31C4H - Move the 8 byte floating point accumulator pointed to by HL to FAC1 Entry: HL - Points to start of source memory Exit: All registers destroyed 31CAH - Move FAC1 to the 8 byte floating point accumulator pointed to by HL. Entry: HL - Points to start of buffer for FAC1 Exit: All registers destroyed 322EH - Push FAC2 on stack Exit: All registers destroyed 3234H - Push FAC1 on stack Exit: All registers destroyed 3245H - Pop FAC2 off stack Exit: FAC2 - Floating point value POPed off stack All registers destroyed 324BH - Pop FAC1 off stack Exit: FAC1 - Floating point value POPed off stack All registers destroyed 33DCH - RST 30H routine 33F2H - ABS Function 3407H - SGN Function 3422H - PUSH the single precision value in FAC1 onto the stack Exit: DE - Destroyed 342FH - Load the 4 byte number pointed to by HL into FAC1. The buffer pointed to by HL reverses the two words prior to storing them into FAC1 Entry: HL - 4 byte number that will be put in FAC1 in reverse order Exit: HL - Incremented past last byte moved All other registers destroyed 3432H - Load the single precision value in BCDE into FAC1 Entry: BCDE - Single precision number Exit: BC & DE destroyed 343DH - Load the single precision value in FAC1 into BCDE Exit: BCDE - Single precision number from FAC1 HL - Destroyed 3447H - Load 4 byte single precision buffer pointed to by HL into BCDE. Entry: HL - Points to the buffer containing the 4 byte single precision number Exit: BCDE - Floating point number that is in the buffer pointed to by HL 3450H - Load the 4 byte number pointed to by HL into DEBC (note reverse order!!). Entry: HL - Points to the buffer containing the 4 byte single precision number Exit: DEBC - Floating point number that is in the buffer pointed to by HL 3459H - Move the single precision floating point number in FAC1 to the buffer pointed to by HL. Entry: HL - Points to destination buffer for single precision FAC1 (4 bytes) Exit: HL - Incremented past last byte moved DE - Destroyed B - Destroyed 3461H - Move the buffer pointed to by HL to FAC2. The number of bytes transfered depends on the current precision in FB65H. Entry: HL - Points to source buffer for floating point number Exit: HL - Incremented past last byte transfered All other registers destroyed 3469H - Move the memory pointed to by DE to the memory pointed to by HL for B number of bytes. HL and DE are incremented on each byte moved. Entry: DE - Points to start of source memory HL - Points to start of destination memory B - Number of bytes to move Exit: HL & DE - Incremented past last byte transfered A & B - Destroyed 3472H - Move the memory pointed to by DE to the memory pointed to by HL for B number of bytes. HL and DE are decremented on each byte moved. Entry: DE - Points to end of source memory HL - Points to end of destination memory B - Number of bytes to move Exit: HL & DE - Decremented past the last byte transfered A & B - Destroyed 3498H - Compare the single precision number in BCDE with FAC1. Entry: BCDE - First single precision number FAC1 - Second single precision number Exit: HL - Destroyed A = 255 (-1) if BCDE>FAC1 1 if BCDE<FAC1 0 if BCDE=FAC1 Z flag - Set if BCDE=FAC1 S flag - Set (M) if BCDE>FAC1 34C2H - Compare the signed integer in DE to the signed integer in HL. Entry: HL - First integer to compare DE - Second integer to compare Exit: A = 255 (-1) if DE>HL 1 if DE<HL 0 if DE=HL Z flag - Set if DE=HL S flag - Set (M) if DE>HL 34FAH - Compare the double precision number in FAC1 to the double precision number in FAC2. Entry: FAC1 - First double precision value to compare FAC2 - Second double precision value to compare Exit: A = 255 (-1) if FAC1>FAC2 1 if FAC1<FAC2 0 if FAC1=FAC2 Z flag - Set if FAC1=FAC2 S flag - Set (M) if FAC1>FAC2 3501H - CINT Function. Convert floating point number in FAC1 to an integer. Entry: FAC1 - Floating point number to convert Exit: HL - Converted signed integer in FAC1 FAC1 - Converted to an integer 3510H - Load the signed integer in HL into FAC1 Entry: HL - Signed integer to put in FAC1 Exit: A = 2 352AH - CSNG Function. Convert the number in FAC1 to a single precision value. Entry: FAC1 - Number to convert Exit: FAC1 - Converted single precision number 3540H - Convert the signed integer in FAC1 to single precision. Entry: FAC1 - Contains signed integer to convert Exit: FAC1 - Converted single precision number 3543H - Convert the signed integer in HL to a single precision number in FAC1. Entry: HL - Contains signed integer to convert Exit: FAC1 - Converted single precision number 35BAH - CDBL function. Convert the number in FAC1 to a double precision floating point number. Entry: FAC1 - Number to convert to double precision Exit: FAC1 - Converted double precision number 3645H - FIX Function 3654H - INT Function. Find the integer portion of the floating point number in FAC1. Entry: FAC1 - Floating point number Exit: FAC1 - Integer portion of floating point number 36F8H - Subtract the signed integer in HL from the signed integer in DE. Entry: HL - First number to subtract DE - Second number to subtract Exit: FAC1 - Result of subtract HL - Integer result of subtract 3704H - Add the signed integer in HL to the signed integer in DE. If the result is greater than 32767, the result is converted into single precision. Entry: HL - First number to add DE - Second number to add Exit: FAC1 - Result of addition HL - Integer result of addition 3725H - Multiply the signed integer in HL by the signed integer in DE. If the result is greater than 32767, the result is converted into single precision. Entry: HL - First integer to multiply DE - Second integer to multiply Exit: FAC1 - Result of multiplication HL - Integer result of multiplication 377EH - Divide the signed integer in DE by the signed integer in HL. Entry: HL - Integer Numerator DE - Integer Denominator Exit: FAC1 - Result of division 37F4H - Add the single precision numbers in FAC1 and BCDE (FAC1=FAC1+BCDE) Entry: FAC1 - First single precision number BCDE - Second single precision number Exit: FAC1 - Result of single precision addition 37F7H - Add the single precision numbers in FAC1 and FAC2 (FAC1=FAC1+FAC2). Entry: FAC1 - First single precision number FAC2 - Second single precision number Exit: FAC1 - Result of single precision addition 37FDH - Subtract the single precision numbers in FAC1 and BCDE (FAC1=FAC1-BCDE) Entry: FAC1 - First single precision number BCDE - Second single precision number Exit: FAC1 - Result of subtract 3803H - Multiply the single precision numbers in FAC1 and BCDE (FAC1=FAC1*BCDE) Entry: FAC1 - First single precision number BCDE - Second single precision number Exit: FAC1 - Result of multiply 3806H - Multiply the single precision numbers in FAC1 and FAC2 (FAC1=FAC1*FAC2) Entry: FAC1 - First single precision number FAC2 - Second single precision number Exit: FAC1 - Result of multiply 380EH - Single precision divide (FAC1=BCDE/FAC1) Entry: BCDE - Single precision numerator FAC1 - Single precision denominator Exit: FAC1 - Result of divide 3827H - Load FAC2 with the single precision number in BCDE. Entry: BCDE - Single precision number Exit: FAC2 - Copy of single precision number HL - Destroyed 3840H - Convert the ASCII number pointed to by HL to its double precision equivalent. Entry: HL - Points to buffer with ASCII number Exit: FAC1 - Value of ASCII number All registers destroyed 39D4H - Print HL in ASCII form at the current cursor position Entry: HL - Contains 16 bit binary number to print Exit: All registers destroyed 39E8H - Convert the binary number in FAC1 to ASCII Entry: HL - Points to the start of the buffer where the ASCII number will be stored FAC1 - Binary Number Exit: All registers destroyed 39ECH - Convert the binary number in FAC1 to ASCII. This routine will format the ASCII output with the same parameters offered by BASIC's PRINT USING statement. Entry: A - Bit configuration for PRINT USING options Bit: 0 - Exponential notation 1 - Not used (reset) 2 - Sign (+ or -) follows ASCII number 3 - Sign (+ or -) preceeds number 4 - Print leading '$' 5 - Asterisks fill 6 - Print commas every third digit 7 - Set, allow print using formating Reset, do no formating on number B - Number of digits to the left of the decimal point. This value is used for placeholder filling C - Number of digits to the right of the decimal point. This value is used for placeholder filling HL - Start of receiving buffer for ASCII number FAC1 - Binary number to convert Exit: All registers destroyed 3D7FH - Single precision exponential function 3D8EH - Double precision exponential function 3DF7H - Integer exponential function