ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u3holpr.asm HOLLERITH TO PRINTER CODE CONVERSION 2 | *************************************************** U3C00020 3 | * * U3C00030 4 | * SUBROUTINE NAME- * U3C00040 5 | * FULL NAME- HOLLERITH TO 1053 OR 1443 * U3C00050 6 | * PRINTER CODE CONVERSION SUBROUTINE. * U3C00060 7 | * CODE NAME- HOLPR * U3C00070 8 | * PURPOSE- THIS SUBROUTINE CONVERTS HOLLERITH * U3C00080 9 | * CHARACTER CODE TO EITHER 1053 OR 1443 * U3C00090 10 | * PRINTER CODE,PACKED TWO CHARACTERS PER WORD* U3C00100 11 | * METHOD- * U3C00110 12 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3C00120 13 | * CAPABILITIES AND LIMITATIONS- * U3C00130 14 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3C00140 15 | * SPECIAL FEATURES- N/A * U3C00150 16 | * ADDITIONAL INFORMATION- * U3C00160 17 | * ESTIMATED EXECUTION TIME- * U3C00170 18 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3C00180 19 | * * U3C00190 20 | *************************************************** U3C00200 HOLLERITH TO PRINTER CODE CONVERSION 22 | LIBR U3C00220 23 | ENT HOLPR U3C00230 0000 692F 24 | HOLPR STX 1 SAV1+1 CALL ENTRY POINT U3C00240 0001 6580 0000 25 | LINK LDX I1 0 LOADER STORED TV ADDR U3C00250 0003 6A2E 26 | STX 2 SAV2+1 SAVE XR2 U3C00260 0004 2829 27 | STS CHECK SAVE STATUS U3C00270 0005 D832 28 | STD SAVAQ SAVE ACC AND EXT U3C00280 0006 C101 29 | LD 1 1 U3C00290 0007 D010 30 | STO INPUT+1 SAVE INPUT ADDR U3C00300 0008 C102 31 | LD 1 2 U3C00310 0009 D010 32 | STO OUTPT+1 SAVE OUPUT ADDR U3C00320 000A C103 33 | LD 1 3 U3C00330 000B D02F 34 | STO COUNT SAVE CHAR COUNT U3C00340 000C C029 35 | LD CALL1 U3C00350 000D 4048 36 | BSI SBRTA SET UP HOLL TABLE ADDR U3C00360 000E D035 37 | STO TLU14+1 U3C00370 000F C027 38 | LD CALL2 U3C00380 0010 4045 39 | BSI SBRTA SET UP PRTY TABLE ADDR U3C00390 0011 D03B 40 | STO TLU18+1 U3C00400 0012 C100 41 | LD 1 0 SET OUTPUT CODE INDR U3C00410 0013 F028 42 | EOR D0001 (0 IF 1443, 1 IF 1053) U3C00420 0014 D025 43 | STO CODE U3C00430 0015 7104 44 | MDX 1 +4 SET EXIT TO SKIP 4 PARAMS U3C00440 0016 691E 45 | STX 1 EXIT+1 U3C00450 0017 6500 0000 46 | INPUT LDX L1 0 XR1= INPUT ADDR U3C00460 0019 6600 0000 47 | OUTPT LDX L2 0 XR2= OUTPUT ADDR U3C00470 48 | * U3C00480 49 | *THIS SECTION SETS UP THE CONVERSION AND STORES U3C00490 50 | *THE RESULTS IN THE OUTPUT AREA. U3C00500 51 | * U3C00510 001B C200 52 | LEFT LD 2 0 U3C00520 001C 1888 53 | SRT 8 SAVE RT HALF OF O/P AREA WD U3C00530 001D 4021 54 | BSI TLU GO CONVERT HOLLERITH CHAR U3C00540 001E 1088 55 | SLT 8 ST CONVERTED CHAR IN FIRST, U3C00550 001F D200 56 | STO 2 0 RESTORE LAST HALF OF WORD. U3C00560 0020 74FF 003BR 57 | MDX L COUNT,-1 ANY MORE CHARS TO CONVERT U3C00570 0022 7001 58 | MDX RIGHT YES,GO TO FILL OUT O/P WD U3C00580 0023 700A 59 | MDX CHECK NO,GO TO EXIT U3C00590 0024 C200 60 | RIGHT LD 2 0 U3C00600 0025 1898 61 | SRT 24 SAVED CONVERTED LEFT CHAR U3C00610 0026 4018 62 | BSI TLU CONVERT HOLL CHAR AND PUT U3C00620 0027 1008 63 | SLA 8 IN BITS 0-7. U3C00630 0028 18C8 64 | RTE 8 U3C00640 0029 D200 65 | STO 2 0 STORE BOTH CONVERTED CHARS U3C00650 002A 7201 66 | MDX 2 +1 SET FOR NEXT OUTPUT WORD U3C00660 002B 74FF 003BR 67 | MDX L COUNT,-1 ANY MORE CHARS TO CONVERT U3C00670 002D 70ED 68 | MDX LEFT YES,REPEAT LOOP U3C00680 002E 2000 69 | CHECK LDS 0 NO,RESTORE STATUS U3C00690 002F 6500 0000 70 | SAV1 LDX L1 0 RESTORE XR1 U3C00700 0031 6600 0000 71 | SAV2 LDX L2 0 RESTORE XR2 U3C00710 0033 C804 72 | LDD SAVAQ RESTORE ACC AND EXT U3C00720 0034 4C00 0000 73 | EXIT BSC L 0 EXIT U3C00730 74 | * U3C00740 75 | *CONSTANTS AND BUFFER AREA U3C00750 76 | * U3C00760 0036 0859*34C0 77 | CALL1 LIBF HOLL USED TO GET HOLL LOAD ADDR U3C00770 0037 1766*3A00 78 | CALL2 LIBF PRTY USED TO GET PRTY LOAD ADDR U3C00780 0038 79 | SAVAQ BSS E 2 SAVE ACC AND EXT U3C00790 003A 0000 80 | CODE DC 0 O/P CODE INDR(0=1443,1=1053 U3C00800 003B 0000 81 | COUNT DC 0 CHAR COUNT U3C00810 003C 0001 82 | D0001 DC +1 15-BIT MASK U3C00820 003D 00FF 83 | H00FF DC /00FF HIGH BIT MASK U3C00830 003E 2001 84 | H2001 DC /2001 OVERFLOW STATUS WD U3C00840 85 | * U3C00850 86 | *THIS SECTION DOES A TABLE LOOKUP CONVERSION USING U3C00860 87 | *EBPA AND HOLL. U3C00870 88 | * U3C00880 003F 0000 89 | TLU DC 0 SAVE RET ADDR U3C00890 0040 6A12 90 | STX 2 TLU26+1 SAVE XR1 U3C00900 0041 624B 91 | LDX 2 +75 XR2= NO. OF CHARS IN TABLE U3C00910 0042 C100 92 | TLU12 LD 1 0 GET HOLLERITH CHAR U3C00920 0043 F600 0000 93 | TLU14 EOR L2 0 CHK AGAINST TABLE ENTRY U3C00930 0045 4C18 004BR 94 | BSC L TLU16,+- IF SAME,GO CONVERT U3C00940 0047 72FF 95 | MDX 2 -1 IF NOT,CHK FOR END OF TABLE U3C00950 0048 70F9 96 | MDX TLU12 MORE TBL,CONTINUE SEARCH U3C00960 0049 C0F4 97 | LD H2001 END OF TBL,SET ERROR INDR- U3C00970 004A D0E3 98 | STO CHECK CARRY OFF, OVERFLOW ON. U3C00980 004B 7101 99 | TLU16 MDX 1 +1 RT TBL ENTRY, REF NEXT CHAR U3C00990 004C C600 0000 100 | TLU18 LD L2 0 GET PRTY TABLE ENTRY U3C01000 004E 7400 003AR 101 | MDX L CODE,0 SKIP IF 1443,USE LAST 8 BIT U3C01010 0050 1808 102 | SRA 8 IF 1053,USE FIRST 8 BITS U3C01020 0051 E0EB 103 | AND H00FF RET ONLY ONE CHAR U3C01030 0052 6600 0000 104 | TLU26 LDX L2 0 RESTORE XR2 U3C01040 0054 4C80 003FR 105 | BSC I TLU RETURN U3C01050 106 | * U3C01060 107 | *THIS SECTION GET THE ADDRESS OF THE BEGINNING OF U3C01070 108 | *THE TABLES IN PRTY AND HOLL. U3C01080 109 | * U3C01090 0056 0000 110 | SBRTA DC *-* SAVE RET ADDR U3C01100 0057 1008 111 | SLA 8 PROPAGATE SIGN BIT OF TV U3C01110 0058 1888 112 | SRT 8 DISPLACEMENT. U3C01120 0059 6B04 113 | STX 3 SBA12+1 GET TV TBL LOCATION U3C01130 005A 8007 114 | A D0002 CONSTRUCT THE ADDRESS OF U3C01140 005B 8002 115 | A SBA12+1 THIRD WD OF TV. U3C01150 005C D001 116 | STO SBA12+1 U3C01160 005D C400 0000 117 | SBA12 LD L 0 GET SUBRT ENTRY ADDR U3C01170 005F 8003 118 | A D0003 U3C01180 0060 4C80 0056R 119 | BSC I SBRTA RETURN CALL+3 U3C01190 0062 0002 120 | D0002 DC +2 DECIMAL 2 U3C01200 0063 0003 121 | D0003 DC +3 DECIMAL 3 U3C01210 0064 122 | END U3C01220 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced CALL1 0036R 77 35 CALL2 0037R 78 38 CHECK 002ER 69 27 59 98 CODE 003AR 80 43 101 COUNT 003BR 81 34 57 67 D0001 003CR 82 42 D0002 0062R 120 114 D0003 0063R 121 118 EXIT 0034R 73 45 H00FF 003DR 83 103 H2001 003ER 84 97 HOLPR 0000R 24 INPUT 0017R 46 30 LEFT 001BR 52 68 LINK 0001R 25 OUTPT 0019R 47 32 RIGHT 0024R 60 58 SAV1 002FR 70 24 SAV2 0031R 71 26 SAVAQ 0038R 79 28 72 SBA12 005DR 117 113 115 116 SBRTA 0056R 110 36 39 119 TLU 003FR 89 54 62 105 TLU12 0042R 92 96 TLU14 0043R 93 37 TLU16 004BR 99 94 TLU18 004CR 100 40 TLU26 0052R 104 90