cdc:nos2.source:opl871:6de
Table of Contents
6DE
Table Of Contents
- [00007] 6DE - *PIOM* DEVICE DRIVER.
- [00009] *PIOM* DEVICE DRIVER.
- [00059] EMS - END MASS STORAGE OPERATION.
- [00092] RDS - READ SECTOR.
- [00133] WDS - WRITE SECTOR.
- [00185] CST - CHECK STATUS.
- [00209] ECS - ECS TRANSFER.
- [00276] SEA - SET ECS ADDRESS.
- [00288] PRS - PRESET DRIVER.
- [00324] MSG - PROCESS MASS STORAGE ERROR.
Source Code
- 6DE.txt
- IDENT 6DE,MSFW
- PERIPH
- BASE MIXED
- SST
- *COMMENT 6DE - *PIOM* DEVICE DRIVER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE 6DE - *PIOM* DEVICE DRIVER.
- SPACE 4,10
- *** 6DE - *PIOM* DEVICE DRIVER.
- * G. R. MANSFIELD. 70/04/07.
- * W. E. GOEBEL. 78/04/29.
- SPACE 4,10
- *** *6DE* PROVIDES ACCESS TO EXTENDED MEMORY AND BUFFERED DISK
- * DEVICES THROUGH THE *PIOM* *CPUMTR* INTERFACE.
- SPACE 4,10
- ** ENTRY CONDITIONS.
- *
- *
- * (T5) = EST ORDINAL.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- SPACE 4,10
- ** EXIT CONDITIONS.
- *
- *
- * NONE.
- SPACE 4
- ** COMMON DECKS.
- *CALL COMPMAC
- *CALL COMSCPS
- *CALL COMSDFS
- LIST X
- *CALL COMSMSP
- LIST *
- *CALL COMSPIM
- SPACE 4,10
- ** ASSEMBLY CONSTANTS.
- DEC MICRO 1,, 6DE DECK NAME
- TITLE
- ORG MSFW
- SPACE 4
- ** ENTRY POINT TRANSFERS.
- CON PRS PRESET ADDRESS
- RDS CON 0 ENTRY
- UJN RDS. ENTER DRIVER
- WDS CON 0 ENTRY
- UJN WDS0 ENTER DRIVER
- EMS SPACE 4,20
- ** EMS - END MASS STORAGE OPERATION.
- *
- * ENTRY (CHRV, BIT 6) = 0, IF NO PP BUFFER TO RELEASE.
- * (T4) = INCREMENT OF PP BUFFER IF ASSIGNED.
- *
- * EXIT PP I/O BUFFER RELEASED.
- * (CHRV) = 0.
- * (A) = 0.
- *
- * CALLS SEA.
- *
- * NOTE - THE *.EMS* ENTRY POINT IS SUPPORTED ONLY VIA THE
- * *ENDMS* MACRO DEFINED IN *COMPMAC*. IF THIS LOCATION
- * CHANGES, THE DEFINITION OF *.EMS* MUST BE CHANGED IN
- * *PPCOM* AND ALL PROGRAMS USING THE *ENDMS*
- * MACRO MUST BE REASSEMBLED.
- .EMS SUBR ENTRY/EXIT
- LDM CHRV
- LPN 1
- ZJN EMS1 IF BUFFER NOT RESERVED
- RJM SEA SET ECS BUFFER ADDRESS
- CWM ZERO,ON CLEAR BUFFER RESERVATION
- EMS1 LDM CHRV CLEAR BUFFER RESERVATION/LINK FLAGS
- LPC -201
- STM CHRV
- LDN 0 SET EXIT CONDITION
- UJN .EMSX RETURN
- WDS0 LJM WDS. ENTER DRIVER
- RDS SPACE 4,10
- ** RDS - READ SECTOR.
- *
- * ENTRY (A) = 5/0, 1/S, 12/ BA.
- * S = SKIP TRANSFER OF DATA IF SET.
- * BA = BUFFER ADDRESS FOR SECTOR.
- *
- * EXIT (A) .LT. 0 IF UNRECOVERED ERROR.
- *
- * CALLS ECS, SEA.
- RDS. STM RDSA SET BUFFER ADDRESS
- ADN 2
- STM RDSC
- SHN -14
- ERRNZ DTSF-10000 ERROR IF VALUE CHANGES
- ZJN RDS1 IF NOT SKIP DATA TRANSFER
- LDC UJNI+RDS2-RDSB
- ERRPL RDS2-RDSB-37 CHECK JUMP IN RANGE
- RDS1 STM RDSB MODIFY CODE FOR SKIP
- LDD HN READ SECTOR
- ERRNZ RESS*100B-100B ERROR IF VALUE CHANGES
- RJM ECS
- LDM CHRV CHECK IF BUFFER ASSIGNED
- SHN 21-0
- PJN RDS3 IF BUFFER NOT ASSIGNED
- RJM SEA SET ECS BUFFER ADDRESS
- ADN 1
- CRM *,ON
- RDSA EQU *-1
- RDSB PSN
- * UJN RDS2 (SKIP DATA TRANSFER)
- CRM *,HN
- RDSC EQU *-1
- SBD HN
- RDS2 SBN 2
- CWM ZERO,ON CLEAR BUFFER RESERVATION
- SOM CHRV CLEAR BUFFER RESERVATION FLAG
- RDS3 LDM RDS RETURN ADDRESS
- LJM CST CHECK STATUS
- WDS SPACE 4,10
- ** WDS - WRITE SECTOR.
- *
- * ENTRY (A) = 6/ LSI, 12/ BA.
- * LSI = WLSF, IF LAST SECTOR WRITE.
- * = WCSF, IF CONSECUTIVE SECTOR WRITE.
- * BA = BUFFER ADDRESS FOR SECTOR.
- *
- * EXIT (A) .LT. 0 IF UNRECOVERED ERROR.
- *
- * CALLS ECS, SEA.
- WDS. STM WDSB SET BUFFER ADDRESS
- ADN 2
- STM WDSC
- SHN -16 SAVE WRITE LAST SECTOR FLAG
- LPN 3
- LMN 3
- STM WDSA
- ERRNZ WLSF ERROR IF VALUE CHANGES
- ERRNZ WCSF-300000 ERROR IF VALUE CHANGES
- LDM UERR GET REWRITE AND DISABLE BUFFER FLUSH FLAGS
- SHN -6
- ERRNZ EPRW-100 ADJUST IF VALUE CHANGES
- ERRNZ EPNF-200 ADJUST IF VALUE CHANGES
- LMN 2
- LPC **
- * LPC 3 (WRITE LAST SECTOR)
- * LPC 1 (WRITE CONSECUTIVE SECTOR)
- WDSA EQU *-1
- STM WDSD
- LDM CHRV
- SHN 21-0
- MJN WDS3 IF BUFFER RESERVED
- WDS2 LDC **
- WDSD EQU *-1
- ADK REBS*100 RESERVE WRITE BUFFER
- RJM ECS
- LDD CM+1
- NJN CST1 IF ERROR STATUS SET
- WDS3 RJM SEA SET ECS BUFFER ADDRESS
- ADN 1
- CWM *,ON
- WDSB EQU *-1
- CWM *,HN
- WDSC EQU *-1
- LDM WDSD
- ADC WESS*100 WRITE SECTOR
- RJM ECS
- LDM WDS RETURN ADDRESS
- * UJN CST CHECK STATUS
- CST SPACE 4,15
- ** CST - CHECK STATUS.
- *
- * ENTRY (A) = RETURN ADDRESS.
- * (CM+1) = STATUS RETURNED BY *PIOM* TRANSFER.
- * (MB+1) = PHYSICAL DATA RETURNED BY *PIOM* IF ERROR.
- *
- * EXIT RETURN TO CALLER IF NO ERROR.
- *
- * EREXIT TO *7DE*.
- *
- * USES T1, T2.
- CST BSS 0 ENTRY
- STD T1 SAVE BIAS FOR EXIT ADDRESS
- LDD CM+1
- NJN CST1 IF ERROR
- LJM 0,T1 RETURN
- * PROCESS ERROR.
- CST1 STM STSA SAVE STATUS
- MSERR 7DE
- ECS SPACE 4,15
- ** ECS - ECS TRANSFER.
- *
- * ENTRY (A) = 6/ *PIOM* SUBFUNCTION, 6/ FUNCTION FLAGS.
- *
- * EXIT (A) = 0.
- * (CM+1) = ERROR CODE IF NONZERO.
- * (CM+3 - CM+4) = PHYSICAL DATA IF ERROR.
- * TO *WDS2* IF WRITE BUFFER MUST BE RE-RESERVED.
- *
- * USES T4, T5, T6, T7, CM - CM+4.
- *
- * MACROS DELAY, MONITOR, PAUSE.
- ECS5 LDM CHRV
- STD CM
- LPN 20
- ZJN ECS6 IF CHANNEL NOT SELECTED BY CALLER
- LDM STSB STORE CHANNEL NUMBER
- STD CM+4
- ECS6 LDD MA STORE PARAMETERS IN MESSAGE BUFFER
- CWD T4
- LDC ** SET FUNCTION CODE
- ECSA EQU *-1
- STD CM+1 SET FUNCTION CODE AND FLAGS
- MONITOR PIOM
- LDD MA UPDATE PARAMETERS
- CRD T4
- LDD CM
- STM CHRV
- LDD CM+1 CHECK RETURN STATUS
- SHN -13
- NJN ECS4 IF RETRY REQUIRED
- ECS SUBR ENTRY/EXIT
- STM ECSA SAVE FUNCTION CODE
- ECS1 LDD OA WAIT OUTPUT REGISTER CLEAR
- CRD CM
- LDD CM
- ZJP ECS5 IF NO MONITOR FUNCTION PENDING
- DELAY
- UJN ECS1 LOOP
- * RETRY FUNCTION.
- ECS2 LDM ECSA CHECK FOR WRITE REJECT
- SHN -7
- ZJN ECS1 IF RESERVE BUFFER OR READ SECTOR
- LDM CHRV
- SHN 21-6
- MJN ECS1 IF RECALL AFTER FLUSH
- SHN 21-0-21+6
- MJN ECS1 IF WRITE BUFFER RESERVED
- LJM WDS2 RE-RESERVE WRITE BUFFER
- * WAIT FOR PENDING BUFFERED I/O.
- ECS3 DELAY 1*8D DELAY 1 MILLISECOND
- ECS4 PAUSE NE
- LDD OA WAIT FOR REISSUE ALLOWED STATUS
- ADN 2
- CRD CM
- LDD CM+1
- SHN 21-12
- PJN ECS3 IF PENDING I/O NOT COMPLETE
- UJN ECS2 RETRY FUNCTION
- SEA SPACE 4,10
- ** SEA - SET ECS ADDRESS.
- *
- * ENTRY (T4) = RELATIVE ECS BUFFER ADDRESS.
- *
- * EXIT (A) = ECS BUFFER ADDRESS.
- SEA SUBR ENTRY/EXIT
- SEAA LDC **
- ADD T4
- UJN SEAX RETURN
- PRS SPACE 4,10
- ** PRS - PRESET DRIVER.
- *
- * ENTRY (CM - CM+4) = EST ENTRY.
- *
- * EXIT NONE.
- PRS LDC EPBP GET FWA ECS PP BUFFERS
- CRM ZERO,ON
- LDM ZERO+4
- STM SEAA+1
- LDM ZERO+3
- LPN 77
- ADC LDCI
- STM SEAA
- LDN ZERL ZERO BUFFER
- CRM ZERO,ON
- LJM SMSX RETURN
- ZERO BSS 0 FIVE BYTES FOR READING BUFFER ADDRESS
- .1 SET *+5+4-MSFW CHECK FOR OVERFLOW
- .1 SET .1/5
- .1 SET MSFW+.1*5
- .2 SET PPFW-5-*-5 BYTES AVAILABLE BEFORE OVERFLOW
- ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5
- * THE FOLLOWING CHECK VERIFIES THAT CELLS *ZERO* - *ZERO*+4
- * ARE NOT DESTROYED BY THE ERROR PROCESSOR.
- ERRPL ZERO+4-DEFW CODE IS DESTROYED BY ERROR PROCESSOR
- 7DE MSOVL 7644,T2,EPFW-1,(MASS STORAGE ERROR PROCESSOR.)
- SPACE 4
- *** *7DE* IS CALLED BY *6DE* WHEN AN UNRECOVERED ERROR HAS
- * OCCURRED.
- MSE SPACE 4,35
- ** MSG - PROCESS MASS STORAGE ERROR.
- *
- * ENTRY (T1) = RDCT.
- * (T2) = DEST.
- * (T4 - T7) = DRIVER PARAMETERS.
- * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
- * BIT 4 = 0 IF FIRST RETRY ATTEMPT.
- * (STSA) = ERROR CODE RETURNED BY *CPUMTR*.
- * (MB+1) = PHYSICAL DATA RETURNED BY *PIOM* FUNCTION.
- *
- * EXIT TO *7EK*.
- * (T2) = READ BUFFER ADDRESS.
- * (T4 - T7) = UNCHANGED.
- * (DEDT) = 8/0, 4/*6DE* DRIVER TYPE.
- * (DEEC) = ERROR CODE.
- * (DENR) = 0 IF NOT 819 DEVICE OR IF 819 DEVICE AND *NOT
- * READY* ERROR.
- * (DENR) = 1 IF 819 DEVICE AND NOT *NOT READY* ERROR.
- * (DERC) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
- * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
- * (DEST) = 2000 (UNRECOVERED ERROR).
- * (DEWR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
- * (DEXA) = ERROR PROCESSOR EXIT ADDRESS.
- * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
- * BITS AFFECTED BY THIS OVERLAY -
- * BIT 4 = 1 IF FIRST RETRY ATTEMPT, OTHERS 0.
- * (MB+2) = DRIVER DEPENDENT PART OF BML MESSAGE.
- * 12/, 12/S, 12/W, 24/E.
- * S = ERROR STATUS.
- * W = WORD COUNT.
- * E = EXTENDED MEMORY ADDRESS.
- *
- * USES T1, T2, CM - CM+4.
- *
- * MACROS MSERR.
- MSG ENTRY *7DE* ENTRY
- * PRESET ERROR PROCESSING CELLS. THE *DEST* UNRECOVERED ERROR
- * FLAG IS PRESET *ON* TO AVOID ERROR RETRIES ON BUFFERED DISK
- * OR EXTENDED MEMORY DEVICES. THE BUFFERED DISK DRIVER OR
- * *CPUMTR* WILL HAVE ALREADY PERFORMED ANY APPROPRIATE RETRY
- * SEQUENCE FOR THE ERROR.
- SFA EST,T5 GET EST ENTRY
- ADK EQDE
- CRD CM
- LDM STSA PRESET ERROR CODE
- STM DEEC
- ERRPL DEEC-* CODE DESTROYED
- LDC 2000 SET UNRECOVERED FLAG
- STI T2
- LDK /COMSDFS/D6DE SAVE DRIVER TYPE
- STM DEDT
- ERRPL DEDT-* STORE DESTROYS CODE
- LDM ECSA SET READ/WRITE FLAG
- SHN -6
- LPN 1
- LMN 1
- STM DERW SAVE READ/WRITE FLAG
- ERRPL DERW-* STORE DESTROYS CODE
- ERRNZ REBS
- ERRNZ RESS-1
- ERRNZ WESS-2
- ERRNZ WRIP-1
- ERRNZ REDP
- LDI T1
- LPC 100
- NJN MSG2 IF ERROR RECOVERY ALREADY IN PROGRESS
- STM DERC INITIALIZE RETRY COUNT
- STM DENR INITIALIZE NON-RECOVERABLE FLAG
- LDD HN SET RECOVERY IN PROGRESS FLAG
- STI T1
- MSG2 LDM DERW SET/CLEAR DATA WRITTEN FLAG
- STM DEWR
- * SINCE THE 819 INTERRUPT HANDLER DOES NOT ATTEMPT TO
- * ACCURATELY ASSESS THE RECOVERABILITY OF THE FAILURE, FORCE
- * THE ERROR NON-RECOVERABLE UNLESS IT-S A *NOT READY*
- * CONDITION.
- LDD CM+3
- LPN 77
- LMN 1RV
- ZJN MSG3 IF 819 DEVICE
- LMN 1RW&1RV
- NJN MSG4 IF NOT 819 DEVICE
- MSG3 LDM DEEC
- LMK NRDE
- ZJN MSG4 IF DEVICE NOT READY ERROR
- LMK LNRE&NRDE
- ZJN MSG4 IF LOGICAL NOT READY ERROR
- AOM DENR SET ERROR NOT RECOVERABLE
- MSG4 LDC ECS2 SET RETURN ADDRESS
- STM DEXA
- ERRPL DEXA-* STORE DESTROYS CODE
- LDD CM+3 CHECK EQUIPMENT TYPE
- LPN 77
- LMN 1RE
- * *7DE* AND ASSOCIATED *PPR* ERROR PROCESSING OVERLAYS ISSUE NO
- * BML, ERROR LOG OR DAYFILE MESSAGES FOR BUFFERED DISK DEVICES.
- * BUFFERED DEVICE DRIVERS ISSUE ALL SUCH MESSAGES.
- NJN MSG8 IF BUFFERED DISK
- LDD MA GET PHYSICAL DATA FOR MESSAGE
- ADN 1
- CRD CM
- LDN 0 CLEAR UNUSED FIELDS IN BML MESSAGE
- STD CM
- LDM STSA ADD *PIOM* STATUS TO MESSAGE
- LMK ADDE
- ZJN MSG7 IF ADDRESS ERROR
- LDN 1&10 SET *HARDWARE ERROR* FLAG
- MSG7 LMN 10
- STD CM+1
- LDC 101 SAVE WORD COUNT
- STD CM+2
- MSG8 LDM RDSA SET READ BUFFER ADDRESS
- STD T2
- LDD MA WRITE *7EK* PARAMETERS
- ADN 2
- CWD CM
- MSERR 7EK EXECUTE *7EK*
- SPACE 4,10
- ERRNG 10000-* *7DE* HAS OVERFLOWED
- BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED)
- CON MSG-1 (T0) = ENTRY ADDRESS - 1
- CON RDCT (T1) = RDCT
- CON DEST (T2) = DEST
- ERRNZ LN-* INCORRECT OVERLAY LENGTH
- QUAL *
- SPACE 4
- END
cdc/nos2.source/opl871/6de.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator