ASM1130 CROSS ASSEMBLER V1.22 -- V2M12 -- Sun Nov 1 19:25:11 2020 Source File: \w1hol48.asm HOLL-4OF8 AND 4OF8-HOLL CONVERSION 2 | *************************************************** W1B00020 3 | * TITLE - HOL48 * W1B00030 4 | * STATUS - CHANGE LEVEL 0 * W1B00040 5 | * FUNCTION/OPERATION - .HOL48. CONVERTS 4-OF-8 * W1B00050 6 | * CHARACTERS TO IBM CARD CODE OR IBM CARD CODE * W1B00060 7 | * TO 4-OF-8 CHARACTERS, DEPENDING ON THE VALUE * W1B00070 8 | * OF THE CONTROL PARAMETER * W1B00080 9 | * ENTRY POINTS - .HOL48. CALL ENTRANCE LIBF HOL48 * W1B00090 10 | * INPUT - UNPACKED, LEFT-JUSTIFIED 4-OF-8 CODE * W1B00100 11 | * CHARACTERS OR IBM CARD CODE CHARACTERS * W1B00110 12 | * OUTPUT - IBM CARD CODE CHARACTERS OR UNPACKED, * W1B00120 13 | * LEFT-JUSTIFIED 4-OF-8 CODE CHARACTERS. * W1B00130 14 | * EXTERNAL ROUTINES - .HOLCA. TABLE OF IBM CARD * W1B00140 15 | * CODE CHARACTERS, .STRTB. TABLE OF 4-OF-8 CODE * W1B00150 16 | * AND EBCDIC CHARACTERS, .HXCV. ROUTINE TO * W1B00160 17 | * CONVERT 4-OF-8 CODE CHARACTER TO VALUE BETWEEN * W1B00170 18 | * ZERO AND 63. * W1B00180 19 | * EXITS-NORMAL - RETURN TO MAINLINE AT LIBF+5 * W1B00190 20 | * -ERROR - INVALID IBM CARD CODE CHARACTER * W1B00200 21 | * ON INPUT, EXIT TO LIBF+5 AFTER CONVERSION IS * W1B00210 22 | * COMPLETE WITH CARRY OFF AND OVERFLOW ON. * W1B00220 23 | * TABLES/WORK AREAS - NONE * W1B00230 24 | * ATTRIBUTES - REUSABLE * W1B00240 25 | * NOTES - THE CALLING SEQUENCE IS * W1B00250 26 | * LIBF HOL48 * W1B00260 27 | * DC /000X CONTROL PARAMETER * W1B00270 28 | * DC INPUT INPUT AREA ADDRS * W1B00280 29 | * DC OTPUT OUTPUT AREA ADDRS * W1B00290 30 | * DC NNNN CHARACTER COUNT * W1B00300 31 | *************************************************** W1B00310 HOLL-4OF8 AND 4OF8-HOLL CONVERSION 33 | LIBR W1B00330 34 | ENT HOL48 W1B00340 0000 6963 35 | HOL48 STX 1 SAV1+1 SAVE USER'S XR1 W1B00350 0001 6580 0000 36 | LDX I1 *-* GET ADDR OF PARAM LIST W1B00360 0003 691B 37 | STX 1 MDX1+1 DIRECTION OF CONVERSION W1B00370 0004 D871 38 | STD AQ SAVE ALL AND EXTENSION W1B00380 0005 285F 39 | STS LDS SAVE CARRY AND OVFLO STATUS W1B00390 0006 C101 40 | LD 1 1 STORE INPUT BUFFER ADDRESS W1B00400 0007 D015 41 | STO INPUT+1 W1B00410 0008 C102 42 | LD 1 2 STORE OUTPUT BUFFER ADDRESS W1B00420 0009 D054 43 | STO OUTPT+1 W1B00430 000A C103 44 | LD 1 3 SAVE CHARS TO CONVERT COUNT W1B00440 000B D061 45 | STO CT W1B00450 000C 7104 46 | MDX 1 4 SET RETURN ADDR TO USER'S W1B00460 000D 695C 47 | STX 1 XIT+1 PROGRAM. W1B00470 000E 6A58 48 | STX 2 SAV2+1 SAVE USERS XR2 W1B00480 000F 61FE 49 | LDX 1 -2 CONVERT BOTH CODE TABLE W1B00490 0010 C500 006DR 50 | LOOP LD L1 LIBF+2 LIBFS INTO ACTUAL ADDRS W1B00500 0012 1088 51 | SLT 8 FOR USE BY THIS W1B00510 0013 1888 52 | SRT 8 SUBROUTINE. W1B00520 0014 8059 53 | A K2 W1B00530 0015 D001 54 | STO LD+1 W1B00540 0016 C700 0000 55 | LD LD L3 *-* GET ADDR OF 1ST WD OF TBL W1B00550 0018 D500 0073R 56 | STO L1 ADDRS+2 W1B00560 001A 7101 57 | MDX 1 1 W1B00570 001B 70F4 58 | MDX LOOP GO GET OTHER TABLE ADDRESS W1B00580 001C C500 0000 59 | INPUT LD L1 *-* GET INPUT CHARACTER W1B00590 001E 7400 0000 60 | MDX1 MDX L *-*,0 CHK DIRECTION OF CONVERSION W1B00600 0020 7037 61 | MDX CNVRT 4 OF 8 INTO HOLLERITH CODE W1B00610 0021 6203 62 | LDX 2 3 CONVERT HOLL CODE TO RLTV W1B00620 0022 188D 63 | SRT 13 0-63. ISOLATE ROWS 12-0 W1B00630 0023 100D 64 | SLA 13 AND SAVE 1-9 IN EXTENSION. W1B00640 0024 1240 65 | SLCA 2 W1B00650 0025 6A4F 66 | STX 2 SV1 SAVE MULTIPLE OF 16 W1B00660 0026 1001 67 | SLA 1 W1B00670 0027 4C20 0044R 68 | BSC L ERR,Z MULTIPLE ZONES-ERROR W1B00680 0029 1087 69 | SLT 7 ROWS 1-7 INTO ACCUMULATOR W1B00690 002A 6210 70 | LDX 2 16 W1B00700 002B 1240 71 | SLCA 2 W1B00710 002C 6AEA 72 | STX 2 LD+1 SAVE ROW 1-7 PUNCH W1B00720 002D 1001 73 | SLA 1 W1B00730 002E 4C20 0044R 74 | BSC L ERR,Z CHK MULTIPLE ROWS IN 1-7 W1B00740 0030 1082 75 | SLT 2 W1B00750 0031 4C04 0052R 76 | BSC L CK17,E BR IF 9 ROW W1B00760 0033 4C20 0049R 77 | BSC L CK1,Z BR IF 8 ROW -60 CHK 1 ROW W1B00770 0035 6203 78 | LDX 2 3 M/ 8-9 ROWS-INVERT 1-7 ROWS W1B00780 0036 C03D 79 | ENTR1 LD K8 AND GATHER TOGETHER THE W1B00790 0037 90DF 80 | S LD+1 RELATIVE ADDRESS W1B00800 0038 1883 81 | SRT 3 W1B00810 0039 8035 82 | A K3 W1B00820 003A 903A 83 | S SV1 W1B00830 003B E034 84 | AND MFFFB W1B00840 003C 1001 85 | SLA 1 W1B00850 003D 1083 86 | SLT 3 W1B00860 003E 8033 87 | ENTR A ADDRS+1 ADD START ADDR OF STRTB TBL W1B00870 003F D001 88 | STO GET+1 W1B00880 0040 C600 0000 89 | GET LD L2 *-* GET 4 OF 8 CHAR (BITS 0-7) W1B00890 0042 E030 90 | AND MASK2 ELIMINATE EBC PART W1B00900 0043 7019 91 | MDX OUTPT GO STORE CONVERTED CHAR W1B00910 0044 1010 92 | ERR SLA 16 SET TO STORE BLANK W1B00920 0045 2001 93 | LDS 1 SET INVALID CHAR SWITCH W1B00930 0046 281E 94 | STS LDS W1B00940 0047 6203 95 | LDX 2 3 W1B00950 0048 70F5 96 | MDX ENTR W1B00960 0049 72FA 97 | CK1 MDX 2 -6 CHK INVALID COMBINATION OF W1B00970 004A 70F9 98 | MDX ERR 1 ROW & 8 ROW-INVALID-SKIP W1B00980 004B 620B 99 | LDX 2 11 OK W1B00990 004C C0CA 100 | LD LD+1 W1B01000 004D 4C20 0036R 101 | BSC L ENTR1,Z W1B01010 004F C024 102 | LD K8 W1B01020 0050 D0C6 103 | STO LD+1 W1B01030 0051 70E4 104 | MDX ENTR1 W1B01040 0052 1801 105 | CK17 SRA 1 NINE ROW -CHK FOR INVALID W1B01050 0053 80C3 106 | A LD+1 1-8 ROW PRESENT. W1B01060 0054 4C20 0044R 107 | BSC L ERR,Z BR IF ROWS 1-8 ...INVALID W1B01070 0056 620C 108 | LDX 2 12 W1B01080 0057 70E0 109 | MDX ENTR1+2 W1B01090 0058 089C*3940 110 | CNVRT LIBF HXCV W1B01100 0059 8017 111 | A ADDRS BASE ADDR OF HOLL TABLE W1B01110 005A D001 112 | STO *+1 W1B01120 005B C400 0000 113 | LD L *-* GET HOLLERITH CHAR W1B01130 005D D500 0000 114 | OUTPT STO L1 *-* STORE TO USER OUTPUT BUFFER W1B01140 005F 7101 115 | MDX 1 1 INCREMENT BUFFER POINTER W1B01150 0060 74FF 006DR 116 | MDX L CT,-1 DECR CHAR COUNT BY 1 W1B01160 0062 70B9 117 | MDX INPUT GO CONVERT NEXT CHARACTER W1B01170 0063 6500 0000 118 | SAV1 LDX L1 *-* RESTORE USERS XR1 W1B01180 0065 2000 119 | LDS LDS 0 W1B01190 0066 6600 0000 120 | SAV2 LDX L2 *-* RESTORE USERS XR2 W1B01200 0068 C80D 121 | LDD AQ W1B01210 0069 4C00 0000 122 | XIT BSC L *-* RETURN TO USER W1B01220 006B 0859*30C1 123 | LIBF LIBF HOLCA CALL HOLCA (1 WORD CALL) W1B01230 006C 228D*98C2 124 | LIBF STRTB CALL STRTB (1 WORD CALL) W1B01240 006D 0000 125 | CT DC NO. OF CHARS TO CONVERT W1B01250 006E 0002 126 | K2 DC 2 W1B01260 006F 0003 127 | K3 DC /0003 ADDR MODIFICATION CONSTANT W1B01270 0070 FFFB 128 | MFFFB DC /FFFB ADDR MODIFICATION CONSTANT W1B01280 0071 0000 129 | ADDRS DC ADDR OF HOLLERITH TABLE W1B01290 0072 0000 130 | DC ADDR OF 4-OF-8 TABLE W1B01300 0073 FF00 131 | MASK2 DC /FF00 LEFT DIGIT EXTRACT MASK W1B01310 0074 0008 132 | K8 DC 8 VALIDITY CHECK CONSTANT W1B01320 0075 0000 133 | SV1 DC MULTIPLE OF 16 TEMPORARY W1B01330 0076 134 | AQ BSS E 2 ACC AND EXT TEMPORARY W1B01340 0078 135 | END W1B01350 There were no errors in this assembly === CROSS REFERENCES ========================================================== Name Val Defd Referenced ADDRS 0071R 129 56 87 111 AQ 0076R 134 38 121 CK1 0049R 97 77 CK17 0052R 105 76 CNVRT 0058R 110 61 CT 006DR 125 45 116 ENTR 003ER 87 96 ENTR1 0036R 79 101 104 109 ERR 0044R 92 68 74 98 107 GET 0040R 89 88 HOL48 0000R 35 INPUT 001CR 59 41 117 K2 006ER 126 53 K3 006FR 127 82 K8 0074R 132 79 102 LD 0016R 55 54 72 80 100 103 106 LDS 0065R 119 39 94 LIBF 006BR 123 50 LOOP 0010R 50 58 MASK2 0073R 131 90 MDX1 001ER 60 37 MFFFB 0070R 128 84 OUTPT 005DR 114 43 91 SAV1 0063R 118 35 SAV2 0066R 120 48 SV1 0075R 133 66 83 XIT 0069R 122 47