Index
If you're feeling adventurous, combine the two hex files, and convert that into a binary:
$ cat cpsker.hex cpvosb.hex > kerm411.hex $ hex2bin kerm411.hex
From that I can tell, that's functionally equivalent to the below, minus any holes in the file that contain the data that was in memory prior.
Transfer the files
Download cpsker.hex and cpvosb.hex from http://www.columbia.edu/kermit/cpm.html
Via Serial
Based on the reference by Toni Westbrook: http://www.toniwestbrook.com/archives/80
Connect your OCC1 to a "real"-ish serial port. The port on the OCC1 has RX and TX swapped, meaning that you'll probably need to make a cable. I ended up making a short adaptor to convert that to a "computer side" (DTE) DB9, which works with a null-modem cable. A Prolific based USB serial cable worked fine in this arrangement.
Start up picocom on the serial port:
$ picocom -b 1200 /dev/ttyS0
Start up PIP on the OCC, specifying that we're sending a [H]ex file, saving into CPVOSB.HEX.
A:>PIP B:CPVOSB.HEX=PTR:[H])
Once that's running, copy and paste the contents of CPVOSB.HEX into the serial terminal. This'll take about 1 minute to send a 1200 baud. Press CTRL+Z on the picocom session to tell PIP that we're done. It'll write the file and close.
CPSKER.HEX is bigger than PIP's buffer, so we have to send it in chunks.
Split it into 200 lines at a time:
$ split -l 200 cpsker.hex
Copy and paste each split file into the terminal, and each time use a different file name with PIP.
Clean the files up with ED - removing any extra new lines.
Join them using PIP:
A:>PIP CPSKER.HEX=CPSKER.001,CPSKER.002,CPSKER.003,CPSKER.004
Via Disk Images
Create the image
This is written for an Osborne 1 without the Double-Density upgrade, so it will work regardless.
Requires cpmtools and something like a greaseweazle and it's tools.
Generate a blank disk (raw sector) image (note: file extension im g not im d), and format it.
$ dd if=/dev/zero bs=1024 count=100 of=kermit.img $ mkfs.cpm -f osb1sssd kermit.img
Copy the files into the disk image
$ cpmcp -f osb1sssd kermit.img cpsker.hex 0:CPSKER.HEX $ cpmcp -f osb1sssd kermit.img cpvosb.hex 0:CPVOSB.HEX
Grab DDT
If you have two working drives, the CP/M Utilities disk (SD) or CP/M Help disk (DD) will have DDT on it. Boot that disk and have it ready. You can skip this section to the next.
If you only have one drive, you'll want to copy DDT.COM to the image as well as the program files. Boot your Osborne with any CP/M disk, and leave it at the prompt.
Either capture or "acquire" a disk image containing DDT.
Convert that image to a raw sector format:
$ dsktrans -itype tele -otype imd OS1SYSS.TD0 OS1SYSS.IMD $ disk-analyse OS1SYSS.IMD occ1-sssd-cpmutilities.img
Copy DDT.COM out:
$ cpmcp occ1-sssd-cpmutilities.img 0:ddt.com ddt.com
Copy it into the new image:
$ cpmcp -f osb1sssd kermit.img ddt.com 0:ddt.com
Write the image to a real disk
Using a greaseweazle (and a 40-track / 48tpi drive):
$ gw write --drive=1 --tracks="c=0-39" --format occ1.sd 10_kermit.img
Link the two modules
The two files we've transferred are "Intel HEX" formatted files. These are representations of raw binary data, with addresses and checksums. Like base64, but better for programs.
Both files need to be loaded into memory together, in the right locations, and then saved to disk to form the kermit binary.
Load DDT and the main Kermit code into memory:
A:>DDT CPSKER.HEX NEXT PC 070A 0127 -
Once the - DDT prompt shows, load the Osborne specific code into memory:
-iCPVOSB.HEX -r NEXT PC 742C 0000 -
(If you're using a single disk, place a bootable disk back in)
Exit DDT with CTRL+C.
We need the NEXT value here - this is how much memory has been used by the program so far, in (hexadecimal) bytes. We need to save that to disk, using the SAVE command.
The SAVE command takes two arguments, the number of "pages" (of 0x100 bytes) to save, and the file name to save. Grab your NEXT number, round it up to the next thousand (i.e. 742C -> 7500) and then drop the last two digits.
Finally, convert that from hexadecimal to decimal (0x75 -> 117).
(Single diskers place a formatted disk with at least 30K of space in it)
A:>SAVE 117 KERM411.COM
That's it! You can run Kermit using KERM411.
My copies are available here, the disk images are bootable: