/OS/8 SYSTEM DRIVER FOR SYKES 7150/7250 DISK SYSTEMS / /SYKES DATATRONICS, INC., ROCHESTER, N.Y. 14606 /COPYRIGHT 1974 /9995B0204A OCTOBER 29, 1974 / / / /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 SYSTEM 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, TOGETHER WITH THE ADDITIONAL NOTES /FOR SYSTEM DEVICE HANDLERS GIVEN IN SECTION 5.2 OF THE /OS/8 SOFTWARE SUPPORT MANUAL. / / /THE COMPONENTS OF THE PROGRAM ARE: / / 1. HEADER BLOCK (*0) / 9 WORDS WHICH DESCRIBE THE / SYSTEM DEVICE HANDLER. / / 2. SYSTEM DEVICE BOOTSTRAP RECORDS / / 3. BODY OF SYSTEM HANDLER (*200) / /THE SYSTEM DRIVER GENERATED WILL OPERATE A SYKES /MODEL 7150 OR 7250 WITH A DEVICE CODE AS /DEFINED BY 'SYKDVC'. / / /THE USER MUST EDIT 'SYKDVC' PRIOR /TO ASSEMBLING THIS PROGRAM. / SYKDVC=320 /DEVICE CODE OF 7000 SYSTEM (X10) 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: SYKB (BUFFERED) 2331 /SY 1302 /KB / / WORDS 3,4 - PERMANENT NAME: SYS 2331 /SY 2300 /S00 / / WORD 5 - DCB WORD. SEE TABLE 2-12 / OF OS/8 HANDBOOK. / BIT 0 =1: FILE STRUCTURED DEVICE / BITS 3-8 =47: DEVICE TYPE FOR USER WRITTEN HANDLER / BITS 9-11 =0: RESERVED FOR MULTI-PLATTERED DISKS 4470 /DCB WORD / / WORD 6 - ENTRY POINT WORD / BIT 2 =1: ENTRY POINT IS SYS. / BITS 5-11 =007: ENTRY POINT OFFSET 2007 /ENTRY POINT WORD / / WORD 7 - ALWAYS ZERO 0 / / WORD 8 - NUMBER OF BLOCKS ON THE SYSTEM DEVICE DECIMAL 474 /NO. OF BLOCKS / /SYKES BOOTSTRAP RECORDS -24 /LENGTH OF BOOTSTRAP OCTAL / /THE FOLLOWING 8 WORD BLOCK OF ZEROES IS CODED HERE /SO THAT THE "SYKES BOOTSTRAP ROUTINE" LOADS INTO /LOCATIONS 0010 THRU 0027 WHEN BLOCK 0 OF THE SYSTEM /DEVICE IS READ INTO MEMORY LOCATIONS 0-377 DURING THE /OS/8 BOOTSTRAP OPERATION. / 0 /0 - LOCATIONS 0-7 0 /1 0 /2 0 /3 - WHEN BLOCK 0 IS 0 /4 0 /5 0 /6 - READ INTO MEMORY 0 /7 - LOCATIONS 0000-0377 / /SYKES BOOTSTRAP ROUTINE / THIS ROUTINE LOADS INTO MEMORY / LOCATIONS 0010-0027 DURING THE / OS/8 BOOTSTRAP OPERATION. THE / ROUTINE ENTRY POINT IS 0014. / 177 /BOOTX1 7577 /BOOTX2 46 /BOOTX3 7646 /BOOTX4 CLA /BOOT, TAD I BOOTX1 /MOVE UP PAGE 7600 DCA I BOOTX2 /FIELD 0 TAD I BOOTX3 /MOVE UP PAGE 7600 6211 /CDF 10 DCA I BOOTX4 /FIELD 1 6201 /CDF 00 TAD BOOTX2 SZA CLA JMP BOOT JMP I B7605 7605 /B7605 BOOTX1=10 BOOTX2=11 BOOTX3=12 BOOTX4=13 BOOT=14 B7605=27 *200 0 / 0 /PAL8 0 / 0 /ZBLOCK 7 0 / 0 /EQUIVALENT 0 / SYKES, 0 CLA CLL RAR 6214 TAD SYKIF DCA SYKRET /RETURN FIELD SETUP 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 /DON'T IF ZERO, CHANGES LINK CIA DCA SWDCNT /WORD COUNT TAD STEMP S110, AND S70 /POSITIONAL - DOUBLES AS CONSTANT TAD S6201 DCA SCDF /FIELD OF BUFFER STEMP, SCDF, 6201 /SELECT CORRECT FIELD TAD S400 /AC3 ON TAD STRK SYIOP1 /OUTPUT SELECT TRK CMD 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 PUT /OUTPUT 0-7 RAR JMS PUT /OUTPUT 8-11 S7600, 7600 /CLA - DOUBLES AS CONSTANT ISZ SPOINT /BUMP BUFFER ADDR. S40, 40 /CONSTANT - DUMMY 'AND' ISZ SWDCNT /COUNT WORDS JMP WLOOP JMP STERM /ALL DONE / /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 / /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 ISZ SYKES ISZ SYKES SYKRET, 6203 JMP I SYKES / /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 SYKIF, 6203 P603, 603 S400, 400 SP17, 17 S6201, 6201 SP432, 433 /400 ADDED FOR AC3 DECIMAL SMD26, -26 OCTAL SWDCNT=350 SPOINT=351 STRK=352 $$$ *U*90