On Thu, 25 Nov 2021, Christian Corti wrote:
Just tried without SerialDisk... no difference. K12MIT
is broken on the
PDP-12.
I've found the bug. Charles Lasner broke PDP-12 support (and probably also
older PDP-8 models like 8/I) with his additions to support the DECmate
family. The location is at 0206, labelled SETBAUD. This should be a NOP on
standard systems, but is overlayed by an IOT to set the baud rate on a
DECmate 1. This results in a 6413 instruction (because I have assembled it
for the second serial port on 40/41). This instruction always skips (as
the transmitter done flag is always set), thus jumping into a 4411 that is
the address of a CRLF to be printed but executed as a JMS into nirvana.
The very same code runs fine on a PDP-8/E with a KL8/E interface that
apparently either ignores this instruction or, by other means, has the
flag cleared.
If patching location 0206 to 7000 (NOP), K12MIT will run on a PDP-12.
Sending files works, but receiving seems to be broken. Most of the times,
the sending Kermit aborts the transfer to the PDP-12 with a
out-of-window-NACK error (confirmed by looking at the protocol debug log).
K12MIT sends a NACK to a previous packet that it already ACK'ed *after*
receiving the next data packet.
Here's the code fragment:
1827 000200 5777 CLOOP, JMP I (INITIALIZE) /**** INITIALIZED **** CLA CLL
/024 CJL
1828 000201 4577 JMS I [CRESET] /RESET CONSOLE ROUTINE STUFF
1829 000202 3002 DCA ABFLAG /CLEAR ABORT FLAG
/044 CJL
1830 000203 3105 DCA REMWAIT /CLEAR REMOTE FLOW CONTROL WAIT
/049 CJL
1831 000204 4324 CLDMZAP,JMS DMINIT /INITIALIZE DECMATE PORT
/048 CJL
1832
1833 / THE PREVIOUS INSTRUCTION IS FOR DECMATE OPERATION
ONLY. THE DEFAULT
1834 / INSTRUCTION IS FOR KL8 INTERFACES ONLY.
1835
1836 0204 *CLDMZAP /OVERLAY DECMATE CODE
/048 CJL
1837
1838 000204 7000 CLDMZAP,NOP /DON'T INITIALIZE DECMATE PORT
/048 CJL
1839 000205 1007 TAD RATE /GET BAUD RATE
1840 000206 6363 SETBAUD,MSB /SET REMOTE BAUD RATE
/050 CJL
1841
1842 / THE PREVIOUS INSTRUCTION IS FOR DECMATE II OPERATION ONLY.
/050 CJL
1843
1844 0206 *SETBAUD /OVERLAY DECMATE II CODE
/050 CJL
1845
1846 000206 7000 SETBAUD,NOP /NOT APPLICABLE ON DECMATE I
/050 CJL
1847
1848 / THE PREVIOUS INSTRUCTION IS FOR DECMATE I OPERATION
ONLY. THE DEFAULT
1849 / INSTRUCTION IS FOR KL8 INTERFACES ONLY.
1850
1851 0206 *SETBAUD /OVERLAY DECMATE I CODE
/050 CJL
1852
1853 000206 6413 SETBAUD,RSBIOT /SET REMOTE BAUD RATE
/050 CJL
1854 000207 4576 JMS I [SCRIBE] /DO A
/025 CJL
1855 000210 4411 CRLF /<CR>, <LF>
/025 CJL
1856 000211 4576 JMS I [SCRIBE] /GIVE THEM THE
/025 CJL
1857 000212 4457 PRMTMSG /PROMPT MESSAGE
/025 CJL
1858 000213 4776 JMS I (LININP) /GET INPUT LINE FROM USER
Christian