1195 lines
30 KiB
Plaintext
1195 lines
30 KiB
Plaintext
/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 <ILLEGAL CONFIGURATION>>
|
||
IFNZRO 24-JOBMAX&4000 <ILLEGAL CONFIGURATION>
|
||
IFNZRO 23-KL8-PT08&4000 <ILLEGAL CONFIGURATION>
|
||
IFNZRO 24-DC08A&4000 <ILLEGAL CONFIGURATION>
|
||
IFZERO DC08A <D689=0>
|
||
IFNZRO DC08A < IFNZRO PHONES <D689=4>
|
||
IFZERO PHONES <D689=0>>
|
||
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 <DSKSIZ=10>
|
||
IFZERO RS08-2 <DSKSIZ=20>
|
||
IFZERO RS08-3 <DSKSIZ=30>
|
||
IFZERO RS08-4 <DSKSIZ=40>
|
||
DSKEXT= DSKSIZ-1>
|
||
IFZERO RF08 <DSKSIZ=RS08^100 /# 4K DISC TRACKS
|
||
DSKEXT= RS08^100+77>
|
||
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 <DCSIZE=0>
|
||
IFNZRO DC08A <DCSIZE=400> /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 <MQREG=1>
|
||
IFZERO EAE <IFNZRO CPU&7776 <MQREG=1>
|
||
IFZERO CPU&7776 <MQREG=0>>
|
||
IFNZRO OUTREG&1 <YOU GOOFED>
|
||
/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 <YOU GOOFED>
|
||
|
||
/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
|
||
|