Previous File   Multiple Pages   Next File

* NAME: F4-IOS DOC 41285251000 REV C PAGE 1

0001 * NAME: F4-IOS DOC 41285251000 REV C 0002 * 0003 * 0004 * 0005 * 0006 * DESCRIPTION: INPUT/OUTPUT SUPERVISOR FOR FORTRAN IV COMPILER 0007 * 0008 * 0009 * 0010 * 0011 * 0012 * REVISION HISTORY 0013 * 0014 * REV DATE ECO. NO. 0015 * 0016 * C 11 APR 1973 0017 * B 02 MAR 1971 0018 * A 0019 * 0020 * 0021 * 0022 * 0023 * 0024 * 0025 * DOCUMENTATION REFERENCES 0026 * 0027 * TITLE DOC NO. 0028 * 0029 * FORTRAN USER'S MANUAL 70130071364 0030 * 0031 * 0032 * 0033 * 0034 * 0035 * 0036 * 0037 * COPYRIGHT 1973 HONEYWELL 0038 * 0039 * 0040 * AUTHOR 0041 * 0042 * HONEYWELL INFORMATION SYSTEMS LIMITED 0043 * 0044 * 0045 * PURPOSE 0046 * 0047 * TO SERVICE ALL INPUT AND OUTPUT REQUIREMENTS OF THE FORTRAN 0048 * COMPILER 0049 * 0050 *
* NAME: F4-IOS DOC 41285251000 REV C PAGE 2

0051 * RESTRICTIONS 0052 * 0053 * THIS PROGRAM WILL OPERATE ON A STANDARD H316 OR H516 WITH 0054 * A MINIMUM OF 8K OF STORAGE 0055 * 0056 * 0057 * STORAGE 0058 * 0059 * 664 (OCTAL) 0060 * 436 (DECIMAL) 0061 * 0062 * LOCATIONS 100-113 ARE ALSO INITIALISED FOR USE BY THE COMPILER 0063 * 0064 * 0065 * USE 0066 * 0067 * THE FORTRAN IV COMPILER MAKES US OF THE FOLLOWING ENTRY POINTS 0068 * WITHIN F4-IOS;- 0069 * 0070 * 0071 * ENTRY POINT CALLING 0072 * DESCRIPTION: SEQUENCE: ARGUMENT: 0073 * 0074 * INITIALISATION CALL F4$INT 0075 * 0076 * INPUT CALL F4$IN 0077 * DAC COMPILER BUFFER ADDRESS 0078 * 0079 * BINARY OUTPUT CALL F4$OUT 0080 * THE INDEX-REGISTER CONTAINS 0081 * MINUS THE NUMBER OF WORDS TO BE 0082 * OUTPUT AND THE A-REGISTER THE 0083 * ADDRESS FOLLOWING THE LAST WORD 0084 * TO BE OUTPUT FROM THE COMPILER 0085 * BUFFER 0086 * 0087 * SYMBOLIC OUTPUT CALL F4$SYM 0088 * DAC COMPILER BUFFER ADDRESS 0089 * 0090 * COMPILATIGN COMPLETE CALL F4$END 0091 * 0092 * 0093 * 0094 * THE FOLLOWING TWO REFERENCE POINTS WITHIN F4-IOS WILL APPEAR ON A 0095 * MEMORY MAP:- 0096 * 0097 * F4$FIN HALT FOLLOWING COMPLETION OF A COMPILATION 0098 * 0099 * F4$KEY KEYWORD (INITIALLY '311) 0100 *
* NAME: F4-IOS DOC 41285251000 REV C PAGE 3

0101 * 0102 * INPUT/OUTPUT DEVICE SELECTION IS ACHIEVED BY SETTING UP THE KEYWORD 0103 * WITH THE APPROPRIATE BIT PATTERN ENTERED IN THE A-REGISTER AT THE 0104 * OUTSET. THE INTERPRETATION OF THE A-REGISTER BITS IS AS FOLLOWS:- 0105 * 0106 * BIT 1 (USED BY THE COMPILER ONLY) 0107 * IF SET, CERTAIN ERROR CHECKS ARE NOT MADE. THIS OPTION 0108 * IS USED WHEN COMPILING THOSE PARTS OF THE LIBRARY WRITTEN 0109 * IN FORTRAN AND IT ALLOWS THE LIBRARY TO TAKE ADVANTAGE 0110 * OF THE COMPILER'S LOGIC TO GENERATE SPECIAL CODING. 0111 * 0112 * 0113 * BIT 2 IF SET, THE SYMBOLIC LISTING IS EXPANDED TO INCLUDE 0114 * SIDE-BY-SIDE OCTAL INFORMATION. 0115 * 0116 * BIT 3 IF SET, THE SYMBOLIC LISTING IS INHIBITED (AS LONG AS 0117 * BIT 2 IS NOT SET). 0118 * 0119 * BIT 4 IF SET, THE SYMBOLIC LISTING WILL CONTAIN INFORMATION 0120 * CONCERNING OBJECT BLOCK TEXT (NOT FOR NORMAL USAGE). 0121 * 0122 * BIT 5 NOT USED 0123 * 0124 * BIT 6 IF SET, THE OBJECT CODING BEING GENERATED WILL INCLUDE 0125 * TRACE COUPLING INFORMATION REGARDLESS OF ANY TRACE 0126 * STATEMENTS WITHIN THE PKOGRAM (OPERATOR OVERRIDE). 0127 * 0128 * BIT 7 NOT USED 0129 * 0130 * BITS 8-10 INPUT DEVICE SELECTION 0131 * 0132 * O= NOT USED 0133 * 1= ASR 33/35 KEYBOARD OR PAPERTAPE READER 0134 * 2= CARD READER 0135 * 3= PAPERTAPE READER 0136 * 4= MAGNETIC TAPE UNIT NO. 1 0137 * 5-7= NOT USED 0138 * 0139 * BITS 11-13 SYMBOLIC LISTING DEVICE SELECTION 0140 * 0141 * 0= SUPPRESS SYMBOLIC LISTING 0142 * 1= ASK 33/35 TYPEWRITER 0143 * 2= LINE PRINTER 0144 * 3= PAPER TAPE PUNCH 0145 * 4= MAGNETIC TAPE UNIT NO. 2 0146 * 5-7= NOT USED 0147 * 0148 * BITS 14-16 BINARY OUTPUT DEVICE SELECTION 0149 * 0150 * O= SUPPRESS BINARY OUTPUT
* NAME: F4-IOS DOC 41285251000 REV C PAGE 4

0151 * 1= PAPERTAPE PUNCH 0152 * 2= ASR 33/35 PUNCH 0153 * 3= NOT USED 0154 * 4= MAGNETIC TAPE UNIT NO. 2 0155 * 5-7= NOT USED 0156 * 0157 * FOR BINARY OUTPUT LEADER AND TRAILER ARE PROVIDED FOR THE 0158 * PAPERTAPE PUNCH BUT NOT FOR THE ASR 33/35 PUNCH. ALSO 0159 * THE PAPERTAPE PUNCH IS TURNED ON AND OFF UNDER PROGRAM 0160 * CONTROL WHEREAS THE ASR 33/35 PUNCH REQUIRES MANUAL CONTROL. 0161 * 0162 * 0163 * FOLLOWING COMPLETION OF A COMPILATIUN 'END OF JOB' IS TYPED ON TRE 0164 * ASR AND THE PROGRAM HALTS DISPLAYING THE KEYWORD IN THE A-REGISTER. 0165 * TO BEGIN A NEW COMPILATLION, RESET THE A-REGISTER IF NECESSARY AND 0166 * PRESS 'START'. 0167 * 0168 * IF SENSE SWITCH 3 IS SET DURING A COMPILATION THE COMPUTER WILL 0169 * HALT BEFORE READING THE NEXT SOURCE RECORD, THE KEYWORD WILL BE 0170 * DISPLAYED IN THE A-REGISTER. THIS MAY BE CHANGED AS REQUIRED. 0171 * THE COMPILATION WILL BE CONTINUED WHEN 'START' IS PRESSED. IT 0172 * SHOULD BE NOTED THAT NO ATTEMPT IS MADE TO INITIALISE NEW DEVICES. 0173 * 0174 * 0175 * THE FOLLOWING INPUT/OUTPUT ROUTINES ARE CALLED BY F4-IOS:- 0176 * 0177 * CALLING 0178 * DESCRIPTION: SEQUENCE: ARGUMENT: 0179 * 0180 * INPUT - ASR CALL I$AA 0181 * DAC BUFFER ADDRESS 0182 * JMP END OF FILE, READ NEXT RECORD 0183 * 0184 * INPUT - CARD READER CALL I$CA 0185 * DAC BUFFER ADDRESS 0186 * JMP END OF FILE, READ NEXT RECORD 0187 * 0188 * INPUT - PAPER TAPE CALL I$PA 0189 * READER DAC BUFFER ADDRESS 0190 * JMP END OF FILE, READ NEXT RECORD 0191 * 0192 * INPUT - MAGNETIC TAPE CALL I$MA 0193 * DAC BUFFER ADDRESS 0194 * DEC 40 WORD COUNT 0195 * DEC 1 UNIT NUMBER 0196 * JMP REPORT UNREADABLE RECORD 0197 * JMP REPORT END OF TAPE 0198 * JMP END OF FILE, READ NEXT RECORD 0199 * 0200 * CONVERT TO ISO CODE CALL C$6TO8
* NAME: F4-IOS DOC 41285251000 REV C PAGE 5

0201 * DAC BUFFER ADDRESS 0202 * DEC 40 WORD COUNT 0203 * 0204 * PUNCH POWER OFF CALL O$POFF 0205 * 0206 * PUNCH LEADER CALL U$PLDR 0207 * 0208 * OUTPUT - PAPER TAPE CALL O$PB 0209 * PUNCH DAC BUFFER ADDRESS 0210 * 0211 * OUTPUT - ASR CALL O$AB 0212 * DAC BUFFER ADDRESS 0213 * 0214 * OUTPUT - MAGNETIC CALL O$MC (3 CHARACTERS/WORD) 0215 * TAPE DAC BUFFER ADDRESS 0216 * DAC WORD COUNT 0217 * DEC 2 UNIT NUMBER 0218 * JMP REPORT END OF TAPE 0219 * 0220 * LIST - LINE PRINTER CALL O$LH INITIALISE HEADING 0221 * DAC BUFFER ADDRESS 0222 * 0223 * CALL O$LA LIST RECORD 0224 * DAC BUFFER ADDRESS 0225 * 0226 * LIST - PAPER TAPE CALL O$PH INITIALISE HEADING 0227 * PUNCH DAC BUFFER ADDRESS 0228 * 0229 * CALL O$PL PUNCH RECORD 0230 * DAC BUFFER ADDRESS 0231 * 0232 * LIST - ASR CALL O$HH INITIALISE HEADING 0233 * DAC BUFFER ADDRESS 0234 * 0235 * CALL O$LL LIST RECORD 0236 * DAC BUFFER ADDRESS 0237 * 0238 * LIST - MAGNETIC TAPE CALL O$MA 0239 * DAC BUFFER ADDRESS 0240 * DEC 40 WORD COUNT 0241 * DEC 2 UNIT NUMBER 0242 * JMP REPORT END OF TAPE 0243 * 0244 * CONVERT TO 6-BIT CODE CALL C$8TO6 0245 * DAC BUFFER ADDRESS 0246 * DEC 40 WORD COUNT 0247 * 0248 * END OF FILE, MAGNETIC CALL O$ME 0249 * TAPE DEC 2 UNIT NUMBER 0250 *
* NAME: F4-IOS DOC 41285251000 REV C PAGE 6

0251 * COMMENT - ASR LDX =- MINUS NUMBER OF WORDS 0252 * CALL U$ALL ASR LINE LIST 0253 * DAC BUFFER ADDRESS 0254 * 0255 * CAR. RET. - ASR CALL O$AC ASR OUTPUT CARRIAGE RETURN 0256 * 0257 * LINE FEED - ASR CALL U$AF ASR OUTPUT LINE FEED 0258 * 0259 * ADDITIONALLY F4-IOS CALLS G$DR (CALLING SEQUENCE CALL G$DR) 0260 * WHICH ENABLES LOCATIONS '100 - '113 TO BE INITIALISED FOR USE BY 0261 * THE COMPILER. IF AN ATTEMPT IS MADE TO USE UNLOADED INPUT/OUTPUT 0262 * ROUTINES G$DR CALLS G$NA WHICH TYPES AN ERROR MESSAGE ON THE ASR 0263 * 0264 * NOTE: A SOURCE RECORD LONGER THAN 40 WORDS WILL BE TRUNCATED 0265 * 0266 * A SOURCE RECORD CONTAINING THE DOLLAR CHARACTER IN COLUMN 0267 * ONE WILL HAVE THE FIRST TWO CHARACTERS CHANGED TO $0, THE 0268 * END OF FILE. THE REST OF THE RECORD WILL REMAIN UNCHANGED. 0269 * 0270 * IF INPUT IS VIA THE ASR LINE FEEDS ARE ONLY OUTPUT IF THE 0271 * LISTING IS BEING OUTPUT ON THE SAME DEVICE. 0272 * 0273 * 0274 * METHOD 0275 * 0276 * TO MAKE-UP A FORTRAN IV COMPILER THE FOLLOWING OBJECT TAPES SHOULD 0277 * BE LOADED IN THE ORDER STATED: 0278 * 0279 * 1. FORTRAN IV COMPILER 0280 * 2. OPMOD (12K OR 16K SYSTEMS ONLY WITH OP-16 REAL-TIME 0281 * STATEMENT REQUIREMENTS) OR OPDUM. 0282 * 3. F4-IOS 0283 * 4. REQUIRED INPUT/OUTPUT ROUTINES ONLY 0284 * 5. G$DR 0285 * 0286 * G$DR WILL ABORT ANY CALLS WITHIN F4-IOS TO INPUT/OUTPUT ROUTINES 0287 * NOT LOADED. 0288 * 0289 * NOTE: THE LOAD MAY NOT TAKE PLACE IN EXTENDED MODE. 0290 * THE BASE ON THE CORE MAP MAY NOT BE HIGHER THAN '625. 0291 * AN SLST SHOULD BE PUNCHED FROM '26 TO HIGH-1 ON THE CORE MAP. 0292 * 0293 * 0294 * ERRORS 0295 * 0296 * WHEN AN UNLOADED INPUT/OUTPUT ROUTINE IS CALLED THE FOLLOWING 0297 * ERROR MESSAGE IS TYPED ON THE ASR: 0298 * 0299 * NA 0300 *
* NAME: F4-IOS DOC 41285251000 REV C PAGE 7

0301 * THE PROGRAM HALTS DISPLAYING THE KEYWORD IN THE A-REGISTER. THE 0302 * KEYWORD SHOULD BE CORRECTED BY RESETTING THE A-REGISTER AND THE 0303 * COMPILATION RESTARTED BY PRESSING 'START'. 0304 * 0305 * WHEN AN UNUSED INPUT/OUTPUT DEVICE CODE IS ENCOUNTERED THE 0306 * FOLLOWING ERROR MESSAGE IS TYPED ON THE ASR: 0307 * 0308 * DEVICE? 0309 * 0310 * THE PROGRAM HALTS DISPLAYING THE KEYWORD IN THE A-REGISTER. THE 0311 * KEYWORD SHOULD BE CORRECTED BY RESETTING THE A-REGISTER AND THE 0312 * COMPILATION CONTINUED BY PRESSING 'START'. 0313 * 0314 * THE ERROR MESSAGE 'MT' IS TYPED ON THE ASR IF:- 0315 * 0316 * 1) END OF TAPE IS ENCOUNTERED OR 0317 * 2) A RECORD IS UNREADABLE 0318 * 0319 * IF THIS ERROR OCCURS THE PROGRAM WILL HALT DISPLAYING THE KEYWORD 0320 * IN THE A-REGISTER. THE NEXT COMPILATION IS COMMENCED BY RESETTING 0321 * THE KEYWORD IF NECESSARY AND PRESSING START. 0322 * 0323 * 0324 ************************************************************************ 0325 * 0326 * 0327 SUBR F4$INT,INT INITIALISE 0328 SUBR F4$IN,IN SYMBOLIC INPUT 0329 SUBR F4$IER,IERR INPUT DEVICE CODE ERROR 0330 SUBR F4$OUT,OUT BINARY OUTPUT 0331 SUBR F4$OER,OERR OUTPUT DEVICE CODE ERROR 0332 SUBR F4$SYM,SYM SYMBOLIC OUTPUT 0333 SUBR F4$LER,LERR LIST DEVICE CODE ERROR 0334 SUBR F4$END,END CLOSE I/O DEVICES 0335 SUBR F4$FIN,FIN FINISH HALT 0336 SUBR F4$KEY,KEY KEYWORD 0337 SUBR G$NA DEVICE NOT AVAILABLE 0338 * 0339 * 0340 EXT LIBF LIBRARY FLAG 0341 * 0342 * 0343 CF5 H316 AND H516 0344 REL RELOCATABLE 0345 * 0346 * 0347 * INITIALISE 0348 * 0349 00000 0 000000 INT DAC ** RETURN ADDRESS 0350 00001 0 10 00433 JST INTC SPLIT KEYWORD
* NAME: F4-IOS DOC 41285251000 REV C PAGE 8

0351 00002 0 10 00452 JST PTLR TEST PAPER TAPE - PUNCH LEADER 0352 00003 0 10 00000 CALL G$DR DUMMY ROUTINE 0353 00004 0 15 00522 STX X SAVE INDEX REGISTER 0354 * 0355 * SET UP COMPLER CROSS SECTOR REFERENCE TABLE ('100 - '112) 0356 00005 0 06 00662 ADD ='37774 INDEX AND SUBTRACT 4 0357 00006 0 04 00512 STA TEMP TEMP = X-SECTOR REFERENCE TABLE DATA 0358 00007 0 02 00661 LDA =-10 NUMBER OF LOOPS 0359 00010 0 04 00517 STA WORK WORK = LOOP COUNTER 0360 00011 0 35 00660 LDX ='100 LOCATION POINTER 0361 00012 0 02 00512 AGEN LDA TEMP X-SECTOR REFERENCE TABLE DATA 0362 00013 -0 04 00000 STA* 0 VIA LOCATION POINTER 0363 00014 0 12 00512 IRS TEMP TALLY TABLE DATA 0364 00015 0 12 00000 IRS 0 TALLY LOCATION COUNTER 0365 00016 0 12 00517 IRS WORK TALLY LOOP COUNTER 0366 00017 0 01 00012 JMP AGEN LOOP 0367 * 0368 * COMPUTE SIZE OF DATA POOL 0369 00020 0 02 00522 LDA X MINUS NUMBER OF LOCATIONS TO TOP OF CORE 0370 00021 140407 TCA GET POSITIVE NUMBER 0371 00022 0 07 00657 SUB =3 0372 00023 0 04 00113 STA '113 '113 = SIZE OF COMPILER DATA POOL 0373 * 0374 00024 140040 CRA CLEAR- 0375 00025 0 04 00514 STA LINE -LINE COUNT 0376 00026 0 12 00515 IRS HEAD SET LIST HEADING INDICATOR 0377 00027 -0 01 00000 JMP* INT RETURN 0378 * 0379 * 0380 * SYMBOLIC INPUT 0381 * 0382 00030 0 000000 IN DAC ** RETURN ADDRESS 0383 00031 100004 SR3 0384 00032 0 10 00420 JST CKEY SS3 SET - HALT AND ALLOW NEW KEYWORD 0385 * 0386 * IF INPUT AND LISTING ARE ON THE ASR OUTPUT CR/LF 0387 00033 0 02 00507 LDA IPUT INPUT DEVICE CODE 0388 00034 0 05 00656 ERA =1 TEST FOR ASR 0389 00035 100040 SZE * 0390 00036 0 01 00045 JMP IN1 NO - CR/LF NOT REQUIRED 0391 00037 0 02 00510 LDA LIST LIST DEVICE CODE 0392 00040 0 05 00656 ERA =1 TEST FOR ASR 0393 00041 100040 SZE SKIP IF LIST AND INPUT ON ASR 0394 00042 0 01 00045 JMP IN1 NO - CR/LF NOT REQUIRED 0395 00043 0 10 00000 CALL O$AC OUTPUT CR ON ASR 0396 00044 0 10 00000 CALL O$AF OUTPUT LF ON ASR 0397 * 0398 00045 -0 02 00030 IN1 LDA* IN BUFFER ADDRESS FOR- 0399 00046 0 04 00072 STA IASR+1 -ASR 0400 00047 0 04 00076 STA ICDR+1 -CARD READER
* NAME: F4-IOS DOC 41285251000 REV C PAGE 9

0401 00050 0 04 00102 STA IPTR+1 -PAPERTAPE READER 0402 00051 0 04 00106 STA IMAG+1 -MAGNETIC TAPE 0403 00052 0 04 00115 STA ICON+1 -CONVERSION TO ISO CODE 0404 00053 0 04 00513 STA EXPL INPUT COMPILER BUFFER ADDRESS 0405 00054 0 04 00517 STA WORK WORK 0406 00055 0 02 00507 INC LDA IPUT 0407 00056 0 10 00464 JST SW DEVICE SWITCH 0408 00057 0 01 00064 JMP IERR INPUT DEVICE CODE ERROR 0409 00060 0 01 00071 JMP IASR INPUT - ASR 0410 00061 0 01 00075 JMP ICDR INPUT - CARD READER 0411 00062 0 01 00101 JMP IPTR INPUT - PAPER TAPE READER 0412 00063 0 01 00105 JMP IMAG INPUT - MAGNETIC TAPE 0413 00064 BSS 0 INPUT DEVICE CODE ERROR 0414 * 0415 * INPUT DEVICE CODE ERROR 0416 00064 0 35 00653 IERR LDX =-5 NUMBER OF WORDS 0417 00065 0 10 00000 CALL O$ALL ASR LINE LIST 0418 00066 0 000627 DAC ERRM ERROR MESSAGE BUFFER ADDRESS 0419 00067 0 10 00420 JST CKEY CHANGE KEYWORD 0420 00070 0 01 00055 JMP INC REATTEMPT INPUT 0421 * 0422 * INPUT - ASR 0423 00071 0 10 00000 IASR CALL I$AA INPUT RECORD 0424 00072 0 000000 DAC ** BUFFER ADDRESS POINTER 0425 00073 0 01 00071 JMP IASR END OF FILE, READ NEXT RECORD 0426 00074 0 01 00117 JMP IRET INPUT RETURN 0427 * 0428 * INPUT - CARD READER 0429 00075 0 10 00000 ICDR CALL I$CA INPUT RECORD 0430 00076 0 000000 DAC ** BUFFER ADDRESS POINTER 0431 00077 0 01 00075 JMP ICDR END OF FILE, READ NEXT RECORD 0432 00100 0 01 00117 JMP IRET INPUT RETURN 0433 * 0434 * INPUT - PAPER TAPE READER 0435 00101 0 10 00000 IPTR CALL I$PA INPUT RECORD 0436 00102 0 000000 DAC ** BUFFER ADDRESS POINTER 0437 00103 0 01 00101 JMP IPTR END OF FILE, READ NEXT RECORD 0438 00104 0 01 00117 JMP IRET INPUT RETURN 0439 * 0440 * INPUT - MAGNETIC TAPE 0441 00105 0 10 00000 IMAG CALL I$MA INPUT RECORD 0442 00106 0 000000 DAC ** BUFFER ADDRESS POINTER 0443 00107 000050 DEC 40 WORD COUNT 0444 00110 000001 DEC 1 UNIT NUMBER 0445 00111 101000 NOP UNREADABLE RECORD 0446 00112 0 01 00473 JMP MTER END OF TAPE 0447 00113 0 01 00105 JMP IMAG END OF FILE, READ NEXT RECORD 0448 00114 0 10 00000 ICON CALL C$6TO8 CONVERT TO ISO CODE 0449 00115 0 000000 DAC ** BUFFER ADDRESS POINTER 0450 00116 000050 DEC 40 WORLD COUNT
* NAME: F4-IOS DOC 41285251000 REV C PAGE 10

0451 * 0452 * INPUT RETURN PROCEDURES 0453 00117 0 02 00514 IRET LDA LINE INPUT RETURN PROCEDURES 0454 00120 0 06 00656 ADD =1 INCREMENT LINE COUNT 0455 00121 140100 SSP MAXIMUM LINE COUNT 32767 0456 00122 0 04 00514 STA LINE STORE LINE COUNT 0457 00123 -0 02 00517 LDA* WORK FIRST WORD OF BUFFER 0458 00124 0400 70 LRL 8 GET FIRST CHARACTER 0459 00125 0 07 00654 SUB ='244 DOLLAR 0460 00126 100040 SZE IF DOLLAR 0461 00127 0 01 00132 JMP *+3 NOT END OF FILE 0462 00130 0 02 00655 LDA ='122260 $0 0463 00131 -0 04 00517 STA* WORK TO FIRST BUFFER WORD 0464 00132 0 12 00030 IRS IN SET RETURN ADDRESS 0465 00133 -0 01 00030 JMP* IN RETURN 0466 * 0467 * 0468 * BINARY OUTPUT 0469 * 0470 00134 0 000000 OUT DAC ** RETURN ADDRESS 0471 00135 0 04 00516 STA BUFF LAST WORD LOCATION OUTPUT BUFFER(INDEXED)+1 0472 00136 0 02 00000 LDA 0 LOAD INDEX 0473 00137 140407 TCA TWO'S COMPLEMENT 0474 00140 0 04 00525 STA OBUF STORE NO WORDS TO BE OUTPUT 0475 00141 0 04 00176 STA OMAG+2 0476 00142 0 06 00523 ADD OBAD ADD WORD BUFFER START ADDRESS 0477 00143 0 06 00652 ADD ='40001 ADD ONE AND INDEX 0478 00144 0 04 00517 STA WORK STORE IN WORKING LOCATION 0479 00145 -0 02 00516 OBNW LDA* BUFF TRANSFER TO OUTPUT BUFFER 0480 00146 -0 04 00517 STA* WORK -WORDS TO BE OUTPUT 0481 00147 0 12 00000 IRS 0 TEST LAST WORD 0482 00150 0 01 00145 JMP OBNW NEXT WORD 0483 00151 0 02 00511 OUTD LDA OPUT 0484 00152 0 10 00464 JST SW DEVICE SWITCH 0485 00153 -0 01 00134 JMP* OUT NO OUTPUT 0486 00154 0 01 00166 JMP OPTP OUTPUT - PAPERTAPE PUNCH 0487 00155 0 01 00171 JMP OASR OUTPUT - ASR 0488 00156 0 01 00160 JMP OERR OUTPUT DEVICE CODE ERROR 0489 00157 0 01 00174 JMP OMAG OUTPUT - MAGNETIC TAPE 0490 00160 BSS 0 OUTPUT DEVICE CODE ERROR 0491 * 0492 * OUTPUT DEVICE CODE ERROR 0493 00160 0 35 00653 OERR LDX =-5 NUMBER OF WORDS 0494 00161 0 10 00000 CALL O$ALL ASR LINE LIST 0495 00162 0 000627 DAC ERRM ERROR MESSAGE BUFFER ADDRESS 0496 00163 0 10 00420 JST CKEY CHANGE KEYWORD 0497 00164 0 10 00452 JST PTLR TEST PAPER TAPE - PUNCH LEADER 0498 00165 0 01 00151 JMP OUTD REATTEMPT OUTPUT 0499 * 0500 * OUTPUT - PAPER TAPE PUNCH
* NAME: F4-IOS DOC 41285251000 REV C PAGE 11

0501 00166 0 10 00000 OPTP CALL O$PB OUTPUT RECORD 0502 00167 0 000525 DAC OBUF ADDRESS OUTPUT BUFFER 0503 00170 -0 01 00134 JMP* OUT OUTPUT RETURN 0504 * 0505 * OUTPUT - ASR 0506 00171 0 10 00000 OASR CALL O$AB OUTPUT RECORD 0507 00172 0 000525 DAC OBUF ADDRESS OUTPUT BUFFER 0508 00173 -0 01 00134 JMP* OUT OUTPUT RETURN 0509 * 0510 * OUTPUT - MAGNETIC TAPE 0511 00174 0 10 00000 OMAG CALL O$MC OUTPUT RECORD (3 CH/WORD) 0512 00175 0 000526 DAC OBUF+1 0513 00176 0 000000 DAC ** WORD COUNT 0514 00177 000002 DEC 2 UNIT NUMBER 0515 00200 0 01 00473 JMP MTER ENF OF TAPE 0516 00201 -0 01 00134 JMP* OUT OUTPUT RETURN 0517 * 0518 * 0519 * SYMBOLIC OUTPUT 0520 * 0521 00202 0 000000 SYM DAC ** RETURN ADDRESS 0522 00203 0 02 00651 LDA =A TWO SPACES 0523 00204 0 04 00525 STA OBUF CLEAR BUFFER- 0524 00205 0 04 00526 STA OBUF+1 -LINE COUNT- 0525 00206 0 04 00527 STA OBUF+2 -AREA 0526 00207 -0 02 00202 LDA* SYM STORE END ADDRESS OF- 0527 00210 0 06 00650 ADD ='40050 -COMPILER BUFFER AREA 0528 00211 0 04 00516 STA BUFF -(INDEXED) + 1 0529 00212 0 35 00647 LDX =-40 SET INDEX 0530 00213 -0 02 00516 SYMB LDA* BUFF FILL OUTPUT BUFFER 0531 00214 1 04 00600 STA OBUF+43,1 0532 00215 0 12 00000 IRS 0 TEST TRANSFER COMPLETE 0533 00216 0 01 00213 JMP SYMB FETCH NEXT WORD 0534 * 0535 * TEST HEADING TO BE INITIALISED 0536 00217 0 02 00515 SYMH LDA HEAD TEST HEADING REQUIRED 0537 00220 101040 SNZ YES 0538 00221 0 01 00246 JMP LCAL NO 0539 00222 -0 02 00202 LDA* SYM O/P BUFFER ADDRESS 0540 00223 0 05 00513 ERA EXPL COMPARE INPUT BUFFER ADDRESS 0541 00224 100040 SZE SOURCE LINE OUTPUT IF ZERO 0542 00225 0 01 00323 JMP HDC IGNORE FIRST BLANK LINE, EXPANDED LISTING 0543 * 0544 * HEADING REQUIRED - SELECT DEVICE 0545 00226 0 02 00510 LDA LIST LIST DEVICE CODE 0546 00227 0 10 00464 JST SW DEVICE SWTCH 0547 00230 0 01 00246 JMP LCAL NO LISTING REQUIRED 0548 00231 0 01 00236 JMP HASR HEADING - ASR 0549 00232 0 01 00241 JMP HLPR HEADING - LINE PRINTER 0550 00233 0 01 00244 JMP HPTP HEADING - PAPER TAPE PUNCH
* NAME: F4-IOS DOC 41285251000 REV C PAGE 12

0551 00234 0 01 00246 JMP LCAL 0552 00235 0 01 00273 JMP LERR LIST DEVICE CODE ERROR 0553 * 0554 00236 0 10 00000 HASR CALL O$HH INITIALISE ASK HEADING 0555 00237 0 000525 DAC OBUF BUFFER ADDRESS 0556 00240 0 01 00246 JMP LCAL 0557 * 0558 00241 0 10 00000 HLPR CALL O$LH INITIALISE LINE PRINTER HEADING 0559 00242 0 000525 DAC OBUF BUFFER ADDRESS 0560 00243 0 01 00246 JMP LCAL 0561 * 0562 00244 0 10 00000 HPTP CALL O$PH INITIALISE PAPER TAPE PUNCH HEADING 0563 00245 0 000525 DAC OBUF BUFFER ADDRESS 0564 * 0565 * LINE COUNT 0566 00246 -0 02 00202 LCAL LDA* SYM TEST LINE COUNT REQUIRED 0567 00247 0 05 00513 ERA EXPL SOURCE LINE? 0568 00250 100040 SZE YES 0569 00251 0 01 00264 JMP LSTD NO = JUMP TO TEST LISTING DEVICE 0570 00252 0 02 00524 LDA TP TABLE POINTER 0571 00253 0 04 00517 STA WORK TABLE POINTER IN WORKING LOCATION 0572 00254 0 02 00514 LDA LINE 0573 00255 0 04 00520 STA REST STORE LINE COUNT 0574 00256 0 12 00521 IRS ZIND SET LEADING ZERO INDICATOR 0575 00257 0 10 00325 JST DIVD DIVIDE ROUTINE 0576 00260 0 10 00325 JST DIVD 0577 00261 0 10 00325 JST DIVD 0578 00262 0 10 00325 JST DIVD 0579 00263 0 10 00325 JST DIVD 0580 * 0581 * TEST LISTING DEVICE 0582 00264 0 02 00510 LSTD LDA LIST 0583 00265 0 10 00464 JST SW SWITCH FOR LIST DEVICE 0584 00266 0 01 00321 JMP LRET NONE 0585 00267 0 01 00300 JMP LASR LIST - ASR 0586 00270 0 01 00303 JMP LLPR LIST - LINE PRINTER 0587 00271 0 01 00306 JMP LHSP LIST - PAPER TAPE PUNCH 0588 00272 0 01 00311 JMP LMAG LIST - MAGNETIC TAPE 0589 00273 BSS 0 LIST DEVICE CODE ERROR 0590 * 0591 * LIST DEVICE CODE ERROR 0592 00273 0 35 00653 LERR LDX =-5 NUMBER OF WORDS 0593 00274 0 10 00000 CALL O$ALL ASR LINE LIST 0594 00275 0 000627 DAC ERRM ERROR MESSAGE BUFFER ADDRESS 0595 00276 0 10 00420 JST CKEY CHANGE KEYWORD 0596 00277 0 01 00217 JMP SYMH REATTEMPT LISTING 0597 * 0598 * LIST - ASR 0599 00300 0 10 00000 LASR CALL O$LL ASR LIST RECORD 0600 00301 0 000525 DAC OBUF BUFFER ADDRESS
* NAME: F4-IOS DOC 41285251000 REV C PAGE 13

0601 00302 0 01 00321 JMP LRET LIST RETURN 0602 * 0603 * LIST - LINE PRINTER 0604 00303 0 10 00000 LLPR CALL O$LA LIST RECORD 0605 00304 0 000525 DAC OBUF BUFFER ADDRESS 0606 00305 0 01 00321 JMP LRET LIST RETURN 0607 * 0608 * LIST - PAPER TAPE PUNCH 0609 00306 0 10 00000 LHSP CALL O$PL PAPER TAPE PUNCH LIST 0610 00307 0 000525 DAC OBUF BUFFER ADDRESS 0611 00310 0 01 00321 JMP LRET LIST RETURN 0612 * 0613 * LIST - MAGNETIC TAPE 0614 00311 0 10 00000 LMAG CALL C$8TO6 CONVERT TO 6-BIT CODE 0615 00312 0 000525 DAC OBUF BUFFER ADDRESS 0616 00313 000050 DEC 40 WORD COUNT 0617 * 0618 00314 0 10 00000 CALL O$MA LIST RECORD 0619 00315 0 000525 DAC OBUF BUFFER ADDRESS 0620 00316 000050 DEC 40 WORD COUNT 0621 00317 000002 DEC 2 UNIT NUMBER 0622 00320 0 01 00473 JMP MTER END OF TAPE 0623 * 0624 * LIST RETURN 0625 00321 140040 LRET CRA CLEAR: 0626 00322 0 04 00515 STA HEAD LIST HEADING INDICATOR 0627 00323 0 12 00202 HDC IRS SYM SET RETURN ADDRESS 0628 00324 -0 01 00202 JMP* SYM RETURN 0629 * 0630 * DIVIDE ROUTINE FOR LINE COUNT 0631 00325 0 000000 DIVD DAC ** RETURN ADDRESS 0632 00326 0 35 00646 LDX =0 CLEAR INDEX 0633 00327 0 02 00520 LDA REST REMAINDER OF LINE COUNT 0634 00330 -0 07 00517 LOOP SUB* WORK SUBTRACT NEXT TABLE ENTRY 0635 00331 100400 SPL TEST PLUS 0636 00332 0 01 00336 JMP DIVE NO 0637 00333 0 04 00520 STA REST STORE REMAINDER 0638 00334 0 12 00000 IRS 0 INCREMENT INDEX 0639 00335 0 01 00330 JMP LOOP SUBTRACT AGAIN 0640 00336 0 12 00517 DIVE IRS WORK INCREMENT TABLE ENTRY POINTER 0641 00337 0 02 00524 LDA TP TABLE POINTER 0642 00340 0 07 00517 SUB WORK MINUS (LINE NO. CHARACTER+1) 0643 00341 0 04 00522 STA X STORE IN SUPPLEMENTARY INDEX 0644 00342 0 06 00656 ADD =1 MINUS LINE NUMBER CHARACTER 0645 00343 140407 TCA PLUS LINE NUMBER CHARACTER 0646 00344 0404 77 LGR 1 DIVIDE BY 2 0647 00345 0 13 00000 IMA 0 INTERCHANGE A AND X REGISTERS 0648 00346 101040 SNZ TEST CHARACTER ZERO 0649 00347 0 01 00361 JMP ZERO YES 0650 00350 0 06 00645 DIVC ADD ='20 DIFFERENCE ISO CODES FOR ZERO AND SPACE
* NAME: F4-IOS DOC 41285251000 REV C PAGE 14

0651 00351 0416 70 ALR 8 ROTATE 8 LEFT 0652 00352 0 12 00522 IRS X TEST CHARACTER POSITIONED 0653 00353 0 01 00351 JMP *-2 SHIFT AGAIN 0654 00354 1 06 00525 ADD OBUF,1 CHANGE REQUIRED CHARACTER- 0655 00355 1 04 00525 STA OBUF,1 -FROM SPACE TO DECIMAL NUMBER 0656 00356 140040 CRA 0657 00357 0 04 00521 STA ZIND CLEAR LEADING ZERO INDICATOR 0658 00360 -0 01 00325 JMP* DIVD RETURN 0659 00361 0 02 00521 ZERO LDA ZIND TEST WHETHER LEADING CHARACTER 0660 00362 100040 SZE 0661 00363 -0 01 00325 JMP* DIVD YES - LEAVE SPACE - RETURN 0662 00364 0 01 00350 JMP DIVC NO - CHANGE SPACE TO ZERO 0663 * 0664 * 0665 * CLOSE I/O DEVICES 0666 * 0667 00365 0 000000 END DAC ** RETURN ADDRESS 0668 00366 0 02 00511 LDA OPUT LIST DEVICE CODE 0669 00367 0 10 00452 JST PTLR PUNCH TRAILER IF APPLICABLE 0670 * 0671 00370 0 02 00511 LDA OPUT TEST OUTPUT DEVICE 0672 00371 0 05 00656 ERA =1 TEST PUNCH 0673 00372 101040 SNZ 0674 00373 0 01 00377 JMP POFF POWER PUNCH OFF 0675 00374 0 02 00510 LDA LIST LIST DEVICE CODE 0676 00375 0 05 00657 ERA =3 TEST PUNCH 0677 00376 101040 SNZ 0678 00377 0 10 00000 POFF CALL O$POFF PAPER TAPE PUNCH POWER OFF 0679 * 0680 00400 0 02 00511 LDA OPUT OUTPUT DEVICE CODE 0681 00401 0 05 00644 ERA =4 TEST MAGNETIC TAPE 0682 00402 101040 SNZ 0683 00403 0 01 00410 JMP EMAG YES 0684 00404 0 02 00510 LDA LIST TEST LISTING DEVICE 0685 00405 0 05 00644 ERA =4 TEST MAGNETIC TAPE LISTING 0686 00406 100040 SZE 0687 00407 0 01 00412 JMP ENDC NO 0688 00410 0 10 00000 EMAG CALL O$ME END OF FILE - MAGNETIC TAPE 0689 00411 000002 DEC 2 0690 00412 0 35 00643 ENDC LDX =-6 NUMBER OF WORDS 0691 00413 0 10 00000 CALL O$ALL ASR LINE LIST 0692 00414 0 000621 DAC ENDM MESSAGE BUFFER ADDRESS 0693 00415 0 10 00420 JST CKEY CHANGE KEYWORD 0694 00416 0 02 00501 LDA KEY KEYWORD 0695 00417 -0 01 00365 JMP* END RETURN 0696 * 0697 * 0698 * FINISH HALT 0699 * 0700 * CHANGE KEYWORD
* NAME: F4-IOS DOC 41285251000 REV C PAGE 15

0701 00420 0 000000 CKEY DAC ** RETURN ADDRESS 0702 00421 0 02 00501 LDA KEY DISPLAY KEYWORD 0703 00422 000000 FIN HLT HALT 0704 00423 0 10 00433 JST INTC REINITIALISE 0705 00424 -0 01 00420 JMP* CKEY RETURN 0706 * 0707 * 0708 * DEVICE NOT AVAILABLE ROUTINE (I/O ROUTINE NOT LOADED) 0709 * 0710 00425 0 000000 G$NA DAC ** DEVICE NOT AVAILABLE 0711 00426 0 35 00642 LDX =-2 NUMBER OF WORDS 0712 00427 0 10 00000 CALL O$ALL ASR LINE LIST 0713 00430 0 000634 DAC ERNA BUFFER ADDRESS 0714 00431 0 10 00420 JST CKEY CHANGE KEYWORD 0715 00432 0 01 01000 JMP '1000 RESTART COMPILATION 0716 * 0717 * 0718 * SUBROUTINES 0719 * 0720 * SPLIT KEYWORD 0721 00433 0 000000 INTC DAC ** RETURN ADDRESS 0722 00434 100040 SZE SKIP IF KEYWORD NOT INPUT 0723 00435 0 04 00501 STA KEY KEYWORD 0724 00436 0 02 00501 LDA KEY KEYWORD 0725 00437 0 04 00000 STA LIBF LIBRARY FLAG 0726 00440 0400 72 LRL 6 SHIFT 6 RIGHT 0727 00441 0 03 00641 ANA =7 ISOLATE INPUT DEVICE CODE 0728 00442 0 04 00507 STA IPUT INPUT DEVICE CODE 0729 00443 140040 CRA CLEAR A 0730 00444 0410 75 LLL 3 SHIFT 3 LEFT 0731 00445 0 04 00510 STA LIST LIST DEVICE CODE 0732 00446 140040 CRA CLEAR A 0733 00447 0410 75 LLL 3 SHIFT 3 LEFT 0734 00450 0 04 00511 STA OPUT OUTPUT DEVICE CODE 0735 00451 -0 01 00433 JMP* INTC RETURN 0736 * 0737 * TEST PAPER TAPE - PUNCH LEADER 0738 00452 0 000000 PTLR DAC ** RETURN ADDRESS 0739 00453 0 05 00656 ERA =1 TEST OUTPUT DEVICE 0740 00454 101040 SNZ NOT PAPERTAPE PUNCH 0741 00455 0 01 00462 JMP PLDR PUNCH LEADER 0742 00456 0 02 00510 LDA LIST LIST DEVICE CODE 0743 00457 0 05 00657 ERA =3 PAPER TAPE PUNCH? 0744 00460 100040 SZE 0745 00461 -0 01 00452 JMP* PTLR RETURN 0746 00462 0 10 00000 PLDR CALL O$PLDR PUNCH LEADER 0747 00463 -0 01 00452 JMP* PTLR RETURN 0748 * 0749 * DEVICE SWITCH 0750 00464 0 000000 SW DAC ** RETURN ADDRESS
* NAME: F4-IOS DOC 41285251000 REV C PAGE 16

0751 00465 0 11 00644 CAS =4 IF GREATER THAN 4.. 0752 00466 0 02 00640 LDA =5 MAKE IT EQUAL 5 0753 00467 101000 NOP EQUAL TO 4 0754 00470 0 06 00464 ADD SW ADD RETURN ADDRESS TO DEVICE CODE 0755 00471 0 04 00464 STA SW STORE AMENDED RETURN ADDRESS 0756 00472 -0 01 00464 JMP* SW RETURN 0757 * 0758 * REPORT MAGNETIC TAPE ERROR 0759 00473 0 35 00642 MTER LDX =-2 NUMBER OF WORDS 0760 00474 0 10 00000 CALL O$ALL ASR LINE LIST 0761 00475 0 000636 DAC MT MT ERROR BUFFER ADDRESS 0762 00476 0 10 00420 JST CKEY CHANGE KEYWORD 0763 00477 0 02 00501 LDA KEY KEYWORD 0764 00500 0 01 01000 JMP '1000 RESTART 0765 * 0766 * 0767 * KEYWORD 0768 * 0769 00501 020311 KEY OCT 20311 KEYWORD INITIALLY '20311 0770 * 0771 * 0772 * CONSTANTS AND VARIABLES 0773 * 0774 00502 023420 DECS DEC 10000 POWERS OF TEN 0775 00503 001750 DEC 1000 0776 00504 000144 DEC 100 0777 00505 000012 DEC 10 0778 00506 000001 DEC 1 0779 * 0780 00507 000000 IPUT BSZ 1 INPUT DEVICE CODE 0781 00510 000000 LIST BSZ 1 LIST DEVICE CODE 0782 00511 000000 OPUT BSZ 1 OUTPUT DEVICE CODE 0783 * 0784 00512 000000 TEMP BSZ 1 TEMPORARY STORAGE LOCATION 0785 00513 000000 EXPL BSZ 1 I/P BUFFER ADDRESS TEST SOURCE LINE O/P 0786 00514 000000 LINE BSZ 1 LINE COUNTER 0787 00515 000000 HEAD BSZ 1 LIST HEADING INDICATOR 0788 00516 000000 BUFF BSZ 1 BUFFER ADDRESS 0789 00517 000000 WORK BSZ 1 WORK LOCATION 0790 00520 000000 REST BSZ 1 REMAINDER 0791 00521 000000 ZIND BSZ 1 ZERO INDICATOR 0792 00522 000000 X BSZ 1 SUPPLEMENTARY X-REGISTER 0793 * 0794 00523 0 000525 OBAD DAC OBUF OUTPUT BUFFER ADDRESS 0795 00524 0 000502 TP DAC DECS TABLE POINTER 0796 * 0797 00525 000000 OBUF BSZ 40 OUTPUT/LIST BUFFER 0798 00575 120240 BCI 20, 00576 120240 00577 120240
* NAME: F4-IOS DOC 41285251000 REV C PAGE 17

00600 120240 00601 120240 00602 120240 00603 120240 00604 120240 00605 120240 00606 120240 00607 120240 00610 120240 00611 120240 00612 120240 00613 120240 00614 120240 00615 120240 00616 120240 00617 120240 00620 120240 0799 * 0800 00621 106612 ENDM OCT 106612 CR/LF 0801 00622 142716 BCI 5,END OF JOB 00623 142240 00624 147706 00625 120312 00626 147702 0802 * 0803 00627 106612 ERRM OCT 106612 CR/LF 0804 00630 142305 BCI 4,DEVICE? DEVICE ERROR MESSAGE 00631 153311 00632 141705 00633 137640 0805 * 0806 00634 106612 ERNA OCT 106612 CR/LF 0807 00635 147301 BCI 1,NA NA ERROR MESSAGE 0808 * 0809 00636 106612 MT OCT 106612 CR/LF 0810 00637 146724 BCI 1,MT MT ERROR MESSAGE 0811 * 0812 * 0813 00640 000005 FIN LITERALS 00641 000007 00642 177776 00643 177772 00644 000004 00645 000020 00646 000000 00647 177730 00650 040050 00651 120240 00652 040001 00653 177773
* NAME: F4-IOS DOC 41285251000 REV C PAGE 18

00654 000244 00655 122260 00656 000001 00657 000003 00660 000100 00661 177766 00662 037774 0814 * 0815 * 0816 END END OF F4-IOS 11 APR 73 AGEN 000012 BUFF 000516 CKEY 000420 DECS 000502 DIVC 000350 DIVD 000325 DIVE 000336 EMAG 000410 END 000365 ENDC 000412 ENDM 000621 ERNA 000634 ERRM 000627 EXPL 000513 FIN 000422 G$NA 000425 HASR 000236 HDC 000323 HEAD 000515 HLPR 000241 HPTP 000244 IASR 000071 ICDR 000075 ICON 000114 IERR 000064 IMAG 000105 IN 000030 IN1 000045 INC 000055 INT 000000 INTC 000433 IPTR 000101 IPUT 000507 IRET 000117 KEY 000501 LASR 000300 LCAL 000246 LERR 000273 LHSP 000306 LIBF 000000E LINE 000514 LIST 000510 LLPR 000303 LMAG 000311 LOOP 000330 LRET 000321 LSTD 000264 MT 000636 MTER 000473 OASR 000171 OBAD 000523 OBNW 000145 OBUF 000525 OERR 000160 OMAG 000174 OPTP 000166 OPUT 000511 OUT 000134 OUTD 000151 PLDR 000462 POFF 000377 PTLR 000452 REST 000520 SW 000464 SYM 000202 SYMB 000213 SYMH 000217 TEMP 000512 TP 000524 WORK 000517 X 000522 ZERO 000361 ZIND 000521 0000 WARNING OR ERROR FLAGS DAP-16 MOD 2 REV. C 01-26-71
Previous File   Multiple Pages   Next File