! Filestore configuration constants ! This file contains the main system configuration definitions. ! In general, the first few can be changed once the system ! is operationsl, provided (almost) everything is recompiled. ! The stuff relating to the disc layout MUST NOT BE CHANGED ! once the system is operational, for obvious reasons. %constinteger facility code = 2 { Magic number : connect code } %constinteger default allocation = 32 { Blocks : file allocation } %constinteger default quota = 2048 { Blocks : when user created } !constinteger ether retry limit = 1 { Retries : } %constinteger stack gap = 20480 { Bytes : for each process } %constinteger stamp interval = 10 { Minutes : console reports } %constinteger ether TX procs = 4 %constinteger procs = 8 { filestore server processes } %constinteger internal limit = procs - 3 { limit on internal copy operations } %constinteger buffs = 64 { system buffers } %constinteger dirs = 48 { size of directory cache } %constinteger unos = 32 { size of Uno table } %constinteger xnos = 48 { size of Xno table } %constinteger tbuffs = 511 { trace buffers ** must be 2^^? - 1 **} %constinteger ports = 31 { ether ports in station } %constinteger ether buffers = 63 { received packets ** must be 2^^? - 1 **} %constinteger specials = 8 { "special file" buffers } %constinteger clock factor = 1250 { 1000 for 8MHz, 1250 for 10MHz } %constinteger infinity = 16_7FFFFFFF { largest valid +ve integer } %constinteger h = 16_0000FFFF { %short -> unsigned 16 bits } %constinteger ether packet size = 536 ! Disc layout (in blocks) ! The following MUST NOT BE ALTERED once there ! are real users of the system. %constinteger disc size = 1024 * 16 * 32 { blocks on the disc } %constinteger u per p = 128 { users per disc partition } %constinteger head size = 4096 { size of reserved disc areas } %constinteger dir size = 4 { blocks in a directory } %constinteger dp size = dir size * u per p { directory partition size } %constinteger fp size = (disc size - 2 * head size) // 8 - dp size { user partition size } ! Disc layout defined by the following. The reserved areas are at the ! extreme inside and outside of the disc. The directories are in the ! middle of the disc, with the user partitions on either side. NB all ! the information, particularly those constants defining the number of ! partitions on the disc (mostly below, but note there is one in the ! definition immediately above this comment) must be consistent. %constinteger sy1 start = 0 %constinteger p6 start = sy1 start + head size %constinteger p4 start = p6 start + fp size %constinteger p2 start = p4 start + fp size %constinteger p0 start = p2 start + fp size %constinteger p6d start = p0 start + fp size %constinteger p4d start = p6d start + dp size %constinteger p2d start = p4d start + dp size %constinteger p0d start = p2d start + dp size %constinteger p1d start = p0d start + dp size %constinteger p3d start = p1d start + dp size %constinteger p5d start = p3d start + dp size %constinteger p7d start = p5d start + dp size %constinteger p1 start = p7d start + dp size %constinteger p3 start = p1 start + fp size %constinteger p5 start = p3 start + fp size %constinteger p7 start = p5 start + fp size %constinteger sy2 start = p7 start + fp size %constintegerarray p start(0 : 7) = p0 start, p1 start, p2 start, p3 start, p4 start, p5 start, p6 start, p7 start %constintegerarray pd start(0 : 7) = p0d start, p1d start, p2d start, p3d start, p4d start, p5d start, p6d start, p7d start %constinteger last partition = 7 {*** NB: must agree with above ***} ! Locations of (duplicated) bad block lists in the second system ! reserved area (sy2). %constintegerarray bad area(1 : 4) = 0, 4, head size - 8, head size - 4 %constintegerarray pass area(1 : 2) = 8, head size - 12 ! Bitmap size, defined in terms of the size of the user partitions. %constinteger bitmap size = fp size // 8 ! Extra configuration stuff for QSART module absence/presence {$IF TOWER %externalroutinespec send qsart buffer(%integer buffer) %externalroutinespec set qsart baud rate %externalroutinespec show qsart status %externalroutinespec start qsart %externalroutinespec qsart tick(%integer when) %constinteger qsart present = 1 {$ELSE {%routine send qsart buffer(%integer buffer); %end {%routine show qsart status; %end {%routine set qsart baud rate; %end {%routine start qsart; %end {%routine qsart tick(%integer when); %end {%constinteger qsart present = 0 {$FINISH ! Despooler stuff %constinteger despooler wait interval = 30 000 { milliseconds } %constinteger despool transparent = 1 %constinteger despool report = 2 %constinteger despool escape = 4 %constinteger despool tabexpand = 8 {$IF DESPOOLERS {%constinteger despoolers = 1 {%conststring(7)%array despool directories(1 : despoolers) = "LP" {%conststring(7)%array despool passes (1 : despoolers) = "" {%constintegerarray despool qsarts (1 : despoolers) = 256 {! NB include qsart offset above... {%constintegerarray despool flags (1 : despoolers) = { despool report ! despool escape ! despool tabexpand {%externalroutinespec despooler main entry {$ELSE %routine despooler main entry; %end %constinteger despoolers = 0 {FINISH %end %of %file