Skip to content

Instantly share code, notes, and snippets.

@wohali
Created July 10, 2024 07:16
Show Gist options
  • Save wohali/57e37ad4715df98a0ac4518be8b8d3bd to your computer and use it in GitHub Desktop.
Save wohali/57e37ad4715df98a0ac4518be8b8d3bd to your computer and use it in GitHub Desktop.
Using C-Kermit with SimH to transfer files from a simulated PDP-11

Using C-Kermit with SimH to transfer files from a simulated PDP-11

This is a short guide on copying files to/from a simulated PDP-11 using C-Kermit. It's slow, but extremely robust.

Configuring SimH

Here's a minimal machine config for Kermit. It's possible to run in less memory but I didn't spend the time to work it out.

The most important parts of this config are the dli/dlo lines, which enable a second serial line for file transfer, and the cpu line setting 256KB of memory.

You can do this all with a single serial connection, the console, but let's use two for more complexity and to demo the neato XL device driver in RT-11 v5.x.

You can mount the Kermit disk image too, if you like. Here's a copy.

set cpu 11/23 256K

; disable things we don't need
set rk disabled
set hk disabled
set tm disabled
set dz disabled
set tq disabled
set rx disabled
set ry disabled
set rl disabled

; serial port setup
set tto 8b

set dli enabled
set dli lines=1
attach dli 9999
set dlo0 8b
set dlo0 nodataset
set dlo0 nolog
;set dlo1 8b
;set dlo1 nodataset
;set dlo1 nolog

set lpt disabled
;attach LPT lpt.txt

set rq0 ra82
set rq0 writeenabled
;set rq0 locked
attach rq0 ra82-clean.dsk
;set rq0 badblock

;set rq1 ra82
;set rq1 locked
;attach rq1 KERMIT.DSK

boot rq0

Configuring the PDP-11 image

I'm assuming you have a running RT-11 system here. Other OSes will work, too, but this is the one I'm most familiar with, and it's a great lowest common denominator.

First, let's SYSGEN so we have exactly everything we need. Here's a full copy of my interactive SYSGEN session. The important bits are to enable timers, multiterminal support and multiterminal hooks, configure sufficient serial lines, and I find the VM and LD devices extremely useful.

In the session file, other than the Y/N responses, these are the actual commands that are run:

.ind sysgen
[email protected]
.SET USR NOSWAP
.REN/SYS .SYG .SYS
.BOO RT11XM

OK, here's the full session.

.ind sysgen


 *****************************************************************
 		RT-11 SYSTEM GENERATION PROGRAM V05.150
 *****************************************************************


Do you want an introduction to system generation (N)? n

Do you want to use a previously created answer file (N)? 

Do you want to create an answer file (N)? 

	...checking for protected output files.


 *****************************************************************
 		MONITOR TYPE
 *****************************************************************

5.    Do you want the single-background (SB) monitor (Y)? 

10.   Do you want the foreground/background (FB) monitor (Y)? 

15.   Do you want the extended memory (XM) monitor (N)? y

20.   Do you want the extended background (XB) monitor (N)? n

25.   Do you want the Supervisor and I-D (ZM) monitor (N)? 

30.   Do you want the Supervisor and I-D background (ZB) monitor (N)? 


 *****************************************************************
 		MONITOR OPTIONS
 *****************************************************************

35.   Do you want timer support in the SB monitor (N)? y

40.   Do you want device time-out support (N)? y

45.   Do you want an error message on system I/O errors (Y)? 

50.   Do you want system job support (N)? 

55.   Do you want to use the .SPCPS request (N)? y

60.   Do you want global SCCA support (N)? 

65.   Do you want multiterminal support (N)? y

70.   Do you want asynchronous terminal status (Y)? 

75.   Do you want multiterminal time-out support (Y)? 

76.   Do you want multiterminal handler hooks support (N) ? y

80.   Enter the size of the output buffers (40): 

85.   Enter the size of the input buffers (134): 

90.   Do you want to use the .FETCH request under XM/XB, ZM/ZB (Y)? 

95.   Do you want end of month and year date rollover (N)? 

100.  Do you want the user command linkage (Y)? 

105.  Do you want high speed ring buffer support (N)? y

110.  Do you want all the keyboard monitor commands (Y)? 

115.  Do you want the optional 50 Hz clock support (N)? 

120.  Do you want to use the KW11-P clock as the system clock (N)? 

125.  Do you want the startup indirect file (Y)? 

130.  Do you want floating point support (N)? 

135.  Do you want memory parity support (N)? 

140.  Do you want power failure messages (N)? 

145.  Do you want BATCH support (N)? 

150.  Do you want error logging (N)? 

170.  Do you want extended device-unit support (N)? y

175.  Do you want device ownership support (Y)? 

180.  Do you want the message handler resident in the monitor (Y)? 

185.  Do you want to define any other system conditionals (N)? 


 *****************************************************************
		DEVICE OPTIONS
 *****************************************************************

 Type <ESCAPE><RETURN> for help.
 Type ?<RETURN> to list all devices.
 Type .<RETURN> when device selection is complete.


Enter the device name you want support for [dd]: ?


  DX  RX01 Single-Density Diskette     DY  RX02 Double-Density Diskette
  RK  RK05 Cartridge Disk              DL  RL01/RL02 Cartridge Disk    
  DM  RK06/RK07 Cartridge Disk         MT  TM11 (UNIBUS) Magtape       
  MS  TS11,TU80/TSV05/TSU05 Tape       MM  TJU16 (MASSBUS) Magtape     
  NL  Null Handler                     LP  Line Printer                
  DU  MSCP Disk Class Handler          LD  Logical Disk Handler        
  VM  Virtual Memory Handler           DZ  RX50 PRO Series             
  DW  RD50/51/52 PRO Series            SP  Transparent Spooling Handler
  XL  VTCOM Communications Handler     XC  VTCOM Handler PRO Series    
  MU  TMSCP Magtape Class Handler      NC  Ethernet Handler PRO Series 
  NQ  Ethernet Handler for Q-BUS       NU  Ethernet Handler for UNIBUS 
  LS  Serial Line Printer              


Enter the device name you want support for [dd]: nl

Enter the next device name [dd]: lp

280.  Does your printer have a nonstandard vector or CSR (N)? 

Enter the next device name [dd]: du

225.  How many ports are to be supported (1)? 

230.  What is the CSR (register) address for the first port (172150)? 

235.  What is the vector address for the first port (154)? 

245.  Do you want support for DU initiated bad block replacement (Y)? 

250.  Do you want extended device-unit support for handler DU (Y)? 

255.  How many device-units should DU support (16)? 

Enter the next device name [dd]: ?


  DX  RX01 Single-Density Diskette     DY  RX02 Double-Density Diskette
  RK  RK05 Cartridge Disk              DL  RL01/RL02 Cartridge Disk    
  DM  RK06/RK07 Cartridge Disk         MT  TM11 (UNIBUS) Magtape       
  MS  TS11,TU80/TSV05/TSU05 Tape       MM  TJU16 (MASSBUS) Magtape     
* NL  Null Handler                   * LP  Line Printer                
* DU  MSCP Disk Class Handler          LD  Logical Disk Handler        
  VM  Virtual Memory Handler           DZ  RX50 PRO Series             
  DW  RD50/51/52 PRO Series            SP  Transparent Spooling Handler
  XL  VTCOM Communications Handler     XC  VTCOM Handler PRO Series    
  MU  TMSCP Magtape Class Handler      NC  Ethernet Handler PRO Series 
  NQ  Ethernet Handler for Q-BUS       NU  Ethernet Handler for UNIBUS 
  LS  Serial Line Printer              


Enter the next device name [dd]: ld

250.  Do you want extended device-unit support for handler LD (Y)? 

255.  How many device-units should LD support (16)? 

Enter the next device name [dd]: vm

Enter the next device name [dd]: xl

325.  What is the CSR address for XL (176500)? 

330.  What is the vector address for XL (300)? 

331.  Do you want XL to use the multiterminal hooks feature (N) ? y

332.  Which multiterminal line do you want XL to use (1) ? 

Enter the next device name [dd]: ?


  DX  RX01 Single-Density Diskette     DY  RX02 Double-Density Diskette
  RK  RK05 Cartridge Disk              DL  RL01/RL02 Cartridge Disk    
  DM  RK06/RK07 Cartridge Disk         MT  TM11 (UNIBUS) Magtape       
  MS  TS11,TU80/TSV05/TSU05 Tape       MM  TJU16 (MASSBUS) Magtape     
* NL  Null Handler                   * LP  Line Printer                
* DU  MSCP Disk Class Handler        * LD  Logical Disk Handler        
* VM  Virtual Memory Handler           DZ  RX50 PRO Series             
  DW  RD50/51/52 PRO Series            SP  Transparent Spooling Handler
* XL  VTCOM Communications Handler     XC  VTCOM Handler PRO Series    
  MU  TMSCP Magtape Class Handler      NC  Ethernet Handler PRO Series 
  NQ  Ethernet Handler for Q-BUS       NU  Ethernet Handler for UNIBUS 
  LS  Serial Line Printer              


Enter the next device name [dd]: sp

320.  Do you want support for banner pages (Y)? 

Enter the next device name [dd]: .

Do you want to add support for any of your own devices (N)? 

355.  How many extra device slots do you want (0)? 


 *****************************************************************
 		TERMINAL INTERFACE OPTIONS
 *****************************************************************

Do you want an introduction to terminal interface options (N)? 

360.  Support for how many local DL11 lines, including the console (1) ? 3

365.  How many remote DL11 lines are to be supported (0)? 

370.  What is the CSR for the first (console) DL11 (177560)? 

375.  What is the vector for the first (console) DL11 (60)? 

370.  What is the CSR for the next (local) DL11 (176500)? 

375.  What is the vector for the next (local) DL11 (300)? 

370.  What is the CSR for the next (local) DL11 (176510)? 

375.  What is the vector for the next (local) DL11 (310)? 

380.  Do you want DZ series multiplexor support (N)? 

420.  Do you want DH series multiplexor support (N) ? 

Do you want to change any of your responses (N)? 

        ...writing system conditional file.


 *****************************************************************
	DEVICE ASSIGNMENTS AND SYSGEN CLEANUP
 *****************************************************************

What is the name of the source input device [xxn] (DU1)? DU0

What is the name of the binary output device [xxn] (DU0)? 

What is the name of the map output device [xxn] (DU0)? 

Do you want to retain the system OBJs (Y)? N

Do you want to retain the work files (Y)? N

        ...writing build files.

 To  build  an entire system, mount the source and binary volumes,
 copy the files SYSGEN.CND, SYSGEN.TBL, EDTL.MLB, SYSTEM.MLB, and
 the sources for any user supplied device handlers to the source
 volume.  The RT-11 utility program MONMRG.SAV must be present
 on the system disk, in order to build the monitors.  To build
 both the monitors and the device handlers, type [email protected].
 To build just the monitors, type [email protected].  To build just
 the device handlers, type [email protected]. For more information,
 read the RT-11 SYSTEM GENERATION GUIDE.

 END OF SYSGEN PROGRAM --
@ <EOF>

[email protected]

.

[email protected]

.ASSIGN DU0 SRC

.ASSIGN DU0 BIN

.ASSIGN DU0 MAP

.ASSIGN DU0 OBJ

.MAC/OB:OBJ:KMSB SRC:(SB+SYSGEN.CND+EDTG+KMON+KMOVLY)

.MAC/OB:OBJ:USSB SRC:(SB+SYSGEN.CND+EDTG+USR)

.MAC/OB:OBJ:RMSB SRC:(SB+SYSGEN.CND+EDTG+RMON)

.MAC/OB:OBJ:TBSB SRC:(SB+SYSGEN.CND+EDTG+SYSGEN.TBL+TRMTBL)

.MAC/OB:OBJ:BTSB SRC:(SB+SYSGEN.CND+EDTG+BSTRAP)

.MAC/OB:OBJ:MESB SRC:(SB+SYSGEN.CND+EDTG+MTTEMT)

.MAC/OB:OBJ:MISB SRC:(SB+SYSGEN.CND+EDTG+MTTINT)

.LINK/EXE:BIN:RT11SB.TM2/BOU:1000/MAP:BIN:RT11SB.TM5/SYM:BIN:RT11SB.TM3/PRO
Files? OBJ:USSB
*OBJ:RMSB
*OBJ:KMSB,MESB,MISB,TBSB//
Boundary section? OVLY0

.LINK/EXE:BIN:RT11SB.TM1/MAP:BIN:RT11SB.TM4 OBJ:BTSB,BIN:RT11SB.TM3

.R MONMRG
*BIN:RT11SB.SYG,MAP:RT11SB.MAP=BIN:RT11SB.TM1,RT11SB.TM2,RT11SB.TM4,RT11SB.TM5
*^C

.DEL BIN:RT11SB.TM(1,2,3,4,5)

.DELETE/NOQ OBJ:(KM,US,RM)SB.OBJ

.DELETE/NOQ OBJ:(TB,BT)SB.OBJ

.DELETE/NOQ OBJ:(ME,MI)SB.OBJ

.MAC/OB:OBJ:KMFB SRC:(FB+SYSGEN.CND+EDTG+KMON+KMOVLY)

.MAC/OB:OBJ:USFB SRC:(FB+SYSGEN.CND+EDTG+USR)

.MAC/OB:OBJ:RMFB SRC:(FB+SYSGEN.CND+EDTG+RMON)

.MAC/OB:OBJ:TBFB SRC:(FB+SYSGEN.CND+EDTG+SYSGEN.TBL+TRMTBL)

.MAC/OB:OBJ:BTFB SRC:(FB+SYSGEN.CND+EDTG+BSTRAP)

.MAC/OB:OBJ:MEFB SRC:(FB+SYSGEN.CND+EDTG+MTTEMT)

.MAC/OB:OBJ:MIFB SRC:(FB+SYSGEN.CND+EDTG+MTTINT)

.LINK/EXE:BIN:RT11FB.TM2/BOU:1000/MAP:BIN:RT11FB.TM5/SYM:BIN:RT11FB.TM3/PRO
Files? OBJ:USFB
*OBJ:RMFB
*OBJ:KMFB,MEFB,MIFB,TBFB//
Boundary section? OVLY0

.LINK/EXE:BIN:RT11FB.TM1/MAP:BIN:RT11FB.TM4 OBJ:BTFB,BIN:RT11FB.TM3

.R MONMRG
*BIN:RT11FB.SYG,MAP:RT11FB.MAP=BIN:RT11FB.TM1,RT11FB.TM2,RT11FB.TM4,RT11FB.TM5
*^C

.DEL BIN:RT11FB.TM(1,2,3,4,5)

.DELETE/NOQ OBJ:(KM,US,RM)FB.OBJ

.DELETE/NOQ OBJ:(TB,BT)FB.OBJ

.DELETE/NOQ OBJ:(ME,MI)FB.OBJ

.MAC/OB:OBJ:KMXM SRC:(XM+SYSGEN.CND+EDTG+KMON+KMOVLY)

.MAC/OB:OBJ:USXM SRC:(XM+SYSGEN.CND+EDTG+USR)

.MAC/OB:OBJ:RMXM SRC:(XM+SYSGEN.CND+EDTG+RMON)

.MAC/OB:OBJ:SBXM SRC:(XM+SYSGEN.CND+EDTG+XMSUBS)

.MAC/OB:OBJ:TBXM SRC:(XM+SYSGEN.CND+EDTG+SYSGEN.TBL+TRMTBL)

.MAC/OB:OBJ:BTXM SRC:(XM+SYSGEN.CND+EDTG+BSTRAP)

.MAC/OB:OBJ:MEXM SRC:(XM+SYSGEN.CND+EDTG+MTTEMT)

.MAC/OB:OBJ:MIXM SRC:(XM+SYSGEN.CND+EDTG+MTTINT)

.LINK/EXE:BIN:RT11XM.TM2/BOU:1000/MAP:BIN:RT11XM.TM5/SYM:BIN:RT11XM.TM3/PRO
Files? OBJ:USXM
*OBJ:RMXM
*OBJ:SBXM,KMXM,MEXM,MIXM,TBXM//
Boundary section? OVLY0

.LINK/EXE:BIN:RT11XM.TM1/MAP:BIN:RT11XM.TM4 OBJ:BTXM,BIN:RT11XM.TM3

.R MONMRG
*BIN:RT11XM.SYG,MAP:RT11XM.MAP=BIN:RT11XM.TM1,RT11XM.TM2,RT11XM.TM4,RT11XM.TM5
*^C

.DEL BIN:RT11XM.TM(1,2,3,4,5)

.DELETE/NOQ OBJ:(KM,US,RM)XM.OBJ

.DELETE/NOQ OBJ:(SB,TB,BT)XM.OBJ

.DELETE/NOQ OBJ:(ME,MI)XM.OBJ

[email protected]

.ASSIGN DU0 SRC

.ASSIGN DU0 BIN

.ASSIGN DU0 OBJ

.MAC/OB:OBJ:LD SRC:(SYSGEN.CND+LD)

.LINK/NOBITMAP/EXE:BIN:LD.SYG/BOUNDARY:512. OBJ:LD
Boundary section? SETOVR

.DELETE/NOQ OBJ:LD.OBJ

.MAC/OB:OBJ:LDX SRC:(XM+SYSGEN.CND+LD)

.LINK/NOBITMAP/EXE:BIN:LDX.SYG/BOUNDARY:512. OBJ:LDX
Boundary section? SETOVR

.DELETE/NOQ OBJ:LDX.OBJ

.MAC/OB:OBJ:VM SRC:(SYSGEN.CND+VM)

.LINK/NOBITMAP/EXE:BIN:VM.SYG OBJ:VM

.DELETE/NOQ OBJ:VM.OBJ

.MAC/OB:OBJ:VMX SRC:(XM+SYSGEN.CND+VM)

.LINK/NOBITMAP/EXE:BIN:VMX.SYG OBJ:VMX

.DELETE/NOQ OBJ:VMX.OBJ

.MAC/OB:OBJ:SP SRC:(SYSGEN.CND+SP)

.LINK/NOBITMAP/EXE:BIN:SP.SYG/BOUNDARY:512. OBJ:SP
Boundary section? SETOVR

.DELETE/NOQ OBJ:SP.OBJ

.MAC/OB:OBJ:SPX SRC:(XM+SYSGEN.CND+SP)

.LINK/NOBITMAP/EXE:BIN:SPX.SYG/BOUNDARY:512. OBJ:SPX
Boundary section? SETOVR

.DELETE/NOQ OBJ:SPX.OBJ

.MAC/OB:OBJ:XL SRC:(SYSGEN.CND+XL)

.LINK/NOBITMAP/EXE:BIN:XL.SYG OBJ:XL

.DELETE/NOQ OBJ:XL.OBJ

.MAC/OB:OBJ:XLX SRC:(XM+SYSGEN.CND+XL)

.LINK/NOBITMAP/EXE:BIN:XLX.SYG OBJ:XLX

.DELETE/NOQ OBJ:XLX.OBJ

.MAC/OB:OBJ:DU SRC:(SYSGEN.CND+DU)

.LINK/NOBITMAP/EXE:BIN:DU.SYG/BOUNDARY:512. OBJ:DU
Boundary section? SETOVR

.DELETE/NOQ OBJ:DU.OBJ

.MAC/OB:OBJ:DUX SRC:(XM+SYSGEN.CND+DU)

.LINK/NOBITMAP/EXE:BIN:DUX.SYG/BOUNDARY:512. OBJ:DUX
Boundary section? SETOVR

.DELETE/NOQ OBJ:DUX.OBJ

.MAC/OB:OBJ:LP SRC:(SYSGEN.CND+LP)

.LINK/NOBITMAP/EXE:BIN:LP.SYG OBJ:LP

.DELETE/NOQ OBJ:LP.OBJ

.MAC/OB:OBJ:LPX SRC:(XM+SYSGEN.CND+LP)

.LINK/NOBITMAP/EXE:BIN:LPX.SYG OBJ:LPX

.DELETE/NOQ OBJ:LPX.OBJ

.MAC/OB:OBJ:NL SRC:(SYSGEN.CND+NL)

.LINK/NOBITMAP/EXE:BIN:NL.SYG OBJ:NL

.DELETE/NOQ OBJ:NL.OBJ

.MAC/OB:OBJ:NLX SRC:(XM+SYSGEN.CND+NL)

.LINK/NOBITMAP/EXE:BIN:NLX.SYG OBJ:NLX

.DELETE/NOQ OBJ:NLX.OBJ

.DEL/NOQUERY (SYSGEN.CND,SYSGEN.TBL,SYSGEN.MON,SYSGEN.DEV,SYSGEN.BLD)

.SET USR NOSWAP

.REN/SYS .SYG .SYS
 Files renamed:
DK:DUX.SYG     to DK:DUX.SYS
DK:LPX.SYG     to DK:LPX.SYS
DK:NL.SYG      to DK:NL.SYS
DK:NLX.SYG     to DK:NLX.SYS
DK:VM.SYG      to DK:VM.SYS
DK:XL.SYG      to DK:XL.SYS
DK:XLX.SYG     to DK:XLX.SYS
DK:VMX.SYG     to DK:VMX.SYS
DK:LD.SYG      to DK:LD.SYS
DK:LDX.SYG     to DK:LDX.SYS
DK:SP.SYG      to DK:SP.SYS
DK:LP.SYG      to DK:LP.SYS
DK:SPX.SYG     to DK:SPX.SYS
DK:DU.SYG      to DK:DU.SYS
DK:RT11SB.SYG  to DK:RT11SB.SYS
DK:RT11FB.SYG  to DK:RT11FB.SYS
DK:RT11XM.SYG  to DK:RT11XM.SYS
?PIP-W-Reboot

.BOO RT11XM

RT-11XM (S) V05.07  

.TYPE V5USER.TXT

                                   RT-11 V5.7

    Installation  of  RT-11  Version  5.7 is complete and you are now running
    RT-11 from your system volume.  

    Your  system volume is your working volume if you have used the Automatic
    Installation (AI) procedure.  If you  have  installed  RT-11  using  that
    procedure,  Mentec  recommends  you verify the  correct operation of your
    system's software using the VERIFY verification procedure.  You can  only
    perform  VERIFY  on  the  valid target (output) media you used for the AI
    procedure.  Run VERIFY before you run CONFIG.  To run VERIFY,  enter  the
    command:  
                                   IND VERIFY

    You should read the file V5NOTE.TXT, which you can TYPE or PRINT.  Also, 
    read the Introduction to RT-11, and the Installation Guide which
    contain much of the information you need to use RT-11 Version 5.7.


.R MSCPCK

Compiling Kermit on the PDP-11

Assuming you have the .DSK file mounted (here, under LD0: but it could be DU1: or wherever):

.copy LD0:krt.hex SY:
 Files copied:
LD0:KRT.HEX    to SY:KRT.HEX
.copy ld0:KRTHEX.MAC sy:
 Files copied:
LD0:KRTHEX.MAC to SY:KRTHEX.MAC

.r macro
*KRTHEX=KRTHEX
*^C

.r link
*KRTHEX=KRTHEX
*^C

.run KRTHEX
*KRT=KRT
%KRTHEX-I-Conversion completed
*^C

Alternately you can just run KRTMIN.SAV but this expects EIS, which your system (like this simulated 11/23) may not have.

Running Kermit on the PDP-11 in server mode

By default the XL device will configure itself to the second serial line in the system (CSR=177650, VEC=300), which is great. You want something else, you set it with:

.SET XL CSR=177650
.SET XL VECTOR=300

before running kermit. Then:

.SET RUN VBGEXE

.show term

Unit Owner     Type      WIDTH TAB CRLF FORM SCOPE SPEED
--------------------------------------------------------
  0         S-Console DL   80  No  No   No    Yes   N/A
  1         Local     DL   80  No  No   No    Yes   N/A
  2         Local     DL   80  No  No   No    Yes   N/A

.r krt
Kermit-11 for NONEIS RT-11FB,SB,SJ/TSX-Plus  V03.63  Last edit: 27-Sep-97
Link device is TT:   S/W Parity: SPACE
KRT> set line XL
Link device is XL:   Speed: N/A
DTR: N/A   DCD: low
Flow-Control: XOFF/XON   S/W Parity: SPACE
KRT> set file bin
Binary mode set
Caution: Binary files will require 8-bit prefixing
KRT> set attributes on
KRT> server
Connecting to XL:  DTE speed: N/A
%KRTSER-I-Server starting

?KRTSER-W-Type ^C 3 times to stop the server from this terminal

Connecting to the PDP-11 KERMIT server from your host machine

After installing kermit:

$ kermit
C-Kermit 10.0 Beta.08, 15 Dec 2022, for Linux+SSL (64-bit)
 Copyright (C) 1985, 2022,
  Trustees of Columbia University in the City of New York.
  Open Source 3-clause BSD license since 2011.
Type ? or HELP for help.
(~/) C-Kermit>telnet /nowait localhost 9999
 DNS Lookup...  Trying 127.0.0.1...  Reverse DNS Lookup... (OK)
Connecting to host localhost:9999
 Escape character: Ctrl-\ (ASCII 28, FS): enabled
Type the escape character followed by C to get back,
or followed by ? to see other options.
----------------------------------------------------


Connected to the PDP-11 simulator DLI device, line 0


----------------------------------------------------
Press:
  C to return to avasarala.honkzap.ca
  ? or H for this message
  0 (zero) to send the NUL (0) character
  B to send a Telnet BREAK
  I to send a Telnet Interrupt request
  A to send Telnet Are-You-There?
  U to hangup and close the connection
  Q to hangup and quit Kermit
  S for status
  ! to push to local shell
  Z to suspend
  \ backslash code:
    \nnn  decimal character code
    \Onnn octal character code
    \Xhh  hexadecimal character code;
    terminate with Carriage Return.
  Type the escape character again to send the escape character itself,
  or press the space-bar to resume the CONNECT session.
Press a key>
----------------------------------------------------
# N3
(Back at avasarala)
----------------------------------------------------
(~/) C-Kermit>
(~/) C-Kermit>rdir sy:*.*
 Press the X or E key to cancel.
 0-ERR-1972
SY:SWAP  .SYS    28   31-Oct-1998
SY:RT11AI.SYS    96   31-Oct-1998
SY:RT11XM.MAP    41    No Date 
SY:KRTHEX.MAC    20   15-Oct-1998
SY:RT11SB.MAP    37    No Date 
SY:DUX   .SYS    26    No Date 
SY:LPX   .SYS     2    No Date 
SY:NL    .SYS     2    No Date 
SY:NLX   .SYS     2    No Date 
SY:KRT   .DSK  7000P  31-Oct-1998
.....
(~/) C-Kermit>
(~/) C-Kermit>get KRT.DSK

At this point you get a transfer screen that looks like this:

C-Kermit 10.0 Beta.08, 15 Dec 2022, avasarala [127.0.0.1]

  Current Directory: /tmp
       Network Host: localhost:9999
       Network Type: TCP/IP
             Parity: space
        RTT/Timeout: 01 / 03
          RECEIVING: KRT.DSK => krt.dsk
          File Type: BINARY
          File Size: 614400
       Percent Done: 55   ///////////////////////////
                          ...10...20...30...40...50...60...70...80...90..100
Estimated Time left: 00:01:50
 Transfer Rate, CPS: 4560
       Window Slots: 1 of 1
        Packet Type: D
       Packet Count: 528
      Packet Length: 601
        Error Count: 0
         Last Error:
       Last Message:
    
 X to cancel file, Z to cancel group, <CR> to resend last packet,
 E to send Error packet, ^C to quit immediately, ^L to refresh screen

You may be able to tweak the serial port speed and Kermit parameters to be faster, or support 8-bit transfer, but in the end KERMIT isn't about speed, it's about rock solid file transfer. If KERMIT believes it's gotten the file from or to the remote system with zero errors, you can trust it.

Source documents

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment