ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020
Source File: \u3holeb.asm
HOLL TO EBC AND EBC - HOLL CONVERSION
2 | *************************************************** U3B00020
3 | * * U3B00030
4 | * SUBROUTINE NAME- * U3B00040
5 | * FULL NAME- HOLLERITH TO EBCDIC OR EBCDIC * U3B00050
6 | * TO HOLLERITH CONVERSION SUBROUTINE. * U3B00060
7 | * CODE NAME- HOLEB * U3B00070
8 | * PURPOSE- THIS SUBROUTINE CONVERTS HOLLERITH * U3B00080
9 | * TO EBCDIC,PACKED TWO CHARACTERS PER WORD, * U3B00090
10 | * OR CONVERTS PACKED EBCDIC TO HOLLERITH. * U3B00100
11 | * METHOD- * U3B00110
12 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3B00120
13 | * CAPABILITIES AND LIMITATIONS- * U3B00130
14 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3B00140
15 | * SPECIAL FEATURES-N/A * U3B00150
16 | * ADDITIONAL INFORMATION- * U3B00160
17 | * ESTIMATED EXECUTION TIME- * U3B00170
18 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3B00180
19 | * * U3B00190
20 | *************************************************** U3B00200
HOLL TO EBC AND EBC - HOLL CONVERSION
22 | LIBR U3B00220
23 | ENT HOLEB U3B00230
0000 695C 24 | HOLEB STX 1 SAV1+1 CALL ENTRY POINT U3B00240
0001 6580 0000 25 | LINK LDX I1 0 LOADER STORED TV ADDRESS U3B00250
0003 6A5B 26 | STX 2 SAV2+1 SAVE XR2 U3B00260
0004 285B 27 | STS SAVST SAVE STATUS U3B00270
0005 D842 28 | STD TEMP SAVE ACC AND EXTENSION U3B00280
0006 C101 29 | LD 1 1 XR1= ADDR OF FIRST PARAM U3B00290
0007 D010 30 | STO INPUT+1 INPUT ADDR U3B00300
0008 C102 31 | LD 1 2 U3B00310
0009 D010 32 | STO OUTPT+1 OUTPUT ADDR U3B00320
000A C103 33 | LD 1 3 U3B00330
000B D038 34 | STO COUNT CHARACTER COUNT U3B00340
000C C034 35 | LD CALL1 U3B00350
000D 406A 36 | BSI SBRTA OBTAIN ADDR OF HOLL TBL U3B00360
000E D02B 37 | STO TLU14+1 U3B00370
000F D059 38 | STO TLU32+1 U3B00380
0010 C031 39 | LD CALL2 U3B00390
0011 4066 40 | BSI SBRTA OBTAIN ADDR OF EBPA TBL U3B00400
0012 D01D 41 | STO TLU12+1 U3B00410
0013 D05D 42 | STO TLU34+1 U3B00420
0014 C100 43 | LD 1 0 INDR OF EBCDIC OR HOLLERITH U3B00430
0015 7104 44 | MDX 1 +4 U3B00440
0016 694C 45 | STX 1 EXIT+1 SET EXIT TO CALL+5 U3B00450
0017 6500 0000 46 | INPUT LDX L1 0 XR1= INPUT DATA AREA U3B00460
0019 6600 0000 47 | OUTPT LDX L2 0 XR2= OUTPUT DATA AREA U3B00470
001B 4C08 004AR 48 | BSC L HOLIN,+ BR IF HOLLERITH INPUT U3B00480
49 | * U3B00490
50 | *CONVERT INPUT EBCDIC TO HOLLERITH U3B00500
51 | * U3B00510
001D C100 52 | EBCIN LD 1 0 GET AN INPUT WORD (2 CHARS) U3B00520
001E 400C 53 | BSI HLOUT CONVERT LEFT CHAR U3B00530
001F 74FF 0044R 54 | MDX L COUNT,-1 DECR CHAR COUNT U3B00540
0021 7001 55 | MDX EBRGT CONTINUE IF MORE CHARS U3B00550
0022 7039 56 | MDX SAV1 EXIT IF NO MORE CHARS U3B00560
0023 C100 57 | EBRGT LD 1 0 U3B00570
0024 1008 58 | SLA 8 U3B00580
0025 4005 59 | BSI HLOUT CONVERT RIGHT CHAR U3B00590
0026 7101 60 | MDX 1 +1 XR1 PTS TO NEXT INPUT WORD U3B00600
0027 74FF 0044R 61 | MDX L COUNT,-1 DECR CHAR COUNT U3B00610
0029 70F3 62 | MDX EBCIN LOOP FOR NEXT CHAR U3B00620
002A 7031 63 | MDX SAV1 EXIT IF NO MORE CHARS U3B00630
64 | * U3B00640
65 | *THIS SECTION DOES THE TABLE LOOKUP FOR EBCDIC TO U3B00650
66 | *HOLLERITH CONVERSION. U3B00660
67 | * U3B00670
002B 1000 68 | HLOUT NOP STORE RETURN ADDR U3B00680
002C D016 69 | STO CHAR U3B00690
002D 6910 70 | STX 1 TLU16+1 U3B00700
002E 614B 71 | LDX 1 +75 XR1=CONVERSION TBL LENGTH U3B00710
002F F500 0000 72 | TLU12 EOR L1 0 EBPA TABLE ENTRY U3B00720
0031 1808 73 | SRA 8 DO CHARS CMP U3B00730
0032 4C18 0039R 74 | BSC L TLU14,+- YES,GO STORE CORRECT CHAR U3B00740
0034 C00E 75 | LD CHAR NO,RESTORE INPUT CHAR U3B00750
0035 71FF 76 | MDX 1 -1 DECR TBL PT U3B00760
0036 70F8 77 | MDX TLU12 NOT DONE W/TBL,CONTINUE U3B00770
0037 C00E 78 | LD H2001 TABLE SEARCH DONE,NONE CMP- U3B00780
0038 D027 79 | STO SAVST TURN ON OVERFLOW INDR. U3B00790
0039 C500 0000 80 | TLU14 LD L1 0 U3B00800
003B D200 81 | STO 2 0 STORE HOLLERITH CHAR U3B00810
003C 7201 82 | MDX 2 +1 SET FOR NEXT O/P CHAR U3B00820
003D 6500 0000 83 | TLU16 LDX L1 0 RESTORE XR1 U3B00830
003F 4C80 002BR 84 | BSC I HLOUT RETURN U3B00840
85 | * U3B00850
86 | *CONSTANTS AND BUFFER AREA U3B00860
87 | * U3B00870
0041 0859*34C0 88 | CALL1 LIBF HOLL GET HOLL SUBRT ADDR U3B00880
0042 0509*7040 89 | CALL2 LIBF EBPA GET EBPA SUBRT ADDR U3B00890
0043 0000 90 | CHAR DC 0 EBCDIC CHAR BUFFER U3B00900
0044 0000 91 | COUNT DC 0 CHAR COUNT U3B00910
0045 00FF 92 | H00FF DC /00FF LOW-BIT MASK U3B00920
0046 2001 93 | H2001 DC /2001 OVERFLOW INDR WD U3B00930
0048 94 | TEMP BSS E 2 SAVE ACC AND EXT U3B00940
95 | * U3B00950
96 | *CONVERT INPUT HOLLERITH TO EBCDIC U3B00960
97 | * U3B00970
004A 4019 98 | HOLIN BSI EBOUT U3B00980
004B 1008 99 | SLA 8 U3B00990
004C D0F6 100 | STO CHAR CONVERT LEFT O/P CHAR U3B01000
004D 74FF 0044R 101 | MDX L COUNT,-1 ANY MORE CHARS U3B01010
004F 7005 102 | MDX RIGHT YES, CONTINUE U3B01020
0050 C200 103 | LD 2 0 NO, STORE LEFT CHAR IN U3B01030
0051 E0F3 104 | AND H00FF OUTPUT AREA (DO NOT U3B01040
0052 80F0 105 | A CHAR ALTER RIGHT CHAR) U3B01050
0053 D200 106 | STO 2 0 U3B01060
0054 7007 107 | MDX SAV1 GO TO PREPARE FOR EXIT U3B01070
0055 400E 108 | RIGHT BSI EBOUT CONVERT RIGHT O/P CHAR U3B01080
0056 80EC 109 | A CHAR STORE BOTH CHARS IN U3B01090
0057 D200 110 | STO 2 0 OUTPUT AREA U3B01100
0058 7201 111 | MDX 2 +1 SET FOR NEXT O/P WD U3B01110
0059 74FF 0044R 112 | MDX L COUNT,-1 ANY MORE CHARS U3B01120
005B 70EE 113 | MDX HOLIN YES, LOOP U3B01130
005C 6500 0000 114 | SAV1 LDX L1 0 RESTORE XR1 U3B01140
005E 6600 0000 115 | SAV2 LDX L2 0 RESTORE XR2 U3B01150
0060 2000 116 | SAVST LDS 0 OVERFLOW ON IF ERROR U3B01160
0061 C8E6 117 | LDD TEMP RESTORE ACC AND EXT U3B01170
0062 4C00 0000 118 | EXIT BSC L 0 EXIT U3B01180
119 | * U3B01190
120 | *THIS SECTION DOES THE TABLE LOOKUP FOR HOLLERITH U3B01200
121 | *TO EBCDIC CONVERSION. U3B01210
122 | * U3B01220
0064 1000 123 | EBOUT NOP RETURN ADDR U3B01230
0065 6A0F 124 | STX 2 TLU36+1 SAVE XR2 U3B01240
0066 624B 125 | LDX 2 +75 XR2=CONVERSION TABLE LENGTH U3B01250
0067 C100 126 | TLU30 LD 1 0 GET FIRST CHAR U3B01260
0068 F600 0000 127 | TLU32 EOR L2 0 CHK AGAINST TABLE ENTRY U3B01270
006A 4C18 0070R 128 | BSC L TLU34,+- SAME,GO GET EBCDIC CHAR U3B01280
006C 72FF 129 | MDX 2 -1 NOT SAME,DECR TABLE PT U3B01290
006D 70F9 130 | MDX TLU30 NOT DONE W/TBL,CHK NEXT WD U3B01300
006E C0D7 131 | LD H2001 END OF TBL,SET OVERFLOW U3B01310
006F D0F0 132 | STO SAVST INDR AS ERROR INDR U3B01320
0070 C600 0000 133 | TLU34 LD L2 0 OBTAIN EBCDIC CHAR U3B01330
0072 1808 134 | SRA 8 PUT IN LAST HALF OF WORD U3B01340
0073 7101 135 | MDX 1 +1 SET FOR NEXT INPUT CHAR U3B01350
0074 6600 0000 136 | TLU36 LDX L2 0 RESTORE XR2 U3B01360
0076 4C80 0064R 137 | BSC I EBOUT EXIT U3B01370
138 | * U3B01380
139 | *THIS SECTION GETS THE ADDRESS OF THE SUBROUTINES U3B01390
140 | *LOADED WITH THIS PROGRAM. U3B01400
141 | * U3B01410
0078 1000 142 | SBRTA NOP SAVE RET ADDR U3B01420
0079 1008 143 | SLA 8 U3B01430
007A 1888 144 | SRT 8 EXTEND MODIFIER SIGN U3B01440
007B 6BC7 145 | STX 3 CHAR GET ADDR OF TV TABLE U3B01450
007C 80C6 146 | A CHAR ADD TO DISPLACEMENT TO GET U3B01460
007D 8006 147 | A D0002 TV-PT TO THIRD WD OF TV. U3B01470
007E D001 148 | STO SBA12+1 U3B01480
007F C400 0000 149 | SBA12 LD L 0 GET SUBRT ENTRY ADDR U3B01490
0081 8003 150 | A D0003 AVOID STORED LINK WORD U3B01500
0082 4C80 0078R 151 | BSC I SBRTA EXIT U3B01510
0084 0002 152 | D0002 DC +2 DECIMAL 2 U3B01520
0085 0003 153 | D0003 DC +3 DECIMAL 3 U3B01530
0086 154 | END U3B01540
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
CALL1 0041R 88 35
CALL2 0042R 89 39
CHAR 0043R 90 69 75 100 105 109 145 146
COUNT 0044R 91 34 54 61 101 112
D0002 0084R 152 147
D0003 0085R 153 150
EBCIN 001DR 52 62
EBOUT 0064R 123 98 108 137
EBRGT 0023R 57 55
EXIT 0062R 118 45
H00FF 0045R 92 104
H2001 0046R 93 78 131
HLOUT 002BR 68 53 59 84
HOLEB 0000R 24
HOLIN 004AR 98 48 113
INPUT 0017R 46 30
LINK 0001R 25
OUTPT 0019R 47 32
RIGHT 0055R 108 102
SAV1 005CR 114 24 56 63 107
SAV2 005ER 115 26
SAVST 0060R 116 27 79 132
SBA12 007FR 149 148
SBRTA 0078R 142 36 40 151
TEMP 0048R 94 28 117
TLU12 002FR 72 41 77
TLU14 0039R 80 37 74
TLU16 003DR 83 70
TLU30 0067R 126 130
TLU32 0068R 127 38
TLU34 0070R 133 42 128
TLU36 0074R 136 124