A2osX/README.md

6.7 KiB

A2osX

Multi-Tasking OS for Apple II

Requires :

Enhanced IIe (65c02 cpu) with 128k, //c, IIgs

Introduction...

A2osX is a cooperative, event-driven multitasking kernel (meaning it is applications that are responsible to give back control to kernel)
Its principal goal is to collect all "genius" 65c02 pieces of code ever written here and there, concentrated in the same environment.
(including IP Stack & HTTPD/TELNETD..., GUI & graphical tools...)
"Complete working place", no needing any more to reboot to switch between tons of diskettes!!!

A2osX is designed to work on any "stock" 128k Apple //e with no hardware modification. As VBL signal is NOT available as an IRQ on //e (it is on //c & IIgs)
it makes preemptive multitasking impossible.
(Well, GSosX, 16 bits equivalent for IIgs, another project which is "cooking" in my mind, could do it!)
Kernel, loading in Aux LC on top of ProDOS provide API inspired from Linux/Unix World to allow writing applications & command line tools on top of it.
This kernel provides an advanced "Memory Manager" able to relocate 65c02 code.
"Event Manager" makes TCPIP stack able to listen on several ports, manage ARP,DNS...cache expiration and any background processes.
"Task Manager" is responsible to "distribute" CPU time to several loaded processes.
"Device Manager" handles event collected from builtin devices as well as devices added by loadable drivers.

If you're 65c02 or Z80 code writer, how to contribute ?

Several subprojects are now indentified :

  • Hardware Support : adding drivers to support more & more hardware (RAM cards, storage....)
  • Z80 support : Kernel could pass control to any Z80 detected on the system.
  • TCPIP stack : TCP still missing!
  • AppleTalk Support
  • GUI & Printing
  • Archive, Disk Image transfer tools (ADT client!)...
  • Question : Pascal or C Compiler?
  • ...sure there is some more!

Screenshots


General Information:

Kernel 0.8 is out.
It is confined in Aux LC Bank 1 & 2 to leave enough room at $EOOO for Drivers. Network drivers, Mouse, DHGR.DRV can load and fit in Aux LC.
Now it's time to make all external BINs use new API, then GUI development will resume.

A2OSX.BOOT.po : 140k BOOT disk image with all binaries
A2OSX.DEV.po : 140k disk image with ASM binaries, Debug Tools & INClude files
A2OSX.SRC.po : 800k S-C MASM boot disk image with all sources

OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
(OApple+shift+1,OApple+shift+2,OApple+shift+3 on FR keyboard)

**** Documentation WANTED ****

Is there anybody who could provide "appletalk programmer's guide for the apple II" ?
(Needed for KM.ATLK and AT commands development)

**** Developers WANTED ****

!!! Help on writing this code should be greatly appreciated !!!

...
In Progress : Document API...
In Progress : moving TCPIP to socket API
...

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

KM.Name Status Comment
KM.NSC Working No-Slot-Clock
KM.RAMWORKS Working AE-Ramworks I,II,III

SBIN,Daemons/Commands:

Name Status Comment K.Ver
INSDRV Working 0.8
GETTY Working 0.8
LOGIN In Progress no auth using /etc/passd yet 0.8
TCPIP In Progress New Socket API. ARP,IP,ICMP,UDP ok, TCP in progress 0.8
DHCPCLNT Working rewritten to use new Socket API 0.8
SHELL Working (See Internal Shell commands) 0.8

Internal Shell commands:

Name Status Comment
CD/PWD Working Improved syntax : now, 'CD ../BIN' works
DATE Working
ECHO Working \b,\e,\f,\n,\ and % supported
EXIT Working
IF
PAUSE Working
READ
TIME Working
SET Working
STARTPROC Working Used in A2osX.startup

Shell variables:

Name Status Comment
$PWD Working 'Working Directory'
$* Working All Args
$1-$9 Working Arg[n]
$# Working Arg Count
$? Working Return Code
$@ Working Parent PID
Working PID
$! Working Child PID

note : '$VAR' does NOT expand Variable

DRV,Drivers:

Name Status Comment K.Ver
Console.DRV Working ANSI support in Progress. 0.8
PIC.DRV In Progress Apple "Parallel Interface Card" Driver, renamed from PPIC.DRV 0.8
SSC.DRV In Progress 0.8
SSC.I.DRV In Progress 0.8
Mouse.DRV Working 0.8
Uthernet.DRV Working 0.8
Uthernet2.DRV Working 0.8
Uther2.AI.DRV In Progress With ARP/IP Offloading 0.8
LanCeGS.DRV Working 0.8
DHGR.DRV In Progress except bitblt... 0.8

BIN,External Shell commands:

Name Status Comment K.Ver
MEM Working Old dump behavior is now MEMDUMP. New MEM command displays MEMSTAT (Main, Aux & Kernel Memory) 0.8
LSDEV Working 0.8
PS Working 0.8
MD Working 0.8
LS Working -A : Do Not Print . & .. 0.8
-L : long listing with size/date...
-R : Recurse subdirectories
RM Working -C : Continue On Error 0.8
-R : Recurse subdirectories
CP In Progress -C : Continue On Error 0.8
-R : Recurse subdirectories
-Y : Dont't Prompt For Override
MV In Progress -C : Continue On Error 0.8
-R : Recurse subdirectories
-Y : Dont't Prompt For Override
CAT Working -A : Show All non printable caracters 0.8
-N : Number all output lines
-S : Suppress repeated empty output lines
ARP Working dump ARP cache, setup a static ARP entry 0.8
PING Working 0.8
DNSINFO Working dump DNS cache, setup a static DNS entry
IPCONFIG Working renamed from NETINFO 0.8
NETSTAT Working 0.8
EDIT Working still missing : find/replace 0.8
NSCUTIL Working Tool for setting time in NSC/DL1216E 0.8

BIN,External DEV Shell commands:

Name Status Comment K.Ver
ASM In Progress S-C MASM based multi CPU assembler
DEVDUMP 0.8
MEMDUMP Working 0.8
RPCDUMP Working tool based on UDP socket API, renamed from RPCINFO 0.8

Misc

S-C MASM color scheme for Notepad++

...drop _Tools/userDefineLang.xml in %APPDATA%\Notepad++
;-)