KaServer ran a slightly customized version of Alan Williams' awServer 0.80 for most of its life. A true level 4 fileserver was also used on occasion. The media was either a floppy disc, or a RAM disc initialized from floppies. I used to hang a bunch of software off a Waiter or Edmenu menu.
Beeb users: *I AM 253 BOOT
(I think I eventually stopped
supporting the beeb users, because I couldn't always rely on getting
station 253, and Edmenu menus were a pain to edit.)
Arc users: Open the FS List from the Net Filer icon bar icon (press Menu)
and logon to KaServer as BOOT
(no password.)
BOOT
had privilege L
, which meant that someone couldn't hold down Ctrl
or Escape from !Boot
or !ArmBoot
and then sabotage BOOT
by setting a
password. KaServer, just like LATROBE
, didn't use SYST
as the privilege S
user: I used ARCHER
instead.
You could start up KaServer with one or two discs. Below is the ADFS one
disc version. The RAM disc version typically used a RAM disc as the second
disc: RAM:$
was typed at the KaServe2?
prompt.
Device KaServer: KaServer.$ Device KaServer has path... Server$Dev0:KaServer : adfs::KaServer.$ Password file is at... Server$Dev0_PWF : adfs::KaServer.$.Passwords Change PWF? KaServe2? Initializing KaServer...
These commands could be typed on the terminal to monitor KaServer. W was typically disabled as an unnecessary security risk!
C clear screen D dump device table H dump file handles U dump logged on users W dump password file P hardcopy on O hardcopy off * OS command SPC monitor on/off
First way. (Configure the station, press F12:)
*Con. FS ADFS
(Reboot station with Reset button at rear of A3000, with Management
disc in place in drive 0.)
When I started using level 4, I had an Obey file copy everything across to RAM for (user) speed:
Mount Management RMEnsure MemAlloc 0.11 RMLoad adfs::Management.$.!System.Modules.MemAlloc FontSize 0K SpriteSize 0K RAMFSSize 800K RAM:NameDisc 0 KaServer Copy adfs::KaServer.$.* RAM::KaServer.$.* ARF~CV Delete RAM::KaServer.$.Server.Exports Rename RAM::KaServer.$.Server.ExpRAM RAM::KaServer.$.Server.Exports ADFS Run adfs::Management.$.GetStation Run adfs::Management.$.SetStation 253 Set Server$Dir RAM::KaServer.$.Server Set Server$Pass RAM::KaServer.$.Server.Users Set Server$Log RAM::KaServer.$.Server.LogFile Desktop -File $.!DeskBoot
To restore the station number, Quit the server app, F12 and:
*SetStation <StationID> *Con. FS Net
Second way. For (startup) speed, I also had an alternative script.
Open viewer on Management
disc, double click NonMultiL4
, which
read:
ADFS Run <Obey$Dir>.GetStation Echo <22><0>KaServer Level 4 Econet File Server on Station <StationID> Echo Booted at <Sys$Time> on <Sys$Date> <Sys$Year> WimpSlot -min 160K -max 160K Run <Obey$Dir>.!Server.!RunImage NOWIMP
Both ways, I get a Please insert disc 'KaServer'
message and
have to swap floppies. The first way also needs me to swap back to
Management
.
Econet is a clocked network which utilizes two circuits. When the clock signal transitions, it indicates that the other (data) line should be read either "high" or "low" indicating a bit value of 0 (idle) or 1 (fill) respectively. Normally the network idles: while the clock ticks away, the data circuit remains in the "high" state, indicating no-one is sending packets. Theoretically, someone could be trying to transmit a string of 1s, but this is not allowed by the hardware. Strings of six or more 1s must be punctuated by a 0 in every sixth place, and frames are not allowed to start or end with a 1.
When a station wants to transmit, it sends flag fill, which is a special value which contains a string of six 1s, and which never leaves a 1 at the start or end of the frame. (If I tell you that it's a byte, can you work out its value? I knew you could.) After the fill, it can send its scout or broadcast frame, followed by a CRC and more flag fill. The scout contains:
There are a few possibilities here.
If the software detects another station attempting to send data at the same time, a collision is flagged, and stations are programmed to wait for a number of clock ticks based on the formula t = (255 - <station number>) × t0. Which makes 254 the station number to have if you want to have your scouts heard! If the collision flag gets raised too often, a station will report "Line jammed," pack up its bags, and go home. While hardware collisions are also possible, these are rare in practice, and the retry behaviour of all Econet software can cover this up—the back-off formula is key to success.
(In Econet, the fileserver normally gets station number 254, which means that when it is busy answering requests, no-one else can make more requests, which is a happy side effect of the convention. KaServer was never the Don College's primary fileserver, so its station number was that of whatever A3000 in S4D or S4E I could find. Sometimes I reset it to something like 253 if I was feeling el friskey.)
If this wasn't a broadcast or an immediate op such as MachinePeek, Halt or Cont, then you'll be wanting to send some data now. You do so in a data frame.
If that's all good, you'll get a data ack, which is just like a scout ack.
In the case of a fileserver op, often you'll get contacted with additional data or requests for data: part of the initial request will have provided information about which port data is expected to come back on. Sometimes you'll be expected to send additional data after your control message: the fileserver has a special port for this, as we shall see in a second.
Econet fileservers listen on port 153 (&99), and awServer is no different. Port 154 (&9A) is also used to receive data from the client. The first byte of the command data frame is the command code. Supported command codes in awServer 0.80:
FSOp | Name | SubOp | Name |
---|---|---|---|
0 | CLI | 0 | Access |
1 | *Bye | ||
2 | *CDir | ||
3 | *Delete | ||
4 | Dir (E) | ||
8 | Info | ||
9 | Logon (J) | ||
10 | Lib (K) | ||
12 | SDisc (M) | ||
13 | NewUser | ||
14 | Pass (O) | ||
15 | Priv | ||
16 | RemUser (Q) | ||
17 | Rename | ||
19 | *SetFree (T) | ||
1 | Save | ||
2 | Load | ||
3 | Entries | 0 | SINStamp |
1 | *Ex | ||
2 | Name | ||
3 | Attributes | ||
5 | Load2 | ||
6 | Open | 0 | OpenWrite |
1 | OpenWriteRead | ||
2 | Reserved | ||
3 | OpenRead | ||
7 | Close | ||
8 | Read | ||
9 | Write | ||
10 | ReadBytes | ||
11 | WriteBytes | ||
12 | GetArgs | 0 | GetPtr |
1 | GetExt | ||
2 | GetAlloc | ||
13 | SetArgs | 0 | SetPtr |
1 | SetExt | ||
14 | Discs | ||
15 | Users | ||
16 | Time | ||
17 | GetEOF | ||
18 | ReadCatInfo | 0 | Reserved |
1 | Date | ||
2 | LoadExecAddr | ||
3 | Size | ||
4 | Attributes | ||
5 | *FileInfo | ||
6 | DirAccess | ||
19 | WriteCatInfo | 0 | Reserved |
1 | LoadExecAddr | ||
2 | LoadAddr | ||
3 | ExecAddr | ||
4 | Attributes | ||
20 | Delete | ||
21 | GetEnv | ||
22 | Opt | ||
23 | Bye | ||
24 | ReadInfo | ||
25 | Version | ||
26 | DiscFree | ||
27 | CDir | ||
28 | SetTime | ||
29 | Create | ||
30 | GetFree | ||
31 | SetFree | ||
32 | WhoAmI |
Unsupported commands:
FSOp | Name | SubOp | Name |
---|---|---|---|
0 | CLI | 5-7 | NoOp (F-H) |
0 | CLI | 11 | *Load |
0 | CLI | 18 | *Save |
0 | CLI | 20-25 | NoOp (U-Z) |
4 | Context | ||
18 | ReadCatInfo | 7 | UID |
33 | UsersExtended | ||
34 | ReadInfoExtended | ||
35 | Copy | ||
36 | ManagerOp |
Level 3/awServer | Level 4/Server |
---|---|
FIRSTCLASS.BEN | Users.Ben |
FIRSTCLASS.KADE | Users.Kade |
FIRSTCLASS.STEVEN | Users.Scott |
KASOFT.ARCHER | Users.Steven |
ARCHER | Archer |
BOOT | Bill |
COMPACT | Boot |
The material on this web site is subject to copyright.
Kasoft is a registered Australian trademark (in the category of software) of Kasoft Software, owned by Kade Hansson.
Author and editor: Kade "Archer" Hansson; e-mail: archer@kaserver5.orgLast updated: Friday 1st February 2008