1 Assembler C9208 12-May-93 12:30 PAGE 1 F 0 1 GLOBAL BLOCK Global Block 2 EXT 3 INPUT PROP put proprietary notice in listing! 1 2 3 4 5 6 7 8 9 10 * ......... BBBBBBBBBBBBBBBBBB TTTTTTTTTTTTTTTTTTTTTTTT IIIIIIIIIIII 11 * ................. BBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTTTTTTTTTTTTTT IIIIIIIIIIII 12 * ..........##......... BBBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTTTTTTTTTTTTTT IIIIIIIIIIII 13 * ............##........... BBBBBB BBBBBB TTTTTT TTTTTT TTTTTT IIIIII 14 * .............##............ BBBBBB BBBBBB TTTTT TTTTTT TTTTT IIIIII 15 * .............##............ BBBBBB BBBBBBB TTTT TTTTTT TTTT IIIIII 16 * ..............##............. BBBBBBBBBBBBBBBBBBB TTTTTT IIIIII 17 * ..............##............. BBBBBBBBBBBBBBBBB TTTTTT IIIIII 18 * ..............##............. BBBBBBBBBBBBBBBBBBB TTTTTT IIIIII 19 * .............##.............. BBBBBB BBBBBB TTTTTT IIIIII 20 * ...........##.............. BBBBBB BBBBBB TTTTTT IIIIII 21 * ..........##............... BBBBBB BBBBBB TTTTTT IIIIII 22 * ........##............... BBBBBB BBBBBBB TTTTTT IIIIII 23 * .....##.............. BBBBBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTT IIIIIIIIIIII 24 * ................. BBBBBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTT IIIIIIIIIIII 25 * ......... BBBBBBBBBBBBBBBBBBBB TTTTTTTTTTTT IIIIIIIIIIII 26 * 27 * 28 * ****** Copyright 1982, 1983, 1984, 1985, 1986, 1987, 1988, 29 * 1989, 1990, 1991, 1992 BTI Computer Systems ****** 30 * 31 * This document and the program it describes are the exclusive property 32 * of and proprietary to BTI Computer Systems. No use, reproduction or 33 * disclosure of this document or its contents, either in full or in part, 34 * by any means whatsoever regardless of purpose may be made without the 35 * prior written consent of BTI Computer Systems. 36 * 37 * BTI Computer Systems 38 * Sunnyvale, California 94086 4 INPUT REVISIONS revision data 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 2 (REVISIONS) F 3 3 4 ********************************************************************************** 5 * * 6 * Rev. Date * 7 * ---- --------- * 8 * 3.10 24 Jun 85 ( A20, 9C release was reassembled as 3.10-1 ) * 9 * Error return from DISKIT in share/unshare freq * 10 * processor changed to unmap WNDO1. * 11 * C8506h 29 Jun 85 * 12 * Cancel disk space low operator message when disk * 13 * is dismounted. * 14 * Minor changes to maintenance dismount code, VOLNAWAY * 15 * now indicates volume in process of being dismounted. * 16 * C8507 02 Jul 85 * 17 * Created FILLTCQ subroutine from terminal write FREQ so * 18 * that ECHOLINE can use the same chunk of code. Changed * 19 * the way stack space is allocated in INITWRITE. Rewrite * 20 * ECHOLINE to use FILLTCQ, and handle line kill processing * 21 * correctly. This also fixes the problem of having * 22 * delays set for delayable characters in echo mode 3. * 23 * C8507a 11 Jul 85 * 24 * Restored check for power fail at beginning of dispatcher, * 25 * this guarantees that all CPUs will execute the power fail * 26 * restart code. * 27 * Moved SETMEMTRAP call from INITWRITE to the beginning of * 28 * each write FREQ. This allows the write routines to set * 29 * different error addresses. Added PASSERRW1 which does * 30 * a GRUBWNDO1 before executing the PASSERRUP code. * 31 * 3.10-1 12 Jul 85 (9C patched to 3.10-10, CM 2.5) * 32 * Changed OUTTSET to not flush input and output buffers. * 33 * Fix to the recover SAF block code so that if a current * 34 * block (FCMABLK) is not specified, the load point block * 35 * is used instead. * 36 * C8507b 17 Jul 85 * 37 * Changed CIA driver to only put as many characters into * 38 * a port's output buffer as can be output in 4 CIA cycles * 39 * (200 ms). Added port option to XOFF the port when the * 40 * input buffer gets more than half full. XON gets sent * 41 * when the input buffer reaches less than 1/8 full, or * 42 * the input buffer gets flushed, or on a port reset. * 43 * C8507c 22 Jul 85 * 44 * New FREQs FRTSETXOIQ and FRTGETXOIQ to set and get the * 45 * XOFF port on input buffer full option. * 46 * Reread Modem/Hardwire jumper in CIA_RESET. * 47 * C8507d 25 Jul 85 * 48 * Added GRUBWNDO1 for file page in RAFREAD/CODEREAD at * 49 * USRMEMBAD (patched into 3.10-2). * 50 * Prevent S0007 by preserving R3 (FDE address) around * 51 * call to GRUBWNDO2 in RAFEXPAND (patched into 3.10-2). * 52 * Changes to the PRIV2MOD routine to protect spooled files * 53 * from changes by non .!!!, .SYS users. This prevents * 54 * unsaving devices from hardware.sys by unprivileged users. * 55 * C8507e 31 Jul 85 * 56 * Changed SPLRTIME from 30 seconds to 600 seconds. * 57 * Forestalls 'spooler currently unavailable' on loaded * 58 * systems (patched into 3.10-2). Fix to the path WFM * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 3 (REVISIONS) F 3 59 * code. It didn't recognize EOR, consequently it * 60 * did stores with an uninitialized register (R7). * 61 * Added 2 new trace calls to the CIA driver. * 62 * Added code to SSU_RESET to have the SSU keep FDATE * 63 * current using a new microcode feature. This * 64 * requires a jump instruction to be changed to a NOP. * 65 * C8508 07 Aug 85 * 66 * Changed CIATPS to 10 and CIATICKTIME to 45. Also changed * 67 * WAIT30SEC to WAIT60SEC and WAIT60SEC to WAIT120SEC in the * 68 * CIA driver. These changes reflect the discovery that a * 69 * CIA tick equals 2.2 ms and not the documented 1 ms. * 70 * Changed subroutines that modify FDATE to check SSUVER * 71 * first and if using a new SSU to not update FDATE. * 72 * Replaced the unconditional jump around the code to set * 73 * up the SSU updating FDATE in SSU_RESET to check SSUVER. * 74 * Added FSNDATE to keep track of the last dispensed serial * 75 * number for systems using SSU updated FDATE to assure * 76 * unique serial numbers. * 77 * Added SMULIST to keep track of SMUs on the system. * 78 * This list is built in HAVEMEMORY in INITIAL. * 79 * Added SMUCHECK (called from DEADMAN) which reads * 80 * SMU error logs once a minute. Changed CIA driver * 81 * to look for the PORTCINIT parameter instead of the * 82 * PORTCRALL parameter after the PORTCRESET command. * 83 * Removed old code that allowed for CPUs not recognizing * 84 * power fail while executing WAIT instructions. This * 85 * code was causing errors due to the new code that * 86 * enables interrupts in DISPATCH. * 87 * C8508a 08 Aug 85 * 88 * Added new fields to COMM block to hold a pointer to the * 89 * first TCB in the TCB list belonging to this comm, and a * 90 * count of the terminals timing belonging to this comm. * 91 * Changed terminal timing values to negative counts so that * 92 * timing TCBs can be LSRCHed for the sign bit on in the * 93 * timing count field. Changed timing routine to use these. * 94 * Created new file CONSTANTS and moved memory management * 95 * constants, BITTAB, etc. into it. Also moved many * 96 * constants from COREDEFS into routines that use them. * 97 * Split COREDEFS into CPUPAGE, COREDEFS, VIRTCOREDEFS, * 98 * and USERCOREDEFS. * 99 * C8508b 12 Aug 85 * 100 * Fixed S0005 in OPENERRBZY portion of FROPEN requests by * 101 * having FREETEMPS and SELFFWAIT save R2. Before, a load * 102 * from the FCB was being made after FREETEMPS dumped the * 103 * FCB. * 104 * C8509 20 Sep 85 * 105 * Fix in initial to properly calculate the free storage * 106 * equilibrium value (FSXCOUNT). * 107 * C8510 01 Oct 85 * 108 * Changes to MS driver. READ does no error recovery during * 109 * headchecks (added MDVLOWTOL). Removed READ1TRACK, * 110 * incorporated this function into READTRACKS, which only * 111 * reads one sector off each track. Also, checker quits * 112 * as soon as error limit is exceeded. * 113 * Change to sleep code in dispatcher so that the error log * 114 * list and accounting list are empty before system allowed * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 4 (REVISIONS) F 3 115 * to sleep. Change in dispatcher to check to see if a * 116 * process wants to run on a specified CPU. * 117 * OPREQ ORSETCPU to select a CPU for a process to run on. * 118 * C8510a 01 Oct 85 * 119 * Fix to open .VOL so that special privileges over alias * 120 * dir are not required to execute open successfully. * 121 * Addition of pseudo-command for the comm driver to * 122 * indicate reset the port's interface state. * 123 * C8510b 07 Oct 85 * 124 * Fix to open, close, destroy, and unsave code so log * 125 * entries will go in the proper accounting files. * 126 * Fix to abort, terminate, and evict, to set the proper * 127 * port number when a batch job is involved. * 128 * Addition of CPUINIT to keep track of number of CPUs * 129 * on INITIAL page. When goes to zero INITIAL page is * 130 * made available for free storage. * 131 * Changes to ORVANISH when system is sleeping so that * 132 * the system volume will not be dismounted until all * 133 * accounting and error log entries have been made. * 134 * C8510c 14 Oct 85 * 135 * Addition of logon account names to alias and unalias * 136 * logging. New OPREQs OPRCPUSTOP and OPRCPUSTRT to remove * 137 * and restore CPUs from active work in the system. * 138 * C8510d 16 Oct 85 * 139 * The volume mount and dismount code now writes to the * 140 * Manager.Sys accounting log file, informing who loaded * 141 * or unloaded a specific volume. * 142 * C8510e 17 Oct 85 * 143 * Added GRUBWNDO1 after FORCEWRW1 in RAFEXPAND. * 144 * Cleaned up the code that generates accounting records * 145 * for file opens, basically used existing subroutine. * 146 * Added additional information returned by the session * 147 * information request, being a bit indicating whether * 148 * the session was created by the system or a user. * 149 * C8510f 24 Oct 85 * 150 * Added OPREQ to remove memory pages from service * 151 * for system load testing. Modified FSXPAND to * 152 * actually do the removal and restoration. * 153 * Added 0 case to PROCPOWER session finder. Allows 0 * 154 * for session number in ORPABORT, ORPEVICT, ORPTERMIN. * 155 * Fix to OPRSTRTBAT request in that standard input * 156 * unit is tagged as a CM unit. This disallows rewinds * 157 * by anyone other than Control Mode. * 158 * Changes to INITIAL and INITPROC to generate PPLs * 159 * for their pages but put them on PPLINIT list. * 160 * INITPROC then moves these to the idle list when * 161 * finished and makes its pages available for free storage. * 162 * Reordering of some system files (INTPROC, SPROCSTART, * 163 * CONVERSION, AFTMANGLE, HOURPROC). * 164 * Moved FETCHDIR and FREEDIR into ULBTWIDDLE. * 165 * C8510g 25 Oct 85 * 166 * ALL mount and dismount requests and support routines * 167 * moved into MOUNTUTIL and OPRQMOUNT. * 168 * Various volume and system information requests moved * 169 * from XRQOPREQ2 to OPREQCVOL. * 170 * OPREQ files reordered. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 5 (REVISIONS) F 3 171 * C8510h 31 Oct 85 * 172 * Renamed CAIMSABORT to CAIMABORT. * 173 * Removed unused symbol ALIAGVER, and unused pointer * 174 * LONGERSP and word LONGERS. * 175 * Set bit in PCB indicating special project for CPU patch * 176 * process and CPU stop process. * 177 * Set FLAGS bit in POWERUP to reload CPU microcode patches. * 178 * Removed TERMTIMING word (now kept track of in COMBLOCK). * 179 * Boxed out ascii parity table, TTYPARTAB (unused). * 180 * Changed FCFBC to FCFBD (file being destroyed not closed). * 181 * C8511a 04 Nov 85 * 182 * Changed FILLTCQ to not do CMOVE into TCQ. Changed * 183 * terminal write code to catch user memory errors. * 184 * Changed ORDESACCT OPREQ to call XREQs to return disk * 185 * and CPU limits to manager account. * 186 * Removed halt S0201 from comm driver. * 187 * C8511b 04 Nov 85 * 188 * Minor bug fixes to the backup/recover requests. All * 189 * recover requests should trap user memory errors * 190 * correctly. Initialize volume request should copy * 191 * the system configuration information and store it * 192 * into both security blocks. * 193 * C8511c 06 Nov 85 * 194 * Implementation of the account foreign flag. This * 195 * prevents managers on a volume from a different system * 196 * from having access to accounts not on his volume. * 197 * Boot, PowerUp, PowerDown, Sleep accounting records * 198 * are now written to the manager.!!! account if an * 199 * accounting file exists. * 200 * C8511d 11 Nov 85 * 201 * Register usage change in FRQNOPEN to ensure that * 202 * initial privileges are set properly. * 203 * The account names in file accounting records have been * 204 * switched, this allows the entries to be written to the * 205 * correct manager/user accounts. File actions are not * 206 * logged if the file accessor is also the file owner. * 207 * Checks for alias or unalias account being same as logon * 208 * account when creating accounting record moved to central * 209 * routine. * 210 * Failed alias accounting record now contains logon * 211 * account name. * 212 * Reorganization of the INITDEVACS and LINKPHYDEV routines. * 213 * C8511e 13 Nov 85 * 214 * Changes to OPEN and CLOSE code to keep terminal busy * 215 * count in the TCB so that any port may be opened * 216 * both RO and RW. * 217 * C8511f 14 Nov 85 * 218 * Combined FREQECHO, FREQUNIT, and FREQMKPATH into * 219 * FREQUNIT file. * 220 * Added FREQ to switch resources associated with 2 units. * 221 * Moved code to make accounting entries for evicts, * 222 * aborts, etc. into a subroutine. Rearranged code in * 223 * OPR process control section. * 224 * Fix to the logoff code so that an unalias record gets * 225 * the correct logon account name. * 226 * C8511g 18 Nov 85 * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 6 (REVISIONS) F 3 227 * Added OPREQs to put a process in the STOPWAIT queue, * 228 * and to remove it from same. Made changes to DISPATCH * 229 * to actually put the process in STOPWAIT. Added 2 new * 230 * accounting types for these activities. * 231 * C8511h 27 Nov 85 * 232 * Bug fix to lock PCNTLLOCK in PROCPOWER 0 case. * 233 * Changed PROCPOWER to allow nonzero self-spec even * 234 * if the requester is a system session. * 235 * Changed powerfail code to live through multiple * 236 * powerfails. Involved POWERUP, POWERUP2, OWNCOPY, * 237 * ZEROPAGE, CIADRIVER, and new CPU var POWERRTNPC. * 238 * Enhancements to the foreign account restriction. * 239 * Basically, we disallow access by foreign accounts and * 240 * inhibit access to foreign accounts. Foreign accounts * 241 * may only receive information on similar foreign * 242 * accounts (same system serial number), while * 243 * non-foreign accounts will not receive privileges * 244 * over foreign accounts. * 245 * C8512a 04 Dec 85 * 246 * Changes to the open service routine to initialize * 247 * the SAF end pointers when files are opened /RO. * 248 * This allows faster SEODs even when the file is * 249 * not open for writing. * 250 * Removed jump around check for CM unit in LUNSEARCH. * 251 * Fix exchange save request to set the SAF end pointers. * 252 * Added UNITWAIT queue for processes waiting to give or * 253 * receive units from other processes. Added UREQs to * 254 * give and receive units between sessions. * 255 * C8512b 04 Dec 85 * 256 * Added check in create FCB routine to ensure enough * 257 * user free storage before we hand out a new FCB. * 258 * This prevents system crashes by arbitarily * 259 * opening a whole slough of units. * 260 * C8512c 05 Dec 85 * 261 * Fixed TAPENOTRDY in MTDRIVER to not loop trying to * 262 * rewind a drive that has errors but is still "ready" * 263 * and the controller is not dead (reported by UK). * 264 * Changed message send UREQ to pass bit indicating it is * 265 * ok to interrupt receiver if his interrupts are enabled. * 266 * Added to OUTTSET creating and linking in a command * 267 * element to reset the port's primary status word. * 268 * Added check in CHECKUINT for unit being given interrupt. * 269 * C8512d 09 Dec 85 * 270 * New OPREQ for CM to use when attaching to a session. * 271 * UINTDISC returns unit number of disconnected terminal as * 272 * parameter (high bit set if absolute i/o unit). Changed * 273 * UNMOUNTVOL in MSPROC to use MDVVOLFLD symbol, instead of * 274 * VOLFIELD, for clarity. Changed CHECKSTATE to not * 275 * UNMOUNTVOL in NODRIVE case if the drive was not thought * 276 * to be ready. Changed UNMOUNTVOL to log 'not ready' * 277 * even if there was no volume mounted. * 278 * C8512e 10 Dec 85 * 279 * Increased stack size for the error log process to 7 to * 280 * give a little more margin for changes in stack usage. * 281 * Added new error code for attaching to session so that * 282 * we can pass the session number of the attacher to the * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 7 (REVISIONS) F 3 283 * attachee. * 284 * Added another entry into LUNSEARCH (LUNSEARCHX) that * 285 * checks for units 201 and up being in control mode. * 286 * Changed FRRESSWTCH and URGIVEUNIT to use LUNSEARCHX. * 287 * C8512f 11 Dec 85 * 288 * Added code to check for new PPUs on an all SMU system * 289 * and if found to enable triple word transfers for the PPU. * 290 * Modified slot loop in initial to loop once looking for * 291 * memory and then loop looking for other devices. This * 292 * removes the OS requirement that memory must reside in * 293 * slots lower than other devices. Modified DEADMAN to * 294 * reset the bit in the PPU to enable triple word transfers * 295 * whenever a device attached to the PPU must be reset. * 296 * C8512g 18 Dec 85 * 297 * Bug fix in ORATTACH request. * 298 * Changed register usage in INTPROC so R1 will contain * 299 * error code at STOPC1200 even if the error went through * 300 * PASS2CM on the way. * 301 * Changed URGIVEUNIT to allow giving a control mode unit * 302 * even if privilege is not modify. * 303 * Fix to catalog read request, so that if one has no * 304 * privilege to a DIR than the header information for the * 305 * system volume is returned. * 306 * Rewrite of the recover file request to recover hardware * 307 * file types properly. Also additional fixes to make * 308 * ready on full implementation of selective backup. * 309 * Fixes to the unit give and receiving requests to * 310 * properly update the related hardware control elements. * 311 * Fix to disallow access to device from file other than * 312 * one in hardware.sys on system disk, A/U error returned. * 313 * C8512h 27 Dec 85 * 314 * The ORATTACH request no longer allows the requesting * 315 * session and the destination session to be one * 316 * and the same! * 317 * C8601a 05 Jan 86 * 318 * Addition of SETMEMTRAP for a text with forms write, this * 319 * traps correctly when fetching the control character. * 320 * Also change to the memory protect recover code to pass * 321 * error directly to overprocess (PASSERRUP) and not to * 322 * process as an XREQ error (FERROR). * 323 * Reorganization of the backup recovery request to check * 324 * for exceeding limits. * 325 * Addition of the ULLIMLOCK to setup critical region when * 326 * changing limits in the ULB. This was necessary because * 327 * most of the fields in the ULB are ZBMs. Proper locking * 328 * will be implemented initially for ULDSKUSD, others to * 329 * follow. * 330 * C8601b 06 Jan 86 * 331 * Bug fix in UREQRCVU to properly set FCB pointer in TCB. * 332 * C8601c 08 Jan 86 * 333 * Better checking for CM units in FRRESSWTCH and * 334 * URGIVEUNIT requests. * 335 * Minor fixes for foreign account checking. Also fix * 336 * to DIR read to return proper system number. * 337 * C8601d 14 Jan 86 * 338 * Added a NOP in memory parity error routine so that it * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 8 (REVISIONS) F 3 339 * can be easily patched to not send a WRU(0) to MCUs. * 340 * Added backup privilege to INITPROC. * 341 * Rewrite the code file write protect code to not * 342 * use RSEEK. Change to RSEEK to unmap WNDO1. Changed * 343 * all callers of RSEEK accordingly. * 344 * C8601e 16 Jan 86 * 345 * Change to FROPEN code to properly free a file if the * 346 * file being destroyed bit is set. * 347 * Fixes to ensure proper list locking during updates to * 348 * word 0 of the ULB. This was a possible cause for ULB * 349 * list screwups, if others occur, then we need to look * 350 * elsewhere. * 351 * Implemented the new ULB limit lock, ULLIMLOCK, to * 352 * protect following fields: ULDSKUSD, ULDSKLIM, * 353 * ULSCRDSK. Others to follow as necessary. * 354 * Reworked the create account request into two * 355 * separate requests, one for managers the other for * 356 * backup. * 357 * Fix so that the correct account serial number gets * 358 * placed into FBI on share and authlist blocks. * 359 * Fixes to GETPUTADT to avoid PUNLOCK on a lock not * 360 * held. Added a GRUB for block about to be freed. * 361 * Added MAPOUTFBI and GRUB in disk error processing * 362 * to dump bad block before continuing. * 363 * C8601f 21 Jan 86 * 364 * Tiny RAFs added. Change to terminal delay so * 365 * rounding errors will not generate a POB error. * 366 * PFNOREFVAL added to MACHDEFS and used in PFPUTIL. * 367 * Change in Timer at SSU_INT to save one instruction. * 368 * Fix to open of .DIR, so that account serial number * 369 * is put into the FCB. * 370 * C8601g 21 Jan 86 * 371 * Fix to file size updating when expanding a RAF. * 372 * Change create account to use logon ULB and not * 373 * privilege ULB if program has backup privilege. * 374 * C8601h 23 Jan 86 * 375 * Minor bug fixes to create account code. * 376 * Minor bug fix to recover RAF file pages. * 377 * Bug fix in GETFSEQN associated with new SSU ucode * 378 * for clock update to memory. * 379 * C8601i 24 Jan 86 * 380 * Addition of an Executive Request to cycle the * 381 * cartridge tape, FRCYCLE FREQ (1E). * 382 * C8601j 28 Jan 86 * 383 * Bug fix in Monitor parameter out of bounds error * 384 * return (clears IHBUSY). * 385 * Fix to error recovery for SAF write. File lengths * 386 * and account limits should all be restored properly. * 387 * C8601k 30 Jan 86 * 388 * Addition of an Executive Request to recover an * 389 * account and deallocate the needed resources from an * 390 * appropriate manager. * 391 * C8602 03 Feb 86 * 392 * Mask character before checking if line kill. * 393 * Change to SCAN4DLY to also look for the character * 394 * with the high bit turned on. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 9 (REVISIONS) F 3 395 * Change in SMUCHECK due to the high bit no longer * 396 * being set on error responses. * 397 * Added CHECK4CM subroutine to ensure that if a unit is * 398 * CM's then CM is the one diddling with it. Added calls * 399 * to this in rewind, backspace, and skip to filemark * 400 * backwards requests. * 401 * Changed FCSAFEPP, FDSAFEPP, FCSAFEND, FDSAFEND to FCEPP, * 402 * FDEPP, FCEND, FDEND to reflect their usage by non-SAFs. * 403 * Changes to keep track of the RAF end position. * 404 * C8602a 04 Feb 86 * 405 * Removed unused symbols from create and destroy account * 406 * XREQs and stack allocation from destroy account XREQ. * 407 * Added new halt code to replace the second usage of * 408 * HALTS1280. Changed error exit in recover FP to unmap * 409 * FBIs. Removed label GIVEDSEUM. * 410 * Removed VIQDIDLE from volume information request record, * 411 * UPCOMSGSER from UPC, UERRORDSE error return from * 412 * XREQPROC, and DORELSSDE error return from release FREQ. * 413 * Bug fix to WHOLOOK routine to check only a limited class * 414 * of privileges, rather than the whole UPCPRIV field. * 415 * Fix to exchange save to propagate the file log bit, not * 416 * log the unsave of the orignal file, and log the * 417 * exchange save. Change CPR to UCPR in RSEEK and WSEEK * 418 * so very large RAFs will work. * 419 * C8602b 05 Feb 86 * 420 * Bug fix to create account so that manager ULB is freed * 421 * when no longer needed. Change to RAF position code so * 422 * that it checks to see if back at load point. Fix to * 423 * the backup file page request to not loop indefinitely * 424 * if the very last block in a large RAF is non-hole. * 425 * C8602c 07 Feb 86 * 426 * Fix to file log event subroutine to ignore those events * 427 * caused by the system. This prevents system crash by * 428 * setting FLOG flag on accounting.logfil file. * 429 * Headchecker now suppresses potentially confusing Perm * 430 * Read log entry (only one error is needed to perm a * 431 * block during head check). * 432 * Addition of sequential RAF read and write routines * 433 * (FRSREAD, FRSREADB, FRSWRITE). * 434 * C8602d 10 Feb 86 * 435 * Modify FRSEOD request to work for RAFs. Addition of * 436 * FWSP and BKSP routines for RAFs. New FREQ FREPP added * 437 * to return the end position pointer of a RAF or SAF. * 438 * Echo unit now allowed to deal with RAFs. * 439 * C8602e 11 Feb 86 * 440 * Programs running with backup privilege no longer do * 441 * any file logging, regardless of the FLOG flag value. * 442 * Added trace calls to substitution process. * 443 * C8602f 26 Feb 86 * 444 * Bug fix in unsubstitute process. Set NOSUB flag in FBI * 445 * of substitution block during volume recover request. * 446 * Fix to the session information request so that CPU time * 447 * limit is returned in seconds and not milliseconds to * 448 * agree with documentation. * 449 * Fix to create account so that error returned if trying * 450 * to create account on a foreign volume. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 10 (REVISIONS) F 3 451 * Added entry in LFWEIGHTTAB for UNITWAIT queue. * 452 * Change to volume mount code to set the new volume * 453 * revision level in the volume label. This prevents * 454 * an old OS from mounting a volume with tiny RAFs. * 455 * Changed INITTERM default for TCLASTCOM2 to include * 456 * 1*PCFBRKOUT (terminal should delay output during break). * 457 * C8602g 27 Feb 86 * 458 * Converted the backup RAF/CODE page lookup into a * 459 * subroutine and added an Executive Request to find * 460 * the next non-hole page in a RAF/CODE (FRRAFNEXT FREQ). * 461 * C8602h 28 Feb 86 * 462 * Removed PABLOCK and replaced it with PAPPLPTR. This * 463 * also involves calling TESTTRUBL before the WSX check. * 464 * Minor bug fixes to the find next non-hole in RAF/CODE * 465 * request. * 466 * C8603a 13 Mar 86 * 467 * Fixed READ in MSPROC to ensure block with segment * 468 * correction is actually rewritten. Took out * 469 * 'unloaded vol' check prior to SUBSTITUTE call * 470 * (redundant because SUBSTITUTE checks). * 471 * Backup privilege now sufficient to execute manager * 472 * requests. However the privileges come from the * 473 * logon account and not the privilege account (OWNDIR * 474 * is ignored). * 475 * Added global file control block for all files opened MW. * 476 * Change FDE to use a 2 bit field to keep track of RAF * 477 * type. Added this field to the FCB (used only for RAFs * 478 * and CODEs). Removed RAFPTRLOCK (now lock is on a * 479 * per file basis in GFC). * 480 * C8603b 25 Mar 86 * 481 * New user interrupt scheme. Trapping goes up the * 482 * underprocess tree. Errors not lost in process * 483 * switching. Errors can be local to underprocess. * 484 * Trapper's TCG, TCA, and TCINTE are used even if * 485 * trapper is not CPCUPC. * 486 * Fix in OUTTSET so second element created will not * 487 * be lost if the port must be XONed. * 488 * Moved a call to DELINKUERR outside of the critical * 489 * region locked by PSLOCK. This was because DELINKUERR * 490 * itself attempted a lock on PSLOCK. * 491 * Bug fix in OPEN code when file being destroyed bit * 492 * is set. Fix to FREEFILER to properly free a RAF. * 493 * Fix to DISMTDMY to properly cancel disk low message. * 494 * C8604a 04 Apr 86 * 495 * Changes made to the logon and logoff request to adjust * 496 * scratch block limits so that the current logon account * 497 * (system account also) reflects what is in use. This * 498 * also involved changes to Control Mode, for additional * 499 * details consult the begining of the Control Mode * 500 * listing. * 501 * C8604b 15 Apr 86 * 502 * Change to initial so that when each TCB is built a * 503 * default baud rate of 300 is set for both the input * 504 * and output bauds. * 505 * Change to CHECKDCH routine to store its return address * 506 * on a preallocated stack location. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 11 (REVISIONS) F 3 507 * Added FRTAPESTAT to return PPU and controller status * 508 * for a tape device. * 509 * Added new error code for read errors. Changed mag tape * 510 * driver to return read error. * 511 * C8604c 17 Apr 86 * 512 * Fix to the substitution process so that grub of a * 513 * swapping page does not allow page to go to ADT. * 514 * Unsubstitution will occur when user is finished with * 515 * page. See comments in the Disk Substitution Process. * 516 * Changes to CIA driver to link an error element into * 517 * the chain of input TCQs when a framing or parity error * 518 * occurs or the input buffer overflows. Terminal read * 519 * now will return the error. * 520 * C8604d 25 Apr 86 * 521 * Fix exchange save to preserve the user defined field. * 522 * Reworked the URLUNITS UREQ to compact space and return * 523 * proper buffer remaining counts if users buffer is * 524 * initially too small. * 525 * C8605a 01 May 86 * 526 * Fix to FRXSAVE FREQ to get the file name from the * 527 * original files directory. This prevents bogus * 528 * filenames from appearing if the file got renamed * 529 * after it was opened. * 530 * C8605b 15 May 86 * 531 * Changed parity error routine to not perform a WRU but * 532 * instead do a data read of location zero, then pick out * 533 * the slot type from the SLOTTABLE. Added ADJUSTCYL * 534 * before checking second set of tracks in CHECK1HEAD * 535 * (first read of second set was repeating the last read * 536 * of the first set). * 537 * Added minor fix to cancel account so that bogus * 538 * error code would not be returned incorrectly * 539 * (undefined opcode). * 540 * C8605c 19 May 86 * 541 * Bug fix to TIME2DISK routine. If VOLN contains zero * 542 * for the security block (maintenance mounted) then * 543 * hour stuff is ignored. * 544 * Addition of two Executive Requests: one adds an * 545 * account name to the system AFT (ORADDAFT OPREQ) ... * 546 * the other removes an account from the system AFT * 547 * (ORDELAFT OPREQ). * 548 * C8605d 21 May 86 * 549 * Fix in COMM driver to unsuspend a user from TERMOWAIT * 550 * when TERMWBUSY goes to zero. Set TCBAUDROOM when * 551 * output baud rate is changed by FREQ. * 552 * C8605e 22 May 86 * 553 * Changes made to the internal structure of the system * 554 * NVM. The time values NVMCLOCK1 and NVMCLOCK2 are no * 555 * longer used. Instead the lower 16 bytes of the * 556 * DEATHFLAGS are used to hold four separate 32 bit time * 557 * values. Each hour the oldest time is over written. * 558 * The times are deemed to be good if two of the latest * 559 * times are within one hour and one minute of another. * 560 * C8605f 23 May 86 * 561 * Added new field in the PSA to keep session number that * 562 * receives message when session logs off. New XREQ * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 12 (REVISIONS) F 3 563 * to set field and changed URSESSINFO request to return * 564 * current value. Message to be sent by Control Mode. * 565 * C8605g 27 May 86 * 566 * Fix to the set PAC/FAC fields with respect to BACKUP. * 567 * It turns out that backup needs to unconditionally set * 568 * or clear the PAC/FAC fields. Also some minor code * 569 * cleanups were done in the file ACCTDIDDLE. * 570 * C8606a xx Jun 86 * 571 * Fix to write filemark (SAF), to not jump to nullwrite * 572 * label at conclusion of request, the problem was stack * 573 * size incompatabilities. * 574 * Minor fix to the NVM clock check, clock time could be * 575 * as great as 1 hour and 5 minutes difference. Did not * 576 * have enough of a fudge factor here. Also necessary to * 577 * rearrange the NVM definition for the new clock values, * 578 * error due to misunderstanding of the death flags. * 579 * These flags begin at the end of the NVM and work their * 580 * way towards the begining. * 581 * C8606b 11 Jun 86 * 582 * Fix to TIMER to modify rollover test to work if system * 583 * stopped at rollover. Added "idle" state to MS driver, * 584 * which is entered for 800 ms a) when the drive comes * 585 * ready, b) after reading the kludge board, and c) upon * 586 * entering REZERO, if a previous REZERO call failed. * 587 * Reinstalled delayed head check in CHECKSTATE, because * 588 * idling drive now takes up the slack time coming ready. * 589 * Heads are retracted upon final REZERO failure. Fixed * 590 * logging of "not ready" on drive without volume mounted. * 591 * Moved HAVESSU call into first bus device initialization * 592 * loop in INITIAL. * 593 * C8606c 18 Jun 86 * 594 * Fix to the terminator scan code in the comm driver. * 595 * Because it is now possible to have error elements as * 596 * well as blocks of characters, the terminator scanner * 597 * needs to ignore the error elements. * 598 * C8606d 23 Jun 86 * 599 * Added fix to the local unit information request to * 600 * clear the temporary buffer as each unit is processed. * 601 * Added code to the initproc to make sure locations on * 602 * virtual page zero are initialized. PROMBOOT does not * 603 * store into all location hence some will have parity * 604 * errors when they are read (this gives the crashdump * 605 * code problems). This problem appeared due to the * 606 * release of the SMU, the fix needs to made in PROMBOOT. * 607 * C8607a 08 Jul 86 * 608 * Changed STMW R1,FBIDA to STMW R1,FBIWORDB in disk * 609 * driver at READOVER(2) to match that at READ(9). The * 610 * earlier change was made sometime between July 85 and * 611 * Oct 85 to prevent getting parity errors caused by * 612 * uninitialized memory. * 613 * C8608a 01 Aug 86 * 614 * Small bug fix to the system free memory overlap check * 615 * routine. The check for index out of range was incorrect. * 616 * Change to the ADDSWAP and LIMITCHECK routines to * 617 * differentiate between account limit and session limit * 618 * errors. Change error code C5 from account limits * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 13 (REVISIONS) F 3 619 * exceeded to session limits exceeded. * 620 * Fix to create account request to allow manager.!!! to * 621 * create proprietary account. * 622 * Fix to the temporary code that initializes words on * 623 * page zero, was not storing enough words. * 624 * C8608b 05 Aug 86 * 625 * URPGO no longer zeroes the requester's R0 before letting * 626 * the underprocess run. Was causing screwups with * 627 * new user interrupt scheme because URINTRTN to UREQ * 628 * instruction would be with R0 = 0 (i.e. interrupt * 629 * occurred while underprogram was running). * 630 * C8608c 10 Aug 86 * 631 * New OPREQ ORSTRTSPLR to start up the spooler without a * 632 * password in the batch file. Changed INITPROC to use the * 633 * same subroutine, STARTSPLR (moved MAKEBATCH to OPREQ). * 634 * C8608d 15 Aug 86 * 635 * New subroutine UNMAPPAGE (merged with UNMAPFILE), and * 636 * calls to it from the FRDELPAGE FREQ. No unmap of * 637 * deleted file page was causing FBI mismatches on * 638 * subsequent page faults (3.12-5). * 639 * C8608e 18 Aug 86 * 640 * Fixed XREQ monitor to set up BREAKTAB entry in XHTABTAB. * 641 * Was leaving it 0, causing S0007 when user singlesteps. * 642 * C8608f 19 Aug 86 * 643 * Fixed FRSETCCB to correctly set the OWNDIR bit (reported * 644 * by 80101, no SPRs). * 645 * C8608g 29 Aug 86 * 646 * Fixed ORDEVINFO to correctly set the DIDRVNUM field. * 647 * C8609 03 Sept 86 * 648 * Made death bias for system 3 years * 649 * C8609a 04 Sept 86 * 650 * Foreign accounts are now defined to be accounts that * 651 * reside on a volume in which the volume customer number * 652 * does NOT match the customer number of the system. * 653 * C8609b 04 Sept 86 * 654 * Modified check to see if a PPU can do triple word * 655 * transfers to use a bit array on PPU microcode revision. * 656 * C8609c 07 Sept 86 * 657 * Change to ORDESACCT OPREQ to allow manager.sys to * 658 * cancel proprietary accounts (.& only). * 659 * C8609d 09 Sept 86 * 660 * Fix to PPU triple word transfer check. * 661 * C8609e 22 Sept 86 (3.11, Alpha 22) * 662 * Fix to open code so that RAF type gets set into the FCB, * 663 * this was causing serious problems (all RAFs assumed * 664 * empty on first open). * 665 * C8609f 30 Sept 86 * 666 * Fix to CIA interrupt processor to remap user free * 667 * storage after giving terminal disconnect error. * 668 * Changes to disk driver to allow online disk formatting, * 669 * this includes new XREQ (ORFORMAT OPREQ). * 670 * C8610a 03 Oct 86 * 671 * Fix maintenance dismount code to proceed with dismount * 672 * even if disk is offline. Also changed REMOUNT in the * 673 * disk driver so if MDV can not be associated with * 674 * volume then MDVVOLFLD is cleared. Minor changes to * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 14 (REVISIONS) F 3 675 * DOWRITEREQ in regards to format operation. * 676 * C8610b 10 Oct 86 * 677 * Fix to the ORSECTRK OPREQ, it was eating R5 (FCB) before * 678 * jumping to FERROR. Fix to the format routine within * 679 * the disk driver, illegal store to begin operation * 680 * caused seek error. * 681 * C8610c 14 Oct 86 * 682 * Fixed FRSAVE FREQ to return XREQERISYR (instead of * 683 * XREQERDSKL) on directory overflow. * 684 * Fix to cancel account so that manager.sys may cancel * 685 * normal system accounts. * 686 * Revision of the format operation from a write request to * 687 * a read request. This was necessary because locking the * 688 * output queue lock might cause deadlock in certain cases. * 689 * C8610d 15 Oct 86 * 690 * Fixed CHKBZYACS to allow PATH MW -> RO in 0,X,X instead * 691 * of 0,1,X. * 692 * Erased write check operations from windows and included * 693 * a new maintenance write request to perform the * 694 * write/write-check operation. * 695 * Fixed PATHREAD and CHKPTHREC to return XREQERREOD only * 696 * if path is actually empty on the second attempt. Before * 697 * it would give REOD if FCLASTREAD said EOD, regardless of * 698 * current state of the PATH. * 699 * C8610e 23 Oct 86 * 700 * Change to create account so that only customer numbers * 701 * are checked to see if new account is foreign. * 702 * Special maintenance bits have been added to the VP and * 703 * PAL elements to allow greater flexibility within the * 704 * disk driver. These bits control substitutions, error * 705 * handling and write-checks. * 706 * C8610f 28 Oct 86 * 707 * Fixed INITPROC and LIQUIDINIT to unload the INITPROC * 708 * PF locations for all CPUs, not just the executioner. * 709 * C8610g 29 Oct 86 * 710 * Change disk driver so the CLEARFAULTs and REZEROs are * 711 * done prior to the requested operation rather than after * 712 * the operation. Preserves more accurate disk status. * 713 * C8611a 03 Nov 86 * 714 * Changed disk driver to not fiddle with the FBI on a disk * 715 * read error if special error handling in force. Changed * 716 * maintenance write to shutdown awaiting forcewrite. * 717 * C8611b 13 Nov 86 * 718 * Bug fixes to the head checker: zero PPL holder of bad * 719 * trax block so when head checker inhibited, same PPL does * 720 * not get repeatedly freed, zero error counters prior to * 721 * performing a head check. * 722 * C8612a 02 Dec 86 * 723 * Changed STATCHANGE routine of CIADRIVER to not mask the * 724 * port status prior to tracing the state change. This * 725 * lets us look at everything (line parity/framing error). * 726 * Fixed FINDPATH to ensure read type access exists on * 727 * particular FCB (before, if a session had both an RO and * 728 * an RW unit open to the same path, it was possible to * 729 * say that the RW was "non-empty"). * 730 * Fixed CHECKUINT/CHECKEVENT to not cream R3 in NE term * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 15 (REVISIONS) F 3 731 * and NE path checks. Was causing hangs for all but NE * 732 * term (GRW). Small cleanup in DISPATCH (NONEVB code was * 733 * duplicated in DPRUER). Fixed OVPUPONE and OVPDOWNONE * 734 * to CHECKUINT with the new process' CAINTMASK instead * 735 * of using -1. Was causing extra errors to be generated * 736 * (C1200 at GRW, to boot!). Proper interlock in * 737 * CHECKNOINT. Rearranged fields in tape MTU element * 738 * to prevent CPU interlock problems. * 739 * C8612b 05 Dec 86 * 740 * Fixed problem in open code where a disk or parity error * 741 * rips us out of the SHLCHKALL routine and the VAR (R7) * 742 * pointer does not get reset. * 743 * C8612c 06 Dec 86 * 744 * Changed so FCB of .TERM with NA access has FCDCBPTR * 745 * pointing to TCB(was nil). This allows unit to get * 746 * information about the terminal (no I/O or ints, tho), * 747 * esp. if terminal is busy. * 748 * C8612d 18 Dec 86 * 749 * Bug fix so that files can be created during the open, * 750 * bug introduced in version C8612b. Fixed URRCVUNIT and * 751 * ORSTRTTERM to check for fake .TERM condition (make sure * 752 * FCDCBPTR is not nil before using it). * 753 * Change to OPEN code so that the RAF conversion code is * 754 * not duplicated. * 755 * C8701a xx Jan 87 * 756 * Rearranged STATPI routine (URSESSINFO and ORSESSINFO) * 757 * to decrease possibility of 'bad ULB' (S10E1) halt when * 758 * calling USEULB on PSDFLTDIR of other session. * 759 * Fix to the CIA interrupt routine when unit disconnect * 760 * occurs. Sign bit is supposed to be set if the unit * 761 * number (error subcode) is an absolute IO unit. * 762 * Fixed FRSHARE FREQ to disallow empty acct name/proj * 763 * combination. Fix to access changes on /MW RAFs so that * 764 * the file length does not get reset to zero. * 765 * Fixes to RAF control requests to call RAFCURCHEK if * 766 * file opened /MW. * 767 * C8701b 16 Jan 87 * 768 * Changed URPSETREG and URSSINTARM/URSCINTARM to correctly * 769 * calculate masks for CHECKNOINT and CHECKUINT. Removes * 770 * SETCHKMASK subroutine from existence. * 771 * Added code to check if the SSU has the new 2K NVM and * 772 * adjust the number of clock values it stores from 4 to * 773 * 64. * 774 * C8701c 17 Jan 87 * 775 * Fixed GETTRAPPER to check UPCNETINTE correctly (changed * 776 * JNE to JEQ). Fixed GETTRAPPER to check whether unit * 777 * int is for unit available to the prospective trapper. * 778 * UPC is disqualified if not. Was allowing overprocesses * 779 * to get interrupts from units strictly local to an * 780 * underprocess. * 781 * C8701d xx Jan 87 * 782 * Mods to the NVM updater in INITPROC. * 783 * C8702a 09 Feb 87 * 784 * Moved RAFCURCHEK call from DSTRAF (DESTRYDEV) to RRAFUM * 785 * (INITDEVACS). Ensures that RAFCURCHEK caller has a * 786 * GFC (FCDCBPTR) that has not been freed (RAFCURCHEK is * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 16 (REVISIONS) F 3 787 * now called before the use count is decremented). Moved * 788 * zero address check for RAFCURCHEK and UPDATEGFC into * 789 * the subroutines themselves (before, it was done by every * 790 * caller). Fixed ORSTRTBAT to set PCSPECPROC iff caller * 791 * is in monitor. This makes Manager.!!!:Boot.Batch, * 792 * Manager.Sys:Boot.Batch, and the Spooler special (also, * 793 * any concurrent sessions they might start). Fixed * 794 * OPRSTRTSPR to end by jumping to UERROR w/error code, * 795 * instead of jumping to NOERROR. * 796 * C8702b 15 Feb 87 * 797 * Removed redundant error code checks at PASS2CMO in * 798 * DISPATCH (now can jump directly to GIVEINT from within * 799 * PASS2CM). Added CMERRB and CMERR to UERPROT (user error * 800 * elements). CMERRB flag indicates error is to go straight * 801 * to CM. Saves code in dispatcher at PASSUP. Fixed up * 802 * UERRSET calls for the related errors (UINTVAR, UINTTDISC, * 803 * UINTOPRQ, and UINTATTACH). Fixed URSENDERR to mask off * 804 * CODEPART of code being sent. Before was just clearing * 805 * VERYBADB. * 806 * C8702c 16 Feb 87 * 807 * Reworked PUTINCHAR in CIAINUTIL. Input buffer overflow * 808 * now does not cause "break", because we queue a read * 809 * error element. Rearranged code because less needs to * 810 * be shared. Moved code in OCSTOREIN (still PUTINCHAR) * 811 * to save an instruction. * 812 * C8702d 18 Feb 87 * 813 * Merged in the NASSEMs for online disk formatting. * 814 * C8702e 19 Feb 87 * 815 * Change user virtual storage scheme so that we can * 816 * generate a user interrupt when free storage is getting * 817 * scarce. This required changes in the USERMEM page * 818 * definitions, the PSA/UPC error list root (RTUERRORZ), * 819 * DISPATCH, BLDPROCESS, and the user GETMEMs. It added * 820 * HALTS0072 and the OPREQ ORRESETVM. * 821 * C8702f 21 Feb 87 * 822 * Fix to OPEN share list checking. Was using wrong * 823 * window after SRCHDIR to get info for SHLCHKALL, when * 824 * DIR is RAF-type. Problem introduced in C8612b. * 825 * Fixed change in OPRSTARTBAT to use correct console area * 826 * pointer in determining PCSPECPROC. * 827 * C8702g 23 Feb 87 * 828 * Fixed UERRSET/UERRSETY to correctly mask error code * 829 * before duplicate-error LSRCH. Mask instruction used * 830 * 0FFFFFFFF for an operand (made it a NOP!). Allowed * 831 * duplicate errors causing various problems. Fixed * 832 * FRUNITID/FRUNITIE FREQs to use CPCUPCs CAINTMASK for * 833 * call to CHECKUINT. Was blanketly using CAIMNETERM and * 834 * CAIMNEPATH bits, now these are ANDed with user's mask. * 835 * C8702h 24 Feb 87 * 836 * Fixed up DISPATCH to dispense user interrupts more * 837 * smoothly. Removed UERHELD bit from UER element. Now, * 838 * CAINTENABL is turned off prior to moving to process * 839 * getting interrupt. Change sense of mask to CHECKNOINT. * 840 * Changed SOME (!) callers appropriately ... others * 841 * already had it backwards. Fixes problem of some user * 842 * interrupts not going away. Fixed URPSETREG UREQ to * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 17 (REVISIONS) F 3 843 * handle IAR/IMR changes correctly. * 844 * C8702i 25 Feb 87 * 845 * Changed FRSETCCB FREQ and URPSETREG UREQ to just change * 846 * the FLDADRS part of CAINTADR. This ensures UPR15 is * 847 * zero for other checks. * 848 * Replaced CMENTRY (initial CM PC) with CMODECA. CMODECA * 849 * is set from CCBPREGS in INITPROC. UERRCMMK uses it to * 850 * initialize R0:R7, IMR, IAR, and PC upon UINTLOGIN * 851 * interrupt. Allows CM to specify many initial registers. * 852 * C8702j 26 Feb 87 * 853 * Fixed ORDESAUTHE OPREQ to not do an extra FREEULB. * 854 * Was causing S00E0 halts if FERRORNSE was given (halts * 855 * in +MGRs FRCLOSE FREQ of .VOL, because FCLIMITPTR * 856 * was freed). Cleaned up exit code in PRESETAUTH. * 857 * Changed DISPATCH to hold off interrupts to CM if the * 858 * CAINTENABL flag is off and the error element has the * 859 * CMERRB flag set. This prevents overwriting CM's * 860 * register buffer with a second interrupt while it is * 861 * processing the first. * 862 * C8703a 02 Mar 87 * 863 * Added code in LIQUIDATE to remove unused UER elements * 864 * from the UPC. Renamed MAPVALUES to PSMAPVALS. Minor * 865 * cleanup to MAPINMEM. Moved USERMEM to the first of the * 866 * "user virtual" pages. These pages now allocated in * 867 * ascending, rather than descending, order (changes in * 868 * MAPINMEM and GETVPAGE). Minor cleanup in BLKLIMCHK. * 869 * C8703b 03 Mar 87 * 870 * Cleaned up the USERMEM definitions. Renamed PSAOWNER to * 871 * UMEMPSA, XTRAMEM to UMEMXTRA, and ULOCK to UMEMLOCK. * 872 * These locations are now BSSs in themselves, and are not * 873 * referenced as an offset from USERMEM. Minor cleanup to * 874 * BLDPROCESS. * 875 * C8703c 05 Mar 87 * 876 * Fixed ORCREACCT OPREQ to get the customer number right * 877 * when checking for foreign manager. Problem introduced * 878 * in C8610e. * 879 * Fixed LEVELBIT to: perform "foreign" check after assuring * 880 * requester is a MANAGER, not give foreign MANAGER.SYS * 881 * special power, not give "self" power to foreign account * 882 * accessing native account with same name, and correctly * 883 * check just the customer number to decide whether two * 884 * foreign accounts are from same place. * 885 * Added VOLN element symbol VOLNCUST to replace instances * 886 * of VOLNSSN/CUSTNUM. * 887 * Changed UERRSET and UERRSETY to put new element at end * 888 * of list. Ensures that normal errors are processed in * 889 * the order they were received. * 890 * C8703d 06 Mar 87 * 891 * File open modified to NOT increment the total read * 892 * count on backup open. * 893 * C8703e 18 Mar 87 * 894 * Fixed FRUNITIGET FREQ to store answer in user's R1, * 895 * instead of in TCCIAPORT (!). * 896 * Changes in MSPROC to avoid reading head retract * 897 * board if pack label info indicates no board present. * 898 * C8703f 19 Mar 87 * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 18 (REVISIONS) F 3 899 * Fix to BACKOUTRAF. Showed up when trying to expand * 900 * a RAF and received a disk full error. * 901 * C8703g 25 Mar 87 * 902 * Added XREQ error code XREQERUKP (0BC) -- * 903 * "Unknown parameter" * 904 * C8703h 26 Mar 87 * 905 * Fixed various AUTH list handling OPREQs to give * 906 * XREQERPOB if the specified volume name was all 0's. * 907 * Name=0 makes PRESETAUTH and GETAUTHN work differently, * 908 * so this keeps us from screwing up the AUTH list. * 909 * Fixed error recovery in OPRCAUT (ORCAUTHxx OPREQs) to * 910 * use correct register in GETAUTHN call. * 911 * Replaced store loop with CFILL in FREQSAVE. * 912 * Fix in BLKREADIN to get the right hash value for IDLE * 913 * pages. * 914 * 3.12 30 Mar 87 * 915 * Reassembled for Beta 22 release. * 916 * Fix to BLKREADIN to not destroy R1 when picking up * 917 * proper hash value. * 918 * Fixed ORMAINTW OPREQ to allow for new DA on block * 919 * (means changed check in MSPROCs WRITE DA error proc). * 920 * Added 8 bit filler in TCB (word w/TCBKSPC & TCPCADRS). * 921 * Fixed acceptable version of working 2K NVM SSU. * 922 * C8704a 07 Apr 87 * 923 * Fixed FRCATALOG FREQ window error recovery to actually * 924 * do the GRUBs (instructions were misplaced before the * 925 * label) (patched in 3.12-3). TCIQXOFFED moved to proper * 926 * section of TCB (patched in 3.12-1). * 927 * Minor cleanups to user interrupt processing in DISPATCH. * 928 * C8704b 30 Apr 87 * 929 * Cleaned up the loop in GPADTADDIT that moves MS addresses * 930 * from an ADT block to resident free list in VOLN. * 931 * Cleaned up ERRORLOG calling sequence in STATCHECK. * 932 * Cleaned up DISCARDPAL, DONEPPL, and FORCEWRWx. * 933 * Cleaned up ELPRESTART. * 934 * Fixed ORSTRTTERM OPREQ to use good PSA pointer for * 935 * in LOGONPROC calling sequence (patched in 3.12-1). * 936 * Removed left over jump table entry for ORFORMAT * 937 * in OPRQMAINTR (maintenance read OPREQs). XREQ * 938 * code had been changed from 0142 to 0152. * 939 * C8705a 18 May 87 * 940 * Changed SETWNDOx to STZ2 into VPWORDC (was STZ). * 941 * Fixed CANCELTMR calling sequence in MS_RESET to * 942 * include the PARL (patched in 3.12-2). * 943 * Remove unimplemented OPREQ code ORGCONFIG (0100, * 944 * get system configuration info) from VIRTDEFS. * 945 * Cleaned up exit code in FNDNONHOLE. * 946 * Cleaned up URDELAYx UREQs. * 947 * Fixed SAFREAD memory error handler to use PASSERRW1 to * 948 * prevent STOP0064 in later XREQ call (patched in 3.12-2). * 949 * Cleaned up PUTRECHEAD in SAF write code. * 950 * Changed SPLRTALK to include volume name in alias account * 951 * sent with OPEN requests. Will allow batch job initial * 952 * alias to go to shadow account (patched in 3.12-3). * 953 * C8705b xx May 87 * 954 * Cleaned up STRTMON routine (ORSTRTMON OPREQ). * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 19 (REVISIONS) F 3 955 * Changed CANCELTMR in MSPROC to save R4. Fixes * 956 * register eating in MS_RESET (patched in 3.12-2). * 957 * C8706a 11 Jun 87 * 958 * URSTATPI routine (URSESSINFO and ORSESSINFO XREQs) now * 959 * uses absolute INPUT for determining online/dialup/etc. * 960 * Also, session is dialup if this unit is a .NULL (i.e. * 961 * session is disconnected waiting for ATTACH). * 962 * C8706b xx Jun 87 * 963 * Removed unneeded LD instruction from OPRQINITVL routine. * 964 * Cleaned up SETUPDIR in XRQOPRRCVR. * 965 * Fixed OPRQINITND (ORINITEND OPREQ) to not FERRORDSE if * 966 * a disk error occurs on a block being freed after volume * 967 * is recovered (block stays out of ADT, tho). * 968 * Fixed OPRRCVRFL (ORRCVRFIL OPREQ) to ensure that unit is * 969 * .NULL (errors result if FDE/FCB have real MS addresses) * 970 * (patched in 3.12-3). * 971 * Misc minor cleanups in CIA routines. * 972 * Fix in echo of line kill character (3.12-4). * 973 * Fix in MAPOUTMEM to do the correct 4 locations (3.12-4). * 974 * Fixed ORMAINTR OPREQ to ensure free and swapping pages * 975 * don't stay in PPAGELIST or PPUSDIDLE (3.12-4). * 976 * Fixed RECOVERFDE (file recovery) to copy FDCUSE from * 977 * .NULL to recovered file's FDE. Prevents HALT S109B * 978 * if another user grabs file as .NULL, then second user * 979 * closes the file (3.12-4). * 980 * C8708 26 Aug 87 * 981 * Changed calling sequence to GETNXTBLK (used in * 982 * sequential RAF read code). Was leaving the stack * 983 * messed up if a disk error occurred when the mapped in * 984 * page was referenced outside the subroutine (3.12-4). * 985 * Removed conversion code in Mount and fixed system * 986 * serial number check (3.12-4). * 987 * Fixed INITDEVACS to free the GFC on RAF going from MW * 988 * to RW or RO access (3.12-4). * 989 * Fixed DOTIMING in CIADRIVER to pass FCB as subcode to * 990 * UINTTDISC interrupt. Subcode no longer has flag for * 991 * 'absolute I/O'. Moved FCABSIO to FCSTATSTAT area * 992 * so that static status will reflect this attribute. * 993 * (CM altered to use FRSTATUS FREQ instead of disconnect * 994 * subcode flag). Functionality patched in 3.12-4. * 995 * Added VOLNFOREN bit. Modified FINDULB to use same, * 996 * MOUNTNAME to set it, and changevol to re-set it. * 997 * Modified FINDULB to save a word on the stack. * 998 * Modified SRCHAFTIDX, DELAFTIDX, and callers to pass * 999 * the account name triple by a single address parameter. * 1000 * Modified ADDIDXAFT and callers to pass the account * 1001 * name triple by a single address parameter. * 1002 * Misc minor changes in XRQOPRAFTIDX. Moved IOFF in * 1003 * GRUBVPEL to enclose entire critical region (3.12-4). * 1004 * C8708a xx Aug 87 * 1005 * Created common exit for some FRASxxx FREQs. Space * 1006 * and speed mods to process name table manager, pak6 * 1007 * and character conversion routines, ORBUSYVOL request, * 1008 * ZAPAFT, GETIDXACS, and CHARTOP6. * 1009 * Eliminated DISMTDMY1 as a separate routine because it was * 1010 * only called from DISMTDUMMY. Modified calling sequence * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 20 (REVISIONS) F 3 1011 * to FBICKCKSUM and changed caller accordingly. Saves one * 1012 * MAPINMEM and MAPOUTMEM for each disk transfer. Fix to * 1013 * HOURINT to more accurately hit the hour in an unusual * 1014 * case. TSCAN macro and TSCANR routine eliminated. * 1015 * C8709 01 Sep 87 * 1016 * Fixed and cleaned up DIRINFOHD subroutine. Was not * 1017 * checking foreign flag on fake .DIRs, and was giving * 1018 * alias acct name and volume on .TERMs. * 1019 * Fixed ORCVOLNAME OPREQ to ensure new name is not null. * 1020 * C8709a 02 Sep 87 * 1021 * Fixed STRTSPLR to use URFREELUN to get unit number for * 1022 * SPLRBATCH file open. * 1023 * Changed OPRCVOLNAME OPREQ to use full blown CHECKSYM. * 1024 * C8709b 10 Sep 87 * 1025 * Changed MAKTRMSTAT to return the operand of the XREQ * 1026 * as the unit number rather than calling FINDUCE. * 1027 * Fixed OPEN to use file password for file share check. * 1028 * Was using acct pwd by mistake (3.12-5). * 1029 * Minor fixes to URLUNITS UREQ and DIRINFOHD. Info was * 1030 * not always consistent. * 1031 * C8709c xx Sep 87 * 1032 * Cleaned up STTERMTGRP to eliminate CALCTERMC call if * 1033 * absolute unit is not controlled by CPCUPC anyway. * 1034 * Minor mod to ?FREEMEM to only calculate buddy address * 1035 * in the path that uses it. Minor mods in clock driver * 1036 * regarding location of PFRC in TIMEADJUST and TIMEDRFT. * 1037 * Fix in LOOKUPBTRX in the disk driver to not clear a * 1038 * random page file location if BTRX list gave a disk * 1039 * error or FBI mismatch (3.12-5). Save and Rename * 1040 * changed to use FERRORISYR if they could not split a * 1041 * UDIR2 block because the UDIR1 was full. Fixed FRCATALOG * 1042 * to GRUB wndos 1 & 2 on a memory error, and FRREADSHL to * 1043 * return correct code for memory errors (3.12-5). * 1044 * FRCATALOG and FRREADSHL now share mem error handler. * 1045 * Minor cleanups to RAF WSEEK. * 1046 * C8711 03 Nov 87 * 1047 * Added STZ TCFCB and STZ PTHREADFCB to GULOCKHW (reader). * 1048 * Fixed URRCVUNIT UREQ to set PTHREADFCB and STW PTHINTE * 1049 * when FCACCESS=RO. Minor mods to subs process... removed * 1050 * unused instruction, re-organized logging code, and fixed * 1051 * unsubs for case where entry being removed is at extreme * 1052 * end of subs block. MAXPRIV shortened. Interlocked the * 1053 * RTSWITCHB bit in PSUERROR with PSLOCK (3.12-5). * 1054 * C8711a 23 Nov 87 * 1055 * Register usage changed in OPEN error code. Added S00E2 * 1056 * halt, freedir on already free directory (3.12-5). * 1057 * Changed MAPOUTFBI to consume no registers. * 1058 * Fixed GETFREEWx to return error code in R0 on error * 1059 * jump return. * 1060 * Minor fixes and changes to FROPEN code. * 1061 * Fixed DIR read and fetch catalog info to not attempt * 1062 * to free directory if memory protect during header * 1063 * return (3.12-5). * 1064 * Fixes to DIRSHRINK routine (3.12-5). Also reorganized * 1065 * the catalog/share list information request. * 1066 * Fix to OPRSTRTBAT so that error/not found returns from * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 21 (REVISIONS) F 3 1067 * SRCHDIR unlock directory. Also moved error code off * 1068 * the stack and into R7. * 1069 * Fix to recover file page to release directory on * 1070 * disk error, error return from call to TRAFDSE. * 1071 * Altered SRCHDIR to skip SETERRWx on a disk error * 1072 * where it had just grubbed the windows. Now returns * 1073 * error code in R0. Minor other reorganization and * 1074 * comment fixes. Minor moves in NAMEPACK to save * 1075 * space. Fixed GETFREEWx to not touch R4 at all. * 1076 * Trace calls added in MSPROC for calls to SUBSTITUTE. * 1077 * Removed temporary code in ULBTWIDDLE that ensured that * 1078 * a UDIR and its FBI had proper account serial numbers. * 1079 * Modified SHLCHECK and callers to eliminate the unused * 1080 * PWW (password wrong) return. OPEN modified to GRUB * 1081 * window 2 as soon as possible, removes code from error * 1082 * routines. Changes to share/unshare code to make * 1083 * better use of registers. * 1084 * Copious modifications to SRCHDIR, USVREM, BLKSPLIT, * 1085 * DIRXPAND,and DIRSHRINK to make all error returns with * 1086 * the directory freed and both windows grubbed. Mods * 1087 * to callers: FRQNOPEN, FRQWRRAF, FRQRDDIR, FRQCNTL, * 1088 * FRQRAFCNTL, FRQACSCHNG, FREQSAVE, FREQUSAVE, * 1089 * FREQUEQUIP, FREQRENAME, FREQCATINF, OPRSESSSTRT, * 1090 * XRQOPRBKUP, XRQOPRRCVR, and INITPROC. * 1091 * C8712 02 Dec 87 * 1092 * Moved UERRBMEM memory error handler in user interrupt * 1093 * part of DISPATCH (GETVIRTUAL) adjacent to the code it * 1094 * protects. * 1095 * Modified OPRQBKUPFL to give XREQERLNS when SRCHDIRSN * 1096 * no-finds (was XREQERDSE after being XREQERNSE). * 1097 * C8712a 05 Dec 87 * 1098 * Removed URGIVEUNIT's irrelevant check that the * 1099 * destination session is delaying for or trapping * 1100 * UINTGUNIT (3.12-6). Fixed URGIVEUNIT and GUUNLOCKHW * 1101 * to ensure that the correct FCB address is placed in * 1102 * the DCB. This also fixes the session starting requests * 1103 * that use GIVEUNIT, the PTHREADFCB wasn't being set at * 1104 * all (3.12-6). Fixed URRCVUNIT and PURGEGIFTU to * 1105 * DQUEONE all the sessions waiting to send more units * 1106 * (3.12-6). Fixed register eat in PURGEGIFTU, and * 1107 * fixed URGIVEUNIT to release PCNTLLOCK even when * 1108 * request suspends (3.12-5). * 1109 * C8712b 17 Dec 87 * 1110 * Made single LEAVE for RAF WSEEK. Fixed RAF WSEEK to * 1111 * not ULKWNDO2 after GETFREEW2ing a RAF minor, because * 1112 * the block is touched later and we can't afford a disk * 1113 * error. Tidied CKPVMU and FIXUPVAL. * 1114 * Combined duplicated code in INITDEVACS for PATHs. * 1115 * Fixed REALDEVICE so it actually uses the ULB (3.12-6). * 1116 * Fixed MODACS error recovery to use correct FDE * 1117 * and ULB pointers. Fixed MODACS to not clobber CKxxx * 1118 * codes through INITDEVACS call. Would cause use file * 1119 * use counts to be off (3.12-6). * 1120 * Modified the backup recover requests to keep the account * 1121 * and file entries more consistent (3.12-6) and fixed the * 1122 * error recovery specifically related to memory protect. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 22 (REVISIONS) F 3 1123 * C8712c 21 Dec 87 * 1124 * Revamped TIMESET code to use RLSLE2 instruction to save * 1125 * time. TMRLINK made into a full word so that list * 1126 * manipulations more often use base mode instead of ZBM. * 1127 * Added SHACCT call in LIQUIDATE to remove timer quantum. * 1128 * Allow .NULLs to be MW. Zeroed .LOCK entry in VERIFYTAB. * 1129 * Fixed MSPROC (CHECKSTATE) and MOUNT to give error if * 1130 * mount candidate drive is writeprotected (added MDVWPROT). * 1131 * Fixed PRESETAUTH to check ULB account names instead of * 1132 * ULB addresses to determine caller/victim equality. * 1133 * C8801a 11 Jan 88 * 1134 * Fixed OPEN to unsave a "file being destroyed" only if * 1135 * the FDSUN doesn't match the FILESUN. Also, this check * 1136 * is now made AFTER the WWC and use count checks (3.12-6). * 1137 * Fixed LOGXREQ and STOPXMON to interlock use of XHTABTAB * 1138 * (with new lock XHTABLCK). LOGXREQ was able to get pntr * 1139 * to free space, or a nil pointer from XHTABTAB. Minor * 1140 * cleanup to URSTATPI (URSESSINFO and ORSESSINFO XREQs). * 1141 * Changed CREATEDEV to DMOTEWNDO1 after GETFREEW1 for * 1142 * SAF and CODE (more straightforward than ULKWNDO1 and * 1143 * allowing subsequent subroutines to map over the window). * 1144 * Fixed FRTGETTCS to return the users currently active * 1145 * TCS for the console terminal (was always getting his * 1146 * user defined set). * 1147 * C8801b 12 Jan 88 * 1148 * Changed URDELAY ending code in ONCEASEC so that timed * 1149 * out session will not be put on the end of SQRUNNABLE * 1150 * (was having user reexecute URDELAY with delay=0 unless * 1151 * original wait mask included CAIMNETERM). * 1152 * Changed to URSTATPI: minor cleanups, fixed "disconnected * 1153 * terminal" check to exclude concurrent sessions. * 1154 * C8802a 19 Feb 88 * 1155 * Changed ORATTACH OPREQ to disallow attach to requester's * 1156 * concurrent session (wouldn't work because requester's * 1157 * logoff would force new session to logoff). Fix to * 1158 * recover account, ULB use count of managers account * 1159 * where authorization was coming from during selective * 1160 * backup was not getting decremented properly (3.12-6). * 1161 * Changed MINBLKLIM from 40 to 100 in BLKLIMCHK as an * 1162 * added margin of safety (were seeing C1200s because CM * 1163 * couldn't get logged on even though BLKLIMCHK passed). * 1164 * Reorganized code in OPEN that checks the SUN and FBD. * 1165 * This allowed the file being destroyed code to work * 1166 * because the windows contained the UDIR blocks and not * 1167 * leftovers from SHLCHKALL routine (3.12-6). * 1168 * Fixed the CIADRIVER SETUPWRIT code to ensure powerfail * 1169 * ints are disabled on exit (actually, moved PFAILEN to * 1170 * after terminal timing checks, so no PFAILDS needed by * 1171 * earlier exit, such as to SETNORM when TERMWBUSY=0). * 1172 * Saw S0007 halt at 80103 where a pfail int occurred * 1173 * while looking at UERs in DISPATCH (3.12-6). * 1174 * Modified code in recover file page to ensure that * 1175 * RAF index blocks had proper relative block numbers. * 1176 * Fixed URSESWCLK request to properly compute figures * 1177 * using single register instructions, double register * 1178 * instruction with BASE mode did not work properly. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 23 (REVISIONS) F 3 1179 * Changed Set Wall Clock Limit/Used to give error if * 1180 * new value to be set is negative. Changed OPRSTRTBAT * 1181 * and FREQCONCP to use symbols for unit numbers. * 1182 * Changed the disk driver to CLEARFAULT and REZERO after * 1183 * operation. New status added to MDV, MDVLOPSTATUS is * 1184 * the status after the last operation and not the * 1185 * status after any error recovery. * 1186 * C8802b xx Feb 88 * 1187 * The code in the disk driver that attributes some * 1188 * header errors to seek errors (i.e. being on the * 1189 * wrong cylinder) was modified so that the first * 1190 * header error was not treated as a seek error. * 1191 * Bug fix in BootUpdate to give back the free memory * 1192 * fetched for holding the FBI. * 1193 * C8803 09 Mar 88 * 1194 * Changed SWAPPMVS in INITIAL to clear the PFREFBIT * 1195 * before storing PMV into PFMAP (cleaner map). * 1196 * Changed ORATTACH to pass lower half of requester's * 1197 * R1 in the upper half of the subcode. * 1198 * C8803a xx Mar 88 * 1199 * Removed FRMODACSLK (00D1) because it was unimplemented. * 1200 * Changed ORBKCACCT to hand back XREQERILR if the user * 1201 * hasn't backup privilege (was giving XREQERPNS). * 1202 * In MSPROC, moved trace calls to after action initiation * 1203 * to save time. Minor change in calls to errorlogger. * 1204 * C8803b 24 Mar 88 * 1205 * Modified TSELECT to work with the BTI SMD to ESDI * 1206 * adaptor board (patched into 3.12-8 #5). * 1207 * Moved INC FFPROCS from SPROCSTART into DISPATCH to * 1208 * eliminate the timing window that allowed the count * 1209 * of active free filers to become incorrect (3.12-8). * 1210 * Eliminated FFBUSY word usages, because it is not kept * 1211 * in a way that was useful. The location remains as * 1212 * a space filler to make freefile match the template. * 1213 * Changed URRCVUNIT UREQ to return XREQERLAE instead * 1214 * of XREQERPOB when non-CM user uses 201 or 202. * 1215 * Removed def and code for URPSTOP UREQ. Was intended * 1216 * to become "stop another process", but this was done * 1217 * by ORPSTOP. Def had been commented out, code was * 1218 * just a jump to UERRORILR (now in table). * 1219 * C8804 29 Apr 88 * 1220 * Changed OPEN request to give XREQERBFN rather than * 1221 * XREQERFNF if the device type was needed, but was * 1222 * either not specified or not a defined type. * 1223 * C8805 09 May 88 * 1224 * Added the drive name to several ERRORFILE entries. * 1225 * C8805a 11 May 88 * 1226 * Fixed MS_RESET to really use the skip return when * 1227 * a drive timed out. Fixed CHECKBFD to use this. * 1228 * Before, no ERLCDSKTO errors could ever be recorded. * 1229 * Fixed DEADMAN to SETPPU3WRD only when PPU has recovered * 1230 * from illness (was doing iff a controller needed reset). * 1231 * Fixed POWERUP to force this SETPPU3WRD. * 1232 * C8805b 26 May 88 * 1233 * Made new ERRORFILE code ERLCRDGCS (reading check * 1234 * segment), and changed FIXSEGMENT to use it rather * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 24 (REVISIONS) F 3 1235 * than ERLCDE (because the entry is a notification). * 1236 * This replaces OPFIXSEG as a code to ERRORLOG, so the * 1237 * OPFIXSEG definition was removed. * 1238 * C8805c 30 May 88 * 1239 * Restored FRTGETTCS to return the users defined TCS for * 1240 * console TCS (see C8801a), because it is more useful. * 1241 * C8806 02 Jun 88 * 1242 * Added HALTS0102 to MS REMOUNT (matching VOLN HCB not 0). * 1243 * Fix in INITDEVACS when RAF changing access from /MW, * 1244 * if GFC block gets freed then the FCDCBPTR must get set * 1245 * to zero. * 1246 * C8806a xx Jun 88 * 1247 * Removed stack loc from INTREAD by using regs instead. * 1248 * Fixed MS READ to not rewrite or sub a block with a * 1249 * permanent read error. * 1250 * Fixed MS driver to not REMOUNT a pack that was mounted * 1251 * or otherwise altered somewhere else. Also prevents * 1252 * remount of wrong pack with same PLINITDATE. This added * 1253 * the SECMNTDAT to the security block, and changed * 1254 * VOLNFMTDAT to VOLNMNTDAT. * 1255 * C8807 xx Jul 88 * 1256 * Fixed URRCVUNIT to use correct register when setting * 1257 * TCFCB and TCINTE (recent bug : after CM ATTACH, the * 1258 * TCFCB was wrong, with bad results such as unrestored * 1259 * (0) TCTERMA). * 1260 * C8808 31 Aug 88 * 1261 * Fixed change in C8802a that disallowed negative values * 1262 * for wallclock and disk warn limits, to allow -1 (*Huge*). * 1263 * Added similar checks for super privileged sets of CPUU, * 1264 * CPUL, DISKL, and DISKS. Changed DELAFTIDX and SRCHAFTIDX * 1265 * to use CMSTR instead of CMS instruction. Also modified * 1266 * to GRUB window 1 on disk error. Fixed callers as * 1267 * appropriate, and fixed comments regarding window mapping. * 1268 * Added MAPOUTFBI to error path at GPADTSECE. * 1269 * Removed the forcewrite from the disk error path at * 1270 * FREEULB01. Changed DMOTE to GRUB in error path for * 1271 * REWRITE at FILEISAU. Modified LOCKDIR exit. * 1272 * Changed FREQs FRMODLBKU, FRMODLWD, FRMODLRD to share * 1273 * code. Also changes to body of the FRMOD*** requests * 1274 * to use an execute table rather than a jump table. * 1275 * Fixed ORINITVOL OPREQ to copy the MDVFMTDAT into the * 1276 * VOLNMNTDAT for the time the security blocks are being * 1277 * written (ensures volume can always remount). * 1278 * Fixed ORINITVOL to place dates into security block. * 1279 * (was using wrong window and placing them into the * 1280 * volume label). Other mods to ORINITVOL to not read * 1281 * the packs volume label (which we overlay anyway), * 1282 * removed an UNLKWNDO for a page that was subsequently * 1283 * forcewritten, and altered a few minor items for * 1284 * efficiency. * 1285 * C8809 12 Sep 88 * 1286 * Changed INPUTERR in CIAINUTIL to prevent multiple * 1287 * contiguous error elements in the input queue. Was * 1288 * allowing a bad port to eat up free memory with * 1289 * error elements (patched in 3.12-9 #6). * 1290 * Added ORRESETDRV OPREQ, with corresponding code in * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 25 (REVISIONS) F 3 1291 * DOREADREQ (request to reinitialize MDV after format). * 1292 * C8809a 20 Sep 88 * 1293 * Fixed error in TSELECT count of table entries. * 1294 * Added CANOPMSG to DISMNTDUMMY (mainly for maint vols * 1295 * that dropped offline and were closed). * 1296 * Added MDVNOLOG flag (using MDVNOERRS for this was * 1297 * preventing head checker error logging). * 1298 * Fixed CHECKHEADS to clear entire MDVERRWORD initially * 1299 * (was using leftover flags). * 1300 * C8809b 27 Sep 88 * 1301 * Changed FIXSEGMENT to do no retries, and READ to reread * 1302 * instead (STATCHECK now accumulates single seg errors in * 1303 * MDVDKERRS, limited by MDVDKERLIM). * 1304 * C8810 26 Oct 88 * 1305 * Moved process switch check closer to DOPSAERR in * 1306 * DISPATCH. Fixed WRITE subroutine in MSPROC to prevent a * 1307 * bad block from being put into the ADT. Fixed SUBSPROC * 1308 * to not do a substitution on a block being freed. * 1309 * C8811 16 Nov 88 * 1310 * Removed virtual monitor page checking from parity error * 1311 * routine, because all pages are now resident. * 1312 * Modifications to add new hardware type, VT. * 1313 * C8812 13 Dec 88 * 1314 * Fixed CHKBZYACS to disallow going from NA to RW on a * 1315 * PATH if someone has the PATH for MW. Moved SECMNTDAT * 1316 * to a more static area of the security block. * 1317 * C8812a 16 Dec 88 * 1318 * Changed resource locking to allow a full 32 bit resource * 1319 * number, however the maximum number of resource locks * 1320 * allowed per file has been reduced to 128. Note that the * 1321 * RCE element increased from 2 words to 4 words. * 1322 * C8901a 4 Jan 89 * 1323 * Allow no-data open of hardware device file that does * 1324 * not reside in system volume HARDWARE.SYS account. This * 1325 * is to grant backup (and others?) access to HARDWARE.SYS * 1326 * shadows. Fixed the URDELAY request to lock PSA * 1327 * EVENTLOCK during CHECKEVENT and shutdown into * 1328 * SQTIMEWAIT. Also used EVENTLOCK in GIVEUINT to * 1329 * coordinate when events are given to URDELAY requesters, * 1330 * should eliminate missing events. * 1331 * C8901b 14 Jan 89 * 1332 * Changed FRCONCP and ORSTARTBAT XREQs to return the * 1333 * process serial number of the new session's Control Mode * 1334 * in R1. This is so the spooler can have truly unique * 1335 * session ID for servers. * 1336 * Warning!! These requests previously did not eat R1. * 1337 * C8901c 18 Jan 89 * 1338 * Fixed the change SSN code to reset foreign volume flag * 1339 * only if the customer numbers do not match. * 1340 * Wrong register used in cancel operator message during * 1341 * volume dismount (DISMTDUMMY). * 1342 * C8901d 20 Jan 89 * 1343 * Fixes to LINKTERM, allow open of backup copies of .TERMS * 1344 * and also give no-data-access TCB linkup so we may fetch * 1345 * information on busy terminals. * 1346 * C8901e 30 Jan 89 * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 26 (REVISIONS) F 3 1347 * Fixed recover file to know about VTs. Fixed bug in out * 1348 * of bounds check. RC * 1349 * C8902a 01 Feb 89 * 1350 * Fixed the URFORCEP xreq to not set the FWIP bit, also * 1351 * not to suspend if page not dirty or write not pending. * 1352 * Removed UPDATEPAGE and FORCEPAGE routines. * 1353 * C8902b 02 Feb 89 * 1354 * Fix to prevent system halt if memory protect violation * 1355 * during register saving interrupt processing for user * 1356 * process. Need halt only if memory protect for Control * 1357 * Mode. Fix to STATCHECK in MS driver at label SEGERROR * 1358 * to not munch the segment number in R0, caused halt S0105. * 1359 * C8903a 09 Mar 89 * 1360 * Fix to CHECKCIA in DEADMAN, set R0 to one after ERRORLOG * 1361 * to indicate PPU was alive. CIA_RESET looked at R0 to * 1362 * determine if reset should happen. This instruction was * 1363 * inadvertantly removed in C8805a. * 1364 * C8903b 10 Mar 89 * 1365 * Added code to DONEPPL to decrement the volume busy * 1366 * counter if the block was to go into the ADT, but * 1367 * abandoned due to disk error. Removed the VPERRGIVEN * 1368 * bit (RC). Fixed vanish request to not dismount * 1369 * maintanence mounted volumes, these volumes should get * 1370 * dismounted when the units opened to the .VOLs get * 1371 * closed. * 1372 * C8903c 21 Mar 89 * 1373 * Mods to tape driver MT_RESET to give a little * 1374 * more time after a PPURESET. * 1375 * C8903d 28 Mar 89 * 1376 * Changed tape driver to perform NO retries for type * 1377 * VT. Made retry count for each tape operation more * 1378 * consistent. * 1379 * C8904 01 Apr 89 * 1380 * Added PPUITOUT (time out) bit to PPU status. Added * 1381 * checks in I/O drivers. * 1382 * C8904a 05 Apr 89 * 1383 * Removed 'any error' check from TapeFunc in the * 1384 * tape driver. This was added in December, but * 1385 * should not have been. * 1386 * Fixed GIVEUNIT to have the correct users memory * 1387 * mapped in when looking at FCB just given away. * 1388 * C8904b xx Apr 89 * 1389 * Request To Logoff error now returns underprocess * 1390 * serial number as subcode. * 1391 * C8904c 20 Apr 89 * 1392 * Fix in SRCHDIR to restore ULB pointer before call to * 1393 * FREEULB in disk error recovery. * 1394 * C8905 02 May 89 * 1395 * Added interrupt enable bit (BFDINTBIT) to the read check * 1396 * segment operation. The system was not receiving an end * 1397 * of operation interrupt, the funny thing is that 3.12 * 1398 * system appears to work fine. Increased timeout value * 1399 * for VT WFM. * 1400 * C8905a 30 May 89 * 1401 * Fixed Remote Port Startup code to pass acceptable * 1402 * initial entry code to Control Mode. Modified PPUREV3MSK * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 27 (REVISIONS) F 3 1403 * to indicate that even revs are capable of triple word * 1404 * store, odd revs not. * 1405 * C8906a 15 Jun 89 * 1406 * Fix to tape driver to fetch the MTUTYPE during the call * 1407 * of TAPEFUNC. Any retry was screwing up the type in R1 * 1408 * and causing S0000 system halt. * 1409 * C8906b 16 Jun 89 * 1410 * Fix to OPEN code to restore EQT pointer following * 1411 * destroying a file marked FBD. * 1412 * C8907 25 Jul 89 * 1413 * Fix in DIOSETUP to properly return memory protect error * 1414 * codes. Fix in GIVEUNIT to ensure that MAPINMEM is called * 1415 * while interrupts are still off. GU*LOCKHW routines * 1416 * fixed to include table entry for VT. MT read code * 1417 * altered to send read buffer length to controller. RC * 1418 * C8907a 25 Jul 89 * 1419 * Fix to the disk head checker to ignore substituted * 1420 * blocks, this caused DA mismatch errors. * 1421 * C8908 02 Aug 89 * 1422 * Removed the WSXCLNALL for all pages if the file type was * 1423 * a .VOL, this was moved into DESTROYDEV. Added WSXCLNALL * 1424 * to FREEULB iff the ULB is being dissolved. Should prevent* 1425 * halts where pages still exists for dismounted volumes. * 1426 * C8909 26 Sep 89 * 1427 * Fix in OPRQRCVACL to correctly leave a partially * 1428 * recovered authlist during any kind of manager * 1429 * insufficient authorization. * 1430 * C8910 xx Oct 89 * 1431 * Changed the S001A, C1200, and C1215 STOPs to HALTs. * 1432 * C8910a 25 Oct 89 * 1433 * Invoked FILESTAT macro and removed separate definitions. * 1434 * C8911 xx Nov 89 * 1435 * Added call to FREECHECK in HAVEPPU to fix possibility * 1436 * of not enought memory to finish configuring the system. * 1437 * C8911a 02 Nov 89 * 1438 * Changed FREQUSHARE to allow requesting complete * 1439 * elimination of share list. CG * 1440 * C8911b 03 Nov 89 * 1441 * Fix in HAVEPPU to save and restore PPU element pointer * 1442 * between calls to FREECHECK. * 1443 * C8911c 30 Nov 89 * 1444 * Fix to the ORRCVRACTL request to not hang in DIRWAIT if * 1445 * recovering a managers account that does not currently * 1446 * exist. * 1447 * C8912 04 Dec 89 * 1448 * Added a bound to the loop in TSELECT. CG * 1449 * C8912a 12 Dec 89 * 1450 * Added a new entry into the Xreq error processing block * 1451 * (FERROR3FCB) for use when FCB is defined but the unit * 1452 * number is not the Xreq operand. * 1453 * Added a bit to FBIFLAGS saying that this block has * 1454 * been rewritten by the disk driver. Modified the driver * 1455 * to substitute a block if this bit is already set when * 1456 * a rewrite request is made the bit is cleared in the * 1457 * FBI of the new block. * 1458 * Added ORMAINTRSUB to do a maintenance read and * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 28 (REVISIONS) F 3 1459 * substitute the block. CG * 1460 * C8912b 19 Dec 89 * 1461 * Fixed WSEEK to put correct relative block number in * 1462 * RAF minor access blocks. RC * 1463 * C8912c 20 Dec 89 * 1464 * 8912c was a version with changes to disk driver * 1465 * scheduling, which was completely removed shortly after * 1466 * being added. CG * 1467 * C8912d 31 Dec 89 * 1468 * Changed PACKITEM to stop packing after encountering * 1469 * an initial number (123.abc stops, pointing at the * 1470 * period). Changed PACKFS to give an error if the item * 1471 * following a colon is a number. CG * 1472 * C9001 02 Jan 90 * 1473 * Changed PUTINCHAR to reset a current XON state on a * 1474 * port upon receipt of a break. Changed INITDEVACS to * 1475 * position a cartridge tape to track 0. (Note: this * 1476 * added a call to MTCHKWFM which seems proper, although * 1477 * file marks were somehow getting there before.) * 1478 * Allowed FRRAFCPOS to inquire as to currently selected * 1479 * track on a CT. CG * 1480 * C9001a xx Jan 90 * 1481 * Fixed set output baud rate executive request to * 1482 * correctly return the old rate upon a successful * 1483 * completion. * 1484 * C9002 01 Feb 90 * 1485 * Removed the change (C8912d) to symbol packing, was * 1486 * causing backward compatibility problems. CG * 1487 * C9002a 09 Feb 90 * 1488 * Changed the zero meaning 'current time' to a minus * 1489 * one in FRMODLRD,FRMODLWD,FRMODLBKUP. CG * 1490 * C9002b 27 Feb 90 * 1491 * Discovered that the FBINOREWRIT bit was defined * 1492 * incorrectly. Fortunately it landed on FBIERRD which * 1493 * is not used. Revised FBIFLAGS to get it right. * 1494 * Defined a subfield FBIDEFFLAGS which consists of the * 1495 * flag bits that DISKCOPY can legitimately check the * 1496 * value of. CG * 1497 * C9003 01 Mar 90 * 1498 * Changed SAFENDFIX (fixes up some garbage when a file * 1499 * recovery does not finish) to set the backward link * 1500 * on the last file block. Changed DSTRYDEV to check * 1501 * for empty CODE as well as empty RAF. CODE can be * 1502 * empty if a file recovery did not complete. CG * 1503 * C9003a 25 Mar 90 * 1504 * Changed definition of DiskToTape group of halt codes * 1505 * to Offline Utility halts. CG * 1506 * C9003b 29 Mar 90 * 1507 * In CLOSEUNIT, if SAFENDFIX is called, the directory * 1508 * window(s) need to be reestablished. In SAFENDFIX, * 1509 * zero FCB,FCMABLK so the file no longer looks like it * 1510 * is in the middle of a recovery. CG * 1511 * C9004 09 Apr 90 ( Release 12C ) * 1512 * Fixed MT_RESET to ensure the MTSTDSC was set to * 1513 * force PROC_INT to recognize current status on boot. * 1514 * C9005 24 May 90 * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 29 (REVISIONS) F 3 1515 * Added a check in STATCHECK for a weird case of a write * 1516 * setting the time code error bit but no others. Nobody * 1517 * knows how this happens, but when it did it was falling * 1518 * through to the rewrite code and the problem was * 1519 * persisting. Now causes a substitution. CG * 1520 * C9006 24 Jun 90 * 1521 * Fixed code in RECOVERFDE to correctly set the end * 1522 * position pointers for both SAFs and RAFs, was just * 1523 * setting them to zero. * 1524 * C9007 09 Jul 90 * 1525 * Expanded top boundary of user limits block to include the * 1526 * restriction word in the UDIR. Changed directory reading * 1527 * to see if the target directory has catalog reading * 1528 * restricted and if so, then check whether the requester * 1529 * has an override. Added URPROCLVL and URDROPPRIV. * 1530 * Implemented restriction group 3 (account attribute * 1531 * changing). CG * 1532 * C9008 09 Aug 90 * 1533 * Removed DIRACSLOCK and DIRLRAF from the DIRINFORD * 1534 * structure. CG * 1535 * C9010 19 Oct 90 * 1536 * Added jump instruction to take care of memory parity * 1537 * error return for call to DISKWRITE in the routine * 1538 * DOREWRITE. Fix in PRESETAUTH routine to zero ULB * 1539 * register (R4) if division project manager did not have * 1540 * proper authorization. Prevented ULB from being freed * 1541 * twice (patched C9004-1). * 1542 * C9011 12 Nov 90 * 1543 * Fix to DIOSETUP to turn off interrupts during page * 1544 * searching and locking operation. Suspect that S1300 * 1545 * halt resulted from being interrupted from this routine * 1546 * (patched C9004-2). * 1547 * C9103 27 Mar 91 * 1548 * Fixes in Re-Mount code in MSPROC (included in patch * 1549 * C9004-3). * 1550 * C9105 17 May 91 * 1551 * Fix in READ at DOREWRITE where test to see if block had * 1552 * already been rewritten was backwards. Changed instruction* 1553 * JNEZ R2 DOTHESUB -> JEQZ R2 DOTHESUB. * 1554 * (included in patch C9004-3). * 1555 * Changed timeout value for a MT rewind from 0 to 48 ticks, * 1556 * this was done for the SCSI 9-track. Made some additional * 1557 * changes to DOREWIND in the MT driver to fix a bug * 1558 * introduced by changing the timeout value from 0 to 48. * 1559 * C9105a 23 May 91 * 1560 * Mods to TRACE routines to include time. RC * 1561 * C9107 25 Jul 91 * 1562 * PATCHPROC modified by moving PLOCK to where destroying R0 * 1563 * will not cause a problem (bus error, seen in house). RC * 1564 * (included in patch C9004-3). * 1565 * Changes made to integrate the SCSI files to reduce the * 1566 * number of different files for each OS version. * 1567 * C9203 04 Mar 92 * 1568 * Changed some of the BFD symbols names to the more * 1569 * generic MSC (mass storage controller) names. * 1570 * C9203a 30 Mar 92 * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 30 (REVISIONS) F 3 1571 * Shortened the patch area to ensure enough free storage to * 1572 * do the SSU configuration (HAVESSU) in INITIAL if all of * 1573 * the memory is in higher slots, such as for a manufacturing* 1574 * test (included in patch C9004-3 and S9202-1). RC * 1575 * C9207 23 Jul 92 * 1576 * Changes in MAKETRAF to prevent freeing a random block * 1577 * (actually 3F8F) on out of disk space error. Mods in * 1578 * PFPROC to restore disk space totals after getting an * 1579 * out of disk space error on a swapping page. * 1580 * (included in patch C9004-4 and S9202-1). RC * 1581 * PSXTRACA eliminated in favor of having a single CA/STACK * 1582 * per CPU (new variable on base page CPXTRACA). * 1583 * (patch in C9004-5 for this effect). RC * 1584 * C9209 30 Sep 92 * 1585 * Bug fixed in LOGOFF for case where ULSCRDSK goes negative.* 1586 * (patched in C9004-5) RC * 1587 * C9303 18 Mar 93 * 1588 * Bug fixed in UNDOPATH to properly restore interrupt * 1589 * level counter. (patch C9004-6) RC * 1590 * * 1591 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 31 (REVISIONS) F 3 1593 3DB03E00 ABS 1594 ASSYTIME EQU 03DB03E00 time of the system assembly 1595 * . 1 count here = 4 seconds 1596 * . 10 count here = 1 minute + 5 1597 * . 100 count here = 17 minutes + 28 1598 * .1000 count here = 4 hours + 39 min + 37 1599 * 10000 count here = 3 days + 1 hour + 14 min 43393330 ABS 1600 REVNAMEH EQU "C930" revision number of this assembly 33202020 ABS 1601 REVNAMEL EQU "3 " second part of revision number 5 6 START INITIAL starting point for first CPU 7 START2 SUCKERS starting point for everyone else 8 INPUT ASCIITABLE table of ascii character definitions 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 32 (ASCIITABLE) F 4 ASCII character table 3 4 ********************************************************************************** 5 * * 6 * OCT HEX DEC CHR OCT HEX DEC CHR OCT HEX DEC CHR OCT HEX DEC CHR * 7 * * 8 * 000 00 0 NUL 040 20 32 SP 100 40 64 @ 140 60 96 ` * 9 * 001 01 1 SOH 041 21 33 ! 101 41 65 A 141 61 97 a * 10 * 002 02 2 STX 042 22 34 " 102 42 66 B 142 62 98 b * 11 * 003 03 3 ETX 043 23 35 # 103 43 67 C 143 63 99 c * 12 * 004 04 4 EOT 044 24 36 $ 104 44 68 D 144 64 100 d * 13 * 005 05 5 ENQ 045 25 37 % 105 45 69 E 145 65 101 e * 14 * 006 06 6 ACK 046 26 38 & 106 46 70 F 146 66 102 f * 15 * 007 07 7 BEL 047 27 39 ' 107 47 71 G 147 67 103 g * 16 * 010 08 8 BS 050 28 40 ( 110 48 72 H 150 68 104 h * 17 * 011 09 9 HT 051 29 41 ) 111 49 73 I 151 69 105 i * 18 * 012 0A 10 LF 052 2A 42 * 112 4A 74 J 152 6A 106 j * 19 * 013 0B 11 VT 053 2B 43 + 113 4B 75 K 153 6B 107 k * 20 * 014 0C 12 FF 054 2C 44 , 114 4C 76 L 154 6C 108 l * 21 * 015 0D 13 CR 055 2D 45 - 115 4D 77 M 155 6D 109 m * 22 * 016 0E 14 SO 056 2E 46 . 116 4E 78 N 156 6E 110 n * 23 * 017 0F 15 SI 057 2F 47 / 117 4F 79 O 157 6F 111 o * 24 * 020 10 16 DLE 060 30 48 0 120 50 80 P 160 70 112 p * 25 * 021 11 17 DC1 061 31 49 1 121 51 81 Q 161 71 113 q * 26 * 022 12 18 DC2 062 32 50 2 122 52 82 R 162 72 114 r * 27 * 023 13 19 DC3 063 33 51 3 123 53 83 S 163 73 115 s * 28 * 024 14 20 DC4 064 34 52 4 124 54 84 T 164 74 116 t * 29 * 025 15 21 NAK 065 35 53 5 125 55 85 U 165 75 117 u * 30 * 026 16 22 SYN 066 36 54 6 126 56 86 V 166 76 118 v * 31 * 027 17 23 ETB 067 37 55 7 127 57 87 W 167 77 119 w * 32 * 030 18 24 CAN 070 38 56 8 130 58 88 X 170 78 120 x * 33 * 031 19 25 EM 071 39 57 9 131 59 89 Y 171 79 121 y * 34 * 032 1A 26 SUB 072 3A 58 : 132 5A 90 Z 172 7A 122 z * 35 * 033 1B 27 ESC 073 3B 59 SEMI 133 5B 91 [ 173 7B 123 { * 36 * 034 1C 28 FS 074 3C 60 < 134 5C 92 \ 174 7C 124 | * 37 * 035 1D 29 GS 075 3D 61 = 135 5D 93 ] 175 7D 125 } * 38 * 036 1E 30 RS 076 3E 62 > 136 5E 94 ^ 176 7E 126 ~ * 39 * 037 1F 31 US 077 3F 63 ? 137 5F 95 _ 177 7F 127 DEL * 40 * * 41 ********************************************************************************** 42 00000008 ABS 43 BS EQU 008 backspace 00000009 ABS 44 HT EQU 009 horizontal tab 0000000A ABS 45 LF EQU 00A line feed 0000000C ABS 46 FF EQU 00C form feed 0000000D ABS 47 CR EQU 00D carriage return 00000011 ABS 48 XON EQU 011 XON 00000013 ABS 49 XOFF EQU 013 XOFF 00000017 ABS 50 ETB EQU 017 control-W 00000018 ABS 51 CAN EQU 018 line cancel 0000007F ABS 52 DEL EQU 07F delete 10 INPUT MACRODEFS definitions of system macros 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 33 (MACRODEFS) F 5 Macro Definitions 4 5 ********************************************************************************** 6 * * 7 * List locking and unlocking macros. Note that the * 8 * LOCKWAIT routine is carefully constructed to be used with * 9 * the PLOCK macro, so excercise caution. Call: * 10 * * 11 * PLOCK lockword (gets R0, condition bits, * 12 ** and turns off interrupts) * 13 * PUNLOCK lockword (turns on ints) * 14 * * 15 ********************************************************************************** 16 17 PLOCK MACRO 18 $L IOFF 19 SETT $P 20 JNE MA(2+DISPW MA 0) 21 CALLNP LOCKWAIT 22 EMAC 23 24 PUNLOCK MACRO 25 $L STZ $P 26 ION 27 EMAC 28 29 ********************************************************************************** 30 * * 31 * The following macro will get the stack pointer to the * 32 * top of the stack associated with the current console area. * 33 * * 34 ********************************************************************************** 35 36 SETSP MACRO 37 $L STCAR SP 38 LD SP SP,CASTACKPTR 39 LD SP SP+(2 POWER STAKLOG) 40 EMAC 41 42 43 44 ********************************************************************************** 45 * * 46 * The following macro will do an interlocked SETT on a * 47 * 1-bit ZBM field. It destroys R0. * 48 * Usage: " SETTBIT reg,field " (the register is required). * 49 * * 50 ********************************************************************************** 51 52 SETTBIT MACRO 53 $L LD R0 1*BIT((($(1),$(2)) DISP ($(1),0))/BITS 0:4) 54 IORM R0 $(1),((($(1),$(2)) DISP ($(1),0))/BITS 15:31) 55 EMAC 56 57 58 ********************************************************************************** 59 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 34 (MACRODEFS) F 5 Macro Definitions 60 * The following macro will do an interlocked clear on a * 61 * 1-bit ZBM field. It destroys R0. * 62 * Usage: " CLRTBIT reg,field " (the register is required). * 63 * * 64 ********************************************************************************** 65 66 CLRTBIT MACRO 67 $L LD R0 1*BIT((($(1),$(2)) DISP ($(1),0))/BITS 0:4) 68 BRSBM R0 $(1),((($(1),$(2)) DISP ($(1),0))/BITS 15:31) 69 EMAC 70 71 * If you believe this, wait 'till you see what I come up 72 * with next month! 73 74 75 ********************************************************************************** 76 * * 77 * The following macro will cause an event to be entered * 78 * into the system trace table, if tracing is active. There * 79 * are 32 different classes of trace events (numbered 0-31), * 80 * and you can specify a unique 5 bit event id. When a user * 81 * activates tracing, he can specify which of the different * 82 * event classes he wants traced. * 83 * Usage: " TRACE , " * 84 * * 85 ********************************************************************************** 86 87 TRACE MACRO 88 $L XCT TRACECALL($(1)) 89 NOP ($(1)*BITS 22:26)+($(2)*BITS 27:31) 90 EMAC 91 92 93 ********************************************************************************** 94 * * 95 * The following macro will define the beginning of a * 96 * stack frame. It is intended for use with ENDFRAME. We will * 97 * automatically generate a BSS 1 for the return link word. * 98 * * 99 ********************************************************************************** 100 101 NOLIST CREF 102 BEGFRAME MACRO 103 NOLIST 104 NOLIST CREF 105 NOSYMS 106 ZZ!FRAME BASE SP beginning of stack frame 107 SYMS 108 BSS 1 space for return link 109 LIST CREF 110 LIST 111 EMAC 112 LIST CREF 113 114 115 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 35 (MACRODEFS) F 5 Macro Definitions 116 * * 117 * The following macro is just like BEGFRAME except that * 118 * it does NOT generate a BSS 1 for the return link word. * 119 * * 120 ********************************************************************************** 121 122 BEGFRAME2 MACRO 123 NOLIST 124 NOLIST CREF 125 NOSYMS 126 ZZ!FRAME BASE SP beginning of stack frame 127 SYMS 128 LIST CREF 129 LIST 130 EMAC 131 132 133 ********************************************************************************** 134 * * 135 * The following macro will define the end of a stack * 136 * frame. It is intended for use with BEGFRAME. We will * 137 * define labels called PUSH and POP for use as operands of * 138 * ENTER and LEAVE instructions. This pair of macros can only * 139 * be used once per block. Note that this precludes their use * 140 * in an inner block! * 141 * * 142 ********************************************************************************** 143 144 NOLIST CREF 145 ENDFRAME MACRO 146 NOLIST 147 NOLIST CREF 148 DRCT 149 ZZ!LEN EQU DISPW ZZ!FRAME 150 PUSH EQU STAK SP,ZZ!LEN 151 POP EQU PUSH 152 ORG ZZ!FRAME 153 LIST CREF 154 LIST 155 EMAC 156 LIST CREF 157 158 159 ********************************************************************************** 160 * * 161 * PFAILEN - Enable Power-Fail Interrupt * 162 * This macro will set the power-fail restart address and * 163 * enable power-fail interrupts. Usage: * 164 * * 165 * PFAILEN location * 166 * * 167 ********************************************************************************** 168 169 170 PFAILEN MACRO 171 $L LD R0 ADR $(1) 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 36 (MACRODEFS) F 5 Macro Definitions 172 ST R0 POWERUPLOC 173 IORMSR MSRPFINTE 174 EMAC 175 176 177 ********************************************************************************** 178 * * 179 * PFAILDS - Disable Power-Fail Interrupt * 180 * This macro will disable power-fail interrupts and * 181 * clear the power-fail restart address. * 182 * * 183 ********************************************************************************** 184 185 PFAILDS MACRO 186 $L CLBMSR MSRPFINTE 187 STZ POWERUPLOC 188 EMAC 189 190 191 ********************************************************************************** 192 * * 193 * PFAILCHK - Check for power failure * 194 * This macro will allow a power-fail interrupt to occur * 195 * if one is pending, control returns to the specified address * 196 * if a power-fail interrupt just occurred or if a power-fail * 197 * restart is in progress. Usage: * 198 * * 199 * PFAILCHK location * 200 * * 201 ********************************************************************************** 202 203 PFAILCHK MACRO 204 $L CMZ POWERFLAG power-fail restart in progress? 205 JNE $(1) jump if so 206 PFAILEN $(1) else allow interrupt 207 PFAILDS then disallow interrupt 208 EMAC 209 210 211 ********************************************************************************** 212 * * 213 * ASSERTEQ - Make sure two labels are equal * 214 * This macro will generate an assembly-time error if the * 215 * given expressions are not equal. Usage: * 216 * * 217 * ASSERTEQ expr1,expr2 * 218 * * 219 ********************************************************************************** 220 221 ASSERTEQ MACRO 222 BSS $(1)-$(2) error if $(1) < $(2) 223 BSS $(2)-$(1) error if $(2) < $(1) 224 EMAC 11 INPUT MACHDEFS machine parameter definitions 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 37 (MACHDEFS) F 6 Machine Definitions 4 5 ********************************************************************************** 6 * * 7 * MACHINE DEFINITIONS * 8 * * 9 ********************************************************************************** 10 00000000 11 ZERO EQU MA 0 BEGINNING OF MONITOR MAIN MEMORY 00000000 12 PWRUPADDR EQU ZERO address for Power Fail Restart Code 13 00000000 ABS 14 STORE EQU 0 marker for pre-initialized variables FFFFFFFF ABS 15 ONEBITS EQU 0FFFFFFFF 00000010 BYTE 16 LOCKBITB EQU BIT 0 this bit indicates a list is locked 80000000 ABS 17 LOCKBIT EQU 1*LOCKBITB 18 19 ********************************************************************************** 20 * * 21 * Size information for various entities. * 22 * * 23 ********************************************************************************** 24 00000020 ABS 25 WORDLNTH EQU 32 BITS PER MACHINE WORD 00000011 ABS 26 ADDRESS EQU 17 BITS IN AN ADDRESS 00000810 BYTE 27 STPNLAST EQU BIT 4 bit in R7 for NOT last PAR/STP 00000A10 BYTE 28 STPVALUE EQU BIT 5 bit in R7 for value PAR/STP 00000C10 BYTE 29 STPDUBL EQU BIT 6 bit in R7 for double word PAR/STP 00000018 ABS 30 MSBLKLOG EQU 24 length of mass storage relative address 00000004 ABS 31 CPW EQU 4 number of characters in a word 00000400 ABS 32 WPP EQU 1024 number of words on a page 0000000A ABS 33 LWPP EQU WPP LOG 2 log of page size 00001000 ABS 34 CPP EQU WPP*CPW number of characters on a page 00001C10 BYTE 35 FLDRELOCB BIT (WORDLNTH-ADDRESS-1) xtra addr bit to flip reloc sense 00001F10 BYTE 36 FLDADRS BITS (WORDLNTH-ADDRESS):(WORDLNTH-1) address field 00001E70 BYTE 37 FLDPAGE BITS (WORDLNTH-ADDRESS):(WORDLNTH-LWPP-1) virt. page # field 000000F0 BYTE 38 UPR15 EQU BITS 0:(WORDLNTH-ADDRESS-1) non-address part of word 00001450 BYTE 39 FLDMODE EQU BITS 10:14 pointer mode field 00001560 BYTE 40 FLDMODEADR EQU FLDMODE+FLDADRS mode and address part of opcode 00001F30 BYTE 41 FLDCHARS EQU BITS 15:1 character address field 00001F60 BYTE 42 FLDBITS EQU BITS 15:4 bit address field 00000080 BYTE 43 CH0 EQU BITS 0:7 character zero 00001080 BYTE 44 CH1 EQU BITS 8:15 character one 00002080 BYTE 45 CH2 EQU BITS 16:23 character two 00003080 BYTE 46 CH3 EQU BITS 24:31 character three 00000010 ABS 47 NUMSLOTS EQU 16 number of bus slots 00000004 ABS 48 LOGSLOTS EQU NUMSLOTS LOG 2 size of a slot number field 49 50 * Monitor status register bit definitions 51 00000080 BYTE 52 MSRRSTRT EQU BITS 0:7 instruction restart code 53 00001E10 BYTE 54 MSRMPEPRCB EQU BIT 15 indicates processing memory parity error 55 00002040 BYTE 56 MSRINTCNT EQU BITS 16:19 interrupt level counter 57 00002810 BYTE 58 MSRPFINTEB EQU BIT 20 power fail interrupt enable 59 * if 1, PF interrupts allowed, 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 38 (MACHDEFS) F 6 Machine Definitions 60 * if 0, PF ints controlled by MSRINTCNT. 00002A10 BYTE 61 MSRIAPRB EQU BIT 21 associated processor interrupt pending 00002C10 BYTE 62 MSRTRACEIB EQU BIT 22 interrupt after instruction step 00002E10 BYTE 63 MSRMONB EQU BIT 23 on if monitor instructions okay 64 * relocation bits: 65 * 1 sez use monitor half of page file 66 * 0 sez use user half of page file 00003010 BYTE 67 MSRSRELOCB EQU BIT 24 operand store 00003210 BYTE 68 MSRFRELOCB EQU BIT 25 operand fetch 00003410 BYTE 69 MSRPRELOCB EQU BIT 26 pointer relocation 00003610 BYTE 70 MSRIRELOCB EQU BIT 27 instruction fetch 71 00003840 BYTE 72 MSRSLOT EQU BITS 28:31 bus slot of processor 73 * values used in changing MSR 00000100 ABS 74 MSRMON EQU 1*MSRMONB 00000800 ABS 75 MSRPFINTE EQU 1*MSRPFINTEB 00000080 ABS 76 MSRSRELOC EQU 1*MSRSRELOCB 00000040 ABS 77 MSRFRELOC EQU 1*MSRFRELOCB 00000020 ABS 78 MSRPRELOC EQU 1*MSRPRELOCB 00000010 ABS 79 MSRIRELOC EQU 1*MSRIRELOCB 80 0000F000 ABS 81 INTSON EQU ONEBITS/MSRINTCNT*MSRINTCNT 0000E000 ABS 82 INTSOFF EQU ((ONEBITS/MSRINTCNT)-1)*MSRINTCNT 0000F000 ABS 83 USERMSR EQU INTSON 000001F0 ABS 84 MSRFORMON EQU MSRMON+MSRSRELOC+MSRFRELOC+MSRPRELOC+MSRIRELOC 0000F1F0 ABS 85 MONMSR EQU INTSON+MSRFORMON 0000E1F0 ABS 86 MONMSRIOFF EQU INTSOFF+MSRFORMON Used by offline stuff 87 88 * Process Status Register bit definitions 89 00002C10 BYTE 90 PSRBCDOTRP EQU BIT 22 BCD overflow trap enable 00003010 BYTE 91 PSRFIXATRP EQU BIT 24 fixed point arith error trapbit 00003210 BYTE 92 PSRFLTATRP EQU BIT 25 floating point arith error trapbit 00003410 BYTE 93 PSRUNDETRP EQU BIT 26 undefined number arith error trapbit 00003610 BYTE 94 PSRMODIFB EQU BIT 27 modify arithmetic 00003810 BYTE 95 PSROVERFB EQU BIT 28 arithmetic overflow 00003A10 BYTE 96 PSRCARRYB EQU BIT 29 arithmetic carry 00003C20 BYTE 97 PSRCONDB EQU BITS 30:31 condition bits (30-EQ, 31-LT) 98 * values used in changing PSR 00000010 ABS 99 PSRMODIF EQU 1*PSRMODIFB 00000004 ABS 100 PSRCARRY EQU 1*PSRCARRYB 00000008 ABS 101 PSROVERFLOW EQU 1*PSROVERFB 102 103 * The WAIT instruction waits ten microseconds for each count 104 * in the operand. 105 00040000 ABS 106 WAITCOUNT EQU 2 POWER 18 about 2.5 seconds 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 39 (MACHDEFS) F 6 Machine Definitions 108 109 ********************************************************************************** 110 * * 111 * PAGE FILE DEFINITIONS * 112 * The page file contains all information required to * 113 * convert a virtual page number and the monitor/user * 114 * information into a slot number/physical page number/ * 115 * allowed access. A word formatted for the page file is * 116 * referred to as a 'page map value'. * 117 * After reading the indicated page file location, the * 118 * PFRC instruction sets it to illegal to reference. However, * 119 * this may also be accomplished by loading both the 'read * 120 * only' and 'altered' bits. * 121 * * 122 ********************************************************************************** 123 0012C000 3 REG 124 PFPTR EQU R3 register used to address PF 125 00000840 BYTE 126 PFSLOT EQU BITS 4:7 slot where page is hiding 00001A30 BYTE 127 PFCNTL EQU BITS 13:15 bits for controlling page 00001A10 BYTE 128 PFROBIT EQU BIT 13 on if page read only 00001C10 BYTE 129 PFALTBIT EQU BIT 14 on if page altered 00001E10 BYTE 130 PFREFBIT EQU BIT 15 on if page referenced 00060000 ABS 131 PFNOREFVAL EQU 1*PFROBIT+1*PFALTBIT page map value that indicates 132 * illegal to reference 000028C0 BYTE 133 PFPAGENUM EQU BITS 20:31 page number in slot ( or I/O device ) 00000080 ABS 134 NPS EQU 2 POWER (ADDRESS-LWPP) number of pages per state 00000100 ABS 135 PFSIZE EQU 2*NPS size of the page file 00000080 ABS 136 MONPF EQU NPS first location in monitor page file 137 138 ********************************************************************************** 139 * * 140 * Other miscellaneous address field definitions * 141 * * 142 ********************************************************************************** 143 144 * for I/O channel use, large hardware address field 00001560 BYTE 145 PAGEANDISP BITS 10:31 full physical address 146 * within an 18 bit virtual address, the following fields apply 00001C80 BYTE 147 PAGEFIELD BITS 14:21 page number 00003010 BYTE 148 MONBIT BIT (31-(NPS LOG 2)) bit within pagefield which 149 * indicates page is monitor 00002CA0 BYTE 150 DISPFIELD BITS 22:31 displacement within page 000014C0 BYTE 151 FLDABSPG EQU BITS 10:21 page # in absolute address 152 00000080 ABS 153 PNPAGEZERO EQU MONPF+0 page number for monitor zero page 00001000 154 BOOTLOC EQU MA 01000 location for system bootstrap 00000084 ABS 155 PNBOOTLOC EQU MONPF+(BOOTLOC DISPW ZERO)/WPP page number for bootstrap 156 157 ********************************************************************************** 158 * * 159 * MAXMAPVALS determines the number of virtual pages that * 160 * is specifically reserved for the free storage required to * 161 * maintain each user active. Note that these pages are NOT * 162 * available to the system and are never reclaimed. * 163 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 40 (MACHDEFS) F 6 Machine Definitions 164 ********************************************************************************** 165 00000004 ABS 166 MAXMAPVALS EQU 4 maximum pages for user free memory 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 41 (MACHDEFS) F 6 Machine Definitions 168 169 ********************************************************************************** 170 * * 171 * Treatise on list locking * 172 * This is in here because, even though we know better, * 173 * this keeps getting screwed up. * 174 * The only instructions that ever do an interlocked * 175 * memory operation (read-modify-write) are: * 176 * * 177 * ADDB ADDM ANDM BRSBM CLRT DEC EXCH INC INCL * 178 * IORM RSBM SETT SUBM XORM * 179 * * 180 * Even these instructions do non-interlocked * 181 * read-restore operations if the operand is not a whole word. * 182 * For the purposes of this discussion, a ZBM starting at bit * 183 * 0, 32 long is NOT a whole word. * 184 * The normal kind of lock word is a whole word, directly * 185 * addressed and set with a SETT instruction and cleared with * 186 * a STZ. * 187 * * 188 * Protecting data structures * 189 * A word may be modified in a protected manner in one of * 190 * two ways: * 191 * 1) Every operation on the word is an interlocked * 192 * memory operation. * 193 * 2) The word is modified only when an associated lock * 194 * is held. * 195 * Please, please note that these two methods may not, * 196 * nay, MUST not ever be mixed. Note especially that if ANY * 197 * operation inside a critical region is non-interlocked, then * 198 * it does NOT work to try to modify the word outside of the * 199 * critical region with an RMW. * 200 * * 201 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 42 (MACHDEFS) F 6 Machine Definitions 203 204 ********************************************************************************** 205 * * 206 * Console Area * 207 * The console area register of a CPU points to a block * 208 * of memory where the machine state will be saved on an * 209 * interrupt. The machine state is saved in the first 10 * 210 * words of the console area as defined below. The remainder * 211 * of the block is used by the operating system to hold the * 212 * virtual machine state and temporary storage. The entire * 213 * block is defined here for convenience. * 214 * The operating system maintains a stack of CAs for each * 215 * process so that when a user traps to the monitor, the * 216 * monitor has its own registers and stack area to use. * 217 * Furthermore, the monitor can issue further XREQs, in * 218 * effect, calling itself. This works as follows: Each * 219 * interrupt vector specifies a NEW CA ( the registers for the * 220 * interrupted process are always stored into its own console * 221 * area ) which will be used to save the registers of the * 222 * interrupt routine being started ( if it, in turn, is * 223 * interrupted ). If the interrupt routine being started * 224 * branches to the virtual monitor, the CA that it acquired * 225 * from the IVT will be replaced in the IVT by a fresh one ( * 226 * acquired from free storage ) and the CA in use will be * 227 * linked to the PSA of the process. * 228 * * 229 ********************************************************************************** 230 00000000 231 CONAREA BASE R0 CPU CONSOLE AREA 000800F0 0 ZBM 232 CAPSR BSSB WORDLNTH-ADDRESS process status word 00081F10 0 ZBM 233 CAPC BSSB ADDRESS the program counter 00160801 0 BASE 234 CAMSR BSS 1 monitor status word 00160802 0 BASE 235 CAR0 BSS 1 R0 00160803 0 BASE 236 CAR1 BSS 1 R1 00160804 0 BASE 237 CAR2 BSS 1 R2 00160805 0 BASE 238 CAR3 BSS 1 R3 00160806 0 BASE 239 CAR4 BSS 1 R4 00160807 0 BASE 240 CAR5 BSS 1 R5 00160808 0 BASE 241 CAR6 BSS 1 R6 00160809 0 BASE 242 CAR7 BSS 1 R7 243 * end of the machine dependant part 0016080A 0 BASE 244 CAINTADR BSS 1 user interrupt address 0016080B 0 BASE 245 CAINTMASK BSS 1 bits controlling interrupt ability 246 * bit assignments in mask word 0008001B 0 ZBM 247 CAINTENABL EQU CAINTMASK/BIT 0 indicates user accepting interrupts 248 * EQU 0 interrupt enable 00000001 ABS 249 CAIMINST EQU 1 instruction failure 00000002 ABS 250 CAIMCALL EQU 2 call/enter mismatch 00000003 ABS 251 CAIMARITH EQU 3 arithmetic failure 00000004 ABS 252 CAIMCKBDS EQU 4 check bounds trap 00000005 ABS 253 CAIMMPV EQU 5 memory protect violation 00000006 ABS 254 CAIMBREAK EQU 6 terminal break 00000007 ABS 255 CAIMALLXR EQU 7 if off, return all XREQ error codes 00000008 ABS 256 CAIMNETERM EQU 8 non-empty terminal 00000009 ABS 257 CAIMNEPATH EQU 9 non-empty path 0000000A ABS 258 CAIMTIME EQU 10 time interrupt 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 43 (MACHDEFS) F 6 Machine Definitions 0000000B ABS 259 CAIMMSG EQU 11 message receipt 0000000C ABS 260 CAIMVMF EQU 12 virtual memory failure 0000000D ABS 261 CAIMABORT EQU 13 operator abort 0000000E ABS 262 CAIMGUNIT EQU 14 unit receipt 263 0000000A ABS 264 CANUMUREGS EQU DISPW CAR0 number of scratch regs + IMR/IAR 0000000C ABS 265 CANUMREGS EQU DISPW CAPC number of registers in console area 0016080C 0 BASE 266 CALINK BSS 1 link to next console area 267 0016080D 0 BASE 268 CASTACKPTR BSS 1 address of stack associated with this CA 269 NOLIST CREF 00138000 6 REG 270 SP EQU R6 register used for stack pointer 271 LIST CREF 0016080E 0 BASE 272 CAXOPERAND BSS 1 holds XREQ operand 273 DRCT 0000000F DISP 274 CALNTH EQU DISP CONAREA LENGTH OF A CONSOLE AREA 00000004 ABS 275 CALOG EQU CALNTH LOG 2 276 ORG CONAREA 277 12 INPUT IODEFS definitions for I/O devices 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 44 (IODEFS) F 7 I/O definitions 4 5 ********************************************************************************** 6 * * 7 * Bus commands. * 8 * * 9 * These are the basic command words that appear on the * 10 * bus. The left 4 bits are interpreted as the bus command. * 11 * The right 22 bits are the address. The remaining 6 bits * 12 * are reserved for information used in support of debugging. * 13 * * 14 * When these commands go to a memory, the address (for * 15 * read, read2, write, rmw) is interpreted as a normal memory * 16 * data address. When these commands go to other devices, the * 17 * interpretation is dependent on the device. In general, the * 18 * 'page number' part of the address is decoded as a 'class' * 19 * of request. In the PPU only four classes are allowed, one * 20 * for each channel. This classification on the part of the * 21 * devices is useful to the operating system, because in order * 22 * to alter this part of the address the page file location * 23 * must be reloaded with the new page number field. * 24 * * 25 * The 'displacement' part of the address is used to * 26 * break down the requests to their final form. These bits * 27 * may be altered by the operating system by merely index * 28 * modifying an instruction or assembling a different address * 29 * (while using the same page file location). * 30 * * 31 ********************************************************************************** 32 00000000 ABS 33 BUSCWRITE EQU 000000000 write data to the device 10000000 ABS 34 BUSCRMW EQU 010000000 read/modify write 20000000 ABS 35 BUSCREAD EQU 020000000 request read of data 30000000 ABS 36 BUSCREAD2 EQU 030000000 read double 40000000 ABS 37 BUSCWRU EQU 040000000 request WRU info 50000000 ABS 38 BUSCST EQU 050000000 request self test 60000000 ABS 39 BUSCIP EQU 060000000 interrupt poll 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 45 (IODEFS) F 7 I/O definitions 41 42 ********************************************************************************** 43 * * 44 * Format of the interrupt poll response * 45 * This is the data word that a VRA bus board will return * 46 * in response to an interrupt poll request. If the polled * 47 * device does not have an interrupt asserted the data word * 48 * returned will be all zero. * 49 * The PPU and the SSU are the only boards that recognize * 50 * this command. Each has its own meaning assigned to bits * 51 * 1:31 while bit zero is reserved to indicate that an * 52 * interrupt is being requested. * 53 * * 54 ********************************************************************************** 55 00001080 BYTE 56 IPRPPUCHAN EQU BITS 8:15 PPU channel requesting interrupt 00002100 BYTE 57 IPRPPUSTAT EQU BITS 16:31 PPU status causing interrupt 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 46 (IODEFS) F 7 I/O definitions 59 60 ********************************************************************************** 61 * Format of the Who-aRe-yoU zero response. * 62 * This is the data word that all VRA bus boards return * 63 * in response to a WRU with a zero address. * 64 ********************************************************************************** 65 00000040 BYTE 66 WRU0TYPE EQU BITS 0:3 type of device 00000000 ABS 67 SLTTUNK EQU 0 indicates nothing here 00000001 ABS 68 SLTTMEM EQU 1 indicates memory here 00000002 ABS 69 SLTTCPU EQU 2 indicates CPU here 00000003 ABS 70 SLTTPPU EQU 3 indicates PPU here 00000004 ABS 71 SLTTSSU EQU 4 indicates SSU here 00000A10 BYTE 72 WRU0INT EQU BIT 5 on if interrupting 00000D20 BYTE 73 WRU0DD EQU BITS 6:23 device dependent status 00001040 BYTE 74 WRU0CPUSUB EQU BITS 8:11 sub code in CPU indicating CPU type 00000001 ABS 75 CPU4 EQU 1 indicates we are a CPU4 00003080 BYTE 76 WRU0MREV EQU BITS 24:31 micro code revision 77 78 ********************************************************************************** 79 * Format of the WRU 0 response from a Memory Control * 80 * Unit and a Semi-conductor Memory Unit. * 81 ********************************************************************************** 82 00001040 BYTE 83 WRUMEMDEVT EQU BITS 8:11 indicates type of memory device 84 * EQU 0 indicates regular MCU 00000001 ABS 85 WRU0SMUDEV EQU 1 indicates this is a SMU board 00002040 BYTE 86 WRUMEMINC EQU BITS 16:19 says the number of words of memory 87 * described by each bit of the WRU4 response: 88 * 0 => 32K words, 1 => 64K words, 89 * 2 => 128K words, 3 => 256K words, etc. 00002E10 BYTE 90 WRUMEMNO0 EQU BIT 23 1 if memory address zero not installed 91 * on this memory controller. 92 93 ********************************************************************************** 94 * Format of the WRU 4 response from a MCU. In the * 95 * following description, "n" means 2 POWER (15+WRUMEMINC). * 96 ********************************************************************************** 97 00002C10 BYTE 98 WRUMEMNONE EQU BIT 22 no memory is attached to this MCU 00002E10 BYTE 99 WRUMEMBAD EQU BIT 23 memory is improperly attached 00003080 BYTE 100 WRUMEMHERE EQU BITS 24:31 bits describing what memory is attached: 101 * bit 31 => words 0.. n-1 are useable 102 * bit 30 => words n..2*n-1 are useable 103 * bit 29 => words 2*n..3*n-1 are useable 104 * ... 105 * bit 24 => words 7*n..8*n-1 are useable 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 47 (IODEFS) F 7 I/O definitions 107 108 ********************************************************************************** 109 * * 110 * SMU command codes. These command codes are used for * 111 * manipulation of the SMU error logs. * 112 * The SMU is limited in the number of pseudo-commands it * 113 * can process so requires that they come in no faster than * 114 * one command every 20 ms. If the SMU receives a * 115 * pseudo-command while it is processing a previous one the * 116 * first pseudo-command will be lost. * 117 * * 118 ********************************************************************************** 119 120 * EQU BITS 0:3 bits containing SMU command code 121 * These are the standard bus read and write command formats 122 * EQU 0 write 123 * EQU 1 illegal 124 * EQU 2 read 125 00000C10 BYTE 126 SMUPCMND EQU BIT 6 indicates this is a pseudo-command 00001840 BYTE 127 SMUPCC EQU BITS 12:15 psuedo-command code 128 * Write pseudo-command pseudo-command codes 129 * EQU 0 unused 130 * EQU 1 clear error log and error log buffer 131 * EQU 2 clear individual error entry 132 * Read pseudo-command pseudo-command codes 133 * EQU 0 read random error log entry 134 * EQU 1 read sequential error log entry 00000002 ABS 135 SMUPCRCEL EQU 2 read current error log status 136 137 * EQU BITS 20:31 address field 138 * EQU BITS 21:23 rank field 139 * EQU BITS 24:31 IC field 140 141 * Format of the error status word 142 * EQU BIT 0 unused 143 * EQU BITS 1:7 correction check bits 144 * EQU BITS 9:10 error type 145 * EQU 0 soft error 146 * EQU 1 hard error 147 * EQU 2 uncorrectable error 148 * EQU BITS 11:13 rank address 149 * EQU BITS 14:15 upper address bits 150 * EQU BITS 16:23 Ras address 151 * EQU BITS 24:31 Cas address 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 48 (IODEFS) F 7 I/O definitions 153 154 ********************************************************************************** 155 * * 156 * CPU ERROR CODES (Rev 12 and greater microcode) * 157 * * 158 * The CPU has two types of fatal errors: Bus errors * 159 * and CPU errors. When the CPU gets a Bus error, it asserts * 160 * BSE. When a CPU error occurs, a CPU error message is sent * 161 * to the SSU. In both cases, certain state information has * 162 * been saved by the CPU, and is accessable from the RFP. * 163 * * 164 * The state information is saved as follows: * 165 * * 166 * R11 (SP17) = Microstatus register 1 * 167 * R12 (SP18) = Microstatus register 2 ([28:31]=From register) * 168 * R13 (SP19) = Microstatus register 3 * 169 * R14 (SP20) = Input register 1 * 170 * R15 (SP21) = Input register 2 * 171 * R16 (SP22) = Output register 1 * 172 * R17 (SP23) = Output register 2 * 173 * R19 (SP24) [0:3] = Error code * 174 * [4:7] = Error parameter * 175 * [20:31] = ucode address where error was detected * 176 * * 177 * The error codes are listed below. Error codes 1 * 178 * through 7 are Bus error codes and codes 8 through A are * 179 * CPU error codes. * 180 * * 181 * 1 --> Parity error on the Bus. * 182 * 2 --> Bad flags on the Bus. * 183 * 3 --> Bad command code on the Bus. * 184 * 4 --> Bad command address on the Bus. * 185 * 5 --> RTO timeout on the Bus. * 186 * 6 --> IBF timeout on the Bus. * 187 * 7 --> Parity and flag error on the Bus (same as codes * 188 * 1 and 2) * 189 * 8 --> Page fault during trap setup * 190 * 9 --> Page fault when trying to store console area * 191 * A --> Hardware error * 192 * * 193 * The second digit of the error message is the error * 194 * parameter. These are used to indicate the type of word * 195 * which caused a flag or parity error. * 196 * * 197 * 0 --> No information * 198 * 1 --> Error in command word of received command * 199 * 2 --> Error in data word of received command * 200 * 3 --> Error in instruction fetch data * 201 * 4 --> Error in operand fetch data * 202 * 5 --> Error in pointer fetch data * 203 * 6 --> Error in interrupt poll data * 204 * 7 --> Error in trap fetch data * 205 * * 206 * CPU command codes. The command codes given here * 207 * require something in the page file which is given as the * 208 * offset. Command values given are within that offset. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 49 (IODEFS) F 7 I/O definitions 209 * * 210 ********************************************************************************** 211 00000000 ABS 212 CPUREGOFST EQU 000000 offset for registers in RAM 00000000 ABS 213 CPUREG EQU 000 R/W registers indexed by number (R0:R7) 00000008 ABS 214 CPUPC EQU 008 R/W program counter 00000009 ABS 215 CPUMSR EQU 009 R/W monitor status register 0000000A ABS 216 CPUCCA EQU 00A R/W current console area register 217 * EQU 00B R/W interrupt mask 218 * 00010000 ABS 219 CPUPFOFSET EQU 010000 R/W offset for PF indexed by number 220 * 00020000 ABS 221 CPUOOFFSET EQU 020000 R/W offset for other registers 00000000 ABS 222 CPUPSR EQU 000 R/W processor status register 00000001 ABS 223 CPUI EQU 001 R/W processor instruction register 00000002 ABS 224 CPUA EQU 002 R/W processor A accumulator 00000003 ABS 225 CPUQ EQU 003 R/W processor Q accumulator 00000004 ABS 226 CPUPMS EQU 004 R/W processor "outboard" MSR 00000005 ABS 227 CPUUS EQU 005 R/W processor uproc status register 228 * 00030000 ABS 229 CPUCOFFSET EQU 030000 command offset 230 * (the data word is ignored for these commands) 00000000 ABS 231 CPURUN EQU 000 W begin running 00000001 ABS 232 CPUSTOP EQU 001 W stop execution 00000002 ABS 233 CPUSCYCLE EQU 002 W single cycle 00000003 ABS 234 CPUSSTEP EQU 003 W single step 00000004 ABS 235 CPUIAPR EQU 004 W interrupt associated processor 236 00000700 ABS 237 CPUUCODELD EQU 0700 W tells CPU to reload its microcode 00000703 ABS 238 CPUPTCHCMD EQU 0703 W load microcode patches 239 * data word contains physical address of 240 * start of patch 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 50 (IODEFS) F 7 I/O definitions 242 243 ********************************************************************************** 244 * * 245 * SSU * 246 * The SSU (System Services Unit) provides all manner of * 247 * miscellaneous services to the system. * 248 * * 249 * CLOCK * 250 * The system clock is a 44 bit CMOS counter that ticks * 251 * every millisecond. It has a battery backup to keep it * 252 * operating during power outages of up to a week. The clock * 253 * is factory loaded with the correct time, and it should only * 254 * need occasional corrections for drift. The epoch (time * 255 * when clock would have been 0000) is 0000 17 November, 1858. * 256 * The 44 bit counter will overflow sometime in the 25th * 257 * century. * 258 * Functions are provided to read the clock, write the * 259 * clock, and to increment or decrement it. The latter are * 260 * used for all minor corrections to prevent slippage * 261 * problems. Starting with Rev 14, the SSU can also be * 262 * initialized to store the current clock into memory * 263 * every millisecond. * 264 * * 265 * CONTROL PANEL DISPLAY * 266 * The 10 character display on the control panel is * 267 * shared by several functions. The SSU contains two message * 268 * buffers for driving the display. One is used for SSU * 269 * generated displays, while the other is reserved for * 270 * displays generated by the CPUs (operating system). This * 271 * allows the most recent display of each type to be available * 272 * to the RDU. * 273 * First, the SSU will display bus errors and self test * 274 * errors in it. * 275 * Second, if any CPU executes a halt or stop * 276 * instruction, that CPU sends a message to the SSU who * 277 * displays a halt code (see HALTDEFS) then stops the entire * 278 * system by asserting PAUSE. * 279 * Third, the system may display anything that it chooses * 280 * while it is running. * 281 * The character set is 6-bit ASCII, as follows: * 282 * 0 1 2 3 4 5 6 7 * 283 * +-------------------------- * 284 * 00 | @ A B C D E F G * 285 * 08 | H I J K L M N O * 286 * 10 | P Q R S T U V W * 287 * 18 | X Y Z [ ~ ] { } * 288 * 20 | ! " # $ % & ' * 289 * 28 | ( ) * + , - . / * 290 * 30 | 0 1 2 3 4 5 6 7 * 291 * 38 | 8 9 : s < = > ? (s = semicolon) * 292 * In each character, the 80 bit turns on a decimal point * 293 * after the character. In the word containing the last two * 294 * characters, two low-order bits control the ALARM light and * 295 * the horn. * 296 * * 297 * REMOTE FRONT PANEL * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 51 (IODEFS) F 7 I/O definitions 298 * The SSU has an RS232 port on it for connection to a * 299 * dedicated modem. This is provided for use by the remote * 300 * front panel maintenance facility. There is also a 50 pin * 301 * ribbon connector provided for connection to a portable * 302 * field service maintenance unit. * 303 * * 304 * INTERVAL TIMER * 305 * A 'fence' register is provided to indicate the time at * 306 * which the system desires an interrupt. A down counter is * 307 * not used because of the problem of slippage. That is, a * 308 * given interrupt time, if composed of many smaller * 309 * intervals, is subject to an error for each interval used. * 310 * This error would be one millisecond for each tick that * 311 * occurs between the interrupt posting and the reloading of * 312 * the down counter. Instead, when the lower 16 bits of the * 313 * clock become equal to the fence register due to a tick, or * 314 * an increment, the SSU posts an interrupt. This allows the * 315 * system to store the actual times at which interrupts are * 316 * desired. The interrupts are kept ordered and the next one * 317 * is used to load the fence. * 318 * * 319 * CONTROL PANEL SWITCHES * 320 * These switches are provided primarily so that the * 321 * operator can indicate a few options at the time of a system * 322 * boot. They also allow the operator to select what will be * 323 * displayed on the ten character display during system * 324 * operation. * 325 * * 326 * NON-VOLATILE MEMORY * 327 * A buried charge read-mostly memory is provided so that * 328 * the system may store up to 128 bytes of vital information. * 329 * In SSU rev 14, the NVM is of a different type and contains * 330 * 2048 bytes of information, although the full 2048 bytes are * 331 * not usable until rev 15 due to microcode bugs. Each byte is * 332 * individually addressed. Bytes are read or written by reading * 333 * or writing through SSUNVM+nn. For read, only bits 24:31 are * 334 * valid, for write, the data is taken from bits 24:31. * 335 * * 336 * Error Block * 337 * The SSU's error block is a 16 word buffer. Each word * 338 * corresponds to a slot in the VRA bus. If a word is zero, * 339 * then either there is not a CPU in that slot, or that CPU * 340 * has not sent a Halt, Stop, or Error message to the SSU. * 341 * Prior to microcode 15, the special case of a CPU executing * 342 * a word of all zeros created the irritating phenomenon of * 343 * storing a zero into the error file which appeared as no * 344 * error. Rev 15 converts the all zero word, when received, * 345 * into 0FF000000 before storing it into the error file. * 346 * * 347 * If a word in the block is nonzero, it is displayed as follows: * 348 * * 349 * If (Bits[0:7] = 0) and (Bit[8] = 0), then the display is * 350 * "HLTn axxxx", where n is the slot number, a is a 6-bit ASCII * 351 * char in Bits[10-15], and xxxx is the 4 hex nibbles in Bits[16-31]. * 352 * Note that, prior to SSU microcode Rev 15, a HALT 0 * 353 * placed all 0s (the instruction word) into the error * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 52 (IODEFS) F 7 I/O definitions 354 * file. This looks as if no error has been posted. * 355 * * 356 * If (Bits[0:7] = 0) and (Bit[8] = 1), then the display is * 357 * "STPn axxxx", where n is the slot number, a is a 6-bit ASCII * 358 * char in Bits[10-15], and xxxx is the 4 hex nibbles in Bits[16-31]. * 359 * * 360 * If (Bits[0:7] = 0FF) then the entry is for a HALT 0. * 361 * * 362 * If (Bits[0:7] <> 0) then the display is "CPU n Err wwwwwwww", * 363 * where n is the slot number, and wwwwwwww is the word in the * 364 * error block. * 365 * * 366 * BOOTSTRAP * 367 * The sequence of events during a bootstrap is as * 368 * follows: * 369 * 1) Assert PAUSE, PFW, and MCLR. This clears out the * 370 * bus interface logic and such like and sets up the * 371 * microprocessors to run when released. * 372 * 2) Release PFW and MCLR. * 373 * 3) Poll all slots and build a table of filled slots. * 374 * 4) For each active slot, do WRU 0 through WRU 0E * 375 * and store the results into 0200+*16 * 376 * in the first available page of memory. * 377 * 5) Command each bus device to run its self test. * 378 * 6) Allow enough time for the self test to complete. * 379 * 7) Retrieve the self test response (WRU OF) from all slots * 380 * and store it with the other WRU data (see item 4, above). * 381 * 8) Initialize each CPU to execute the monitor code * 382 * starting at location 0. * 383 * 9) Copy the 16K EPROM into locations 0-01FF of the * 384 * first page of available memory. Note: This EPROM * 385 * may also be read by reading through SSUROFFSET+nn. * 386 * 10) Release PAUSE to let the CPUs go. * 387 * * 388 * POWER UP * 389 * The sequence of events at power up is as * 390 * follows: * 391 * 1) Run self test on itself. * 392 * 2) Assert MCLR, PFW, and PAUSE. Wait for 1 second. * 393 * 3) Clear MCLR. Wait for 250 Msecs. * 394 * 4) Clear PFW. Wait for 5 seconds. * 395 * 5) * 396 * * 397 * SSU command codes. The command codes given here require * 398 * an offset to be loaded in the page file (as a page number). * 399 * The command values are relative to that offset. * 400 * * 401 ********************************************************************************** 402 00003080 BYTE 403 IPRSSUSTAT EQU BITS 24:31 Interrupt status bits in interrupt poll 404 405 * EQU 0C00 R/W SSU scratchpad Ram (byte at a time in bits 24:31) 406 00001000 ABS 407 SSUROFFSET EQU 01000 R offset to address PROM bootstrap 408 00001400 ABS 409 SSUCOFFSET EQU 01400 offset to following commands 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 53 (IODEFS) F 7 I/O definitions 410 * The SSU clock is a 44 bit counter 411 * that counts every millisecond. 412 * It has a battery to keep it 413 * operating during power failures. 00000001 ABS 414 SSUCLOCKU EQU 00001 R/W most significant 12 bits of clock 00000002 ABS 415 SSUCLOCKL EQU 00002 R/W least significant 32 bits of clock 00000003 ABS 416 SSUINCCLK EQU 00003 W increment clock 00000004 ABS 417 SSUDECCLK EQU 00004 W decrement clock 418 * These 3 codes are sent by the 419 * CPU microcode only. 00000005 ABS 420 SSUCPUHALT EQU 00005 W CPU halt/stop message 00000006 ABS 421 SSUCPUERR EQU 00006 W user error in monitor 00000007 ABS 422 SSUCPUBUSE EQU 00007 W CPU got abnormal data 423 * To/From remote or local front 424 * panel port. 00000008 ABS 425 SSUCHAROUT EQU 00008 R/W send char out to UART, sign sez ready 00002E10 BYTE 426 SSUBREAKB EQU BIT 23 bit indicating break command 00002C10 BYTE 427 SSUDWELLB EQU BIT 22 bit indicating dwell command 000000FF ABS 428 SSUMAXCC EQU 0FF maximum number of break or dwell chars 429 that can be sent at once 430 431 * The fence is matched against the 432 * right 16 bits of CLOCKL. 00000009 ABS 433 SSUFENCE EQU 00009 R/W 16 bit time to interrupt 434 435 * The operating system has control of the 436 * control panel display as long as the machine 437 * is running. These three locations are used 438 * for communications with the display. 439 * The SSU takes control of the display for 440 * many conditions. The system may read what 441 * the SSU last put up in the display through 442 * a different set of addresses, see below. 0000000A ABS 443 SSUDISP03 EQU 0000A R/W characters 0, 1, 2, 3 of system display 0000000B ABS 444 SSUDISP47 EQU 0000B R/W characters 4, 5, 6, 7 of system display 0000000C ABS 445 SSUDISP89 EQU 0000C R/W characters 8, 9 of system display, alarm, horn 00003410 BYTE 446 SSUHORN EQU BIT 26 W on to sound horn (continuously) 00003610 BYTE 447 SSUALARM EQU BIT 27 W on to light ALARM box 448 * EQU BIT 1 R horn is on 449 * EQU BIT 9 R Alarm light is on 450 0000000D ABS 451 SSUCHARIN EQU 0000D R char in from UART, sign sez new 452 * EQU BIT 23 on if Break rather than character 0000000E ABS 453 SSUMISCST EQU 0000E R misc. statuses 00003E10 BYTE 454 SSUMSLFP EQU BIT 31 local front panel connected 00003C10 BYTE 455 SSUMSBC EQU BIT 30 SSU providing bus clock 00003A10 BYTE 456 SSUMSNVM EQU BIT 29 NVM not busy 457 0000000F ABS 458 SSUINTMASK EQU 0000F R/W interrupt mask 459 * Bits in interrupt mask and WRU response 00003010 BYTE 460 SSUIMCI EQU BIT 24 character in from UART 00003210 BYTE 461 SSUIMCO EQU BIT 25 ready for character out 462 * EQU BIT 26 unused 00003610 BYTE 463 SSUIMCLKSTR EQU BIT 27 allow SSU to update clock in memory 00003810 BYTE 464 SSUIMERR EQU BIT 28 error log information available 00003A10 BYTE 465 SSUIMNVM EQU BIT 29 NVM ready 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 54 (IODEFS) F 7 I/O definitions 00003C10 BYTE 466 SSUIMFPS EQU BIT 30 control panel switch change 00003E10 BYTE 467 SSUIMTICK EQU BIT 31 clock interrupt 468 00000010 ABS 469 SSUBOOTFP EQU 00010 R control panel switches at boot time 470 * EQU 00010 W cause boot to happen 471 * bits 24:31 are boot number 00000011 ABS 472 SSUFPSWCH EQU 00011 R current control panel switches 473 * Bits in SSU control panel switch read 00000010 BYTE 474 SSURFP EQU BIT 0 on if RFP doing boot 475 * EQU BIT 24 RUN - when we can look, its on 476 * EQU BIT 25 BOOT - when we can look, its off 00003410 BYTE 477 SSUSWMAINT EQU BIT 26 MAINT - remote maintenance enable 478 * EQU BIT 27 POWER - on 00003810 BYTE 479 SSUSW1 EQU BIT 28 switch numbered 1 00003A10 BYTE 480 SSUSW2 EQU BIT 29 switch numbered 2 00003C10 BYTE 481 SSUSW3 EQU BIT 30 switch numbered 3 00003E10 BYTE 482 SSUSW4 EQU BIT 31 switch numbered 4 00003840 BYTE 483 SSUSWITCH EQU SSUSW1+SSUSW2+SSUSW3+SSUSW4 484 00000012 ABS 485 SSUERRLOG EQU 00012 R read and clear error log information 486 * EQU BIT 29 write to port zero when no room 487 * EQU BIT 30 write to NVM when busy 488 * EQU BIT 31 read to NVM when busy 489 490 * The SSU itself generates control panel 491 * displays (self test, bus error, etc) 492 * The system can read the last such display. 493 * EQU 00013 R characters 0, 1, 2, 3 of SSU display 494 * EQU 00014 R characters 4, 5, 6, 7 of SSU display 495 * EQU 00015 R characters 8, 9 of SSU display 496 497 * EQU 00016 R/W 32 bit version of the clock 498 499 * The SSU will automatically store the 500 * clock every millisecond if the appropriate 501 * control bit (in interrupt mask) is set. 502 * This word contains the physical address 503 * of the double word that is to be kept 504 * up to date. 00000017 ABS 505 SSUCLOKAD EQU 00017 R/W physical address for clock update 506 * bits 4:7 = slot number of memory 507 * bits 8:31 = physical address of first word of two 508 00001800 ABS 509 SSUNVM EQU 01800 R/W offset to get at NVM 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 55 (IODEFS) F 7 I/O definitions 511 512 ********************************************************************************** 513 * * 514 * PPU command codes * 515 * The PPU provides the link between the VRA bus and the * 516 * peripheral controllers. * 517 * The PPU is capable of operating 4 completely * 518 * independant channels. They are addressed by making the * 519 * PPUCHAN bits in the store and load commands equal to the * 520 * channel desired. Normally, this is done by loading a base * 521 * address into the page file. * 522 * channel 0 = MA 000000 or page number 000 * 523 * channel 1 = MA 010000 or page number 040 * 524 * channel 2 = MA 020000 or page number 080 * 525 * channel 3 = MA 030000 or page number 0C0 * 526 * Two basic functions are provided. The first of these * 527 * is the DMA or data channel capability. Also included is * 528 * interrupt control and such like capabilities. * 529 * These capabilities are controlled by stores and loads * 530 * from the addresses between 0 and 01FF. * 531 * The other basic function provided by the PPU is to * 532 * send control information directly to and receive status * 533 * information directly from the controller. This is * 534 * accomplished by loads and stores with the DEVBIT bit set * 535 * in the address (that is, addresses from 0200 to 03FF). * 536 * * 537 ********************************************************************************** 538 00003020 BYTE 539 PPUCHAN EQU BITS 24:25 PPU channel number as put in PF 00000004 ABS 540 PPUCHANS EQU 4 number of channels on a PPU 541 00000000 ABS 542 PPUCABLED EQU 000 R gets non-zero if channel cabled to responding 543 * (non-zero return is controller WRU info) 00000001 ABS 544 PPUINTSTAT EQU 001 R gets ports internal PPU status, format below 00003E10 BYTE 545 PPUIDMAD EQU BIT 31 *DMA direction, 1 sez memory -> PPU device 00003C10 BYTE 546 PPUIINTP EQU BIT 30 +PPU requests interrupt 00003A10 BYTE 547 PPUIDMAE EQU BIT 29 DMA output enabled 00003810 BYTE 548 PPUIINTC EQU BIT 28 +controller requests interrupt 549 00003610 BYTE 550 PPUIROLL EQU BIT 27 +byte count rollover 00003410 BYTE 551 PPUILAST EQU BIT 26 last byte count processed 00003210 BYTE 552 PPUIBCNR EQU BIT 25 next byte count not ready on rollover 00003010 BYTE 553 PPUIDMANB EQU BIT 24 DMA not busy 554 00002E10 BYTE 555 PPUIMPE EQU BIT 23 memory parity error 00002C10 BYTE 556 PPUIINTR EQU BIT 22 *cause PPU interrupt request 557 * on byte count rollover 00002A10 BYTE 558 PPUICONF EQU BIT 21 PPU is confused 00002810 BYTE 559 PPUICIA EQU BIT 20 #*controller allowed to interrupt CPU 560 00002610 BYTE 561 PPUIPIA EQU BIT 19 #*PPU allowed to interrupt CPU 00002410 BYTE 562 PPUIDPPE EQU BIT 18 data path parity error 00002210 BYTE 563 PPUIXTRA EQU BIT 17 extra characters after rollover 00002010 BYTE 564 PPUIBTR EQU BIT 16 between records (EOR from controller) 565 * The CPU may change the bits marked with a "*", 566 * the bits marked with a "+" are cleared on a status read, 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 56 (IODEFS) F 7 I/O definitions 567 * the bits marked with a "#" are cleared when the CPU 568 * accepts an interrupt. 00001E10 BYTE 569 PPUITOUT EQU BIT 15 software timeout, ORed in on deadman 570 00000000 ABS 571 PPURESET EQU 000 W give power reset to controller 00000001 ABS 572 PPUABORT EQU 001 W abort operation and reset error state on channel 00000002 ABS 573 PPUCHANS1 EQU 002 R fetch controller status word 1 00000003 ABS 574 PPUCHANS2 EQU 003 R fetch controller status word 2 00000002 ABS 575 PPUSSSTAT EQU 002 W selectively set bits in internal status 00000003 ABS 576 PPUSCSTAT EQU 003 W selectively clear bits in internal status 577 00000004 ABS 578 PPUCNT1 EQU 004 R/W primary byte count - below format 00002010 BYTE 579 PPUCLAST EQU BIT 16 sez last byte count 000022F0 BYTE 580 PPUCCOUNT EQU BITS 17:31 character count 581 00000005 ABS 582 PPUADDR1 EQU 005 R/W primary transfer address 00000840 BYTE 583 PPUASLOT EQU BITS 4:7 slot that address is in 00001560 BYTE 584 PPUAMEMA EQU BITS 10:31 physical memory address 585 00000006 ABS 586 PPUCNT2 EQU 006 R/W secondary byte count 00000007 ABS 587 PPUADDR2 EQU 007 R/W secondary memory address 588 00000008 ABS 589 PPU3WRD EQU 008 R/W 1 sez enable PPU to do triple word transfers 590 * Note that PPU3 (the double board model) cannot 591 * do double word transfers. The initial release 592 * of PPU4 was on microcode rev 014, however, a 593 * release of PPU3 microcode has since been issued 594 * that is for rev 015. See the bit array in 595 * initial for the current information. Note that 596 * a store to this location in a PPU3 will cause 597 * a bus error. 598 00000200 ABS 599 DEVBIT EQU 0200 bit indicates that communications 600 * to the PPU are passed through 601 * to the device 602 603 ********************************************************************************** 604 * The WRU responses from the devices have the following * 605 * format. These responses are acquired either by doing a * 606 * load from PPUCABLED or by doing a load from location 0 of * 607 * the device (proper channel and DEVBIT set in the physical * 608 * address). * 609 ********************************************************************************** 610 00000080 BYTE 611 DWRUTYPE EQU BITS 0:7 type of device 612 * 0 sez nothing cabled 00000001 ABS 613 DVCTBFD EQU 01 disk 00000002 ABS 614 DVCTLPC EQU 02 line printer controller 00000008 ABS 615 DVCTCOMM EQU 08 async. communications 00000009 ABS 616 DVCTMTC EQU 09 9 track mag tape 0000000A ABS 617 DVCTCTC EQU 0A cartridge tape controller 0000000B ABS 618 DVCTVTC EQU 0B video tape (exabyte) 0000000C ABS 619 DVCTSDC EQU 0C SCSI disk controller 620 00001080 BYTE 621 DWRUMREV EQU BITS 8:15 micro-code revision 622 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 57 (IODEFS) F 7 I/O definitions 00002080 BYTE 623 DWRUDD EQU BITS 16:23 device dependent status 624 625 * EQU BITS 24:31 undefined 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 58 (IODEFS) F 7 I/O definitions 627 628 ********************************************************************************** 629 * * 630 * Definitions for the BFD * 631 * Command codes and statuses for the Binary Formatted * 632 * Disk controller (BFD). * 633 * The disk controller can handle up to four units, * 634 * however, it allows unit number plugs to be zero through * 635 * seven. * 636 * The disk controller only handles transfers in terms of * 637 * whole blocks which are 1035 words long. The system * 638 * software treats the first 1024 words as data and the * 639 * remaining 11 words as a File Block Identifier (FBI). * 640 * However, the hardware does not see this distinction except * 641 * at the PPU who handles the double buffers used by the * 642 * operating system. * 643 * The disk controller partitions each block into 9 * 644 * sectors of 115 words and writes sync fields and CRCs for * 645 * each sector. In addition, the exclusive or of all of the * 646 * sectors is written to a tenth sector which is available to * 647 * the software for error correction. * 648 * The offset to the first word of each segment is: * 649 * segment first word * 650 * ------- ----- ---- * 651 * 1 0000 * 652 * 2 0073 * 653 * 3 00E6 * 654 * 4 0159 * 655 * 5 01CC * 656 * 6 023F * 657 * 7 02B2 * 658 * 8 0325 * 659 * 9 0398 * 660 * * 661 ********************************************************************************** 662 00000073 ABS 663 BFDSEGSIZE EQU 115 size of segments for error correction 0000000A ABS 664 BFDNUMSEGS EQU 0A number of segments incl. check seg 0000000A ABS 665 BFDCHKSEG EQU 0A check segment's number 00000008 ABS 666 BFDUNITS EQU 8 number of units on a BFD 667 668 * In the device WRU: 00002080 BYTE 669 BFDIDSTEST EQU BITS 16:23 self test status 670 * BIT 16 unknown nano-program counter 671 * BIT 17 timeout waiting for nano-processor 672 * BIT 18 soft pattern error 673 * BIT 19 buffer A error 674 * BIT 20 CRC generator error 675 * BIT 21 buffer B error 676 * BIT 22 error file error 677 * BIT 23 switchyard or data path flag error 678 00000210 ABS 679 BFDSEEK EQU 0210 R/W seek 680 * data word is seek address 00000100 BYTE 681 BFDSACYL EQU BITS 0:15 cylinder number 00002080 BYTE 682 BFDSAHEAD EQU BITS 16:23 head number 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 59 (IODEFS) F 7 I/O definitions 00003080 BYTE 683 BFDSASEC EQU BITS 24:31 sector number 684 00000220 ABS 685 BFDSS EQU 0220 R standard status 00000010 BYTE 686 BFDSSOLINT EQU BIT 0 device went off line interrupt request 687 * BIT 1 off line interrupt enabled 00000410 BYTE 688 BFDSSNSAFE EQU BIT 2 volume not safe (has been offline) 00000610 BYTE 689 BFDSSWPROT EQU BIT 3 write protect 00000810 BYTE 690 BFDSSRDY EQU BIT 4 ready 00000A10 BYTE 691 BFDSSONCYL EQU BIT 5 on cylinder 00000C10 BYTE 692 BFDSSSKERR EQU BIT 6 seek error 00000E10 BYTE 693 BFDSSFAULT EQU BIT 7 read/write unsafe (fault) 00001080 BYTE 694 BFDSSEBITS EQU BITS 8:15 seek end bits 695 * bit 8 = drive H 696 * bit 9 = drive G 697 * ... 698 * bit 15= drive A 00002030 BYTE 699 BFDSSDNUM EQU BITS 16:18 drive number responding 700 * 0=A, 1=B, etc. 701 * BIT 19 interrupt on seek end enabled 00002810 BYTE 702 BFDSSWCERR EQU BIT 20 word count error (FIFO not empty) 00002A10 BYTE 703 BFDSSLOSTD EQU BIT 21 lost data (PPU didn't keep up) 00002C10 BYTE 704 BFDSSIFPE EQU BIT 22 interface parity error 00002E10 BYTE 705 BFDSSRSPER EQU BIT 23 response error 706 * (multiple or no drive responding) 00003030 BYTE 707 BFDSSHDECD EQU BITS 24:26 error code for sector header 708 * EQU 0 no error 709 * EQU 1 header gap field non zero 710 * ( after any sector mark ) 711 * EQU 2 no header found 712 * ( after any sector mark ) 713 * EQU 3 bad header CRC 714 * ( only if header otherwise matches ) 715 * EQU 4 matching header not found 716 * ( no header on this track matches ) 00003610 BYTE 717 BFDSSCEOV EQU BIT 27 (read, write check): time code error 718 * (write check): compare error 719 * (write): overrun 00003840 BYTE 720 BFDSSERRCD EQU BITS 28:31 error code 721 * 0 = no error 722 * 1-0A error in single segment corresponding 723 * (0A is the check segment) 724 * 0B = bad command 725 * 0C = drive not ready/on cylinder, response error, 726 * no data found, gap non-zero 727 * 0D = hardware error 728 * 0E = time out 729 * 0F = (read, write check): multiple CRC 730 * errors or sector overrun, 731 * (write, format): drive write protected 732 00000230 ABS 733 BFDEF18 EQU 0230 R error file locations 1 - 8 734 * each segment has 4 bits (WOCT) 735 * where: W => write check error 736 * O => sector over-run 737 * C => segment CRC error 738 * T => segment time code error 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 60 (IODEFS) F 7 I/O definitions 00000240 ABS 739 BFDEF9A EQU 0240 R error file locations 9 - 0A, and other stuff 00001080 BYTE 740 BFDREADY EQU BITS 8:15 ready bits for units 7..0 00002080 BYTE 741 BFDPRESENT EQU BITS 16:23 present bits for units 7..0 00000250 ABS 742 BFDINTERNS EQU 0250 R internal status 743 00000200 ABS 744 BFDSELECT EQU 0200 W select 745 * data word contains unit number 00000220 ABS 746 BFDFUNC EQU 0220 W function 747 * data words 00000011 ABS 748 BFDFNCLFLT EQU 011 reset ( clear fault ) 00000012 ABS 749 BFDFNZERO EQU 012 restore ( rezero heads ) 00000014 ABS 750 BFDFNSOLNT EQU 014 enable off line interrupts 00000018 ABS 751 BFDFNUOLNT EQU 018 disable off line interrupts 00000020 ABS 752 BFDFNSAFE EQU 020 clear volume not safe status 00000021 ABS 753 BFDFNSISE EQU 021 select int on seek end 00000022 ABS 754 BFDFNUISE EQU 022 unselect int on seek end 00000024 ABS 755 BFDFNENINT EQU 024 enable interrupts 00000028 ABS 756 BFDFNDSINT EQU 028 disable interrupts 00000041 ABS 757 BFDFNOFSF EQU 041 select offset forward 00000042 ABS 758 BFDFNOFSB EQU 042 select offset reverse 00000044 ABS 759 BFDFNCLOFS EQU 044 clear offset 00000048 ABS 760 BFDFNRESET EQU 048 reset controller 00000081 ABS 761 BFDFNDSE EQU 081 select data strobe early 00000082 ABS 762 BFDFNDSL EQU 082 select data strobe late 00000084 ABS 763 BFDFNRDS EQU 084 reset data strobe 764 00000230 ABS 765 BFDREAD EQU 0230 W read 766 * reads data (1035 words) if 0 stored 767 * reads check (115 words+time code) if 1 stored 768 * read header if 2 stored 769 * read data with hard sectoring if 3 stored 00000240 ABS 770 BFDWRITE EQU 0240 W write data 771 * data word = time code word to be written 00000250 ABS 772 BFDWRCH EQU 0250 W write check 773 * data word = time code expected 00000260 ABS 774 BFDFORMAT EQU 0260 W write format F0783C1E ABS 775 BFDFORMATW EQU 0F0783C1E data word for format operation 776 00000008 ABS 777 BFDSELECTB EQU 0008 select enable 778 * If this bit is set, the right 779 * three bits of this commands 780 * address are used to select a 781 * drive. This is the unit number 782 * which is not the same as drive number. 783 * unit number is the plug on the front 784 * of each drive, drive number is the 785 * cable position on the controller. 786 00003010 BYTE 787 BFDINTBIT EQU BIT 24 bit in store address indicates 788 * interrupt on completion 789 790 ********************************************************************************** 791 * * 792 * Definitions for the BTI Kludge Board * 793 * * 794 * Each disk drive has a BTI-installed kludge board in it * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 61 (IODEFS) F 7 I/O definitions 795 * that has two features: it contains a 1K prom containing * 796 * the drive's serial number, and the kludge board can * 797 * retract the heads from the disk under software control. * 798 * * 799 * The board is activated by doing a SEEK specifying * 800 * BFDMAGICHD as the head number. After this seek, the * 801 * Write-Protect status bit does not reflect the actual * 802 * Write-Protectedness of the disk, but is set to a bit * 803 * out of the on-board PROM corresponding to the selected * 804 * cylinder number. Additionally if the cylinder number * 805 * is BFDUNLDCYL, the heads are retracted from the disk. * 806 * * 807 ********************************************************************************** 808 000000FF ABS 809 BFDMAGICHD EQU 255 activates kludge board 000003FF ABS 810 BFDUNLDCYL EQU 1023 along with BFDMAGICHD, retracts disk heads 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 62 (IODEFS) F 7 I/O definitions 812 813 ********************************************************************************** 814 * * 815 * CIA (communications interface adapter) command codes * 816 * * 817 * The CIA interrupts the system about 9 times a second * 818 * (or whatever is set in TICKTIME) and each of those times * 819 * the system reads from the CIA to get any characters that * 820 * came in during that period. The system then writes any * 821 * characters for terminals that are outputting. * 822 * Reads from the CIA consist of an entry for each * 823 * terminal that either has had its status change, a change in * 824 * the number of characters in the output buffer, or has * 825 * characters in its input buffer. If a port is idle then * 826 * nothing is read for that port. If all of the ports on a * 827 * CIA are idle, the reads are only two characters long -- the * 828 * two terminating FF's. If the read buffer that the system * 829 * gave to the CIA is too small to hold all of the characters * 830 * that have been received then the terminating characters are * 831 * FE's and the system must do another read to get the rest of * 832 * the data. * 833 * The writes to the CIA consist of characters and * 834 * commands for any port that is outputting. The CIA has a * 835 * limited output buffer for each port (256 chars) so the * 836 * amount of output is tempered by the space left in the CIA * 837 * output buffer for that port (remaining output buffer count * 838 * is returned in the read). * 839 * Commands that go to a port can be mixed into the * 840 * character output stream and the commands will be done when * 841 * their turn to output occurs. Commands take up space in the * 842 * port's output buffer so their size must be accounted for. * 843 * There is a special type of read, called the Delayed * 844 * Read, that reads data from the CIA and terminates the read * 845 * when the memory buffer is full or the TICKTIME has passed. * 846 * The advantage of this is that one interrupt is saved for * 847 * each read. That is, using the regular read, the sequence * 848 * is: * 849 * 1) TICK interrupt * 850 * 2) Set up read * 851 * 3) Read end of operation interrupt * 852 * 4) Process read information * 853 * 5) Generate write information * 854 * 6) Set up write * 855 * 7) Write end of operation interrupt * 856 * 8) Return from interrupt to wait for next TICK * 857 * Using the delayed read, the sequence is: * 858 * 1) Delayed read end of operation interrupt * 859 * 2) Process read information * 860 * 3) Generate write information * 861 * 4) Set up write * 862 * 5) Write end of operation interrupt * 863 * 6) Set up delayed read * 864 * As you can see, the delayed read saves one interrupt * 865 * per TICK time and at about 9 tick interrupts a second that * 866 * is a big saving. * 867 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 63 (IODEFS) F 7 I/O definitions 868 * Notes on parity checking. The normal mode of the CIA * 869 * is to receive and transmit all 8 data bits. However, * 870 * parity generation may be selected via the secondary port * 871 * status selections in microcode revisions 7 and up. The * 872 * generation options are: set eighth bit to 1, odd parity, * 873 * and even parity. The generated bit replaces the data bit * 874 * supplied from the buffer. * 875 * If parity is being generated, it may optionally be * 876 * checked. If the received parity matches the proper parity * 877 * (as determined by the transmit options) then the eighth bit * 878 * is set to zero in the receive buffer. An error causes the * 879 * bit to be set to one and the 'framing error' bit in the * 880 * status is set. * 881 * * 882 ********************************************************************************** 883 00000008 ABS 884 CIABOARDS EQU 8 number of boards in CIA 00000008 ABS 885 CIAPPBRD EQU 8 number of ports on a board 00003430 BYTE 886 CIABRDF EQU BITS 26:28 board field 00000100 ABS 887 CIATRMBUFL EQU 256 number of characters in CIA's port buffer 888 00000201 ABS 889 CIAWHYINT EQU 0201 gets reason for interrupt and 890 * other info (status word 1) 00003E10 BYTE 891 CIATICK EQU BIT 31 on if timer tick 00003C10 BYTE 892 CIAFULL EQU BIT 30 on if some buffer more than half full 00003A10 BYTE 893 CIAEOP EQU BIT 29 on if end of operation 00003810 BYTE 894 CIAAEOP EQU BIT 28 on if abnormal EOP 00003610 BYTE 895 CIAERR EQU BIT 27 on if error - info given by CIAERROR 00000100 BYTE 896 CIACHARS EQU BITS 0:15 count of characters in input buffer 897 00000201 ABS 898 CIAINTACK EQU 0201 acknowledge interrupt processing 899 00000202 ABS 900 CIAINTMASK EQU 0202 get/set interrupt mask 901 * same bits as in CIAWHYINT 902 00000203 ABS 903 CIAERROR EQU 0203 get error log information 904 * format - ccnnnnpp 905 * cc = code for first error 906 * 011 - PPU handshake time out 907 * 012 - PPU data parity error 908 * 013 - PPU "head butt" 909 * 021 - receive fifo overflow 910 * 022 - transmit fifo overflow 911 * 031 - bad command 912 * 032 - CS path confused 913 * 033 - bad status request 914 * 041 - char in from non-existant port 915 * 081 - input buffer overflow 916 * 082 - output buffer overflow 917 * 083 - input buffer parity error 918 * 084 - output buffer parity error 919 * nnnn = count of errors 920 * pp = port number of first error 921 00000204 ABS 922 CIASREAD EQU 0204 store buffer size, starts transfer to memory 923 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 64 (IODEFS) F 7 I/O definitions 00000205 ABS 924 CIASWRITE EQU 0205 store buffer size, starts transfer from memory 925 00000206 ABS 926 CIASETTICK EQU 0206 get/set number of CIA ticks between interrupts 927 * CIA tick = 2.2 ms 0000000A ABS 928 CIATPS EQU 10 ticks per second 000001C6 ABS 929 CIATICKPSEC EQU 454 CIA ticks per second (1000/2.2) 0000002D ABS 930 CIATICKTIME EQU CIATICKPSEC/CIATPS number of CIA ticks between interrupts 931 00000207 ABS 932 CIASDREAD EQU 0207 store buffer size, starts delayed transfer to memory 933 00000080 BYTE 934 CIASRWACK EQU BITS 0:7 interrupt acknowledge 00001080 BYTE 935 CIASRWMSK EQU BITS 8:15 new Int mask 00002100 BYTE 936 CIASRWCNT EQU BITS 16:31 number of bytes in transfer 937 00000208 ABS 938 CIAVERSION EQU 0208 get version code "VVYYMMLL" 939 00000209 ABS 940 CIAMODE EQU 0209 set CIA operation mode 00000000 ABS 941 CIAMODEN EQU 0 normal operation mode 00000001 ABS 942 CIAMODET EQU 1 CIA test mode (cntl-B,etc) 00000002 ABS 943 CIAMODEM EQU 2 message "echo" mode 944 00000280 ABS 945 CIAPORT EQU 0280 get/set port info, indexed by port 946 00000080 BYTE 947 CIAPSTAT EQU BITS 0:7 on read, status of port, format is PORTxxxx 00001080 BYTE 948 CIAPOCH EQU BITS 8:15 on read, output space available (chars) 00002080 BYTE 949 CIAPICH EQU BITS 16:23 on read, number of input chars waiting 00003C10 BYTE 950 CIAPWAIT EQU BIT 30 on read, bit on if waiting for XON 00003E10 BYTE 951 CIAPMODM EQU BIT 31 on read, bit on if modem configuration 952 * , bit off if hardwire configuration 953 954 * EQU BITS 0:7 on write, port control or secondary port control 955 * (see CIAPSTS and *) 956 * PORT CONTROL 957 * for modem configuration 958 * EQU 008 set RTS 959 * EQU 010 set receive enable 960 * EQU 020 set DTR 961 * for hardwire configuration 962 * EQU 008 set CTS 963 * EQU 010 set receive enable 964 * EQU 020 set DSR 965 * EQU 040 set CD 966 * EQU 080 set RI 967 * for both 968 * EQU 001 two stop bits 969 * EQU 002 data 970 * EQU 004 break 971 * EQU 006 dwell 972 * SECONDARY PORT CONTROL 973 * EQU 001 two stop bits 974 * EQU 000 no parity 975 * EQU 002 set parity bit 976 * EQU 004 generate even parity 977 * EQU 006 generate odd parity 978 * EQU 008 check received parity (only if parity selected) 979 * EQU 010 set receive enable 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 65 (IODEFS) F 7 I/O definitions 980 * EQU 020 set break output holdoff processing 981 * EQU 040 set X-OFF processing 982 * EQU 080 set CTS processing 983 * EQU BIT 9 on write, do secondary port control 00001410 BYTE 984 CIAPECHO EQU BIT 10 on write, 1=echo on, 0=echo off 00001610 BYTE 985 CIAPSTS EQU BIT 11 on write, do port control 00001810 BYTE 986 CIAPFI EQU BIT 12 on write, flush input queue 00001A10 BYTE 987 CIAPFO EQU BIT 13 on write, flush output queue 00001C10 BYTE 988 CIAPSIB EQU BIT 14 on write, set input baud rate 00001E10 BYTE 989 CIAPSOB EQU BIT 15 on write, set output baud rate 00002100 BYTE 990 CIAPBAUD EQU BITS 16:31 on write, rate parameter 991 992 ********************************************************************************** 993 * The rough format of the input buffer elements is... * 994 * For ports with no status change. * 995 * Char 0 = 000 + port number * 996 * Char 1 = amount of space in output buffer * 997 * Char 2 = count of input characters transmitted with this read * 998 * Char 3... = the characters counted by Char 2. * 999 * For ports with a status change. * 1000 * Char 0 = 040 + port number * 1001 * Char 1 = amount of space in output buffer * 1002 * Char 2 = current status * 1003 * Char 3 = count of input characters transmitted with this read * 1004 * Char 4... = the characters counted by Char 3. * 1005 * For the end of the input buffer. * 1006 * Char 0 = 0FF (iff all terminals got a chance) * 1007 * = 0FE (iff buffer filled up first) * 1008 * Char 1 = * 1009 * * 1010 ********************************************************************************** 1011 1012 * In the port number the following bits appear 00003010 BYTE 1013 PORTLAST EQU BIT 24 the is the end of input flag 00003210 BYTE 1014 PORTSTAT EQU BIT 25 port status present 1015 * 1016 * the bits in the status character are: 00003010 BYTE 1017 PORTBOF EQU BIT 24 not input buffer overflow 00003210 BYTE 1018 PORTFFE EQU BIT 25 first framing error - cleared by read 00003410 BYTE 1019 PORTFBRK EQU BIT 26 first break - cleared by read 00003610 BYTE 1020 PORTBRK EQU BIT 27 break or framing error in progress 00003810 BYTE 1021 PORTRI EQU BIT 28 ring indicator on 00003A10 BYTE 1022 PORTCD EQU BIT 29 carrier detect on 00003C10 BYTE 1023 PORTDSR EQU BIT 30 data set ready on/data terminal ready 00003E10 BYTE 1024 PORTCS EQU BIT 31 clear to send on/request to send 1025 1026 ********************************************************************************** 1027 * * 1028 * The format for the output buffer is: * 1029 * For character output. * 1030 * Char 0 = 000 + port number * 1031 * Char 1 = count of output characters transmitted with this * 1032 * write (must be less than 128) * 1033 * Char 2... = the characters counted by Char 1. * 1034 * For command output. * 1035 * Char 0 = 000 + port number * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 66 (IODEFS) F 7 I/O definitions 1036 * Char 1 = Command code (always >= 080) * 1037 * Char 2.. = (optional parameters for the command) * 1038 * Note that we cleverly avoid putting out more than 128 * 1039 * characters in one element. Each TCQ that we copy into the * 1040 * CIA output buffer gets its own port number and output * 1041 * count. We limit the maximum size of the TCQs to a size * 1042 * that will hold less than 128 characters. * 1043 * * 1044 * Both characters and commands may be sent to the same * 1045 * port in one write as long as the output buffer has room. * 1046 * Commands are queued in the output buffer except for those * 1047 * marked 'done when received'. * 1048 * * 1049 ********************************************************************************** 1050 1051 * Command codes are: 00000081 ABS 1052 PORTCIRATE EQU 081 set input baud rate (done in stream) 00000082 ABS 1053 PORTCORATE EQU 082 set output baud rate (done in stream) 1054 * the above are followed by 2 characters holding the 1055 * rate constant = -(19200*3)/baud 00000083 ABS 1056 PORTCSTAT EQU 083 set port status (done in stream) 00003010 BYTE 1057 PORTSRI EQU BIT 24 ring indicator 00003210 BYTE 1058 PORTSCD EQU BIT 25 carrier detect 00003410 BYTE 1059 PORTSDTR EQU BIT 26 turn on data terminal ready/data set ready 00003810 BYTE 1060 PORTSRTS EQU BIT 28 turn on request to send/clear to send 1061 00000084 ABS 1062 PORTFLUSHO EQU 084 flush output queue (done when received) 1063 00000085 ABS 1064 PORTFLUSHI EQU 085 flush input queue (done when received) 1065 00000086 ABS 1066 PORTDWELL EQU 086 followed by 1 char giving count (done in stream) 1067 * of dwell times ( in character times ) 00000087 ABS 1068 PORTBREAK EQU 087 followed by 1 char giving count (done in stream) 1069 * of break times ( in character times ) 00000088 ABS 1070 PORTECHOON EQU 088 CIA echo on (done when received) 1071 00000089 ABS 1072 PORTECHOOF EQU 089 CIA port echo off (done when received) 1073 0000008A ABS 1074 PORTWRITIN EQU 08A write into port's input buffer (done when received) 1075 0000008B ABS 1076 PORTALWRIT EQU 08B write into all port's input buffers (done when received) 1077 0000008C ABS 1078 PORTCLRAIN EQU 08C clear all port's input buffers (done when received) 1079 0000008D ABS 1080 PORTCSTAT2 EQU 08D set port secondary status (done in stream) 00003010 BYTE 1081 PORTSCTS EQU BIT 24 enable clear to send processing 00003210 BYTE 1082 PORTSXOF EQU BIT 25 enable XON/XOFF processing (output) 00003410 BYTE 1083 PORTSBRK EQU BIT 26 enable no transmit when break (output) 00003610 BYTE 1084 PORTSRDE EQU BIT 27 enable (input) receive data enable (input) 00003810 BYTE 1085 PORTCHKPAR EQU BIT 28 check port's incoming character's parity 1086 * Currently parity checking is not supported by the OS. 00003A20 BYTE 1087 PORTPARITY EQU BITS 29:30 parity type for this port 1088 * If a parity type is specified that parity will be generated by 1089 * the comm. If parity checking is enabled PORTPARITY is what is 1090 * checked for. 00000000 ABS 1091 PORTNOPAR EQU 0 no parity generated (or checked) 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 67 (IODEFS) F 7 I/O definitions 00000001 ABS 1092 PORTHIBIT EQU 1 generate high bit on parity 00000002 ABS 1093 PORTEVENP EQU 2 generate even parity 00000003 ABS 1094 PORTODDP EQU 3 generate odd parity 00003E10 BYTE 1095 PORTSSTOP2 EQU BIT 31 enable two stop bits (output) 1096 0000008E ABS 1097 PORTCRESET EQU 08E do a port reset (done in stream) 00003610 BYTE 1098 PORTCRFBR EQU BIT 27 force buffer remaining return 00003810 BYTE 1099 PORTCRFS EQU BIT 28 force status return 00003A10 BYTE 1100 PORTCRCXON EQU BIT 29 clear XON wait 00003C10 BYTE 1101 PORTCRFO EQU BIT 30 flush output buffer 00003E10 BYTE 1102 PORTCRFI EQU BIT 31 flush input buffer 0000001F ABS 1103 PORTCRALL EQU 1*PORTCRFI+1*PORTCRFO+1*PORTCRCXON+1*PORTCRFS+1*PORTCRFBR 00000018 ABS 1104 PORTCRINIT EQU 1*PORTCRFBR+1*PORTCRFS port initializing parameters 1105 0000008F ABS 1106 PORTCZAP EQU 08F port reset (done when received) 1107 * Format identical to PORTCRESET 1108 1109 * The following are pseudo-commands. We process these in the 1110 * comm driver, but they do not get sent to the hardware. 00000090 ABS 1111 PORTPCINIT EQU 090 initialize port's interface state 1112 * If an input error occurs we link an element into the input TCQ chain 1113 * with this command code and the parameter is the error code. 00000091 ABS 1114 PORTIERR EQU 091 input error 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 68 (IODEFS) F 7 I/O definitions 1116 1117 ********************************************************************************** 1118 * * 1119 * 9 track magnetic tape * 1120 * The tape controller may have up to 4 units. Each * 1121 * unit may be an 800 NRZI unit or a 1600 PE unit or switch * 1122 * selectable between these two standards. Normal * 1123 * inter-record gap is .6 inches. * 1124 * * 1125 * Cartridge Tape * 1126 * The cartridge tape controller may have up to 4 units. * 1127 * They behave very much like conventional magnetic tape, * 1128 * except that any one of 4 tracks may be selected for bit * 1129 * serial recording. Density is 6400 BPI at 30 IPS and the * 1130 * normal tape cartridge has 300 ft. of tape in it. Normal * 1131 * inter-record gap is 1.3 inches. The tape always writes * 1132 * forward, so it must be rewound after every track. * 1133 * 450 ft. and 555 ft. tape cartridges are also * 1134 * available. A possible future change is a 7 track drive, * 1135 * where the extra three tracks run backward between the * 1136 * normal four. * 1137 * * 1138 * Video Tape * 1139 * The video tape controller may have up to 4 units. * 1140 * They behave in most respects like 9 track tape. A notable * 1141 * exception is in speed. While the data transfer rates are * 1142 * quite respectable, the rewind and wfm operations can be * 1143 * exceedingly tedious. * 1144 * * 1145 * Where differences occur between the various tape devices * 1146 * the CT status meaning is enclosed in [], the VT status * 1147 * differences are inclosed in {} and the SCSI MT differences * 1148 * are enclosed in <>. * 1149 * * 1150 ********************************************************************************** 1151 00000004 ABS 1152 NMTPUNITS EQU 4 number of units that can go on a controller 1153 0000C000 ABS 1154 MTDIOSIZE EQU 12*CPP maximum size for records on tape. 1155 * We don't allow any longer records since 1156 * the MT is too slow to allow a user to 1157 * lock up more memory than this. 1158 000047F8 ABS 1159 CTDIOSIZE EQU ((9*CPP)/2)-(2*CPW) maximum size for records on cartridge tape. 1160 * (Four-and-a-half pages minus two words.) 1161 * This number may not be any larger without 1162 * compromising the security of 4000/5000/6000 1163 * tape backups since they are not encrypted. 1164 * For public consumption, say that the CT is 1165 * too slow to allow a user to lock up more 1166 * memory than this. 1167 0000C000 ABS 1168 VTDIOSIZE EQU 12*CPP maximum size for records on tape. 1169 * We don't allow any longer records since 1170 * the VT is too slow to allow a user to 1171 * lock up more memory than this. 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 69 (IODEFS) F 7 I/O definitions 1172 1173 * In the device WRU: 00002080 BYTE 1174 MTIDSTEST EQU BITS 16:23 self-test results, 0 = ok 1175 * BITS 24:31 undefined 1176 * In the device WRU for VT 1177 * BITS 16:19 self test error code 1178 * 1 PPU bus error. Byte sent by Z80 does not equal byte 1179 * found on PPU bus. Bad bit(s) on PPU bus or SCSI HA. 1180 * 2 PPU timeout. PPU did not acknowledge byte sent by 1181 * SCSI HA or PPU failed to send an expected byte. 1182 * 3 PPU collision. PPU over-rides SCSI HA trying to send 1183 * a byte and sends a byte of its own. 1184 * 4 PPU BCC error. Block check character wrong for PPU 1185 * string received. 1186 * 5 PPU NACK. PPU nacked string received from SCSI HA. 1187 * Bad first byte or parity error. 1188 * 6 PPU command error. Unrecognized PPU command received. 1189 * 7 SCSI bus error. Byte sent by Z80 to SCSI target did 1190 * not match byte found on SCSI bus. 1191 * 8 SCSI bus empty. No targets found on SCSI bus. Note: 1192 * a target does not have to be ready to be found. 1193 * 9 SCSI timeout. SCSI target did not accept byte sent. 1194 * A SCSI bus parity error. Parity error in byte received 1195 * from SCSI target. 1196 * B Lost Arbitration. SCSI HA lost arbitration trying to 1197 * select a SCSI target. Another SCSI ID bit was on bus. 1198 * C No select. SCSI target did not select. 1199 * D SCSI bus not free. While trying to select a SCSI target 1200 * the SCSI bus was found not free. 1201 * E SCSI phase error. SCSI target did not change phases 1202 * properly during communications with SCSI HA. 1203 00000210 ABS 1204 MTLDSTAT EQU 0210 fetch primary status 00000010 BYTE 1205 MTSTDSC EQU BIT 0 drive state change 00000210 BYTE 1206 MTSTSCIEN EQU BIT 1 interrupt on state change enabled 00000410 BYTE 1207 MTSTANER EQU BIT 2 any error 1208 * BIT 3 unused [unused] 1209 * BIT 3 {buffer parity error} 1210 * BIT 3 <1 indicates a SCSI 9-track> 1211 1212 * BITS 4:5 unused 1213 * BITS 4:5 [track number] 1214 * BIT 4 {media error} 1215 * BIT 5 {tape motion error} 1216 * BITS 6:7 unit number returned 1217 00001010 BYTE 1218 MTSTEOF EQU BIT 8 EOF read 00001220 BYTE 1219 MTSTTMD EQU BITS 9:10 direction of last tape motion 1220 * EQU 0 not moved 00000001 ABS 1221 MTSTTMFW EQU 1 forward 00000002 ABS 1222 MTSTTMBK EQU 2 backward 00000003 ABS 1223 MTSTTMLOST EQU 3 lost 00001210 BYTE 1224 MTSTTMBKB EQU BIT 9 on if backward (or lost) 00001410 BYTE 1225 MTSTTMFWB EQU BIT 10 on if forward (or lost) 00001650 BYTE 1226 MTSTERSTAT EQU BITS 11:15 fatal error statuses 1227 * 00 no error 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 70 (IODEFS) F 7 I/O definitions 1228 * Error codes returned by MT (Rev 5 u-code) 1229 * 01 multi-track (hard) error reading pe data 1230 * 02 vertical parity error reading pe data 1231 * 03 vertical parity error reading nrzi data 1232 * 04 crc error reading nrzi data 1233 * 05 lrc error reading nrzi data 1234 * 06 no rdr while attempting to read data 1235 * 07 rate error while reading data 1236 * 08 rate error while writing data 1237 * 09 multi-track (hard) error writing pe data 1238 * 0A vertical parity error writing pe data 1239 * 0B vertical parity error writing nrzi data 1240 * 0C crc error writing nrzi data 1241 * 0D lrc error writing nrzi data 1242 * 0E bad check sum in string from PPU 1243 * 0F drive not ready for requested command 1244 * 010 bad (unrecognized) command 1245 * 011 illegal command with tape at bot/eot 1246 * 012 got more data after word count exhausted 1247 * 013 bad filemark read or written 1248 * 014 bad phase encoded id zone 1249 * 015 timeout: 80" of blank tape read 1250 * 016 got spurious NAK from PPU 1251 * 017 got bad first byte (not 96 or 62) 1252 * 018 data path parity error 1253 * 019 timed out PPU data path 1254 * Error codes returned by CT 1255 * 01 illegal drive 1256 * 02 illegal store 1257 * 03 illegal track 1258 * 04 illegal tape motion 1259 * 05 no go byte 1260 * 06 timeout during FF or rewind 1261 * 07 offline during FF or rewind or write gap 1262 * 08 load point hole late 1263 * 09 sync zone late 1264 * 0A IRG found when not expected 1265 * 0B dropout during write 1266 * 0C ID zone late 1267 * 0D leading ID zone bad 1268 * 0E word count CRC bad 1269 * 0F data CRC bad (MFM mode only) 1270 * 10 reverse word count check bad (GCR mode only) 1271 * 11 trailing ID zone bad 1272 * 12 trailing sync zone bad 1273 * 13 GCR byte count not match blockette number 1274 * 14 GCR record not recoverable / write error 1275 * 15 GCR read not all right but recoverable 1276 * 16 GCR record not recoverable 1277 * 17 EOT caused some other error to be detected 1278 * 18 BOT caused some other error to be detected 1279 * Error codes returned by VT (* = unit goes not ready) 1280 * 01 not used (hardware error) 1281 * 02 * unit not ready. 1282 * 03 non-recovered error due to flaw in tape or: 1283 * with EOT set, reached EOT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 71 (IODEFS) F 7 I/O definitions 1284 * with BOT set, reached BOT 1285 * 04 tape unit detected non-recoverable hardware 1286 * error during command or self test. 1287 * 05 tape received illegal request 1288 * 06 * unit attention. unit received a RESET or 1289 * cartridge was changed. 1290 * 07 cartridge has write protect set. 1291 * 08 blank check. blank tape encountered while reading 1292 * 09 tape mark detect error 1293 * 0A * copy aborted (not used) 1294 * 0B command aborted 1295 * 0C * not used 1296 * 0D volume overflow. Physical EOT reached on a write. 1297 * 0E * not used 1298 * 0F * reserved 1299 * 10 communications error 1300 * 11 * tape not present 1301 * 12 * power failure 1302 * 13 unused 1303 * 14 bad data received from tape unit after issuing 1304 * a request sense command. 1305 * Error codes returned by SCSI 9 track (* = unit goes not ready) 1306 * 01 recovered error 1307 * 02 * unit not ready. 1308 * 03 non-recovered error due to flaw in tape or: 1309 * with EOT set, reached EOT 1310 * with BOT set, reached BOT 1311 * 04 tape unit detected non-recoverable hardware 1312 * error during command or self test. 1313 * 05 tape received illegal request 1314 * 06 * unit attention. unit received a RESET or 1315 * cartridge was changed. 1316 * 07 cartridge has write protect set. 1317 * 08 blank check. blank tape encountered while reading 1318 * 09 vendor unique 1319 * 0A * copy aborted (not used) 1320 * 0B command aborted 1321 * 0C * not used 1322 * 0D volume overflow. Physical EOT reached on a write. 1323 * 0E * miscompare (not used) 1324 * 0F * reserved 1325 * 10 communications error 1326 * 11 * tape not present 1327 * 12 * power failure 1328 * 13 unused 1329 * 14 bad data received from tape unit after issuing 1330 * a request sense command. 1331 * 1332 * EQU BIT 16 unused 1333 * EQU BIT 17 WC < 0 1334 * EQU BIT 18 4 naks from PPU 1335 * EQU BIT 19 passed EOT on last command 1336 * EQU BIT 20 word count register = zero 1337 * EQU BIT 21 unused 1338 * EQU BIT 22 PPU interrupted our send 1339 * EQU BIT 23 0 sez completion interrupt, 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 72 (IODEFS) F 7 I/O definitions 1340 * 1 sez drive state change 1341 * 00002010 BYTE 1342 MTSTDPPE EQU BIT 16 [parity error on data from PPU in write] 1343 * EQU BIT 17 [overflow error] 1344 * EQU BIT 18 [underflow error] 1345 * EQU BIT 19 [WDL error] 1346 * EQU BIT 20 [RDL error] 1347 * EQU BIT 21 [unused] 1348 * EQU BIT 22 [good byte count in secondary status] 1349 * EQU BIT 23 [high for GCR, low for MFM] 1350 * 1351 * EQU BIT 16 {filemark error} 1352 * EQU BIT 17 {underrun} 1353 * EQU BIT 18 {write error 1} 1354 * EQU BIT 19 {servo system error} 1355 * EQU BITS 16:19 {if error code = #10 Z80 error code placed 1356 * here. (see selftest error codes above)} 1357 * EQU BIT 20 {word count reg = 0} 1358 * EQU BIT 21 {unused} 1359 * EQU BIT 22 {unused} 1360 * EQU BIT 23 {0 sez completion interrupt} 1361 * {1 sez drive changed state} 1362 * 1363 * EQU BITS 16:19 1365 * EQU BITS 16:23 00003080 BYTE 1366 MTSTDRVST EQU BITS 24:31 drive status 1367 * These bits are the drive status and are available both 1368 * here and for all four drives at once (each in its byte). 00003010 BYTE 1369 MTDST9 EQU BIT 24 9 track tape 1370 * EQU BIT 24 {unused} [hard EOT] 00003210 BYTE 1371 MTDSTEOT EQU BIT 25 end of tape 00003410 BYTE 1372 MTDSTRDY EQU BIT 26 drive ready [not rewinding] 00003610 BYTE 1373 MTDSTBOT EQU BIT 27 beginning of tape 1374 00003810 BYTE 1375 MTDSTWPRT EQU BIT 28 write protect 00003A10 BYTE 1376 MTDSTBREW EQU BIT 29 busy rewinding 00003A10 BYTE 1377 MTDSTTPK EQU BIT 29 [tape position known] 00003C10 BYTE 1378 MTDSTPRS EQU BIT 30 drive is present 00003E10 BYTE 1379 MTDSTDEN EQU BIT 31 density high [hard BOT] 1380 00000220 ABS 1381 MTLD2STAT EQU 0220 loads secondary status 1382 * BIT 0 parity type {unused} 1383 * BIT 1 density {unused} 1384 * BITS 16:31 word count 1385 00000240 ABS 1386 MTLDDRVST EQU 0240 load drive statuses 1387 * ww xx yy zz 1388 * ww drive status of unit 0 1389 * xx drive status of unit 1 1390 * yy drive status of unit 2 1391 * zz drive status of unit 3 1392 1393 * BIT 28 contains 1 if to select new drive 1394 * during a store. 1395 * BITS 30:31 contains new drive number 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 73 (IODEFS) F 7 I/O definitions 1396 00000008 ABS 1397 MTSELECT EQU 008 add to any of the following stores for 1398 * unit select 00000080 ABS 1399 MTINTREQ EQU 080 add to any of the following for 1400 * interrupt on completion 00000200 ABS 1401 MTCMRESET EQU 0200 reset 1402 00000230 ABS 1403 MTCMFUNC EQU 0230 issue function 00000001 ABS 1404 MTFNCYCLE EQU 0001 cycle 00000002 ABS 1405 MTFNREWIND EQU 0002 rewind 00000004 ABS 1406 MTFNSEFB EQU 0004 search end file backward 00000005 ABS 1407 MTFNSEFF EQU 0005 search end file forward 00000006 ABS 1408 MTFNBKSP EQU 0006 backspace 00000007 ABS 1409 MTFNFWSP EQU 0007 forward space 00000008 ABS 1410 MTFNDSCIOF EQU 0008 drive state change interrupt disable 00000009 ABS 1411 MTFNDSCION EQU 0009 drive state change interrupt enable 0000000A ABS 1412 MTFNOFFL EQU 000A rewind and set off line 0000000C ABS 1413 MTFNDENSEL EQU 000C density select, this code + density 00000010 ABS 1414 MTFNTRSEL EQU 0010 [track select, this code + track number] 00000018 ABS 1415 MTFNWFM EQU 0018 write file mark 1416 00000240 ABS 1417 MTCMREAD EQU 0240 read 1418 00000250 ABS 1419 MTCMWRITE EQU 0250 write 1420 00000260 ABS 1421 MTCMERASE EQU 0260 erase 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 74 (IODEFS) F 7 I/O definitions 1423 1424 ********************************************************************************** 1425 * * 1426 * LINE PRINTER. * 1427 * The line printer controller will drive one of several * 1428 * different types of line printers. It supports a virtual * 1429 * forms control unit and does all forms control character * 1430 * processing. It accepts one line at a time and handles the * 1431 * print of it -- it's not very difficult. * 1432 * * 1433 ********************************************************************************** 1434 00000080 ABS 1435 LPINT EQU 1*BIT 24 if on in address, enables interrupts 1436 1437 * In the device WRU: 00002080 BYTE 1438 LPWRUOPT EQU BITS 16:23 printer options selected 00003010 BYTE 1439 LPWRUPPUE EQU BIT 24 on if error on last PPU status 00003460 BYTE 1440 LPWRUITYP EQU BITS 26:31 printer interface type 1441 00000200 ABS 1442 LPNOP EQU 0200 W no operation 1443 00000201 ABS 1444 LPCLRCTL EQU 0201 W Clear control bits 00000202 ABS 1445 LPSETCTL EQU 0202 W Set control bits 1446 0000020C ABS 1447 LPLOADVFU EQU 020C W load vertical forms unit 1448 * (data = number of lines per page) 1449 00000210 ABS 1450 LPSKIP EQU 0210 W skip lines (data = number of lines) 1451 00000220 ABS 1452 LPSTATUS EQU 0220 R fetch current status 00000010 BYTE 1453 LPSTFAULT EQU BIT 0 line printer fault 00000210 BYTE 1454 LPSTOOP EQU BIT 1 out of paper 00000610 BYTE 1455 LPSTBUFE EQU BIT 3 on if buffer empty 00000840 BYTE 1456 LPSTERROR EQU BITS 4:7 error code 1457 * EQU 00 no error 1458 * BC EQU 01 bad command (unknown loc) 1459 * OF EQU 02 input overflow (write when buf full) 1460 * VOF EQU 03 too many lines for VFU 1461 * VFU0 EQU 04 zero lines in VVFU 1462 * DPOF EQU 05 data path overflow (too many bytes) 1463 * WRT0 EQU 06 zero-length write command 1464 * WRBAD EQU 07 write command while previous one in progress 1465 * DPUF EQU 08 data path underflow (too few bytes from PPU) 1466 * VFU1 EQU 09 first line of VVFU is not channel 1 1467 * DPPE EQU 0A data path parity error 1468 * MANY EQU 0F multiple errors have occurred 00001410 BYTE 1469 LPSTVFU EQU BIT 10 VFU enabled 00001610 BYTE 1470 LPSTPSKP EQU BIT 11 perforation skip enabled 00001840 BYTE 1471 LPSTUNIT EQU BITS 12:15 controller unit number (from dip switches) 00002410 BYTE 1472 LPSTREADY EQU BIT 18 line printer is ready 00002E10 BYTE 1473 LPSTBUFRDY EQU BIT 23 controller buffer ready for another line 00003010 BYTE 1474 LPSTIPRE EQU BIT 24 interrupt because of protocol error (see LPSTERROR) 00003410 BYTE 1475 LPSTILINE EQU BIT 26 interrupt because on/off line 00003610 BYTE 1476 LPSTBADWRT EQU BIT 27 interrupt because last write not successful 00003C10 BYTE 1477 LPSTIVFU EQU BIT 30 interrupt because load VVFU completed 00003E10 BYTE 1478 LPSTIRDY EQU BIT 31 interrupt because input buffer ready 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 75 (IODEFS) F 7 I/O definitions 1479 00000240 ABS 1480 LPWRITE EQU 0240 W write line (data described below) 00001E10 BYTE 1481 LPWRFORM EQU BIT 15 first character of line is forms control 00002C20 BYTE 1482 LPWRHDR EQU BITS 22:23 number of characters to ignore at beginning of line 00003080 BYTE 1483 LPWRLNTH EQU BITS 24:31 length of line (including header and forms chars) 13 INPUT DISKDEFS disk structure definitions 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 76 (DISKDEFS) F 8 Disk Data Structures 4 00000000 5 CRANDALL LABEL to recapture all of this space 00000400 ABS 6 BLOCKSIZE EQU WPP size of the data areas on mass storage 0000000B ABS 7 FBILNTH EQU 11 file block identifier length 8 08000000 ABS 9 REVVOLUME EQU 008000000 volume format revision herein described 18000000 ABS 10 REVMNTVOL EQU 018000000 volume format revisions we can mount 10000000 ABS 11 REVVOLLRAF EQU 010000000 this bit indicates that the volume format 12 uses FDLRAF instead of FDRAFTYPE 00000000 ABS 13 REVBACKUP EQU 0 revision of backup format 14 15 ********************************************************************************** 16 * * 17 * MASS STORAGE ADDRESSES * 18 * * 19 * Each volume on a system is identified by a volume * 20 * number. This volume number is assigned when a pack is * 21 * mounted. * 22 * Data stored on volumes is organized into blocks * 23 * consisting of a page of data and a file block identifier * 24 * (qv). Volumes may only be accessed by reads and writes of * 25 * entire blocks. * 26 * Within a volume, each file block has a unique address. * 27 * These addresses always start at zero and increment by one * 28 * for each block. These addresses are used by the MS driver * 29 * to calculate the physical location of the block, so some * 30 * addresses may represent bad tracks. These blocks do not * 31 * have spares assigned, rather, they are identified in a list * 32 * called BADTRAX and are never assigned. * 33 * The volume number and the block number are often * 34 * combined into a single word according to these definitions. * 35 * * 36 ********************************************************************************** 37 00001180 BYTE 38 MSBLKFIELD BITS (32-MSBLKLOG):31 block number field right justified 00000080 BYTE 39 VOLFIELD BITS 0:(31-MSBLKLOG) volume number field 40 41 ********************************************************************************** 42 * * 43 * Certain types of files, .CODEs, .RAFs, .SAFs all use * 44 * the same addressing convention to specify a certain * 45 * location. This convention is a block number followed by a * 46 * byte offset. In the case of .RAFs the block number is * 47 * split into a major and minor block index. The following * 48 * definitions describe the above. * 49 * * 50 ********************************************************************************** 51 00000140 BYTE 52 PGNUMFLD EQU BITS 0:19 page number field 000000A0 BYTE 53 PGNUMFLDMAJ EQU BITS 0:9 major index within the page field 000014A0 BYTE 54 PGNUMFLDMIN EQU BITS 10:19 minor index within the page field 000028C0 BYTE 55 BYTEDISP EQU BITS 20:31 byte displacement field 56 57 ********************************************************************************** 58 * * 59 * RAD40 PACK * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 77 (DISKDEFS) F 8 Disk Data Structures 60 * Six characters may be packed into 32 bits by using a * 61 * multiply-add technique with a radix of 40 decimal. * 62 * Identifiers (file names, account names, volume names, and * 63 * passwords) consist of two such words (12 characters). * 64 * Extensions (file name extensions, division/project * 65 * specifiers, and system names) consist of one such word. * 66 * Division/project are packed and a divide is required * 67 * to separate them. Since these numbers are unsigned, MODIF * 68 * must be used for the divide. In some code, the extra * 69 * register is not available (and the extra instructions are * 70 * undesirable) so we do the divide in two parts. First, the * 71 * power of 2 part is accomplished by a CBM or ZBM. Then the * 72 * remaining factors are gotten by a real divide that always * 73 * has positive operands. * 74 * The characters to be code converted for packing are: * 75 * char code (decimal) * 76 * ---- ---- * 77 * space 0 * 78 * 0-9 1-10 * 79 * A-Z 11-36 * 80 * a-z 11-36 * 81 * cntl A-Z 11-36 (allowed only in passwords) * 82 * ! 37 * 83 * & 38 * 84 * underscore 39 * 85 * Identifiers less than 'A ' are not allowed. * 86 * Identifiers greater than or equal to '!' are not allowed. * 87 * Embedded blanks are not allowed. A null file name followed * 88 * by an extension indicates a hardware type (e.g. .LP for a * 89 * line printer). * 90 * * 91 ********************************************************************************** 92 0000FA00 ABS 93 DVSNDISP EQU 40 POWER 3 to extract division field 00000170 BYTE 94 DVSNPART1 EQU BITS 0:(31-9) power of two part of DVSNDISP 0000007D ABS 95 DVSNPART2 EQU DVSNDISP/(2 POWER 9) the remaining factors 96 97 ********************************************************************************** 98 * * 99 * ACCOUNT NAME FORMAT * 100 * ACCOUNT STRUCTURE * 101 * The format of account names is: * 102 * . . * 103 * Each element is RAD packed and consists of characters * 104 * from the 40 character rad pack set. may not * 105 * begin with a digit. * 106 * is from 0 to twelve characters. * 107 * is 0 to 3 characters. (It must be 3 non- * 108 * blank characters if projects are to be specified). * 109 * is 0 to 3 characters. * 110 * * 111 * Certain accounts (many of these have null account * 112 * names) are assigned control functions. * 113 * * 114 * 1.) .!!! - BTI supplied library * 115 * 2.) SYSTEM.!!! - System software account * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 78 (DISKDEFS) F 8 Disk Data Structures 116 * 3.) OFFLINE.!!! - Maintenance account * 117 * 4.) MANAGER.!!! - Maintenance manager * 118 * 5.) .SYS - Owner supplied public library * 119 * 6.) xxx.SYS - Operator accounts * 120 * 7.) .&xxxxx - Proprietary account * 121 * 8.) .fff - Division library * 122 * 9.) .fffppp - Project library * 123 * 10.) MANAGER.SYS - System manager * 124 * 11.) MANAGER.fff - Division manager * 125 * 12.) MANAGER.fffppp - Project manager * 126 * * 127 ********************************************************************************** 128 129 ********************************************************************************** 130 * * 131 * DATE-TIME FORMAT * 132 * A system time value is a 44 bit integer representing * 133 * millisecond intervals from 0000 17 Nov, 1858. This choice * 134 * has been made to match the Julian day count commonly used * 135 * by astronomers. * 136 * The stored time is the time as provided by the system * 137 * clock. Any known clock errors are corrected in the system * 138 * clock by the delete/increment count commands. The clock * 139 * count is treated as if all days from the epoch were of * 140 * equal length. This means that leap seconds and the varying * 141 * second is ignored. The time as stored by the system will * 142 * always be universal time. Users may request the time with * 143 * time zone corrections applied and/or already unpacked into * 144 * year/month/day/time. * 145 * Many of the uses of the date do not require the * 146 * millisecond resolution provided by the entire 44 bit * 147 * quantity. The upper 32 bits of the date word (DATEHORD) * 148 * are used in these cases. The resolution of DATEHORD is * 149 * about 4 seconds. * 150 * Since the system date-time is used for file serial * 151 * numbers, backup and purge control, and the like, it is very * 152 * important that it be irreversable, and nearly correct. * 153 * When the operator specifies a correction, the software * 154 * applies it at a rate no faster than 1000 ppm. * 155 * Additionally, the software attempts to calculate the rate * 156 * error in the clock and will apply corrections for it up to * 157 * 35 ppm. * 158 * * 159 ********************************************************************************** 160 161 * For the use of the 64 bit date format 162 BASE R0 163 BSSB 20 unused 00082800 0 ZBM 164 DATEHORD BSSB 32 high order (4 second resolution) 165 BSSB 12 low order 166 DRCT 167 168 ********************************************************************************** 169 * * 170 * Definitions of various labels for quantities of time * 171 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 79 (DISKDEFS) F 8 Disk Data Structures 172 ********************************************************************************** 173 000003E8 ABS 174 MSECSS EQU 1000 milliseconds per second 0000EA60 ABS 175 MSECSM EQU 60*MSECSS milliseconds per minute 0036EE80 ABS 176 MSECSH EQU 60*MSECSM milliseconds per hour 05265C00 ABS 177 MSECSD EQU 24*MSECSH milliseconds per day 178 179 * Intervals for 32 bit time words (DATEHORD) 180 * Several users depend on truncation rather than rounding. 181 0000000E ABS 182 FOURSECSM EQU MSECSM/(2 POWER 12) 4.096 seconds per minute 0000036E ABS 183 FOURSECSH EQU MSECSH/(2 POWER 12) 4.096 seconds per hour 00005265 ABS 184 FOURSECSD EQU MSECSD/(2 POWER 12) 4.096 seconds per day 185 186 ********************************************************************************** 187 * * 188 * Definitions for the Non-Volatile Memory * 189 * The SSU has a non-volatile memory. The memory is * 190 * electronicly alterable by byte but retains information even * 191 * with no power. The original SSUs stored only 128 bytes. The * 192 * revised SSUs (rev 14 and later) store 2048 bytes. The memory * 193 * is read and written by byte. Since the write operation is * 194 * quite slow and a power fail during a write leaves the * 195 * location with random data, we must allow for such errors in * 196 * our processing of the data. We do this by storing some data * 197 * twice and having a flag that tells which to use. * 198 * Note that we define each of the 128 bytes in the NVM * 199 * by a BASE offset. This is because the SSU returns the byte * 200 * right justified in a whole word and stores the byte out of * 201 * the right character on a store. The definitions, * 202 * therefore, correspond to the word offsets that the system * 203 * must use. * 204 * * 205 ********************************************************************************** 206 00000080 ABS 207 NVMSIZE EQU 128 number of bytes in original (small) NVM 00000002 208 NVMBASE BASE 209 00000000 DISP 210 NVMRFPPW BSS 1 flag for remote front panel password 00000001 DISP 211 NVMRFPPW1 BSS 8 00000009 DISP 212 NVMRFPPW2 BSS 8 213 00000011 DISP 214 NVMLFPPW BSS 1 local front panel password 00000012 DISP 215 NVMLFPPW1 BSS 8 0000001A DISP 216 NVMLFPPW2 BSS 8 217 218 * The preceeding definitions are used by the SSU microcode 219 * as well as others. 220 221 * The PROMBOOT code uses the following password. For systems 222 * without removable mass storage, the system installation or 223 * recovery from serious problems involves loading the system 224 * software from mag tape (9 track or Cartridge). In order to 225 * protect our proprietary interests, these bootstrap tapes 226 * must be encrypted. This is the only location suitable for 227 * the storage of the password for this encryption. It is also 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 80 (DISKDEFS) F 8 Disk Data Structures 228 * entirely appropriate for such storage (my, what luck). 229 * Note that BTI must maintain lists of this password for all 230 * sites, since if a major disaster befalls a site, its backup 231 * tapes cannot be recovered without this password. 232 00000022 DISP 233 NVMTAPEPW BSS 8 password for mag tape boot 234 235 BSS 9 filler (very old location for clock values) 236 00000033 DISP 237 NVMDATDRFT BSS 1 clock drift 238 BSS 4 filler 239 00000038 DISP 240 NVMSSUSN BSS 4 SSU serial number 241 0000003C DISP 242 NVMSSN BSS 4 system serial number 243 00000040 DISP 244 NVMMAXMCU BSS 1 max number of MCU's paid for 00000001 ABS 245 NVMFACMCU EQU 1 in units of one 246 00000041 DISP 247 NVMMAXPAGE BSS 1 max pages of memory paid for 00000020 ABS 248 NVMFACPAGE EQU 32 in units of 32 pages 249 00000042 DISP 250 NVMMAXCPU BSS 1 max number of CPUs paid for 00000001 ABS 251 NVMFACCPU EQU 1 in units of one 252 00000043 DISP 253 NVMMAXPPU BSS 1 max number of PPU's paid for 00000001 ABS 254 NVMFACPPU EQU 1 in units of one 255 00000044 DISP 256 NVMMAXACC BSS 1 max number of comm controllers paid for 00000001 ABS 257 NVMFACACC EQU 1 in units of one 258 00000045 DISP 259 NVMMAXPORT BSS 1 max number of ports paid for 00000008 ABS 260 NVMFACPORT EQU 8 in units of 8 261 00000046 DISP 262 NVMMAXMSC BSS 1 max number of disk controllers paid for 00000001 ABS 263 NVMFACMSC EQU 1 in units of 1 264 00000047 DISP 265 NVMMAXDISK BSS 1 max number of disk drives paid for 00000001 ABS 266 NVMFACDISK EQU 1 in units of 1 267 00000048 DISP 268 NVMMAXLPC BSS 1 max number of LP controllers paid for 00000001 ABS 269 NVMFACLPC EQU 1 in units of 1 270 00000049 DISP 271 NVMMAXCTC BSS 1 max number of CT controllers paid for 00000001 ABS 272 NVMFACCTC EQU 1 in units of 1 273 0000004A DISP 274 NVMMAXCTU BSS 1 max number of CT drives paid for 00000001 ABS 275 NVMFACCTU EQU 1 in units of 1 276 0000004B DISP 277 NVMMAXMTC BSS 1 max number of MT controllers paid for 00000001 ABS 278 NVMFACMTC EQU 1 in units of 1 279 0000004C DISP 280 NVMMAXMTU BSS 1 max number of MT drives paid for 00000001 ABS 281 NVMFACMTU EQU 1 in units of 1 282 0000004D DISP 283 NVMMAXVTC BSS 1 max number of VT controllers paid for 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 81 (DISKDEFS) F 8 Disk Data Structures 00000001 ABS 284 NVMFACVTC EQU 1 in units of 1 285 0000004E DISP 286 NVMMAXVTU BSS 1 max number of VT drives paid for 00000001 ABS 287 NVMFACVTU EQU 1 in units of 1 288 289 BSS 1 filler of 1 bytes available for use 290 291 * These are the NVM clock values. There are 4 4 byte clock 292 * values taken collectively to keep the last known date. 293 * Each time the date is to be updated we write to the oldest 294 * 4 byte value in the group. Note that locations 2A:32 are 295 * no longer used for this purpose. Note also that the newest 296 * revision of the SSU has vastly expanded NVM and that the 297 * clock values for those SSUs are stored in the newly added 298 * NVM space. 299 00000004 ABS 300 NVMCLKBYTS EQU 4 number of bytes per clock value 00000050 DISP 301 ONVMCLOCKS BSS NVMCLKBYTS*4 NVM clock dates 302 00000010 ABS 303 NVMDEADCNT EQU 010 number of death flags (16) 00000060 DISP 304 NVMDEATHE BSS 0 end of death table 305 BSS NVMDEADCNT*2 allocate NVM death flags 306 00000080 DISP 307 NVMDEATH BSS 0 start of death flag table 308 * each is two bytes long and is the 309 * upper 16 bits of the target time 310 * for the indicated subsystem. 311 * These flags start at NVMDEATH and work backwards 312 * to NVMDEATHE. Flag 0 (VRM) is currently positioned 313 * at locations 7E:7F. 314 315 * The codes that are assigned for the "program number" are: 316 * 0 (7E) - Operating system (VRM) 317 * 1 (7C) - "InHouse" diagnostics. This exists to turn off any 318 * inhouse programs that BTI does not wish to go out 319 * into the field. This code is true when the machine 320 * is at BTI and false when the machine goes into the field. 321 * 2 (7A) - Assembler 322 * 3 (78) - Edit 323 * 4 (76) - Basic 324 * 5 (74) - Cobol 325 * 6 (72) - DBMS 326 * 7 (70) - FMS 327 * 8 (6E) - Pascal 328 * 9 (6C) - Fortran 329 * 10(6A) - PCLINK 330 * 11(68) - Basicx 331 * 12-15 are unused 332 * 333 * 334 * As of version 14 of the SSU the NVM has been increased to 335 * 2K, so there is ample room to store a variety of clock 336 * values. There will be 64 new clock values starting at 337 * byte address #300 and extending through #3FF. 338 * 339 BSS 640 push clock values to end of first 1K. 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 82 (DISKDEFS) F 8 Disk Data Structures 00000300 DISP 340 NNVMCLOCKS BSS NVMCLKBYTS*64 new clock values 341 342 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 83 (DISKDEFS) F 8 Disk Data Structures 344 345 ********************************************************************************** 346 * * 347 * MASS STORAGE ORGANIZATION * 348 * This file describes all data structures that are * 349 * present on a volume. Most of these data structures are * 350 * present on every volume that the system recognizes. The * 351 * definitions are not necessarily in the most desirable order * 352 * because the element lengths must be defined before the * 353 * definitions for the block that holds them. * 354 * * 355 * These data structures and the transactions used to * 356 * update them have been designed to prevent the loss of data * 357 * during system crashes, operator errors, etc. Consequently, * 358 * they may be sub-optimal in terms of execution time or * 359 * space. See the section on crash resistance. * 360 * * 361 * These structures are divided into several groups: * 362 * 1.) those that control the recording media * 363 * 2.) those that control the data structure * 364 * 3.) those that control space allocation and use * 365 * * 366 * When a disk pack is placed on-line, or when it is * 367 * certified, certain information is placed on it that is * 368 * unique to the physical medium. * 369 * * 370 * This information should remain separate from that * 371 * associated with the volume. That is, when a volume is * 372 * copied, the hardware unique items are not copied at all, * 373 * but are taken from the new medium. * 374 * * 375 * The tables associated with the physical medium are: * 376 * 1.) pack label * 377 * 2.) bad trax list * 378 * 3.) bootstrap routine * 379 * * 380 * The pack label, volume label (discussed later), and * 381 * the bootstrap occupy fixed addresses. The two labels * 382 * contain pointers to the other tables. * 383 * * 384 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 84 (DISKDEFS) F 8 Disk Data Structures 386 387 ********************************************************************************** 388 * * 389 * CRASH RESISTANCE * 390 * In order to enhance maintainability, reliability, and * 391 * security, all mass storage structures and transactions are * 392 * designed around a set of goals collectively called * 393 * crashproofing. These goals are: * 394 * 1.) The mass storage structures must be 'safe' and * 395 * accurately represent the actual state of the volume * 396 * at the completion of every write. This is so that * 397 * any system crash, at any time, for any reason, will * 398 * leave the MS structures in a reasonable state for * 399 * restart. (This saves unbelievable amounts of * 400 * skilled field service labor to put systems back * 401 * together, which also helps customer relations). * 402 * 2.) The loss of one block on mass storage must never * 403 * cause the loss of more than one block of user * 404 * data. Note that this implies that the information * 405 * in essentially all system tables be duplicated. * 406 * In most cases this duplicated information is * 407 * distributed in various FBIs and a disk scan is * 408 * needed to recover it. * 409 * * 410 * Note that goal (1) can not protect against these * 411 * problems: * 412 * 1.) software or hardware errors corrupt the data * 413 * being written. * 414 * 2.) A block is read incorrectly with no indication of * 415 * an error. If the system does not determine that * 416 * the block is bad (inconsistent, internal checksum * 417 * failure, etc.) the results are unpredictable. * 418 * * 419 * Note also that goal (1) presumes that each mass * 420 * storage write completes successfully. If the system stops * 421 * because of a crash, the PPU will continue to transfer data * 422 * to the mass storage controller, so the block write should * 423 * complete successfully. If the system stops because of a * 424 * power failure, the controller will abort the operation if * 425 * the write has not actually started, otherwise, it will * 426 * attempt to finish the write. In any event, the system * 427 * power fail recovery routine will re-do the transfer when * 428 * power is restored. The most vulnerable areas are as * 429 * follows: * 430 * 1) The system stops because of a bus error during * 431 * a mass storage write. The PPU is no longer able * 432 * to transfer data over the bus, and the write will * 433 * die in the middle. This is awkward, because there * 434 * is really no practical recovery mechanism which * 435 * would allow the system to retry the transfer. * 436 * 2) The operator turns off a mass storage device and * 437 * removes the media (or removes the media during a * 438 * power failure). A write may have been aborted when * 439 * the device went off line, which it will do with * 440 * no warning (at least, in the currently available * 441 * devices). * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 85 (DISKDEFS) F 8 Disk Data Structures 442 * 3) A power failure occurs during a write, and the * 443 * recovery never occurs (due to loss of volatile * 444 * memory, disassembly of the system, etc.). * 445 * * 446 * Goal (2) is established to ensure that the loss of * 447 * mass storage blocks for any reason has a limited effect on * 448 * the system users. When a mass storage error is detected, * 449 * the system will usually be able to continue operation and * 450 * inform the affected user and the system operator of the * 451 * problem. However, certain errors will cause a situation in * 452 * which no safe continuation is possible and the system will * 453 * display an error code and stop. * 454 * * 455 * A permanent read error in a user file will cause that * 456 * data to be lost. In user directories, read errors may * 457 * cause the unavailability of all or part of that users data. * 458 * In system tables, such as the IDX, they may make the entire * 459 * volume unusable. Due to the severity of this problem, some * 460 * critical tables are duplicated. During table writes, both * 461 * versions are written. During table reads, the first error * 462 * free read from either table is accepted. * 463 * * 464 * It is, however, possible to scan the volume and * 465 * reconstruct tables on the basis of the FBI information. * 466 * This requires a small amount of heuristics, but is not * 467 * impractical (heuristic because blocks not yet freed contain * 468 * obsolete FBI information and must be recognized. The space * 469 * freer attempts to destroy some of the worst offenders * 470 * first.). * 471 * * 472 * By keeping these guidelines in mind, the intent of * 473 * each updating scheme should be clear: * 474 * 1.) multiple assignment of blocks is strictly forbidden!! * 475 * 2.) loss of unused file blocks in a crash is of * 476 * little concern since they may be recovered by * 477 * recreate or backup. * 478 * 3.) a crash at any time should leave either the old * 479 * structure or the completed new structure, never an * 480 * intermediate structure that is ambiguous or confusing. * 481 * This generally means that the more junior table * 482 * must be created first and removed last. * 483 * * 484 * Even relatively complex structures can be handled in a * 485 * crash resistant manner by using the worst case technique of * 486 * creating an entirely new data structure (containing the new * 487 * information and a copy of any previous information being * 488 * retained), updating the block that points to it, then * 489 * freeing the old structure. * 490 * * 491 * Note that the internal structure of the block must be * 492 * complete at the time that it is written to its permanent * 493 * location on the volume. That is, if a user program is * 494 * swapped, the partially updated tables that it controls must * 495 * not be written (back) to their permanent locations. They * 496 * must be retained strictly in resident memory. A cursory * 497 * analysis of table updating indicates that swapping during * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 86 (DISKDEFS) F 8 Disk Data Structures 498 * updates would usually result in garbage if a crash * 499 * occurred. The system avoids the problem by locking the * 500 * affected pages into main memory where necessary. Another * 501 * technique not used by this system is to allocate a scratch * 502 * block for the swapping of such pages during their * 503 * modification. * 504 * * 505 * At the time of a crash, there may be several users * 506 * updating tables. As long as the crashproofing rules are * 507 * followed for each transaction individually, and the * 508 * transactions do not interfere with one another (normal * 509 * multiprocessing rules apply), there will be no defects as a * 510 * result of having multiple occurrences of acceptable funnys * 511 * (unfreed blocks, sections of files being unwritten, new * 512 * data structures not linked in, etc.). * 513 * * 514 * Under the description of each table are listed the * 515 * rules governing its updating. Tables that stand alone * 516 * might not have any special updating procedure. Table * 517 * updates involving several different tables are included or * 518 * referenced under each table description. * 519 * * 520 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 87 (DISKDEFS) F 8 Disk Data Structures 522 523 ********************************************************************************** 524 * * 525 * MASS STORAGE ERRORS * 526 * The mass storage drivers will normally retry failing * 527 * transfers according to generally accepted recovery * 528 * procedures. * 529 * * 530 * For mass storage hardware that has error correction * 531 * capability, most rereads will not be necessary, though it * 532 * may be desirable to classify transfers as follows: * 533 * 1.) no errors * 534 * 2.) correctable data error, retry gave no error * 535 * 3.) correctable data error, retry gave another * 536 * correctable error (correction is not attempted until * 537 * the simpler retry operation is tried) * 538 * 4.) data error not corrected on first read, but * 539 * ultimately recovered * 540 * 5.) permanent data error * 541 * 6.) permanent data error, the disk drive appears * 542 * to be faulty (as verified by test reads of * 543 * other blocks [such as bad trax list]) * 544 * 7.) permanent data error, the disk controller * 545 * appears to be faulty (as verified by test * 546 * reads of other units) * 547 * 8.) no error status, but FBI checksum or block * 548 * number wrong * 549 * * 550 * Condition 8 could indicate a problem with the * 551 * controller, the channel, or a problem at the time of the * 552 * previous write. It should promptly cause a system halt * 553 * except in the case of a maintenance read. If a controller * 554 * problem causing write errors is discovered, the faulty * 555 * blocks must all be rectified to prevent their reappearence * 556 * as a later case of the plague. * 557 * * 558 * Condition 7 on any volume or condition 6 on the system * 559 * volume are grounds for an immediate halt. Any attempt to * 560 * terminate system operation more normally runs the risk of * 561 * irretrievably damaging the data structures. * 562 * * 563 * Condition 2 should be treated as no error since it is * 564 * probably caused by transient conditions unrelated to the * 565 * media, although a history of these is indicative of a bad * 566 * track or a hardware problem. * 567 * * 568 * Conditions 2 through 5 should cause an entry into the * 569 * disk error log (or possibly just the normal system log * 570 * file). * 571 * * 572 * Conditions 3 through 5 and possibly also 2 should * 573 * cause an entry in the bad trax list of this medium, * 574 * indicating the type of error for analysis when the medium * 575 * is reformatted and to prevent a recreate from using these * 576 * potentially bad blocks. * 577 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 88 (DISKDEFS) F 8 Disk Data Structures 578 * Conditions 3 and 4 should cause the block to be * 579 * rewritten in a new location, and an entry made in the * 580 * substitution list. * 581 * * 582 * When the system is idle or has excess disk transfer * 583 * capacity, it may be desirable to investigate each head of * 584 * each disk periodicly. These reads could provide early * 585 * detection of head crashes. To be useful, of course, the * 586 * system must be able to unload the heads. A list of test * 587 * blocks may be maintained (one for each head) so that the * 588 * mass storage driver can write as well as read to test for * 589 * malfunctions. Alternatively, the innermost cylinder of * 590 * each drive could be reserved for diagnostic purposes. Such * 591 * a reserved area could be used both for diagnostics and for * 592 * a crashdump area. * 593 * * 594 * Test reads could also comprise a disk certification * 595 * based on the bad trax information concerning the * 596 * completeness of pattern testing, etc. * 597 * * 598 * The first few blocks on each volume are occupied by * 599 * tables that must occupy those fixed block addresses. If * 600 * one of these blocks becomes unreadable, the pack must be * 601 * refurbished. However, all user data may be recovered. A * 602 * feature that may be added to the system later is that of a * 603 * search over the first N blocks of the volume in order to * 604 * find the required tables. This would provide even more * 605 * tolerance to packs with imperfections. * 606 * * 607 * All other tables occupy variable block numbers and may * 608 * be substituted. Substitutions may take place on either a * 609 * write that did not write check or on a read with a * 610 * recoverable error. The system will do substitutions * 611 * without affecting the use of the system. Most * 612 * substitutions may be done simply by copying the data to a * 613 * new block and making an appropriate entry in the * 614 * substitution list. However, certain of the system control * 615 * blocks must be available even when the substitution list is * 616 * not available. These blocks may not be substituted. * 617 * However, they may be moved to another location if the new * 618 * block address is entered into the appropriate root block. * 619 * DISKBOOT goes to a lot of trouble to load the substitution * 620 * list so that it can boot from a file containing * 621 * substitutions. However, the operating system reads in the * 622 * substitution list in a piece of virtual code, and that code * 623 * must be free of substitutions. * 624 * * 625 * If an unrecoverable read error occurs, the data on * 626 * that block must be presumed lost. In some cases, a * 627 * heuristic scan of the questionable data may reveal the * 628 * error, but this is expensive and hazardous. Such scans are * 629 * primarily applicable in the case of a table occupying a * 630 * very small part of a block. Additionally, if read errors * 631 * have been caused by a defective drive or controller, * 632 * replacing or repairing the offending hardware may restore * 633 * the readability of the data. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 89 (DISKDEFS) F 8 Disk Data Structures 634 * * 635 * If the lost data is user data, he must look to a * 636 * backup or transaction log to recover it. * 637 * * 638 * If the lost data is system control or management data, * 639 * it may be possible to recover it automaticly by means of a * 640 * recovery program. Such a program would build a copy of the * 641 * defective volume and repair the damage. * 642 * * 643 * After the data has been recovered from a pack, it is * 644 * intended that the pack may be reused. The blocks that were * 645 * discovered bad should be entered into the bad trax list to * 646 * prevent further read errors on the same block. The volume * 647 * may then be zeroed or recovered onto and is as good as new! * 648 * However, the label area is required to be good for a pack * 649 * to be usable. * 650 * * 651 * Each of the tables on the volume has certain rules to * 652 * be followed when mass storage errors occur on it. These * 653 * rules are listed in the description of each table. * 654 * However, a read of a table may be for an informative * 655 * purpose, such as a maintenance program investigating the * 656 * volume. These reads occur through a mechanism similar to * 657 * file reads and the recovery actions are the same as for a * 658 * file. * 659 * * 660 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 90 (DISKDEFS) F 8 Disk Data Structures 662 663 ********************************************************************************** 664 * * 665 * FILE BLOCK IDENTIFIER (FBI) * 666 * remember J. Edgar * 667 * Each transfer to or from mass storage consists of two * 668 * data areas chained together. The first of these is exactly * 669 * one page in length. This page of data is always loaded on * 670 * a page boundary by the system. It consists primarily of * 671 * the actual data of interest and may be entirely user data. * 672 * * 673 * The other data area consists of FBILNTH words which * 674 * contain the information described in this section. * 675 * * 676 * When a volume is initialized and when space is freed, * 677 * each file block identifier is set up to indicate that it is * 678 * a free block. Every file block in use, however, is * 679 * uniquely labeled as to owner, data structure, and position * 680 * in that data structure by the data in the FBI. * 681 * * 682 * This enables the detection of many error conditions * 683 * such as: * 684 * crashes during writes extending a file. * 685 * various hardware errors. * 686 * various software errors. * 687 * This information also aids in the recovery of user * 688 * data when the volume structure has been damaged. * 689 * * 690 * If this block is a substitute, the block number in the * 691 * FBI is the block number of the original (defective) block. * 692 * If the substitution list is destroyed, this allows a scan * 693 * to find all substitutions. Furthermore, the program that * 694 * calls the mass storage driver may do its FBI checking * 695 * without knowing that the block was a substitute. * 696 * * 697 * If a block is read and its FBI is garbage (not the * 698 * correct block, a correct substitute, or a free block), it * 699 * must be assumed that an otherwise undetected mass storage * 700 * error has occured. See the section on mass storage errors. * 701 * * 702 * The forward link and backward link fields are used * 703 * only in sequential data structures (e.g. .SAFs). They are * 704 * zero if not used in such a structure. * 705 * * 706 * The relative block number indicates the location of the * 707 * block in the structure holding the block. The OS only sets * 708 * it, but it is available for consistency checks in the * 709 * REBUILD utility, and for OS debuggers to try to reconstruct * 710 * exploded structures. Only some block types have a meaningful * 711 * number, all others receive FBIRELBLK=0 (although 0 can be a * 712 * value in the "meaningful" blocks as well). * 713 * * 714 * Block type FBIRELBLK * 715 * ---------- -------------------------------------- * 716 * FBITIDX index into SECIDXENTS * 717 * FBITAFT index into SECAFTENTS * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 91 (DISKDEFS) F 8 Disk Data Structures 718 * FBITSAF position in SAF chain (0:size-1) * 719 * FBITSRAF index into RAF major block (0:03FF) * 720 * FBITRAFD page number in file (0:0FFFFF) * 721 * FBITCODED page number in file (CCB index, 0:CCBMAXPAGE-1) * 722 * (others) 0 * 723 * * 724 * CRASH RESISTANCE * 725 * The FBI must be present with every block when it is * 726 * written to the volume. * 727 * * 728 ********************************************************************************** 729 730 BASE R2 00168800 2 BASE 731 FBIWORDA BSS 1 00168801 2 BASE 732 FBIWORDB BSS 1 00168802 2 BASE 733 FBIWORDC BSS 1 00088080 2 ZBM 734 FBITYPE EQU FBIWORDA/BITS 0:7 type of data block 735 * although this is assembled as an 8 bit 736 * field, the maximum value is 07F, i.e. 737 * only 7 bits 00089180 2 ZBM 738 FBIFLINK EQU FBIWORDA/MSBLKFIELD forward link 739 * (next block in a sequential structure) 00088041 2 ZBM 740 FBIFLAGS EQU FBIWORDB/BITS 0:3 misc flag bits 00088011 2 ZBM 741 FBINOREWRIT EQU FBIFLAGS/BIT 28 this block has been rewritten 00088211 2 ZBM 742 FBIWCHK EQU FBIFLAGS/BIT 29 set if this block is important 743 * enough to write check 00088411 2 ZBM 744 FBINOSUB EQU FBIFLAGS/BIT 30 set if not substitutable 00088611 2 ZBM 745 FBIMEMERR EQU FBIFLAGS/BIT 31 block written from page with memory error 00088221 2 ZBM 746 FBIDEFFLAGS EQU FBIFLAGS/BITS 29:30 flag bits which should have a known value 00089181 2 ZBM 747 FBIDA EQU FBIWORDB/MSBLKFIELD this block's disk block number 748 * (original MS address if this is a substitute) 00089182 2 ZBM 749 FBIBLINK EQU FBIWORDC/MSBLKFIELD backward link 750 * (preceeding block in a sequential structure) 751 * code entry type in FBITYPE field 752 * 0 should not appear 00000001 ABS 753 FBITPL EQU 001 pack label 00000002 ABS 754 FBITBTRX EQU 002 bad trax list 00000003 ABS 755 FBITBOOT EQU 003 bootstrap 00000004 ABS 756 FBITVL EQU 004 volume label 00000005 ABS 757 FBITSUBS EQU 005 substitution list 00000006 ABS 758 FBITSEC EQU 006 security block 00000007 ABS 759 FBITADT EQU 007 ADT block 00000008 ABS 760 FBITIDX EQU 008 IDX block 00000009 ABS 761 FBITUDIR1 EQU 009 UDIR primary block 0000000A ABS 762 FBITUDIR2 EQU 00A UDIR secondary block 0000000B ABS 763 FBITSYS EQU 00B misc system use (swapping) 0000000C ABS 764 FBITSAF EQU 00C SAF 0000000D ABS 765 FBITLRAF EQU 00D root of large RAF (major access block) 0000000E ABS 766 FBITSRAF EQU 00E root of small RAF (minor access block) 0000000F ABS 767 FBITRAFD EQU 00F RAF data block 00000010 ABS 768 FBITAFT EQU 010 account finder table block 00000011 ABS 769 FBITASLB EQU 011 account shared list block 00000012 ABS 770 FBITFSLB EQU 012 file shared list block 00000013 ABS 771 FBITCCB EQU 013 code file control block 00000014 ABS 772 FBITCODED EQU 014 code file data block 00000015 ABS 773 FBITAUTLB EQU 015 authorization list block 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 92 (DISKDEFS) F 8 Disk Data Structures 0000007E ABS 774 FBITESTB EQU 07E test block 0000007F ABS 775 FBITFREE EQU 07F code for a free block 776 00168803 2 BASE 777 FBILCD BSS 1 last changed date 00168804 2 BASE 778 FBIWORDE BSS 1 00089184 2 ZBM 779 FBIRELBLK EQU FBIWORDE/MSBLKFIELD relative block number 00168805 2 BASE 780 FBIACCT BSS2 1 account name of this blocks owner 00168807 2 BASE 781 FBIPROJ BSS 1 division-project 00168808 2 BASE 782 FBISERNO BSS2 1 serial number (creation date) of this structure 783 BSS FBILNTH-(DISPW FBIWORDA)-1 make checksum the last word 0016880A 2 BASE 784 FBICKSUM BSS 1 FBI checksum 785 DRCT 00000004 ABS 786 FBILOG EQU FBILNTH LOG 2 log size of FBI FFC00000 ABS 787 FBIGMASK EQU NOT(2 POWER (33-FBILNTH)-1) mask for PRMUT checksum gen. FFE00000 ABS 788 FBICSMASK EQU NOT(2 POWER (32-FBILNTH)-1) mask for PRMUT checksumming 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 93 (DISKDEFS) F 8 Disk Data Structures 790 791 ********************************************************************************** 792 * * 793 * PACK LABEL * 794 * This label block should never be written by the * 795 * system. Its creation is the task of a pack initialization * 796 * routine that need not be available to the system owner. * 797 * * 798 * CRASH RESISTANCE * 799 * Not applicable * 800 * * 801 * MASS STORAGE ERRORS * 802 * The pack label occupies a fixed MS block number. It * 803 * may not be substituted in any way. If this block goes bad, * 804 * the volume (and pack) may not be used. However, any data * 805 * already on the pack may be easily recovered. This is * 806 * because the data that is lost with this block is not * 807 * essential to the recovery operation. We require that the * 808 * pack be removed from service and refurbished because we * 809 * cannot guarantee the continued well being of a volume on a * 810 * pack where we cannot find the bad trax list. * 811 * * 812 ********************************************************************************** 813 00000000 ABS 814 PLDA EQU 0 MS address for pack label 815 816 BASE 00000000 DISP 817 PLSERIAL LABEL disk pack identifier 00000000 DISP 818 PLMAKER BSS 1 disk pack manufacturer code (pak6) 00000001 DISP 819 PLSERNO BSS 1 disk pack serial number (unsigned integer) 820 BSS 2 reserved for expansion 821 00000004 DISP 822 PLFLAGS BSS 1 misc pack information 00003010 BYTE 823 PLNODRVID EQU BIT 24 indicates no drive ID board 00002E10 BYTE 824 PLFORMNEW EQU BIT 23 indicates a new pack 00002C10 BYTE 825 PLFORMRFRB EQU BIT 22 indicates a refurbished pack 826 00000005 DISP 827 PLFRMTRID BSS 2 identification of who formatted this pack 00000007 DISP 828 PLINIDATE BSS2 1 date of initialization 00000009 DISP 829 PLINITSCANS BSS 1 number of certification passes at initialization 830 BSS 6 room to expand 831 * information used by the mass storage driver to 832 * calculate the hardware addresses of blocks. 00000010 DISP 833 PLSECPTRK BSS 1 blocks per track 00000011 DISP 834 PLTRKPCYL BSS 1 heads per cylinder 00000012 DISP 835 PLCYLPPCK BSS 1 cylinders per pack 00000013 DISP 836 PLSIZE BSS 1 size of pack in blocks 837 BSS 4 room to expand 00000018 DISP 838 PLBDTRXDA BSS 1 block number of bad trax list 839 * added for use by SCSI type disk drives 00000019 DISP 840 PLSDVID BSS 2 SCSI vendor identification 0000001B DISP 841 PLSDPID BSS 4 SCSI product identification 0000001F DISP 842 PLSDFREV BSS 1 SCSI firmware revision level 843 BSS 1 so string is null terminated 00000021 DISP 844 PLMODESN BSS 19 mode sense data (pages 1 to 4) 0000004C ABS 845 PLMODESNL EQU DISPC PLMODESN mode sense length 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 94 (DISKDEFS) F 8 Disk Data Structures 846 DRCT 847 ********************************************************************************** 848 * * 849 * MIRROR SECTOR * 850 * The mirror sector is used by the SCSI MIRROR host adaptor to * 851 * identify if two drives are mirrors of one another. A mirror set * 852 * exists if a pair of drives sharing an ID have equal RUN NUMBER, * 853 * equal VOL SIZE, and cross matching DATE STAMPS. The mirror sector * 854 * resides in the pack label, beginning in the last 512 bytes of the * 855 * block. The name SECTOR comes from the fact that a SCSI drive is * 856 * divided into sectors of 512 bytes each. The label MIRRORSECT is * 857 * used to generate a pointer to the start of the mirror sector. * 858 * * 859 ********************************************************************************** 860 00000380 ABS 861 MIRRORSECT EQU 1024-128 put in last 512 bytes of page 862 863 BASE mirror sector definition 04000000 DISP 864 SELFRUNNUM BSSB 16 our run number 80000000 DISP 865 SELFVOLSIZ BSSB 32 our volume size 80000001 DISP 866 SELFDATE1 BSSB 32 upper 16 bits of date 80000002 DISP 867 SELFDATE2 BSSB 32 lower 32 bits of date 868 BSSB 16 04000004 DISP 869 MATERUNNUM BSSB 16 mate run number 80000004 DISP 870 MATEVOLSIZ BSSB 32 mate volume size 80000005 DISP 871 MATEDATE1 BSSB 32 upper 16 bits of date 80000006 DISP 872 MATEDATE2 BSSB 32 lower 32 bits of date 873 BSSB 16 874 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 95 (DISKDEFS) F 8 Disk Data Structures 876 877 ********************************************************************************** 878 * * 879 * BAD TRAX LIST * 880 * This is a list of file blocks that have been found to * 881 * be defective. This table stores the reason for each entry. * 882 * The pack certification or initialization routines makes the * 883 * original table. This block must be assigned even if there * 884 * are no bad trax found on the pack, since the MS driver * 885 * cannot allocate a file block during error recovery * 886 * operations. The bad trax list is amended by the system as * 887 * it discovers additional errors. There is currently no * 888 * provision for more than one block (512 entries). * 889 * * 890 * Elements are packed into the bad tracks block from the * 891 * beginning. The end of the list is indicated by an entry * 892 * with word 0 all zeros. * 893 * * 894 * When the pack is to be refurbished, the bad trax list * 895 * will indicate those areas requiring additional checking. * 896 * * 897 * CRASH RESISTANCE * 898 * Generally not applicable. However, when a mass storage * 899 * error is encountered, this table should have the offending * 900 * block number entered. If this update takes place * 901 * before any substitution, it affords an opportunity * 902 * to discover that the drive or controller have failed * 903 * before upsetting the actual volume data structure by * 904 * attempting a substitution. * 905 * * 906 * MASS STORAGE ERRORS * 907 * Pointer in pack label. May be moved, but the * 908 * correct pointer must be placed in the pack label (may * 909 * not use the substitution list). If this block cannot * 910 * be read, the volume may not be used, but recovery will * 911 * be complete. This pack must have a new bad trax * 912 * constructed. This offending block must be added to * 913 * the new bad trax list. * 914 * Note, however, that reads of this block are * 915 * initiated by other mass storage errors. The occurrence * 916 * of another mass storage error here should cause a high * 917 * degree of concern for the well being of the hardware. * 918 * * 919 ********************************************************************************** 920 921 BASE definition of elements 00000000 DISP 922 BTRXEL BSS 1 reason for entry/block number 00000080 BYTE 923 BTRXREASON EQU BITS 0:7 reason for entry 924 * MSBLKFIELD block number 925 * codes reason 00000010 ABS 926 BTRXLCDE EQU 010 MS error during certification 00000020 ABS 927 BTRXRTDE EQU 020 MS error at run time 00000030 ABS 928 BTRXACDE EQU 030 accident destroyed format 00000040 ABS 929 BTRXFSDE EQU 040 BTI field service designated block bad 00000001 DISP 930 BTRXDATE BSS 1 date when entry was made 00000002 ABS 931 BTRXLNTH EQU DISPW BTRXEL element size 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 96 (DISKDEFS) F 8 Disk Data Structures 932 DRCT 00000200 ABS 933 BTRXECNT EQU BLOCKSIZE/BTRXLNTH number of entries 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 97 (DISKDEFS) F 8 Disk Data Structures 935 936 ********************************************************************************** 937 * * 938 * BOOTSTRAP * 939 * This routine is emplaced during pack initialization or * 940 * software update. It is also placed on a pack when a copy * 941 * to it is being made and a newer version of the bootstrap is * 942 * present on the source pack. The bootstrap is loaded and * 943 * run by the initial bootstrap operation, which is partially * 944 * a microcode and hardware function. * 945 * * 946 * The primary purpose of this code is to load and start * 947 * the system software. For this, it must search the hardware * 948 * for a system volume, then search that volume for the * 949 * appropriate account and program. The normal program is the * 950 * system software code although special purpose programs such * 951 * as diagnostics may be available. * 952 * * 953 * In conjunction with the microcode and hardware, a * 954 * crashdump mode is provided that saves the machine states * 955 * for a later analysis. * 956 * * 957 * A secondary purpose of the bootstrap is as a * 958 * maintenance tool. Since it is loaded primarily by * 959 * microcode and hardware operations, it can be loaded despite * 960 * many kinds of malfunctions and it should be useful in * 961 * corrective maintenance. * 962 * * 963 * The bootstrap block has the revision level of the code * 964 * assembled into it. The software that looks at the * 965 * bootstrap blocks makes use of this revision level. It is * 966 * in the form: * 967 * * 968 * TEXT "Bx.y" * 969 * * 970 * Where x is the major revision code and y is the * 971 * minor revision. * 972 * * 973 * CRASH RESISTANCE * 974 * Not applicable * 975 * * 976 * MASS STORAGE ERRORS * 977 * See the notes under pack label. * 978 * * 979 ********************************************************************************** 980 00000002 ABS 981 BOOTDA EQU 2 MS address of bootstrap 982 983 BASE 984 BSS 1 the jump around 00000001 DISP 985 BOOTREV BSS 1 the revision code 986 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 98 (DISKDEFS) F 8 Disk Data Structures 988 989 ********************************************************************************** 990 * * 991 * LOGICAL STRUCTURE * 992 * The remaining tables are associated with volumes * 993 * rather than physical recording media. * 994 * The volume label contains pointers to secondary * 995 * tables. * 996 * * 997 ********************************************************************************** 998 999 ********************************************************************************** 1000 * * 1001 * VOLUME LABEL * 1002 * This label is maintained by the system using this pack. * 1003 * It contains pointers to the secondary tables that control the * 1004 * data structure of the volume. * 1005 * * 1006 * Each volume label has a word which is a bit array of * 1007 * volume format revision numbers that can mount this volume and * 1008 * each system has such a bit array giving the revisions that it * 1009 * can mount. Thus a higher revision system knows which lower * 1010 * revisions it can not use and a lower revision system can not * 1011 * get at unacceptable higher revision formatted volumes. * 1012 * * 1013 * This works as follows: When a new system revision is * 1014 * being prepared, we know which old revision packs it can mount, * 1015 * so its bit mask will include those. When a pack is updated to * 1016 * a new revision, we similarly know which old systems are * 1017 * capable of handling whatever changes were made in the format * 1018 * so its bit mask will include those systems. Tricky, huh? * 1019 * * 1020 * A system serial number consists of two parts: * 1021 * 1.) the customer (owner) number * 1022 * 2.) the system number for that owner * 1023 * The system number follows our manufacturing sequence and * 1024 * is on our records as the system serial number. Normally, the * 1025 * customer number and the system number for a system are the * 1026 * same. However, in a few cases a multiple system customer will * 1027 * have a different customer number. A system distribution or * 1028 * backup volume may be encoded either for a specific system (by * 1029 * specifying the customer number and system number exactly) OR * 1030 * for a specific customer number (by specifying the customer * 1031 * number and 0 in place of the system number). * 1032 * * 1033 * The volume passwords work as follows: * 1034 * * 1035 * 1) Each volume has stored on it the SSN of the machine that * 1036 * 'owns' it. * 1037 * 2) On a OPR LOAD operation, if the SSN of the volume and the * 1038 * machine matches, no further checking is done. A volume * 1039 * SSN with a 0 system number will match on any system with * 1040 * the same customer number. * 1041 * 3) If not, the password supplied with the OPR LOAD command * 1042 * must match the volume password. There are several * 1043 * possibilities here.. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 99 (DISKDEFS) F 8 Disk Data Structures 1044 * A) The operator supplies the correct password, including * 1045 * the case where both are . The volume is loaded. * 1046 * B) The volume password is . No possible password * 1047 * matches, and the volume cannot be loaded. * 1048 * C) The operator specifies the wrong password. Of course, * 1049 * the volume is not loaded. * 1050 * 4) If the SSN did not match, the password did match, and the * 1051 * 'newowner' flag is on, the SSN of the 'owning' system (on * 1052 * the volume) is changed to that of the current system * 1053 * and the 'newowner' flag is cleared. * 1054 * 5) When the volume is loaded, the OPR program allows several * 1055 * items to be changed. The volume name and title may be * 1056 * changed arbitrarily (except cannot create a duplicate * 1057 * name). The volume password and 'newowner' flag may be * 1058 * changed iff the SSN matches. If the SSN currently * 1059 * matches, it may be changed to anything. * 1060 * * 1061 * * 1062 * Implied states of the volume * 1063 * * 1064 * 1) PWD is . This is a 'portable' volume, and may be * 1065 * mounted on any system. The SSN, however, will not change, * 1066 * so the volume still 'belongs' to the original system. * 1067 * 2) PWD is . The volume is 'transportable'. The * 1068 * original system can OPR LOAD the volume without the password. * 1069 * Any other system can OPR LOAD the volume iff they specify * 1070 * the correct password. * 1071 * 3) In either case (1) or (2), the 'newowner' flag may be set. The * 1072 * first system (other than the original system) to successfully * 1073 * OPR LOAD this volume becomes the new owner (the SSN is set to * 1074 * that of the new system and the 'newowner' flag is cleared). * 1075 * This is the state left by DISKINIT. It allows the system doing * 1076 * the pack formatting to load the pack for tests. When the pack * 1077 * is loaded onto its ultimate destination, it becomes the property * 1078 * of that system. (A customer formatting a pack for himself must * 1079 * explicitly clear the 'newowner' flag to get this same * 1080 * protection). * 1081 * 4) PWD is . The volume is 'private'. Only the original * 1082 * system can OPR LOAD the volume. * 1083 * * 1084 * 'How To' section * 1085 * * 1086 * 1) Prepare a pack to be sent to a specific site and no other. * 1087 * Set the password to something that you know, then set the * 1088 * SSN to be that of the destination system. * 1089 * Alternatively, set the password to something that you give * 1090 * the intended recipient, and set the 'newowner' flag. * 1091 * 2) Prepare a pack to go anywhere (such as a newly formatted pack). * 1092 * Set the password to and set the 'newowner' flag. * 1093 * 3) Prepare a pack to be used to transfer software to another site, * 1094 * where the return of the pack to the original site is expected. * 1095 * Set the password to something that you give the intended recipient. * 1096 * 4) Prepare a pack to be used to transfer software to anyone. * 1097 * Set the password to . * 1098 * 5) Prepare a pack that can not be used by any other site. * 1099 * Set the password to and clear the 'newowner' flag. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 100 (DISKDEFS) F 8 Disk Data Structures 1100 * * 1101 * CRASH RESISTANCE * 1102 * This block is normally a permanent part of the structure * 1103 * and is infrequently updated. During operations that destroy a * 1104 * volume (DISKCOPY, TAPERECOVER, Backup) a volume label * 1105 * indicating 'invalid' should be written before anything else. * 1106 * The last operation of a process that leaves a valid volume * 1107 * should be the write of a volume label indicating 'valid'. As * 1108 * it turns out, the invalidating write is usually about the * 1109 * third disk write because we need to determine the disk * 1110 * addresses of the subs and security blocks before we write out * 1111 * the volume label. The only consequence of a crash during this * 1112 * is that a pack that we were planning on overwriting (by doing * 1113 * the copy) has an old volume label (indicating a valid volume * 1114 * with the old name) with an empty subs list or security blocks. * 1115 * If the subs list is overwritten, the old volume is mostly * 1116 * still there except for blocks that were substituted. If the * 1117 * security block(s) are written, we essentially have an empty * 1118 * volume with the old name. It is also possible that the new * 1119 * subs block and/or security blocks do not have the same disk * 1120 * addresses as their previous counterparts. This will lead to * 1121 * various forms of disk structure error iff a load is attempted * 1122 * on the pack. * 1123 * Since the data on the pack is forfeit anyway, we are * 1124 * not concerned over the slight possibility of confusion. Note * 1125 * that no security violation is possible, since the old data is * 1126 * never accessible under a new volume label, and vice-versa. * 1127 * * 1128 * MASS STORAGE ERRORS * 1129 * Fixed block number. No substitutions. If this block * 1130 * cannot be read, the volume may not be used. Recovery must be * 1131 * instigated by manufacturers maintenance due to the security * 1132 * problem. Dependent blocks must be found by scanning. The * 1133 * recovery should be complete. The pack must be refurbished. * 1134 * * 1135 ********************************************************************************** 1136 00000001 ABS 1137 VOLLABELDA EQU 1 mass storage address of volume label 1138 1139 BASE 00000000 DISP 1140 VLSSN BSS 1 system serial number 1141 * if this volume is being mounted on 1142 * a system with a different system 1143 * serial number, the correct volume 1144 * password must be supplied. 00000100 BYTE 1145 CUSTNUM EQU BITS 0:15 customer number field 00002100 BYTE 1146 SYSTNUM EQU BITS 16:31 system number field 1147 BSS 1 1148 BSS2 1 00000004 DISP 1149 VLVNAME BSS2 1 volume name 1150 * each volume name at a site 1151 * should be unique. 00000006 DISP 1152 VLVPASSW BSS2 1 volume password 1153 * the default value cannot be matched. 1154 * This is so that a user who neglects 1155 * to set the volume password is 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 101 (DISKDEFS) F 8 Disk Data Structures 1156 * protected against another system 1157 * owner who might acquire that pack. 00000008 DISP 1158 VLCDATE BSS2 1 creation date for this volume 1159 BSS 1 filler (was creation date) 0000000B DISP 1160 VLFLAGS BSS 1 flag bits 00000210 BYTE 1161 VLFLAGINV EQU BIT 1 sez not a valid volume 00000410 BYTE 1162 VLFLAGNEWO EQU BIT 2 sez change volume to new owner 0000000C DISP 1163 VLAVREV BSS 1 bit array of revisions allowed to 1164 * mount this pack 0000000D DISP 1165 VLVREV BSS 1 volume revision of this pack 1166 BSS 1 1167 BSS 1 filler (was copy of VLSIZE) 00000010 DISP 1168 VLSUBSDA BSS 1 substitution list MS address 1169 BSS 1 00000012 DISP 1170 VLSECBDA BSS 1 primary security block MS address 00000013 DISP 1171 VLSECB2DA BSS 1 secondary security block MS address 1172 BSS 12 00000080 ABS 1173 VLTITLELEN EQU 128 length (characters) of volume title 00000020 DISP 1174 VLTITLE BSS VLTITLELEN/CPW ascii volume title 00000040 DISP 1175 VLBKUPE LABEL end of area written for backup 1176 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 102 (DISKDEFS) F 8 Disk Data Structures 1178 1179 ********************************************************************************** 1180 * * 1181 * SUBSTITUTION LIST * 1182 * A list of file block substitutions that have been made * 1183 * as a result of the inability to write on an already committed * 1184 * file block or as a result of a soft read error. This block * 1185 * must be assigned even if there are no substitutions on this * 1186 * volume, since the MS driver cannot allocate a file block for * 1187 * this during error recovery operations. * 1188 * * 1189 * This list is copied into main memory when a volume is * 1190 * mounted and is written back each time a change is made. * 1191 * * 1192 * New entries are made when a write can not be successfully * 1193 * completed or when a read indicates a soft error and it seems * 1194 * prudent to remove the data to a fresh spot. Each entry in the * 1195 * subs list is a pair of block numbers: * 1196 * 1.) the failing address * 1197 * 2.) a substitute for it * 1198 * Entries are deleted when the failing address is freed. The * 1199 * substitute is freed instead and the failing block is discarded * 1200 * (it should already have been entered into the bad trax list). * 1201 * Each mass storage transfer on any volume involves a check to * 1202 * see if the requested block has a substitute. There is * 1203 * currently no provision for more than one block (512 entries). * 1204 * * 1205 * Other possible entries in this table (or bad trax) are * 1206 * flags requesting that all writes above a certain block number * 1207 * be write checked. This floor would grow as the medium was * 1208 * proven good. * 1209 * * 1210 * CRASH RESISTANCE * 1211 * This table may not be updated until after the substituted * 1212 * write has taken place. Additionally, the failing address * 1213 * should be entered into the bad trax list before any attempt at * 1214 * substitution is made. * 1215 * * 1216 * MASS STORAGE ERRORS * 1217 * The pointer to the substitution list is found in the * 1218 * volume label. If the MS block occupied by the substitution * 1219 * list goes bad, the subs list may be moved, but the correct * 1220 * pointer to it must be placed in the volume label (may not use * 1221 * the substitution list). If the subs block cannot be read, the * 1222 * volume may not be used. All blocks acting as substitutes must * 1223 * be found by the recover routine (by finding all blocks whose * 1224 * actual MS address does not match their FBIDA). * 1225 * * 1226 ********************************************************************************** 1227 1228 BASE 00000000 DISP 1229 SUBSBADDY BSS 1 first word contains bad block 1230 * address, zero if list end. 00000001 DISP 1231 SUBSSUB BSS 1 second word contains the substitute. 00000002 ABS 1232 SUBSLNTH EQU DISPW SUBSBADDY element length 00000200 ABS 1233 SUBSECNT EQU BLOCKSIZE/SUBSLNTH number of entries 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 103 (DISKDEFS) F 8 Disk Data Structures 1234 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 104 (DISKDEFS) F 8 Disk Data Structures 1236 1237 ********************************************************************************** 1238 * * 1239 * SECURITY BLOCK * 1240 * This block contains the pointers to the ADT chains * 1241 * and other variables local to this volume or system. * 1242 * * 1243 * There exist multiple ADT chain heads in the security * 1244 * block. The purpose of this is to minimize the loss of free * 1245 * blocks when mass storage errors are encountered in the ADT * 1246 * chain linkages. * 1247 * * 1248 * The IDX and AFT tables are made up of multiple blocks, * 1249 * with each entry being hashed into one of the blocks. The * 1250 * security block contains the index to both of these tables. * 1251 * The IDX and AFT contain only as many blocks as are really * 1252 * needed to hold the entries, so there is also a word that * 1253 * indicates how big the index is (how many blocks are in the * 1254 * corresponding table). * 1255 * * 1256 * This block contains the current start up number (SUN). * 1257 * The SUN is used to validate file use counts. It is an eight * 1258 * bit counter that is incremented every time that the system * 1259 * is started, with counts of zero mod 256 being skipped. * 1260 * * 1261 * The SECMNTDAT field is the date of the most recent event * 1262 * that allowed the above ADT lists to be altered. Specifically, * 1263 * it is set when the pack is initialized, rebuilt, mounted, * 1264 * or recovered full volume style. It is used by the online MS * 1265 * driver to ensure that a pack being remounted has not had its * 1266 * ADTs corrupted while the drive was down (for example, by * 1267 * moving the pack to another system). This provides a finer * 1268 * granularity than the pack format date alone. It also works * 1269 * (prevents remount) if two or more packs have the same format * 1270 * date (i.e. some dick copied the pack label and didn't change * 1271 * PLINITDATE). This field was added 17 June 1988. Older packs * 1272 * have this field 0, and we fall back on the PLINITDATE until * 1273 * one of the above operations is performed. This also works * 1274 * for packs whose security blocks can't be read when the drive * 1275 * is spun up, but get initialized online (initializer should * 1276 * request the ORINITFMT OPREQ before starting). * 1277 * * 1278 * Note: System routines that update SECMNTDAT must take care * 1279 * to ensure that the volume will always be remountable, because * 1280 * VOLNMNTDAT can't possibly match both the old and the new * 1281 * values. These routines should copy the MDVFMTDAT to the * 1282 * VOLNMNTDAT just before the security blocks are written. * 1283 * After the writes complete, the new SECMNTDAT is valid and * 1284 * should be copied into the VOLNMNTDAT. * 1285 * * 1286 * The security block may also contain the most recent * 1287 * startup dates, backup date information, and information * 1288 * regarding the useability of this volume (tables destroyed * 1289 * by mass storage errors, etc.). * 1290 * * 1291 * The security block also contains a backup key unique * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 105 (DISKDEFS) F 8 Disk Data Structures 1292 * to this system. This key is used by both backup and recovery * 1293 * routines. Since it is not available from a backup tape, * 1294 * the key must be provided by the security block of the system * 1295 * that it is being loaded on, or by the operator/manager. * 1296 * * 1297 * The security block is written into two blocks. * 1298 * The first error free read is used as the new manager * 1299 * block. In the event of a system crash between writes, * 1300 * either copy should be usable with the potential loss * 1301 * of only the last transaction. * 1302 * * 1303 * CRASH RESISTANCE * 1304 * Any entry being made in this block should relate to * 1305 * an already completed data structure. Any entry being * 1306 * removed from this block should be removed before any * 1307 * alteration of the entries data structure. * 1308 * * 1309 * MASS STORAGE ERRORS * 1310 * Pointers in volume label. May be moved, but * 1311 * the correct pointer must be placed into the volume * 1312 * label (may not use the substitution list). * 1313 * If neither security block can be read, the volume may * 1314 * not be used. Recovery must find all of the dependent * 1315 * blocks to be complete, although the entire user file * 1316 * structure will be completely recovered. * 1317 * * 1318 ********************************************************************************** 1319 000000FD ABS 1320 MAXIDXSIZE EQU 253 maximum number of blocks allowed in IDX 000000FD ABS 1321 MAXAFTSIZE EQU MAXIDXSIZE maximum number of blocks allowed in AFT 00000008 ABS 1322 SECADTNUM EQU 8 number of ADT chains 1323 1324 ********************************************************************************** 1325 * * 1326 * Hashing function for the IDX and AFT tables. * 1327 * $(1) = an available register * 1328 * $(2) = the next register, the result is left here * 1329 * $(3) = location of account name (double word) * 1330 * $(4) = location of project name * 1331 * $(5) = location of number of buckets * 1332 * * 1333 ********************************************************************************** 1334 1335 IDXHASH MACRO 1336 $L LD2 $(1) $(3) get the account name into $(1) and $(2) 1337 XOR $(2) $(1)/BITS 8:7 mix up the account number 1338 LD $(1) $(4) fetch up the project 1339 XOR $(2) $(1)/BITS 16:15 mix in the project shifted 1340 LD $(1) 0 initialize register for marth 1341 IORPSR PSRMODIF say that we want the remainder 1342 DIV $(1) $(5) divide by number of buckets 1343 CLBPSR PSRMODIF restore normalcy 1344 EMAC 1345 1346 BASE 00000000 DISP 1347 SECSUN BSS 1 bits 24:31 start up number 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 106 (DISKDEFS) F 8 Disk Data Structures 00000001 DISP 1348 SECBUDATE BSS 1 date of last backup 1349 00000002 DISP 1350 SECMNTDAT BSS2 1 date of last mount 1351 BSS 4 filler 1352 00000008 DISP 1353 SECADTTOP BSS SECADTNUM pointer to beginning of ADT chains 00000010 DISP 1354 SECADTBTM BSS SECADTNUM pointer to end of ADT chains 00000018 DISP 1355 SECADTCNT BSS SECADTNUM number of free blocks in each chain 1356 BSS 8 00000028 DISP 1357 SECIDXSIZ BSS 1 number of blocks in IDX 00000029 DISP 1358 SECAFTSIZ BSS 1 number of blocks in AFT 0000002A DISP 1359 SECIDXENTS BSS 1 number of entries in IDX 0000002B DISP 1360 SECAFTENTS BSS 1 number of entries in AFT 0000002C DISP 1361 SECIDXPTR BSS MAXIDXSIZE IDX table head 00000129 DISP 1362 SECAFTPTR BSS MAXAFTSIZE AFT table head (system volume only) 1363 00000226 DISP 1364 SECTZONE BSS 1 time zone and GMT displacement if system vol. 1365 * (PDT = -7, PST = -8, etc.) 1366 BSS2 1 filler 00000229 DISP 1367 SECLASTDT BSS2 1 last known date 0000022B DISP 1368 SECLASTSL BSS2 1 date when last slept or dismounted 0000022D DISP 1369 SECDATERR BSS 1 date correction in progress (correction in MS) 0000022E DISP 1370 SECDATDRFT BSS 1 date drift of SSU clock in ppb 1371 * + indicates clock slow, - sez fast 0000022F DISP 1372 SECDATCOR BSS2 1 date of last clock correction 1373 1374 ********************************************************************************** 1375 * The following locations contain the amount of hardware * 1376 * that was on the last time that the system was booted. This * 1377 * exists so that we can notify someone when the system is * 1378 * booted with less hardware than was expected. * 1379 ********************************************************************************** 1380 00000231 DISP 1381 SECNUMMCU BSS 1 number of MCUs 00000232 DISP 1382 SECNUMPAGE BSS 1 number of pages of memory 00000233 DISP 1383 SECNUMCPU BSS 1 number of CPUs 00000234 DISP 1384 SECNUMPPU BSS 1 number of PPUs 00000235 DISP 1385 SECNUMACC BSS 1 number of comm controllers 00000236 DISP 1386 SECNUMPORT BSS 1 number of ports 00000237 DISP 1387 SECNUMMSC BSS 1 number of disk controllers 00000238 DISP 1388 SECNUMDISK BSS 1 number of disk drives 00000239 DISP 1389 SECNUMLPC BSS 1 number of LP controllers 0000023A DISP 1390 SECNUMCTC BSS 1 number of CT controllers 0000023B DISP 1391 SECNUMCTU BSS 1 number of CT drives 0000023C DISP 1392 SECNUMMTC BSS 1 number of MT controllers 0000023D DISP 1393 SECNUMMTU BSS 1 number of MT drives 0000023E DISP 1394 SECNUMVTC BSS 1 number of VT controllers 0000023F DISP 1395 SECNUMVTU BSS 1 number of VT drives 00000240 DISP 1396 SECBKUPE LABEL end of backup information 1397 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 107 (DISKDEFS) F 8 Disk Data Structures 1399 1400 ********************************************************************************** 1401 * * 1402 * AVAILABLE DISK TABLE (ADT) * 1403 * * 1404 * The ADT consists of multiple chains of ADT blocks linked * 1405 * together with both forward and backward pointers. The * 1406 * security block has pointers to the head and tail of each ADT * 1407 * chain and the total number of free blocks in each chain. The * 1408 * reason that multiple chains are provided is so that fewer * 1409 * blocks must be searched over on crash recovery and so that a * 1410 * mass storage error can not cause more than one eighth of the * 1411 * available blocks to be lost. Another possible structure that * 1412 * could have been used is that of a RAF. However, in that type * 1413 * of structure, the loss of an access block causes far too many * 1414 * blocks to be lost. In the SAF type structure used here, the * 1415 * loss of a single block means that you must search the list * 1416 * from the known beginning and can recover all space except that * 1417 * contained in the bad block. * 1418 * * 1419 * Each ADT block is a single file block with entries that * 1420 * are the MS addresses of blocks that are available. Each ADT * 1421 * block could have from 0 to about BLOCKSIZE entries in it. A * 1422 * smaller maximum (ADTECNT) is set up so that fewer blocks are * 1423 * lost if a mass storage error occurs while reading an ADT * 1424 * block. The ADT block itself is available when empty. * 1425 * Therefore, the ADT requires, in effect, no MS space. If an * 1426 * ADT block is filled, a free block is acquired and it becomes * 1427 * the new tail of the current ADT chain. In the event that the * 1428 * current chain is full, the new block becomes the first block * 1429 * in a new chain. * 1430 * * 1431 * The system maintains a table in monitor memory containing * 1432 * a VOLN ("volume name element") for each mounted volume. This * 1433 * element contains a short list of available blocks. When the * 1434 * resident list gets nearly full or nearly empty, the current * 1435 * ADT block is read in and entries (block numbers) are * 1436 * transferred as appropriate to leave the resident list near * 1437 * half-full. The ADT block must be forced out before using any * 1438 * free blocks acquired from it. * 1439 * * 1440 * When file blocks are freed, they could be inserted into * 1441 * the resident ADT list in order. This feature was removed * 1442 * because of its overhead and insignificant performance * 1443 * improvement. Blocks are inserted into the current ADT block * 1444 * in order. This keeps available space assignment more * 1445 * localized. It also provides an opportunity to check for a * 1446 * block being freed twice (in which case the system halts and * 1447 * you either fix the bug in the system or you rebuild the disk * 1448 * structure). No effort is made to sort the entire ADT, * 1449 * although it should be created in order. * 1450 * * 1451 * CRASH RESISTANCE * 1452 * During system initialization, the security block is read * 1453 * in and the head and tail pointers and free block count for the * 1454 * first non-empty ADT chain are copied. The tail pointer in the * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 108 (DISKDEFS) F 8 Disk Data Structures 1455 * security block is then set to null. If the system was not * 1456 * properly terminated, the security block will contain a null * 1457 * tail pointer. In this case, the initialization routines * 1458 * search from the head down the forward links to rediscover the * 1459 * current tail of the chain and count the total number of free * 1460 * blocks available. The last legitimate ADT block in the chain * 1461 * will have either a null forward pointer or it will point to a * 1462 * block that was formerly an ADT block. In this case, the FBI * 1463 * type of the block will no longer be 'ADT' since such blocks * 1464 * are freed when emptied. * 1465 * * 1466 * It is possible that all existing ADT blocks are full when * 1467 * a block is freed. This results in an empty ADT block at the * 1468 * end of a chain. A later fetch will get that block as follows: * 1469 * The ADT block described by the tail pointer is read, its back * 1470 * pointer becomes the new tail pointer, and the block is * 1471 * overwritten. If the current chain is empty (the back pointer * 1472 * was null), then the security block is read in and the pointers * 1473 * and free block count for the next ADT chain are copied. * 1474 * * 1475 * When an ADT block fills up (has ADTECNT or more entries * 1476 * in it), a new block is added to the current ADT chain (or a * 1477 * new chain is begun if the current one is more than one eighth * 1478 * of the total volume size). To add an ADT block to the end of * 1479 * the current chain, a new block is selected (from amongst the * 1480 * free blocks in the current ADT block). The new block is given * 1481 * a null forward pointer and a backward pointer to the current * 1482 * tail block and is written to mass storage. The old tail is * 1483 * read in, given a new forward pointer to the new block, and * 1484 * rewritten. * 1485 * * 1486 * When the system is shut down, any free blocks residing * 1487 * in the resident tables must be placed onto the volume as * 1488 * described above. The security block is then read in and * 1489 * has the tail pointer and new free block count copied into it. * 1490 * * 1491 * MASS STORAGE ERRORS * 1492 * Pointers in the security block. May be substituted. If * 1493 * an error occurs while traversing the chain backwards (during * 1494 * normal use), the tail pointer is discarded and regenerated by * 1495 * a search from the chain head. If an error occurs while * 1496 * searching for the tail of an ADT chain (such as after a mass * 1497 * storage error or during initialization after a system crash), * 1498 * the bad block is treated as if it were a block beyond the end * 1499 * of the chain. If no ADT block is available, the volume has no * 1500 * remaining space and out-of-storage errors will occur. All * 1501 * data may be recovered from the volume. * 1502 * * 1503 ********************************************************************************** 1504 000000C8 ABS 1505 ADTECNT EQU 200 number of entries in each ADT block 1506 * note that ADTECNT must be less than 1507 * BLOCKSIZE to allow some work space 1508 * for the manager. 1509 1510 BASE 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 109 (DISKDEFS) F 8 Disk Data Structures 00000000 DISP 1511 ADTLIST BSS ADTECNT bits 8:31 - available block number 1512 * all zero indicates list end 1513 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 110 (DISKDEFS) F 8 Disk Data Structures 1515 1516 ********************************************************************************** 1517 * * 1518 * USER INDEX (IDX) * 1519 * A table which points to each user directory on this * 1520 * volume. The table is searched by account number, and yields * 1521 * the block number of that account's user directory. * 1522 * * 1523 * This table consists of enough blocks to hold all of the * 1524 * required entries with a little space left over. The index of * 1525 * these blocks is found in the security block. A hashing * 1526 * function is applied to the account/project in order to find * 1527 * the proper first block to search. The table may not grow * 1528 * larger than 'MAXIDXSIZE'. * 1529 * * 1530 * The IDX entry contains only the account name and * 1531 * directory address, and since things are arranged so that the * 1532 * root block of a directory (UDIR1) does not move, this table * 1533 * is updated infrequently. * 1534 * * 1535 * Entries consist of the name of the account followed by * 1536 * the mass storage address (on this volume) of the directory * 1537 * (UDIR1) for that account. When searching the IDX block from * 1538 * the beginning to the end, encountering an "empty entry" * 1539 * (account name and project all zeros) sez that the rest of the * 1540 * IDX block is empty also. Since entries may overflow a block * 1541 * into the next block, and since overflow is sensed by reaching * 1542 * the end of the block without finding an empty entry, if an * 1543 * account is deleted we cannot just remove it and repack the * 1544 * IDX. Entries are deleted by writing all ones (-1) over the * 1545 * account and project. These "place holders" may be used up * 1546 * when a new account is created, but must be searched over when * 1547 * looking for an account. * 1548 * * 1549 * CRASH RESISTANCE * 1550 * When a new account is created, the user directory must * 1551 * be initialized on the volume before the IDX may point to it. * 1552 * When an account is destroyed, the account number must be * 1553 * removed from the IDX before the directory may be freed. * 1554 * * 1555 * MASS STORAGE ERRORS * 1556 * Pointers in the security block. May be moved, but the * 1557 * correct pointer must be placed in the security block (may not * 1558 * use the substitution list). If the IDX can not be read, the * 1559 * volume may not be used. Recovery must find all user * 1560 * directories and discard the freed but not desecrated * 1561 * directories in order to be complete. * 1562 * * 1563 ********************************************************************************** 1564 1565 BASE R6 00178800 6 BASE 1566 IDXACNO BSS2 1 account name 00178802 6 BASE 1567 IDXACNOP BSS 1 division-project 1568 * following word zero sez list end 00178803 6 BASE 1569 IDXDIRDA BSS 1 user directory address 00178804 6 BASE 1570 IDXDIRDA2 BSS 1 secondary directory address 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 111 (DISKDEFS) F 8 Disk Data Structures 00000005 ABS 1571 IDXLNTH EQU DISPW IDXACNO entry length 000000CC ABS 1572 IDXECNT EQU BLOCKSIZE/IDXLNTH number of entries 1573 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 112 (DISKDEFS) F 8 Disk Data Structures 1575 1576 ********************************************************************************** 1577 * * 1578 * USER LIMIT FIELD * 1579 * Here we define a small block that contains * 1580 * all information concerning an accounts limits and * 1581 * privileges. Space is reserved for this block in * 1582 * both the user directory and the resident user limit * 1583 * block (ULB). When a ULB is created, the user limit * 1584 * information is copied into the resident block and * 1585 * the ULB is the current authority. In the event of * 1586 * a system crash, the UDIR user limits are the backup. * 1587 * When a ULB is destroyed, the user limits are copied * 1588 * back to the directory. * 1589 * * 1590 ********************************************************************************** 1591 0000079C 1592 LIMITS BASE R4 00170800 4 BASE 1593 RESTRWORD BSS 1 acct restrictions (catrd, etc) 00000050 BYTE 1594 XREQRSTR EQU BITS 0:4 indicates requests that are restricted 00170801 4 BASE 1595 PRIVWORD BSS 1 privilege word (manager access) 00000040 BYTE 1596 LIMFACCESS EQU BITS 0:3 file access control 00000840 BYTE 1597 LIMPACCESS EQU BITS 4:7 password access control 1598 * EQU BITS 8:12 unused 00001A50 BYTE 1599 LIMLOGSPOT EQU BITS 13:17 where to write accounting files 1600 see FDE format note on privileges 1601 bit definitions for these fields 00003E10 BYTE 1602 LIMACSALW EQU BIT 31 always (maintenance) 00003C10 BYTE 1603 LIMACSSYS EQU BIT 30 access to system manager 00003A10 BYTE 1604 LIMACSDIV EQU BIT 29 access to division manager 00003810 BYTE 1605 LIMACSPROJ EQU BIT 28 access to project manager 00003610 BYTE 1606 LIMACSUSR EQU BIT 27 access of user (implied on) 1607 00170802 4 BASE 1608 TIMLIM BSS 1 time limit (in seconds) 00170803 4 BASE 1609 TIMUSD BSS 1 time used (in seconds) 00170804 4 BASE 1610 WLCKLIM BSS 1 wall clock limit (in minutes) 00170805 4 BASE 1611 WLCKUSD BSS 1 wall clock time used (in minutes) 00090186 4 ZBM 1612 DSKSAVL BSSB MSBLKLOG saved disk blocks limit 00093186 4 ZBM 1613 DSKWARN BSSB MSBLKLOG disk block warning limit 00092187 4 ZBM 1614 DSKLIM BSSB MSBLKLOG disk block hard limit 00091188 4 ZBM 1615 DSKUSD BSSB MSBLKLOG disk blocks used 1616 BSS 0 force a word boundary 1617 DRCT 00000009 ABS 1618 LIMITSIZE EQU DISPW LIMITS size of the limits block 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 113 (DISKDEFS) F 8 Disk Data Structures 1620 1621 ********************************************************************************** 1622 * * 1623 * SHARED LISTS * 1624 * Shared lists are provided to give a list of other * 1625 * accounts which are allowed access and to indicate the * 1626 * type of access allowed. There may also be a password * 1627 * associated with the allowed access. * 1628 * Each user directory and each file directory entry * 1629 * contain a shared list. Since the most likely 'shares' * 1630 * are with no one and with only one other account, the * 1631 * share lists in directories and file directory entries * 1632 * are just long enough to hold one simple share list * 1633 * element. If the shared list is larger, either for * 1634 * a more complex element or for more than one element, * 1635 * the short shared list in the directory or FDE will be * 1636 * a pointer to a complete MS block containing the shared * 1637 * list (see its format under SHARED LIST BLOCK). * 1638 * * 1639 ********************************************************************************** 1640 1641 ********************************************************************************** 1642 * * 1643 * SHARED LIST BLOCK (SLB) * 1644 * A block containing shared list entries for a user * 1645 * directory or individual file if the list is too large * 1646 * to be kept in the short area allocated in the UDIR1 * 1647 * block or the FDE. * 1648 * * 1649 * The user directory block and the file directory entry * 1650 * have an area large enough to hold one short shared list * 1651 * entry but if more sharing than that is done, the shared list * 1652 * is put into a disk block that is pointed to by the first * 1653 * word of the entry in the UD or FDE. * 1654 * * 1655 * Shared list entries give the account shared with and the * 1656 * privileges afforded to him. They may also give a password if * 1657 * required. The privileges given by the shared list entry are: * 1658 * 1) read/write - whatever the access code is on the * 1659 * file entry itself. * 1660 * 2) read only - cannot write there upon. * 1661 * 3) modify - file access privileges and ability to change * 1662 * the access attributes. * 1663 * * 1664 * CRASH RESISTANCE * 1665 * This block may be changed in place but remember to write * 1666 * the initial block to the disk before pointing anything * 1667 * to it. * 1668 * * 1669 * MASS STORAGE ERRORS * 1670 * May be substituted. A mass storage error * 1671 * returns a "Disk Structure Error" to the * 1672 * requesting process. * 1673 * * 1674 ********************************************************************************** 1675 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 114 (DISKDEFS) F 8 Disk Data Structures 1676 1677 ********************************************************************************** 1678 * * 1679 * SHARED LIST ENTRY * 1680 * This format applies to all shared list entries. * 1681 * Note that a shared list entry in a shared list block * 1682 * (that is, in a separate block on mass storage) may * 1683 * not point to yet another shared list block. * 1684 * * 1685 ********************************************************************************** 1686 1687 BASE R3 shared list entry 0016C800 3 BASE 1688 SHLFLAGW BSS 1 this first word of a shared list entry 1689 * may either contain a block number (if the flag bit 1690 * is on) or indicate that an account number follows. 00000010 BYTE 1691 SHLDSKFLGB EQU BIT 0 one sez this SHLFLAGW contains 1692 * the MS address of the actual share list 0008C010 3 ZBM 1693 SHLDSKFLG EQU SHLFLAGW/SHLDSKFLGB 0008D180 3 ZBM 1694 SHLDISK EQU SHLFLAGW/MSBLKFIELD block number if above flag is on 0008C210 3 ZBM 1695 SHLACTPW EQU SHLFLAGW/BIT 1 if on, a password follows 0008C410 3 ZBM 1696 SHLACTSYS EQU SHLFLAGW/BIT 2 on if system specified 0008C220 3 ZBM 1697 SHLACTOPT EQU SHLFLAGW/BITS 1:2 flags for optional stuff 0008C630 3 ZBM 1698 SHLACTPRIV EQU SHLFLAGW/BITS 3:5 privilege given this acct 00000000 ABS 1699 SHLACTPRVW EQU 0 allowed file access code of FDE (FDACCESS) 00000001 ABS 1700 SHLACTPRVR EQU 1 read only access 00000002 ABS 1701 SHLACTPRVM EQU 2 file access and modify priv 00000003 ABS 1702 SHLACTPRVX EQU 3 execute only access 0008CC10 3 ZBM 1703 SHLENTRYF EQU SHLFLAGW/BIT 6 on if an entry present 0016C801 3 BASE 1704 SHLACCT BSS2 1 account that is allowed access 0016C803 3 BASE 1705 SHLACCTP BSS 1 division-project 00000004 ABS 1706 SHLENTLEN EQU DISPW SHLFLAGW length of entry 0016C804 3 BASE 1707 SHLPWORD BSS2 1 password for the privilege 00000006 ABS 1708 SHLENTPLEN EQU DISPW SHLFLAGW length if PW included 0016C806 3 BASE 1709 SHLACCTSYS BSS 1 system that account is on (-1 => this system) 00000007 ABS 1710 SHLENTSLEN EQU DISPW SHLFLAGW length if system specified 1711 DRCT 1712 00000004 ABS 1713 UDSHLSIZE EQU 4 size of share lists in directory 1714 * This is adequate for a single entry 1715 * with no password or else a pointer 1716 * to a shared list mass storage block. 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 115 (DISKDEFS) F 8 Disk Data Structures 1718 1719 ********************************************************************************** 1720 * * 1721 * AUTHORIZATION LIST * 1722 * The authorization list consists of a header followed * 1723 * by a variable number of entries. * 1724 * The system manager does not need auth list entries, * 1725 * he is presumed to have authority over all system resources. * 1726 * He, however, must explicitly delegate authority to each * 1727 * manager to 1) allocate time and 2) allocate space on a * 1728 * given volume. The time allocatable and allocated is kept * 1729 * in the auth list header and the MS space allocatable and * 1730 * allocated is kept in the individual auth list entries for * 1731 * each separate volume. * 1732 * * 1733 * CRASH RESISTANCE * 1734 * This block may be changed in place but remember to write * 1735 * the initial block to the disk before pointing anything * 1736 * to it. * 1737 * * 1738 * MASS STORAGE ERRORS * 1739 * May be substituted. A mass storage error * 1740 * returns a "Disk Structure Error" to the * 1741 * requesting process. * 1742 * * 1743 ********************************************************************************** 1744 1745 BASE auth list header 00000000 DISP 1746 AUTHTIME BSS 1 seconds allocatable by account 00000001 DISP 1747 AUTHTIMEA BSS 1 allocated auth time 1748 BSS 2 room for expansion 00000004 DISP 1749 AUTHENTBG LABEL beginning of volume auth list 1750 DRCT 1751 000007B0 1752 AUTHLENTRY BASE R3 auth list entry 0016C800 3 BASE 1753 AUTHVNAME BSS2 1 room for a volume name 1754 BSS 1 unused 1755 BSS 1 unused 0016C804 3 BASE 1756 AUTHDSK BSS 1 amount of disk space allocatable 0016C805 3 BASE 1757 AUTHDSKA BSS 1 amount of disk space allocated 0016C806 3 BASE 1758 AUTHSDSK BSS 1 amount of saved disk space allocatable 0016C807 3 BASE 1759 AUTHSDSKA BSS 1 amount of saved disk space allocated 1760 BSS 4 room for expansion 1761 DRCT 0000000C ABS 1762 AUTHLELEN EQU DISPW AUTHLENTRY 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 116 (DISKDEFS) F 8 Disk Data Structures 1764 1765 ********************************************************************************** 1766 * * 1767 * FILE DIRECTORY ENTRY (FDE) * 1768 * Each FDE represents one file. These entries may * 1769 * appear only in user directories. They appear in the * 1770 * index area of a UDIR1 for a small directory, and they * 1771 * appear in UDIR2 blocks for large directories. * 1772 * * 1773 ********************************************************************************** 1774 000007BC 1775 FDEPROT BASE R3 0016C800 3 BASE 1776 FDSTART BSS 0 account number (implicit!) 1777 * The following thing is here to make the first word of 1778 * a used file directory entry non-zero. 0016C000 3 CACH 1779 FDSUN BSSB 8 SUN to validate use counts 0008D040 3 ZBM 1780 FDACSLK BSSB 4 access lock bits - unused 1781 * controls who may change acct privileges 1782 * EQU BIT 31 access locked by maintenance 1783 * EQU BIT 30 access locked by owner (MANAGER.SYS) 1784 * EQU BIT 29 access locked by division (MANAGER.ddd) 1785 * EQU BIT 28 access locked by project (MANAGER.dddppp) 0008D830 3 ZBM 1786 FDPRIV BSSB 3 privilege allowed to this file 00000000 ABS 1787 FDACSRW EQU 0 read/write 00000001 ABS 1788 FDACSRO EQU 1 read only 00000002 ABS 1789 FDACSAO EQU 2 append only 00000003 ABS 1790 FDACSXO EQU 3 execute only 00000004 ABS 1791 FDACSMW EQU 4 multiple write allowed 00003E10 BYTE 1792 FDACSNWB EQU BIT 31 if one, no write allowed 0008DE10 3 ZBM 1793 FDFBD BSSB 1 file being destroyed bit 0008E010 3 ZBM 1794 FDNBU BSSB 1 no backup flag 0008E210 3 ZBM 1795 FDRFB BSSB 1 indicates recovered from backup 0008E410 3 ZBM 1796 FDPURG BSSB 1 indicates this file purged 1797 * if purged, other fields indicate 1798 * where to find the actual file. 0008E610 3 ZBM 1799 FDFWWSC BSSB 1 1 sez file equipped for write when system crashed 0008E810 3 ZBM 1800 FDLRAF BSSB 1 a one sez a large .RAF (see note) 0008EA60 3 ZBM 1801 FDET BSSB 6 entry type and access control 1802 * entry types for all equipable units are defined here. 1803 * code entry type (* sez may be directory entry) 00000001 ABS 1804 HTYPESAF EQU 1 SAF * 00000002 ABS 1805 HTYPERAF EQU 2 RAF * 00000003 ABS 1806 HTYPECODE EQU 3 code file * 00000004 ABS 1807 HTYPEPATH EQU 4 communication path * 00000005 ABS 1808 HTYPEDIR EQU 5 directory 00000006 ABS 1809 HTYPENULL EQU 6 output eater 00000007 ABS 1810 HTYPETERM EQU 7 interactive terminal * 1811 * EQU 8 unused (was lock) * 00000009 ABS 1812 HTYPETASK EQU 9 a 'batch' job submission unit 0000000A ABS 1813 HTYPECDR EQU 10 a card reader 0000000B ABS 1814 HTYPELP EQU 11 a line printer 0000000C ABS 1815 HTYPEMT EQU 12 magnetic tape * 0000000D ABS 1816 HTYPECT EQU 13 cartridge magnetic tape * 0000000E ABS 1817 HTYPEVOL EQU 14 a volume 0000000F ABS 1818 HTYPEVT EQU 15 video tape * 00000010 ABS 1819 HTYPELAST EQU 16 after last HTYPE 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 117 (DISKDEFS) F 8 Disk Data Structures 1820 0008F610 3 ZBM 1821 FDGHOST BSSB 1 file is a ghost (not yet recovered from backup) 0008F810 3 ZBM 1822 FDTRANS BSSB 1 file opened when user program crashed 0008FA10 3 ZBM 1823 FDFLOG BSSB 1 log file access when set 0008FC20 3 ZBM 1824 FDRAFTYPE BSSB 2 type of RAF file we have (see note) 00000000 ABS 1825 RAFTEMPTY EQU 0 00000001 ABS 1826 RAFTTINY EQU 1 00000002 ABS 1827 RAFTSMALL EQU 2 00000003 ABS 1828 RAFTLARGE EQU 3 1829 0008C101 3 ZBM 1830 FDCUSE BSSB 16 current use count 1831 BSSB 16 filler 0016C802 3 BASE 1832 FDNAME BSS2 1 file name - RAD40 0016C804 3 BASE 1833 FDEXTEN BSS 1 filename extension 1834 BSSB 32-MSBLKLOG filler to right justify MS address 0008D185 3 ZBM 1835 FDDA BSSB MSBLKLOG block number of the file head 0016C018 3 CACH 1836 FDPURGE BSSB 8 purge interval 0000005A ABS 1837 PURGESDV EQU 90 system default value - purge interval 0008D186 3 ZBM 1838 FDLEN BSSB MSBLKLOG file length 1839 * file lengths are only for accounting. 1840 * actual length determined by the structure 0016C807 3 BASE 1841 FDLCD BSS 1 last changed date 0016C808 3 BASE 1842 FDLACC BSS 1 last accessed date 0016C809 3 BASE 1843 FDLBU BSS 1 last backup date 0016C80A 3 BASE 1844 FDSERNO BSS2 1 file serial number 1845 * FDSERNO(0) device type code for hardware devices 1846 * FDSERNO(1) unit # for hardware devices 0016C80C 3 BASE 1847 FDACCESSES BSS 0 label for following 3 fields taken collectively 0008C10C 3 ZBM 1848 FDRACS BSSB 16 read current access count 0008E01C 3 ZBM 1849 FDWACS BSSB 1 write current access count 0008E2FC 3 ZBM 1850 FDMWACS BSSB 15 multiple write current access count 0008C10D 3 ZBM 1851 FDRUSE BSSB 16 total read use count 0008E10D 3 ZBM 1852 FDWUSE BSSB 16 total write use count 0016C80E 3 BASE 1853 FDUSRFLD BSS 1 user defined field 0016C80F 3 BASE 1854 FDCREDAT BSS 1 creation date 0016C810 3 BASE 1855 FDEPP BSS 1 file end byte position pointer 0016C811 3 BASE 1856 FDEND BSS 1 disk block for end of file 1857 BSS 24-UDSHLSIZE-(DISPW FDSTART) push shared list to end 0016C814 3 BASE 1858 FDSHL BSS UDSHLSIZE file directory entry share list 1859 DRCT 00000018 ABS 1860 FDLNTH EQU DISPW FDEPROT length of a directory entry 1861 1862 ********************************************************************************** 1863 * * 1864 * FILE DIRECTORY ENTRY * 1865 * * 1866 * CURRENT USE COUNTS * 1867 * File current use counts are stored in the directory * 1868 * entry for a file. These use counts are valid only if the * 1869 * SUN stored in the file directory entry is the same as the * 1870 * current SUN. A difference here indicates that the use * 1871 * counts are left over from a previous access during which * 1872 * the system crashed. * 1873 * * 1874 * When a user equips a file with a non-current SUN * 1875 * and a non-zero current write access count, the FWWSC * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 118 (DISKDEFS) F 8 Disk Data Structures 1876 * bit is set indicating that the file was equipped for * 1877 * writing at the time of a system crash. This is to give * 1878 * the user an opportunity to recover as he sees fit. * 1879 * When a user equips a file with a non-current SUN, the * 1880 * use counts are set to zero plus this new access and * 1881 * the SUN is set current. * 1882 * * 1883 * False file use counts are possible only if the * 1884 * system was restarted 255 times without a reference to * 1885 * a given file. These false use counts are inconvenient * 1886 * but fail-safe. * 1887 * * 1888 * FILE BEING DESTROYED * 1889 * A file busy for read or write may not be deleted * 1890 * directly. However, a process with modify privilege may * 1891 * discard a file at any time by setting the 'file being * 1892 * destroyed' bit. The file will then be deleted when the * 1893 * last user unequips it and its use count becomes zero. * 1894 * * 1895 * A exchange save creates the same condition if the * 1896 * saved file is busy: the old entry may be left to control * 1897 * the file being destroyed and a new entry (with the same * 1898 * name) is created for the new file. * 1899 * * 1900 * RAF type (FDLRAF and FDRAFTYPE fields) * 1901 * The original system implemented only two types of * 1902 * RAFs... 'small', including a single minor index block which * 1903 * points directly to data blocks, and 'large', having a major * 1904 * access block which points to WPP minor index blocks. * 1905 * A disk type revision implemented two new RAF types... * 1906 * 'tiny', with only one data block, and 'empty', with no data * 1907 * blocks. Rather than force a major conversion effort, the * 1908 * entries may be of either type on the more recent format * 1909 * disk. (The format is updated to prevent old systems from * 1910 * getting and attempting to use new format entries). * 1911 * The conversion of a directory entry is as follows: * 1912 * Check the new type field (FDRAFTYPE) for zero ('empty'). * 1913 * If it is not, the conversion is already done. If the * 1914 * FDRAFTYPE field is zero, verify that the file is indeed * 1915 * empty by checking FDDA. If it is non-zero, then a * 1916 * conversion is needed. Check (and clear) the old FDLRAF * 1917 * field. If it was a zero, set FDRAFTYPE to 'small', else * 1918 * 'large'. * 1919 * * 1920 * MULTIPLE ACCESS * 1921 * Whenever a file is equipped to, FDCACS (current access * 1922 * count) is incremented for each access to the file. If the * 1923 * equip is for read-only (ie, the accessor is requesting only * 1924 * read access to the data), then FDRACS is incremented. If * 1925 * the equip is for read/write, FDWACS is incremented. If the * 1926 * access is for multiple write, FDMWACS is incremented. If * 1927 * the equip is for "no data access" (ie, the accessor requests * 1928 * no access to the data), then neither RACS, WACS or MWACS is * 1929 * incremented, thus busying the file but not disallowing access * 1930 * to the data in the file. * 1931 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 119 (DISKDEFS) F 8 Disk Data Structures 1932 * Sequential files may not be open for write and any * 1933 * other data access simultaneously. * 1934 * * 1935 * RAFs may be open for general write access by no more than * 1936 * one user at a time. RAFs may be open for write by many users * 1937 * with 'multiple write' privilege. At one time, only large RAFs * 1938 * could be open multiple write. However, the implementation of * 1939 * global file control blocks in the system allows any RAF to be * 1940 * open multiple write. * 1941 * * 1942 * Pages cannot be deleted from a RAF that is open multiple * 1943 * write. * 1944 * * 1945 * Code files follow the same rules as for RAFs except * 1946 * that multiple write access is not allowed. Therefore, if * 1947 * users are executing a code file, the pages that they are * 1948 * executing from may not be altered by the owner. * 1949 * * 1950 * FILE SERIAL NUMBERS * 1951 * Every file created by the system is given a unique number * 1952 * to identify the file even if it is renamed by the user. The * 1953 * number, although given 64 bits, is actually the system's 44 bit * 1954 * millisecond clock when the file was first created. The * 1955 * millisecond clock in memory (not the actual system clock) is * 1956 * incremented after each fetch of a file serial number so that * 1957 * duplicate numbers are not given out. * 1958 * Serial numbers are specially coded if the file corresponds * 1959 * to a real hardware device. In this case, the upper 32 bits of * 1960 * the file serial number denote the hardware type of the device, * 1961 * and the lower 32 bits denote the particular device unit number. * 1962 * In particular, saved terminals use the port number as the lower * 1963 * 32 bits. This is so that a device controller may search for an * 1964 * entry without knowing its name and so that devices that are not * 1965 * assigned via the saved files may interface with same. * 1966 * * 1967 * PURGE * 1968 * Purge intervals are set to the system default value * 1969 * (90 days) when a file is created. They may be altered by * 1970 * command. Files with longer purge intervals might be more * 1971 * expensive. * 1972 * * 1973 * The file becomes subject to purge if the time since * 1974 * last access exceeds the purge interval. A purge interval of * 1975 * zero indicates never purge. * 1976 * * 1977 * The system manager is provided with a variation of * 1978 * the backup routine called PURGE which backs up all files * 1979 * subject to purge and deletes them from the volume. The * 1980 * file directory entry might remain to indicate the disposition * 1981 * of the file. * 1982 * * 1983 * The alternative of automatically doing PURGE with every * 1984 * backup was rejected because: * 1985 * 1.) it may be totally unnecessary (more than adequate * 1986 * space remains on mass storage) * 1987 * 2.) all backup tapes must be saved indefinitely * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 120 (DISKDEFS) F 8 Disk Data Structures 1988 * * 1989 * Regardless of whether or not the operator uses purge, if * 1990 * the user desires, he should be notified of files that are * 1991 * subject to purge. This may be done by the hello program or * 1992 * by a periodic billing program. Also, catalogs should have * 1993 * files which are subject to purge marked in some manner. * 1994 * * 1995 * Files already purged are marked in catalogs. They * 1996 * are billable against the user at a flat fee each to prevent * 1997 * their proliferation. They may be killed at any time * 1998 * without reference to the backup tape. * 1999 * * 2000 * Purge intervals shorter than a week could be treated * 2001 * as if they were temporary files. When they exceed their * 2002 * purge interval, the next backup deletes them. This * 2003 * feature is not implemented in the current backup system. * 2004 * * 2005 * SHARED LIST * 2006 * The shared account list pointer is originally null, * 2007 * indicating shared with no one. It may point to a file block * 2008 * containing a list of authorized users and the access * 2009 * privileges that they are allowed. * 2010 * * 2011 * In addition, the file block may contain a password * 2012 * that must be matched by a process before it is granted * 2013 * access. * 2014 * * 2015 * MISC. * 2016 * The UDPRIORITY field is provided for use by the * 2017 * scheduler in setting user priorities. There is currently * 2018 * no function to set this field, but the value found in it * 2019 * (it may be set with PEEK&POKE) is actually used by the * 2020 * scheduler to modify its treatment of a user process. * 2021 * * 2022 * MANAGER PRIVILEGES * 2023 * Two fields are provided in the UD to control access * 2024 * by manager accounts. These fields are "manager file * 2025 * access" and "manager password access". When an account is * 2026 * created, these bits are set according to the MGR program * 2027 * defaults. These bits may only be set by the user and may * 2028 * only be cleared by the appropriate manager account. * 2029 * * 2030 * The manager file access bit when set allows the * 2031 * manager account modify privilege over the user's * 2032 * directory and files. This bit is normally set by a user * 2033 * when he has gotten himself into a hole (forgetting a file * 2034 * password, etc) and requires someone to set things right. * 2035 * With this bit on, a manager account may equip and modify * 2036 * any file on the user's account without supplying * 2037 * passwords. * 2038 * * 2039 * The manager password access bit allows the manager * 2040 * account to alter the logon password of the account, the * 2041 * FAC bit, the default restrictions, and the accounting * 2042 * control field. * 2043 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 121 (DISKDEFS) F 8 Disk Data Structures 2044 * On some systems, the managers may wish to have the * 2045 * privilege of free access to their underlings directorys * 2046 * and passwords in which case the account creation default * 2047 * may be changed to create the accounts with these manager * 2048 * access bits set. * 2049 * * 2050 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 122 (DISKDEFS) F 8 Disk Data Structures 2052 2053 ********************************************************************************** 2054 * * 2055 * USER DIRECTORY (UDIR) * 2056 * * 2057 * This table is the repository for all system * 2058 * knowledge of an account and its privileges. The first * 2059 * 96 words of the primary directory block are reserved * 2060 * for all information other than the file directory. * 2061 * * 2062 * The first block of the UDIR has 928 words available * 2063 * for file directory use. If the entire file directory can * 2064 * fit into this space, it is so stored. The capacity of * 2065 * this type of directory is 38 entries (928/24). * 2066 * * 2067 * When the file directory overflows this space, a new * 2068 * block is acquired, and the current file directory * 2069 * written to it. The 928 words in the primary block is used * 2070 * as an index to this block (and other blocks added later) * 2071 * similar to a RAF minor access block. Each pointer requires * 2072 * 5 words, one for a block number and count of the number of * 2073 * entries in that block, one for a secondary UDIR mass * 2074 * storage address, and three to hold the name and extension * 2075 * of the first entry in that block. The directory may have * 2076 * up to 185 (928/5) pointers to secondary blocks. * 2077 * * 2078 * When deletions occur, the deleting routine checks the * 2079 * size of the adjacent blocks to see if two can be combined. * 2080 * The test for recombination must have sufficient hysteresis * 2081 * to prevent thrashing with alternating deletions and * 2082 * insertions. Currently, the combined block must be no more * 2083 * than 2/3 full (a total of 28 entries prevents combining). * 2084 * * 2085 * Each secondary UDIR block is capable of holding * 2086 * 42 entries (1024/24). * 2087 * * 2088 * The ultimate capacity of this directory structure is * 2089 * 7770 entries (185*42). However, this directory structure * 2090 * can not be reliably filled to capacity. This is because * 2091 * after all secondary blocks are assigned, the next addition * 2092 * may need to go in a block that is completely full, even * 2093 * though many other blocks are only partially filled. The * 2094 * usable directory capacity depends upon the amount of * 2095 * hysteresis in the recombining algorithm, but in any event * 2096 * is under one half of the filled capacity. We will assume * 2097 * that 2500 entries are possible, based on the current * 2098 * recombining algorithm (best calculations seem to indicate * 2099 * that 2592 will always fit). * 2100 * * 2101 * This structure requires that the file directory be * 2102 * ordered by filename (a hashing function could have been * 2103 * used, but this was an effective and more useful method). * 2104 * A full catalog may print the directory as is (in name * 2105 * order). Catalog options are provided for partial catalogs * 2106 * such as only items saved since , only items * 2107 * accessed since , or the most recently saved * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 123 (DISKDEFS) F 8 Disk Data Structures 2108 * (accessed) items. The catalog may also be sorted so * 2109 * as to print in other than name order. * 2110 * * 2111 * The primary directory blocks never move. This allows * 2112 * the account finder table to contain the volume number and * 2113 * directory address of each account. * 2114 * * 2115 * CRASH RESISTANCE * 2116 * See IDX. When this table is set up to point to * 2117 * other blocks (such as a shared account list), those * 2118 * blocks must be written to the volume first and freed * 2119 * last. * 2120 * * 2121 * When the UDIR initially expands to two * 2122 * blocks (primary block and one secondary block), the new * 2123 * secondary block is created and written out, then the * 2124 * new format directory (now containing pointers to the * 2125 * secondary blocks) is written into the old position. * 2126 * * 2127 * If a secondary directory block overflows, it should * 2128 * be evenly divided between two new blocks, the updated * 2129 * primary directory block written out, and the original * 2130 * (overflowing) secondary directory block then freed. * 2131 * * 2132 * When two secondary blocks are to be combined, a third * 2133 * block is acquired and receives the information from the * 2134 * blocks being combined. The primary directory block is then * 2135 * updated and the two original blocks are freed. * 2136 * * 2137 * FILE DIRECTORY ENTRIES * 2138 * .SAF .RAF .CODE * 2139 * The original directory entry may be made with null * 2140 * pointers. When an initial block is assigned, its address * 2141 * may be entered into the file directory immediately because * 2142 * its FBI indicates that it is a free block until * 2143 * the initializing write has occurred. * 2144 * * 2145 * Any other blocks referenced by a file directory * 2146 * entry (share list for example) should be in place on the * 2147 * volume before the file directory entry or update is made. * 2148 * * 2149 * MASS STORAGE ERRORS * 2150 * Pointers to the primary UDIR block are in the IDX * 2151 * and AFT. Pointers to secondary UDIR blocks are in the * 2152 * primary UDIR. May be substituted. This user will get * 2153 * DSE status on any request referencing an unavailable * 2154 * block. Recovery must find all of the dependent items * 2155 * (files, share lists, etc.) in order to rebuild the * 2156 * defective block. The appropriate manager may be required * 2157 * to re-establish limits, authorities, and passwords. * 2158 * * 2159 ********************************************************************************** 2160 2161 BASE 00000000 DISP 2162 UD LABEL 00000000 DISP 2163 UDACCT BSS2 1 account name 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 124 (DISKDEFS) F 8 Disk Data Structures 00000002 DISP 2164 UDPROJ BSS 1 division-project 00000003 DISP 2165 UDPASS BSS2 1 logon password 2166 BSS 5 filler 2167 0000000A DISP 2168 UDWORDB BSS 1 0008001A 0 ZBM 2169 UDTYPE EQU R0,UDWORDB/BIT 0 0 => complete file directory 2170 * 1 => index to file directory 0000000B DISP 2171 UDHPRAC BSS2 1 hello program account name 0000000D DISP 2172 UDHPRACP BSS 1 hello program account division-project 0000000E DISP 2173 UDHPRACPW BSS2 1 hello program account password 00000010 DISP 2174 UDHPR BSS2 1 hello program name 00000012 DISP 2175 UDHPREXT BSS 1 hello program extension 00000013 DISP 2176 UDHPRPW BSS2 1 hello program password 00000015 DISP 2177 UDBYEAC BSS2 1 bye program account name 00000017 DISP 2178 UDBYEACP BSS 1 bye program account division-project 00000018 DISP 2179 UDBYEACPW BSS2 1 bye program account password 0000001A DISP 2180 UDBYE BSS2 1 bye program name 0000001C DISP 2181 UDBYEEXT BSS 1 bye program extension 0000001D DISP 2182 UDBYEPW BSS2 1 bye program password 0000001F DISP 2183 UDSFLAGS BSS 1 subsystem control flags 2184 * e.g. system is BASIC only. subsystems 2185 * may test these to control prompts, etc. 00000010 BYTE 2186 UDENCRFLG EQU BIT 0 flag sez to encrypt account info on backup 00000020 DISP 2187 UDSERNO BSS2 1 account serial number 2188 BSS 7 filler 00000029 DISP 2189 UDPRIORITY BSS 1 priority for this account 0000002A DISP 2190 UDPRIVS BSS 1 privileges 2191 2192 * The limit block for an account is kept in 2193 * main memory as long as a user is logged onto that 2194 * account or a file on that account is equipped. 2195 * Only one limit block for each account is kept 2196 * at any time: all users will point to the same block. 2197 0000002B DISP 2198 UDLIMITS LABEL beginning of the limit block 2199 BSS LIMITSIZE user limit info - see previous definitions 2200 BSS 011-LIMITSIZE room to expand user limit information 2201 0000003C DISP 2202 UDSHLLIST BSS UDSHLSIZE directory share list 00000040 DISP 2203 UDAUTHLIST BSS 1 ptr to auth list, 0 if none 00000048 ABS 2204 UDTITLEL EQU 72 length of account title in chars 2205 BSS 96-UDTITLEL/CPW-DISPW UD allow fixed size for UD 0000004E DISP 2206 UDTITLE BSS UDTITLEL/CPW 72 chars for account title (trailing nulls) 00000060 DISP 2207 UDFDLIST LABEL beginning of file directory 2208 DRCT 2209 000003A0 ABS 2210 UDFDSIZE EQU BLOCKSIZE-(UDFDLIST DISPW UD) size of FD 00000026 ABS 2211 UDFDECNT EQU UDFDSIZE/FDLNTH number of FD entries 0000002A ABS 2212 UD2FDECNT EQU WPP/FDLNTH number of entries in UDIR2 2213 2214 ********************************************************************************** 2215 * This symbol is used by the directory searching * 2216 * routines to detect when they have reached the end of * 2217 * the valid information area in a block. It points to * 2218 * the last possible place where a file directory entry * 2219 * may start (an entry starting later would not be * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 125 (DISKDEFS) F 8 Disk Data Structures 2220 * entirely within the block). * 2221 ********************************************************************************** 2222 000003E8 ABS 2223 UDLFDE EQU BLOCKSIZE-FDLNTH last possible entry location 2224 2225 ********************************************************************************** 2226 * These symbols are used by the directory modifying * 2227 * routines for the ends of the valid areas in a block. * 2228 * They point to the first word of the last possible entry * 2229 * in a block of the type indicated. * 2230 ********************************************************************************** 2231 2232 * This symbol points to the first word of the last possible 2233 * file directory element in a small directory UDIR1 000003D8 ABS 2234 UD1LFDE EQU UDFDLIST+(UDFDECNT-1)*FDLNTH 2235 2236 * This symbol points to the first word of the last possible 2237 * file directory element in a large directory UDIR2 000003D8 ABS 2238 UD2LFDE EQU UD+(UD2FDECNT-1)*FDLNTH 2239 2240 * Entries in UDIR1 for an indexed directory 2241 00000834 2242 UDINDXPROT BASE R3 0016C800 3 BASE 2243 UDINDXNAM BSS2 1 name of first entry in pointed block 0016C802 3 BASE 2244 UDINDXEXT BSS 1 extension of first entry 0016C803 3 BASE 2245 UDINDXDAW BSS 0 whole word for count and MS address 0016C00C 3 CACH 2246 UDINDXNUM BSSB 8 number of entries in pointed block 0008D183 3 ZBM 2247 UDINDXADR BSSB MSBLKLOG MS address of directory block 0016C804 3 BASE 2248 UDINDXDA2 BSS 1 MS address of secondary UDIR block 2249 DRCT 2250 00000005 ABS 2251 UDINDXLEN EQU DISPW UDINDXPROT length of entry in index 000000B9 ABS 2252 UDINDCNT EQU UDFDSIZE/UDINDXLEN number of pointers in UDIR1 2253 2254 * This symbol points to the first word of the last possible 2255 * index entry in a large directory UDIR1 block 000003F8 ABS 2256 UD1LINDX EQU UDFDLIST+(UDINDCNT-1)*UDINDXLEN 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 126 (DISKDEFS) F 8 Disk Data Structures 2258 2259 ********************************************************************************** 2260 * * 2261 * SEQUENTIAL ACCESS FILE STRUCTURE (.SAF) * 2262 * Each file block contains the FBI information * 2263 * with the forward pointer pointing to the following file * 2264 * block, and the backward pointer pointing to the * 2265 * preceding file block. The forward pointer of the last * 2266 * file block and the backward pointer of the first file * 2267 * block are null (zeros). * 2268 * * 2269 * The data bytes in the file blocks may be considered * 2270 * as a continuous space. Within this space are stored * 2271 * records, file marks, and an end of data indicator. * 2272 * * 2273 * A record consists of a 3 byte type and length indicator * 2274 * (forward length), the N bytes of data, and a repeat of the * 2275 * type and length indicator (backward length). The type bits * 2276 * contain information about the recording mode of the record * 2277 * and mark it as a record. * 2278 * * 2279 * A file mark consists of a 3 byte type indicator * 2280 * reserved for this purpose. (it is 3 bytes long so that * 2281 * backspace works) * 2282 * * 2283 * Each file contains one end of data indicator (EOD). * 2284 * A 1 byte type indicator is reserved for the normal EOD. * 2285 * Any unrecognizable type indicator is treated as an abnormal * 2286 * EOD. * 2287 * * 2288 * Also treated as abnormal EOD are the following conditions: * 2289 * 1.) back pointer in subsequent file block incorrect * 2290 * 2.) other FBI information obviously wrong (although * 2291 * this may not be exhaustively examined) * 2292 * 3.) a records forward length and backward length are * 2293 * different * 2294 * * 2295 * Some or all of a garbage record may be transmitted * 2296 * to the users buffer on a read request but he is given * 2297 * the abnormal EOD status (the user can not retrieve data * 2298 * belonging to other users because all such data is * 2299 * overwritten before the space is returned to the ADT). * 2300 * * 2301 * When a user is updating an entire file, such as an * 2302 * edit file, the preferred method is to write the new file * 2303 * onto a scratch file and switch the data pointers into * 2304 * the directory using the XREQ supplied for this purpose. * 2305 * (the critical updating of the directory is done in one * 2306 * mass storage transfer and is crashproof with respect to * 2307 * the user's data) * 2308 * * 2309 * Writes onto the end of a file are accomplished as follows: * 2310 * 1.) bring the last file block into a buffer * 2311 * 2.) serially place the new record and EOD into the * 2312 * buffer * 2313 * 3.) if the block is filled, request a new file block, * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 127 (DISKDEFS) F 8 Disk Data Structures 2314 * place the new forward pointer into the current * 2315 * block and write it out. Generate the FBI * 2316 * for the new block and continue filling. * 2317 * * 2318 * When a user writes onto a file at other than the end, the * 2319 * block containing the current position pointer is retained, * 2320 * but subsequent file blocks are freed. The write then * 2321 * takes place from the current position pointer into new * 2322 * file blocks if required. (the freeing may not take place * 2323 * until the current block is written with its new forward * 2324 * pointer) * 2325 * * 2326 * CRASH RESISTANCE * 2327 * Because unused space contains EOD's in the data and * 2328 * FBI areas, new blocks may be linked into a file before * 2329 * they have been written to the volume. * 2330 * * 2331 * MASS STORAGE ERRORS * 2332 * May be substituted. User requests will get * 2333 * abnormal/unavailable (A/U) status. Recovery may * 2334 * be able to retrieve the part of the file that occupies * 2335 * readable blocks. Blocks that have been unlinked from * 2336 * this file but not yet freed will create a problem * 2337 * during recovery. * 2338 * * 2339 ********************************************************************************** 2340 2341 * format of the type and length indicators 2342 00001040 BYTE 2343 FILTYPE BITS 8:11 type field 00000000 ABS 2344 RTYPETEXT EQU 0 text record 00000001 ABS 2345 RTYPETEXTF EQU 1 text with forms control 00000002 ABS 2346 RTYPEBIN EQU 2 binary 00000003 ABS 2347 RTYPEFORM EQU 3 forms record 00000004 ABS 2348 RTYPELABEL EQU 4 label record 00000005 ABS 2349 RTYPECOMM EQU 5 comment record 00001B30 BYTE 2350 FILRLEN BITS 13:31 character count of record 2351 * if FILSFLAGB = 1 then the type indicator is a file 2352 * mark or an end-of-data. File marks are three bytes 2353 * long and end-of-data marks are a single byte. 2354 * the bits in the type field are then defined as: 00003E10 BYTE 2355 FILEODB EQU BIT 31 end of data (file mark if zero) 00003C10 BYTE 2356 FILAEODB EQU BIT 30 abnormal EOD 00003A10 BYTE 2357 FILREODB EQU BIT 29 EOD read (not part of file, status to 2358 * user, indicates EOD read already) 00003810 BYTE 2359 FILSFLAGB EQU BIT 28 bit sez system record type 00000008 ABS 2360 FILEOF EQU 1*FILSFLAGB a file mark byte 00000009 ABS 2361 FILNEOD EQU 1*FILSFLAGB+1*FILEODB 0000000B ABS 2362 FILAEOD EQU 1*FILSFLAGB+1*FILEODB+1*FILAEODB 2363 00000140 BYTE 2364 SAFBLKNUM EQU PGNUMFLD contains current block number 000028C0 BYTE 2365 SAFCHARNUM EQU BYTEDISP current byte in current block 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 128 (DISKDEFS) F 8 Disk Data Structures 2367 2368 ********************************************************************************** 2369 * * 2370 * RANDOM ACCESS FILE STRUCTURE (.RAF) * 2371 * * 2372 * A RAF is an indexed file that provides a user with * 2373 * an addressable string of bytes. They are accessed by a * 2374 * seek to a specified byte location and a read or write of * 2375 * N bytes from there. * 2376 * * 2377 * Blocks not initialized by a user process are not * 2378 * allocated any MS space. Any minor access block may have * 2379 * a null (zeros) pointer indicating a non-existent data * 2380 * block. Reads from uninitialized space return all zero * 2381 * bits. Consequently, a write into a new block initializes * 2382 * that block to zeros to assure that all accesses to * 2383 * uninitialized space return zeros. * 2384 * * 2385 * When a RAF is initially created no blocks are allocated * 2386 * for it. If the first write to the RAF is within the address * 2387 * range of the first data block then only a data block is allocated * 2388 * for the RAF. When a write occurs outside of this block a * 2389 * minor access block is created and if necessary a major access * 2390 * block. * 2391 * * 2392 * The FDE for a RAF will point to either the data block * 2393 * (tiny RAF), the minor access block (small RAF), or the major * 2394 * access block (large RAF). It can also be zero indicating * 2395 * that there are no blocks yet associated with the RAF. There * 2396 * are 2 bits in the FDE to indicate what type of block the * 2397 * root block is. If FDLRAF is set then the root block of * 2398 * the RAF is a major access block. If FDTRAF is set then the * 2399 * first block of the RAF is a data block. Otherwise the root * 2400 * block is a minor access block. * 2401 * * 2402 * A RAF major access block contains the FBI and a list of * 2403 * pointers to minor access blocks. A zero pointer indicates an * 2404 * uninitialized region of the file. The forward and backward * 2405 * links and the relative block number in the FBI are always zero. * 2406 * * 2407 * Each minor access block contains the FBI and a list * 2408 * of pointers to the RAF data area blocks. A zero pointer * 2409 * indicates an uninitialized region of the file. The data * 2410 * area in the data block is all reserved for user data. The * 2411 * forward and backward pointers of the data blocks FBI are * 2412 * null. This is to avoid any inconsistent conditions due to * 2413 * crashes during the addition or deletion of a new data * 2414 * block. * 2415 * * 2416 * A RAF may be opened with multiple-write access. This * 2417 * means that the file may be opened by several processes * 2418 * intending to alter the file. These processes must assume * 2419 * responsibility for the proper interlocking of their * 2420 * transactions to assure data integrity. However, the * 2421 * system does not abdicate its responsibility for the file * 2422 * structure. In order to control the integrity of the file * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 129 (DISKDEFS) F 8 Disk Data Structures 2423 * structure, several restrictions are necessary. The RAF * 2424 * must be a large RAF (small RAFs are made into large RAFs * 2425 * if they are opened multiple-write). Data blocks may not * 2426 * be removed from a RAF while it is opened multiple-write. * 2427 * * 2428 * In order to protect the users, when a RAF is currently * 2429 * opened for multiple-write by any user, each and every * 2430 * other user of the file must also open it for multiple-write. * 2431 * It is expected that each 'record' in a RAF will be interlocked * 2432 * by a small field in that record. * 2433 * * 2434 * In order to allow record oriented data to be stored in a * 2435 * RAF, a set of XREQs are provided for a special form of access * 2436 * called 'sequential'. When an SWRITE is performed, the write * 2437 * starts at the current position in the file and continues for * 2438 * the specified number of characters, then a LF is added onto the * 2439 * end of the record. The current position is set to the next * 2440 * character position beyond where the LF was written. The end * 2441 * position pointer is set to the maximum of the end position * 2442 * pointer and the current position. * 2443 * * 2444 * An SREAD from a RAF starts at the current position and * 2445 * continues until a LF is encountered or the end position is * 2446 * encountered. The current position is left pointing to the * 2447 * character position beyond the terminating LF (or is set equal * 2448 * to the end position pointer. * 2449 * * 2450 * CRASH RESISTANCE * 2451 * The block number of a major access block may be * 2452 * entered into the file directory before the major access * 2453 * block is written to the volume. This is because the * 2454 * FBI will stop any use of the file. However, as each * 2455 * minor access block (or data block) is created, it must * 2456 * be written to the volume before its address may be * 2457 * entered into the major access block (or minor access * 2458 * block). Major access blocks, minor access blocks, and * 2459 * data blocks may all be updated in place. * 2460 * * 2461 * MASS STORAGE ERRORS * 2462 * See the mass storage error section for files. * 2463 * * 2464 ********************************************************************************** 2465 000000A0 BYTE 2466 RAFMAJINDX EQU PGNUMFLDMAJ determines which minor access block 2467 to retrieve from the major access block 000014A0 BYTE 2468 RAFMININDX EQU PGNUMFLDMIN determines which data block to 2469 retrieve from the minor access block 000028C0 BYTE 2470 RAFCHARIDX EQU BYTEDISP determines the character position within 2471 the data block 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 130 (DISKDEFS) F 8 Disk Data Structures 2473 2474 ********************************************************************************** 2475 * * 2476 * CODE FILES (.CODE) * 2477 * Code files consist of a code control block (CCB) and * 2478 * file blocks containing page images. The FDE specifies * 2479 * the CCB block address. Each word in the CCB (below * 2480 * CCBMAXPAGE) controls a block of the file. A zero word * 2481 * indicates none allocated. Otherwise, the upper 8 bits * 2482 * contain control information and the lower MSBLKLOG bits * 2483 * contain an MS address. * 2484 * * 2485 * A code file must be equipped before it may be linked * 2486 * with a LIBCALL. The code file may not be unequipped until * 2487 * all pages belonging to it are unmapped. * 2488 * * 2489 * The first 128 pages of the code files address space * 2490 * correspond to the memory of the executing process. When a * 2491 * code file is set up to run, each page is mapped into the * 2492 * corresponding page in the users virtual memory. If the * 2493 * CCBPROTECT bit was on for the page, it is set up as read * 2494 * only, otherwise, it is set up read only with own copy * 2495 * allowed. The CCBINFO area contains the transfer addresses * 2496 * and privilege and restriction information. * 2497 * * 2498 * A code file is like a small RAF that has had a transfer * 2499 * address specified. XREQs are provided to specify primary * 2500 * and secondary transfer addresses, and to indicate the * 2501 * state of each page (impure, protected, etc.). * 2502 * * 2503 * CRASH RESISTANCE * 2504 * See the crash resistance section for RAFs. * 2505 * * 2506 * MASS STORAGE ERRORS * 2507 * See the mass storage error section for files. * 2508 * * 2509 ********************************************************************************** 2510 2511 ********************************************************************************** 2512 * CCB INFO BLOCK * 2513 * This block resides near the end of the CCB and contains * 2514 * information special to code files. * 2515 ********************************************************************************** 2516 00000839 2517 CCBINFPROT BASE R0 00160800 0 BASE 2518 CCBPERMIT LABEL beginning of restriction block 00080050 0 ZBM 2519 CCBRSTCTG1 BSSB 5 who set restriction group 1 override (limit change) 00080A50 0 ZBM 2520 CCBRSTCTG2 BSSB 5 " group 2 " (catalog fetch) 00081450 0 ZBM 2521 CCBRSTCTG3 BSSB 5 " group 3 " (account attribute change) 00081E50 0 ZBM 2522 CCBRSTCTG4 BSSB 5 " group 4 " (unassigned) 00082850 0 ZBM 2523 CCBRSTCTG5 BSSB 5 " group 5 " (unassigned) 00083210 0 ZBM 2524 CCBMAINTR BSSB 1 allowed maintenance read 00083410 0 ZBM 2525 CCBMAINTW BSSB 1 allowed maintenance write 00083620 0 ZBM 2526 CCBOPREQ BSSB 2 allowed operator requests 00083A40 0 ZBM 2527 CCBMANAGR BSSB 4 allowed manager requests 00080211 0 ZBM 2528 CCBOWNDIR BSSB 1 use own directory pointers when run 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 131 (DISKDEFS) F 8 Disk Data Structures 00080421 0 ZBM 2529 CCBBACKUP BSSB 2 allowed backup requests 00003E10 BYTE 2530 CCBALWFRC EQU BIT 31 restriction/privilege forced always 00003C10 BYTE 2531 CCBOWNFRC EQU BIT 30 restriction/privilege forced by owner 00003A10 BYTE 2532 CCBDIVFRC EQU BIT 29 restriction/privilege forced by division 00003810 BYTE 2533 CCBPRJFRC EQU BIT 28 restriction/privilege forced by project 00003610 BYTE 2534 CCBUSRFRC EQU BIT 27 restriction/privilege forced by user 2535 BSS 0 force word alignment 2536 BSS 8-(DISPW CCBPERMIT) allow 8 words for restrictions 00160808 0 BASE 2537 CCBPREGS BSS 16 initial program registers, same form as CA 00081F18 0 ZBM 2538 CCBPTRANS EQU CCBPREGS/CAPC primary transfer address (same as PC) 0016080A 0 BASE 2539 CCB2TRANS EQU CCBPREGS/CAR0 secondary transfer address (same as R0) 2540 DRCT 00000018 ABS 2541 CCBINFOL EQU DISPW CCBINFPROT length of info for code file 2542 ORG CCBINFPROT 2543 2544 BASE 000003E8 ABS 2545 CCBMAXPAGE EQU WPP-CCBINFOL maximum number of page pointers in CCB 00000000 DISP 2546 CCBPAGE0 LABEL location of the first page pointer 2547 BSS CCBMAXPAGE each word controls a page 2548 * within each word, 2549 * the upper bits are control information 2550 * the lower MSBLKLOG bits are the block number 00000010 BYTE 2551 CCBPROTECT EQU BIT 0 bit indicates page is protected 000003E8 DISP 2552 CCBINFO LABEL CCB info block starts here 2553 DRCT 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 132 (DISKDEFS) F 8 Disk Data Structures 2555 2556 ********************************************************************************** 2557 * * 2558 * The following tables are present only on the system volume. * 2559 * * 2560 ********************************************************************************** 2561 2562 ********************************************************************************** 2563 * * 2564 * SYSTEM CONFIGURATION TABLE (SCT) * 2565 * This table contains all of the data concerning all * 2566 * I/O devices on the system. It contains the map between * 2567 * device number and descriptor (this mapping must be * 2568 * determined at run time). * 2569 * * 2570 * It may be wise to make this table a user file so * 2571 * that a given system volume could run on either of two * 2572 * hardware configurations, as determined at load time. * 2573 * This might save a lot of field service time * 2574 * when distributing new systems. * 2575 * * 2576 * CRASH RESISTANCE * 2577 * Not applicable * 2578 * * 2579 * MASS STORAGE ERRORS * 2580 * Pointer in volume label. May be substituted. * 2581 * Recovery will be complete except that maintenance will * 2582 * be required to re-establish the SCT. * 2583 * * 2584 ********************************************************************************** 2585 2586 ********************************************************************************** 2587 * * 2588 * ACCOUNT FINDER TABLE (AFT) * 2589 * This table is provided to determine what volume a given * 2590 * account name is on. It is updated at the same time as * 2591 * the user index. It must also be updated when volumes are * 2592 * mounted or dismounted. It is essentially a scratch * 2593 * table set up for the convenience of the system. This table * 2594 * is rebuilt each time the system is booted. This helps avoid * 2595 * problems with UDIR's moving around if one of the volumes is * 2596 * backed up. * 2597 * * 2598 * The table is indexed by account name (in the case of * 2599 * foreign volume entries, by volume name and account name) * 2600 * and provides the logical unit number (which must be * 2601 * decoded to hardware descriptor elsewhere) and the UDIR * 2602 * block number. * 2603 * * 2604 * This table has the same format as the IDX, * 2605 * which see for further information. * 2606 * * 2607 * CRASH RESISTANCE * 2608 * This table should be updated only after the IDX * 2609 * has received a new entry and before an entry is * 2610 * removed from an IDX. This table is rebuilt when * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 133 (DISKDEFS) F 8 Disk Data Structures 2611 * the system is initialized after a crash so as to * 2612 * ensure that it matches the data in the IDXs. * 2613 * * 2614 * MASS STORAGE ERRORS * 2615 * Pointer in volume label. May be substituted. * 2616 * Recovery will be complete. * 2617 * * 2618 ********************************************************************************** 2619 2620 * exactly the same format as the IDX (except for FBI type) 2621 2622 2623 ********************************************************************************** 2624 * * 2625 * Several other desirable table structures are * 2626 * implemented as SAFs or RAFs on the maintenance, * 2627 * manager, or operator accounts, as appropriate. These * 2628 * files and their location are: * 2629 * 1.) system code file. File = SYSTEM.!!!:SYSTEM.CODE * 2630 * Previous system = SYSTEM.!!!:OLDSYSTEM.CODE * 2631 * Experimental system = SYSTEM.!!!:EXPSYSTEM.CODE * 2632 * 2.) system crash file. File = SYSTEM.!!!:CRASHDUMP.CODE * 2633 * 3.) error log file. File = SYSTEM.!!!:ERRORLOG.LOGFIL * 2634 * 4.) supported library account. Manufacturers * 2635 * library = .!!! (referencable as +) * 2636 * 5.) system library account = .SYS (referencable as * 2637 * $$$. This account is the responsibility * 2638 * of the system owner (manager). * 2639 * * 2640 ********************************************************************************** 2641 2642 ORG CRANDALL recapture all of the lost space 14 INPUT VIRTDEFS virtual machine definitions 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 134 (VIRTDEFS) F 9 Error codes of all kinds 4 5 ********************************************************************************** 6 * * 7 * Any changes to this file (additions, deletions of * 8 * codes) should be made also to the appropriate section(s) of * 9 * .SYS:VIRTDEFS.PASCAL. * 10 * * 11 ********************************************************************************** 12 13 ********************************************************************************** 14 * * 15 * ERROR CODES * 16 * As sure as the sun shines, there will be errors and * 17 * these errors need to be reported to users and the system. * 18 * The following is a list of the error codes broken down into * 19 * groups: * 20 * * 21 * 001-01F These errors are generated by the machine in * 22 * response to illegal instruction usage * 23 * (undefined opcodes, CALL/ENTR mismatch, etc.). * 24 * The error is reported to the operating system * 25 * using this error code and the error code * 26 * is either passed on to the program causing * 27 * the error (if the program has notified the * 28 * system of its ability to handle such errors) * 29 * or to the overprocess controlling that * 30 * program. * 31 * 020-07F These errors are conditions noticed by the * 32 * system software and are passed on to the * 33 * program or to the overprocess. Some of these * 34 * codes are notifications of events in the * 35 * system that the user wished to know about * 36 * (break from terminal, time interval completed, * 37 * receipt of a message from another session, etc.). * 38 * 080-... These error codes are returned by the XREQs * 39 * to give notification of illegal usage, bad * 40 * parameters, or other unacceptable conditions. * 41 * If an error occurs on an XREQ, the error code * 42 * is always returned in R0 with the sign bit * 43 * set to indicate that an error has occurred. * 44 * Note that these error codes apply to any * 45 * XREQ, they are not segregated by FREQ, * 46 * UREQ, or OPREQ. * 47 * * 48 ********************************************************************************** 49 50 * 0 no error 51 * 001-01F machine generated errors 00000001 ABS 52 UINTUOP EQU 001 undefined opcode 00000002 ABS 53 UINTUMODE EQU 002 undefined address mode 00000003 ABS 54 UINTIMS EQU 003 illegal addr. mode for store inst. 00000004 ABS 55 UINTUMP EQU 004 undefined addr. mode in pointer 56 * EQU 005 unassigned (was 'illegal pointer for indexing') 00000006 ABS 57 UINTIMI EQU 006 illegal addr. mode for instruction 00000007 ABS 58 UINTXTI EQU 007 execute target illegal 00000008 ABS 59 UINTCEM EQU 008 CALL/ENTR mismatch 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 135 (VIRTDEFS) F 9 Error codes of all kinds 00000009 ABS 60 UINTPARL EQU 009 PAR/STP mismatch 0000000A ABS 61 UINTIONOV EQU 00A ION/IOFF overflow/underflow 0000000B ABS 62 UINTUOP2 EQU 00B unimplemented instruction 0000000C ABS 63 UINTCKB EQU 00C check bounds failure 0000000D ABS 64 UINTSTNG EQU 00D undefined number or illegal data 0000000E ABS 65 UINTSTKO EQU 00E stack overflow 0000000F ABS 66 UINTBCDO EQU 00F decimal overflow 00000010 ABS 67 UINTARTHOV EQU 010 arithmetic overflow 00000011 ABS 68 UINTDIV0 EQU 011 divide by zero 00000012 ABS 69 UINTFIXOVP EQU 012 fixing overflow positive 00000013 ABS 70 UINTFIXOVN EQU 013 fixing overflow negative 00000014 ABS 71 UINTFLTOVN EQU 014 floating overflow negative 00000015 ABS 72 UINTFLTUFN EQU 015 floating underflow negative 00000016 ABS 73 UINTFLTOVP EQU 016 floating overflow positive 00000017 ABS 74 UINTFLTUFP EQU 017 floating underflow positive 00000018 ABS 75 UINTUNDEF EQU 018 reference to undefined number 00000018 ABS 76 UINTINST EQU 018 this and below codes are instruction failures 0000001F ABS 77 UINTTRACEI EQU 01F instruction trace interrupt 78 * 020-07F software generated errors 00000020 ABS 79 UINTBREAK EQU 020 terminal BREAK request 00000021 ABS 80 UINTTIMCUT EQU 021 time cut interrupt 00000022 ABS 81 UINTNETERM EQU 022 non-empty term 00000023 ABS 82 UINTNEPATH EQU 023 non-empty path 00000024 ABS 83 UINTTDISC EQU 024 terminal disconnect 00000025 ABS 84 UINTTIMINT EQU 025 time interrupt 00000026 ABS 85 UINTMSG EQU 026 inter-session message received 00000027 ABS 86 UINTOPRQA EQU 027 operator abort 00000028 ABS 87 UINTGUNIT EQU 028 received a gift unit 88 * 060-07F codes that enter next higher program level 00000070 ABS 89 UINTVMFPE EQU 070 virtual memory failure - parity error 00000071 ABS 90 UINTVMFDE EQU 071 virtual memory failure - disk error 00000072 ABS 91 UINTVMFIDS EQU 072 virtual memory failure - insufficient disk space 00000073 ABS 92 UINTVMFISR EQU 073 virtual memory failure - insufficient system resources 00000074 ABS 93 UINTMPV EQU 074 memory protect violation 00000075 ABS 94 UINTATTACH EQU 075 request to attach to session 00000079 ABS 95 UINTBRKINS EQU 079 "break" instruction 0000007A ABS 96 UINTLOGOFF EQU 07A request to log off session 0000007B ABS 97 UINTCHAIN EQU 07B request to chain 0000007C ABS 98 UINTVAR EQU 07C request for variable 0000007D ABS 99 UINTOPRQ EQU 07D operator request (sub-code in R1) 00000001 ABS 100 UINTOPRQL EQU 1 do a logoff 00000002 ABS 101 UINTOPRQT EQU 2 do a terminate 00000003 ABS 102 UINTOPRQW EQU 3 give a warning 00000004 ABS 103 UINTOPRQUL EQU 4 user logoff 00000005 ABS 104 UINTOPRQP EQU 5 abort parallel session 0000007E ABS 105 UINTPTERM EQU 07E program termination (sub-code in R1) 106 * (right 4 bits of URSTOPxx) 0000007F ABS 107 UINTLOGIN EQU 07F initial creation entry 108 * 080-... errors made by XREQs 00000080 ABS 109 XREQERILR EQU 080 illegal request 110 * a catch-all error code 00000081 ABS 111 XREQERLNE EQU 081 *unit not equipped 00000082 ABS 112 XREQERPOB EQU 082 parameter out of bounds 00000083 ABS 113 XREQERLAE EQU 083 unit already equipped 00000084 ABS 114 XREQERPFM EQU 084 protected from modification 00000085 ABS 115 XREQERRNA EQU 085 read not allowed 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 136 (VIRTDEFS) F 9 Error codes of all kinds 00000086 ABS 116 XREQERMWNA EQU 086 multiple write not allowed 00000087 ABS 117 XREQERDSKL EQU 087 *exceeding disk limits 00000088 ABS 118 XREQERISAV EQU 088 *insufficient save file space 00000089 ABS 119 XREQERFAU EQU 089 *file abnormal/unavailable 120 * a MS error has occurred on users data 0000008A ABS 121 XREQERFBZ EQU 08A file busy 0000008B ABS 122 XREQERLAS EQU 08B unit already saved 0000008C ABS 123 XREQERLNS EQU 08C unit not saved 0000008D ABS 124 XREQERFNF EQU 08D file not found 125 * this error is given without elaboration for 126 * files that the user is not authorized to 127 * access 0000008E ABS 128 XREQERNAE EQU 08E name already exists 0000008F ABS 129 XREQERBFN EQU 08F bad filename 00000090 ABS 130 XREQERFHBD EQU 090 file has been destroyed 00000091 ABS 131 XREQERILOP EQU 091 illegal operation on device 00000092 ABS 132 XREQERFPRG EQU 092 file was purged 00000093 ABS 133 XREQERISYR EQU 093 *insufficient system resources 134 * the system has run out of MS table 135 * space or monitor free space 00000094 ABS 136 XREQERPNS EQU 094 privilege not sufficient 00000095 ABS 137 XREQERLPE EQU 095 lock protocol error 00000096 ABS 138 XREQERPWW EQU 096 password wrong 139 * this error is given without elaboration 140 * for attempts to log on to non-existant 141 * accounts or with an improper password 00000097 ABS 142 XREQERBVAR EQU 097 bad variable (genned by control mode) 00000098 ABS 143 XREQERWPT EQU 098 wrong parameter terminator 00000099 ABS 144 XREQERSIU EQU 099 system/resource in use 0000009A ABS 145 XREQERUAM EQU 09A unknown access mode 0000009B ABS 146 XREQERVLB EQU 09B volume label bad 0000009C ABS 147 XREQERVNMR EQU 09C volume not mountable by this revision 0000009D ABS 148 XREQERNFSV EQU 09D no free storage on volume 0000009E ABS 149 XREQERBSBL EQU 09E bad substitution list 0000009F ABS 150 XREQERDSE EQU 09F disk structure error 151 * a MS error has occurred on system tables 152 * or data. The users data is probably 153 * intact (if it exists) and may be 154 * recovered by a recovery program. 000000A0 ABS 155 XREQEROFC EQU 0A0 write off end of CODE file 000000A1 ABS 156 XREQERVIU EQU 0A1 volume in use 000000A2 ABS 157 XREQERMNRP EQU 0A2 may not reference other process/session 000000A3 ABS 158 XREQERNSPP EQU 0A3 no such process/session 000000A4 ABS 159 XREQERREOD EQU 0A4 *reread at end-of-data 000000A5 ABS 160 XREQERWANA EQU 0A5 must not have write access 000000A6 ABS 161 XREQERNSV EQU 0A6 no such volume 000000A7 ABS 162 XREQERIAUT EQU 0A7 insufficient authorization 000000A8 ABS 163 XREQERFIP EQU 0A8 freeing in progress (to OPR only) 000000A9 ABS 164 XREQERINHI EQU 0A9 access inhibited 165 * return given to login saying 166 * port/system is inhibited 000000AA ABS 167 XREQERNSL EQU 0AA no such unit 000000AB ABS 168 XREQERNSE EQU 0AB no such entry 000000AC ABS 169 XREQERNR EQU 0AC no room for entry 000000AD ABS 170 XREQERSUSP EQU 0AD item/access not available -- did not suspend 000000AE ABS 171 XREQERDNR EQU 0AE device not ready 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 137 (VIRTDEFS) F 9 Error codes of all kinds 000000AF ABS 172 XREQERDNA EQU 0AF device not assigned to caller 000000B0 ABS 173 XREQERDAA EQU 0B0 device already assigned 000000B1 ABS 174 XREQERDNC EQU 0B1 device not callers 000000B2 ABS 175 XREQERUKS EQU 0B2 unknown shift 000000B3 ABS 176 XREQERUKC EQU 0B3 unknown class 000000B4 ABS 177 XREQERUKF EQU 0B4 unknown forms 000000B5 ABS 178 XREQERNSS EQU 0B5 no such site 000000B6 ABS 179 XREQERNDS EQU 0B6 no device of specified name at site 000000B7 ABS 180 XREQERNDT EQU 0B7 no device of specified type at site 000000B8 ABS 181 XREQERRIB EQU 0B8 "ROUTE" illegal for batch jobs (spooler) 000000B9 ABS 182 XREQEROIO EQU 0B9 "OUT" illegal for output jobs (spooler) 000000BA ABS 183 XREQERAIR EQU 0BA "ATTR" illegal for batch jobs (spooler) 000000BB ABS 184 XREQERSIO EQU 0BB "SEQ" illegal for output jobs (spooler) 000000BC ABS 185 XREQERUKP EQU 0BC unknown parameter 000000BD ABS 186 XREQERSIB EQU 0BD "SITE" illegal for batch jobs (spooler) 000000BE ABS 187 XREQERUIB EQU 0BE "UNIT" illegal for batch jobs (spooler) 000000BF ABS 188 XREQERSPB EQU 0BF "SUPPRESS" illegal for batch jobs (spooler) 000000C0 ABS 189 XREQERSDE EQU 0C0 "SPOOLED" and "DIRECT" may not appear together (spooler) 000000C1 ABS 190 XREQERULT EQU 0C1 unknown logical device type (spooler) 000000C2 ABS 191 XREQERTMD EQU 0C2 too many different devices for batch job (spooler) 000000C3 ABS 192 XREQERDCM EQU 0C3 some device count appears >1 times for 193 * batch job (spooler) 000000C4 ABS 194 XREQERDIO EQU 0C4 "DEVICE" illegal for output job 195 000000C5 ABS 196 XREQERESDL EQU 0C5 exceeding session disk limits 000000C6 ABS 197 XREQERLBZ EQU 0C6 lock busy 000000C7 ABS 198 XREQERSCU EQU 0C7 spooler is currently unavailable 000000C8 ABS 199 XREQERVBB EQU 0C8 "VERBATIM" illegal for batch jobs (spooler) 000000C9 ABS 200 XREQERITK EQU 0C9 "TRACK" parameter out of bounds (spooler) 000000CA ABS 201 XREQERITM EQU 0CA "TIME" parameter out of bounds (spooler) 202 203 ********************************************************************************** 204 * * 205 * Error codes 0E0:0FF are reserved for device dependent * 206 * codes. * 207 * * 208 ********************************************************************************** 209 000000E0 ABS 210 DEVERPFE EQU 0E0 port framing error 000000E1 ABS 211 DEVERPPE EQU 0E1 port parity error 000000E2 ABS 212 DEVERPIBO EQU 0E2 port input buffer overflow 213 000000E3 ABS 214 DEVERTRE EQU 0E3 tape read error 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 138 (VIRTDEFS) F 9 Executive Request (XREQ) codes 217 218 ********************************************************************************** 219 * * 220 * A unit is an unsigned 8 bit integer used to refer to a * 221 * 'logical unit'. These logical units may be 'equipped' to * 222 * mass storage files or to pseudo device types. The * 223 * following are special unit assignments. * 224 * * 225 ********************************************************************************** 226 227 * unit 0 does not exist 00000001 ABS 228 LUNSIN EQU 1 standard input 00000002 ABS 229 LUNSOUT EQU 2 standard output 00000003 ABS 230 LUNSERR EQU 3 error output 00000064 ABS 231 MAXLOCAL EQU 100 highest possible local unit number 000000C9 ABS 232 LUNAIN EQU 201 absolute input 000000CA ABS 233 LUNAOUT EQU 202 absolute output 234 000000C9 ABS 235 LUNCMLOW EQU 201 any unit above this is not the user's 000000D2 ABS 236 LUNCMCNTL EQU 210 above this, only CM may diddle 237 238 ********************************************************************************** 239 * * 240 * Below are defined the codes for the requests that a * 241 * user may make to the system to do useful things for him. * 242 * The requests are grouped into file requests (FREQs) which * 243 * begin with the characters "FR", user requests (UREQs) which * 244 * begin with the characters "UR", and operator, manager, and * 245 * control mode requests which begin with the characters "OR". * 246 * A table containing the current maximum request code * 247 * values for each request type is kept with the XREQ call * 248 * monitor definitions (XREQMAXTAB). That table must be kept * 249 * up to date as greater numbers are used. * 250 * * 251 * The machine hardware traps the XREQ opcode to the * 252 * monitor after calculating the operand. The operand is * 253 * calculated using the 22 bit address field in the same * 254 * manner as a normal mem ref instruction (e.g. LD). The * 255 * monitor further decodes the R field to distinguish the type * 256 * of request. * 257 * The XREQ opcode is 08000000. The valid subops are * 258 * FREQ=2 (088xxxxx), UREQ=4 (090xxxxx), and OPREQ=5 * 259 * (094xxxxx). * 260 * Each request code is preceeded by a brief description * 261 * of the calling register setup, the request and operand, and * 262 * the registers returned. * 263 * * 264 ********************************************************************************** 265 00002CA0 BYTE 266 XRFLDCODE EQU BITS 22:31 XREQ request field 00003840 BYTE 267 XRFLDSUBOP EQU BITS 28:31 sub-operation part 00002C60 BYTE 268 XRFLDREQ EQU BITS 22:27 operation part 269 * EQU BIT 18:21 unused - reserved 00002210 BYTE 270 XRFLDNRWD EQU BIT 17 skip rewind if xreq attempts to do so 00004000 ABS 271 XRNOREWND EQU 1*XRFLDNRWD 00001E20 BYTE 272 XRFLDSUSP EQU BITS 15:16 suspension control field 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 139 (VIRTDEFS) F 9 Executive Request (XREQ) codes 00000000 ABS 273 XRSUSPNORM EQU 0*XRFLDSUSP suspend if request must wait 00008000 ABS 274 XRSUSPERR EQU 1*XRFLDSUSP give error if request must wait 275 * EQU 2*XRFLDSUSP suspend level above if request must wait 276 * EQU 3*XRFLDSUSP not used 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 140 (VIRTDEFS) F 9 Executive Request (XREQ) codes 278 279 ********************************************************************************** 280 * * 281 * FREQs * 282 * The file requests (FREQs) perform operations on a * 283 * unit. The unit is specified by the operand of the * 284 * instruction. Note that the unit number is actually the * 285 * operand of the FREQ and not the effective address, as in * 286 * some other systems! * 287 * * 288 ********************************************************************************** 289 290 * (R0:=request|FREQ unit|R0=dynamic status|R1=static status) 00000010 ABS 291 FRSTATUS EQU 0010 device status 00000011 ABS 292 FRCLEAR EQU 0011 clear errors 00000012 ABS 293 FRREWIND EQU 0012 rewind 00000013 ABS 294 FRRELEASE EQU 0013 release data 00000014 ABS 295 FRSEOD EQU 0014 search for EOD 00000015 ABS 296 FRFWSP EQU 0015 forward-space 00000016 ABS 297 FRBKSP EQU 0016 backspace 00000017 ABS 298 FRSEFF EQU 0017 search EOF forward 00000018 ABS 299 FRSEFB EQU 0018 search EOF backward 00000019 ABS 300 FRWFM EQU 0019 write file mark 0000001A ABS 301 FRFORCE EQU 001A force write modified file pages 0000001C ABS 302 FRWRITEMOD EQU 001C write out modified file pages 0000001D ABS 303 FRCYCLE EQU 001D cycle cartridge tape 0000001E ABS 304 FREPP EQU 001E return EPP (in R1) 0000001F ABS 305 FRDEVSTAT EQU 001F return device status (R1 = PPU status 306 * R2 = controller status) 307 308 * (R0:=request|R1:= 0(MFM), 1(GCR)|FREQ unit|R0=dynamic status) 309 * unstable due to possible controller micro-code problems 310 *FRDENSITY EQU 001B select recording density on cartridge tape 311 312 * (R0:=request|R1:=count|R2:=buffer-addr|FREQ unit|R0=dynamic status) 00000020 ABS 313 FRRWRITE EQU 0020 text rewrite 00000020 ABS 314 FRRWRITET EQU 0020 text rewrite 00000021 ABS 315 FRRWRITETF EQU 0021 text with forms control rewrite 00000022 ABS 316 FRRWRITEB EQU 0022 binary rewrite 00000023 ABS 317 FRRWRITEF EQU 0023 forms rewrite 00000024 ABS 318 FRRWRITEL EQU 0024 label rewrite 00000025 ABS 319 FRRWRITEC EQU 0025 comment rewrite 320 321 * (R0:=request|R1:=count|R2:=buffer-addr|FREQ unit|R0=dynamic status| 322 * R1=count-bytes remaining|R2=terminating character ) 00000030 ABS 323 FRREAD EQU 0030 read 00000031 ABS 324 FRREADB EQU 0031 read binary 00000032 ABS 325 FRSREAD EQU 0032 sequential read 00000033 ABS 326 FRSREADB EQU 0033 sequential binary read 327 328 * (R0:=request|R1:=count|R2:=buffer-addr|FREQ unit|R0=dynamic status) 00000040 ABS 329 FRWRITE EQU 0040 text write 00000040 ABS 330 FRWRITET EQU 0040 text write 00000041 ABS 331 FRWRITETF EQU 0041 text with forms control write 00000042 ABS 332 FRWRITEB EQU 0042 binary write 00000043 ABS 333 FRWRITEF EQU 0043 forms write 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 141 (VIRTDEFS) F 9 Executive Request (XREQ) codes 00000044 ABS 334 FRWRITEL EQU 0044 label write 00000045 ABS 335 FRWRITEC EQU 0045 comment write 336 337 * (R0:=request|R1:=count|R2:=buffer-addr|FREQ unit|R0=dynamic status) 338 * (R1 = number of bytes not written|R2 = advanced source pointer) 000002A0 ABS 339 FRSWRITE EQU 02A0 sequential write 000002A0 ABS 340 FRSWRITET EQU 02A0 sequential text write 000002A1 ABS 341 FRSWRITETF EQU 02A1 sequential text with forms control write 000002A2 ABS 342 FRSWRITEB EQU 02A2 sequential binary write 000002A3 ABS 343 FRSWRITEF EQU 02A3 sequential forms write 344 345 * (R0:=request|R1:=pntr-to-param-block|FREQ unit| 346 * R0=error-code or static-status ) 00000050 ABS 347 FREQUIP EQU 0050 equip + access 00000050 ABS 348 FREQUIPW EQU 0050 equip read-write 00000051 ABS 349 FREQUIPR EQU 0051 equip read-only 00000054 ABS 350 FREQUIPMW EQU 0054 equip multiple-write 00000057 ABS 351 FREQUIPNA EQU 0057 equip with no data access 352 00000050 ABS 353 FROPEN EQU 0050 open + access 00000050 ABS 354 FROPENW EQU 0050 open read-write 00000051 ABS 355 FROPENR EQU 0051 open read-only 00000054 ABS 356 FROPENMW EQU 0054 open multiple-write 00000057 ABS 357 FROPENNA EQU 0057 open with no data access 358 359 * (R0:=request | R1=length | R2:=string addr | FREQ unit | 360 * R0=error code or static status) 00000260 ABS 361 FRNOPEN EQU 0260 use FRNOPEN+access to open 00000260 ABS 362 FRNOPENW EQU 0260 open for write 00000261 ABS 363 FRNOPENR EQU 0261 open for read 00000264 ABS 364 FRNOPENMW EQU 0264 open for multiple write 00000267 ABS 365 FRNOPENNA EQU 0267 open for no data access 00000268 ABS 366 FRNOPENC EQU 0268 use FRNOPENC+access to open, create if necessary 00000268 ABS 367 FRNOPENCW EQU 0268 open for write, create if necessary 00000269 ABS 368 FRNOPENCR EQU 0269 open for read, create if necessary 0000026C ABS 369 FRNOPENCMW EQU 026C open for multiple write, create if necessary 0000026F ABS 370 FRNOPENCNA EQU 026F open for no data access, create if necessary 371 372 * (R0:=request | R1:=length | R2:=string addr | FREQ unit | 373 * R0:=error code or static status) 00000280 ABS 374 FRUOPEN EQU 0280 use FRUOPEN+access to open 00000280 ABS 375 FRUOPENW EQU 0280 open for write 00000281 ABS 376 FRUOPENR EQU 0281 open for read 00000284 ABS 377 FRUOPENMW EQU 0284 open for multiple write 00000287 ABS 378 FRUOPENNA EQU 0287 open for no data access 00000288 ABS 379 FRUOPENC EQU 0288 use FRUOPENC+access to open, create if necessary 00000288 ABS 380 FRUOPENCW EQU 0288 open for write, create if necessary 00000289 ABS 381 FRUOPENCR EQU 0289 open for read, create if necessary 0000028C ABS 382 FRUOPENCMW EQU 028C open for multiple write, create if necessary 0000028F ABS 383 FRUOPENCNA EQU 028F open for no data access, create if necessary 384 385 * (R0:=request|FREQ unit|R0=dynamic-status) 00000060 ABS 386 FRUNEQUIP EQU 0060 unequip unit 387 00000060 ABS 388 FRCLOSE EQU 0060 close unit 389 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 142 (VIRTDEFS) F 9 Executive Request (XREQ) codes 390 * (R0:=request|R1:=extension|R2,R3:=name|FREQ unit| 391 * R0=error-code or dynamic-status ) 00000070 ABS 392 FRSAVE EQU 0070 save in catalog 393 394 * (R0:=request|FREQ unit| 395 * R0=error-code or dynamic-status ) 00000080 ABS 396 FRUNSAVE EQU 0080 remove from catalog 397 398 * (R0:=request|R1:=position|FREQ unit|R0=dynamic-status| 399 * R1=zero if RAF now positioned in hole ) 00000090 ABS 400 FRPOSITION EQU 0090 position a RAF or CODE 401 * (R0:=request|R1:=RAFpage|R2:=memory-page|FREQ unit| 402 * R0=dynamic-status) 403 * note that R1 and R2 both contain page numbers (not addresses) 00000091 ABS 404 FRMAPIN EQU 0091 map RAF page into memory 00000092 ABS 405 FRMAPINR EQU 0092 map in with read-only access 00000094 ABS 406 FRMAPINOC EQU 0094 map in with own copy access 407 * (R0:=request|FREQ unit|R0=dynamic-status|R1=last-char-in-RAF ) 00000093 ABS 408 FRRAFLAST EQU 0093 get last addr in RAF 409 * (R0:=request|FREQ unit|R0=dynamic status|R1=current position) 00000095 ABS 410 FRRAFCPOS EQU 0095 get the RAF/CODE current position 411 * (R0:=request|R1:=page num|FREQ unit|R0=dynamic status| 412 * R2=non-zero if protected) 00000096 ABS 413 FRPGPROTG EQU 0096 get protected status of page 414 * (R0:=request|R1:=page number|R2:=new protect bit| 415 * FREQ unit|R0=dynamic status) 00000097 ABS 416 FRPGPROTS EQU 0097 set protected status of a page 417 * (R0:=request|R1:=byte address in page|FREQ unit| 418 * R0=dynamic status) 00000098 ABS 419 FRDELPAGE EQU 0098 delete page in RAF or CODE 420 * (R0:=request|FREQ unit|R0=dynamic status|R1=new position) 00000099 ABS 421 FRRAFNEXT EQU 0099 position to next non-hole 422 423 * (R0:=request+access|R1:=pntr-to-param-block|FREQ unit| 424 * R0=error-code or dynamic-status ) 000000A0 ABS 425 FRSHARE EQU 00A0 share file 426 427 * (R0:=request+access|R1:=pntr-to-param-block|FREQ unit| 428 * R0=error-code or dynamic-status ) 000000B0 ABS 429 FRUNSHARE EQU 00B0 unshare file 430 431 * (R0:=request|R1:= requested code|FREQ unit|R0=dynamic-status) 000000C0 ABS 432 FRCACCESS EQU 00C0 change equip access 000000C1 ABS 433 FRCHGTRANS EQU 00C1 modify transaction in progress flag (FCB) 434 435 * (R0:=request|FREQ unit|R0=dynamic-status|R1=transaction flag) 000000C2 ABS 436 FRGETTRANS EQU 00C2 get transaction in progress flag (FCB) 437 438 * (R0:=request|R1:=new value|FREQ unit|R0=dynamic status) 000000D0 ABS 439 FRMODACS EQU 00D0 modify access code 440 * EQU 00D1 unused - was modify access lock (unimp) 000000D2 ABS 441 FRMODPRGI EQU 00D2 modify purge interval 000000D3 ABS 442 FRMODNBKUP EQU 00D3 modify no-backup flag 000000D4 ABS 443 FRMODFWWSC EQU 00D4 modify FWWSC flag 000000D5 ABS 444 FRMODUSRN EQU 00D5 modify user value 000000D6 ABS 445 FRMODLBKU EQU 00D6 modify last backup date 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 143 (VIRTDEFS) F 9 Executive Request (XREQ) codes 000000D7 ABS 446 FRMODGHOST EQU 00D7 modify ghost flag 000000D8 ABS 447 FRMODLWD EQU 00D8 modify last write date 000000D9 ABS 448 FRMODLRD EQU 00D9 modify last read date 000000DA ABS 449 FRMODTRANS EQU 00DA modify transaction in progress flag (DIR) 000000DB ABS 450 FRMODFLOG EQU 00DB modify file log flag 451 452 * (R0:=request|R1:=count|R2:=buffadr|FREQ unit|R0=dynamic-status| 453 * R1=count - chars-copied) 000000E0 ABS 454 FRCATALOG EQU 00E0 catalog info fetch 000000E1 ABS 455 FRREADSHL EQU 00E1 read shared list 456 457 * EQU 00F0 unused (reserved for file info fetch) 458 459 * (R0:=request|R1:=extension|R2,R3:=new name|FREQ unit|R0=error-code or 460 * dynamic-status) 00000100 ABS 461 FRRENAMER EQU 0100 rename saved file 462 463 * (R0:=request|R1,R2:=value|FREQ unit|R0=dynamic-status|R1,R2=old value) 00000110 ABS 464 FRTSETTYPE EQU 0110 set terminal type 465 * (R0:=request|R1:=value|FREQ unit|R0=dynamic-status|R1=old value) 00000111 ABS 466 FRTSETCRD EQU 0111 set CR delay (MS) 00000112 ABS 467 FRTSETLFD EQU 0112 set LF delay (MS) 00000113 ABS 468 FRTSETFFD EQU 0113 set FF delay (MS) 00000114 ABS 469 FRTSETBKSP EQU 0114 set backspace char 00000115 ABS 470 FRTSETKILL EQU 0115 set line kill char 00000116 ABS 471 FRTSETCW EQU 0116 set carriage width 00000117 ABS 472 FRTSETSH EQU 0117 set screen height 00000118 ABS 473 FRTSETECHO EQU 0118 set echo (on/off) 00000119 ABS 474 FRTSETRATE EQU 0119 set input and output baud rate 0000011A ABS 475 FRTSETTCG EQU 011A set terminating char group 0000011C ABS 476 FRTSETIRAT EQU 011C set input baud rate 0000011D ABS 477 FRTSETORAT EQU 011D set output baud rate 0000011F ABS 478 FRTSETTRNS EQU 011F set transmitters 00000220 ABS 479 FRTSETMODE EQU 0220 set interface mode 00000221 ABS 480 FRTSETOPT EQU 0221 set CIA options 00000222 ABS 481 FRTSETHTD EQU 0222 set HT delay (MS) 00000223 ABS 482 FRTSETBRCH EQU 0223 set 'break' character 00000224 ABS 483 FRTSETXOIQ EQU 0224 set XOFF on port's input buffer full 484 * (R0:=request|R1:=pntr-to-def-block|FREQ unit|R0=dynamic-status) 0000011B ABS 485 FRTSETTCS EQU 011B set user defined term chars 486 487 * (R0:=request|FREQ unit|R0=dynamic-status|R1,R2=value) 00000120 ABS 488 FRTGETTYPE EQU 0120 get terminal type 489 * (R0:=request|FREQ unit|R0=dynamic-status|R1=value) 00000121 ABS 490 FRTGETCRD EQU 0121 get CR delay (MS) 00000122 ABS 491 FRTGETLFD EQU 0122 get LF delay (MS) 00000123 ABS 492 FRTGETFFD EQU 0123 get FF delay (MS) 00000124 ABS 493 FRTGETBKSP EQU 0124 get backspace char 00000125 ABS 494 FRTGETKILL EQU 0125 get line kill char 00000126 ABS 495 FRTGETCW EQU 0126 get carriage width 00000127 ABS 496 FRTGETSH EQU 0127 get screen height 00000128 ABS 497 FRTGETECHO EQU 0128 get echo mode 00000129 ABS 498 FRTGETRATE EQU 0129 get output baud rate 0000012A ABS 499 FRTGETTCG EQU 012A get terminating char group 0000012C ABS 500 FRTGETIRAT EQU 012C get input baud rate 0000012E ABS 501 FRTGETPORT EQU 012E get port number 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 144 (VIRTDEFS) F 9 Executive Request (XREQ) codes 0000012F ABS 502 FRTGETRCVR EQU 012F get receiver states 00000230 ABS 503 FRTGETMODE EQU 0230 get interface mode 00000231 ABS 504 FRTGETOPT EQU 0231 get selected CIA options 00000232 ABS 505 FRTGETHTD EQU 0232 get HT delay (MS) 00000233 ABS 506 FRTGETBRCH EQU 0233 get 'break' character 00000235 ABS 507 FRTGETXOIQ EQU 0235 get XOFF on port's input buffer full 508 * (R0:=request|R1:=buffer size|R2:=buffer address|FREQ unit| 509 * R0=dynamic status|R1=buffer remaining) 00000234 ABS 510 FRTGETINFO EQU 0234 get all port info 511 * (R0:=request|R1:=pntr-to-block|FREQ unit| R0=dynamic-status) 0000012B ABS 512 FRTGETTCS EQU 012B get characters that terminate 513 514 * (R0:=request|FREQ unit|R0=error-code|R1=process serial number) 00000130 ABS 515 FRCHAIN EQU 0130 chain, run program 00000131 ABS 516 FRSETUPP EQU 0131 set up under program 00000132 ABS 517 FRINSRTP EQU 0132 insert under program 00000134 ABS 518 FRCREATP EQU 0134 create another underprocess 519 * (R0:=request|R1:=input-unit|R2:=output-unit|FREQ program-unit| 520 * R0=error code or session number) 00000133 ABS 521 FRCONCP EQU 0133 create concurrent session 522 523 * (R0:=request|R1:=unit-of-saved-file|FREQ unit-of-new-data| 524 * R0=dynamic-status) 00000140 ABS 525 FRXSAVE EQU 0140 exchange saved file data 526 527 * (R0:=request|FREQ unit|R0=error-code|R1=hard-limit|R2=soft-limit| 528 * R3=saved-limit) 00000150 ABS 529 FRBLKLIM EQU 0150 get block limits 530 * (R0:=request|FREQ unit|R0=error-code|R1=blocks-used|R2=soft-limit| 531 * R3=saved-limit) 00000151 ABS 532 FRBLKUSED EQU 0151 get blocks used 533 534 * (R0:=request|FREQ unit|R0=dynamic-status) 00000170 ABS 535 FRDESTROY EQU 0170 destroy a saved file 536 537 * (R0:=request|FREQ unit|R0=dynamic status|R1=value) 00000180 ABS 538 FRCGPTRANS EQU 0180 get primary transfer address 00000181 ABS 539 FRCG2TRANS EQU 0181 get secondary transfer address 00000182 ABS 540 FRCGOWND EQU 0182 get to use own directory when run 00000183 ABS 541 FRCGRG1 EQU 0183 get restriction group 1 override 00000184 ABS 542 FRCGRG2 EQU 0184 get restriction group 2 override 00000185 ABS 543 FRCGRG3 EQU 0185 get restriction group 3 override 00000186 ABS 544 FRCGRG4 EQU 0186 get restriction group 4 override 00000187 ABS 545 FRCGRG5 EQU 0187 get restriction group 5 override 00000188 ABS 546 FRCGOPREQ EQU 0188 get operator requests 00000189 ABS 547 FRCGMANAGR EQU 0189 get manager request priv 0000018A ABS 548 FRCGMANTR EQU 018A get maintenance read 0000018B ABS 549 FRCGMANTW EQU 018B get maintenance write 0000018C ABS 550 FRCGBCKUP EQU 018C get backup priv 551 * (R0:=request|R1:=field-number|FREQ unit| 552 * R0=dynamic status|R2=value of field) 0000018F ABS 553 FRGETCCB EQU 018F get field from CCB 00000000 ABS 554 CCBFLDR0 EQU 0 field number for R0 00000001 ABS 555 CCBFLDR1 EQU 1 00000002 ABS 556 CCBFLDR2 EQU 2 00000003 ABS 557 CCBFLDR3 EQU 3 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 145 (VIRTDEFS) F 9 Executive Request (XREQ) codes 00000004 ABS 558 CCBFLDR4 EQU 4 00000005 ABS 559 CCBFLDR5 EQU 5 00000006 ABS 560 CCBFLDR6 EQU 6 00000007 ABS 561 CCBFLDR7 EQU 7 00000008 ABS 562 CCBFLDPC EQU 8 field number for PC 00000009 ABS 563 CCBFLDPSR EQU 9 field number for PSR 0000000A ABS 564 CCBFLDIMR EQU 10 field for interrupt mask register 0000000B ABS 565 CCBFLDIAR EQU 11 field for interrupt address 00000010 ABS 566 CCBFLDOWND EQU 16 field for own directory privilege 00000011 ABS 567 CCBFLDRG1 EQU 17 field for restriction group 1 00000012 ABS 568 CCBFLDRG2 EQU 18 field for restriction group 2 00000013 ABS 569 CCBFLDRG3 EQU 19 field for restriction group 3 00000014 ABS 570 CCBFLDRG4 EQU 20 field for restriction group 4 00000015 ABS 571 CCBFLDRG5 EQU 21 field for restriction group 5 00000016 ABS 572 CCBFLDMNTR EQU 22 field for maintenance read 00000017 ABS 573 CCBFLDMNTW EQU 23 field for maintenance write 00000018 ABS 574 CCBFLDOPR EQU 24 field for operator privilege 00000019 ABS 575 CCBFLDMGR EQU 25 field for manager privilege 0000001A ABS 576 CCBFLDBKUP EQU 26 field for backup privilege 00000008 ABS 577 CCBFLDPTRN EQU CCBFLDPC primary transfer address 00000000 ABS 578 CCBFLD2TRN EQU CCBFLDR0 secondary transfer address 579 * (R0:=request|R1:=new value|FREQ unit|R0=dynamic status) 00000190 ABS 580 FRCSPTRANS EQU 0190 set primary transfer address 00000191 ABS 581 FRCS2TRANS EQU 0191 set secondary transfer address 00000192 ABS 582 FRCSOWND EQU 0192 set to use own directory when run 00000193 ABS 583 FRCSRG1 EQU 0193 set restriction group 1 override 00000194 ABS 584 FRCSRG2 EQU 0194 set restriction group 2 override 00000195 ABS 585 FRCSRG3 EQU 0195 set restriction group 3 override 00000196 ABS 586 FRCSRG4 EQU 0196 set restriction group 4 override 00000197 ABS 587 FRCSRG5 EQU 0197 set restriction group 5 override 00000198 ABS 588 FRCSOPREQ EQU 0198 set operator requests 00000199 ABS 589 FRCSMANAGR EQU 0199 set manager request priv 0000019A ABS 590 FRCSMANTR EQU 019A set maintenance read 0000019B ABS 591 FRCSMANTW EQU 019B set maintenance write 0000019C ABS 592 FRCSBCKUP EQU 019C set backup priv 593 * (R0:=request|R1:=field-number|R2:=new-value|FREQ unit| 594 * R0=dynamic status) 0000019F ABS 595 FRSETCCB EQU 019F set field in CCB 596 597 * (R0:=request|FREQ unit|R0=dynamic status) 000001A0 ABS 598 FRALIAS EQU 01A0 set default directory 599 600 * (R0:=request|FREQ unit|R0=error code) 000001B0 ABS 601 FRTFLSHO EQU 01B0 flush output queue 000001B1 ABS 602 FRTFLSHI EQU 01B1 flush input queue 000001B2 ABS 603 FRTFLSHIO EQU 01B2 flush both input and output queues 000001B3 ABS 604 FRTRESET EQU 01B3 restore term to 'default' configuration 605 * (R0:=request|R1=delay in Ms|FREQ unit|R0=error code) 000001B4 ABS 606 FRTDELAY EQU 01B4 delay terminal outputting 607 * (R0:=request|R1:=character times|FREQ unit|R0=error code) 000001B5 ABS 608 FRTBREAK EQU 01B5 send 'break' 609 * (R0:=request|FREQ unit|R0=error code) 000001B6 ABS 610 FRTCLRXOFF EQU 01B6 clears xoff 611 612 * (R0:=request|FREQ unit|R0=error code|R1=value) 000001C0 ABS 613 FRAGCPUL EQU 01C0 get acct CPU limit (in sec) 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 146 (VIRTDEFS) F 9 Executive Request (XREQ) codes 000001C1 ABS 614 FRAGCPUU EQU 01C1 get acct CPU time used 000001C2 ABS 615 FRAGWLCKL EQU 01C2 get acct wallclock limit (in min) 000001C3 ABS 616 FRAGWLCKU EQU 01C3 get acct wallclock time used 000001C4 ABS 617 FRAGDSKL EQU 01C4 get acct disk block limit 000001C5 ABS 618 FRAGDSKU EQU 01C5 get acct saved disk blocks used 000001C6 ABS 619 FRAGWARN EQU 01C6 get acct soft disk limit 000001C7 ABS 620 FRAGSAVL EQU 01C7 get acct saved disk limit 000001C8 ABS 621 FRAGSSCF EQU 01C8 get acct subsystem control flags 000001C9 ABS 622 FRAGBUSY EQU 01C9 get acct busy counter 000001CA ABS 623 FRAGFAC EQU 01CA get acct file access control 000001CB ABS 624 FRAGPWAC EQU 01CB get acct password access control 000001CD ABS 625 FRAGACCT EQU 01CD get acct accounting control 626 * (R0:=request|R1:=ptr to filename|FREQ unit|R0=error code) 000001CE ABS 627 FRAGINITP EQU 01CE get acct initial program 628 * (R0:=request|R1:=buffer size|R2:=ptr to buffer|FREQ unit| 629 * R0=error code|R1=buffer remaining) 000001CF ABS 630 FRAGACCTT EQU 01CF get account title 000001D1 ABS 631 FRAGSHAD EQU 01D1 get account shadow flag 000001D2 ABS 632 FRAGDFLTR EQU 01D2 get acct default restriction 633 634 * (R0:=request | FREQ unit | R0:=error code | R1:R2:=value) 000001D0 ABS 635 FRAGSERNO EQU 01D0 get account serial number 636 637 * (R0:=request | FREQ unit | R0:=error code | R1:=value) 000001D3 ABS 638 FRAGENCF EQU 01D3 get account encryption flag 639 640 * (R0:=request|R1:=new value|FREQ unit|R0=error code|R1=set value) 000001E0 ABS 641 FRASCPUL EQU 01E0 set acct CPU limit (in sec) 000001E1 ABS 642 FRASCPUU EQU 01E1 set acct CPU time used 000001E2 ABS 643 FRASWLCKL EQU 01E2 set acct wallclock limit (in min) 000001E3 ABS 644 FRASWLCKU EQU 01E3 set acct wallclock time used 000001E4 ABS 645 FRASDSKL EQU 01E4 set acct disk block limit 000001E6 ABS 646 FRASWARN EQU 01E6 set acct soft block limit 000001E7 ABS 647 FRASSAVL EQU 01E7 set acct saved disk limit 000001E8 ABS 648 FRASSSCF EQU 01E8 set acct subsystem control flags 000001EA ABS 649 FRASFAC EQU 01EA set acct file access control 000001EB ABS 650 FRASPWAC EQU 01EB set acct password access control 000001ED ABS 651 FRASACCT EQU 01ED set acct accounting control 652 * (R0:=request|R1:=ptr to filename buffer|FREQ unit|R0=error code) 000001EE ABS 653 FRASINITP EQU 01EE set account initial program 654 * (R0:=request|R1:=string len|R2:=ptr to string|FREQ unit| 655 * R0=error code) 000001EF ABS 656 FRASACCTT EQU 01EF set account title 657 * (R0:=request|R1:=ptr passwords|FREQ unit|R0=error code) 000001F0 ABS 658 FRASPASS EQU 01F0 set account logon password 659 * (R0:=request|R1:=new value|FREQ unit|R0=error code) 000001F2 ABS 660 FRASDFLTR EQU 01F2 set acct default restrictions 661 662 * (R0:=request | R1:= 1 or 0 | FREQ unit | R0:=error code) 000001F3 ABS 663 FRASENCF EQU 01F3 set account encryption flag 664 665 * (R0:=request | FREQ unit | R0:=error code or dynamic status) 00000200 ABS 666 FRFILELOCK EQU 0200 lock files implicit .LOCK 00000201 ABS 667 FRFILEULOK EQU 0201 unlock files implicit .LOCK 668 * (R0:=request | R1:=resource# | FREQ unit | R0:=error code or dynamic status) 00000203 ABS 669 FRRESLOCKR EQU 0203 lock file resource lock for read 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 147 (VIRTDEFS) F 9 Executive Request (XREQ) codes 00000204 ABS 670 FRRESLOCKW EQU 0204 lock file resource lock for write 00000205 ABS 671 FRRESULOCK EQU 0205 unlock files resource lock 672 * (R0:=request|FREQ unit|R0=error code or dynamic status| 673 * R1=0 (no lock), 1 (unlocked lock), or 2 (locked lock)) 00000202 ABS 674 FRFILELOKT EQU 0202 test state of files implicit .LOCK 675 * (R0:=request|R1:=resource#|FREQ unit|R0=error code or dynamic status| 676 * R1=0 (no lock), 1 (write locked), or 2 (read locked)| 677 * R2=session number of a locker, if R1=1 or 2) 00000206 ABS 678 FRRESLOKT EQU 0206 test state of files resource lock 00000206 ABS 679 FRRESLOCKT EQU 0206 test state of files resource lock 680 681 * (R0:=request|FREQ unit|R0=errorcode or dynamic status) 00000210 ABS 682 FRUNITID EQU 0210 unit interrupt disable 00000211 ABS 683 FRUNITIE EQU 0211 unit interrupt enable 684 * (R0:=request|FREQ unit|R0=error code|R1=non-zero if enabled) 00000212 ABS 685 FRUNITIGET EQU 0212 unit interrupt flag state get 686 687 * (R0:=request|R1:=echo unit|FREQ unit|R0=errorcode or dynamic status) 00000240 ABS 688 FRECHOUNIT EQU 0240 enable echoing of read lines 689 * (R0:=request|FREQ unit|R0=errorcode or dynamic status) 00000241 ABS 690 FRECHOOFF EQU 0241 disable echoing of read lines 691 * (R0:=request|FREQ unit|R0=errorcode or dynamic status|R1=unit) 00000242 ABS 692 FRECHOGET EQU 0242 get the echo unit (zero if none) 693 * (R0:=request|R1:=buffer length|R2:=buffer address|FREQ unit| 694 * R0=dynamic status or error code) 00000250 ABS 695 FRSETVVFU EQU 0250 load and enable line printer VVFU 696 * (R0:=request|FREQ unit|R0=dynamic status or error code) 00000251 ABS 697 FRCLRVVFU EQU 0251 disable line printer VVFU 698 699 * (R0:=request|R1:=read-unit|FREQ write-unit|R0=error-code) 00000270 ABS 700 FRMAKEPATH EQU 0270 create path, opening both ends 701 702 * (R0:=request|R1:=unit|FREQ unit|R0=error code or static status of unit) 00000290 ABS 703 FRRESSWTCH EQU 0290 switch resources associated with units 704 705 ********************************************************************************** 706 * * 707 * When extending the range of FREQ constants, please * 708 * update the table of maximum values, XREQMAXTAB. * 709 * * 710 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 148 (VIRTDEFS) F 9 Executive Request (XREQ) codes 712 713 ********************************************************************************** 714 * * 715 * UREQs * 716 * The user requests (UREQs) perform operations related * 717 * to the users session ( or to sessions that it controls ). * 718 * The operand of the UREQ is usually not used, but it may * 719 * contain either a session number or a process serial number. * 720 * A process serial number or session number of 0 refers to * 721 * the process/session itself. Negative process serial * 722 * numbers refer to under processes in the process tree * 723 * relative to the position of the current process. Positive * 724 * process serial numbers refer directly to another * 725 * underprocess. A positive session number refers directly to * 726 * a session on the system. The user must, of course, have * 727 * the proper privileges to access other sessions. Negative * 728 * session numbers are undefined. * 729 * * 730 ********************************************************************************** 731 732 * (R0:=request|R1:=value|R2,R3:=variable-name|UREQ 0| 733 * R0=error-code) 00000010 ABS 734 URVARSET EQU 0010 set variable 735 * for string: (R0:=request|R1:=char addr of string| 736 * R2,R3:=variable-name|UREQ buffer length| 737 * R0:=error-code) 00000011 ABS 738 URVARSETS EQU 0011 set string variable 739 740 * (R0:=request|R2,R3:=variable-name|UREQ 0|R0=error-code| 741 * R1=value) 00000020 ABS 742 URVARGET EQU 0020 get variable 743 * for string: (R0:=request|R1:=buffer address| 744 * R2,R3:=variable-name|UREQ buffer length| 745 * R0=error-code [or 0=number, 1=string]| 746 * R1=value or bufferlen-stringlen) 00000021 ABS 747 URVARGETS EQU 0021 get string variable 748 749 * (R0:=request|R1:=buffer addr|R2:=error number|UREQ bufferlen| 750 * R0=error code|R1=buffer remaining) 00000028 ABS 751 URERRORGET EQU 0028 get string for error number 752 753 * (R0:=request|UREQ|R0=error-code|R1=number-of-terms-on| 754 * R2=number-of-sessions) 00000050 ABS 755 URTRAFFIC EQU 0050 get system traffic 00000051 ABS 756 URLOADFACT EQU 0051 get system load factor in R1 757 * (R0:=request|R1:=buffer size|R2:=buffer address| 758 * UREQ -1, 0, or session number|R0=error code|R1=buffer remaining) 00000052 ABS 759 URSESSINFO EQU 0052 get session information 00000052 ABS 760 URPROCINFO EQU 0052 (old name for URSESSINFO) 761 * (R0:=request|UREQ 0|R1=system serial number|R2=system name in PAK6) 00000053 ABS 762 URGETSSN EQU 0053 return system serial number and name 763 * (R0:=request|UREQ 0|R2,R3=system version in ASCII) 00000054 ABS 764 URGETVERS EQU 0054 return system version in ASCII 765 * (R0:=request|R1:=program number|UREQ 0|R0=0 if ok to run, non-zero otherwise) 00000055 ABS 766 URMAYIRUN EQU 0055 see if proprietary program may run 767 * (R0:=request|R1:=buffer size|R2:=buffer address|UREQ 0| 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 149 (VIRTDEFS) F 9 Executive Request (XREQ) codes 768 * R0=error code|R1=buffer remaining) 00000056 ABS 769 URUDRPINFO EQU 0056 get under process information 770 * (R0:=request|R1:=buffer size|R2:=buffer address|UREQ | 771 * R0=error code|R1=buffer remaining) 00000057 ABS 772 URLUNITS EQU 0057 get local unit information 773 * (R0:=request|UREQ 0|R0=error code|R1=process level(CM=0)) 00000058 ABS 774 URPROCLVL EQU 058 get level in process tree 775 776 * (R0:=request|UREQ|R0=error-code|R1=timezone|R2,R3=system-date) 777 * The timezone word contains the three letter abb. for 778 * the local time zone in chars 0-2 and char 3 holds 779 * a signed 8 bit integer that is the offset (in hours) 780 * from UT for the specified time zone. 00000060 ABS 781 URRAWDATE EQU 0060 get date and time 00000061 ABS 782 URFSERNO EQU 0061 same except has uniqueness property 783 * (R0:=request|UREQ|R0=error-code if negative| 784 * R0/BITS 11:22=year|R0/BITS 23:26=month| 785 * R0/BITS 27:31=date|R1=timezone|R2=time of day| 786 * R3=day of week) 00000062 ABS 787 URUNRDATE EQU 0062 unpack rawdate 00000063 ABS 788 URUNLDATE EQU 0063 make rawdate local, unpack 789 * (R0:=request|R2,R3:=time to unpack|UREQ|R0=error-code 790 * if negative|R0/BITS 11:22=year|R0/BITS 23:26=month| 791 * R0/BITS 27:31=date|R1=timezone|R2=time of day| 792 * R3=day of week) 00000064 ABS 793 URUGDATE EQU 0064 unpack time given 00000065 ABS 794 URULDATE EQU 0065 make time given local, unpack 795 796 * (R0:=request|R1:=timezone (not needed for local conversion)| 797 * R2:=time of day|R3/bits 0:22:=year|R3/bits 23:26:=month| 798 * R3/bits 27:31:=date|UREQ|R0,R1=system time) 0000006C ABS 799 URPAKTIME EQU 006C pack time, given time zone 0000006D ABS 800 URPAKTIML EQU 006D pack time, given local time 801 802 * (R0:=request|UREQ) 00000070 ABS 803 URSTOP EQU 0070 program termination 00000071 ABS 804 URSTOPZ EQU 0071 stop and zero virtual memory 00000072 ABS 805 URSTOPR EQU 0072 stop and reset units 00000073 ABS 806 URSTOPZR EQU 0073 stop. zero and reset 00000074 ABS 807 URSTOPI EQU 0074 stop and increment PC 00000078 ABS 808 URSTOPA EQU 0078 stop and set abort status 00000079 ABS 809 URSTOPAZ EQU 0079 stop. abort and zero 0000007A ABS 810 URSTOPAR EQU 007A stop. abort and reset 0000007B ABS 811 URSTOPAZR EQU 007B stop. abort,zero,reset 0000007C ABS 812 URSTOPIA EQU 007C stop, increment PC, and set abort 813 814 * (R0:=request|R1:=bit mask|UREQ psn|R1=new contents) 00000080 ABS 815 URSSINTARM EQU 0080 selectively set interrupt arming mask 00000081 ABS 816 URSCINTARM EQU 0081 selectively clear interrupt arming mask 817 * (R0:=request|UREQ ADR regarea|R0=error-code) 00000082 ABS 818 URINTRTN EQU 0082 return from interrupt 819 820 * (R0:=request|UREQ 0|R0:=error code) 00000085 ABS 821 URSETDEBUG EQU 0085 set flag saying process is a debugger 00000086 ABS 822 URCLRDEBUG EQU 0086 clear flag saying whether debugger 823 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 150 (VIRTDEFS) F 9 Executive Request (XREQ) codes 824 * (R0:=request|R1=error code|R2=param|UREQ 825 * |R0:=error code or termination code|R1=sub-code|R3:=psn ) 00000087 ABS 826 URSENDERR EQU 0087 send error to specified underprocess 827 828 * (R0:=request|UREQ |R0:=zero|error code) 00000088 ABS 829 URSERPROC EQU 0088 receive errors from specified underprocess 00000089 ABS 830 URCERPROC EQU 0089 clear receiving errors from underprocess 831 832 * (R0:=request|R1:= psn|UREQ ADR regarea|R0=error-code) 0000008A ABS 833 URINTRGO EQU 008A return from interrupt to underprocess 834 835 * (R0:=request|UREQ|R0=error-code) 00000090 ABS 836 URBYE EQU 0090 logoff request 837 838 * (R0:=request|R1:=new-limit|UREQ psn|R0=error-code| 839 * R1=CPU-limit|R2=CPU-time-used) 000000A0 ABS 840 URCPTIMES EQU 00A0 CPU time limit set 841 * (R0:=request|UREQ psn|R0=error-code| 842 * R1=CPU-limit|R2=CPU-time-used) 000000A1 ABS 843 URCPTIMEG EQU 00A1 CPU time use/limit get 844 * (R0:=request|UREQ psn|R0=error-code|R0,1=sessiom-WC-limit| 845 * R2=session-WC-used) 000000A7 ABS 846 URSESWCLK EQU 00A7 session wallclock used and limit get 847 * (R0:=request|UREQ psn|R0=error-code|R0,1=session-WC-limit| 848 * R2=session-WC-used) 000000A8 ABS 849 URACCTCPUL EQU 00A8 limiting acct CPU time use/limit get 850 * (R0:=request|UREQ psn|R0=error-code|R1=account-WC-limit| 851 * R2=account-WC-used) 000000A9 ABS 852 URACCTWCL EQU 00A9 limiting acct WC time used/limit get 853 854 * (R0:=request|R1=new-limit|UREQ psn|R0=error-code| 855 * R1=session-limit|R2=session-in-use) 000000B0 ABS 856 URSESBLKS EQU 00B0 session limit set 857 858 * (R0:=request|UREQ psn|R0=error-code| 859 * R1=session-limit|R2=session-used) 000000B1 ABS 860 URSESBLKG EQU 00B1 session limit get 861 862 * (R0:=request|UREQ 0|R1=hard-limit|R2=soft-limit|R3=saved-limit) 000000B2 ABS 863 URBLKLIM EQU 00B2 get account's block limits 864 865 * (R0:=request|UREQ 0|R1=blocks-used|R2=soft-limit|R3=saved-limit) 000000B3 ABS 866 URBLKUSED EQU 00B3 get account's block usage 867 868 * (R0:=request|UREQ pagenum|R0=error-code) 000000C0 ABS 869 URFREEPAGE EQU 00C0 release memory page 870 * (R0:=request|R1=pagenum|UREQ psn|R0=pagetype or errorcode| 871 * R1=other info) 000000C1 ABS 872 URPAGETYPE EQU 00C1 get association of page in memory 873 * (R0:=request|UREQ pagenum|R0=error code) 000000C2 ABS 874 UREXCLPAGE EQU 00C2 make page unreferencable 000000C4 ABS 875 URFORCEP EQU 00C4 force write this page, wait for xfer 000000C5 ABS 876 URWRITEP EQU 00C5 force write this page, don't wait for xfer 877 878 * (R0:=request|UREQ process-serial-number| 879 * R0=termination-code|R1=subcode|R2=process-serial-number) 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 151 (VIRTDEFS) F 9 Executive Request (XREQ) codes 880 * (if R0=UINTPTERM, then R1=right 4 bits of URSTOPxx) 000000D0 ABS 881 URPGO EQU 00D0 set a program running 000000D4 ABS 882 URPSTEP EQU 00D4 single step a program 883 * (R0:=request|UREQ -1,0, or session number|R0=error-code) 000000D2 ABS 884 URPDSTRY EQU 00D2 destroy a session or the 885 immediate under process 886 * (R0:=request|UREQ -1 |R0=error-code) 000000D3 ABS 887 URPDSTRYA EQU 00D3 destroy all under processes 888 * (R0:=request|UREQ psn |R0=error-code) 000000D5 ABS 889 URPDSTRYP EQU 00D5 destroy an under process 000000D6 ABS 890 URPDSTRYAP EQU 00D6 destroy all under processes 891 of a given under process 892 893 * (R0:=request+register|R1:=new-contents|UREQ process-serial-number| 894 * R0=error-code|R1=previous-register-contents) 895 * registers: 896 * 0 => R0 ... 7 => R7, 8 = PC 897 * 9 => PSR, 10 => int mask 898 * 11 => interrupt address. 12:15 => errors 000000E0 ABS 899 URPSETREG EQU 00E0 set a process register 900 901 * (R0:=request+register|UREQ psn|R0=error-code| 902 * R1=register-contents) 000000F0 ABS 903 URPGETREG EQU 00F0 get a process register 904 905 * (R0:=request|R1:=char-pointer|UREQ 0|R0=item-type or error-code| 906 * R1=pntr-to-terminator|(R2,R3)=packed-item) 00000100 ABS 907 URPACKI EQU 0100 pack an item 908 * (R0:=request|R1:=char-pointer|R2:=pointer-to-block|UREQ 0| 909 * R0=error-code|R1=pntr-to-terminator) 00000101 ABS 910 URPACKFI EQU 0101 pack a file specifier item 00000102 ABS 911 URPACKFS EQU 0102 pack a complete file specifier 912 913 * (R0:=request|R1:=requester page|R2:=others page| 914 * UREQ psn|R0=error code) 00000110 ABS 915 URMAPINAS EQU 0110 mapin other address space 916 917 * (R0:=request|UREQ psn|R0=error-code or run unit if no error) 00000120 ABS 918 URGRUNLUN EQU 0120 get the run unit number 919 * (R0:=request|UREQ unit|R0=error code|R1=next unit) 00000121 ABS 920 URNEXTLUN EQU 0121 find next higher in use unit 921 * (R0:=request|UREQ unit|R0=error code|R1=next free unit) 00000122 ABS 922 URFREELUN EQU 0122 find next lower free unit 923 * (R0:=request|R1:=current #|R2:=target unit #|UREQ psn|R0=error code) 00000123 ABS 924 URGIVELUN EQU 0123 pass unit to an underprocess 925 926 * (R0:=request|R1:=mode to load|UREQ psn| 927 * R0=error code|R1=-1 or effective address) 00000130 ABS 928 URLEA EQU 0130 do LEA in other address space 00000131 ABS 929 URLEA2 EQU 0131 do LEA2 in other address space 930 931 * (R0:=request|R1:=seconds|R2:=event mask|UREQ 0|R0=error code| 932 * R1=seconds remaining|R2=event|R3=event parameter) 00000140 ABS 933 URDELAY EQU 0140 delay for the given seconds 00000143 ABS 934 URDELAYR EQU 0143 restore console terminal 935 * (R0:=request|R1:=seconds|UREQ 0|R0=error code|R1=seconds remaining 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 152 (VIRTDEFS) F 9 Executive Request (XREQ) codes 936 * on previous request) 00000141 ABS 937 URSETTIMIN EQU 0141 set timer interrupt 938 * (R0:=request|UREQ 0|R0=error code|R1=seconds remaining) 00000142 ABS 939 URCLRTIMIN EQU 0142 clear timer interrupt 940 941 * (R0:=request|R1:=message size|R2:=address|UREQ 0| 942 * R0=error code) 00000150 ABS 943 URGENOPMSG EQU 0150 generate message to operator 944 * (R0:=request|UREQ 0|R0=error code) 00000151 ABS 945 URCANOPMSG EQU 0151 cancel message to operator 946 947 * (R0:=request|R1:=message-size|R2:=address|UREQ 0|R0=error code) 00000160 ABS 948 URSENDMSG EQU 0160 send message to other session 949 * (R0:=request|R1:=buffer-size|R2:=address|UREQ message-class-mask| 950 * R0=error-code|R1=buffer-remaining) 00000161 ABS 951 URGETMSG EQU 0161 receive message from other session 952 * (R0:=request|UREQ 0|R0=error-code|R1=message-class-mask) 00000162 ABS 953 URGETMSGA EQU 0162 get mask of acceptable messages 954 * (R0:=request|R1=bits-to-set/clear|UREQ 0|R0=error-code|R1=bits-changed) 00000163 ABS 955 URSSMSGA EQU 0163 sets bits in mask of acceptable messages 00000164 ABS 956 URSCMSGA EQU 0164 clear bits in mask of acceptable messages 957 958 * (R0:=request|R1:=length-of-name|R2:=address-of-name|UREQ 0| 959 * R0=error-code|R1=session-number) 00000170 ABS 960 URGETPNUM EQU 0170 lookup server name 961 962 * (R0=request|R2,3:=new-program-name|UREQ 0| 963 * R0:=error-code|R2,3:=old-program-name) 00000180 ABS 964 URCNAME EQU 0180 change program name 965 * (R0:=request|UREQ |R0=error-code) 00000181 ABS 966 URSETLGFSES EQU 0181 set session to give message at logoff 967 * (R0:=request|R1:=privs-to-release|UREQ 0|R0=error-code) 00000182 ABS 968 URDROPPRIV EQU 0182 relinquish program privileges 969 970 * (R0=request|R1=unit number|R2=privilege|UREQ ) 00000190 ABS 971 URGIVEUNIT EQU 0190 give a unit to another session 972 * (R0=request|UREQ | 973 * R0=error-code|R1=|R2=) 00000191 ABS 974 URRCVUNIT EQU 0191 receive a unit from another session 975 976 ********************************************************************************** 977 * * 978 * When extending the range of UREQ constants, please * 979 * update the table of maximum values, XREQMAXTAB. * 980 * * 981 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 153 (VIRTDEFS) F 9 Executive Request (XREQ) codes 983 984 ********************************************************************************** 985 * * 986 * OPREQs * 987 * Operator requests (OPREQs) are provided for operator, * 988 * manager, and control mode functions. Processes must have * 989 * the proper privileges to do OPREQs. * 990 * * 991 ********************************************************************************** 992 993 * (R0:=request|R1:=pntr-to-PAK12 name,PAK6 proj,PAK12 pwd|OPREQ 0| 994 * R0=error-code) 00000010 ABS 995 ORHELLO EQU 0010 logon request 996 * (R0:=request|OPREQ|R0=error-code|R1=wall clock time used) 00000011 ABS 997 ORGOODBYE EQU 0011 disassign user and do accounting 998 * (R0:=request|R1=>equip name buffer|OPREQ 0|R0=error code) 00000012 ABS 999 ORLOGONP EQU 0012 fetch logon program name 1000 * (R0:=request|R1:=options|OPREQ |R0=error-code) 00000013 ABS 1001 ORATTACH EQU 0013 attach to a session 1002 * (R0:=request|OPREQ |R0=error-code) 00000014 ABS 1003 ORRESETVM EQU 0014 reset virtual memory 1004 1005 * (R0:=request|OPREQ) 00000020 ABS 1006 ORVANISH EQU 0020 vanish request 1007 1008 * (R0:=request|OPREQ) 00000030 ABS 1009 ORSLEEP EQU 0030 sleep request 1010 1011 * (R0:=request|R2,R3:=password|OPREQ =pak6 drive name| 1012 * R0=error code|R0=number of accounts|R1=number of shadows| 1013 * R2,R3=volume name) 00000040 ABS 1014 ORMOUNT EQU 0040 mount a volume given drive name 1015 * (R0:=request|R2,R3:=volume name|OPREQ|R0=error code) 00000041 ABS 1016 ORDISMOUNT EQU 0041 dismount a volume given volume name 1017 * (R0:=request|R1:=non-zero to inhibit|R2,R3:=volume name| 1018 * OPREQ|R0=error code) 00000042 ABS 1019 ORINHIBVOL EQU 0042 inhibit/allow volume access 1020 * (R0:=request|R1:=buffer size|R2:=buffer adr|OPREQ 0| 1021 * R0=error code|R1=buffer remaining) 00000043 ABS 1022 ORVINFO EQU 0043 get volume information 1023 * (R0:=request|R1:=buffer size|R2:=buffer adr|OPREQ unit (.vol)| 1024 * R0=error code|R1=buffer remaining) 00000044 ABS 1025 ORVOLINFO EQU 0044 get volume information 1026 * (R0:=request|OPREQ drivename|R0=error code) 00000045 ABS 1027 ORDISMTDRV EQU 0045 dismount volume given drive name 1028 * (R0:=request|R2,R3:=volume name|OPREQ| 1029 * R0=error code|R0=number of accounts|R1=number of shadows| 1030 * R2,R3=volume name) 00000046 ABS 1031 ORMOUNTVOL EQU 0046 mount volume given volume name 1032 * (R0:=request|R1:=buffer size|R2:=buffer adr|OPREQ unit (.vol)| 1033 * R0=dynstat or errorcode|R1=buffer remaining) 00000047 ABS 1034 ORBUSYVOL EQU 0047 get accounts busy on a volume 1035 1036 * (R0:=request|R1:=pntr-to-param-block|OPREQ 0| 1037 * R0=error-code) 00000050 ABS 1038 ORCREACCT EQU 0050 manager create account 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 154 (VIRTDEFS) F 9 Executive Request (XREQ) codes 00000051 ABS 1039 ORBKCACCT EQU 0051 backup create account 1040 1041 * (R0:=request|OPREQ unit (.dir)|R0=error-code) 00000060 ABS 1042 ORDESACCT EQU 0060 destroy an account 1043 1044 * (R0:=request|OPREQ portnum|R0=error code) 00000070 ABS 1045 ORPINHIB EQU 0070 inhibit port access 00000071 ABS 1046 ORPALLOW EQU 0071 allow port access 1047 * (R0:=request|R1:=buffer size|R2=buffer adr| 1048 * OPREQ -1, 0, or portnum|R0=error code|R1=buffer remaining) 00000072 ABS 1049 ORPINFO EQU 0072 port information fetch 1050 * (R0:=request|OPREQ portnum|R0=error code) 00000073 ABS 1051 ORPWARN EQU 0073 warn port is inhibited 1052 * (R0:=request|OPREQ portnum|R0=error code) 00000074 ABS 1053 ORPRESET EQU 0074 reset a ports configuration 1054 1055 * (R0:=request|R1:=zone name|OPREQ GMT difference|R0=error code) 00000080 ABS 1056 ORTZONE EQU 0080 set system local time zone 1057 * (R0:=request|R1:=time correction|OPREQ 0|R0:=error code) 00000081 ABS 1058 ORTADJUST EQU 0081 correct system time by gradual adjustment 1059 1060 * (R0:=request|OPREQ 0|R0,R1:=time of last correction| 1061 * R2=current clock error (ms), + sez slow|R3=drift 1062 * (ppb), + sez clock loses time) 00000082 ABS 1063 ORTIMPAR EQU 0082 get clock adjustment variables 1064 1065 * (R0:=request|OPREQ |R0=error code) 00000090 ABS 1066 ORPTERMIN EQU 0090 "terminate" a session 00000091 ABS 1067 ORPEVICT EQU 0091 "evict" a session 00000092 ABS 1068 ORSESSINFO EQU 0092 fetch session information (see URSESSINFO) 00000092 ABS 1069 ORPROCINFO EQU 0092 (old name for ORSESSINFO) 00000093 ABS 1070 ORPABORT EQU 0093 "abort" a session 1071 1072 * (R0:=request|R1:=buffer size|R2:=buffer address|OPREQ 0| 1073 * R0=dynstat or errorcode|R1=buffer remaining) 000000A0 ABS 1074 ORREADAFT EQU 00A0 read account finder table 1075 * (R0:=request|R1:=buffer size|R2:=buffer address| 1076 * OPREQ unit (.vol)|R0=error code|R1=buffer remaining) 000000A1 ABS 1077 ORREADIDX EQU 00A1 read IDX from a volume 1078 * (R0:=request|OPREQ unit (.dir)|R0=dynstat or errorcode) 000000A2 ABS 1079 ORADDAFT EQU 00A2 add entry to the AFT 000000A3 ABS 1080 ORDELAFT EQU 00A3 delete entry from the AFT 1081 1082 * (R0:=request|R1:=pak6 device name|OPREQ unit(unused)| 1083 * R0=error code|R2,3=volume name) 000000B0 ABS 1084 ORMOUNTMAI EQU 00B0 maint mount pack(no IDX AFT) 000000B1 ABS 1085 ORVOLHANDLE EQU 00B1 fully maint mount a pack 1086 1087 * (R0:=request|R1:=buffer size|R2:=buffer addr|OPREQ unit (.vol)| 1088 * R0=dynstat or errorcode|R1=buffer remaining) 000000C0 ABS 1089 ORBKUPVOL EQU 00C0 get volume backup information 000000C1 ABS 1090 ORBKUPACT EQU 00C1 get account backup information 000000C2 ABS 1091 ORBKUPFIL EQU 00C2 get file backup information 000000C3 ABS 1092 ORGETFP EQU 00C3 get file data to backup 1093 1094 * (R0:=request | R1:=time stamp | OPREQ unit (.vol) | 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 155 (VIRTDEFS) F 9 Executive Request (XREQ) codes 1095 * R0:=error code) 000000C4 ABS 1096 ORBKUPDONE EQU 00C4 place time stamp on disk 1097 1098 * (R0:=request|R1:=buffer size|R2:=buffer addr|R3:=page #| 1099 * OPREQ unit (.vol)|R0=dynstat or errorcode|R1=buffer remaining) 000000C5 ABS 1100 ORMAPFP EQU 00C5 mapin file data to backup 1101 1102 * (R0:=request|R1:=buffer size|R2:=buffer addr|OPREQ unit (.vol)| 1103 * R0=dynstat or errorcode) 000000D0 ABS 1104 ORINITVOL EQU 00D0 initialize volume for recovery 000000D1 ABS 1105 ORRCVRACT EQU 00D1 initialize account for recovery 000000D2 ABS 1106 ORRCVRFIL EQU 00D2 initialize file for recovery 000000D3 ABS 1107 ORPUTFP EQU 00D3 output file recovery data (old style) 000000D6 ABS 1108 ORRCVRACTL EQU 00D6 account recovery/limits adjustments 1109 1110 * (R0:=request|OPREQ unit (.vol)|R0=errorcode or dynstat) 000000D4 ABS 1111 ORINITEND EQU 00D4 say recovery done 1112 1113 * (R0:=request|R1:=buffer size|R2:=buffer addr|R3:=page #| 1114 * OPREQ unit (.vol)|R0=dynstat or errorcode) 000000D5 ABS 1115 ORPUTPFP EQU 00D5 recover paged recovery data 1116 1117 * (R0:=request|R1:=CPU time allocatable|OPREQ unit (.dir)|R0=errorcode) 000000E0 ABS 1118 ORCREAUTHL EQU 00E0 create auth list 1119 * (R0:=request|R1:=CPU time allocatable|OPREQ unit (.dir)|R0=errorcode| 1120 * R1=prev CPU time allocatable|R2=CPU time allocated) 000000E1 ABS 1121 ORCHGAUTHL EQU 00E1 change auth list 1122 * (R0:=request|OPREQ unit (.dir)|R0=errorcode|R1=prev CPU time allocatable| 1123 * R2=CPU time allocated) 000000E8 ABS 1124 ORDESAUTHL EQU 00E8 destroy auth list 000000E9 ABS 1125 ORGETAUTHL EQU 00E9 get auth list values 1126 1127 * (R0:=request|R2,R3:=volume name|OPREQ unit (.dir)|R0=errorcode) 000000F0 ABS 1128 ORCREAUTHE EQU 00F0 create auth list entry 000000F8 ABS 1129 ORDESAUTHE EQU 00F8 destroy auth list entry 1130 1131 * (R0:=request|R1:=new value|R2,R3:=volume name|OPREQ unit (.dir)|R0=errorcode| 1132 * R1=old allocatable value|R2=value allocated) 000000F2 ABS 1133 ORCAUTHDL EQU 00F2 change auth entry disk space allocatable 000000F3 ABS 1134 ORCAUTHSL EQU 00F3 change auth entry saved allocatable 1135 * (R0:=request|R2,R3:=volume name|OPREQ unit (.dir)|R0=errorcode| 1136 * R1=amount allocatable|R2=amount allocated) 000000FA ABS 1137 ORGAUTHDL EQU 00FA get disk space allocatable 000000FB ABS 1138 ORGAUTHSL EQU 00FB get saved allocatable 1139 * (R0:=request|R1:=buffer size|R2:=buffer addr|OPREQ unit (.dir)| 1140 * R0=error code|R1=buffer remaining) 000000FF ABS 1141 ORGAUTENS EQU 00FF get auth list entries (the whole thing) 1142 1143 * (R0:=request|R1:=ADR buffer|OPREQ 0|R0=error-code|R2,3=44-bit UT date) 00000101 ABS 1144 ORREADCNT EQU 0101 fetch block read counts 00000102 ABS 1145 ORWRITECNT EQU 0102 fetch block write counts 00000103 ABS 1146 ORRWCOUNTS EQU 0103 fetch both read and write counts 1147 1148 * (R0:=request|R1:=buffersize|R2:=bufferaddr|OPREQ 0| 1149 * R0=errorcode|R1=buffer remaining) 00000110 ABS 1150 ORDEVINFO EQU 0110 fetch system device information 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 156 (VIRTDEFS) F 9 Executive Request (XREQ) codes 1151 1152 * (R0:=request|R1=trace classes|OPREQ 0|R0=errorcode) 00000120 ABS 1153 ORSTRTTRC EQU 0120 start system trace 1154 * (R0:=request|OPREQ 0|R0=errorcode) 00000121 ABS 1155 ORSTRTMON EQU 0121 start system instruction monitor 00000122 ABS 1156 ORSTRTDYNW EQU 0122 start system dynamic wait monitor 00000123 ABS 1157 ORSTRTXMON EQU 0123 start system XREQ call monitor 1158 1159 * (R0:=request|R1:=buffersize|R2:=bufferaddr|OPREQ 0| 1160 * R0=errorcode|R1=buffer remaining) 00000130 ABS 1161 ORSTOPTRC EQU 0130 stop system trace and return results 00000131 ABS 1162 ORSTOPMON EQU 0131 stop system instruction monitor and give results 00000132 ABS 1163 ORSTOPDYNW EQU 0132 stop dynamic wait monitor and give results 00000133 ABS 1164 ORSTOPXMON EQU 0133 stop XREQ call monitor and give results 00000138 ABS 1165 ORGETTRC EQU 0138 return trace info (but don't stop trace) 1166 1167 * definition of control field in R0 for ORMAINTR and ORMAINTW 00002630 BYTE 1168 XRMAIFLD EQU BITS 19:21 field holding maintenance information 00001000 ABS 1169 XRNOSUB EQU 4*XRMAIFLD indicates no substitutions 00000800 ABS 1170 XRNOERRS EQU 2*XRMAIFLD indicates no error recovery/retries 00000400 ABS 1171 XRWWCHK EQU 1*XRMAIFLD indicates to perform write-check 1172 1173 * (R0:=request + control|R1:=ADR block buffer|R2:=ADR FBI buffer| 1174 * R3:=MS address|OPREQ unit (.vol)|R0=error code) 00000140 ABS 1175 ORMAINTR EQU 0140 maintenance read 00000142 ABS 1176 ORMAINTRSUB EQU 0142 maintenance read and substitute 1177 * (R0:=request|R1:=address|OPREQ 0|R0=error code|R2=data) 00000141 ABS 1178 ORREADNVM EQU 0141 get data from NVM 1179 * (R0:=request + control|R1:=ADR block buffer|R2:=ADR FBI buffer| 1180 * R3:=MS address|OPREQ unit (.vol)|R0=error code) 00000150 ABS 1181 ORMAINTW EQU 0150 maintenance write 1182 * (R0:=request|R1:=address|R2:=data|OPREQ 0|R0=error code) 00000151 ABS 1183 ORWRITENVM EQU 0151 write data into NVM 1184 * (R0:=request|R1:=MS address|OPREQ unit (.vol)|R0=dynstat| 1185 * R1=PPU status|R2=BFD Controller status) 00000152 ABS 1186 ORFORMAT EQU 0152 format a track 1187 * (R0:=request|R1:=sec/trk|R2:=trk/cyl|OPREQ |R0=error-code) 00000153 ABS 1188 ORSECTRK EQU 0153 set sec/trk and trk/cyl 1189 * (R0:=request|R1:=new state|OPREQ |R0=error-code|R1=old state) 00000154 ABS 1190 ORHEADCHK EQU 0154 start/inhibit head checker 1191 * (R0:=request|OPREQ |R0=error-code 00000155 ABS 1192 ORINITFMT EQU 0155 prepare volume for formatting 00000156 ABS 1193 ORRESETDRV EQU 0156 reinitialize drive information 1194 * (R0:=request|R1:=message size|R2:=message address|OPREQ 0| 1195 * R0=message serial number or error code) 00000160 ABS 1196 ORGENOPMSG EQU 0160 generate message to operator 1197 * (R0:=request|R1:=buffer size|R2:=buffer address|OPREQ anything| 1198 * R0=error code|R1=buffer remaining) 00000161 ABS 1199 ORGETOPMSG EQU 0161 get messages to operator 1200 * (R0:=request|R1:=message serial number|OPREQ 0|R0=error code) 00000162 ABS 1201 ORCANOPMSG EQU 0162 cancel message to operator 1202 1203 * (R0:=request|R1:=name-length|R2:=name-address|OPREQ 0|R0=error-code) 00000170 ABS 1204 ORSETPNUM EQU 0170 set entry in server name table 00000171 ABS 1205 ORCLRPNUM EQU 0171 clear entry in server name table 1206 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 157 (VIRTDEFS) F 9 Executive Request (XREQ) codes 1207 * (R0:=request|R1:=length-of-output-file-name|R2:=addr-of-output-file-name| 1208 * R3:=addr-of-logon-info|OPREQ input-unit-number|R0=error-code-or- 1209 * session-number) 00000180 ABS 1210 ORSTRTBAT EQU 0180 start spooled batch job 1211 * (R0:=request|R1:=length-of-logon-string|R2:=addr-of-logon-string 1212 * R3:=terminal-output-unit|OPREQ terminal-input-unit| 1213 * R0=error-code-or-session-number) 00000181 ABS 1214 ORSTRTTERM EQU 0181 remote port startup 1215 * (R0:=request|OPREQ unit|R0=error-code-or-session-number) 00000182 ABS 1216 ORSTRTJOB EQU 0182 start spooler-less batch job 1217 * (R0:=request|OPREQ 0|R0=error-code-or-session-number) 00000183 ABS 1218 ORSTRTSPLR EQU 0183 start spooler session 1219 1220 * (R0:=request|R2,3:=new volume name|OPREQ unit (a .vol)| 1221 * R0=error code) 00000190 ABS 1222 ORCVOLNAME EQU 0190 change volume name 1223 * (R0:=request|R2,3:=new volume password|OPREQ unit (a .vol)| 1224 * R0=error code) 00000191 ABS 1225 ORCVOLPWD EQU 0191 change volume password 1226 * (R0:=request|R1:=new customer number|R2:=new system serial number| 1227 * OPREQ unit (a .vol)|R0=error code) 00000192 ABS 1228 ORCVOLSSN EQU 0192 change volume SSN 1229 * (R0:=request|R1:=new value|OPREQ unit (a .vol)| 1230 * R0=error code) 00000193 ABS 1231 ORCVOLNEWO EQU 0193 change volume new owner flag 1232 * (R0:=request|R1:=buffer len|R2:=ptr to string|OPREQ unit (a .vol)| 1233 * R0=error code) 00000194 ABS 1234 ORCVOLTITLE EQU 0194 change volume title 1235 * (R0:=request|OPREQ unit (a .vol)|R0=error code| 1236 * R2,3=volume name) 00000198 ABS 1237 ORGVOLNAME EQU 0198 get volume name 1238 * (R0:=request|OPREQ unit (a .vol)|R0=error code| 1239 * R1=customer number|R2=system number) 0000019A ABS 1240 ORGVOLSSN EQU 019A get system serial number 1241 * (R0:=request|OPREQ unit (a .vol)|R0=error code| 1242 * R1=new owner flag) 0000019B ABS 1243 ORGVOLNEWO EQU 019B get volume new owner flag 1244 * (R0:=request|R1:=buffer size|R2:=buffer ptr|OPREQ unit (a .vol)| 1245 * R0:=error code|R1:=buffer remaining) 0000019C ABS 1246 ORGVOLTITLE EQU 019C get volume title 1247 1248 * (R0:=request|R1:=info value index|OPREQ 0|R0=error-code|R2=value requested) 000001A0 ABS 1249 ORGSYSINFO EQU 01A0 fetch system information 1250 1251 * (R0:=request|R1:=CPU number|OPREQ process number (0 means me)|R0=error-code| 1252 * R1:=original CPU number (0 if none)) 000001B0 ABS 1253 ORSETCPU EQU 01B0 assign a process to a particular CPU 1254 * (R0:=request|R1:=CPU number|OPREQ 0|R0=error-code| 1255 * R1:=CPU number 000001B1 ABS 1256 ORCPUSTOP EQU 01B1 stop a CPU from active service 000001B2 ABS 1257 ORCPUSTRT EQU 01B2 restart a stopped CPU 1258 * (R0:=request|R1:=number of pages|OPREQ 0|R0=error-code) 000001C0 ABS 1259 ORTAKEPAGS EQU 01C0 remove physical memory from use 1260 * (R0:=request|OPREQ |R0=error code) 000001D0 ABS 1261 ORPSTOP EQU 01D0 "stop" a session 000001D1 ABS 1262 ORPGO EQU 01D1 restart a session 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 158 (VIRTDEFS) F 9 Executive Request (XREQ) codes 1263 1264 ********************************************************************************** 1265 * * 1266 * When extending the range of OPREQ constants, please * 1267 * update the table of maximum values, XREQMAXTAB. * 1268 * * 1269 ********************************************************************************** 16 INPUT XREQINFOMACS format for info returned by XREQs 2 * System variable definition macros version 4.7 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 159 (XREQINFOMACS) F 10 Macro Definitions 4 5 * 4.7 890120 Added VT. RC. 6 * 4.6 870815 Added FSSTATABS. DH. 7 * 4.5 860523 Added PILGFSESS field (PROCINFORD). JB. 8 * 4.4 851017 Addition of PISYSPROC field (PROCINFORD). JB. 9 * 4.3 C8504 Addition of DIRFLOG field. MH 10 * 4.2 C8411 Addition of macro LUINFORD. JB. 11 * 4.1 C8410 DIRSERNO(1) now DIRUNITNM for hardware devices. JB. 12 * 4.0 C8409 Addition of macro UNDRPINFORD. JB. 13 * 3.7 C8407 Removed LOCK RC 14 * 3.6 Addition of DTYPECT and DTYPEVOL. DH 15 * 3.5 Addition of BCD overflow detect enable and floating 16 * point reduced precision enable in PSRDEFS. DH 17 * 3.4 Addition of DIRTRANS field. JB. 18 * 3.4 Addition of length field to share list read data RC 19 * 3.3 Addition of DIRGHOST field RC 20 * 2.1 Change of FSSTATPRW and addition of FSPRIVBKUP,XO,NOT 21 * 1.3 New field in DIRINFORD. JL. 22 * A8110 New field in PROCINFORD. JL. 23 * A8109 New field in FILESTAT, new macro MSGDEFS. JL. 24 * A8104 New field in DIRINFORD, PROCINFORD. JL. 25 * A8102 Minor changes to PROCINFORD. JL. 26 * A8007 Minor changes to DIRINFORD and PROCINFORD. JL. 27 * A7909 Initial release. RA. 28 29 ********************************************************************************** 30 * * 31 * This is the definition of macros that define symbols * 32 * that are required in communication with the system. This * 33 * file is INPUT in assembly language programs and it defines * 34 * macros that, when invoked, define the requested group of * 35 * symbols. The macro invocation is of the form: * 36 * * 37 * macname [list] * 38 * * 39 * where "macname" is the name of the requested macro and "list" is * 40 * optionally included (the square brackets denote optionality) if the * 41 * body of the macro (i.e., the definition of the symbols) is to * 42 * be listed. * 43 * * 44 * Macros that are defined herein are: * 45 * * 46 * DIRINFORD Format of data returned by directory information reads. * 47 * FILESTAT Fields and values in the static and dynamic file status * 48 * words. * 49 * FLDDEFS Definitions of instruction and address field names. * 50 * MSGDEFS Definitions of messages passed via URSENDMSG. * 51 * PSRDEFS Fields and values in the Process Status Register. * 52 * PROCINFORD Format of data returned by session information request. * 53 * SHLINFORD Format of data returned by shared list read request. * 54 * UNDRPINFORD Format of data of the underprocess tree structure. * 55 * LUINFORD Format of data returned by the local unit request. * 56 * * 57 ********************************************************************************** 58 59 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 160 (XREQINFOMACS) F 10 Macro Definitions 60 DIRINFORD MACRO 61 NOLIST 62 $P 63 BOX 64 65 This is the format of information that is returned to 66 the user when he requests directory information. The 67 header is returned only when the .DIR is at load point. 68 After that the buffer is filled with an integral number of 69 entries, one for each file. 70 When the directory is exhausted, an end-of-data status 71 is returned. 72 73 EBOX 74 75 DIRHINFO BASE R0 Header giving account information 76 DIRHLNTH BSS 1 Length of entry in words (now 8) 77 DIRFLAGS BSS 1 Flags 78 DIRSHADOW EQU DIRFLAGS/BIT 0 On if a shadow account 79 DIRFOREIGN EQU DIRFLAGS/BIT 1 On if account not at home here 80 DIRNETWORK EQU DIRFLAGS/BIT 2 On if account accessed via network 81 DIRVOLUME BSS2 1 Volume account is on (PAK12) 82 DIRSYSTEM BSS 1 System account is on (PAK6) 83 DIRACCOUNT BSS2 1 Account name (PAK12) 84 DIRPROJECT BSS 1 Project of account (PAK6) 85 DRCT 86 DIRHWIDE EQU DISPW DIRHINFO Template length 87 ORG DIRHINFO Recover template space 88 89 90 BOX 91 92 Template for .DIR file entry block 93 94 EBOX 95 96 DIREINFO BASE R0 Entry for individual file 97 DIRENTLEN BSS 1 Entry length in words 98 DIRNAME BSS2 1 Name of file (PAK12) 99 DIREXT BSS 1 File name extension (PAK6) 100 DIRCREATD BSS 1 Creation date 101 DIRLACSD BSS 1 Last access date 102 DIRLMODD BSS 1 Last modified date 103 DIRLBKUPD BSS 1 Last backup date 104 105 DIRTOTRACS BSSB 16 Total read accesses 106 DIRTOTWACS BSSB 16 Total write accesses 107 108 DIRRACS BSSB 16 Currently active EQUIPs for RO 109 DIRWACS BSSB 16 Currently active EQUIPs for RW 110 111 DIRMWACS BSSB 16 Currently active EQUIPs for MW 112 DIRTFL BSSB 24 Total file length (in blocks) 113 DIRROOTBLK BSSB 24 Root block (or 0 if not GOD) 114 115 DIRTYPE BSSB 8 Type of file (see FSSTATDTYP) 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 161 (XREQINFOMACS) F 10 Macro Definitions 116 DIRACCESS BSSB 4 Access allowed (see FSSTATACS) 117 DIRRAFTYPE BSSB 2 Empty, Tiny, Small, Large 118 BSSB 2 filler 119 DIRPRGINT BSSB 8 Purge interval 120 DIRPRGFLG BSSB 1 On if file was purged 121 DIRNOBKUP BSSB 1 On if file should not be backed up 122 DIRRCVRD BSSB 1 On if file recovered from backup 123 DIRFWWSC BSSB 1 On if file EQUIPed for W at crash 124 DIRFBC BSSB 1 On if file being closed 125 DIRGHOST BSSB 1 On if file not yet recovered from backup 126 DIRTRANS BSSB 1 On if file opened when user program crashed 127 DIRFLOG BSSB 1 On if file access should be logged 128 129 BSSB 1 unused filler 130 DIRLRAF BSSB 1 On if a large (2 level) .RAF 131 DIRCUSE BSSB 16 current use count 132 133 DIRUSRFLD BSS 1 user-definable field 134 DIRSERNO BSS2 1 file serial number 135 DIRUNITNM EQU DIRSERNO(1) unit number for hardware devices 136 BSS 0 *** filler *** 137 DRCT 138 DIRENTWIDE EQU DISPW DIREINFO Template size in words 139 ORG DIREINFO Recover template space 140 EMAC end of DIRINFORD 141 142 143 FILESTAT MACRO 144 NOLIST 145 $P 146 BOX 147 148 Definition of the fields and values for the static and 149 dynamic statuses of a file. 150 151 EBOX 152 153 * Format of File static status 154 * 155 * EQU BIT 0 always zero 156 FSSTATPRIV EQU BITS 14:17 privilege to access device 157 FSSTATCRT EQU BIT 18 file was created by OPEN 158 FSSTATACS EQU BITS 19:21 access allowed to device 159 * EQU BIT 22 unused - reserved 160 FSSTATABS EQU BIT 23 on if unit is absolute I/O 161 FSSTATWSC EQU BIT 24 on if file writing when system crashed 162 FSSTATSAV EQU BIT 25 on if device in directory somewhere 163 FSSTATDTYP EQU BITS 26:31 type code for the device 164 165 * Values for FSSTATPRIV 166 * (privilege implies what you would be allowed to have) 167 FSPRIVRW EQU 0 read/write 168 FSPRIVRO EQU 1 read only 169 FSPRIVMOD EQU 2 modify 170 FSPRIVXO EQU 3 execute only 171 FSPRIVBKUP EQU 8 backup 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 162 (XREQINFOMACS) F 10 Macro Definitions 172 FSPRIVNOT EQU 0F no privilege 173 FSPRIVNWB EQU BIT 31 bit, if on, implies no write possible 174 * Values for FSSTATACS 175 * (access implies what you actually requested and have) 176 FSACSRW EQU 0 read/write 177 FSACSRO EQU 1 read only 178 FSACSAO EQU 2 append only 179 FSACSXO EQU 3 execute only 180 FSACSMW EQU 4 multiple write 181 FSACSDR EQU FSACSMW+1 multiple write 182 FSACSNDA EQU 7 no data access 183 FSACSNWB EQU BIT 31 bit, if on, sez no write possible 184 * Values for FSSTATDTYP 185 DTYPEUNDEF EQU 0 undefined and illegal 186 DTYPESAF EQU 1 sequential access file 187 DTYPERAF EQU 2 random access file 188 DTYPECODE EQU 3 code file 189 DTYPEPATH EQU 4 communication path 190 DTYPEDIR EQU 5 directory 191 DTYPENULL EQU 6 output eater 192 DTYPETERM EQU 7 interactive terminal 193 * EQU 8 unused (was lock) 194 DTYPETASK EQU 9 "batch" job submission unit 195 DTYPECDR EQU 10 card reader 196 DTYPELP EQU 11 line printer 197 DTYPEMT EQU 12 magnetic tape 198 DTYPECT EQU 13 cartridge magnetic tape 199 DTYPEVOL EQU 14 a volume 200 DTYPEVT EQU 15 video tape 201 DTYPELAST EQU 16 last code plus one 202 203 204 * Format of a file's dynamic status 205 FDSTATAERR EQU BIT 0 on if error code not zero 206 FDSTATLUN EQU BITS 4:11 lun having this status 207 FDSTATRTYP EQU BITS 16:19 type of last record read 208 FDSTATLP EQU BIT 20 on if device positioned at beginning 209 FDSTATERR EQU BITS 21:31 error code 210 211 * Values for FDSTATRTYP - record types 212 FDRTYPSYSB EQU BIT 28 if on, record is either EOD or EOF 213 FDRTYPEODB EQU BIT 31 if FDRTYPSYSB also, then EOD 214 FDRTYPTEXT EQU 0 text record 215 FDRTYPTXTF EQU 1 text with forms control 216 FDRTYPBIN EQU 2 binary record 217 FDRTYPLBL EQU 4 label record 218 FDRTYPCOMM EQU 5 comment record 219 FDRTYPFM EQU 8 file mark (end of file, EOF) 220 FDRTYPEOD EQU 9 end of data (EOD) 221 FDRTYPAEOD EQU 11 abnormal end of date (AEOD) 222 EMAC of FILESTAT 223 224 225 FLDDEFS MACRO 226 NOLIST 227 $P 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 163 (XREQINFOMACS) F 10 Macro Definitions 228 BOX 229 230 Definition of useful instruction and address fields. 231 232 EBOX 233 234 FLDADRS EQU BITS 15:31 word address in a pointer 235 FLDCHARS EQU BITS 15:1 character address in a pointer 236 FLDBITS EQU BITS 15:4 bit address in a pointer 237 FLDPAGE EQU BITS 15:21 page number in word address 238 FLDRAFPAGE EQU BITS 0:19 page number in RAF byte address 239 FLDUPR15 EQU BITS 0:14 upper 15 bits of a word 240 FLDCH0 EQU BITS 0:7 character 0 in a word 241 FLDCH1 EQU BITS 8:15 character 1 in a word 242 FLDCH2 EQU BITS 16:23 character 2 in a word 243 FLDCH3 EQU BITS 24:31 character 3 in a word 244 FLDMODE EQU BITS 10:14 mode part of an operand 245 FLDIMMED EQU BITS 14:31 immediate part of operand 246 FLDOPND EQU FLDMODE+FLDADRS instruction operand 247 248 EMAC end of FLDDEFS 249 250 251 MSGDEFS MACRO 252 NOLIST 253 $P 254 BOX 255 256 Definition of messages sent by URSENDMSG and received 257 by URGETMSG. 258 259 EBOX 260 261 MSGPROTO BASE R0 262 MSGPROC BSSB 16 when sending: session number of receiver 263 * when receiving: session number of sender 264 MSGCLASS BSSB 16 class number of this message (0..31) 265 MSGPRIVS BSS 1 privileges associated with this message 266 * (see below for format) 267 MSGSTEXT BSS 0 when sending: start of message text 268 MSGACCT BSSC 20 when receiving: account name of sender, 269 * in ASCII, padded with blanks, or blank 270 * if account name not given. 271 MSGRTEXT BSS 0 when receiving: start of message text 272 273 * Definition of bits MSGPRIVS: 274 275 MSGPRIVID EQU BIT 0 Sender's Privilege Account name will be put into MSGACCT. 276 MSGPRIVOS EQU BIT 1 Sender is the operating system. 277 MSGPRIVLID EQU BIT 2 Sender's Logged On Account name will be put into MSGACCT. 278 MSGPRIVCM EQU BIT 20 Sender is Control Mode 279 MSGPRIVNXO EQU BIT 21 Sender is NOT Execute Only. 280 MSGPRIVMGR EQU BIT 22 Sender can execute MANAGER requests. 281 MSGPRIVBKP EQU BIT 23 Sender can execute BACKUP requests. 282 MSGPRIVMW EQU BIT 24 . . . MAINTENANCE WRITE requests. 283 MSGPRIVMR EQU BIT 25 . . . MAINTENANCE READ requests. 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 164 (XREQINFOMACS) F 10 Macro Definitions 284 MSGPRIVOPR EQU BIT 26 . . . OPERATOR requests. 285 MSGPRIVG5 EQU BIT 27 . . . GROUP 5 (currently unused) requests. 286 MSGPRIVG4 EQU BIT 28 . . . GROUP 4 (message and batch) requests. 287 MSGPRIVG3 EQU BIT 29 . . . GROUP 3 (attribute change) requests. 288 MSGPRIVG2 EQU BIT 30 . . . GROUP 2 (catalog fetch) requests. 289 MSGPRIVG1 EQU BIT 31 . . . GROUP 1 (limit change) requests. 290 291 * Some message classes are pre defined (or at least usually used for...) 292 MSGCLSRESP EQU 0 response message 293 MSGCLSVERB EQU 1 verbal communication between users 294 MSGCLSOPR EQU 2 urgent communication from OPR 295 MSGCLSSPLR EQU 3 messages to the spooler 296 MSGCLSTERM EQU 4 concurrent session termination message 297 * EQU 5:15 reserved for BTI 298 * EQU 16:31 available to implementors 299 300 DRCT 301 ORG MSGPROTO recover lost space 302 EMAC of MSGDEFS 303 304 305 PSRDEFS MACRO 306 NOLIST 307 $P 308 BOX 309 310 Definition of Process Status Register. 311 312 EBOX 313 314 PSRBCDTRPB EQU BIT 22 BCD overflow trap enable 315 PSRFLTRPEB EQU BIT 23 floating point reduced precision enable 316 PSRFIXTRPB EQU BIT 24 fixed point arith error trap enable 317 PSRFLTTRPB EQU BIT 25 floating point arith error trap enable 318 PSRUNDTRPB EQU BIT 26 undefined number error trap enable 319 PSRMODIFB EQU BIT 27 modify arithmetic enable 320 PSROVERFB EQU BIT 28 overflow indication 321 PSRCARRYB EQU BIT 29 carry indication 322 PSRCONDB EQU BITS 30:31 condition (30-EQ, 31-LT) 323 * values used in changing PSR 324 PSRBCDTRP EQU 1*PSRBCDTRPB 325 PSRFLTRPE EQU 1*PSRFLTRPEB 326 PSRFIXTRP EQU 1*PSRFIXTRPB 327 PSRFLTTRP EQU 1*PSRFLTTRPB 328 PSRUNDTRP EQU 1*PSRUNDTRPB 329 PSRMODIF EQU 1*PSRMODIFB 330 PSROVERF EQU 1*PSROVERFB 331 PSRCARRY EQU 1*PSRCARRYB 332 333 EMAC end of PSRDEFS 334 335 336 PROCINFORD MACRO 337 NOLIST 338 $P 339 BOX 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 165 (XREQINFOMACS) F 10 Macro Definitions 340 341 The session information read request returns the 342 following block of information for each session. 343 344 EBOX 345 346 * Format of session information returned 347 PIPROTO BASE R0 348 PIPROCNUM BSSB 32-17 session number 349 PIENTLEN BSSB 17 length of this entry in words 350 PIWORDZ BSSB 32/2 bits giving more information 351 PIBATCH EQU PIWORDZ/BIT 31 on if a "batch" session 352 PIINTER EQU PIWORDZ/BIT 30 on if "interactive" session 353 PIDIALUP EQU PIWORDZ/BIT 29 on if a dialup port 354 PIINHIB EQU PIWORDZ/BIT 28 on if this port is inhibited 355 PIRFP EQU PIWORDZ/BIT 27 on if this is the special RFP term 356 PISHADL EQU PIWORDZ/BIT 26 on if logged on acct is shadow 357 PISHADA EQU PIWORDZ/BIT 25 on if alias acct is a shadow 358 PISPECPROC EQU PIWORDZ/BIT 24 on if job is special (started by ORSTRTJOB) 359 PISYSPROC EQU PIWORDZ/BIT 23 on if job is system process 360 361 PIPORTNUM BSSB 32/2 terminal port associated (-1 if none) 362 PISHORT EQU DISPW PIPROCNUM size of short element 363 * The above information is given for all sessions. The 364 * below information is only given if privileged. 365 PILOGACCT BSS 6 account logged on 366 PILAVOL EQU PILOGACCT(0) volume name 367 PILASYS EQU PILOGACCT(2) system name 368 PILAACCT EQU PILOGACCT(3) account name 369 PILAPROJ EQU PILOGACCT(5) division-project 370 PIALIASACT BSS 6 account aliased to 371 PIAAVOL EQU PIALIASACT(0) volume name 372 PIAASYS EQU PIALIASACT(2) system name 373 PIAAACCT EQU PIALIASACT(3) account name 374 PIAAPROJ EQU PIALIASACT(5) division-project 375 PIPROGNAME BSS 2 name of program (PAK12) 376 PISTATE BSS 2 program execution state (PAK12) 377 PIWCTIME BSS 1 wall clock time on (in minutes) 378 PICPUUSED BSS 1 cpu time used (in seconds) 379 PICPULIM BSS 1 cpu limit (in seconds) 380 PIDSKLIM BSS 1 disk space hard limit 381 PIDSKUSD BSS 1 disk space used 382 PISESUSD BSS 1 session space used 383 PISESLIM BSS 1 session space limit 384 PIWSSIZE BSS 1 working set size 385 PIDSKWARN BSS 1 disk block soft limit 386 PIPARENT BSS 1 session number of parent (or zero if none) 387 PISITE BSS 2 site name for this session 388 PILGFSESS BSS 1 session to send logoff message to 389 DRCT 390 PILONG EQU DISPW PIPROTO length of long information 391 PILOG EQU PILONG LOG 2 log length for getmem 392 ORG PIPROTO recover the space 393 EMAC end of PROCINFORD 394 395 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 166 (XREQINFOMACS) F 10 Macro Definitions 396 SHLINFORD MACRO 397 NOLIST 398 $P 399 BOX 400 401 Shared list information read format. 402 403 EBOX 404 405 SHRPROTO BASE R0 406 SHRACCESS BSSB 8 access given (codes for FSPRIVxx) 407 SHRPW BSSB 1 on if password present 408 BSSB 6 filler 409 SHRENLEN BSSB 17 contains length of this entry 410 SHRSYS BSS 1 system shared with 411 SHRACCT BSS 2 account shared with 412 SHRPROJ BSS 1 project shared with 413 DRCT 414 SHRLNTH EQU DISPW SHRPROTO length of an entry 415 ORG SHRPROTO 416 EMAC of SHLINFORD 417 418 419 UNDRPINFORD MACRO 420 NOLIST 421 $P 422 BOX 423 424 The under process structure read request returns the 425 following block of information for each process. 426 427 EBOX 428 429 UNDRPROTO BASE R0 430 UNDRRSTR BSSB 15 process restrictions 431 UNDRELEN BSSB 17 length of this entry, in words 432 UNDRLEVEL BSSB 9 level number of this under process 433 UNDRPSN BSSB 23 process serial number of this process 434 UNDRDPSN BSSB 23 process serial number of father 435 UNDRDBG BSSB 23 process serial number of debugger process 436 BSSB 18 reserved for future expansion 437 UNDRNAME BSS 2 process name 438 439 UNDRSTCTG1 EQU UNDRRSTR/BIT 31 on if group 1 restrictions (limit change) 440 UNDRSTCTG2 EQU UNDRRSTR/BIT 30 on if group 2 restrictions (catalog fetch) 441 UNDRSTCTG3 EQU UNDRRSTR/BIT 29 on if group 3 restrictions (acct att. chng) 442 UNDRSTCTG4 EQU UNDRRSTR/BIT 28 on if group 4 restrictions (unassigned) 443 UNDRSTCTG5 EQU UNDRRSTR/BIT 27 on if group 5 restrictions (unassigned) 444 UNDROPREQ EQU UNDRRSTR/BIT 26 on if operator requests restricted 445 UNDRMAINTR EQU UNDRRSTR/BIT 25 on if maintenance read restricted 446 UNDRMAINTW EQU UNDRRSTR/BIT 24 on if maintenance write restricted 447 UNDRBACKUP EQU UNDRRSTR/BIT 23 on if backup requests restricted 448 UNDRMANAGR EQU UNDRRSTR/BIT 22 on if manager requests restricted 449 UNDREXO EQU UNDRRSTR/BIT 21 on if address space is execute only 450 UNDRCNTLM EQU UNDRRSTR/BIT 20 on if in Control Mode 451 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 167 (XREQINFOMACS) F 10 Macro Definitions 452 DRCT 453 UNDRPLONG EQU DISPW UNDRPROTO 454 UNDRPLOG EQU UNDRPLONG LOG 2 455 ORG UNDRPROTO recover lost space 456 EMAC 457 458 459 LUINFORD MACRO 460 NOLIST 461 $P 462 BOX 463 464 The request that returns information on the local 465 units for a specific underprocess conforms to the following 466 format. 467 468 EBOX 469 470 LUPROTO BASE R0 471 LUEQUIVS BSSB 8 number of units opened to this device 472 LULASTREC BSSB 4 type of last record read 473 LULOADPT BSSB 1 unit is currently position at the load point 474 LUTRANS BSSB 1 on if unit has transaction in progress 475 BSSB 1 reserved for future expansion 476 LUELEN BSSB 17 length of this entry (words) 477 478 LUUNIT BSSB 8 unit number having this status 479 LUSSTAT BSSB 18 unit static status 480 BSSB 6 reserved for future expansion 481 482 LUPRIV EQU LUSSTAT/BITS 14:17 privilege to access this device 483 LUCRT EQU LUSSTAT/BIT 18 file created by OPEN 484 LUACS EQU LUSSTAT/BITS 19:21 access allowed to device 485 LUWWC EQU LUSSTAT/BIT 24 on if file writing when system crashed 486 LUSAVE EQU LUSSTAT/BIT 25 on if device in directory somewhere 487 LUTYPE EQU LUSSTAT/BITS 26:31 type of device 488 489 LUVOLNM BSS 2 volume name for device 490 LUSYSNM BSS 1 system name for device 491 LUACCT BSS 2 account name for device 492 LUACCPROJ BSS 1 div/proj name for device 493 LUFILENM BSS 2 filename for device 494 LUEXT BSS 1 filename extension for device 495 496 DRCT 497 LULONG EQU DISPW LUPROTO 498 LULOG EQU LULONG LOG 2 499 ORG LUPROTO recover lost space 500 501 EMAC 17 INPUT OPRQINFOMACS format for info returned by OPREQs 2 * Operator variable definition macros. 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 168 (OPRQINFOMACS) F 11 4 5 * A9107 Added ERLCSCSIDE, ERLCSCSIID and ERLCSCSIRS. JB. 6 * A9105 Modifications of trace event format. RC 7 * A8901 Addition of VT defs to DEVINFORD. RC 8 * A8805 Addition of disk name to several ERRORFILE entries. DH 9 * A8602 Addition of exchange save record types for accounting record. MH 10 * A8511 Addition of STOP and GO record types for accounting record. MH 11 * A8510 Addition LOAD and UNLOAD record types for accounting record. JB. 12 * A8508 Addition of SMU error code. MH. 13 * A8507 Changes to PORTFILE macro, PCFUNCT contains additional info. JB. 14 * A8504 Addition of new fields and record types for accounting record. MH. 15 * 3.6 Addition of VBSYINFORD. JB. 16 * 3.5 Added DIUNIT, DICHAN, and DISLOT to DEVINFORD. DH. 17 * 3.4 Added POTERMTYPE to PORTINFORD, PCTERMTYPE to PORTFILE. JB. 18 * 3.3 AUTHGDSK and AUTHGDSKA changed to AUTHS... RC. 19 * 2.0 New field in VOLINFORD. BB. 20 * 1.3 Addition of BKUPINFORD. BB. 21 * A8110 New fields in PORTFILE, PORTINFORD. JL. 22 * A8104a Changes to ERRORFILE. JL. 23 * A8104 Changes to ERRORFILE. JL. 24 * A8102 Addition of OPMSGINFO. Change PROCINFORD and ERRORFILE. JL. 25 * A8012a Addition of AUTHINFORD. Change DEVINFORD. New error codes. JL. 26 * A8008 Change of accounting record format. RA. 27 * A8007 Addition of DEVINFORD and TRINFORD. VOLINFORD changed. JL. 28 * A8005a Addition of ACCTFILE and ERRORFILE. RA. 29 * A8005 Addition of CONFINFRD. RA. 30 * A7912 Initial release. RA. 31 32 ********************************************************************************** 33 * * 34 * This is the definition of macros that define symbols * 35 * that are required in communication with the system. This * 36 * file is INPUT in assembly language programs and it defines * 37 * macros that, when invoked, define the requested group of * 38 * symbols. The macro invocation is of the form: * 39 * * 40 * macname [list] * 41 * * 42 * where "macname" is the name of the requested macro and "list" is * 43 * optionally included (the square brackets denote optionality) if the * 44 * body of the macro (i.e., the definition of the symbols) is to * 45 * be listed. * 46 * * 47 * Macros that are defined herein are: * 48 * * 49 * ACCTFILE Format of accounting file. * 50 * AFTINFORD Format of data returned by AFT information request. * 51 * AUTHINFORD Format of data returned by auth list information reads. * 52 * CONFINFORD Format of data returned by configuration request. * 53 * DEVINFORD Format of data returned by device information request. * 54 * ERRORFILE Format of error log file. * 55 * OPMSGINFO Format of data returned by operator message request. * 56 * PORTFILE Format of port configuration file. * 57 * PORTINFORD Format of data returned by port information request. * 58 * TRINFORD Format of data returned by stop trace request. * 59 * VOLINFORD Format of data returned by volume information request. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 169 (OPRQINFOMACS) F 11 60 * VBSYINFORD Format of data returned by volume busy request. * 61 * * 62 ********************************************************************************** 63 64 65 ACCTFILE MACRO 66 NOLIST 67 $P 68 BOX 69 70 Accounting files. 71 A system session writes records into accounting files 72 whenever certain events occur. The events and the format 73 of the files are described below. The files where log 74 entries are made are determined by a bit mask in the 75 ULLIMITS block called LIMLOGSPOT. Each accounting record is 76 written to as many as 4 log files: 77 78 user.divprj:ACCOUNTING.LOGFIL 79 MANAGER.divprj:ACCOUNTING.LOGFIL 80 MANAGER.div:ACCOUNTING.LOGFIL 81 MANAGER.SYS:ACCOUNTING.LOGFIL 82 83 The manufacturers account logging may go to himself, 84 MANAGER.!!!, or MANAGER.SYS. 85 These files should be opened as empty .RAFs. The 86 accounting session will add records to the end of the file 87 and advance the end pointer. The begin pointer is provided 88 for the benefit of the reading process. It is the 89 responsibility of the reading process to free blocks when 90 they are no longer needed, otherwise, the log file will 91 grow until it occupies all available space. Note that 92 block 0 should never be freed. 93 If AFEND is in the range of -AFRSIZE to 2*CPW, then it 94 is set to 2*CPW. The reading routine should do the same 95 for AFBEGIN. 96 97 It should be noted that for file entries being logged 98 the primary account name and project is for the account 99 owning the file and the secondary one is for the account 100 accessing the file. Also for aliases and unaliases the 101 file name and extension field is used to hold the logon 102 account name and project of the user performing the alias. 103 104 EBOX 105 106 AFBEGIN EQU 0 RAF char position of read pointer 107 AFEND EQU 1*4 RAF char position of write pointer 108 * (points to next records location) 109 110 AFRPROTO BASE R0 111 AFRTYPE BSSB 5 type of record 112 APTSLEEP EQU 0 sleep record (tested with JEQZ!) 113 APTSTARTUP EQU 1 system startup 114 APTON EQU 2 successful logon 115 APTPWW EQU 3 unsuccessful logon 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 170 (OPRQINFOMACS) F 11 116 APTALIAS EQU 4 alias 117 APTALIER EQU 5 alias failure 118 APTOFF EQU 6 logoff 119 APTALOFF EQU 7 unalias 120 APTPWRFAIL EQU 8 power failure 121 APTPWRUP EQU 9 power up restart 122 APTCONCP EQU 10 concurrent session startup 123 APTABORT EQU 11 opr abort 124 APTTERMIN EQU 12 opr terminate 125 APTEVICT EQU 13 opr evict 126 APTFILOP EQU 14 file open 127 APTFILCL EQU 15 file close 128 APTFBC EQU 16 file being destroyed 129 APTLOAD EQU 17 volume mount 130 APTUNLOAD EQU 18 volume dismount 131 APTSTOP EQU 19 stop process 132 APTGO EQU 20 start process 133 APTXSAVE EQU 21 file exchange save 134 APTMAX EQU 21 largest type 135 * Bit array of those APTs that are long 136 AFRSZLONG EQU 1*(BIT APTON)+1*(BIT APTALIAS)+1*(BIT APTOFF)+1*(BIT APTALOFF) 137 138 AFRPORTNUM BSSB 10 port number of activity 139 AFRLEN BSSB 17 character size of record 140 AFRPROCN BSSB 12 session number 141 AFRSHADOW BSSB 1 on if mentioned acct shadow 142 AFRFOREIGN BSSB 1 on if mentioned acct foreign 143 AFRFILLER BSSB 32-14 filler 144 AFRACCT BSS2 1 account name 145 AFRPROJ BSS 1 division-project 146 AFRTIME BSS2 1 time of occurrence 147 AFRSHORT EQU DISPC AFRTYPE size of short acct file record 148 AFRCPUTIME BSS 1 CPU time used (sec) 149 AFRSVDUSD BSS 1 saved file space (fb) 150 AFRSESMAX BSS 1 session output max (high water mark) 151 AFRACCT2 EQU AFRCPUTIME second account name in record 152 AFRPROJ2 EQU AFRSESMAX second project in record 153 154 AFRSIZE EQU DISPC AFRTYPE size of account file record 155 AFRWORDA BSS 1 156 AFRPORT2 EQU AFRWORDA/BITS 0:9 second port in record 157 AFRPROC2 EQU AFRWORDA/BITS 10:21 second session number in record 158 AFRLONG EQU DISPC AFRTYPE size of long account record 159 BSS 1 second word of file name 160 AFRFILNAM EQU AFRWORDA file name 161 AFRFILEXT BSS 1 file extention 162 AFRFILLEN EQU DISPC AFRTYPE size of record with file info in it 163 AFRMAXLEN EQU AFRFILLEN max length of an accounting record 164 DRCT 165 ORG AFRPROTO reclaim area 166 EMAC 167 168 169 AFTINFORD MACRO 170 NOLIST 171 $P 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 171 (OPRQINFOMACS) F 11 172 BOX 173 174 Format of each entry returned by the read AFT request. 175 176 EBOX 177 AIPROTO BASE R0 178 AIVOL BSS 2 volume name (PAK12) 179 AIACCT BSS 2 account name (PAK12) 180 AIPROJ BSS 1 account project (PAK6) 181 DRCT 182 AILEN EQU DISPW AIPROTO length of the entry in words 183 ORG AIPROTO 184 EMAC end of AFTINFORD 185 186 187 AUTHINFORD MACRO 188 NOLIST 189 $P 190 BOX 191 192 Authorization list read request results. 193 194 EBOX 195 196 AUTLPROTO BASE R0 197 AUTVNAME BSS2 1 volume name 198 BSS 2 unused 199 AUTDSK BSS 1 disk space authorized 200 AUTDSKA BSS 1 disk space delegated 201 AUTSDSK BSS 1 saved space authorized 202 AUTSDSKA BSS 1 saved space delegated 203 BSS 4 unused - reserved for future expansion 204 DRCT 205 AUTLLNTH EQU DISPW AUTLPROTO length of entry 206 ORG AUTLPROTO 207 EMAC 208 209 210 CONFINFORD MACRO 211 NOLIST 212 $P 213 BOX 214 215 Format of each entry returned by the read system 216 configuration request. 217 218 EBOX 219 220 SCPROTO BASE R0 221 SCSLOT BSSB 15 slot of device 222 SCLENGTH BSSB 17 length of the entry in words 223 SCTYPE BSS 1 PAK6 device type name 224 SCWRU BSS 1 WRU response of the device 225 SCCHAN BSS 1 channel number of device (-1 if none) 226 SCDTYPE BSS 1 PAK6 name of device on chan(-1 if none) 227 SCDWRU BSS 1 device WRU response (-1 if none) 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 172 (OPRQINFOMACS) F 11 228 SCDUNIT BSS 1 unit on device controller (-1 if none) 229 SCDUSIZE BSS 1 size of device (-1 if no size) 230 SCDUUNIT BSS 1 PAK6 units of device size 231 DRCT 232 SCLEN EQU DISPW SCPROTO length of the entry in words 233 ORG SCPROTO 234 EMAC end of CONFINFORD 235 236 237 DEVINFORD MACRO 238 NOLIST 239 $P 240 BOX 241 242 Information returned by the device information 243 request. 244 245 EBOX 246 247 DIPROTO BASE R0 248 DISTART BSS 0 beginning of entry 249 DITYPE BSSB 15 device type: 250 DIDISK EQU 1 disk 251 DIMT EQU 2 magnetic tape (standard 9 track) 252 DICT EQU 3 cartridge tape (DEI) 253 DILP EQU 4 line printer 254 DIVT EQU 5 video tape (exabyte) 255 * others to be defined 256 DIENTLEN BSSB 17 length of this entry in words 257 DIDNAME BSS 1 device name (pak6) 258 DIHARDADR BSSB 16:1 hardware address 259 DIUNIT EQU BITS 28:31 unit number in hardware address 260 DICHAN EQU BITS 24:27 channel number in hardware address 261 DISLOT EQU BITS 20:23 slot number in hardware address 262 DIDEVINFO BSS 0 start of device-specific info 263 264 * For disks only: 265 DIDRVNUM BSSB 8 drive number (cable position) 266 DISPT BSSB 8 sectors per track 267 DITPC BSSB 16 tracks per cylinder 268 DIDISKLEN EQU DISPW DISTART length of disk entry 269 270 * For mag tapes only: 271 ORG DIPROTO/DIDEVINFO 272 DIMTPROC BSS 1 session number of owner (or zero if none) 273 DIMTLEN EQU DISPW DISTART length of mag tape entry 274 275 * For cart tapes only: 276 ORG DIPROTO/DIDEVINFO 277 DICTPROC BSS 1 session number of owner (or zero if none) 278 DICTLEN EQU DISPW DISTART length of cart tape entry 279 280 * For video tapes only: 281 ORG DIPROTO/DIDEVINFO 282 DIVTPROC BSS 1 session number of owner (or zero if none) 283 DIVTLEN EQU DISPW DISTART length of video tape entry 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 173 (OPRQINFOMACS) F 11 284 285 * For line printers only: 286 ORG DIPROTO/DIDEVINFO 287 DILPPROC BSS 1 session number of owner (or zero if none) 288 DILPLEN EQU DISPW DISTART length of line printer entry 289 290 DRCT 291 ORG DIPROTO recover space 292 EMAC 293 294 295 ERRORFILE MACRO 296 NOLIST 297 $P 298 BOX 299 300 The system logs in a file IO and other errors that 301 occur while the system is running. This file is of the 302 format given. The errors consist of a code and a variable 303 number of parameters. Defined error codes are ("|" 304 separates words): 305 306 ERLCEND | dummy parameter 307 ERLCTS ( no longer used ) 308 ERLCTEXT | variable length string (blank filled) 309 ERLCBFBI ( new code below ) 310 ERLCCKFBI ( new code below ) 311 ERLCBKFBI ( new code below ) 312 ERLCPFFBI ( no longer used ) 313 ERLCBLNK | MS address expected | found 314 ERLCFSAF | MS address 315 ERLCFUD1 | MS address 316 ERLCFUD2 | MS address 317 ERLCPPUBT | PF for channel | PPU status 318 ERLCCIAE | PF for channel | CIA status 319 ERLCCIATO | PF for channel 320 ERLCDSKTO | PF for channel | unit 321 ERLCSSUTO | PF for SSU 322 ERLCSUB ( new code below ) 323 ERLCNOSUB ( new code below ) 324 ERLCUNSUB ( new code below ) 325 ERLCPPUTO (no longer used) 326 ERLCBOOT | system version (upper) | system version (lower) | boot switches 327 ERLCMOUNT | volume number | drive name | volume name (upper) | 328 volume name (lower) 329 ERLCDMOUNT | volume number 330 ERLCMPE | status + virtual address | PF | block 331 ERLCMPED | PF | block 332 ERLCDNRDY ( new code below ) 333 ERLCRMNT | volume number | drive name 334 ERLCCTC (no longer used) 335 ERLCCTCTO (no longer used) 336 ERLCDSKRD ( new code below ) 337 ERLCDCNT | drive name | cable number | read count | write count 338 ERLCDSKRW ( new code below ) 339 ERLCLPERR | LP name | LP status 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 174 (OPRQINFOMACS) F 11 340 ERLCLPIFPE ( no longer used ) 341 ERLCLPTO | LP name 342 ERLCPPUBAD | PPU slot number 343 ERLCPPUOK | PPU slot number 344 ERLCCTLBAD | PPU slot number | channel number 345 ERLCCTLOK | PPU slot number | channel number 346 ERLCDATBAD | target date | current date 347 ERLCNVMTIM | dummy parm 348 ERLCMTC (no longer used) 349 ERLCMTCTO | page map value 350 ERLCMTCERR | drive name | operation | tape status | PPU status 351 ERLCDSKID | drive name | drive id (3 words) | 352 pack mfg | pack s/n | fmt date (2 words) | 353 volume name (2 words) 354 ERLCUNLOAD | drive name 355 ERLCDE | drive name | block number | seek address | 356 operation | BFD status | PPU status 357 ERLCPWFAIL | dummy parameter 358 ERLCPWRUP | dummy parameter 359 ERLCBFBI | drive name | MS address | expected | found 360 ERLCCKFBI | drive name | MS address | difference | found 361 ERLCBKFBI | drive name | MS address | found 362 ERLCRDGCS | drive name | MS address | segment# 363 ERLCSUB | drive name | bad MS address | substitute address 364 ERLCNOSUB | drive name | bad MS address | reason 365 ERLCUNSUB | drive name | bad MS address | substitute MS address 366 ERLCDNRDY | drive name | volume number 367 ERLCDSKRD | drive name | MS address | seek address 368 ERLCDSKRW | drive name | MS address | seek address 369 ERLCSCSIRS | drive name | MS address | seek address | operation | 370 SCSI status | PPU status | sense key | sense code 371 ERLCSCSIDE | drive name | block number | seek address | 372 operation | SCSI status | PPU status 373 ERLCSCSIID | drive name | vendor id (2 words) | 374 product id (3 words) | firmware rev (2 words) | 375 fmt date (2 words) | volume name (2 words) 376 377 The error logging file is SYSTEM.!!!:ERRORLOG.LOGFIL. 378 This file should be opened as an empty .RAF. The error 379 logging session will add records to the end of the file and 380 advance the end pointer. The begin pointer is provided for 381 the benefit of the reading process. It is the 382 responsibility of the reading process to free blocks when 383 they are no longer needed, otherwise, the log file will 384 grow until it occupies all available mass storage space. 385 Note that block 0 should never be freed ( except possibly 386 to release the entire file ). 387 If EFEND is in the range of -EFRSIZE to 2*CPW, then it 388 is set to 2*CPW. The reading routine should do the same 389 for EFBEGIN. 390 391 EBOX 392 393 * These addresses are used to get the pointers from the error log file 394 EFBEGIN EQU 0 pointer to first error entry 395 EFEND EQU 1*4 pointer to end of error entries 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 175 (OPRQINFOMACS) F 11 396 397 EFPROTO BASE R0 prototype of error entry 398 EFWORDA BSS 1 399 EFLEN EQU BITS 17:21 number of parameters for this error 400 EFERROR EQU BIT 22 0 => routine log entry, 1 => error 401 EFCODE EQU BITS 23:31 code for this error 402 EFTYPE EQU EFWORDA/BITS 0:14 code for this error 403 EFLENGTH EQU EFWORDA/BITS 15:31 length of this entry in words 404 EFDATE BSS 2 system time word when error happened 405 EFPARAMS LABEL first word of parameters 406 DRCT 407 ORG EFPROTO reclaim space 408 409 * The actual codes 410 ERLCEND EQU 1*EFLEN+0*EFERROR+01*EFCODE end system 411 *ERLCTS EQU 1*EFLEN+0*EFERROR+02*EFCODE time stamp 412 ERLCTEXT EQU 1*EFLEN+1*EFERROR+03*EFCODE text record 413 *ERLCBFBI EQU 3*EFLEN+1*EFERROR+04*EFCODE unused - was FBI type mismatch 414 *ERLCCKFBI EQU 3*EFLEN+1*EFERROR+05*EFCODE unused - was FBI checksum bad 415 *ERLCBKFBI EQU 2*EFLEN+1*EFERROR+06*EFCODE unused - was FBI DA mismatch 416 * EQU 6*EFLEN+1*EFERROR+07*EFCODE unused - was old format MS error 417 *ERLCPFFBI EQU 3*EFLEN+1*EFERROR+08*EFCODE bad FBI in PFPROC 418 ERLCBLNK EQU 3*EFLEN+1*EFERROR+09*EFCODE bad backward link while freeing 419 ERLCFSAF EQU 1*EFLEN+1*EFERROR+10*EFCODE bad block while freeing SAF 420 ERLCFUD1 EQU 1*EFLEN+1*EFERROR+11*EFCODE bad UD1 block while freeing DIR 421 ERLCFUD2 EQU 1*EFLEN+1*EFERROR+12*EFCODE bad UD2 block while freeing DIR 422 ERLCPPUBT EQU 2*EFLEN+1*EFERROR+13*EFCODE bad transfer status from PPU 423 ERLCCIAE EQU 2*EFLEN+1*EFERROR+14*EFCODE error code from CIA 424 ERLCCIATO EQU 1*EFLEN+1*EFERROR+15*EFCODE CIA deadman timeout 425 ERLCDSKTO EQU 2*EFLEN+1*EFERROR+16*EFCODE Disk deadman timeout 426 ERLCSSUTO EQU 1*EFLEN+1*EFERROR+17*EFCODE SSU timeout 427 *ERLCSUB EQU 2*EFLEN+1*EFERROR+18*EFCODE unused - was MS block substituted 428 *ERLCNOSUB EQU 2*EFLEN+1*EFERROR+19*EFCODE unused - was MS block not substituted 429 *ERLCUNSUB EQU 2*EFLEN+0*EFERROR+20*EFCODE unused - was MS block unsubstituted 430 *ERLCPPUTO EQU 1*EFLEN+1*EFERROR+21*EFCODE PPU timeout, PPU not talking 431 ERLCBOOT EQU 3*EFLEN+0*EFERROR+22*EFCODE system boot 432 ERLCMOUNT EQU 4*EFLEN+0*EFERROR+23*EFCODE volume mount 433 ERLCDMOUNT EQU 1*EFLEN+0*EFERROR+24*EFCODE volume dismount 434 ERLCMPE EQU 3*EFLEN+1*EFERROR+25*EFCODE memory parity error 435 ERLCMPED EQU 2*EFLEN+1*EFERROR+26*EFCODE memory parity error 436 *ERLCDNRDY EQU 2*EFLEN+1*EFERROR+27*EFCODE unused - was disk dropped ready 437 ERLCRMNT EQU 2*EFLEN+0*EFERROR+28*EFCODE volume remounted 438 *ERLCCTC EQU 4*EFLEN+1*EFERROR+29*EFCODE CTC operation error 439 *ERLCCTCTO EQU 2*EFLEN+1*EFERROR+30*EFCODE CTC deadman timeout 440 * EQU 5*EFLEN+1*EFERROR+31*EFCODE unused - was MS error 441 *ERLCDSKRD EQU 3*EFLEN+1*EFERROR+32*EFCODE unused - was perm read error 442 ERLCDCNT EQU 4*EFLEN+0*EFERROR+33*EFCODE disk activity count 443 *ERLCDSKRW EQU 2*EFLEN+0*EFERROR+34*EFCODE unused - was rewrite after read 444 ERLCLPERR EQU 2*EFLEN+1*EFERROR+35*EFCODE line printer error 445 *ERLCLPIFPE EQU 2*EFLEN+1*EFERROR+36*EFCODE line printer interface parity error (obsolete) 446 ERLCLPTO EQU 1*EFLEN+1*EFERROR+37*EFCODE line printer timeout 447 ERLCPPUBAD EQU 1*EFLEN+1*EFERROR+38*EFCODE PPU doesn't respond 448 ERLCPPUOK EQU 1*EFLEN+0*EFERROR+39*EFCODE PPU started talking again 449 ERLCCTLBAD EQU 2*EFLEN+1*EFERROR+40*EFCODE controller doesn't respond 450 ERLCCTLOK EQU 2*EFLEN+0*EFERROR+41*EFCODE controller is OK again 451 ERLCDATBAD EQU 2*EFLEN+1*EFERROR+42*EFCODE SSU clock is bad 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 176 (OPRQINFOMACS) F 11 452 ERLCNVMTIM EQU 1*EFLEN+1*EFERROR+43*EFCODE NVM time is bad 453 *ERLCMTC EQU 4*EFLEN+1*EFERROR+44*EFCODE MTC operation error 454 *ERLCMTCTO EQU 2*EFLEN+1*EFERROR+45*EFCODE MTC deadman timeout 455 ERLCMTCTO EQU 1*EFLEN+1*EFERROR+46*EFCODE MTC deadman timeout 456 ERLCMTCERR EQU 4*EFLEN+1*EFERROR+47*EFCODE MTC tape error 457 ERLCDSKID EQU 10*EFLEN+0*EFERROR+48*EFCODE drive and pack id 458 ERLCUNLOAD EQU 1*EFLEN+1*EFERROR+49*EFCODE unload disk heads 459 ERLCDE EQU 6*EFLEN+1*EFERROR+50*EFCODE disk I/O error 460 ERLCPWFAIL EQU 1*EFLEN+1*EFERROR+51*EFCODE power failure 461 ERLCPWRUP EQU 1*EFLEN+0*EFERROR+52*EFCODE power up restart 462 ERLCSMU EQU 2*EFLEN+1*EFERROR+53*EFCODE SMU error 463 ERLCBFBI EQU 4*EFLEN+1*EFERROR+54*EFCODE FBI type mismatch 464 ERLCCKFBI EQU 4*EFLEN+1*EFERROR+55*EFCODE FBI checksum bad 465 ERLCBKFBI EQU 3*EFLEN+1*EFERROR+56*EFCODE FBI MS block didn't match 466 ERLCRDGCS EQU 3*EFLEN+0*EFERROR+57*EFCODE reading MS correction segment 467 ERLCSUB EQU 3*EFLEN+1*EFERROR+58*EFCODE MS block substituted 468 ERLCNOSUB EQU 3*EFLEN+1*EFERROR+59*EFCODE MS block not substituted 469 ERLCUNSUB EQU 3*EFLEN+0*EFERROR+60*EFCODE MS block unsubstituted 470 ERLCDNRDY EQU 2*EFLEN+1*EFERROR+61*EFCODE disk dropped ready 471 ERLCDSKRD EQU 3*EFLEN+1*EFERROR+62*EFCODE permanent disk read error (data lost) 472 ERLCDSKRW EQU 3*EFLEN+0*EFERROR+63*EFCODE rewrite disk block after read 473 ERLCSCSIRS EQU 8*EFLEN+1*EFERROR+64*EFCODE request sense data for disk error 474 ERLCSCSIDE EQU 6*EFLEN+1*EFERROR+65*EFCODE SCSI disk I/O error 475 ERLCSCSIID EQU 13*EFLEN+0*EFERROR+66*EFCODE SCSI device identification 476 477 ERLMAXLEN EQU 13 maximum number of parameters 478 EMAC 479 480 481 OPMSGINFO MACRO 482 NOLIST 483 $P 484 BOX 485 486 Format of data returned by ORGETOPMSG. 487 488 EBOX 489 490 OMIPROTO BASE R0 491 OMISTART LABEL 492 OMIPROCNUM BSSB 15 session number originating message (or 0) 493 OMIENTLEN BSSB 17 length of this entry, in words 494 OMISERIAL BSSB 24 message serial number 495 OMILENGTH BSSB 8 length of this message, in characters 496 OMIMESSAGE BSSC 0 beginning of message text 497 DRCT 498 ORG OMIPROTO 499 EMAC 500 501 502 PORTFILE MACRO 503 NOLIST 504 $P 505 BOX 506 507 There is a file from which the system reads the 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 177 (OPRQINFOMACS) F 11 508 initial port configuration. That files format is described 509 herein. 510 The file is a RAF and the first words of it describe 511 the location of the entries for each port. Word zero of 512 the RAF (chars 0-3) is always zero so the file is not 513 mangled by other RAF users. Word 1 (PCPLENGTH) contains 514 the length of each port entry in characters and word 2 515 (PCPBASE) gives the character base for the information for 516 port zero. Therefore, to find the information of a 517 particular port, a program positions to *+. 519 Each of the entries are considered "not specified" if 520 the sign bit of its word is not on. This excludes PCTERMA 521 and PCTERMT which are always there. 522 523 EBOX 524 525 PCPLENGTH EQU 4 position of 4 chars giving length 526 PCPBASE EQU 8 position of 4 chars giving base 527 528 PCPROTO BASE R0 529 PCIBAUD BSS 1 input baud rate 530 PCOBAUD BSS 1 output baud rate 531 PCFUNCT BSS 1 532 PCFCTSP EQU BIT 24 clear to send processing 533 PCFXOFF EQU BIT 25 XON/XOFF processing 534 PCFBRKOUT EQU BIT 26 don't output when recieving break 535 PCFRDE EQU BIT 27 receive data enable 536 PCCHKIP EQU BIT 28 1 sez check parity of input character 537 PCPGEN EQU BITS 29:30 parity generation of output characters 538 PCFSTOPB EQU BIT 31 stop bits (0=>1, 1=>2) 539 PCCARW BSS 1 carriage width 540 PCHEIGHT BSS 1 height of a page 541 PCCRD BSS 1 carriage return delay (MS) 542 PCLFD BSS 1 line feed delay (MS) 543 PCFFD BSS 1 form feed delay (MS) 544 PCBKSPC BSS 1 backspace character 545 PCLKILLC BSS 1 line kill character 546 PCECHOM BSS 1 echo mode 547 PCTERMT BSS 1 terminal type code (pak6) 548 PCTERMG BSS 1 terminating character group 549 PCTERMA BSS 8 terminating character array 550 PCLOCATION BSSC 30 text describing terminal location 551 PCAUTOLOG BSS 10 auto logon account 552 PCIXOFF BSS 1 1 sez xoff port on input buffer full 553 PCFPROTO BSS 1 interface protocal 554 PCPNONE EQU 0 none 555 PCPDISC EQU 1 disconnect on DTR drop 556 PCP103H EQU 2 103 handshake 557 PCTSMTR BSS 1 initial state of our transmitters 558 PCTRI EQU BIT 24 ring indicator 559 PCTCARD EQU BIT 25 carrier detect 560 PCTDTR EQU BIT 26 data terminal ready/data set ready 561 PCTRTS EQU BIT 28 request to send/clear to send 562 PCHTD BSS 1 horizontal tab delay (MS) 563 PCBRCH BSS 1 'break' character 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 178 (OPRQINFOMACS) F 11 564 PCSITE BSS 2 site name for terminal (pak12) 565 PCTERMTYPE BSS 2 terminal type (pak12) 566 BSS 12 expansion 567 DRCT 568 PCLENGTH EQU DISPW PCPROTO 569 ORG PCPROTO 570 EMAC end of PORTFILE 571 572 573 PORTINFORD MACRO 574 NOLIST 575 $P 576 BOX 577 578 Information returned by the port information request. 579 580 EBOX 581 582 POPROTO BASE R0 583 POPORTNUM BSSB 32-17 the port being considered 584 POENTLEN BSSB 17 length of this entry in words 585 POWORDZ BSSB 32/2 586 * EQU POWORDZ/BIT 31 unused 587 POINTER EQU POWORDZ/BIT 30 "interactive terminal" 588 PODIALUP EQU POWORDZ/BIT 29 dialup port 589 POINHIB EQU POWORDZ/BIT 28 port is inhibited 590 PORFP EQU POWORDZ/BIT 27 remote front panel port 591 POPROCNUM BSSB 32/2 session number (zero if none) 592 POIBAUD BSS 1 input baud rate 593 POOBAUD BSS 1 output baud rate 594 POTTYPE BSS 1 *old* terminal "type" (use POTERMTYPE) 595 POICNT BSS 1 input character count 596 POOCNT BSS 1 output character count 597 POINTSTATE BSSC 1 interface state 598 POLASTST BSSC 1 last status from PORT 599 POLASTCOM BSSC 1 last command sent to PORT 600 POCIAPORT BSSC 1 actual port number on CIA 601 POTIMECNT BSS 1 timing count 602 POSITE BSS 2 site name for terminal (pak12) 603 POTERMTYPE BSS 2 terminal type (pak12) 604 DRCT 605 POLENGTH EQU DISPW POPROTO 606 POLOG EQU POLENGTH LOG 2 607 ORG POPROTO reclaim the space 608 EMAC end of PORTINFORD 609 610 611 TRINFORD MACRO 612 NOLIST 613 $P 614 BOX 615 616 Information returned by the stop trace request. 617 618 EBOX 619 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 179 (OPRQINFOMACS) F 11 620 TIPROTO BASE R0 621 TISLOT BSSB 4 slot number of CPU creating this entry 622 TIEVENT BSSB 10 class and event number 623 TITIME BSSB 18 right bits of clock 624 TIR0 BSS 1 contents of R0 at time of event 625 TIR1 BSS 1 contents of R1 at time of event 626 TIR2 BSS 1 contents of R2 at time of event 627 DRCT 628 TILENGTH EQU DISPW TIPROTO entry length 629 ORG TIPROTO 630 EMAC 631 632 633 VOLINFORD MACRO 634 NOLIST 635 $P 636 BOX 637 638 Information returned on volumes by the volume 639 information request. 640 641 EBOX 642 643 VIPROTO BASE R0 644 VIWORDZ BSSB 32-17 645 VIINHIB EQU VIWORDZ/BIT 31 on if access inhibited 646 VINOTMNT EQU VIWORDZ/BIT 30 on if not completely mounted 647 VISYSVOL EQU VIWORDZ/BIT 29 on if the system volume 648 VIQDW EQU VIWORDZ/BIT 27 on if writes queued 649 VIQDR EQU VIWORDZ/BIT 26 on if reads queued 650 VIADTBZY EQU VIWORDZ/BIT 25 on if ADT access busy 651 VIMAIM EQU VIWORDZ/BIT 24 on if maintenance mounted only 652 VIENTLEN BSSB 17 length of this entry in words 653 VIDNAME BSS 1 "name" of the drive (PAK6) 654 VIVNAME BSS 2 volume name (PAK12) 655 VIVNUM BSSB 8 system volume index number 656 VIBUSY BSSB 32-8 volume busy counter 657 VIFREEBLK BSS 1 free blocks on the volume 658 VITOTBLK BSS 1 total blocks on volume 659 VIACCTNUM BSS 1 number of accounts on the volume 660 VIREALNAME BSS 2 real name on volume label 661 DRCT 662 VILENGTH EQU DISPW VIPROTO 663 VILOG EQU VILENGTH LOG 2 664 ORG VIPROTO reclaim space 665 EMAC end of VOLINFORD 666 667 668 BKUPINFORD MACRO 669 NOLIST 670 $P 671 BOX 672 673 Definition of system header made in backup. 674 675 EBOX 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 180 (OPRQINFOMACS) F 11 676 677 HDRPROTO BASE R0 678 BKUPHDRW1 BSS 1 first word of header 679 FILEINFOT EQU BITS 0:14 type of backup information 680 FILEINFOTV EQU 0 volume information 681 FILEINFOTA EQU 1 account information 682 FILEINFOTF EQU 2 file information 683 FILEINFOTD EQU 3 file page information 684 FILEINFOTM EQU 4 mapped file page information 685 BKUPREV EQU BITS 15:31 revision number 686 BKUPHDRW2 BSS 1 second word of header 687 FSTBKUPLEN EQU BITS 0:14 first optional length 688 SNDBKUPLEN EQU BITS 15:31 second optional length 689 DRCT 690 BKUPHDRLEN EQU DISPW HDRPROTO length of header 691 ORG HDRPROTO reclaim space 692 EMAC end of BKUPINFORD 693 694 695 VBSYINFORD MACRO 696 NOLIST 697 $P 698 BOX 699 700 Format of information returned by the volume busy 701 request. 702 703 EBOX 704 705 VBPROTO BASE R0 706 BSSB 15 filler 707 VBLENFLD BSSB 17 length of this entry, in words 708 VBACCTNM BSS 2 account name 709 VBDIVPRJ BSS 1 division/project name 710 DRCT 711 VBLNTH EQU DISPW VBPROTO 712 ORG VBPROTO reclaim space 713 EMAC end of VBSYINFORD 714 18 INPUT MACROINVOK invocation of used macros 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 181 (MACROINVOK) F 12 3 ********************************************************************************** 4 * * 5 * Invocation of macros that are used globally. * 6 * * 7 ********************************************************************************** 8 9 PORTFILE LIST 9 ********************************************************************************** 9 * * 9 * There is a file from which the system reads the * 9 * initial port configuration. That files format is described * 9 * herein. * 9 * The file is a RAF and the first words of it describe * 9 * the location of the entries for each port. Word zero of * 9 * the RAF (chars 0-3) is always zero so the file is not * 9 * mangled by other RAF users. Word 1 (PCPLENGTH) contains * 9 * the length of each port entry in characters and word 2 * 9 * (PCPBASE) gives the character base for the information for * 9 * port zero. Therefore, to find the information of a * 9 * particular port, a program positions to *+. * 9 * Each of the entries are considered "not specified" if * 9 * the sign bit of its word is not on. This excludes PCTERMA * 9 * and PCTERMT which are always there. * 9 * * 9 ********************************************************************************** 9 00000004 ABS 9 PCPLENGTH EQU 4 position of 4 chars giving length 00000008 ABS 9 PCPBASE EQU 8 position of 4 chars giving base 9 00000000 9 PCPROTO BASE R0 00160800 0 BASE 9 PCIBAUD BSS 1 input baud rate 00160801 0 BASE 9 PCOBAUD BSS 1 output baud rate 00160802 0 BASE 9 PCFUNCT BSS 1 00003010 BYTE 9 PCFCTSP EQU BIT 24 clear to send processing 00003210 BYTE 9 PCFXOFF EQU BIT 25 XON/XOFF processing 00003410 BYTE 9 PCFBRKOUT EQU BIT 26 don't output when recieving break 00003610 BYTE 9 PCFRDE EQU BIT 27 receive data enable 00003810 BYTE 9 PCCHKIP EQU BIT 28 1 sez check parity of input character 00003A20 BYTE 9 PCPGEN EQU BITS 29:30 parity generation of output characters 00003E10 BYTE 9 PCFSTOPB EQU BIT 31 stop bits (0=>1, 1=>2) 00160803 0 BASE 9 PCCARW BSS 1 carriage width 00160804 0 BASE 9 PCHEIGHT BSS 1 height of a page 00160805 0 BASE 9 PCCRD BSS 1 carriage return delay (MS) 00160806 0 BASE 9 PCLFD BSS 1 line feed delay (MS) 00160807 0 BASE 9 PCFFD BSS 1 form feed delay (MS) 00160808 0 BASE 9 PCBKSPC BSS 1 backspace character 00160809 0 BASE 9 PCLKILLC BSS 1 line kill character 0016080A 0 BASE 9 PCECHOM BSS 1 echo mode 0016080B 0 BASE 9 PCTERMT BSS 1 terminal type code (pak6) 0016080C 0 BASE 9 PCTERMG BSS 1 terminating character group 0016080D 0 BASE 9 PCTERMA BSS 8 terminating character array 00160054 0 CACH 9 PCLOCATION BSSC 30 text describing terminal location 0016081D 0 BASE 9 PCAUTOLOG BSS 10 auto logon account 00160827 0 BASE 9 PCIXOFF BSS 1 1 sez xoff port on input buffer full 00160828 0 BASE 9 PCFPROTO BSS 1 interface protocal 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 182 (MACROINVOK) F 12 00000000 ABS 9 PCPNONE EQU 0 none 00000001 ABS 9 PCPDISC EQU 1 disconnect on DTR drop 00000002 ABS 9 PCP103H EQU 2 103 handshake 00160829 0 BASE 9 PCTSMTR BSS 1 initial state of our transmitters 00003010 BYTE 9 PCTRI EQU BIT 24 ring indicator 00003210 BYTE 9 PCTCARD EQU BIT 25 carrier detect 00003410 BYTE 9 PCTDTR EQU BIT 26 data terminal ready/data set ready 00003810 BYTE 9 PCTRTS EQU BIT 28 request to send/clear to send 0016082A 0 BASE 9 PCHTD BSS 1 horizontal tab delay (MS) 0016082B 0 BASE 9 PCBRCH BSS 1 'break' character 0016082C 0 BASE 9 PCSITE BSS 2 site name for terminal (pak12) 0016082E 0 BASE 9 PCTERMTYPE BSS 2 terminal type (pak12) 9 BSS 12 expansion 9 DRCT 0000003C ABS 9 PCLENGTH EQU DISPW PCPROTO 9 ORG PCPROTO 10 11 DIRINFORD LIST 11 ********************************************************************************** 11 * * 11 * This is the format of information that is returned to * 11 * the user when he requests directory information. The * 11 * header is returned only when the .DIR is at load point. * 11 * After that the buffer is filled with an integral number of * 11 * entries, one for each file. * 11 * When the directory is exhausted, an end-of-data status * 11 * is returned. * 11 * * 11 ********************************************************************************** 11 00000000 11 DIRHINFO BASE R0 Header giving account information 00160800 0 BASE 11 DIRHLNTH BSS 1 Length of entry in words (now 8) 00160801 0 BASE 11 DIRFLAGS BSS 1 Flags 00080011 0 ZBM 11 DIRSHADOW EQU DIRFLAGS/BIT 0 On if a shadow account 00080211 0 ZBM 11 DIRFOREIGN EQU DIRFLAGS/BIT 1 On if account not at home here 00080411 0 ZBM 11 DIRNETWORK EQU DIRFLAGS/BIT 2 On if account accessed via network 00160802 0 BASE 11 DIRVOLUME BSS2 1 Volume account is on (PAK12) 00160804 0 BASE 11 DIRSYSTEM BSS 1 System account is on (PAK6) 00160805 0 BASE 11 DIRACCOUNT BSS2 1 Account name (PAK12) 00160807 0 BASE 11 DIRPROJECT BSS 1 Project of account (PAK6) 11 DRCT 00000008 ABS 11 DIRHWIDE EQU DISPW DIRHINFO Template length 11 ORG DIRHINFO Recover template space 11 11 11 ********************************************************************************** 11 * * 11 * Template for .DIR file entry block * 11 * * 11 ********************************************************************************** 11 00000000 11 DIREINFO BASE R0 Entry for individual file 00160800 0 BASE 11 DIRENTLEN BSS 1 Entry length in words 00160801 0 BASE 11 DIRNAME BSS2 1 Name of file (PAK12) 00160803 0 BASE 11 DIREXT BSS 1 File name extension (PAK6) 00160804 0 BASE 11 DIRCREATD BSS 1 Creation date 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 183 (MACROINVOK) F 12 00160805 0 BASE 11 DIRLACSD BSS 1 Last access date 00160806 0 BASE 11 DIRLMODD BSS 1 Last modified date 00160807 0 BASE 11 DIRLBKUPD BSS 1 Last backup date 11 00080108 0 ZBM 11 DIRTOTRACS BSSB 16 Total read accesses 00082108 0 ZBM 11 DIRTOTWACS BSSB 16 Total write accesses 11 00080109 0 ZBM 11 DIRRACS BSSB 16 Currently active EQUIPs for RO 00082109 0 ZBM 11 DIRWACS BSSB 16 Currently active EQUIPs for RW 11 0008010A 0 ZBM 11 DIRMWACS BSSB 16 Currently active EQUIPs for MW 0008218A 0 ZBM 11 DIRTFL BSSB 24 Total file length (in blocks) 0008118B 0 ZBM 11 DIRROOTBLK BSSB 24 Root block (or 0 if not GOD) 11 00160030 0 CACH 11 DIRTYPE BSSB 8 Type of file (see FSSTATDTYP) 0008104C 0 ZBM 11 DIRACCESS BSSB 4 Access allowed (see FSSTATACS) 0008182C 0 ZBM 11 DIRRAFTYPE BSSB 2 Empty, Tiny, Small, Large 11 BSSB 2 filler 00160032 0 CACH 11 DIRPRGINT BSSB 8 Purge interval 0008301C 0 ZBM 11 DIRPRGFLG BSSB 1 On if file was purged 0008321C 0 ZBM 11 DIRNOBKUP BSSB 1 On if file should not be backed up 0008341C 0 ZBM 11 DIRRCVRD BSSB 1 On if file recovered from backup 0008361C 0 ZBM 11 DIRFWWSC BSSB 1 On if file EQUIPed for W at crash 0008381C 0 ZBM 11 DIRFBC BSSB 1 On if file being closed 00083A1C 0 ZBM 11 DIRGHOST BSSB 1 On if file not yet recovered from backup 00083C1C 0 ZBM 11 DIRTRANS BSSB 1 On if file opened when user program crashed 00083E1C 0 ZBM 11 DIRFLOG BSSB 1 On if file access should be logged 11 11 BSSB 1 unused filler 0008021D 0 ZBM 11 DIRLRAF BSSB 1 On if a large (2 level) .RAF 0008050D 0 ZBM 11 DIRCUSE BSSB 16 current use count 11 0016080E 0 BASE 11 DIRUSRFLD BSS 1 user-definable field 0016080F 0 BASE 11 DIRSERNO BSS2 1 file serial number 00160810 0 BASE 11 DIRUNITNM EQU DIRSERNO(1) unit number for hardware devices 11 BSS 0 *** filler *** 11 DRCT 00000011 ABS 11 DIRENTWIDE EQU DISPW DIREINFO Template size in words 11 ORG DIREINFO Recover template space 12 13 FILESTAT LIST 13 ********************************************************************************** 13 * * 13 * Definition of the fields and values for the static and * 13 * dynamic statuses of a file. * 13 * * 13 ********************************************************************************** 13 13 * Format of File static status 13 * 13 * EQU BIT 0 always zero 00001C40 BYTE 13 FSSTATPRIV EQU BITS 14:17 privilege to access device 00002410 BYTE 13 FSSTATCRT EQU BIT 18 file was created by OPEN 00002630 BYTE 13 FSSTATACS EQU BITS 19:21 access allowed to device 13 * EQU BIT 22 unused - reserved 00002E10 BYTE 13 FSSTATABS EQU BIT 23 on if unit is absolute I/O 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 184 (MACROINVOK) F 12 00003010 BYTE 13 FSSTATWSC EQU BIT 24 on if file writing when system crashed 00003210 BYTE 13 FSSTATSAV EQU BIT 25 on if device in directory somewhere 00003460 BYTE 13 FSSTATDTYP EQU BITS 26:31 type code for the device 13 13 * Values for FSSTATPRIV 13 * (privilege implies what you would be allowed to have) 00000000 ABS 13 FSPRIVRW EQU 0 read/write 00000001 ABS 13 FSPRIVRO EQU 1 read only 00000002 ABS 13 FSPRIVMOD EQU 2 modify 00000003 ABS 13 FSPRIVXO EQU 3 execute only 00000008 ABS 13 FSPRIVBKUP EQU 8 backup 0000000F ABS 13 FSPRIVNOT EQU 0F no privilege 00003E10 BYTE 13 FSPRIVNWB EQU BIT 31 bit, if on, implies no write possible 13 * Values for FSSTATACS 13 * (access implies what you actually requested and have) 00000000 ABS 13 FSACSRW EQU 0 read/write 00000001 ABS 13 FSACSRO EQU 1 read only 00000002 ABS 13 FSACSAO EQU 2 append only 00000003 ABS 13 FSACSXO EQU 3 execute only 00000004 ABS 13 FSACSMW EQU 4 multiple write 00000005 ABS 13 FSACSDR EQU FSACSMW+1 multiple write 00000007 ABS 13 FSACSNDA EQU 7 no data access 00003E10 BYTE 13 FSACSNWB EQU BIT 31 bit, if on, sez no write possible 13 * Values for FSSTATDTYP 00000000 ABS 13 DTYPEUNDEF EQU 0 undefined and illegal 00000001 ABS 13 DTYPESAF EQU 1 sequential access file 00000002 ABS 13 DTYPERAF EQU 2 random access file 00000003 ABS 13 DTYPECODE EQU 3 code file 00000004 ABS 13 DTYPEPATH EQU 4 communication path 00000005 ABS 13 DTYPEDIR EQU 5 directory 00000006 ABS 13 DTYPENULL EQU 6 output eater 00000007 ABS 13 DTYPETERM EQU 7 interactive terminal 13 * EQU 8 unused (was lock) 00000009 ABS 13 DTYPETASK EQU 9 "batch" job submission unit 0000000A ABS 13 DTYPECDR EQU 10 card reader 0000000B ABS 13 DTYPELP EQU 11 line printer 0000000C ABS 13 DTYPEMT EQU 12 magnetic tape 0000000D ABS 13 DTYPECT EQU 13 cartridge magnetic tape 0000000E ABS 13 DTYPEVOL EQU 14 a volume 0000000F ABS 13 DTYPEVT EQU 15 video tape 00000010 ABS 13 DTYPELAST EQU 16 last code plus one 13 13 13 * Format of a file's dynamic status 00000010 BYTE 13 FDSTATAERR EQU BIT 0 on if error code not zero 00000880 BYTE 13 FDSTATLUN EQU BITS 4:11 lun having this status 00002040 BYTE 13 FDSTATRTYP EQU BITS 16:19 type of last record read 00002810 BYTE 13 FDSTATLP EQU BIT 20 on if device positioned at beginning 00002AB0 BYTE 13 FDSTATERR EQU BITS 21:31 error code 13 13 * Values for FDSTATRTYP - record types 00003810 BYTE 13 FDRTYPSYSB EQU BIT 28 if on, record is either EOD or EOF 00003E10 BYTE 13 FDRTYPEODB EQU BIT 31 if FDRTYPSYSB also, then EOD 00000000 ABS 13 FDRTYPTEXT EQU 0 text record 00000001 ABS 13 FDRTYPTXTF EQU 1 text with forms control 00000002 ABS 13 FDRTYPBIN EQU 2 binary record 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 185 (MACROINVOK) F 12 00000004 ABS 13 FDRTYPLBL EQU 4 label record 00000005 ABS 13 FDRTYPCOMM EQU 5 comment record 00000008 ABS 13 FDRTYPFM EQU 8 file mark (end of file, EOF) 00000009 ABS 13 FDRTYPEOD EQU 9 end of data (EOD) 0000000B ABS 13 FDRTYPAEOD EQU 11 abnormal end of date (AEOD) 14 15 BKUPINFORD LIST 15 ********************************************************************************** 15 * * 15 * Definition of system header made in backup. * 15 * * 15 ********************************************************************************** 15 00000000 15 HDRPROTO BASE R0 00160800 0 BASE 15 BKUPHDRW1 BSS 1 first word of header 000000F0 BYTE 15 FILEINFOT EQU BITS 0:14 type of backup information 00000000 ABS 15 FILEINFOTV EQU 0 volume information 00000001 ABS 15 FILEINFOTA EQU 1 account information 00000002 ABS 15 FILEINFOTF EQU 2 file information 00000003 ABS 15 FILEINFOTD EQU 3 file page information 00000004 ABS 15 FILEINFOTM EQU 4 mapped file page information 00001F10 BYTE 15 BKUPREV EQU BITS 15:31 revision number 00160801 0 BASE 15 BKUPHDRW2 BSS 1 second word of header 000000F0 BYTE 15 FSTBKUPLEN EQU BITS 0:14 first optional length 00001F10 BYTE 15 SNDBKUPLEN EQU BITS 15:31 second optional length 15 DRCT 00000002 ABS 15 BKUPHDRLEN EQU DISPW HDRPROTO length of header 15 ORG HDRPROTO reclaim space 16 17 UNDRPINFORD LIST 17 ********************************************************************************** 17 * * 17 * The under process structure read request returns the * 17 * following block of information for each process. * 17 * * 17 ********************************************************************************** 17 00000000 17 UNDRPROTO BASE R0 000800F0 0 ZBM 17 UNDRRSTR BSSB 15 process restrictions 00081F10 0 ZBM 17 UNDRELEN BSSB 17 length of this entry, in words 00080091 0 ZBM 17 UNDRLEVEL BSSB 9 level number of this under process 00081371 0 ZBM 17 UNDRPSN BSSB 23 process serial number of this process 00080172 0 ZBM 17 UNDRDPSN BSSB 23 process serial number of father 00082F72 0 ZBM 17 UNDRDBG BSSB 23 process serial number of debugger process 17 BSSB 18 reserved for future expansion 00160804 0 BASE 17 UNDRNAME BSS 2 process name 17 00081C10 0 ZBM 17 UNDRSTCTG1 EQU UNDRRSTR/BIT 31 on if group 1 restrictions (limit change) 00081A10 0 ZBM 17 UNDRSTCTG2 EQU UNDRRSTR/BIT 30 on if group 2 restrictions (catalog fetch) 00081810 0 ZBM 17 UNDRSTCTG3 EQU UNDRRSTR/BIT 29 on if group 3 restrictions (acct att. chng) 00081610 0 ZBM 17 UNDRSTCTG4 EQU UNDRRSTR/BIT 28 on if group 4 restrictions (unassigned) 00081410 0 ZBM 17 UNDRSTCTG5 EQU UNDRRSTR/BIT 27 on if group 5 restrictions (unassigned) 00081210 0 ZBM 17 UNDROPREQ EQU UNDRRSTR/BIT 26 on if operator requests restricted 00081010 0 ZBM 17 UNDRMAINTR EQU UNDRRSTR/BIT 25 on if maintenance read restricted 00080E10 0 ZBM 17 UNDRMAINTW EQU UNDRRSTR/BIT 24 on if maintenance write restricted 00080C10 0 ZBM 17 UNDRBACKUP EQU UNDRRSTR/BIT 23 on if backup requests restricted 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 186 (MACROINVOK) F 12 00080A10 0 ZBM 17 UNDRMANAGR EQU UNDRRSTR/BIT 22 on if manager requests restricted 00080810 0 ZBM 17 UNDREXO EQU UNDRRSTR/BIT 21 on if address space is execute only 00080610 0 ZBM 17 UNDRCNTLM EQU UNDRRSTR/BIT 20 on if in Control Mode 17 17 DRCT 00000006 ABS 17 UNDRPLONG EQU DISPW UNDRPROTO 00000003 ABS 17 UNDRPLOG EQU UNDRPLONG LOG 2 17 ORG UNDRPROTO recover lost space 18 19 LUINFORD LIST 19 ********************************************************************************** 19 * * 19 * The request that returns information on the local * 19 * units for a specific underprocess conforms to the following * 19 * format. * 19 * * 19 ********************************************************************************** 19 00000000 19 LUPROTO BASE R0 00160000 0 CACH 19 LUEQUIVS BSSB 8 number of units opened to this device 00081040 0 ZBM 19 LULASTREC BSSB 4 type of last record read 00081810 0 ZBM 19 LULOADPT BSSB 1 unit is currently position at the load point 00081A10 0 ZBM 19 LUTRANS BSSB 1 on if unit has transaction in progress 19 BSSB 1 reserved for future expansion 00081F10 0 ZBM 19 LUELEN BSSB 17 length of this entry (words) 19 00160004 0 CACH 19 LUUNIT BSSB 8 unit number having this status 00081121 0 ZBM 19 LUSSTAT BSSB 18 unit static status 19 BSSB 6 reserved for future expansion 19 00081041 0 ZBM 19 LUPRIV EQU LUSSTAT/BITS 14:17 privilege to access this device 00081811 0 ZBM 19 LUCRT EQU LUSSTAT/BIT 18 file created by OPEN 00081A31 0 ZBM 19 LUACS EQU LUSSTAT/BITS 19:21 access allowed to device 00082411 0 ZBM 19 LUWWC EQU LUSSTAT/BIT 24 on if file writing when system crashed 00082611 0 ZBM 19 LUSAVE EQU LUSSTAT/BIT 25 on if device in directory somewhere 00082861 0 ZBM 19 LUTYPE EQU LUSSTAT/BITS 26:31 type of device 19 00160802 0 BASE 19 LUVOLNM BSS 2 volume name for device 00160804 0 BASE 19 LUSYSNM BSS 1 system name for device 00160805 0 BASE 19 LUACCT BSS 2 account name for device 00160807 0 BASE 19 LUACCPROJ BSS 1 div/proj name for device 00160808 0 BASE 19 LUFILENM BSS 2 filename for device 0016080A 0 BASE 19 LUEXT BSS 1 filename extension for device 19 19 DRCT 0000000B ABS 19 LULONG EQU DISPW LUPROTO 00000004 ABS 19 LULOG EQU LULONG LOG 2 19 ORG LUPROTO recover lost space 19 19 INPUT HALTDEFS system halt definitions 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 187 (HALTDEFS) F 13 Definitions for operating system halts 4 5 ********************************************************************************** 6 * * 7 * Hardware provided displays * 8 * -------- -------- -------- * 9 * * 10 * The SSU and CPU may interact upon the discovery of * 11 * certain errors and display an appropriate error message in * 12 * the front panel display. This box contains a description * 13 * of those displays. * 14 * * 15 * POWER ON This display comes on when the SSU is cycling * 16 * MCLR and PFW after a power up start. * 17 * * 18 * BSE INIT This display comes on when BSE is already * 19 * asserted immediately after the SSU has * 20 * cycled MCLR and PFW. * 21 * * 22 * NO MEMORY This display comes on when the SSU finds no * 23 * MCU or SMU with memory at page zero. * 24 * * 25 * SELF TEST This display comes on while the SSU sends self * 26 * test commands to the other VRA modules, * 27 * waits two seconds and gets the WRU 15 (self * 28 * test responses). * 29 * * 30 * STF SLOTn This display comes on when the SSU gets either * 31 * a non-zero or a no response to a WRU 15. "n" * 32 * is the slot number of the offending module. * 33 * * 34 * NO CPU This display comes on when the SSU finds no CPU * 35 * in the system. * 36 * * 37 * BSE ACTIVE This display comes on when a module other than * 38 * the SSU is asserting BSE. * 39 * * 40 * ERRx SLOTn This display comes on when the SSU itself notices * 41 * a bus error. "x" is the error code (same as * 42 * the first digit of a WRU 1, and "n" is the slot * 43 * number of the offending module. * 44 * The codes for x are: * 45 * 1 - bus parity error * 46 * 2 - flags wrong or DBW bit wrong * 47 * 3 - bad command code * 48 * 4 - illegal address * 49 * 5 - RTO time out * 50 * 6 - response time out * 51 * 7 - illegal data * 52 * 8 - * 53 * 9 - data wrong during boot * 54 * A - bad WRU response * 55 * * 56 * CPUn ERRxx This display appears when a CPU sends the SSU a * 57 * CPU ERROR command. "n" is the slot number of * 58 * the CPU, and "xx" is the most significant byte * 59 * of the error data sent by the CPU. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 188 (HALTDEFS) F 13 Definitions for operating system halts 60 * * 61 * CPU ERROR CODES (Rev 12 and greater microcode) * 62 * * 63 * The CPU has two types of fatal errors: Bus errors * 64 * and CPU errors. When the CPU gets a Bus error, it asserts * 65 * BSE. When a CPU error occurs, a CPU error message is sent * 66 * to the SSU. In both cases, certain state information has * 67 * been saved by the CPU, and is accessable from the RFP. * 68 * * 69 * The state information is saved as follows: * 70 * * 71 * R11 (SP17) = Microstatus register 1 * 72 * R12 (SP18) = Microstatus register 2 ([28:31]=From register)* 73 * R13 (SP19) = Microstatus register 3 * 74 * R14 (SP20) = Input register 1 * 75 * R15 (SP21) = Input register 2 * 76 * R16 (SP22) = Output register 1 * 77 * R17 (SP23) = Output register 2 * 78 * R19 (SP24) [0:3] = Error code * 79 * [4:7] = Error parameter * 80 * [20:31] = ucode address where error was * 81 * detected * 82 * * 83 * The error codes are listed below. Error codes 1 * 84 * through 7 are Bus error codes and codes 8 through A are * 85 * CPU error codes. * 86 * * 87 * 1 --> Parity error on the Bus. * 88 * 2 --> Bad flags on the Bus. * 89 * 3 --> Bad command code on the Bus. * 90 * 4 --> Bad command address on the Bus. * 91 * 5 --> RTO timeout on the Bus. * 92 * 6 --> IBF timeout on the Bus. * 93 * 7 --> Parity and flag error on the Bus (same as * 94 * codes 1 and 2) * 95 * 8 --> Page fault during trap setup * 96 * 9 --> Page fault when trying to store console * 97 * area * 98 * A --> Hardware error * 99 * * 100 * The second digit of the error message is the error * 101 * parameter. These are used to indicate the type of word * 102 * which caused a flag or parity error. * 103 * * 104 * 0 --> No information * 105 * 1 --> Error in command word of received command * 106 * 2 --> Error in data word of received command * 107 * 3 --> Error in instruction fetch data * 108 * 4 --> Error in operand fetch data * 109 * 5 --> Error in pointer fetch data * 110 * 6 --> Error in interrupt poll data * 111 * 7 --> Error in trap fetch data * 112 * * 113 * POWER OFF This display comes on when the SSU sees the * 114 * Control Panel Power switch turned off. * 115 * * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 189 (HALTDEFS) F 13 Definitions for operating system halts 116 * acdctempPF This display comes on when the SSU sees a power * 117 * failure of some kind. * 118 * AC PF AC Power Fail warning (detected by the AC * 119 * Power Fail Detector board or from memory power * 120 * failure). * 121 * DC PF Bad +5 VDC on the SSU. * 122 * TEMPPF Overtemperature in the main cardcage. * 123 * Note: more than one of these may be active at * 124 * a time. * 125 * * 126 * SSU ERR ps This display comes on when the SSU fails its own * 127 * self test. "p" is the primary error code, and * 128 * "s" is the secondary error code. The error codes * 129 * are listed below: * 130 * 1 -- Real Time Clock not ticking * 131 * 2 -- SSU Ram Error 0 -- Zeros test error * 132 * 1 -- #FF test error * 133 * 2 -- Address test error * 134 * 3 -- Complement address test error * 135 * 3 -- SSU Bus Error 1 -- Reset logic error * 136 * 2 -- WBTOR/status error * 137 * 3 -- Call back logic error * 138 * 4 -- Data path error * 139 * 5 -- Parity error when good * 140 * parity expected * 141 * 6 -- No parity error when bad * 142 * parity forced * 143 * 4 -- Control Panel Switch read/write error * 144 * 5 -- Bootstrap Eprom checksum error * 145 * 6 -- Bus Control Register read/write error * 146 * * 147 * SSU HALTxx This code is displayed when the SSU microcode * 148 * has detected an internal inconsistency that * 149 * makes it unlikely to be able to continue. * 150 * xx gives the reason (see list below). * 151 * * 152 * SSU HALT CODE LIST FOR REV 14 MICROCODE * 153 * This is a list of SSU halt codes for SSU * 154 * microcode rev 14. (The halt code lists for * 155 * earlier microcode revisions are different.) * 156 * There are only two ways to restart an SSU that * 157 * has halted. One way is to manipulate the SSU's * 158 * program counter with a hardware debugger. The * 159 * other way to restart a halted SSU is to power * 160 * down the VRA cardcage and then power it up * 161 * again. (This is done by cycling the front panel * 162 * power switch.) * 163 * * 164 * HALT CODE EXPLANATION * 165 * * 166 * SSU HALT01 CreateProc called with all Process blocks in use * 167 * SSU HALT02 DestroyProc called with no process to destroy * 168 * SSU HALT03 Timer.Wait called with too low of a base address * 169 * SSU HALT04 Timer in use when Timer.Wait called * 170 * SSU HALT05 Cancel.Timer called with no timer in use * 171 * SSU HALT06 Event.Wait called with both events in use * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 190 (HALTDEFS) F 13 Definitions for operating system halts 172 * SSU HALT07 Cancel.Event called with no event in use * 173 * SSU HALT08 Cancel.Event called with incorrect event return index* 174 * SSU HALT09 PFW interrupt reached as general interrupt * 175 * SSU HALT0A CBN asserted with IBF unasserted * 176 * SSU HALT0B RFP.State = WF.Modem when starting from RXR interrupt* 177 * SSU HALT0C RFP.State = Send.Output when starting from RXR interrupt* 178 * SSU HALT0D RFP.State = Send.WF.CP when starting from RXR interrupt* 179 * SSU HALT0E RFP.State = WF.CP when starting from RXR interrupt * 180 * SSU HALT0F RFP.State = WF.Ring when entering from Txr Interrupt* 181 * SSU HALT10 RFP.State = WF.Modem when entering from Txr Interrupt* 182 * SSU HALT11 RFP.State = WF.Break when entering from Txr Interrupt* 183 * SSU HALT12 RFP.State = WF.CP when entering from Txr Interrupt * 184 * SSU HALT13 RFP.State = WF.Input.SOM when entering from Txr Interrupt* 185 * SSU HALT14 RFP.State = WF.InputChar when entering from Txr Interrupt* 186 * SSU HALT15 RFP.State = WF.Ring when entering from CP Interrupt * 187 * SSU HALT16 RFP.State = WF.Modem when entering from CP Interrupt* 188 * SSU HALT17 RFP.State = WF.Break when entering from CP Interrupt* 189 * SSU HALT18 RFP.State = Send.Output when entering from CP Interrupt* 190 * SSU HALT19 RFP.State = WF.Input.SOM when entering from CP Interrupt* 191 * SSU HALT1A RFP.State = WF.InputChar when entering from CP Interrupt* 192 * SSU HALT1B RFP.State = Send.Output when entering * 193 * SSU HALT1C RFP.State = Send.WF.CP when entering * 194 * SSU HALT1D RFP.State = WF.CP when entering from Short Timer interrupt* 195 * SSU HALT1E RFP.State = WF.Input.SOM when entering * 196 * SSU HALT1F RFP.State = WF.Ring when entering * 197 * SSU HALT20 RFP.State = Send.Output when entering * 198 * SSU HALT21 RFP.State = Send.WF.CP when entering * 199 * SSU HALT22 RFP.State = WF.CP when entering from Long Timer Interrupt* 200 * SSU HALT23 Trap for possible bugs, ReturnA with return index of 0* 201 * SSU HALT24 Trap for possible bugs, ReturnB with return index of 0* 202 * * 203 * HLTn ahhhh This display comes on when the CPU sends a CPU HALT * 204 * command to the SSU. "n" is the slot number of * 205 * the CPU. "ahhhh" is the halt code in the least * 206 * significant 22 bits of data from the CPU. Note: * 207 * if the halt code is all ones, the SSU will not * 208 * change the Control Panel display. * 209 * See the following descriptions of these codes. * 210 * * 211 * STPn ahhhh This display comes on when the CPU sends a CPU STOP * 212 * command to the SSU. "n" is the slot number of * 213 * the CPU. "ahhhh" is the stop code in the least * 214 * significant 22 bits of data from the CPU. Note: * 215 * if the stop code is all ones, the SSU will not * 216 * change the Control Panel display. * 217 * See the following descriptions of these codes. * 218 * * 219 * BOOT n This display comes on when the boot switch is * 220 * pushed. "n" is the value of the switches 1-4. * 221 * * 222 * FP RUNNING This display comes on when the Front Panel (RDU or * 223 * RITA) has control of the system. * 224 * * 225 * @@@@@@@@ These displays (and other similar ones) occur * 226 * ???????? when the logic driving the control panel * 227 * @ has failed or is not being clocked. * 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 191 (HALTDEFS) F 13 Definitions for operating system halts 228 * * 229 ********************************************************************************** 230 231 ********************************************************************************** 232 * * 233 * Other text displays * 234 * ----- ---- -------- * 235 * * 236 * See PROMBOOT for a description of its text error * 237 * messages. * 238 * During normal system operation, the front panel is * 239 * driven by the FPFLASHER routine in TIMER. That routine will * 240 * display one of the normal displays (selected by the FP * 241 * switches) alternating with any error messages. See the * 242 * timer routine for a description of the normal displays. * 243 * See the operator code for a description of the error * 244 * displays. * 245 * * 246 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 192 (HALTDEFS) F 13 Definitions for operating system halts 248 249 ********************************************************************************** 250 * * 251 * Operating System Halts * 252 * --------- ------ ----- * 253 * * 254 * The operating system is absolutely riddled with halts. * 255 * This is so that errors show up at the earliest possible * 256 * moment and give us a chance to find the source of the * 257 * problem. * 258 * In case bugs escape to the field, or a system has an * 259 * intermittant hardware problem, each halt has a unique code * 260 * associated with it. * 261 * The instruction word is sent to the SSU on a halt or a * 262 * stop. The SSU displays the HALT information on the front * 263 * panel. The left 3 characters on the display are "HLT" or * 264 * "STP" as appropriate. The next character is the slot * 265 * number of the CPU that sent the HALT or STOP. The next * 266 * character is a blank and the remaining 5 characters are * 267 * filled with the rightmost 22 bits of the instruction. The * 268 * left 6 bits are displayed as a 6 bit ASCII character and * 269 * the remaining 16 bits as 4 hex digits. * 270 * There are only a few STOP instructions. They are used * 271 * in those cases where a remedial course of action is readily * 272 * apparent and the cause of the error is at least partially * 273 * anticipated. A good example is that of a table filling up * 274 * where the extra entries can be safely discarded. The * 275 * operator may press run and the system will do its best to * 276 * continue operation. Even these STOPs, however, really * 277 * should not appear and their cause should be investigated. * 278 * * 279 ********************************************************************************** 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 193 (HALTDEFS) F 13 Definitions for operating system halts 281 282 ********************************************************************************** 283 * * 284 * Diagnostic actions * 285 * ---------- ------- * 286 * * 287 * When a halt or stop occurs, the appropriate code * 288 * should be found in the listing. To find them, use the * 289 * front panel display to produce a symbol of the form * 290 * 'HALTS10D1' or 'STOPF10A7'. This symbol may then be found * 291 * in the CREF for the OS. The definition will be found here * 292 * in the HALTDEFS file, and there will be one use of the * 293 * symbol. That place where the symbol is used often contains * 294 * commentary about what is in the registers, etc. * 295 * Any of these halts represents some problem discovered * 296 * by the system, generally quite a serious one. The notes in * 297 * this file give only a cursory feeling of what is happening. * 298 * In many cases, a HALT was inserted into the operating * 299 * system because it was easy to do, but we don't really * 300 * expect to see one. The 'bogus return from LIMITCHECK' is a * 301 * good example of this. Checking in the listing will just * 302 * show the HALT surrounded by relatively normal code and * 303 * commentary. * 304 * However, there are a number of halts that were * 305 * designed into the system to detect a specific class of * 306 * error. A check in the listing will reveal a more complete * 307 * description of the problem, and what registers mean what, * 308 * etc. These halts often get associated with a particular * 309 * bug, especially when the bug is not fixed right away. This * 310 * has the particular danger of causing that halt to assume a * 311 * low importance even after the bug is fixed. A good example * 312 * of this is the HLT S0007 that became intimately associated * 313 * with COMM input buffer overflows. This bug is now fixed, * 314 * yet anyone encountering a S0007 halt still thinks of it as * 315 * a known but not yet fixed COMM bug. Any new S0007 halts * 316 * now indicate some entirely different problem, or (ecch) * 317 * evidence that the bug is not really fixed. * 318 * Generally, the register readings should be recorded by * 319 * issuing a STATUS command to the RDU. In those cases where * 320 * the commentary indicates that a particular register * 321 * (generally R4) points to the console area (CA) of the * 322 * offending process, a dump of that CA is necessary (although * 323 * it is included in the crash dump, it is extremely helpful * 324 * to have without redialling the site to look at the crash * 325 * dump). * 326 * * 327 ********************************************************************************** 328 329 * HALT letter codes and meaning 00001460 BYTE 330 LETTERSPOT EQU BITS 10:15 position in HALT of letter 00020000 ABS 331 BHALT EQU ("B" AND 03F)*LETTERSPOT for bootstrap and power fail problems 00030000 ABS 332 CHALT EQU ("C" AND 03F)*LETTERSPOT control mode and system process errors 00040000 ABS 333 DHALT EQU ("D" AND 03F)*LETTERSPOT disk structure problem 00060000 ABS 334 FHALT EQU ("F" AND 03F)*LETTERSPOT a table has filled up 00080000 ABS 335 HHALT EQU ("H" AND 03F)*LETTERSPOT hardware problems 00090000 ABS 336 IHALT EQU ("I" AND 03F)*LETTERSPOT interrupt code error 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 194 (HALTDEFS) F 13 Definitions for operating system halts 000D0000 ABS 337 MHALT EQU ("M" AND 03F)*LETTERSPOT memory failure 00100000 ABS 338 PHALT EQU ("P" AND 03F)*LETTERSPOT for peripheral equipment problems 00130000 ABS 339 SHALT EQU ("S" AND 03F)*LETTERSPOT for system errors 00170000 ABS 340 WHALT EQU ("W" AND 03F)*LETTERSPOT errors from an offline utility 001A0000 ABS 341 ZHALT EQU ("Z" AND 03F)*LETTERSPOT for shutdown (sleep) errors 342 343 ********************************************************************************** 344 * * 345 * Important Notice!!! * 346 * All errors flagged with a star ("*") are security * 347 * violations. Exercise due caution in dealing with these * 348 * halts to avoid: * 349 * 1) offending customers who have accidently encountered one * 350 * 2) defeating the purpose of protecting BTI & proprietary * 351 * account owners. * 352 * * 353 ********************************************************************************** 354 002A0000 ABS 355 SVHLT EQU ("*" AND 03F)*LETTERSPOT for security violations 356 003FFFFF ABS 357 NOHALTCODE EQU -1/BITS 10:31 do not display HALT/STOP code in lights 358 359 * individual halt codes 360 361 * Power fail restart 362 * BHALT+01000 memory battery exhausted. Stored by SMU microcode 00021001 ABS 363 HALTB1001 EQU BHALT+01001 power up without corresponding power down processing 364 * This is the normal halt if power is 365 * cycled following a sleep. 00021004 ABS 366 HALTB1004 EQU BHALT+01004 VRA module missing at power up time 367 * This happens if someone changes the configuration 368 * of the system while it is powered down, e.g. by 369 * removing a CPU. 370 371 * PROMBOOT routine 00021002 ABS 372 HALTB1002 EQU BHALT+01002 power up, offline stuff not restartable 373 * B1002 is the normal halt if power is 374 * cycled following completion of off-line work. 00021003 ABS 375 STOPB1003 EQU BHALT+01003 recoverable error reading boot block 00022000 ABS 376 STOPB2XXX EQU BHALT+02000 disk DSKxxx failed self-test 377 378 * TAPEBOOT routine 00023010 ABS 379 HALTB3010 EQU BHALT+03010 invalid front panel switches for boot 00023011 ABS 380 HALTB3011 EQU BHALT+03011 *** to be determined *** 381 382 * TAPERECOVER routine 00023100 ABS 383 HALTB3100 EQU BHALT+03100 ran out of disk space in unusual circumstance 00023101 ABS 384 HALTB3101 EQU BHALT+03101 ran out of disk space allocating first sec block 00023102 ABS 385 HALTB3102 EQU BHALT+03102 ran out of disk space allocating second sec block 00023103 ABS 386 HALTB3103 EQU BHALT+03103 disk error reading IDX 00023104 ABS 387 HALTB3104 EQU BHALT+03104 disk error reading IDX 00023106 ABS 388 HALTB3106 EQU BHALT+03106 disk error reading IDX 00023107 ABS 389 HALTB3107 EQU BHALT+03107 disk error reading IDX 00023108 ABS 390 HALTB3108 EQU BHALT+03108 disk error reading IDX 00023109 ABS 391 HALTB3109 EQU BHALT+03109 duplicate account found 0002310A ABS 392 HALTB310A EQU BHALT+0310A duplicate file found 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 195 (HALTDEFS) F 13 Definitions for operating system halts 0002310B ABS 393 HALTB310B EQU BHALT+0310B in DUMMYACCT without a file or file page logical rec 0002310C ABS 394 HALTB310C EQU BHALT+0310C UDIR block overflow 0002310D ABS 395 HALTB310D EQU BHALT+0310D Illegal hardware type 0002310E ABS 396 HALTB310E EQU BHALT+0310E record miscompare on read twice option 0002310F ABS 397 HALTB310F EQU BHALT+0310F not recoverable tape error on reread 00023110 ABS 398 HALTB3110 EQU BHALT+03110 disk error reading UDIR 00023111 ABS 399 HALTB3111 EQU BHALT+03111 account not present for latecomer 00023112 ABS 400 HALTB3112 EQU BHALT+03112 excessive tape errors 00023113 ABS 401 HALTB3113 EQU BHALT+03113 excessive tape errors 402 403 * DISKCOPY routine 00023200 ABS 404 HALTB3200 EQU BHALT+03200 internal table error 00023201 ABS 405 HALTB3201 EQU BHALT+03201 internal table error 406 407 * DISKBOOT routine 00024004 ABS 408 HALTB4004 EQU BHALT+04004 no SSU found 00024011 ABS 409 HALTB4011 EQU BHALT+04011 disk error: volume label 00024012 ABS 410 HALTB4012 EQU BHALT+04012 disk error: security block 00024013 ABS 411 HALTB4013 EQU BHALT+04013 disk error: IDX 00024014 ABS 412 HALTB4014 EQU BHALT+04014 disk error: directory 00024015 ABS 413 HALTB4015 EQU BHALT+04015 system account not found 00024016 ABS 414 HALTB4016 EQU BHALT+04016 system or crashdump code file not found 00024017 ABS 415 HALTB4017 EQU BHALT+04017 crash dump file is not a code file 00024018 ABS 416 HALTB4018 EQU BHALT+04018 disk error: system file's CCB or data 00024019 ABS 417 HALTB4019 EQU BHALT+04019 system file not a CODE file 00024021 ABS 418 HALTB4021 EQU BHALT+04021 crashdump file not readable 00024022 ABS 419 HALTB4022 EQU BHALT+04022 crashdump file not writable 00024023 ABS 420 HALTB4023 EQU BHALT+04023 segment error status reading check segment 00024024 ABS 421 HALTB4024 EQU BHALT+04024 segment error status while writing 00024025 ABS 422 STOPB4025 EQU BHALT+04025 seek error while doing rezero operation 00024100 ABS 423 HALTB4100 EQU BHALT+04100 offline call to non-existent routine 424 425 * SALON (offline disk driver) 00024031 ABS 426 STOPB4031 EQU BHALT+04031 timeout during seek operation 427 428 * OPL (Offline Program Loader) 00025000 ABS 429 HALTB5000 EQU BHALT+05000 no PPU with comm found by OPL 00025001 ABS 430 HALTB5001 EQU BHALT+05001 no port boards found in first comm. 00025002 ABS 431 HALTB5002 EQU BHALT+05002 no EOP from read operation 00025003 ABS 432 HALTB5003 EQU BHALT+05003 comm not responding to output 00025004 ABS 433 HALTB5004 EQU BHALT+05004 boot switches too high for OPL 00025005 ABS 434 HALTB5005 EQU BHALT+05005 boot switches were too low for OPL 00025006 ABS 435 HALTB5006 EQU BHALT+05006 impossible fall out of IRJ loop 00025007 ABS 436 HALTB5007 EQU BHALT+05007 impossible fall out of JDR loop 437 438 * Halt definitions for DiskToTape. 439 * Halts in the packing process 00173210 ABS 440 HALTW3210 EQU WHALT+03210 first element in PRPQ was not volume name 00173211 ABS 441 HALTW3211 EQU WHALT+03211 wrong type encountered in PRPQ element 00173212 ABS 442 HALTW3212 EQU WHALT+03212 one of the disk blocks required for 443 * building a volume record is missing 00173213 ABS 444 HALTW3213 EQU WHALT+03213 bad PRPQ entry, wrong FBI type 445 446 * Halts in the encryption process 00173220 ABS 447 HALTW3220 EQU WHALT+03220 bad encryption format code 00173221 ABS 448 HALTW3221 EQU WHALT+03221 bad encrypt buffer size 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 196 (HALTDEFS) F 13 Definitions for operating system halts 449 450 * Halts in the tape writing process 00173230 ABS 451 HALTW3230 EQU WHALT+03230 could not write on tape, die for now 00173231 ABS 452 HALTW3231 EQU WHALT+03231 first record on TWQ was not fileset 00173232 ABS 453 HALTW3232 EQU WHALT+03232 could not write file mark 00173233 ABS 454 HALTW3233 EQU WHALT+03233 could not write end of tape record 00173234 ABS 455 HALTW3234 EQU WHALT+03234 could not write end of file set record 456 457 * 458 * Halt definitions for PieInTheSky volume rebuilder 459 * 00173300 ABS 460 HALTW3300 EQU WHALT+03300 Insufficient physical memory 00173301 ABS 461 HALTW3301 EQU WHALT+03301 Volume too large for program 462 463 464 * INITIAL 00026000 ABS 465 STOPB600X EQU BHALT+06000 memory is cabled wrong in slot X - RUN to ignore 00026040 ABS 466 HALTB6040 EQU BHALT+06040 PPL FBI table has filled up 00026044 ABS 467 HALTB6044 EQU BHALT+06044 no free pages for the initial process 468 * must rebuild or diskcopy system volume 469 470 * page fault processor 471 *** This batch of halts always represents errors in 472 *** OTHER parts of the system. Rather than getting 473 *** the CPU registers, remember that R4 of the CPU 474 *** that halted contains the console area address 475 *** for the failing process. Dump out the console 476 *** area (use DL in RDU) or execute the LDCA R4 477 *** instruction provided then dump the registers. 00130000 ABS 478 HALTS0000 EQU SHALT+0000 page fault with no user process running 00130001 ABS 479 HALTS0001 EQU SHALT+0001 monitor memory protect violation 00130002 ABS 480 HALTS0002 EQU SHALT+0002 VPAGE element not found 00130004 ABS 481 HALTS0004 EQU SHALT+0004 write into monitor memory 00130005 ABS 482 HALTS0005 EQU SHALT+0005 stop for unknown monitor page 00130007 ABS 483 HALTS0007 EQU SHALT+0007 reference to an unmapped window 00130008 ABS 484 HALTS0008 EQU SHALT+0008 wrong or not mapped virtual free storage 485 486 * MAPOUTFBI subroutine 0013001A ABS 487 STOPS001A EQU SHALT+001A PPLWINDOW is already mapped, check 488 * MFBILAST to see where last call was made from 489 490 * FINDVP routine 00130010 ABS 491 HALTS0010 EQU SHALT+00010 VM list changed out from under us 492 493 * memory parity error processing 000D00C0 ABS 494 HALTM00C0 EQU MHALT+000C0 another PE occurred while processing PE 000800C1 ABS 495 HALTH00C1 EQU HHALT+000C1 meaningless interrupt code (R2) on PE int 00080D00 ABS 496 HALTH0DSC EQU HHALT+00D00 a bus device is dead (gave no response) 000800C3 ABS 497 HALTH00C3 EQU HHALT+000C3 bus device giving repeated spurious errors 00080C00 ABS 498 HALTH0CSC EQU HHALT+00C00 abnormal data from device other than memory 499 * this normally means that a controller has 500 * failed to answer to some type of fetch. 501 * look for a dead controller in slot S, channel C. 000D00C5 ABS 502 HALTM00C5 EQU MHALT+000C5 parity error in OS tables 000D00C6 ABS 503 HALTM00C6 EQU MHALT+000C6 uncorrectable PE in resident OS 000D00C7 ABS 504 HALTM00C7 EQU MHALT+000C7 PE in resident OS while checksums not valid 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 197 (HALTDEFS) F 13 Definitions for operating system halts 001300C8 ABS 505 HALTS00C8 EQU SHALT+000C8 PAL not found 506 507 * dispatcher 00080021 ABS 508 HALTH0021 EQU HHALT+0021 mass storage error on required page 00130022 ABS 509 HALTS0022 EQU SHALT+0022 no PPL corresponding to recombined free storage page 00130023 ABS 510 HALTS0023 EQU SHALT+0023 used all of monitor memory 511 512 * scheduler 00130040 ABS 513 HALTS0040 EQU SHALT+0040 PCB not found on SQRUNNING 514 515 * liquidate a process 00130030 ABS 516 HALTS0030 EQU SHALT+0030 no PCB found for this process 00130031 ABS 517 HALTS0031 EQU SHALT+0031 no PCB found for this process 00130032 ABS 518 HALTS0032 EQU SHALT+0032 improper vanish call 00130033 ABS 519 HALTS0033 EQU SHALT+0033 improper vanish call 00130035 ABS 520 HALTS0035 EQU SHALT+0035 PPL busy count went negative 00130037 ABS 521 HALTS0037 EQU SHALT+0037 PPAGE list went bad 522 523 * ULBTWIDDLE routines 001300E0 ABS 524 HALTS00E0 EQU SHALT+00E0 fetchdir on a non-ULB 001300E1 ABS 525 HALTS00E1 EQU SHALT+00E1 freedir on a non-ULB 001300E2 ABS 526 HALTS00E2 EQU SHALT+00E2 freedir on already free directory 527 528 * WINDOW routines 00130062 ABS 529 HALTS0062 EQU SHALT+0062 attempted DUALWRITE of unlocked page 00130063 ABS 530 HALTS0063 EQU SHALT+0063 block not found in PPAGE list 00130064 ABS 531 STOPS0064 EQU SHALT+0064 window #1 not grubbed before XREQ return 00130065 ABS 532 STOPS0065 EQU SHALT+0065 window #2 not grubbed before XREQ return 533 534 * PROCINOUT routines 001300D0 ABS 535 HALTS00D0 EQU SHALT+00D0 PCB not found on SQxxxxx 001300D1 ABS 536 HALTS00D1 EQU SHALT+00D1 destroying UPC. VASP list didn't empty 001300D2 ABS 537 HALTS00D2 EQU SHALT+00D2 UERRSETY. Wrong PSA mapped. 538 539 * BLDPROCESS 00130070 ABS 540 HALTS0070 EQU SHALT+0070 no legal process number found for new process 00130071 ABS 541 HALTS0071 EQU SHALT+0071 could not initialize user free memory 00130072 ABS 542 HALTS0072 EQU SHALT+0072 could not reserve emergency user free memory 543 544 * GETMEM, FREEMEM 00130080 ABS 545 HALTS0080 EQU SHALT+0080 no free storage available 00130081 ABS 546 HALTS0081 EQU SHALT+0081 illegal block freed (low order bits) 00130082 ABS 547 HALTS0082 EQU SHALT+0082 illegal block freed (high order bits) 00130083 ABS 548 HALTS0083 EQU SHALT+0083 request for block larger than a page 00130084 ABS 549 HALTS0084 EQU SHALT+0084 request to free block larger than a page 550 551 * VGETMEM, VFREEMEM 00130086 ABS 552 HALTS0086 EQU SHALT+0086 wrong mapping while getting user memory 00130087 ABS 553 HALTS0087 EQU SHALT+0087 wrong mapping while freeing user memory 00130088 ABS 554 HALTS0088 EQU SHALT+0088 request for a block larger than a page 00130089 ABS 555 HALTS0089 EQU SHALT+0089 tried to free a block larger than a page 0013008A ABS 556 HALTS008A EQU SHALT+008A lost page out of the PSA 0013008B ABS 557 HALTS008B EQU SHALT+008B user ran out of free storage 0013008C ABS 558 HALTS008C EQU SHALT+008C completely out of physical primary storage 0013008D ABS 559 HALTS008D EQU SHALT+008D couldn't supply user any virtual pages 0013008E ABS 560 HALTS008E EQU SHALT+008E no idle pages for user memory lists 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 198 (HALTDEFS) F 13 Definitions for operating system halts 0013008F ABS 561 HALTS008F EQU SHALT+008F PPL not in FSPPLIST where it should be 562 563 * STACKER 00130090 ABS 564 HALTS0090 EQU SHALT+0090 stack overflow found by DROPCA 00130091 ABS 565 HALTS0091 EQU SHALT+0091 stack overflow found by FREESTACK 566 567 * GETPUTADT 001300A0 ABS 568 HALTS00A0 EQU SHALT+00A0 bad voln table 001300A1 ABS 569 HALTS00A1 EQU SHALT+00A1 duplicate entry while moving entries to disk 570 * THIS IS SERIOUS!!! Run REBUILD on the volume! 001300A3 ABS 571 HALTS00A3 EQU SHALT+00A3 no free lists in use, contrary indication 001300A4 ABS 572 HALTS00A4 EQU SHALT+00A4 no ADT list busy - which list was I using? 000400A5 ABS 573 HALTD00A5 EQU DHALT+00A5 error in both security blocks 001300A6 ABS 574 HALTS00A6 EQU SHALT+00A6 attempt to create too many ADT lists 575 576 * I/O interrupt processor 00090800 ABS 577 HALTI0800 EQU IHALT+0800 SLOTTABLE was garbage or 578 * interrupt from unbelievable slot 00090801 ABS 579 HALTI0801 EQU IHALT+0801 channel table garbage or interrupt 580 * from unbelievable device 581 582 * interrupt sorter 00080050 ABS 583 HALTH0050 EQU HHALT+0050 bad instruction from monitor 00080051 ABS 584 HALTH0051 EQU HHALT+0051 instruction trap from monitor 585 586 * MS driver 00130101 ABS 587 HALTS0101 EQU SHALT+0101 write: FBIDA and PPBLOCK disagree 00130102 ABS 588 HALTS0102 EQU SHALT+0102 remount: matched VOLN HCB <> 0 00100103 ABS 589 HALTP0103 EQU PHALT+0103 error writing non-substitutable block 00130104 ABS 590 HALTS0104 EQU SHALT+0104 MDV element not found in MDV list 00130105 ABS 591 HALTS0105 EQU SHALT+0105 bad segment number in segment reconstructor 592 593 * clock driver routine 00080700 ABS 594 STOPH0700 EQU HHALT+0700 clock moved backwards 595 596 * CIA driver 00100200 ABS 597 STOPP0200 EQU PHALT+0200 CIA board magically appeared 598 599 * CIA utility 00130210 ABS 600 HALTS0210 EQU SHALT+0210 terminator not found in block that claims it 00130213 ABS 601 HALTS0213 EQU SHALT+0213 bad command code passed 00130214 ABS 602 HALTS0214 EQU SHALT+0214 empty PSPROCLIST in CHECKLOGD 603 604 * CPUPATCH process 001310A0 ABS 605 HALTS10A0 EQU SHALT+010A0 patch for this rev level disappeared 606 607 * FREEFILE process 001310B0 ABS 608 HALTS10B0 EQU SHALT+010B0 passed garbage for type to free 001310B1 ABS 609 HALTS10B1 EQU SHALT+010B1 quit when error log file really bad 001310B2 ABS 610 HALTS10B2 EQU SHALT+010B2 called to free a swapping block 611 612 * accounting process 001310C0 ABS 613 HALTS10C0 EQU SHALT+010C0 couldn't unequip work unit 614 615 * substitution process 001010D1 ABS 616 STOPP10D1 EQU PHALT+010D1 multiple disk errors. go tries to continue 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 199 (HALTDEFS) F 13 Definitions for operating system halts 001010D2 ABS 617 HALTP10D2 EQU PHALT+010D2 error on bad trax block 001010D3 ABS 618 HALTP10D3 EQU PHALT+010D3 error on substitution block 000610D4 ABS 619 STOPF10D4 EQU FHALT+010D4 bad trax block is full. go to continue 001310D5 ABS 620 HALTS10D5 EQU SHALT+010D5 PPL not found 001310D6 ABS 621 HALTS10D6 EQU SHALT+010D6 substitution list entry not found 000610D7 ABS 622 STOPF10D7 EQU FHALT+010D7 substitution block is full 001310D8 ABS 623 HALTS10D8 EQU SHALT+010D8 substitution list element not found 624 625 * ULB manager 001310E0 ABS 626 HALTS10E0 EQU SHALT+010E0 bad ULB pointer given to FREEULB 001310E1 ABS 627 HALTS10E1 EQU SHALT+010E1 bad ULB pointer given to USEULB 001310E2 ABS 628 HALTS10E2 EQU SHALT+010E2 bad ULB pointer given to FREEULBLK 629 630 * DIOSETUP 00131300 ABS 631 HALTS1300 EQU SHALT+01300 locked page not found in VASP list 632 633 * Utility subroutines for logical units 001311F0 ABS 634 HALTS11F0 EQU SHALT+011F0 bad use count when linking FCB 635 636 * INITDEVACS 00131128 ABS 637 HALTS1128 EQU SHALT+01128 GFC use count went negative 00131129 ABS 638 HALTS1129 EQU SHALT+01129 GFC disappeared 639 640 * NOPEN code 00131131 ABS 641 HALTS1131 EQU SHALT+01131 illegal access for the file privilege 00131132 ABS 642 HALTS1132 EQU SHALT+01132 LIMITCHECK gave bogus return 00131133 ABS 643 HALTS1133 EQU SHALT+01133 LIMITCHECK gave bogus return 00131134 ABS 644 HALTS1134 EQU SHALT+01134 LIMITCHECK gave bogus return 00131135 ABS 645 HALTS1135 EQU SHALT+01135 LIMITCHECK gave bogus return 646 647 * SAF write code 00131108 ABS 648 HALTS1108 EQU SHALT+01108 LIMITCHECK gave bogus return 649 650 * RAF write code 00131110 ABS 651 HALTS1110 EQU SHALT+01110 existing DIR entry disappeared 00131111 ABS 652 HALTS1111 EQU SHALT+01111 LIMITCHECK gave bogus return 00131112 ABS 653 HALTS1112 EQU SHALT+01112 LIMITCHECK gave bogus return 00131113 ABS 654 HALTS1113 EQU SHALT+01113 LIMITCHECK gave bogus return 00131114 ABS 655 HALTS1114 EQU SHALT+01114 LIMITCHECK gave bogus return 00131115 ABS 656 HALTS1115 EQU SHALT+01115 LIMITCHECK gave bogus return 00131116 ABS 657 HALTS1116 EQU SHALT+01116 LIMITCHECK gave bogus return 658 00131118 ABS 659 HALTS1118 EQU SHALT+01118 existing DIR entry disappeared 0013111A ABS 660 HALTS111A EQU SHALT+0111A LIMITCHECK gave bogus return 0013111B ABS 661 HALTS111B EQU SHALT+0111B LIMITCHECK gave bogus return 0013111C ABS 662 HALTS111C EQU SHALT+0111C existing DIR entry disappeared 663 664 * terminal read code 00131120 ABS 665 HALTS1120 EQU SHALT+01120 no terminator in character list 666 667 * FRQCNTL 00131140 ABS 668 HALTS1140 EQU SHALT+01140 saved file not found by SRCHDIRSN 00131141 ABS 669 HALTS1141 EQU SHALT+01141 LIMITCHECK gave a bogus return 00131142 ABS 670 HALTS1142 EQU SHALT+01142 saved file not found by SRCHDIRSN 671 672 * FRQRAFCNTL 1 Assembler C9208 VRM, System C9303 (18 Mar 93) 12-May-93 12:30 PAGE 200 (HALTDEFS) F 13 Definitions for operating system halts 00131148 ABS 673 HALTS1148 EQU SHALT+01148 LIMITCHECK gave a bogus return 00131149 ABS 674 HALTS1149 EQU SHALT+01149 saved file directory entry disappeared 675 676 * implicit lock code 00131150 ABS 677 HALTS1150 EQU SHALT+01150 a lock control element disappeared 00131151 ABS 678 HALTS1151 EQU SHALT+01151 empty lock user ID list 679 680 * change file access 00131160 ABS 681 HALTS1160 EQU SHALT+01160 saved file not found in DIR 00131161 ABS 682 HALTS1161 EQU SHALT+01161 bogus access type 00131162 ABS 683 HALTS1162 EQU SHALT+01162 bogus access type 00131163 ABS 684 HALTS1163 EQU SHALT+01163 saved file not found in DIR 00131164 ABS 685 HALTS1164 EQU SHALT+01164 bogus access type 00131165 ABS 686 HALTS1165 EQU SHA