ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:07 2020
Source File: \r1fdiv.asm
1 | *************************************************** R1C00010
2 | * * R1C00020
3 | * SUBROUTINE NAME- * R1C00030
4 | * FULL NAME- STANDARD PRECISION FLOATING- * R1C00040
5 | * POINT DIVIDE FUNCTION. * R1C00050
6 | * CODE NAME- FDIV/FDIVX * R1C00060
7 | * PURPOSE- THIS SUBPROGRAM COMPUTES THE QUOTIENT* R1C00070
8 | * OF TWO STANDARD PRECISION FLOATING-POINT * R1C00080
9 | * NUMBERS. * R1C00090
10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* R1C00100
11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * R1C00110
12 | * SUBROUTINE LIBRARY MANUAL. * R1C00120
13 | * SPECIAL FEATURES- N/A * R1C00130
14 | * ADDITIONAL INFORMATION- * R1C00140
15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * R1C00150
16 | * SUBROUTINE LIBRARY MANUAL * R1C00160
17 | * * R1C00170
18 | * VERSION 2 MODIFICATION 10 R1C00175
19 | *************************************************** R1C00180
LIBF FDIV -V1.
21 | LIBR R1C00200
22 | SPR R1C00210
23 | ENT FDIV R1C00220
24 | ENT FDIVX R1C00230
0000 694E 25 | FDIVX STX 1 SAVE+1 SAVE XR1 R1C00240
0001 C400 0000 26 | LD L *-* CALL+1 R1C00250
0003 7004 27 | MDX COM R1C00260
0004 694A 28 | FDIV STX 1 SAVE+1 SAVE XR1 R1C00270
0005 C400 0000 29 | LD L *-* CALL+1 R1C00280
0007 6100 30 | LDX 1 0 XR1=ZERO R1C00290
0008 D004 31 | COM STO *+4 R1C00300
0009 2843 32 | STS STAT R1C00310
000A 804E 33 | A ONE BUILD EXIT R1C00320
000B D045 34 | STO EXIT+1 R1C00330
000C 7580 0000 35 | MDX I1 *-* EFFECTIVE OPND ADDR IN XR1 R1C00340
000E 1000 36 | NOP IF MDX CAUSES BR, SKIP NOP R1C00350
37 | * R1C00360
38 | *DO TESTS ON DIVISOR AND COMPUTE EXPONENT OF RESULT R1C00370
39 | * R1C00380
000F C900 40 | LDD 1 0 LOAD DIVISOR R1C00390
0010 4C18 0056R 41 | BSC L DIVCK,+- GO SET ERROR IF DIVISOR=0 R1C00400
0012 D84B 42 | STD BARG OTHERWISE SAVE DIVISOR R1C00410
0013 18D0 43 | RTE 16 GET SECOND WD OF DIVISOR R1C00420
0014 284A 44 | STS BARG+1 STRIP OFF EXPONENT FIELD R1C00430
0015 F049 45 | EOR BARG+1 EXPONENT ONLY IN ACC R1C00440
0016 F043 46 | EOR ALL1 ONES COMPLIMENT R1C00450
0017 8043 47 | A K1 TWOS COMPLIMENT + 128 R1C00460
0018 837D 48 | A 3 125 MODIFY DIVIDEND EXPONENT R1C00470
0019 D37D 49 | STO 3 125 STORE NEW EXPONENT R1C00480
001A C843 50 | LDD BARG GET LEAST SIGNIFICANT R1C00490
001B 18D0 51 | RTE 16 OF DIVISOR R1C00500
001C 4C18 0052R 52 | BSC L SKIP,+- BR IF ZERO R1C00510
001E 1802 53 | SRA 2 SHIFT FOR EXPONENT R1C00520
001F A37E 54 | M 3 126 TIMES SIGNIFICANT FAC R1C00530
0020 A83D 55 | D BARG MOST SIGNIFICANT PART OF R1C00540
0021 F038 56 | EOR ALL1 DIVISOR. CHANGE TO 2'S R1C00550
0022 8036 57 | A ONE COMPLEMENT AND SHIFT FOR R1C00560
0023 188E 58 | SRT 14 CORRECT POSITION. SUBTRACT R1C00570
0024 8B7E 59 | AD 3 126 FROM DIVIDEND. R1C00580
0025 DB7E 60 | STD 3 126 SAVE ACC. & EXT. R1C00585
61 | * R1C00590
62 | *PERFORM DIVISION ON THE MANTISSA R1C00600
63 | * R1C00605
0026 F039 64 | DIV EOR DMASK CHECK FOR /8000 R1C00610
0027 4C20 002FR 65 | BSC L DIVD,Z BRANCH NOT /8000 R1C00611
0029 18D0 66 | RTE 16 ROTATE BOTH 16 R1C00612
002A E037 67 | AND DDMSK CHECK FOR /FFFC R1C00613
002B 4C20 002FR 68 | BSC L DIVD,Z BRANCH NOT ZERO R1C00614
002D C832 69 | LDD DMASK SET ACC.+EXT.= /80000004 R1C00615
002E 7001 70 | MDX DIVDE GO TO DIVIDE R1C00616
002F CB7E 71 | DIVD LDD 3 126 RESTORE ACC.+EXT. TO ORIGNL R1C00617
0030 1882 72 | DIVDE SRT 2 SHIFT BOTH RIGHT R1C00620
0031 4801 73 | BSC O WAS THERE OVERFLOW R1C00630
0032 F029 74 | EOR K2 YES, RESTORE SIGN R1C00640
0033 A82A 75 | D BARG AND DIVIDE R1C00650
0034 D028 76 | STO Q1 SAVE 1ST HALF OF QUOTIENT R1C00660
0035 1090 77 | SLT 16 BRING IN REMAINDER R1C00670
0036 4C18 0054R 78 | BSC L NOR,+- BR ON NO REMAINDER R1C00680
0038 1881 79 | SRT 1 IF THERE IS A REMAINDER R1C00690
0039 A824 80 | D BARG DIVIDE IT AND POSITION R1C00700
003A 188F 81 | SRT 15 FOR PROPER SIGNIFICANCE R1C00710
003B 8021 82 | A Q1 ADD 1ST HALF OF QUOTIENT R1C00720
83 | * R1C00730
84 | *NORMALIZE THE QUOTIENT R1C00740
85 | * R1C00750
003C DB7E 86 | NORM STD 3 126 STORE IN FAC R1C00760
003D 4C10 0041R 87 | BSC L *+2,- BR IF NON-NEG R1C00770
003F 10A0 88 | SLT 32 IF NEG REVERSE SIGN R1C00780
0040 9B7E 89 | SD 3 126 R1C00790
0041 1081 90 | SLT 1 CHECK BIT SIGNIFICANCE R1C00800
0042 4C08 004AR 91 | BSC L NTPTV,+ BRANCH IF SIGNIFICANT R1C00810
0044 C37D 92 | LD 3 125 IF NOT SIGNIFICANT,GET R1C00820
0045 9013 93 | S ONE EXPONENT AND SUB 1 R1C00830
0046 D37D 94 | STO 3 125 RESTORE ALTERED EXPONENT R1C00840
0047 CB7E 95 | LDD 3 126 GET MANTISSA, ALTER IT TO R1C00850
0048 1081 96 | SLT 1 MATCH EXPONENT AND R1C00860
0049 DB7E 97 | STD 3 126 RESTORE MANTISSA R1C00870
004A 4818 98 | NTPTV BSC +- BR IF NON-ZERO R1C00880
004B D37D 99 | STO 3 125 IF ZERO,MAKE EXPONENT ZERO R1C00890
004C 0605*90C0 100 | LIBF FARC CHECK OVERFLOW/UNDERFLOW R1C00900
004D 2000 101 | STAT LDS *-* RESTORE STATUS R1C00910
004E 6500 0000 102 | SAVE LDX L1 *-* RESTORE XR1 R1C00920
0050 4C00 0000 103 | EXIT BSC L *-* RET TO CALL+2 R1C00930
0052 CB7E 104 | SKIP LDD 3 126 2ND TERM NOT SIGNIFICANT- R1C00940
0053 70D2 105 | MDX DIV GET MANTISSA,RET TO DIV R1C00950
0054 C008 106 | NOR LD Q1 IF NO REMAINDER, GET R1C00960
0055 70E6 107 | MDX NORM QUOTIENT AND RET TO NORM R1C00970
0056 C002 108 | DIVCK LD ONE R1C00980
0057 D37B 109 | STO 3 123 STORE DIVIDE CHECK R1C00990
0058 70F4 110 | MDX STAT R1C01000
111 | * R1C01010
112 | *CONSTANTS AREA R1C01020
113 | * R1C01030
0059 0001 114 | ONE DC 1 SINGLE WORD ONE R1C01040
005A FFFF 115 | ALL1 DC /FFFF USED TO GET 1'S COMPLEMENT R1C01050
005B 0082 116 | K1 DC /82 CORR FACTOR FOR EXPONENT R1C01060
005C C000 117 | K2 DC /C000 RESET SIGN CONSTANT R1C01070
005D 0000 118 | Q1 DC /0 STORE 1ST QUOTIENT R1C01080
005E 119 | BSS E 0 R1C01090
005E 0000 120 | BARG DC /0 STORE DIVISOR R1C01100
005F 0000 121 | DC /0 R1C01110
0060 8000 122 | DMASK DC /8000 NEGATIVE MASK R1C01112
0061 0004 123 | DC /0004 AND FORCED DIVIDEND R1C01113
0062 FFFC 124 | DDMSK DC /FFFC MASK /0003 R1C01114
0063 125 | END R1C01124
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
ALL1 005AR 115 46 56
BARG 005ER 120 42 44 45 50 55 75 80
COM 0008R 31 27
DDMSK 0062R 124 67
DIV 0026R 64 105
DIVCK 0056R 108 41
DIVD 002FR 71 65 68
DIVDE 0030R 72 70
DMASK 0060R 122 64 69
EXIT 0050R 103 34
FDIV 0004R 28
FDIVX 0000R 25
K1 005BR 116 47
K2 005CR 117 74
NOR 0054R 106 78
NORM 003CR 86 107
NTPTV 004AR 98 91
ONE 0059R 114 33 57 93 108
Q1 005DR 118 76 82 106
SAVE 004ER 102 25 28
SKIP 0052R 104 52
STAT 004DR 101 32 110