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

Reply via email to