The following comments concern getting Kermit-80 [CP/M] to run on the Apple ][, the Apple ][ Plus, and the Apple //e. By Lee Sweet () 20 June 1983 Acknowledgements for helpful hints (especially Number 2, below) to Richard Li, of The Learning Center, Columbia University School of General Studies. (In the following, I've tried to explain the reasons behind each suggestion; if you don't understand the reasons, just ignore them, and go ahead and do it anyway!) 1. The Disk II interface card must be in slot 6 (usually it is, anyway). (This is required by CP/M.) 2. The Z-80 CP/M Softcard (or equivalent) should be in Slot 4, 5, or 7. Although Microsoft says all slots are equivalent, some do interact (sometimes) with the CP/M BIOS and/or Kermit I/O. 3. The Super Serial Card [SSC] must be in slot 1, unless you have changed the I/O addresses. (See Appendix for Kermit assembler code changes for the SSC.) 4. The SSC Jumper Block should be pointing to MODEM; this makes the Card think that it's a DTE device (a terminal), which is what we want, since the DEC-20 (the PACX or the modem, actually) is a DCE (Communications Equipment). If you don't understand the details, don't worry about it; just have the block pointing to MODEM and be sure to use a straight-through cable to connect the SSC to the PACX/Modem. That is, each wire should go from Pin X to X. A 25-wire cable can't hurt; however, you probably only need pins 2, 3, and 7. If you are currently using the SSC with the Jumper Block pointing to terminal (e.g., you are using it with a printer), you could leave it there, and just use a 'Null Modem' cable, one which has Pin 2 going to Pin 3 at the other end (in both cases) and Pin 7 to Pin 7. In that case, however, remember that you still have to change the switch settings as described below! 5. Comments on the SSC itself and the SSC Manual: The nomenclature used here is as follows: SW1-X is Switch X on 'big' Switch 1, and SW2-Y is switch Y on 'big' Switch 2, where the 'big' switches are the two blue boxes at the top front of the SSC (when it's installed in the Apple) with SW1 being the one towards the keyboard. Be careful when changing the switch settings: If you don't support the bottom of the SSC, pressure on the switches will partly remove the SSC from its slot! Needless to say, this is not good for the SSC or the Apple if the power is on. Note that any changes made to these switches will NOT take effect unless CP/M is reset. The best way to do this is just to hit RESET (or CTRL-RESET if you have that modification in, or if you have a //e) and let Drive A: reload CP/M. This will reset the SSC, and the current switch settings will be used. The manual has a few errors regarding the direction of the Jumper Block; just remember that when it's pointing toward MODEM, the SSC is a DTE (Terminal) device and should be connected to a DCE (modem, etc.), and when it's pointing toward TERMINAL, it's a DCE, and should be connected to a DTE (terminal, printer, etc.). All you really have to remember is that the Jumper Block's legend refers to what the SSC is to be used WITH, not what the card will act as! (This paragraph assumes you are using a straight-through cable.) 6. The SSC switches should be as follows (other setups may work, but this one DOES!): SWITCH 1: SWITCH2: 1 2 3 4 5 6 7 1 2 3 4 5 6 7 ON OFF OFF OFF ON ON ON ON ON OFF ON OFF OFF OFF | | |---ON for 300 Baud |--OFF for 600 Baud ON = UP; OFF = DOWN Switch 1: SW1-1-4: First four are Baud Rate; I've found that Kermit frequently complains (via '%Bad Checksum') if the rate is higher than 600. Even though the SSC intermittently loses some characters when in terminal mode (i.e., the first few chars of each line of a directory listing, etc., are absent), it does perform reliably when used as Kermit (interchanging packets). Thus for maximum throughput (600 Baud), these four should be: ON OFF OFF OFF (If you are using a 300 Baud line (cheap modem, or slow dialup line), use the same with SW1-4 ON) SW1-5&6: These must be ON for the SSC to be in Communications Mode, which we want for Kermit. SW1-7: When ON, this switch allows the SSC to produce correct RS-232-C protocol signals, which we would usually want. Switch 2: SW2-1&2: These set the data format; you have to use 8 Data Bits, and 1 Stop Bit, as Kermit uses all eight bits of the data for quoting, etc. So, these two must both be ON. SW2-3&4: These set the parity desired; for the DEC, which uses no parity, set SW2-4 to ON (SW2-3 is not used in this case). (If you ever want to use Kermit with the IBM, or other machine that does use parity, set SW2-4 OFF, and SW2-3 OFF for EVEN, ON for ODD Parity.) SW2-5: This allows you to add a Line Feed (LF) on transmission of a Carriage Return (CR); usually you want this disabled (OFF). SW2-6: This switch enables interrupts; since interrupts are not used by Kermit, disable them by setting to OFF. SW2-7: This is the counterpart of the RS-232-C switch (SW1-7) mentioned above; it must be ON when SW1-7 is OFF and vice versa. For Kermit, set SW2-7 OFF. Once you have all of the above set, you are ready to try out Kermit. If you don't have an Apple CP/M floppy disk with Kermit.Com on it, either follow the directions in the Kermit User's Guide (see User.Doc) to download it to the Apple, or (better yet) see if someone can give you a copy. (It goes without saying that any such copy should cost you only what the magnetic media (floppy) costs, as Kermit is public-domain software!) Upon starting up Kermit, and getting the Kermit-80> prompt at the Apple, try to connect to the mainframe (DEC, IBM, etc.). If you can, see if a directory listing loses characters (it probably will). This is usually due to the inability of the Apple firmware controlling the screen to catch all the characters coming in while it scrolls. David Neves of Carnegie-Mellon, who filled me in on this, suggests that those who want better character-catching ability can write their own screen code and do frequent polling to see what's actually waiting to be received. That way, nothing should be lost. [His ID, as of September, 1983, is David.Neves@CMU-CS-A, if anybody wants to ask him abou the gory details.] Thus, a "normal" Apple with Kermit will work correctly for transferring files, but not as a sufficiently-good terminal emulator to allow you to use Emacs, say. Work will continue to be done to improve the situation, but for now, Apple Kermit-80 (with SSC) is best used for file transfer only. APPENDIX Changes needed to Kermit.Asm to allow the SSC to work: (by Richard C. Li, with added comments by Lee Sweet) ; ******* ; The following turns on Apple assembler switch apple EQU TRUE ; For APPLE ][ with D.C. Hayes Micromodem II. ; (w/ suitable mods for SSC by RCL) ; ******* ; The following changes reflect the details of the Apple Corp's ; Super Serial Card. If you have a SSC in another slot, then the ; corresponding port and status addresses would be E088+s0H and ; E089+s0H. If anybody is interested, I can give suggestions ; to add code to program SSC's baud rate from within KERMIT a la ; the SuperBrain, or detect which slot has the SCC, or modify ; VT52 emulation to work with a particular 80-column card (My ; card is ALS's Smarterm) (by RCL) MNPORT EQU 0E098H ; Communications Port. (SSC in slot 1.) MNPRTS EQU 0E099H ; Communications Port Status. (SSC ditto) OUTPUT EQU 10H ; Output Buffer Empty. (SSC uses bit 4) INPUT EQU 08H ; Input Register Full. (SSC uses bit 3) ; ******* ; This block commented out ; call ckdial ; See if dialing is required. (SSC can't) ; jmp kermit ; Go to command loop if aborted. ; ******* ; This block changed to make a unconditional jump to APINTC IF apple intch0: cpi 'D' ;Disconnect Modem? jmp apintc ; (SCC can't hangup a phone) mvi a,0 ;Hangup the modem sta mnmodem ret apintc: cpi 'S' ; Is it status? ENDIF ; And that's all. Changes like these for the SSC can most probably ; work for any other RS-232 card for the Apple. -Richard C. Li ; ; If you want to decrease the size of the file that you have to ; download, you can go through the CPMKermit.Asm file and ; comment out many more lines (put ';' in front of them) ; that are irrelevant to operation with the Super Serial Card ; (they are for dialing phone numbers (for the MicroModem), ; etc.). These lines will then not be included in the resultant ; .Hex file. However, unless you have a good feel for assembler ; code, this is not recommended! - Lee Sweet