
Hugi size coding competition #8
-------------------------------

 Description:
  Program operates as a DOS filter, converts raw ASCII to MORSE
  or MORSE to ASCII depending if the 1st character read is '_'

 Entry from: TonyWilk
      email: TonyWilk@dial.pipex.com
  assembler: MASM 5.00         masm /l entry.asm
     linker: MS LINK 5.10      link /tiny entry.asm;
    version: 3.2
     length: 242 bytes   (previous was 248)
  submitted: 28th June 1999

 Version Info:
  1.0 Initial submitted version, 295 bytes

  2.0 (not submitted, 262 bytes)
  * Mostly using shorter instructions, re-ordering execution
    and storing morse with leading and trailing '1's
  * Simplified output for WORD separators.

  3.0 (not submitted, 251 bytes)
  * Managed to make use of cmpxchg !
  * Tried to sort out register usage.
  * Lots of re-ordering

  3.1 2nd Submission, 248 bytes: 
  - final nasty bits to save a byte or 2...
  * Using starting reg value of CX=00ff to frig BEGIN detection
    in morse->text (saved 2 bytes)
  * Using starting value of SI=0100h as char buffer for I/O (saved 1 byte)

  3.2 3rd submission, 242 bytes:
  * realised INT21 0x4C isn't the shortest way back to DOS !
    Now just RETs back to DOS (so INT20 in PSP at 0000 must be valid)
  * Shuffled stack usage around to enable clean exit.

  Side effects:
    a. will NOT terminate properly in DEBUG (since INT20 is pissed on)
    b. non-redirected Morse->Text *must* start with a valid START code

TonyWilk


