ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:09 2020 Source File: \u3zipco.asm DIRECT TABLE ACCESS CONVERSION 2 | *************************************************** U3I00020 3 | * * U3I00030 4 | * STATUS-VERSION 2, MODIFICATION 10 * U3I00040 5 | * * U3I00050 6 | * FUNCTION - * U3I00060 7 | * ZIPCO IS A SPEEDY DIRECT TABLE ACCESS CONV * U3I00070 8 | * ROUTINE. CODES ARE ACCEPTED THROUGH THE * U3I00080 9 | * INPUT BFR IN EITHER PACKED OR UNPACKED FORMAT. * U3I00090 10 | * 12-BIT HOL MAY BE ENTERED AND WILL BE PACKED * U3I00100 11 | * TO 8-BITS BEFORE CONV. ALL HOL OUTPUT WILL BE * U3I00110 12 | * UNPACKED TO 12-BITS. CONV CODES ARE TRANS * U3I00120 13 | * TO THE OUTPUT BFR IN EITHER PACKED OR UNPCKED * U3I00130 14 | * FORMAT * U3I00140 15 | * * U3I00150 16 | * ENTRY POINTS - ZIPCO * U3I00160 17 | * CALLING SEQUENCE - LIBF ZIPCO * U3I00170 18 | * DC CONTROL * U3I00180 19 | * DC INPUT * U3I00190 20 | * DC OUTPUT * U3I00200 21 | * DC CHAR CNT * U3I00210 22 | * CALL TABLE * U3I00220 23 | * * U3I00230 24 | * INPUT - A CONTROL WRD, THE ADDR OF THE INPUT * U3I00240 25 | * BFR, OUTPUT BFR, AND CONV TABLE, AND THE * U3I00250 26 | * CHAR COUNT * U3I00260 27 | * * U3I00270 28 | * OUTPUT - THE CONV CHAR * U3I00280 29 | * * U3I00290 30 | * EXTERNAL REFERENCES - THE CONV TABLE (SUBR) * U3I00300 31 | * * U3I00310 32 | * EXIT - NORMAL AT ZIP70 * U3I00320 33 | * ERROR - NONE * U3I00330 34 | * U3I00340 35 | * ATTRIBUTES - REUSABLE * U3I00350 36 | * * U3I00360 37 | * NOTES - NO ERRORS ARE DETECTED BY THIS ROUTINE * U3I00370 38 | * * U3I00380 39 | *************************************************** U3I00390 DIRECT TABLE ACCESS CONVERSION 41 | LIBR U3I00410 42 | ENT ZIPCO U3I00420 0000 6961 43 | ZIPCO STX 1 SAV1+1 SAVE XR1 U3I00430 0001 6580 0000 44 | LDX I1 *-* RECORD ENTRY U3I00440 0003 6A5C 45 | STX 2 SAV2+1 SAVE XR2 U3I00450 0004 10A0 46 | SLT 32 CLEAR ACC & EXT U3I00460 0005 D032 47 | STO HALF INITIALIZE TO LEFT HALF U3I00470 48 | * * U3I00480 0006 C100 49 | LD 1 0 FETCH CONTROL WORD U3I00490 0007 18D0 50 | RTE 16 TO EXTENSION U3I00500 51 | * * U3I00510 0008 1084 52 | SLT 4 IS INPUT HOLLERITH U3I00520 0009 D02A 53 | STO HOLIN YES, SET HOLLERITH SWITCH U3I00530 54 | * * U3I00540 000A 1084 55 | SLT 4 IS INPUT PACKED U3I00550 000B D029 56 | STO PCKIN YES, SET PACKED INPUT SW U3I00560 000C 1010 57 | SLA 16 CLEAR ACC U3I00570 000D 1084 58 | SLT 4 IS OUTPUT HOLLERTH U3I00580 000E D027 59 | STO HOLLO YES, SET HOLL SWITCH U3I00590 60 | * * U3I00600 000F 1084 61 | SLT 4 IS OUTPUT PACKED U3I00610 0010 D026 62 | STO PKOUT YES, SET PACKED OUTPUT SW U3I00620 63 | * * U3I00630 0011 C101 64 | LD 1 1 U3I00640 0012 D00E 65 | STO ZIP10+1 SET UP INPUT ADDR U3I00650 66 | * * U3I00660 0013 C102 67 | LD 1 2 U3I00670 0014 D043 68 | STO ZIP50+1 SET UP OUTPUT ADDR U3I00680 69 | * * U3I00690 0015 C103 70 | LD 1 3 U3I00700 0016 D022 71 | STO WDCNT SET UP CHAR CNT U3I00710 72 | * * U3I00720 0017 C580 0005 73 | LD I1 5 FETCH ADDR FROM LIBF U3I00730 0019 D014 74 | STO ZIP25+1 SET UP TABLE ADDR U3I00740 75 | * * U3I00750 001A 7106 76 | MDX 1 6 U3I00760 001B 6948 77 | STX 1 ZIP70+1 SET FOR RETURN U3I00770 001C C01C 78 | LD WDCNT CHECK IF WD CNT IS 2-10 U3I00772 001D 4C08 005FR 79 | BSC L SAV2,+ *POSITIVE 2-10 U3I00774 80 | * * U3I00780 81 | * * U3I00790 001F 10A0 82 | SLT 32 CLEAR ACC & EXT U3I00800 0020 C400 0000 83 | ZIP10 LD L *-* FETCH CHAR U3I00810 0022 18D0 84 | RTE 16 PUT CHAR IN EXTENSION U3I00820 0023 1081 85 | ZIP15 SLT 1 CHK THE 0 BIT AND U3I00830 0024 D076 86 | STO CASE SET UP CASE SHIFT U3I00840 87 | * * U3I00850 0025 1010 88 | SLA 16 CLEAR ACC U3I00860 89 | * * U3I00870 0026 7400 0034R 90 | MDX L HOLIN,0 IS INPUT HOLLERITH U3I00880 0028 7046 91 | MDX ZIP90 YES, GO TO PACK IT U3I00890 0029 1087 92 | ZIP20 SLT 7 NO, FETCH REST OF WORD U3I00900 002A D06E 93 | STO TEMP1 SET CHAR IN TEMP U3I00910 94 | * * U3I00920 002B 6580 0099R 95 | LDX I1 TEMP1 INPUT CODE TO XR1 U3I00930 002D C500 0000 96 | ZIP25 LD L1 *-* FETCH CONVERTED CHAR U3I00940 97 | * * U3I00950 002F 7400 009BR 98 | MDX L CASE,0 CHECK CASE SW U3I00960 0031 7008 99 | MDX ZIP30-1 SKIP TO GET LEFT HALF U3I00970 0032 1008 100 | SLA 8 LEFT JUSTIFY RT HALF U3I00980 0033 7007 101 | MDX ZIP30 SKIP TO SAVE RESULT U3I00990 102 | * U3I01000 0034 0000 103 | HOLIN DC 0 HOLLERITH INPUT SW U3I01010 0035 0000 104 | PCKIN DC 0 PACKED INPUT SW U3I01020 0036 0000 105 | HOLLO DC 0 HOLLERITH OUTPUT SW U3I01030 0037 0000 106 | PKOUT DC 0 PACKED OUTPUT SW U3I01040 0038 0000 107 | HALF DC 0 LEFT/RIGHT INDR U3I01050 0039 0000 108 | WDCNT DC *-* CHAR CNT 2-10 U3I01055 109 | * * U3I01060 003A E061 110 | AND HFF00 FETCH LEFT HALF U3I01070 003B D05D 111 | ZIP30 STO TEMP1 SAVE RESULT U3I01080 112 | * * U3I01090 003C C060 113 | LD ONE U3I01100 003D 7400 0038R 114 | MDX L HALF,0 CHK THE LEFT/RT HALF SW U3I01110 003F 1010 115 | SLA 16 AND U3I01120 0040 D0F7 116 | STO HALF REVERSE ITS SETTING U3I01130 117 | * * U3I01140 0041 C057 118 | LD TEMP1 YES,CHK HALF SW U3I01150 0042 7400 0037R 119 | MDX L PKOUT,0 IS OUTPUT TO BE PACKED U3I01160 0044 700F 120 | MDX ZIP40+2 NO, GO TO OUTPUT CONVERTED U3I01170 121 | * * U3I01180 0045 7400 0038R 122 | MDX L HALF,0 CHECK SETTING U3I01190 0047 7001 123 | MDX *+1 SKIP IF LEFT U3I01200 0048 7009 124 | MDX ZIP40 BR ON RT U3I01210 0049 D050 125 | STO TEMP2 SET UP IN TEMP BUFFER U3I01220 004A 74FF 0039R 126 | MDX L WDCNT,-1 DECR CHAR COUNT 2-1 U3I01221 004C 7018 127 | MDX ZIP80 GO TO CONVERT MORE 2-1 U3I01222 004D C480 0058R 128 | LD I ZIP50+1 LOAD WORD IN OUTPUT AREA2-1 U3I01223 004F E051 129 | AND H00FF SAVE RIGHT HALF 2-1 U3I01224 0050 E849 130 | OR TEMP2 COMBINE TO ONE WORD 2-1 U3I01225 0051 7005 131 | MDX ZIP50 GO TO OUTPUT ONE WORD 2-1 U3I01226 132 | * * U3I01240 0052 1808 133 | ZIP40 SRA 8 RIGHT JUSTIFY CHARACTER U3I01250 0053 E846 134 | OR TEMP2 OR WITH PREVIOUS CHAR U3I01260 135 | * * U3I01270 0054 7400 0036R 136 | MDX L HOLLO,0 IS OUTPUT HOLLERITH U3I01280 0056 7029 137 | MDX ZIP95 YES, GO TO UNPACK IT U3I01290 138 | * U3I01300 0057 D400 0000 139 | ZIP50 STO L *-* OUTPUT THE CONVERTED CHAR U3I01310 0059 C0FE 140 | LD ZIP50+1 INCREMENT 2-10 U3I01320 005A 8042 141 | A ONE *OUTPUT ADDRESS 2-10 U3I01325 005B D0FC 142 | STO ZIP50+1 *BY ONE 2-10 U3I01330 005C 74FF 0039R 143 | MDX L WDCNT,-1 DECR THE CHAR CNT U3I01340 005E 7006 144 | MDX ZIP80 GO TO CONVERT MORE U3I01350 145 | * * U3I01360 146 | * * U3I01390 005F 6600 0000 147 | SAV2 LDX L2 *-* RESTORE XR2 U3I01400 0061 6500 0000 148 | SAV1 LDX L1 *-* RESTORE XR1 U3I01410 0063 4C00 0000 149 | ZIP70 BSC L *-* EXIT U3I01420 150 | * * U3I01430 0065 1010 151 | ZIP80 SLA 16 CLEAR ACC U3I01440 0066 7400 0035R 152 | MDX L PCKIN,0 IS INPUT PACKED U3I01450 0068 7003 153 | MDX ZIP85 NO,GO TO INCR IN ADDR U3I01460 0069 7400 0038R 154 | MDX L HALF,0 IS RT HALF ON - SKIP IF YES U3I01470 006B 70B7 155 | MDX ZIP15 BR TO FETCH 2ND HALF U3I01480 156 | * U3I01490 006C 7401 0021R 157 | ZIP85 MDX L ZIP10+1,+1 INCR INPUT ADDR U3I01500 006E 70B0 158 | MDX ZIP10-1 GO TO FETCH NEXT CHAR U3I01510 159 | * * U3I01520 160 | *************************************************** U3I01530 161 | * * U3I01540 162 | * THIS MODULE OF ZIPCO PACKS 12 BIT HOLLERITH TO * U3I01550 163 | * 8 BITS BY COMBINING THE 1 THRU 7 ROW PUNCHES * U3I01560 164 | * INTO 3 BITS. * U3I01570 165 | * * U3I01580 166 | *************************************************** U3I01590 006F 1082 167 | ZIP90 SLT 2 PICK UP THE 11 AND 0 PUNCHS U3I01600 0070 1005 168 | SLA 5 LEFT JUSTIFY U3I01610 0071 D02C 169 | STO TEMP3 TEMP SAVE U3I01620 0072 1010 170 | SLA 16 U3I01630 171 | * * U3I01640 0073 1087 172 | SLT 7 FETCH 1-7 PUNCH U3I01650 0074 4C18 007DR 173 | BSC L ZIP92,+- BR ON ZERO PUNCH U3I01660 0076 620F 174 | LDX 2 15 U3I01670 0077 1240 175 | SLCA 2 0 DETERMINE WHICH ROW PUNCH U3I01680 176 | * * U3I01690 0078 72F9 177 | MDX 2 -7 TAKE 2'S COMPLEMENT U3I01700 0079 1000 178 | NOP U3I01710 007A 6A1E 179 | STX 2 TEMP1 DECR COUNT U3I01720 007B 1010 180 | SLA 16 U3I01730 007C 901C 181 | S TEMP1 ACTUAL VALUE IN 13-15 U3I01740 007D 1082 182 | ZIP92 SLT 2 SHIFT IN 8 AND 9 PUNCH U3I01750 007E E81F 183 | OR TEMP3 INCLUDE 11 AND 0 PUNCH U3I01760 184 | * * U3I01770 007F 70AA 185 | MDX ZIP20+1 RET TO CONVERT HOLLERITH U3I01780 186 | * * U3I01790 187 | * * U3I01800 188 | *************************************************** U3I01810 189 | * * U3I01820 190 | * THIS MODULE OF ZIPCO UNPACKS 8 BIT HOLLERITH TO* U3I01830 191 | * 12 BITS BY EXPANDING 3 BITS TO 1-7 ROW PUNCH. * U3I01840 192 | * * U3I01850 193 | *************************************************** U3I01860 0080 18D0 194 | ZIP95 RTE 16 SHIFT TO EXTENSION U3I01870 0081 D01E 195 | STO SAVQ SAVE EXT U3I01880 0082 1010 196 | SLA 16 CLEAR ACC U3I01890 0083 1083 197 | SLT 3 U3I01900 0084 100D 198 | SLA 13 LEFT JUSTIFY U3I01910 0085 D018 199 | STO TEMP3 SAVE 12, 11, AND 0 PUNCHES U3I01920 200 | * * U3I01930 0086 1083 201 | SLT 3 GET 1-7 PUNCHES U3I01940 0087 4C18 0092R 202 | BSC L ZIP98+1,+- BR IF ZERO U3I01950 0089 9015 203 | S K13 U3I01960 008A D00E 204 | STO TEMP1 DETERMINE VALUE U3I01970 008B 1010 205 | SLA 16 U3I01980 008C 900C 206 | S TEMP1 U3I01990 008D D00B 207 | STO TEMP1 PUT SHIFT COUNT U3I02000 008E 6680 0099R 208 | LDX I2 TEMP1 INTO XR2 U3I02010 209 | * * U3I02020 0090 C00C 210 | LD ONE U3I02030 0091 1200 211 | ZIP98 SLA 2 0 SHIFT ONE BIT U3I02040 0092 E80B 212 | OR TEMP3 OR WITH 12, 11, AND 0 BITS U3I02050 0093 1806 213 | SRA 6 U3I02060 0094 1086 214 | SLT 6 PICK UP 8 AND 9 U3I02070 215 | * * U3I02080 0095 18D0 216 | RTE 16 U3I02090 0096 C009 217 | LD SAVQ RESTORE THE EXTENSION U3I02100 0097 18D0 218 | RTE 16 U3I02110 219 | * U3I02120 0098 70BE 220 | MDX ZIP50 RETURN TO OUTPUT HOLLERITH U3I02130 221 | * * U3I02140 222 | * * U3I02150 223 | * FOLLOWING IS A PARTIAL TABLE OF CONSTANTS * U3I02160 224 | * SWITCHES, AND STORAGE USED BY ZIPCO * U3I02170 0099 0000 225 | TEMP1 DC 0 TEMP STG U3I02190 009A 0000 226 | TEMP2 DC 0 TEMP STG U3I02200 009B 0000 227 | CASE DC 0 CASE SHIFT SW U3I02210 009C FF00 228 | HFF00 DC /FF00 CON FOR FETCH OF LEFT CHAR U3I02220 009D 0001 229 | ONE DC 1 CONSTANT ONE U3I02230 009E 0000 230 | TEMP3 DC 0 TEMP STG U3I02240 009F 000D 231 | K13 DC 13 CONSTANT 13 U3I02250 00A0 0000 232 | SAVQ DC 0 TEMP STG FOR EXTENSION U3I02260 00A1 00FF 233 | H00FF DC /00FF CON TO FETCH RIGHT HALF 2-1 U3I02265 00A2 234 | END U3I02275 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced CASE 009BR 227 86 98 H00FF 00A1R 233 129 HALF 0038R 107 47 114 116 122 154 HFF00 009CR 228 110 HOLIN 0034R 103 53 90 HOLLO 0036R 105 59 136 K13 009FR 231 203 ONE 009DR 229 113 141 210 PCKIN 0035R 104 56 152 PKOUT 0037R 106 62 119 SAV1 0061R 148 43 SAV2 005FR 147 45 79 SAVQ 00A0R 232 195 217 TEMP1 0099R 225 93 95 111 118 179 181 204 206 207 208 TEMP2 009AR 226 125 130 134 TEMP3 009ER 230 169 183 199 212 WDCNT 0039R 108 71 78 126 143 ZIP10 0020R 83 65 157 158 ZIP15 0023R 85 155 ZIP20 0029R 92 185 ZIP25 002DR 96 74 ZIP30 003BR 111 99 101 ZIP40 0052R 133 120 124 ZIP50 0057R 139 68 128 131 140 142 220 ZIP70 0063R 149 77 ZIP80 0065R 151 127 144 ZIP85 006CR 157 153 ZIP90 006FR 167 91 ZIP92 007DR 182 173 ZIP95 0080R 194 137 ZIP98 0091R 211 202 ZIPCO 0000R 43