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