ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:10 2020 Source File: \u4decbi.asm TWO-WORD DECIMAL TO BINARY CONVERSION 2 | *************************************************** U4H00020 3 | * * U4H00030 4 | * STATUS - VERSION 2, MODIFICATION 8 U4H00035 5 | * SUBROUTINE NAME- * U4H00040 6 | * FULL NAME- DECIMAL TO BINARY TWO-WORD * U4H00050 7 | * INTEGER CONVERSION ROUTINE. * U4H00060 8 | * CODE NAME- DECBI * U4H00070 9 | * PURPOSE- THIS SUBROUTINE CONVERTS A DECIMAL * U4H00080 10 | * INTEGER EXPRESSED AS ONE TO TEN DIGITS * U4H00090 11 | * PLUS A SIGN IN UNPACKED HOLLERITH,TO A TWO-* U4H00100 12 | * WORD BINARY INTEGER. * U4H00110 13 | * METHOD- * U4H00120 14 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U4H00130 15 | * CAPABILITIES AND LIMITATIONS- * U4H00140 16 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U4H00150 17 | * SPECIAL FEATURES-N/A * U4H00160 18 | * ADDITIONAL INFORMATION- * U4H00170 19 | * ESTIMATED EXECUTION TIME- * U4H00180 20 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U4H00190 21 | * * U4H00200 22 | *************************************************** U4H00210 TWO-WORD DECIMAL TO BINARY CONVERSION 24 | LIBR U4H00230 25 | ENT DECBI U4H00240 0000 6952 26 | DECBI STX 1 SAV1+1 SAVE XR1 U4H00250 0001 6580 0000 27 | LDX I1 *-* RECORD ENTRY U4H00260 0003 284C 28 | STS DB055 SAVE AND RESET STATUS U4H00270 0004 6A50 29 | STX 2 SAV2+1 SAVE XR2 U4H00280 30 | * U4H00290 0005 C100 31 | LD 1 0 U4H00300 0006 D00A 32 | STO DB000+1 SET UP ADDR OF SIGN U4H00310 0007 805C 33 | A ONE AND U4H00320 0008 D01E 34 | STO DB030+1 SET UP INPUT BUFFER ADDR U4H00330 35 | * U4H00340 0009 7101 36 | MDX 1 +1 U4H00350 000A C580 0000 37 | LD I1 0 FETCH WORD CNT U4H00360 000C 1001 38 | SLA 1 DOUBLE WORD COUNT U4H00370 000D D016 39 | STO DB020+1 SET UP WORD COUNT U4H00380 000E 7101 40 | MDX 1 1 2-8 U4H00381 000F 6947 41 | STX 1 DB060+1 SET UP FOR EXIT 2-8 U4H00382 42 | * U4H00390 0010 C400 0000 43 | DB000 LD L *-* FETCH SIGN U4H00400 0012 D053 44 | STO SIGN INITIAL TO NEG U4H00410 45 | * U4H00420 0013 4C18 001ER 46 | BSC L DB010,+- GO TO SET PLUS ON ZERO U4H00430 47 | * U4H00440 0015 9048 48 | S H4000 U4H00450 0016 4C18 0020R 49 | BSC L DB010+2,+- GO TO CONT ON MINUS U4H00460 50 | * U4H00470 0018 9045 51 | S H4000 U4H00480 0019 4C18 001ER 52 | BSC L DB010,+- GO SET PLUS ON AMPERSAND U4H00490 53 | * U4H00500 001B 9043 54 | S H00A0 U4H00510 001C 4C20 005CR 55 | BSC L DB070,Z GO TO ERROR - INVALID SIGN U4H00520 56 | * U4H00530 001E 1010 57 | DB010 SLA 16 SET SIGN U4H00540 001F D046 58 | STO SIGN TO PLUS. U4H00550 59 | * U4H00560 60 | * U4H00570 61 | * STATEMENTS REMOVED 2-8 U4H00590 62 | * U4H00600 0020 10A0 63 | SLT 32 U4H00610 0021 D83E 64 | STD BIBFR INITIAL BINARY BFR, WD SW U4H00620 0022 2000 65 | LDS 0 CLEAR OVERFLOW,CARRY 2-8 U4H00621 66 | * U4H00630 0023 6500 0000 67 | DB020 LDX L1 *-* INITIAL FOR ADD LOOP AND U4H00640 0025 620C 68 | LDX 2 +12 SHIFTS. U4H00650 69 | * U4H00660 0026 C400 0000 70 | DB030 LD L *-* FETCH WORD U4H00670 71 | * U4H00680 0028 188E 72 | SRT 14 CHECK ZONE BITS U4H00690 0029 4C20 005CR 73 | BSC L DB070,Z GO TO ERROR IF NON-ZERO U4H00700 002B 108E 74 | SLT 14 RESTORE WORD U4H00710 002C 7401 0027R 75 | MDX L DB030+1,+1 INCRE INPUT ADDR U4H00720 002E 4C18 003ER 76 | BSC L DB040,+- BR IF CHAR IS BLANK U4H00730 77 | * U4H00740 0030 1240 78 | SLCA 2 0 BIT POSITION TO XR2 U4H00750 0031 1001 79 | SLA 1 SHIFT OUT BIT U4H00760 0032 4C20 005CR 80 | BSC L DB070,Z BR TO ERROR IF MULTI-BITS U4H00770 0034 72F6 81 | MDX 2 -10 SUB 9 TO GET NEG BIN VALUE U4H00780 0035 1000 82 | NOP U4H00790 83 | * U4H00800 0036 6A2E 84 | STX 2 TEMP SET TO TAKE THE U4H00810 0037 1010 85 | SLA 16 COMPLEMENT OF NEG TO GET U4H00820 0038 902C 86 | S TEMP ACTUAL BINARY VALUE U4H00830 0039 D02B 87 | STO TEMP U4H00840 88 | * U4H00850 003A 6680 0065R 89 | LDX I2 TEMP ACTUAL BIN VALUE TO XR2 U4H00860 90 | * U4H00870 003C 7200 91 | MDX 2 0 IS ACTUAL VALUE ZERO U4H00880 003D 7003 92 | MDX DB045 NO, GO TO CONTINUE U4H00890 93 | * U4H00900 003E 71FE 94 | DB040 MDX 1 -2 YES, DECR WORD COUNT U4H00910 003F 70E5 95 | MDX DB030-1 GO TO LOAD NEXT WRD U4H00920 0040 7007 96 | MDX DB050 WD CNT ZERO - GO TO EXIT U4H00930 97 | * U4H00940 0041 C81E 98 | DB045 LDD BIBFR FETCH BINARY BUFFER U4H00950 0042 8D00 0066R 99 | AD L1 TABLE-2 ADD APPROP POWER OF TEN U4H00960 0044 72FF 100 | MDX 2 -1 DECR BINARY NUMBER U4H00970 0045 70FC 101 | MDX DB045+1 LOOP TIL NUMBER = ZERO U4H00980 102 | * U4H00990 0046 D819 103 | STD BIBFR RESULT TO BUFFER U4H01000 0047 70F6 104 | MDX DB040 GO TO CHK WORD COUNT U4H01010 105 | * U4H01020 0048 4801 106 | DB050 BSC O CHECK OVERFLOW U4H01030 0049 700E 107 | MDX DB065 POSSIBLE ERROR IF ON U4H01040 108 | * U4H01050 004A C01B 109 | LD SIGN U4H01060 004B 4818 110 | BSC +- SKIP ON NON-ZERO U4H01070 111 | * U4H01080 004C 7003 112 | MDX DB055 BR ON POSITIVE U4H01090 113 | * U4H01100 004D 10A0 114 | SLT 32 CLEAR ACC AND EXT U4H01110 004E 9811 115 | SD BIBFR TAKE 2'S COMPLEMENT U4H01120 004F 7002 116 | MDX SAV1 SKIP TO EXIT U4H01130 117 | * U4H01140 0050 2000 118 | DB055 LDS *-* RESTORE STATUS U4H01150 0051 C80E 119 | LDD BIBFR RESTORE ACC AND EXT U4H01160 120 | * * U4H01170 0052 6500 0000 121 | SAV1 LDX L1 *-* RESTORE XR1 U4H01180 0054 6600 0000 122 | SAV2 LDX L2 *-* RESTORE XR2 U4H01190 123 | * U4H01200 124 | * U4H01210 0056 4C00 0000 125 | DB060 BSC L *-* RETURN TO CALLER U4H01220 126 | * U4H01230 0058 F009 127 | DB065 EOR MAXNG CHECK FOR MAX NEG VALUE U4H01240 0059 4C20 005CR 128 | BSC L DB070,Z GO TO ERROR ON NOT MAX NEG U4H01250 005B 70EE 129 | MDX DB050+2 OVERFLOW OK, GO TO EXIT U4H01260 130 | * * U4H01270 131 | * ERROR TRAP * U4H01280 005C 2001 132 | DB070 LDS 1 SET OVFLO ON, CARRY OFF U4H01290 005D 70F3 133 | MDX DB055+1 GO TO EXIT U4H01300 134 | * U4H01310 135 | * U4H01320 005E 4000 136 | H4000 DC /4000 MINUS U4H01330 005F 00A0 137 | H00A0 DC /00A0 RT HALF OF PLUS U4H01340 138 | * U4H01350 0060 0000 0000 139 | BIBFR DEC 0 WORKING BFR FOR BINARY NO. U4H01360 0062 8000 140 | MAXNG DC /8000 MAXIMUM NEGATIVE U4H01370 0063 0000 141 | DC 0 VALUE U4H01380 142 | * U4H01390 0064 0001 143 | ONE DC 1 U4H01400 0065 0000 144 | TEMP DC 0 STORAGE FOR NEG BIN VALUE U4H01410 0066 0000 145 | SIGN DC 0 STORAGE FOR SIGN U4H01420 146 | * U4H01430 147 | * FOLLOWING IS A BINARY TABLE OF THE * U4H01440 148 | * POWERS OF 10 FROM 0 TO 9. * U4H01450 0068 0000 0001 149 | TABLE DEC 1.0B31 U4H01460 006A 0000 000A 150 | DEC 10.0B31 U4H01470 006C 0000 0064 151 | DEC 100.0B31 U4H01480 006E 0000 03E8 152 | DEC 1000.0B31 U4H01490 0070 0000 2710 153 | DEC 10000.0B31 U4H01500 0072 0001 86A0 154 | DEC 100000.0B31 U4H01510 0074 000F 4240 155 | DEC 1000000.0B31 U4H01520 0076 0098 9680 156 | DEC 10000000.0B31 U4H01530 0078 05F5 E100 157 | DEC 100000000.0B31 U4H01540 007A 3B9A CA00 158 | DEC 1000000000.0B31 U4H01550 007C 159 | END U4H01560 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced BIBFR 0060R 139 64 98 103 115 119 DB000 0010R 43 32 DB010 001ER 57 46 49 52 DB020 0023R 67 39 DB030 0026R 70 34 75 95 DB040 003ER 94 76 104 DB045 0041R 98 92 101 DB050 0048R 106 96 129 DB055 0050R 118 28 112 133 DB060 0056R 125 41 DB065 0058R 127 107 DB070 005CR 132 55 73 80 128 DECBI 0000R 26 H00A0 005FR 137 54 H4000 005ER 136 48 51 MAXNG 0062R 140 127 ONE 0064R 143 33 SAV1 0052R 121 26 116 SAV2 0054R 122 29 SIGN 0066R 145 44 58 109 TABLE 0068R 149 99 TEMP 0065R 144 84 86 87 89