ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:08 2020
Source File: \t1xsqr.asm
1 | *************************************************** T1C00010
2 | * * T1C00020
3 | * SUBROUTINE NAME- * T1C00030
4 | * FULL NAME- FIXED-POINT (FRACTIONAL) SQUARE * T1C00040
5 | * ROOT FUNCTION * T1C00050
6 | * CODE NAME- XSQR * T1C00060
7 | * PURPOSE- THIS SUBPROGRAM COMPUTES THE SQUARE * T1C00070
8 | * ROOT OF A FIXED POINT ONE-WORD FRACTIONAL * T1C00080
9 | * NUMBER. * T1C00090
10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* T1C00100
11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * T1C00110
12 | * SUBROUTINE LIBRARY MANUAL. * T1C00120
13 | * SPECIAL FEATURES- N/A * T1C00130
14 | * ADDITIONAL INFORMATION- * T1C00140
15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * T1C00150
16 | * SUBROUTINE LIBRARY MANUAL * T1C00160
17 | * * T1C00170
18 | *************************************************** T1C00180
CALL XSQR -V1.
20 | ENT XSQR T1C00200
0000 0000 21 | XSQR DC *-* ENTRY/RETURN ADDRESS T1C00210
0001 D022 22 | STO A SAVE ARGUMENT (BINARY POINT T1C00220
0002 4C10 0008R 23 | BSC L OK,- BETWEEN SIGN AND ONE BIT) T1C00230
0004 1010 24 | SLA 16 IF ARGUMENT IS NEGATIVE, T1C00240
0005 901E 25 | S A USE MAGNITUDE AND TURN ON T1C00250
0006 D01D 26 | STO A OVERFLOW INDICATOR. T1C00260
0007 2003 27 | LDS 3 T1C00270
0008 4C08 001FR 28 | OK BSC L XSQX,+ SHORT CUT FOR 0.0 AND -1.0 T1C00280
000A 6912 29 | STX 1 EXIT+1 SAVE XR1 T1C00290
000B 610F 30 | LDX 1 15 SET CTR FOR TABLE REF. T1C00300
000C C017 31 | LD A INITIAL APPROXIMATION T1C00310
000D 1140 32 | SLCA 1 IS A FUNCTION OF T1C00320
000E C500 0025R 33 | LD L1 TABLE LEADING ZERO BITS. T1C00330
0010 D012 34 | LOOP STO FN SAVE APPROXIMATION T1C00340
0011 A011 35 | M FN CALC AN EXPRESSION CALLED T1C00350
0012 1081 36 | SLT 1 ERROR. T1C00360
0013 9010 37 | S A ERROR=FN*FN-A T1C00370
0014 1882 38 | SRT 2 DIV BY 2,ADJUST BINARY PT. T1C00380
0015 A80D 39 | D FN DELTA=0.5*ERROR/FN T1C00390
0016 4C08 001CR 40 | BSC L EXIT,+ EXIT WHEN DELTA=0.0 T1C00400
0018 D009 41 | STO DELTA OTHERWISE SAVE DELTA T1C00410
0019 C009 42 | LD FN MODIFY THE APPROXIMATION T1C00420
001A 9007 43 | S DELTA BY DELTA.FN=FN-DELTA. T1C00430
001B 70F4 44 | MDX LOOP REPEAT LOOP T1C00440
001C 6500 0000 45 | EXIT LDX L1 *-* RESTORE XR1 T1C00450
001E C004 46 | LD FN PUT RESULT IN ACC T1C00460
001F 4C80 0000R 47 | XSQX BSC I XSQR RETURN TO MAIN PROG T1C00470
48 | * T1C00480
49 | *CONSTANTS AREA T1C00490
50 | * T1C00500
0022 51 | BSS E 0 T1C00510
0022 0000 52 | DELTA DC 0 MODIFICATION BUFFER T1C00520
0023 0000 53 | FN DC 0 APPROXIMATION BUFFER T1C00530
0024 0000 54 | A DC 0 SAVE INPUT MAGNITUDE T1C00540
0025 00B6 55 | TABLE DC /00B6 0 TABLE OF INITIAL APPROX T1C00550
0026 013A 56 | DC /013A 1 IMATIONS BASED ON THE T1C00560
0027 01DF 57 | DC /01DF 2 NUMBER OF INITIAL ZEROS T1C00570
0028 02BE 58 | DC /02BE 3 IN THE INPUT ARGUMENT. T1C00580
0029 03F0 59 | DC /03F0 4 T1C00590
002A 059D 60 | DC /059D 5 T1C00600
002B 07F8 61 | DC /07F8 6 T1C00610
002C 0B4B 62 | DC /0B4B 7 T1C00620
002D 0FFC 63 | DC /0FFC 8 T1C00630
002E 169E 64 | DC /169E 9 T1C00640
002F 1FFE 65 | DC /1FFE 10 T1C00650
0030 2D40 66 | DC /2D40 11 T1C00660
0031 3FFF 67 | DC /3FFF 12 T1C00670
0032 5A82 68 | DC /5A82 13 T1C00680
0033 7FFF 69 | DC /7FFF 14 T1C00690
0034 70 | END T1C00700
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
A 0024R 54 22 25 26 31 37
DELTA 0022R 52 41 43
EXIT 001CR 45 29 40
FN 0023R 53 34 35 39 42 46
LOOP 0010R 34 44
OK 0008R 28 23
TABLE 0025R 55 33
XSQR 0000R 21 47
XSQX 001FR 47 28