Welcome to the tutorial for the colorforth tool ciasa.


The code for the GA144 is defined in Huffman codes, that can
only be interpreted in a system that runs from a floppy, called
colorforth. This is subdivided into screens: blocks from 1024
bytes, in principle without layout.
Fortunately we can interpret the floppy image by an emulator
under windows. Fortunately we can run that emulator under wine,
the linux emulator for MS-windows.

What do we want?

1. Turn the code from a pseudo floppy into an ascii file.
2. Edit code in it ascii form (and do other manipulations,
   like source control.)
3. Run that code. This means that it has to be reintegrated into
the pseudo floppy.

Ascii files.

The pseudo floppy has the extension .cf. Thanks to the Huffman codes
this is not amenable to normal tools. The only thing a hex dump
in Linux reveals is that screens are padded with zeroes.

The only means to turn the pseudo floppy into ascii is via a
powerful reverse engineering tools. We use the Forth based
ciasdis, which is a  generic disassembler with plug ins for i.a.
80x86. In order to understand the Huffman codes the plugins
colorname.frt and colordump.frt have been created.

In order to make a pseudo floppy into an ascii file use the command

cidisa OkadWork.cf all.cul OkadWork.cfs

This is mainly useful to get started from an existing project.
You can also save the result of a debug session, where you made
patches directly in the pseudo floppy image.

A cul file is a script file that handles the loading of the colorname.frt
and colordump.frt plug ins and knows about the subdivision in screens.
It ends with the command

    #1440 #18 DO I ONE-SCREEN LOOP

So all screens are disassembled, but empty screens and zeroes will
not be output. The binary kernel of colorforth (up till 18 ) is left

This would be rather unpleasant without a means to display colors.
This is done by gvim and three files:
filestype.vim   : register .cfs and couple it to colorforth.syntax
colorforth.vim : the definition of the colors, i.e. prefix : is a
leon.vim : the actual colors. I.e. a definition is red.

The bottom line is that the screens look much like the real thing
especially of the font is enlarged to 18 point.
Look at man vim section FILES to see where those files go.
Also put
    .color leon
    .font 18
in your .vimrc file.

Editing the code and using it.

The file parpi.cfs contains a non-trivial example.
You will see that each screen has a preambule like
    ( SCREEN) #216 400 * DUP SEGMENT SCR216    EDIT-TIME
This will define a section (formerly known as segment) with
a name, and turns the special vocabulary EDIT-TIME on.
So the parens and the # are ciforth commands.
After EDIT-TIME all words start with : [ ] ( + or some such.
Note that ciforth comment is still possible, because the
prefixes are all collated, using the ciforth PREFIX facility.

You can edit at will, as long as you don't overfill up a screen.

Running the code.

The first step is to compile the .cfs file
ciasa myapplication.cfs myapplic.cf

The resulting pseudo floppy can be combined with the pseudo floppy
from GreenArrays using combine (a Forth program)
combine OkadWorkFrame.cf myapplic.cf OkadWork.cf

The program will investigate the image myapplic.cf and will ruthlessly
copy all screens that are not empty over a corresponding screen
in OkadWorkFrame.cf.

The name `` OkadWork.cf '' is obligatory as the emulator with names
like Okad2-41a-pd.exe works with a fixed burned in filename.
There are other caveats.
- parpi.cfs only runs with a patched version of the emulator.
- the emulator is not only an emulator for the floppy startup
   but also has the full Ga144 emulator built in.
- the normal use (like "contrary to what we do here") is to patch your
   one and only floppy image with the experimental programs.
- how do we get a good OkadWorkFrame.cf ? This is just a copy of
  the original OkadWork.cf released by GreenArrays with carefully
  applied patches and screens erased. (Be prepared to do that again
  when a new release appears.) 1]

The file OkadWork.cf must be treated as a scratch file that can be
recreated at will. Fortunately is it much easier to copy images than
real floppies.

Run the code

This is something like
 218 load
Unfortunately i didn't write it down, so I have to consult Leon
Konings again.
The parpi code calculates pi(n) the number of primes under n, in parallel.
It uses a pipeline (the most sophisticated version several pipelines)
and has run on the old Seaforth board (actual hardware!) and on an earlier
emulator for the GA144, running on a Pentium colorforth.
(3 levels of emulation, Forthers should *hate* this.).

What do you need.

Some version of linux
A GA144 release

vim: filestype.vim colorforth.vim leon.vim .vimrc

1] In the case of parpi this was even more cumbersome as Leon Konings had
made numerous patches in behalf of routing and I had added some
macro's to make control flow easier. In fact parpi still doesn't
work on the latest pseudo floppy.