m_thompson
Veteran Member
Finished removing the foam adhesive goo from the 8/e cover.
The PDP-8/e has a cover? I have never actually seen one. ;-)
Finished removing the foam adhesive goo from the 8/e cover.
I can confirm -- I have one .The PDP-8/e has a cover? I have never actually seen one. ;-)
The one I had also had one. I believe they are often left off after maintenance and then the top gets shoved somewhere and lost.I can confirm -- I have one .
Vince
These would be easily fabricated from new parts. DigiKey carries exact housings and pins for the H724 side and probably the other side as well although I can get the spade lug style stuff at any auto parts store. If you want to go all out you can even get the pins in a gold plated version. The correct crimpers would be nice.Which reminds me - I am looking for one or two power cables from the H724 PSU to my two OMNIBUS backplane sections for my PDP-8/E if anyone has a small surplus and you want to sell the odd one or two?
Which reminds me - I am looking for one or two power cables from the H724 PSU to my two OMNIBUS backplane sections for my PDP-8/E if anyone has a small surplus and you want to sell the odd one or two?
/ SERIAL DISK OVER THE CONSOLE PORT
/
/ 20220213 DPI
/ STARTED CODING SINGLE SYS ENTRY POINT.
/ 20220218 DPI
/ FLESHED IT ALL OUT. JUST EXACTLY FITS WITHOUT ANY TRICKS.
VERS="A&77 /VERSION DISPLAYED BY RESORC
DEVCNT=1 /JUST THE SYS ENTRY FOR NOW
DECIMAL
DEVSIZ=3248 /SAME AS RK05 AND PREVIOUS VERSIONS FOR NOW
OCTAL
*0
-DEVCNT /NUMBER OF ENTRIES
DEVICE SDCO; DEVICE SYS; 4400; 2007; 0; DEVSIZ
/BOOT CODE ISN'T USED BY SERIAL DISK BOOT ANYWAY.
/////// START OF UNUSED BOOT. BUILD NEEDS SOMETHING.
/////// MAKE THIS ZEROS AT SOME POINT? CAN BE UP TO 43 OCTAL WORDS
BOOT-BLAST /TWO'S COMPLEMENT OF LENGTH OF BOOT CODE FOR BUILD
RELOC 0
BOOT, NOP /NO BOOT CODE HERE. THE SERVER HANDLES IT.
BLAST, RELOC
NOPUNC
*0026 /PLACE HOLDER FOR READ ADDRESS
/THIS IS THE BOOT 1 CODE THAT GETS OVERWRITTEN
NOP /FOR NOW
ENPUNC
/////// END OF BOOT
/ THE HANDLER STARTS HERE
*200
RELOC 7600
ZBLOCK 7 /SKIP OVER THE OS/8 RESTART CODE
SYS, VERS /RESORC DISPLAYS THIS AS THE VERSION NUMBER
CLA CMA CLL /GET AC AND LINK TO A KNOWN STATE
/-1 IN THIS CASE TO INIT TSFSET
/SD SHARES THE CONSOLE PORT. THE CALLER COULD HAVE JUST SENT A CHAR SO
/ WE WAIT UP TO A CHAR TIME OR UNTIL THE FLAG IS SET.
DCA TSFSET /INITIALIZE THE TSFSET FLAG TO INDICATE NOT SET
TAD BDTIME /WE NEED TO WAIT A CHARACTER TIME
DCA TEMP /INITIALIZE THE TIMER COUNTER
BDLP, TSF /GET STATE OF TRANSMIT FLAG
JMP NOTSET /WE WAIT FOR ONE
ISZ TSFSET /MARK TSF FLAG AS SET
JMP WAKEUP /WE GOT NO TSF FLAG. SEND SERVER WAKEUP
NOTSET, ISZ TEMP /HAVE WE WAITED A CHARACTER TIME?
JMP BDLP /NOT YET
/WE NEED TO WAKEUP THE SERVER. WE SEND IT THE WAKEUP CODE OF 02X WHERE
/THE X IS REPLAED BY THE CALLERS DATA FIELD.
WAKEUP, RDF /GET THE CALLERS DATA FIELD IN 6-8
RTR /SHIFT RIGHT 3 BITS
RAR
TAD WKUP /ADD IN THE WAKEUP CODE
TLS /SEND THE WAKEUP COMMAND TO THE SERVER
/ NOW SEND THE ADDRESS OF THE CALLERS ARGUMENTS
TAD SYS /GET POINTER TO ARGUMENTS
JMS SEND12 / AND SEND IT
/AT THIS POINT THE SERVER IS IN DISK MODE AND WON'T SEND ANYMORE
/CHARACTERS FROM THE KEYBOARD.
/NOW HANDLE THE KEYBOARD
CLA CMA /A -1 MEANS NO CHARACTER WAS WAITING TO BE READ
KSF /IS THERE A CHARACTER
SKP /NO CHARACTER SO SKIP THE READ
KRB /READ THE CHARACTER AND CLEAR THE FLAG
DCA KSFSET /REMEMBER THIS
TAD KSFSET /AND SEND TO THE SERVER
JMS SEND12
/NOW WE GO INTO COMMAND MODE AND DO WHAT THE SERVER TELLS US.
CMDLP, JMS GET12 /READ THE ADDRESS
DCA BUFFER
JMS GET12 /READ THE WORD COUNT
DCA COUNT
JMS GET12 /READ THE COMMAND
SMA /TEST FOR JMP COMMAND
JMP RDORWR /IT IS A READ OR A WRITE COMMAND
/WE HAVE A JMP COMMAND.
/ FIX UP THE TSF FLAG IF NECESSARY
ISZ TSFSET /SKIP IF TSF FLAG WAS SET ON ENTRY
TCF /ELSE CLEAR IT
/HANDLE KSF AND CHARACTER IN INPUT BUFFER. IF NECESSARY THE SERVER WILL
/RESEND THE CHARACTER.
ISZ KSFSET /SKIP IF WE NEED TO WAIT FOR CHARACTER
JMP DOJUMP /FLAG WAS NOT SET ON ENTRY
KSF /WAIT FOR SERVER
JMP .-1
DOJUMP, DCA .+1 /COMMAND IS THE CDF CIF TO THE JMP FIELD
HLT /OVERWRITTEN BY A CDF CIF TO THE DESTINATION FLD
TAD COUNT /COUNT IS VALUE LOADED IN THE AC
JMP I BUFFER /AND PERFORM THE FAR JMP
RDORWR, RTL /LINK CLEAR IF READ, SET IF WRITE.
TAD CDFINS /BUILD THE CDF INSTRUCTION
DCA .+1 /AND EXECUTE NOW
HLT /THIS BECOMES A CDF TO THE USERS BUFFER
SZL /IS THIS A READ
JMP WRCMD /NO IT IS A WRITE
RDCMD, JMS GET12 /GET READ BYTE FROM SERVER
DCA I BUFFER /STORE IN USERS BUFFER
ISZ BUFFER /POINT AT NEXT
NOP /IN CASE IT WRAPS AROUND
ISZ COUNT /ARE WE DONE YET?
JMP RDCMD /NOT YET
JMP CMDLP /GO GET NEXT COMMAND
WRCMD, TAD I BUFFER /GET WORD TO BE WRITTEN
ISZ BUFFER /POINT AT NEXT
NOP /IN CASE IT WRAPS AROUND
JMS SEND12 /SEND TO SERVER
ISZ COUNT /ARE WE DONE YET?
JMP WRCMD /NOT YET
JMP CMDLP /GO GET NEXT COMMAND
/ GET A 12 BIT VALUE FROM THE SERVER
GET12, .-.
KSF /WAIT FOR A CHARACTER
JMP .-1
KRB /READ IN THE CHARACTER
RTL /SHIFT LEFT 4 BITS
RTL
DCA TEMP /SAVE UPPER 8 BITS
KSF /WAIT FOR LOWER 4 BITS
JMP .-1
KRB /READ IN THE LOWER 4 BITS
TAD TEMP /COMBINE
JMP I GET12 /RETURN
/ SEND A 12 BIT VALUE TO THE SERVER
SEND12, .-.
TSF /WAIT FOR LAST ONE TO COMPLETE
JMP .-1
TLS /SEND THE LOWER 8 BITS
RTR /MOVE UPPER 4 BITS DOWN
RTR
TSF /WAIT FOR LOWER 8 BITS TO COMPLETE
JMP .-1
TLS /SEND THE UPPER 4 BITS
CLA CLL /GET BACK TO KNOWN STATE
JMP I SEND12 /RETURN
/CONSTANTS
/ THE VALUE FOR BDTIME IS THE TWOS COMPLEMENT OF THE NUMBER OF COUNTS
/ OF THE TIMING LOOP FOR A SINGLE CHARACTER TRANSMISSION. IT SHOULD
/ BE TUNED FOR YOUR MACHINE. HERE ARE SOME EXAMPLES FOR REFERENCE.
/BDTIME, -06534 / EMUL-8 AT 110 BAUD
/BDTIME, -047 / EMUL-8 AT 9600 BAUD
/BDTIME, -032 / SIMH AT DEFAULT SETTINGS
BDTIME, -047 /REPLACE THIS WITH THE VALUE FOR YOUR MACHINE
CDFINS, CDF 00 /CDF INSTRUCTION PATTERN
/ COMMAND TO WAKEUP THE SERVER. MUST BE AN UNUSED CONTROL CHARACTER.
/ A TELETYPE SENDS THE 0200 BIT SET SO WE SHOULD BE ABLE TO USE ANY
/ VALUES BELOW 0200. LETS AVOID THE COMMON ONES ANYWAY.
/ 000 NUL IS USED AS THE BOOT WAKEUP.
/ 007 BEL RING THE BELL
/ 010 BS BACKSPACE
/ 011 HT TAB
/ 012 LF LINEFEED
/ 013 VT VERTICAL TAB
/ 014 FF FORM FEED
/ 015 CR CARRIAGE RETURN
/ 033 ESC ESCAPE
/ 040 SPACE SPACE
/ 127 DEL DELETE
/WE NEED A RANGE OF 8. THE BOTTOM 3 BITS ARE THE CALLERS DATA FIELD.
/020 THROUGH 027 SEEM USABLE.
WKUP, 020
/VARIABLES
BUFFER, 0 /CALLERS TRANSFER ADDRESS
COUNT, 0 /NUMBER OF WORDS TO SEND
KSFSET, 0 / 7777 IF KSF WAS CLEAR UPON ENTRY
TEMP, 0 /SHORT TERM TEMPORARY
TSFSET, 0 / 7777 IF TSF FLAG WAS CLEAR UPON ENTRY
$
If you made it this far I applaud your persistence. If you have any thoughts or questions on where I could do better let me know.
As an old retired guy I had to check the calendar to make certain it isn't April 1. I am glad you put a smiley at the end.I think the problem is very easily solved by implementing a protocol which "packetises/multiplexes" both "TTY" and "serial disk" traffic. A packet identifier in the packet header tells the other side what type of data it is. If you want to get fancy you could even add a packet sequence number, a checksum/CRC, acknowledgments, idle acknowlegments (to detect if the other side is off-line) and implement retransmissions when you get an unexpected sequence number or unexcpected checksum/CRC. The tricky bit may be to hide the protocol machinery from the user application so that it is completely transparent/invisible.
Is it the ISZ TSFSET at BDLP+2 that's guaranteed to skip? Doesn't that just mean TSFSET gets to be 0001 instead of 0000? Which seems harmless, though perhaps not intentional.Already found one bug. If you find it you get Kudos!
That is not the one I found. I missed that one. It was originally zero incremented to 1 but I changed it so I could test with ISZ on exit. Well crap, it uses another word to fix.Is it the ISZ TSFSET at BDLP+2 that's guaranteed to skip? Doesn't that just mean TSFSET gets to be 0001 instead of 0000? Which seems harmless, though perhaps not intentional.
Unless you are running on a DECmate.
If I remember correctly, the KSF and TSF instructions as implemented in the crappy TTY support chip both skip and clobber the flag. SoI am blanking on the DECmate issue. I guess I better study up on it as I know there was some difference in console handling but I don't remember the specifics.
TSF
behaves as
TSF TCF
Yes, 2nd from the last line in #612. That you didn't see it tells me my post was too long. I will try to be more succinct in the future.Hi Doug, thanks for your explanation. Can't you use the disk server as data switch as well?
PDP8 <--RS232--> DISK SERVER <--RS232/CL--> terminal
They sure can and do. And at this point the only thing that motivates is that these projects are a labor of love.I know, these things are easy to say and can take months to develop...