1
0
mirror of https://github.com/livingcomputermuseum/cpus-pdp8.git synced 2026-01-12 00:12:44 +00:00
2016-01-02 16:39:18 +00:00

4432 lines
213 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/TSS-8.25 CONFIGURATION FOR UWM Page 1
1 /TSS-8.25 CONFIGURATION FOR UWM
2 /CONFIGURATION PARAMETERS FOR THE TSS/8 MONITOR
3 /COPYRIGHT 1971 - DIGITAL EQUIPMENT CORPORATION; MAYNARD, MASS.
4 /
5 /TSS-8 SYSTEM PARAMETERS AND OPTIONS. FOR EACH PARAMETER,
6 /THE COMMENT INIDCATES THE POSSIBLE RESPONSES.
7
8 0000 DEBUG= 0 /SYSTEM DEBUGGING CONTROL:
9 / =0, PRODUCTION SYSTEM (AUTO-RESTARTS & ERROR FIXUP)
10 / =1, SYSTEM RELIABILITY (JUST AUTO-RESTARTS)
11 / =2, SYSTEM DEBUGGING (SYSTEM HALTS ON ERROR)
12 / =3, FULL CHECKING (THOROUGH 'RETB' CHECK)
13 /BITS 0-8, AVAILABLE FOR LOCAL SWITCHES:
14 / 4000 - ENABLE MQ MEMORY DISPLAY (IN TIMER)
15
16 0002 CPU= 2 /0 IF CPU IS PDP-8/I; 1 IF PDP-8
17 / 2 IF PDP-8/E; 3 IF PDP-12; 4 IF PDP-8/A
18
19 0000 EAE= 0 /20 IF CPU INCLUDES EAE; 0 IF NOT
20
21 0070 CORMEM= 70 /HIGHEST DATA FIELD SELECT; FOR 12K SYS,
22 / RESPOND 20; FOR 16K, RESPOND 30; FOR 32K, 70
23
24 0000 D680= 0 /2 IF TTY INTERFACING IS 680 OR DC08;
25 / 0 IF TTY INTERFACING IS PT08'S
26
27 0000 PHONES= 0 /1 IF 680 OR DC08 INCLUDES 689 OR DC08F;
28 / 0 IF IT DOESN'T OR TTY INTERFACING IS PT08'S
29
30 0000 RF08= 0 /40 IF SYSTEM DISC IS DF32; 0 IF RF08
31
32 0001 RS08= 1 /# OF DISCS IN SYSTEM, WHETHER RF08 OR DF32
33
34 0001 RK05= 1 /# OF NONSYSTEM RK05 DRIVES
35
36 0000 RK8E= 0 /# OF RK8E DRIVES; ONLY FIRST IS USED FOR SYSTEM
37 / THE REMAINDER ARE TREATED AS PERIPHERALS
38
39 0001 READER= 1 /1 IF SYSTEM INCLUDES HIGH-SPEED READER; 0 IF NOT
40
41 0001 PUNCH= 1 /1 IF SYS HAS HSP, 0 IF NOT
42
43 0001 TC01= 1 /1 IF SYS HAS DECTAPES; 0 IF NOT
44
45
46 0000 TD8E= 0 /1 IF TD8E DECTAPES AVAILABLE FOR LOADING & DUMPING
47 / 0 IF NOT; NOTE THAT TD8E TAPES CANNOT BE USED UNDER
48 / TSS/8, THEY REQUIRE CONTINUOUS CPU ATTENTION
49
50 0003 LPT= 3 /0 IF NO PRINTER ON SYS; 1 IF LP08; 2 IF LS8E; 3 IF NONSTANDARD
51
52 0000 CDR= 0 /NO SYS CAN HAVE CARD READER
53 /
54 /MONITOR OPTIONS
55 /FILL IN THE FOLLOWING LINES TO INDICATE THE
56 /MONITOR CAPACITY FOR THIS SYSTEM
57
/TSS-8.25 CONFIGURATION FOR UWM Page 2
58 DECIMAL
59 0024 JOBMAX= 20 /NUMBER OF SIMULTANEOUS USERS (.LE. 20)
60
61 0001 CONTTY= 1 / (ALWAYS HAVE A CONSOLE)
62
63 0000 DC08A= 0 /NUMBER OF TERMINALS VIA DC08A (PDP-8/I ONLY, 19 MAX)
64
65 0000 DC08LO= 0 /LOWEST LINE-NUMBER USED ON DC08A
66
67 0000 PT08= 0 /NUMBER OF TERMINALS VIA PT08 (PDP-8 & PDP-8/I ONLY)
68
69 0017 KL8= 15 /NUMBER OF TERMINALS VIA KL8E (PDP-8/E ONLY, 19 MAX)
70
71 0003 CDVIN= 3 /NONSTANDARD INPUT CHARACTER DEVICES (HIGHEST USED)
72 / 1 = R2; 2 = X0; 3 = X1; 4 = X2; 5 = X3
73
74 0004 CDVOUT= 4 /NONSTANDARD OUTPUT CHARACTER DEVICES (HIGHEST USED)
75 / 1 = P2; 2 = L2; 3 = Y0; 4 = Y1; 5 = Y2; 6 = Y3
76
77 0012 TRUKBD= 10 /NUMBER OF ACTUAL KEYBOARDS ON SYSTEM (NOT COUNTING
78 / CONSOLE TTY). THIS MUST BE .LE. NULINE; NULINE
79 / MAY INCLUDE DUMMY TERMINALS, THIS MAY NOT.
80
81 0012 FRCMAX= TRUKBD /THE HIGHEST KEYBOARD # A '00XX' ACCT # MAY FORCE
82 / NOTE THAT A '000X' ACCOUNT MAY FORCE UP TO 'NULINE'
83
84 0012 TLKMAX= TRUKBD /THE HIGHEST KEYBOARD # WHICH MAY BE 'TALK'ED TO
85
86 0012 BRDMAX= TRUKBD /THE HIGHEST KEYBOARD WHICH WILL RECEIVE BROADCASTS
87 OCTAL
88
89 0002 DTAMIN= 2 /THE FIRST DECTAPE DRIVE WHICH WILL BE ASSIGNED
90 / FOR 'ASSIGN D' COMMAND; NORMALLY =0, BUT MAY
91 / VARY FOR SLIGHTLY RESTRICTED DRIVE USE.
92
93 0007 BILLNG= 7 /THE ACCOUNT NUMBER OF THE BILLING SYSTEM
94 / 0, IF NO BILLING SYSTEM USED
95 /
96 /SYSTEM CONSTANTS
97
98 0020 INFLD= 20 /FIELD SELECT THAT 'INIT' SHOULD BE BOOTED INTO
99 / MAKING IT 20 AVOIDS PROBLEMS SHOULD A
100 / FIELD NEED REPAIR & SYSTEM IS RUN ON 12K
101 0001 TTYEVEN=1 /1 INDICATES PARITY TTY MAY BE USED WITH SYS
102 / 0 ALLOWS ONLY DEC MODIFIED TTYS
103
104 /// END OF SYSTEM CONFIGURATION PARAMETERS
/TSS-8.25 CONFIGURATION FOR UWM Page 3
105
106 /PARAMETERS - UWM VERSION 25
107 /
108 /COPYRIGHT 1971 DIGITAL EQUIPMENT CORPORATION
109 / MAYNARD, MASSACHUSETTS
110 /
111 /EXTENSIVELY MODIFIED AND CORRECTED BY
112 / RICHARD BARTLEIN, 1974, 1976
113 / UNIVERSITY OF WISCONSIN - MILWAUKEE
114 /
115 0031 VERNUM= 31 /SYSTEM VERSION NUMBER
116 /
117 0000 IFZERO DC08A <D689=0>
118 IFNZRO DC08A <
119 IFNZRO PHONES <D689=4>
120 IFZERO PHONES <D689=0>>
121
122 0017 NULINE= DC08A+PT08+KL8 /NUMBER OF TERMINALS LESS CONSOLE
123 37777777772 QUANT= -6 /NUMBER OF SYSTEM TICKS PER TIME SLICE
124 0000 PLT= 0
125 0005 STOMIN= 5 /MINIMUM # FREE STORAGE BLOCKS FOR NEW JOB
126 0005 SWDEX= 5 /DISC TRACK OF FIRST SWAP AREA
127 0024 TICSPS= 24 /NUMBER OF SYSTEM TICKS PER SECOND
128
129 IFZERO RK8E <
130 IFZERO RF08-40 <
131 DSKSIZ= RS08^10
132 >
133 IFZERO RF08 <
134 0100 DSKSIZ= RS08^100 /# OF 4K DISC TRACKS
135 >>
136 IFNZRO RK8E <
137 DSKSIZ= 400 /# OF 4K DISC TRACKS
138 >
139 0062 CLOCKR= TICSPS%2+1750%TICSPS /MILLISECONDS PER SYSTEM TICK
140 0645 INCLK2= 0645 /1,728,000 TICKS PER DAY
141 17000 INCLK1= 600^TICSPS / (LOW 12 BITS OF 86,400 SECS/DAY * TICKS/SEC)
142 2260 TICMIN= 74^TICSPS /SYSTEM TICKS PER MINUTE
143
144 0010 INIDEX= 10 /INIT DISC EXTENSION
145 0030 TS8DEX= 30 /FIELD 0 DISC EXTENSION*2^3
146 0000 ERPDEX= 0 /ERP DISC EXTENSION*4
147 0000 ERPWC= 0 /ERP WORD COUNT
148 0004 FIPDEX= 4 /FIP DISC EXTENSION*4
149 0000 FIPWC= 0 /FIP WORD COUNT
150 0000 SIDEX= ERPDEX /SI DISC EXTENSION*4
151 0000 SIWC= ERPWC /SI WORD COUNT
152 0002 LIBACT= 2 /LIBRARY ACCOUNT #
153 4000 BRKINI= 4000 /INITIAL USER BREAK MASK
154 0400 WRDSEG= 400 /#WORDS PER DISC SEGMENT
155
156 /IOT DEFINITIONS
157
158 IFZERO D680-2 <
159 TTINCR= 6401 /INCREMENT LINE REGISTER
160 TTI= 6402 /TELETYPE INPUT COMMAND
161 TTO= 6404 /TELETYPE OUTPUT COMMAND
/TSS-8.25 CONFIGURATION FOR UWM Page 4
162 TTCL= 6411 /CLEAR LINE REGISTER
163 TTSL= 6412 /SET LINE REGISTER, CLEAR AC
164 TTRL= 6414 /READ LINE REGISTER
165 T8SKP= 6421 /SKIP ON CLOCK FLAG
166 T8OFF= 6422 /TURN CLOCK OFF
167 TT8ON= 6424 /TURN CLOCK ON
168 TTRINC= 6461 /INCREMENT THE R REG.
169 TT8CLR= 6473 /CLEAR AND LOAD THE R REG.
170 >
/TSS-8.25 CONFIGURATION FOR UWM Page 5
171 /EXTENDED MEMORY
172
173 6201 CDF= 6201 /CHANGE TO DATA FIELD 0
174 6202 CIF= 6202 /CHANGE TO INSTRUCTION FIELD 0
175 6203 CDI= 6203 /CHANGE DATA & INSTRUCTION FIELDS
176 6204 CINT= 6204 /CLEAR USER IOT
177
178 6214 RDF= 6214 /READ DATA FIELD
179 6224 RIF= 6224 /READ INSTRUCTION FIELD
180 6234 RIB= 6234 /READ INTERRUPT BUFFER
181 6244 RMF= 6244 /RESTORE MEMORY FIELD
182 6254 SINT= 6254 /SKIP ON USER IOT
183 6264 CUF= 6264 /USER FLAG OFF
184 6274 SUF= 6274 /USER FLAG ON
185
186 /EAE
187 IFZERO EAE-20 <
188 MUY= 7405 /MULTIPLY
189 DVI= 7407 /DIVIDE
190 NMI= 7411 /NORMALIZE
191 SHL= 7413 /SHIFT ARITHMETIC LEFT
192 ASR= 7415 /ARITHMETIC SHIFT RIGHT
193 LSR= 7417 /LOGICAL SHIFT RIGHT
194 MQL= 7421 /LOAD MQ
195 SCL= 7403 /STEP COUNTER LOAD FROM MEMORY
196 SCA= 7441 /STEP COUNTER TO AC
197 MQA= 7501 /MQ TO AC
198
199 IFZERO CPU-2 <
200 DPSZ= 7451 /SKIP IF AC=MQ=0 (MODE B ONLY)
201 SAM= 7453 /SUBTRACT AC FROM MQ
202 SKB= 7671 /SKIP IF MODE B (MESSES UP AC AND MQ)
203 SWBA= 7447 /CHANGE MODE TO A
204 SWAB= 7431 /CHANGE MODE TO B (ALSO DOES MQL)
205 ACS= 7403 /AC(7:11) TO SC; AC CLEARED
206 >>
207 IFZERO CPU-2 <
208 6003 SRQ= 6003 /SKIP ON INTERRUPT REQUEST
209 6004 GTF= 6004 /LINK TO AC0, GT FLAG TO AC1
210 6005 RTF= 6005 /AC0 TO LINK, AC1 TO GT FLAG
211 6006 SGT= 6006 /SKIP ON GT FLAG
212 6007 CAF= 6007 /CLEAR ALL FLAGS
213 6102 SPL= 6102 /SKIP ON POWER LOW
214 >
215
216 IFZERO CPU-4 <
217 SPL= 6102 /SKIP ON POWER LOW
218 CAL= 6133 /CLEAR POWER LOW FLAG
219 >
220
221 /LINE PRINTER IOTS
222 6661 LSF= 6661 /SKIP ON CHAR FLAG SET
223 6662 LCF= 6662 /CLEAR CHAR FLAG
224 6663 LSRP= 6663 /SKIP ON NOT READY OR ON ERROR
225 6664 LLC= 6664 /TRANSMIT CHAR TO PRINTER
226 6665 LIE= 6665 /AC11 TO INTERRUPT ENABLE (LS08/LS8E)
227 6665 LSP= 6665 /SET PROGRAM INTERRUPT (LP08/LE8)
/TSS-8.25 CONFIGURATION FOR UWM Page 6
228 6666 LPC= 6666 /TRANSMIT CHAR & CLEAR FLAG
229 6667 LCP= 6667 /CLEAR PROGRAM INTERRUPT
/TSS-8.25 CONFIGURATION FOR UWM Page 7
230 /CTY
231
232 6044 TPC= 6044 /LOAD TELEPRINTER AND PRINT
233
234 /DISC (DF32)
235
236 6601 DCMA= 6601 /CLEAR
237 6603 DMAR= 6603 /READ
238 6605 DMAW= 6605 /WRITE
239 6611 DCEA= 6611 /CLEAR DISC EXTENDED ADDRESS
240 6615 DEAL= 6615 /LOAD EXTENDED ADDRESS
241 6621 DFSE= 6621 /SKIP ON ERROR
242 6622 DFSC= 6622 /SKIP ON COMPLETION
243 6616 DEAC= 6616 /READ EXTENDED ADDRESS
244
245 /DISC (RF08)
246
247 6615 DIML= 6615
248 6616 DIMA= 6616
249 6643 DXAL= 6643
250
251 /RK05 DISC IOTS
252 6740 IFZERO PHONES <RKDV=6740>
253 IFNZRO PHONES <RKDV=6750>
254 6741 DSKP= RKDV+1 /SKIP IF DONE OR ERROR
255 6742 DCLR= RKDV+2 /CLEAR THE CONTROLLER
256 6743 DLAG= RKDV+3 /LOAD DISC ADDRESS & GO
257 6744 DLCA= RKDV+4 /LOAD CURRENT CORE ADDRESS
258 6745 DRST= RKDV+5 /READ THE STATUS
259 6746 DLDC= RKDV+6 /LOAD THE COMMAND REGISTER
260 6747 DMAINT= RKDV+7 /MAINTENANCE ONLY
261
262 /
263 /TC08 DECTAPE CONTROLLER IOTS
264 6761 DTRA= 6761 /READ A-REGISTER
265 6762 DTCA= 6762 /CLEAR A-REGISTER
266 6764 DTXA= 6764 /XOR INTO A-REGISTER
267 6771 DTSF= 6771 /SKIP ON DECTAPE FLAG
268 6772 DTRB= 6772 /READ STATUS-REGISTER (B)
269 6774 DTLB= 6774 /LOAD STATUS-REGISTER (B)
270
271 /CARD READER IOTS
272 6631 RCSF= 6631 /SKIP ON DATA READY
273 6632 RCRA= 6632 /READ ALPHANUMERIC
274 6634 RCRB= 6634 /READ BINARY
275 6635 RCNO= 6635 /READ CONDITIONS OUT TO CARD READER (8/E ONLY)
276 6636 RCRC= 6636 /READ COMPRESSED (8/E ONLY)
277 6637 RCNI= 6637 /READ CONDITION IN FROM CARD READER (8/E ONLY)
278 6671 RCSD= 6671 /SKIP ON CARD DONE FLAG
279 6672 RCSE= 6672 /SELECT CARD READER AND SKIP IF READY
280 6674 RCRD= 6674 /CLEAR CARD DONE FLAG
281 6675 RCSI= 6675 /SKIP IF INTERRUPT BEING GENERATED (8/E ONLY)
282 6677 RCTF= 6677 /CLEAR TRANSITION FLAGS (8/E ONLY)
283
284 IFZERO CPU <
285 /KW8I REAL TIME CLOCK
286
/TSS-8.25 CONFIGURATION FOR UWM Page 8
287 CECI= 6137 /CLEAR AND ENABLE CLOCK AND INTERRUPT
288 CSCF= 6133 /SKIP AND CLEAR FLAG IF FLAG
289 >
290
291 IFZERO CPU-1 <
292 CECI= 6315 /CLOCK ENABLE
293 CSCF= 6301 /SKIP ON CLOCK FLAG
294 CCF= 6302 /CLEAR CLOCK FLAG, CLEAR ENABLE AND CLEAR BUFFER
295 CLB= 6304 /LOAD BUFFER FROM AC
296 >
297
298 IFZERO CPU-2 <
299 6131 CECI= 6131 /CLOCK ENABLE
300 6133 CSCF= 6133 /SKIP AND CLEAR FLAG IF FLAG
301 >
302
303 IFZERO CPU-3 <
304 CLAB= 6133
305 CLLR= 6132
306 CLEN= 6134
307 CLSA= 6135
308 CLSK= 6131
309
310 MTPF= 6113
311 MINT= 6115
312 MTON= 6117
313 MKTF= 6123
314 MINS= 6125
315 MTRS= 6127
316
317 MKSF= 6111
318 MKCC= 6112
319 MKRS= 6114
320 MKRB= 6116
321
322 MTSF= 6121
323 MTCF= 6122
324 MTPC= 6124
325 MTLS= 6126
326 >
327
328 IFZERO CPU-4 <
329 CLLE= 6135 /AC11 TO CLOCK INTERRUPT ENABLE
330 CLCL= 6136 /CLEAR CLOCK FLAG
331 CLSK= 6137 /SKIP ON CLOCK FLAG
332 >
333
334 IFNZRO DC08A <
335 /689AG
336
337 SRF= 6701 /SKIP IF RING FLAG
338 SCF= 6711 /SKIP IF CARRIER FLAG
339 DFCRF= 6742 /CLEAR RING FLAG
340 CTG= 6721 /CLEAR GROUP COUNTER
341 RRS= 6702 /READ RING STATUS
342 ITG= 6731 /INCREMENT GROUP COUNTER
343 STR= 6722 /SET TERMINAL READY
/TSS-8.25 CONFIGURATION FOR UWM Page 9
344 EDF= 6704 /ENABLE DATAPHONE FEATURES
345 DDF= 6714 /DISABLE DATAPHONE FEATURES
346 CTR= 6724 /CLEAR TERMINAL FLAG
347 CCF= 6741 /CLEAR CARRIER FLAG
348 RCS= 6712 /READ CARRIER STATUS
349 >
/TSS-8.25 CONFIGURATION FOR UWM Page 10
350 /FIP IOTS (AS USED INTERNALLY)
351
352 0040 ASD= 0040 /ASSIGN DEVICE
353 0042 REL= 0042 /RELEASE DEVICE
354 0200 REN= 0200 /RENAME FILE
355 6601 OPEN= 6601 /OPEN FILE
356 0202 CLOS= 0202 /CLOSE
357 6603 RFILE= 6603 /READ FILE
358 0204 PROT= 0204 /PROTECT
359 6605 WFILE= 6605 /WRITE FILE
360 6606 XOPEN= 6606 /OPEN FILE WITH EXCLUSIVE USE
361 0207 CPASS= 0207 /CHANGE A USER'S PASSWORD
362 0210 CRF= 0210 /CREATE
363 0211 EXT= 0211 /EXTEND
364 0212 RED= 0212 /REDUCE
365 6613 FINF= 6613 /FILE INFORMATION
366 0214 LIN= 0214 /LOGIN
367 0215 LOUT= 0215 /LOGOUT
368 0220 BCLR= 0220 /CLEAR MFD BILLING INFORMATION
369
370
371 /DEVICE DATA BLOCK
372
373 0000 DDBSTS= 0 /WORD 1. STATUS AND UNIT NUMBER
374 2000 DXON= 2000 /XOFF SENT FLAG - SEND 'XON' WHEN NEEDED
375 1000 DSI= 1000 /DESTINATION IS S.I. FLAG
376 0400 DFULL= 400 /INDICATES BUFFER IS FULL
377 0200 DUPL= 200 /CONSOLE IN DUPLEX MODE
378 0100 SICOM= 100 /COMMAND WAITING
379 0040 CTRLC= 40 /USER TYPED CTRL/C
380 0020 DECHO= 20 /CAUSE 'SI' TO ECHO INPUT BUFFER
381 0010 DHALF= 10 /KEYBOARD IS HALF-DUPLEX (HARDWARE)
382 0004 DFORC= 4 /KEYBOARD WAS JUST FORCED
383 0002 CTRLB= 2 /COMMAND PRECEDED BY EXPLICIT CTRL/B
384
385 /OUTPUT SIDE:
386
387 4000 CTRLS= 4000 /CTRL-S ENTERED (OUTPUT FROZEN)
388 3000 DXOFF= 3000 /JAM 'XOFF' INTO OUTPUT
389 1000 DBELL= 1000 /JAM 'BELL' INTO OUTPUT
390 0001 DTALK= 1 /LOCK KEYBOARD AGAINST TALKS
391
392 /OUTPUT REGISTER:
393
394 / 4000 - BUFFER CHECKING REQUESTED
395 / 2000 - DEVICE INTERRUPT EXPECTED
396 / 1000 - 5-SECOND TIMEOUT FLAG
397 / 400-2 - NEXT BUFFERED CHARACTER
398 / 0001 - BUFFERED CHARACTER WAITING
399
400 0001 DDBJN= 1 /WORD 2. JOB NUMBER IN 7-11; DEVICE NUMBER IN 0-6
401 0002 DDBBRK= 2 /BREAK MASK
402 0204 SIBRKM= 204 /SI BREAK MASK
403 0003 DDBTIM= 3 /TIME THAT DEVICE WAS ASSIGNED
404 0004 DDBINP= 4 /BUFFER FILL POINTER
405 0005 DDBINC= 5 /BUFFER FILL COUNT
406 0006 DDBOUC= 6 /BUFFER EMPTY COUNT
/TSS-8.25 CONFIGURATION FOR UWM Page 11
407 0007 DDBOUP= 7 /BUFFER EMPTY POINTER
408
409 /FILE CONTROL BLOCK - POINTED TO BY JOBFX, X=0,1,2,3
410
411 0000 FILWPT= 0 /POINTER TO FILE RETRIEVAL WINDOW
412 0001 FILSCT= 1 /SEGMENT NUMBER OF FIRST WINDOW ENTRY
413 0002 FILPRO= 2 /FILE READ-ONLY (BIT 9), FILE PRIVILEGED (BIT 11)
414 0003 FILPAR= 3 /POINTER TO RFILE OR WFILE PARAMETER BLOCK
415 0004 FILDA= 4 /DISC ADDRESS OF RFILE OR WFILE
416 0006 FILWC= 6 /-WORD COUNT OF RFILE OR WFILE
417 0007 FILRES= 7 /POINTER TO FILPIF IN USER AREA
418
419 /FILE RETRIEVAL WINDOW
420 /WORD 0: UFD LINK TO NEXT GROUP OF 7 SEGMENT POINTERS
421 /WORDS 1-7: SEVEN SEGMENT ADDRESSES
422
423 /RFILE OR WFILE PARAMETER BLOCK - POINTED AT BY FILPAR
424
425 0000 FILPFN= 0 /FUNCTION: 0603 OR 0605
426 0001 FILPDX= 1 /DISC EXTENSION
427 0002 FILPIF= 2 /INTERNAL FILE # (BITS 10-11) AND FIELD # (BITS 7-9)
428 0003 FILPWC= 3 /-WORD COUNT FOR THIS TRANSFER
429 0004 FILPCA= 4 /CORE ADDRESS FOR THIS TRANSFER
430 0005 FILPDA= 5 /DISC ADDRESS
431 0006 FILPRA= 6 /EXEC RETURN ADDRESS FOR THIS TRANSFER
432 0007 FILPCT= 7 /POINTER TO FILE CONTROL BLOCK
/TSS-8.25 CONFIGURATION FOR UWM Page 12
433 /JOB DATA AREA
434
435 0000 JOBSTS= 0 /STATUS
436 /STR0
437 4000 JSRUN= 4000 /RUN BIT
438 2000 JSEREN= 2000 /USER ERROR ENABLE
439 1000 JCOMBD= 1000 /LAST TIME THE JOB RAN AS COMPUTE BOUND
440 0400 JSPRIV= 400 /LIBRARY PROGRAM (HAS PRIVILEGES)
441 0200 JSHLT= 200 /PROGRAM EXECUTED 'HLT'
442 0100 JSIOT= 100 /NON-RESIDENT IOT
443 0040 JSIOTC= 40 /COPY IOT RESULT TO USER
444 0020 JSRSEN= 20 /PROGRAMMATIC CTRL/C ENABLE
445 0010 JSINER= 10 /INHIBIT SI ERROR UNTIL NEXT COMMAND
446
447 0200 JSACC= 200
448 0100 JSBAT= 100 /BATCH-MODE
449
450 /BITS 9-11 ARE SYSTEM ERROR CODE
451
452 0001 UUOERF= 1 /IOT ERROR
453 0002 SWPRER= 2 /SWAP READ ERROR
454 0003 SWPWER= 3 /SWAP WRITE ERROR
455 0005 DSKERR= 5 /DISC ERROR
456 0006 HUNGDV= 6 /HUNG DEVICE
457
458 /STR1
459 4000 JSTIME= 4000 /TIME IS UP
460 2000 JSF0= 2000 /FILE 0 NOT BUSY
461 1000 JSF1= 1000 /FILE 1 IS NOT BUSY
462 0400 JSF2= 400 /FILE 2 IS NOT BUSY
463 0200 JSF3= 200 /FILE 3 IS NOT BUSY
464 0100 JSDEL= 100 /DELIMITER SEEN
465 0040 JSLPT= 40 /LPT BUFFER IN USE BUT NOT FULL
466 0020 JSTEL= 20 /OUTPUT BUFFER NOT FULL
467 0010 JSPTR= 10 /CHARACTER IN READER BUFFER
468 0004 JSPTP= 4 /PUNCH BUFFER IS NOT FULL
469 0002 JSERR= 2 /SYSTEM ERROR DETECTED
470 0001 JSWAIT= 1 /JOB NOT IN WAIT STATE
471
472 0002 JOBSTB= 2 /DEVICE STATUS REGISTER (RK05, DECTAPE, & CARD READER)
473 0003 JOBWMK= JOBSTB+1 /WAIT MASK
474 0004 JOBDWT= JOBWMK+1 /JOB DEVICE-WAIT
475 0005 JOBSRA= JOBDWT+1 /JOB RESTART ADDRESS
476 0006 JOBERR= JOBSRA+1 /JOB ERROR RESTART ADDRESS
477 0007 JOBLNK= JOBERR+1 /IOT LINKAGE
478 0010 JOBSWR= JOBLNK+1 /SWITCH REGISTER
479 0011 JOBREG= JOBSWR+1 /PC, AC, & LINK (W/MODE, GT, & SC)
480 0014 JOBEAE= JOBREG+3 /MQ REGISTER
481 0015 JOBACT= JOBEAE+1 /USER'S ACCOUNT #
482 0016 JOBRTM= JOBACT+1 /LOW ORDER RUN TIME
483 0017 JOBRTH= JOBRTM+1 /HIGH ORDER RUN TIME
484 0020 JOBF0= JOBRTH+1 /POINTER TO FILE 0 CONTROL
485 0021 JOBF1= JOBF0+1 /POINTER TO FILE 1 CONTROL
486 0022 JOBF2= JOBF1+1 /POINTER TO FILE 2 CONTROL
487 0023 JOBF3= JOBF2+1 /POINTER TO FILE 3 CONTROL
488 0024 JOBSCH= JOBF3+1 /SCHEDULING CONTROL-WORD
489
/TSS-8.25 CONFIGURATION FOR UWM Page 13
490
491 /CORE TABLE CONTROL FLAGS
492
493 4000 FSWP= 4000 /SWAP REQUEST
494 2000 LOCK= 2000 /LOCK IN CORE
495 1000 NOTRUN= 1000 /HAS NOT BEEN SCHEDULED TO RUN
496 0400 FIP= 400 /FILE PHANTOM (NOTE: FIP HAS BEEN ASSUMED EQUAL TO WRDSEG)
497 0200 SI= 200 /SYSTEM COMMAND INTERPRETER PHANTOM
498 0140 NOHOLD= 140 /DISC COMPLETION PRIORITY (SKIPPED EVERY 4 TRANSFERS)
499 0037 CJOB= 37 /MASK FOR JOB NUMBER
/TSS-8.25 CONFIGURATION FOR UWM Page 14
500 /FIP TABLE DEFINITIONS
501
502 0530 SATSIZ= 530
503 5600 ENTABL= 5600
504 6040 UTABLE= JOBMAX^10+ENTABL
505 6160 RTABLE= JOBMAX^4+UTABLE /*** CHANGE TO ^10 LATER ***
506
507 /TS8 TABLE DEFINITIONS
508
509 7001 CORTBL= 7001
510 7010 L2QTB= CORTBL+7
511
512 /TS8II TABLE DEFINITIONS
513 0003 IFNZRO CDVIN <CDVGAP=3> /ROOM FOR HSR, ?, AND CDR
514 IFZERO CDVIN <CDVGAP=0>
515 0000 IFZERO DC08A <DCSIZE=0>
516 IFNZRO DC08A <DCSIZE=400> /DC08A & 689AG CODE
517
518 0200 OUTREG= 200 /ACTIVE OUTPUT REGISTERS
519 0226 SKPTBL= OUTREG+NULINE+CONTTY+CDVOUT+2 /START OF IOT SKIP TABLE
520 0275 SKPTP= SKPTBL+NULINE+NULINE+CONTTY+CONTTY+CDVIN+CDVGAP+1
521 0304 RINGIN= SKPTP+CDVOUT+3 /INPUT RING BUFFER
522 0400 ENDBUF= OUTREG+200 /END OF KEYBOARD INPUT BUFFER
523 0036 INPUTS= ENDBUF-RINGIN%2 /NUMBER OF POSSIBLE RING-BUFFER ENTRIES
524 6211 DATFLD= CDF 10 /DATA FIELD SELECT
525
526 2400 DATA1= 2400+DCSIZE /START OF DATA AREA (ALMOST)
527 2600 DEVTBL= DATA1+200 /ACTUAL START OF DATA AREA
528 2640 DEVTBE= DEVTBL+NULINE+NULINE+2
529 2675 JOBTBL= DEVTBE+35
530 2722 CLKTBL= JOBTBL+JOBMAX+1
531 2747 TTYTBL= CLKTBL+JOBMAX+1
532 2774 PRGTBL= TTYTBL+JOBMAX+1
533 3061 DSUTBL= PRGTBL+JOBMAX+JOBMAX+JOBMAX-7
534 2200 OUTDIF= -OUTREG^2+DEVTBL /FOR LINKING BETWEEN OUTREG & DEVTBL
535
536 IFZERO EAE-20 <MQREG=1>
537 0001 IFZERO EAE <IFZERO CPU-2 <MQREG=1>
538 IFNZRO CPU-2 <MQREG=0>>
539
540 /// END OF SELF-DEFINING PARAMETERS -- START OF MONITOR LINKAGES ///
541
542 /A VERY FEW SELDOM CHANGED POINTERS
543
544 4201 AUTOST= 4201 /AUTOMATIC SYSTEM RESTART ENTRANCE TO 'INIT'
545 7720 FIPBLK= 7720 /THE I/O TRANSFER BLOCK FOR 'FIP'
546
547 /FREQUENTLY CHANGED POINTERS IN TS8 & TS8II; THESE ARE UPDATED
548 /BY THE 'LINK.TE' TECO MACRO. IN THE SOURCE, THEY ARE FLAGGED
549 /FOR THE MACRO TO FIND BY '/*'.
550
/TSS-8.25 CONFIGURATION FOR UWM Page 15
551
552 5200 BLT0= 5200 /BLOCK TRANSFER
553 0033 CLK1= 0033 /SYSTEM DAYCLOCK (LOW)
554 0034 CLK2= 0034 / (HIGH)
555 0030 CONDBA= 0030 /POINTER TO DEVTBL ENTRY IN USE
556 0031 CONDDB= 0031 /POINTER TO DDB IN USE
557 1317 CORSRC= 1317 /CORTBL SEARCH
558 7001 CORTBL= 7001 /CORE ALLOCATION TABLE (FIXED)
559 0035 DATE= 0035
560 7045 DEVCHK= 7045 /CHECK DEVICE OWNERSHIP
561 0036 DSBUSY= 0036 /DISC BUSY COUNT
562 0535 DTDEF0= 0535 /DECTAPE ERROR REGISTRATION
563 0541 DTDSF0= 0541 /DECTAPE BUFFER TO SWAP AREA
564 0527 DTDSK= 0527 /DECTAPE DISC COMPLETION
565 0551 DTL20= 0551 /DECTAPE LEVEL-2 DISPATCH
566 3671 DTRKHG= 3671 /ERROR SETTING FROM FIELD 1
567 5333 ENDIOT= 5333 /JMP TO EXIT HANDLER
568 0277 F1RTN= 0277 /RETURN FROM FIELD 1 INTERRUPT HANDLERS
569 0057 FIPJOB= 0057 /JOB REQUESTING 'FIP'
570 0040 FRECNT= 0040 /AVAILABLE FREE-CORE BLOCKS
571 0037 FREE= 0037 /LINK TO FIRST FREE-CORE BLOCK
572 1400 GETB= 1400 /GET A FREE-BLOCK
573 1440 GETDB0= 1440 /GET DDB BLOCK
574 7200 GETJTB= 7200 /GET ADDRESS OF LINKED ENTRY
575 6200 GIR00= 6200 /GENERAL INPUT ROUTINE
576 0062 JOB= 0062 /CURRENTLY ACTIVE JOB
577 4051 L2EXIT= 4051 /LEVEL-2 EXIT ROUTINE
578 0041 L2SF= 0041 /LEVEL 2: SAVED FIELD AND MODE
579 0042 L2SV0= 0042 /LEVEL 2: SAVED PC
580 2631 L2TIM3= 2631 /RETURN FROM 'TIMER' ROUTINE
581 5533 NFSEGS= 5533 /NUMBER OF FREE DISC SEGMENTS
582 2340 OUTIOT= 2340 /INCREMENT 'ACFLG' TO SIGNAL OUTPUT
583 5764 OVERL1= 5764
584 2364 OVERLA= 2364 /DISC TERMINATION FOR OVERLAYS
585 0572 OVRLA1= 0572 /SYSTEM OVERLAY COMPLETION DISPATCHER
586 1203 PRINT0= 1203 /TYPE CHARACTER
587 1473 QUEUE0= 1473 /REGISTER LEVEL-2 FOR FIELD 1
588 3652 READFI= 3652 /SI FILE-LOADER
589 4172 REDO0= 4172 /'REDO' AND IOT
590 3600 RELOAD= 3600 /AUTO-RESTART STARTUP
591 0600 RETB= 0600 /FREE A CORE-BLOCK
592 3676 RKL20= 3676 /LEVEL-2 DISPATCH FOR RK05
593 3640 SCHED0= 3640 /'RSCHED' ENTRY
594 4400 SICLR= 4400 /BUFFER CLEAR ROUTINE
595 0020 SIDATA= 0020 /SI CONTROL WORDS
596 2357 SLEEP= 2357 /PUT THE JOB TO SLEEP
597 2621 TIMCDR= 2621 /CARD READ TIMER
598 0032 TTCHAR= 0032 /CHARACTER FOR FEED ROUTINES
599 0172 UUDF= 0172 /USER FIELD SELECT
600 4404 UUOERR= 4404 /USER IOT ERROR
601 0336 UUOEX1= 0336 /IOT EXIT ROUTINE
602 3006 WSCHED= 3006 /'WAIT' ENTRY
603 1720 CDL11= 1720 /LEVEL-1 INTERRUPT FOR CARD READER
604 1704 CDL21= 1704 /LEVEL-2 HANDLER FOR CARD READER
605 0020 CJOBDA= 0020 /CURRENT JOB DATA POINTER
606 0027 DTJOB= 0027 /JOB HOLDING DECTAPE CONTROLLER
607 0601 DTL11= 0601 /LEVEL-1 INTERRUPT FOR DECTAPE
/TSS-8.25 CONFIGURATION FOR UWM Page 16
608 1004 DTL21= 1004 /DECTAPE LEVEL-2 COMPLETION
609 0177 F1BUF= 0177 /DDB EMPTY BLOCK
610 2512 F1DTST= 2512 /DECTAPE STOP ROUTINE
611 0176 F1ECNT= 0176 /DDB EMPTY COUNT
612 0036 F1OFFJ= 0036 /SYSTEM OFF/ON COMMAND FLAG
613 0175 F1TCNT= 0175 /DDB CHARACTER COUNT
614 0045 RKJOB= 0045 /JOB HOLDING RK05 CONTROLLER
615 2000 RKL11= 2000 /LEVEL-1 INTERRUPT FOR RK05
616 1615 RKL21= 1615 /LEVEL-2 HANDLER FOR RK05
617 2200 TIMER0= 2200 /FIELD 1 TIMER ROUTINE
618 2445 UPEEK1= 2445 /FIELD 1 PEEK IOT CODE
619 0174 UPTIM1= 0174 /SYSTEM UPTIME
620 0173 UPTIM2= 0173
621 1735 UUCDR= 1735 /UUO ENTRY FOR CARD READER
622 1415 UUDTRK= 1415 /UUO ENTRY FOR DECTAPE & RK05
623 7730 WINBAS= 7730 /BASIC RETRIEVAL WINDOW
/TSS-8.25 CONFIGURATION FOR UWM Page 17
624
625 /FIP - UWM VERSION 25
626 /
627 /COPYRIGHT 1971, 1975 DIGITAL EQUIPMENT CORPORATION
628 / MAYNARD, MASSACHUSETTS
629 /
630 /EXTENSIVELY MODIFIED AND CORRECTED BY
631 / RICHARD BARTLEIN, 1974, 1976
632 / UNIVERSITY OF WISCONSIN - MILWAUKEE
633
634 /HANDLES ALL NON RESIDENT FILE IOT'S
635 /RUNS IN EXEC MODE
636
637 0000 *0
638 00000 5401 JMP I .+1
639 00001 0200 FIP0
640 00002 3363 RETBK1, RETBKS
641 00003 3766 LNK01, LNK0
642 00004 2513 ZDS1, DSWORD /POINTER TO 'FIND' LOCATION IN DIRECTORY
643 0005 P0004= .
644 00005 0004 FIDEXP, FIPDEX /FIP DISC EXTENSION (SHIFTED 2 BITS)
645 0006 C002= .
646 00006 0002 FILPRP, FILPRO
647 0007 C0020= .
648 00007 0020 FIPFLD, 20 /FIELD WE ARE RUNNING IN
649
650 0010 *10
651 00010 0000 INDEX, 0 /ONLY REGISTER AVAILABLE IN FIP FOR INDEXING
652
653 /CONSTANTS
654
655 00011 0003 P0003, 3
656 00012 0005 C0005, 5
657 00013 0006 C0006, 6
658 00014 0007 P0007, 7
659 00015 0010 C0010, 10
660 00016 0037 P0037, 37
661 00017 0077 P0077, 77
662 00020 0200 C0200, 200
663 IFNZRO WRDSEG-400 <GLITCH>
664 0021 SEGSIZ=. /WRDSEG
665 00021 0400 C0400, 400
666 00022 0777 P0777, 777
667 00023 1000 P1000, 1000
668 00024 2000 P2000, 2000
669 00025 3777 C3777, 3777
670 00026 5400 P5400, 5400
671 00027 6603 C6603, 6603 /DMAR - DISC READ IOT
672 00030 6605 C6605, 6605 /DMAW - DISC WRITE IOT
673 00031 7000 C7000, 7000
674 00032 7400 C7400, 7400
675 00033 7700 C7700, 7700
676 00034 7770 P7770, -10
677 00035 7771 C7771, -7
678 00036 7774 C7774, -4
679
680 00037 0000 BUFSTA, 0 /BUFFER STATUS, 7777 IF FULL
/TSS-8.25 CONFIGURATION FOR UWM Page 18
681 00040 0000 BUFWRT, 0 /-1, IF BUFFER CHANGED
682 00041 7000 CORTBA, CORTBL-1
683 00042 7002 FANFLD, CORTBL-1+2 /PHANTOM FIELD ENTRY
684 00043 0031 FIBASE, SWDEX+JOBMAX /BASE ADDRESS OF ALLOCATABLE DISC STORAGE
685 00044 0000 FIUSPC, 0 /SAVED USER PC
686 00045 0000 FILINK, 0 /SAVED USER EAE MODE, LINK, GT, & SC
687 00046 0000 FIUSAC, 0 /SAVED USER AC
688 00047 0000 0 /SAVED USER MQ (IF ANY)
689 00050 0000 FIACCT, 0 /USER'S ACCOUNT NUMBER
690 00051 0000 FIJOB, 0 /JOB NUMBER FILE PHANTOM IS REPRESENTING
691 00052 0000 FIOPTR, 0 /POINTER TO FIELD 0 IOT
692 00053 0000 GDRETP, 0 /RETRIEVAL POINTER, SET BY GD0 ROUTINE
693 00054 0062 JOBA, JOB
694 00055 0020 JOBDAT, CJOBDA
695 00056 0000 OPNFLG, 0
696 00057 0000 SATSTA, 0 /SAT STATUS, 7777 IF CHANGED THIS RUN
697 00060 0000 TABSTA, 0 /TABLE STATUS, 7777 IF CHANGED THIS RUN
698 00061 0000 WNDREM, 0 /REMAINDER FROM DIVISION BY 7
699
700 /GLOBALS TO MONITOR DATA AREA
701
702 00062 2600 DEVTBA, DEVTBL
703 00063 2640 DEVEND, DEVTBE
704
705 /POINTERS TO FILE PHANTOM'S INTERNAL TABLES
706
707 ENTEND, /END OF ENTRY TABLE
708 00064 6040 UFDTBL, UTABLE /TABLE OF ALL ACCESSED UFD'S
709 UFDEND, /TOP OF UFD TABLE
710 00065 6160 RETTBL, RTABLE /TABLE OF RETRIEVAL INFORMATION FOR ALL ACCESSED UFD'S
711 00066 5570 ENTTBL, ENTABL-10 /TABLE REFLECTING STATE OF ALL POSSIBLE FILE NUMBERS
712 00067 5200 BUFFER, SEGBUF /BUFFER FOR DIRECTORY MANIPULATIONS
713 00070 7250 SATBOT, -SATSIZ /BOTTOM OF STORAGE ALLOCATION TABLE
714 DEVOVR,
715 00071 2675 JOBTBA, JOBTBL /END OF FIELD 1 DEVICE ASSIGNMENT TABLE
716
717
718 /SUBROUTINE POINTERS
719
720 00072 1141 BLDP1, BLDP /BUILD A POINTER TO RETTBL
721 4473 BLT= JMS I . /BLOCK TRANSFER
722 00073 5200 BLT0
723 4474 CHKACT= JMS I . /CHECK TYPE OF ACCOUNT NUMBER
724 00074 1162 CHKAC0
725 4475 CHKPRV= JMS I . /CHECK FOR PRIVILEGE
726 00075 5043 CHKPV0
727 4476 CHKSRC= JMS I . /CHECK SOURCE OF FIP CALL
728 00076 1363 CHKSR0
729 00077 1020 CL01, CL0 /CLOSE A FILE
730 4500 CORE= JMS I . /SEARCH THE CORTBL
731 00100 1317 CORSRC
732 00101 4000 DE01, DE0 /GET A FREE DIRECTORY ENTRY
733 00102 2475 DS01, DS0 /DIRECTORY SEARCH
734 00103 3703 DTE01, DTE0
735 00104 4565 EBLD0, EBLD /BUILD 'ENTTBL' ENTRY ADDRESS FROM FILE #
736 00105 2126 ENS01, ENS0 /COUNT NUMBER OF FILE OPENINGS
737 4506 FGETJT= JMS I . /FIND JOB STATUS-BLOCK WORD ADDRESS
/TSS-8.25 CONFIGURATION FOR UWM Page 19
738 00106 4152 FGETJ0
739 00107 3120 FIO01, FIPIO /COMMON DISC IO ROUTINE
740 00110 0350 GD01, GD0 /GET A FILE DIRECTORY ENTRY INTO CORE
741 00111 3000 GE01, GE0 /GET A DIRECTORY WORD INTO CORE
742 4512 GETBLK= JMS I . /FETCH A FREE BLOCK
743 00112 1400 GETB
744 4513 GETDDB= JMS I . /GET A DEVICE DATA-BLOCK
745 00113 1440 GETDB0
746 4514 GETJTA= JMS I . /GET A JOB-STATUS WORD ADDRESS
747 00114 7200 GETJTB
748 00115 2735 GTBLO1, GTBLOK
749 00116 0365 IFN01, IFN0
750 4517 REBOOT= JMS I . /INITIATE AUTOMATIC SYSTEM RESTART
751 00117 4170 RBOOT
752 00120 4204 REL01, REL00
753 4521 RETBLK= JMS I . /RETURN A FREE-CORE BLOCK
754 00121 0600 RETB
755 00122 2600 SATL1, SATLOK /GET A FREE SEGMENT FROM SAT
756 00123 2660 SATR1, SATREL /RELEASE A SEGMENT IN SAT
757 4524 SAVBUF= JMS I . /SET 'BUFFER CHANGED' SWITCH
758 00124 1374 SAVBF0
759 00125 3045 SCL01, SCL0 /CLEAR A DISC SEGMENT TO ZEROES
760 00126 3745 TF01, TF0 /FREE AN ENTRY ON UFD TABLE
761 00127 3200 UC01, UC0 /USER-OWNER FILE CHECK
762 00130 3400 UFO01, UFO0 /OPEN A UFD
763 00131 4121 UTS01, UTS0 /SEARCH UFD TABLE FOR PROJ,PROG NUMBER
764 5532 WAIT= JMP I . /RESCHEDULE
765 00132 3006 WSCHED
766 00133 1152 WRT1, WRITE /MAKE SURE THE BUFFER IS EMPTY
767
768 00134 3600 FIEXIT, FIX0 /EXIT ROUTINE
769 00135 2372 LGI201, LGI20 /-1 TO USER AC
770
771 /UTILITY ROUTINES
772 00136 0000 UTPRNU, 0 /USED BY UTS0 ROUTINE TO HAVE THE PTR TO UFD TABLE WHILE SEARCHING
773 00137 0000 CFH, 0 /THIS LOCATION IS USED FOR TEMP STORAGE BY MANY ROUTINES
774 6221 CFLD= 6221 /FIP IS IN FIELD 2 ALWAYS
775 00140 7730 BASWIN, WINBAS /FIELD 1 ADDRESS OF BASIC WINDOW
776
777 00141 0000 FIOSTK, 0 /STACK HOLDING IOT LINKAGE
778 00142 0000 0
779 00143 0000 0
780 00144 0000 0
781 00145 0000 0
782 00146 0000 0
783 00147 0000 0
784 00150 0000 0
785
786 00151 0000 FLPARB, 0 /TABLE FOR READ OR WRITE PARAMETER CONSTRUCTION
787 00152 0000 0
788 00153 0000 0
789 00154 0000 0
790 00155 0000 0
791 00156 0000 0
792 00157 2364 OVERLA
793 00160 0000 0
794
/TSS-8.25 CONFIGURATION FOR UWM Page 20
795 IFNZRO BILLNG <
796 00161 7771 LOGACT, -BILLNG /BILLING SYSTEM ACCOUNT NUMBER
797 >
/TSS-8.25 CONFIGURATION FOR UWM Page 21
798 0200 *200
799 /FILE PHANTOM START
800 /FIP'S FIRST JOB IS TO PICK UP THE IOT WHICH IT IS TO PERFORM
801 /AND THE PARAMETERS WHICH GO ALONG WITH IT. (IF ANY) THESE
802 /ARE MOVED INTO AN 8-WORD BLOCK CALLED 'FIOSTK' THE FIRST REG-
803 /ISTER IN THIS BLOCK CONTAINS THE IOT. PARAMETERS FOLLOW
804
805 00200 7300 FIP0, CLA CLL
806 00201 3057 DCA SATSTA /CLEAR SAT STATUS
807 00202 3060 DCA TABSTA /CLEAR TABLE STATUS
808 00203 3040 DCA BUFWRT /CLEAR THE 'WRITE BUFFER' SWITCH
809 /
810 /***** NOTE!!! IF, FOR ANY REASON, SOME PROGRAM IN THE SYSTEM
811 / WRITES INTO ANY UFD (INCLUDING THE MFD), THE FOLLOWING
812 / BUFFER STATUS-CHECK 'ISZ' SHOULD BE NOP'ED OUT. THIS WILL
813 / HELP PREVENT THE CASE WHERE FIP READS A BLOCK, THE PROGRAM
814 / WRITES INTO IT, AND THEN FIP WRITES IT BACK OUT, THUS
815 / CLOBBERING WHAT THE PROGRAM JUST WROTE OUT. NOTE THAT THIS
816 / COULD HAPPEN IN REVERSE ALSO, THEREBY MESSING UP FIP.
817 /
818 / NOTE ALSO THAT BY DISALLOWING FIP TO 'REMEMBER' WHAT'S IN
819 / ITS BUFFER CURRENTLY DOES NOT COMPLETELY PROTECT AGAINST
820 / THE ABOVE PROBLEM AND SHOULD NOT BE TAKEN LIGHTLY.
821 /***** ***** ***** ***** ***** ***** ***** ***** *****
822 00204 2037 ISZ BUFSTA /IS THERE ANYTHING IN THE BUFFER?
823 00205 5211 JMP .+4 /NO - JUST CLEAR THE SWITCH
824 00206 1722 TAD I RDCURA /YES - RE-SET THE ADDRESS BECAUSE IT
825 00207 4723 JMS I RD301 / MIGHT HAVE BEEN CLOBBERED AT LAST EXIT
826 00210 7240 CLA CMA /THEN RESET THE SWITCH
827 00211 3037 DCA BUFSTA
828 00212 6201 CDF
829 00213 1454 TAD I JOBA /GLOBAL TO "JOB"
830 00214 0016 AND P0037
831 00215 7450 SNA /IS EVERYTHING PROPER?
832 00216 4517 REBOOT /NO - ERROR *****
833 00217 3051 DCA FIJOB /SAVE IT
834 00220 4506 FGETJT /GET THE REGISTER SAVE-AREA ADDRESS
835 00221 0011 JOBREG
836 00222 3226 DCA .+4
837 00223 6202 CIF
838 00224 4473 BLT /SAVE THE USERS REGISTERS
839 00225 6211 DATFLD
840 00226 0000 FITPTR, 0
841 00227 6221 CFLD
842 00230 0044 FIUSPC
843 00231 7773 -5
844 00232 4476 CHKSRC /WHERE ARE WE COMING FROM?
845 00233 4475 CHKPRV /A PROGRAM - DOES IT HAVE PRIVILEGE?
846 00234 4721 JMS I FIPSFC /EITHER 'SI' OR NO PRIVILEGE - CLOSE SPECIAL FILES
847 00235 4506 FGETJT
848 00236 0007 JOBLNK /IOT REQUEST WORD
849 00237 3052 DCA FIOPTR /POINTER TO IOT LINKAGE
850 00240 6211 DATFLD /CDF FIELD 0
851 00241 1452 TAD I FIOPTR /PICK UP LINKAGE
852 00242 0032 AND C7400 /IS IT AN IOT? (IF IT IS, JOBDAT WILL HAVE BITS 0-3 CLEARED)
853 00243 7650 SNA CLA
854 00244 5313 JMP FIP2 /IS AN IOT, SO GO MOVE IT INTO FIOSTK (AC IS PARAMETER)
/TSS-8.25 CONFIGURATION FOR UWM Page 22
855 00245 1452 TAD I FIOPTR /IS A POINTER, PICK UP LINKAGE
856 00246 3253 DCA FIP6 /POINTER TO LINKAGE TABLE
857 00247 6221 CFLD
858 00250 6202 CIF
859 00251 4473 BLT /MOVE IOT PARAMETERS INTO FIOSTK
860 00252 6211 DATFLD
861 00253 0000 FIP6, 0
862 00254 6221 CFLD
863 00255 0141 FIOSTK /IOT LINKAGE BUFFER
864 00256 7770 -10
865 00257 1141 TAD FIOSTK
866 00260 7710 SPA CLA /WILL THE IOT PARAMETER BLOCK BE NEEDED TO RETURN PARS?
867 00261 5270 JMP FIP4 /YES, SO DON'T RETURN IT
868 00262 1253 TAD FIP6
869 00263 4402 JMS I RETBK1 /RETURN THE IOT PARAMETER BLOCK TO FREE CORE
870 00264 7300 CLA CLL
871 00265 6211 DATFLD
872 00266 3452 DCA I FIOPTR /CLEAR THE 'JOBLNK' POINTER
873 00267 6221 CFLD
874 /
875 /COMES HERE WHEN IOT AND ITS PARAMETERS ARE COMFORTABLY
876 /NESTLED IN FIOSTK
877 00270 1324 FIP4, TAD IOTABL
878 00271 3226 DCA FITPTR /TABLE POINTER
879 00272 2226 FIP5, ISZ FITPTR /PICK UP IOT FROM TABLE
880 00273 1626 TAD I FITPTR
881 00274 7450 SNA /END OF TABLE?
882 00275 4517 REBOOT /YES - ERROR *****
883 00276 7041 CIA /NO
884 00277 1141 TAD FIOSTK /IOT FROM USER
885 00300 7640 SZA CLA /DISPATCH?
886 00301 5272 JMP FIP5 /NO
887 00302 1226 TAD FITPTR /YES - GET THE DISPATCH ADDRESS
888 00303 1347 TAD IODSPA
889 00304 3226 DCA FITPTR
890 00305 1626 TAD I FITPTR
891 00306 3226 DCA FITPTR
892 00307 1141 TAD FIOSTK /DOES THIS IOT REQUIRE PARAMETERS TO BE
893 /RETURNED IN AN IOT PARAMETER BLOCK?
894 00310 7700 SMA CLA /...IF SO, USER AC CONTAINS A PTR. TO WHERE THEY WILL GO
895 00311 3046 DCA FIUSAC /CLEAR USER AC
896 00312 5626 JMP I FITPTR /DISPATCH
897
898 /COMES HERE FOR A "SHORT" IOT. SAVED AC IS ONLY PARAMETER
899 /PUT IT IN FIOSTK+1
900 00313 1452 FIP2, TAD I FIOPTR /PICK UP IOT
901 00314 3141 DCA FIOSTK /PLACE ON STACK
902 00315 1046 TAD FIUSAC /USER ACCUMULATOR
903 00316 3142 DCA FIOSTK+1 /SIMULATE LINKAGE
904 00317 6221 CFLD /CHANGE TO CURRENT FIELD
905 00320 5270 JMP FIP4
906 /
907 00321 4706 FIPSFC, PRVCLS
908 00322 3042 RDCURA, RDCURR /POINTER TO SEGMENT # IN BUFFER
909 00323 3067 RD301, RD30
/TSS-8.25 CONFIGURATION FOR UWM Page 23
910 00324 0324 IOTABL, . /TABLE OF USER FILE IOT'S
911 00325 0040 ASD /ASSIGN A DEVICE
912 00326 0042 REL /RELEASE A DEVICE
913 00327 0200 REN /RENAME A FILE
914 00330 6601 OPEN /OPEN A FILE
915 00331 0202 CLOS /CLOSE A FILE
916 00332 6603 RFILE /FILE READ (WINDOW MOVE)
917 00333 0204 PROT /FILE PROTECTION
918 00334 6605 WFILE /FILE WRITE (WINDOW MOVE)
919 00335 6606 XOPEN /OPEN A FILE WITH EXCLUSIVE USE
920 00336 0207 CPASS /CHANGE A USER'S PASSWORD
921 00337 0210 CRF /CREATE A FILE
922 00340 0211 EXT /EXTEND A FILE
923 00341 0212 RED /REDUCE A FILE
924 00342 6613 FINF /FILE INFORMATION
925 00343 0214 LIN
926 00344 0215 LOUT
927 00345 0220 BCLR /CLEAR ACCOUNT BILLING INFORMATION
928 00346 0000 0
929
930 00347 2424 IODSPA, IODISP-IOTABL-1
/TSS-8.25 CONFIGURATION FOR UWM Page 24
931 /ROUTINE TO GET A DIRECTORY ENTRY INTO CORE
932
933 /CALLING SEQUENCE:
934 / TAD (INTERNAL FILE NUMBER)
935 / JMS GD0
936 / RETURN (BUFFER POINTER IN AC, 0=ERROR)
937
938 00350 0000 GD0, 0
939 00351 4504 JMS I EBLD0
940 00352 3365 DCA GDUFDP
941 00353 1765 TAD I GDUFDP /RELATIVE POSITION IN UFD TABLE
942 00354 4472 JMS I BLDP1
943 00355 3053 DCA GDRETP /POINTER TO UFD RETRIEVAL INFORMATION
944 00356 2365 ISZ GDUFDP
945 00357 1765 TAD I GDUFDP /PICK UP ENTRY ADDRESS WITHIN UFD
946 00360 3363 DCA GD1
947 00361 1053 TAD GDRETP
948 00362 4511 JMS I GE01 /GET ENTRY INTO CORE
949 00363 0000 GD1, 0
950 00364 5750 JMP I GD0
951
952 GDUFDP,
953 00365 0000 IFN0, 0
954 00366 1142 TAD FIOSTK+1
955 00367 0011 AND P0003
956 00370 3142 DCA FIOSTK+1
957 00371 1142 TAD FIOSTK+1 /RETURN THE FILE INDEX
958 00372 5765 JMP I IFN0
/TSS-8.25 CONFIGURATION FOR UWM Page 25
959 PAGE
960 /THIS HANDLES THE 'OPEN' & 'XOPEN' IOTS.
961 /THE 'XOPEN' WORKS EXACTLY LIKE THE NORMAL 'OPEN', EXCEPT
962 /THAT THE USER GAINS EXCLUSIVE USE OVER THE FILE IF HE
963 /IS ALLOWED TO WRITE IT. NO ONE ELSE MAY OPEN IT WHILE
964 /HE HAS IT EXCLUSIVELY.
965 /
966 /THERE ARE SEVERAL SPECIAL CASES WHICH ARE HANDLED:
967 /
968 /A USER NO LONGER NEEDS HIS ACCT # & PASSWORD TO OPEN HIS UFD.
969 /ALL HE NEEDS IS THE OWNER'S ACCT BE 0001 AND THE FIRST
970 /WORD OF THE NAME BE 0 OR HIS ACCT #. IF HIS IS A SYSTEM
971 /ACCOUNT, HE MAY OPEN ANY UFD (EXCEPT THE MFD) BY SETTING
972 /THE FIRST WORD OF THE NAME TO THE DESIRED ACCOUNT.
973 /
974 /EXCEPT WHEN OPENED BY THE SYSTEM MANAGER (0001), ALL UFD'S
975 /ARE WRITE-PROTECTED REGARDLESS OF THE PROTECTION CODE.
976 /THIS ALLOWS THESE BITS IN THE MFD TO BE USED FOR DISC QUOTAS.
977 /
978 /WHEN AN OPERATOR ACCOUNT TRIES TO OPEN A NON-EXISTENT
979 /UFD, HE IS RETURNED THE NUMBER OF THE NEXT UFD IN
980 /THE FOURTH WORD OF HIS OPEN PACKET.
981 /
982 /WHEN 'SI' OPENS A FILE FROM THE SYSTEM LIBRARY WHICH
983 /HAS THE ".SVP" EXTENSION, WE SET THE "JSPRIV" BIT IN
984 /THE USER'S JOB-STATUS WORD. THIS ALLOWS ONLY CERTAIN
985 /SYSTEM PROGRAMS TO USE THE "PEEK" IOT, THUS PREVENTING
986 /USERS FROM EXAMINING SYSTEM KEYBOARD BUFFERS AND
987 /STEALING PASSWORDS.
988 /
989 /A USER (OTHER THAN ACCOUNT 1 OR 7) CAN ONLY OPEN A FILE
990 /OWNED BY THE BILLING SYSTEM (ACCOUNT 7) IF HE IS RUNNING
991 /A PROGRAM WHICH ENABLES HIS 'JSPRIV' BIT. CHANGING THE
992 /PROGRAM (THUS CLEARING PRIVILEGE) DISALLOWS ANY FURTHER
993 /I-O TO A PRIVILEGED FILE AND FORCES THE FILE CLOSED AT THE
994 /NEXT CALL TO 'FIP'.
995 /
996 /THE SYSTEM MANAGER AND, IF CONFIGURED, THE BILLING SYSTEM
997 /ACCOUNT MAY OPEN ANY FILE IN THE SYSTEM AS IF THEY OWNED IT.
998 /NOTE THAT THIS IS ONLY NECESSARY FOR DELETING OTHER USERS'
999 /FILES WHEN BILLING OR REMOVING AN ACCOUNT NUMBER.
1000 /
1001 /THE SYSTEM LIBRARY FILE "BASIC" IS GIVEN ITS OWN PRIVATE
1002 /RETRIEVAL WINDOW IN FIELD 1 ONLY IF IT IS WRITE-PROTECTED
1003 /AND IT IS NOT TOO LARGE FOR THIS FIXED WINDOW.
1004 /
1005 /ANY NUMBER OF USERS MAY NOW READ-WRITE THE SAME FILE
1006 /SIMULTANEOUSLY PROVIDING THAT NO ATTEMPTS ARE MADE
1007 /TO EXTEND OR REDUCE THE FILE. OBVIOUSLY, PROGRAMS
1008 /SHARING DATA FILES MUST USE SOME METHOD OF ENSURING
1009 /GRACEFUL FILE HANDLING.
/TSS-8.25 CONFIGURATION FOR UWM Page 26
1010 /
1011 0147 OPNACT= FIOSTK+6
1012 0150 OPNBUF= FIOSTK+7
1013 /
1014 00400 7330 XOPN0, CLA CLL CML RAR /SET THE 'EXCLUSIVE USE' BIT
1015 00401 3376 OPN0, DCA XOPNSW
1016 00402 4516 JMS I IFN01 /CHECK FOR A LEGAL FILE #
1017 00403 4477 JMS I CL01 /CLOSE THE FILE IF ANY OPEN
1018 00404 1143 TAD FIOSTK+2
1019 00405 7450 SNA /IS IT ASSUMED TO BE THIS USER'S FILE?
1020 00406 1050 TAD FIACCT /YES - FILL IT IN
1021 00407 3147 DCA OPNACT
1022 00410 7240 CLA CMA
1023 00411 1147 TAD OPNACT
1024 00412 7640 SZA CLA /IS IT A FILE-DIRECTORY?
1025 00413 5243 JMP OPN2 /NO
1026 /
1027 /HE WANTS TO OPEN A DIRECTORY - WE CHECK TO SEE IF
1028 /THE DIRECTORY HE WANTS IS HIS OR, IF NOT, IF HE
1029 /IS THE MANAGER OR OTHER SYSTEM PERSONNEL OR THE
1030 /BILLING SYSTEM ACCOUNT.
1031 00414 1144 TAD FIOSTK+3
1032 00415 7450 SNA /IS IT ASSUMED TO BE HIS OWN?
1033 00416 1050 TAD FIACCT /YES - SET IT
1034 00417 3144 DCA FIOSTK+3
1035 00420 1050 TAD FIACCT
1036 00421 7041 CIA
1037 00422 1144 TAD FIOSTK+3
1038 00423 7650 SNA CLA /IS IT HIS OWN UFD?
1039 00424 5242 JMP OPN1 /YES
1040 00425 7344 CLA CLL CMA RAL
1041 00426 1144 TAD FIOSTK+3
1042 00427 7450 SNA /IS IT THE LIBRARY UFD?
1043 00430 5242 JMP OPN1 /YES - ANYONE CAN READ THAT
1044 00431 7001 IAC
1045 00432 7650 SNA CLA /NO - IS IT THE MFD?
1046 00433 5362 JMP OPNER2 /YES - "PROTECTION VIOLATION"
1047 00434 4474 CHKACT /IS THIS THE MANAGER OR BILLING SYSTEM?
1048 00435 5242 JMP OPN1 /YES - THEY GET ANYTHING ELSE
1049 00436 1050 TAD FIACCT
1050 00437 0033 AND C7700
1051 00440 7640 SZA CLA /IS THIS A SYSTEM OPERATOR OR MANAGER?
1052 00441 5362 JMP OPNER2 /NO - "PROTECTION VIOLATION"
1053 00442 7240 OPN1, CLA CMA /SET NON-ZERO FOR ONE-WORD SEARCH
1054 00443 3331 OPN2, DCA OPNTYP / OF FILE-DIRECTORY
1055 00444 1144 TAD FIOSTK+3
1056 00445 7650 SNA CLA /IS IT A NULL FILENAME?
1057 00446 5361 JMP OPNER1 /YES - "FILE NOT FOUND"
1058 00447 1147 TAD OPNACT
1059 00450 4530 JMS I UFO01 /OPEN THE OWNER'S UFD
1060 00451 5361 JMP OPNER1 /NO SUCH USER - "FILE NOT FOUND"
1061 00452 1376 TAD XOPNSW /ADD IN THE 'EXCLUSIVE USE' BIT (4000)
1062 00453 3376 DCA XOPNSW / & SAVE FOR FIRST WORD OF 'ENTTBL' ENTRY
1063 00454 1376 TAD XOPNSW
1064 00455 4472 JMS I BLDP1 /GET THE 'RETTBL' ENTRY ADDRESS
1065 00456 3143 DCA FIOSTK+2
1066 00457 1331 TAD OPNTYP /NOW GET THE SEARCH-TYPE AND DO
/TSS-8.25 CONFIGURATION FOR UWM Page 27
1067 00460 4502 JMS I DS01 / A 1- OR 3-WORD DIRECTORY SEARCH
1068 00461 0143 FIOSTK+2
1069 00462 5355 JMP OPNER0 /NO FIND - "FILE NOT FOUND"
1070 00463 1005 TAD P0004
1071 00464 3150 DCA OPNBUF /SAVE THE POINTER TO THE PROTECT-WORD
1072 /
1073 /HERE WE FIGURE OUT THE TYPE OF ACCOUNT THIS USER
1074 /HAS & THEN SEE IF THE FILE IS PROTECTED AGAINST THAT
1075 /TYPE OF ACCESS.
1076 00465 1331 TAD OPNTYP
1077 00466 7640 SZA CLA /WAS THIS AN OPEN OF A 'UFD'?
1078 00467 5304 JMP OPN3 /YES - ONLY MANAGER #1 CAN WRITE THEM
1079 00470 4774 JMS I OPNPRT /CALCULATE THE PROTECTION CHECK-MASK
1080 00471 3056 DCA OPNFLG
1081 00472 1056 TAD OPNFLG /'AND' THE PROTECTION-CODE TO THE LOW-
1082 00473 0014 AND P0007 / ORDER 3 BITS OF THE MASK
1083 00474 0550 AND I OPNBUF
1084 00475 7640 SZA CLA /IS THE FILE READ PROTECTED?
1085 00476 5362 JMP OPNER2 /YES - "PROTECTION VIOLATION"
1086 00477 1056 TAD OPNFLG /NO - CHECK FOR 'WRITE-PROTECT'
1087 00500 7104 CLL RAL
1088 00501 0550 AND I OPNBUF
1089 00502 7650 SNA CLA /IS IT WRITE-PROTECTED?
1090 00503 5314 JMP OPN4 /NO
1091 00504 1331 OPN3, TAD OPNTYP
1092 00505 1050 TAD FIACCT
1093 00506 7650 SNA CLA /IS THIS THE MANAGER #1 OPENING A UFD?
1094 00507 5314 JMP OPN4 /YES - HE MUST BE ALLOWED TO WRITE IT
1095 00510 1376 TAD XOPNSW
1096 00511 7710 SPA CLA /DOES THE USER WANT EXCLUSIVE USE?
1097 00512 5362 JMP OPNER2 /YES, TOO BAD - "PROTECTION VIOLATION"
1098 00513 1005 TAD P0004 /NO - SET 'PROTECTED' BIT
1099 00514 3056 OPN4, DCA OPNFLG
1100 00515 1147 TAD OPNACT
1101 00516 1161 TAD LOGACT
1102 00517 7650 SNA CLA /WAS THIS AN ACCOUNT #7 (BILLING ACCOUNT) FILE?
1103 00520 4474 CHKACT /YES - IS THIS A MERE ORDINARY USER?
1104 00521 5325 JMP .+4 /NO
1105 00522 4475 CHKPRV /YES - IS HE RUNNING WITH PRIVILEGE?
1106 00523 5362 JMP OPNER2 /NO - ACCOUNT 7 FILES ARE SPECIAL - "PROTECTION VIOLATION"
1107 00524 2056 ISZ OPNFLG /SET THE 'SPECIAL FILE' BIT IN THE CONTROL BLOCK
1108 00525 1404 TAD I ZDS1 /GET THE SEARCH-FIND ADDRESS
1109 00526 3331 DCA .+3
1110 00527 1143 TAD FIOSTK+2
1111 00530 4505 JMS I ENS01 /NOW CHECK FOR OTHER OPENINGS
1112 00531 0000 OPNTYP, 0
1113 00532 7650 SNA CLA /ANYONE ELSE HAVE IT OPEN?
1114 00533 5343 JMP OPN5 /NO
1115 00534 7360 CLA CLL CMA CML
1116 00535 1773 TAD I OPNFND /YES - GET THE LAST 'FIND' ENTRY (IN 'ENTTBL')
1117 00536 3137 DCA CFH
1118 00537 1537 TAD I CFH
1119 00540 1376 TAD XOPNSW
1120 00541 7730 SPA SZL CLA /DOES SOMEONE ELSE HAVE 'EXCL. USE' OR DO WE WANT IT?
1121 00542 5364 JMP OPNER3 /YES, TOO BAD - "ANOTHER USER HAS FILE"
1122 00543 1142 OPN5, TAD FIOSTK+1 /WE HAVE THE FILE - NOW FILL IN THE
1123 00544 4504 JMS I EBLD0 / 'ENTTBL' ENTRY
/TSS-8.25 CONFIGURATION FOR UWM Page 28
1124 00545 3137 DCA CFH
1125 00546 1376 TAD XOPNSW /FIRST THE 'UFDTBL' INDEX &
1126 00547 3537 DCA I CFH / THE 'EXCLUSIVE USE' BIT
1127 00550 2137 ISZ CFH
1128 00551 1404 TAD I ZDS1 /THEN THE UFD ENTRY-ADDRESS
1129 00552 3537 DCA I CFH
1130 00553 5754 JMP I .+1 / AND GO DO THE BOOKKEEPING
1131 00554 0600 OPN6
1132
1133 /COMES HERE TO RETURN VARIOUS ERROR STATUSES.
1134 00555 4476 OPNER0, CHKSRC /IS THIS 'OPEN' FROM 'SI'?
1135 00556 1331 TAD OPNTYP /NO - WAS IT A PROGRAMMATIC OPEN OF A 'UFD'?
1136 00557 7640 SZA CLA /WAS THIS A DIRECTORY OPEN?
1137 00560 5775 JMP I OPNR0A /YES - RETURN THE NEXT UFD NUMBER
1138 /NO - JUST RETURN THE ERROR CODE
1139 00561 7330 OPNER1, CLA CLL CML RAR /7000 = "FILE NOT FOUND"
1140 00562 7130 OPNER2, CLL CML RAR /6000 = "PROTECTION VIOLATION"
1141 00563 7410 SKP
1142 00564 1023 OPNER3, TAD P1000 /4400 = "ANOTHER USER HAS FILE OPEN"
1143 00565 7130 CLL CML RAR
1144 00566 3046 OPNEXT, DCA FIUSAC /SET (OR CLEAR) HIS AC
1145 00567 6211 DATFLD
1146 00570 1452 TAD I FIOPTR
1147 00571 4402 JMS I RETBK1 /RETURN THE PARAMETER BLOCK
1148 00572 5534 JMP I FIEXIT /THEN EXIT FIP
1149 /
1150 00573 2167 OPNFND, ENSFND /LOC. OF LAST 'FIND' IN ENS0
1151 00574 0752 OPNPRT, OPNPR0 /CALCULATE CHECK-MASK
1152 00575 5106 OPNR0A, OPNR01
1153 00576 0000 XOPNSW, 0
/TSS-8.25 CONFIGURATION FOR UWM Page 29
1154 PAGE
1155 /
1156 /NOW WE CAN OPEN THE FILE - JUST BUILD THE FILE CONTROL-
1157 /BLOCK AND THE SEGMENT RETRIEVAL WINDOW.
1158 00600 7240 OPN6, CLA CMA
1159 00601 3060 DCA TABSTA /REMEMBER TO SAVE THE TABLES
1160 00602 4746 JMS I OPNPRV /CHECK TO SEE IF THE 'PRIVILEGE' BIT GETS SET
1161 00603 2150 ISZ OPNBUF
1162 00604 1550 TAD I OPNBUF /GET THE FILE SIZE (FOR BASIC CHECK)
1163 00605 3306 DCA OPNSIZ
1164 00606 2150 ISZ OPNBUF
1165 00607 2150 ISZ OPNBUF
1166 00610 1550 TAD I OPNBUF /GET THE RETRIEVAL WINDOW ADDRESS
1167 00611 3214 DCA .+3
1168 00612 1143 TAD FIOSTK+2
1169 00613 4511 JMS I GE01 /NOW READ IN THE FIRST WINDOW
1170 00614 0000 0
1171 00615 3333 DCA OPNWND / AND SAVE ITS IN-CORE ADDRESS
1172 00616 1142 TAD FIOSTK+1
1173 00617 1345 TAD OPNJF0 /FIND THE FILE STATUS WORD
1174 00620 3222 DCA .+2
1175 00621 4506 FGETJT / & GET ITS ADDRESS
1176 00622 0000 OPNPTR, 0
1177 00623 4515 JMS I GTBLO1 /THEN GET A LINKED-BLOCK FOR FILE CONTROL
1178 00624 3150 DCA OPNBUF / (POINTS TO WINDOW-ADDRESS)
1179 00625 7326 CLA CLL CML RTL /GET THE PROTECTION-WORD LOCATION
1180 00626 1150 TAD OPNBUF
1181 00627 3137 DCA CFH
1182 00630 1056 TAD OPNFLG / AND SET THE PROTECTION-WORD IN THE BLOCK
1183 00631 3537 DCA I CFH / 0=READ/WRITE; 4=READ ONLY
1184 /
1185 /NOW WE CHECK TO SEE IF THIS IS BASIC AND SHOULD HAVE ITS
1186 /OWN PRIVATE RETRIEVAL WINDOW.
1187 00632 1144 TAD FIOSTK+3
1188 00633 1347 TAD OPNBAS
1189 00634 7640 SZA CLA / "BA"?
1190 00635 5324 JMP OPN11 /NO
1191 00636 7344 CLA CLL CMA RAL
1192 00637 1147 TAD OPNACT
1193 00640 7650 SNA CLA /IS IT FROM THE SYSTEM LIBRARY?
1194 00641 1145 TAD FIOSTK+4 /YES
1195 00642 1350 TAD OPNBAS+1
1196 00643 7650 SNA CLA / "BASI"?
1197 00644 1146 TAD FIOSTK+5
1198 00645 1351 TAD OPNBAS+2
1199 00646 7650 SNA CLA / "BASIC "?
1200 00647 1056 TAD OPNFLG
1201 00650 7650 SNA CLA /YES - CAN HE ALTER IT?
1202 00651 5324 JMP OPN11 /YES - NO SPECIAL WINDOW
1203 00652 1306 TAD OPNSIZ
1204 00653 1140 TAD BASWIN
1205 00654 7700 SMA CLA /NO - IS IT TOO LARGE?
1206 00655 5323 JMP OPN10 /YES - INVALIDATE THE SPECIAL WINDOW
1207 /
1208 /HERE WE BUILD THE SPECIAL WINDOW FOR BASIC. NOTE THAT WHEN BASIC
1209 /IS TOO LARGE FOR THE WINDOW, WE INVALIDATE IT. TO INSURE THAT
1210 /THE SPECIAL WINDOW REFLECTS ANY CHANGES, WE ALWAYS REBUILD
/TSS-8.25 CONFIGURATION FOR UWM Page 30
1211 /IT, SINCE WE (CURRENTLY) HAVE NO GRACEFUL WAY OF DETECTING
1212 /A LONE USER CHANGING THE SIZE (SEVERAL USERS MAY NOW WRITE
1213 /INTO A FILE SIMULTANEOUSLY).
1214 00656 6221 CFLD
1215 00657 1140 TAD BASWIN /NO - SET THE WINDOW POINTER
1216 00660 3222 DCA OPNPTR
1217 00661 1333 OPN7, TAD OPNWND / AND THE RETRIEVAL-BLOCK BUFFER-ADDRESS
1218 00662 3010 DCA INDEX
1219 00663 1035 TAD C7771
1220 00664 3137 DCA CFH /SET THE SEGMENT/BLOCK COUNT (-7)
1221 00665 1410 OPN8, TAD I INDEX /NOW GET A SEGMENT NUMBER
1222 00666 7450 SNA /AT THE END OF THE SEGMENTS?
1223 00667 5311 JMP OPN9 /YES
1224 00670 2222 ISZ OPNPTR /NO - INCREMENT THE WINDOW POINTER
1225 00671 7410 SKP
1226 00672 7402 HLT /OOPS!! ERROR IN SIZE CHECK *****
1227 00673 6211 DATFLD
1228 00674 3622 DCA I OPNPTR /PLOP THE SEGMENT NUMBER INTO THE WINDOW
1229 00675 6221 CFLD
1230 00676 2137 ISZ CFH /INCREMENT COUNT
1231 00677 5265 JMP OPN8 / & CONTINUE
1232 00700 1733 TAD I OPNWND /GET THE NEXT BLOCK ADDRESS
1233 00701 7450 SNA /ARE WE DONE?
1234 00702 5311 JMP OPN9 /YES
1235 00703 3306 DCA .+3 /NO - SET NEXT ENTRY ADDRESS
1236 00704 1143 TAD FIOSTK+2
1237 00705 4511 JMS I GE01 /NOW GET THE NEXT WINDOW IN CHAIN
1238 00706 0000 OPNSIZ, 0
1239 00707 3333 DCA OPNWND / & SAVE ITS CORE-ADDRESS
1240 00710 5261 JMP OPN7 /OK - KEEP MOVING SEGMENT NUMBERS
1241 00711 6211 OPN9, DATFLD
1242 00712 7240 CLA CMA /ALL DONE - SET THE 'SET UP' SWITCH
1243 00713 3540 DCA I BASWIN
1244 00714 7410 SKP
1245 00715 3622 DCA I OPNPTR /CLEAR THE REST OF THE SPECIAL WINDOW
1246 00716 2222 ISZ OPNPTR
1247 00717 5315 JMP .-2
1248 00720 1140 TAD BASWIN /SET THE WINDOW ADDRESS IN THE
1249 00721 3550 DCA I OPNBUF / FILE CONTROL-BLOCK
1250 00722 5337 JMP OPN12 /NOW FINISH UP
1251 /
1252 /HERE WE FETCH A FREE-CORE BLOCK AND COPY THE FIRST WINDOW
1253 /INTO IT.
1254 00723 3540 OPN10, DCA I BASWIN /CLEAR THE BASIC WINDOW FLAG
1255 00724 1150 OPN11, TAD OPNBUF /GET THE WINDOW-ADDRESS POINTER
1256 00725 4515 JMS I GTBLO1 / & AND LINK A BLOCK TO IT
1257 00726 3335 DCA OPNPRW
1258 00727 6221 CFLD
1259 00730 6202 CIF
1260 00731 4473 BLT /NOW COPY OVER THE WINDOW
1261 00732 6221 CFLD
1262 00733 0000 OPNWND, 0 /SOURCE
1263 00734 6211 DATFLD
1264 00735 0000 OPNPRW, 0 /DESTINATION
1265 00736 7770 -10 /WORD-COUNT
1266 /
1267 /ALL DONE - NOW JUST INCREMENT THE UFD-USAGE COUNT & EXIT.
/TSS-8.25 CONFIGURATION FOR UWM Page 31
1268 00737 6221 OPN12, CFLD
1269 00740 7240 CLA CMA
1270 00741 1536 TAD I UTPRNU /INDICATE OUR UFD-USAGE
1271 00742 3536 DCA I UTPRNU
1272 00743 5744 JMP I .+1 /GO CLEAN UP & EXIT
1273 00744 0566 OPNEXT
1274 /
1275 00745 0020 OPNJF0, JOBF0
1276 00746 5056 OPNPRV, OPNPV0
1277 00747 3537 OPNBAS, -4241 / (-) "BASIC " IN TSS/8 6-BIT
1278 00750 1427 -6351
1279 00751 3500 -4300
1280
1281 /
1282 /SUBROUTINE TO CALCULATE THE PROTECTION CHECK-MASK. THIS
1283 /IS BASED ON WHO THE FILE OWNER IS COMPARED TO WHO IS
1284 /REQUESTING THE FILE.
1285 00752 0000 OPNPR0, 0
1286 00753 1147 TAD OPNACT
1287 00754 7041 CIA
1288 00755 1050 TAD FIACCT
1289 00756 7640 SZA CLA /IS IT HIS OWN FILE?
1290 00757 4474 CHKACT /NO - IS THIS A PRIVILEGED USER?
1291 00760 5374 JMP OPNPR1 /YES - HE OWNS EVERYTHING
1292 00761 1147 TAD OPNACT /NO - GET THE OWNER'S PROJECT
1293 00762 0033 AND C7700
1294 00763 7041 CIA
1295 00764 3335 DCA OPNPRW
1296 00765 1050 TAD FIACCT / AND THE REQUESTOR'S PROJECT
1297 00766 0033 AND C7700
1298 00767 1335 TAD OPNPRW
1299 00770 7650 SNA CLA /DO THE PROJECT NUMBERS MATCH?
1300 00771 1011 TAD P0003 /YES - MASK = 4
1301 00772 7101 CLL IAC /NO - MASK = 1
1302 00773 7410 SKP
1303 00774 1015 OPNPR1, TAD C0010 /OWNS FILE - MASK = 10
1304 00775 5752 JMP I OPNPR0 /RETURN WITH AC = MASK
/TSS-8.25 CONFIGURATION FOR UWM Page 32
1305 PAGE
1306 /ROUTINE TO CLOSE A FILE
1307
1308 01000 3216 CLS0, DCA CLSIFN /INTERNAL FILE NUMBER
1309 01001 1036 TAD C7774
1310 01002 3217 DCA CLCNTR /COUNTER FOR BIT SCAN
1311 01003 1142 CLS1, TAD FIOSTK+1 /PICK UP BIT PATTERN
1312 01004 7004 RAL
1313 01005 3142 DCA FIOSTK+1
1314 01006 7420 SNL /BIT SET FOR THIS FILE #?
1315 01007 5212 JMP .+3
1316 01010 1216 TAD CLSIFN /YES - GET THE FILE #
1317 01011 4220 JMS CL0 / AND CLOSE IT
1318 01012 2216 ISZ CLSIFN /NEXT FILE NUMBER
1319 01013 2217 ISZ CLCNTR /DONE ALL FOUR?
1320 01014 5203 JMP CLS1 /NO, KEEP AT IT
1321 01015 5534 JMP I FIEXIT /THROUGH
1322
1323 01016 0000 CLSIFN, 0
1324 01017 0000 CLCNTR, 0
1325
1326 /ROUTINE TO DO ACTUAL FILE CLOSE
1327 01020 0000 CL0, 0
1328 01021 4504 JMS I EBLD0
1329 01022 3266 DCA ENR0 /SAVE THE 'ENTTBL' POINTER
1330 01023 1137 TAD CFH
1331 01024 4403 JMS I LNK01 /RETURNS WITH PTR. TO FILE CONTROL BLOCK FROM JOB STATUS BLOCK
1332 01025 7450 SNA
1333 01026 5263 JMP CL3 /FILE WAS NOT OPEN
1334 01027 3277 DCA ENR1 /SAVE IT
1335 01030 3537 DCA I CFH /CLEAR POINTER TO FILE CONTROL BLOCK---INDICATES FILE CLOSED
1336 01031 6221 CFLD /SET DATA FIELD TO THIS FIELD
1337 01032 1277 TAD ENR1 /POINTER TO PARAMETER BLOCK
1338 01033 4402 JMS I RETBK1 /RETURN THE CONTROL-BLOCK
1339 01034 3277 DCA ENR1
1340 01035 1277 TAD ENR1 /GET THE RETRIEVAL-WINDOW ADDR.
1341 01036 7041 CIA
1342 01037 1140 TAD BASWIN
1343 01040 7650 SNA CLA /IS IT THE SPECIAL BASIC WINDOW?
1344 01041 5244 JMP .+3 /YES - DON'T FREE IT
1345 01042 1277 TAD ENR1 /NO - RETURN IT TO FREE-CORE
1346 01043 4402 JMS I RETBK1
1347 01044 7340 CLA CLL CMA
1348 01045 1666 TAD I ENR0 /RELATIVE POINTER TO UFD RETRIEVAL TABLE
1349 01046 7104 CLL RAL / * 2 (AND ZAP 'EXCLUSIVE USE' BIT)
1350 01047 7001 IAC
1351 01050 1064 TAD UFDTBL
1352 01051 3265 DCA CLUFDP /POINTER TO ACCESS COUNTER
1353 01052 3666 DCA I ENR0 /CLEAR PTR. IN ENTTBL TO INDICATE FILE IS CLOSED
1354 01053 7240 CLA CMA
1355 01054 3060 DCA TABSTA /SET TABLE STATUS TO WRITE OUT
1356 01055 2665 ISZ I CLUFDP /REMOVE THIS JOB FROM ACCESS COUNT IN UFDTBL
1357 01056 5620 JMP I CL0
1358
1359 /THIS WAS THE ONLY GUY USING THIS UFD, SO CLOSE IT OUT
1360 01057 7240 CLA CMA /NO ONE IS NOW ACCESSING THIS UFD
1361 01060 1265 TAD CLUFDP
/TSS-8.25 CONFIGURATION FOR UWM Page 33
1362 01061 4526 JMS I TF01 /FREE A TABLE ENTRY
1363 01062 5620 JMP I CL0
1364
1365 01063 6221 CL3, CFLD
1366 01064 5620 JMP I CL0
1367
1368 01065 0000 CLUFDP, 0
1369
1370 /FIND THE NUMBER OF PEOPLE ACCESSING THIS FILE
1371 /SKIPS IF EXACTLY ONE USER IS
1372 01066 0000 ENR0, 0
1373 01067 1142 TAD FIOSTK+1
1374 01070 4504 JMS I EBLD0
1375 01071 3277 DCA ENR1 /PTR. INTO ENTTBL
1376 01072 2277 ISZ ENR1
1377 01073 1677 TAD I ENR1 /GET ADDRESS IN UFD
1378 01074 3277 DCA ENR1
1379 01075 1053 TAD GDRETP /RTABLE
1380 01076 4505 JMS I ENS01 /HOW MANY PEOPLE HAVE THIS FILE OPEN?
1381 01077 0000 ENR1, 0
1382 01100 7041 CIA /RETURNS WITH # OF PEOPLE WHO HAVE THIS FILE OPEN
1383 01101 7040 CMA
1384 01102 7650 SNA CLA /IS THE PERSON TRYING TO CHANGE THE FILE THE
1385 01103 2266 ISZ ENR0 /...ONLY ONE WHO HAS IT OPEN?
1386 01104 5666 JMP I ENR0 /YES, SO SKIP
/TSS-8.25 CONFIGURATION FOR UWM Page 34
1387
1388 /CHANGE THE PROTECTION OF A FILE
1389
1390 01105 1142 PRT0, TAD FIOSTK+1 /PICK UP INTERNAL FILE NUMBER
1391 01106 7012 RTR
1392 01107 7012 RTR
1393 01110 7010 RAR
1394 01111 0011 AND P0003 /AND OFF PROTECTION BITS
1395 01112 3336 DCA PRIFNU /INTERNAL FILE NUMBER
1396 01113 1336 TAD PRIFNU
1397 01114 4527 JMS I UC01 /CHECK TO SEE IF USER IS OWNER
1398 01115 5331 JMP PRT1 /ERROR RETURN, USER IS NOT OWNER
1399 01116 1336 TAD PRIFNU
1400 01117 4510 JMS I GD01 /GET THIS DIRECTORY ENTRY INTO CORE
1401 01120 7450 SNA
1402 01121 7402 HLT /WHOOPS - ERROR *****
1403 01122 1005 TAD P0004
1404 01123 3337 DCA PRENTP /POINTER TO PROTECTION BITS OF THIS FILE
1405 01124 1340 TAD C7637
1406 01125 0142 AND FIOSTK+1 /PICK UP NEW PROTECTION BITS
1407 01126 3737 DCA I PRENTP / AND SET INTO THE DIRECTORY ENTRY
1408 01127 4524 SAVBUF /THEN RE-WRITE THE BUFFER
1409 01130 5534 JMP I FIEXIT
1410
1411 01131 7640 PRT1, SZA CLA /ERROR
1412 01132 7130 CLL CML RAR /6000 - "PROTECTION VIOLATION"
1413 01133 7130 CLL CML RAR /4000 - "NO FILE OPEN"
1414 01134 3046 DCA FIUSAC
1415 01135 5534 JMP I FIEXIT
1416
1417 01136 0000 PRIFNU, 0
1418 01137 0000 PRENTP, 0
1419 01140 7637 C7637, 7637
/TSS-8.25 CONFIGURATION FOR UWM Page 35
1420 /ROUTINE TO BUILD A RETRIEVAL POINTER FROM THE RELATIVE
1421 /POSITION IN RETTBL (WHICH IS ALSO THE ENTTBL POINTER).
1422
1423 /CALLING SEQUENCE:
1424 / TAD (RELATIVE POSITION)
1425 / JMS I BLDP1
1426 / RETURN (POINTER IN AC)
1427
1428 01141 0000 BLDP, 0
1429 01142 0025 AND C3777 /ZAP THE 'EXCLUSIVE USE' BIT
1430 01143 3137 DCA CFH
1431 01144 7240 CLA CMA
1432 01145 1137 TAD CFH /POINTER = [(PTR - 1) * 8 + RETTBL]
1433 01146 7104 CLL RAL; RTL
01147 7006
1434 01150 1065 TAD RETTBL
1435 01151 5741 JMP I BLDP /RETURN
1436
1437 /ROUTINE TO WRITE OUT THE SEGMENT-BUFFER IF NECESSARY.
1438
1439 01152 0000 WRITE, 0
1440 01153 2040 ISZ BUFWRT /NEED IT BE SAVED?
1441 01154 5752 JMP I WRITE /NO - JUST RETURN
1442 01155 1030 TAD C6605 /YES - SET THE 'WRITE' IOT
1443 01156 3151 DCA FLPARB
1444 01157 4507 JMS I FIO01 /THEN DO THE I/O
1445 01160 7402 HLT /ERROR ON WRITE - JUST CRASH *****
1446 01161 5752 JMP I WRITE / OTHERWISE RETURN
1447
1448 /ROUTINE TO CHECK THIS USER'S ACCOUNT NUMBER AND
1449 /SKIP IF HE IS A NORMAL USER; RETURN IS TO THE NEXT
1450 /INSTRUCTION IF HE IS EITHER THE SYSTEM MANAGER
1451 /(ACCOUNT NUMBER 0001) OR THE BILLING SYSTEM.
1452
1453 01162 0000 CHKAC0, 0
1454 01163 7240 CLA CMA
1455 01164 1050 TAD FIACCT
1456 01165 7650 SNA CLA /IS IT THE SYSTEM MANAGER?
1457 01166 5762 JMP I CHKAC0 /YES - SPECIAL EXIT
1458
1459 IFNZRO BILLNG <
1460 01167 1050 TAD FIACCT
1461 01170 1161 TAD LOGACT
1462 01171 7640 SZA CLA /NO - IS IT THE BILLING SYSTEM?
1463 >
1464 01172 2362 ISZ CHKAC0 /NO - NORMAL EXIT
1465 01173 5762 JMP I CHKAC0
/TSS-8.25 CONFIGURATION FOR UWM Page 36
1466 PAGE
1467 /ROUTINE TO MOVE THE RETRIEVAL WINDOW IN FIELD ZERO
1468 01200 1143 WND0, TAD FIOSTK+2 /PICK UP INTERNAL FILE NUMBER
1469 01201 0011 AND P0003 /AND OFF FIELD BITS
1470 01202 4504 JMS I EBLD0
1471 01203 3340 DCA WNENTP /POINTER TO RETRIEVAL INFORMATION POINTER
1472 01204 1740 TAD I WNENTP
1473 01205 4472 JMS I BLDP1 /GENERATE ABSOLUTE PTR. INTO RETTBL
1474 01206 3341 DCA WNRETP /RETRIEVAL POINTER
1475 01207 1150 TAD FIOSTK+7
1476 01210 3337 DCA WNFCBP /PTR. TO THIS FILE'S FILE CONTROL BLOCK
1477 01211 1146 TAD FIOSTK+5
1478 01212 3324 DCA WND5 /LOW ORDER DISC ADDRESS
1479 01213 3342 DCA WNDCNT /GET INTO CORE
1480 01214 7240 STA
1481 01215 1021 TAD SEGSIZ
1482 01216 0142 AND FIOSTK+1 /GET HIGH ORDER FILE ADDRESS
1483 01217 3276 DCA WNDIRP
1484 01220 1021 TAD SEGSIZ /GET RID OF ADDRESS WITHIN SEGMENT
1485 01221 7041 CIA
1486 01222 0324 AND WND5
1487 01223 7104 CLL RAL
1488 01224 1276 TAD WNDIRP /WE NOW HAVE ALL THE NECESSARY BITS
1489 01225 7006 RTL; RTL / SO SHIFT THEM AROUND
01226 7006
1490 01227 3343 DCA WNSEGC /SAVE AS SEGMENT # TO GET
1491 01230 6211 DATFLD /WNSEGC NOW HAS SEGMENT NUMBER TO GET
1492 01231 1737 TAD I WNFCBP /PICK UP FIELD 0 WINDOW POINTER
1493 01232 3300 DCA WNDPTR /PNTS TO FILE RETRIEVAL WINDOW FOR THIS FILE
1494 01233 2337 ISZ WNFCBP
1495 01234 1737 TAD I WNFCBP /PICK UP NUMBER OF CURRENT SEGMENT IN WINDOW
1496 01235 3344 DCA WNCURS /CURRENT SEGMENT IN WINDOW
1497 01236 1343 TAD WNSEGC /SEGMENT TO GET
1498 01237 4345 JMS WND20 /DIVIDE BY 7 (IGNORE REMAINDER)
1499 01240 4327 JMS WND30 /MULTIPLY BY 7
1500 01241 3343 DCA WNSEGC /FIRST SEGMENT IN PROPER WINDOW
1501 01242 7240 CLA CMA
1502 01243 1700 TAD I WNDPTR /GET FIRST WORD OF FILE RETIEVAL WINDOW
1503 01244 7650 SNA CLA / = 1?
1504 01245 5311 JMP WND6 /INVALID WINDOW POINTER
1505 01246 1344 TAD WNCURS /CURRENT SEGMENT AT TOP OF CURRENT CORE WINDOW
1506 01247 7161 CLL CML CIA
1507
1508 /NOW SEE IF THE SEGMENT BEING SOUGHT IS ONE WHICH FOLLOWS
1509 /THOSE WHICH ARE PRESENTLY IN THE CORE WINDOW. IF THE
1510 /SOUGHT BLOCK DOES FOLLOW THE PRESENT ONE, WE CAN LOOK
1511 /THROUGH THE RETRIEVAL INFORMATION BLOCKS STARTING AT THE ONE
1512 /NOW IN CORE. OTHERWISE, WE MUST START AT THE VERY BEGINNING
1513 /OF THE LIST OF FILE RETRIEVAL INFORMATION BLOCKS
1514 01250 1343 TAD WNSEGC
1515 01251 7470 SNA SZL
1516 01252 5311 JMP WND6 /PREVIOUS BLOCK, SO MUST START AT BEGINNING OF STRING
1517 01253 4345 JMS WND20 /DIVIDE BY 7
1518 01254 7041 CIA
1519 01255 3342 DCA WNDCNT /MOVE FORWARD THIS MANY WINDOWS
1520 01256 1300 TAD WNDPTR
1521 01257 3276 WND10, DCA WNDIRP
/TSS-8.25 CONFIGURATION FOR UWM Page 37
1522 01260 1676 TAD I WNDIRP /PICK UP ADDRESS OF NEXT WINDOW
1523 01261 6221 CFLD /CHANGE TO CURRENT FIELD
1524 01262 7450 SNA
1525 01263 5273 JMP WND13 /END OF STRING
1526 01264 3267 DCA WND11
1527 01265 1341 TAD WNRETP /POINTER TO UFD RETRIEVAL INFORMATION
1528 01266 4511 JMS I GE01 /GET ENTRY INTO CORE
1529 01267 0000 WND11, 0
1530 01270 2342 ISZ WNDCNT /HAVE WE MOVED AHEAD ENOUGH BLOCKS?
1531 01271 5257 JMP WND10 /NOT PROPER WINDOW, KEEP LOOKING
1532 01272 3276 DCA WNDIRP
1533 01273 6202 WND13, CIF
1534 01274 4473 BLT
1535 01275 6221 CFLD /SOURCE FIELD
1536 01276 0000 WNDIRP, 0 /SOURCE
1537 01277 6211 DATFLD /DESTINATION FIELD
1538 01300 0000 WNDPTR, 0 /DESTINATION
1539 01301 7770 -10 /(-) WORD COUNT
1540 01302 1342 TAD WNDCNT /CORRECT FOR WINDOWS THAT WEREN'T THERE
1541 01303 4327 JMS WND30 /MULTIPLY BY 7
1542 01304 1343 TAD WNSEGC /SEGMENT NUMBER OF FIRST IN WINDOW
1543 01305 6211 DATFLD
1544 01306 3737 DCA I WNFCBP /FILE CONTROL BLOCK POINTER
1545 01307 5710 JMP I .+1 /GO SET "JSIOTC" BEFORE EXITTING
1546 01310 2266 INF6
1547
1548 01311 6221 WND6, CFLD /CHANGE TO CURRENT FIELD
1549 01312 7300 CLA CLL
1550 01313 1343 TAD WNSEGC /SEGMENT TO GET INTO IN CORE WINDOW
1551 01314 4345 JMS WND20 /DIVIDE BY 7
1552 01315 7040 CMA
1553 01316 3342 DCA WNDCNT /WINDOW NUMBER TO GET INTO CORE
1554 01317 2340 ISZ WNENTP
1555 01320 1740 TAD I WNENTP /UFD ENTRY ADDRESS OF OPEN FILE
1556 01321 3324 DCA WND5
1557 01322 1341 TAD WNRETP /RETRIEVAL INFORMATION POINTER
1558 01323 4511 JMS I GE01 /GET ENTRY INTO CORE
1559 01324 0000 WND5, 0
1560 01325 1014 TAD P0007
1561 01326 5257 JMP WND10
/TSS-8.25 CONFIGURATION FOR UWM Page 38
1562 /ROUTINE TO MULTIPLY A NUMBER BY 7
1563
1564 01327 0000 WND30, 0
1565 01330 3137 DCA CFH
1566 01331 1137 TAD CFH
1567 01332 7104 CLL RAL
1568 01333 1137 TAD CFH
1569 01334 7104 CLL RAL
1570 01335 1137 TAD CFH
1571 01336 5727 JMP I WND30
1572
1573 01337 0000 WNFCBP, 0
1574 01340 0000 WNENTP, 0
1575 01341 0000 WNRETP, 0
1576 01342 0000 WNDCNT, 0
1577 01343 0000 WNSEGC, 0
1578 01344 0000 WNCURS, 0
1579
1580 /ROUTINE TO DIVIDE A NUMBER BY 7.
1581 /QUOTIENT IS RETURNED IN THE AC; REMAINDER
1582 /IS LEFT IN 'WNDREM' ON PAGE ZERO.
1583
1584 01345 0000 WND20, 0
1585 01346 3061 DCA WNDREM /SAVE THE NUMBER
1586 01347 3137 DCA CFH /CLEAR THE QUOTIENT
1587 01350 1061 TAD WNDREM
1588 01351 7120 CLL CML
1589 01352 1035 TAD C7771 /SUBTRACT 7
1590 01353 7430 SZL /DID WE GO TOO FAR?
1591 01354 5357 JMP .+3 /YES - ALL DONE
1592 01355 2137 ISZ CFH /NO - INCREMENT THE QUOTIENT
1593 01356 5351 JMP .-5 / & TRY ANOTHER SUBTRACTION
1594 01357 1014 TAD P0007
1595 01360 3061 DCA WNDREM /SAVE THE REMAINDER
1596 01361 1137 TAD CFH /THEN RETURN WITH THE QUOTIENT
1597 01362 5745 JMP I WND20
1598
1599 /ROUTINE TO CHECK THE SOURCE OF THE FIP CALL
1600 /AND SKIP IF WE WERE CALLED BY 'SI'.
1601 01363 0000 CHKSR0, 0
1602 01364 7200 CLA
1603 01365 6201 CDF
1604 01366 1442 TAD I FANFLD /GET THE 'CORTBL' ENTRY
1605 01367 6221 CFLD
1606 01370 0021 AND FIPFIP
1607 01371 7650 SNA CLA /'FIP' BIT SET?
1608 01372 2363 ISZ CHKSR0 /NO - MUST BE FROM 'SI'
1609 01373 5763 JMP I CHKSR0
1610
1611 /ROUTINE TO SET THE 'BUFFER CHANGED' SWITCH SO THAT THE
1612 /SEGMENT BUFFER WILL BE WRITTEN BACK OUT BEFORE THE NEXT
1613 /BLOCK IS READ OR WHEN FIP EXITS.
1614 01374 0000 SAVBF0, 0
1615 01375 7240 CLA CMA
1616 01376 3040 DCA BUFWRT /'BUFFER CHANGED' = -1
1617 01377 5774 JMP I SAVBF0
/TSS-8.25 CONFIGURATION FOR UWM Page 39
1618 PAGE
1619 /ROUTINE TO CREATE A NEW FILE
1620
1621 01400 1142 CRF0, TAD FIOSTK+1
1622 01401 7650 SNA CLA /IS THE NAME REASONABLE?
1623 01402 5340 JMP CRFER2 /NO - NO POINT CONTINUING
1624 01403 1050 TAD FIACCT /GET USER'S ACCT #
1625 01404 4531 JMS I UTS01 /SEARCH THE UFD TABLE
1626 01405 7402 HLT /MUST BE AN ENTRY IF WE'RE LOGGED-IN *****
1627 01406 4472 JMS I BLDP1 /BUILD A POINTER INTO RETTBL
1628 01407 3141 DCA FIOSTK / FOR THE DIRECTORY-SEARCH
1629 01410 7240 CRF1, CLA CMA
1630 01411 1050 TAD FIACCT
1631 01412 7650 SNA CLA /WILL THIS FILE BE A DIRECTORY?
1632 01413 7240 CLA CMA /YES - THEN NEW ACCOUNT NUMBER MUST BE UNIQUE
1633 01414 4502 JMS I DS01 /SEARCH THE DIRECTORY FOR THIS NAME
1634 01415 0141 FIOSTK
1635 01416 5251 JMP CRF2 /COULD NOT FIND THIS NAME, CONTINUE
1636 01417 3362 DCA CRBUFP /FILE ALREADY EXISTS - SAVE POINTER
1637 01420 7240 CLA CMA
1638 01421 1050 TAD FIACCT
1639 01422 7650 SNA CLA /ARE WE THE MANAGER (I.E. IS THIS A DIRECTORY)?
1640 01423 5341 JMP CRFER3 /YES - WE WON'T AUTOMATICALLY DELETE
1641 01424 1404 TAD I ZDS1 /GET ITS RELATIVE UFD-ENTRY LOCATION
1642 01425 3230 DCA CRFSEG /UFD ADDRESS OF DIRECTORY ENTRY
1643 01426 1141 TAD FIOSTK
1644 01427 4505 JMS I ENS01 /SEARCH ENT TABLE FOR ACCESSES TO THIS FILE
1645 01430 0000 CRFSEG, 0 /UFD ADDR. OF DIRECTORY ENTRY
1646 01431 7640 SZA CLA /RETURNS WITH # OF ACCESSES TO THIS FILE
1647 01432 5345 JMP CRFER5 /ERROR - FILE IS IN USE
1648
1649 /COMES HERE IF A FILE BY THIS NAME ALREADY EXISTS, BUT NOONE
1650 /HAS OPENED IT
1651 01433 1230 TAD CRFSEG
1652 01434 3771 DCA I CRGD11 /SET DIRECTORY-ENTRY LOCATION FOR 'RED1'
1653 01435 1141 TAD FIOSTK
1654 01436 3053 DCA GDRETP / ALONG WITH THE 'RETTBL' ENTRY ADDRESS
1655 01437 1362 TAD CRBUFP
1656 01440 1005 TAD P0004 /GET THE PROTECTION-WORD LOCATION
1657 01441 3366 DCA CRFENT
1658 01442 1766 TAD I CRFENT
1659 01443 0007 AND C0020
1660 01444 7640 SZA CLA /IS THE FILE WRITE-PROTECTED AGAINST OWNER?
1661 01445 5341 JMP CRFER3 /YES - SAY "PROTECTION VIOLATION"
1662 01446 1362 TAD CRBUFP
1663 01447 4774 JMS I RED11 /NO - DELETE THE FILE
1664 01450 5210 JMP CRF1 / AND LOOK AGAIN FOR THE CHAIN END
1665
1666 /NOW ALL SET TO CREATE THE FILE. TO DO THIS, WE NEED TWO BLOCKS OF
1667 /THE UFD--ONE FOR A NAME BLOCK AND THE SECOND FOR A FILE RETRIEVAL INFORMATION
1668 /BLOCK. THESE BLOCKS ARE OBTAINED BY TWO CALLLS TO DE0. AFTER THE FIRST,
1669 /A DUMMY 7777 IS PUT IN THE FOUND BLOCK TO PREVENT THE SECOND CALL
1670 /TO DE0 FROM FINDING THE SAME BLOCK. IF BOTH BLOCKS CANNOT BE OBTAINED,
1671 /THE CREATE CANNOT BE EXECUTED.
1672 01451 7450 CRF2, SNA /WERE WE PASSED THE LAST LINK-ADDRESS?
1673 01452 1011 TAD P0003 /NO - MUST BE EMPTY DIRECTORY
1674 01453 3367 DCA CRFLNK /ADDR. OF LINK WORD OF LAST ENTRY IN UFD CHAIN
/TSS-8.25 CONFIGURATION FOR UWM Page 40
1675 01454 1141 TAD FIOSTK /POINTER TO RETRIEVAL INFORMATION
1676 01455 4501 JMS I DE01 /FIND AN EMPTY DIRECTORY ENTRY
1677 01456 5344 JMP CRFER4+1 /ERROR - "USER DIRECTORY FULL"
1678 01457 3366 DCA CRFENT
1679 01460 1366 TAD CRFENT
1680 01461 4356 JMS CRFGET /GET THE WORD INTO CORE
1681 01462 7240 CLA CMA
1682 01463 3762 DCA I CRBUFP /SIMULATE A USED ENTRY
1683 01464 1141 TAD FIOSTK
1684 01465 4501 JMS I DE01 /NOW FIND AN ENTRY FOR THE RETRIEVAL-BLOCK
1685 01466 5343 JMP CRFER4 /NONE AVAILABLE - "DIRECTORY FULL"
1686 01467 3370 DCA CRFRET
1687 01470 1370 TAD CRFRET
1688 01471 4356 JMS CRFGET /MAKE SURE THE ENTRY IS IN CORE
1689 01472 4522 JMS I SATL1 /FIND A FREE SEGMENT IN THE SAT
1690 01473 7450 SNA
1691 01474 5336 JMP CRFER1 /NONE AVAILABLE - "DISC FULL"
1692
1693 /AT THIS POINT, WE HAVE A DISC SEGMENT AND TWO BLOCKS FROM THE
1694 /UFD. THIS IS ALL THAT IS NEEDED, SO GO AHEAD AND EXECUTE THE CREATE
1695 01475 2362 ISZ CRBUFP
1696 01476 3762 DCA I CRBUFP /SAVE THE SEGMENT NUMBER IN THE RETRIEVAL BLOCK
1697 01477 1762 TAD I CRBUFP
1698 01500 3230 DCA CRFSEG /SAVE THE INDEX FOR CLEARING LATER
1699 01501 1366 TAD CRFENT
1700 01502 4356 JMS CRFGET /GET BACK THE DIRECTORY NAME-ENTRY
1701 01503 7240 CLA CMA
1702 01504 1362 TAD CRBUFP
1703 01505 3010 DCA INDEX
1704 01506 1142 TAD FIOSTK+1 /TRANSFER FILE NAME INTO DIRECTORY ENTRY
1705 01507 3410 DCA I INDEX
1706 01510 1143 TAD FIOSTK+2
1707 01511 3410 DCA I INDEX
1708 01512 1144 TAD FIOSTK+3
1709 01513 3410 DCA I INDEX
1710 01514 3410 DCA I INDEX /LEAVE A WORD FOR THE NEXT FORWARD LINK
1711 01515 1372 TAD CRPROT
1712 01516 3410 DCA I INDEX /SET THE INITIAL PROTECTION
1713 01517 7301 CLA CLL IAC
1714 01520 3410 DCA I INDEX /INITIAL FILE-SIZE IS 1 SEGMENT
1715 01521 6201 CDF
1716 01522 1773 TAD I DATEA /PICK UP TODAY'S DATE
1717 01523 6221 CFLD
1718 01524 3410 DCA I INDEX / & SAVE AS DATE OF CREATION
1719 01525 1370 TAD CRFRET
1720 01526 3410 DCA I INDEX /SET THE RETRIEVAL-BLOCK LOCATION
1721 01527 1367 TAD CRFLNK
1722 01530 4356 JMS CRFGET /GET THE DIRECTORY FORWARD-LINK INTO CORE
1723 01531 1366 TAD CRFENT
1724 01532 3762 DCA I CRBUFP / & SET THIS ENTRY'S ADDRESS
1725 01533 1230 TAD CRFSEG
1726 01534 4525 JMS I SCL01 /NOW ZERO THE INITIAL SEGMENT
1727 01535 5534 JMP I FIEXIT / & EXIT
1728
1729 /CODE TO RETURN THE VARIOUS 'CREATE' ERROR STATUSES.
1730 01536 4351 CRFER1, JMS CRFCLR /CLEAR THE 'DUMMY ENTRY' WORD
1731 01537 7301 CLA CLL IAC /7400 - "DISC IS FULL"
/TSS-8.25 CONFIGURATION FOR UWM Page 41
1732 01540 7132 CRFER2, CLL CML RTR /6400 - "INVALID FILE NAME"
1733 01541 7130 CRFER3, CLL CML RAR /6000 - "PROTECTION VIOLATION"
1734 01542 5346 JMP .+4
1735 01543 4351 CRFER4, JMS CRFCLR /5000 - "USER DIRECTORY FULL"
1736 01544 1023 TAD P1000
1737 01545 1023 CRFER5, TAD P1000 /4400 - "ANOTHER USER HAS FILE OPEN"
1738 01546 7130 CLL CML RAR
1739 01547 3046 DCA FIUSAC /RETURN THE CODE IN HIS AC
1740 01550 5534 JMP I FIEXIT
1741
1742 /ROUTINE TO CLEAR THE 'DUMMY ENTRY' WORD WE PLACE IN THE
1743 /DIRECTORY ENTRY. WE HAVE TO DO THIS WHEN AN ERROR OCCURS.
1744 01551 0000 CRFCLR, 0
1745 01552 1366 TAD CRFENT
1746 01553 4356 JMS CRFGET /GET THE ENTRY INTO CORE
1747 01554 3762 DCA I CRBUFP / & CLEAR THE FIRST WORD
1748 01555 5751 JMP I CRFCLR /THEN JUST RETURN
1749
1750 /ROUTINE TO READ IN A SEGMENT AND SET 'CRBUFP'. IT ALSO
1751 /SETS THE 'BUFFER CHANGED' SWITCH.
1752 01556 0000 CRFGET, 0
1753 01557 3362 DCA .+3 /SET THE ENTRY-ADDRESS
1754 01560 1141 TAD FIOSTK
1755 01561 4511 JMS I GE01 /GET THE DIRECTORY WORD
1756 01562 0000 CRBUFP, 0
1757 01563 3362 DCA CRBUFP /SAVE THE BUFFER-ADDRESS
1758 01564 4524 SAVBUF / AND SET THE 'SAVE BUFFER' SWITCH
1759 01565 5756 JMP I CRFGET /THEN RETURN
1760
1761 01566 0000 CRFENT, 0
1762 01567 0000 CRFLNK, 0
1763 01570 0000 CRFRET, 0
1764 01571 0363 CRGD11, GD1
1765 01572 0012 CRPROT, 12 /INITIAL FILE PROTECTION-WORD
1766 01573 0035 DATEA, DATE
1767 01574 2040 RED11, RED1
/TSS-8.25 CONFIGURATION FOR UWM Page 42
1768 PAGE
1769 /ROUTINE TO EXTEND A FILE
1770 01600 4337 EXT0, JMS EXT1 /MAKE SURE IT'S OKAY TO EXTEND THIS FILE
1771 01601 1014 TAD P0007 /...EXT1 RETURNS WITH PTR. TO NAME BLOCK FOR THIS FILE
1772 01602 3320 DCA EXBUFP /SET THE RETRIEVAL-CHAIN POINTER
1773
1774 /NOW TRACE THRU TO LAST RETRIEVAL INFORMATION BLOCK FOR THIS FILE
1775 01603 1720 EXT4, TAD I EXBUFP
1776 01604 7450 SNA /END OF CHAIN?
1777 01605 5212 JMP EXT3 /YES
1778 01606 3336 DCA EXWNDP /WINDOW POINTER
1779 01607 1336 TAD EXWNDP
1780 01610 4314 JMS EXGE0 /GET WINDOW INTO CORE
1781 01611 5203 JMP EXT4 /KEEP LOOKING FOR END
1782
1783 01612 1143 EXT3, TAD FIOSTK+2 /NUMBER OF SEGMENTS TO ADD
1784 01613 7040 CMA
1785 01614 3335 DCA EXSEGC
1786 01615 3332 DCA EXLAST /CLEAR THE 'NEW LINK' SWITCH
1787 01616 2320 EXT5, ISZ EXBUFP
1788 01617 1720 TAD I EXBUFP /PICK UP ENTRY IN WINDOW
1789 01620 7650 SNA CLA /IS IT THE FIRST FREE ENTRY?
1790 01621 5226 JMP EXT6 /YES - START EXTENDING
1791 01622 1320 TAD EXBUFP
1792 01623 0014 AND P0007
1793 01624 7640 SZA CLA /NO - AT END OF BLOCK?
1794 01625 5216 JMP EXT5 /NO - KEEP LOOKING
1795 /
1796 /NOW AT END OF LIST OF SEGMENTS MAKING UP THIS FILE
1797 01626 2335 EXT6, ISZ EXSEGC /START EXTENDING
1798 01627 5260 JMP EXT7 /GET ANOTHER SEGMENT
1799 01630 1335 EXT20, TAD EXSEGC
1800 01631 7041 CIA
1801 01632 3046 DCA FIUSAC /NUMBER OF SEGMENTS WE FAILED TO FIND
1802 01633 1332 TAD EXLAST /GET THE LAST WINDOW ADDRESS
1803 01634 7450 SNA /IS IT LINKED TO NOTHINGNESS?
1804 01635 5241 JMP EXT21 /NO - NO PROBLEM
1805 01636 4314 JMS EXGE0 /YES - GET THE PREVIOUS BLOCK
1806 01637 3720 DCA I EXBUFP / AND CLEAR ITS FORWARD LINK
1807 01640 4524 SAVBUF /REMEMBER TO REWRITE THE BUFFER
1808 01641 1142 EXT21, TAD FIOSTK+1 /NOW UPDATE THE DIRECTORY ENTRY
1809 01642 4510 JMS I GD01 /GET DIRECTORY ENTRY INTO CORE
1810 01643 1012 TAD C0005
1811
1812 /HAVE A NEW BLOCK FOR RETRIEVAL
1813 01644 3320 DCA EXBUFP /POINTER TO SEGMENT COUNT
1814 01645 1143 TAD FIOSTK+2 /NUMBER OF WORDS TO BE ADDED
1815 01646 1720 TAD I EXBUFP /NUMBER ALREADY IN FILE
1816 01647 1335 TAD EXSEGC /MINUS NUMBER WE FAILED TO GET
1817 01650 3720 DCA I EXBUFP /UPDATE ENTRY
1818 01651 4524 SAVBUF / AND SET 'BUFFER CHANGED' SWITCH
1819 01652 6211 EXT8, DATFLD /SET DATA FIELD TO FIELD 1
1820 01653 1731 TAD I EXFCBP
1821 01654 3334 DCA EXPROP /POINTER TO RETRIEVAL WINDOW
1822 01655 7001 IAC
1823 01656 3734 DCA I EXPROP /INVALIDATE THE WINDOW
1824 01657 5534 JMP I FIEXIT
/TSS-8.25 CONFIGURATION FOR UWM Page 43
1825
1826 01660 1320 EXT7, TAD EXBUFP
1827 01661 0014 AND P0007
1828 01662 7640 SZA CLA /DO WE NEED A NEW BLOCK?
1829 01663 5304 JMP EXT12 /NO
1830 01664 1053 TAD GDRETP /RETRIEVAL POINTER
1831 01665 4501 JMS I DE01 /FIND AN EMPTY ENTRY
1832 01666 5230 JMP EXT20 /PARTIALLY SATISFIED
1833 01667 3333 DCA EXNFRE /FREE SEGMENT ADDRESS
1834 01670 1336 TAD EXWNDP /CURRENT WINDOW POINTER
1835 01671 4314 JMS EXGE0 /GET IT INTO CORE
1836 01672 1333 TAD EXNFRE /NEXT FREE WINDOW
1837 01673 3720 DCA I EXBUFP /LINK IT ONTO CHAIN
1838 01674 4524 SAVBUF / AND SET 'CHANGED' SWITCH
1839 01675 1336 TAD EXWNDP /SAVE PREVIOUS BLOCK LOCATION
1840 01676 3332 DCA EXLAST / IN CASE WE RUN OUT OF DISC NOW
1841 01677 1333 TAD EXNFRE
1842 01700 3336 DCA EXWNDP /UPDATE CURRENT WINDOW POINTER
1843 01701 1336 TAD EXWNDP
1844 01702 4314 JMS EXGE0 /GET NEW WINDOW INTO CORE
1845 01703 2320 ISZ EXBUFP /POINTER TO FIRST ENTRY OF WINDOW
1846 01704 4522 EXT12, JMS I SATL1 /GET A FREE SEGMENT FROM SAT
1847 01705 7450 SNA
1848 01706 5230 JMP EXT20 /PARTIALLY SATISFIED
1849 01707 3720 DCA I EXBUFP /SET THE SEGMENT # IN THE WINDOW
1850 01710 2320 ISZ EXBUFP
1851 01711 4524 SAVBUF /SET 'BUFFER CHANGED' SWITCH
1852 01712 3332 DCA EXLAST / AND CLEAR 'NEW LINK' SWITCH
1853 01713 5226 JMP EXT6 /FILL NEXT WORD
1854
1855
1856 01714 0000 EXGE0, 0 /GET WORD OF THIS UFD INTO CORE
1857 01715 3320 DCA .+3 /STORE THE WORD NUMBER
1858 01716 1053 TAD GDRETP
1859 01717 4511 JMS I GE01 /FETCH THE WORD
1860 01720 0000 EXBUFP, 0
1861 01721 3320 DCA EXBUFP /SET THE BUFFER POINTER
1862 01722 5714 JMP I EXGE0
1863
1864 01723 1023 EXT30, TAD P1000 /4400 - "ANOTHER USER HAS FILE OPEN"
1865 01724 7410 SKP
1866 01725 7130 EXT10, CLL CML RAR /6000 - "PROTECTION VIOLATION"
1867 01726 7130 CLL CML RAR /4000 - "NO FILE OPEN"
1868 01727 3046 DCA FIUSAC
1869 01730 5534 JMP I FIEXIT
1870
1871 01731 0000 EXFCBP, 0
1872 01732 0000 EXLAST, 0
1873 01733 0000 EXNFRE, 0
1874 01734 0000 EXPROP, 0
1875 01735 0000 EXSEGC, 0
1876 01736 0000 EXWNDP, 0
/TSS-8.25 CONFIGURATION FOR UWM Page 44
1877 /ROUTINE TO SET UP TO ALTER A FILE (BY EITHER EXTENDING IT OR
1878 /REDUCING IT.) CHECK PROTECTION CODE TO SEE IF THIS IS ALLOWED. MAKE SURE
1879 /NOONE ELSE HAS THIS FILE OPEN. JMP TO ERROR EXIT ON EITHER OF THESE CON-
1880 /DITIONS. IF ALL IS OKAY, RETURN WITH PTR. TO UFD NAME BLOCK ENTRY
1881 01737 0000 EXT1, 0
1882 01740 4516 JMS I IFN01
1883 01741 4403 JMS I LNK01 /GET PTR. TO APPROPRIATE FILE CONTROL BLOCK
1884 01742 7450 SNA
1885 01743 5326 JMP EXT10+1 /ERROR, FILE NOT OPEN
1886 01744 3331 DCA EXFCBP /FILE CONTROL BLOCK POINTER
1887 01745 1006 TAD FILPRP /GLOBAL TO "FILPRO"
1888 01746 1331 TAD EXFCBP
1889 01747 3334 DCA EXPROP /POINTER TO PROTECTION BIT IN FIELD 0
1890 01750 6211 DATFLD /CDF FIELD 0
1891 01751 1734 TAD I EXPROP /PICK UP PROTECTION BIT
1892 01752 6221 CFLD /CHANGE TO CURRENT FIELD
1893 01753 0005 AND P0004 /STRAIN OFF ANY EXTRANEOUS BITS
1894 01754 7640 SZA CLA
1895 01755 5325 JMP EXT10 /WRITE PROTECTED
1896 01756 1142 TAD FIOSTK+1 /INTERNAL FILE NUMBER
1897 01757 4510 JMS I GD01 /GET DIRECTORY ENTRY INTO CORE
1898 01760 3320 DCA EXBUFP /POINTS TO WHERE UFD NAME BLOCK IS IN CORE
1899 01761 4765 JMS I ENR01 /IS THIS THE ONLY USER WHO HAS THIS FILE OPEN?
1900 01762 5323 JMP EXT30 /NO, SO ABORT AND RETURN ERROR CODE
1901 01763 1320 TAD EXBUFP
1902 01764 5737 JMP I EXT1
1903
1904 01765 1066 ENR01, ENR0
/TSS-8.25 CONFIGURATION FOR UWM Page 45
1905 PAGE
1906 /ROUTINE TO REDUCE A FILE
1907
1908 02000 4723 RED0, JMS I EXT11 /MAKE SURE IT'S OKAY TO REDUCE THIS FILE
1909 02001 3325 DCA REBUFP /...IF OKAY, RETURNS WITH PTR. TO FILE NAME BLOCK
1910 02002 1325 TAD REBUFP
1911 02003 1012 TAD C0005
1912 02004 3320 DCA RELINK /NOW POINTS TO NUMBER OF SEGMENTS PRESENTLY IN FILE
1913 02005 1143 TAD FIOSTK+2 /SEGMENTS TO BE REMOVED
1914 02006 7450 SNA /IS HE REDUCING IT AT ALL?
1915 02007 5534 JMP I FIEXIT /NO - SAVE OURSELVES WORK & AVOID A BUG
1916 02010 7510 SPA /IS IT NEGATIVE?
1917 02011 7350 CLA CLL CMA RAR /REPLACE THE NEGATIVE # BY 3777.
1918 02012 7041 CIA
1919 02013 1720 TAD I RELINK
1920 02014 7540 SMA SZA /DELETE THE FILE?
1921 02015 5224 JMP RED6 /NO, REDUCE IT
1922 02016 7300 CLA CLL /YES, WIPE IT OUT AND CLOSE
1923 02017 1325 TAD REBUFP
1924 02020 4240 JMS RED1 /WIPE OUT THE FILE NAME BLOCK FROM THE UFD
1925 02021 1142 TAD FIOSTK+1 /INTERNAL FILE NUMBER
1926 02022 4477 JMS I CL01 /CLOSE THIS FILE SINCE IT NO LONGER EXISTS
1927 02023 5534 JMP I FIEXIT
1928 02024 3720 RED6, DCA I RELINK /UPDATE SEGMENT COUNT
1929 02025 4524 SAVBUF / & INDICATE BUFFER CHANGED
1930 02026 1720 TAD I RELINK
1931 02027 3137 DCA CFH
1932 02030 2320 ISZ RELINK
1933 02031 2320 ISZ RELINK
1934 02032 1720 TAD I RELINK
1935 02033 3320 DCA RELINK /POINTER TO FIRST WINDOW ON CHAIN
1936 02034 1137 TAD CFH
1937 02035 4312 JMS RED40 /WIPE OUT REST OF FILE
1938 02036 5637 JMP I .+1 /THEN GO INVALIDATE THE RETRIEVAL WINDOW
1939 02037 1652 EXT8
1940
1941 /ROUTINE TO DELETE A FILE
1942 02040 0000 RED1, 0
1943 02041 3325 DCA REBUFP /PTR. TO THE UFD ENTRY FOR THE FILE
1944 02042 1325 TAD REBUFP
1945 02043 1011 TAD P0003
1946 02044 3320 DCA RELINK /LINK TO NEXT FILE NAME IN THIS UFD
1947 02045 1720 TAD I RELINK
1948 02046 3307 DCA RED3
1949 02047 1711 TAD I REDGD1 /UFD ADDR. OF THIS DIRECTORY ENTRY
1950 02050 3310 DCA RED4
1951 02051 1325 TAD REBUFP
1952 02052 1014 TAD P0007
1953 02053 3320 DCA RELINK /NOW POINTS TO A RETRIEVAL BLOCK FOR THIS FILE
1954 02054 1720 TAD I RELINK
1955 02055 3320 DCA RELINK
1956 02056 3725 RED2, DCA I REBUFP /CLEAR OUT FIRST WORD OF ENTRY
1957 02057 2325 ISZ REBUFP
1958 02060 1325 TAD REBUFP
1959 02061 0014 AND P0007
1960 02062 7640 SZA CLA /END OF CURRENT WINDOW?
1961 02063 5256 JMP RED2 /NO, KEEP CLEARING
/TSS-8.25 CONFIGURATION FOR UWM Page 46
1962 02064 4524 SAVBUF /YES - SET 'BUFFER CHANGED'
1963 02065 3270 RED5, DCA .+3 /NOW SET THE ENTRY ADDRESS
1964 02066 1053 TAD GDRETP
1965 02067 4511 JMS I GE01 / AND GET A DIRECTORY ENTRY IN CORE
1966 02070 0000 REDPTR, 0
1967 02071 1011 TAD P0003 /GET TO THE LINK POINTER
1968 02072 3270 DCA REDPTR
1969 02073 1670 TAD I REDPTR /GET THE LINK TO THE NEXT ENTRY
1970 02074 7041 CIA
1971 02075 1310 TAD RED4
1972 02076 7650 SNA CLA /IS IT THE ENTRY WE'RE DELETING?
1973 02077 5302 JMP .+3 /YES
1974 02100 1670 TAD I REDPTR /NO - GET ITS ADDRESS
1975 02101 5265 JMP RED5 / AND KEEP SEARCHING
1976 02102 1307 TAD RED3 /SET THE NEW LINK TO NEXT ENTRY
1977 02103 3670 DCA I REDPTR / SO IT LINKS AROUND THE DELETED FILE
1978 02104 4524 SAVBUF /SET 'BUFFER CHANGED'
1979 02105 4312 JMS RED40 / AND GO DELETE THE FILE ITSELF
1980 02106 5640 JMP I RED1
1981
1982 02107 0000 RED3, 0 /UFD ADDRESS OF NEXT ENTRY IN DIRECTORY CHAIN
1983 02110 0000 RED4, 0 /UFD ADDRESS OF THIS DIRECTORY ENTRY
1984 02111 0363 REDGD1, GD1
1985
1986 /ROUTINE TO REDUCE A FILE - ENTER WITH THE NUMBER OF
1987 /SEGMENTS WHICH ARE TO REMAIN.
1988 02112 0000 RED40, 0
1989 02113 3137 DCA CFH
1990 02114 1053 TAD GDRETP /RTABLE
1991 02115 3321 DCA RERETP
1992 02116 1137 TAD CFH /# OF SEGMENTS TO REMAIN
1993 02117 4724 JMS I RED302 /ROUTINE TO DO ACTUAL REDUCTION
1994 02120 0000 RELINK, 0 /RETRIEVAL CHAIN PTR
1995 02121 0000 RERETP, 0 /UFD RETRIEVAL PTR.
1996 02122 5712 JMP I RED40
1997
1998 02123 1737 EXT11, EXT1
1999 02124 2400 RED302, RED30
2000 02125 0000 REBUFP, 0
/TSS-8.25 CONFIGURATION FOR UWM Page 47
2001 /SEARCH ENTTBL FOR OPENINGS TO FILE
2002 /CALLING SEQUENCE:
2003 / TAD (RETRIEVAL POINTER)
2004 / JMS I ENS01
2005 / UFD ADDRESS OF DIRECTORY ENTRY
2006 / RETURN (COUNT OF ACCESSES IN AC)
2007
2008 02126 0000 ENS0, 0
2009 02127 4367 JMS ENS3
2010 02130 7040 CMA
2011 02131 3365 DCA ENRETP / (-) RELATIVE POINTER
2012 02132 3366 DCA ENACNT /CLEAR ACCESS COUNTER
2013 02133 1066 TAD ENTTBL
2014 02134 3364 DCA ENTPTR
2015 02135 1764 ENS2, TAD I ENTPTR /GET THE UFD POINTER FOR THIS FILE
2016 02136 0025 AND C3777 / ZAP THE 'EXCLUSIVE USE' BIT
2017 02137 1365 TAD ENRETP / AND SUBTRACT THE ONE WE WANT
2018 02140 2364 ISZ ENTPTR
2019 02141 7640 SZA CLA /FILE IN SAME UFD?
2020 02142 5353 JMP ENS1 /NO - KEEP LOOKING
2021 02143 1764 TAD I ENTPTR
2022 02144 7041 CIA
2023 02145 1726 TAD I ENS0
2024 02146 7640 SZA CLA /YES - SAME FILE LOCATION?
2025 02147 5353 JMP ENS1 /NO
2026 02150 2366 ISZ ENACNT /YES - INCREMENT ACCESS COUNT
2027 02151 1364 TAD ENTPTR / AND SAVE 'FIND' LOCATION
2028 02152 3367 DCA ENSFND
2029 02153 2364 ENS1, ISZ ENTPTR
2030 02154 1364 TAD ENTPTR
2031 02155 7041 CIA
2032 02156 1064 TAD ENTEND /END OF ENT TABLE
2033 02157 7640 SZA CLA
2034 02160 5335 JMP ENS2 /KEEP LOOKING
2035 02161 1366 TAD ENACNT /PICK UP ACCUMULATED ACCESS COUNT
2036 02162 2326 ISZ ENS0
2037 02163 5726 JMP I ENS0
2038
2039 02164 0000 ENTPTR, 0
2040 02165 0000 ENRETP, 0
2041 02166 0000 ENACNT, 0
2042
2043 /CONVERT AN ABSOLUTE PTR INTO RETTBL TO A RELATIVE ENTRY NUMBER
2044 ENSFND, /LOCATION OF LAST 'FIND' IN ENTTBL
2045 02167 0000 ENS3, 0
2046 02170 7041 CIA
2047 02171 1065 TAD RETTBL /REL. PTR. TO ADDRESS WITHIN RETTBL
2048 02172 7041 CIA
2049 02173 0034 AND P7770
2050 02174 7112 CLL RTR; RAR / DIVIDED BY 8
02175 7010
2051 02176 5767 JMP I ENS3
/TSS-8.25 CONFIGURATION FOR UWM Page 48
2052 PAGE
2053 /ROUTINE TO PROVIDE FILE INFORMATION
2054
2055 02200 4516 INF0, JMS I IFN01 /GET INTERNAL FILE NUMBER IN FIOSTK+1
2056 02201 4504 JMS I EBLD0
2057 02202 3137 DCA CFH /RELATIVE POINTER TO UFD RETRIEVAL INFORMATION
2058 02203 3141 DCA FIOSTK
2059 02204 3143 DCA FIOSTK+2 /CLEAR OWNER JUST IN CASE
2060 02205 1537 TAD I CFH /GET PTR. TO RETTBL OUT OF ENTTBL
2061 02206 7450 SNA /DOES IT EXIST?
2062 02207 5252 JMP INF5 /NO, SO FILE IS NOT OPEN
2063 02210 7041 CIA
2064 02211 7144 CLL CMA RAL / * 2 (AND ZAP 'EXCLUSIVE USE' BIT)
2065 02212 1064 TAD UFDTBL
2066 02213 3314 DCA INUFDP /POINTER TO USER PROJ,PROG NUMBER
2067 02214 7010 RAR /GET BACK THE 'EXCLUSIVE USE' BIT
2068 02215 1142 TAD FIOSTK+1 / AND SAVE IT WITH THE FILE #
2069 02216 3263 DCA INF4
2070 02217 1714 TAD I INUFDP
2071 02220 3143 DCA FIOSTK+2 /SET THE OWNER'S ACCOUNT (ALSO FOR 'GD0')
2072 02221 1142 TAD FIOSTK+1 /NOW GET THE INTERNAL FILE #
2073 02222 4510 JMS I GD01 / AND GET THE FILE'S DIRECTORY ENTRY
2074 02223 7041 CIA
2075 02224 7040 CMA
2076 02225 3010 DCA INDEX
2077 02226 1263 TAD INF4 /SEND BACK THE 'EXCLUSIVE USE' BIT
2078 02227 3142 DCA FIOSTK+1 / WITH THE FILE #
2079 02230 1410 TAD I INDEX /NOW THE
2080 02231 3144 DCA FIOSTK+3
2081 02232 1410 TAD I INDEX / FILE
2082 02233 3145 DCA FIOSTK+4
2083 02234 1410 TAD I INDEX / NAME
2084 02235 3146 DCA FIOSTK+5
2085 02236 2010 ISZ INDEX
2086 02237 1410 TAD I INDEX
2087 02240 3147 DCA FIOSTK+6 /RETURN THE PROTECTION-WORD
2088 02241 1410 TAD I INDEX
2089 02242 3150 DCA FIOSTK+7 / AND THE SIZE
2090 02243 7240 CLA CMA
2091 02244 1143 TAD FIOSTK+2
2092 02245 7640 SZA CLA /IS THIS FILE A DIRECTORY?
2093 02246 5252 JMP INF5 /NO
2094 02247 3145 DCA FIOSTK+4 /YES - CLEAR THE PASSWORD
2095 02250 1410 TAD I INDEX / AND RETURN THE DATE-WORD (CPU TIME)
2096 02251 3146 DCA FIOSTK+5 / (THE SIZE-WORD IS THE DEVICE-TIME)
2097 02252 6211 INF5, DATFLD
2098 02253 1452 TAD I FIOPTR /PICK UP JOBLNK WORD FROM JOB STATUS BLOCK
2099 02254 3263 DCA INF4 /DESTINATION IN FIELD 0
2100 02255 6221 CFLD /CHANGE TO PRESENT FIELD
2101 02256 6202 CIF
2102 02257 4473 BLT /MOVE FIOSTK INFORMATION INTO IOT PARAMETER BLOCK
2103 02260 6221 CFLD /SOURCE FIELD
2104 02261 0141 FIOSTK /SOURCE
2105 02262 6211 DATFLD /DESTINATION FIELD 0
2106 02263 0000 INF4, 0 /DESTINATION
2107 02264 7770 -10 /WORD COUNT
2108 02265 1014 TAD P0007 /GET THE NUMBER OF PARMS TO RETURN
/TSS-8.25 CONFIGURATION FOR UWM Page 49
2109 02266 7106 INF6, CLL RTL; RTL; RAL
02267 7006
02270 7004
2110 02271 3315 DCA INSPTR
2111 02272 1045 TAD FILINK /GET THE LINK-SAVE WORD
2112 02273 0313 AND C7037 / ZAP THE OLD COPY-COUNT
2113 02274 1315 TAD INSPTR
2114 02275 3045 DCA FILINK / AND SET THE NEW COUNT
2115 02276 4476 CHKSRC /WERE WE CALLED FROM 'SI'?
2116 02277 7410 SKP
2117 02300 5534 JMP I FIEXIT /YES - CAN'T SET 'JSIOTC' OR SCHEDULER FOULS UP
2118 02301 6211 DATFLD
2119 02302 1455 TAD I JOBDAT /GLOBAL TO "JOBDAT"
2120 02303 7001 IAC
2121 02304 3315 DCA INSPTR /NOW POINTS TO STATUS WORD
2122 02305 1316 TAD INIOTC /JSIOTC
2123 02306 7040 CMA
2124 02307 0715 AND I INSPTR /SET JSIOTC TO INDICATE THAT FIP
2125 02310 1316 TAD INIOTC /...IS RETURNING INFORMATION IN THE IOT PAR. BLOCK
2126 02311 3715 DCA I INSPTR
2127 02312 5534 JMP I FIEXIT
2128
2129 02313 7037 C7037, 7037
2130 02314 0000 INUFDP, 0
2131 LGIDDB,
2132 02315 0000 INSPTR, 0
2133 02316 0040 INIOTC, JSIOTC
/TSS-8.25 CONFIGURATION FOR UWM Page 50
2134 /LOGIN ROUTINE
2135
2136 02317 1065 LGI0, TAD RETTBL /MFD RETRIEVAL IS IN ENTRY 0
2137 02320 3142 DCA FIOSTK+1
2138 02321 1143 TAD FIOSTK+2
2139 02322 7650 SNA CLA /IS THE ACCOUNT # AT ALL REASONABLE?
2140 02323 5372 JMP LGI20 /NO - CAN'T LOG IN
2141 02324 1144 TAD FIOSTK+3
2142 02325 7650 SNA CLA /IS THE FIRST WORD OF THE PASSWORD ZERO?
2143 02326 1145 TAD FIOSTK+4 /YES - THE 2ND WORD NON-ZERO FLAGS NO PASSWORD NEEDED
2144 02327 4502 JMS I DS01 /SEARCH THE MFD (AC=0 TO INDICATE 3-WORD SEARCH)
2145 02330 0142 FIOSTK+1
2146 02331 5372 JMP LGI20 /COULD NOT FIND ENTRY IN MFD
2147 02332 7300 CLA CLL / (ENTRY ADDRESS RETURNED IN AC)
2148 02333 1143 TAD FIOSTK+2 /GET THE ACCOUNT NUMBER
2149 02334 4530 JMS I UFO01 / AND OPEN THE UFD (I.E. FETCH RETRIEVAL INFO)
2150 02335 5372 JMP LGI20 /COULD NOT FIND ROOM ON TABLE
2151 02336 7240 CLA CMA
2152 02337 1536 TAD I UTPRNU
2153 02340 3536 DCA I UTPRNU /ACCOUNT FOR NEW ENTRY IN ACCESS COUNT
2154 02341 1051 TAD FIJOB /NOW GET THE KEYBOARD NUMBER
2155 02342 1377 TAD TTYTBA / FOR THIS JOB
2156 02343 3315 DCA LGIDDB
2157 02344 6211 DATFLD
2158 02345 1715 TAD I LGIDDB
2159 02346 7104 CLL RAL
2160 02347 1062 TAD DEVTBA /FIND ITS DDB ADDRESS
2161 02350 3315 DCA LGIDDB
2162 02351 1715 TAD I LGIDDB /GET THE LOCATION OF THE
2163 02352 1011 TAD P0003 / 'ASSIGNED TIME' WORD
2164 02353 3315 DCA LGIDDB
2165 02354 6201 CDF
2166 02355 1775 TAD I CLK1A /NOW CALCULATE THE VALUE FOR
2167 02356 0031 AND C7000
2168 02357 7104 CLL RAL
2169 02360 3137 DCA CFH
2170 02361 1776 TAD I CLK2A
2171 02362 0022 AND P0777
2172 02363 1137 TAD CFH
2173 02364 7006 RTL
2174 02365 7004 RAL
2175 02366 6211 DATFLD
2176 02367 3715 DCA I LGIDDB /THEN SET THE CURRENT TIME IN THE DDB
2177 02370 5771 JMP I .+1 /NOW WRITE OUT THE TABLES
2178 02371 3351 TABOUT
2179
2180 02372 7240 LGI20, CLA CMA /COULD NOT LOGIN - RETURN WITH 7777
2181 02373 3046 DCA FIUSAC /INDICATE INABILITY TO LOGIN
2182 02374 5534 JMP I FIEXIT
2183
2184 02375 0033 CLK1A, CLK1
2185 02376 0034 CLK2A, CLK2
2186 02377 2747 TTYTBA, TTYTBL
/TSS-8.25 CONFIGURATION FOR UWM Page 51
2187 PAGE
2188 /ROUTINE TO PERFORM ACTUAL FILE REDUCTION
2189
2190 /CALLING SEQUENCE:
2191 / TAD (NUMBER OF SEGMENTS TO REMAIN)
2192 / JMS RED30
2193 / RETRIEVAL CHAIN POINTER
2194 / UFD RETRIEVAL POINTER
2195 / RETURN
2196
2197 DSCNTR,
2198 02400 0000 RED30, 0
2199 02401 4674 JMS I WND201 /DIVIDE BY 7
2200 02402 7040 CMA
2201 02403 3273 DCA REWNDC /WINDOW COUNT-- NUMBER OF WHOLE WINDOWS WHICH ARE TO REMAIN
2202 02404 1600 TAD I RED30 /RETRIEVAL CHAIN POINTER
2203 02405 2200 ISZ RED30
2204
2205 /NOW TRACE THRU THE LINKED LIST OF FILE INFORMATION
2206 /RETRIEVAL BLOCKS UNTIL WE GET TO THE ONE IN WHICH THE
2207 /NEW LAST SEGMENT IS
2208 02406 3211 RED32, DCA RED31 /LINKAGE TO RETRIEVAL CHAIN
2209 02407 1600 TAD I RED30 /PICK UP RETRIEVAL POINTER
2210 02410 4511 JMS I GE01 /GET THIS WORD INTO CORE
2211 DSENTP,
2212 02411 0000 RED31, 0
2213 02412 3271 DCA REBUFF
2214 02413 1671 TAD I REBUFF /PICK UP LINK TO NEXT
2215 02414 3272 DCA RELINC /SAVE LINK
2216 02415 1061 TAD WNDREM
2217 02416 7640 SZA CLA /DELETING ENTIRE WINDOW?
2218 02417 5226 JMP RED37 /NO
2219 02420 7326 CLA CLL CML RTL
2220 02421 1273 TAD REWNDC
2221 02422 7640 SZA CLA /YES - ARE WE ONE WINDOW FROM THE END YET?
2222 02423 5226 JMP RED37 /NO
2223 02424 3671 DCA I REBUFF /YES - CLEAR THE LINK TO IT
2224 02425 4524 SAVBUF / AND SET 'BUFFER CHANGED'
2225 02426 1272 RED37, TAD RELINC
2226 02427 2273 ISZ REWNDC /AT END OF CHAIN?
2227 02430 5206 JMP RED32 /NO, KEEP SAVING
2228 02431 3272 DCA RELINC /SAVE LINC
2229 02432 3671 DCA I REBUFF /YES, TERMINATE IT
2230 02433 4524 SAVBUF / AND SET 'BUFFER CHANGED' SWITCH
2231
2232 /FOUND RETRIEVAL BLOCK IN WHICH TO CHOP OFF
2233 /THE LIST OF SEGMENTS.
2234 /START DELETING THE SEGMENT NUMBERS AND RETURNING
2235 /THE ACTUAL DISC SEGMENTS TO THE POOL
2236 02434 1061 TAD WNDREM
2237 02435 7001 IAC /YES; GET POINTER TO FIRST SEGMENT TO BE DELETED
2238 02436 1271 TAD REBUFF
2239 02437 3271 DCA REBUFF /POINTER TO FIRST SEGMENT TO REMOVE
2240 02440 1671 RED33, TAD I REBUFF /PICK UP THE SEGMENT NUMBER
2241 02441 7440 SZA
2242 02442 4523 JMS I SATR1 /RELEASE IT ON SAT
2243 02443 3671 DCA I REBUFF /CLEAR THE CELL
/TSS-8.25 CONFIGURATION FOR UWM Page 52
2244 02444 2271 ISZ REBUFF
2245 02445 1271 TAD REBUFF
2246 02446 0014 AND P0007
2247 02447 7640 SZA CLA /END OF WINDOW?
2248 02450 5240 JMP RED33 /NO, CONTINUE
2249 02451 1272 TAD RELINC /YES, MOVE TO NEXT
2250 02452 7440 SZA /END OF CHAIN?
2251 02453 5256 JMP RED34 /NO, GET NEXT WINDOW
2252 02454 2200 ISZ RED30 /YES, EXIT
2253 02455 5600 JMP I RED30
2254 02456 3261 RED34, DCA RED35
2255 02457 1600 TAD I RED30
2256 02460 4511 JMS I GE01 /GET NEXT WINDOW
2257 DSKCNT,
2258 02461 0000 RED35, 0
2259 02462 3271 DCA REBUFF
2260 02463 1671 TAD I REBUFF
2261 02464 3272 DCA RELINC /SET UP LINK TO NEXT
2262 02465 3671 DCA I REBUFF /WIPE OUT THIS LINK
2263 02466 4524 SAVBUF / AND INDICATE 'BUFFER CHANGED'
2264 02467 2271 ISZ REBUFF
2265 02470 5240 JMP RED33 /KEEP WIPING OUT
2266
2267 02471 0000 REBUFF, 0
2268 02472 0000 RELINC, 0
2269 02473 0000 REWNDC, 0
2270 02474 1345 WND201, WND20
/TSS-8.25 CONFIGURATION FOR UWM Page 53
2271 /DIRECTORY SEARCH
2272
2273 /CALLING SEQUENCE:
2274 / CLA OR CMA (3 OR 1 WORD SEARCH)
2275 / JMS DS0
2276 / POINTER--------------->RETRIEVAL STACK POINTER
2277 / RETURN IF NOT FOUND NA
2278 / GOOD RETURN ME
2279 / (POINTER IN AC) XX
2280
2281 02475 0000 DS0, 0
2282 02476 7650 SNA CLA /SKIP IF ONE WORD SEARCH
2283 02477 7126 CLL CML RTL /THREE WORD COMPARE
2284 02500 7040 CMA
2285 02501 3273 DCA DSWDNR /MINUS NUMBER OF WORDS TO COMPARE
2286 02502 1675 TAD I DS0 /PICK UP POINTER TO RETRIEVAL INFORMATION
2287 02503 3272 DCA DSRETS
2288 02504 2275 ISZ DS0
2289 02505 1374 TAD DSMAX /SET UP COUNTER ON # ENTRIES CHECKED
2290 02506 3261 DCA DSKCNT
2291 02507 3375 DCA DSNEXT /CLEAR OUR NEXT-HIGHEST
2292 02510 3313 DS1, DCA DSWORD
2293 02511 1672 TAD I DSRETS /GET PTR. TO RETRIEVAL INFORMATION BLOCK
2294 02512 4511 JMS I GE01 /GET THE ENTRY INTO CORE
2295 02513 0000 DSWORD, 0 /WORD NUMBER--I.E. THE ADDR. WITHIN THE DIRECTORY
2296 02514 7450 SNA /DID WE GET THE ENTRY?
2297 02515 7402 HLT /NO, BUT THERE WAS A POINTER TO IT - ERROR *****
2298 02516 3211 DCA DSENTP /STORE POINTER TO ENTRY
2299 02517 1273 TAD DSWDNR /NUMBER OF WORDS TO COMPARE
2300 02520 3200 DCA DSCNTR
2301 02521 1272 TAD DSRETS
2302 02522 3271 DCA DSOBJT /POINTER TO OBJECT NAME
2303 02523 1211 TAD DSENTP
2304 02524 3373 DCA DSENT /POINTER TO NAME IN BUFFER
2305 02525 1773 DS2, TAD I DSENT
2306 02526 2373 ISZ DSENT
2307 02527 7041 CIA
2308 02530 2271 ISZ DSOBJT
2309 02531 1671 TAD I DSOBJT
2310 02532 7640 SZA CLA
2311 02533 5341 JMP DS3 /NOT FOUND
2312 02534 2200 ISZ DSCNTR
2313 02535 5325 JMP DS2 /LOOK AT NEXT WORD OF NAME
2314
2315 /WE FOUND IT - JUST RETURN THE POINTER
2316 02536 2275 ISZ DS0 /FOUND THE ENTRY
2317 02537 1211 TAD DSENTP /PICK UP POINTER
2318 02540 5675 JMP I DS0 / & RETURN
2319
2320 /THIS ENTRY IS NOT THE ONE WE'RE LOOKING FOR, SO WE MUST
2321 /GO LOOK AT THE NEXT ONE. UPDATE OUR 'NEXT UFD' WORD
2322 /AND THEN PICK UP THE LINK TO THE NEXT ENTRY.
2323 02541 2261 DS3, ISZ DSKCNT /BAD DIRECTORY?
2324 02542 7410 SKP /NOT YET
2325 02543 7402 HLT /LOOPING LINKS - ERROR *****
2326 02544 1611 TAD I DSENTP /GET THE LAST ENTRY
2327 02545 7161 CLL CML CIA
/TSS-8.25 CONFIGURATION FOR UWM Page 54
2328 02546 1671 TAD I DSOBJT
2329 02547 7620 SNL CLA /GREATER THAN THE ONE WE WANT?
2330 02550 5362 JMP DS5 /NO
2331 02551 1375 TAD DSNEXT
2332 02552 7450 SNA /YES - DO WE HAVE A NEXT YET?
2333 02553 5360 JMP DS4 /NO - JUST TAKE THIS ONE
2334 02554 7161 CLL CML CIA
2335 02555 1611 TAD I DSENTP
2336 02556 7620 SNL CLA /SMALLER THAN OUR PREVIOUS 'NEXT'?
2337 02557 5362 JMP DS5 /NO
2338 02560 1611 DS4, TAD I DSENTP /YES - SAVE THIS ONE INSTEAD
2339 02561 3375 DCA DSNEXT
2340 02562 1011 DS5, TAD P0003 /CREATE POINTER TO NEXT ENTRY
2341 02563 1211 TAD DSENTP
2342 02564 3200 DCA DSCNTR
2343 02565 1600 TAD I DSCNTR
2344 02566 7440 SZA /IS THIS THE END OF THE DIRECTORY CHAIN?
2345 02567 5310 JMP DS1 /NO, SO CONTINUE SEARCH
2346 02570 1011 TAD P0003
2347 02571 1313 TAD DSWORD /YES - RETURN ADDRESS OF LAST LINK-WORD
2348 02572 5675 JMP I DS0
2349
2350 02573 0000 DSENT, 0
2351 02574 7617 DSMAX, -161 / - (MAX # OF FILES USER CAN OWN + 1)
2352 02575 0000 DSNEXT, 0
2353 2471 DSOBJT= REBUFF
2354 2472 DSRETS= RELINC
2355 2473 DSWDNR= REWNDC
/TSS-8.25 CONFIGURATION FOR UWM Page 55
2356 PAGE
2357 /ROUTINE TO LOOK IN THE SAT FOR A FREE SEGMENT
2358
2359 /CALLING SEQUENCE:
2360 / JMS SATLOK
2361 / RETURN (SEGMENT NUMBER IN AC, 0=NONE AVAILABLE)
2362 02600 0000 SATLOK, 0
2363 02601 1257 TAD SATTBL /SET THE POINTER INTO THE TABLE
2364 02602 3253 DCA SATPNT
2365 02603 1654 TAD I SATCNT /# OF AVAILABLE DISC SEGMENTS
2366 02604 7450 SNA /ARE THERE ANY?
2367 02605 5600 JMP I SATLOK /NO, SO SCREW IT
2368 02606 7041 CIA
2369 02607 7040 CMA
2370 02610 3654 DCA I SATCNT /DECREMENT SATCNT
2371 02611 3255 DCA SATCT2
2372 02612 7240 CLA CMA
2373 02613 3057 DCA SATSTA /SET SAT STATUS TO WRITE OUT
2374 /LOOK FOR A WORD IN SAT TABLE WITH A ZERO BIT IN IT
2375 02614 1653 SAT1, TAD I SATPNT /GET A WORD FROM SAT TABLE
2376 02615 7040 CMA
2377 02616 7640 SZA CLA /ARE ALL BITS SET TO ONE?
2378 02617 5225 JMP SAT2 /NO, SO WE'VE FOUND A SEGMENT
2379 02620 2253 ISZ SATPNT /WAS THIS THE LAST WORD IN THE SAT TABLE?
2380 02621 5214 JMP SAT1 /NO, SO KEEP LOOKING
2381 02622 7402 HLT /YES, BUT WE SUPPOSEDLY HAD A SLOT *****
2382 02623 3654 DCA I SATCNT / (IF SYSTEM IS CONTINUED, WE'LL FIX THE COUNT)
2383 02624 5600 JMP I SATLOK
2384
2385 /WE FOUND A SAT WORD WITH A ZERO BIT. NOW FIND THAT BIT
2386 02625 7130 SAT2, CLL CML RAR /4000 INTO ACC.
2387 02626 3256 DCA SATMSK
2388 02627 2255 ISZ SATCT2 /INCREMENT THE BIT POSITION COUNT
2389 02630 1653 TAD I SATPNT /GET WORD FROM SAT TABLE
2390 02631 0256 AND SATMSK /IS THE BIT CORRESPONDING TO THE ONE IN SATMSK SET?
2391 02632 7450 SNA
2392 02633 5236 JMP SAT3 /NO, SO WE FOUND THE ZERO BIT
2393 02634 7010 RAR /MOVE MASK BIT ONE TO THE RIGHT
2394 02635 5226 JMP SAT2+1 /...AND LOOK AT THE NEXT BIT
2395
2396 /FOUND THE BIT WITHIN THE WORD - SATCNT INDICATES WHICH ONE IT IS
2397 02636 1256 SAT3, TAD SATMSK
2398 02637 1653 TAD I SATPNT /SET THE BIT IN SATTBL TO INDICATE
2399 02640 3653 DCA I SATPNT / THAT THIS SEGMENT IS ALLOCATED
2400 02641 1253 TAD SATPNT
2401 02642 1252 TAD SATFIX
2402 02643 3256 DCA SATMSK
2403 /
2404 /NOW CALCULATE THE NUMBER OF THE DISC SEGMENT
2405 /WHICH CORRESPONDS TO THIS BIT IN THE SAT TABLE
2406 02644 1256 TAD SATMSK /THE WORD-NUMBER
2407 02645 7104 CLL RAL
2408 02646 1256 TAD SATMSK
2409 02647 7006 RTL / TIMES 12
2410 02650 1255 TAD SATCT2 / PLUS THE BIT POSITION
2411 02651 5600 JMP I SATLOK /EXIT WITH DISC SEGMENT NUMBER IN ACC.
2412
/TSS-8.25 CONFIGURATION FOR UWM Page 56
2413 02652 0526 SATFIX, SATSIZ-2
2414 02653 0000 SATPNT, 0
2415 02654 7251 SATCNT, -SATSIZ+1
2416 SATEMP,
2417 02655 0000 SATCT2, 0
2418 02656 0000 SATMSK, 0
2419 02657 7252 SATTBL, -SATSIZ+2
/TSS-8.25 CONFIGURATION FOR UWM Page 57
2420 /ROUTINE TO RELEASE A SEGMENT IN SAT
2421
2422 /CALLING SEQUENCE:
2423 / TAD (SEGMENT NUMBER)
2424 / JMS SATREL
2425
2426 02660 0000 SATREL, 0
2427 02661 7450 SNA /REASONABLE SEGMENT NUMBER?
2428 02662 7402 HLT /NO - ERROR *****
2429 02663 3255 DCA SATEMP /SEGMENT NUMBER
2430 02664 7360 CLA CLL CMA CML
2431 02665 3057 DCA SATSTA /MARK SAT STATUS AS HAVING BEEN CHANGED
2432 02666 1255 TAD SATEMP
2433 02667 1334 TAD SEGMAX
2434 02670 7660 SZA SNL CLA /LEGAL SEGMENT NUMBER?
2435 02671 7402 HLT /NO - ERROR *****
2436 02672 3253 DCA SATPNT
2437 /
2438 /NOW DIVIDE SEGMENT NUMBER BY 12 DECIMAL
2439 /QUOTIENT INDICATES WHICH WORD IN SAT TABLE CORRESPONDS
2440 /TO THIS DISC SEGMENT. REMAINDER INDICATES WHICH BIT IN
2441 /THAT WORD
2442 02673 7240 CLA CMA /SUBTRACT 1 SO SEGMENT TABLE STARTS AT 0
2443 02674 1255 SATRL1, TAD SATEMP
2444 02675 7500 SMA /IS SEGMENT # > 3777?
2445 02676 5306 JMP SATRL2 /NO
2446 02677 1333 TAD CM3770 /YES - SUBTRACT 3770 FROM IT
2447 02700 3255 DCA SATEMP
2448 02701 1253 TAD SATPNT /THEN PUSH THE POINTER BY 3770 SEGMENTS
2449 02702 1331 TAD C0252 / WHICH IS 252 WORDS
2450 02703 3253 DCA SATPNT
2451 02704 5274 JMP SATRL1 /THEN CHECK AGAIN
2452
2453 /NOW FIND THE WORD-ADDRESS OF THIS BIT NUMBER.
2454 02705 2253 ISZ SATPNT
2455 02706 1332 SATRL2, TAD C7764 /-14
2456 02707 7500 SMA /IS THIS THE WORD?
2457 02710 5305 JMP .-3 /NO - ADVANCE THE POINTER & SUBTRACT AGAIN
2458 02711 3255 DCA SATEMP /YES - SAVE THE BIT-POSITION
2459 02712 1253 TAD SATPNT
2460 02713 1257 TAD SATTBL /GET THE WORD-ADDRESS
2461 02714 3253 DCA SATPNT
2462 02715 7120 CLL CML
2463 02716 7004 RAL
2464 02717 2255 ISZ SATEMP /SET UP A MASK CORRESPONDING TO PROPER BIT
2465 02720 5316 JMP .-2
2466 02721 0653 AND I SATPNT
2467 02722 7450 SNA /IS THIS SEGMENT REALLY ASSIGNED?
2468 02723 7402 HLT /NO - ERROR *****
2469 02724 7040 CMA
2470 02725 0653 AND I SATPNT /CLEAR SAT TABLE BIT
2471 02726 3653 DCA I SATPNT / THE SEGMENT IS NOW AVAILABLE
2472 02727 2654 ISZ I SATCNT /UPDATE THE AVAILABLE SEGMENTS COUNT
2473 02730 5660 JMP I SATREL
2474
2475 02731 0252 C0252, 252 / [3770 BITS / 14 BITS PER WORD (OCTAL)]
2476 02732 7764 C7764, -14
/TSS-8.25 CONFIGURATION FOR UWM Page 58
2477 02733 4010 CM3770, -3770
2478 02734 6621 SEGMAX, -DSKSIZ+JOBMAX+SWDEX^20+1 / (-) LARGEST SEGMENT NUMBER
/TSS-8.25 CONFIGURATION FOR UWM Page 59
2479 /ROUTINE TO FETCH A LINKED-BLOCK (USED BY 'OPEN').
2480 02735 0000 GTBLOK, 0
2481 02736 3350 DCA GTB1
2482 02737 6221 CFLD
2483 02740 1350 TAD GTB1
2484 02741 6202 CIF
2485 02742 4512 GETBLK
2486 02743 5747 JMP I GTBERR /NO BLOCK AVAILABLE - SAY "PROTECTION VIOLATION"
2487 02744 6211 DATFLD
2488 02745 1750 TAD I GTB1
2489 02746 5735 JMP I GTBLOK
2490 02747 0562 GTBERR, OPNER2
2491 02750 0000 GTB1, 0
2492
2493 /DISPATCH TABLE FOR IOTS
2494
2495 02751 3511 IODISP, ASD1
2496 02752 4200 REL0
2497 02753 4400 REN0
2498 02754 0401 OPN0
2499 02755 1000 CLS0
2500 02756 1200 WND0
2501 02757 1105 PRT0
2502 02760 1200 WND0
2503 02761 0400 XOPN0
2504 02762 4464 CPASS0
2505 02763 1400 CRF0
2506 02764 1600 EXT0
2507 02765 2000 RED0
2508 02766 2200 INF0
2509 02767 2317 LGI0
2510 02770 3230 LGO0
2511 02771 4543 BCLR0
/TSS-8.25 CONFIGURATION FOR UWM Page 60
2512 PAGE
2513 /ROUTINE TO GET A DIRECTORY WORD INTO CORE
2514
2515 /CALLING SEQUENCE:
2516 / TAD (POINTER TO RETRIEVAL INFORMATION)
2517 / JMS GE0
2518 / WORD NUMBER
2519 / RETURN (BUFFER POINTER IN AC, 0 IF NON-EXISTENT)
2520
2521 03000 0000 GE0, 0
2522 03001 3240 DCA GERETP /STORE RETRIEVAL INFORMATION POINTER
2523 03002 1600 TAD I GE0
2524 03003 0243 AND K7400 /FIND UFD SEGMENT #
2525 03004 7106 CLL RTL; RTL; RAL
03005 7006
03006 7004
2526 03007 1240 TAD GERETP
2527 03010 3240 DCA GERETP
2528 03011 1640 TAD I GERETP /GET THE PHYSICAL SEGMENT #
2529 03012 7450 SNA
2530 03013 5236 JMP GE3
2531 03014 3241 DCA RDTEMP
2532
2533 /FILE READ ROUTINE, CHECKS TO SEE IF BUFFER IS FULL.
2534 /IF SO, IS IT THE SEGMENT WE ARE TRYING TO READ?
2535 /IF YES, LEAVE, IF NO, WRITE OUT THE BUFFER
2536 /BEFORE READING THE PROPER SEGMENT.
2537 03015 2037 ISZ BUFSTA /ANYTHING IN BUFFER?
2538 03016 5225 JMP RD0 /NO, READ
2539 03017 1242 TAD RDCURR /YES, SAME AS SEGMENT WE ARE LOOKING FOR
2540 03020 7041 CIA
2541 03021 1241 TAD RDTEMP
2542 03022 7650 SNA CLA /IS THIS THE SEGMENT WE WANT?
2543 03023 5231 JMP RD3 /YES - SEGMENT ALREADY IN CORE
2544 03024 4533 JMS I WRT1 /NO - WRITE IT OUT IF NECESSARY
2545 03025 1241 RD0, TAD RDTEMP
2546 03026 4267 JMS RD30 /SET UP PARAMETERS FOR A READ OPERATION
2547 03027 4507 JMS I FIO01 /PERFORM THE READ
2548 03030 5534 JMP I FIEXIT /ERROR ON READ
2549 03031 7240 RD3, CLA CMA
2550 03032 3037 DCA BUFSTA /SET BUFFER STATUS TO FULL
2551 03033 1244 TAD C0377
2552 03034 0600 AND I GE0 /ADDRESS WITHIN SEGMENT
2553 03035 1067 TAD BUFFER /CREATE A POINTER
2554 03036 2200 GE3, ISZ GE0
2555 03037 5600 JMP I GE0 /RETURN
2556
2557 03040 0000 GERETP, 0
2558 03041 0000 RDTEMP, 0
2559 03042 0000 RDCURR, 0
2560 03043 7400 K7400, 7400
2561 03044 0377 C0377, 0377
/TSS-8.25 CONFIGURATION FOR UWM Page 61
2562 /ROUTINE TO ZERO A DISC SEGMENT. WE DON'T ACTUALLY WRITE
2563 /OUT ZEROES, ALL WE DO IS ZERO THE CORE-BUFFER AND SET
2564 /THINGS UP SO IT WILL BE WRITTEN OUT THE NEXT TIME A BLOCK
2565 /IS NEEDED OR WHEN FIP EXITS.
2566
2567 03045 0000 SCL0, 0
2568 03046 3242 DCA SCLSEG /SAVE THE SEGMENT NUMBER
2569 03047 4533 JMS I WRT1 /WRITE OUT THE BUFFER IF NECESSARY
2570 03050 1266 TAD MSEGSZ
2571 03051 3137 DCA CFH /SET THE BUFFER LENGTH
2572 03052 1067 TAD BUFFER
2573 03053 3241 DCA SCLPTR / AND THE BUFFER POINTER
2574 03054 3641 SCL1, DCA I SCLPTR /NOW CLEAR THE BUFFER TO ZEROES
2575 03055 2241 ISZ SCLPTR
2576 03056 2137 ISZ CFH
2577 03057 5254 JMP SCL1
2578 03060 1242 TAD SCLSEG
2579 03061 4267 JMS RD30 /SET UP THE READ PARAMETERS
2580 03062 7240 CLA CMA / AND JUST INDICATE THE BUFFER IS FULL
2581 03063 3037 DCA BUFSTA
2582 03064 4524 SAVBUF /ALSO SET 'BUFFER CHANGED'
2583 03065 5645 JMP I SCL0 /THEN JUST RETURN
2584
2585 03066 7400 MSEGSZ, -WRDSEG
2586 3041 SCLPTR= RDTEMP
2587 3042 SCLSEG= RDCURR
2588
2589 /ROUTINE TO SET UP FOR A READ
2590 /ENTER WITH SEGMENT NUMBER. THIS IS CONVERTED
2591 /TO A PHYSICAL DISC ADDRESS
2592 03067 0000 RD30, 0
2593 03070 3242 DCA RDCURR /SAVE AS CURRENT BUFFERED SEGMENT
2594 03071 7240 CLA CMA
2595 03072 1242 TAD RDCURR
2596 03073 7112 CLL RTR
2597 03074 7012 RTR
2598 03075 3241 DCA RDTEMP
2599 03076 1241 TAD RDTEMP
2600 03077 7010 RAR
2601 03100 0243 AND K7400
2602 03101 3156 DCA FLPARB+5
2603 03102 1241 TAD RDTEMP
2604 03103 0244 AND C0377
2605 03104 1043 TAD FIBASE
2606 03105 7106 CLL RTL
2607 03106 3152 DCA FLPARB+1
2608 03107 6221 CFLD /CHANGE TO CURRENT FIELD
2609 03110 1243 TAD K7400
2610 03111 3154 DCA FLPARB+3 /WORD COUNT (ONE BUFFER)
2611 03112 7240 CLA CMA
2612 03113 1067 TAD BUFFER
2613 03114 3155 DCA FLPARB+4 /CORE ADDRESS
2614 03115 1027 TAD C6603 /READ IOT
2615 03116 3151 DCA FLPARB
2616 03117 5667 JMP I RD30
/TSS-8.25 CONFIGURATION FOR UWM Page 62
2617 /ACTUAL IO ROUTINE
2618 /SET UP ALL IO PARAMETERS IN "FLPARB", AND JMS FIPIO
2619
2620 03120 0000 FIPIO, 0
2621 03121 1007 TAD FIPFLD
2622 03122 7010 RAR
2623 03123 3153 DCA FLPARB+2 /='S FIELD WE'RE IN TIMES 4
2624 03124 6221 CFLD /CHANGE TO CURRENT FIELD IF NECESSARY
2625 03125 1374 TAD FIRETP /POINTER TO FIORET
2626 03126 3001 DCA 1 /RETURN ADDRESS - SET TO RETURN BELOW WHEN FIP IS RESTARTED
2627 03127 1340 TAD FIO3 /GET FIPBLK
2628 03130 6211 DATFLD
2629 03131 3773 DCA I FIUTBA
2630 03132 6221 CFLD
2631 03133 6202 CIF
2632 03134 4473 BLT /MOVE DISC TRANSFER PARMS INTO DSUTBL BLOCK
2633 03135 6221 CFLD
2634 03136 0151 FLPARB
2635 03137 6211 DATFLD /DESTINATION FIELD
2636 03140 7720 FIO3, FIPBLK /DESTINATION
2637 03141 7770 -10 /WORD COUNT
2638 03142 6203 CIF CDF
2639 03143 2771 ISZ I DSBSYA /GLOBAL TO "DSBUSY"
2640 03144 5532 WAIT
2641 03145 5775 JMP I OVER /GO TO FIELD 0, LOCATION "OVERLA+5"
2642
2643 /MONITOR RETURNS CONTROL HERE AFTER COMPLETING THE TRANSFER
2644 03146 7200 FIORET, CLA /RETURNS FROM DISC IO COME HERE
2645 03147 1020 TAD C0200 /RESET THE FIP STARTING ADDRESS
2646 03150 3001 DCA 1 /... TO 0200
2647 03151 4506 FGETJT
2648 03152 0000 JOBSTS
2649 03153 6211 DATFLD
2650 03154 3372 DCA FIPTR1
2651 03155 1772 TAD I FIPTR1 /PICK UP "JOBSTS"
2652 03156 6221 CFLD /CHANGE TO CURRENT FIELD
2653 03157 0014 AND P0007 /CHECK ERROR BITS
2654 03160 7440 SZA
2655 03161 5364 JMP FIO6 /SOME KIND OF ERROR OCCURRED
2656 03162 2320 ISZ FIPIO /NO ERROR, NORMAL RETURN
2657 03163 5720 JMP I FIPIO
2658 03164 1370 FIO6, TAD C7773 /-5, DISC ERROR CODE
2659 03165 7640 SZA CLA
2660 03166 2320 ISZ FIPIO /ERROR WAS NOT CAUSED BY DISC TRANSFER
2661 03167 5720 JMP I FIPIO /EXIT WITHOUT SKIPPING TO INDICATE DISC TRANSFER ERROR
2662
2663 03170 7773 C7773, -5
2664 03171 0036 DSBSYA, DSBUSY
2665 03172 0000 FIPTR1, 0
2666 03173 3071 FIUTBA, DSUTBL+4+4
2667 03174 3146 FIRETP, FIORET
2668 03175 0572 OVER, OVRLA1
/TSS-8.25 CONFIGURATION FOR UWM Page 63
2669 PAGE
2670 /ROUTINE TO CHECK WHETHER THE FILE A USER
2671 /IS ATTEMPTING TO ACCESS IS HIS.
2672
2673 /CALLING SEQUENCE:
2674 / TAD (INTERNAL FILE NUMBER)
2675 / JMS UC0
2676 / ERROR RETURN (AC=0 IF FILE NOT OPEN)
2677 / NORMAL RETURN
2678
2679 03200 0000 UC0, 0
2680 03201 4504 JMS I EBLD0
2681 03202 3325 DCA UCENTP
2682 03203 1725 TAD I UCENTP /PICK UP 'ENTTBL' ENTRY FOR THIS FILE
2683 03204 7450 SNA
2684 03205 5600 JMP I UC0 /FILE NOT OPEN
2685 03206 7041 CIA
2686 03207 7040 CMA
2687 03210 7104 CLL RAL / * 2 (AND ZAP 'EXCLUSIVE USE' BIT)
2688 03211 1064 TAD UFDTBL
2689 03212 3227 DCA UCUFDP /POINTER TO OPEN UFD TABLE
2690 03213 7240 CLA CMA
2691 03214 1627 TAD I UCUFDP
2692 03215 7650 SNA CLA /IS THIS A DIRECTORY?
2693 03216 5221 JMP UC1 /YES - ONLY OWNER GETS IT (NOT BILLING SYSTEM)
2694 03217 4474 CHKACT /NO - IS THIS A PRIVILEGED USER?
2695 03220 5225 JMP UC2 /YES - HE GETS ANYTHING ELSE
2696 03221 1050 UC1, TAD FIACCT /GET HIS ACCOUNT NUMBER
2697 03222 7041 CIA
2698 03223 1627 TAD I UCUFDP
2699 03224 7450 SNA /DOES HE OWN THIS?
2700 03225 2200 UC2, ISZ UC0 /YES - FIX RETURN ADDRESS
2701 03226 5600 JMP I UC0
2702
2703 03227 0000 UCUFDP, 0
/TSS-8.25 CONFIGURATION FOR UWM Page 64
2704 /THIS HANDLES THE 'LOGOUT' IOT - IF THE AC IS SET TO THE
2705 /USER'S JOB NUMBER, WE LOG HIM OUT; IF THE AC IS 0, WE RETURN
2706 /THE NUMBER OF ADDITIONAL USERS LOGGED-IN UNDER HIS ACCOUNT.
2707
2708 03230 1142 LGO0, TAD FIOSTK+1 /DID HE SET HIS AC= TO HIS JOB #?
2709 03231 7041 CIA
2710 03232 1051 TAD FIJOB
2711 03233 7640 SZA CLA
2712 03234 5757 JMP I LGO1A /NO - SEE IF HE WANTS COUNT OF OTHER USERS
2713 03235 4761 JMS I LNS01 /YES - FIRST RELEASE ALL HIS DEVICES
2714 03236 5241 JMP .+3
2715 03237 4520 JMS I REL01
2716 03240 5235 JMP .-3 /KEEP GOING
2717 03241 4477 JMS I CL01 /CLOSE FILE 0
2718 03242 7001 IAC
2719 03243 4477 JMS I CL01 /CLOSE FILE1
2720 03244 7126 CLL CML RTL
2721 03245 4477 JMS I CL01 /CLOSE FILE 2
2722 03246 1011 TAD P0003
2723 03247 4477 JMS I CL01 /CLOSE FILE3
2724 03250 1050 TAD FIACCT /GET USER'S ACCOUNT NUMBER
2725 03251 3356 DCA LGOPRM+1 /DELIVER TO CALLING SEQUENCE FOR SEARCH
2726 03252 7240 CLA CMA
2727 03253 4502 JMS I DS01 /FIND MFD ENTRY; 1 WORD SEARCH
2728 03254 3355 LGOPRM
2729 03255 7402 HLT /ERROR - MASTER DIRECTORY MAY BE LOST *****
2730 03256 1013 TAD C0006
2731 03257 3356 DCA LGOPTR /POINTER TO CP TIME COUNTER
2732 03260 1404 TAD I ZDS1 /PICK UP THE RELATIVE UFD-LOCATION
2733 03261 3325 DCA LGOENT / FOR CHECKING IF REDUCTION IS POSSIBLE
2734 03262 4506 FGETJT
2735 03263 0016 JOBRTM /JOB RUN TIME IN STATUS
2736 03264 3147 DCA FIOSTK+6 /POINTS TO LOW ORDER RUN TIME
2737 03265 4506 FGETJT
2738 03266 0017 JOBRTH
2739 03267 3150 DCA FIOSTK+7 / AND HIGH-ORDER
2740 03270 6211 DATFLD
2741 03271 1547 TAD I FIOSTK+6
2742 03272 0033 AND C7700 /USE HIGH PART OF LOW-ORDER TIME
2743 03273 7104 CLL RAL
2744 03274 3147 DCA FIOSTK+6
2745 03275 1550 TAD I FIOSTK+7
2746 03276 6221 CFLD /BACK TO THIS FIELD
2747 03277 0017 AND P0077
2748 03300 1147 TAD FIOSTK+6 /NOW COMBINE THE TWO
2749 03301 7006 RTL
2750 03302 7006 RTL
2751 03303 7006 RTL
2752 03304 1756 TAD I LGOPTR /UPDATE RUNTIME (CPU TIME : DATE WORD)
2753 03305 7430 SZL /DID IT JUST OVERFLOW?
2754 03306 7240 CLA CMA /YES - FORCE IT TO THE MAXIMUM
2755 03307 3756 DCA I LGOPTR
2756 03310 4524 SAVBUF / & SET 'BUFFER CHANGED' SWITCH
2757 03311 2356 ISZ LGOPTR /NOW GET TO THE RETRIEVAL-BLOCK POINTER
2758 03312 1756 TAD I LGOPTR
2759 03313 3341 DCA LGORET / & SAVE IT FOR POSSIBLE UFD REDUCTION
2760 03314 1050 TAD FIACCT
/TSS-8.25 CONFIGURATION FOR UWM Page 65
2761 03315 4531 JMS I UTS01 /FIND OUR ACCOUNT NUMBER IN 'UFDTBL'
2762 03316 7402 HLT /ERROR - NO 'UFDTBL' ENTRY FOR US *****
2763 03317 4472 JMS I BLDP1 /CALCULATE THE 'ENTTBL' ENTRY LOCATION
2764 03320 3356 DCA LGOPTR / IN CASE WE'RE THE LAST USER OF THIS UFD
2765 03321 2536 ISZ I UTPRNU /DECREMENT THE ACCESS-COUNT FOR THIS UFD
2766 03322 5346 JMP LGO3
2767 03323 1065 TAD RETTBL /LAST USER ACCESSING THIS UFD
2768 03324 4505 JMS I ENS01 /FIND THE NUMBER OF USERS READING IT
2769 UCENTP,
2770 03325 0000 LGOENT, 0
2771 03326 7640 SZA CLA /DOES ANYONE HAVE IT OPEN AS A FILE?
2772 03327 5343 JMP LGO2 /YES - WE COULDN'T REDUCE IT NOW
2773 03330 1356 TAD LGOPTR
2774 03331 4511 JMS I GE01 /NO - GET THE INITIAL LINK-WORD IN THE UFD
2775 03332 0003 3
2776 03333 3325 DCA LGOENT
2777 03334 1725 TAD I LGOENT
2778 03335 7640 SZA CLA /IS THE UFD COMPLETELY EMPTY?
2779 03336 5343 JMP LGO2 /NO - CAN'T REDUCE IT THEN
2780 03337 7301 CLA CLL IAC
2781 03340 4762 JMS I RED301 /NOW REDUCE THE UFD TO ONE SEGMENT
2782 03341 0000 LGORET, 0
2783 03342 6160 RTABLE / (FIRST RETTBL ENTRY IS ALWAYS MFD)
2784 03343 7240 LGO2, CLA CMA
2785 03344 1136 TAD UTPRNU
2786 03345 4526 JMS I TF01 /NOW FREE THE 'UFDTBL' ENTRY
2787 03346 7200 LGO3, CLA
2788 03347 1360 TAD LGO4A /KLUDGE FIEXIT TO RETURN TO LGO4
2789 03350 3754 DCA I LGKLUJ
2790 03351 7240 TABOUT, CLA CMA
2791 03352 3060 DCA TABSTA /FORCE TABLES OUT
2792 03353 5534 JMP I FIEXIT
2793
2794 03354 3644 LGKLUJ, FIX500
2795 03355 6160 LGOPRM, RTABLE /2-WORD PARAMETER BLOCK FOR 'DS01'
2796 03356 0000 LGOPTR, 0
2797 03357 4643 LGO1A, LGO1
2798 03360 4600 LGO4A, LGO4
2799 03361 4732 LNS01, LNS0
2800 03362 2400 RED301, RED30
2801
2802 /ROUTINE TO RETURN A BLOCK TO FREE-CORE.
2803 03363 0000 RETBKS, 0
2804 03364 6221 CFLD
2805 03365 6202 CIF
2806 03366 4521 RETBLK /JUST LINK TO FIELD 0
2807 03367 5763 JMP I RETBKS / AND RETURN
2808
2809 /ROUTINE TO RETURN A LINKED LIST OF FREE-CORE BLOCKS.
2810 03370 0000 RETBLS, 0
2811 03371 7450 SNA /AT END OF CHAIN?
2812 03372 5770 JMP I RETBLS /YES - RETURN
2813 03373 4363 JMS RETBKS /NO - RELEASE THE BLOCK
2814 03374 5371 JMP .-3
/TSS-8.25 CONFIGURATION FOR UWM Page 66
2815 PAGE
2816 /ROUTINE TO OPEN A UFD & LEAVE ZERO ACCESS COUNT
2817
2818 /CALLING SEQUENCE:
2819 / TAD (PROJ,PROG NUMBER)
2820 / JMS UFO0
2821 / ERROR RETURN
2822 / NORMAL RETURN (POSITION ON TABLE IN AC)
2823
2824 03400 0000 UFO0, 0
2825 03401 3266 DCA UFORET /SAVE THE ACCOUNT NUMBER
2826 03402 1266 TAD UFORET
2827 03403 4531 JMS I UTS01 /SEARCH THE TABLE
2828 03404 7610 SKP CLA /NOT FOUND - BUILD NEW ENTRY
2829 03405 5264 JMP UFOEXT /GOT IT - JUST EXIT
2830 03406 1266 TAD UFORET
2831 03407 4270 JMS UFO6 /GET THE RETRIEVAL INFO. FOR THIS UFD
2832 03410 5231 JMP UFO5 /NO LUCK - TAKE ERROR EXIT
2833 03411 3270 DCA UOBUFP /POINTER TO RETRIEVAL INFORMATION
2834 03412 1064 TAD UFDTBL
2835 03413 3136 DCA UOUFDP /UFD TABLE POINTER
2836
2837 /SEARCH FOR A FREE SLOT IN UFDTBL
2838 03414 1536 UFO3, TAD I UOUFDP
2839 03415 7650 SNA CLA
2840 03416 5236 JMP UFO2 /FOUND A FREE SLOT ON THE TABLE
2841 03417 2136 ISZ UOUFDP
2842 03420 1536 TAD I UOUFDP
2843 03421 7650 SNA CLA /IS IT REALLY EMPTY?
2844 03422 5233 JMP UFO10 /YES - CLEAN UP
2845
2846 /NO IT IS OCCUPIED
2847 03423 2136 ISZ UOUFDP
2848 03424 1136 TAD UOUFDP
2849 03425 7041 CIA
2850 03426 1065 TAD UFDEND
2851 03427 7640 SZA CLA /HAVE WE SEARCHED THE WHOLE TABLE?
2852 03430 5214 JMP UFO3 /LOOK AT NEXT SLOT
2853 03431 7300 UFO5, CLA CLL
2854 03432 5600 JMP I UFO0 /NO ROOM ON TABLE
2855
2856 /COMES HERE WITH UOUFDP POINTING TO A FREE SLOT IN UFDTBL
2857 03433 7240 UFO10, CLA CMA
2858 03434 1136 TAD UOUFDP /BACK UP THE POINTER
2859 03435 3136 DCA UOUFDP
2860 03436 1267 UFO2, TAD UFORET+1
2861 03437 3536 DCA I UOUFDP /PUT PROJ,PROG NUMBER ON TABLE
2862 03440 2136 ISZ UOUFDP
2863 03441 3536 DCA I UOUFDP /ACCOUNT FOR THIS ACCESS
2864 03442 7240 CLA CMA
2865 03443 1064 TAD UFDTBL
2866 03444 7041 CIA
2867 03445 1136 TAD UOUFDP
2868 03446 7110 CLL RAR
2869 03447 3306 DCA UFO1 /RELATIVE POSITION ON TABLE
2870 03450 1306 TAD UFO1
2871 03451 4472 JMS I BLDP1 /GENERATE A PTR. INTO RETTBL
/TSS-8.25 CONFIGURATION FOR UWM Page 67
2872 03452 3266 DCA UFORET /RETRIEVAL POINTER
2873 03453 1035 TAD C7771
2874 03454 3137 DCA CFH /COUNTER FOR TRANSFER TO TABLE
2875
2876 /NOW MOVE RETRIEVAL INFORMATION FOR THIS GUY'S
2877 /UFD INTO RETTBL
2878 03455 2270 UFO4, ISZ UOBUFP
2879 03456 1670 TAD I UOBUFP
2880 03457 3666 DCA I UFORET
2881 03460 2266 ISZ UFORET
2882 03461 2137 ISZ CFH /ENTIRE RETRIEVAL BLOCK TRANSFERRED?
2883 03462 5255 JMP UFO4 /NO, KEEP IT UP
2884 03463 1306 TAD UFO1 /YES - PICK UP RELATIVE POSITION
2885 03464 2200 UFOEXT, ISZ UFO0 /PREPARE FOR NORMAL RETURN
2886 03465 5600 JMP I UFO0
2887
2888 03466 0000 UFORET, 0
2889 03467 0000 0
2890 0136 UOUFDP=UTPRNU
2891
2892 /ROUTINE TO READ IN THE RETRIEVAL INFORMATION FOR THE
2893 /UFD BELONGING TO THE ACCOUNT NUMBER PASSED IN THE AC.
2894 UOBUFP,
2895 03470 0000 UFO6, 0
2896 03471 3267 DCA UFORET+1 /SET UP CALLING SEQUENCE FOR MFD SEARCH
2897 03472 1065 TAD RETTBL
2898 03473 3266 DCA UFORET
2899 03474 7040 CMA
2900 03475 4502 JMS I DS01 /ONE WORD MASTER FILE DIRECTORY SEARCH FOR PROJ,PROG MATCH
2901 03476 3466 UFORET
2902 03477 5670 JMP I UFO6 /COULD NOT FIND UFD ENTRY
2903 03500 1014 TAD P0007
2904 03501 3266 DCA UFORET /POINTER TO UFD RETRIEVAL INFORMATION
2905 03502 1666 TAD I UFORET
2906 03503 3306 DCA UFO1
2907 03504 1065 TAD RETTBL /GET POINTER TO RETRIEVAL INFO FOR THE MFD
2908 03505 4511 JMS I GE01 /GET RETRIEVAL INFORMATION INTO CORE
2909 03506 0000 UFO1, 0
2910 03507 2270 ISZ UFO6
2911 03510 5670 JMP I UFO6
/TSS-8.25 CONFIGURATION FOR UWM Page 68
2912 /ROUTINE TO ASSIGN A DEVICE
2913
2914 03511 1142 ASD1, TAD FIOSTK+1
2915 03512 4503 JMS I DTE01 /IS THIS DEVICE ASSIGNED TO THIS JOB?
2916 03513 0000 ASD2, 0 /SET BY DTE01 TO POINT TO PROPER ENTRY IN DEVTBL
2917 03514 7410 SKP
2918 03515 5360 JMP ASD5 /YES
2919 03516 1713 TAD I ASD2 /GET THE DDB ADDRESS
2920 03517 7450 SNA /IS THERE A DDB?
2921 03520 5330 JMP ASD3 /NO - OKAY TO ASSIGN IT
2922 /
2923 /COMES HERE IF ONE JOB ATTEMPTS TO ASSIGN AN ALREADY ASSIGNED DEVICE
2924 03521 7001 IAC
2925 03522 3137 DCA CFH /NOW POINTS TO JOB # (OR LOC 0, IF ILLEGAL)
2926 03523 1537 TAD I CFH
2927 03524 7450 SNA /JOB NUMBER THERE?
2928 03525 7040 CMA /NO - RETURN 7777
2929 03526 3046 DCA FIUSAC /RETURN THE OWNER'S JOB NUMBER
2930 03527 5356 JMP ASD4 /EXIT
2931 /
2932 /COMES HERE IF OKAY TO MAKE THIS ASSIGNMENT
2933 03530 1142 ASD3, TAD FIOSTK+1
2934 03531 7500 SMA /IS THE DEVICE BEING ASSIGNED A TELETYPE?
2935 03532 5535 JMP I LGI201 /YES - THAT'S NOT ALLOWED
2936 03533 1370 TAD ASDCHK
2937 03534 7710 SPA CLA /IS HE TRYING TO GET THE RK05?
2938 03535 5340 JMP .+3 /NO
2939 03536 4475 CHKPRV /YES - DOES HE HAVE PRIVILEGE?
2940 03537 5535 JMP I LGI201 /NO - ERROR
2941 03540 6221 CFLD /CHANGE TO CURRENT FIELD
2942 03541 1313 TAD ASD2
2943 03542 6202 CIF
2944 03543 4513 GETDDB /GET A BLOCK FROM THE FREE LIST AND LINK IT INTO DEVTBL
2945 03544 5535 JMP I LGI201 /NO BLOCK - JUST RETURN A BAD STATUS
2946 03545 6211 DATFLD
2947 03546 1713 TAD I ASD2 /PICK DDB ADDRESS FROM DEVTBL
2948 03547 3137 DCA CFH /SAVE IT
2949 03550 1142 TAD FIOSTK+1
2950 03551 0016 AND P0037
2951 03552 3537 DCA I CFH /SET TO REFLECT THE DEVICE NUMBER
2952 03553 2137 ISZ CFH
2953 03554 1051 TAD FIJOB
2954 03555 3537 DCA I CFH / AND STORE THE JOB NUMBER
2955 03556 6221 ASD4, CFLD
2956 03557 5534 JMP I FIEXIT /THEN JUST EXIT
2957 /
2958 /USER ALREADY OWNS THE DEVICE - IF IT'S THE HSR, JUST CLEAR THE BUFFER.
2959 03560 1142 ASD5, TAD FIOSTK+1
2960 03561 7104 CLL RAL
2961 03562 7640 SZA CLA /HSR?
2962 03563 5356 JMP ASD4 /NO - JUST EXIT
2963 03564 1713 TAD I ASD2 /GET THE DDB POINTER
2964 03565 6202 CIF
2965 03566 4771 JMS I ASDCLR /CLEAR THE BUFFER
2966 03567 5356 JMP ASD4
2967
2968 03570 3750 ASDCHK, -4030 /RK05 DRIVE 0 ASSIGN CODE
/TSS-8.25 CONFIGURATION FOR UWM Page 69
2969 03571 4400 ASDCLR, SICLR
/TSS-8.25 CONFIGURATION FOR UWM Page 70
2970
2971 PAGE
2972
2973 /EXIT ROUTINE
2974 /COMES HERE WHEN FIP HAS COMPLETED ITS TASK
2975 /FIRST, SEE IF ANY INTERNAL FILE HAVE BEEN CHANGED
2976 /THOSE THAT HAVE CHANGED MUST BE WRITTEN BACK OUT TO DISC
2977
2978 03600 6221 FIX0, CFLD
2979 03601 7200 CLA
2980 03602 4533 JMS I WRT1 /MAKE SURE THE BUFFER IS EMPTY
2981 03603 2060 ISZ TABSTA /CHECK TABLE STATUS
2982 03604 5207 JMP FIX1 /NOTHING CHANGED IN TABLES
2983 03605 1277 TAD FIPTBS /BOTTOM OF TABLE AREA
2984 03606 5212 JMP FIX2 /SAVE TABLES BEFORE EXIT
2985
2986 03607 2057 FIX1, ISZ SATSTA /CHECK SAT STATUS
2987 03610 5221 JMP FIX20 /NOTHING TO BE SAVED, EXIT
2988 03611 1070 TAD SATBOT /BOTTOM OF SAT
2989 03612 4266 FIX2, JMS FIX40
2990 03613 1005 TAD FIDEXP /GLOBAL TO "FIPDEX"
2991 03614 3152 DCA FLPARB+1 /MEMORY FIELD
2992 03615 1030 TAD C6605
2993 03616 3151 DCA FLPARB /WRITE IOT
2994 03617 4507 JMS I FIO01 /PERFORM THE WRITE
2995 03620 7402 HLT /ERROR ON WRITE, FATAL
2996 /ALL DISC TABLES ARE NOW UP TO DATE
2997 03621 4506 FIX20, FGETJT
2998 03622 0000 JOBSTS
2999 03623 3052 DCA FIOPTR
3000 03624 6211 DATFLD
3001 03625 1452 TAD I FIOPTR
3002 03626 0300 AND FISIOT /CLEAR 'FIP IOT' BIT
3003 03627 3452 DCA I FIOPTR
3004 03630 6221 CFLD
3005 03631 4506 FGETJT /RESTORE USER REGISTERS
3006 03632 0011 JOBREG
3007 03633 3241 DCA FIX21
3008 03634 6202 CIF
3009 03635 4473 BLT
3010 03636 6221 CFLD
3011 03637 0044 FIUSPC
3012 03640 6211 DATFLD
3013 03641 0000 FIX21, 0
3014 03642 7773 -5
3015 03643 5644 JMP I .+1
3016 03644 3645 FIX500, FIX50 /CHANGED TO 'LGO4' DURING LOGOUT PROCESSING
3017 03645 6221 FIX50, CFLD
3018 03646 1702 TAD I SEGCNT
3019 03647 6201 CDF
3020 03650 3701 DCA I FIXCNT /STORE # FREE SEGMENTS IN FIELD 0
3021 03651 4476 CHKSRC /WHO CALLED US?
3022 03652 5260 JMP FIX30 /A USER - JUST CLEAR THE ENTRY
3023 03653 1027 TAD C6603 /'SI' - SET UP TO READ IT IN
3024 03654 3151 DCA FLPARB
3025 03655 3152 DCA FLPARB+1 /SI IS IN THE TRACK 0 OF THE DISC
3026 03656 4266 JMS FIX40
/TSS-8.25 CONFIGURATION FOR UWM Page 71
3027 03657 4507 JMS I FIO01 /RETURN WILL BE TO SI
3028
3029 /FIP WAS CALLED BY A USER - JUST CLEAR THE 'CORTBL' ENTRY
3030 03660 6201 FIX30, CDF
3031 03661 1442 TAD I FANFLD /A USER - GET THE 'CORTBL' ENTRY
3032 03662 0276 AND FIPCLR / AND CLEAR THE JOB NUMBER & LOCK BIT
3033 03663 3442 DCA I FANFLD
3034 03664 5665 JMP I .+1 /NOW GO CHECK FOR OTHER 'FIPJOB'S
3035 03665 5000 FIXSCH
3036
3037 /ROUTINE TO SET UP THE PARAMETERS IN 'FLPARB'.
3038 03666 0000 FIX40, 0
3039 03667 3154 DCA FLPARB+3 /SET (-) WORD-COUNT
3040 03670 1154 TAD FLPARB+3
3041 03671 3156 DCA FLPARB+5 /SET DISC ADDRESS
3042 03672 7240 CLA CMA
3043 03673 1156 TAD FLPARB+5
3044 03674 3155 DCA FLPARB+4 /SET CORE ADDRESS - 1
3045 03675 5666 JMP I FIX40
3046
3047 03676 5600 FIPCLR, FSWP+NOTRUN+FIP+SI
3048 0021 FIPFIP= C0400
3049 03677 5600 FIPTBS, ENTABL /LOWEST TABLE IN FIP
3050 03700 7677 FISIOT, -JSIOT-1
3051 03701 5533 FIXCNT, NFSEGS /VALUE FOR RESIDENT 'SEGS'
3052 03702 7251 SEGCNT, -SATSIZ+1 /POINTER TO # FREE SEGMENTS
/TSS-8.25 CONFIGURATION FOR UWM Page 72
3053 /ROUTINE TO DETERMINE IF A DEVICE IS ASSIGNED TO THIS JOB
3054
3055 /CALLING SEQUENCE:
3056 / TAD (DEVICE NUMBER)
3057 / JMS DTE0
3058 / RETURN (DEVICE NOT ASSIGNED TO THIS JOB)
3059 / RETURN (DEVICE ASSIGNED)
3060
3061 03703 0000 DTE0, 0
3062 03704 7510 SPA /IS IT A TTY?
3063 03705 5311 JMP .+4 /NO
3064 03706 7104 CLL RAL /YES - GET THE DEVTBL ENTRY-ADDRESS
3065 03707 1062 TAD DEVTBA
3066 03710 5313 JMP DTE1
3067 03711 0017 AND P0077 /EXTRACT THE DEVICE NUMBER
3068 03712 1063 TAD DEVEND / & FIND THE DEVTBL ENTRY
3069 03713 3345 DTE1, DCA DTE2 /POINTER TO DEVTBL ENTRY
3070 03714 1345 TAD DTE2
3071 03715 7041 CIA
3072 03716 1071 TAD DEVOVR
3073 03717 7700 SMA CLA /IS IT A LEGAL DEVICE NUMBER?
3074 03720 5323 JMP .+3 /YES
3075 03721 1344 TAD DTEBAD
3076 03722 3345 DCA DTE2 /NO - FUDGE SO JOB=0 (CHANGED TO 7777)
3077 03723 1345 TAD DTE2
3078 03724 6221 CFLD
3079 03725 3703 DCA I DTE0 /PASS BACK THE DEVTBL POINTER
3080 03726 2303 ISZ DTE0
3081 03727 6211 DATFLD
3082 03730 1745 TAD I DTE2 /GET THE DDB ADDRESS
3083 03731 7450 SNA /IS THERE A DDB?
3084 03732 5703 JMP I DTE0 /NO - DEVICE NOT ASSIGNED TO ANYONE
3085 03733 3345 DCA DTE2
3086 03734 2345 ISZ DTE2
3087 03735 1745 TAD I DTE2
3088 03736 0017 AND P0077 /EXTRACT JOB NUMBER
3089 03737 7041 CIA
3090 03740 1051 TAD FIJOB /NUMBER OF CURRENT JOB
3091 03741 7650 SNA CLA
3092 03742 2303 ISZ DTE0 /"ASSIGNED" RETURN
3093 03743 5703 JMP I DTE0 /NOT OWNED BY THIS JOB
3094
3095 03744 2674 DTEBAD, JOBTBL-1
/TSS-8.25 CONFIGURATION FOR UWM Page 73
3096 /ROUTINE TO FREE AN ENTRY ON THE UFD TABLE
3097
3098 /CALLING SEQUENCE:
3099 / TAD (POSITION ON UFDTBL)
3100 / JMS TF0
3101 / RETURN
3102
3103 DTE2,
3104 03745 0000 TF0, 0
3105 03746 3366 DCA TFUFDP /POSITION ON TABLE
3106 03747 3766 DCA I TFUFDP /CLEAR OWNERS PROJ,PROG NUMBER
3107 03750 1064 TAD UFDTBL /BEGINNING OF TABLE
3108 03751 7041 CIA
3109 03752 1366 TAD TFUFDP
3110 03753 7110 CLL RAR /RELATIVE POSITION ON TABLE
3111 03754 7001 IAC
3112 03755 4472 JMS I BLDP1 /BUILD A PTR. TO ENTTBL
3113 03756 3366 DCA TFUFDP /POINTER TO RETRIEVAL INFORMATION
3114 03757 1034 TAD P7770 /SET # WORDS PER ENTTBL ENTRY
3115 03760 3372 DCA TFCNTR
3116 03761 3766 TF1, DCA I TFUFDP /ZERO OUT THE ENTRY
3117 03762 2366 ISZ TFUFDP
3118 03763 2372 ISZ TFCNTR
3119 03764 5361 JMP TF1
3120 03765 5745 JMP I TF0
3121
3122
3123 /ROUTINE TO GET THE FILE CONTROL-BLOCK FOR THE
3124 /FILE WHOSE INTERNAL FILE NUMBER IS IN THE AC.
3125
3126 TFUFDP,
3127 03766 0000 LNK0, 0 /GET FILE LINKAGE
3128 03767 1377 TAD LNKF
3129 03770 3372 DCA LNK1
3130 03771 4506 FGETJT
3131 TFCNTR,
3132 03772 0000 LNK1, 0
3133 03773 3137 DCA CFH
3134 03774 6211 DATFLD
3135 03775 1537 TAD I CFH /PTR TO FILE CONTROL BLOCK
3136 03776 5766 JMP I LNK0
3137
3138 03777 0020 LNKF, JOBF0
/TSS-8.25 CONFIGURATION FOR UWM Page 74
3139
3140 PAGE
3141
3142 /ROUTINE TO FIND AN EMPTY DIRECTORY ENTRY; THE UFD
3143 /IS EXTENDED IF NECESSARY.
3144 /CALL: TAD (POINTER TO UFD RETRIEVAL INFORMATION)
3145 / JMS DE0
3146 / BAD RETURN (NO FREE ENTRY OR NO DISC FOR UFD)
3147 / NORMAL RETURN (POINTER TO ENTRY IN AC)
3148
3149 04000 0000 DE0, 0
3150 04001 3316 DCA DERETP /SAVE THE RETRIEVAL POINTER
3151 04002 3321 DCA DEBEGG /CLEAR THE 'FROM BEGINNING' SWITCH
3152 04003 1316 TAD DERETP
3153 04004 3010 DCA INDEX
3154 /
3155 /IN ORDER TO SAVE DISC I/O, WE START THE SEARCH FROM THE
3156 /MIDDLE OF THE UFD IF WE ALREADY HAVE ONE OF ITS SEGMENTS
3157 /IN OUR SEGMENT BUFFER. IF WE DON'T FIND AN ENTRY FROM THE
3158 /MIDDLE, WE RE-CHECK THE UFD FROM THE BEGINNING; IF WE STILL
3159 /DON'T FIND AN ENTRY, WE EXTEND THE UFD.
3160 04005 1021 DE1, TAD SEGSIZ
3161 04006 3226 DCA DEWORD /SET INITIAL ADDRESS TO SECOND SEGMENT IN UFD
3162 04007 1410 TAD I INDEX /GET THE NEXT SEGMENT INDEX IN THE UFD
3163 04010 7450 SNA /IS THERE A NEXT?
3164 04011 5220 JMP DE2 /NO - WE SEARCH FROM THE TOP
3165 04012 7041 CIA
3166 04013 1714 TAD I DECURR
3167 04014 7650 SNA CLA /YES - IS IT OUR BUFFERED SEGMENT?
3168 04015 5224 JMP DE4 /YES - START SEARCH FROM WHERE WE ARE
3169 04016 1226 TAD DEWORD /NO - UPDATE OUR ADDRESS BY ONE SEGMENT
3170 04017 5205 JMP DE1 / & CONTINUE CHECKING
3171 /
3172 /THE BUFFERED SEGMENT IS NOT ANY OF THIS UFD'S OR WE COULDN'T
3173 /FIND A FREE ENTRY STARTING FROM THE MIDDLE OF THE UFD,
3174 /SO WE SEARCH THE UFD FROM THE BEGINNING.
3175 04020 7240 DE2, CLA CMA
3176 04021 3321 DCA DEBEGG /SET THE 'FROM BEGINNING' SWITCH
3177 04022 1015 DE3, TAD C0010
3178 04023 3226 DCA DEWORD /SET THE NEW READ ADDRESS
3179 04024 1316 DE4, TAD DERETP
3180 04025 4511 JMS I GE01 /GET THE NEXT ENTRY
3181 04026 0000 DEWORD, 0
3182 04027 7450 SNA /WAS IT WITHIN THE UFD?
3183 04030 5246 JMP DE6 /NO - GO TRY TO EXTEND IT
3184 04031 3137 DCA CFH /YES - SAVE ITS CORE LOCATION
3185 04032 1537 TAD I CFH /GET THE FIRST ENTRY-WORD
3186 04033 7640 SZA CLA /IS IT CLEAR?
3187 04034 5244 JMP DE5 /NO - TRY THE NEXT
3188 04035 2137 ISZ CFH
3189 04036 1537 TAD I CFH /YES - CHECK THE SECOND WORD
3190 04037 7640 SZA CLA /IS THAT OK ALSO?
3191 04040 5244 JMP DE5 /NO
3192 04041 1226 TAD DEWORD /YES - WE HAVE AN EMPTY ENTRY
3193 04042 2200 ISZ DE0 / SO SKIP TO INDICATE IT
3194 04043 5600 JMP I DE0 / AND RETURN WITH ITS LOCATION IN THE AC
3195 04044 1226 DE5, TAD DEWORD /NOT THIS ENTRY - UPDATE THE ADDRESS
/TSS-8.25 CONFIGURATION FOR UWM Page 75
3196 04045 5222 JMP DE3 / AND CONTINUE SEARCH
3197 /
3198 /WE'VE RUN PAST THE END OF THE UFD - WE MAY HAVE TO EXTEND IT.
3199 04046 2321 DE6, ISZ DEBEGG /WAS THIS SEARCH FROM THE FRONT OF THE UFD?
3200 04047 5220 JMP DE2 /NO - SEARCH AGAIN, THIS TIME FROM THE FRONT
3201 04050 1316 TAD DERETP
3202 04051 3315 DCA DEPTR /YES - FIND THE NEXT SEGMENT SLOT
3203 04052 1035 TAD C7771
3204 04053 3137 DCA CFH /SET THE COUNTER (7 SEGMENTS MAXIMUM PER UFD)
3205 04054 1715 DE7, TAD I DEPTR /GET THE NEXT SEGMENT POINTER
3206 04055 7650 SNA CLA /IS THERE A NEXT?
3207 04056 5263 JMP DE8 /NO - WE HAVE ROOM FOR A SEGMENT
3208 04057 2315 ISZ DEPTR /YES - INCREMENT THE POINTER
3209 04060 2137 ISZ CFH
3210 04061 5254 JMP DE7 / & TRY AGAIN
3211 04062 5600 JMP I DE0 /CAN'T EXTEND THE UFD - TAKE ERROR EXIT
3212 /
3213 /WE HAVE ROOM FOR ANOTHER SEGMENT - GET ONE FROM SAT.
3214 04063 4522 DE8, JMS I SATL1 /FIND A FREE SEGMENT
3215 04064 7450 SNA /WAS ONE AVAILABLE?
3216 04065 5600 JMP I DE0 /NO - TAKE ERROR EXIT
3217 04066 3715 DCA I DEPTR /YES - SAVE IT IN THE RETRIEVAL TABLE
3218 04067 1316 TAD DERETP
3219 04070 4717 JMS I ENS31 /GET THE RELATIVE ENTRY NUMBER
3220 04071 7104 CLL RAL
3221 04072 1064 TAD UFDTBL / & THE POINTER INTO 'UFDTBL'
3222 04073 3137 DCA CFH
3223 04074 1537 TAD I CFH /GET THE OWNER'S ACCOUNT NUMBER
3224 04075 4720 JMS I UFO61 / & FETCH THE UFD RETRIEVAL BLOCK
3225 04076 7402 HLT /ACCOUNT NOT FOUND - ERROR *****
3226 04077 3137 DCA CFH /SAVE THE BUFFER POINTER
3227 04100 2137 ISZ CFH
3228 04101 1537 TAD I CFH /GET THE SEGMENT NUMBERS
3229 04102 7640 SZA CLA /IS THIS THE END OF THE POINTERS?
3230 04103 5300 JMP .-3 /NO - KEEP LOOKING
3231 04104 1715 TAD I DEPTR /YES - SET OUR NEW SEGMENT NUMBER
3232 04105 3537 DCA I CFH / INTO THE RETRIEVAL BLOCK
3233 04106 4524 SAVBUF /NOW SET THE SWITCH TO WRITE BACK THE BUFFER
3234 04107 7240 CLA CMA
3235 04110 3060 DCA TABSTA / AND INDICATE THE TABLES HAVE BEEN CHANGED
3236 04111 1715 TAD I DEPTR
3237 04112 4525 JMS I SCL01 /FINALLY WE ZERO THE NEW UFD SEGMENT
3238 04113 5224 JMP DE4 / AND THEN FINISH OUR SEARCH
3239
3240 04114 3042 DECURR, RDCURR
3241 04115 0000 DEPTR, 0
3242 04116 0000 DERETP, 0
3243 04117 2167 ENS31, ENS3
3244 04120 3470 UFO61, UFO6
/TSS-8.25 CONFIGURATION FOR UWM Page 76
3245
3246 /ROUTINE TO SEARCH UFD TABLE FOR PROJ,PROG NUMBER
3247
3248 /CALLING SEQUENCE:
3249 / TAD (PROJ,PROG NUMBER)
3250 / JMS UTS0
3251 / NOT FOUND RETURN
3252 / NORMAL RETURN (RETRIEVAL POSITION IN AC)
3253
3254 DEBEGG,
3255 04121 0000 UTS0, 0
3256 04122 3352 DCA UTPR1 /PROJ,PROG NUMBER
3257 04123 1064 TAD UFDTBL /PTR. TO HEAD OF UFDTBL
3258 04124 3136 DCA UTUPTR
3259 04125 1065 UTS1, TAD UFDEND /END OF UFD TABLE
3260 04126 7041 CIA
3261 04127 1136 TAD UTUPTR
3262 04130 7650 SNA CLA
3263 04131 5721 JMP I UTS0 /COULD NOT FIND PROJ,PROG NUMBER ON TABLE
3264 04132 1536 TAD I UTUPTR
3265 04133 7041 CIA
3266 04134 1352 TAD UTPR1
3267 04135 7650 SNA CLA
3268 04136 5342 JMP UTS3 /FOUND ENTRY, GET POINTER
3269 04137 2136 ISZ UTUPTR /STEP UP ONE SLOT
3270 04140 2136 ISZ UTUPTR
3271 04141 5325 JMP UTS1 /LOOK IN THE NEXT ENTRY
3272 04142 1064 UTS3, TAD UFDTBL
3273 04143 7041 CIA
3274 04144 1136 TAD UTUPTR
3275 04145 7110 CLL RAR /RELATIVE POSITION ON TABLE
3276 04146 7001 IAC /THE RELATIVE POSITION
3277 04147 2136 ISZ UTPRNU /UTPRNU POINTS TO ACCESS COUNT OF THIS PROJ, PROG #
3278 04150 2321 ISZ UTS0
3279 04151 5721 JMP I UTS0
3280
3281 0136 UTUPTR= UTPRNU
3282
3283
3284 /ROUTINE TO FIND THE ADDRESS OF A WORD IN THE
3285 /JOB STATUS BLOCKS FOR THIS JOB.
3286
3287 UTPR1,
3288 04152 0000 FGETJ0, 0
3289 04153 6211 DATFLD
3290 04154 1455 TAD I JOBDAT
3291 04155 7650 SNA CLA /IS EVERYTHING PROPER?
3292 04156 4517 REBOOT /NO - ERROR *****
3293 04157 6221 CFLD
3294 04160 1752 TAD I FGETJ0 /GET THE RELATIVE WORD NUMBER
3295 04161 3365 DCA .+4
3296 04162 1055 TAD JOBDAT /NOW GET THE ADDRESS OF A 'JOBTBL' POINTER
3297 04163 6202 CIF
3298 04164 4514 GETJTA / AND LET THE FIELD 0 ROUTINE DO THE WORK
3299 04165 0000 0
3300 04166 2352 ISZ FGETJ0
3301 04167 5752 JMP I FGETJ0 /THEN JUST RETURN; AC=ADDRESS
/TSS-8.25 CONFIGURATION FOR UWM Page 77
3302
3303
3304 /ROUTINE TO INITIATE AN AUTOMATIC SYSTEM RESTART.
3305 /
3306 04170 0000 RBOOT, 0
3307 04171 6002 IOF
3308 04172 7200 CLA
3309 04173 1370 TAD RBOOT
3310 04174 6202 CIF
3311 04175 5776 JMP I .+1 /OFF TO FIELD 0 WITH ERROR ADDRESS IN THE AC
3312 04176 3600 RELOAD
/TSS-8.25 CONFIGURATION FOR UWM Page 78
3313
3314 PAGE
3315
3316 /THIS HANDLES THE 'REL' IOT - RELEASE A DEVICE.
3317 04200 1142 REL0, TAD FIOSTK+1 /GET THE DEVICE NUMBER
3318 04201 7510 SPA /IS IT A TTY?
3319 04202 4204 JMS REL00 /NO - GO AHEAD AND RELEASE IT
3320 04203 5534 JMP I FIEXIT
3321
3322 /ROUTINE WHICH ACTUALLY RELEASES THE DEVICE.
3323 04204 0000 REL00, 0
3324 04205 4503 JMS I DTE01 /IS THIS DEVICE ASSIGNED TO THIS USER?
3325 04206 0000 RELDVT, 0 /SET BY DTE0 TO POINT TO DEVTBL ENTRY FOR THIS DEVICE
3326 04207 5357 JMP REL8 /NO - TAKE ERROR EXIT IF SI
3327 04210 1606 TAD I RELDVT
3328 04211 3363 DCA RELBLK /SAVE ADDRESS OF DDB
3329 04212 1363 TAD RELBLK
3330 04213 1011 TAD P0003 /POSITION OF TIME IN DDB
3331 04214 3362 DCA RELASD
3332 04215 1762 TAD I RELASD /GET TIME ASSIGNED
3333 04216 7041 CIA
3334 04217 3362 DCA RELASD /-TIME ASSIGNED
3335 04220 6201 CDF
3336 04221 1766 TAD I RELCK1 /GET TIME NOW
3337 04222 0031 AND C7000 /JUST SIGNIFICANT PART OF LOW-ORDER
3338 04223 7104 CLL RAL
3339 04224 3365 DCA RELNOW
3340 04225 1767 TAD I RELCK2
3341 04226 6221 CFLD /BACK TO THIS FIELD
3342 04227 0022 AND P0777 / AND INSIGNIFICANT PART OR HIGH ORDER
3343 04230 1365 TAD RELNOW /TIME AT RELEASE
3344 04231 7006 RTL
3345 04232 7004 RAL
3346 04233 1362 TAD RELASD /-TIME AT ASSIGNMENT (13-BIT SUBTRACT)
3347 04234 7420 SNL /GONE THROUGH MIDNIGHT?
3348 04235 1371 TAD RELCON /YES - ADD FUDGE FACTOR
3349 04236 7450 SNA /ANYTHING TO RECORD?
3350 04237 5260 JMP REL1 /NO
3351 04240 3362 DCA RELASD /YES - SAVE IT
3352 04241 1050 TAD FIACCT
3353 04242 3365 DCA RELRTB+1 /NOW BUILD THE PACKET FOR 'DS0'
3354 04243 7240 CLA CMA
3355 04244 4502 JMS I DS01 /FIND THE MASTER DIRECTORY ENTRY
3356 04245 4364 RELRTB
3357 04246 7402 HLT /MFD IS LOST *****
3358 04247 1012 TAD C0005
3359 04250 3137 DCA CFH /NOW POINTS TO DEVICE TIME WORD
3360 04251 7300 CLA CLL
3361 04252 1362 TAD RELASD
3362 04253 1537 TAD I CFH /ADD IN THE NEW TIME
3363 04254 7430 SZL /DID IT OVERFLOW?
3364 04255 7240 CLA CMA /YES - FORCE IT TO ITS LARGEST
3365 04256 3537 DCA I CFH
3366 04257 4524 SAVBUF /REMEMBER TO WRITE BACK THE BLOCK
3367 04260 6211 REL1, DATFLD
3368 04261 7320 CLA CLL CML
3369 04262 1206 TAD RELDVT
/TSS-8.25 CONFIGURATION FOR UWM Page 79
3370 04263 1372 TAD RELDTA
3371 04264 7510 SPA /IS IT THE DTA, OR RK05
3372 04265 7010 RAR /NO - MUST BE HSR, ?, CDR, OR CHARACTER DEVICE
3373 04266 7420 SNL /IS IT A CHARACTER OUTPUT DEVICE?
3374 04267 5336 JMP REL6 /NO - MUST BE KEYBOARD, HSR, ?, CDR, R2, OR X DEVICE
3375 04270 1373 TAD RELREG
3376 04271 3363 REL2, DCA RELBLK /POINTS TO ENTRY IN 'OUTREG' (OR 0 FOR KEYBOARD OUTPUT)
3377 04272 7240 CLA CMA
3378 04273 1606 TAD I RELDVT
3379 04274 3010 DCA INDEX /POINTS TO WORD 0 OF DDB
3380 04275 1410 TAD I INDEX
3381 04276 7710 SPA CLA /IS THE TTY IN ^S MODE?
3382 04277 5311 JMP REL3 /YES - FLUSH IT OUT
3383 04300 3410 DCA I INDEX /CLEAR THE JOB NUMBER
3384 04301 2010 ISZ INDEX
3385 04302 2010 ISZ INDEX
3386 04303 1410 TAD I INDEX
3387 04304 7640 SZA CLA /IS THE FILL-POINTER ZERO?
3388 04305 5322 JMP REL4 /NO - LET 'CONOUT' RELEASE THE BLOCK
3389 04306 1363 TAD RELBLK
3390 04307 7640 SZA CLA /ASSIGNABLE DEVICE?
3391 04310 5324 JMP REL5 /YES
3392 04311 1606 REL3, TAD I RELDVT
3393 04312 6202 CIF
3394 04313 4770 JMS I RELCLR /FLUSH THE DEVICE BUFFER
3395 04314 6211 DATFLD
3396 04315 1606 TAD I RELDVT
3397 04316 4402 JMS I RETBK1 / AND RELEASE THE BLOCK
3398 04317 7200 CLA
3399 04320 6211 DATFLD
3400 04321 3606 DCA I RELDVT /THEN CLEAR THE DEVTBL ENTRY
3401 04322 6221 REL4, CFLD
3402 04323 5604 JMP I REL00 / AND RETURN
3403
3404 04324 6222 REL5, CIF 20 / (JUST INHIBIT INTERRUPTS WHEN CHECKING OUTREG)
3405 04325 1763 TAD I RELBLK
3406 04326 7104 CLL RAL
3407 04327 7450 SNA /IS AN INTERRUPT EXPECTED OR A CHARACTER BUFFERED?
3408 04330 5311 JMP REL3 /NO - JUST CLEAR OUT THE DDB
3409 04331 7510 SPA /YES - IS AN INTERRUPT PENDING?
3410 04332 7120 CLL CML /YES - INSURE DEVICE SERVICING
3411 04333 7010 RAR
3412 04334 3763 DCA I RELBLK / AND RESTORE THE WORD
3413 04335 5322 JMP REL4
3414
3415 04336 7700 REL6, SMA CLA /IS IT A KEYBOARD OR THE HSR?
3416 04337 5343 JMP REL7
3417 04340 1363 TAD RELBLK
3418 04341 6202 CIF
3419 04342 4770 JMS I RELCLR /YES - CLEAR THE BUFFER
3420 04343 1363 REL7, TAD RELBLK
3421 04344 4402 JMS I RETBK1 /RETURN THE FREE-BLOCK
3422 04345 7200 CLA
3423 04346 6211 DATFLD
3424 04347 3606 DCA I RELDVT / AND CLEAR THE DEVTBL ENTRY
3425 04350 1063 TAD DEVEND
3426 04351 7041 CIA
/TSS-8.25 CONFIGURATION FOR UWM Page 80
3427 04352 1206 TAD RELDVT
3428 04353 7700 SMA CLA /IS THIS A KEYBOARD?
3429 04354 5322 JMP REL4 /NO - JUST RETURN
3430 04355 2206 ISZ RELDVT /YES - SET THE POINTER TO THE OUTPUT SIDE
3431 04356 5271 JMP REL2 / AND RUN IT ALL AGAIN
3432
3433 /DEVICE RELEASED IS NOT OWNED BY THIS USER.
3434 04357 4476 REL8, CHKSRC /IS HE USING A KEYBOARD COMMAND?
3435 04360 5604 JMP I REL00 /NO - JUST RETURN
3436 04361 5535 JMP I LGI201 /YES - TELL 'SI' HE BLEW IT
3437
3438 04362 0000 RELASD, 0
3439 04363 0000 RELBLK, 0
3440 04364 6160 RELRTB, RTABLE /TWO-WORD PACKET FOR 'DS0'
3441 04365 0000 RELNOW, 0
3442 04366 0033 RELCK1, CLK1
3443 04367 0034 RELCK2, CLK2
3444 04370 4400 RELCLR, SICLR
3445 0007 RC1= INCLK1%1000
3446 04371 6457 RELCON, INCLK2^10+RC1 /FUDGE FOR MIDNIGHT OVERFLOW
3447 04372 5120 RELDTA, -DEVTBE-20
3448 04373 0230 RELREG, DEVTBE+20-DEVTBL%2+OUTREG / = OUTREG+NULINE+CONTTY+10
/TSS-8.25 CONFIGURATION FOR UWM Page 81
3449 PAGE
3450 /RENAME ROUTINE
3451
3452 04400 4516 REN0, JMS I IFN01
3453 04401 4527 JMS I UC01 /DOES HE OWN THE FILE?
3454 04402 5252 JMP REN1 /NO - ERROR
3455 04403 1142 TAD FIOSTK+1 /YES - SAVE THE INTERNAL FILE #
3456 04404 3141 DCA FIOSTK
3457 04405 1662 TAD I RENUCP /GET THE OWNER'S ACCOUNT NUMBER
3458 04406 3263 DCA REPRTP
3459 04407 1663 TAD I REPRTP
3460 04410 4531 JMS I UTS01 / AND FIND THE 'UFDTBL' ENTRY
3461 04411 7402 HLT /BAD - IF THE FILE'S OPEN, THERE MUST BE ONE *****
3462 04412 4472 JMS I BLDP1 /GET THE 'RETTBL' ENTRY ADDRESS
3463 04413 3142 DCA FIOSTK+1
3464 04414 7240 CLA CMA
3465 04415 1663 TAD I REPRTP /CHECK THE OWNER'S ACCOUNT
3466 04416 7650 SNA CLA /IS IT A DIRECTORY (I.E. OWNED BY ACCT # 1)?
3467 04417 7240 CLA CMA /YES - THE FIRST WORD (ACCOUNT) MUST BE UNIQUE
3468 04420 4502 JMS I DS01 /NOW CHECK IF THE NAME ALREADY EXISTS
3469 04421 0142 FIOSTK+1
3470 04422 7610 SKP CLA /NOPE - OK TO RENAME
3471 04423 5257 JMP REN2 /YES - "INVALID FILE NAME"
3472 04424 1141 TAD FIOSTK
3473 04425 4510 JMS I GD01 /GET THIS DIRECTORY ENTRY INTO CORE
3474 04426 3261 DCA REENTP / AND SAVE THE POINTER
3475 04427 1261 TAD REENTP
3476 04430 1005 TAD P0004
3477 04431 3263 DCA REPRTP /POINTER TO PROTECTION BITS
3478 04432 1663 TAD I REPRTP /PICK UP PROTECTION BITS
3479 04433 0007 AND C0020
3480 04434 7640 SZA CLA /WRITE-PROTECTED AGAINST OWNER?
3481 04435 5253 JMP REN1+1 /YES - "PROTECTION VIOLATION"
3482 04436 1143 TAD FIOSTK+2 /TRANSFER NEW NAME TO DIRECTORY
3483 04437 7450 SNA /IS IT A NULL NAME?
3484 04440 5257 JMP REN2 /YES, DON'T RENAME
3485 04441 3661 DCA I REENTP
3486 04442 2261 ISZ REENTP
3487 04443 1144 TAD FIOSTK+3
3488 04444 3661 DCA I REENTP
3489 04445 2261 ISZ REENTP
3490 04446 1145 TAD FIOSTK+4
3491 04447 3661 DCA I REENTP
3492 04450 4524 SAVBUF /SET 'BUFFER CHANGED' SWITCH
3493 04451 5534 JMP I FIEXIT /EXIT FROM FILE PHANTOM
3494
3495 04452 7640 REN1, SZA CLA /WHICH ERROR?
3496 04453 7130 CPERR2, CLL CML RAR /6000 - PROTECTION VIOLATION
3497 04454 7130 CLL CML RAR /4000 - NO FILE OPEN
3498 04455 3046 DCA FIUSAC
3499 04456 5534 JMP I FIEXIT
3500
3501 04457 7332 REN2, CLA CLL CML RTR /6400 - INVALID FILE NAME
3502 04460 5253 JMP REN1+1
3503
3504 04461 0000 REENTP, 0
3505 04462 3227 RENUCP, UCUFDP
/TSS-8.25 CONFIGURATION FOR UWM Page 82
3506 04463 0000 REPRTP, 0
/TSS-8.25 CONFIGURATION FOR UWM Page 83
3507 /THIS HANDLES THE 'CPASS' IOT - CHANGE PASSWORD.
3508 /IF THE SYSTEM MANAGER PASSES THE INCORRECT CURRENT
3509 /PASSWORD, HE IS SIMPLY RETURNED AN ERROR CODE;
3510 /IF ANYONE ELSE PASSES US AN INCORRECT CURRENT
3511 /PASSWORD, THEY ARE AUTOMATICALLY LOGGED-OUT.
3512
3513 04464 1142 CPASS0, TAD FIOSTK+1
3514 04465 7650 SNA CLA /RATIONAL ACCOUNT NUMBER?
3515 04466 5253 JMP CPERR2 /NO - RETURN ERROR CODE
3516 04467 7240 CLA CMA
3517 04470 1050 TAD FIACCT
3518 04471 7650 SNA CLA /IS THIS THE MANAGER?
3519 04472 5300 JMP CPASS1 /YES
3520 04473 1050 TAD FIACCT
3521 04474 7041 CIA
3522 04475 1142 TAD FIOSTK+1
3523 04476 7640 SZA CLA /NO - IS THIS HIS OWN PASSWORD?
3524 04477 5253 JMP CPERR2 /NO - JUST SAY "PROTECTION VIOLATION"
3525 04500 1065 CPASS1, TAD RETTBL
3526 04501 3141 DCA FIOSTK /MFD IS ALWAYS FIRST ENTRY
3527 04502 4502 JMS I DS01 /SEARCH FOR ACCT & PASSWORD IN MFD
3528 04503 0141 FIOSTK
3529 04504 5327 JMP CPERR1 /NOT THERE - ERROR!
3530 04505 3010 DCA INDEX /SAVE THE ENTRY CORE-ADDRESS
3531 04506 7240 CLA CMA
3532 04507 1050 TAD FIACCT
3533 04510 7650 SNA CLA /IS THIS THE MANAGER (#1)?
3534 04511 5321 JMP CPASS2 /YES - HE CAN CHANGE ANYONE'S PASSWORD
3535 04512 1010 TAD INDEX /NO - GET THE UFD PROTECTION
3536 04513 1005 TAD P0004
3537 04514 3137 DCA CFH
3538 04515 1537 TAD I CFH
3539 04516 0341 AND CPBIT /CHECK THE 'CHANGE PASSWORD DISABLE' BIT
3540 04517 7640 SZA CLA /CAN HE CHANGE HIS OWN PASSWORD?
3541 04520 5253 JMP CPERR2 /NO - "PROTECTION VIOLATION"
3542 04521 1145 CPASS2, TAD FIOSTK+4 /YES - SET THE NEW PASSWORD
3543 04522 3410 DCA I INDEX
3544 04523 1146 TAD FIOSTK+5
3545 04524 3410 DCA I INDEX
3546 04525 4524 SAVBUF /SET THE 'BUFFER CHANGED' SWITCH
3547 04526 5534 JMP I FIEXIT / AND EXIT
3548
3549 04527 7240 CPERR1, CLA CMA
3550 04530 1050 TAD FIACCT
3551 04531 7650 SNA CLA /IS THIS THE MANAGER?
3552 04532 5253 JMP CPERR2 /YES - JUST RETURN ERROR CODE
3553 04533 1342 TAD CPLOUT /NO - SET UP THE 'LOGOUT' PARMS
3554 04534 3141 DCA FIOSTK
3555 04535 1051 TAD FIJOB
3556 04536 3142 DCA FIOSTK+1
3557 04537 5740 JMP I .+1 /THEN LOG HIM OUT
3558 04540 3230 LGO0
3559
3560 04541 2000 CPBIT, 2000 /BIT IN UFD PROTECTION - IF SET, PROHIBITS CPASS
3561 04542 0215 CPLOUT, LOUT
/TSS-8.25 CONFIGURATION FOR UWM Page 84
3562 /THIS HANDLES THE 'BCLR' IOT - THIS ALLOWS THE SYSTEM MANAGER
3563 /AND THE BILLING SYSTEM TO CLEAR THE BILLING INFORMATION IN
3564 /THE MFD TO ZEROES. BY USING AN IOT FOR THIS, WE AVOID THE
3565 /NEED FOR ANY USER PROGRAM TO WRITE INTO THE MFD OR ANY UFD
3566 /DIRECTLY (THUS AVOIDING ANY CONFLICT WITH FIP). WE THEREFORE
3567 /NORMALLY SET THE PROTECTION CODES TO PREVENT ANYONE FROM
3568 /WRITING ANY UFD.
3569
3570 04543 4474 BCLR0, CHKACT /IS THIS A PRIVILEGED ACCOUNT?
3571 04544 7410 SKP /YES
3572 04545 5253 JMP CPERR2 /NO - SAY "PROTECTION VIOLATION"
3573 04546 1142 TAD FIOSTK+1
3574 04547 7650 SNA CLA /DID HE PASS US AN ACCOUNT NUMBER?
3575 04550 5257 JMP REN2 /NO - BOO, HISS!!
3576 04551 1065 TAD RETTBL /YES - THE MFD IS ALWAYS THE FIRST ENTRY
3577 04552 3141 DCA FIOSTK
3578 04553 7240 CLA CMA /NOW DO A ONE-WORD SEARCH FOR THE ACCOUNT
3579 04554 4502 JMS I DS01
3580 04555 0141 FIOSTK
3581 04556 5257 JMP REN2 /NO FIND - ERROR!!
3582 04557 1005 TAD P0004
3583 04560 3010 DCA INDEX /SET THE POINTER TO THE INFORMATION
3584 04561 3410 DCA I INDEX / AND ZERO THE DEVICE TIME
3585 04562 3410 DCA I INDEX / AND THE CPU TIME
3586 04563 4524 SAVBUF /NOW SET THE 'BUFFER CHANGED' SWITCH
3587 04564 5534 JMP I FIEXIT / AND EXIT
3588
3589
3590 /ROUTINE TO CALCULATE A POINTER INTO 'ENTTBL'.
3591 /AC = [JOB * 4 + FILEID] * 2 + 'ENTTBL'
3592 04565 0000 EBLD, 0
3593 04566 3137 DCA CFH
3594 04567 1051 TAD FIJOB
3595 04570 7106 CLL RTL
3596 04571 1137 TAD CFH
3597 04572 7004 RAL
3598 04573 1066 TAD ENTTBL
3599 04574 5765 JMP I EBLD
/TSS-8.25 CONFIGURATION FOR UWM Page 85
3600 PAGE
3601 /COMPLETION OF LOGOUT ROUTINE
3602 /REMOVES JOB FROM PERMANENT MONITOR TABLES
3603 /MUST BE DONE LAST, SINCE WE NEED THE JOB STATUS BLOCKS
3604 /TO INDICATE ANY ERRORS IN THE FIP I/O
3605
3606 04600 1236 LGO4, TAD LGO500 /RESTORE THE FIP EXIT
3607 04601 6221 CFLD
3608 04602 3641 DCA I LGOFIX
3609 04603 1051 TAD FIJOB /SEE IF HE OWNS ANY CORE FIELDS
3610 04604 6202 CIF
3611 04605 4500 CORE /SEARCH CORE TABLE FOR HIM
3612 04606 0637 SI+FIP+CJOB
3613 04607 5215 JMP LGO5 /NO; NOTHING TO RELEASE
3614 04610 0014 AND P0007 /YES; RELEASE THE FIELD
3615 04611 1041 TAD CORTBA
3616 04612 3137 DCA CFH /POINTS TO ENTRY IN CORTBL
3617 04613 6201 CDF
3618 04614 3537 DCA I CFH /ZERO THE ENTRY
3619 04615 1051 LGO5, TAD FIJOB /RETURN STATUS BLOCKS
3620 04616 1071 TAD JOBTBA /START OF JOB TABLE (END OF DEVTBL)
3621 04617 3242 DCA LGO6 /POINTS TO JOB TABLE ENTRY
3622 04620 6211 DATFLD
3623 04621 1642 TAD I LGO6 /GET ADDRESS OF JOB STATUS
3624 04622 4637 JMS I LGOBLS /RETURN STATUS
3625 04623 6211 DATFLD
3626 04624 3455 DCA I JOBDAT /CLEAR JOBDAT
3627 04625 3642 DCA I LGO6 /CLEAR POINTER IN 'JOBTBL'
3628 04626 1051 TAD FIJOB
3629 04627 1240 TAD LGOCLK
3630 04630 3242 DCA LGO6
3631 04631 3642 DCA I LGO6 /CLEAR ANY 'CLKTBL' ENTRY
3632 04632 6201 CDF
3633 04633 3454 DCA I JOBA /CLEAR JOB (SO SAVJOB WON'T SAVE US)
3634 04634 3051 DCA FIJOB / AND AVOID MISTAKING US FOR LOGGED-IN
3635 04635 5636 JMP I .+1 /AND NOW GO DO FIX50
3636 04636 3645 LGO500, FIX50
3637 04637 3370 LGOBLS, RETBLS
3638 04640 2722 LGOCLK, CLKTBL
3639 04641 3644 LGOFIX, FIX500
3640 04642 0000 LGO6, 0
/TSS-8.25 CONFIGURATION FOR UWM Page 86
3641 /
3642 /ROUTINE TO HANDLE THE LOGOUT IOT WHEN THE PASSED AC = 0.
3643 /WE COUNT UP THE NUMBER OF ADDITIONAL USERS ON THIS ACCOUNT.
3644 04643 1142 LGO1, TAD FIOSTK+1 /LOGOUT WITH AC = 0?
3645 04644 7640 SZA CLA
3646 04645 5535 JMP I LGI201 /NO, SO IT'S AN ERROR
3647 04646 1305 TAD LGOMAX /YES - COUNT # OF OTHER USERS
3648 04647 3303 DCA LGOCNT / OF HIS ACCOUNT #
3649 04650 1071 TAD DEVOVR /ADDRESS OF JOBTBL
3650 04651 3055 DCA JOBDAT /INITIALIZE 'JOBDAT' TO LOOK AT ALL JOBS
3651 04652 3046 DCA FIUSAC /ZERO 'FIND' COUNTER
3652 04653 2055 LGOLP, ISZ JOBDAT
3653 04654 6211 DATFLD
3654 04655 1455 TAD I JOBDAT
3655 04656 6221 CFLD
3656 04657 7650 SNA CLA /IS THE JOB SLOT IN USE?
3657 04660 5273 JMP LGOLPE /NO - ON TO THE NEXT
3658 04661 4506 FGETJT /GET LOCATION OF USER'S ACCOUNT NUMBER
3659 04662 0015 JOBACT
3660 04663 3137 DCA CFH
3661 04664 6211 DATFLD
3662 04665 1537 TAD I CFH /PICK UP THE ACCOUNT NUMBER
3663 04666 6221 CFLD
3664 04667 7041 CIA
3665 04670 1050 TAD FIACCT
3666 04671 7650 SNA CLA /SAME AS OURS?
3667 04672 2046 ISZ FIUSAC /YES - INCREMENT COUNT
3668 04673 2303 LGOLPE, ISZ LGOCNT
3669 04674 5253 JMP LGOLP /CONTINUE
3670 04675 7240 CLA CMA
3671 04676 1046 TAD FIUSAC /NOW DISCOUNT OUR OWN JOB
3672 04677 3046 DCA FIUSAC
3673 04700 1304 TAD LGODAT /THEN RESTORE JOBDAT
3674 04701 3055 DCA JOBDAT
3675 04702 5534 JMP I FIEXIT
3676
3677 04703 0000 LGOCNT, 0
3678 04704 0020 LGODAT, CJOBDA
3679 04705 7754 LGOMAX, -JOBMAX
3680
3681
3682 /ROUTINE TO CLOSE ANY SPECIAL (ACCOUNT 7) FILES LEFT OPEN.
3683 04706 0000 PRVCLS, 0
3684 04707 1036 TAD C7774
3685 04710 3303 DCA PCNUM /SET FOR 4 FILES
3686 04711 1303 PRVCL1, TAD PCNUM
3687 04712 1005 TAD P0004
3688 04713 4403 JMS I LNK01 /GET THE FILE CONTROL-BLOCK
3689 04714 7450 SNA
3690 04715 5327 JMP PRVCL2
3691 04716 1006 TAD FILPRP
3692 04717 3137 DCA CFH /NOW POINTS TO THE PROTECTION & PRIVILEGE WORD
3693 04720 1537 TAD I CFH
3694 04721 7110 CLL RAR
3695 04722 7620 SNL CLA /IS THIS A PRIVILEGED FILE?
3696 04723 5327 JMP PRVCL2 /NO
3697 04724 1303 TAD PCNUM
/TSS-8.25 CONFIGURATION FOR UWM Page 87
3698 04725 1005 TAD P0004
3699 04726 4477 JMS I CL01 /YES - CLOSE IT
3700 04727 2303 PRVCL2, ISZ PCNUM
3701 04730 5311 JMP PRVCL1
3702 04731 5706 JMP I PRVCLS
3703 /
3704 4703 PCNUM= LGOCNT
/TSS-8.25 CONFIGURATION FOR UWM Page 88
3705 /
3706 /ROUTINE TO GET THE NUMBER OF A DEVICE ATTACHED TO THIS JOB
3707 /CALLING SEQUENCE:
3708 / JMS LNS0
3709 / RETURN IF NONE AVAILABLE
3710 / NORMAL RETURN (LINE NUMBER IN AC)
3711
3712 04732 0000 LNS0, 0
3713 04733 1062 TAD DEVTBA /GLOBAL TO "DEVTBL"
3714 04734 3137 DCA CFH
3715 04735 6211 DATFLD /CDF FIELD 0
3716 04736 1537 LNS4, TAD I CFH /PICK UP POINTER TO DDB
3717 04737 7450 SNA
3718 04740 5351 JMP LNS2 /DEVICE UNASSIGNED
3719 04741 7001 IAC
3720 04742 3303 DCA LNS3 /POINTER TO SECOND WORD OF DDB
3721 04743 1703 TAD I LNS3
3722 04744 0016 AND P0037 /PICK OFF THE JOB NUMBER OF OWNER
3723 04745 7041 CIA
3724 04746 1051 TAD FIJOB /NUMBER OF CURRENT JOB
3725 04747 7650 SNA CLA
3726 04750 5361 JMP LNS5 /THIS DEVICE IS OURS
3727 04751 2137 LNS2, ISZ CFH
3728 04752 1137 TAD CFH
3729 04753 7040 CMA
3730 04754 1071 TAD DEVOVR /GLOBAL TO "JOBTBL"
3731 04755 7640 SZA CLA
3732 04756 5336 JMP LNS4 /CONTINUE LOOKING DOWN TABLE
3733 04757 6221 LNS7, CFLD /MAKE SURE WE ARE IN THIS FIELD
3734 04760 5732 JMP I LNS0 /FOUND NO DEVICES
3735
3736 04761 1063 LNS5, TAD DEVEND
3737 04762 7041 CIA
3738 04763 1137 TAD CFH
3739 04764 7500 SMA
3740 04765 5372 JMP LNS6
3741 04766 1375 TAD LNS10
3742 04767 7110 CLL RAR
3743 04770 2332 LNS8, ISZ LNS0
3744 04771 5357 JMP LNS7
3745
3746 04772 1374 LNS6, TAD C4000
3747 04773 5370 JMP LNS8
3748
3749 04774 4000 C4000, 4000
3750 04775 0040 LNS10, DEVTBE-DEVTBL
3751 4703 LNS3= LGOCNT
/TSS-8.25 CONFIGURATION FOR UWM Page 89
3752
3753 PAGE
3754
3755 /HERE WE CHECK FOR OTHER JOBS NEEDING 'FIP' TO TRY AND
3756 /MINIMIZE THE NUMBER OF TIMES FIP NEEDS TO BE SWAPPED IN.
3757
3758 05000 1240 FIXSCH, TAD FIXJMX
3759 05001 7650 SNA CLA /HAVE WE ALREADY EXHAUSTED OUR PRIORITY RIGHTS?
3760 05002 5234 JMP FIXOUT /YES
3761 05003 1051 TAD FIJOB
3762 05004 1071 TAD JOBTBA
3763 05005 3010 DCA INDEX
3764 05006 6211 DATFLD
3765 05007 1010 FIXSC1, TAD INDEX
3766 05010 1242 TAD FIXSTE
3767 05011 7640 SZA CLA /REACHED END OF THE JOBTBL?
3768 05012 5215 JMP .+3
3769 05013 1071 TAD JOBTBA /YES - RESET THE POINTER AT THE BEGINNING
3770 05014 3010 DCA INDEX
3771 05015 1410 TAD I INDEX
3772 05016 7450 SNA /IS THERE A JOB IN THIS SLOT?
3773 05017 5232 JMP FIXSC2 /NO
3774 05020 7001 IAC
3775 05021 3137 DCA CFH /YES - SET POINTER TO STR0 (JOBSTS)
3776 05022 1537 TAD I CFH
3777 05023 0241 AND FIXSJS
3778 05024 7650 SNA CLA /IS THE JOB WAITING FOR 'FIP'?
3779 05025 5232 JMP FIXSC2 /NO
3780 05026 1071 TAD JOBTBA
3781 05027 7041 CIA
3782 05030 1010 TAD INDEX /YES - GET HIS JOB NUMBER
3783 05031 5234 JMP FIXOUT / AND EXIT (SETTING 'FIPJOB')
3784 05032 2240 FIXSC2, ISZ FIXJMX
3785 05033 5207 JMP FIXSC1
3786
3787 /ALL DONE - SET (OR CLEAR) 'FIPJOB' IN FIELD 0 AND EXIT.
3788 05034 6203 FIXOUT, CIF CDF
3789 05035 3637 DCA I FIPJBA
3790 05036 5532 WAIT
3791
3792 05037 0057 FIPJBA, FIPJOB
3793 05040 7754 FIXJMX, -JOBMAX /GETS CLOBBERED, BUT RESET EVERY TIME FIP IS RELOADED
3794 05041 0100 FIXSJS, JSIOT
3795 05042 5057 FIXSTE, -JOBTBL-JOBMAX
/TSS-8.25 CONFIGURATION FOR UWM Page 90
3796
3797 /ROUTINE TO CHECK THE USERS 'PRIVILEGE' FLAG AND SKIP IF SET.
3798
3799 05043 0000 CHKPV0, 0
3800 05044 4506 FGETJT /GET HIS STR0 LOCATION
3801 05045 0000 JOBSTS
3802 05046 3137 DCA CFH
3803 05047 6211 DATFLD
3804 05050 1537 TAD I CFH
3805 05051 0305 AND CHKJSP
3806 05052 7640 SZA CLA /IS HE PRIVILEGED NOW?
3807 05053 2243 ISZ CHKPV0 /YES - SKIP ON RETURN
3808 05054 6221 CFLD
3809 05055 5643 JMP I CHKPV0
3810
3811 /SUBROUTINE TO CHECK THE FILE EXTENSION AND POSSIBLY
3812 /SET THE PRIVILEGE BIT FOR THIS JOB.
3813
3814 05056 0000 OPNPV0, 0
3815 05057 1550 TAD I OPNBUF /GET THE FILE PROTECTION CODE
3816 05060 0033 AND C7700
3817 05061 1304 TAD OPNSVP
3818 05062 7640 SZA CLA /IS EXTENSION .SVP (34)?
3819 05063 5656 JMP I OPNPV0 /NO - JUST RETURN
3820 05064 7344 CLA CLL CMA RAL
3821 05065 1147 TAD OPNACT
3822 05066 7650 SNA CLA /IS THE FILE FROM THE SYSTEM LIBRARY?
3823 05067 4476 CHKSRC /YES - WHO CALLED US?
3824 05070 5656 JMP I OPNPV0 /A USER - CAN'T SET 'PRIVILEGE'
3825 05071 4506 FGETJT /'SI' - GET THE JOB STATUS-WORD
3826 05072 0000 JOBSTS
3827 05073 3137 DCA CFH
3828 05074 6211 DATFLD
3829 05075 1305 TAD OPNJSP
3830 05076 7040 CMA
3831 05077 0537 AND I CFH /CLEAR THE 'PRIVILEGE' BIT
3832 05100 1305 TAD OPNJSP / AND THEN SET IT
3833 05101 3537 DCA I CFH
3834 05102 6221 CFLD
3835 05103 5656 JMP I OPNPV0 /THEN JUST RETURN
3836
3837 05104 4400 OPNSVP, -3400 /.SVP FILE EXTENSION
3838 CHKJSP,
3839 05105 0400 OPNJSP, JSPRIV
3840
3841 /WE GET HERE WHEN THE 'UFD' HE TRIED TO OPEN DIDN'T
3842 /EXIST. WE GIVE HIM THE NUMBER OF THE NEXT 'UFD'.
3843
3844 05106 6211 OPNR01, DATFLD
3845 05107 1452 TAD I FIOPTR /GET THE PARAMETER BLOCK
3846 05110 3150 DCA OPNBUF
3847 05111 1031 TAD C7000
3848 05112 3550 DCA I OPNBUF /SET THE FINAL AC CONTENTS
3849 05113 1150 TAD OPNBUF
3850 05114 1005 TAD P0004
3851 05115 3150 DCA OPNBUF
3852 05116 6221 CFLD
/TSS-8.25 CONFIGURATION FOR UWM Page 91
3853 05117 1725 TAD I OPNNXT /GET THE NEXT ACCOUNT
3854 05120 6211 DATFLD
3855 05121 3550 DCA I OPNBUF
3856 05122 1005 TAD P0004 /GET THE NUMBER OF PARAMETERS
3857 05123 5724 JMP I .+1 / TO RETURN TO THE USER
3858 05124 2266 INF6
3859
3860 05125 2575 OPNNXT, DSNEXT /WORD IN 'DS0'
3861
3862 IFZERO .-5200&4000 <GLITCH>
3863 5200 *5200
3864 SEGBUF, /SEGMENT-SIZE BUFFER
3865 5600 *WRDSEG+SEGBUF
3866 ENTABL, /4 2-WORD ENTRIES PER JOB
3867 6040 *JOBMAX^10+ENTABL
3868 UTABLE, /A 2-WORD ENTRY FOR EACH UFD ACCESSED
3869 6160 *JOBMAX^4+UTABLE
3870 RTABLE, /1 8-WORD ENTRY FOR EACH 'UTABLE' ENTRY
3871 6660 *JOBMAX^20+RTABLE
3872 FIPTOP, /END OF FIP TABLES (EXCEPT 'SAT')
3873 IFZERO FIPTOP+SATSIZ&4000 <GLITCH>
3874 7250 *-SATSIZ /START OF DISC ALLOCATION TABLE
3875 ///// $$$$$
No detected errors
/TSS-8.25 CONFIGURATION FOR UWM Page 92
Symbol Table
1 ASD 0040 CHKPV0 05043 CSCF 6133 DS1 02510 ENTABL 05600
2 ASD1 03511 CHKSR0 01363 CTRLB 0002 DS2 02525 ENTEND 00064
3 ASD2 03513 CHKSRC 4476 CTRLC 0040 DS3 02541 ENTPTR 02164
4 ASD3 03530 CINT 6204 CTRLS 4000 DS4 02560 ENTTBL 00066
5 ASD4 03556 CJOB 0037 CUF 6264 DS5 02562 ERPDEX 0000
6 ASD5 03560 CJOBDA 0020 D680 0000 DSBSYA 03171 ERPWC 0000
7 ASDCHK 03570 CL0 01020 D689 0000 DSBUSY 0036 EXBUFP 01720
8 ASDCLR 03571 CL01 00077 DATA1 2400 DSCNTR 02400 EXFCBP 01731
9 AUTOST 4201 CL3 01063 DATE 0035 DSENT 02573 EXGE0 01714
10 BASWIN 00140 CLCNTR 01017 DATEA 01573 DSENTP 02411 EXLAST 01732
11 BCLR 0220 CLK1 0033 DATFLD 6211 DSI 1000 EXNFRE 01733
12 BCLR0 04543 CLK1A 02375 DBELL 1000 DSKCNT 02461 EXPROP 01734
13 BILLNG 0007 CLK2 0034 DC08A 0000 DSKERR 0005 EXSEGC 01735
14 BLDP 01141 CLK2A 02376 DC08LO 0000 DSKP 6741 EXT 0211
15 BLDP1 00072 CLKTBL 2722 DCLR 6742 DSKSIZ 0100 EXT0 01600
16 BLT 4473 CLOCKR 0062 DCSIZE 0000 DSMAX 02574 EXT1 01737
17 BLT0 5200 CLOS 0202 DDBBRK 0002 DSNEXT 02575 EXT10 01725
18 BRDMAX 0012 CLS0 01000 DDBINC 0005 DSOBJT 2471 EXT11 02123
19 BRKINI 4000 CLS1 01003 DDBINP 0004 DSRETS 2472 EXT12 01704
20 BUFFER 00067 CLSIFN 01016 DDBJN 0001 DSUTBL 3061 EXT20 01630
21 BUFSTA 00037 CLUFDP 01065 DDBOUC 0006 DSWDNR 2473 EXT21 01641
22 BUFWRT 00040 CM3770 02733 DDBOUP 0007 DSWORD 02513 EXT3 01612
23 C0005 00012 CONDBA 0030 DDBSTS 0000 DTALK 0001 EXT30 01723
24 C0006 00013 CONDDB 0031 DDBTIM 0003 DTAMIN 0002 EXT4 01603
25 C0010 00015 CONTTY 0001 DE0 04000 DTDEF0 0535 EXT5 01616
26 C002 0006 CORE 4500 DE01 00101 DTDSF0 0541 EXT6 01626
27 C0020 0007 CORMEM 0070 DE1 04005 DTDSK 0527 EXT7 01660
28 C0200 00020 CORSRC 1317 DE2 04020 DTE0 03703 EXT8 01652
29 C0252 02731 CORTBA 00041 DE3 04022 DTE01 00103 EXWNDP 01736
30 C0377 03044 CORTBL 7001 DE4 04024 DTE1 03713 F1BUF 0177
31 C0400 00021 CPASS 0207 DE5 04044 DTE2 03745 F1DTST 2512
32 C3777 00025 CPASS0 04464 DE6 04046 DTEBAD 03744 F1ECNT 0176
33 C4000 04774 CPASS1 04500 DE7 04054 DTJOB 0027 F1OFFJ 0036
34 C6603 00027 CPASS2 04521 DE8 04063 DTL11 0601 F1RTN 0277
35 C6605 00030 CPBIT 04541 DEBEGG 04121 DTL20 0551 F1TCNT 0175
36 C7000 00031 CPERR1 04527 DEBUG 0000 DTL21 1004 FANFLD 00042
37 C7037 02313 CPERR2 04453 DECHO 0020 DTRKHG 3671 FGETJ0 04152
38 C7400 00032 CPLOUT 04542 DECURR 04114 DUPL 0200 FGETJT 4506
39 C7637 01140 CPU 0002 DEPTR 04115 DXOFF 3000 FIACCT 00050
40 C7700 00033 CRBUFP 01562 DERETP 04116 DXON 2000 FIBASE 00043
41 C7764 02732 CRF 0210 DEVCHK 7045 EAE 0000 FIDEXP 00005
42 C7771 00035 CRF0 01400 DEVEND 00063 EBLD 04565 FIEXIT 00134
43 C7773 03170 CRF1 01410 DEVOVR 00071 EBLD0 00104 FIJOB 00051
44 C7774 00036 CRF2 01451 DEVTBA 00062 ENACNT 02166 FILDA 0004
45 CDL11 1720 CRFCLR 01551 DEVTBE 2640 ENDBUF 0400 FILINK 00045
46 CDL21 1704 CRFENT 01566 DEVTBL 2600 ENDIOT 5333 FILPAR 0003
47 CDR 0000 CRFER1 01536 DEWORD 04026 ENR0 01066 FILPCA 0004
48 CDVGAP 0003 CRFER2 01540 DFORC 0004 ENR01 01765 FILPCT 0007
49 CDVIN 0003 CRFER3 01541 DFULL 0400 ENR1 01077 FILPDA 0005
50 CDVOUT 0004 CRFER4 01543 DHALF 0010 ENRETP 02165 FILPDX 0001
51 CECI 6131 CRFER5 01545 DLAG 6743 ENS0 02126 FILPFN 0000
52 CFH 00137 CRFGET 01556 DLCA 6744 ENS01 00105 FILPIF 0002
53 CFLD 6221 CRFLNK 01567 DLDC 6746 ENS1 02153 FILPRA 0006
54 CHKAC0 01162 CRFRET 01570 DMAINT 6747 ENS2 02135 FILPRO 0002
55 CHKACT 4474 CRFSEG 01430 DRST 6745 ENS3 02167 FILPRP 00006
56 CHKJSP 05105 CRGD11 01571 DS0 02475 ENS31 04117 FILPWC 0003
57 CHKPRV 4475 CRPROT 01572 DS01 00102 ENSFND 02167 FILRES 0007
/TSS-8.25 CONFIGURATION FOR UWM Page 93
Symbol Table
58 FILSCT 0001 GD0 00350 JOBSRA 0005 LGOENT 03325 OPNER0 00555
59 FILWC 0006 GD01 00110 JOBSTB 0002 LGOFIX 04641 OPNER1 00561
60 FILWPT 0000 GD1 00363 JOBSTS 0000 LGOLP 04653 OPNER2 00562
61 FINF 6613 GDRETP 00053 JOBSWR 0010 LGOLPE 04673 OPNER3 00564
62 FIO01 00107 GDUFDP 00365 JOBTBA 00071 LGOMAX 04705 OPNEXT 00566
63 FIO3 03140 GE0 03000 JOBTBL 2675 LGOPRM 03355 OPNFLG 00056
64 FIO6 03164 GE01 00111 JOBWMK 0003 LGOPTR 03356 OPNFND 00573
65 FIOPTR 00052 GE3 03036 JSACC 0200 LGORET 03341 OPNJF0 00745
66 FIORET 03146 GERETP 03040 JSBAT 0100 LIBACT 0002 OPNJSP 05105
67 FIOSTK 00141 GETB 1400 JSDEL 0100 LIE 6665 OPNNXT 05125
68 FIP 0400 GETBLK 4512 JSEREN 2000 LIN 0214 OPNPR0 00752
69 FIP0 00200 GETDB0 1440 JSERR 0002 LLC 6664 OPNPR1 00774
70 FIP2 00313 GETDDB 4513 JSF0 2000 LNK0 03766 OPNPRT 00574
71 FIP4 00270 GETJTA 4514 JSF1 1000 LNK01 00003 OPNPRV 00746
72 FIP5 00272 GETJTB 7200 JSF2 0400 LNK1 03772 OPNPRW 00735
73 FIP6 00253 GIR00 6200 JSF3 0200 LNKF 03777 OPNPTR 00622
74 FIPBLK 7720 GTB1 02750 JSHLT 0200 LNS0 04732 OPNPV0 05056
75 FIPCLR 03676 GTBERR 02747 JSINER 0010 LNS01 03361 OPNR01 05106
76 FIPDEX 0004 GTBLO1 00115 JSIOT 0100 LNS10 04775 OPNR0A 00575
77 FIPFIP 0021 GTBLOK 02735 JSIOTC 0040 LNS2 04751 OPNSIZ 00706
78 FIPFLD 00007 HUNGDV 0006 JSLPT 0040 LNS3 4703 OPNSVP 05104
79 FIPIO 03120 IFN0 00365 JSPRIV 0400 LNS4 04736 OPNTYP 00531
80 FIPJBA 05037 IFN01 00116 JSPTP 0004 LNS5 04761 OPNWND 00733
81 FIPJOB 0057 INCLK1 7000 JSPTR 0010 LNS6 04772 OUTDIF 2200
82 FIPSFC 00321 INCLK2 0645 JSRSEN 0020 LNS7 04757 OUTIOT 2340
83 FIPTBS 03677 INDEX 00010 JSRUN 4000 LNS8 04770 OUTREG 0200
84 FIPTOP 06660 INF0 02200 JSTEL 0020 LOCK 2000 OVER 03175
85 FIPTR1 03172 INF4 02263 JSTIME 4000 LOGACT 00161 OVERL1 5764
86 FIPWC 0000 INF5 02252 JSWAIT 0001 LOUT 0215 OVERLA 2364
87 FIRETP 03174 INF6 02266 K7400 03043 LPC 6666 OVRLA1 0572
88 FISIOT 03700 INFLD 0020 KL8 0017 LPT 0003 P0003 00011
89 FITPTR 00226 INIDEX 0010 L2EXIT 4051 LSF 6661 P0004 0005
90 FIUSAC 00046 INIOTC 02316 L2QTB 7010 LSP 6665 P0007 00014
91 FIUSPC 00044 INPUTS 0036 L2SF 0041 LSRP 6663 P0037 00016
92 FIUTBA 03173 INSPTR 02315 L2SV0 0042 MQREG 0001 P0077 00017
93 FIX0 03600 INUFDP 02314 L2TIM3 2631 MSEGSZ 03066 P0777 00022
94 FIX1 03607 IODISP 02751 LCF 6662 NFSEGS 5533 P1000 00023
95 FIX2 03612 IODSPA 00347 LCP 6667 NOHOLD 0140 P2000 00024
96 FIX20 03621 IOTABL 00324 LGI0 02317 NOTRUN 1000 P5400 00026
97 FIX21 03641 JCOMBD 1000 LGI20 02372 NULINE 0017 P7770 00034
98 FIX30 03660 JOB 0062 LGI201 00135 OPEN 6601 PCNUM 4703
99 FIX40 03666 JOBA 00054 LGIDDB 02315 OPN0 00401 PHONES 0000
100 FIX50 03645 JOBACT 0015 LGKLUJ 03354 OPN1 00442 PLT 0000
101 FIX500 03644 JOBDAT 00055 LGO0 03230 OPN10 00723 PRENTP 01137
102 FIXCNT 03701 JOBDWT 0004 LGO1 04643 OPN11 00724 PRGTBL 2774
103 FIXJMX 05040 JOBEAE 0014 LGO1A 03357 OPN12 00737 PRIFNU 01136
104 FIXOUT 05034 JOBERR 0006 LGO2 03343 OPN2 00443 PRINT0 1203
105 FIXSC1 05007 JOBF0 0020 LGO3 03346 OPN3 00504 PROT 0204
106 FIXSC2 05032 JOBF1 0021 LGO4 04600 OPN4 00514 PRT0 01105
107 FIXSCH 05000 JOBF2 0022 LGO4A 03360 OPN5 00543 PRT1 01131
108 FIXSJS 05041 JOBF3 0023 LGO5 04615 OPN6 00600 PRVCL1 04711
109 FIXSTE 05042 JOBLNK 0007 LGO500 04636 OPN7 00661 PRVCL2 04727
110 FLPARB 00151 JOBMAX 0024 LGO6 04642 OPN8 00665 PRVCLS 04706
111 FRCMAX 0012 JOBREG 0011 LGOBLS 04637 OPN9 00711 PT08 0000
112 FRECNT 0040 JOBRTH 0017 LGOCLK 04640 OPNACT 0147 PUNCH 0001
113 FREE 0037 JOBRTM 0016 LGOCNT 04703 OPNBAS 00747 QUANT 7772
114 FSWP 4000 JOBSCH 0024 LGODAT 04704 OPNBUF 0150 QUEUE0 1473
/TSS-8.25 CONFIGURATION FOR UWM Page 94
Symbol Table
115 RBOOT 04170 REL6 04336 SATRL1 02674 UC2 03225 WNSEGC 01343
116 RC1 0007 REL7 04343 SATRL2 02706 UCENTP 03325 WRDSEG 0400
117 RCNI 6637 REL8 04357 SATSIZ 0530 UCUFDP 03227 WRITE 01152
118 RCNO 6635 RELASD 04362 SATSTA 00057 UFDEND 00065 WRT1 00133
119 RCRA 6632 RELBLK 04363 SATTBL 02657 UFDTBL 00064 WSCHED 3006
120 RCRB 6634 RELCK1 04366 SAVBF0 01374 UFO0 03400 XOPEN 6606
121 RCRC 6636 RELCK2 04367 SAVBUF 4524 UFO01 00130 XOPN0 00400
122 RCRD 6674 RELCLR 04370 SCHED0 3640 UFO1 03506 XOPNSW 00576
123 RCSD 6671 RELCON 04371 SCL0 03045 UFO10 03433 ZDS1 00004
124 RCSE 6672 RELDTA 04372 SCL01 00125 UFO2 03436
125 RCSF 6631 RELDVT 04206 SCL1 03054 UFO3 03414
126 RCSI 6675 RELINC 02472 SCLPTR 3041 UFO4 03455
127 RCTF 6677 RELINK 02120 SCLSEG 3042 UFO5 03431
128 RD0 03025 RELNOW 04365 SEGBUF 05200 UFO6 03470
129 RD3 03031 RELOAD 3600 SEGCNT 03702 UFO61 04120
130 RD30 03067 RELREG 04373 SEGMAX 02734 UFOEXT 03464
131 RD301 00323 RELRTB 04364 SEGSIZ 0021 UFORET 03466
132 RDCURA 00322 REN 0200 SI 0200 UOBUFP 03470
133 RDCURR 03042 REN0 04400 SIBRKM 0204 UOUFDP 0136
134 RDTEMP 03041 REN1 04452 SICLR 4400 UPEEK1 2445
135 READER 0001 REN2 04457 SICOM 0100 UPTIM1 0174
136 READFI 3652 RENUCP 04462 SIDATA 0020 UPTIM2 0173
137 REBOOT 4517 REPRTP 04463 SIDEX 0000 UTABLE 06040
138 REBUFF 02471 RERETP 02121 SINT 6254 UTPR1 04152
139 REBUFP 02125 RETB 0600 SIWC 0000 UTPRNU 00136
140 RED 0212 RETBK1 00002 SKPTBL 0226 UTS0 04121
141 RED0 02000 RETBKS 03363 SKPTP 0275 UTS01 00131
142 RED1 02040 RETBLK 4521 SLEEP 2357 UTS1 04125
143 RED11 01574 RETBLS 03370 SPL 6102 UTS3 04142
144 RED2 02056 RETTBL 00065 STOMIN 0005 UTUPTR 0136
145 RED3 02107 REWNDC 02473 SUF 6274 UUCDR 1735
146 RED30 02400 RF08 0000 SWDEX 0005 UUDF 0172
147 RED301 03362 RFILE 6603 SWPRER 0002 UUDTRK 1415
148 RED302 02124 RINGIN 0304 SWPWER 0003 UUOERF 0001
149 RED31 02411 RK05 0001 TABOUT 03351 UUOERR 4404
150 RED32 02406 RK8E 0000 TABSTA 00060 UUOEX1 0336
151 RED33 02440 RKDV 6740 TC01 0001 VERNUM 0031
152 RED34 02456 RKJOB 0045 TD8E 0000 WAIT 5532
153 RED35 02461 RKL11 2000 TF0 03745 WFILE 6605
154 RED37 02426 RKL20 3676 TF01 00126 WINBAS 7730
155 RED4 02110 RKL21 1615 TF1 03761 WNCURS 01344
156 RED40 02112 RS08 0001 TFCNTR 03772 WND0 01200
157 RED5 02065 RTABLE 06160 TFUFDP 03766 WND10 01257
158 RED6 02024 SAT1 02614 TICMIN 2260 WND11 01267
159 REDGD1 02111 SAT2 02625 TICSPS 0024 WND13 01273
160 REDO0 4172 SAT3 02636 TIMCDR 2621 WND20 01345
161 REDPTR 02070 SATBOT 00070 TIMER0 2200 WND201 02474
162 REENTP 04461 SATCNT 02654 TLKMAX 0012 WND30 01327
163 REL 0042 SATCT2 02655 TRUKBD 0012 WND5 01324
164 REL0 04200 SATEMP 02655 TS8DEX 0030 WND6 01311
165 REL00 04204 SATFIX 02652 TTCHAR 0032 WNDCNT 01342
166 REL01 00120 SATL1 00122 TTYEVE 0001 WNDIRP 01276
167 REL1 04260 SATLOK 02600 TTYTBA 02377 WNDPTR 01300
168 REL2 04271 SATMSK 02656 TTYTBL 2747 WNDREM 00061
169 REL3 04311 SATPNT 02653 UC0 03200 WNENTP 01340
170 REL4 04322 SATR1 00123 UC01 00127 WNFCBP 01337
171 REL5 04324 SATREL 02660 UC1 03221 WNRETP 01341