/ RX01 FLP8 2 DRIVE 8" FLOPPY NON-SYSTEM OS-8 DRIVER / DEFS FOR INTERFACE OPERATION. LCDR=6751 / LOAD COMMAND REG: CLEAR AC. / X X X X MA SZ DH DR FN FN FN X / MA = 1 FOR MAINTAINANCE MODE. / SZ = DATA WORD SIZE: 0=>12 BITS, 1=>8 BITS. / DH = HIGH DRIVE'S SELECT FOR DRIVE # 2. / DR = DRIVE SELECT. 0=>DRIVE 0, 1=>DRIVE 1 / FN = FUNCTION (0 - 7) / 0=FILL BUFFER: GET 64 12 BIT WDS OR 128 8 BIT WDS / 1=EMPTY BUFFER(VERIFIES DATA: DOESEN'T CHANGE BUF) / 2=WRITE SECTOR 3 = READ SECTOR / 4= NOP 5 = READ STATUS / 6= WRITE DELETED DATA SECTOR / 7= READ ERROR REG: SEE PAGE 2 FOR ERROR CODES. XDR=6752 / TRANSFER DATA REGISTER: BIDIRECTIONAL. / IF READ JAMS DATA INTO AC / IF WRITE LOADS FROM AC, AC UNCHANGED. / NOTE: AFTER A LCD COMMAND FINISHED STATUS IS AVAILABLE / BY DOING AN XDR. / AC4= DRIVE READY / AC5= DELETED DATA MARK DETECTED IN ID / AC9= INITIALIZE COMPLETE. / AC10=PARITY ERROR ON CONTROL INF. / AC11=CRC ERROR DETECTED IN DATA. STRF=6753 / SKIP ON TRANSFER REQUEST. / AN XDR INSTRUCTION IS DESIRED. SERF=6754 / SKIP ON ERROR FLAGS SET. / DONE FLAG ALSO SET WHEN TRUE. SDNF=6755 / SKIP ON DONE FLAG SET AND CLEAR DONE. / ATTACHED TO INTERRUPT LINE. SINTR=6756 / SET INTERRUPT STATE / AC11=1 ENABLES INTERRUPT ON DONE FLAG SET. / AC11=0 DISABLES FLOPPY INTERRUPT. INIT=6757 / INIT THE FLOPPY CONTROLLER - INTERFACE. / STANDARD OS/8 CALL SEQUENCE USED BY DRIVER. / JMS SYS / AC CLEARED ON ENTRANCE AND NORMAL RETURN / FUNCTION WORD / W P P P P P F F F X X X / / W = 1 FOR WRITE. / / PPPPP = #128. WD PAGES XFERRED. / / FFF = DATA TRANSFER MEMORY FIELD. / STARTING CORE TRANSFER ADDRESS. / STARTING LOGICAL DISK BLOCK (0-755) (2 PAGES/BLOCK) / ERROR RETURN / AC = 4000 / NORMAL RETURN / NO ERRORS DETECTED / ERROR CODES GIVEN BY READ ERROR STATUS FUNCT (MODE 5) / CODE LIGHT # MEANING / 10 2 DRIVE 0 FAILED TO HOME ON INIT, OR DIDN'T SELECT / 20 2 DRIVE 1 FAILED TO HOME ON INIT, OR DIDN'T SELECT / 30 2 FOUND HOME WHEN STEPPING OUT 10 TRACKS FOR INIT. / 40 2 TRACK GREATER THAN 77. OR UNIT SELECT ERROR. / 50 2 HOME BEFORE DESIRED TRACK FOUND. / 70 2 DESIRED SECTOR COULD NOT BE FOUND AFTER 2 REVS. / / 100 3 WRITE PROTECT ERROR. / 110 MORE THAN 40 USEC AND NO SEPERATED CLOCK FOUND. / 120 0 NO PREAMBLE WAS FOUND ( 24 BITS OF 0'S) / 130 0 PREAMBLE FOUND BUT NO I/O MARK WITHIN WINDOW. / 140 0 CRC ERROR ON WHAT APPEARED TO BE HEADER. / 150 2 HEADER TRACK ADDRESS OF A GOOD HEADER DIDN'T / MATCH DESIRED TRACK. / 160 0 TOO MANY TRIES FOR AN I.D. ADDRESS MARK. / 170 0 DATA ADDRESS MARK NOT FOUND IN ALLOTED TIME. / 200 0 CRC ERROR ON READING SECTOR FROM DISK. / RXES STATUS BIT 11 ALSO SET. / 210 1 PARITY ERROR (INTERFACE <=> CONTROLLER) / RXES STATUS BIT 10 ALSO SET. / 220 2 DRIVE 2 FAILED TO HOME ON INIT. / 230 2 DRIVE 3 FAILED TO HOME ON INIT. / 240 3 FORMATTER ENABLE ERROR. / 250 0 EXPECTED HEADER NOT FOUND AFTER TRACK F_RmAT. / 260 0 INDEX MARK NOT FOUND IN EXPECTED RANGE. / (FORMAT NOT BEGUN) / 270 0 INDEX MARK NOT FOUND IN EXPECTED RANGE. / (FORMAT HAS OCCURED) / LIGHTS MEANING / 0 FRONT DATA TYPE ERROR / 1 FRONT PARITY ERROR BETWEEN CONTROLLER-INTERFACE. / 2 FRONT SEEK TYPE ERRORS / 3 FRONT SWITCH CONFLICT ERROR OR CONTROLLER ERROR. / INCLUDES WRITE PROTECT OR FORMAT INHIBIT ERRORS. / BOARD LIGHTS / 4 UP-LEFT CONTROLLER WAITING FOR BUS INTERFACE READY. / 5 UP-RGHT INIT IN PROGRESS. / 6 LW-LEFT READ IN PROGRESS / 7 LW-RGHT WRITE IN PROGRESS. / TABLE FORMAT FOR OS/8 BUILD ENTRIES. / WORD 1-2 DEVICE TYPE / WORD 3-4 OS/8 DEVICE NAME / WORD 5 DEVICE CONTROL BLOCK ENTRY / BIT 0 =1 FILE STRUCTURED DEVICE / BIT 1 =1 READ ONLY / BIT 2 =1 WRITE ONLY / BITS 3-8 DEVICE TYPE. SEE TABLE 2-12 OS/8 / BITS 9-11 USED BY MONITOR / WORD 6 ENTRY POINT WORD. / BIT 0 = 1 2 PAGE HANDLER / BIT 1 = 1 ENTRY POINT = SYS: / BIT 2 = 1 ENTRY POINT CORESIDENT WITH SYS: / BIT 5-11 ENTRY POINT OFFSET FROM PAGE BEG. / WORD 7 MUST BE 0 / WORD 8 MUST BE 0 UNLESS SYSTEM HANDLER. / THEN = BLOCK LENGTH OF DEVICE. *0 -2 / 2 ENTRY POINTS, RXA0, RXA1 DEVICE RX01; DEVICE RXA0; 4640; ENTDX0-TRNADR; 0; 0 ]F \L=J+ [:VICE RXA1; 4640; ENTDX1-TRNADR; 0; 0 *200 / NON-SYSTEM HANDLER FOR RX01-RX8 FLOPPY SYSTEM. TRNADR, 0 / CORE TRANSFER ADDRESS. DSKADR, 0 / 4 * OS/8 BLOCK #. WRDCNT, 0 / - # WORDS TO BE TRANSFERRED. FUNCT, 0 / 0 = WRITE, 2 = READ. HOLD1, 0 / COMMAND WORK HOLD / CMDSUB - WAITS FOR DONE THEN DOES LOAD COMMAND. CMDSUB, 0 DCA HOLD1 / TAD P7600 KRS / OR IN LAST CHAR TYPED. TAD MCTRLC / 7603+175 = 0 CLL SNA CLA / CTRL C TYPED? KSF / SKIP ON RECIEVE FLAG JMP .+3 / NO: NOT RECENT CTRL C CDIFZR, CDF CIF 0 / RESTORE DATA AND INSTRUCTION FIELDS. JMP I P7600 / GO TO MONITOR. / START OF ACTUAL CMDSUB SDNF JMP CMDSUB+2 / INCLUDE CTRL C CHECKER. TAD HOLD1 / RESTORE COMMAND. LCDR / LOAD IT. SERF / SKIP ON ERROR FLAGS SET \, M *=EL8*\XY,1 L J