[net.micro.cbm] C64 Kermit Posted

GMW@psuvm.BITNET (06/05/85)

     Ok, I've posted Kermit for the 64.  I haven't posted the FORTH version
as the sources aren't available and it isn't clear how to boot it.  Also,
I haven't included the CROSS assembler source code for Eric Lavitsky's
version, as it is over 8000 lines long.  If you need it, let me know and
I'll email it to you.
     
     Here is a short description of the files:
     
          C64BOOT.HLP -- short help file for the boot routines.  These
                         routines allow you to download the other files
                         from your mainframe.
     
          C64BOOT.CLU -- mainframe side download routine written in the
                         CLU language (smells a lot like Pascal).
     
          C64BOOT.C   -- mainframe side download routine written in C.
     
          C64BOOT.BAS -- 64 Basic routine that talks with the mainframe
                         boot routines.  You'll need to type this one in.
     
          C64BOOT.SIM -- mainframe side boot routine written in SIMULA.
     
          C64DXL.M65  -- CROSS assembler source code of routine that
                         converts .HEX files to 6502 machine code.
     
          C64DXL.HEX  -- hexified object version of the above routine
     
          C64DXL.BAS  -- *slow* Basic version.  Run this on C64DXL.HEX to
                         produce your working version.
     
          C64KER.MSG  -- a few notes on C64-Kermit by the author.
     
          C64KER.HEX  -- hexified object file for C64-Kermit.
     
          C64KER.DOC  -- C64-Kermit documentation.  Includes boot
                         instructions.
     
     You probably won't need all these files.  If you already have a
suitable downloader (like VIPterm) you won't need the C64BOOT.* routines.
The mainframe side boot routines may need to be re-written in a language
your site knows about, but this should be fairly trivial.
     
     Essentially, booting Kermit goes something like this:
     
        1) Download C64DXL.BAS, C64DXL.HEX and C64KER.HEX.
     
        2) Load Supermon (or equivalent) as per the instructions in the
           .DOC file, then load and run C64DXL.BAS and feed it C64DXL.HEX.
           This will produce a fast machine-language un-hexifier.  Save
           it with the monitor's SAVE function.
     
        3) Now run the fast C64DXL on C64KER.HEX.  This produces an
           executable Kermit and, if you've followed the instructions,
           jumps back to the monitor.  The last number it prints is
           the last address used by Kermit.  You'll need this to save
           Kermit with the monitor.
     
     If you don't have Supermon, it should be possible to poke the last
address into locations 45-46 (pointer to End of Basic Text in Lo byte /
Hi byte format) and give the command 'save "kermit",8' from Basic.
Locations 43-44, also used by the SAVE command, point to the Start of
Basic Text at $0800, which happens to be where Kermit starts, so they
needn't be modified.  I haven't tried this, but it looks fine on paper.
If you choose to try it, note that the last instruction executed by
C64DXL is a BRK, which is normally intercepted by Supermon and causes a
jump back to the monitor command level.  You'll have to POKE 790,123 and
POKE 791,227 to reset the BRK interrupt vector so it points to the Basic
interpreter main loop.  Otherwise the BRK will cause the screen to clear
and you'll miss the last address information.
     
     Good luck.  I'm no expert, but I might be able to help if you have
problems.  Send bravos/flames to Eric Lavitsky, not me.
     
     
George M. Weaver
Penn State Astronomy Dept.
GMW at PSUVM.BITNET
...!allegra!psuvax1!gmw@psuvm.bitnet