ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:08 2020
Source File: \t5holez.asm
HOLEZ
2 | LIBR T5D00030
3 | ENT HOLEZ T5D00040
4 | *************************************************** T5D00050
5 | *STATUS - VERSION 2, MODIFICATION LEVEL 12 * T5D00060
6 | * * T5D00070
7 | *FUNCTION/OPERATION- * T5D00080
8 | * THIS SUBROUTINE IS USED BY FORTRAN I/O * T5D00090
9 | * SUBROUTINES TO CONVERT FROM EBC TO HOLLERITH * T5D00100
10 | * CODE OR VICE-VERSA. THIS IS DONE BY A TABLE * T5D00110
11 | * LOOKUP METHOD * T5D00120
12 | * * T5D00130
13 | *ENTRY POINTS- * T5D00140
14 | * * HOLEZ-ENTERED BY A LIBF HOLEZ * T5D00150
15 | * * T5D00160
16 | *INPUT- * T5D00170
17 | * * XR1 CONTAINS THE I/O BUFFER ADDRESS * T5D00180
18 | * * XR2 CONTAINS THE CHARACTER COUNT * T5D00190
19 | * * ACC CONTAINS A 0 OR 2. 0 MEANS A READ * T5D00200
20 | * CONVERSION FROM HOLL TO EBC. 2 MEANS A PUNCH* T5D00210
21 | * CONVERSION FROM EBC TO HOLLERITH AND IS USED* T5D00220
22 | * BY THE PROGRAM. * T5D00230
23 | * * T5D00240
24 | *OUTPUT-THE I/O BUFFER IN CONVERTED FORMAT * T5D00250
25 | * * T5D00260
26 | *EXTERNAL REFERENCES- * T5D00270
27 | * * GETAD-A ROUTINE TO GET EFFECTIVE ADDR OF TBL* T5D00280
28 | * * HOLTB-HOLLERITH TO EBC TABLE * T5D00290
29 | * * EBCTB-EBC TO HOLLERITH TABLE * T5D00300
30 | * * T5D00310
31 | *EXITS- * T5D00320
32 | * NORMAL- * T5D00330
33 | * * HOLEZ+1-RETURNS TO CALLING SUBROUTINE * T5D00340
34 | * ERROR - * T5D00345
35 | * * IF INVALID CHARACTERS APPEAR IN THE INPUT* T5D00350
36 | * * RECORD THE ROUTINE WILL CONVERT THEM TO * T5D00355
37 | * * EBC BLANKS * T5D00360
38 | * * T5D00365
39 | *TABLES/WORK AREAS-N/A * T5D00370
40 | * * T5D00380
41 | *ATTRIBUTES-RELOCATABLE * T5D00390
42 | * * T5D00400
43 | *NOTES-N/A * T5D00410
44 | * * T5D00420
45 | *************************************************** T5D00430
HOLEZ
47 | * T5D00450
48 | * INITALIZATION PHASE T5D00460
49 | * T5D00470
0000 7002 50 | HOLEZ MDX *+2 ENTRY T5D00480
0001 4C80 0000 51 | BSC I *-* EXIT T5D00490
0003 D02D 52 | STO HZ903 SAVE READ/PUNCH INDICATOR T5D00500
0004 6A2B 53 | STX 2 HZ902 SAVE COUNT TO CONVERT T5D00510
0005 C82C 54 | LDD HZ903+1 SET UP TABLE ENTRIES T5D00520
0006 7400 0031R 55 | MDX L HZ903,0 CHECK FOR READ OR PUNCH T5D00530
0008 18D0 56 | RTE 16 PUNCH, CONVERT EBC TO HOLL T5D00540
0009 D82A 57 | STD HZ903+3 SAVE CONVERSION TBL ORDER T5D00550
000A 0716*3044 58 | LIBF GETAD GET ADDRESS OF TABLE T5D00560
000B D005 59 | STO HZ100+1 SAVE ADDRESS OF TABLE T5D00570
000C C028 60 | LD HZ903+4 GET ADDRESS OF OTHER T5D00580
000D 0716*3044 61 | LIBF GETAD *TABLE T5D00590
000E D01A 62 | STO HZ300+1 SAVE ADDRESS OF OTHER TBL T5D00600
63 | * T5D00610
64 | * SCAN TABLES AND CONVERT DATA T5D00620
65 | * T5D00630
000F 62CB 66 | LDX 2 -53 SET TABLE SIZE T5D00640
0010 C600 0000 67 | HZ100 LD L2 *-* GET CHAR FROM TABLE T5D00650
0012 7400 0031R 68 | MDX L HZ903,0 TEST IF READ OR WRITE T5D00660
0014 1808 69 | SRA 8 SHIFT CHAR IF EBC WRITE T5D00670
0015 F100 70 | EOR 1 0 COMPARE TO BUFFER CHAR T5D00680
0016 4C18 0028R 71 | BSC L HZ300,+- BRANCH IF EQUAL T5D00690
0018 7201 72 | MDX 2 1 INCREMENT TABLE COUNTER T5D00700
0019 70F6 73 | MDX HZ100 CHECK NXT CHAR IN TBL T5D00710
001A C014 74 | LD HZ901 NO MATCH, LD ASTERISK T5D00720
001B 7400 0031R 75 | MDX L HZ903,0 TEST IF WRITE INSTRUCTION T5D00730
001D 1810 76 | SRA 16 IF READ, SET CHAR TO 0 T5D00740
77 | * T5D00750
78 | * SAVE CHARACTER, PROCESS NEXT ONE T5D00760
79 | * T5D00770
001E D100 80 | HZ200 STO 1 0 SAVE CHARACTER IN BUFR T5D00780
001F 7101 81 | MDX 1 1 INCR BUFFER POINTER T5D00790
0020 74FF 0030R 82 | MDX L HZ902,-1 DECR COUNT OF CHARS BY ONE T5D00800
0022 70EC 83 | MDX HZ100-1 CNT NOT DONE, CONVERT NEXT T5D00810
84 | * ALL CHARACTERS CONVERTED. IF PUNCH T5D00820
85 | * OUTPUT REQUIRED INSERT STOP CHARACTER T5D00830
86 | * AND SAVE IN BUFFER. STOP CHAR =/4 T5D00840
87 | * T5D00850
0023 C00D 88 | LD HZ903 LD READ/PUNCH INDR. T5D00860
89 | *************************************************** T5D00870
90 | * NOTE---PUNCH INDR MUST =2 BECAUSE OF T5D00880
91 | * FOLLOWING CODING T5D00890
92 | * T5D00900
93 | *************************************************** T5D00910
0024 1002 94 | SLA 2 MULT BY 2 T5D00920
0025 E9FF 95 | OR 1 -1 ADD TO LAST WD OF BUFFER T5D00930
0026 D1FF 96 | STO 1 -1 SAVE IN BUFFER T5D00940
0027 70D9 97 | MDX HOLEZ+1 EXIT FROM ROUTINE T5D00950
98 | * T5D00960
99 | * MATCH FOUND, GET CHAR FROM OTHER TBL T5D00970
100 | * AND PUT IN BUFFER T5D00980
101 | * T5D00990
0028 C600 0000 102 | HZ300 LD L2 *-* GET CHAR FROM TABLE T5D01000
002A 7400 0031R 103 | MDX L HZ903,0 TEST FOR PUNCH O/P T5D01010
002C 70F1 104 | MDX HZ200 PUNCH, GO SAVE O/P T5D01020
002D 1808 105 | SRA 8 READ-SHIFT EBC CHAR T5D01030
002E 70EF 106 | MDX HZ200 GO STORE SHIFTED CHAR T5D01040
107 | * T5D01050
108 | * CONSTANTS T5D01060
109 | * T5D01070
002F 005C 110 | HZ901 DC /005C EBCDIC ASTERISK 212 T5D01080
0030 111 | BSS E 0 T5D01090
0030 0000 112 | HZ902 DC 0 COUNT OF CHARS T5D01100
0031 0000 113 | HZ903 DC 0 READ/PUNCH INDR T5D01110
0032 0859*38C2 114 | LIBF HOLTB HOLL CONVERSION TABLE T5D01120
0033 0508*38C2 115 | LIBF EBCTB EBC CONVERSION TABLE T5D01130
0034 0000 116 | DC 0 TABLE TO BE CONVERTED FROM T5D01140
0035 0000 117 | DC 0 TABLE TO BE CONVERTED TO T5D01150
0036 118 | END T5D01160
There were no errors in this assembly
=== CROSS REFERENCES ==========================================================
Name Val Defd Referenced
HOLEZ 0000R 50 97
HZ100 0010R 67 59 73 83
HZ200 001ER 80 104 106
HZ300 0028R 102 62 71
HZ901 002FR 110 74
HZ902 0030R 112 53 82
HZ903 0031R 113 52 54 55 57 60 68 75 88 103