/EDUSYSTEM 50 MONITOR FOR MELROSE HIGH SCHOOL #495AB /COPYRIGHT 1975 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. / /THIS SECTION DEFINES THE HARDWARE CONFIGURATION ON WHICH INDIVIDUAL /EDUSYSTEM 50 MONITORS ARE TO RUN. /FOR EACH STATEMENT, THE COMMENT INDICATES THE POSSIBLE RESPONSES. CPU= 2 /1 IF CPU IS PDP-8; 0 IF CPU IS PDP-8/I; /2 IF CPU IS PDP-8/E CORMEM= 70 /HIGHEST DATA FIELD SELECT. FOR 12K SYSTEM, /RESPOND 20, FOR 16K SYSTEM, RESPOND 30, ETC. (70 MAX) PHONES= 0 /1 IF DC08 INCLUDES 689AG; /0 IF IT DOES NOT OR IF TTY INTERFACING IS OTHER THAN DC08 EAE= 0 /20 IF PROCESSOR INCLUDES EAE; 0 IF IT DOES NOT RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF SYSTEM DISK IS RF08 RS08= 1 /NUMBER OF DISCS ON THE SYSTEM, WHETHER DF/DS OR RF/RS. /RESPOND WITH 1, 2, 3, OR 4. PUNCH= 1 /1 IF SYSTEM INCLUDES PUNCH; 0 IF IT DOES NOT TC01= 1 /1 IF SYSTEM INCLUDES DECTAPE(S); 0 IF IT DOES NOT RK05= 1 /NUMBER OF RK05 CARTRIDGE DISK DRIVES ON THE SYSTEM; 0 TO 4 CDR= 1 /1 IF SYSTEM INCLUDES CARD READER; 0 IF IT DOES NOT LPT= 1 /1 IF SYSTEM INCLUDES LINE PRINTER; 0 IF NO LINE PRINTER DECIMAL /MONITOR CAPACITY FOR THIS SYSTEM JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (20 MAXIMUM) /THE FOLLOWING ENTRIES DEFINE THE NUMBER OF TERMINALS /ATTACHED TO THE SYSTEM, AND ALSO THE METHOD OF INTERFACING CONTTY= 1 /WE ALWAYS HAVE A CONSOLE (K00) DC08A= 0 /NUMBER OF TERMINALS INTERFACED VIA DC08A (PDP-8/I ONLY, 19 MAX.) DC08LO= 0 /LOWEST HARDWARE LINE NUMBER UTILIZED ON DC08A; USUALLY 0 PT08= 0 /NUMBER OF TERMINALS INTERFACED VIA PT08 (PDP-8 & PDP-8/I ONLY) KL8= 16 /NUMBER OF ADDITIONAL TERMINALS INTERFACED VIA KL8 (PDP-8/E ONLY, 19 MAX.) /PARAMATERS VERSION 8.24 (01-JANUARY-75) / / / / /COPYRIGHT (C) 1975 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. / / /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY /ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH /THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS /SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO- /VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON /EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO /THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE /SOFTWARE SHALL REMAIN IN DEC. / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE /WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM- /MITMENT BY DIGITAL EQUIPMENT CORPORATION. / /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR /RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT /SUPPLIED BY DEC. OCTAL PLT= 0 IFNZRO CPU < IFNZRO DC08A > IFNZRO 24-JOBMAX&4000 IFNZRO 23-KL8-PT08&4000 IFNZRO 24-DC08A&4000 IFZERO DC08A IFNZRO DC08A < IFNZRO PHONES IFZERO PHONES > NULINE= DC08A+PT08+KL8 /EVERY TERMINAL EXCEPT THE CONSOLE SWDEX= 5 /DISK TRACK OF THE FIRST USER SWAP TRACK STOMIN= 5 /MINIMUM # FREE STORAGE BLOCK FOR NEW JOB IFZERO RF08-40 < IFZERO RS08-1 IFZERO RS08-2 IFZERO RS08-3 IFZERO RS08-4 DSKEXT= DSKSIZ-1> IFZERO RF08 CLOCKR= 144 /MILLISECONDS PER TICK TICMIN= 1130 /600 TICKS PER MINUTE INCLK2= 0322 /INITIAL CLOCK INCLK1= 7400 TICSPS= 12 /NUMBER OF SYSTEM TICKS PER SECOND INIDEX= 10 /INIT DISC EXTENSION TS8DEX= 30 /FIELD 0 DISC EXTENSION*2^3 ERPDEX= 0 /ERP DISC EXTENSION*4 ERPWC= 0 /ERP WORD COUNT FIPDEX= 4 /FIP DISC EXTENSION*4 FIPWC= 0 /FIP WORD COUNT SIDEX= ERPDEX /SI DISC EXTENSION*4 SIWC= ERPWC /SI WORD COUNT LIBACT= 2 /LIBRARY ACCOUNT # BRKINI= 4000 /INITIAL USER BREAK MASK /IOT DEFINITIONS IFNZRO DC08A < /DC08A, DL8I IOTS TTIL= 6401 /INCREMENT LINE REGISTER TTI= 6402 /TELETYPE INPUT COMMAND TTO= 6404 /TELETYPE OUTPUT COMMAND TTCL= 6411 /CLEAR LINE REGISTER TTLL= 6412 /LOAD LINE REGISTER, CLEAR AC TTRL= 6414 /READ LINE REGISTER T1SKP= 6421 /SKIP ON CLOCK FLAG T1OFF= 6422 /TURN CLOCK OFF T1ON= 6424 /TURN CLOCK ON TTIR= 6461 /INCREMENT THE R REG. TTCR= 6471 /CLEAR THE R REG. TTLR= 6472 > /LOAD THE R REG. /EXTENDED MEMORY CDF= 6201 /CHANGE TO DATA FIELD 0 CIF= 6202 /CHANGE TO INSTRUCTION FIELD 0 CINT= 6204 /CLEAR USER IOT RDF= 6214 /READ DATA FIELD RIF= 6224 /READ INSTRUCTION FIELD RIB= 6234 /READ INTERRUPT BUFFER RMF= 6244 /RESTORE MEMORY FIELD SINT= 6254 /SKIP ON USER IOT CUF= 6264 /USER FLAG OFF SUF= 6274 /USER FLAG ON /EAE MUY= 7405 /MULTIPLY DVI= 7407 /DIVIDE NMI= 7411 /NORMALIZE SHL= 7413 /SHIFT ARITHMETIC LEFT ASR= 7415 /ARITHMETIC SHIFT RIGHT LSR= 7417 /LOGICAL SHIFT RIGHT MQL= 7421 /LOAD MQ SCL= 7403 /STEP COUNTER LOAD FROM MEMORY SCA= 7441 /STEP COUNTER TO AC MQA= 7501 /MQ TO AC IFZERO CPU-2 < DBSZ= 7451 /MODE B ONLY - SKIP IF AC&MQ ARE CLEAR SWBA= 7447 /CHANGE MODE TO A SWAB= 7431 /CHANGE MODE TO B (ALSO DOES MQL) ACS= 7403 /AC(7:11) TO SC; AC CLEARED SGT= 6006 /SKIP ON GT FLAG > /LINE PRINTER IOTS LSF= 6661 /SKIP ON CHAR FLAG SET LCF= 6662 /CLEAR CHAR FLAG LSRP= 6663 /SKIP ON NOT READY OR ON ERROR LLC= 6664 /TRANSMIT CHAR TO PRINTER LSP= 6665 /SET PROGRAM INTERRUPT; LP08/LE8 LPC= 6666 /TRANSMIT CHAR & CLEAR FLAG LCP= 6667 /CLEAR PROGRAM INTERRUPT LIE= 6665 /AC11 TO INTERRUPT ENABLE; LS08/LS8E /CTY TPC= 6044 /LOAD TELEPRINTER AND PRINT /DISC (DF32) DCMA= 6601 /CLEAR DMAR= 6603 /READ DMAW= 6605 /WRITE DCEA= 6611 /CLEAR DISC EXTENDED ADDRESS DEAL= 6615 /LOAD EXTENDED ADDRESS DFSE= 6621 /SKIP ON ERROR DFSC= 6622 /SKIP ON COMPLETION DEAC= 6616 /READ EXTENDED ADDRESS /DISC (RF08) DSAC= 6612 DORS= 6614 DIML= 6615 DIMA= 6616 DCXA= 6641 DXAL= 6643 /CARD READER IOT'S RCSF= 6631 RCRA= 6632 RCRB= 6634 RCNO= 6635 /8E ONLY RCRC= 6636 /8E ONLY RCNI= 6637 /8E ONLY RCSD= 6671 RCSE= 6672 RCRD= 6674 RCSI= 6675 /8E ONLY RCTF= 6677 /8E ONLY /RK05 IOT'S IFZERO PHONES < DSKP= 6741 DCLR= 6742 DLAG= 6743 DLCA= 6744 DRST= 6745 DLDC= 6746 DMAINT= 6747 > IFNZRO PHONES < DSKP= 6751 DCLR= 6752 DLAG= 6753 DLCA= 6754 DRST= 6755 DLDC= 6756 DMAINT= 6757 > /DECTAPE DTRA= 6761 DTCA= 6762 DTXA= 6764 DTSF= 6771 DTRB= 6772 DTLB= 6774 IFZERO CPU < /KW8I REAL TIME CLOCK CECI= 6137 /CLEAR AND ENABLE CLOCK AND INTERRUPT CSCF= 6133 /SKIP AND CLEAR FLAG IF FLAG > IFZERO CPU-1 < CECI= 6315 /CLOCK ENABLE CSCF= 6301 /SKIP ON CLOCK FLAG CCF= 6302 /CLEAR CLOCK FLAG, CLEAR ENABLE, AND CLEAR BUFFER CLB= 6304 > /LOAD BUFFER FROM AC IFZERO CPU-2 < CECI= 6131 /CLOCK ENABLE CSCF= 6133 /SKIP AND CLEAR FLAG IF FLAG /POWER FAIL IOT SPL= 6102 /SKIP IF POWER LOW / 8/E PROCESSOR IOT SRQ= 6003 /SKIP ON INTERRUPT REQUEST GTF= 6004 /LINK TO AC0, GT FLAG TO AC1 RTF= 6005 /AC0 TO LINK, AC1 TO GT FLAG CAF= 6007 > /CLEAR ALL FLAGS IFZERO CPU-4 < CLLE= 6135 /AC11 TO INTERRUPT ENABLE FOR CLOCK CLCL= 6136 /CLEAR CLOCK FLAG CLSK= 6137 /SKIP ON CLOCK FLAG SPL= 6102 /SKIP POWER LOW CAL= 6133 > /CLEAR AC LOW FLAG IFNZRO DC08A < /689AG SRF= 6701 /SKIP IF RING FLAG SCF= 6711 /SKIP IF CARRIER FLAG DFCRF= 6742 /CLEAR RING FLAG CTG= 6721 /CLEAR GROUP COUNTER RRS= 6702 /READ RING STATUS ITG= 6731 /INCREMENT GROUP COUNTER STR= 6722 /SET TERMINAL READY EDF= 6704 /ENABLE DATAPHONE FEATURES DDF= 6714 /DISABLE DATAPHONE FEATURES CTR= 6724 /CLEAR TERMINAL FLAG CCF= 6741 /CLEAR CARRIER FLAG RCS= 6712 /READ CARRIER STATUS > /FIP IOTS (IN ABBREVIATED FORM) SEGS= 0006 /RETURN NUMBER OF FREE SEGMENTS ON DISK ASD= 0040 /ASSIGN REL= 0042 /RELEASE REN= 0200 /RENAME OPEN= 0201 /OPEN CLOS= 0202 /CLOSE RFILE= 6603 /READ FILE PROT= 0204 /PROTECT WFILE= 6605 /WRITE FILE CRF= 0210 /CREATE EXT= 0211 /EXTEND RED= 0212 /REDUCE FINF= 6613 /FILE INFORMATION LIN= 0214 /LOGIN LOUT= 0215 /LOGOUT WHO= 6616 /WHO /DEVICE DATA BLOCK DDBSTS= 0 /WORD 1, STATUS AND UNIT NUMBER DXON= 2000 /XOFF SENT FLAG DSI= 1000 /DESTINATION IS S.I. FLAG DFULL= 400 /KEYBOARD BUFFER IS FULL DUPL= 200 /CONSOLE IN DUPLEX MODE SICOM= 100 /COMMAND WAITING DECHO= 40 /CAUSE SI TO RE-ECHO CURRENT INPUT BUFFER /DEVICE UNIT NUMBER IS IN BITS 6-11 DDBJN= 1 /WORD 2, JOB NUMBER IN 7-11 DDBBRK= 2 /BREAK MASK DDBTIM= 3 /TIME THAT DEVICE WAS ASSIGNED DDBINP= 4 /BUFFER FILL POINTER DDBINC= 5 /BUFFER TOTAL COUNT DDBOUC= 6 /BUFFER EMPTY COUNT DDBOUP= 7 /BUFFER EMPTY POINTER /JOB DATA AREA JOBSTS= 0 /STATUS /STR0 JSRUN= 4000 /RUN BIT JSEREN= 2000 /USER ERROR ENABLE JCOMBD= 1000 /LAST TIME THE JOB RAN AS COMPUTE BOUND JSPEEK= 400 /ALLOW "PEEK" AND "LOGOUT" IOT'S JSACC= 200 /JOB LOGGED IN UNDER PRIVILEGED ACCOUNT (1, 2, OR 3) JSIOT= 100 /NON-RESIDENT IOT JSIOTC= 40 /COPY IOT RESULT TO USER JSEXON= 20 /EXECUTE ONLY JSINER= 10 /INHIBIT ERROR REPORT FROM SI, (UNTIL NEXT COMMAND) /BITS 9-11 ARE SYSTEM ERROR CODE UUOERF= 1 /IOT ERROR SWPRER= 2 /SWAP READ ERROR SWPWER= 3 /SWAP WRITE ERROR DSKERR= 5 /DISC ERROR HUNGDV= 6 /HUNG DEVICE /STR1 JSTIME= 4000 /TIME IS UP JSF0= 2000 /FILE 0 IS NOT BUSY JSF1= 1000 /FILE 1 IS NOT BUSY JSF2= 400 /FILE 2 IS NOT BUSY JSF3= 200 /FILE 3 IS NOT BUSY JSDEL= 100 /KEYBOARD DELIMITER SEEN JSLPT= 40 /LINE PRINTER BUFFER IN USE BUT NOT FULL JSTEL= 20 /TELEPRINTER OUTPUT BUFFER IN USE BUT NOT FULL JSPTR= 10 /CHARACTERS IN READER BUFFER JSPTP= 4 /PUNCH BUFFER IN USE BUT IS NOT FULL JSERR= 2 /SYSTEM ERROR DETECTED JSWAIT= 1 /JOB NOT IN WAIT STATE JOBSTB= 2 /DEVICE STATUS REGISTER (FOR RK05, DECTAPE, AND CARD READER) JOBWMK= 3 /WAIT MASK JOBSRA= 5 /JOB RESTART ADDRESS JOBERR= 6 /JOB ERROR RESTART ADDRESS JOBLNK= 7 /IOT LINKAGE JOBSWR= 10 /SWITCH REGISTER JOBREG= 11 /PC LINK AC JOBEAE= 14 /MQ MODE GT SC JOBACC= 16 /ACCOUNT NUMBER JOBF0= 17 /POINTER TO FILE 0 CONTROL JOBF1= 20 /POINTER TO FILE 1 CONTROL JOBF2= 21 /POINTER TO FILE 2 CONTROL JOBF3= 22 /POINTER TO FILE 3 CONTROL JOBRTM= 23 /LOW ORDER RUN TIME JOBRTH= 24 /HI ORDER RUN TIME /FILE CONTROL BLOCK - POINTED TO BY JOBFX, X=0,1,2,3 FILWPT= 0 /POINTER TO FILE RETRIEVAL WINDOW FILSCT= 1 /SEGMENT NUMBER OF FIRST WINDOW ENTRY FILPRO= 2 /FILE PROTECTION - BIT 9 FILPAR= 3 /POINTER TO RFILE OR WFILE PARAMETER BLOCK FILDA= 4 /DISC ADDRESS OF RFILE OR WFILE FILWC= 6 /-WORD COUNT OF RFILE OR WFILE FILRES= 7 /POINTER TO FILPIF IN USER AREA /FILE RETRIEVAL WINDOW /WORD 0: UFD LINK TO NEXT GROUP OF 7 SEGMENT POINTERS /WORDS 1-7: SEVEN SEGMENT ADDRESSES /RFILE OR WFILE PARAMETER BLOCK - POINTED AT BY FILPAR FILPFN= 0 /FUNCTION: 0603 OR 0605 FILPDX= 1 /DISC EXTENSION FILPIF= 2 /INTERNAL FILE # (BITS 10-11) AND FIELD # (BITS 7-9) FILPWC= 3 /-WORD COUNT FOR THIS TRANSFER FILPCA= 4 /CORE ADDRESS FOR THIS TRANSFER FILPDA= 5 /DISC ADDRESS FILPRA= 6 /EXEC RETURN ADDRESS FOR THIS TRANSFER FILPCT= 7 /POINTER TO FILE CONTROL BLOCK /CORE TABLE CONTROL FLAGS SWAP= 4000 /SWAP REQUEST LOCK= 2000 /LOCK IN CORE NOTRUN= 1000 /HAS NOT BEEN SCHEDULED TO RUN FIP= 400 /FILE PHANTOM SI= 200 /SYSTEM INTERPRETOR NOHOLD= 140 /INHIBIT "NOTRUN" STATUS AFTER FOUR CONSECUTIVE FILE TRANSFERS CJOB= 37 /BITS 7-11 CONTAIN THE JOB # /FIP TABLE DEFINITIONS SATSIZ= 530 JTABLE= 6000 ENTABL= JTABLE+JOBMAX+1 UTABLE= ENTABL+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX RTABLE= UTABLE+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX+JOBMAX /TABLES CORTBL= 7001 /CORE ASSIGNMENT TABLE L2QTB= CORTBL+7 IFZERO DC08A IFNZRO DC08A /SIZE OF FIELD 1 DC08A CODE PLUS 689AG CODE OUTREG= 200 /ACTIVE OUTPUT REGISTERS (TTY'S, LPT & PTP) SKPTBL= OUTREG+NULINE+3 /START OF IOT SKIP TABLE SKPTP= SKPTBL+NULINE+NULINE+3 /POSITION OF PUNCH SKIP IN SKIP TABLE RINGIN= SKPTP+3 /KEYBOARD INPUT RING BUFFER ENDBUF= OUTREG+200 /END OF KEYBOARD INPUT BUFFER INPUTS= ENDBUF-RINGIN%2 /NUMBER OF POSSIBLE ENTRIES IN THE KEYBOARD RING BUFFER DATFLD= CDF 10 /MONITOR DATA FIELD SELECT IFZERO EAE-20 IFZERO EAE IFZERO CPU&7776 > IFNZRO OUTREG&1 /SUPER CRITICAL LOCATIONS /THESE LOCATIONS ARE USED TO LINK TS8, TS8II, FIP, SI, AND INIT. /IT MAY BE NECESSARY TO ADJUST THEM ACCORDINGLY /DEFINED IN TS8: WSCHED= 2573 /ADDRESS FOR WAIT GETJTB= 401 /GETJTA CORSRC= 1317 /SEARCH CORE TABLE OVERLA= 5171 /FILE STUFF READFI= 574 /MORE FILE STUFF CONDBA= 132 /DEVTBL POINTER USED BY "PRINT" ETC. RETB= 611 /RETURN A BLOCK TO FREE CORE GETB= 1405 /GET A BLOCK OF FREE CORE GETDB0= 1447 /GET A DDB CLK1= 51 /LOW ORDER DAYTIME CLOCK CLK2= 50 /HIGH ORDER DAYTIME CLOCK DATE= 166 /12 BIT DATE WORD TTCHAR= 31 /SAVE REG. FOR CONSOLE CHARACTERS KBD00= 3201 /PROCESS KEYBOARD INPUT PRINT0= 1205 /TYPE OUT A CHARACTER OVRLA1= 562 /MORE FILE STUFF RUNFI= 605 /SI FILE TRANSFER INITIALIZER L2SF= 103 /LEVEL 2 SAVED MODE AND FIELD SICLR= 6572 /SI CLEAR LINKED BUFFER TIMSI= 2421 /TIMER FOR SI "COMWAT" SIWAIT= 1702 /NUMBER OF SI COMMANDS BEING WAITED ON TIMFIP= 2423 /TIMER FOR FIPLOCK FIPLOK= 2724 /CORTBL STATUS CHECK FOR FORCE OUT CLKINI= 322 /CONVERT HARDWARE CLOCK TO SYSTEM-TICKS (100MS) BLT0= 1602 /BLOCK TRANSFER FROM CORE TO CORE KBDSQ= 3213 /ADDRESS OF JMS TO ^S/^Q CODE /DEFINED IN TS8II: F1TCNT= 175 /SI DDB CHARACTER COUNT F1ECNT= 176 /SI DDB EMPTY COUNT F1BUF= 177 /SI DDB EMPTY BLOCK POINTER DTJOB= 20 /JOB OWNING THE DECTAPE CONTROLLER RKJOB= 54 /JOB OWNING RK05 CONTROLLER DTSI= 1175 /SI TERMINATE A DECTAPE ON TIMER DATA1= 2200+DCSIZE DEVTBL= DATA1+140 DEVTBE= DEVTBL+NULINE+NULINE+2 JOBTBL= DEVTBE+22 CLKTBL= JOBTBL+JOBMAX+1 TTYTBL= CLKTBL+JOBMAX+1 PRGTBL= TTYTBL+JOBMAX+1 DSUTBL= PRGTBL+JOBMAX+JOBMAX+JOBMAX-7 FIPBLK= 7720 /FIXED BLOCK FOR FIP I/O WINBAS= 7730 /ADDRESS OF THE BASIC WINDOW OUTDIF= -OUTREG^2+DEVTBL /FOR LINKING BETWEEN OUTREG AND DEVTBL F1OFFJ= 164 /FOR OFF/ON COMMANDS USED BY SI IFNZRO DEVTBL&1 /DEFINED IN SI: DTSIDT= 7270 /RETURN FROM STOPPING A DECTAPE ON TIMER VERBRK= 7600 /START OF INSTALLATION DEFINED LOGIN MESSAGE /FIP VERSION 8.24 (01-JANUARY-75) / / / / /COPYRIGHT (C) 1975 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. / / /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY /ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH /THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS /SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO- /VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON /EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO /THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE /SOFTWARE SHALL REMAIN IN DEC. / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE /WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM- /MITMENT BY DIGITAL EQUIPMENT CORPORATION. / /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR /RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT /SUPPLIED BY DEC. /FIP HANDLES ALL NON-RESIDENT FILE IOT'S /RUNS IN AN UPPER FIELD IN PLACE OF USER IT IS SERVING /RUNS IN EXEC MODE FIELD 1 /FIP LOADS ONTO DISK TRACK 1 *0 JMP I .+1 FIP0 LNS01, LNS0 RETBK1, RETBKS LNK01, LNK0 ZDS1, DS1 / *10 INDEX, 0 /ONLY REGISTER AVAILABLE IN FIP FOR INDEXING P5400, 5400 P2000, 2000 P0077, 0077 P0007, 7 FIDEXP, /TO REPLACE FIDEXP, FIPDEX WHERE FIPDEX=4 P0004, 4 FIPFLD, /FIELD WE ARE RUNNING IN C0020, 20 C002, FILPRP, FILPRO FIPDAT= 155 /DATA REFERENCED BY FIP *FIPDAT FIPJOB, . C0400, 400 SEGSIZ= C0400 /# WORDS PER SEGMENT FIBASE, SWDEX+JOBMAX /BASE ADDRESS OF ALLOCATABLE DISC STORAGE JOB, . /# OF CURRENT JOB JOBDAT, . /ADDRESS OF CURRENT JOB DATA LIST. MUST RESIDE IN DATA FIELD. P7000, CORTBA, CORTBL-1 /CORE ALLOCATION TABLE DEVTBA, DEVTBL /DEVICE TABLE DEVEND, DEVTBE /START OF ASSIGNABLE DEVICE TABLE DSBUSY, . /DISC BUSY COUNT /THE DATE IS KEPT AS A 12 BIT NUMBER IN THE FORMAT /DATE=((YEAR-1974)*12+(MONTH-1))*31+DAY-1 DATE, . BLTA, BLT0 /BLOCK TRANSFER BLT= JMS I BLTA CORSRA, CORSRC CORE= JMS I CORSRA GETBA, GETB GETBLK= JMS I GETBA GETDBA, GETDB0 /GET A DATA BLOCK GETDDB= JMS I GETDBA PRINTA, PRINT0 /TYPE OUT A CHARACTER PRINT= JMS I PRINITA GETJT0, GETJTB /GET JOB DATA TABLE ADDRESS GETJTA= JMS I GETJT0 RETBA, RETB /RETURN BLOCK TO FREE STORAGE RETBLK= JMS I RETBA WAITA, WSCHED WAIT= JMP I WAITA DEVOVR, JOBTBL /END OF DEVICE TABLE; START OF JOB TABLE *20 FIUSAC, 0 /SAVED USER AC FIJOB, 0 /JOB NUMBER FILE PHANTOM IS REPRESENTING FIOPTR, 0 /POINTER TO FIELD 0 IOT GDRETP, 0 /RETRIEVAL POINTER, SET BY GD0 ROUTINE WNDREM, 0 /REMAINDER FROM DIVISION BY 7 BUFSTA, 0 /BUFFER STATUS, 7777 IF FULL BUFMOD, 1 /BUFFER MODIFIED IF =0; UNCHANGED IF =1 SATSTA, 0 /SATSTATUS, 7777 IF CHANGED THIS RUN TABSTA, 0 /TABLE STATUS, 7777 IF CHANGED THIS RUN /POINTERS TO FILE PHANTOM'S INTERNAL TABLES JOBTAB, JTABLE /TABLE OF PROJ,PROG NUMBERS FOR ALL ACTIVE JOBS ENTEND, /END OF ENTRY TABLE UFDTBL, UTABLE /TABLE OF ALL ACCESSED UFD'S UFDEND, /TOP OF UFD TABLE RETTBL, RTABLE /TABLE OF RETRIEVAL INFORMATION FOR ALL ACCESSED UUFD'S ENTTBL, ENTABL-10 /TABLE REFLECTING STATE OF ALL POSSIBLE FILE NUMBERS BUFFER, 5400 /BUFFER FOR DIRECTORY MANIPULATIONS SATBOT, -SATSIZ /BOTTOM OF STORAGE ALLOCATION TABLE /SUBROUTINE POINTERS DE01, DE0 /GET A DIRECTORY ENTRY DS01, DS0 /DIRECTORY SEARCH GE01, GE0 /GET A DIRECTORY WORD INTO CORE GD01, GD0 /GET A FILE DIRECTORY ENTRY INTO CORE WRT1, WRITE /MAKE SURE THE BUFFER IS EMPTY DTE01, DTE0 FIO01, FIPIO /COMMON DISC I/O ROUTINE SATL1, SATLOK /GET A FREE SEGMENT FROM SAT TF01, TF0 /FREE AN ENTRY ON UFD TABLE UC01, UC0 /USER-OWNER FILE CHECK UFO01, UFO0 /OPEN A UFD UTS01, UTS0 /SEARCH UFD TABLE FOR PROJ,PROG NUMBER CL01, CL0 /CLOSE A FILE WND201, WND20 /DIVIDE BY SEVEN FIEXIT, FIX0 /EXIT ROUTINE BLDP1, BLDP /BUILD A POINTER TO ENTTBL ENR01, ENR0 REL01, REL00 WR01, WR0 GTBLO1, GTBLOK EBLD0, EBLD JBLD0, JBLD FIX401, FIX40 IFN01, IFN0 LGI201, LGI20 /-1 TO USER AC FGETJT= JMS I . FGETJ0 DIRBAD, BADDIR /CONSTANTS C0006, 6 C0200, 200 P0037, 37 P0003, 3 P6000, 6000 P0777, 777 C0605, 6605 C0005, 5 C0603, 6603 C7774, -4 C4400, 4400 C7771, 7771 P7770, 7770 CFLD= CDF 20 /FIP IS ALWAYS IN FIELD 2 EXQ1, UTPRNU, 0 /USED BY UTS0 ROUTINE TO HAVE THE PTR TO UFD TABLE WHILE SEARCHING CFH, 0 /THIS LOCATION IS USED FOR TEMP STORAGE BY MANY ROUTINES ACC01, ACT01 /SEE IF CALLING USER IS ACCOUNT 1 BASCO1, BASCO0 /SEE IF THE FILE IS BASIC BASSWT, 0 /SWITCH FOR BASIC C0010, 10 C7700, 7700 BASWIN, WINBAS /FIELD 1 ADDRESS OF BASIC WINDOW BAS1A, BAS0 /CREATES A BASIC WINDOW SEGLIM, 0 REWNDC, REL6, 0 FIOSTK, 0 /STACK HOLDING IOT LINKAGE 0 0 0 0 0 0 0 FLPARB, 0 /TABLE FOR READ OR WRITE PARAMETER CONSTRUCTION 0 0 0 0 0 OVERLA 0 /ROUTINE TO RELEASE FREE BLOCK, (IF ANY), IF IT IS /NECESSARY TO ABORT FIP FOR SOME REASON. RETURN, TAD FIOSTK /GET THE IOT THAT BROUGHT US HERE CMA /IS THERE A PARAMETER BLOCK? AND C4010 SZA CLA JMP I FIEXIT /NONE, OK TO EXIT DATFLD TAD I FIOPTR /GET THE BLOCK JMS I RETBK1 /RETURN IT SO IT WON'T BE LOST FOREVER CLA JMP I FIEXIT /NOW IT'S OK TO LEAVE C4010, 4010 /MASK FOR FINF AND WHO /FILE PHANTOM START /FIP'S FIRST JOB IS TO PICK UP THE IOT WHICH IT IS TO PERFORM /AND THE PARAMETERS WHICH GO ALONG WITH IT (IF ANY). THESE /ARE MOVED INTO AN 8-WORD BLOCK CALLED 'FIOSTK.' THE FIRST REG- /ISTER IN THIS BLOCK CONTAINS THE IOT, PARAMETERS FOLLOW *200 FIP0, CLL CLA IAC DCA BUFMOD /MARK BUFFER AS NOT MODIFIED DCA SATSTA /CLEAR SAT STATUS DCA TABSTA /CLEAR TABLE STATUS TAD BUFSTA /IS THERE VALID DATA IN THE BUFFER? SZA CLA IAC /YES; RE-CALCULATE DISK PARAMETERS IF NEEDED DCA BUFSTA 6201 /CDF FIELD ZERO TAD I JOB /GLOBAL TO "JOB" AND P0037 DCA FIJOB /SAVE IT CFLD FGETJT /SAVE USER AC JOBREG+2 DCA FIUSAC /ADDRESS OF USER'S AC FGETJT JOBLNK /IOT REQUEST WORD DCA FIOPTR /POINTER TO IOT LINKAGE DATFLD TAD I FIUSAC DCA FIUSAC /USER'S AC TAD I FIOPTR /PICK UP LINKAGE AND IC7400 /IS IT AN IOT? (IF IT IS, JOBLNK WILL HAVE BITS 0-3 CLEARED) SNA CLA JMP FIP2 /IS AN IOT, SO GO MOVE IT INTO FIOSTK (AC IS PARAMETER) TAD I FIOPTR /IS A POINTER, PICK UP LINKAGE DCA FIP6 /POINTER TO LINKAGE TABLE CFLD 6202 /CIF FIELD 0 BLT /MOVE IOT PARAMETERS INTO FIOSTK DATFLD FIP6, 0 6221 /CDF THIS FIELD FIOSTK /IOT LINKAGE BUFFER -10 TAD FIOSTK SPA CLA /WILL THE IOT PARAMETER BLOCK BE NEEDED TO RETURN PARS? JMP FIP4 /YES, SO DON'T RETURN IT TAD FIP6 JMS I RETBK1 /RETURN THE IOT PARAMETER BLOCK TO FREE CORE CLA CLL DATFLD DCA I FIOPTR /CLEAR JOBLNK TO AVOID CONFUSION LATER CFLD /COMES HERE WHEN IOT AND ITS PARAMETERS ARE COMFORTABLY /NESTLED IN FIOSTK FIP4, TAD IOTABL DCA FITPTR /TABLE POINTER FIP5, ISZ FITPTR /PICK UP IOT FROM TABLE TAD I FITPTR SNA /END OF TABLE? JMP I LGI201 /DON'T KNOW WHAT TO DO SO PASS BACK AN ERROR AT LEAST CIA /NO TAD FIOSTK /IOT FROM USER SZA CLA /DISPATCH? JMP FIP5 /NO TAD IOTABL /YES, FIND PROPER POINTER CIA TAD FITPTR TAD IODSPA DCA FITPTR TAD I FITPTR /PICK UP DISPATCH ADDRESS DCA FITPTR TAD FIOSTK /IS THIS AN IOT WHICH DOES REQUIRE PARAMETERS TO BE /RETURNED IN AN IOT PARAMETER BLOCK? SMA CLA /...IF SO, USER AC CONTAINS A PTR TO WHERE THEY WILL GO DCA FIUSAC /CLEAR USER AC JMP I FITPTR /DISPATCH /COMES HERE FOR A "SHORT" IOT. SAVED AC IS ONLY PARAMETER /PUT IT IN FIOSTK+1 FIP2, TAD I FIOPTR /PICK UP IOT DCA FIOSTK /PLACE ON STACK TAD FIUSAC /USER ACCUMULATOR DCA FIOSTK+1 /SIMULATE LINKAGE JMP FIP4-2 IOTABL, . /TABLE OF USER FILE IOT'S ASD /ASSIGN A DEVICE REL /RELEASE A DEVICE REN /RENAME A FILE OPEN /OPEN A FILE CLOS /CLOSE A FILE RFILE /FILE READ (WINDOW MOVE) PROT /FILE PROTECTION WFILE /FILE WRITE (WINDOW MOVE) CRF /CREATE A FILE EXT /EXTEND A FILE RED /REDUCE A FILE FINF /FILE INFORMATION LIN /LOGIN LOUT /LOGOUT WHO /RETURN PASSWORD SEGS /RETURN # OF DISK SEGMENTS AVAILABLE 0 IODSPA, IODISP-1 FITPTR, 0 IC7400, 7400 /ROUTINE TO GET A DIRECTORY ENTRY INTO CORE /CALLING SEQUENCE: / TAD (INTERNAL FILE NUMBER) / JMS GD0 / RETURN (BUFFER POINTER IN AC, 0=ERROR) GD0, 0 JMS I EBLD0 DCA GDUFDP TAD I GDUFDP /RELATIVE POSITION IN UFD TABLE JMS I BLDP1 DCA GDRETP /POINTER TO UFD RETRIEVAL INFORMATION ISZ GDUFDP TAD I GDUFDP /PICK UP ENTRY ADDRESS WITHIN UFD DCA GD1 TAD GDRETP JMS I GE01 /GET ENTRY INTO CORE GD1, 0 JMP I GD0 GDUFDP, 0 IFN0, 0 TAD FIOSTK+1 AND P0003 DCA FIOSTK+1 JMP I IFN0 EBLD, 0 DCA CFH TAD FIJOB CLL RTL TAD CFH RAL TAD ENTTBL JMP I EBLD WR0, 0 /WRITE OUT THE CONTENTS OF THE BUFFER TAD C0605 /WRITE IOT DCA FLPARB /I/O PARAMETER BLOCK JMS I FIO01 /PERFORM THE WRITE HLT /ERROR ON WRITE, TOO BAD CLA IAC DCA BUFMOD /SET NOT-MODIFIED STATUS JMP I WR0 /ROUTINE TO OPEN A FILE OPN0, JMS I BASCO1 /IF BASIC SET BASSWT TO -1 DCA OPENTT /PTR TO ENTTBL JMS I JBLD0 /PROJ PROG # OF THIS JOB IN AC DCA PRJPRO /SAVE PROJ, PROG # TAD FIOSTK+2 SNA /IF [S]HE OWNS THE FILE THEN FIOSTK+2 IS 0 JMP OPNOWN /YES, [S]HE DOES CIA TAD PRJPRO /IF [S]HE HAS MENTIONED THE PROJ, PROG # SNA CLA /CHECK IF [S]HE IS THE OWNER JMP OPNOWN STA TAD FIOSTK+2 /TRYING TO OPEN ACCOUNT 1 FILE? SZA CLA JMP .+6 /NO, OK TAD FIOSTK+3 /WHOSE UFD? CIA TAD PRJPRO /HIS/HER OWN? SZA CLA JMP OPN3 /NO, TELL HIM/HER FILE NOT FOUND TAD FIOSTK+2 AND C7700 /TAKE OUT JUST THE PROJ # OF THE FILE CIA TAD PRJPRO /DOES IT AGREE WITH JOB'S PROJ #? AND C7700 SNA CLA TAD P0003 /4 IN AC SAME PROJ # CLL IAC /1 IN AC DIFF PROJ # JMP .+4 OPNOWN, TAD PRJPRO DCA FIOSTK+2 TAD C0010 /10 IN AC IF [S]HE OWNS THE FILE DCA PRJPRO /STORE PROTECTIVE BITS FOR READ CASE TAD FIOSTK+2 /PICK UP THE PROJ PROG # OF THE FILE JMS I UTS01 /SEARCH OPEN UFD TABLE RETURN WITH PTR IN AC JMP OPN6 /UFD NOT OPEN, GO OPEN IT OPN2, DCA I OPENTT /SAVE ITS RELATIVE PTR IN ENTTBL TAD I OPENTT /GET RELATIVE ADDRESS OF UFD TBL JMS I BLDP1 /BUILD A PTR TO RETTBL ENTRY DCA FIOSTK+2 /SAVE IT JMS I DS01 /3 WORD SEARCH FIOSTK+2 JMP OPN3 /NO SUCH FILE TAD P0007 /PTR TO RETRIEVAL ENTRY IN BUFFER DCA OPBUFP ISZ OPENTT TAD I ZDS1 /GET THIS FILE'S DIRECTORY ADDRESS DCA I OPENTT /SAVE IN SECOND WORD OF ENTTBL ENTRY CLL CMA RTL /-3 IN AC TAD OPBUFP /PTR TO PROTECTION BIT JMS I OPN11A /CHECK PROTECTION OF THE FILE PRJPRO, 0 TAD I OPBUFP /ADD POINTER TO FIRST RETRIEVAL WINDOW AND DCA PRJPRO /SAVE WITH PROTECTION BIT TAD OPNFI0 /JOB STATUS WORD FILE FOR FILE 0 TAD FIOSTK+1 DCA OPACSC /FOR LINKING A BLOCK TAD I OPBUFP /GET RETRIEVAL WINDOW DCA OPBUFP /SAVE IT TAD FIOSTK+2 JMS I GE01 /GET RETRIEVAL WINDOW IN CORE OPBUFP, 0 DCA OPENTT /SAVE THE BUFFER ADDRESS FGETJT /GET THE ADDRESS OF JOB STATUS FOR THIS FILE OPACSC, 0 DCA OPACSC /SAVE POINTER TAD OPACSC JMS I GTBLO1 /GET A BLOCK LINKED FOR FILE CONTROL JMP OPNOT /NO FREE CORE; CAN'T OPEN THEN DCA OPBUFP /SAVE IT TO BUILD THE FILE CONTROL BLOCK ISZ BASSWT JMP OPN123 TAD I BASWIN /IS BASIC WINDOW ALREADY SET UP? IAC SNA CLA /YES THEN HAS -1 JMP OPRET1 /BASIC WINDOW ALREADY LOADED TAD OPENTT /BUFFER ADDRESS OF THE WINDOW JMS I BAS1A /CREATE BASIC WINDOW OPRET1, TAD BASWIN /PUT BASIC WINDOW POINTER IN CONTROL BLOCK DCA I OPBUFP OPRET, CFLD CLA CMA /ACCESS COUNT IN UFDTBL TAD I UTPRNU /INCREASE BY -1 DCA I UTPRNU DATFLD ISZ OPBUFP ISZ OPBUFP /POINTS TO PROTECTION BIT TAD PRJPRO DCA I CPBUFP /PUT IN THE WRITE PROT BIT CREATED BEFOREHAND JMP I .+1 /EXIT AND WRITE OUT TABLES TABOUT OPN123, TAD OPBUFP /LINK A BLOCK JMS I GTBLO1 JMP OPN4 /NO FREE CORE, CAN'T OPEN DCA OPENTU CFLD CIF BLT CFLD /SOURCE OPENTT, 0 DATFLD OPENTU, 0 -10 JMP OPRET OPN5, SNA /DID THE ACCOUNT EXIST? JMP OPNOT /YES; LACK OF ROOM IN UFDTBL OPN3, STL CLA RTR /NOT FOUND ERROR OPNPRE, TAD P2000 /PROTECTED TAD P2000 OPNOT, CLL CML RAR /NOT OPEN, LACK OF SYSTEM RESOURCES DCA FIUSAC TAD FIOSTK+1 JMS I EBLD0 /BE SURE TO REMOVE ALL THE POINTERS PUT IN BY OPEN DCA OPENTT DCA I OPENTT JMP I FIEXIT OPN4, TAD I OPACSC /CONTROL BLOCK ADDR JMS I RETBK1 /RETURN IT DATFLD DCA I OPACSC /CLEAR POINTER FROM JOB BLOCKS CFLD JMP OPNOT /TELL HIM/HER WE COULDN'T OPEN OPN6, TAD FIOSTK+2 /PICK UP PROJ PROG # JMS I UFO01 /OPEN UFD JMP OPN5 /NO LUCK, ERROR JMP OPN2 /OPENED RELATIVE POSITION IN AC OPNFI0, JOBF0 OPN11A, OPN11 /ROUTINE TO CLOSE A FILE *600 CLS0, DCA CLSIFN /INTERNAL FILE NUMBER TAD C7774 DCA CLCNTR /COUNTER FOR BIT SCAN CLS1, TAD FIOSTK+1 /PICK UP BIT PATTERN RAL DCA FIOSTK+1 SZL JMP CLS3 CLS2, ISZ CLSIFN /NEXT FILE NUMBER ISZ CLCNTR /DONE ALL FOUR? JMP CLS1 /NO, KEEP AT IT JMP I FIEXIT /THROUGH CLS3, TAD CLSIFN /PICK UP INTERNAL FILE NUMBER JMS CL0 /CLOSE THE FILE JMP CLS2 /LOOK FOR MORE CLSIFN, 0 CLCNTR, 0 /ROUTINE TO DO ACTUAL FILE CLOSE CL0, 0 JMS I EBLD0 DCA CLENTP TAD CFH JMS I LNK01 /RETURNS WITH PTR TO FILE CONTROL BLOCK FROM JOB STATUS BLOCK SNA JMP CL3 /FILE WAS NOT OPEN DCA CLPARP /SAVE IT DCA I CFH /CLEAR POINTER TO FILE CONTROL BLOCK --- INDICATES FILE CLOSED CFLD /SET DATA FIELD TO THIS FIELD TAD CLPARP /POINTER TO PARAMETER BLOCK JMS I CLOBA /PROPERLY CLOSE TESTING FOR BASIC DCA CLO3 /SWITCH SET TO -1 IF BASIC FILE CLA CMA CLL TAD I CLENTP /RELATIVE POINTER TO UFD RETRIEVAL TABLE CLL RTL IAC TAD UFDTBL DCA CLUFDP /POINTER TO ACCESS COUNTER DCA I CLENTP /CLEAR PTR IN ENTTBL TO INDICATE FILE IS CLOSED CLA CMA DCA TABSTA /SET TABLE STATUS TO WRITE OUT ISZ I CLUFDP /REMOVE THIS JOB FROM ACCESS COUNT IN UFDTBL JMP I CL0 /THIS WAS THE ONLY GUY USING THIS UFD, SO CLOSE IT OUT ISZ CLO3 /IS IT BASIC FILE BEING CLOSED? JMP CL11 /NO, PROCEED FURTHER DATFLD /YES, JUST ZERO ONE LOC IN FIELD 1 DCA I BASWIN CFLD CL11, CLA CMA /NO ONE IS NOW ACCESSING THIS UFD TAD CLUFDP JMS I TF01 /FREE A TABLE ENTRY CL3, CFLD JMP I CL0 CLOBA, CLOBAS CLPARP, 0 CLENTP, 0 CLUFDP, 0 /SKIPS IF NO OTHER USER IS ACCESSING THIS FILE ENR0, 0 TAD FIOSTK+1 JMS I EBLD0 DCA ENR1 /PTR INTO ENTTBL ISZ ENR1 TAD I ENR1 /GET ADDR IN ENTTBL DCA ENR1 TAD GDRETP /RTABLE JMS I ENS01 /HOW MANY PEOPLE HAVE THIS FILE OPEN? ENR1, 0 SKP /FOUND THE SAME FILE OPEN ISZ ENR0 /...ONLY ONE WHO HAS IT OPEN JMP I ENR0 ENS01, ENS0 /CHANGE THE PROTECTION OF A FILE PRT0, TAD FIOSTK+1 /PICK UP INTERNAL FILE NUMBER RTR RTR RAR AND P0003 /AND OFF PROTECTION BITS DCA PRIFNU /INTERNAL FILE NUMBER TAD PRIFNU JMS I UC01 /CHECK TO SEE IF USER IS OWNER JMP PRT1 /ERROR RETURN, USER IS NOT OWNER JMS I ACC01 /IS [S]HE UNDER ACCOUNT 1? JMP PRT1+1 /YES; ERROR - [S]HE MUST USE #RENAME# TAD PRIFNU JMS I GD01 /GET THIS DIRECTORY ENTRY INTO CORE SNA JMP I DIRBAD /**************DEBUG************* TAD P0004 DCA PRENTP /POINTER TO PROTECTION BITS OF THIS FILE TAD C7637 AND FIOSTK+1 /PICK UP NEW PROTECTION BITS DCA I PRENTP /RESTORE DCA BUFMOD /SCHEDULE WRITE JMP I FIEXIT PRT1, SZA CLA /ERROR CLL CML RAR CLL CML RAR DCA FIUSAC JMP I FIEXIT CLO3, PRIFNU, 0 PRENTP, 0 C7637, 7637 WHO0, JMS I JBLD0 DCA PAS1 CMA /ONE WORD SEARCH JMS I DS01 /SEARCH THE MFD FOR THIS ACC'T # PAS0 JMP I DIRBAD /************DEBUG ONLY*********** DCA PAS1 TAD I PAS1 /GET ACC'T # FROM UFD FILE NAME BLOCK ISZ PAS1 DCA FIOSTK+1 /STORE ACC'T # TAD I PAS1 ISZ PAS1 DCA FIOSTK+2 /STORE FIRST TWO CHRS OF PASSWORD TAD I PAS1 DCA FIOSTK+3 /STORE LAST TWO CHARS OF PASSWORD JMP I PAINF5 /GO STORE THIS INFORMATION FOR RETURN TO MONITOR PAINF5, INF5 PAS0, RTABLE PAS1, JBLD, 0 TAD FIJOB TAD JOBTAB CFLD DCA CFH TAD I CFH JMP I JBLD /ROUTINE TO MOVE THE RETRIEVAL WINDOW IN FIELD ZERO *1000 WND0, TAD FIOSTK+2 /PICK UP INTERNAL FILE NUMBER AND P0003 /AND OFF FIELD BITS JMS I EBLD0 DCA WNENTP /POINTER TO RETRIEVAL INFORMATION POINTER TAD I WNENTP JMS I BLDP1 /GENERATE ABSOLUTE PTR INTO RETTBL DCA WNRETP /RETRIEVAL POINTER TAD FIOSTK+7 DCA WNFCBP /PTR TO THIS FILE'S FILE CONTROL BLOCK TAD FIOSTK+5 DCA WND5 /LOW ORDER DISK ADDRESS DCA WNDCNT /GET INTO CORE TAD WNDCCT /INITIALIZE COUNT DCA WNDSCT TAD C0177 AND FIOSTK+1 /GET HIGH ORDER FILE ADDRESS DCA WNDIRP TAD SEGSIZ /GET RID OF ADDRESS WITHIN SEGMENT CLL CIA AND WND5 RAL TAD WNDIRP /NOW HAVE FILE SEGMENT #; NEED TO SHIFT IT SKP RAL ISZ WNDSCT /SHIFT SEGCCT TIMES? JMP .-2 DCA WNSEGC DATFLD /WNSEGC NOW HAS SEGMENT NUMBER TO GET TAD I WNFCBP /PICK UP FIELD 0 WINDOW POINTER DCA WNDPTR /PNTS TO FILE RETRIEVAL WINDOW FOR THIS FILE ISZ WNFCBP TAD I WNFCBP /PICK UP NUMBER OF CURRENT SEGMENT IN WINDOW DCA WNCURS /CURRENT SEGMENT IN WINDOW TAD WNSEGC /SEGMENT TO GET JMS I WND201 /DIVIDE BY 7 (IGNORE REMAINDER) JMS WND30 /MULTIPLY BY 7 DCA WNSEGC /FIRST SEGMENT IN PROPER WINDOW CLA CMA TAD I WNDPTR /GET FIRST WORD OF FILE RETRIEVAL WINDOW SNA CLA /=7777? JMP WND6 /INVALID WINDOW POINTER TAD WNCURS /CURRENT SEGMENT AT TOP OF CURRENT CORE WINDOW CIA