cdc:nos2.source:opl871:6dp
Table of Contents
6DP
Table Of Contents
- [00007] 6DP - DDP/ECS DRIVER.
- [00009] DDP/ECS DRIVER.
- [00082] EMS - END MASS STORAGE OPERATION.
- [00101] RDS - READ SECTOR.
- [00114] WDS - WRITE SECTOR.
- [00127] LDE - TRANSFER DATA TO/FROM ECS.
- [00247] SFN - SELECT FUNCTION.
- [00266] ERR - ERROR PROCESSOR.
- [00285] DSW - DRIVER SERVICE PROCESSING.
- [00336] PRS - PRESET DRIVER.
- [00383] MSE - MASS STORAGE ERROR PROCESSOR.
- [00638] RRP - DDP/ECS REMAINING BLOCK ERROR PROCESSOR.
- [00689] SFC - SELECT FUNCTION.
- [00709] ABT - ABORT PROCESSOR.
- [00716] END - END PROCESSOR.
- [00723] RED - READ ECS DATA.
- [00832] MSW - MOVE SINGLE WORD FROM PP BUFFER TO SINGLE WORD BUFFER.
- [00845] STS - GET DDP STATUS.
- [00862] SFC - SELECT FUNCTION AND OUTPUT ECS ADDRESS.
- [00884] ABT - ABORT *7SP*.
- [00891] END - END *7SP*.
- [01007] DMP - DAYFILE MESSAGE PROCESSOR.
Source Code
- 6DP.txt
- IDENT 6DP,MSFW
- PERIPH
- BASE MIXED
- SST
- *COMMENT 6DP - DDP/ECS DRIVER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- TITLE 6DP - DDP/ECS DRIVER.
- SPACE 4
- *** 6DP - DDP/ECS DRIVER.
- * R. A. LARSEN. 72/10/01.
- * R. E. TATE. 73/10/17.
- * L. L. CLINTON 78/07/28.
- SPACE 4
- *** *6DP* PROVIDES THE CAPABILITY TO ACCESS THE ECS I
- * AND ECS II SECONDARY STORAGE DEVICES VIA THE DC135 OR
- * THE PARITY ENHANCED DC145 DDP.
- SPACE 4
- *** ORGANIZATION OF ECS I SUBSYSTEM.
- *
- * EQUIPMENT TYPE = *DP*
- *
- * SECTORS/TRACK = *SLDE* (20B, 40B, 100B, 200B).
- *
- * WORDS PER DEVICE = 131,072 FOR 131K ECS I.
- * 262,144 FOR 262K ECS I.
- * 524,288 FOR 524K ECS I.
- * 1,048,576 FOR 1048K ECS I.
- * 2,097,152 FOR 2096K ECS I.
- *
- * MAXIMUM DATA RATE = 80K WORDS PER SECOND. FOR PP/CM TRANSFER.
- SPACE 4
- *** ORGANIZATION OF ECS II SUBSYSTEM.
- *
- * EQUIPMENT TYPE = *DP*.
- *
- * SECTORS/TRACK = *SLDE* (20B, 40B, 100B, 200B).
- *
- * WORDS PER DEVICE = 131,072 FOR 131K ECS II.
- * 262,144 FOR 262K ECS II.
- * 524,288 FOR 524K ECS II.
- * 1,048,576 FOR 1048K ECS II.
- * 2,097,152 FOR 2096K ECS II.
- *
- * MAXIMUM DATA RATE = 160K WORDS PER SECOND FOR 2X PPS.
- SPACE 4
- ** ENTRY CONDITIONS.
- *
- *
- * (T4) = CHANNEL, IF PREVIOUSLY RESERVED.
- * (T5) = EST ORDINAL.
- * (T6) = TRACK.
- * (T7) = SECTOR.
- SPACE 4
- *CALL COMPMAC
- *CALL COMPCHI
- *CALL COMSDFS
- *CALL COMSMSP
- *CALL COMSPIM
- SPACE 4
- * ASSEMBLY CONSTANTS.
- CH EQU 0 DDP CHANNEL
- SC EQU 5000 DDP SELECT CODE
- DEC MICRO 1,, 6DP DECK NAME
- TITLE
- ** ENTRY POINT TRANSFERS.
- ORG MSFW
- CON PRS PRESET ADDRESS
- RDS CON 0 ENTRY
- UJN RDS. ENTER DRIVER
- WDS CON 0 ENTRY
- UJN WDS.
- EMS SPACE 4,10
- ** EMS - END MASS STORAGE OPERATION.
- *
- * ENTRY (T4) = CHANNEL, IF PREVIOUSLY RESERVED.
- * (T5) = EQUIPMENT.
- *
- * EXIT (A) = 0.
- *
- * 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 - END MASS STORAGE OPERATION
- LDN 0
- RJM DSW *DSWM* PROCESSING
- UJN .EMSX RETURN
- RDS SPACE 4
- ** RDS - READ SECTOR.
- *
- * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
- *
- * EXIT (A) < 0, IF UNRECOVERABLE PARITY ERROR.
- *
- * CALLS LDE.
- RDS. STM RDSA SET BUFFER ADDRESS
- LDC 50S12+RDS
- UJN LDE REQUEST READ
- WDS SPACE 4
- ** WDS - WRITE SECTOR.
- *
- * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
- *
- * EXIT (A) < 0, IF UNRECOVERABLE PARITY ERROR.
- *
- * CALLS LDE.
- WDS. STM WDSA SET BUFFER ADDRESS
- LDC 51S12+WDS
- * UJN LDE REQUEST WRITE
- LDE SPACE 4,10
- ** LDE - TRANSFER DATA TO/FROM ECS.
- *
- * ENTRY (A) = 6/ OPTION,12/ ENTRY
- * 50 = READ.
- * 51 = WRITE.
- * (LDEF) = EM TRACK SHIFT COUNT.
- * (RDSA) = BUFFER ADDRESS IF READ.
- * (WDSA) = BUFFER ADDRESS IF WRITE.
- *
- * EXIT TO *RDSX*/*WDSX* WITH (A) =0 IF NO ERROR.
- * TO *ERR* IF ERROR.
- *
- * CALLS SFN, STS.
- LDE STD T0 SAVE ENTRY ADDRESS
- SHN -14
- STI D1 SET OPERATION
- LDEA SBN 50
- * SBN 51 (DRIVER SET FOR WRITE)
- ZJN LDE0 IF DRIVER SET FOR REQUESTED OPERATION
- RAM LDEA
- LDM LDED SET PROPER JUMP
- LMN .A&.B
- ERRPL LDE3.1-LDED-40 JUMP OUT OF RANGE
- ERRPL LDE5-LDED-40 JUMP OUT OF RANGE
- STM LDED
- LDE0 LDI T0 SET RETURN ADDRESS
- STM LDEE
- * REENTER HERE FOR ERROR RETRY.
- LDE1 LDN 1
- RJM DSW CHECK FOR CHANNEL RESERVED
- LDD T6 COMPUTE HEADER ADDRESS
- LPC 3777
- LDEF SHN 4
- * SHN 4+EMTS (EMTS = EM TRACK SHIFT COUNT)
- STD CM+1
- SHN -6
- STD CM
- SHN -6
- RAD CM
- LDC ** LARGEST TRACK VALUE
- LDEB EQU *-1
- SBD T6
- MJN LDE4 IF TRACK TOO LARGE
- LDD T7
- SBM SLM
- PJN LDE4 IF SECTOR TOO LARGE
- LDD CM+1
- LPN 77
- SHN 6
- ADD T7
- LDE3 RAD CM+1
- SHN -14
- RAD CM
- LDI D1 LOAD READ OR WRITE FUNCTION
- LPN 7
- RJM SFN SEND FUNCTION
- LDN 2
- OAM CM,CH OUTPUT ADDRESS
- LDI D1 SET WORD COUNT
- SHN -3
- LDED UJN LDE3.1 READ OPERATION
- * UJN LDE5 (WRITE OPERATION)
- LDE3.1 IAM *,CH
- RDSA EQU *-1 READ BUFFER ADDRESS
- .A EQU LDE3.1-LDED
- UJN LDE6 CHECK STATUS
- LDE4 LDN ADDE SET ADDRESS ERROR
- UJN LDE10 PROCESS ERROR
- LDE5 OAM *,CH
- WDSA EQU *-1
- .B EQU LDE5-LDED
- FJM *,CH IF DATA NOT ACCEPTED BY CONTROLLER
- LDE6 STM ERRB SAVE BYTE COUNT
- DCN CH+40
- * (T0) = P ADDRESS OF IAM/OAM INSTRUCTION.
- LDE7 SOD T0
- ZJN LDE9 IF TIME OUT
- LDN 4-1 SELECT STATUS
- RJM SFN SELECT FUNCTION
- IAN CH+40
- DCN CH+40
- STM STSA
- LMN 2
- NJN LDE7.1 IF NOT ACCEPT STATUS
- LDC ** CHECK REMAINING BYTE COUNT
- ERRB EQU *-1
- NJN LDE8 IF INCOMPLETE TRANSFER
- LDI D1
- LPN 70
- NJN LDE12 IF HEADER OPERATION
- LJM * RETURN
- LDEE EQU *-1
- LDE7.1 SCN 13
- ZJN LDE7 IF NO PARITY ERROR
- LDE8 LDN PARE&DSTE
- LDE9 LMN DSTE
- LDE10 UJN ERR PROCESS ERROR
- LDE12 LDC 5000-50 SET DATA WORD COUNT
- RAI D1
- LDN 2 SET DATA BUFFER ADDRESS
- RAM RDSA
- LDN 2
- RAM WDSA
- LDD T7
- SHN 6
- SBD T7
- ADM SLM
- LJM LDE3 PROCESS DATA
- SFN SPACE 4,10
- ** SFN - SELECT FUNCTION.
- *
- * ENTRY (A) = FUNCTION CODE - 1.
- *
- * EXIT FUNCTION SELECTED.
- * TO *ERR* IF FUNCTION TIMEOUT.
- SFN2 ACN CH
- SFN SUBR ENTRY/EXIT
- ADC SC+1
- FAN CH+40
- SFN1 IJM SFN2,CH IF SELECT ACCEPTED
- SBN 1
- NJN SFN1 IF NOT TIMED OUT
- LDN FTOE
- * UJN ERR PROCESS ERROR
- ERR SPACE 4,10
- ** ERR - ERROR PROCESSOR.
- *
- * ENTRY (A) = ERROR CODE, IF ENTRY AT *ERR*.
- * PARE = PARITY ERROR.
- * ADDE = ADDRESS ERROR.
- * DSTE = WRITE TIMEOUT. (STATUS ERROR)
- * FTOE = FUNCTION TIMEOUT.
- * EXIT TO *7DP* IF ENTRY AT *ERR*.
- * TO *7SP* IF ENTRY AT *ERR2*.
- ERR DCN CH+40
- STM ERRA SAVE ERROR CODE
- ERR1 MSERR 7DP,*
- UJN ERR3 LOAD *7DP*
- ERR2 MSERR 7SP,*
- ERR3 LJM LEP1 LOAD ERROR PROCESSOR
- DSW SPACE 4,10
- ** DSW - DRIVER SERVICE PROCESSING.
- *
- * ENTRY (A) = 1, CHECK IF CHANNEL RESERVED.
- * (A) = 0, RELEASE CHANNEL.
- *
- * EXIT (A) = 0.
- * (LDEF) = EM TRACK SHIFT COUNT.
- * (MSEA) = EM TRACK SHIFT COUNT.
- *
- * USES T0, T1, CM - CM+4.
- *
- * MACROS MONITOR.
- DSW2 RAI T0
- AOD CM+2
- DSW3 LDM TCHS-12,CM+2
- STD T0
- LDD T4
- DSWA SBN CH
- NJN DSW2 IF MORE INSTRUCTIONS TO MODIFY
- DSW SUBR ENTRY/EXIT
- STD CM+3 SET *DSWM* REQUEST CODE
- LMM CHRV
- LPN 1
- ZJN DSWX IF CORRECT CHANNEL STATUS
- LDM CHRV SET CHANNEL STATUS AND FLAGS FOR *DSWM*
- STD CM
- DSW1 LDD OA
- CRM SBUF,ON
- LDM SBUF
- NJN DSW1 IF OUTPUT REGISTER BUSY
- LDD MA WRITE *DSWM* PARAMETERS
- CWD T4
- MONITOR DSWM
- LDD MA READ UPDATED CHANNEL
- CRD T4
- LDD CM+3 SET CHANNEL STATUS
- STM CHRV
- LJM DSW3 MODIFY INSTRUCTIONS
- SPACE 4
- ** CHANNEL TABLE.
- CHTL DSWA TERMINATE CHANNEL TABLE
- TCHS CHTB
- SBUF BSS 5 SCRATCH BUFFER
- PRS SPACE 4
- ** PRS - PRESET DRIVER.
- *
- * ENTRY (CM - CM+4) = EST ENTRY.
- PRS LDD CM+4 GET MAXIMUM TRACK
- SHN 3
- ADK TDGL
- CRM SBUF,ON
- SOM SBUF
- ADC 4000
- STM LDEB
- LDI D1 GET EM TRACK SHIFT COUNT
- SHN -6
- LPN 3
- ADC SHNI+4
- STM LDEF
- LJM SMSX RETURN
- OVERFLOW MSFW,PPFW-5,CMR
- 7DP MSOVL 7512,T2,EPFW-1,(DDP/ECS ERROR PROCESSOR.)
- SPACE 4,10
- ***** 7DP - DDP/ECS ERROR PROCESSOR.
- * W. E. GOEBEL 78/10/18.
- *
- SPACE 4
- *** *7DP* IS CALLED WHEN AN UNRECOVERED ECS ABORT HAS OCCURRED.
- * *7RP* IS CALLED TO COMPLETE THE INITIAL DATA TRANSFER AFTER
- * AN ECS PARITY ERROR HAS OCCURRED DURING AN ECS READ FUNCTION.
- * FOR AN ECS PARITY ERROR DURING A ECS READ OR WRITE FUNCTION
- * *7DP* CALLS *7SP* TO PERFORM SINGLE WORD REREAD/REWRITE OF THE
- * BLOCK IN AN ATTEMPT TO RECOVER FROM THE ERROR. *7DP* EXITS
- * TO CALL *7ER* OR *7ES* TO ISSUE APPROPRIATE FINAL ERROR
- * MESSAGES.
- MSE SPACE 4
- QUAL
- BEGIN BSSN PRS
- ERRA BSSN 1 ERROR FLAG WORD
- ADDR BSSN 1 BUFFER ADDRESS
- ECSA BSSN 2 ECS ADDRESS (2 BYTES)
- WDCT BSSN 1 WORD COUNT OF BLOCK
- RECF BSSN 1 ERROR TYPE FLAG
- SPSA BSSN 1 *7SP* STATUS
- ERRNG DEFW-* *7DP*/COMMON ERROR PROCESSOR CONFLICT
- END BSSN
- QUAL *
- MSE SPACE 4,10
- ** MSE - MASS STORAGE ERROR PROCESSOR.
- *
- * ENTRY (T1) = ERRA.
- * (T2) = RDCT.
- * (T4 - T7) = DRIVER PARAMETERS.
- * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
- * BIT 6 = 0 IF FIRST RETRY ATTEMPT.
- * (DEST) = ERROR PROCESSING CONTROL WORD.
- * BIT 12 = 1 IF *7MP* IS REPORTING AN
- * UNRECOVERED PARITY ERROR.
- * ((D1)) BIT 0 = 0 IF READ, 1 IF WRITE.
- * ((D1)) BITS 3-11 = TOTAL BYTE COUNT (5 FOR HEADER
- * OPERATION, 500 FOR DATA OPERATION).
- *T ERRA 2/ OP,1/ D,1/ A,1/ S,1/ R,6/ EC
- * OP = OPERATION.
- * 0 = READ HEADER.
- * 1 = READ DATA.
- * 2 = WRITE HEADER.
- * 3 = WRITE DATA.
- * D = DDP TYPE.
- * 0 = DC145.
- * 1 = DC135.
- * A = *7RP*/*7SP* ABORT FLAG.
- * S = *7SP* CALL FLAG (SET IF CALLED).
- * R = *7RP* CALL FLAG (SET IF CALLED)
- * EC = ERROR CODE AS DEFINED IN *COMSMSP*.
- * (ERRB) = BYTES LEFT TO BE TRANSFERED IF DISCONNECT ON I/O.
- *
- * EXIT (DEDT) = ERROR PROCESSING CONTROL WORD.
- * BITS AFFECTED BY THIS OVERLAY -
- * BITS 3 - 0 = *6DP* DRIVER TYPE.
- * BIT 4 = 1 IF RETURN TO *7SP*.
- * (DEEC) = ERROR CODE.
- * (DENR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
- * (DERC) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
- * (DERW) = 1 IF WRITE REQUEST, 0 IF READ REQUEST.
- * (DEST) = 0.
- * (DEWR) = 0 IF FIRST RETRY ATTEMPT, ELSE UNCHANGED.
- * (DEXA) = EXIT ADDRESS.
- * (RDCT) = ERROR PROCESSOR INTERFACE WORD.
- * BIT 6 = 1.
- *
- * USES CM - CM+4, T0 - T2.
- *
- * MACROS ENDMS, MSERR.
- DDP ENTRY *7DP* ENTRY
- LDM LDEF
- STM MSEA USE EXISTING INSTRUCTION TO SAVE SPACE
- SFA EST,T5 READ EST ENTRY
- ADK EQDE
- CRD CM
- LDD CM+4 READ DILL OF MST ENTRY
- SHN 3
- ADN DILL
- CRD CM
- SOD CM+3 SET DDP TYPE
- LPN 1
- STD CM+2
- LDI D1 SET READ WRITE FLAG
- LPN 1
- STM DERW
- ERRPL DERW-* STORE DESTROYS CODE
- ERRNZ REDP CODE DEPENDS OF VALUE OF *REDP*
- ERRNZ WRIP-1 CODE DEPENDS OF VALUE OF *WRIP*
- ZJN MSE1 IF READ OPERATION
- SHN 2
- RAD CM+2 SET WRITE OPERATION
- LDN WDSA-RDSA
- MSE1 ADC RDSA SET BUFFER LOCATION
- STD CM
- LDC LDE1 SAVE ERROR EXIT RETURN ADDRESS
- STM DEXA
- ERRPL DEXA-* STORE DESTROYS CODE
- LDI T2
- LPC 100
- NJN MSE1.1 IF NOT FIRST RETRY ATTEMPT
- STM DENR INITIALIZE *NON-RECOVERABLE ERROR* FLAG
- STM DERC INITIALIZE RETRY COUNT
- STM DEWR INITIALIZE *DATA WRITTEN/READ* FLAG
- LDD HN SET RECOVERY IN PROGRESS FLAG
- STI T2
- LDD T4 SAVE INITIAL CHANNEL
- STM MSFW
- MSE1.1 LDK /COMSDFS/D6DP SAVE DRIVER TYPE FOR *7EK*
- STM DEDT
- ERRPL DEDT-* STORE DESTROYS CODE
- LDI T1
- SCN 77
- NJN MSE3 IF CALLED FROM *7RP* OR *7SP*
- STM DEST INITIALIZE ERROR PROCESSING CONTROL WORD
- ERRPL DEST-* CODE DESTROYED
- LDI CM
- STM ADDR SET BUFFER ADDRESS
- LDI D1
- SHN -5
- SCN 76
- STM WDCT
- SHN -6
- ZJN MSE2 IF HEADER OPERATION
- LCN 2
- RAI CM
- LDC 50-5000 RESET DRIVER FOR HEADER OPERATION
- RAI D1
- LDN 2 FLAG ERROR IN DATA OPERATION
- MSE2 LMD CM+2
- SHN 13-2 APPEND STATUS FLAGS TO *ERRA*
- RAI T1
- MSE3 LPC 2000
- ZJN MSE4 IF HEADER OPERATION
- * DATA ADDRESS = HEADER ADDRESS + SECTOR LIMIT + 77 * SECTOR
- LDD T7
- SHN 6
- SBD T7
- ADM SLM
- MSE4 STD T2
- SHN -14
- STD T0
- * HEADER ADDRESS = TRACK * SECTOR LIMIT * 101 + SECTOR
- LDD T6
- LPC 3777
- MSEA SHN 4
- * SHN 4+EMTS (EMTS = EM TRACK SHIFT COUNT)
- STD CM+4
- SHN -6
- STD CM+3
- SHN -6
- RAD CM+3
- LDD CM+4
- LPN 77
- SHN 6
- ADD T7
- ADD T2
- RAD CM+4
- STM ECSA+1
- SHN -14
- ADD T0
- RAD CM+3
- STM ECSA
- LDI CM SAVE BUFFER ADDRESS FOR *7EK*
- STD T2
- LDN 0 DEFAULT IS NO FIRST OR SECOND WORD PRESENT
- STD CM
- LDM STSA DEFAULT STATUS IS LAST STATUS
- STD CM+1
- LDM WDCT ADD WORD COUNT TO MESSAGE
- STD CM+2
- LDI T1 SAVE ERROR CODE
- LPN 77
- STM DEEC
- ERRPL DEEC-* CODE DESTROYED
- LMK PARE
- NJN MSE8 IF NOT PARITY ERROR
- LDD T2
- SBK EPFW+1-502
- PJN MSE8 IF BUFFER OVERLAYS ERROR PROCESSOR AREA
- LDI T1
- SHN 21-13
- MJN MSE6 IF WRITE OPERATION
- SHN 13-6
- MJN MSE6 IF *7RP* ALREADY CALLED
- MSERR 7RP,*
- UJN MSE9 EXECUTE *7RP*
- MSE6 LDI T1
- SHN 21-10
- MJN MSE8 IF *7RP* OR *7SP* ABORTED
- SHN 10-7
- MJN MSE10 IF *7SP* ALREADY CALLED
- LPN 20 SET SINGLE WORD READ FOR DC135
- SHN 12-4
- RAM ECSA
- LDC ERR2 SET RETURN ADDRESS TO *7SP*
- STM DEXA
- LDN 20 SET RETURN TO ERROR PROCESSOR
- RAM DEDT
- MSE8 LDD MA STORE *7EK* PARAMETERS
- ADN 2
- CWD CM
- MSERR 7EK,*
- MSE9 LJM LEP1 LOAD ERROR PROCESSOR
- MSE10 LDM DEST
- SHN 21-12
- MJN MSE11 IF AT LEAST ONE ERROR WAS UNRECOVERED
- LDI T1
- SHN 21-12
- PJN MSE12 IF A HEADER OPERATION
- ENDMS
- MSERR 7ES,*
- UJN MSE9 LOAD ERROR PROCESSOR
- MSE11 ENDMS ISSUE ERRLOG AND DAYFILE MESSAGES
- MSERR 7ER,*
- UJN MSE9 LOAD ERROR PROCESSOR
- MSE12 LDN 0 CLEAR MESSAGE FROM *MS2W*
- STD T1
- LDD CP
- ADK MS2W
- CWD T1
- LJM LDE1 RETRY THE OPERATION
- HERE
- SPACE 4
- ERRNG 10000-* *7DP* HAS OVERFLOWED
- BSS 10000-* SPARES (ADJUST ORIGIN BY 5 AS REQUIRED)
- CON DDP-1 (T0) = ENTRY ADDRESS - 1
- CON ERRA (T1) = ERROR FLAG WORD
- CON RDCT (T2) = RDCT
- ERRNZ LN-* INCORRECT OVERLAY LENGTH
- QUAL *
- 7RP MSOVL 7613,T2,EPFW-1,(DDP/ECS READ ERROR PROCESSOR.)
- SPACE 4,10
- ***** 7RP - DDP/ECS REMAINING BLOCK ERROR PROCESSOR.
- *
- * J. L. LARSON. 78/07/28.
- SPACE 4,10
- *** *7RP* IS CALLED BY *7DP* WHEN A ECS PARITY ERROR HAS
- * OCCURRED DURING AN ECS READ FUNCTION. *7RP* RETRIEVES THE
- * DATA IN ERROR FROM THE DDP PORT AND COMPLETES THE READ OF
- * THE REMAINING ECS WORDS.
- SPACE 4,10
- *** ENTRY CONDITIONS.
- *
- * (T4) = CHANNEL NUMBER.
- * (T5) = ECS EST ORDINAL.
- * CHANNEL RESERVED.
- * (WDCT) = TOTAL WORD COUNT (1 OR 100B).
- * (ERRA) = AS DOCUMENTED IN *7DP*.
- * (ERRB) = REMAINING BYTE COUNT.
- * (ECSA - ECSA+1) = ECS FWA.
- * (ADDR) = PP BUFFER FWA.
- SPACE 4,10
- *** EXIT CONDITIONS.
- *
- * (ERRA) BIT 6 SET TO INDICATE *7RP* CALLED.
- * (ERRA) BIT 10 SET IF *7RP* ABORT.
- * (ECSA - ECSA+1) = UNCHANGED.
- * (ADDR) = UNCHANGED.
- * (WDCT) = UNCHANGED.
- SPACE 4,10
- ** COMMON DECKS.
- FWDL$ EQU 1 SELECT FORWARD LINKED LIST
- *CALL COMPCHL
- RRP SPACE 4,10
- ** RRP - DDP/ECS REMAINING BLOCK ERROR PROCESSOR.
- DRP ENTRY *7RP* ENTRY
- * MODIFY CHANNEL INSTRUCTIONS.
- LDN 0
- RRP1 RAD T1
- LDI T1 SAVE LINK TO NEXT INSTRUCTION
- LPN 37
- STD CM
- LDD T4 MODIFY CHANNEL INSTRUCTION
- SBD CM
- RAI T1
- LDD CM
- NJN RRP1 IF MORE CHANNEL INSTRUCTIONS
- * READ ERROR DATA FROM DDP PORT.
- RRP2 LDI T2 CALCULATE NUMBER OF BYTES TO INPUT
- ZJN RRP5 IF NO BYTES TO INPUT
- STD CM+2
- SBN 10*5
- MJN RRP3 IF NOT FULL RECORD TO BE READ
- LDN 10*5
- STD CM+2
- RRP3 LDM ERRA CHECK DDP TYPE (1 = DC135, 0 = DC145)
- LPC 1000
- STD CM SET MAINTENANCE MODE ADDRESS BIT
- SHN 4-11
- LMN 20
- RJM RED READ ECS DATA
- NJN ABT IF ERROR DATA NOT SUCCESSFULLY READ
- STD CM
- SBD CM+2 DECREMENT REMAINING BYTE COUNT
- RAI T2
- ZJN END IF NO MORE ECS WORDS TO READ
- * READ REMAINING ECS WORDS.
- STD CM+2 SET BYTES TO INPUT
- LDN 7 MASTER CLEAR PORT
- RJM SFC
- DCN CH+40
- LDN 0
- RJM RED READ ECS DATA
- STI T2 SAVE REMAINING BYTE COUNT
- NJN RRP2 IF NOT ALL DATA TRANSFERRED SUCCESSFULLY
- RRP5 UJN END RETURN TO *7DP*
- SFC SPACE 4,10
- ** SFC - SELECT FUNCTION.
- *
- * ENTRY (A) = FUNCTION CODE - 1.
- *
- * EXIT CHANNEL ACTIVATED.
- * TO *ABT*, IF CHANNEL PREVIOUSLY ACTIVE, OR FUNCTION
- * TIMEOUT.
- SFC2 ACN CH
- SFC SUBR ENTRY/EXIT
- ADC SC+1
- AJM ABT,CH IF ILLEGAL CHANNEL STATE
- FAN CH
- SFC1 IJM SFC2,CH IF SELECT ACCEPTED
- SBN 1
- NJN SFC1 IF NOT FUNCTION TIMEOUT
- * UJN ABT ABORT
- ABT SPACE 4,10
- ** ABT - ABORT PROCESSOR.
- ABT DCN CH+40
- LDC 400 SET *7RP* ABORT FLAG
- * UJN END RETURN TO *7DP*
- END SPACE 4,10
- ** END - END PROCESSOR.
- END ADD HN INDICATE *7RP* CALLED
- RAM ERRA
- LJM ERR1 RETURN TO *7DP*
- RED SPACE 4,10
- ** RED - READ ECS DATA.
- *
- * ENTRY (A) = FUNCTION CODE (NORMAL OR MAINTENANCE MODE READ).
- * (CM) = ADDRESS BIT FOR MAINTENANCE MODE READ.
- * (CM+2) = NUMBER OF BYTES TO INPUT.
- *
- * EXIT (A) = BYTE COUNT REMAINING AFTER INPUT.
- * TO *ABT*, IF ECS ADDRESS NOT ACCEPTED.
- *
- * USES T1, CM, CM+1, CM+3.
- *
- * CALLS SFC.
- RED1 LDN 10 INCREMENT ECS ADDRESS OFFSET
- RAD CM+1
- LCN 10*5 DECREMENT BYTE COUNT
- RAD T1
- RED2 NJN RED1 IF MORE BYTES TO COUNT
- LDM ECSA+1 CALCULATE ECS ADDRESS FOR NEW READ
- RAD CM+1
- SHN -14
- ADM ECSA
- RAD CM
- LDD CM+3 SELECT READ FUNCTION
- RJM SFC
- LDN 2 OUTPUT ECS ADDRESS
- OAM CM,CH
- NJN ABT IF ADDRESS NOT ACCEPTED
- LDD CM+2 INPUT ECS DATA
- IAM *,CH
- REDA EQU *-1
- DCN CH+40
- STD T1
- LDN 4-1 SELECT STATUS
- RJM SFC
- IAN CH+40
- DCN CH+40
- LDD T1 RETURN BYTE COUNT AFTER INPUT
- RED SUBR ENTRY/EXIT
- STD CM+3
- LDM WDCT CALCULATE BYTE COUNT ALREADY READ
- SHN 2
- ADM WDCT
- SBI T2
- STD T1
- ADM ADDR SET PP BUFFER ADDRESS FOR NEW READ
- STM REDA
- LDN 0
- STD CM+1
- LDD T1
- SCN 7
- LJM RED2 CALCULATE ECS ADDRESS OFFSET
- SPACE 4,10
- HERE TERMINATE LINKED CHANNEL INSTRUCTIONS
- SPACE 4,10
- ERRNG 10000-* *7RP* HAS OVERFLOWED
- BSS 10000-* SPARES
- CON DRP-1 (T0) = ENTRY ADDRESS - 1
- CON CH01$ (T1) = FIRST CHANNEL INSTRUCTION ADDRESS
- CON ERRB (T2) = POINTER TO REMAINING BYTE COUNT
- ERRNZ LN-* INCORRECT OVERLAY LENGTH
- QUAL *
- 7SP MSOVL 7555,T2,DDMD+4,(DDP/ECS SINGLE WORD RETRY PROCESSOR.)
- SPACE 4
- ***** SINGLE WORD RETRY ERROR PROCESSOR.
- *
- * L. L. CLINTON 78/07/28.
- SPACE 4,10
- *** *7SP* IS INITIALLY CALLED BY *7DP* WHEN AN ECS PARITY ERROR
- * HAS OCCURRED DURING AN ECS READ OR WRITE FUNCTION.
- * *7SP* REREADS OR REWRITES THE DATA ONE WORD AT A TIME
- * AND COMPARES PREVIOUSLY READ DATA WITH THE NEW DATA.
- * *7SP* CALLS *7MP* TO ISSUE AN ERROR MESSAGE WHENEVER A
- * SINGLE WORD READ OR WRITE FUNCTION IS UNSUCCESSFUL AND
- * WHENEVER THE DATA READ DOES NOT COMPARE. AFTER ISSUING
- * THE ERROR MESSAGE, *7MP* RECALLS *7SP* TO CONTINUE THE
- * SINGLE WORD READ OR WRITE ERROR RECOVERY.
- SPACE 4,10
- *** ENTRY CONDITIONS.
- *
- * (ADDR) = PP BUFFER FWA.
- * (ECSA - ECSA+1) = ECS FWA.
- * (ERRA) = AS DOCUMENTED IN *7DP*.
- * (WDCT) = TOTAL WORD COUNT (1 OR 100B).
- SPACE 4,10
- *** EXIT CONDITIONS.
- *
- * FOR *7DP* -
- * (ERRA) BIT 7 SET TO INDICATE *7SP* CALLED.
- * (ERRA) BIT 10 SET IF *7SP* ABORT.
- *
- * FOR *7MP* -
- * (RECF) BIT 0 SET IF DATA DID NOT COMPARE.
- * (RECF) BIT 1 SET IF ECS ERROR ON REREAD/REWRITE.
- * (SWBF - SWBF+4) = DATA FROM SINGLE WORD REREAD.
- SPACE 4,10
- ** COMMON DECKS.
- FWDL$ EQU 1 SELECT FORWARD LINKED LIST
- *CALL COMPCHL
- 7SP SPACE 4,10
- QUAL
- SWBF EQU /7SP/OFFW SINGLE WORD RETRY BUFFER
- QUAL *
- ERRPL SWBF+4-* RETRY BUFFER OVERLAYS CODE
- MSW SPACE 4,10
- ** MSW - MOVE SINGLE WORD FROM PP BUFFER TO SINGLE WORD BUFFER.
- *
- * ENTRY (MSWA) PP BUFFER ADDRESS FOR MOVE.
- MSW SUBR ENTRY/EXIT
- LDD MA
- CWM **,ON
- MSWA EQU *-1
- SBN 1
- CRM SWBF,ON
- UJN MSWX RETURN
- STS SPACE 4,10
- ** STS - GET DDP STATUS.
- *
- * EXIT (SPSA) = DDP STATUS.
- *
- * CALLS SFC.
- STS SUBR ENTRY/EXIT
- STS1 LDN 4-1 ISSUE STATUS FUNCTION
- RJM SFC
- IAN CH+40
- STM SPSA SAVE DDP STATUS
- LPN 2
- DCN CH+40
- NJN STSX IF FUNCTION ACCEPTED
- UJN STS1 RETRY
- SFC SPACE 4,10
- ** SFC - SELECT FUNCTION AND OUTPUT ECS ADDRESS.
- *
- * ENTRY (A) = FUNCTION CODE-1.
- * (CM - CM+1) = ECS ADDRESS TO OUTPUT.
- *
- * EXIT (A) = 2.
- * TO *ABT*, IF FUNCTION TIMEOUT OR ADDRESS NOT
- * ACCEPTED.
- SFC2 ACN CH
- LDN 2
- SFC SUBR ENTRY/EXIT
- ADC SC+1
- AJM ABT,CH IF ILLEGAL CHANNEL STATUS
- FAN CH
- SFC1 IJM SFC2,CH IF SELECT ACCEPTED
- SBN 1
- NJN SFC1 IF NOT TIMEOUT
- * UJN ABT ABORT
- ABT SPACE 4,10
- ** ABT - ABORT *7SP*.
- ABT LDC 400-1 SET *7SP* ABORT FLAG
- DCN CH+40
- * UJN END RETURN TO *7DP*
- END SPACE 4,10
- ** END - END *7SP*.
- END ADC 200+1 SET *7SP* CALLED FLAG
- RAI T2
- LJM ERR1 RETURN TO *7DP*
- SPACE 4,10
- DSP ENTRY *7SP* ENTRY
- SSP LDN 1 RESERVE CHANNEL
- RJM DSW
- * LDN 0
- * SET CHANNEL INSTRUCTIONS.
- SSP1 RAD T1 LINK TO NEXT CHANNEL INSTRUCTION
- LDI T1 SAVE LINK TO NEXT CHANNEL INSTRUCTION
- LPN 37
- STD CM
- LDD T4 MODIFY CHANNEL INSTRUCTION
- SBD CM
- RAI T1
- LDD CM
- NJN SSP1 IF MORE CHANNELS TO MODIFY
- STM RECF
- SSP2 SOM WDCT CHECK WORD COUNT
- MJN END IF ALL WORDS PROCESSED
- LDN 7 MASTER CLEAR PORT
- RJM SFC
- DCN CH+40
- LDI D1 CHECK FUNCTION
- LPN 1
- NJN SSP3 IF WRITE
- LDI T2 SET SINGLE WORD READ FUNCTION FOR DC145
- SHN 5-11
- LPN 40
- LMN 40
- SSP3 RJM SFC SELECT FUNCTION
- OAM ECSA,CH OUTPUT ADDRESS
- LDM ADDR
- STM MSWA
- STM SSPB
- RJM MSW MOVE SINGLE WORD
- LDI D1
- LPN 1
- NJN SSP4 IF WRITE
- LDN 5
- IAM SWBF,CH INPUT DATA
- UJN SSP5 CHECK STATUS
- SSP4 LDN 5
- OAM SWBF,CH OUTPUT DATA
- FJM *,CH IF DATA NOT ACCEPTED
- SSP5 STD CM SAVE REMAINING BYTE COUNT
- DCN CH+40
- ZJN SSP6 IF DATA TRANSFERED
- RJM MSW RESTORE DATA FROM PP BUFFER
- SSP6 LDN 5
- STD T1
- RJM STS GET STATUS
- LDD CM
- NJN SSP9 IF DATA NOT TRANSFERED
- * COMPARE DATA.
- SSP7 SOD T1
- MJN SSP8 IF END OF COMPARE
- LDM **,T1
- SSPB EQU *-1
- LMM SWBF,T1
- ZJN SSP7 IF DATA COMPARES
- AOM RECF
- SSP8 LDM SPSA
- SCN 2
- ZJN SSP10 IF NO ERROR IN STATUS
- SCN 10
- NJN SSP9 IF NOT *WRITE BUSY*
- RJM STS GET STATUS
- UJN SSP8 RECHECK STATUS
- SSP9 LDN 2
- SSP10 RAM RECF
- ZJN SSP11 IF NO ERROR MESSAGE
- ENDMS
- MSERR 7MP CALL *7MP* TO ISSUE ERROR MESSAGE
- SSP11 AOM ECSA+1 INCREMENT EXTENDED MEMORY ADDRESS
- SHN -14
- RAM ECSA
- LDN 5 INCREMENT PP BUFFER ADDRESS
- RAM ADDR
- LJM SSP2 READ NEXT WORD
- 7SP SPACE 4,10
- HERE TERMINATE LINKED CHANNEL INSTRUCTIONS.
- SPACE 4,10
- ERRNG 10000-* *7SP* HAS OVERFLOWED
- BSS 10000-* SPARES
- CON DSP-1 (T0) = ENTRY ADDRESS - 1
- CON CH01$ (T1) = FIRST CHANNEL INSTRUCTION ADDRESS
- CON ERRA (T2) = POINTER TO ERROR FLAG WORD
- ERRNZ LN-* INCORRECT OVERLAY LENGTH
- QUAL *
- 7MP MSOVL 7656,T2,SWBF+4,(DDP/ECS ERROR MESSAGE PROCESSOR.)
- SPACE 4,10
- ***** ERROR MESSAGE PROCESSOR.
- *
- * L. L. CLINTON 78/08/15.
- SPACE 4,10
- *** *7MP* IS CALLED BY *7SP* TO ISSUE INTERMEDIATE ECS ERROR
- * MESSAGES WHEN A SINGLE WORD REREAD OR REWRITE IS
- * UNSUCCESSFUL OR WHEN THE DATA READ DOES NOT COMPARE WITH
- * THE PREVIOUSLY READ DATA. AFTER ISSUING THE ERROR
- * MESSAGES, *7MP* RECALLS *7SP* TO CONTINUE THE SINGLE WORD
- * READ OR WRITE ERROR RECOVERY.
- SPACE 4,10
- 7MP SPACE 4,10
- ** DMP - DAYFILE MESSAGE PROCESSOR.
- *
- * ENTRY (ADDR) = ADDRESS OF WORD IN BUFFER.
- * (STSB) = LAST READ/WRITE DDP FUNCTION STATUS.
- * (RECF) = 9/, 1/R, 1/C.
- * R = 1, IF REREAD/REWRITE FAILED TO COMPLETE
- * OR IF THE STATUS TAKEN AFTER THE
- * REREAD/REWRITE INDICATES AN ERROR.
- * C = 1, IF DATA RECEIVED ON READ RETRY DID
- * NOT COMPARE WITH THE DATA RECEIVED
- * THE FIRST TIME.
- * (SWBF - SWBF+4) = DATA FROM SINGLE WORD RE-READ.
- * (ECSA - ECSA+1) = EXTENDED MEMORY ADDRESS.
- * (MSGH - MSGH+4) = *EMB* MESSAGE HEADER.
- * (HEDR - HEDR+11) = BML MESSAGE HEADER, PREPARED BY
- * *7EK* THROUGH *7EP*.
- * (DDMD - DDMD+4) = DEVICE DEPENDENT MESSAGE DATA.
- DMP ENTRY *7MP* ENTRY
- LDM DERW CALCULATE DRIVER ENTRY POINT
- SHN 1
- ADC RDS
- ERRNZ RDS+2-WDS CODE DEPENDS ON VALUE
- STD T0
- LDI T2
- ZJN DMP1 IF NO EXIT ADDRESS SET
- STI T0
- DMP1 LDC ERR2 SET RETURN TO *7SP*
- STI T2
- LDI T1
- ZJN DMP2 IF RECOVERED ERROR
- LDM DEST
- LPC -2000
- LMC 2000 SET *UNRECOVERED ERROR* FLAG
- STM DEST
- LDC 1S17
- DMP2 LMM DERW SET READ/WRITE FLAG IN MESSAGE
- SHN 1
- LMD HN APPEND RETRY COUNT
- STM HEDR+6
- LDN 5 SET BML MESSAGE LENGTH
- STM MSGH+3
- LDM ADDR
- STM DMPA
- STM DMPB
- LDD MA
- ADN 3
- CWM **,ON
- DMPA EQU *-1
- CWM SWBF,ON
- LDM SPSA
- STM DSFA+1 SET FUNCTION STATUS IN MESSAGE
- LDM ECSA
- STM DSFA+3 ADD XM ADDRESS TO MESSAGE
- LDM ECSA+1
- STM DSFA+4
- LDN 1 APPEND WORD COUNT TO MESSAGE
- STM DSFA+2
- STM DSFA INDICATE FIRST DATA WORD PRESENT
- LDI T1
- LMN 2
- ZJN DMP3 IF ONLY ONE WORD TO BE REPORTED
- AOM MSGH+3
- LDN 2
- RAM DSFA INDICATE SECOND DATA WORD PRESENT
- LDI T1
- LMN 1
- NJN DMP3 IF WORD NOT TO BE TRANSFERED
- LDD MA
- ADN 4
- CRM **,ON
- DMPB EQU *-1
- DMP3 LJM LEP CALL *7EQ* TO ISSUE BML MESSAGE
- SPACE 4,10
- ERRNG 10000-* *7MP* HAS OVERFLOWED
- BSS 10000-* (SPARES)
- CON DMP-1 (T0) = ENTRY ADDRESS - 1
- CON RECF (T1) = RECF
- CON ERXA (T2) = ERXA
- ERRNZ LN-* INCORRECT OVERLAY LENGTH
- QUAL *
- SPACE 4
- END
cdc/nos2.source/opl871/6dp.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator