VGALIOS v0.9
============

  The programs in this zipfile are designed to patch the Apricot F1 version
of DR Logo so that it will run on VGA systems.

  As for how it's done, that's not quite as simple as in v0.1. The file 
LIOS.A86 contains a disassembly of the machine-dependent bits of the Apricot 
F1 version of Logo. This has then been rewritten as VGALIOS.A86 for the VGA. 
The program LIOSMERG.EXE overlays the appropriate changes onto a copy of 
F1LOGO.CMD.

  However, since the VGA support routines are bigger than the original F1
routines (the VGA hardware having more facilities than the F1 hardware and
the modes being different), some helper routines have been placed in a 
separate module - VGALIOS2.A86. This module is also merged in by LIOSMERG.EXE.
Calls from VGALIOS to VGALIOS2 are far calls to a jumpblock at the beginning
of VGALIOS2; the code around "setsegs" in VGALIOS sets up the jumps to it.

  For example, this build sequence:

  RASM86 VGALIOS
  LINKCMD VGALIOS
  RASM86 VGALIOS2
  LINKCMD VGALIOS2
  LIOSMERG F1LOGO.CMD VGALIOS.CMD VGALIOS2.CMD VGALOGO.CMD

  will build a VGALOGO.CMD containing the two VGA modules.

Implementation Details and Bugs
===============================

  Compared to the F1 version of Logo, this is pretty much feature complete.

* The two Apricot modes (320x250x16 and 640x250x4) have been replaced by PC
  modes 13h and 14h (320x200x256 and 640x480x16). 

* Mouse support is untested (DOS Plus has a built-in mouse driver but 
 that requires PC1512 hardware - which in turn doesn't support VGA).

* The TONES primitive is implemented. Syntax is:

  TONES [ frequency duration { frequency duration ... } ]

 Valid frequency values range from 19 to 16383; the upper limit is fairly 
 arbitrary, but is higher than I can hear. Both limits can be adjusted by 
 changing the MINTONE and MAXTONE values in vgalios.a86, but be careful; 
 MINTONE was set at 19 because frequencies of 18 or lower crash the sound 
 generation code!

* The SETPAL and PAL primitives have been implemented. The syntax for
 SETPAL is:

    SETPAL [ink red green blue { ink red green blue ...} ] 

 Each ink number ranges from 0 to 255 (though in 640x480 mode only the first
 16 actually do anything). The red/green/blue values from 0 to 63.
 The syntax for PAL is:

    PAL ink

 which returns a list of three integers corresponding to the red/green/blue
 values of the colour in question.

Change History:
===============

[v0.1] Original release; nearly all drawing was done using the BIOS, 
 resulting in painfully slow drawing in the 640x480 mode (SETBG was 
 particularly bad). This also had compatibility issues with buggy VGA BIOSes
 (like the ones in DOSEMU 1.0.1.2 and VMWare 2.0.4). 

[v0.1] Unimplemented primitives included FILL, SAVEPIC, LOADPIC, TONES, MOUSE.

[v0.2] FILL was implemented in both video modes.

[v0.2] Most of the drawing code changed to use direct hardware access rather 
 than calling the BIOS. For the routines that do this I am indebted to Richard 
 Wilton's "Programmer's Guide To PC And PS/2 Video Systems". 

[v0.9] SAVEPIC and LOADPIC are now fully implemented in both video modes. 
 Note that the file formats are not compatible with the example PC0/PC1 files
 from the Apricot version. 

[v0.9] TONES is implemented. 

[v0.9] SETPAL and PAL are implemented.

