Updated XLS list. Also updated draft of Notes for Developers.md so you can see preview.

This commit is contained in:
Patrick Kloepfer 2019-03-08 15:45:56 -05:00
parent ca86b1e9ba
commit f3656bfe9b
4 changed files with 109 additions and 5 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,3 +1,15 @@
A2osX is already much more then a "primitive" command line operating system. While A2osX runs on top of ProDos, leveraging its support for block devices such as floppy drives, hard drives, SmartPort drives, etc., it adds a preemptive multitasking kernel with a greatly enhanced shell that supports arguments, redirection, piping, and probably the biggest enhancement, a full scripting language. In addition, at its core, the OS supports multiple virtual terminals (i.e. OA-1 OA-2 gets you different sessions) as well as concurrent external terminals via SSC (getty on SSC serial) or network (TELNETD). A GUI interface is being built and will be part of a future release.
A core element at the foundation of A2osX that enabling its multiuser multitasking capabilities is that it is build on a reusable set of APIs and LIBs (written in Assembly) that all programs can and do use which make them very lean and fast. For instance, there is one network API that any program can call which in turn handles the I/O to different LAN cards via drivers. Key here is that multiple programs can be using the network at the same time such as the TELNETD server and the TELNET client. A key benefit is that the code for doing each program is smaller because the network API is doing a lot of the work. And with CORE APIs like printf and LIBs such as Network only loaded once, much like a DLL in Windows, significant memory is conserved providing the resources needed to support multitasking and multiple users.
Its because of the Uthernet2 that I got hooked on A2osX and joined on to supported the project. Not only does it have a telnet client, it has other net centric tools and more being added. I will be honest, there is more that needs to be done, but it progressing rapidly and seems like a great foundation for building net apps on an Apple 2.
Next post
I agree with edward, that the constraint tends to be memory and not processor (we can wait that extra second). But 64K is a tight squeeze. A2osX does make use of 128k (requires it) of ram instead of just 64K and it still is pretty lean in that after ProDOS then A2osX loaded, you have 26K of main mem free. The fact that Core APIs and Libs are shared helps a lot. Having said that, don't expect that you are going to write an AppleWorks size App running under A2osX, that would probably be a strectch, though it does come with a VI or EDIT type editor
ASM is needed because at end of day its the most strict mem mgmt (the language that allows you to be stringy on mem use) so of course the core of A2osX is in ASM. however after we make out own ASM that makes the OS self making (we talked about this) we plan a CSH which is first step to Interactive C and then a BIn that will make C feed to ASM (the point of 23) so we will get there, but hey stupid, the CORE has to be ASM to be tight with mem
# Notes for Developers
There has been a significant uptick in interest in A2osX and its development. That's great! Along with that has come a lot of questions and requests for documentation. This document hopes to answer many, or at least some, of those questions. While this document attempts to describe the current process, we are certainly open to easier or better development work flows that will speed the creation of what we believe will be a great Operating Environment for Apple IIs. Feel free to post your comments or open issues on GitHub with any feedback you have on A2osX.
@ -6,8 +18,7 @@ There has been a significant uptick in interest in A2osX and its development. T
>This section mentions the names of Software products some of use in the A2osX development process. Other than the Assembler, which is core, the other products could be replaced by similar software of the users choosing. Below, more information is providing on these products and as alternatives become know to us, we will update this document to make you aware of them.
In the purest sense, the development of A2osX is at its core an Apple II centric process. All the programs that make up A2osX are Assembled on an Apple II computer using a ProDOS-based assembler made by S-C Software Corporation.
The reality of the development workflow is a little more nuanced. So lets talk about the actual process, starting with the place that brought you here, GitHub(GH). GH is our repository for code and files used to create A2osX. You can browse all of these files on GH, presumably you are reading this file from the root directory of the A2osX repository.
In the purest sense, the development of A2osX is at its core an Apple II centric process. All the programs that make up A2osX are Assembled on an Apple II computer using a ProDOS-based assembler made by S-C Software Corporation. The reality of the development workflow is a little more nuanced. So lets talk about the actual process, starting with the place that brought you here, GitHub(GH). GH is our repository for code and files used to create A2osX. You can browse all of these files on GH, presumably you are reading this file from the root directory of the A2osX repository.
Currently, all of the active developers of A2osX use a SVN (Subversion) client to create, maintain and update files in the repository. Many of us use TortoiseSVN, but other clients are available, including some GitHub specific desktop apps. Using SVN, we can download updates from other developers and submit updates we have made. TortoiseSVN happens to integrate well with Windows Explorer.
@ -21,6 +32,59 @@ What we do in our current work flow, we edit the file with Notepad++, save local
## Planned Development Process
ASM program hosted in A2osX.
Second part of plan is a AppleTalk over Ethernet Libray (LIBETALK) for A2osX that will allow the system to mount a remote file system on your Apple or Apple Emulator. The plan is to have this file system be the same folder synced via SVN with GitHub containing the A2osX source code. This would allow you to edit source code on either the Apple using A2osX EDIT or from your PC/MAC using a native text editor on those systems. Not only will you be able to ASM any A2osX drivers, libraries or programs this way, we will create MAKE scripts that run on A2osZ that can create new builds automatically.
## Developing for A2osX
### The A2osX Shell (SH)
One of the most significant parts of A2osX is its shell which can perform both interactive and scripted tasks. With the interactive part of the shell you can perform many common and complex tasks using both built-in (native or internal to shell) and external (BINs or executables) commands. Internal commands include CD (change directory), MD (make directory), DATE, TIME, etc. External commands include CP (copy), RM (remove), CAT (display file contents), TELNET, etc.
It should be noted, that it is possible to create and execute short scripts right on the interactive command line (these are run once and not saved like true scripts). An example
The 32-bit int data type can hold integer values in the range of 2,147,483,648 to 2,147,483,647. If you add to or subtract from INTs that would cause a RANGE error, you actually get a result that wraps around the range, so if you add 1 to 2,147,483,647 you will get 2,147,483,648.
Strings can be up to 255 characters in length. Note, like INTs, if you try to store more then 255 chars in a string, you get the same wraparound affect where the first 255 chars are tossed out the string is set to the remaining chars, so if you concatenate 3 strings of 100 chars the resulting string will be the last 45 chars of the 3rd original string.
### File System Layout of A2osX
| Path | Use |
| ---- | --- |
| / | is the root directory|
|/bin/ and /usr/bin/ |store user commands.|
|/boot/| contains files used for system startup including the kernel.|
|/dev/| contains device files|
|/etc/| is where configuration files and directories are located.|
|/home/| is the default location for users‟ home directories.|
|/lib/ and /usr/lib/ |hold library files used by programs in /bin/ and /sbin/.|
|/mnt/ |holds the mount points for file systems that were mounted after boot.|
|/opt/ |is used primarily for installation and unintallation of third-party software. Holds optional files and programs.|
|/root/ |is the home directory of the superuser "root"|
|/sbin/ and /usr/sbin/ |store system commands.|
|/tmp/ |is the system temporary directory. All users have read+write access to /tmp/.|
|/usr/ |contains files related to users such as application files and related library files ("usr" is an acronym that stands for UNIX system resources).|
|/var/ | holds files and directories that are constantly changing such as printer spools and log files.|
## A2osX Boot Process
On a Drive dedicated to A2osX, likely your boot process would be:
Prodos
nsc.sys if present and you have one of those
a2osx.system
new quit code (what is different?)
if no parameter loads KERNEL
if a param sent, load param
idea is passing a .SYSTEM file, then once .SYSTEM file is QUITting, the QC will reload KERNEL this could allow launching .SYSTEM files at $
This then loads KMs then INIT
GETTY, LOGIN, SHELL PROFILE
### Maintenance mode
## Tools A2osX Developers Use
@ -28,6 +92,9 @@ What we do in our current work flow, we edit the file with Notepad++, save local
by the S-C Software Corporation
You can find more information about this assembler here: http://www.txbobsc.com/scsc/scassembler/index.html
### Github
### TortoiseSVN
@ -46,6 +113,11 @@ If you decide to use MarkdownPad 2 as we do, you may want to add support for Git
If you use AppleWin and want to enable support for networking (AW supports the UtherNet I network card protocol) you must install a network shim that enables AppleWin to talk to the Internet. You can search with Google how to do this, but basically you need to install WinPcap 4.1.3.
VSDrive, Localhostmode ADTPro and setting this up...
make a bat file called adtlocal.bat and put in it
@call "%~dp0adtpro.bat" localhost
### CiderPress 4.0.3

View File

@ -6,9 +6,9 @@ AUTO 4,1
# This script tests the new FOR NEXT loop construct.
#
echo "\f\n\n FOR NEXT Tests"
echo "\n\nThis script tests the FOR var IN 'LIST' construct."
echo ""
echo ""
echo "\n\nThis script tests the FOR var IN 'LIST' construct"
echo "as well as the FOR var IN 'FILE' construct. It also simulates"
echo "the FOR val in CMD construct by doing a SET var = CMD first."
echo
IF [ -N $Log ]
ECHO "Begin FOR NEXT Tests" >> ${Log}
@ -17,6 +17,16 @@ ELSE
SET F = 0
SET P = 0
FI
SET LIST = "0 22 44 -55 14.7 1234.4321"
SET COUNT = 0
SET TOTAL = 0
FOR ITEM IN $LIST
ECHO $ITEM
SET COUNT = $COUNT + 1
SET TOTAL = $TOTAL + $ITEM
NEXT
ECHO "I counted $COUNT items"
ECHO "with a total of $TOTAL"
SET LIST = "Remy Patrick Adam Admin Zeus Zero"
SET COUNT = 0
FOR ITEM IN $LIST
@ -24,7 +34,29 @@ FOR ITEM IN $LIST
SET COUNT = $COUNT + 1
NEXT
ECHO "I counted $COUNT items"
SET LIST = "Remy | Patrick! Adam @ Admin Zeus &Zero *-As"
SET COUNT = 0
FOR ITEM IN $LIST
ECHO $ITEM
SET COUNT = $COUNT + 1
NEXT
ECHO "I counted $COUNT items"
EXIT
SET OL = $COUNT - 1
SET SLIST = ""
WHILE [ $OL -ne 0 ]
SET ITEM1 =
FOR ITEM IN $LIST
ECHO $OL $ITEM
IF [ -N $ITEM1 ]
SET ITEM1 = $ITEM
ELSE
IF [ $ITEM1
FI
NEXT
SET OL = $OL - 1
LOOP
MAN