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