Previous File   Multiple Pages   Next File

* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 1

0001 * ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? 0002 * 0003 * 0004 * 0005 * COMPUTER: H316, DDP-516 0006 * 0007 * 0008 * PROGRAM CATEGORY: INPUT/OUTPUT 0009 * 0010 * 0011 * PROGRAM TITLE: CRP-IOL 0012 * CARD READER FORTRAN AND STANDARD INPUT/OUTPUT LIBRARY 0013 * USING IOBUS 0014 * 0015 * 0016 * 0017 * 0018 * 0019 * 0020 * 0021 * 0022 * 0023 * 0024 * APPROVAL DATE 0025 * 0026 * 0027 * 0028 * PROG---------------------- ------------ 0029 * 0030 * 0031 * SUPR---------------------- ------------ 0032 * 0033 * 0034 * QUAL---------------------- ------------ 0035 * 0036 * 0037 * NO. OF PAGES 0038 * 0039 * 0040 * AUTHOR 0041 * 0042 * HONEYWELL - COMPUTER CONTROL DIVISION 0043 * 0044 * 0045 * PURPOSE 0046 * 0047 * 0048 * TO PROVIDE A CARD READER FORTRAN AND STANDARD INPUT/OUTPUT 0049 * LIBRARY USING IOBUS 0050 *
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 2

0051 * 0052 * RESTRICTIONS 0053 * 0054 * THIS LIBRARY WILL WORK ON AN H316 OR DDP-516 COMPUTER WITH A 0055 * CARD READER. THE EXACT OPTION NUMBER OF THIS CARD READER IS 0056 * UNKNOWN. IT IS, HOWEVER, NOT THE CARD READER OPTION DOCUMENTED 0057 * IN THE DDP-516 PROGRAMMERS REFERENCE MANUAL (MODEL 516-61). 0058 * 0059 * IT MAY WELL BE FOR "CARD READER OPTION 316/516 510X OR THE 0060 * 2410 SERIES CARD READER/PUNCH" AS MENTIONED IN THE 0061 * "NEW AND UPDATED STANDARD SOFTWARE" NOTE OF JUNE 1971 0062 * 0063 * SIGNIFICANT DIFFERENCES INCLUDE APPARENTLY DIFFERENT MEANINGS 0064 * FOR THE SKS CODES. FOR EXAMPLE MODEL 516-61 DOCUMENTS SKS '205 0065 * AS "SKIP IF NOT END OF FILE" WHERE AS THIS CARD READER OPTION 0066 * WAITS UNTIL THIS SKIPS BEFORE ISSUING AN OCP TO READ A CARD, 0067 * WHICH INDICATES IT MUST BE A CONDITION THAT IN NORMAL OPERATION 0068 * CHANGES STATE JUST ON THE PASSAGE OF TIME. I'VE DECIDED THAT IT 0069 * IS "SKIP IF NOT BUSY" BUT IT COULD EQUALLY BE SOMETHING LIKE 0070 * "SKIP IF READY TO FEED A NEW CARD" OR "SKIP IF DONE FEEDING 0071 * LAST CARD". ANOTHER DIFFERENCE IS THAT A STATUS WORD CAN 0072 * APPARENTLY BE READ USING AN INA, BY FIRST ISSUING AN OCP '1705. 0073 * 0074 * STORAGE 0075 * 0076 * SEE CONTENTS 0077 * 0078 * 0079 * CONTENTS 0080 * 0081 * MODULE STORAGE PAGE 0082 * NAME DEFINITION OCT DEC NO. 0083 * 0084 * I$CA CARD READER INPUT SOURCE RECORD 0085 * I$CBFS CARD READER BUFFER SIZE 71 57 0086 * 0087 * I$CK CARD READER READ INPUT CHARACTER 7 7 0088 * 0089 * I$CRDY CARD READER WAIT UNTIL READY 7 7 0090 * 0091 * I$CHER CARD READER CHECK FOR ERROR 10 8 0092 * 0093 * I$CWBS CARD READER WAIT WHILE BUSY 4 4 0094 * 0095 * 0096 * USE 0097 * 0098 * INTERNAL MODULES 0099 * 0100 * NAME CALLING SEQUENCE CALLS ERRORS
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 3

0101 * 0102 * I$CA CALL I$CA I$CWBS CE CARD READER 0103 * DAC HEADING BUFFER I$CRDY ERROR 0104 * EOF RETURN I$CK 0105 * NORMAL RETURN C$CTLU 0106 * C$CTCI 0107 * 0108 * I$CBFS XAC I$CBFS NONE 0109 * (LINKED WITH I$CA) 0110 * 0111 * I$CK CALL I$CK I$CHER CE CARD READER 0112 * ERROR RETURN ERROR 0113 * NORMAL RETURN 0114 * 0115 * A-REGISTER CONTAINS CHARACTER 0116 * ON NORMAL RETURN 0117 * 0118 * I$CRDY CALL I$CRDY I$CHER CE CARD READER 0119 * ERROR RETURN ERROR 0120 * NORMAL RETURN 0121 * 0122 * I$CHER CALL I$CHER C$ER CE CARD READER 0123 * ERROR RETURN ERROR 0124 * NORMAL RETURN 0125 * 0126 * I$CWBS CALL I$CWBS NONE 0127 * RETURN 0128 * 0129 * EXTERNAL MODULES 0130 * 0131 * NAME DEFINITION 0132 * 0133 * C$CTLU CHARACTER TABLE LOOK-UP 0134 * 0135 * C$CTCI CARD CODE TO ISO CODE CONVERSION TABLE 0136 * 0137 * C$ER CONTROL ERROR ROUTINE 0138 * 0139 * 0140 * ERRORS 0141 * 0142 * CE CARD READER ERROR 0143 * 0144 * THIS ERROR IS REPORTED THROUGH C$ER (CONTROL ERROR 0145 * ROUTINE). 0146 * 0147 * 0148 * METHOD 0149 * 0150 * I$CA READS ONE CARD, CONVERTING THE 6-BIT CHARACTER CODES
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 4

0151 * TO THEIR ISO EQUIVALENTS AND STORING THE RESULT, TWO CHARACTERS 0152 * PER WORD, INTO THE BUFFER. THE BUFFER SIZE IS NORMALLY 40 0153 * WORDS (80 CHARACTERS) BUT THIS MAY BE MODIFIED VIA I$CBFS. 0154 * IF THE BUFFER IS SMALLER THAN 40 WORDS THEN CHARACTER AT THE 0155 * END OF THE CARD ARE DISCARDED. IF IT IS LARGER THAN 40 WORDS 0156 * THEN WORDS BEYOND THE SIZE OF THE CARD ARE FILLED WITH BLANK 0157 * CHARACTERS. IF THE CARD INCLUDES THE ETX CHARACTER, AND THE 0158 * ISO CONVERSION TABLE INCLUDES A SPACE IN THIS CHARACTER 0159 * POSITION THEN THE EOF (END OF FILE) RETURN IS TAKEN, ELSE 0160 * THE NORMAL RETURN. 0161 * 0162 * I$CK CHECKS THAT THE READER IS OPERATIONAL. IF NOT THEN AN 0163 * ERROR (CE) IS REPORTED VIA C$ER. IF C$ER RETURNS THEN I$CK 0164 * WILL RETURN VIA THE ERROR RETURN. 0165 * 0166 * I$CRDY WAITS FOR THE READER TO BECOME READY, AND CHECKS THAT 0167 * IT IS OPERATIONAL. 0168 * 0169 * I$CHER CHECKS THAT THE READER IS OPERATIONAL (I.E. NO ERRORS 0170 * HAVE OCCURED). 0171 * 0172 * I$CWBS WAITS UNTIL THE READER IS NOT BUSY. 0173 * 0174 EJCT
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 5

0175 * 0176 * NOTES ON RECOVERY FROM DISASSEMBLY 0177 * 0178 * THE NAME I$CA IS KNOWN TO BE CORRECT BECAUSE IT IS CALLED FROM 0179 * THE IOS-O16X DEVICE SELECTION DRIVER OF DAP-16M2, FOR WHICH 0180 * SOURCE CODE IS AVAILABLE. 0181 * 0182 * THE NAMES I$CBFS, I$CK, I$CRDY, I$CHER, AND I$CWBS ARE NOT 0183 * KNOWN, AND IT IS POSSIBLE (EVEN LIKELY) THAT THESE LOCATIONS 0184 * HAD DIFFERENT NAMES IN THE ORIGINAL SOURCE CODE. 0185 * THE PORTION OF THE DAP-16M2 SLST FROM WHICH THIS WAS 0186 * DISASSEMBLED HAS UNUSED WORDS PRECEDING I$CK, I$CRDY, AND 0187 * I$CHER WHICH, SINCE THESE UNUSED WORDS HAVE ODD LOCATIONS, 0188 * STRONGLY SUGGESTS THAT THEY ARE SEPARATELY ASSEMBLED SOURCE 0189 * CODE MODULES. 0190 * 0191 * THE ROUTINE "ISOC" WITHIN I$CA COULD NOT HAVE BEEN A SEPARATE 0192 * MODULE BECAUSE IT PRECEDES THE LITERAL POOL FOR I$CA. 0193 * 0194 * 0195 EJCT
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 6

0196 * 0197 * 0198 SUBR I$CA CARD READER INPUT SOURCE RECORD 0199 SUBR I$CBFS,BUFS 0200 * 0201 * 0202 CF5 H316 AND DDP-516 0203 REL 0204 * 0205 * 0206 * CARD READER DEVICE CODES 0207 * 0208 * CARD READER ADDRESS 0209 000005 CRDA EQU '5 CARD READER ADDRESS 0210 * 0211 * OCP 0212 000005 CRDH EQU CRDA READ ONE HOLLERITH CARD 0213 001705 CRDS EQU CRDA+'1700 READ STATUS WORD 0214 * 0215 * INA 0216 001005 CRDI EQU CRDA+'1000 CLEAR A AND INPUT CHARACTER 0217 * 0218 * 0219 00000 0 000000 I$CA DAC ** 0220 00001 -0 02 00000 RTRY LDA* I$CA GET BUFFER ADDRESS 0221 00002 0 04 00064 STA PTRA PLACE IN POINTER 0222 00003 0 10 00000 CALL I$CWBS WAIT UNTIL NOT BUSY 0223 00004 14 0005 OCP CRDH READ ONE HOLLERITH CARD 0224 00005 0 35 00070 LDX =0 CLEAR COUNTER 0225 00006 0 10 00055 NXTW JST ISOC GET ONE CHARACTER 0226 00007 0414 70 LGL 8 PLACE IN UPPER BYTE 0227 00010 -0 04 00064 STA* PTRA SAVE IN BUFFER 0228 00011 0 10 00055 JST ISOC SECOND CHARACTER 0229 00012 -0 05 00064 ERA* PTRA OR IN FIRST CHAR. OF PAIR 0230 00013 -0 04 00064 STOR STA* PTRA AND SAVE PAIR 0231 00014 0 12 00064 IRS PTRA STEP POINTER 0232 00015 0 12 00000 STEP IRS 0 STEP COUNTER 0233 00016 0 02 00000 LDA 0 GET COUNTER 0234 00017 0 11 00063 CAS BUFS COMPARE BUFFER SIZE 0235 00020 101000 NOP PTRA > BUFS 0236 00021 0 01 00030 JMP BUFF PTRA = BUFS, SO FULL... 0237 00022 0 11 00067 CAS =40 COMPARE RECORD SIZE 0238 00023 101000 NOP PTRA > RECS 0239 00024 0 01 00026 JMP FILL PTRA = RECS 0240 00025 0 01 00006 JMP NXTW GET MORE WORDS 0241 * 0242 * COUNTER BEYOND RECORD SIZE, BUT LESS THAN 0243 * BUFFER SIZE, SO FILL WITH SPACES 0244 00026 0 02 00066 FILL LDA =A TWO SPACES 0245 00027 0 01 00013 JMP STOR SAVE CHARACTERS
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 7

0246 * 0247 * BUFFER FULL 0248 00030 0 07 00067 BUFF SUB =40 COMPARE RECORD SIZE 0249 00031 101400 SMI COUNTER > RECORD SIZE? 0250 00032 0 01 00036 JMP DONE YES 0251 00033 0 10 00055 JST ISOC NO - READ A PAIR 0252 00034 0 10 00055 JST ISOC OF CHARACTERS AND DISCARD 0253 00035 0 01 00015 JMP STEP STEP COUNTER 0254 * 0255 00036 0 10 00000 DONE CALL I$CRDY WAIT UNTIL OK 0256 00037 0 01 00001 JMP RTRY ERROR RETURN 0257 00040 0 35 00061 LDX CCTI NORMAL RETURN, POINT AT CONV. TABLE 0258 00041 1 02 00027 LDA '27,1 [(SPACE)ETX,<] IN STANDARD TABLE 0259 00042 141140 ICL LOOK AT TOP BYTE 0260 00043 0 35 00000 LDX I$CA PARAMETER ADDRESS 0261 00044 0 07 00065 SUB ='240 SPACE 0262 00045 100040 SZE CONV. TABLE AS EXPECTED? 0263 00046 1 01 00002 JMP 2,1 NO - NORMAL RETURN 0264 00047 14 1705 OCP CRDS READ STATUS WORD 0265 00050 54 1005 INA CRDI CLEAR A AND INPUT 0266 00051 0 01 00050 JMP *-1 WAIT FOR CHARACTER 0267 00052 101100 SLN L.S. BIT NON-ZERO? 0268 00053 1 01 00002 JMP 2,1 NO - NORMAL RETURN 0269 00054 1 01 00001 JMP 1,1 ERROR RETURN 0270 * 0271 * 0272 00055 0 000000 ISOC DAC ** GET NEXT ISO CHARACTER 0273 00056 0 10 00000 CALL I$CK GET NEXT CHARACTER 0274 00057 0 01 00001 JMP RTRY ERROR RETURN 0275 00060 0 10 00000 CALL C$CTLU CHARACTER TABLE LOOKUP 0276 00061 0 000000 CCTI XAC C$CTCI CARD CODE TO ISO CONVERSION TABLE 0277 00062 -0 01 00055 JMP* ISOC 0278 * 0279 * 0280 * CONSTANTS AND VARIABLES 0281 * 0282 00063 000050 BUFS DEC 40 BUFFER SIZE 0283 00064 PTRA BSS 1 0284 * 0285 * 0286 * LITERALS 0287 * 0288 00065 000240 FIN LITERALS 00066 120240 00067 000050 00070 000000 0289 * 0290 * 0291 END
* ????-???-???? (CRP-IOL) DRAWING NO. ????????-???-?? PAGE 8

BUFF 000030 BUFS 000063 CCTI 000061 CRDA 000005A CRDH 000005A CRDI 001005A CRDS 001705A DONE 000036 FILL 000026 I$CA 000000 ISOC 000055 NXTW 000006 PTRA 000064 RTRY 000001 STEP 000015 STOR 000013 0000 WARNING OR ERROR FLAGS DAP-16 MOD 2 REV. C 01-26-71
Previous File   Multiple Pages   Next File