Welcome to KaServer

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.

Startup banner

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?
Initializing KaServer...

Interactive commands

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

Level 4

Shows the KaServer, Manager and Server application and a group of scripts and utilities for managing the fileserver.

First way. (Configure the station, press F12:)


(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
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:

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 in a nutshell

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 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.

Under the hood

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:

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:

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 ReadCatInfo7 UID
33 UsersExtended
34 ReadInfoExtended
35 Copy
36 ManagerOp

User list

Level 3/awServer Level 4/Server

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.org

Last updated: Friday 1st February 2008