ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u3pappr.asm PTTC/8 TO CP, CP TO PTTC/8 CONVERSION 2 | ************************************************** U3G00020 3 | * * U3G00030 4 | * SUBROUTINE NAME- * U3G00040 5 | * FULL NAME- PTTC/8 SUBSET TO 1053 OR 1403 * U3G00050 6 | * CONSOLE PRINTER CODE * U3G00060 7 | * CODE NAME- PAPPR * U3G00070 8 | * PURPOSE- THIS SUBROUTINE CONVERTS PTTC/8 * U3G00080 9 | * SUBSET TO 1053 OR 1403 PRINTER CODE. * U3G00090 10 | * METHOD- * U3G00100 11 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3G00110 12 | * CAPABILITIES AND LIMITATIONS- * U3G00120 13 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3G00130 14 | * SPECIAL FEATURES- N/A * U3G00140 15 | * ADDITIONAL INFORMATION- * U3G00150 16 | * ESTIMATED EXECUTION TIME- * U3G00160 17 | * SEE IBM 1130 SUBROUTINE LIBRARY MANUAL * U3G00170 18 | * U3G00180 19 | *************************************************** U3G00190 PTTC/8 TO CP, CP TO PTTC/8 CONVERSION 21 | LIBR U3G00210 22 | ENT PAPPR U3G00220 0000 6940 23 | PAPPR STX 1 SAV1+1 CALL ENTRY POINT U3G00230 0001 6580 0000 24 | LINK LDX I1 0 LOADER STORED TV ADDR U3G00240 0003 6A3F 25 | STX 2 SAV2+1 SAVE XR2 U3G00250 0004 283F 26 | STS SAVST SAVE STATUS U3G00260 0005 D84E 27 | STD SAVAQ SAVE ACC AND EXT U3G00270 0006 C101 28 | LD 1 1 XR1 = ADDR OF CALL+1 U3G00280 0007 D018 29 | STO INPUT+1 = INPUT PARAMETER U3G00290 0008 C102 30 | LD 1 2 U3G00300 0009 D018 31 | STO OUTPT+1 = OUTPUTPARAMETER U3G00310 000A C103 32 | LD 1 3 U3G00320 000B D04F 33 | STO COUNT = NO. OF CHARS TO CONVERT U3G00330 000C C049 34 | LD CALL1 U3G00340 000D 403A 35 | BSI SBRTA U3G00350 000E D05B 36 | STO TLU12+1 OBTAIN EBPA ADDRESS U3G00360 000F C047 37 | LD CALL2 U3G00370 0010 4037 38 | BSI SBRTA U3G00380 0011 D062 39 | STO TLU14+1 OBTAIN PRTY ADDRESS U3G00390 0012 1810 40 | SRA 16 SET OUTPUT CONTROL FOR U3G00400 0013 D045 41 | STO CNTRL LEFT CHARACTER U3G00410 0014 C100 42 | LD 1 0 = CONTROL PARAMETER U3G00420 0015 1884 43 | SRT 4 U3G00430 0016 4818 44 | BSC +- IS CASE MODE SET U3G00440 0017 D040 45 | STO CASE YES, INITIALIZE CASE U3G00450 0018 1810 46 | SRA 16 U3G00460 0019 1084 47 | SLT 4 OBTAIN CODE CONTROL U3G00470 001A D03F 48 | STO CODE U3G00480 001B C042 49 | LD HFFFF INITLZ OUTPUT BUFFER U3G00490 001C D047 50 | STO TEMP U3G00500 001D 7104 51 | MDX 1 +4 U3G00510 001E 6928 52 | STX 1 EXIT+1 SET EXIT TO CALL+5 U3G00520 001F 6500 0000 53 | INPUT LDX L1 0 XR1=INPUT ADDRESS U3G00530 0021 6600 0000 54 | OUTPT LDX L2 0 XR2=OUTPUT ADDRESS U3G00540 55 | * U3G00550 56 | *THIS SECTION SETS UP THE CONVERSION AND STORING U3G00560 57 | *OF THE REQUIRED NUMBER OF CHARACTERS. U3G00570 58 | * U3G00580 0023 C100 59 | PAP22 LD 1 0 U3G00590 0024 1808 60 | SRA 8 U3G00600 0025 406E 61 | BSI SHIFT IS CHAR = CASE SHIFT U3G00610 0026 7002 62 | MDX PAP24 YES, CHK NEXT CHARACTER U3G00620 0027 403D 63 | BSI TLU CONVERT LEFT PTTC/8 CHAR U3G00630 0028 4059 64 | BSI STORE STORE CONVERTED CHAR U3G00640 0029 74FF 005BR 65 | PAP24 MDX L COUNT,-1 ANY MORE PTTC/8 CHARS U3G00650 002B 7001 66 | MDX PAP26 YES U3G00660 002C 7009 67 | MDX PAP30 NO U3G00670 002D C100 68 | PAP26 LD 1 0 U3G00680 002E 4065 69 | BSI SHIFT IS CHAR = CASE SHIFT U3G00690 002F 7002 70 | MDX PAP28 YES, CHECK NEXT CHAR U3G00700 0030 4034 71 | BSI TLU CONVERT RIGHT PTTC/8 CHAR U3G00710 0031 4050 72 | BSI STORE STORE CONVERTED CHAR U3G00720 0032 7101 73 | PAP28 MDX 1 +1 SET FOR NEXT INPUT WORD U3G00730 0033 74FF 005BR 74 | MDX L COUNT,-1 ANY MORE PTTC/8 CHARS U3G00740 0035 70ED 75 | MDX PAP22 YES U3G00750 0036 C02D 76 | PAP30 LD TEMP NO, ANY CHAR LEFT TO U3G00760 0037 8049 77 | A D0001 STORE U3G00770 0038 4C18 0040R 78 | BSC L SAV1,+- U3G00780 003A 9046 79 | S D0001 U3G00790 003B 7400 005AR 80 | MDX L CODE,0 YES, WHAT OUTPUT CODE U3G00800 003D 7001 81 | MDX PAP32 1443 CODE U3G00810 003E 8022 82 | A H0021 1053 CODE U3G00820 003F D200 83 | PAP32 STO 2 0 STORE CHAR AND BLANK U3G00830 0040 6500 0000 84 | SAV1 LDX L1 *-* RESTORE XR1 U3G00840 0042 6600 0000 85 | SAV2 LDX L2 *-* RESTORE XR2 U3G00850 0044 2000 86 | SAVST LDS *-* RESTORE STATUS U3G00860 0045 C80E 87 | LDD SAVAQ RESTORE ACC AND EXTENSION U3G00870 0046 4C00 0000 88 | EXIT BSC L 0 EXIT U3G00880 89 | * U3G00890 90 | *THIS SECTION GETS THE LOAD ADDRESS OF EITHER EBPA U3G00900 91 | *OR PRTY TABLE SUBROUTINES. U3G00910 92 | * U3G00920 0048 0000 93 | SBRTA DC 0 U3G00930 0049 1008 94 | SLA 8 GET TV ENTRY DISPLACEMENT U3G00940 004A 1888 95 | SRT 8 U3G00950 004B 6B04 96 | STX 3 SBA12+1 U3G00960 004C 8003 97 | A SBA12+1 ADD IN TV TABLE ADDR U3G00970 004D 800E 98 | A D0002 REF THIRD WD OF TV ENTRY U3G00980 004E D001 99 | STO SBA12+1 GET LOAD ADDRESS U3G00990 004F C400 0000 100 | SBA12 LD L 0 U3G01000 0051 800B 101 | A D0003 AVOID STORED LINK WORD U3G01010 0052 4C80 0048R 102 | BSC I SBRTA RETURN U3G01020 103 | * U3G01030 104 | *CONSTANTS AND BUFFER AREA U3G01040 105 | * U3G01050 106 | * U3G01060 0054 107 | SAVAQ BSS E 2 SAVE ACC AND EXTENSION U3G01070 0056 0509*7040 108 | CALL1 LIBF EBPA USED TO GET EBPA ADDR U3G01080 0057 1766*3A00 109 | CALL2 LIBF PRTY USED TO GET PRTY ADDR U3G01090 0058 0000 110 | CASE DC 0 CASE INDR(0=LOWER,1=UPPER) U3G01100 0059 0000 111 | CNTRL DC 0 OUTPUT CONTROL (0= LEFT ) U3G01110 005A 0000 112 | CODE DC 0 OUTPUT CODE (0=1053,1=1403) U3G01120 005B 0000 113 | COUNT DC 0 CHAR COUNT U3G01130 005C 0002 114 | D0002 DC +2 DECIMAL 2 U3G01140 005D 0003 115 | D0003 DC +3 DECIMAL 3 U3G01150 005E FFFF 116 | HFFFF DC /FFFF INITLZ O/P BUFFER U3G01160 005F FF00 117 | HFF00 DC /FF00 LOW BIT MASK U3G01170 0060 00FF 118 | H00FF DC /00FF HIGH BIT MASK U3G01180 0061 0021 119 | H0021 DC /0021 1053 BLANK U3G01190 0062 6E00 120 | LOWER DC /6E00 PTTC/8 LOWER CASE INDR CHAR U3G01200 0063 0E00 121 | UPPER DC /0E00 PTTC/8 UPPER CASE INDR CHAR U3G01210 0064 FFFF 122 | TEMP DC /FFFF TEMPORARY STG BUFFER U3G01220 123 | * U3G01230 124 | *THIS SECTION DOES A TABLE LOOKUP CONVERSION U3G01240 125 | * U3G01250 0065 1000 126 | TLU NOP SAVE RETURN ADDRESS U3G01260 0066 D015 127 | STO CHAR SAVE INPUT CHAR U3G01270 0067 6911 128 | STX 1 TLU16+1 SAVE XR1 U3G01280 0068 614B 129 | LDX 1 +75 XR1= LENGTH OF EBPA TABLE U3G01290 0069 F500 0000 130 | TLU12 EOR L1 0 U3G01300 006B 1008 131 | SLA 8 LEFT JUSTIFY PTTC/8 CHAR U3G01310 006C 4C18 0073R 132 | BSC L TLU14,+- HAS CHARACTER BEEN FOUND U3G01320 006E C00D 133 | LD CHAR U3G01330 006F 71FF 134 | MDX 1 -1 NO, ANY MORE TO CHECK U3G01340 0070 70F8 135 | MDX TLU12 YES U3G01350 0071 C00E 136 | LD H2001 NO, TURN ON OVFLO U3G01360 0072 D0D1 137 | STO SAVST U3G01370 0073 C500 0000 138 | TLU14 LD L1 0 U3G01380 0075 7400 005AR 139 | MDX L CODE,0 IS OUTPUT FOR 1053 U3G01390 0077 1008 140 | SLA 8 NO, FOR 1403 U3G01400 0078 6500 0000 141 | TLU16 LDX L1 *-* RESTORE XR1 U3G01410 007A 4C80 0065R 142 | BSC I TLU RETURN U3G01420 143 | * U3G01430 144 | *CONSTANTS AND BUFFER AREA U3G01440 145 | * U3G01450 007C 0000 146 | CHAR DC 0 CHAR TO BE CONVERTED U3G01460 007D DD00 147 | NEWLN DC /DD00 PTTC/8 NEW LINE CHAR U3G01470 007E 000C 148 | H000C DC /000C CHK FOR CONTROL CHAR U3G01480 007F 0010 149 | H0010 DC /0010 CHK FOR PTTC/8 BLANK U3G01490 0080 2001 150 | H2001 DC /2001 SET OVERFLOW U3G01500 0081 0001 151 | D0001 DC +1 DECIMAL ONE U3G01510 152 | * U3G01520 153 | *THIS SECTION STORES THE CONVERTED CHARS 2 PER WORD U3G01530 154 | * U3G01540 155 | * U3G01550 0082 1000 156 | STORE NOP U3G01560 0083 7400 0059R 157 | MDX L CNTRL,0 IS O/P FOR LEFT HALF (=0) U3G01570 0085 7006 158 | MDX STR16 U3G01580 0086 E0D8 159 | AND HFF00 YES, STORE IN TEMP U3G01590 0087 D0DC 160 | STO TEMP SET CNTRL FOR RIGHT U3G01600 0088 C0F8 161 | LD D0001 HALF AND RETURN. U3G01610 0089 D0CF 162 | STR12 STO CNTRL U3G01620 008A 4C80 0082R 163 | BSC I STORE U3G01630 008C 1808 164 | STR16 SRA 8 NO, ADD IN TEMP AND STORE U3G01640 008D 80D6 165 | A TEMP CHARS IN OUTPUT AREA U3G01650 008E D200 166 | STO 2 0 U3G01660 008F C0CE 167 | LD HFFFF U3G01670 0090 D0D3 168 | STO TEMP CLEAR CHAR STORAGE U3G01680 0091 7201 169 | MDX 2 +1 SET FOR NEXT OUTPUT WORD U3G01690 0092 1810 170 | SRA 16 U3G01700 0093 70F5 171 | MDX STR12 U3G01710 172 | * U3G01720 173 | *THIS SECTION CHECKS THE PTTC/8 CHAR TO SEE IF IT U3G01730 174 | *IS A CASE SHIFT, A NEW LINE, BLANK OR ILLEGAL CHAR U3G01740 175 | * U3G01750 0094 1000 176 | SHIFT NOP SAVE RETURN ADDRESS U3G01760 0095 E0CA 177 | AND H00FF U3G01770 0096 D0E5 178 | STO CHAR SAVE CHARACTER U3G01780 0097 E0E6 179 | AND H000C U3G01790 0098 F0E5 180 | EOR H000C IS CHAR = CONTROL U3G01800 0099 4C20 00B0R 181 | BSC L SFT20,Z NO U3G01810 009B C0E0 182 | LD CHAR U3G01820 009C 1008 183 | SLA 8 U3G01830 009D F0C4 184 | EOR LOWER IS CHAR = LOWER CASE U3G01840 009E 4C18 00AER 185 | BSC L SFT18,+- YES U3G01850 00A0 F0C1 186 | EOR LOWER U3G01860 00A1 F0C1 187 | EOR UPPER IS CHAR = UPPER CASE U3G01870 00A2 4C18 00ADR 188 | BSC L SFT16,+- YES U3G01880 00A4 F0BE 189 | EOR UPPER U3G01890 00A5 F0D7 190 | EOR NEWLN IS CHAR = NEW LINE U3G01900 00A6 4818 191 | BSC +- U3G01910 00A7 D0B3 192 | STO COUNT YES U3G01920 00A8 C0D3 193 | SFT12 LD CHAR U3G01930 00A9 7401 0094R 194 | SFT13 MDX L SHIFT,+1 NO, SET TO SKIP ONE WORD U3G01940 00AB 4C80 0094R 195 | SFT14 BSC I SHIFT U3G01950 00AD C0D3 196 | SFT16 LD D0001 U3G01960 00AE D0A9 197 | SFT18 STO CASE SET CASE ACCORDINGLY U3G01970 00AF 70FB 198 | MDX SFT14 U3G01980 00B0 C0CB 199 | SFT20 LD CHAR IS CHAR = BLANK U3G01990 00B1 90CD 200 | S H0010 U3G02000 00B2 4C18 00A8R 201 | BSC L SFT12,+- YES, DON'T CHECK CASE U3G02010 00B4 80CA 202 | A H0010 U3G02020 00B5 1887 203 | SRT 7 IS CHAR ILLEGAL U3G02030 00B6 4C04 00BBR 204 | BSC L SFT22,E U3G02040 00B8 C09F 205 | LD CASE NO, ADD CASE INTO U3G02050 00B9 1087 206 | SLT 7 CHAR VALUE. U3G02060 00BA 70EE 207 | MDX SFT13 U3G02070 00BB C0C4 208 | SFT22 LD H2001 YES, SET OVERFLOW ON U3G02080 00BC D087 209 | STO SAVST AND LOAD BLANK AS U3G02090 00BD C0C1 210 | LD H0010 CHARACTER U3G02100 00BE 70EA 211 | MDX SFT13 U3G02110 00BF 212 | END U3G02120 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced CALL1 0056R 108 34 CALL2 0057R 109 37 CASE 0058R 110 45 197 205 CHAR 007CR 146 127 133 178 182 193 199 CNTRL 0059R 111 41 157 162 CODE 005AR 112 48 80 139 COUNT 005BR 113 33 65 74 192 D0001 0081R 151 77 79 161 196 D0002 005CR 114 98 D0003 005DR 115 101 EXIT 0046R 88 52 H000C 007ER 148 179 180 H0010 007FR 149 200 202 210 H0021 0061R 119 82 H00FF 0060R 118 177 H2001 0080R 150 136 208 HFF00 005FR 117 159 HFFFF 005ER 116 49 167 INPUT 001FR 53 29 LINK 0001R 24 LOWER 0062R 120 184 186 NEWLN 007DR 147 190 OUTPT 0021R 54 31 PAP22 0023R 59 75 PAP24 0029R 65 62 PAP26 002DR 68 66 PAP28 0032R 73 70 PAP30 0036R 76 67 PAP32 003FR 83 81 PAPPR 0000R 23 SAV1 0040R 84 23 78 SAV2 0042R 85 25 SAVAQ 0054R 107 27 87 SAVST 0044R 86 26 137 209 SBA12 004FR 100 96 97 99 SBRTA 0048R 93 35 38 102 SFT12 00A8R 193 201 SFT13 00A9R 194 207 211 SFT14 00ABR 195 198 SFT16 00ADR 196 188 SFT18 00AER 197 185 SFT20 00B0R 199 181 SFT22 00BBR 208 204 SHIFT 0094R 176 61 69 194 195 STORE 0082R 156 64 72 163 STR12 0089R 162 171 STR16 008CR 164 158 TEMP 0064R 122 50 76 160 165 168 TLU 0065R 126 63 71 142 TLU12 0069R 130 36 135 TLU14 0073R 138 39 132 TLU16 0078R 141 128 UPPER 0063R 121 187 189