VGALIOS v0.1
============

  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 quite simple. 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.

  For example, this build sequence:

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

  will build a VGALOGO.CMD containing the VGA patches.

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

  The VGA patch, in its current form, is a naive implementation that simply
tries to get Logo working. There is no attempt to optimise performance or 
add support for extra PC features (such as the DAC chip); in addition, some
Apricot features have not been implemented.

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

* There is no mouse support. 

* The sound function (used by TONES and WAIT) has not been rewritten to use 
 the PC beeper. It's just had the Apricot calls commented out and does 
 nothing.

* The FILL function has not been rewritten, so FILL still thinks the screen
 has its Apricot structure.

* The SAVEPIC and LOADPIC commands likewise have not been rewritten; they will
 crash.

* Nearly all drawing is done using BIOS functions rather than by programming
 the VGA hardware directly - more so in 640x480x16 mode, where I'm not familiar
 with the programming techniques to access all four planes of video RAM. Using
 the BIOS means the program can get very slow indeed. The most egregious 
 example of this is the SETBG command. In 320x200 mode, direct access to the
 video RAM is used, and as a result the command is fast. In 640x480 mode, the
 BIOS is used, resulting in a delay that seems to last forever. (This also
 happens when you first select 640x480 mode using SETRES. Don't think Logo has
 hung; it's just taking forever to redraw the screen). 

* The BIOS functions used seem to be quite a good stress test for PC emulators,
 in as much as they don't implement them properly / at all. On two of the three
 I used (which I admit are rather elderly), DOSEMU 1.0.1.0 fails to plot any 
 points at all using INT 10, so only the occasional direct access (such as 
 drawing the turtle in 320x200 mode) shows up. VMWare 2.0.4, on the other 
 hand, supports both 320x200 and 640x480 modes, but doesn't support XOR-mode 
 drawing so a trail of turtles is left over the screen. It also corrupts the 
 graphics window when scrolling the text window.
  Fortunately, the video BIOS in XMESS (pcvga mode) does not seem to have 
 these bugs, so I was able to verify that the problems are indeed in the
 emulators and not in VGALIOS.
