home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / appleii / apple.mss < prev    next >
Text File  |  2020-01-01  |  89KB  |  2,013 lines

  1. @part(APPLE,root="kuser")
  2. @chapter(Apple II Kermit)
  3. @Index<Apple II>
  4.  
  5. @case(device,file="@*--------@*
  6. This document is formatted as an ordinary, plain text ASCII disk file, from
  7. SCRIBE text formatter source.  Typeset copies are available from Columbia
  8. University.@*--------@*")
  9.  
  10. @begin<description,leftmargin +12,indent -12,spread 0.5>
  11. Authors:@\Antonino N. J. Mione (Stevens Institute of Technology),@*
  12. Peter Trei (Columbia University),@*
  13. Ted Medin (NOSC),@*
  14. Bob Holley (SERDAC)
  15.  
  16. Version:@\3.87
  17.  
  18. Date:@\1990 Oct
  19. @end<description>
  20.  
  21. @i<Kermit-65 Capabilities At A Glance:>
  22. @begin<format,leftmargin +2>
  23. @tabclear()@tabset(3.5inches,4.0inches)
  24. Local operation:@\Yes
  25. Remote operation:@\Yes
  26. Transfers text files:@\Yes
  27. Transfers binary files:@\Yes
  28. Wildcard send:@\Yes
  29. @q<^X/^Y> interruption(Q):@\Yes
  30. Filename collision avoidance:@\Yes
  31. Can time out:@\Yes
  32. 8th-bit prefixing:@\Yes
  33. Repeat count prefixing:@\No
  34. Alternate block checks:@\No
  35. Terminal emulation:@\Yes (VT52, VT100)
  36. Communication settings:@\Yes
  37. Transmit BREAK:@\Yes
  38. IBM communication:@\Yes
  39. Transaction logging:@\No
  40. Session logging (raw download):@\Yes
  41. Raw upload:@\No
  42. Act as server:@\Yes
  43. Talk to server:@\Yes
  44. Advanced commands for servers:@\Yes
  45. Long packets:@\Yes
  46. Sliding windows:@\No
  47. Local file management:@\Yes
  48. Handle file attributes:@\Yes
  49. Command/init files:@\Yes
  50. Printer control:@\Yes
  51. @end<format>
  52.  
  53. Kermit-65 is a program that implements the Kermit file transfer protocol for
  54. the Motorola 6502 processor family (hence the name, Kermit-65) on the Apple II
  55. microcomputer system.  It is written in 6502 assembly language and should run
  56. on any Apple II or compatible running DOS 3.3 or PRODOS.  This section will
  57. describe the things you should know about the file system in order to make
  58. effective use of Kermit, and then it will describe the special features of the
  59. Kermit-65 program.
  60.  
  61. @Section<Supported Systems and Devices>
  62.  
  63. There are several different Apple II's which can run Kermit-65.  Kermit will
  64. have no problems running on an Apple II, II+, //e, //c or //gs system.  Of the
  65. different communication devices available for the Apple II, Kermit-65 supports
  66. the ones shown in Table @ref<-k65cd>.
  67. @begin<table>
  68. @bar()
  69. @blankspace(1)
  70. @begin<format,leftmargin 1.5inch>
  71. AE Serial Pro (super serial driver - sw 1 & 3 open 2 & 4 closed)
  72. AIO II (Uses the Apple Com Card driver??? - untested)
  73. ALS dispatcher (Uses the Apple Com Card driver)
  74. Apple Cat Serial Card
  75. Apple Com Serial Card
  76. ASIO (Uses the Apple Com Card driver??? - untested)
  77. Apple Super Serial Card & //c Serial Port
  78. Apple //gs Serial Port
  79. CCS 7710 Serial Card
  80. CCS 7711 (Uses the Apple Com Card driver??? - untested)
  81. D.C. Hayes Micromodem.
  82. Microtek sv-622 Card
  83. Prometheus Versacard (Uses the Apple Com Card driver)
  84. SSM AIO (Uses the Apple Com Card driver??? - untested)
  85. @end<format>
  86. @caption(Apple II Communication Cards Supported by Kermit-65)
  87. @tag(-k65cd)
  88. @bar()
  89. @end(table)
  90.  
  91.  It is possible that other cards may have operational characteristics very
  92. similar or identical to one of the devices above. If this is the case, it may
  93. work using one of the currently available device drivers.  The user may want to
  94. try each of the above options to see if any of them work.  Kermit-65 must be
  95. told in which slot the card resides.  This may be done with the 'SET' command
  96. (documented below).
  97.  
  98. @section<The DOS 3.3 File System>
  99. @index<Dos>
  100. Items of importance which will be discussed in this section include filenames
  101. and file characteristics.
  102.  
  103. @subh<Apple DOS Filenames>
  104. @index<Dos filenames>
  105. Filenames under Apple DOS may contain almost  any  ASCII  character  (including
  106. space). It is not recommended that special characters, (i.e. control characters
  107. or  spaces) be used in a filename to be transferred by Kermit-65 since they may
  108. cause problems when parsing the filename.  Filenames may be up to 40 characters
  109. in length.
  110.  
  111. @subh<Apple DOS File Characteristics>
  112.  
  113. All files in Apple DOS have a file type associated with them which is contained
  114. in the directory entry for the file but is not part  of  the  filename  itself.
  115. There are four types of files in DOS 3.3. They are:
  116. @begin<enumerate,spread 0>
  117. APPLESOFT BASIC
  118.  
  119. INTEGER BASIC
  120.  
  121. BINARY
  122.  
  123. TEXT
  124. @end<enumerate>
  125.  
  126. All file types have their data stored in eight-bit bytes although not all of
  127. them need the eighth bit. The two file types containing basic programs required
  128. the eighth bit due to the nature of the data being stored. BINARY files are
  129. images of memory copied into a file. Often, these are machine code programs.
  130. These files require all eight bits. TEXT files normally contain only printable
  131. or carriage control characters. They are stored in the form of seven-bit ASCII
  132. characters but the eighth bit should always be set since Apples manipulate all
  133. text internally as 'Negative ASCII'.  When transmitting non-text files the user
  134. must insure that both Kermits are handling eight-bit data so that no
  135. information is lost. If an eight-bit data path is not available (i.e. the
  136. remote Kermit needs to do parity checking with the eighth bit), then eight-bit
  137. quoting should be used.  Of course, BINARY files as well as Apple BASIC files
  138. will not have much meaning on a different system.  If the user desires to edit
  139. a BASIC file on a mainframe, for instance, s/he must convert it to a TEXT file
  140. before sending it over. After receiving the file back on the Apple, the user
  141. may convert it back to BASIC once again.  The reason BASIC files would be
  142. meaningless to a different machine is that the Apple stores BASIC keywords as
  143. single character tokens to save space and processing time.  To convert a BASIC
  144. program to and from a TEXT file, consult the Apple DOS 3.3 Manual.  File
  145. information can be obtained by issuing the CATALOG command.  For example:
  146. @begin<example>
  147.   ]CATALOG
  148.  
  149.    DISK VOLUME 010
  150.  
  151.      *A 002 HELLO
  152.       B 078 KERMIT
  153.       A 002 READER
  154.       T 005 TESTFILE
  155.  
  156.   ]
  157. @end<example>
  158.  
  159. When Kermit-65 is receiving a file, the file it creates on diskette will be of
  160. the type indicated by the FILE-TYPE parameter.  The file will always be left in
  161. an unlocked state after it is closed by Kermit-65.  When sending a file,
  162. Kermit-65 will use the FILE-TYPE parameter to determine how to detect an
  163. End-of-file condition.  Thus, it is important to have this set properly in all
  164. cases.
  165.  
  166. @subh<Recommendations for Archiving Files>
  167. @index<Archiving files>
  168.  
  169.  When using a large system for archiving purposes, there is no reason to
  170. convert Apple Basic programs into text files before sending them if there is no
  171. need to edit them on the mainframe.  The FILE-TYPE parameter must always be set
  172. correctly when sending and receiving files.  The procedure for archiving files
  173. is:
  174. @begin<enumerate,spread 0.5>
  175. Run Kermit on remote system.
  176.  
  177. @q<SET FILE-TYPE TEXT>  (@i<or>@q< APPLESOFT >@i<or>@q< ...>) on Kermit-65.
  178.  
  179. Send the files.
  180. @end<enumerate>
  181.  
  182. @section<The PRODOS File System>
  183. @index<Prodos file system>
  184.  
  185. The PRODOS system is essentially the same as the DOS system with the exception
  186. that performance has been improved, hardware usage has been expanded and file
  187. names have different syntax.  File names are the major importance to the Kermit
  188. system.  File names have the following syntax:
  189. @example</volname/subdirectory1/.../subdirectoryn/filename>
  190. where "volname" is the volume name where the file is located.  Subdirectory(n)
  191. is a subdirectory on the volume and may be omitted.  Filenames are much more
  192. restrictive than DOS filenames.  PRODOS filenames are limited to 15 characters
  193. with no embedded spaces and few special characters, and must begin with an
  194. alphabetic character.  /volname/sub ...
  195. may be omitted from the filename by use of the
  196. SET PREFIX command.
  197.  
  198. Binary file transfer using PRODOS has its dangers when creating new files.
  199. PRODOS keeps the file's size and starting location in the directory which is of
  200. course not transferred.  Therefore a new binary file will have its starting
  201. location 0 which can cause some interesting problems if you try and BRUN the
  202. file.  Basic files all start at $801 (it says here) so Kermit creates new basic
  203. files with a starting address of $801.
  204.  
  205. @section<Program Operation>
  206.  
  207. Prior to using Kermit-65 for transferring files, the modem interface must be
  208. set to handle data in a certain manner.  First, the data format should be 8
  209. data bits and 1 stop bit.  Second, the card should be set to no parity.  The
  210. baud rate (if adjustable) must be set to whatever rate the modem can handle.
  211. For the D.C. Hayes Micromodem, these parameters are set correctly by default,
  212. so very little has to be done.  For the Apple Super Serial Card these are set
  213. from within Kermit-65 except the interrupt switch (sw6-2) which must be set for
  214. interrupts on.  For the Microtek SV-622, all applicable parameters are set by
  215. Kermit-65.  Some mainframes may need parity checking (i.e. most IBM machines).
  216. In this case some parity setting (other than none) will usually work.  When
  217. talking with such mainframes, binary and basic files on the Apple cannot be
  218. transferred unless Eighth-bit-quoting is acceptable to the host.  If you have
  219. the parameters set correctly then the "CONNECT" command will start Kermit
  220. talking out the communication port.
  221.  
  222. File transfer is very dependent upon parity. Make sure the host and local
  223. parity are the same. Following are a couple of site's method for file transfer.
  224.  
  225. We have an IBM 3033 and 4381 and use both 3705/3725 and 7171 or Series/1
  226. front ends.  The differences in front ends as far as any microcomputer
  227. Kermit is concerned duplex (local-echo on for the 3705, local-echo off for
  228. the 7171 or Series/1), parity (the two front ends might use different parity,
  229. e.g. Mark for the 3705 and Even for the 7171), and flow control (None for the
  230. 3705, XON/XOFF for the 7171).
  231.  
  232. In Kermit-65, IBM mainframe users need to set the following parameters:
  233. @begin<description, spread 0.5, leftmargin +20, indent -16>
  234. BAUD@\Whatever is supported.
  235.  
  236. PARITY@\EVEN, ODD, or MARK, whatever your front end requires.
  237.  
  238. FLOW@\XON for the 7171, NONE for the 3705.
  239.  
  240. FLOW DELAY@\00
  241.  
  242. LOCAL-ECHO@\OFF for 7171, ON for 3705
  243.  
  244. @end<description>
  245.  
  246. In Kermit-65, SERDAC VAX 8800 users need to set the following parameters:
  247. @begin<description, spread 0.5, leftmargin +20, indent -16>
  248. BAUD@\SERDAC Dial-up &   300, 1200, or 2400 baud
  249. @\FIRN Dialup:(the highest your modem and the dial-up connection  will support)
  250. )
  251. @\Ethernet Hardwire: 300, 1200, 2400, or 4800 baud.
  252.  
  253. PARITY@\NONE
  254.  
  255. FLOW@\XON
  256.  
  257. FLOW DELAY@\00  (higher for printers, logging, or "slow" Apples)
  258.  
  259. LOCAL-ECHO@\OFF
  260.  
  261.  
  262. NOTE: If you want to do a binary file transfer (Apple binary or BASIC files)
  263. via a FIRN Network connection to the SERDAC VAX 8800, you must SET PARITY SPACE
  264. before the transfer is initiated; that will insure that eight-bit quoting is
  265. used.  If you dial directly into the VAX 8800, SET PARITY NONE; eight-bit
  266. quoting (which is less efficient) is not required.
  267.  
  268. @end<description>
  269.  
  270. @subh<Conversing With Kermit-65>
  271.  
  272. Kermit-65 reads file @q<KERMIT.INIT> from the default drive when started.  The
  273. lines of this file are executed one at a time starting at the beginning.  This
  274. file should be an ASCII text file and contain commands to set up Kermit's
  275. parameters as desired.  It will also execute Kermit's other commands.  However,
  276. any command which reads a file (like MODEM) or leaves local mode (like CONNECT)
  277. will terminate reading of this file and continue with the command specified.
  278. Use your favorite editor to produce this file.  Here's a sample:
  279. @begin<example>
  280. set display 80 3
  281. set keyboard 2e
  282. set baud 4800
  283. modem
  284. @end<example>
  285.  
  286. Kermit-65's prompt is "@q(Kermit-65>)".  To run Kermit-65 and issue commands to
  287. it, type "@q<brun kermit>".  Example:
  288. @begin<example>
  289. ]@ux<BRUN KERMIT>
  290.  
  291. NOSC/STEVENS/CU - APPLE ][ KERMIT-65 - VER 3.87
  292.  
  293. Kermit-65>@ux<send testfile>
  294.  
  295. @ @ @ @ @i<(file is sent...)>
  296.  
  297. Kermit-65>@ux<status>
  298.  
  299. @ @ @ @ @i<(performance statistics are printed...)>
  300.  
  301. Kermit-65>@ux[@i<(other commands...)>]
  302.           .
  303.           .
  304.           .
  305. Kermit-65>@ux[exit]
  306. ]
  307. @end<example>
  308.  
  309. @index<prompting>
  310. Like many Kermit programs, Kermit-65 uses a DEC-20 style command parser.
  311. During interactive operation, you may use the ?-prompting help feature ("?")
  312. and recognition (ESC) features while typing commands.  A question mark typed at
  313. any point in a command displays the options available at that point; typing an
  314. ESC character causes the current keyword to be completed (or default value to
  315. be supplied).  If you have not typed sufficient characters to uniquely specify
  316. the keyword (or if there is no default value) then a beep will be
  317. sounded and you may continue typing.  Keywords may be abbreviated to any prefix
  318. that is unique.
  319.  
  320. @subh<Remote and Local Operation>
  321.  
  322. Kermit-65 is normally run in local mode. It may be run as a remote Kermit as
  323. well although there is no advantage to doing things that way. Kermit-65
  324. supports User-mode commands for talking to a Server, and it does support a
  325. limited server mode.
  326.  
  327. @section<Kermit-65 Commands>
  328.  
  329. @subsection(The CATALOG Command)
  330. @index(CATALOG Command)
  331. Syntax: @q<CATALOG>@*
  332. @q<@ @ @ @ >@i<or>@ @q<LS>
  333. @index(LS Command)
  334.  
  335. Typing CATALOG produces a catalog (directory) listing of your default drive.
  336.  
  337. @subsection<The CONNECT Command>
  338. @index<CONNECT Command>
  339. Syntax:  @q<CONNECT>
  340.  
  341. Establish a terminal connection to the remote system using all the current SET
  342. parameters for terminal type, speed, parity, etc.  Get back to Kermit-65 by
  343. typing the escape character followed by the letter C. The escape character is
  344. Control-@q<@@> by default.  When you type the escape character, several
  345. single-character commands are possible.  These are shown in Table
  346. @ref(-k65esc).
  347. @begin<table>
  348. @bar()
  349. @blankspace(1)
  350. @begin<format,leftmargin +2,above 1,below 1,group>
  351. @Begin(Description,leftmargin +8,indent -6, spread 0)
  352. @q<?>@\List all the possible single-character arguments.
  353.  
  354. @q<B>@\send a Break signal.
  355.  
  356. @q<C>@\Command mode (returning to kermit-65).
  357.  
  358. @q<D>@\Drop the phone line to the remote and return to Kermit-65.
  359.  
  360. @q<E>@\Erase the screen (useful for clearing garbage on screen).
  361.  
  362. @q<K>@\toggle Keypad application-mode on/off.
  363.  
  364. @q<M>@\execute the Modem command.
  365.  
  366. @q<P>@\toggle the Printer on/off.
  367.  
  368. @q<Q>@\execute the Quit command.
  369.  
  370. @q<R>@\pRint the screen, >= //e required
  371.  
  372. @q<S>@\show Status of the connection.
  373.  
  374. @q<V>@\cursor-keys-Vt100 toggle.
  375.  
  376. @q<W>@\sWap the del and backspace key.
  377.  
  378. @q<0>@\send a null (ASCII 0).
  379.  
  380. @q<^@@>@\(or whatever the Connect-Escape character is): send the
  381. Connect-Escape character itself.
  382. @End(Description)
  383. @end<format>
  384. @caption(Kermit-65 Single-Character CONNECT Escape Commands)
  385. @tag(-k65esc)
  386. @bar()
  387. @end(table)
  388.  
  389. You can use the SET ESCAPE command to define a different escape character.
  390. When CONNECTed, Kermit-65 will be passing characters entered on the keyboard
  391. to the remote system, and passing characters from the remote system to the
  392. Apple screen.  Incoming characters are interpreted according the selected
  393. terminal type (see SET TERMINAL).
  394.  
  395. @index<Apple II+ keyboard>
  396. On an Apple II+ with an incomplete keyboard, special characters can be typed by
  397. prefixing regular characters with a right-arrow.  On uppercase-only screens,
  398. uppercase characters are shown in inverse and lowercase characters are
  399. displayed as normal uppercase characters.
  400.  
  401. Here are the rules for using the special 2/2+ input, to get all printable ASCII
  402. characters, and how they appear on the screen.  Special meanings are applied in
  403. various contexts to certain characters.  The left and right arrow keys do
  404. special things, and sometimes the escape key does as well.  For letters, the
  405. keyboard is always in either default UPPERCASE mode or default lowercase mode.
  406. When in UPPERCASE, all letters typed are sent out as uppercase.  In lowercase,
  407. all letters are sent as lowercase. To reverse the case for the next character
  408. only, hit the right-arrow ("prefix") key.  To switch the default case, hit the
  409. prefix-key twice in a row.  For funny characters, the prefix key is also used
  410. to get the unusual punctuation characters which are not on the Apple keyboard.
  411. Table @ref<-k65keys> shows the Apple II/II+ keyboard escapes; the letter "p"
  412. represents the prefix character.
  413. @begin<table>
  414. @bar()
  415. @blankspace(1)
  416. @begin<format,leftmargin +8,above 1,below 1,leftmargin +4,group,spacing 1.2>
  417. @tabclear()@tabset(3inch,4inch)
  418. @ux<To Get       >@\@ux<Type>@\@ux<Appearance>
  419. Left Square Bracket@\ p@q<(>@\@q<   [>
  420. Right Square Bracket@\ p@q<)>@\@q<   ]>
  421. Left Curly Bracket@\ p@q(<)@\@q<   {>
  422. Right Curly Bracket@\ p@q(>)@\@q<   }>
  423. Underline@\ p@q<->@\@q<   _>
  424. Backslash@\ p@q</>@\@q<   \>
  425. Tilde (wiggle)@\ p@q(^)@\@q<   ~>
  426. Vertical Line@\ p@q<.>@\@q<   |>
  427. @end<format>
  428. @caption(Apple II/II+ Keyboard Escapes)
  429. @tag(-k65keys)
  430. @bar()
  431. @end(table)
  432.  
  433. The left-arrow key sends a rubout (ASCII 127).  With left-arrow and right arrow
  434. doing special things, it's a little hard to enter their characters (@q<^H> and
  435. @q<^U> respectively).  There is therefore an escape from prefix mode sequence.
  436. If you type prefix-ESC, the next character is sent without any interpretation.
  437. If you have the capability for upper/lower case, etc, then use the 'SET
  438. KEYBOARD' and 'SET DISPLAY' commands to specify complete keyboards.
  439.  
  440. While in connect mode if you have a //e or better with 80 column display,
  441. the cursor will blink. The rate of blink is tied to the "SET TIMING" constant.
  442. Also the screen will be restored to state of the previous connect(if any).
  443. @index<blink>
  444.  
  445. @subsection(The DELETE Command)
  446. @index<DELETE Command>
  447. Syntax: @q<DELETE >@i<filespec>@*
  448. @q<@ @ @ @ >@i<or>@ @q<RM >@i<filespec>
  449. @index<RM Command>
  450.  
  451. Typing DELETE causes the file specified to be deleted.
  452.  
  453. @subsection<The EXIT and QUIT Commands>
  454. @index(EXIT Command)
  455. Syntax: @q<EXIT >@i<or>@q< QUIT>
  456.  
  457. Exit from Kermit-65. When using dos 3.3 you can probably 
  458. restart the program, provided you haven't run
  459. anything else, by typing 'CALL 4096'.
  460.  
  461. @subsection(The GET Command)
  462. @index(GET Command)
  463. Syntax: @q<GET >@i<remote-filespec>[,@i<local-filespec>]
  464.  
  465. The GET command requests a remote Kermit server to send the file or file group
  466. specified by @i<remote-filespec>.  This command can be used with a Kermit
  467. server on the other end.  The remote filespec is any string that can be a legal
  468. file specification for the remote system; it is not parsed or validated
  469. locally.  So if the remote Kermit supports wildcards you can specify them in
  470. the @i<remote-filespec>. 
  471. Local-filespec is optional and is the file name to be used locally.
  472. The "\" escape character may be used to accept the next character of the
  473. filespec asis and two escape characters will parse to a single "\".
  474. If the remote Kermit is not capable of server
  475. functions, then you will probably get an error message back from it like
  476. "Illegal packet type".  In this case, you must connect to the other Kermit,
  477. give a SEND command, escape back, and give a RECEIVE command.  Currently, a
  478. packet can be retransmitted manually by typing anything on the keyboard. If a
  479. 'Q' is typed, the entire transmission will be canceled.
  480. @index<Q>
  481. During file transfer if the remote kermit supports file attributes then the
  482. percent of the file transferred will be accurate else 0.
  483.  
  484. @subsection(The HELP Command)
  485. @index(HELP Command)
  486. Syntax: @q<HELP>
  487.  
  488. Typing HELP alone prints a brief summary of the Kermit-65 commands.
  489.  
  490. @subsection(The LOCK Command)
  491. @index(LOCK Command)
  492. Syntax: @q<LOCK >@i<filespec>
  493.  
  494. LOCK will file lock the given filespec on the default drive.
  495.  
  496. @subsection<The LOG Command>
  497. @index<LOG Command>
  498. Syntax: @q<LOG >@i<filespec>
  499.  
  500. When connected to a remote site, log the remote session's output to the
  501. specified file.  The file type and file warning protocols are observed. This
  502. command is dependent upon the flow control (XON/XOFF) working.  Without flow
  503. control there is little possibility of getting a correct copy of the terminal
  504. session.  The logging begins when you connect to the remote and is terminated
  505. when you escape back to the local Kermit with the ESCAPE character followed by
  506. the "C" command.
  507.  
  508. @subsection(The MODEM Command)
  509. @index(MODEM Command)
  510. Syntax: @i<MODEM>
  511.  
  512. @index<KERMIT.MODEM>
  513. @index<delay>
  514. @index<escape character>
  515. @index<smart modem>
  516. This command is designed for the hayes smart modem.
  517. Typing MODEM causes the file @q<KERMIT.MODEM> in the default drive/path to be
  518. used as a menu.  You will be able to select any line in the file to be sent to
  519. the modem.  Sorry, you can't back up to a previous menu, you will have to Quit
  520. and
  521. execute MODEM again. A "CONNECT" response from the smart modem will cause Kermit
  522. to leave the modem command and execute the CONNECT command. The Hayes smart modem
  523. must reply with text status responses (not numbers).  One
  524. command per line with comments allowed after the first space (blank). Use your
  525. favorite editor to produce this ASCII text file.  Since the attention Hayes
  526. command (AT) requires a delay the @qq<&> character becomes the time delay for
  527. Kermit.  Each @qq<&> causes a delay of one second on a 6502 chip.
  528. If you have a
  529. //gs or an accelerator board you may have to use the SET TIMING command
  530. to produce a one second delay.  If you really need to send the "&"
  531. character to the modem then the "\" is the
  532. escape character. Put a "\" before any character and that character will be
  533. sent as is. Of course two "\"'s will produce one "\".
  534. Normally Kermit will wait for 27 seconds (again
  535. on a 6502 chip) for the modem to respond, but any character typed on the
  536. keyboard will terminate this wait. You may hear the busy signal and there is
  537. no sense waiting any longer, so hit (ouch!-not so hard) any key on the
  538. keyboard.
  539.  
  540. Following is an example of the @q<KERMIT.MODEM> file:
  541. @begin<example>
  542. +++&&ATH    @i(Get the Hayes Smartmodem's attention and then hang up.)
  543. ATDP1234567 @i(Call your local BBS with pulse dialing.)
  544. ATDT8901234 @i(Call your work dialup phone with touch tone dialing.)
  545. @end<example>
  546.  
  547. @subsection<The RECEIVE Command>
  548. @index<RECEIVE Command>
  549. Syntax: @q<RECEIVE [>@i<filespec>@q<]>
  550.  
  551. The RECEIVE command tells Kermit-65 to receive a file or file group from
  552. the other system.  If only one file is being received, you may include the
  553. optional filespec as the name to store the incoming file under; otherwise, the
  554. name is taken from the incoming file header.  If the name in the header is not
  555. a legal filename, Kermit-65 will attempt to change it into something legal.  If
  556. FILE-WARNING is on and an incoming file has a name identical to a file already
  557. existing on the diskette, Kermit-65 will issue a warning to the user and
  558. attempt to modify the filename to make it unique.  Currently, a packet can be
  559. retransmitted manually by typing anything on the keyboard.  If a 'Q' is typed,
  560. the entire transmission will be aborted.
  561. @index<Q>
  562. During file transfer if the remote kermit supports file attributes then the
  563. percent of the file transferred will be accurate else 0.
  564. Filespec is required when xmodem protocol is used.
  565. @index<xmodem>
  566.  
  567. @subsection(The REMOTE Command)
  568. @index(REMOTE Command)
  569. Syntax: @q<REMOTE [>@i<option> @i<character-string>@q<]>
  570.  
  571. The only option currently is "kermit". This command submits the command
  572. "character-string" to the remote Kermit's command processor.
  573. Long replies are not paged so you will have to use ^S to stop the screen.
  574. The obvious usage is for setting and showing
  575. parameters on the remote Kermit.
  576.  
  577. @subsection(The RENAME Command)
  578. @index(RENAME Command)
  579. Syntax: @q<RENAME >@i<filespec>,@i<new-filespec>
  580.  
  581. RENAME will rename filespec to new-filespec on the default drive.
  582.  
  583. @subsection<The SEND Command>
  584. @index<SEND Command>
  585. Syntax: @q<SEND >@i<filespec>[,@i<remote-filespec>]
  586.  
  587. The SEND command causes a file to be sent from the Apple to the remote system.
  588. The Filespec is the name of the file on the Apple diskette to be sent.  The
  589. parser will not accept control characters and certain special characters in a
  590. filename (like comma). 
  591. The "\" escape character may be used to accept the next character of the
  592. filespec asis and two escape characters will parse to a single "\".
  593. Remote-filespec is optional and is the name of the file 
  594. on the remote kermit.
  595. Thanks to Dick Atlee, wildcards are now acceptable when
  596. sending files (they have always been acceptable when receiving files). The
  597. @qq<*> is a multiple character wildcard and the @qq<=> is a single character
  598. wildcard.
  599.  
  600. The default disk drive is used for file transfers this can be changed with the
  601. 'SET DEFAULT-DISK'(DOS) or 'SET PREFIX'(PRODOS) command (explained below).  As
  602. a file is being sent, the screen displays 'RECEIVING NUMBER OF BYTES' and
  603. 'SENDING NUMBER OF BYTES' with the decimal number of bytes
  604. transferred since start of transmission.
  605. If a packet must be transmitted several times and it reaches the maximum retry
  606. count, the transfer will fail and the 'Kermit-65>' prompt will return. If the
  607. remote Kermit sends an error packet, the text of the packet will be displayed
  608. on the screen, the transfer will fail, and the prompt will return.  Currently,
  609. a packet can be retransmitted manually by typing anything on the keyboard. If a
  610. 'Q' is typed, the entire transmission will be aborted.
  611.  
  612. @subsection<The SERVER Command>
  613. @index<SERVER Command>
  614. Syntax: @q<SERVER>
  615.  
  616. Typing SERVER alone turns Kermit into a file server to a remote Kermit.
  617. Currently server mode will handle remote "send", "get", "remote" and "fin"
  618. commands.  Variants of the above commands will probably work but file serving
  619. is very limited at present.  Because the Apple requires knowledge of file types
  620. you can use the "remote Kermit" (or whatever the remote Kermit's syntax is)
  621. command to set the file-type on the server.  Yes, the server will execute any
  622. command so you can really get the server into trouble (this is not a BBS).  You
  623. must have the appropriate file type set before transferring files.  You can exit
  624. server mode by typing Control-C (@q<^C>) when not doing file transfers or the
  625. remote can of course terminate via the "fin" command.
  626. @index<control-c>
  627.  
  628. @begin(text,need 28)
  629. @subsection(The SET Command)
  630. @end(text)
  631. @index<SET Command>
  632. Syntax: @q<SET >@i<parameter>@q< [>@i<option>@q< [>@i<value>@q<]]>
  633.  
  634. Establish or modify various parameters for file transfer or terminal
  635. connection.  You can examine their values with the SHOW command.  The following
  636. parameters may be SET:
  637. @blankspace(1)
  638. @Begin(Format,spread 0,need 5)
  639. @tabclear()@tabset(2.0inches)
  640. @>APPLICATION-MODE@\ @ @ Set VT100 gs keypad in/out of application mode.
  641. @>BAUD@\ @ @ Which baud rate should the com card use?
  642. @>CLEAR-SCREEN@\ @ @ Should screen be cleared when returning from connect?
  643. @>CURSOR-KEYS-VT100@\ @ @ In VT100 mode cursor keys give VT100 sequences.
  644. @>DEBUGGING@\ @ @ TERSE or VERBOSE packet information.
  645. @>DEFAULT-DISK@\ @ @ Which Diskette drive is used for DOS 3.3 file transfer?
  646. @>DISPLAY@\ @ @ Which type of screen display is being used?
  647. @>ESCAPE@\ @ @ Character for terminal connection.
  648. @>FILE-TYPE@\ @ @ Type of Apple file being sent/received.
  649. @>FILE-WARNING@\ @ @ Warn users if incoming file exists?
  650. @>FLOW@\ @ @ Should xon/xoff flow control be used to the remote?
  651. @>KEYBOARD@\ @ @ II+ or //e keyboard.
  652. @>LOCAL-ECHO@\ @ @ Full or half duplex switch.
  653. @>PARITY@\ @ @ Character parity to use
  654. @>PREFIX@\ @ @ Which default prefix to use with PRODOS?
  655. @>PRINTER@\ @ @ Should the printer be used for the display?
  656. @>PROTOCOL@\ @ @ Which protocol is to be used for file transfer.
  657. @>RECEIVE@\ @ @ Various parameters for receiving files
  658. @>SEND@\ @ @ Various parameters for sending files
  659. @>SLOT@\ @ @ Which slot # is communication device in?
  660. @>SWAP@\ @ @ Swap the del and backspace key?
  661. @>TIMER@\ @ @ Should Kermit observe the receive timeout value?
  662. @>TIMING@\ @ @ Change the time loop for 1 ms. delays.
  663. @>TERMINAL@\ @ @ Which type of terminal should Kermit emulate?
  664. @end<format>
  665.  
  666. @subh<SET APPLICATION-MODE>
  667. @index<SET APPLICATION-MODE>
  668. Syntax: @q<SET APPLICATION-MODE {ON, OFF}>
  669.  
  670. For VT100 emulation with a gs keypad you can set the keypad in or out of
  671. application mode. Some computer systems set this via escape sequences so it may
  672. not be necessary to use this command.
  673.  
  674. @subh<SET BAUD>
  675. @index<SET BAUD>
  676. Syntax: @q<SET BAUD >@i<value>
  677.  
  678. Value is the baud rate for your communication card.  For the super serial and
  679. the microtek it can be 300 to 19200.  The actual values will depend upon the
  680. com card you are running with.
  681.  
  682. @subh<SET CLEAR-SCREEN>
  683. @index<SET CLEAR-SCREEN>
  684.  
  685. Syntax: @q<SET CLEAR-SCREEN {ON, OFF}>
  686.  
  687. When returning from a connect the screen will be cleared if on. This is for
  688. a //e or better machine.
  689.  
  690. @subh<SET CURSOR-KEYS-VT100>
  691. @index<SET CURSOR-KEYS-VT100>
  692.  
  693. Syntax: @q<SET CURSOR-KEYS-VT100 {ON, OFF}>
  694.  
  695. In VT100 emulation the cursor keys can also emulate the VT100 cursor keys.
  696.  
  697. @subh<SET DEBUGGING>
  698. @index<SET DEBUGGING>
  699.  
  700. Syntax: @q<SET DEBUGGING {TERSE, VERBOSE, OFF}>
  701.  
  702. Record the packet traffic on your terminal.  Options are: TERSE, Show packet
  703. info only (brief).  VERBOSE displays packet field descriptions with packet info
  704. (lengthy).  OFF disables display of debugging information (this is the
  705. default).
  706.  
  707. @subh<SET DEFAULT-DISK>
  708. @index<SET DEFAULT-DISK>
  709. Syntax: @q<SET DEFAULT-DISK {SLOT, VOLUME, DRIVE} >@i<value>
  710.  
  711. This DOS command will tell Kermit-65 which disk drive should be used for
  712. file transfers.  The three parameters which may be set separately are SLOT,
  713. VOLUME and DRIVE.  The value for SLOT ranges from 1 to 7. The value for DRIVE
  714. is either 1 or 2.  The value for VOLUME ranges from 0 to 255.
  715.  
  716. @subh<SET DISPLAY>
  717. @index<SET DISPLAY>
  718.  
  719. Syntax: @q<SET DISPLAY {2E, 2P} >@*
  720. @q<@ @ @ @ >@i<or>@ @q<SET DISPLAY 80-COL >@i<number>
  721.  
  722. This command will tell Kermit-65 which kind of screen display you want to use.
  723. If you have an Apple II or II+ without an 80 column card, use the first syntax.
  724. If you have any kind of an Apple with an 80 column card, enter: SET DISPLAY 80,
  725. followed by a space and the slot number where the card resides (if you don't
  726. know the slot number, or the card is built-in to the set, try 3 ).
  727.  
  728. @subh<SET ESCAPE>
  729. @index<SET ESCAPE>
  730. Syntax: @q<SET ESCAPE >@i<hexadecimal-number>
  731.  
  732. Specify the control character you want to use to "escape" from remote
  733. connections back to Kermit-65.  The default is 0 (Control-@q<@@>).  The number
  734. is the hex value of the ASCII control character, 1 to 37, for instance 2 is
  735. Control-B, B is Control-K.
  736.  
  737. @subh(SET FILE-TYPE)
  738. @index(SET FILE-TYPE)
  739. Syntax: @q<SET FILE-TYPE {APPLESOFT, INTEGER, TEXT, BINARY, OTHER >@~
  740. @i<hex-value>@q<}>
  741.  
  742. This will inform Kermit-65 what type of file is being sent or received. It is
  743. important that this is set correctly since Kermit-65 must create a file of the
  744. appropriate type when receiving. With the advent of file attributes
  745. (if the other kermit does them) this has been improved somewhat but since 
  746. file attributes
  747. usually only knows about text and binary one may endup with the wrong type.
  748. So keep your type changing utility handy.
  749. When Kermit-65 is sending, it will know the type of file but again be careful
  750. of file attributes (assuming the other kermit does them) for the file may
  751. end up as binary on the other end.
  752. The keywords for this
  753. parameter are listed below.  OTHER includes an added hex-value so that the user
  754. may specify the hex value of the file-type.  This has meaning only in PRODOS
  755. and allows the user to specify any of the many different file types used in
  756. PRODOS, see Tables @ref(-ftother) and @ref(-ft2) (thanks to Phil Chien, M L
  757. Stier et al).
  758.  
  759. @begin<description,spread 0.5, leftmargin +20, indent -16>
  760. APPLESOFT@\The file being transferred is an Applesoft Basic program.
  761.  
  762. INTEGER@\The file being sent/received is an Integer Basic program.
  763.  
  764. TEXT@\The file being sent/received is an ASCII Text file.
  765.  
  766. BINARY@\The file being sent/received is a Binary image.
  767.  
  768. OTHER@\The type of file being sent/received is specified by the hex-value.
  769. @end<description>
  770. @index<applesoft>
  771. @index<integer>
  772. @index<text>
  773. @index<binary>
  774. @index<other>
  775.  
  776. @subh<SET FILE-WARNING>
  777. @index<SET FILE-WARNING>
  778. Syntax: @q<SET FILE-WARNING {ON, OFF}>
  779.  
  780. This tells Kermit-65 whether to warn the user about incoming filenames
  781. conflicting with existing files or not.  If there is a conflict Kermit-65 will
  782. attempt to change the file name to something unique.
  783.  
  784. @subh<SET FLOW>
  785. @index<SET FLOW>
  786. Syntax: @q<SET FLOW 
  787. {OFF, XON, DELAY >@i<number>@q<}>
  788.  
  789. SET FLOW allows one to use the XON/XOFF protocol when connected to a remote
  790. site.  Delay timings are part of this command.  Using delay times is probably a
  791. desperation move to keep the screen/printer from losing characters.  Setting
  792. the timings will have to be set by experience.  Perhaps the best way to set the
  793. timings is to bring the values down until you get failures and then double the
  794. timing figure.  Both LOG and SET PRINTER will probably depend on flow control.
  795. @begin<description,spread 0.5, leftmargin +20, indent -16>
  796. OFF@\Turn off flow control
  797.  
  798. XON@\Turn on xon/xoff flow control with the remote
  799.  
  800. DELAY @i<number>@\Delay the micro until XOFF takes effect
  801. @end<description>
  802. @index<delay>
  803.  
  804. Delay followed by a number (including 0) delays the program for that many
  805. milliseconds after the XOFF is given to the remote.  This delay allows the XOFF
  806. to take effect before the program continues.
  807.  
  808. NOTE:  Except for printing and logging, most Apples will not require you to
  809.         use a flow delay, even at rates up thru 19200 baud; for proper screen
  810.         control, however, certain older Apple IIe's may require a fairly high
  811.         delay (120-160 dec), even at 300 baud.
  812.  
  813. @subh<SET KEYBOARD>
  814. @index<SET KEYBOARD>
  815. Syntax: @q<SET KEYBOARD {2P, 2E}>
  816.  
  817. SET KEYBOARD tells Kermit-65 if the user has a full keyboard (2E) or not
  818. (2P).  If the user is on an Apple II+, this should be set to 2P (which is the
  819. default).  When set to that, character translations are available by
  820. using the right-arrow key as a prefix character, as shown in Table
  821. @ref<-k65keys>.
  822.  
  823. @subh<SET LOCAL-ECHO>
  824. @index<SET LOCAL-ECHO>
  825.  
  826. Syntax: @q<SET LOCAL-ECHO {ON,OFF}        [Default: OFF]>
  827.  
  828. This command tells Kermit-65 to echo to the screen characters you type on the
  829. keyboard  (LOCAL-ECHO = ON),  or  to  let  the remote system echo the typed
  830. characters  (LOCAL-ECHO = OFF).  If, when CONNECTed to the remote, you see a
  831. duplicate of every character you type, escape back to Kermit-65, and SET
  832. LOCAL-ECHO OFF. If, when CONNECTed to the remote, you see nothing echoed to the
  833. screen, escape back to Kermit-65, and SET LOCAL-ECHO ON.
  834.  
  835.  
  836. @subh<SET PARITY>
  837. @index<SET PARITY>
  838.  
  839. Syntax: @q<SET PARITY {NONE, EVEN, ODD, MARK, SPACE}      [Default: NONE]>
  840.  
  841. This command tells Kermit-65 which parity you want to use while communicating
  842. with the remote.  Most remotes use NONE; some use EVEN, a few may use the other
  843. possible values. If you have a choice of parity to use with a remote machine,
  844. if possible, choose NONE.
  845.  
  846. @subh<SET PREFIX>
  847. @index<SET PREFIX>
  848.  
  849.  
  850. Syntax: @q<SET PREFIX  string        [Default: boot volume]>@*
  851. @q<@ @ @ @ >@i<or>@ @q<CD  string>
  852. @index<CD Command>
  853.  
  854. This command allows you to specify a ProDOS volume/file prefix.
  855.  
  856. @subh<SET PRINTER>
  857. @index<SET PRINTER>
  858. Syntax: @q<SET PRINTER {ON, SLOT} >@i<number>@*
  859. @q<@ @ @ @ >@i<or>@ @q<SET PRINTER OFF>
  860.  
  861. This allows one to turn the printer on for printing what is displayed on the
  862. screen.
  863. The printer can also be toggled on/off via the
  864. ESCAPE character followed by the command "P".
  865.  
  866. Remember when you use your printer there are a lot of variables here. What was
  867. being sent to the screen now is being sent to your printer.  If you were
  868. emulating the VT52 your printer may not know how to handle the escape
  869. sequences, tabs, etc. It may be you can tell the host you are a tty or some
  870. such device that will produce control codes that your printer can handle.
  871. Some printers may require the flow control and delay to get readable printing.
  872. @begin<description,spread 0.5, leftmargin +20, indent -16>
  873. ON@\Turn the printer on, slot number is required.
  874.  
  875. OFF@\Turn the printer off.
  876.  
  877. SLOT @i<number>@\Printer card is in slot "number".
  878. @end<description>
  879.  
  880. @subh<SET PROTOCOL>
  881. @index<SET PROTOCOL>
  882. Syntax: @q<SET PROTOCOL {KERMIT, XMODEM}>
  883.  
  884. SET PROTOCOL tells kermit-65 which protocol to use for file transfer.
  885. NOTE: When XMODEM is used you will probably want to change the carriage return
  886. and carriage return/line feed translation in the send/receive parameters.
  887. eg. "SET SEND CR<->CR,LF OFF" and "SET RECEIVE CR<->CR,LF OFF".
  888. @index<xmodem>
  889. @index<kermit>
  890.  
  891. @subh(SET RECEIVE)
  892. @index(SET RECEIVE)
  893. Syntax: @q<SET RECEIVE {CR-CR,LR, EIGHT-BIT-QUOTE, END-OF-LINE, PACKET-LENGTH, PAD-CHAR, PADDING, QUOTE-CHAR, START-OF-PACKET, TIMEOUT}>
  894.  
  895. This will inform Kermit what to use to form and handle
  896. receive packets for 
  897. file transfer.
  898.  
  899. @begin<description,spread 0.5, leftmargin +20, indent -16>
  900. CR<->CR,LF@\{ON, OFF}@\Terminate lines with cr or cr and lf.
  901.  
  902. EIGHT-BIT-QUOTE@\@i<hexadecimal-number>@\Char for eighth bit quoting.
  903.  
  904. END-OF-LINE@\@i<hexadecimal-number>@\Char for line termination.
  905.  
  906. PACKET-LENGTH@\@i<hexadecimal-number>@\Size of packet.
  907.  
  908. PAD-CHAR@\@i<hexadecimal-number>@\Char for padding.
  909.  
  910. PADDING@\@i<hexadecimal-number>@\Number of padding chs.
  911.  
  912. QUOTE-CHAR@\@i<hexadecimal-number>@\Char for quoting.
  913.  
  914. START-OF-PACKET@\@i<hexadecimal-number>@\Char for start of packet.
  915.  
  916. TIMEOUT@\@i<hexadecimal-number>@\Number of seconds for timeout.
  917.  
  918. @end<description>
  919. @index<cr-cr,lf>
  920. @index<eight-bit-quote>
  921. @index<end-of-line>
  922. @index<packet-length>
  923. @index<pad-char>
  924. @index<padding>
  925. @index<quote-char>
  926. @index<start-of-packet>
  927. @index<timeout>
  928.  
  929. @subh(SET SEND)
  930. @index(SET SEND)
  931. Syntax: @q<SET SEND {CR-CR,LR, EIGHT-BIT-QUOTE, END-OF-LINE, PACKET-LENGTH, PAD-CHAR, PADDING, QUOTE-CHAR, START-OF-PACKET, TIMEOUT}>
  932.  
  933. This will inform Kermit what to use to form and handle 
  934. send packets for 
  935. file transfer. The options are the same as the "SET RECEIVE ..." packets.
  936.  
  937. @subh<SET SLOT>
  938. @index<SET SLOT>
  939. Syntax: @q<SET SLOT >@i<number>
  940.  
  941. This option tells Kermit-65 in which slot the communication device is located.
  942. The range for the number parameter is 1-7.
  943.  
  944. @subh<SET SWAP>
  945. @index<SET SWAP>
  946. Syntax: @q<SET SWAP {ON, OFF}>
  947.  
  948. This option tells Kermit-65 to swap the functions of the del and backspace
  949. keys.
  950. @index<del key>
  951. @index<backspace key>
  952.  
  953. @subh<SET TIMER>
  954. @index<SET TIMER>
  955.  
  956. Syntax: @q<SET TIMER {ON, OFF}>
  957.  
  958. SET TIMER will turn on or off the timeout checking for receive file transfers.
  959. Since there is no clock for exact timing a loop of instructions has been set up
  960. assuming a 1 megacycle CPU.  CPUs which run faster may have to make allowances
  961. via the SET RECEIVE TIMEOUT command or the SET TIMING command.
  962.  
  963.  
  964. @subh<SET TIMING>
  965. @index<SET TIMING>
  966.  
  967. Syntax: @q<SET TIMING { number }>
  968.  
  969. Kermit uses a timing loop with the rom address $fca8 to produce a 1 ms.
  970. delay. If you have a machine that runs faster than the 6502 chip you may have
  971. to increase this number to get the 1 ms delay.
  972. @index<delay>
  973.  
  974. @subh<SET TERMINAL>
  975. @index<SET TERMINAL>
  976. Syntax: @q<SET TERMINAL {MONITOR, NONE, VT100, VT52}>
  977.  
  978. When TERMINAL is NONE, then all incoming characters (except nulls) are passed
  979. directly to the display.
  980.  
  981. MONITOR emulation simply displays all the characters received from the remote
  982. (except nulls) without any formatting of the screen (40 or 80 characters per
  983. line).  Control characters are displayed inverse.
  984. @index<monitor>
  985.  
  986. @subu(VT100 Emulation)@index<VT100 Emulation>
  987.  
  988. @index<vt100>
  989. The Kermit-65 VT100 emulator is a small but working set of a true VT100
  990. terminal.  It appears to work with most of the standard full screen editors and
  991. processors on BSD UNIX and VAX/VMS machines.  An Apple//e, //c, or //gs is
  992. probably required with the Apple 80 column text card.
  993. The VT100
  994. keypad has also been defined for the application mode via the OA/CA/game
  995. button.  Figure @ref<-k65k1> shows the vt100 keypad on an apple keyboard
  996. with EDIT (VMS) usage, and
  997. Figure @ref<-k65k2> shows the layout on an Apple//gs keypad.
  998. When using EVE (VMS) the meaning of the keys will of course change.
  999. @Index<Apple II Keypad>
  1000.  
  1001. As you can see the keypad is physically laid out like the VT100 keypad except
  1002. for the lower right corner.  Notice that above the keys are the VT100 labels
  1003. while
  1004. in middle of the box (key) is the Apple key label.  Also the arrow keys work as
  1005. VT100 arrow keys with the OA/CA/game button.
  1006. @index<OA key>
  1007. @index<CA key>
  1008. @index<game button>
  1009.  
  1010. @begin(figure)
  1011. @bar()
  1012. @blankspace(1)
  1013. @begin<example>
  1014.                      PF1     PF2     PF3     PF4     .(period)
  1015.                    ------- ------- ------- ------- -------
  1016.                   |       |       |findnxt|delline|select |
  1017.                   |   6   |   7   |   8   |   9   |   0   |
  1018.                   | gold  | help  | find  |undelln| reset |
  1019.                    ------- ------- ------- ------- -------
  1020.                         7       8       9       -
  1021.                       ------- ------- ------- -------
  1022.                      | page  |section|append |delword|
  1023.                      |   Y   |   U   |   I   |   O   |
  1024.                      |command| fill  |replace|undelwd|
  1025.                       ------- ------- ------- -------
  1026.  vt100 key ---->            4       5       6       ,
  1027.                          ------- ------- ------- -------
  1028.  vms edit usage ---->    |advanc|backup |  cut  |delchar|
  1029.  apple key ---->         |  H   |   J   |   K   |   L   |
  1030.  vms edit usage ---->    |bottom|  top  | paste |undelch|
  1031.                          ------- ------- ------- -------
  1032.                               1       2       3       ENTER
  1033.                             ------- ------- ------- -------
  1034.                            | word  |  eol  | char  | enter |
  1035.                            |   N   |   M   |   ,   |   .   |
  1036.                            |chgcase|deleol |specins|  sub  |
  1037.                             ------- ------- ------- -------
  1038.                                   0
  1039.       ---------------------------------------
  1040.                                   bline      |
  1041.            space bar                         |
  1042.                                  openline    |
  1043.       ---------------------------------------
  1044. @end<example>
  1045. @caption(VT100 Keypad on an Apple Keyboard)
  1046. @tag<-k65k1>
  1047. @bar()
  1048. @end(figure)
  1049.  
  1050. @begin(figure)
  1051. @bar()
  1052. @blankspace(1)
  1053. @begin<example>
  1054.                      PF1     PF2     PF3     PF4
  1055.                    ------- ------- ------- -------
  1056.                   |       |       |findnxt|delline|
  1057.                   | CLEAR |   =   |   /   |   *   |
  1058.                   | gold  | help  | find  |undelln|
  1059.                    ------- ------- ------- -------
  1060.                      7       8       9       -
  1061.                    ------- ------- ------- -------
  1062.                   | page  |section|append |delword|
  1063.                   |   7   |   8   |   9   |   +   |
  1064.                   |command| fill  |replace|undelwd|
  1065.                    ------- ------- ------- -------
  1066.  vt100 key ---->      4       5       6       ,
  1067.                    ------- ------- ------- -------
  1068.  vms edit usage ->| advanc|backup |  cut  |delchar|
  1069.  gs key ------->  |   4   |   5   |   6   |   -   |
  1070.  vms edit usage ->| bottom|  top  | paste |undelch|
  1071.                    ------- ------- ------- -------
  1072.                      1       2       3       ENTER
  1073.                    ------- ------- ------- -------
  1074.                   | word  |  eol  | char  |       |
  1075.                   |   1   |   2   |   3   |       |
  1076.                   |chgcase|deleol |specins|       |
  1077.                    ------- ------- -------| enter |
  1078.                           0          .    | ENTER |
  1079.                    -----------------------|  sub  |
  1080.                   |    bline      |select |       |
  1081.                   |      0        |   .   |       |
  1082.                   |  openline     | reset |       |
  1083.                    -------------------------------
  1084. @end<example>
  1085. @caption(VT100 Keypad on an Apple//gs)
  1086. @tag<-k65k2>
  1087. @bar()
  1088. @end(figure)
  1089.  
  1090. @subu<VT52 Emulation>@index<VT52 Emulation>
  1091.  
  1092. @index<vt52>
  1093. SET TERMINAL VT52 will turn on the VT52 terminal emulation.  One thing
  1094. that is required is your 80-column card must handle the $16 command in order
  1095. for reverse scrolling to work.  The Apple//e 80 column card handles this fine.
  1096. The VT52 keypad has been defined using the open/closed Apple.  For II or
  1097. II+ one will have to have a game paddle or joy stick (key shift mod too????)
  1098. and use the buttons.  When a button/open/closed Apple is pushed then the keys
  1099. starting with 6,7,8 & 9 form the top of the keypad. Key 6 is the blue key key 7
  1100. is the red key etc. The keys directly below the 6,7,8 & 9 and shifted one-half
  1101. key to the right form the second row of the keypad etc. Every thing is fine
  1102. until you get to the last row on the keypad. There the sp bar is 0 and the
  1103. other two keys are moved to the upper right as the 0 & - keys.  This way the
  1104. arrow keys are available as VT52 keys with the OA/CA/game button combination
  1105. (thanks to Dick Atlee for this idea).  With those two exceptions the keypad is
  1106. physically similar to a VT52 keypad.  Remember the open/closed Apple or the
  1107. game button must be pushed (like the control key) to get the keypad emulation.
  1108. Figure @ref<-k65k3> should clear up the questions.
  1109. @index<OA key>
  1110. @index<CA key>
  1111. @index<game button>
  1112.  
  1113. @begin(figure)
  1114. @bar()
  1115. @blankspace(1)
  1116. @begin<example>
  1117.   ^ is up arrow    BLUE     RED     GRAY     ^    .(period) ENTER
  1118.                    ------- ------- ------- ------- ------- -------
  1119.                   |       |       |delline|  up   |select | enter |
  1120.           |   6   |   7   |   8   |   9   |   0   |   -   |
  1121.                   | gold  | help  |undelln|replace| reset |  sub  |
  1122.                    ------- ------- ------- ------- ------- -------
  1123.     v is down arrow     7       8       9       v
  1124.                       ------- ------- ------- -------
  1125.                      | page  |findnxt|delword| down  |
  1126.                      |   Y   |   U   |   I   |   O   |
  1127.                      |command| find  |undelwd|section|
  1128.                       ------- ------- ------- -------
  1129.      vt52 key ---->         4       5       6       ->
  1130.                          ------- ------- ------- -------
  1131.   vms edit usage ---->   |advanc|backup |delchar| right |
  1132.      apple key ---->     |  H   |   J   |   K   |   L   |
  1133.   vms edit usage ---->   |bottom|  top  |undelch|specins|
  1134.                          ------- ------- ------- -------
  1135.                               1       2       3      <-
  1136.                             ------- ------- ------- -------
  1137.                            | word  |  eol  |  cut  | left  |
  1138.                            |   N   |   M   |   ,   |   .   |
  1139.                            |chgcase|deleol | paste |append |
  1140.                             ------- ------- ------- -------
  1141.                                  0
  1142.       ---------------------------------------
  1143.                                   bline      |
  1144.            space bar                         |
  1145.                                  openline    |
  1146.       ---------------------------------------
  1147. @end<example>
  1148. @caption(VT52 Keypad on an Apple Keyboard)
  1149. @tag<-k65k3>
  1150. @bar()
  1151. @end(figure)
  1152.  
  1153. @subsection<the SHOW command>
  1154. @index<SHOW command>
  1155. Syntax: @q<SHOW [>@i<option>@q<]>
  1156.  
  1157. The SHOW command displays various information:
  1158. @begin<description,spread 0.5, leftmargin +28, indent -24>
  1159. ALL@\All parameter settings (this is quite long).
  1160.  
  1161. BAUD@\Baud rate of the com card.
  1162.  
  1163. APPLICATION-MODE@\Keypad in application mode?
  1164.  
  1165. CLEAR-SCREEN@\Clear screen on return from connect?
  1166.  
  1167. CURSOR-KEYS-VT100@\Are the cursor keys emulating the VT100 cursor keys?
  1168.  
  1169. DEBUGGING@\Debugging mode.
  1170.  
  1171. DEFAULT-DISK@\Which Diskette drive is used for file transfer?
  1172.  
  1173. DEVICE-DRIVER@\Which communication device is being used?
  1174.  
  1175. DISPLAY@\Which screen display is being used?
  1176.  
  1177. ESCAPE@\Character for terminal connection.
  1178.  
  1179. FILE-TYPE@\Of Apple DOS/PRODOS file being sent/received.
  1180.  
  1181. FILE-WARNING@\Warn users if incoming file exists?
  1182.  
  1183. FLOW@\Should XON/XOFF flow control be used to the remote?
  1184.  
  1185. KEYBOARD@\II+ or //e keyboard.
  1186.  
  1187. LOCAL-ECHO@\Full or half duplex switch.
  1188.  
  1189. LOG@\Are we logging connect data?
  1190.  
  1191. PARITY@\Character parity to use
  1192.  
  1193. PREFIX@\Which default prefix to use with PRODOS? Alias PWD.
  1194.  
  1195. PRINTER@\Should the printer be used for the display?
  1196.  
  1197. PROTOCOL@\Which protocol is to be used for file transfer.
  1198.  
  1199. RECEIVE@\Various parameters for receiving files
  1200.  
  1201. SEND@\Various parameters for sending files
  1202.  
  1203. SLOT@\Which slot # is communication device in?
  1204.  
  1205. SWAP@\Swap the del and backspace keys?
  1206.  
  1207. TIMER@\Is the receive timeout on or off?
  1208.  
  1209. TIMING@\Count for timing loop
  1210.  
  1211. TERMINAL@\Which terminal (if any) should Kermit emulate?
  1212.  
  1213. VOLUMES@\Show the online volumes.
  1214. @end<description>
  1215. The above options are analogous to the equivalent SET commands.
  1216.  
  1217. @subsection<The STATUS Command>
  1218. @index<STATUS Command>
  1219. Syntax: @q<STATUS>
  1220.  
  1221. Give statistics about the most recent file transfer. This includes information
  1222. such as number of characters sent/received, number of data characters
  1223. sent/received, and last error encountered.
  1224.  
  1225. @subsection(The TAKE Command)
  1226. @index(TAKE Command)
  1227. Syntax: @q<TAKE >@i<filespec>
  1228.  
  1229. The TAKE commands tells kermit-65 to execute commands from the specified
  1230. file similarly to the KERMIT.INIT file. See discussion on KERMIT.INIT above
  1231. for details.
  1232.  
  1233. @subsection(The TYPE Command)
  1234. @index(TYPE Command)
  1235. Syntax: @q<TYPE >@i<filespec>
  1236.  
  1237. The TYPE commands tells kermit-65 to print to the screen from the specified
  1238. file. Text files only and works best with 80 characters per line or less.
  1239.  
  1240. @subsection(The UNLOCK Command)
  1241. @index(UNLOCK Command)
  1242. Syntax: @q<UNLOCK >@i<filespec>
  1243.  
  1244. UNLOCK will unlock the given filespec on the default drive.
  1245.  
  1246. @section<Installation>
  1247.  
  1248. @subsection<Standard Installation>
  1249.  
  1250. To bootstrap Kermit to prodos, get the file @q<APPPRO.BNS>
  1251. on a apple diskette.
  1252. Use binscii to convert this file into a shrinkit file. Use shrinkit
  1253. to extract the files onto a prodos diskette with your own prodos
  1254. and basic.system files. Then "-read.me" for further
  1255. instructions. Thanks to Les Ferch for this install system & thanks to 
  1256. Bird for his "birds better bye" in the menu.system.
  1257. For dos 3.3 get the files @q<APP387.[1-2]> on a
  1258. master diskette then read the first of app387.1 for further instructions.
  1259. Thanks to Alan Kalker for this install system.
  1260. @index<readme>
  1261. @index<install>
  1262.  
  1263. The kermit binaries will run on either system.
  1264. Simply use the PRODOS conversion routines (if they have them fixed,
  1265. better to use copy II+ or whatever) to move
  1266. @q<kermit>, @q<kermit.help> and @q<kermit.init>
  1267. files.  If you want other options as a regular thing then you can
  1268. change file @q<kermit.init> with your
  1269. favorite editor.
  1270. @index<kermit.help>
  1271. @index<kermit.init>
  1272.  
  1273. @subh<Files Supplied for Kermit-65>
  1274.  
  1275. The following files should be supplied on the columbia distribution tape:
  1276. @begin<format,leftmargin +4>
  1277. @tabclear()@tabset(1.5inch)
  1278. @q<APP387.1>@\Install system for dos 3.3 (1 of 2)
  1279. @q<APP387.2>@\Install system for dos 3.3 (2 of 2)
  1280. @q<APPAAA.HLP>@\List of files (like this one)
  1281. @q<APPAAA.NEW>@\Whats new in this release
  1282. @q<APPACC.HEX>@\Apple com card hex
  1283. @q<APPACC.M65>@\Apple com card source
  1284. @q<APPACE.HEX>@\Ace dual card hex
  1285. @q<APPACE.M65>@\Ace dual card source
  1286. @q<APPBEL.BNS>@\Apple gs alternate bell
  1287. @q<APPCAT.HEX>@\Apple cat hex
  1288. @q<APPCAT.M65>@\Apple cat source
  1289. @q<APPCCS.HEX>@\CCS 7710 com card hex
  1290. @q<APPCCS.M65>@\CCS 7710 com card source
  1291. @q<APPCPS.HEX>@\CPS com card hex
  1292. @q<APPCPS.M65>@\CPS com card source
  1293. @q<APPGS.HEX>@\GS serial port hex
  1294. @q<APPGS.M65>@\GS serial port source
  1295. @q<APPHMM.HEX>@\Hayes micro modem card hex
  1296. @q<APPHMM.M65>@\Hayes micro modem card source
  1297. @q<APPICON.BNS>@\Kermit icon for gs users
  1298. @q<APPLE.DOC>@\Complete documentation (it says here)
  1299. @q<APPLE.MSS>@\Scribe text formatter source for documentation
  1300. @q<APPLE.PS>@\Documentation ready for a postscript printer
  1301. @q<APPMAI.HEX>@\Main kermit pgm hex
  1302. @q<APPMAI.M65>@\Main kermit pgm source
  1303. @q<APPMAK.UNX>@\Make file for UNIX cross assembly (to assemble Kermit)
  1304. @q<APPMSV.HEX>@\Microtec com card hex
  1305. @q<APPMSV.M65>@\Microtec com card source
  1306. @q<APPPRO.BNS>@\Install system for prodos
  1307. @q<APPSSC.HEX>@\Super serial com card hex
  1308. @q<APPSSC.M65>@\Super serial com card source
  1309. @q<APPXAS.1>@\65c02 cross assembler for UNIX system part 1
  1310. @q<APPXAS.2>@\65c02 cross assembler for UNIX system part 2
  1311. @q<APPXAS.3>@\65c02 cross assembler for UNIX system part 3
  1312. @end<format>
  1313. The syntax of the filenames may vary.  On UNIX systems, the filenames will be
  1314. in lowercase.  On VM/CMS systems, the period will be replaced by a space.
  1315. All files are text, however the suffix of BNS are binsciied binary files.
  1316.  
  1317. @subsection<Alternate Installation>
  1318.  
  1319. The main problem exists in getting the hex files onto your diskette as a text
  1320. file.  But again that is a test of your creativity. If you have a version of
  1321. Kermit running then GET or RECEIVE the file as a text file and you are in
  1322. business.  Since Kermit has been separated into two assemblies then two hex
  1323. files will have to be present on the diskette. Get the main hex file
  1324. @q<APPMAI.HEX> and select which com card hex you will need. First "@q<exec
  1325. APPMAI.HEX>".  Your Apple (or compatible) will go into monitor and show you
  1326. @q<*>'s for several minutes.  This is the monitor loading the hex into binary.
  1327. If you get beeps from the monitor its probably because you didn't get a good
  1328. copy of the text file.  Now EXEC the com card driver you are going to use.  You
  1329. will have to get back into basic(aha another test for you, try "3d0G") to do
  1330. this.  And you will see the monitor loading the com driver. The order of EXEC's
  1331. is important.  The com card should be loaded last.  Next get back into basic
  1332. and do a "@q<bsave kermit,A$1000,L$7400>".  You may have to specify the drive
  1333. to do this binary save, with a slot or drive on the end of the BSAVE (aha
  1334. another test).  You now run Kermit via "@q<brun kermit>".
  1335.  
  1336. If you want to customize Kermit for your needs, the recommended method is
  1337. to use file "kermit.init"
  1338. OR do all your SETs, etc, and
  1339. then do an "exit".  Now you should be back in BASIC.  At this point do a
  1340. "@q<bsave >@i<name>@q<,A$1000,L$7400>" and when you do a "@q<brun >@i<name>"
  1341. all your setups will be remembered.  NOTE: If you save your current settings
  1342. via "@q<bsave kermit ...>" you may find that moving that binary to another type
  1343. of Apple (e.g. from a //e to an //e+) will not be possible.  So make sure you
  1344. keep the original binary to move between machine types.
  1345.  
  1346. Since the org is now $1000 if you have been using Kermit and then went back to
  1347. basic for some trivial thing a "CALL 4096" should start up Kermit without
  1348. having to reload it.
  1349.  
  1350. In summary:
  1351. @begin<enumerate,spread 0.5>
  1352. @q<EXEC APPMAI.HEX>
  1353.  
  1354. Choose the com card driver you will use.  For example @q<APPSSC.HEX>.
  1355.  
  1356. @q<3D0G>
  1357.  
  1358. @q<EXEC APPSSC.HEX>
  1359.  
  1360. @q<BSAVE kermit,A$1000,L$7400>
  1361. @end<enumerate>
  1362. And you should be in business.  Remember there is the command HELP and
  1363. whenever you are into a command a "?" will give you the possible options
  1364. available at that point of a command.  The escape key will finish typing an
  1365. option if it is possible. The syntax of all the commands and options only
  1366. requires enough characters to make that command or option unique.
  1367.  
  1368. @section<Problems>
  1369.  
  1370. @subh<Installation>
  1371.  
  1372. NOTE: When using the super serial driver you must have the cards sw6-2
  1373. on.  This allows the card to use interrupts. The rest of the switches are set
  1374. from within Kermit. It appears that you can run your Apple 2 with sw6-2 on and
  1375. in 99% of the cases will cause no problems.  This is because the OS runs with
  1376. interrupts locked out ("sei" in assembly language) and the program must
  1377. explicitly give a "cli" for interrupts to work (the super serial driver does).
  1378.  
  1379. The AE Serial Pro must have switches 1 & 3 open and 2 & 4 closed. This appears
  1380. to disagree with the documentation since those settings turn off irq interrupts
  1381. and turn on nmi interrupts. So watch this it may get corrected in later versions.
  1382.  
  1383. The Microtek driver is a super serial look alike which does not run with
  1384. interrupts.  If you have trouble with the super serial driver you might try the
  1385. MSV driver.  For you people with the MSV-622c card, you might try running a
  1386. jumper from the UART 6551 pin 26 to the card edge pin 30.  This will enable
  1387. interrupts just like the SSC sw2-6, and then you can use the super serial
  1388. driver.
  1389.  
  1390. The Prometheus card will work with the Apple com driver.  However you will have
  1391. to set the switches on the card for baud etc.  Evidently this card can not be
  1392. programmed by the software. If that is not true then here is an opportunity for
  1393. you to write a better driver. If you do please pass it on for other Prometheus
  1394. users.
  1395.  
  1396. The apple cat uses the modem's firmware for dialing. Type ";" for a 2 second
  1397. delay, or any control character to abort the dialing. ROM is not needed if
  1398. external phone is used for dialing.
  1399. Supports 110-600 baud, and 45.5 baud (use kermit-65's 135 baud setting).
  1400. Supports 1200 baud with apple-cat 212 card, in slot-saver configuration.
  1401. Allows use of external serial port by typing "X" as dialing string.
  1402. Thanks to Dick Wotiz for this driver.
  1403. Reports have it that the Apple Cat will also work with the Apple com
  1404. driver.
  1405.  
  1406. Some have noted the Apple com card must be initialized via the "IN#x"
  1407. before starting Kermit. Ike has now updated this driver and the initialization
  1408. is now done within the Apple com driver.  Thanks Ike.
  1409.  
  1410. @subh<Usage>
  1411.  
  1412. There is the command HELP and whenever you are into a command a "?"  will
  1413. give you the possible options available at that point of a command. The escape
  1414. key will finish typing an option if it is possible. The syntax of all the
  1415. commands and options only requires enough characters to make that command or
  1416. option unique.
  1417.  
  1418. When using flow control you may appear to hang. Type a @q<^Q> (Control-Q) and
  1419. that may free you up.
  1420.  
  1421. Remember when you use your printer there are a lot of variables here.
  1422. What was being sent to the screen now is being sent to your printer.  If you
  1423. were emulating the VT52 your printer may not know how to handle the escape
  1424. sequences, tabs etc. It may be you can tell the host you are a tty or some such
  1425. device that will give carriage returns etc that your printer can handle.  Some
  1426. printers may require the flow control and delay to get readable printing.
  1427.  
  1428. @subh<File Transfer Errors>
  1429.  
  1430. "File Transfer Errors," was added to this document by the
  1431. Southeast Regional Data Center (SERDAC), '88 July 17.
  1432.  
  1433. In spite of the fact that successful Kermit file transfers are almost always
  1434. error free, there are a number of circumstances which can corrupt, prevent, or
  1435. interrupt/abort a transfer.  In the case of an actual abort, there may be data
  1436. loss or corruption, and an incomplete file may not have a correct end-of-file.
  1437. These circumstances may be roughly divided into two groups: (1) problems due to
  1438. file or disk errors, and (2) problems due to delays or failures in Kermit
  1439. packet exchange.
  1440.  
  1441. Common problems in category (1) include the following:
  1442.  
  1443. (a) improper file specification
  1444. (b) wrong file type
  1445. (c) protected file(s)
  1446. (d) disk problems
  1447.  
  1448. (1a) problems can occur when you specify, to either the Apple or host Kermit, a
  1449. non-existent or improperly located file.  Misspelling and/or incorrect
  1450. (sub)directory specification are popular villains!  If you are commanding
  1451. either Kermit to SEND a file  (SEND filespec), the problem will be fairly
  1452. obvious.  On the Apple II, you'll see an error message like: "FILE NOT FOUND."
  1453. On the VAX/VMS 8800, for example, you'll see the message: "%KERMIT32 ....., file
  1454. not found for 'filespec'".  In either case, the transfer will not take place.
  1455. If you're using Kermit-65 to GET (GET filespec) files from the VAX/VMS Kermit
  1456. server, and the requested file does not exist in your VAX default directory,
  1457. you should see a Kermit-32 generated "REMOTE MESSAGE %KERMIT32 ....., file not
  1458. found for 'filespec'" appear in the transmission status display, and then the
  1459. Kermit-65 message "CANNOT RECEIVE FILE-HEAD".  Transfer of the questionable
  1460. file will not take place.
  1461.  
  1462.  
  1463. (1b) problems can occur if you forget to specify, to either the Apple or host
  1464. Kermit, what type of file you wish to transfer.  If you are using Kermit-65 to
  1465. send files to a host, you are fairly well protected against this error.  If you
  1466. attempt to send a file whose CATALOG type does not match the FILE-TYPE
  1467. parameter setting, you will receive a "INCOMPATIBLE FILE FORMAT" error message,
  1468. or something similar, and the transfer will not take place.  If, however, you
  1469. are receiving (via RECEIVE or GET) a file whose native type does not match the
  1470. FILE-TYPE setting, the file WILL be received.  It will be mis-typed (according
  1471. to the FILE-TYPE setting), though, and any later attempt to use it on the Apple
  1472. will probably be unsuccessful.
  1473.  
  1474. The same sort of circumstances generally apply for a host Kermit. With the VAX
  1475. 8800, for example, when Kermit-32 is sending a file, you generally need not
  1476. worry about setting its file type.  When Kermit-32 is receiving a file,
  1477. however, properly setting its file type is very critical.  If you wish to put
  1478. Kermit-32 in server mode to receive multiple files, set the file type BEFORE
  1479. using the SERVER command, and make sure that you only send it the appropriate
  1480. type of files during that server session.  You cannot switch file types DURING
  1481. a given server session!
  1482.  
  1483. NOTE: One other way you can get into trouble with "wrong file type" is by
  1484. trying to send a file which is mixed-- mostly text, but with some embedded
  1485. characters that are not true 7-bit ASCII (i.e., ASCII codes 00-127).  This
  1486. often happens when you are trying to transfer a file which is word processor
  1487. output. Most word processing software claims to allow you to output a true
  1488. ASCII or text file, but in some cases it really does not, and in others the
  1489. choice of output options is confusing.  If you have set up either Kermit
  1490. program to send/receive a text file, and you try to transfer illegal ASCII
  1491. characters (codes 128-256), your transfer may "hang" or be aborted.  At the
  1492. very best, if the transfer "works," the suspect characters will later probably
  1493. be meaningless or confusing to the destination machine.
  1494.  
  1495. (1c) problems can occur in two ways on the Apple II.  If your default drive
  1496. disk is write protected, and you attempt to receive a file, you will receive a
  1497. "WRITE PROTECTED" error message, and no transfer will take place.  If you have
  1498. set Kermit-65's FILE-WARNING parameter to OFF (normally NOT a good idea), and
  1499. you attempt to receive a file that already exists in a locked state on your
  1500. default diskette, you will receive a "FILE LOCKED" error message (if the file
  1501. is very short, you may have to check with a Kermit-65 STATUS command to see the
  1502. error message), and no transfer will take place.
  1503.  
  1504. Similar problems may occur on the host because of various file protection
  1505. schemes.  On the VAX/VMS 8800, for example, Kermit-32 cannot send out a file that
  1506. you are unauthorized to read.  And, it cannot receive a file unless you are
  1507. authorized to write to that filename and its (sub)directory.  If you use
  1508. Kermit-32 to attempt to SEND (SEND filespec) a protected file, you should see a
  1509. "%KERMIT32 .....,  insufficient  privilege  or  file  protection violation for
  1510. 'filespec'" error message, and no transfer will take place.  If you have
  1511. Kermit-32 in server mode, and you are trying to GET a protected file from it,
  1512. or you are trying to SEND it a file whose  space is protected, you should see a
  1513. similar Kermit-32 generated REMOTE MESSAGE appear in the transmission status
  1514. display, and then, on GET, the Kermit-65 message "CANNOT RECEIVE FILE-HEAD".
  1515. Transfer of the protected file will not take place.
  1516.  
  1517. (1d) problems are most likely to occur because of Apple II diskette or drive
  1518. problems.  The following conditions will generate "DISK I/O" or "I/O ERROR"
  1519. messages when Kermit-65 transfer commands are entered:  bad diskette in default
  1520. drive, no diskette in default drive, default drive door open, and/or
  1521. unINITialized disk in default drive.
  1522.  
  1523. If any of those errors are detected before the attempted transmission of a
  1524. given file, the transfer of that file will not begin. If any are detected
  1525. DURING a file transmission, the file transfer will likely abort; at best
  1526. transmitted data will be incomplete. Data which does reach the destination end
  1527. of an aborted transfer should be considered very suspect; the disk problem
  1528. should be corrected and the transfer should be repeated!  (The best chance you
  1529. have for salvaging text file data in an abort is if the file destination is the
  1530. host machine and you have told its Kermit to save incomplete files, e.g., on
  1531. the VAX-8800, you need to SET INCOMPLETE KEEP).
  1532.  
  1533. One other Apple II disk problem can be encountered while you are using
  1534. Kermit-65 to receive files. If you exceed the storage capacity of your diskette
  1535. during a RECEIVE or a GET, you should see a "DISK FULL" error message.  Data
  1536. that has been received up to the point of the overflow will be automatically
  1537. DELETEd.  Make CERTAIN that you do not try to receive any more files until you
  1538. have DELETEd some files from the problem diskette, or until you have replaced
  1539. it with one that has adequate capacity to receive the complete file.
  1540. NOTE: See Section 1.5.4.
  1541.  
  1542. It is less likely that (1d) problems would occur because of host machine disk
  1543. problems.  The most likely circumstance you might encounter on the VAX/VMS 8800,
  1544. for example, would be in receiving a large file and, in the process, exceeding
  1545. your VAX disk quota.  In such a case, you should see an appropriate Kermit-32
  1546. generated REMOTE MESSAGE appear within the Kermit-65 transmission status
  1547. display.  If this happens, delete some files from your VAX (sub)directories,
  1548. and/or have your VAX disk quota increased BEFORE you try the transfer again. If
  1549. you have issued a SET INCOMPLETE KEEP command to Kermit-32, there may be some
  1550. chance of salvaging  text file data that arrived before the disk quota overage,
  1551. but the best thing you can do is to repeat the transfer!
  1552.  
  1553.  
  1554. As a general rule, if some disk or file error prevents a transfer from
  1555. beginning, to get it to "go," you will need to correct the error and repeat all
  1556. the steps that preceded it.
  1557.  
  1558. If you are still commanding the host Kermit, and you see an error message, you
  1559. will have to get the host Kermit's prompt back and give it an acceptable
  1560. command. If you have commanded the host Kermit to SEND or RECEIVE, and are back
  1561. commanding Kermit-65 when you notice the error, you will have to correct the
  1562. problem, CONNECT back to the host, get the host Kermit prompt (with the VAX/VMS
  1563. 8800, try typing RETURN or CTRL-Y), and repeat the SEND or RECEIVE command,
  1564. before returning back to Kermit-65 to command it again.
  1565.  
  1566. If you have placed the host Kermit in server mode, and are giving Kermit-65
  1567. commands when you notice an Apple disk/file error prevents a file transfer from
  1568. starting, chances are good that you won't have to CONNECT back to the host.  It
  1569. is also important to note that within a single server session, when you are
  1570. transferring multiple files, all files transferred PRECEDING an error (or
  1571. abort) are probably good. To repeat the transfer, correct the error, and give
  1572. Kermit-65 the appropriate command to transfer the file that messed up. The
  1573. first time you do it, you may get back a message like "REMOTE MESSAGE
  1574. %KERMIT-32..... protocol error"  This is just the host server trying to get
  1575. back "on track" after the error.  When the Kermit-65> prompt returns, enter the
  1576. transfer command again, and it will probably be accepted.
  1577.  
  1578. If the second attempt should fail, wait for the Kermit-65> prompt, enter:
  1579. FINISH, wait for the prompt again, and enter: CONNECT.  If you do not see the
  1580. host operating system prompt ($ on the VAX 8800), type a few RETURNs (or on the
  1581. VAX/VMS a CTRL-Y). Re-invoke the host Kermit and put it back in server mode.
  1582.  
  1583. If disk or file errors prevent a transfer from completing, recovery will depend
  1584. on the error, whether you had the host Kermit in server mode or not, and on
  1585. your desire for accuracy.
  1586.  
  1587. Some disk/file error aborts are "fatal" (e.g., Apple DISK FULL, and uploading
  1588. to the VAX 8800 w/o having commanded Kermit-32 to SET INCOMPLETE KEEP).   The
  1589. destination file will be destroyed.  The transfer of the file will have to be
  1590. repeated again from the beginning.  Again, unless you have set the host Kermit
  1591. for server mode, you will have to CONNECT back, get the host Kermit prompt, and
  1592. re-command it.  If you were in a server session, though,  you can probably
  1593. repeat the transfer of the interrupted file without going back to the host (see
  1594. recovery procedures above).
  1595.  
  1596. Other disk/file errors that interrupt/abort a transfer may leave salvageable
  1597. text data at the transfer destination.  The best policy, though, is to repeat
  1598. the transfer of the incomplete file (see recovery procedures above).
  1599.  
  1600.  
  1601. Common problems in category (2) include the following:
  1602.  
  1603. (a) bad parity
  1604.  
  1605. (b) noisy communications line
  1606.  
  1607. (c) timeout due to delays, "disaster," etc.
  1608.  
  1609. (d) Kermit-program incompatibility
  1610.  
  1611. (e) user error
  1612.  
  1613.  
  1614. (2a)
  1615.  
  1616. Parity settings are very critical to correct transfers.  If you do not inform
  1617. Kermit-65 of the correct parity being used by the remote host machine or the
  1618. communications path to it, "checksum" error checking calculations will be
  1619. wrong, and packets will be consistently rejected when they arrive at their
  1620. destination.  In particular, most binary file Kermit transfers won't get very
  1621. far if parity is not set correctly.
  1622.  
  1623. [NOTE: If you want to do a binary file transfer (Apple binary or BASIC files)
  1624. via a FIRN Network connection to the SERDAC VAX/VMS 8800, you must SET PARITY SPACE
  1625. before the transfer is initiated; that will insure that eight-bit quoting is
  1626. used.  If you dial directly into the VAX/VMS 8800, SET PARITY NONE; eight-bit
  1627. quoting (which is less efficient) is not required].
  1628.  
  1629. (2b)
  1630.  
  1631. Line noise can be the root cause for a variety of file transfer problems.  The
  1632. beauty   of  a  "packetized  protocol  transfer" scheme like Kermit is that
  1633. ordinarily, the scheme will overcome an occasional burst of line noise.  A
  1634. packet which arrives out of sequence, or which does not have the same checksum
  1635. "bit count" as when it was sent, will get retransmitted, and the noise induced
  1636. data error will correct itself.
  1637.  
  1638. Sometimes, however, bad line noise can outwit even the cleverest aspects of
  1639. Kermit.  There are some times where severe noise can corrupt the "checksum"
  1640. error checking and lead to undetected transmission of a bad character
  1641. (assuming that the severe line noise exists, chances of this happening for one
  1642. character are, for Kermit-65 error checking, less than two percent).
  1643.  
  1644. If line noise is bad enough and persistent enough, it is also a cause for
  1645. several problems that will eventually "hang" or totally confuse and abort a
  1646. transfer:
  1647.  
  1648. Each transfer is preceded by the Kermit-to-Kermit exchange of several short
  1649. "initialization packets.  These tell the controlling programs critical things
  1650. to expect about the upcoming transfer. If line noise prevents the packets from
  1651. arriving, or scrambles them up, the transfer probably can't get started
  1652. correctly.
  1653.  
  1654. One of the biggest vulnerabilities of the Kermit scheme is that each arriving
  1655. packet must be acknowledged (ACK) by the receiver, and that the sender must
  1656. actually receive back the acknowledgement (likewise, if an expected packet does
  1657. not arrive, there often must be a negative acknowledgement (NAK)).  Since the
  1658. ACK/NAK packets are very short, they are rather vulnerable to severe noise.  If
  1659. too many of them are scrambled or lost, the transfer can get out of synch, and
  1660. the transferring programs can lose track of where they are.
  1661.  
  1662. One other place Kermit is vulnerable is in the beginning of a data packet.  The
  1663. first several bytes of these longer packets are reserved for control
  1664. information: packet type, byte count, sequence number, etc.  If line noise
  1665. repeatedly coincides with the transmission of this control information, it is
  1666. very easy for the transfer to get confused-- particularly if the packet
  1667. numbering gets garbled.
  1668.  
  1669. If you detect frequent line noise after you've connected to a host, but before
  1670. you begin transfers (you will probably see extraneous junk characters appearing
  1671. on your screen), you're probably in for trouble. Once transfers actually begin,
  1672. line noise problems are often characterized by incrementing of the RETRY
  1673. counter on the Kermit-65 transmission status display, and/or by long pauses in
  1674. incrementing of the status display byte counter.
  1675.  
  1676. To minimize line noise, first see if there are any obvious loose connections in
  1677. your equipment (telephone line connection to wall box, telephone line to modem,
  1678. modem cabling to serial connector, or, if appropriate,  cabling from hardwire
  1679. port to serial connector).  If not, you may want to hang up and redial to
  1680. get another telephone connection (almost every connection is unique, and you
  1681. may get a better one than you had).  Many line noise problems will clear up
  1682. with those simple remedies, but some may be beyond your control!
  1683.  
  1684. If all else fails, you may also try shortening the maximum length of your data
  1685. packets (SET SEND/RECEIVE PACKET-LENGTH) to possibly lessen the effects of
  1686. persistent noise.
  1687.  
  1688.  
  1689. (2c)
  1690.  
  1691. A Kermit transfer consists of a regular and predictable exchange of
  1692. initialization, data, and, ACK/NAK packets.  If something (line noise, busy
  1693. computer, user error, etc.) interrupts or delays this regular exchange, there
  1694. must be a way for a Kermit program on at least one end to figure out something
  1695. is wrong and try to get the packet exchange back on track again.
  1696.  
  1697. This is usually done with a timer and retry mechanism.  If a Kermit does not
  1698. receive an expected packet, within its timer's time limit (a timeout), it will
  1699. resend its last sent packet to try to "wake up" the other Kermit (effectively
  1700. by asking it to send its last packet again).  This resending is repeated
  1701. ("retried") a number of times before the program assumes it cannot get things
  1702. on track again.  Each packet resent by Kermit-65 is counted as a RETRY on its
  1703. transmission status display. If Kermit-65's retry count exceeds 20, it will try
  1704. to issue an error message according to what kind of packet it was waiting for
  1705. and/or it will say MAX RETRY COUNT EXCEEDED. The transfer will then be aborted.
  1706.  
  1707. Very frequently, timeouts are caused by unexpected delays in the remote
  1708. computer, or in the network thru which you connect to it.  If you know that the
  1709. host machine or network is very busy, and you repeatedly have aborted transfers
  1710. due to timeouts, you may be able to alleviate the problem by increasing the
  1711. value of the default Kermit-65 receive timeout parameter (SET RECEIVE TIMEOUT).
  1712.  
  1713. Other common ways that Kermit-65 can timeout and abort are: (1) if the host
  1714. machine "goes down" during a transfer, (2) if the telephone, network, or
  1715. hardwire connection is completely broken during a transfer, (3) if you forgot
  1716. to "start up" the host Kermit and give it a transfer command (SEND, RECEIVE, or
  1717. SERVER) BEFORE giving Kermit-65 a transfer command, and (4) if (2a), (2b),
  1718. (2d), or (2e) problems occur and critical initialization packets are never
  1719. received.
  1720.  
  1721. In cases (1) and (2), you will eventually probably see a CANNOT RECEIVE DATA or
  1722. MAX RETRY COUNT EXCEEDED message from Kermit-65.  Cases (3) and (4)  may result
  1723. in a CANNOT RECEIVE INIT message.
  1724.  
  1725. (2d)
  1726.  
  1727. To do effective Kermit transfers, there must be two Kermit programs working--
  1728. one on either end of a "computer connection."  In addition, the two Kermits
  1729. must be able to "talk to" each other in a prescribed, standard way. Although
  1730. there are specific standards for writing all Kermit programs, most of them have
  1731. been written by volunteers and are in the "public domain."  The protocol
  1732. requirements and resultant programs are generally rather complex, and it is all
  1733. too easy to inadvertently program in a subtle error in a given Kermit version.
  1734. Additionally,  there are many "levels of ability" of Kermit programs: some can
  1735. operate in server mode, some cannot. Some can transfer binary files; some
  1736. cannot, etc.  Unless the Kermit programs you are using are both error free, and
  1737. both have the same capabilities for the transfers you wish to perform, you are
  1738. in trouble!
  1739.  
  1740. If there is a systematic "bug" in one of the Kermit programs, or if you are
  1741. asking one Kermit to do something the other can't do, there will usually be a
  1742. problem with packet exchange; in many cases the requested transfer will not
  1743. even get started.  You may see a Kermit-65 error message, on the transmission
  1744. status display, saying that a packet was not received, or a REMOTE MESSAGE
  1745. saying a packet was unexpectedly received, or one that the command cannot be
  1746. executed by the other Kermit.  In some cases, you may see no explanatory error
  1747. messages at all; the transfer will just "hang" and will probably eventually
  1748. "timeout" and abort (MAX RETRY COUNT EXCEEDED).
  1749.  
  1750.  
  1751. (2e)
  1752.  
  1753. If you've read about category (1) errors above, you can see that there are a
  1754. variety of things you can do to with files or disks to mess up a Kermit
  1755. transfer.  You can also wreak havoc by issuing improper or illegal commands to
  1756. Kermit programs.  Before trying to transfer a lot of files, or trying out a new
  1757. type of transfer, be sure you understand the procedure you need to follow and
  1758. the various Kermit commands that will be involved.
  1759.  
  1760. New Kermit users often try to command their local Kermit program (e.g.,
  1761. Kermit-65) to send or receive a file, without having first invoked and
  1762. commanded the host Kermit.
  1763.  
  1764. Another common error is to issue improper commands to a remote server.  For
  1765. example, when VAX/VMS Kermit-32 is in server mode, and you are requesting files
  1766. from it via Kermit-65 commands, you cannot use a RECEIVE command; you must
  1767. instead use GET.
  1768.  
  1769. As with Kermit program incompatibilities, illegal or inappropriate commands
  1770. will often cause a problem with packet exchange; in many cases the requested
  1771. transfer or action will not even get started.  You may see a Kermit-65 error
  1772. message, on the transmission status display, saying a packet was not received,
  1773. a REMOTE MESSAGE that a packet was unexpectedly received, or one that the
  1774. command cannot be executed by the other Kermit.  In some cases, you may see no
  1775. explanatory error messages at all; the transfer will just "hang" and will
  1776. probably eventually "timeout" and abort (MAX RETRY COUNT EXCEEDED).
  1777.  
  1778.  
  1779. Except for the fact that you will probably never note a category (2) "packet
  1780. exchange" error while you are "talking to" the remote system or commanding its
  1781. Kermit, and that the remedies you must employ to correct the errors will be
  1782. different, recovery procedures to get your file transferred correctly will be
  1783. much the same as those we described at the end of the discussion on category
  1784. (1) "disk/file" errors.  Make sure to read that discussion for more details
  1785. than we have included below.
  1786.  
  1787. In short, if an error prevents a given transfer from actually beginning, you
  1788. will need to correct the error and repeat all the steps that preceded it.  This
  1789. will be more difficult if you are transferring only one file-- having commanded
  1790. the remote Kermit to SEND or RECEIVE.  If you have placed the remote
  1791. Kermit in server mode, and an error prevents the transfer of one file, all
  1792. files transferred up to that point are probably OK, and you can usually correct
  1793. the problem, and get a transfer started again without having to reCONNECT
  1794. back to the host.
  1795.  
  1796.  
  1797. If you are transferring a text file,  and an abort occurs in mid-transfer, some
  1798. data may be salvageable in the destination file, but the best rule with any
  1799. type of file is to repeat the transfer, in which case the recovery procedures
  1800. in the last paragraph apply.
  1801.  
  1802.  
  1803.  
  1804. @section<Customizing Kermit-65>
  1805.  
  1806. The source code to Kermit-65 is in 6502 Assembler. It has been formatted for a
  1807. cross assembler which runs on a unix 2's complement machine.  Files
  1808. @q<appxas.1> thru @q<appxas.3> are the cross assembler for UNIX.  Get the files
  1809. on a UNIX system and then look at the documentation at the start. They will
  1810. easily make you a xasm for Kermit.  The file @q<appmak.unx> is the makefile to
  1811. use with the xasm to reassemble all of Kermit's parts.
  1812.  
  1813. Kermit-65 has been separated into two assemblies, the main routines and the
  1814. com card routines for the devices shown in Table @ref<-k65cd>.  A vector has
  1815. been set up in low memory for the two assemblies to communicate. Look at the
  1816. working com drivers for tips on how to incorporate your version of the com
  1817. driver. some things to note: It is probably best to buffer the input from the
  1818. remote and to get input characters from the remote every chance you get.  Note
  1819. the Microtek SV-622 driver, whenever the input is checked for a character and
  1820. has a character the character is put into the buffer immediately.  Also when
  1821. the output is checked for ready to output, if the card is not ready to output
  1822. then it is checked for a character to input.  All this should help prevent
  1823. losing characters.
  1824.  
  1825. All the routines should return with the "rts" instruction.  Routines which can
  1826. return a true/false indication should return with the P reg zero flag set
  1827. appropriately.  That is: a "beq" instruction will branch on a false indication
  1828. and the "bne" will branch on a true indication.  The com driver should start
  1829. its routines above the main routines and tell where the end of the com driver
  1830. is via location $100c.  If your com driver gets too large then the bsave
  1831. address would have to be changed when you are saving the binary to diskette.
  1832.  
  1833.  
  1834. @begin<table>
  1835. @begin<format,leftmargin +2,above 0,below 0,group,facecode t>
  1836. @u<address size  module   function>
  1837. 1003    byte   main     This is the baud rate index as follows:
  1838.                          3 - 110
  1839.                          4 - 135.4
  1840.                          5 - 150
  1841.                          6 - 300
  1842.                          7 - 600
  1843.                          8 - 1200
  1844.                          9 - 1800
  1845.                         10 - 2400
  1846.                         11 - 3600
  1847.                         12 - 4800
  1848.                         13 - 7200
  1849.                         14 - 9600
  1850.                         15 - 19200
  1851.                         eg:if index is 6 then line should be 300 baud
  1852. 1004    byte            unused
  1853. 1005    word   driver   Address of a null terminated string.
  1854.                         address should point to a capitalized
  1855.                         string of the drivers id
  1856. 1007    byte   main     Com slot in the form $n0 where n is slot #.
  1857. 1008    byte   main     Force initialization flag when 0.
  1858.                         init routine should always initialize when
  1859.                         this flag is 0 & then set flag non-zero.
  1860. 1009    word   main     Address of the end of Kermit main routine.
  1861. 100b    byte   main     Flow control is on when high bit is set.
  1862. 100c    word   driver   Address of the end of the com driver.
  1863. 100e    byte   driver   Time constant-used with the 1040 rtn.
  1864. 100f    word   driver   Address of the end of screen save memory(//e).
  1865. 1011    byte   driver   Screen saved flag.
  1866. 1020  3 bytes  driver   Jump to initialization routine.
  1867. 1023  3 bytes  driver   Jump to command routine.  A reg has command
  1868.                           0 - hang up the line
  1869.                         $0b - set baud rate
  1870.                         $0c - set break on the line
  1871.                         $91 - do xon on the line
  1872.                         $93 - do xoff on the line
  1873.                         routine returns false (P reg zero flag) if unable
  1874. 1026  3 bytes  driver   Jump to check for input from the line.
  1875.                         routine returns false (P reg zero flag)
  1876.                         if no character on line
  1877. 1029  3 bytes  driver   Jump to get input character from line.
  1878.                         routine returns character in A reg
  1879. 102c  3 bytes  driver   Jump to put character in A reg on line.
  1880. 102f  3 bytes  driver   Jump to reset com driver.
  1881. 1040  3 bytes  main     Jump to Apple ROM wait rtn. microsecs delay
  1882.                         =1/2(26+27A+5A*A) where A is the accumulator
  1883. 1043  3 bytes  main     Jump to routine to print null-terminated string.
  1884.                         X reg contains least significant byte of address
  1885.                         Y reg contains most significant byte of address
  1886.                         routine does not issue a carriage return.
  1887. 1046  3 bytes  main     Jump to routine to read the keyboard.
  1888.                         A reg contains the character read
  1889. 1049  3 bytes  main     Jump to routine to print carriage rtn & line feed.
  1890. 104f  3 bytes  main     Jump to routine to set characters parity.
  1891.                         A reg contains the character before and after.
  1892. @end<format>
  1893. @caption(Communications card vector area)
  1894. @end(table)
  1895.  
  1896.  
  1897. @begin<table>
  1898. @bar()
  1899. @blankspace(1)
  1900. @begin<format,leftmargin +2,above 1,below 1,group,facecode t>
  1901. @tabclear()@tabset(12)
  1902. @\List of most of the prodos file types.
  1903.  
  1904. @ux<Num     > @ux<Name>    @ux<OS  >    @ux<Definition>
  1905. @q<$00 >                     typeless
  1906. @q<$01 >     BAD     both    BAD blocks file
  1907. @q<$02 >     PCD     SOS     Pascal CoDe file
  1908. @q<$03 >     PTX     SOS     Pascal TeXt file
  1909. @q<$04 >     TXT     both    ASCII text file
  1910. @q<$05 >     PDA     SOS     Pascal DAta file
  1911. @q<$06 >     BIN     both    BINary file
  1912. @q<$07 >     CHR     SOS     CHaRacter font file
  1913. @q<$08 >     PIC     both    PICture file
  1914. @q<$09 >     BA3     SOS     Business BASIC (SOS) program file
  1915. @q<$0A >     DA3     SOS     Business BASIC (SOS) data file
  1916. @q<$0B >     WPD     SOS     Word Processor Document
  1917. @q<$0C >             SOS     SOS system file
  1918. @q<$0D >             SOS     SOS reserved file type
  1919. @q<$0E >             SOS     SOS reserved file type
  1920. @q<$0F >     DIR     Both    subDIRectory file
  1921. @q<$10 >     RPD     SOS     RPS data file
  1922. @q<$11 >     RPI     SOS     RPS index file
  1923. @q<$12 >             SOS     Applefile diskcard file
  1924. @q<$13 >             SOS     Applefile model file
  1925. @q<$14 >             SOS     Applefile report format file
  1926. @q<$15 >             SOS     Screen library file
  1927. @q<$16 >             SOS     SOS reserved file type
  1928. @q<$17 >             SOS     SOS reserved file type
  1929. @q<$18 >             SOS     SOS reserved file type
  1930. @q<$19 >     ADB     ProDOS  AppleWorks Database file
  1931. @q<$1A >     AWP     ProDOS  AppleWorks WordProcessing file
  1932. @q<$1B >     ASP     ProDOS  AppleWorks Spreadsheet file
  1933. @q<$1C-$5F>                  Reserved
  1934. @q<$60-$6F>          ProDOS  PC Transporter (Applied Engineering)
  1935. @q< $60>     PRE     ProDOS  ProDOS preboot driver
  1936. @q< $61-$6A>         ProDOS  Reserved
  1937. @q< $6B>     NIO     ProDOS  PC Transporter BIOS and drivers
  1938. @q< $6C>             ProDOS  Reserved
  1939. @q< $6D>     DVR     ProDOS  PC Transporter device drivers
  1940. @q< $6E>             ProDOS  Reserved
  1941. @q< $6F>     HDV     ProDOS  MSDOS HardDisk Volume
  1942. @q<$70-$9F>                  Reserved
  1943. @q<$A0 >     WPF     ProDOS  WordPerfect document file
  1944. @q<$A1 >     MAC     ProDOS  Macrofile
  1945. @q<$A2 >     HLP     ProDOS  Help File
  1946. @q<$A3 >     DAT     ProDOS  Data File
  1947. @q<$A4 >                     Reserved
  1948. @q<$A5 >     LEX     ProDOS  Spelling dictionary
  1949. @q<$A6-$AB>                  Reserved
  1950. @end<format>
  1951. @caption(PRODOS file types, part 1)
  1952. @tag(-ftother)
  1953. @bar()
  1954. @end(table)
  1955.  
  1956. @begin<table>
  1957. @bar()
  1958. @blankspace(1)
  1959. @begin<format,leftmargin +2,above 1,below 1,group,facecode t>
  1960. @tabclear()@tabset(12)
  1961. @ux<Num     >    @ux<Name>    @ux<OS  >    @ux<Definition>
  1962. @q<$AC >    ARC    ProDOS    General Purpose Archive file
  1963. @q<$AD-$AF>                Reserved
  1964. @q<$B0 >    SRC    ProDOS    ORCA/M & APW source file
  1965. @q<$B1 >    OBJ    ProDOS    ORCA/M & APW object file
  1966. @q<$B2 >    LIB    ProDOS    ORCA/M & APW library file
  1967. @q<$B3 >    S16    ProDOS    ProDOS16 system file
  1968. @q<$B4 >    RTL    ProDOS    ProDOS16 runtime library
  1969. @q<$B5 >    EXE    ProDOS    APW shell command file
  1970. @q<$B6 >    STR    ProDOS    ProDOS16 startup init file
  1971. @q<$B7 >    TSF    ProDOS    ProDOS16 temporary init file
  1972. @q<$B8 >    NDA    ProDOS    ProDOS16 new desk accessory
  1973. @q<$B9 >    CDA    ProDOS    ProDOS16 classic desk accessory
  1974. @q<$BA >    TOL    ProDOS    ProDOS16 toolset file
  1975. @q<$BB >    DRV    ProDOS    ProDOS16 driver file
  1976. @q<$BC-$BE>                Reserved for ProDOS16 load file
  1977. @q<$BF >    DOC    ProDOS    document file
  1978. @q<$C0 >    PNT    ProDOS    //gs paint document
  1979. @q<$C1 >    SCR    ProDOS    //gs screen file
  1980. @q<$C2-$C7>              Reserved
  1981. @q<$C8 >    FNT    ProDOS    Printer font file
  1982. @q<$C9 >        ProDOS    finder files
  1983. @q<$CA >        ProDOS    finder icons
  1984. @q<$CB-$DF>                Reserved
  1985. @q<$E0 >    LBR    ProDOS    Apple archive library file
  1986. @q<$E1 >            Unknown (unlisted)
  1987. @q<$E2 >    ATI    ProDOS    Appletalk init file
  1988. @q<$E3-$EE>               Reserved
  1989. @q<$EF >    PAS    ProDOS    ProDOS Pascal file
  1990. @q<$F0 >    CMD    ProDOS    added command file
  1991. @q<$F1-$F8>           ProDOS    User defined filetypes
  1992.                           (popular ones include:)
  1993. @q< $F1>    OVL    ProDOS    Overlay file
  1994. @q< $F2>    DBF    ProDOS    Database file
  1995. @q< $F3>    PAD    ProDOS    MouseWrite file
  1996. @q< $F4>    MCR    ProDOS    AE Pro macro file
  1997. @q< $F5>    ECP    ProDOS    ECP batch file
  1998. @q< $F6>    DSC    ProDOS    description file
  1999. @q< $F7>    TMP    ProDOS    temporary work file
  2000. @q< $F8>    RSX    ProDOS    linkable object module
  2001. @q<$F9 >    IMG    ProDOS    ProDOS image file
  2002. @q<$FA    >    INT    ProDOS    Integer BASIC program
  2003. @q<$FB    >    IVR    ProDOS    Integer BASIC variables file
  2004. @q<$FC    >    BAS    ProDOS    AppleSoft BASIC program
  2005. @q<$FD    >    VAR    ProDOS    AppleSoft BASIC variables file
  2006. @q<$FE    >    REL    ProDOS    ProDOS EDASM relocatable object module file
  2007. @q<$FF    >    SYS    ProDOS    ProDOS8 system file
  2008. @end<format>
  2009. @caption(PRODOS file types, part 2)
  2010. @tag(-ft2)
  2011. @bar()
  2012. @end(table)
  2013.