File RK8E.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/RK8E DRIVER FOR RTS8 V2			8/30/74
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974,1975 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.
/
/
/
/
/
/
/
/
/
/

TASK= RK8 INIWT= 0 CUR= 0 DSKP= 6741 DCLR= 6742 DLAG= 6743 DLCA= 6744 DRST= 6745 DLDC= 6746 FIELD CUR%10 *4200 TMP, START, CAL DONEFG, SKPINS TRYCT, INTRPT LOOP, CAL RECEIV /GET A MESSAGE ADDR, 0 DCA FLD AC7775 DCA TRYCT /TRY 3 TIMES INIT, ISZ DONEFG /INITIALIZE EVENT FLAG CMA STL /** AC MAY BE 3 HERE ** TAD ADDR DCA ADDR /ADDRESS OF PARAMETER BLOCK -1 IN AC JMS GET TAD (-4 /PROPAGATE BIT 10 INTO THE LINK AND (3 /CLEAR ALL HIGH-ORDER BITS RAL /ROTATE BIT 10 INTO LOW-ORDER BIT DCA PAGCNT /STORE TRANSFORMED UNIT JMS GET AND (7770 /GET FUNCTION WORD, TAD PAGCNT /COMBINE WITH UNIT NUMBER DCA PAGCNT /AND STORE IT AWAY JMS GET DLCA /PUT STARTING TRANSFER ADDRESS IN HARDWARE CLA CLL IAC AND PAGCNT SZA CLA /"UNIT" = DISK*2+HALF - CHECK WHICH HALF TAD (6260 /SECOND HALF - ADD BLOCK NUMBER OFFSET JMS GET /TO BLOCK NUMBER DCA REC /SAVE LOW ORDER TAD PAGCNT AND (4076 /GET UNIT BITS, FIELD BITS AND READ/WRITE BIT SZL IAC /ADD HIGH ORDER BLOCK NUMBER TAD (400 /ADD INTERRUPT ENABLE BIT DCA CR /STORE AS SKELETON COMMAND REGISTER TAD PAGCNT AND (3700 /ISOLATE PAGE COUNT FIELD SNA AC4000 /ALLOW FULL FIELD TRANSFERS DCA PAGCNT TAD PAGCNT AND RK7600 /IF ENTIRE TRANSFER IS ONE PAGE, SNA CLA TAD (100 /SET "ONE-PAGE TRANSFER" BIT IN COMMAND REG IOF /INTERRUPTS OFF WHILE LOADING REGISTERS! JMS RKSETP /START TRANSFER AND SET UP NEXT ONE TAD (FSTINT CDF CUR ION /** NOTE THE "DCA IDISP" MUST BE THE NEXT INSTR DCA I (IDISP /INITIALIZE INTERRUPT DISPATCH CAL WAITE PDONFG, DONEFG /WAIT FOR COMPLETION TAD (3 /LOAD CONSTANT FOR BACKING UP ADDR ISZ RTRYFG /DID EVENT FLAG SIGNIFY ERROR OR COMPLETION? JMP INIT /ERROR OR PWR FAIL - RETRY ENTIRE OPERATION JMS GET /THIS JUST SETS THE DF AND ADDR P7600, 7600 TAD STATUS DCA I ADDR TAD FLD DCA PFLD TAD ADDR TAD (-7 /GET POINTER TO MESSAGE EVENT FLAG CAL POST STATUS, PFLD, HLT JMP LOOP /GET ANOTHER MESSAGE RTRYFG, 0 /RETRY FLAG REC, /LOW-ORDER BLOCK NUMBER GET, 0 FLD, HLT ISZ ADDR TAD I ADDR JMP I GET PAGCNT, 0 /PAGE COUNT FOR TRANSFER CR, 0 /SKELETON COMMAND REGISTER CONTENTS NEWCR, 0
/RK8 INTERRUPT SERVICE FSTINT, DRST /READ STATUS REGISTER CLL RAL /4000 MEANS NO ERRORS, 0 IS "IMPOSSIBLE" HERE SZA CLA /ERROR? JMP I (RKERR /ERROR ROUTINE IN NEXT PAGE RKNEXT, TAD PAGCNT SPA SNA CLA /CHECK FOR LAST TRANSFER JMP I (RKOVER TAD NEWCR /GET PRECOMPUTED COMMAND REGISTER CHANGES JMS RKSETP /START NEXT TRANSFER AND SET UP THE ONE AFTER THAT CIF 0 POSTDS /EXIT INTERRUPT ROUTINE - IDISP STILL EQUALS "FSTINT" RKSETP, 0 /ROUTINE TO START UP A TRANSFER TAD CR /AND PRECOMPUTE THE NEXT ONE. DLDC /LOAD THE RK8E COMMAND REGISTER TAD REC DLAG /LOAD BLOCK NUMBER AND GO TAD PAGCNT TAD RK7600 /WE PRECOMPUTE THE NEXT TRANSFER BECAUSE THE DCA PAGCNT /RK8E HAS A VERY NARROW WINDOW IN WHICH ISZ REC /TO INITIATE THAT TRANSFER ONCE THE FLAG POPS UP. SKP ISZ CR /HIGH-ORDER BLOCK NUMBER IN COMMAND REGISTER TAD REC AND (37 /IF WE ARE NOT GOING TO A NEW TRACK, CIA STL /WE DON'T HAVE TO CHECK HEADERS NEXT OPERATION. RK7600, 7600 TAD PAGCNT /IF NEXT TRANSFER IS HALF BLOCK, AND RK7600 /WE MUST SET THE HALF-BLOCK COMMAND BIT. SNA CLA TAD (1000 RTR /LINK HAS "DON'T CHECK HEADER" BIT RAR DCA NEWCR /STORE SPECIAL COMMAND REGISTER BITS FOR NEXT TIME. JMP I RKSETP PAGE
/INTERRUPT SKIP CHAIN ENTRY INTRPT, 0;0 /SKIP CHAINING GOES HERE DSKP JMP I INTRPT CDF CIF CUR /SET DF AND IF CORRECTLY JMP I .+1 IDISP, IGNORE /IGNORE INITIAL INTERRUPTS CIF 0 /IDISP IS A COROUTINE WITH POSTDS /THE RTS-8 INTERRUPT SYSTEM TRYAGN, AND (401 /CHECK TO SEE IF WE SNA CLA /HAVE TO RECALIBRATE JMP NRECAL /NO DCLR /CLEAR DISK STATUS AC0002 /MYSTIC SEQUENCE OF INSTRUCTIONS WHICH DCLR /RECALIBRATES A DRIVE JMS IDISP /RECALIBRATE GENERATES A DONE FLAG ALMOST IMMEDIATELY, TAD I (CR /AND A SEEK DONE SIGNAL WHEN IT IS FINISHED AND (6 /THEREFORE WE MUST ENABLE THE SEEK DONE SIGNAL TAD (600 /TO SET THE DONE FLAG AND CAUSE AN INTERRUPT. DLDC /NO SOONER SAID THAN DONE! JMS IDISP /WAIT FOR THE FINAL FLAG DRST CLL RAL /IF THE RECALIBRATE GENERATED AN ERR0R, SZA CLA JMP RKERR /BOY ARE YOU IN TROUBLE! NRECAL, DCLR /CLEAR STATUS REGISTER SETEF, DCA I (RTRYFG /SET FLAG TO 0 OR -1 TAD (DONEFG JMS IDISP /DISMISS AND POST EVENT FLAG HALT, HLT /CANNOT GET HERE! RKERR, DRST /READ STATUS REGISTER ISZ I (TRYCT /HOW MANY TIMES HAVE WE BEEN THROUGH HERE? JMP TRYAGN /ROOM FOR ONE MORE. RKOVER, DCA I (STATUS /SET STATUS TO 0 OR STSTUS REGISTER DCLR /CLEAR NASTY FLAGS (IF ANY) STA /INDICATE FINAL RETURN JMP SETEF /AND ACTIVATE TASK IGNORE, DCLR POSTDS /CLEAR FLAG AND DISMISS PAGE $$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search