ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:11 2020
Source File: \w1ebc48.asm
4OF8 - EBC AND EBC - 4OF8 CONVERSION
2 | *************************************************** W1A00020
3 | * TITLE - EBC48 * W1A00030
4 | * STATUS - CHANGE LEVEL 3 * W1A00040
5 | * FUNCTION/OPERATION - .EBC48. CONVERTS 4-OF-8 * W1A00050
6 | * CHARACTERS TO EBCDIC OR EBCDIC TO 4-OF-8 CODE, * W1A00060
7 | * DEPENDING ON THE VALUE OF THE CONTROL PARAMETER* W1A00070
8 | * ENTRY POINTS - .EBC48. CALL ENTRANCE LIBF EBC48 * W1A00080
9 | * INPUT - UNPACKED, LEFT-JUSTIFIED 4-OF-8 CODE * W1A00090
10 | * CHARACTERS OR PACKED EBCDIC CHARACTERS * W1A00100
11 | * OUTPUT - PACKED EBCDIC CHARACTERS OR UNPACKED, * W1A00110
12 | * LEFT-JUSTIFIED 4-OF-8 CODE CHARACTERS * W1A00120
13 | * EXTERNAL ROUTINES - .STRTB. TABLE OF 4-OF-8 CODE* W1A00130
14 | * AND EBCDIC CHARACTERS, .HXCV. ROUTINE TO * W1A00140
15 | * CONVERT 4-OF-8 CODE CHARACTER TO VALUE BETWEEN * W1A00150
16 | * ZERO AND 63. * W1A00160
17 | * EXITS-NORMAL - RETURN TO MAINLINE AT LIBF+5 * W1A00170
18 | * -ERROR - INVALID EBCDIC CHARACTER ON INPUT,* W1A00180
19 | * EXIT TO LIBF+5 AFTER CONVERSION IS COMPLETE * W1A00190
20 | * WITH CARRY OFF AND OVERFLOW ON. * W1A00200
21 | * TABLES/WORK AREAS - NONE * W1A00210
22 | * ATTRIBUTES - REUSABLE * W1A00220
23 | * NOTES - THE CALLING SEQUENCE IS * W1A00230
24 | * LIBF EBC48 * W1A00240
25 | * DC /000X CONTROL PARAMETER * W1A00250
26 | * DC INPUT INPUT AREA ADDRS * W1A00260
27 | * DC OTPUT OUTPUT AREA ADDRS * W1A00270
28 | * DC NNNN CHARACTER COUNT * W1A00280
29 | *************************************************** W1A00290
4OF8 - EBC AND EBC - 4OF8 CONVERSION
31 | LIBR W1A00310
32 | ENT EBC48 W1A00320
0000 6966 33 | EBC48 STX 1 SAV1+1 SAVE INDEX REGISTER 1 W1A00330
0001 6580 0000 34 | LDX I1 *-* ADDR FIRST PARAMETER W1A00340
0003 D86A 35 | STD AQ SAVE ACC AND EXTENSION W1A00350
0004 2865 36 | STS LDS SAVE STATUS W1A00360
0005 6917 37 | STX 1 MDX1+1 SAVE ADDR 1ST PARAMETER W1A00370
0006 C101 38 | LD 1 1 STORE INPUT BUFFER ADDRESS W1A00380
0007 D013 39 | STO INPUT+1 W1A00390
0008 C102 40 | LD 1 2 STORE OUTPUT BFR ADDRESS W1A00400
0009 D057 41 | STO OUTPT+1 W1A00410
000A C103 42 | LD 1 3 W1A00420
000B D064 43 | STO CT CNT OF CHARS TO CONVERT W1A00430
000C 7104 44 | MDX 1 4 SET RETURN ADDR TO USER W1A00440
000D 695F 45 | STX 1 XIT+1 PROGRAM. W1A00450
000E 6A5A 46 | STX 2 SAV2+1 SAVE USERS XR2 W1A00460
000F C061 47 | LD LIBF CONVERT LIBF STRTB INTO ACT W1A00470
0010 1088 48 | SLT 8 ADDR OF TABLE. W1A00480
0011 1888 49 | SRT 8 W1A00490
0012 807E 50 | A K2 W1A00500
0013 D001 51 | STO LD+1 W1A00510
0014 C700 0000 52 | LD LD L3 *-* W1A00520
0016 807B 53 | A K3 CONVERTED ADDRESS W1A00530
0017 D07D 54 | STO ADDRS W1A00540
0018 6100 55 | LDX 1 0 W1A00550
0019 62FE 56 | LDX 2 -2 W1A00560
001A C500 0000 57 | INPUT LD L1 *-* FETCH TWO INPUT CHARS W1A00570
001C 7400 0000 58 | MDX1 MDX L *-*,0 CHK DIRECTION OF CONVERSION W1A00580
001E 705B 59 | MDX CNVRT 4 OF 8 TO EBCDIC W1A00590
001F 18D0 60 | RTE 16 SEPARATE AND STORE W1A00600
0020 1088 61 | SLT 8 W1A00610
0021 1008 62 | SLA 8 W1A00620
0022 D87D 63 | STD BUKT W1A00630
0023 F06F 64 | LOOP EOR RCDMK CHK FOR RECORD MARK W1A00640
0024 4818 65 | BSC +- SKIP IF NOT W1A00650
0025 C071 66 | LD K8A01 CNVRT E0 TO 6A,PASS TEST 2-3 W1A00660
0026 F06C 67 | EOR RCDMK RESTORE CHAR TO ORIGINAL W1A00670
0027 690A 68 | STX 1 N2+1 2-3 W1A00680
0028 61F9 69 | LDX 1 -7 THIS PART OF THE 2-3 W1A00681
0029 9500 00A0R 70 | N1 S L1 N3+7 *PROGRAM TESTS FOR 2-3 W1A00682
002B 4C18 0031R 71 | BSC L N2,+- *CERTAIN INVALID 2-3 W1A00683
002D 8500 00A0R 72 | A L1 N3+7 *EBC-CHARACTERS IN ORDER 2-3 W1A00684
002F 7101 73 | MDX 1 1 *TO CONVERT THEM TO 2-3 W1A00685
0030 70F8 74 | MDX N1 *BLANK 4 OF 8 CODE 2-3 W1A00686
0031 6500 0000 75 | N2 LDX L1 *-* 2-3 W1A00687
0033 4C18 003AR 76 | BSC L ERR,+- 2-3 W1A00688
0035 D600 00A2R 77 | STO L2 BUKT+2 W1A00689
0037 1002 78 | SLA 2 MODULO 64 W1A00690
0038 4C02 003DR 79 | BSC L OK2,C OK ONLY IF 4 BIT PRESENT W1A00700
003A 1010 80 | ERR SLA 16 NO 4 BIT ERROR W1A00710
003B 2001 81 | LDS 1 W1A00720
003C 282D 82 | STS LDS W1A00730
003D D00E 83 | OK2 STO HOLD+1 CONTINUE VALIDITY CHECK W1A00740
003E 1002 84 | SLA 2 W1A00750
003F 1801 85 | SRA 1 W1A00760
0040 9053 86 | S K9 W1A00770
0041 4C08 0072R 87 | BSC L CONTU,+ W1A00780
0043 C600 00A2R 88 | LD L2 BUKT+2 W1A00790
0045 4C08 003AR 89 | BSC L ERR,+ ERROR IF A-F W1A00800
0047 C004 90 | GATHR LD HOLD+1 BUILD ADDRESS IN STRTB TO W1A00810
0048 180A 91 | SRA 10 FIND 4 OF 8 CHARACTER. W1A00820
0049 804B 92 | A ADDRS W1A00830
004A D001 93 | STO HOLD+1 W1A00840
004B C400 0000 94 | HOLD LD L *-* FETCH CHAR W1A00850
004D E048 95 | AND MASK2 ELIMINATE EBC BITS (8-15) W1A00860
004E D600 00A2R 96 | STO L2 BUKT+2 SAVE CONVERTED CHARACTER W1A00870
0050 C600 00A3R 97 | LD L2 BUKT+3 FETCH NEXT CHARACTER W1A00880
0052 7201 98 | MDX 2 1 W1A00890
0053 70CF 99 | MDX LOOP GO CONVERT SECOND OF TWO W1A00900
0054 C00C 100 | LD OUTPT+1 SET TO STORE 1ST 4 OF 8 W1A00910
0055 D002 101 | STO PUT+1 CHARACTER. W1A00920
0056 C049 102 | LD BUKT GET 1ST CONVERTED CHARACTER W1A00930
0057 D500 0000 103 | PUT STO L1 *-* AND STORE TO OUTPUT BUFFER. W1A00940
0059 7401 0061R 104 | MDX L OUTPT+1,1 TO STORE 2ND CONVERTED CHAR W1A00950
005B 74FF 0070R 105 | MDX L CT,-1 DECR CHAR COUNT W1A00960
005D 7001 106 | MDX *+1 W1A00970
005E 7007 107 | MDX SAV1 EXIT ON ZERO CHAR COUNT W1A00980
005F C041 108 | LD BUKT+1 W1A00990
0060 D500 0000 109 | OUTPT STO L1 *-* ST TO USER'S OUTPUT BUFFER W1A01000
0062 7101 110 | MDX 1 1 INCREMENT BUFFER POINTER W1A01010
0063 74FF 0070R 111 | MDX L CT,-1 DECR CHAR COUNT W1A01020
0065 70B3 112 | MDX INPUT-1 GO CONVERT NEXT TWO CHARS W1A01030
0066 6500 0000 113 | SAV1 LDX L1 *-* RESTORE USERS XR1 W1A01040
0068 6600 0000 114 | SAV2 LDX L2 *-* RESTORE USERS XR2 W1A01050
006A 2000 115 | LDS LDS 0 W1A01060
006B C802 116 | LDD AQ W1A01070
006C 4C00 0000 117 | XIT BSC L *-* RETURN TO USER W1A01080
006E 118 | AQ BSS E 2 ACC AND EXT TEMP. W1A01081
0070 0000 119 | CT DC CHAR COUNT TEMP. W1A01082
0071 228D*98C2 120 | LIBF LIBF STRTB CALL STRTB,1 WORD CALL W1A01083
0072 8025 121 | CONTU A K7 W1A01090
0073 4C28 0047R 122 | BSC L GATHR,Z+ NO CHK IF RT HEX IS 0 OR 1 W1A01100
0075 C600 00A2R 123 | LD L2 BUKT+2 ENSURE LFT HEX IS C THRU F W1A01110
0077 4C10 003AR 124 | BSC L ERR,- W1A01120
0079 70CD 125 | MDX GATHR OK - GO CONVERT W1A01130
007A 6A02 126 | CNVRT STX 2 SVX2+1 SET TO PROCESS 2 CHARACTERS W1A01140
007B 089C*3940 127 | LIBF HXCV CONVERT 4OF8 TO 0-63 RLTV W1A01150
007C 6600 0000 128 | SVX2 LDX L2 *-* W1A01160
007E 8016 129 | A ADDRS ADD BASE ADDR OF STRTB W1A01170
007F 9012 130 | S K3 ADJUST W1A01180
0080 D001 131 | STO *+1 W1A01190
0081 C400 0000 132 | LD L *-* FETCH EBCDIC CHAR W1A01200
0083 1008 133 | SLA 8 ELIMINATE 4 OF 8 BITS W1A01210
0084 D600 00A2R 134 | STO L2 BUKT+2 W1A01220
0086 7201 135 | MDX 2 1 W1A01230
0087 7003 136 | MDX JUMP GO PROCESS NEXT CHARACTER W1A01240
0088 1808 137 | SRA 8 CHARS INTO ONE WORD W1A01250
0089 E816 138 | OR BUKT W1A01260
008A 70D5 139 | MDX OUTPT GO STORE 2 CHARS IN OUTPUT W1A01270
008B 7401 001BR 140 | JUMP MDX L INPUT+1,1 POINT TO NEXT INPUT CHAR W1A01280
008D 74FF 0070R 141 | MDX L CT,-1 DECR CHAR COUNT W1A01290
008F 708A 142 | MDX INPUT GO FETCH NEXT INPUT CHAR W1A01300
0090 70CF 143 | MDX OUTPT GO STORE LAST CHARACTER W1A01310
0091 0002 144 | K2 DC 2 ADDR MODIFICATION CONSTANT W1A01350
0092 0003 145 | K3 DC 3 ADDR MODIFICATION CONSTANT W1A01360
0093 E000 146 | RCDMK DC /E000 RECORD MARK CONSTANT W1A01370
0094 4800 147 | K9 DC /4800 VALIDITY CHECK CONSTANT W1A01380
0095 0000 148 | ADDRS DC BASE ADDR OF STRTB TABLE W1A01390
0096 FF00 149 | MASK2 DC /FF00 LEFT DIGIT EXTRACT MASK W1A01400
0097 8A01 150 | K8A01 DC /8A01 RECORD MARK CONST. 2-3 W1A01410
0098 3800 151 | K7 DC /3800 VALIDITY CHK CONSTANT W1A01420
0099 4100 152 | N3 DC /4100 INVALID EBC-CHAR 2-3 W1A01421
009A 5100 153 | DC /5100 INVALID EBC-CHAR 2-3 W1A01422
009B 6A00 154 | DC /6A00 INVALID EBC-CHAR 2-3 W1A01423
009C 7000 155 | DC /7000 INVALID EBC-CHAR 2-3 W1A01424
009D 7100 156 | DC /7100 INVALID EBC-CHAR 2-3 W1A01425
009E D000 157 | DC /D000 INVALID EBC-CHAR 2-3 W1A01426
009F E100 158 | DC /E100 INVALID EBC-CHAR 2-3 W1A01427
00A0 159 | BUKT BSS E 2 CONVERTED CHAR TEMPORARY W1A01430
00A2 160 | END W1A01440
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
ADDRS 0095R 148 54 92 129
AQ 006ER 118 35 116
BUKT 00A0R 159 63 77 88 96 97 102 108 123 134 138
CNVRT 007AR 126 59
CONTU 0072R 121 87
CT 0070R 119 43 105 111 141
EBC48 0000R 33
ERR 003AR 80 76 89 124
GATHR 0047R 90 122 125
HOLD 004BR 94 83 90 93
INPUT 001AR 57 39 112 140 142
JUMP 008BR 140 136
K2 0091R 144 50
K3 0092R 145 53 130
K7 0098R 151 121
K8A01 0097R 150 66
K9 0094R 147 86
LD 0014R 52 51
LDS 006AR 115 36 82
LIBF 0071R 120 47
LOOP 0023R 64 99
MASK2 0096R 149 95
MDX1 001CR 58 37
N1 0029R 70 74
N2 0031R 75 68 71
N3 0099R 152 70 72
OK2 003DR 83 79
OUTPT 0060R 109 41 100 104 139 143
PUT 0057R 103 101
RCDMK 0093R 146 64 67
SAV1 0066R 113 33 107
SAV2 0068R 114 46
SVX2 007CR 128 126
XIT 006CR 117 45