💾 Archived View for mirrors.apple2.org.za › archive › ground.icaen.uiowa.edu › apple8 › OS › A2.XINU… captured on 2024-08-19 at 02:32:44.

View Raw

More Information

⬅️ Previous capture (2023-01-29)

-=-=-=-=-=-=-

About: A2.XINU.BXY
Status: Freeware
Uploaded on 10/1/97 

Charles T. 'Dr. Tom' Turley
115 Santa Clara St.
Brisbane, CA 94005-1736
USA

Email: cturley@grin.net
Voice: 415-468-1609
WWW: http://www.grin.net/~cturley/
	 http://members.aol.com/owsw/

------------------------------------------------------------------------------------ 

Xinu for the Apple ][

------------------------------------------------------------------------------------ 

Xinu is a small, elegant system that follows a hierarchical structure. The latest
Xinu work has focused on porting Xinu to new architectures, adding support for
virtual memory and Internet protocols, and adding a file system. In all cases, we
are exploring how to add new facilities to the multilevel design without
introducing level violations. The virtual memory system project has explored a
novel approach to backing store. In the Xinu model, a server that consists of a
dedicated, large-memory machine provides high-speed remote memory for a set of
Xinu client machines. We have developed a highly optimized streaming protocol
that permits clients and servers to send data at high rates. In addition, we
have developed an optimized page server that re quires little processing time to
store or fetch pages.


Here is the rewrite and port of Xinu for the Apple ][. The Xinu used came
out of a hardcover book with a tan cover and a picture of a rug with the
words `Xinu' on it -- I suspect the newer versions of Xinu have changed a bit.

Inside the ShrinkIt archive (A2.XINU.BXY)
you will find: apple2xinu.tar.gz  (a zip - tar archive)
Inside of that you will find and should have received:

- Three 140K Apple ][ floppy disk images
- Readme
- some Gifs of docs I have here

There is essentially no documentation other than the source code, the Gifs
and the Readme. I have some other handwritten stuff which is covered by the
source, but I could probably photocopy/scan it and send it to you if you
thought it might help.


Section 1: Disk images
----------------------

Here is the list of main files on each disk image. The first two
are DOS 3.3 disks, and the last is a ProDOS disk. I used to use the ProDOS
FILER to move the .OBJ files from the DOS 3.3 disks to the last disk.


Xinu_1.dsk - Xinu OS assembly code


assembles


Xinu_2.dsk - Xinu OS extensions: file system, mini-assembler, shell




Xinu_3.dsk - Disk with Xinu image

XINU SYS 34 The Xinu OS image
XMAKER BAS 03 Loads .OBJ files and creates OS image
WILLIAM.TELL BIN 05 \
frogr REL 03 | Misc. programs used to test that Xinu
frogb BIN 03 | loads and runs programs, and multi-
jim REL 01 | tasks as well.
GB BIN 09 /


Section 2: Assembling the bits
------------------------------

The assembler I used is Lisa 2.5, which is on disk 1. On the two
source disks there are text files which you can EXEC to create the output
.OBJ files. Once this is done, move the files over to the last disk, run
XMAKER and load all the files, then save the Xinu image to disk.

The image parts are:

XINU.OBJ The XINU-specific stuff
DDD2 ProDOS disk I/O routines
FILE.OBJ File system routines
SUP.OBJ FS support routines
SHELL.OBJ The shell
BOOT2.OBJ Xinu bootstrap code

The source for the last file, BOOT2.OBJ, is chapter13.src, from memory.

To run Xinu, boot the 3rd disk, go to the BASIC prompt and type

]-XINU

This didn't work on APL2EM here. I know I had to patch both the PRODOS
and BASIC.SYSTEM image to get them to work on the Apple clone I have.
Try using the real Apple ][ ones. If the thing still crashes, see below.
You'll need an upper/lowercase keyboard too!

On the second source disk you'll also find some code for the
old Apple Mini-Assembler, and some other extensions to the monitor, such
as a program relocator. I'm not sure how I got these into the language card,
or how they were included into the Xinu image. However, they are not
essential for Xinu to work, but are handy things to have around.


Section 3: Warnings, Gotchas
----------------------------

You need a 24Hz (I think) clock tick coming in on the IRQ line
so that Xinu can (try to) keep time and do multitasking. I never drew
a schematic for this -- consult the 6502 hardware docs to see how long
a pulse for IRQ should be, and if it should drop to 0V or raise to 1V.

The biggest gotcha is that the code was written for an Apple
clone with a 16K bankswitchable RAM at $4000 (from memory). I used this
memory to store OS stuff like zero-pages/stack-pages when switching between
processes. You will have to rewrite a bit of the code to store this somewhere
else, and remove the bankswitching operations. I have scanned in some info
about the bankswitching in the clone -- it should give you an idea when you
find me STA'ing something into a weird I/O location.


Section 4: Scanned GIFs
-----------------------

Most of the docs I have are either printouts of the source, which
you can produce, or a small quantity of handwritten notes, plus the docs
about the hardware of the Apple clone from its technical handbook. I've
scanned these in at 300dpi, and a quick description of each image is given
below:

Xinu1.gif - A overview of the memory layout of Xinu. Note in particular
the two bankswitched areas - 4K in the language card and the
16K bankswitched area which is peculiar to the Apple clone I
have. With this setup, there is 47.5K of memory for user
processes. A more detailed view of the memory map is given in
the next two Gifs.

Xinu2.gif - The top 16K memory map (i.e the language card). The main part
of Xinu is on the right, with each of the main Xinu chapters
from $D000 upwards. Above that is the shell, the support
routines, the Mini-Assembler and the monitor modifications,
and the monitor itself. In the 4K bankswitched part is the
disk I/O routines stolen from ProDOS, and the File System
code.

Xinu3.gif - In the 16K bankswitched memory at $4000 Xinu stores its
system information; this is the `System Memory'. We have
the keyboard buffer, other buffers (unused?), the list of
processes, some system variables, the process names, the
queue of ready or waiting processes, a map of available
memory, and most importantly, the copies of the zero-page
and the stack for each process. We swap in/out a process'
zero-page/stack during every context switch.

Xinu4.gif - Dates of when I started each Xinu Chapter. I basically wrote
most of the code in a year I had off from Uni after my 3rd
year and before Honours.

Xinu5.gif - Summary of the commands for the Lisa Assembler, which is on
disk image 1. I have the full docs, about 40 pages if you
want.

Xinu6.gif - A basic overview of the `bank' mapping of memory in the
Apple clone I have. My machine only had the standard 48K
(banks 0-2), plus 16K in bank 3 which was normally not
used, except for the System Memory in Xinu.

Xinu7.gif - Here's how to select which physical bank of memory goes
into which logical bank. You write a number ($00 to $0F)
into locations $C07C, $C07D, $C07E or $C07F. I guess I
was normally writing either $01 or $03 into location $C07D,
to put either the `user memory' or the `System Memory' at
addresses $4000 -- $7FFF.
------------------------------------------------------------------------------------ 

Apple ][ rewrite and port of Xinu by Warren

Additional information required on the Xinu OS can be found from the
following links;

Xinu Supplementary Documentation 
http://www.ugrad.cs.ubc.ca/spider/xinu/xinu.sun3/xref/documents.html

Xinu Operating System
http://www.cs.purdue.edu/ar95/AR95Book-80.html