/OS/8 AUXIL. DRIVER FOR SYKES 7150/7250 DISK SYSTEM / FILE: AUXB.PA / /SYKES DATATRONICS, INC., ROCHESTER, N.Y. 14606 /9995B0210B JULY 16, 1975 / MODIFIED TO HANDLE WORD COUNT=0 CORRECTLY RL 8/28/78 / / /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 7150 OR 7250 FLEXIBLE DISK /UNIT 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) / /THE AUXILIARY DRIVER GENERATED WILL OPERATE A SYKES /MODEL 7150 OR 7250 WITH A DEVVICE CODE AS DEFINED BY /'SYKDVC'. / / /THE USER MAY NEED TO EDIT 'SYKDVC' OR 'SYKUNT', PRIOR /TO ASSEMBLING THIS PROGRAM. / SYKDVC=320 /DEVICE CODE OF 7000 SYSTEM (X10) SYKUNT=2 /UNIT NUMBER (DRIVE) TO BE SELECTED SYIOP1=6001+SYKDVC SYIOP2=6002+SYKDVC SYIOP3=6004+SYKDVC / /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. / THE PACKING CAN BE DONE MANUALLY OR BY / USING THE DEVICE PSEUDO-OP WITH THE PAL8 / ASSEMBLER. / / WORD 0 - -X, WHERE X IS THE NUMBER OF SEPARATE / HANDLERS CONTAINED IN THIS FILE. / -1 /1 DEVICE HANDLER / / WORDS 1,2 - GROUP NAME: SYKA 2331 /SY 1301 /KA / / WORDS 3,4 - PERMANENT NAME: FLP 0614 /FL 2000 /P / / 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, SYIOP2 JMP .-1 SYIOP3 RTL CLL RTL DCA STEMP /AC 0-7 SYIOP2 JMP .-1 SYIOP3 /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 AC3=0, WAIT + OUTPUT / SSECT, /TEMPORARY SAVE AREA PUT, 0 RTR CLL RTR SYIOP2 JMP .-1 SYIOP1 JMP I PUT SYKECT, 0 /RETRY COUNTER SYKIF, 6203 P603, 603 S400, 400 SP17, 17 S6201, 6201 SP432, 433 /400 ADDED FOR AC3 DECIMAL SMD26, -26 OCTAL SWDCNT, 0 SPOINT, 0 STRK, 0 S110, 110 SYKP4, 4 SYK601, 601 SYSEL, SYKUNT / / DEVICE HANDLER ENTRY POINT / SYKES, 0 CLA CLL CMA RTL /-3 RTL DCA SYKECT /RETRY COUNT = -9 6214 TAD SYKIF DCA SYKRET /RETURN FIELD SETUP / /RESET FLOPPY AND SELECT UNIT 'SYKUNT' / SYKTRY, TAD SRESET SYIOP1 /RESET UNIT TAD SYSEL /600+SYKUNT SYIOP1 /SELECT 'SYKUNT' 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 DCA SSECT /SECTOR +1 /NOW WORK ON FUNCTION WORD TAD STEMP RAL AND S7600 SZA /0=FULL-FIELD TRANSFER CIA DCA SWDCNT /WORD COUNT TAD STEMP 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 /CHECK UNIT GOT STARTED AND S400 SYIOP3 /READ STATUS AND SYKP4 /BUSY MUST BE SET SNA CLA JMP SYKBAD SNL CLA /0=READ, 1=WRITE JMP RLOOP / /WRITE LOOP / WLOOP, TAD I SPOINT JMS PUT /OUTPUT 0-7 RAR JMS PUT /OUTPUT 8-11 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 / /TERMINATE I/O / STERM, TAD P603 SYIOP1 /ISSUE TERMINATE JMS PUT /USE IT TO WAIT FOR FLAG / /CHECK FOR ERRORS - CRC OR FAULT / TAD SP432 /SET AC=3463 /SO AC3=1, /WHILE FAULT & CRC BITS =0 SYIOP3 /READ STATUS AND S110 /CRC & FAULT SNA JMP SYKNRM / / ERROR ROUTINE - RETRY I/O MAXIMUM NINE TIMES / ISZ SYKECT /MAX RETRIES? SKP CLA /N. RETRY I/O JMP SYKBAD /Y. PERMANENT ERROR CLA CLL CMA RAL /-2 TAD SYKES DCA SYKES /BACKUP ARG POINTER JMP SYKTRY /RETRY I/O SYKBAD, CLA CLL CML RAR /INDICATE PERMANENT ERROR SKP /TAKE ERROR RETURN SYKNRM, ISZ SYKES ISZ SYKES TAD SYK601 SYIOP1 /RE-SELECT UNIT 1 SMA /SKIP IF ERROR RETURN CLA /CLEAR FOR NORMAL RETURN SYKRET, 6203 JMP I SYKES $$$