ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020
Source File: \u4bindc.asm
INTEGER BINARY TO DECIMAL CONVERSION
2 | *************************************************** U4B00020
3 | * * U4B00030
INTEGER BINARY TO DECIMAL CONVERSION
5 | * SUBROUTINE NAME- * U4B00050
6 | * FULL NAME- INTEGER BINARY TO DECIMAL CON- * U4B00060
7 | * VERSION SUBPROGRAM. * U4B00070
8 | * CODE NAME- BINDC * U4B00080
9 | * PURPOSE- THIS SUBPROGRAM CONVERTS A ONE-WORD * U4B00090
10 | * BINARY INTEGER TO A STRING OF EBCDIC * U4B00100
11 | * CHARACTERS REPRESENTING THE CORRESPONDING * U4B00110
12 | * DECIMAL VALUE. * U4B00120
13 | * METHOD- * U4B00130
14 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U4B00140
15 | * CAPABILITIES AND LIMITATIONS- * U4B00150
16 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U4B00160
17 | * SPECIAL FEATURES- N/A * U4B00170
18 | * ADDITIONAL INFORMATION- * U4B00180
19 | * ESTIMATED EXECUTION TIME- * U4B00190
20 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U4B00200
21 | * * U4B00210
22 | *************************************************** U4B00220
23 | *** HDNG LIBF BINDC-V1. U4B00230
24 | LIBR U4B00240
25 | ENT BINDC U4B00250
26 | * U4B00260
0000 6926 27 | BINDC STX 1 BC20+1 CALL ENTRY POINT (+0) U4B00270
0001 6580 0000 28 | LINK LDX I1 0 LOADER STORES TV ADDR (+2) U4B00280
0003 2824 29 | STS BC22 SAVE STATUS U4B00290
0004 D83D 30 | STD SAVE SAVE ACC AND EXT U4B00300
0005 D040 31 | STO VALUE SAVE VALUE TO BE CONVERTED U4B00310
0006 C100 32 | LD 1 0 XR1= ADDR OF OUTPUT PARAM U4B00320
0007 D01B 33 | STO BC16+1 SET UP OUTPUT ADDR U4B00330
0008 7101 34 | MDX 1 +1 XR1= RETURN ADDR U4B00340
0009 6921 35 | STX 1 BC26+1 SET UP RETURN ADDR U4B00350
000A 6105 36 | LDX 1 +5 XR1= COUNT FOR 5 DIGITS U4B00360
000B C03A 37 | LD VALUE GET BINARY NO. INPUT U4B00370
000C 4C28 002CR 38 | BSC L BC30,Z+ IF NEG, GO TO SET SIGN U4B00380
000E C02F 39 | LD H80A0 IF POS, GET CARD CODE & U4B00390
000F D480 0023R 40 | BC06 STO I BC16+1 ST SIGN IN OUTPUT AREA U4B00400
41 | * U4B00410
42 | *LOOP TO COMPUTE DECIMAL DIGITS U4B00420
43 | * U4B00430
0011 C034 44 | BC10 LD VALUE GET INPUT VALUE=N U4B00440
0012 A027 45 | M H1999 MPY BY ONE-TENTH U4B00450
0013 D031 46 | STO TEMP ST TRUNCATED TENTH OF N U4B00460
0014 A02B 47 | M N0010 MPY BY -10 TO GET -N PLUS U4B00470
0015 1090 48 | SLT 16 PUT PRODUCT IN ACC U4B00480
0016 4801 49 | BSC O IS DIGIT FIRST OF -32768 U4B00490
0017 8020 50 | A D0001 YES, INCR 32767 TO 32768 U4B00500
0018 802D 51 | A VALUE GET ONLY LAST DIGIT AND PUT U4B00510
0019 802A 52 | A SHIFT *INTO SHIFT RT INSTRUCTION U4B00520
001A D006 53 | STO BC14 *TO SHIFT HOLLERITH CHAR U4B00530
001B 901D 54 | S H180A IF DIGIT GT 9, APPROXIMATED U4B00540
001C 4C10 0033R 55 | BSC L BC34,- *TENTH GAVE ERROR- SUBTRACT U4B00550
001E C026 56 | BC12 LD TEMP OTHERWISE, SET VALUE TO ONE U4B00560
001F D026 57 | STO VALUE *TENTH OF N FOR NEXT DIGIT U4B00570
0020 C01A 58 | LD H2000 =HOLLERITH ZERO. SHIFTING U4B00580
0021 1800 59 | BC14 SRA 0 *GIVES RT HOLL DIGIT U4B00590
0022 D500 0000 60 | BC16 STO L1 0 ST IN OUTPUT AREA U4B00600
0024 71FF 61 | MDX 1 -1 ARE FIVE DIGITS DONE U4B00610
0025 70EB 62 | MDX BC10 IF NOT, REPEAT LOOP U4B00620
0026 6500 0000 63 | BC20 LDX L1 *-* YES, RESTORE XR1 U4B00630
0028 2000 64 | BC22 LDS *-* RESTORE STATUS U4B00640
0029 C818 65 | LDD SAVE RESTORE ACC AND EXT U4B00650
002A 4C00 0000 66 | BC26 BSC L 0 EXIT U4B00660
67 | * U4B00670
68 | *SECTION TO TREAT NEGATIVE NUMBERS INPUT U4B00680
69 | * U4B00690
002C 1810 70 | BC30 SRA 16 CLEAR ACCUMULATOR U4B00700
002D 9018 71 | S VALUE GET COMPLEMENT OF N, WHICH U4B00710
002E 4808 72 | BSC + *IS NEG ONLY IF N = -32768 U4B00720
002F C00D 73 | LD H7FFF IF NEG, USE N=+32767 U4B00730
0030 D015 74 | STO VALUE ST ABS VALUE U4B00740
0031 C00A 75 | LD H4000 GET A HOLLERITH MINUS AND U4B00750
0032 70DC 76 | MDX BC06 STORE - AS SIGN U4B00760
77 | * U4B00770
78 | *ERROR CORRECTION PROCEDURE IF DIGIT IS GT 9 U4B00780
79 | * U4B00790
0033 8010 80 | BC34 A SHIFT RESTORE SHIFT PART OF CON U4B00800
0034 D0EC 81 | STO BC14 DECR DIGIT VALUE BY 10 U4B00810
0035 7401 0045R 82 | MDX L TEMP,+1 CORRECT TEMP TO CORRESPOND U4B00820
0037 70E6 83 | MDX BC12 RETURN. U4B00830
84 | * U4B00840
85 | *CONSTANTS AND BUFFER AREA U4B00850
86 | * U4B00860
0038 0001 87 | D0001 DC +1 DECIMAL +1 U4B00870
0039 180A 88 | H180A DC /180A HOLLERITH ZERO. U4B00880
003A 1999 89 | H1999 DC /1999 = .1 SCALED ** -16 U4B00890
003B 2000 90 | H2000 DC /2000 HOLLERITH ZERO. U4B00900
003C 4000 91 | H4000 DC /4000 HOLLERITH MINUS. U4B00910
003D 7FFF 92 | H7FFF DC /7FFF +32767 U4B00920
003E 80A0 93 | H80A0 DC /80A0 HOLLERITH + U4B00930
003F A000 94 | HA000 DC /A000 =-10 SCALED **-16 U4B00940
0040 FFF6 95 | N0010 DC -10 DECIMAL -10 U4B00950
0042 96 | SAVE BSS E 2 ACC AND EXT TEMPORARY U4B00960
0044 1800 97 | SHIFT SRA 0 SHIFT HOLLERITH ZERO AMOUNT U4B00970
0045 0000 98 | TEMP DC 0 ST ONE TENTH OF VALUE U4B00980
0046 0000 99 | VALUE DC 0 VALUE TO BE CONVERTED U4B00990
0047 100 | END U4B01000
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
BC06 000FR 40 76
BC10 0011R 44 62
BC12 001ER 56 83
BC14 0021R 59 53 81
BC16 0022R 60 33 40
BC20 0026R 63 27
BC22 0028R 64 29
BC26 002AR 66 35
BC30 002CR 70 38
BC34 0033R 80 55
BINDC 0000R 27
D0001 0038R 87 50
H180A 0039R 88 54
H1999 003AR 89 45
H2000 003BR 90 58
H4000 003CR 91 75
H7FFF 003DR 92 73
H80A0 003ER 93 39
HA000 003FR 94
LINK 0001R 28
N0010 0040R 95 47
SAVE 0042R 96 30 65
SHIFT 0044R 97 52 80
TEMP 0045R 98 46 56 82
VALUE 0046R 99 31 37 44 51 57 71 74