/17 RF08/DF32 DRIVER FOR RTS8 V3 / / #10 V2B CONVERSION TO MACREL / #11 .TASK MACRO CDF,CIF 0 / #12 LEVEL=0, CUR OUT / #13 RTFLD TO RTS8 / #14 KT8A STUFF IN / #15 REF TO RTS8 FIELD IN KT8A STUFF J.R. / #16 MORE OF 15 / #17 TWSFLG MISNAMED / VERS=17. / / / / / / / / / / /COPYRIGHT (C) 1974,1975,1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION / / / / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / / / XLIST 0 /LIST TASK /ACCEPTS STANDARD RTS-8 MASS STORAGE MESSAGE FORMAT IFDEF DF32 IFNDEF DF32 INIWT= 0 IFNDEF EDF DIML= 6615 DIMA= 6616 DFSE= 6621 DFSC= 6622 DISK= 6623 DXAL= 6643 DMAR= 6603 DMAW= 6605 DCMA= 6601 RFWC= 7750 RFCA= 7751 IFNZRO KT8A < IFZERO NFLDS-11&4000 < .ASECT RFA1,LEVEL=0 FIELD 10 *RFWC 0 0 > IFZERO NFLDS-21&4000 < .ASECT RFA2,LEVEL=0 FIELD 20 *RFWC 0 0 > IFZERO NFLDS-31&4000 < .ASECT RFA3,LEVEL=0 FIELD 30 *RFWC 0 0 > > IFDEF DF32 < IFZERO TASK-DF32 < .RSECT DF32T, LEVEL=0 > > IFDEF RF08 < IFZERO TASK-RF08 < .RSECT RF08T, LEVEL=0 > > IFDEF DF32 < IFZERO TASK-DF32 < .TASK DF32,DF32 > > IFDEF RF08 < IFZERO TASK-RF08 < .TASK RF08,RF08 > > TMP, START, CAL DONEFG, SKPINS TRYCT, INTRPT IFNZRO KT8A < ZOT, JMS I ADDR /GO INIT KT8A BREAKR, 0 /BREAK POINTER RETURNED HERE > IFZERO KT8A < ZOT, 0 > LOOP, CAL RECEIV /GET A MESSAGE IFZERO KT8A < ADDR, 0 > IFNZRO KT8A < ADDR, KTINIT > DCA FLD ISZ DONEFG /INITIALIZE EVENT FLAG DOAGIN, IOF JMS INIT /START UP THE OLE DISK TAD (FSTINT DCA IDISP /INITIALIZE INTERRUPT DISPATCH AC7775 ION DCA TRYCT /TRY 3 TIMES CAL L2, WAITE PDONFG, DONEFG /WAIT FOR COMPLETION TAD DONEFG SZA CLA JMP DOAGIN /POWER FAIL OCCURRED WHILE WE WERE WAITING. NOPFAL, JMS GET /THIS JUST SETS THE DF AND ADDR P7600, 7600 TAD STATUS DCA I ZOT TAD FLD DCA PFLD AC7775 /BACK UP ADDR TO EVENT FLAG TAD ADDR CAL POST STATUS, PFLD, HLT JMP LOOP /GET ANOTHER MESSAGE GET, 0 FLD, HLT ISZ ZOT TAD I ZOT JMP I GET /RF08 STARTUP SUBROUTINE - CALLED WITH IOF INIT, 0 STA /MAKE A WORKING COPY OF POINTER TAD ADDR DCA ZOT DCMA /CLEAR DISK JMS GET CLA /IGNORE UNIT JMS GET AND (70 DCA TMP /SAVE FIELD IFNZRO KT8A < CLA CLL CML IAC RTL /LITERAL 6 AND I ZOT /MAKE CDF TO BOTTOM FIELD OF BANK CLL RTR /B BIT IN AC11, A BIT IN LINK SZL TAD L2 /TWO BITS SET TO LOADING BREAK MAP DCA GET /SAVE TAD GET TAD BREAKR 6170 /LOAD BREAK MAP TAD GET /GET BACK THE 2 BITS SZL TAD (16 /CONVERT TO CDF CLL RTL /BITS IN 104 TAD (CDF 0 DCA ZIP1 /PLACE CDF IN LINE > TAD I ZOT CLL RAL AND P7600 SZA CIA /FORM WORD COUNT FOR OPERATION DCA STATUS /SAVE WORD COUNT TEMPORARILY RTL TAD (DMAR /GET READ OR WRITE INST DCA INST STA JMS GET ZIP1, CDF 0 /DATA FIELD TO BREAK LOCATIONS DCA I (RFCA /STORE CURRENT ADDRESS LOC TAD STATUS /GET BACK WORD COUNT DCA I (RFWC /SAVE IN WC LOC JMS GET IFNDEF DF32 < CLL RTR RTR AND (377 /GET HIGH ORDER DISK ADDRESS DXAL /INTO EXTENDED REGISTER TAD (500 /ENABLE COMPLETION AND ERROR INTERRUPT > IFDEF DF32 < CLL RTL AND (3700 /GET HIGH ORDER DISK ADDRESS > TAD TMP /ADD IN FIELD DIML /LOAD EXTENDED ADDRESS REG CLA /FOR DF32 TAD I ZOT CLL RTR RTR RAR AND P7600 /ACTUALLY 7400 SINCE 200 BIT CLEAR! INST, HLT /READY, STEADY, GO! JMP I INIT INTRPT, 0;0 /SKIP CHAINING GOES HERE IFNDEF DF32 /SKIP ON COMPLETION OR ERROR IFDEF DF32 < DFSC /SKIP ON COMPLETION DFSE /SKIP ON NO ERROR SKP /COMPLETION OR ERROR - SKIP AGAIN > JMP I INTRPT CDF CIF .FLD JMP I .+1 IDISP, HALT CIF RTS8 /IDISP IS A COROUTINE WITH POSTDS /THE RTS-8 INTERRUPT SYSTEM /RF08 INTERRUPT SERVICE TRYAGN, JMS INIT GOAWAY, JMS IDISP FSTINT, DFSE /ERROR? IFDEF DF32 /SKIP IS REVERSE-SENSE JMP DKOVER /NO - WE'RE DONE ISZ TRYCT /ITS A MORE SERIOUS ERROR - HOW MANY JMP TRYAGN /TIMES HAVE WE HIT IT? DIMA /TOO MANY - RETURN DISK STATUS REGISTER DKOVER, DCA STATUS DCMA /CLEAR NASTY FLAGS TAD PDONFG /GOING TO POSTDS WITH THE AC NON-ZERO JMS IDISP /WAKES UP THE HANDLER TO CLEAN UP HALT, HLT /FOR GOOD LUCK PAGE / IFNZRO KT8A < IFDEF DF32 < .FSECT DF32F,LEVEL=0 FIELD DF32T > IFDEF RF08 < .FSECT RF08F,LEVEL=0 FIELD RF08T > IFNZRO KT8A < .EXTERNAL KTTAB,KTBUF,TSWFLG > LOCCDF=+ /CDF TO BREAK LOCATIONS KTINIT, 0 CDF RTS8 /INHIBIT TASK SWITCHING DCA I (TSWFLG REHIT, DCMA /CLEAR STA CDF LOCCDF /FIELD 0,10,20,30 AS APPROPRIATE DCA I (RFWC /ONE WORD TAD (KTBUF-1 /TO PROVIDED BUFFER AREA IN EXEC DCA I (RFCA DXAL TAD (RTFLD&7^10 /ALLOW REF TO GENERAL RTS8 FIELD DIML CLA /?? DMAR /IT WORKS ILOOP, 6172 /READ BREAK CDF .FLD DCA I KTINIT TAD I KTINIT /BREAK RETURNED AT CALL+1 CLL RTR /SET UP TO ACCESS TABLE TAD (KTTAB DCA KTTMP CDF RTS8 /SET UP FOR CHECKING WHETHER OUR BREAK TAD I KTTMP SPA CLA /SKIP IF NOT A NEW ONE JMP GOT /FOUND A NEW ONE ISZ KTCNT JMP ILOOP JMP REHIT /GO HIT IT AGAIN GOT, DCA I KTTMP /CLEAR TO SHOW OURS JMP I KTINIT /IMMEDIATELY TO CAL, CLEARS UP TSWINH KTTMP, 0 KTCNT, 0 > $$