ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:08 2020 Source File: \s3fixi.asm 1 | *************************************************** S3B00010 2 | * * S3B00020 3 | * SUBROUTINE NAME- * S3B00030 4 | * FULL NAME- I**J INTEGER FUNCTION. * S3B00040 5 | * CODE NAME- FIXI/FIXIX * S3B00050 6 | * PURPOSE- THIS FUNCTION COMPUTES A SINGLE WORD * S3B00060 7 | * INTEGER TAKEN TO A SINGLE WORD INTEGER * S3B00070 8 | * EXPONENT. * S3B00080 9 | * METHOD-SEE IBM 1130 SUBROUTINE LIBRARY MANUAL.* S3B00090 10 | * CAPABILITIES AND LIMITATIONS- SEE IBM 1130 * S3B00100 11 | * SUBROUTINE LIBRARY MANUAL. * S3B00110 12 | * SPECIAL FEATURES- N/A * S3B00120 13 | * ADDITIONAL INFORMATION- * S3B00130 14 | * ESTIMATED EXECUTION TIME- SEE IBM 1130 * S3B00140 15 | * SUBROUTINE LIBRARY MANUAL * S3B00150 16 | * * S3B00160 17 | *************************************************** S3B00170 LIBF FIXI -V1. 19 | LIBR S3B00190 20 | ENT FIXI S3B00200 21 | ENT FIXIX S3B00210 0000 D03D 22 | FIXIX STO IHOLD STORE INTEGER BASE S3B00220 0001 C400 0000 23 | LD L *-* CALL+1 S3B00230 0003 6919 24 | STX 1 FXSAV+1 SAVE XR1 S3B00240 0004 7005 25 | MDX *+5 S3B00250 0005 D038 26 | FIXI STO IHOLD STORE INTEGER BASE S3B00260 0006 C400 0000 27 | LD L *-* CALL+1 S3B00270 0008 6914 28 | STX 1 FXSAV+1 SAVE XR1 S3B00280 0009 6100 29 | LDX 1 0 XR1 = ZERO S3B00290 000A D003 30 | STO *+3 STORE OP ADDR S3B00300 000B 8034 31 | A ONE BUILD EXIT S3B00310 000C D012 32 | STO FXEX+1 S3B00320 000D 7580 0000 33 | MDX I1 *-* MODIFY X1 BY OP ADDRESS S3B00330 000F 1000 34 | NOP IF MDX CAUSES BR,SLIP NOP S3B00340 35 | * S3B00350 36 | *TAKE CARE OF ERROR CONDITION S3B00360 37 | * S3B00370 0010 280A 38 | STS FXSTA SAVE STATUS S3B00380 0011 C02C 39 | LD IHOLD GET INTEGER BASE S3B00390 0012 4C20 0020R 40 | BSC L FIXI1,Z BE IF NOT ZERO S3B00400 0014 C100 41 | LD 1 0 IF BASE ZERO, SET ACC TO S3B00410 0015 4C30 001AR 42 | BSC L EZERO,-Z ZERO. GET EXPONENT.BR IF S3B00420 0017 C02A 43 | LD ERFL PTV,OTHERWISE SET ERROR S3B00430 0018 EB7C 44 | OR 3 124 INDR WORD (BIT 11) TO 1 S3B00440 0019 D37C 45 | STO 3 124 (ZERO TO NON-PTV EXPONENT) S3B00450 46 | * S3B00460 47 | *EXIT S3B00470 48 | * S3B00480 001A 1010 49 | EZERO SLA 16 ZERO ACC FOR ZERO BASE S3B00490 001B 2000 50 | FXSTA LDS *-* RESTORE STATUS S3B00500 001C 6500 0000 51 | FXSAV LDX L1 *-* RESTORE XR1 S3B00510 001E 4C00 0000 52 | FXEX BSC L *-* EXIT S3B00520 53 | * S3B00530 54 | *CALCULATE I**J S3B00540 55 | * S3B00550 0020 901F 56 | FIXI1 S ONE IF BASE NOT ZERO,SUB 1 S3B00560 0021 4C18 0029R 57 | BSC L EXONE,+- BR IF BASE=+1.I**J=+1 S3B00570 0023 801D 58 | A TWO S3B00580 0024 4C20 002DR 59 | BSC L *+7,Z BR IF BASE NOT +1,-1,ZERO S3B00590 0026 C100 60 | LD 1 0 BASE=-1. . S3B00600 0027 4C04 002BR 61 | BSC L *+2,E BR IF EXPONENT IS ODD S3B00610 0029 C016 62 | EXONE LD ONE I**J=+1 S3B00620 002A 70F0 63 | MDX FXSTA S3B00630 002B C017 64 | LD MASK I**J=-1 S3B00640 002C 70EE 65 | MDX FXSTA S3B00650 002D C100 66 | LD 1 0 GET EXPONENT S3B00660 002E 4C18 0029R 67 | BSC L EXONE,+- BR IF EXPONENT=0.I**J=+1 S3B00670 0030 4C08 001AR 68 | BSC L EZERO,+ BR EXPONENT NEG.I**J=ZERO O S3B00680 0032 1884 69 | SRT 4 EXPONENT PTV S3B00690 0033 4C20 001AR 70 | BSC L EZERO,Z BR EXPONENT GT 15 S3B00700 0035 1084 71 | SLT 4 OTHERWISE RESTORE EXPONENT S3B00710 0036 D008 72 | STO COUNT STORE AS A MPY COUNTER S3B00720 0037 C008 73 | LD ONE ACCUMULATOR = +1 S3B00730 0038 A005 74 | IJPL M IHOLD INCR POWER OF BASE BY ONE S3B00740 0039 18D0 75 | RTE 16 SHIFT TO ACCUMULATOR S3B00750 003A 74FF 003FR 76 | MDX L COUNT,-1 DECR COUNTER S3B00760 003C 70FB 77 | MDX IJPL REPEAT S3B00770 003D 70DD 78 | MDX FXSTA BR OUT S3B00780 79 | * S3B00790 80 | *CONSTANTS AREA S3B00800 81 | * S3B00810 003E 0000 82 | IHOLD DC 0 STORE INTEGER BASE S3B00820 003F 0000 83 | COUNT DC 0 STORE INTEGER EXPONENT S3B00830 0040 0001 84 | ONE DC 1 SINGLE WORD ONE S3B00840 0041 0002 85 | TWO DC 2 SINGLE WORD TWO S3B00850 0042 0010 86 | ERFL DC /10 1 IN BIT POSITION 11 S3B00860 0043 FFFF 87 | MASK DC /FFFF SINGLE WORD MINUS ONE S3B00870 0044 88 | END S3B00880 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced COUNT 003FR 83 72 76 ERFL 0042R 86 43 EXONE 0029R 62 57 67 EZERO 001AR 49 42 68 70 FIXI 0005R 26 FIXI1 0020R 56 40 FIXIX 0000R 22 FXEX 001ER 52 32 FXSAV 001CR 51 24 28 FXSTA 001BR 50 38 63 65 78 IHOLD 003ER 82 22 26 39 74 IJPL 0038R 74 77 MASK 0043R 87 64 ONE 0040R 84 31 56 62 73 TWO 0041R 85 58