ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:08 2020
Source File: \s3ifix.asm
1 | *************************************************** S3D00010
2 | * * S3D00020
3 | * SUBROUTINE NAME- * S3D00030
4 | * FULL NAME- FLOATING-POINT TO INTEGER * S3D00040
5 | * CONVERSION SUBROUTINE. * S3D00050
6 | * CODE NAME- IFIX * S3D00060
7 | * PURPOSE- THIS SUBROUTINE CONVERTS A FLOATING- * S3D00070
8 | * POINT NUMBER TO AN INTEGER, DROPPING ANY * S3D00080
9 | * FRACTIONAL EXCESS. * S3D00090
10 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* S3D00100
11 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * S3D00110
12 | * SUBROUTINE LIBRARY MANUAL. * S3D00120
13 | * SPECIAL FEATURES- N/A * S3D00130
14 | * ADDITIONAL INFORMATION- * S3D00140
15 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * S3D00150
16 | * SUBROUTINE LIBRARY MANUAL * S3D00160
17 | * * S3D00170
18 | *************************************************** S3D00180
LIBF IFIX -V1.
20 | LIBR S3D00200
21 | ENT IFIX S3D00210
0000 7002 22 | IFIX MDX *+2 S3D00220
0001 4C80 0000 23 | BSC I *-* S3D00230
0003 C021 24 | LD K128 CALCULATE SHIFT VARIABLE S3D00240
0004 937D 25 | S 3 125 GET NEG OF TRUE EXPONENT S3D00250
0005 4C10 0015R 26 | BSC L FZER,- IF RSLT WILL BE FRACTIONAL, S3D00260
27 | * BR TO SET FAC=0. S3D00270
0007 8021 28 | A SRT15 OTHERWISE,GENERATE SHIFT S3D00280
0008 D012 29 | STO FSHFT CONSTANT AND STORE. S3D00290
0009 9021 30 | S FSHFZ CONSTANT TO CHK RANGE S3D00300
000A 4C10 0017R 31 | BSC L OK,- GO TO DO SHIFT IF IN RANGE S3D00310
000C C019 32 | LD FLAG INTEGER TOO LARGE S3D00320
000D EB7C 33 | OR 3 124 SET IFIX ERROR INDICATOR S3D00330
000E D37C 34 | STO 3 124 S3D00340
000F C37E 35 | LD 3 126 TEST SIGN S3D00350
0010 4810 36 | BSC - IF NEG,SKIP TO RET NEG NO. S3D00360
0011 C015 37 | LD MAXI RET LARGEST PTV INTEGER S3D00370
0012 4828 38 | BSC +Z IF PTV,SKIP TO BR OUT S3D00380
0013 C014 39 | LD MINI RET LARGEST NEGATIVE NO. S3D00390
0014 70EC 40 | MDX IFIX+1 EXIT S3D00400
0015 1010 41 | FZER SLA 16 RETURN ZERO S3D00410
0016 70EA 42 | MDX IFIX+1 EXIT S3D00420
0017 10A0 43 | OK SLT 32 INTEGER IS IN RANGE-PROCEED S3D00430
0018 9B7E 44 | SD 3 126 GET ABS VALUE OF MANTISSA S3D00440
0019 4828 45 | BSC Z+ S3D00450
001A C37E 46 | LD 3 126 S3D00460
001B 1880 47 | FSHFT SRT *-* PERFORM REQUIRED SHIFT S3D00470
001C D00D 48 | STO TEMP KEEP RSLT INTEGER S3D00480
001D C37E 49 | LD 3 126 GET SIGN OF MANTISSA S3D00490
001E 4C28 0022R 50 | BSC L NEG,+Z BR IF NEG S3D00500
0020 C009 51 | LD TEMP IF PTV,RET PTV INTEGER S3D00510
0021 70DF 52 | MDX IFIX+1 EXIT S3D00520
0022 1010 53 | NEG SLA 16 IF NEG,NEGATE INTEGER S3D00530
0023 9006 54 | S TEMP S3D00540
0024 70DC 55 | MDX IFIX+1 EXIT S3D00550
56 | * S3D00560
57 | *CONSTANTS TABLE AND BUFFER AREA S3D00570
58 | * S3D00580
0025 0080 59 | K128 DC 128 SCALE EXPONENT CONSTANT S3D00590
0026 0008 60 | FLAG DC /8 ERROR FLAG CONSTANT S3D00600
0027 7FFF 61 | MAXI DC /7FFF MAXIMUM PTV INTEGER S3D00610
0028 8000 62 | MINI DC /8000 MINIMUM NEG INTEGER S3D00620
0029 188F 63 | SRT15 SRT 15 SHIFT CONSTANT S3D00630
002A 0000 64 | TEMP DC 0 BUFFER FOR INTEGER S3D00640
002B 1880 65 | FSHFZ SRT 0 SHIFT CONSTANT S3D00650
002C 66 | END S3D00660
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
FLAG 0026R 60 32
FSHFT 001BR 47 29
FSHFZ 002BR 65 30
FZER 0015R 41 26
IFIX 0000R 22 40 42 52 55
K128 0025R 59 24
MAXI 0027R 61 37
MINI 0028R 62 39
NEG 0022R 53 50
OK 0017R 43 31
SRT15 0029R 63 28
TEMP 002AR 64 48 51 54