/OS/8 HANDLER TO EMULATE SYKES 7250 ON LSI-11 / MODIFIED FROM "AUXB.PA", SYKES NO. /9995B0210B JULY 16, 1975 /USES LSI-11 ATTACHED TO PDP-8L IN SMITH HALL TO /DUPLICATE THE FUNCTIONS OF A SYKES DISK AS AN AUXILARY DEVICE / RON LARKIN, BOB SCHOR JULY 1978 /MODIFIED TO DO AN EXTRA XMIT TO ASSERT MASTER STATUS, RL / JULY 22, 1978 /NOTE: THE PARALLEL INTERFACE BETWEEN THE COMPUTERS IS 12 BITS /WIDE AND IS REPUTED TO BE QUITE FAST. / CONVENTIONS: /THE PDP-8 WORD IS 12 BITS LONG. MSB=0 / IN "READ" (INPUT FROM 11) MODE, EACH 0 WORD SENT INDICATES / THAT PDP-8 IS READY TO ACCEPT TWO BYTES OF DATA / OFF THE FLOPPY DISK, EACH IN BITS 4-11. / IN "WRITE" MODE (OUTPUT TO 11), PAIRS OF BYTES / ARE SENT TO THE FLOPPY DISK IN THE SAME MANNER, WITH BITS 0-3 / CLEAR. WHEN ANY OF BITS 0-3 IS SET IN A WORD SENT TO THE 11, / THE WORD IS TO BE TREATED AS A COMMAND WORD, NOT A DATA BYTE. / 3 COMMANDS ARE POSSIBLE: / 12-BIT VALUE COMMAND / 7600 RESET / 0603 TERMINATE. WRITE OUT ANY REMAINING DATA / ON THE 11 FLOPPY ON A WRITE; IGNORED ON A / READ. / 04XX SELECT TRACK. XX&177=TRACK NO. / 04XX SELECT SECTOR AND I/O MODE. XX&37=SECTOR NO. / WRITE MODE IF "40" BIT SET, ELSE READ / (A TRACK SELECT IS ALWAYS FOLLOWED BY A SECTOR SELECT.) / / / /THIS PROGRAM WHEN ASSEMBLED, PRODUCES A BINARY /TAPE WHICH IS INPUT TO THE OS/8 SYSTEM GENERATION /PROGRAM 'BUILD'. / /THE BUILD COMMAND 'LOAD' IS USED TO LOAD THE /BINARY TAPE INTO CORE WHERE THE AUXILIARY DEVICE /HANDLER FOR THE SYKES EMULATOR /CAN BE INSERTED INTO THE OS/8 SYSTEM. / /THE STRUCTURE OF THE SOURCE FOR THIS PROGRAM IS /AS DEFINED IN THE 'BUILD SECTION' IN CHAPTER 2 OF /THE OS/8 HANDBOOK. / / /THE COMPONENTS OF THE PROGRAM ARE: / / 1. HEADER BLOCK (*0) / 9 WORDS WHICH DESCRIBE THE / DEVICE HANDLER. / / / 2. BODY OF DEVICE HANDLER (*200) / SYIOP1=JMS XMIT /SYIOP1 IS NOW ONLY A COMMAND IOT PUT11=6162 /SEE "P11.PA" FOR USE OF THESE SERIAL GET11=6164 /I/O INSTRUCTIONS SKP11=6161 /THIS ONES WORKS ON BOTH IN AND OUTPUT /SET BLOCK COUNT TO 7046 (-474 DECIMAL) BLOCKS AS FOLLOWS: / .GET SYS PIP / .ODT / 136XX/0000 7046 WHERE XX = DEVICE TYPE NO. / / / *0 / /HEADER BLOCK - 9 WORDS / /NOTE: BOTH THE GROUP NAME AND THE PERMANENT / NAME CAN BE FROM 1 TO 4 ALPHANUMERIC / CHARACTERS. THESE ARE TRIMMED TO 6 BIT / ASCII AND PACKED INTO 2 WORDS, FILLED IN / WITH ZEROES ON THE RIGHT IF NECESSARY. / / WORD 0 - -X, WHERE X IS THE NUMBER OF SEPARATE / HANDLERS CONTAINED IN THIS FILE. / -1 /1 DEVICE HANDLER / / WORDS 1,2 - GROUP NAME: SY11 / WORDS 3,4 - PERMANENT NAME: DX1 DEVICE SY11;DEVICE DX1 / / WORD 5 - DCB WORD. SEE TABLE 2-12 / OF OS/8 HANDBOOK. / BIT 0 =1: FILE STRUCTURED DEVICE / BITS 3-8 =55: DEVICE TYPE FOR USER WRITTEN HANDLER / BITS 9-11 =0: RESERVED FOR MULTI-PLATTERED DISKS 4550 /DCB WORD / / WORD 6 - ENTRY POINT WORD / BIT 2 =1: ENTRY POINT IS SYS. / BITS 5-11 ENTRY POINT OFFSET SYKES-200 /ENTRY POINT WORD / / WORD 7 - ALWAYS ZERO 0 / / WORD 8 - ALWAYS ZERO 0 *200 / /READ LOOP / RLOOP, JMS XMIT /SEND A 0 WORD TO SIGNAL DATA FOLLOW JMS XMIT /SWITCH PDP-8 TO MASTER STATUS JMS WAIT /INPUT ONE WORD GET11 AND K377 /MASK OFF THE TOP 4 BITS RTL CLL RTL DCA STEMP /AC 0-7 JMS WAIT /INPUT ANOTHER BYTE GET11 /AC 8-11 RTR RTR AND SP17 TAD STEMP DCA I SPOINT ISZ SPOINT /BUMP BUFFER PTR S70, 70 /DUMMY 'AND' - DOUBLES AS CONSTANT ISZ SWDCNT /COUNT WORDS JMP RLOOP JMP STERM /TERMINATE I/O / /ROTATE ACC 4 RIGHT, SET AC0-3=0, WAIT + OUTPUT / SSECT, /TEMPORARY SAVE AREA PUT, 0 RTR CLL RTR DCA STEMP /SAVE THE WORD TEMPORARILY TAD STEMP /CLEAR BITS 0-3 AND K377 JMS XMIT /SEND ONE BYTE CLA /RESTORE THE ACC TAD STEMP JMP I PUT KM3, -3 /CONSTANNTS KEEP SYKES AT LOCATION 55 K177, 177 K377, 377 K603, 603 0 SYKIF, 6203 S400, 400 SP17, 17 S6201, 6201 SP432, 433 /400 ADDED FOR AC3 DECIMAL SMD26, -26 OCTAL SWDCNT, 0 SPOINT, 0 STRK, 0 WTMP, 0 / / DEVICE HANDLER ENTRY POINT / SYKES, 0 CLA 6214 /RDF TAD SYKIF DCA SYKRET /RETURN FIELD SETUP TAD SRESET SYIOP1 /RESET UNIT CLA TAD I SYKES DCA STEMP /SAVE FUNCTION WORD ISZ SYKES TAD I SYKES DCA SPOINT /SAVE BUFFER ADDRESS ISZ SYKES / /CONVERT RELATIVE SECTOR NO. /TO TRACK AND SECTOR. / DCA STRK TAD I SYKES CLL RTL /(BLOCK X 4) ISZ STRK TAD SMD26 SMA JMP .-3 TAD SP432 /SECTOR = 433-IREM(BLOCK*4/26) DCA SSECT /SECTOR +1 /NOW WORK ON FUNCTION WORD TAD STEMP /GET FUNCTION WORD RAL AND S7600 SNA /WORD CNT=0=REWIND JMP STERM CIA DCA SWDCNT /WORD COUNT TAD STEMP /GET FUNCTION WORD AND S70 TAD S6201 DCA SCDF /FIELD OF BUFFER STEMP, SCDF, 6201 /SELECT CORRECT FIELD TAD S400 /AC3 ON TAD STRK SYIOP1 /OUTPUT SELECT TRK COMMAND SZL CLA /0=READ, 1=WRITE TAD S40 TAD SSECT SYIOP1 /OUTPUT READ/WRITE SECTOR SNL CLA /0=READ, 1=WRITE JMP RLOOP / /WRITE LOOP / WLOOP, TAD I SPOINT JMS WRITE /SEND 2 BYTES OF DATA SRESET, /RESET CMD S7600, 7600 /CLA - DOUBLES AS CONSTANT ISZ SPOINT /BUMP BUFFER ADDR. S40, 40 /CONSTANT - DUMMY 'AND' ISZ SWDCNT /COUNT WORDS JMP WLOOP STERM, TAD K603 /ISSUE A TERMINATE SYIOP1 ISZ SYKES ISZ SYKES CLA /CLEAR FOR NORMAL RETURN SYKRET, 6203 JMP I SYKES /NEW SUBROUTINES TO SUBSTITUTE FOR SYIOP1-3 WRITE, HLT /WRITE 2 BYTES TO THE 11 JMS PUT /OUTPUT 0-7 RAR JMS PUT /OUTPUT 8-11 IN UPPER HALF OF THIS BYTE JMP I WRITE XMIT, HLT /SEND 1 12-BIT WORD TO PDP-11 JMS WAIT PUT11 /LEAVES THE AC UNCHANGED I THINK JMP I XMIT WAIT, HLT /RETURNS WHEN PDP-11 SAYS IT IS READY WAIT1, DCA WTMP /STASH AC TEMPORARILY KRB /READ KEYBOARD THE EASY WAY AND K177 /KNOCK OFF THE TOP BIT TAD KM3 /AND CHECK FOR CONTROL-C SMA /RESTORE THE LINK BIT CML SZA CLA JMP NOTC /GO CHECK PDP-11 READY FLAG CDF CIF 0 /GO TO OS/8 PRONTO JMP I S7600 NOTC, TAD WTMP /RESTORE AC SKP11 /SKIP IF 11 IS READY JMP WAIT1 /NOT YET JMP I WAIT /OK, EXIT $$$