Comms Woe
With a working machine the next thing to do was get Kermit transferred down for sending files. I thought this would've been easy since the Superbrain was THE FIRST Kermit client. The code was WRITTEN for a Superbrain. Therefore I assumed, wrongly, that all this would be documented. First off, there's 2 ports on a Superbrain - Main and AUX. I had to guess which port was in use on the version of Kermit (4.03) I had on one of the disk images. Then, what cable to use? The original Kermit hooked up to a Gandalf serial port mux which had a non-standard pinout via its AUX port which was no good to me, so I dug out my venerable DEC BC22D-25 serial cable that I'd used on my VT100 back in my programming days. That's a null modem cable so with my FTDI USB-Serial adapter on a Win10 PC I had a few goes at transmissions with no luck.
PIP!
Then I remmebered that PIP on CP/M usually supports the standard input/output devices of RDR (tape reader), PUN (tape punch), LST (printer) and sometimes INP and OUT. Forgetting Kermit for now I did a simple test with
PIP FOO.TXT=RDR:[E]
and sent a text file from the PC using an emulator called RealTerm. Result! File transferred successfully, after I'd remembered to CTRL-Z in RealTerm's input window to send the EOF marker. This means I could compile Kermit locally on the PC and send it down in small chunks, reassembling it on the Superbrain. PIP itself has a file size limit of 24K so the chunks had to be smaller than that.
Kermit itself is made up of 2 portions, a device independent part based around CPSKER.ASM and a device specific part built around CPXTYP.ASM. You edit CPXTYP.ASM to specify which machine you're building for then use LASM to assemble. The easiest way to do that in 2020 is to use a CP/M emulator, my favourite is MyZ80 which has 3 'disks' you can import files into for processing. The only downside to MyZ80 is it's a DOS program so on 64bit Win10 you need to install DOSbox to then run MyZ80. I won't cover that here. Edit the matching part (lines 297-303) of CPXTYP.ASM on the PC to look like this:
ampro	EQU	FALSE		; Ampro Little Board (terminal required)
basicns	EQU	FALSE		; Basic Northstar using printer port (CRT req.)
bbII	EQU	FALSE		;BigBoard II (terminal required)
brainm	EQU	FALSE		;Select Superbrain Main port  **[obs]
braina	EQU	TRUE		;Select Superbrain AUX port  **[obs]
comart	EQU	FALSE		;[10] Comart Communicator
; (terminal required)
then import the whole lot into the B: drive of MyZ80, LASM.COM is part of the Kermit bundle so once it's all imported just typing 'LASM CPSKER' will assemble the main part. When that's done LASM CPXTYP will do the machine-specific part and tell you which machine you're compiling for.
The result is CPSKER.HEX and CPXTYP.HEX which can be EXPORTed back to the PC. Once there use a text editor to split CPSKER.HEX into 6 parts which can then be transmitted down to the Superbrain, for example KER1 to KER6. Also send down MLOAD.HEX if your CP/M disk doesn't have it on there. What you WILL need on the CP/M disk is LOAD.COM. On the Superbrain join the main parts back together and create the binaries:
PIP CPSKER.HEX=KER1,KER2,KER3,KER4,KER5,KER6
MLOAD KERM411.COM=CPSKER.HEX,CPXTYP.HEX
SET PORT com(x)
SERVER