A2osX/.Docs/Technical Spec.md

11 KiB

A2osX (0.93) Multi-Tasking OS for Apple II

Updated February 10, 2020

This is the functional specification for A2osX and its system modules, internal and external commands and shell language. Please refer to the other A2osX documentation such as the User Guide, Notes for Developers and Shell Programming Guide for more information on the use of these commands and modules.

SYS/KM* Supported Hardware At Kernel Level (ProDOS):

KM.Name Status Comment K.Ver
KM.APPLETALK Future AppleTalk Support for ProDOS
KM.NSC Working No-Slot-Clock/DS1216E 0.93
KM.RAMWORKS Working AE-Ramworks I,II,III 0.93
KM.VSDRIVE Working ADTPro Virtual Drive for SSC 0.93

SBIN,Daemons/Commands:

Name Status Comment K.Ver
GETTY Working -E : Exit on remote close 0.93
HTTPD Partial Web Page Server Daemon 0.94
INITD Future Run Level Manger 0.94
INSDRV Working Loads HW Drivers 0.93
KCONFIG Working Kernel Configuration Utility 0.93
LOGIN Working Authorization using /etc/passwd 0.93
NETWORKD Working TCP/IP Network Stack 0.93
TELNETD Working Telnet Server Daemon
TELNETD xxxx to listen on alternate port xxxx
0.93

DRV,Drivers:

Name Status Comment K.Ver
DHGR.DRV Future 560x192 Mono/16 colors Mixed-Mode support 0.94
LanCeGS.DRV Working Ethernet Network Interface 0.93
Mouse.DRV Future Apple Mouse Card/Mouse Port
PIC.DRV Future Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV
SSC.DRV Working Apple "Super Serial Card" Driver 0.93
SSC.I.DRV Working Apple "Super Serial Card" Driver (IRQ enabled) 0.93
Uthernet.DRV Working Ethernet Network Interface 0.93
Uthernet2.DRV Working Ethernet Network Interface 0.93
Uther2.AI.DRV In Progress Network Interface With ARP/IP Offloading 0.93

BIN,External Shell commands:

Name Status Comment K.Ver
ARP Working dump ARP cache, setup a static ARP entry 0.93
ASM In Progress S-C MASM based multi-CPU assembler 0.94
CAT Working -A : Show All non printable caracters
-N : Number all output lines
-S : Suppress repeated empty output lines
0.93
CHGRP Future -C : Continue On Error
-R : Recurse subdirectories
CHMOD Future -C : Continue On Error
-R : Recurse subdirectories
CHOWN Future -C : Continue On Error
-R : Recurse subdirectories
CHTYP Working -C : Continue On Error
-R : Recurse subdirectories
0.93
CMP Working CMP File1 File2 [SKIP1 [SKIP2]]
-A : Shows All differences
-V : Verbose Mode
0.93
CP Working -C : Continue On Error
-Q : Quiet
-R : Recurse subdirectories
-Y : Dont't Prompt For Override
0.93
CUT Working CUT <opt> "line" or CMD | CUT <opt>
-F nn : Output field nn
-M nn : Output starting at nn
-N nn : Output Ending at nn
-S ch : Change default SPACE separator to 'ch'
0.93
DNSINFO Working dump DNS cache, setup a static DNS entry 0.93
EDIT Working still missing : find/replace 0.93
FORMAT In Progress FORMAT <BLOCKDEV> [VOLUME.NAME]
-B Blocks : Force number of blocks to format
-L : Low-Level Format *not currently supported
-1..9 : Catalog Size (block count)
0.93
GREP Working GREP <opt> PATTERN FILE or CMD | GREP <opt> PATTERN
-I : Ignore Case
-N : Print line Number
0.93
HTTPGET Working HTTPGET <ip|host> [port]
-U Url
-F UrlFile
0.93
IPCONFIG Working -D : Try to get IP address from DHCP
-E : Read ETC files
-S : Set/Reset TCPIP configuration (-E, then -D if required)
0.93
KILL Working KILL <signal> PID
-0 : No Signal
-1 : SIGQUIT
-2 : SIGKILL
0.93
LS Working -A : Print . & ..
-C : Single column listing
-F : Single column, includes full path
-L : long listing with size/date...
-R : Recurse subdirectories
0.93
LSDEV Working List device Drivers 0.93
LSOF Working List Open Files 0.93
MD5 Working MD5 [ -D : String | file ] 0.93
MEM Working Displays Main, Aux & Kernel Memory 0.93
MEMDUMP Working Tool to track memory leak 0.93
MKDIR Working Make Directory 0.93
MORE Working MORE <File> or CMD|MORE <opt>
-N : Number all output lines
-P : Page mode, no scroll
-S : Process ESC codes
0.93
MV Working -C : Continue On Error
-Q : Quiet
-R : Recurse subdirectories
-Y : Dont't Prompt For Override
0.93
NETSTAT Working Display socket status 0.93
NSCUTIL Working NSCUTIL DD/MM/YY,hh:mm:ss
Tool for setting time in NSC/DL1216E
0.93
PAK Working PAK Archive [File/Dir, *,? wildcards allowed]
-A: Append to Archive
-R: Recurse subdirectories
0.93
PING Working PING <ip|host>
-1..9 : Ping Count
0.93
PS Working List Processes 0.93
RM Working RM [File/Dir, *,? wildcards allowed]
-C : Continue On Error
-Q : Quiet
-R : Recurse subdirectories
0.93
RPCDUMP In Progress Tool based on UDP socket API, renamed from RPCINFO
RPCDUMP <ip|host>
0.93
SH Working Shell Command Processor
(See Internal Shell commands)
0.93
TELNET Working TELNET <ip|host> [port] 0.93
TERM Working TERM <device> 0.93
UNPAK Working UNPAK archive 0.93
USERADD Working USERADD username
-c Comment : GECOS comment
-d HD : Home Directory
-p PW : Password
-s SH : Shell
0.93
USERDEL Working USERDEL username
-r : Force removes files in home directory
0.93
WC Working WC File(s) (*,? wildcards allowed)
-C: Continue on error
-R: Recurse Subdirectories
-M: Print CHAR counts
-L: Print LINE counts
-W: Print WORD counts
0.93
WHO Working List Users Online 0.93

Internal Shell commands:

Name Status Comment
<condition> Working [ -D direxists ]
[ -E fileordirexists ]
[ -F fileexists ]
[ -I isaninteger ]
[ -N $VAR variable is not empty ]
[ -X functionexists ]
[ -Z $VAR variable is empty ]
[ string1 = string2 ]
[ string1 != string2 ]
[ string1 .< string2 ]
[ string1 <= string2 ]
[ string1 .> string2 ]
[ string1 >= string2 ]
[ int32 -eq int32 ]
[ int32 -ne int32 ]
[ int32 -lt int32 ]
[ int32 -le int32 ]
[ int32 -gt int32 ]
[ int32 -ge int32 ]
<expression> Working <value> [<op> <value>] ...
<op> Working + : signed int32 add
- : signed int32 subtract
* : signed int32 multiply
/ : signed int32 divide
mod : signed int32 modulo
<value> Working $VAR | string | "string with SPACE" | 123 | -456
! Working ![ <condition> ] : Negate condition
( ) Working Parens used define list as FOR argument
{ } Working Braces used to define FUNCTION body
AND Working Add mandatory condition
BREAK Working Exit CASE of SWITCH
CALL Working CALL function <arg> ...
CASE Working CASE
CD Working CD path or relative path
DATE Working %a : Abbreviated weekday name : Thu
%A : Full weekday name : Thursday
%b : Abbreviated month name : Aug
%B : Full month name : August
%d : Day of the month, zero-padded (01-31)
%H : Hour in 24h format (00-23) 14
%I : Hour in 12h format (01-12) 02
%m : Month as a decimal number (01-12) 08
%M : Minute (00-59) 55
%p : AM or PM designation PM
%S : Second (00-61) 02
%w : Weekday as a decimal number with Sunday as 0 (0-6)
%y : Year, last two digits (00-99)
%Y : Year four digits 2001
DEFAULT Working Default CASE for SWITCH
ECHO Working \b,\e,\f,\n,\\ and \% supported
-N : Suppress \r\n
ELSE Working Optional branch for IF block
END Working End of SWITCH Statement
EXIT Working exit script or shell
FI Working Terminator for IF block
FUNCTION Working FUNCTION function_name {
<body>
}
IF Working [ <condition> ]
LOOP Working Terminator for WHILE block
MD Working MD path or relative path
Create a directory
NOHUP Working Start a process with PPID=PS0 (Daemon)
OR Working Add optional condition
PAUSE Working Wait until CR
POPD Working Restore previously saved working directory
PUSHD Working Save actual working directory
PUSHD <dir> do also a CD to <dir>
PWD Working Print Working Directory
RD Working Delete an empty directory
READ Working -N c : Limit input to c characters
-P : "prompt message"
-S : no echo (password)
REN Working Rename a file, directory or volume
SET Working -C : toggle Control-C break mode
-X : toggle debug mode
-F : remove all defined functions
SHIFT Working Remove $1 from cmd line
SLEEP Working Wait <count> 10th sec
SWITCH Working SWITCH
WHILE Working [ <condition> ]

Shell variables:

Name Status Comment
$0 Working Command Full Path
$1-$9 Working Arg[n]
$* Working All Args
$# Working Arg Count
$? Working Return Code
$@ Working Parent PID
Working PID
$! Working Child PID
$UID Working PS Owner UID
$PWD Working Working Directory

note : '$VAR' does NOT expand Variable

Shell I/O control/redirection:

Token Status Comment
. Working use same environment to run new script
& Working start process
| Working pipe
< Working StdIn redirection
> Working StdOut redirection
>> Working Append StdOut
1>> Working
1> Working
2>> Working StdErr redirection
2> Working

License

A2osX is licensed under the GNU General Public License.

This program is free software; you can redistribute it and/or modify 
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

The full A2osX license can be found Here.

Copyright 2015 - 2020, Remy Gibert and the A2osX contributors.