ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u3ebprt.asm EBCDIC TO PRINTER CODE CONVERSION 2 | *************************************************** U3A00020 3 | * * U3A00030 4 | * SUBROUTINE NAME- * U3A00040 5 | * FULL NAME- EBCDIC TO PRINTER CODE CON- * U3A00050 6 | * VERSION SUBROUTINE. * U3A00060 7 | * CODE NAME- EBPRT * U3A00070 8 | * PURPOSE- THIS SUBROUTINE CONVERTS EBCDIC, * U3A00080 9 | * PACKED TWO CHARACTERS PER WORD, TO EITHER * U3A00090 10 | * 1053 OR 1443 PRINTER CODE, ALSO PACKED * U3A00100 11 | * TWO CHARACTERS PER WORD. * U3A00110 12 | * METHOD- * U3A00120 13 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL. * U3A00130 14 | * CAPABILITIES AND LIMITATIONS- * U3A00140 15 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3A00150 16 | * SPECIAL FEATURES. N/A * U3A00160 17 | * ADDITIONAL INFORMATION- * U3A00170 18 | * ESTIMATED EXECUTION TIME- * U3A00180 19 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL. * U3A00190 20 | *************************************************** U3A00200 EBCDIC TO PRINTER CODE CONVERSION 22 | LIBR U3A00220 23 | ENT EBPRT U3A00230 0000 692E 24 | EBPRT STX 1 SAV1+1 CALL ENTRY POINT U3A00240 0001 6580 0000 25 | LINK LDX I1 *-* LOADER STORES TV ADDR (+2) U3A00250 0003 6A2D 26 | STX 2 SAV2+1 SAVE XR2 U3A00260 0004 2828 27 | STS CHECK SAVE STATUS U3A00270 0005 D832 28 | STD SAVAQ SAVE ACC AND EXT U3A00280 0006 C101 29 | LD 1 1 U3A00290 0007 D00F 30 | STO INPUT+1 SAVE INPUT ADDRESS U3A00300 0008 C102 31 | LD 1 2 U3A00310 0009 D00F 32 | STO OUTPT+1 SAVE OUTPUT ADDRESS U3A00320 000A C103 33 | LD 1 3 U3A00330 000B D02F 34 | STO COUNT SET OUTPUT CODE INDR U3A00340 000C C028 35 | LD CALL1 U3A00350 000D 404A 36 | BSI SBRTA SET UP EBPA TABLE ADDR U3A00360 000E D036 37 | STO TLU14+1 U3A00370 000F C026 38 | LD CALL2 U3A00380 0010 4047 39 | BSI SBRTA SET UP PRTY TABLE ADDR U3A00390 0011 D03D 40 | STO TLU18+1 U3A00400 0012 C100 41 | LD 1 0 SET OUTPUT CODE INDR U3A00410 0013 D026 42 | STO CODE (0 IF 1053, 1 IF 1443) U3A00420 0014 7104 43 | MDX 1 +4 SET EXIT TO SKIP 4 PARAMS U3A00430 0015 691E 44 | STX 1 EXIT+1 U3A00440 0016 6500 0000 45 | INPUT LDX L1 *-* XR1= INPUT ADDR U3A00450 0018 6600 0000 46 | OUTPT LDX L2 *-* XR2= OUTPUT ADDR U3A00460 47 | * U3A00470 48 | *LOOP TO CALL CONVERSION AND PACK TWO CHARS PER U3A00480 49 | * WORD AND STORE IN OUTPUT AREA. U3A00490 50 | * U3A00500 001A C100 51 | LEFT LD 1 0 GET EBCDIC CHARACTER U3A00510 001B 4024 52 | BSI TLU CONVERT EBCDIC CHAR AND PUT U3A00520 001C 1898 53 | SRT 24 IN BITS 8-15 OF EXTENSION U3A00530 001D 74FF 003BR 54 | MDX L COUNT,-1 ANY MORE TO CONVERT U3A00540 001F 7003 55 | MDX RIGHT YES U3A00550 0020 C200 56 | LD 2 0 NO,DONT ALTER THE LAST 8 U3A00560 0021 1008 57 | SLA 8 BITS OF LAST STG WD U3A00570 0022 7003 58 | MDX STORE GO TO STORE LAST WD U3A00580 0023 C100 59 | RIGHT LD 1 0 GET SECOND HALF OF THE WD U3A00590 0024 1008 60 | SLA 8 U3A00600 0025 401A 61 | BSI TLU CONVERT SECOND HALF OF WD U3A00610 0026 18C8 62 | STORE RTE 8 PUT BOTH CHARS IN ACC U3A00620 0027 D200 63 | STO 2 0 STORE BOTH CONVERTED CHARS U3A00630 0028 7101 64 | MDX 1 +1 SET FOR NEXT INPUT WORD U3A00640 0029 7201 65 | MDX 2 +1 SET FOR NEXT OUTPUT WORD U3A00650 002A 74FF 003BR 66 | MDX L COUNT,-1 ANY MORE TO CONVERT U3A00660 002C 70ED 67 | MDX LEFT YES,REPEAT LOOP U3A00670 002D 2000 68 | CHECK LDS 0 NO,RESTORE STATUS U3A00680 002E 6500 0000 69 | SAV1 LDX L1 *-* RESTORE XR1 U3A00690 0030 6600 0000 70 | SAV2 LDX L2 *-* RESTORE XR2 U3A00700 0032 C805 71 | LDD SAVAQ RESTORE ACC AND EXT U3A00710 0033 4C00 0000 72 | EXIT BSC L *-* EXIT U3A00720 73 | * U3A00730 74 | *CONSTANTS AND BUFFER AREA U3A00740 75 | * U3A00750 0035 0509*7040 76 | CALL1 LIBF EBPA USED TO GET EBPA LD ADDR U3A00760 0036 1766*3A00 77 | CALL2 LIBF PRTY USED TO GET PRTY ENTRY ADDR U3A00770 0038 78 | SAVAQ BSS E 2 SAVE ACC AND EXTENSION U3A00780 003A 0000 79 | CODE DC 0 OUTPUT CODE INDR(0=1443) U3A00790 003B 0000 80 | COUNT DC 0 NO. OF CHARS TO CONVERT U3A00800 003C 0001 81 | D0001 DC +1 ADDR MODIFICATION CONSTANT U3A00810 003D FF00 82 | HFF00 DC /FF00 8-15 BIT MASK U3A00820 003E 2001 83 | H2001 DC /2001 OVRFLO CON U3A00830 003F 0000 84 | TEMP DC 0 TEMPORARY STORAGE U3A00840 85 | * U3A00850 86 | *CONVERT THE EBCDIC CHAR TO 1053 OR 1443 CODE U3A00860 87 | * U3A00870 0040 0000 88 | TLU DC 0 RETURN ADDR U3A00880 0041 D0FD 89 | STO TEMP SAVE EBCDIC CHAR U3A00890 0042 6A12 90 | STX 2 TLU26+1 SAVE XR2 U3A00900 0043 624B 91 | LDX 2 +75 XR2= NO. OF CHARS IN TABLE U3A00910 0044 F600 0000 92 | TLU14 EOR L2 0 EBPA TABLE ENTRY U3A00920 0046 1808 93 | SRA 8 RIGHT JUSTIFY RSLT TO TEST U3A00930 0047 4C18 004ER 94 | BSC L TLU18,+- IS EBCDIC CHAR = TABLE CHAR U3A00940 0049 C0F5 95 | LD TEMP NO,RESTORE EBCDIC CHAR TO U3A00950 004A 72FF 96 | MDX 2 -1 ACC AND TRY NEXT CHAR. U3A00960 004B 70F8 97 | MDX TLU14 GO TO COMPARE U3A00970 004C C0F1 98 | LD H2001 IF NO MORE IN TABLE,SET U3A00980 004D D0DF 99 | STO CHECK OVERFLOW ON, CARRY OFF U3A00990 004E C600 0000 100 | TLU18 LD L2 0 PRTY TABLE ENTRY U3A01000 0050 7400 003AR 101 | MDX L CODE,0 IF 1443 CODE,GET LAST 8 U3A01010 0052 1008 102 | SLA 8 BITS OF TABLE ENTRY U3A01020 0053 E0E9 103 | AND HFF00 RET ONLY 8 BITS- ONE CHAR U3A01030 0054 6600 0000 104 | TLU26 LDX L2 *-* RESTORE XR2 U3A01040 0056 4C80 0040R 105 | BSC I TLU RETURN U3A01050 106 | * U3A01060 107 | *OBTAIN TABLE ADDRESS U3A01070 108 | * U3A01080 0058 0000 109 | SBRTA DC 0 RET ADDR U3A01090 0059 1008 110 | SLA 8 OBTAIN DISPLACEMENT OF TV U3A01100 005A 1888 111 | SRT 8 U3A01110 005B 6B04 112 | STX 3 SBA12+1 CONTENTS OF XR3 U3A01120 005C 8007 113 | A D0002 PT TO THIRD WD OF TV U3A01130 005D 8002 114 | A SBA12+1 THEN GET LOC OF SUBRT ADDR U3A01140 005E D001 115 | STO SBA12+1 U3A01150 005F C400 0000 116 | SBA12 LD L 0 SUBROUTINE ADDR IN ACC U3A01160 0061 8003 117 | A D0003 AVOID STORED LINK WD U3A01170 0062 4C80 0058R 118 | BSC I SBRTA RETURN W/ TBL ADDR IN ACC U3A01180 0064 0002 119 | D0002 DC +2 DECIMAL 2 U3A01190 0065 0003 120 | D0003 DC +3 DECIMAL 3 U3A01200 0066 121 | END U3A01210 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced CALL1 0035R 76 35 CALL2 0036R 77 38 CHECK 002DR 68 27 99 CODE 003AR 79 42 101 COUNT 003BR 80 34 54 66 D0001 003CR 81 D0002 0064R 119 113 D0003 0065R 120 117 EBPRT 0000R 24 EXIT 0033R 72 44 H2001 003ER 83 98 HFF00 003DR 82 103 INPUT 0016R 45 30 LEFT 001AR 51 67 LINK 0001R 25 OUTPT 0018R 46 32 RIGHT 0023R 59 55 SAV1 002ER 69 24 SAV2 0030R 70 26 SAVAQ 0038R 78 28 71 SBA12 005FR 116 112 114 115 SBRTA 0058R 109 36 39 118 STORE 0026R 62 58 TEMP 003FR 84 89 95 TLU 0040R 88 52 61 105 TLU14 0044R 92 37 97 TLU18 004ER 100 40 94 TLU26 0054R 104 90