Command-line utility for performing Econet operations from a PC (Windows, Mac or Linux) using Piconet hardware.
The following are required to use ecoclient:
- A Piconet board
- Node v.14+
- NPM v.6+
npm install -g @jprayner/ecoclient
ecoclient set-fs 1 # required if your fileserver is not 254
ecoclient set-station 32 # an unassigned station number on you local Econet network
This project is still under development. Currently:
- Most fileserver testing has been against a Level 3 (BBC) fileserver although a Level 4 fileserver (Archimedes) and PiEconetBridge fileserver have also been used. User testing suggests that an Acorn Filestore also works (with floppy disks).
- Most host OS testing has been performed on a Mac, although Linux and Windows have also been tried successfully.
Sets the fileserver station number. Defaults to 254.
Argument | Description |
---|---|
station | Fileserver station number in range 1-254 |
Example:
ecoclient set-fs 1
Sets the local station number. Must be configured before using other commands (except setXXX
and monitor
).
Argument | Description |
---|---|
station | Local station number in range 1-254 |
Example:
ecoclient set-station 32
Sends a notification message to a station like a *NOTIFY
command.
Argument | Description |
---|---|
station | Station number to send a message to in range 1-254 |
message | The text of the message (may include a \r to execute a command) |
Listen for network traffic like a "*NETMON" command. However, better than *NETMON
, this command will dump every single byte of a packet.
Example:
ecoclient monitor
Login to fileserver like a *I AM
command. Directory handles (e.g. current directory) are persisted such that they take effect with other commands like dir
.
Argument | Description |
---|---|
username | Registered username, known to the fileserver |
password | Password which corresponds to username |
Example:
ecoclient i-am JPR93 MYPASS
Logout of the fileserver like a *BYE
command.
Example:
ecoclient bye
Change current directory on fileserver like a *DIR
command. Directory handles are persisted such that they take effect with subsequent commands like get
, put
, load
, save
or dir
.
Argument | Description |
---|---|
dir | New directory on fileserver. May be relative to current directory, prefixed with $. to change to a directory relative to the root etc. Omit to change to home directory. |
Examples:
ecoclient dir $.Library
ecoclient dir subdir
Download the specified file(s) to the current directory of the local host. Load and execution addresses are optionally persisted in the local filename or an .inf
file (see set-metadata
command).
The *
wildcard matches multiple characters whereas the ?
wildcard matches a single character. Use the recurse option to copy directories.
Option | Description |
---|---|
--recurse , -r |
Recurse into matching directories. |
--force , -f |
Force overwrite of pre-existing local files without prompting. |
Argument | Description |
---|---|
pathPattern | Name of remote file(s)/dir(s). May be relative to current directory, prefixed with $. if relative to the root directory etc. |
Examples:
ecoclient get MyFile
ecoclient get 'My*'
ecoclient get $.Games.MyFile
ecoclient get -r MyDir
ecoclient get -rf MyDir
Upload the specified file(s)/dir(s) from the host machine to the current directory on the server. Sets load/execution addresses if embedded in filename or found in a corresponding .inf
file (see set-metadata
command).
The *
wildcard matches multiple characters whereas the ?
wildcard matches a single character. Use the recurse option to copy directories.
The contents of DFS disk images may be uploaded by specifying a file with a .ssd
or .dsd
extension.
Option | Description |
---|---|
--recurse , -r |
Recurse into matching directories. |
--force , -f |
Force overwrite of pre-existing remote files without prompting. |
Argument | Description |
---|---|
pathPattern | Name of local file(s)/dir(s). May be relative to current directory, prefixed with $. if relative to the root directory etc. |
Examples:
ecoclient put MyFile
ecoclient put 'My*'
ecoclient put Games/MyFile
ecoclient put -r MyDir
ecoclient put -rf MyDir
ecoclient put games.ssd
Download the specified BASIC file from the server, use basictool
to de-tokenise it and write it to a file on the local filesystem naned as ${filename}.bas
.
Assumes basictool
is on the local machine's PATH.
Argument | Description |
---|---|
filename | Name of remote file. May be relative to current directory or prefixed with $. if relative to the root directory. |
Examples:
ecoclient load Menu
ecoclient get $.Games.Menu
Utilises basictool
to tokenize the specified plain-text BASIC file on the local filesystem and uploads the result to the server.
Assumes basictool
is on the local machine's PATH.
Argument | Description |
---|---|
localPath | Path to local file. |
[optional] destPath | Path to remote file. If ommitted, taken from filename in local .inf file |
Examples:
ecoclient save Menu
ecoclient save $.Games.Menu
Provides a file listing for the specified directory.
Argument | Description |
---|---|
[optional] dirPath | Directory path: may be relative to the current directory or prefixed with $. to list a directory relative to the fileserver root. If ommitted, lists the current directory. |
Examples:
ecoclient cat Subdir
ecoclient cat $.Games
Creates a directory.
Argument | Description |
---|---|
dirPath | Directory path: may be relative to the current directory or prefixed with $. to create a directory relative to the fileserver root. |
Examples:
ecoclient cdir Subdir
ecoclient cdir $.Subdir
Deletes the specified file(s) and dir(s).
The *
wildcard matches multiple characters whereas the ?
wildcard matches a single character. Use the recurse option to delete directories.
Option | Description |
---|---|
--recurse , -r |
Recurse into matching directories. |
--force , -f |
Force deletion of files without prompting. |
Argument | Description |
---|---|
pathPattern | Name of remote file(s)/dir(s). May be relative to current directory, prefixed with $. if relative to the root directory etc. |
Examples:
ecoclient delete MyFile
ecoclient delete --force MyFile
ecoclient delete -f MyFile
ecoclient delete $.Games.MyFile
ecoclient delete -f 'My*'
ecoclient delete --recurse 'MyDir'
ecoclient delete -rf 'MyDir'
Set access rights for a file on the fileserver.
Argument | Description |
---|---|
path | File or directory path: may be relative to the current directory or prefixed with $. to delete a directory relative to the fileserver root. |
accessString | An Econet access string e.g. WR/R |
Examples:
ecoclient access MyFile WR/
ecoclient access $.Games.MyFile WR/
Change password for current user.
Argument | Description |
---|---|
oldPassword | Current password (or leave blank if none set) |
newPassword | New password (or leave blank to remove) |
Examples:
ecoclient pass MYPASS1 MYPASS2 # Normal use
ecoclient pass '' MYPASS # Handy for newly-created accounts
ecoclient pass MYPASS '' # Remove password
Create a new user.
Argument | Description |
---|---|
username | Username to be registered with the fileserver |
Example:
ecoclient newuser ethel
Remove an existing user.
Argument | Description |
---|---|
username | Registered username, known to the fileserver |
Example:
ecoclient remuser gertrude
Set privilege level for specified user.
Argument | Description |
---|---|
username | Registered username, known to the fileserver |
level | S == System, N (or ommit) == Normal, others are system/level-dependent |
Examples:
priv susan S # let's be besties, have the keys to my front door
priv brian # screw this guy, bust him down to private
priv adrian N # screw this guy, bust him down to private