//UTILTY / COPYRIGHT 1968, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. / UTILITY SUBROUTINE PACKAGE / VERSION UTILTY.V07 (JANUARY 7, 1969) / /***** PATCHED 8/3/71. (PATCH # LIB8 (PS/8) 2, MARCH 1971.) / / ENTRY OPEN /INITIALIZING AND FLAG SETTING ROUTINE ENTRY GENIO ENTRY EXIT /EXIT TO DISK MONITOR SYSTEM ENTRY ERROR ENTRY CKIO /USELESS ROUTINE OPDEF KRS 6034 OPDEF KCC 6032 OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMSI 4400 OPDEF JMPI 5400 /LINE PRINTER IOT'S OPDEF LLB 6666 OPDEF LSF 6661 LAP U17, 17 /*** MUST BE FIRST LOC IN PAGE *** IOER, 1117 0522 /"IOER" ERROR GENIO, BLOCK 2 /GENERAL INPUT/OUTPUT ROUTINE DCA 7 /SAVE ENTRY AC GENLP, TAD 7 RTL RTL RAL U200, AND U17 TAD JMPITB DCA DSPACH /INDEX JUMP TABLE BY DEVICE NUMBER TAD U200 KRS TAD UM203 SNA CLA KSF /CHECK FOR ^C ON TELETYPE DSPACH, NOP /NO ^C - DISPATCH TO I/O ROUTINE CALL 0,EXIT JMPITB, JMPI DEVTAB DEVTAB, TTYOUT HSPOUT LPTOUT GENOUT TTYIN HSRIN TAPIN GENIN TTYFUJ /FUDGE - SEE TELETYPE INPUT ROUTINE IOERR IOERR IOERR IOERR IOERR IOERR IOERR HSPOUT, PSF JMP GENLP TAD 7 PLS GENRTN, CLA RETRN GENIO TTYIN, KSF JMP GENLP CLA CLL CML RTR /****DEPENDS ON NUMBER OF DEVICES **** JMP GENLP /TEST FOR ^C ONE LAST TIME HSRIN, RSF JMP GENLP RRB RFC JMP GENRTN# UM203, -203 / / BUFFERED LINC TAPE UNIT SPECIFIED IN I0PEN CALL. G=0; H=1. / TABS EXPANDED. / TAPIN, TAD TAB1 SZA CLA /EXPANDING TABS? JMP TA1 /YES TA3, JMS GETCH DCA 7 /STORE CHR FOR WHILE TAD 7 TAD MLF SNA /CR? JMP TA2 /YES IAC SNA CLA /TAB? JMP TA1 /YES TAD 7 /RESTORE CHR TA4, INC TAB2 /INC CHR SENT COUNT JMP GENRTN# /RETURN WITH CHR IN AC TA1, TAD TAB2 /SENT CHR COUNT CMA /COUNT FROM RIGHT END AND (7 /LAST 3 BITS DCA TAB1 /TAB FLAG, 0=NO MORE TABING TAD (240 JMP TA4 /RETURN WITH BLANK IN AC TA2, DCA TAB2 /CR-SET CHR SENT COUNT TO ZERO JMP TA3 /GET NEXT CHR TAB1, 0 /-NUMBER OF BLANKS TO EXPAND TAB2, 0 /NUMBER OF CHRS RETURNED ON LINE MLF, -212 PAGE U377, 377 /MUST BE FIRST LOC IN THIS PAGE GENIN, 6201 TADI IHNDLR SNA CLA /OPEN INPUT FILE? JMP IOERR /NO 6202 JMS I FICHAR /GET A CHAR JMP IOERR /INPUT ERROR UU200, AND U377 GRTN2, RETRN GENIO GENOUT, 6201 TADI OHNDLR SNA CLA /OPEN OUTPUT FILE? JMP IOERR /NO 6202 TAD 7 /GET CHAR TO BE OUTPUT AND U377 JMS I FOCHAR /PUT A CHARACTER JMP IOERR /OUTPUT ERROR JMP GRTN2 IHNDLR, 122 /***ALL THESE LOCATIONS ARE VERY VOLATILE!! *** FICHAR, 606 /******* OHNDLR, 121 /******* FOCHAR, 651 /****************** / / INITIALIZING SUBROUTINE CALLED BY FORTRAN / CLEARS FLOATING AC AND SETS FLAGS / OPEN, BLOCK 2 TLS /INIT TTY LLB /INITIALIZE LPT KCC /CLEAR KEYBOARD FLAG (AND AC) PLS RFC CALL 0,CLEAR 6201 DCAI IHNDLR DCAI OHNDLR /ZERO DEVICE-INDEPENDENT IO FLAGS RETRN OPEN LPTOUT, LSF JMP GENLP TAD 7 ISZ PFSTCH JMP NOFST TAD (-1262 /LOOK FOR CONTROL CHARS IN PRINT POSITION 1 CLL IAC IAC SNL JMP DCACH CLL RAL TAD (212 NOFST, LLB TAD (-1212 DCACH, SNA CLA /IF LINE FEED CMA /SET "FIRST CHAR" SWITCH ON DCA PFSTCH JMP GRTN2 PFSTCH, -1 TTYFUJ, TAD UU200 KRS DCA 7 /SAVE KEYBOARD CHAR KCC /CLEAR FLAG TAD 7 TAD (-212 SZA CLA JMS TYPE TAD 7 TAD (-215 SZA CLA JMP TYRTN CLA CLL CMA RTL JMS TYPE TYRTN, TAD 7 JMP GRTN2 /RETURN WITH CHAR IN AC TYPE, 0 TAD 7 TYPELP, TSF JMP TYPELP TLS CLA JMPI TYPE TTYOUT, JMS TYPE JMP GRTN2 IOERR, CALL 1,ERROR ARG IOER PAGE PMESG, MESG MESG, 7777 7777 4005 2222 1722 4001 2440 1417 0340 LIT7, 0007 ERROR, BLOCK 2 /ERROR PROCESSOR U7600, 7600 TAD ERROR DCA TEM1 TEM1, NOP /SET DATA FIELD OF "CALL ERROR" TADI ERROR# DCA TEM3 INC ERROR# E60, CLA CMA CML /CML IS WINDOW DRESSING TADI ERROR# DCA 10 INC ERROR# TEM3, NOP /DATA FIELD OF MESSAGE&ENTRY POINT DCA CKIO /ZERO "FATAL ERROR" FLAG TADI 10 RAL SZL /NON-FATAL BIT ON? ISZ CKIO /YES - SET "FATAL FLAG" TO NON-FATAL CLL RAR /STRIP NON-FATAL BIT FROM MESSAGE DCA MESG TADI 10 /SECOND WORD OF MESSAGE DCA MESG# TADI 10 DCA TEM1 TADI 10 DCA TEM3 /CALLING ADDRESS TAD PMESG DCA TEM2 ERLP, TAD I TEM2 RTR RTR RTR JMS PR6BIT TAD I TEM2 JMS PR6BIT INC TEM2 JMP ERLP PRLOC, TAD TEM1 RTR RTR JMS ERTTY /PRINT CALLING FIELD TAD (-4 DCA TEM2 NUMLP, TAD TEM3 RTL RAL DCA TEM3 TAD TEM3 JMS ERTTY ISZ TEM2 JMP NUMLP TAD (215 DCA 7 JMS TYPE CLA CLL CMA RTL JMS TYPE TAD CKIO /GET THE FATAL ERROR FLAG SNA CLA /WHADDOWEDO?? JMP EXITX RETRN ERROR /HE SAYS ITS NON-FATAL - LET HIM HANDLE IT ERTTY, 0 /DIGIT PRINTING ROUTINE RAL AND LIT7 TAD E60 JMS PR6BIT JMP I ERTTY PR6BIT, 0 /6BIT TO 8BIT CONVERTOR AND (77 SNA JMP PRLOC /MESSAGE OVER TAD (7740 SPA TAD (100 TAD (240 CALL 0,GENIO /LOOK FOR ^C WHILE TYPING JMP I PR6BIT / /EXIT TO DISK MONITOR SYSTEM / EXIT, BLOCK 2 EXITX, CALL 0,CKIO 6203 JMPI U7600 /RETURN TO MONITOR CKIO, 0 TEM2, 0 /DUMMY SUBROUTINE TO WAIT FOR I/O COMPLETE CKWAIT, 6041 JMP CKWAIT RETRN CKIO PAGE //NP /NO PAUSE TAPE FILE READ. / / MH,ICD. 10/12/74. / READNP, 0 /READ BLOCK; NO PAUSE TAD (100 W2, 6151 /TAPE DONE? JMP W2 6141/LINC 1020/LDA I FWT, 0 /FIRST WORD TO TRANSFER 0023/TMA /LOAD CONTROLER ADDR REG 1020/LDA I 0030 /EXT ADDR; NO PAUSE 0001/AX0 /SET EXT OPERATIONS REG RDC, 0710/RDC U /READ CHECK ON RECONED UNIT BLK, 0 /TAPE BLOCK 0002/PDP CLA TAD FWT /INC FWA BUFFER TO SECOND HALF TAD (200 /OF 400 WORD BLOCK DCA FWT INC BLK /NEXT SEQUENTIAL BLOCK JMPI READNP / ENTRY REW / / RESET FILE POINTERS; PSEUDO REWIND. / REW, BLOCK 2 CLA TAD SVBEG /FWB OF FILE DCA BLK TAD AA /TRANSFER ONE 400 WORD BLOCK DCA FWT /TO CM(A) JMS READNP JMS READNP DCA PTR /RESET BUFFER WORD PTR 7325/3 TAD CHR# /SET CHR FOR EMPTY DCA CHR DCA TAB2 /SET TAB COUNTER FOR BEGINNING OF LINE. RETRN REW / C1, 0 /3 CHRS ENDED BY NEG NUMBER C2, 0 C3, 0 M4, -4 /MUST BE AFTER LOCATION C3 CHR, C1;C1 /CURRENT CHR; STARTING CHR PTR, 0 /CURRENT BUFFER POINTER / GETCH, 0 TADI CHR INC CHR SMA /IF NEGATIVE- JMPI GETCH /CHR IN AC CLA /CRACK 2 MORE WORDS TAD CHR# DCA CHR /RESET CHR POINTER JMS PTRG /GET WORD 1 DCA C1 JMS PTRG /GET WORD 2 DCA C2 TAD C1 /MAKE THIRD WORD RTR;RTR;AND (360 DCA C3 /FIRST HALF TAD C2 RTL;RTL;RAL;AND (17 TAD C3 /SECOND HALF DCA C3 /COMPLETED THIRD CHR TAD C1 /DELETE GARBAGE IN BITS 0-3 AND (377 DCA C1 TAD C2 AND (377 DCA C2 TAD PTR /READ ANOTHER BLOCK? AND (177 SZA CLA JMP GETCH# /NO TAPE READ TAD PTR TAD (200 /TOGGLE BIT 8 AND (200 TAD AA DCA FWT JMS READNP TAD PTR AND (377 DCA PTR JMP GETCH# PTRG, 0 /A(PTR) TAD AA TAD PTR DCA C3 /TEMP FOR ADDRESS TAD I C3 /NEXT WORD FROM BUFFER INC PTR JMP I PTRG / ENTRY SKIPB /SKIP BLOCK SKIPB, BLOCK 2 /SKIP TO NEXT 400WORD BLOCK. TAD SVBEG DCA 7 /SAVE FWB OF LAST I0PEN FILE. TAD BLK AND (1 TAD BLK DCA SVBEG /NEXT EVEN BLOCK; NEXT FILE CALL 0,REW /FILL BUFFER TAD 7 DCA SVBEG /REPLACE FWB I0PEN FILE RETRN SKIPB PAGE / A, BLOCK 0 /A IS 400 WORDS LONG IE, 0;0 /-NUM FILE ENTRIES THIS SECTOR LINK, 0;0 /STARTING BLOCK OF NEXT SECTOR EXTR, 0;PAGE /-# EXTRA WORDS IN DIRECTORY ENTRY 0;PAGE DUMMY PAR1 TMP, BLOCK 0 PAR1, BLOCK 2 /GET PARAMTERS WITH PARM, 0 /MOVE 3 ELEMENTS OF PARAMETERS TO NAM TAD I I0PEN /MOVE PARAMETER TO PAR1 DCA PAR1 /DATA FIELD INC I0PEN# TAD I I0PEN DCA PAR1# /ADDRESS INC I0PEN# JMS TRANS /MOVE 3 ELEMENTS TO NAME JMS TRANS /ONE AT A TIME. JMS TRANS JMPI PARM / TRANS, 0 /TRANSFER EEEMENT OF PAR1 TO NAM TAD I PAR1 /GET PARAMETER ELEMENT TRAN1, DCA NAM /STORE IN CURRENT NAM LOCATION INC PAR1# /NEXT ELEMENT OF PAR1 INC TRAN1 /NEXT LOCATION OF NAM JMPI TRANS / NAM, BLOCK 4 /3FILE NAME; 1EXTENSION UNT, BLOCK 1 /1TAPE UNIT IV, 0 /BUFFER POINTER COUNTER AA, A /FWA BUFFER NAMAA, TAD NAM SVBEG, 0 /STARTING BLOCK OF FIL TRAN2, DCA NAM /TO RESET NAM ARRAY COUNTER DUMMY I0PEN ENTRY I0PEN I0PEN, BLOCK 2 JMS PARM /NAME OF FILE JMS PARM /EXTENSION; UNIT G=0; H=1 TAD TRAN2 /RESET NAME ARRAY DCA TRAN1 TAD UNT /RECON TAPE UNIT; G=0;H=1 AND (10 /TAPE UNIT BIT TAD (700 /ADD RDC DCA RDC /REPLACE READCHECK INSTRUCTION 7305/2 DCA BLK /SET TAPE BLOCK=2 OP1, TAD AA DCA FWT /SET FWA TRANS CM(A) JMS READNP /READ A DIRECTORY SECTOR JMS READNP /SECOND HALF OF DIRECTORY SECTOR TAD (100 /PAUSE TAPE READ OP4, 6151 JMP OP4 /CHECK TAPE DONE CLA TAD IE# DCA SVBEG /BLOCK BIAS THIS SECTOR TAD AA TAD (5 /WORD BUFFER COUNTER FROM DCA IV /FIRST FILE ENTRY AT CM(A+5) OP2, TADI IV /A(IV) SZA CLA /EMPTY ENTRY? JMP OP5 /NO INC IV /EMPTY ENTRY TADI IV /LENGTH OF HOLE JMP OP6 OP5, TAD M4 DCA TMP /LOOP COUNTER NAMA, TAD NAM CIA TADI IV /NAME IN DIRECTORY INC IV INC NAMA ISZ TMP JMP NAMA SNA CLA /FILE NAME FOUND? JMP OP9 /YES JMS HOLON OP6, CIA /POSITIVE FILE LENGTH TAD SVBEG /START BLOCK OF NEXT FILE DCA SVBEG INC IV /AT NEXT FILE ENTRY OP3, ISZ IE /MORE FILES? JMP OP2 /YES TAD LINK SMA SZA CLA /ANOTHER DIRECTORY SECTOR? JMP OP1 /YES HLT /NEXT SECTOR NOT FOUND OP9, JMS HOLON CLA TAD SVBEG TAD SVBEG DCA SVBEG /DOUBLE STARTING BLOCK FOR /200B WORD BLOCK LENGTH. CALL 0,REW /FILL BUFFER; SET POINTERS RETRN I0PEN HOLON, 0 /EXIT-NEGATIVE FILE LENGTH TAD NAMAA DCA NAMA /RESET FILE NAME ADDR TAD EXTR CIA TAD IV /SKIP EXTRA WORDS DCA IV /IN FILE ENTRY TAD I IV /NEGATIVE FILE LENGTH JMP I HOLON END