# A2osX (0.93) Multi-Tasking OS for Apple II
### Updated October 20, 2019
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 | Future | Web Page Server Daemon | |
| INITD | In Progress | Run Level Manger | 0.93 |
| 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 | In Progress | 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 |
| CUT | Working | CUT \ "line" or CMD \| CUT \
-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 |
| 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 |
| CP | Working | -C : Continue On Error
-Q : Quiet
-R : Recurse subdirectories
-Y : Dont't Prompt For Override | 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 \ [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 \ PATTERN FILE or CMD \| GREP \ PATTERN
-I : Ignore Case
-N : Print line Number | 0.93 |
| HTTPGET | In Progress | HTTPGET [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 \ 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 | Dump 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 \ or CMD\|MORE \
-N : Number all output lines
-P : Page mode, no scroll
-S : Process ESC codes | 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 |
| MV | Working | -C : Continue On Error
-Q : Quiet
-R : Recurse subdirectories
-Y : Dont't Prompt For Override | 0.93 |
| PING | Working | PING
-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 |
| SH | Working | Shell Command Processor
(See Internal Shell commands) | 0.93 |
| TELNET | Working | TELNET [port] | 0.93 |
| RPCDUMP | In Progress | Tool based on UDP socket API, renamed from RPCINFO
RPCDUMP | 0.93 |
## Internal Shell commands:
| Name | Status | Comment |
| ---- | ------ | ------- |
| \ | Working | $VAR \| string \| "string with SPACE" \| 123 \| -456 |
| \ | Working | \ [\ \] ... |
| \ | Working | \+ : signed int32 add
\- : signed int32 subtract
\* : signed int32 multiply
/ : signed int32 divide
mod : signed int32 modulo |
| \ | Working |[ -D direxists ]
[ -E fileordirexists ]
[ -F fileexists ]
[ -N $VAR variable is not empty ]
[ -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 ] |
| BREAK | Working | Exit CASE of SWITCH |
| CASE | Working | CASE |
| CD | Working | CD path or relative path |
| DATE | Working | |
| 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 {
\
} |
| IF | Working | [ \ ] |
| 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) |
| PAUSE | Working | Wait until CR |
| POPD | Working | Restore previously saved working directory |
| PUSHD | Working | Save actual working directory
PUSHD \ do also a CD to \ |
| 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 \ 10th sec |
| SWITCH | Working | SWITCH |
| TIME | Working | |
| WHILE | Working | [ \ ] |
## 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 Pulic 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](../LICENSE)**.
## Copyright
Copyright 2015 - 2019, Remy Gibert and the A2osX contributors.