Previous File   Multiple Pages   Next File

* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 1

0001 * 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 0002 * 0003 * 0004 * 0005 * COMPUTER: H316, DDP-516 0006 * 0007 * 0008 * PROGRAM CATEGORY: GENERAL UTILITY 0009 * 0010 * 0011 * PROGRAM TITLE: GEN-IOL 0012 * GENERAL ROUTINE LIBRARY TO SUPPORT FORTRAN AND 0013 * STANDARD INPUT/OUTPUT LIBRARY 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 (EUROPE) 0043 * 0044 * 0045 * PURPOSE 0046 * 0047 * TO PROVIDE A SET OF ROUTINES FOR DATA CONVERSION AND SIMILAR 0048 * FUNCTIONS TO COMPLEMENT THE INPUT/OUTPUT DEVICE ROUTINE LIBRARIES. 0049 * 0050 *
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 2

0051 * RESTRICTIONS 0052 * 0053 * THIS LIBRARY WILL OPERATE ON AN H316 OR A DDP-516. 0054 * 0055 * 0056 * STORAGE 0057 * 0058 * SEE CONTENTS 0059 * 0060 * 0061 * CONTENTS 0062 * 0063 * MODULE MODULE STORAGE PAGE 0064 * NAME DEFINITION OCTAL DECIMAL NUMBER 0065 * 0066 * C$PR PRESERVE REGISTERS 0067 * C$RR RESTORE REGISTERS 0068 * C$RA PRESERVED A-REGISTER 0069 * C$RB PRESERVED B-REGISTER 0070 * C$RC PRESERVED C-REGISTER 0071 * C$RX PRESERVED X-REGISTER 26 22 0072 * 0073 * C$BB CONVERT BINARY TO BCI 50 40 0074 * 0075 * C$BB CONVERT BINARY TO BCI (DEFAULT MODULE) 4 4 0076 * 0077 * C$SW STRIP TRAILING WORDS 22 18 0078 * 0079 * C$IS CONVERT FROM INVISIBLE TO 6-BIT CODE 26 22 0080 * 0081 * C$SI CONVERT FROM 6-BIT TO INVISIBLE CODE 36 30 0082 * 0083 * C$6TO8 CONVERT 6 BIT CODE TO ISO CODE 30 24 0084 * 0085 * C$BTO6 CONVERT ISO CODE TO 6 BIT CODE 30 24 0086 * 0087 * C$CTLU CHARACTER TABLE LOOK-UP 16 14 0088 * 0089 * C$CT68 6 BIT CODE TO ISO CODE CONVERSION TABLE 40 32 0090 * 0091 * C$CT86 ISO CODE TO 6 BIT CODE CONVERSION TABLE 40 32 0092 * 0093 * C$CT68 6 BIT CODE TO ISO CODE CONVERSION TABLE 0094 * C$CTCI CARD CODE TO ISO CODE CONVERSION TABLE 0095 * C$IPDC CARD CODE TO ISO CODE CONVERSION TABLE 0096 * (SERIES 16 PERIPHERAL DEVICE CODE) 40 32 0097 * 0098 * C$CT86 ISO CODE TO 6 BIT CODE CONVERSION TABLE 0099 * C$CTIC ISO CODE TO CARD CODE CONVERSION TABLE 0100 * C$OPDC ISO CODE TO CARD CODE CONVERSION TABLE
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 3

0101 * (SERIES 16 PERIPHERAL DEVICE CODE) 40 32 0102 * 0103 * C$CTCI CARD CODE TO ISO CODE CONVERSION TABLE 0104 * C$IPDC CARD CODE TO ISO CODE CONVERSION TABLE 0105 * (SERIES 16 PERIPHERAL DEVICE CODE) 40 32 0106 * 0107 * C$CTIC ISO CODE TO CARD CODE CONVERSION TABLE 0108 * C$OPDC ISO CODE TO CARD CODE CONVERSION TABLE 0109 * (SERIES 16 PERIPHERAL DEVICE CODE) 40 32 0110 * 0111 * C$CTCI CARD CODE TO ISO CODE CONVERSION TABLE 0112 * C$IEDP CARD CODE TO ISO CODE CONVERSION TABLE 0113 * (EDP-COMPATIBLE CODE) 40 32 0114 * 0115 * C$CTIC ISO CODE TO CARD CODE CONVERSION TABLE 0116 * C$OEDP ISO CODE TO CARD CODE CONVERSION TABLE 0117 * (EDP-COMPATIBLE CODE) 40 32 0118 * 0119 * C$CTCI CARD CODE TO ISO CODE CONVERSION TABLE 0120 * C$IEBC CARD CODE TO ISO CODE CONVERSION TABLE 0121 * (EBCDIC) 40 32 0122 * 0123 * C$CTIC ISO CODE TO CARD CODE CONVERSION TABLE 0124 * C$OEBC ISO CODE TO CARD CODE CONVERSION TABLE 0125 * (EBCDIC) 40 32 0126 * 0127 * C$IP INPUT PARITY 0128 * C$IPF INPUT PARITY (FORCED EIGHT) 10 8 0129 * 0130 * C$IP INPUT PARITY 0131 * C$IPE INPUT PARITY (EVEN) 14 12 0132 * 0133 * C$IP INPUT PARITY (DEFAULT MODULE) 4 4 0134 * 0135 * C$OP OUTPUT PARITY 0136 * C$OPF OUTPUT PARITY (FORCED EIGHT) 6 6 0137 * 0138 * C$OP OUTPUT PARITY 0139 * C$OPE OUTPUT PARITY (EVEN) 16 14 0140 * 0141 * C$OP OUTPUT PARITY (DEFAULT MODULE) 2 2 0142 * 0143 * C$TF TEST FRAME 32 26 0144 * 0145 * C$IN INITIALISE SOURCE 0146 * I$AI INITIALISE SOURCE ASR 0147 * I$AIE INITIALISE SOURCE ASR 0148 * I$PI INITIALISE SOURCE HSR 0149 * I$PIE INITIALISE SOURCE HSR 0150 * O$AI INITIALISE SOURCE ASR
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 4

0151 * O$AIE INITIALISE SOURCE ASR 0152 * O$PI INITIALISE SOURCE HSP 0153 * O$PIE INITIALISE SOURCE HSP 22 18 0154 * 0155 * C$II CHARACTER INPUT INITIALISE 0156 * C$IT CHARACTER INPUT TAB 0157 * C$IF CHARACTER INPUT FILL 106 70 0158 * 0159 * C$OI CHARACTER OUTPUT INITIALISE 0160 * C$OE CHARACTER OUTPUT EXTRACT 76 62 0161 * 0162 * C$CC CHARACTER COUNT 0163 * C$TC TAB COUNT NEGATED 0164 * C$TT TAB TABLE LINK 10 8 0165 * 0166 * C$ER CONTROL ERROR ROUTINE 6 6 0167 * 0168 * C$ER CONTROL ERROR ROUTINE (ASR) 26 22 0169 * 0170 * C$ER CONTROL ERROR ROUTINE (MOS) 6 6 0171 * 0172 * C$ER CONTROL ERROR ROUTINE (BOS) 6 6 0173 * 0174 * 0175 * USE 0176 * 0177 * INTERNAL MODULES 0178 * 0179 * NAME CALLING SEQUENCE CALLS ERRORS 0180 * 0181 * C$PR CALL C$PR NONE 0182 * (RETURN) 0183 * (SIMILARLY FOR C$RR, WHICH IS LINKED WITH C$PR, 0184 * C$RA, C$RB, C$RC AND C$RX) 0185 * 0186 * C$RA XAC C$RA NONE 0187 * (SIMILARLY FOR C$RB, C$RC AND C$RX, WHICH ARE 0188 * LINKED WITH C$RA, C$PR AND C$RR) 0189 * 0190 * C$BB LDA NUMBER NONE 0191 * CALL C$BB 0192 * DAC BUFFER ADDRESS 0193 * (RETURN) 0194 * (SIMILARLY FOR DEFAULT MODULE) 0195 * 0196 * C$SW LDA WORD TO BE STRIPPED NONE 0197 * LDX MINUS NO. OF DATA WORDS 0198 * CALL C$SW 0199 * DAC BUFFER ADDRESS 0200 * (RETURN)
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 5

0201 * 0202 * RETURN IS MADE WITH THE CORRECTED 0203 * MINUS NO. OF DATA WORDS IN THE 0204 * X-REGISTER 0205 * 0206 * C$IS LDA CHARACTER NONE 0207 * CALL C$IS 0208 * (RETURN) 0209 * 0210 * CONVERTED CHARACTER IS IN THE 0211 * A-REGISTER ON RETURN 0212 * (SIMILARLY FOR C$SI) 0213 * 0214 * C$6TO8 CALL C$6TO8 C$CTLU NONE 0215 * DAC BUFFER ADDRESS C$CT68 0216 * DEC NO. OF DATA WORDS 0217 * (RETURN) 0218 * 0219 * C$8TO6 CALL C$8TO6 C$CTLU NONE 0220 * DAC BUFFER ADDRESS C$CT86 0221 * DEC NO. OF DATA WORDS 0222 * (RETURN) 0223 * 0224 * C$CTLU LDA CHARACTER NONE 0225 * CALL C$CTLU 0226 * DAC CONVERSION TABLE 0227 * (RETURN) 0228 * 0229 * CONVERTED CHARACTER IS IN THE 0230 * A-REGISTER ON RETURN 0231 * 0232 * C$CT68 XAC C$CT68 NONE 0233 * (SIMILARLY FOR C$CT86 AND ALL VERSIONS OF C$CTCI, C$CTIC, C$I--- 0234 * AND C$O---. MODULES WITH MULTIPLE NAMES MAY BE ADDRESSED BY ANY 0235 * OF THOSE NAMES WITH IDENTICAL EFFECT.) 0236 * 0237 * C$IP LDA CHARACTER NONE 0238 * CALL C$IP 0239 * (NORMAL RETURN) 0240 * (ERROR RETURN - NOT USED BY 0241 * DEFAULT MODULE) 0242 * 0243 * THE CHARACTER IS PRESERVED IN THE 0244 * A-REGISTER ON RETURN 0245 * (SIMILARLY FOR C$IPE AND C$IPF, WHICH CALLS ARE IDENTICAL IN EFFECT 0246 * WITH C$IP CALLS FOR THEIR RESPECTIVE MODULES.) 0247 * 0248 * C$OP LDA CHARACTER NONE 0249 * CALL C$OP 0250 * (RETURN)
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 6

0251 * 0252 * THE CHARACTER, WITH PARITY 0253 * CORRECTION, IS IN THE A-REGISTER 0254 * ON RETURN 0255 * (SIMILARLY FOR C$OPE AND C$OPF, WHICH CALLS ARE IDENTICAL IN EFFECT 0256 * WITH C$OP CALLS FOR THEIR RESPECTIVE MODULES.) 0257 * 0258 * C$TF LDA CHARACTER NONE 0259 * CALL C$TF 0260 * (NUL (200) RETURN) 0261 * (SOH (201) RETURN) 0262 * (ETX (203) RETURN) 0263 * (LF (212) RETURN) 0264 * (CR (215) RETURN) 0265 * (DC3 (223) RETURN) 0266 * (TAB (334) RETURN) 0267 * (L/A (337) RETURN) 0268 * (DEL (377) RETURN) 0269 * (OTHER CHAR RETURN) 0270 * 0271 * THE CHARACTER IS CONVERTED TO 0272 * FORCED EIGHT PARITY AND LEFT IN 0273 * THE A-REGISTER ON RETURN 0274 * 0275 * C$IN CALL C$IN C$CC NONE 0276 * DEC NO. OF WORDS IN BUFFER C$TC 0277 * DEC NO. OF TAB POSITIONS (N) C$TT 0278 * DEC TAB POSITION 1 0279 * DEC TAB POSITION 2 0280 * ... .............. 0281 * DEC TAB POSITION N 0282 * (RETURN) 0283 * (IDENTICAL WITH I$AI, I$AIE, I$PI, I$PIE, O$AI, O$AIE; O$PI, O$PIE) 0284 * 0285 * C$II LDA BUFFER ADDRESS NONE 0286 * CALL C$II 0287 * (RETURN) 0288 * (LINKED WITH C$IT AND C$IF) 0289 * 0290 * C$IT CALL C$IT C$TC NONE 0291 * (RETURN) C$TT 0292 * (LINKED WITH C$II AND C$IF) 0293 * 0294 * C$IF LDA CHARACTER C$CC NONE 0295 * CALL C$IF 0296 * (BUFFER ALREADY FULL RETURN) 0297 * (NORMAL RETURN) 0298 * (LINKED WITH C$II AND C$IT) 0299 * 0300 * C$OI CALL C$OI NONE
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 7

0301 * (RETURN) 0302 * (LINKED WITH C$OE) 0303 * 0304 * C$OE CALL C$OE C$CC NONE 0305 * DAC BUFFER ADDRESS DOUBLED C$TC 0306 * (NORMAL RETURN) C$TT 0307 * (BUFFER EXHAUSTED RETURN) 0308 * 0309 * THE CHARACTER WILL BE IN THE 0310 * A-REGISTER WHEN THE NORMAL RETURN 0311 * IS TAKEN 0312 * (LINKED WITH C$OI) 0313 * 0314 * C$CC XAC C$CC NONE 0315 * (SIMILARLY FOR C$TC AND C$TT, WHICH ARE LINKED WITH C$CC) 0316 * 0317 * C$ER CALL C$ER NONE 0318 * BCI 1,(2-LETTER ERROR MNEMONIC) 0319 * (RETURN) 0320 * (STANDARD VERSION) 0321 * 0322 * C$ER CALL C$ER O$AK NONE 0323 * BCI 1,(2-LETTER ERROR MNEMONIC) 0324 * (RETURN) 0325 * (ASR VERSION) 0326 * 0327 * C$ER CALL C$ER NONE 0328 * BCI 1,(2-LETTER ERROR MNEMONIC) 0329 * (MOS AND BOS VERSIONS OF C$ER - CONTROL IS TRANSFERRED TO MOS OR 0330 * BOS.) 0331 * 0332 * EXTERNAL MODULES 0333 * 0334 * O$AK ASR OUTPUT CHARACTER 0335 * 0336 * SOFTWARE CONFIGURATION 0337 * 0338 * THE OBJECT TAPE OF GEN-IOL IS ISSUED WITH END OF GROUP MARKS AND 0339 * BLANKS BETWEEN EACH MODULE. PERMITTING THE USER TO RECONSTRUCT A 0340 * NEW GEN-IOL TAPE CONTAINING THE ROUTINES APPROPRIATE TO HIS NEEDS 0341 * 0342 * 0343 * ERRORS 0344 * 0345 * NO ERRORS ARE DETECTED BY THIS LIBRARY 0346 * 0347 * 0348 * METHOD 0349 * 0350 * GENERAL
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 8

0351 * 0352 * THE MODULES ARE ORDERED SO THAT HIGHER LEVEL MODULES PRECEDE 0353 * LOWER LEVEL MODULES. AND WHEN PREPARING INDIVIDUAL SYSTEM TAPES 0354 * THIS CHARACTERISTIC SHOULD BE PRESERVED. 0355 * NO REGISTER PRESERVATION IS ATTEMPTED UNLESS OTHERWYSE STATED. 0356 * 0357 * CONVERT BINARY TO BCI 0358 * 0359 * THE BUFFER ADDRESS GIVEN IS ASSUMED TO REFER TO THE FIRST WORD 0360 * OF A TWO-WORD BUFFER IN WHICH TWO ISO CHARACTERS PER WORD WILL 0361 * BE PACKED. I.E. A FOUR-DIGIT DECIMAL NUMBER. THE BINARY NUMBER 0362 * IN THE A-REGISTER IS CONVERTED TO A NUMBER MODULO 10,000, AND 10 0363 * IS REPEATEDLY SUBTRACTED FROM THIS NUMBER UNTIL IT BECOMES 0364 * NEGATIVE IN ORDER TO COMPUTE THE UNITS DIGIT. COUNTTNG TO PRODUCE 0365 * A QUOTIENT, THIS PROCESS IS REPEATED FOR THE QUOTIENT. IF AT 0366 * ANY TIME BOTH QUOTIENT AND REMAINDER BECOME ZERO. A SPACE IS 0367 * PLACED IN THE BUFFER; IN THIS WAY LEADING ZEROES ARE SUPPRESSED, 0368 * IF A NEGATIVE ARGUMENT IS ERRONEOUSLY GIVEN. THE FINAL BUFFER 0369 * CONTENTS WILL NOT BE A CORRECT CONVERSION OF THE ARGUMENT. BUT NO 0370 * PROGRAM CORRUPTION WILL OCCUR. 0371 * 0372 * PRESERVE AND RESTORE REGISTERS 0373 * 0374 * REGISTERS A, B AND X AND THE C-BIT ARE PRESERVED IN EXTERNALLY 0375 * ADDRESSABLE LOCATIONS BY CALLING C$PR. IF THE C-BIT WAS SET. 0376 * THE CONTENTS OF LOCATION C$RC WILL BE 1, OTHERWISE IT WILL BE 0377 * ZERO. ONLY THE X-REGISTER CONTENT IS UNCHANGED AFTER EXIT FROM 0378 * C$PR. A CALL ON C$RR LOADS THE FOUR REGISTERS FROM THE FOUR 0379 * BUFFER LOCATIONS C$RA, C$RB, C$RC AND C$RX. 0380 * 0381 * STRIP TRAILING WORDS 0382 * 0383 * THE BUFFER IS BACKSCANNED AND THE X-REGISTER INCREMENTED UNTIL 0384 * EITHER A WORD UNEOUAL TO THE SPECIFIED WORD IS FOUND, OR THE 0385 * X-REGISTER BECOMES ZERO. 0386 * 0387 * CONVERT FROM INVISIBLE TO 6-BIT CODE 0388 * 0389 * LET THE ARGUMENT BE JJJJJJJJXZZZZZZZ IN BINARY. THE BITS J ARE 0390 * IGNORED, AND THE RESULT 0000000000XYYYYY IS CALCULATED ACCORDING 0391 * TO THE FOLLOWING LOGIC DECISION TABLE: 0392 * 0393 * IS Z < '174 ? * Y N N N N 0394 * IS Z = '174 ? * Y 0395 * IS Z = '175 ? * Y 0396 * IS Z = '176 ? * Y 0397 * IS Z = '177 ? * Y 0398 * * 0399 * ******************************* 0400 * *
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 9

0401 * MAKE Y = (Z & '077) * X 0402 * MAKE Y = '005 (ENQ) * X 0403 * MAKE Y = '012 (LF) * X 0404 * MAKE Y = '021 (DC1) * X 0405 * MAKE Y = '023 (DC3) * X 0406 * 0407 * THE BIT X IS SAVED IN THE B-REGISTER. AND THE BITS Z ARE 0408 * CONVERTED, IF NECESSARY, FROM A LOOK-UP TABLE. 0409 * THE CONTENT OF THE X-REGISTER IS PRESERVED. 0410 * 0411 * CONVERT FROM 6-BIT TO INVISIBLE CODE 0412 * 0413 * LET THE ARGUMENT BE JJJJJJJJJJXYYYYY IN BINARY. THE BITS J ARE 0414 * IGNORED, AND THE RESULT 00000000XZZZZZZZ IS CALCULATED ACCORDING 0415 * TO THE FOLLOWING LOGIC DECISION TABLE: 0416 * 0417 * IS Y = '005 (ENQ) ? * Y N N N N 0418 * IS Y = '012 (LF) ? * Y N N N 0419 * IS Y = '021 (DC1) ? * Y N N 0420 * IS Y = '023 (DC3) ? * Y N 0421 * * 0422 * ******************************* 0423 * * 0424 * MAKE Z = '174 * X 0425 * MAKE Z = '175 * X 0426 * MAKE Z = '176 * X 0427 * MAKE Z = '177 * X 0428 * MAKE Z = Y * X 0429 * 0430 * THE CONTENT OF THE X AND B REGISTERS ARE PRESERVED. 0431 * IF THE RESULTING CODE IS OUTPUT TO AN ASR. NO CHARACTERS WILL BE 0432 * PRINTED. THE CHARACTERS ENQ, LF, DC1 AND DC3 ARE DELIBERATELY 0433 * AVOIDED AS THEY INITIATE CONTROL FUNCTIONS. 0434 * 0435 * CONVERT 6-BIT CODE TO ISO CODE 0436 * 0437 * THE BUFFER IS ASSUMED TO HOLD TWO CHARACTERS TO A WORD. IN BITS 0438 * 3-8 AND 11-16. THE BITS 1-2 AND 9-10 ARE IGNORED. AND THE 0439 * CHARACTERS CONVERTED ONE BY ONE FROM THE TABLE C$CT68. USING THE 0440 * CHARACTER TABLE LOOK-UP ROUTINE. TO 8-BIT ISO CODE CHARACTERS. 0441 * 0442 * CONVERT ISO CODE TO 6-BIT CODE 0443 * 0444 * THIS ROUTINE WORKS IN THE CONVERSE MANNER TO THE ABOVE ROUTINE. 0445 * THE MOST SIGNIFICANT TWO BITS OF EACH ISO CODE CHARACTER ARE 0446 * DISCARDED. 0447 * 0448 * CHARACTER TABLE LOOK-UP 0449 * 0450 * BITS 1-10 OF THE A-REGISTER ARE DISCARDED, AND BITS 11-16 ARE
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 10

0451 * USED TO SELECT AN 8-BIT BYTE FROM THE SPECIFIED TABLE. WHICH IS 0452 * REGARDED AS A 32-WORD TABLE CONTAINING 2 8-BIT BYTES PER WORD. 0453 * THE BYTES BEING NUMBERED FROM 0 TO 63. 0454 * THE X-REGISTER IS NOT USED. 0455 * 0456 * CONVERSION TABLES 0457 * 0458 * A THESE ARE SUITABLE FOR USE WITH THE CHARACTER TABLE LOOK-UP 0459 * ROUTINE. AS THE SERIES 16 PERIPHERAL DEVICE CARD CODE IS 0460 * IDENTICAL WITH THAT USED FOR MAGNETIC TAPE. TABLES WITH DUAL 0461 * NAMES ARE SUPPLIED AND MAY BE USED WHERE APPLICABLE TO SAVE CORE. 0462 * 0463 * INPUT PARITY 0464 * 0465 * BLANK TAPE ('000) IS ALWAYS REGARDED AS HAVING CORRECT PARITY. 0466 * THE ORIGINAL CHARACTER IS PRESERVED IN THE A-REGISTER ON EXIT. 0467 * THE DUMMY ROUTINE ALWAYS TAKES THE NORMAL EXIT. 0468 * THE X-REGISTER IS NOT USED. 0469 * 0470 * OUTPUT PARITY 0471 * 0472 * THE X-REGISTER IS NOT USED. 0473 * 0474 * TEST FRAME 0475 * 0476 * THE CHARACTER IN THE A-REGISTER IS CONVERTED TO FORCED-EIGHT 0477 * PARITY, AND ON EXIT IT WILL BE IN THIS FORM. IT IS COMPARED 0478 * AGAINST NINE SPECIAL CHARACTERS IN A LOOK-UP TABLE, AND THE 0479 * APPROPRIATE EXIT IS TAKEN (SEE 'USE'). 0480 * 0481 * INITIALISE SOURCE 0482 * 0483 * THE CHARACTER COUNT AND TAB COUNT SPECIFIED IN THE CALLING 0484 * SEQUENCE ARE TRANSFERRED TO LOCATIONS C$CC AND C$TC. HOWEVER, 0485 * ONLY THE ADDRESS OF THE TAB TABLE IN THE CALLING SEQUENCE IS 0486 * NOTED. THEREFORE SUBSEQUENT ALTERATION TO THE TAB TABLE WITHIN 0487 * THE CALLING SEQUENCE WILL AFFECT SOURCE FORMAT. 0488 * IT SHOULD BE NOTED THAT ANY INITIALISATION CALL AFFECTS SOURCE 0489 * FORMAT FOR INPUT AND OUTPUT ON BOTH ASR AND HIGH SPEED READER OR 0490 * PUNCH. 0491 * THE X-REGISTER IS NOT USED. 0492 * 0493 * CHARACTER INPUT INITIALISE 0494 * 0495 * THE BUFFER ADDRESS IS RECORDED AND A CHARACTER POINTER SET TO 1. 0496 * THIS POINTER ALWAYS INDICATES THE NEXT CHARACTER POSITION TO BE 0497 * FILLED. AND IS NOT EXTERNALLY DEFINED. 0498 * THE X-REGISTER IS NOT USED. 0499 * 0500 * CHARACTER INPUT TAB
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 11

0501 * 0502 * USING THE CHARACTER INPUT FILL ROUTINE. SPACES ('240) ARE 0503 * INSERTED INTO THE BUFFER, STARTING AT THE NEXT CHARACTER 0504 * POSITION, UP TO BUT NOT INCLUDING THE FIRST TAB POSITION WHOSE 0505 * VALUE IS GREATER THAN THE NEXT CHARACTER POSITION. IF NO SUCH 0506 * TAB POSITION EXISTS. ONE SPACE IS INSERTED USING CHARACTER INPUT 0507 * FILL. 0508 * 0509 * CHARACTER INPUT FILL 0510 * 0511 * IF THE A-REGISTER CONTAINS '210 (BS, CONTROL 'H'). THE CHARACTER 0512 * POINTER IS DECREMENTED BY 1 UNLESS IT IS ALREADY 1. 0513 * OTHERWISE, IF THE BUFFER IS FULL (AS INDICATED BY THE POINTER), 0514 * THE 'BUFFER FULL' EXIT IS TAKEN, BUT IF NOT, BITS 1-8 OF THE 0515 * A-REGISTER ARE INSERTED IN THE NEXT CHARACTER POSITION, THE 0516 * POINTER IS INCREMENTED BY 1, AND THE NORMAL RETURN IS TAKEN. 0517 * TWO 8-BIT CHARACTERS PER WORD ARE STORED IN THE BUFFER. 0518 * THE X-REGISTER IS NOT USED. BUT THE CONTENT OF THE A-REGISTER IS 0519 * NOT PRESERVED. 0520 * 0521 * CHARACTER OUTPUT INITIALISE 0522 * 0523 * TWO CHARACTER POINTERS, INDICATING CURRENT CHARACTER AND LAST 0524 * CHARACTER, ARE SET TO ZERO. 0525 * THE X-REGISTER IS NOT USED. 0526 * 0527 * CHARACTER OUTPUT EXTRACT 0528 * 0529 * IF THE BUFFER IS EXHAUSTED (AS INDICATED BY THE CURRENT CHARACTER 0530 * POINTER). THE APPROPRIATE EXIT IS TAKEN. OTHERWISE; THE BUFFER 0531 * IS SCANNED FROM THE LAST CHARACTER POSITION UNTIL EITHER 0532 * 0533 * A) THE BUFFER IS EXHAUSTED. WHEN THE APPROPRIATE EXIT IS 0534 * TAKEN 0535 * 0536 * OR B) A NON-SPACE CHARACTER IS FOUND. IN POSITION P, SAY. 0537 * 0538 * IN CASE B. IF A TAB POSITION T EXISTS SUCH THAT LAST CHARACTER 0539 * POSITION + 1 < T < OR = P, RETURN IS EFFECTED WITH A BACKSLASH 0540 * (TAB) CHARACTER ('334) IN THE A-REGISTER, OTHERWISE RETURN IS 0541 * EFFECTED WITH THE CHARACTER AFTER THE LAST CHARACTER POSITION IN 0542 * THE A-REGISTER. 0543 * 0544 * CHARACTER COUNT, TAB COUNT NEGATED, TAB TABLE LINK 0545 * 0546 * THIS MODULE ADDITIONALLY CONTAINS A DEFAULT TAB TABLE. 0547 * THE DEFAULT VALUES ARE: CHARACTER COUNT (C$CC) 80 0548 * 0549 * TAB COUNT NEGATED (C$TC) -4 0550 *
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 12

0551 * TAB TABLE (TO WHICH C$TT 6 0552 * INITIALLY POINTS) 12 0553 * 30 0554 * 73 0555 * 0556 * CONTROL ERROR ROUTINES 0557 * 0558 * AFTER DISPLAYING THE RELEVANT TWO-CHARACTER ERROR MNEMONICS. THE 0559 * MOS AND BOS ROUTINES RETURN CONTROL TO THEIR RESPECTIVE OPERATING 0560 * SYSTEMS. THE STANDARD (MNEMONIC IN X-REGISTER) AND ASR ROUTINES 0561 * HALT. CONTINUATION CAUSES CONTROL TO BE RETURNED TO THE CALLING 0562 * PROGRAM. THE STANDARD AND ASR ROUTINES PRESERVE THE CONTENT OF THE 0563 * A-REGISTER, DISPLAYING IT DURING THE HALT TO ALLOW ITS CORRECTION 0564 * (WHERE APPLICABLE) BY THE OPERATOR. 0565 * 0566 * 0567 ************************************************************************ 0568 EJCT
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 13

0569 * 0570 * 0571 SUBR C$PR PRESERVE REGISTERS 0572 SUBR C$RR RESTORE REGISTERS 0573 SUBR C$RA PRESERVED A-REGISTER 0574 SUBR C$RB PRESERVED B-REGISTER 0575 SUBR C$RC PRESERVED C-REGISTER 0576 SUBR C$RX PRESERVED X-REGISTER 0577 * 0578 * 0579 CF5 H316 AND DDP-526 0580 REL RELOCATABLE 0581 * 0582 * 0583 * PRESERVE REGISTERS 0584 * 0585 00000 0 000000 C$PR DAC ** RETURN ADDRESS 0586 00001 0 04 00021 STA C$RA STORE A 0587 00002 000201 IAB 0588 00003 0 04 00022 STA C$RB STORE B 0589 00004 140040 CRA 0590 00005 141216 ACA C-BIT TO A-REGISTER 0591 00006 0 04 00023 STA C$RC STORE C 0592 00007 0 15 00024 STX C$RX STORE X 0593 00010 -0 01 00000 JMP* C$PR RETURN 0594 * 0595 * 0596 * RESTORE REGISTERS 0597 * 0598 00011 0 000000 C$RR DAC ** RETURN ADDRESS 0599 00012 0 35 00024 LDX C$RX RESTORE X 0600 00013 0 02 00023 LDA C$RC GET PRESERVED C CONTENTS 0601 00014 0404 77 LGR 1 SHIFT TO PLACE IN C 0602 00015 0 02 00022 LDA C$RB 0603 00016 000201 IAB RESTORE B 0604 00017 0 02 00021 LDA C$RA RESTORE A 0605 00020 -0 01 00011 JMP* C$RR 0606 * 0607 * 0608 * STORAGE FOR REGISTERS 0609 * 0610 00021 C$RA BSS 1 PRESERVED A-REGISTER 0611 00022 C$RB BSS 1 PRESERVED B-REGISTER 0612 00023 C$RC BSS 1 PRESERVED C-REGISTER 0613 00024 C$RX BSS 1 PRESERVED X-REGISTER 0614 * 0615 * 0616 END END OF C$PR 02.OCT.70 G.S.LITTLE C$PR 000000 C$RA 000021 C$RB 000022 C$RC 000023
* 0066-001-H003 (GEN-IOL) DRAWING NO. 41286164-001-01 PAGE 14

C$RR 000011 C$RX 000024 0000 WARNING OR ERROR FLAGS DAP-16 MOD 2 REV. C 01-26-71
Previous File   Multiple Pages   Next File