DEVERR=SRCHE!PSF!CHCPAR!OVR ;DEVICE ERRORS.\r
SETERR=DDE!TSE!NRDY!NXMEM ;SOFTWARE-PREVENTABLE ERRORS.\r
ALLERR=DATERR!DEVERR!SETERR!WRPE ;ALL POSSIBLE ERRORS.\r
-\f\r
-;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER\r
+\f;CONO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER\r
\r
;BITS 00 - 17 UNUSED\r
;BITS 18 - 19 SELECT DISK FOR SECTOR COUNTER READ-OUT A(SEE DATAI BITS 28-35)\r
RESETB=1B32 ;RESET THE DONE FLAG (CORRESPONDING CONI BIT) TO CLEAR INTERRUPT\r
;BITS 33 - 35 PI CHANNEL SELECTION BITS\r
\r
+\r
;DATAI FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER --\r
\r
;BITS 00 - 17 UNUSED\r
;BITS 26 - 27 DISK SELECTED BY BITS 18-19 OF LAST CONO\r
;BITS 28 - 35 CURRENT SECTOR POSITION OF SELECTED DISK (FOR LATENCY OPTIMIZATION!)\r
\r
+\r
;DATAO FORMAT FOR THE MODEL RC-10 DISK SYNCHRONIZER --\r
\r
;BITS 00 - 17 DISK ADDRESS ELECTION\r
;BITS 27 - 34 ;CORRESPONDING BITS OF INITIAL CHANNEL CONTROL ADDRESS, HENCE,\r
; THIS ADDRESS MUST BE EVEN AND IN THE FIRST 1K OF CORE MEMORY!\r
;BIT 35 ;WRITE EVEN PARITY DATA INTO MEMORY (DIAGNOSTICS ONLY!)\r
-\f\r
-;SUBROUTINE "DFWRT" IS CALLED TO START UP A WRITE ON THE DISK.\r
+\f;SUBROUTINE "DFWRT" IS CALLED TO START UP A WRITE ON THE DISK.\r
\r
;CALLING SEQUENCE --\r
; PUSHJ PDP,DFWRT\r
MOVEM TAC1,WRCHNL ;SET UP CHANNEL COMMAND SEQUENCE.\r
SETZM WRCHNL+1 ;MAKE SURE NEXT COMMAND IS 0, SO CHANNEL\r
; WILL NOT WRITE ALL OVER DISK\r
-\r
IFN FTRCHK,<\r
EXTERN SATM2\r
MOVEI TAC1,1(TAC1) ;CLEAR LH AND COMPARE WITH\r
;WILL LOOP\r
>\r
MOVEI TAC1,WRCHNL\r
- MOVEM TAC1,RCXIOC ;RCX10C IS MAGIC EVEN LOCATION IN FIRST 1K OF CORE.\r
- PUSHJ PDP,CNVBLK ;CONVERT LOGICAL BLOCK NO. INTO PHYSICAL DISK ADDRESS.\r
+ MOVEM TAC1,RCXIOC ;RCXIOC IS MAGIC EVEN LOCATION IN FIRST 1K OF CORE.\r
+ PUSHJ PDP,CNVBLK ;CONVERT LOGICAL BLOCK NO. INTO PHYSICAL DISK ADDRESS. \r
ORI TAC,WRBIT ;REQUEST WRITE (INSTEAD OF READ)\r
DFWRTC: ORI TAC,RCXIOC\r
MOVEM TAC,DFORDR ;SAVE RC-10 DATAO COMMAND\r
; STORE THE CHANNEL CONTROL WORD.\r
DATAO DSK,DFORDR ;START UP DISK AND DATA CHANNEL.\r
POPJ PDP, ;SUBROUTINE EXIT.,......***\r
-\f\r
-;SUBROUTINE "DFRED" IS CALLED TO START UP A READ FROM THE DISK.\r
+\f;SUBROUTINE "DFRED" IS CALLED TO START UP A READ FROM THE DISK.\r
\r
;THE CALLING SEQUENCE, ENTRY CONDITIONS, AND EXIT CONDITIONS ARE EXACTLY\r
; SIMILAR TO THOSE FOR SUBROUTINE "DFWRT" ABOVE.\r
MOVEI TAC1,1(TAC1) ;CLEAR LH AND COMPARE WITH FIRST WORD AFFECTED\r
CAIG TAC1,SATM2 ;COMPARE ABS CORE ADDRESS TO BEGINNING\r
;OF SAT TABLE-2\r
- HALT . ;HALT - DO NOT WRITE OUT MONITOR - CONTINUE\r
- ;WILL LOOP\r
+ HALT . ;HALT - DO NOT WRITE OUT MONITOR,CONTINUE WILL LOOP\r
>\r
- MOVEI TAC,RDCHNL ; PLACE FROM WRITE CONTROL WORDS FOR\r
- MOVEM TAC,RCXIOC ; BETTER FOOTPRINTS IN CASE OF A CRASH.\r
+ MOVEI TAC1,RDCHNL ; PLACE FROM WRITE CONTROL WORDS FOR\r
+ MOVEM TAC1,RCXIOC ; BETTER FOOTPRINTS IN CASE OF A CRASH.\r
PUSHJ PDP,CNVBLK ;CONVERT LOGICAL BLOCK NUMBER TO PHYSICAL DISK ADDRESS.\r
JRST DFWRTC ;REMAINDER OF THIS READ ROUTINE IS\r
; IDENTICAL TO WRITING.\r
-\f\r
-;A ROUTINE CALLED DURING SYSTEM INITIALIZATION TO BE SURE DISK IS READY,\r
-; NOTE: THIS ROUTINE DESTROYS ACCUMULATOR TAC.\r
+\f;DISK INTERRUPTS COME HERE TO BE SERVICED --\r
\r
-DISKUP: CONO DSK,ALLERR!RESETB ;CLEAR THE DISK SYNCHRONIZER.\r
- CONSZ DSK,NRDY!PSF!BUSYBT!DONEFLG ;ANYTHING AMISS OR STUCK ?\r
- JRST DISKUP ;IF SO, JUST HANGE HERE IN A LOOP.\r
- DATAI DSK,TAC ;IS THE SECTOR COUNTER GOING ?\r
- JUMPE TAC,.-1 ;IF NOT, JUST LOOP HERE.\r
-;*** THIS LOOP ABOVE WILL OCCUR DURING INITIALIZATION IF THE DISK IS OFF-LINE. ***\r
- HRRZI TAC,DSKBIT ;IF NOT, ENABLE DISK INTERRUPTS ON THE\r
- CONO PI,2200(TAC) ; APPRORIATE PRIORITY INTERRUPT CHANNEL.\r
- POPJ PDP, ;SUBROUTINE EXIT.....,***\r
-\f\r
-;DISK INTERRUPTS COME HERE TO BE SERVICED --\r
\r
DSKINT: CONSO DSK,@DSKCON ;*DID THE DISK SYNCHRONIZER CAUSE THE INTERRUPT ON\r
JRST .-1 ;* THIS CHANNEL? IF NOT, GO TO THE NEXT DEVICE ON\r
CONSZ DSK,WRPE ;*\r
TRO IOS,IOIMPM ;*\r
;CLEAR OUT THE DISK SYNCHRONIZER AND LEAVE IT DETACHED FROM ITS INTERRUPT CHANNEL.\r
+\r
CONO DSK,ALLERR!RESETB\r
- MOVE TAC,RCXCCW ;*PICK UP THE FINAL VALUE FO THE CHANNEL CONTROL WORD.\r
+ MOVE TAC,RCXCCW ;*PICK UP THE FINAL VALUE FO THE CHANNEL CONTROL WORD. \r
CAMN TAC,RCXFIN ;*DOES IT AGREE WITH THE SAVED VALUE WE EXPECTED ?\r
JRST DFINT ;*YES, EXIT TO THE DEVICE INDEPENDENT INTERRUPT\r
;* HANDLING ROUTINE IN "DSKSER".........\r
/\r
POP PDP,ITEM ;*\r
JRST DSKNT2 ;*\r
-\f\r
-;SUBROUTINE TO CONVERT LOGICAL BLOCK NUMBERS TO PHYSICAL DISK ADDRESSES\r
+\r
+\r
+\r
+\r
+\r
+;A ROUTINE CALLED DURING SYSTEM INITIALIZATION TO BE SURE DISK IS READY,\r
+; NOTE: THIS ROUTINE DESTROYS ACCUMULATOR TAC.\r
+\r
+DISKUP: CONO DSK,ALLERR!RESETB ;CLEAR THE DISK SYNCHRONIZER.\r
+ CONSZ DSK,NRDY!PSF!BUSYBT!DONEFLG ;ANYTHING AMISS OR STUCK ?\r
+ JRST DISKUP ;IF SO, JUST HANGE HERE IN A LOOP.\r
+ DATAI DSK,TAC ;IS THE SECTOR COUNTER GOING ?\r
+ JUMPE TAC,.-1 ;IF NOT, JUST LOOP HERE.\r
+;*** THIS LOOP ABOVE WILL OCCUR DURING INITIALIZATION IF THE DISK IS OFF-LINE. ***\r
+ HRRZI TAC,DSKBIT ;IF NOT, ENABLE DISK INTERRUPTS ON THE\r
+ CONO PI,2200(TAC) ; APPRORIATE PRIORITY INTERRUPT CHANNEL.\r
+ POPJ PDP, ;SUBROUTINE EXIT.....,***\r
+\f;SUBROUTINE TO CONVERT LOGICAL BLOCK NUMBERS TO PHYSICAL DISK ADDRESSES\r
\r
;CALLING SEQUENCE --\r
; PUSHJ PDP,CNVBLK\r
\r
>\r
DSKEND: END\r
-\0\0\0\0
\ No newline at end of file