Disassembled source for Digital Research Logo
=============================================

  This is an attempt to separate out the machine-independent and 
machine-dependent bits of the ports of DR Logo for the Amstrad CPC and PCW. 

  As far as I know, DR Logo was originally written in C, probably BDS C. I'm
guessing that it would have been provided to OEMs largely in object form, and 
the OEMs would have built machine-specific modules and linked them in with the 
objects supplied by DRI to create a version for their platform.

  I haven't attempted to reconstruct the original C source, or the original
build process. Modern computers are sufficiently fast that 26000-odd lines
of Z80 assembly can be assembled directly to a COM file with no need for
linking or module management.

  The source tree here builds two versions of the Logo executable: For the 
Amstrad CPC and PCW. The original disassembly has been split into 
machine-independent and machine-specific files, hopefully making it easier
to see what differs between the two versions. In outline:

* The CPC version has a copyright date of 1985; the PCW copyright date is
  (erroneously?) 1983.
* The CPC version has a hardcoded memory top of 0F5ECh, so will not work
  if any RSXs are loaded. The PCW version, which has an RSX attached for 
  graphical output, reads the memory top from address 6.
* The CPC version omits the 'tones' primitive in favour of 'sound', 'ent', 
  'env' and 'release', which map more closely to how the CPC firmware controls 
  its sound chip.
* The CPC version omits the 'fill' flood-fill primitive (though all the code 
  to implement it is still there).
* The PCW version dummies out the 'tones', 'wait', 'buttonp', 'paddle', 'pal', 
  and 'setpal' primitives (implementing them only as a "No such primitive" 
  error).
* The product number is displayed one character further to the right on 
  the PCW (!)
* The modules were built/linked in a different order. For example, the CPC 
  version links savepic / loadpic before copyon / copyoff, while in the PCW
  version the module with copyon / copyoff comes first.

  Having the source in this form may make it practical to port this version
of Logo to other platforms.

  To build, you will need:
* PASMO <https://pasmo.speccy.org/>
* ZXCC <https://www.seasip.info/Unix/Zxcc/index.html>
* GENCOM.COM from CP/M Plus (eg: <https://www.seasip.info/Cpm/software/dri.html>

  I have also included (in logorenp.asm) source for my patch to the 'changef' 
function, which replaces the original flawed implementation with one that 
works.
