home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / extra / appxxx.txt < prev    next >
Internet Message Format  |  2020-01-01  |  10KB

  1. Date:     Tue, 27 Aug 85  12:14 EDT
  2. From:     Dick Atlee <ATLEE@UMDC>
  3. Subject:  Apple DOS Kermit
  4. To:       Kermit Warm Line <DFTCU@CUVMA>
  5.  
  6. I should report in on a Kermit I've been working on for Apple DOS.
  7.  
  8. Last year, I took Antonino Mione's Version 2.1, which didn't provide 80
  9. columns or nice looking output on my Apple IIe, and started working on an
  10. Apple-assemblable modified version.  I chose Merlin/BigMac as the most
  11. widely used, relatively inexpensive, high-capability assembler.
  12.  
  13. The requirements for Apple-assemblability were two in number: the source and
  14. object code had to fit in the assembler, and the existing DEC-cross-assembler
  15. code had to be modified to match the Apple assembler.  To accomplish these,
  16. I first handled the code on our IBM CMS system, using a series of EXECs to
  17. make 99% of the necessary conversions to match Merlin's code, to look for
  18. patterns of locality of reference with an eye to breaking the code down into
  19. internally related modules with a minimum of external references, and to
  20. construct modules of a reasonable size for Merlin.  The minimum of external
  21. references was necessary because Merlin doesn't have a linker (Linkers are,
  22. or at least were, very expensive, and such assemblers I assumed would not
  23. be widely available to ordinary mortals like me who would like to mess
  24. with KERMIT).  This necessitated adding a central linking module containing
  25. shared addresses (JMP tables, DFB/DW defaults, and DS Storage allocations).
  26. The resulting KERMIT configuration has turned out to be 10 program modules:
  27.  
  28.       S. Linker
  29.       A. Command Interpreter
  30.       B. Kermit central control, command jmps, some utilities
  31.       C. Communications--nonemulation (Device init, I/O, cursor, printable
  32.                                         character mods, screenwriting, etc.)
  33.       D. File-transfer routines code (SEND/RECEIVE/GET/FINISH/BYE)
  34.       E. DOS interface
  35.       F. Set/Show/Status commands
  36.       G. Communications--emulation (screen-handling routines)
  37.       H. INSTALL and DOS CATALOG/RENAME/DELETE commands
  38.       I. File-transfer support (Packet handling, error and transfer-progress
  39.                                  reporting, debug mode, etc.)
  40.  
  41. This has made it quite easy to develop the program on the Apple--any changes
  42. in a module require as overhead only the additional modification of the
  43. link module's JMP table addresses for shared routines contained in the changed
  44. module (from about 4 to about 8 maximum, depending on the module).  Additions
  45. to shared DFB/DW and DS storage are extremely easy.
  46.  
  47. The program is designed around our IBM/CMS and SPERRY machines here at
  48. Maryland, and I report it to you at this time because this past weekend it
  49. finally was able to handle file transfers successfully at 300 baud through
  50. a Micromodem, and at 1200 through the Super Serial Card, to and from both
  51. mainframes here (though 1200 baud transfers with our IBM only work
  52. consistently when using interrupts, which are a requestable option in this
  53. KERMIT).  There have been many changes from the original version 2.1,
  54. some of which are noted very briefly below:
  55.  
  56.    Command Interpreter -- left basically intact
  57.  
  58.    Commands -- several new ones: DOS CATALOG-RENAME-DELETE commands
  59.                                  Exit-to-System-Monitor
  60.                                  INSTALL (after you change defaults to
  61.                                    desired values, cleans up all DS storage
  62.                                    and writes new KERMIT to disk)
  63.  
  64.    Communications/Hardware: redid access to ACIA registers, so SET DEVICE
  65.        loads the register addresses into zero-page locations which are
  66.        used for indirect addressing.  This eliminates the need for a completely
  67.        separate code section for each device--all devices uses the same section
  68.        at the cost of slightly slower indirect addressing.
  69.        Also, interrupt capability was added, which is very helpful in full-
  70.        screen work.
  71.  
  72.     Communications/Emulation--terminal emulation was switched from VT52 to
  73.        Volker-Craig/ADM3A-emulation.  This may sound arcane, but we use it
  74.        here, and it contains the highest proportion of Ctrl-Chars vs. ESC
  75.        sequences.  However, it would not be difficult to either change the
  76.        emulation, or to make installable emulations, since I have based the
  77.        emulation (for both ctrl-characters and ESC-sequences) on translation
  78.        tables.  The concept was borrowed from the IIe 80-column card firmware.
  79.        In fact, while the Apple side of the translations are nominally the
  80.        control characters used by the IIe's 80-column card, there is no
  81.        reliance on that card--all relevant routines have been abbreviated
  82.        and put into KERMIT, so that dependence on that particular card has
  83.        been virtually eliminated.
  84.  
  85.   80-Column Support -- Although I originally depended on the 80-column card for
  86.        both KERMIT local screenwork and non-emulation host-connection screen-
  87.        work, I have modified my emulation code and put all host-related
  88.        screen handling under control of KERMIT and not of the 80-column card.
  89.        Because of inconsistencies in cursor-position storage between the
  90.        card and the native Apple, my KERMIT does not work nicely on the II or
  91.        II+, so I am in the process of removing ALL control from the 80-column
  92.        card AND from COUT (the standard I/O routine and hooks), and giving
  93.        the control to KERMIT, so as to be independent of both specific
  94.        machine type and interface/80-col cards.  I am almost sure this can
  95.        be done, though not 100% (a condition I learned early to avoid
  96.        assuming).
  97.  
  98.   File-Transfer -- I did a complete revamp of the SEND/RECEIVE code to
  99.        rationalize it, using repetition of common code patterns and comments
  100.        to make each state parallel to all others, and changed the error
  101.        reporting to be more descriptive of exactly what was causing errors.
  102.        DEBUG-OFF transfers are now accompanied by a formatted report screen
  103.        modelled (in concept and content, though not layout) on KERMIT-86
  104.        (now MSKERMIT).  Conceptual/protocol flaws in the 8-bit quoting code
  105.        were fixed, but not as yet tested.
  106.  
  107.   Help -- the HELP information was augmented and put into a Multi-screen
  108.        format, rather than scrolling.  This made it possible to remove the
  109.        artificial slowdown of local-KERMIT screenwork which presumably was
  110.        inserted to permit reading of lines during scrolling.
  111.  
  112.   Comments (both in-line and routine sub-headers) -- After the pre-processing
  113.        work (modularizing, DEC-to-Merlin code transformations) on IBM/CMS, I
  114.        removed all comments to allow for Merlin source size-limitations.
  115.        I recently checked every line and added comments to all lines that are
  116.        new or changed with respect to version 2.1, plus any lines where
  117.        commenting helped add sense or continuity to new/changed lines, or to
  118.        identify non-substantive changes (such as labels) in old lines.
  119.        Otherwise, I have been relying on the comments available in listings
  120.        of version 2.1.
  121.  
  122.   Other changes too numerous to mention (as they say in the auction trade...)
  123.  
  124. The breaking down of KERMIT into modules has of course introduced overhead into
  125. both the source and object code.  The current source is probably smaller than
  126. the source for 2.1 because of the net decrease in line-comments described
  127. above.  The main source of added length in the object code, apart from new code
  128. (such as new commands and device initialization) is in blank space allocated at
  129. the end of each module (to nearest hex 100 bytes) for expansion/contraction).
  130.  
  131. However, both source and object for all ten modules, plus the executable KERMIT
  132. (simply the BLOADed combination of the object modules) all fit easily onto two
  133. sides of a floppy disk. In terms of storage, KERMIT 2.1 occuppied 801-5600 hex,
  134. while the new version currently occupies 801-7300 hex, or 109 DOS 3.3 sectors.
  135.  
  136. Although KERMIT now functions, it would be desirable to address the following:
  137.  
  138.    1. Transfer of all--or almost all--I/O handling from the MONITOR to KERMIT
  139.    2. Testing on II+/II (after #1)
  140.    3. Testing on non-Apple 80-column cards
  141.    4. Changing emulation to more common terminal-type
  142.    5. Adding more supported interface cards (the support for the old
  143.       Apple Communication Card is already in KERMIT, but I can't get
  144.       the ACC to work on my IIe even on its OWN merits, quite apart
  145.       from KERMIT, and others may also be desirable)
  146.    6. Testing Apple/Apple communication
  147.    7. Testing 8-bit quoting
  148.    8. Solving inability to GET/FINISH from IBM/CMS server
  149.  
  150. This sounds like quite a wish list for producing a truly functional program
  151. of use beyond the original U.of M. scope for which it was originally intended.
  152. You folks might be able to inform me of whether there is interest in the real
  153. world for such a version.
  154.  
  155. I must confess that I have remained totally isolated from Apple Kermit
  156. developements since last August when I got version 2.1.  I know SARDAC Corp
  157. in Florida has worked with Ed Butt here on their KERMIT, the Apple portion
  158. of which was borrowed from Wisconsin, which I gather handed the command
  159. interpretation to Applesoft to cut down on size.  I haven't had a chance to
  160. really experiment with this version.  Extensive changes may have already
  161. been made in Antonino's program, which I would be totally unaware of --
  162. this has been kind of a hot-house isolated effort in sparse spare time.
  163.  
  164. I'd appreciate any advice, information, or contacts you could provide in
  165. helping me to come out of the closet.  Thanks.
  166.  
  167.                                                      Dick Atlee
  168. ------ End of forwarded mail by DFTCU@CUVMA.
  169.