cdc:nos2.source:opl871:6dc
Table of Contents
6DC
Table Of Contents
- [00005] 6DC - CONCURRENT PP OVERLAY LOADER.
- [00009] CONCURRENT PP OVERLAY LOADER.
- [00070] EMS - END MASS STORAGE OPERATION.
- [00080] WDS - WRITE SECTOR.
- [00090] RDS - READ SECTOR.
- [00233] PRS - PRESET.
Source Code
- 6DC.txt
- IDENT 6DC,MSFW
- PERIPH
- BASE MIXED
- SST
- TITLE 6DC - CONCURRENT PP OVERLAY LOADER.
- *COMMENT 6DC - CONCURRENT PP OVERLAY LOADER.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- 6DC SPACE 4,10
- *** 6DC - CONCURRENT PP OVERLAY LOADER.
- *
- * J. M. MAREK. 85/11/01.
- SPACE 4,20
- *** *6DC* LOADS 16-BIT OVERLAYS INTO CONCURRENT PPS (CPP). IT IS
- * EXPECTED THAT THE ONLY CPP SUBROUTINE TO CALL *6DC* WILL BE
- * THE PERIPHERAL LIBRARY LOADER (PLL) IN PP RESIDENT. *6DC* IS
- * LOADED INTO THE DRIVER OVERLAY AREA WHEN A CPP PROGRAM ISSUES
- * A *SETMS* REQUEST. *6DC* PROVIDES THE STANDARD DRIVER ENTRY
- * POINTS, *RDS*, *WDS*, AND *EMS*.
- *
- * WHEN IT IS CALLED AT *RDS*, IT EXAMINES THE PARAMETERS IN
- * *T5* - *T7*. IF THE PARAMETERS SPECIFY LOADING A CM RESIDENT
- * 16-BIT PP PROGRAM, *6DC* COMPLETES THE LOAD, PERFORMING THE
- * NECESSARY PACKING, AND RETURNS TO THE CALLER. IF A MASS
- * RESIDENT PROGRAM IS REQUESTED, *RDS* ISSUES AN ERROR LOG
- * MESSAGE AND RETURNS AN ERROR STATUS (-1) TO THE CALLER. IF
- * *T5* - *T7* DO NOT SPECIFY A 16-BIT LOAD, *6DC* HANGS THE
- * CPP.
- *
- * WHEN *6DC* IS CALLED AT *WDS*, IT ALSO HANGS THE *CPP*.
- *
- * WHEN IT IS CALLED AT *EMS*, IT SIMPLY RETURNS TO THE CALLER.
- *
- * NOTE. DURING EXECUTION *6DC* DESTROYS ITS PRESET CODE.
- * DRIVER PRESET SHOULD NEVER BE SPECIFIED WITHOUT DRIVER LOAD.
- SPACE 4,10
- *** ENTRY CONDITIONS.
- *
- * CM RESIDENT 16-BIT OVERLAY.
- * (T5 - T7) = 2/ ,4/ 10,18/ *RPL* ADDRESS,12/ LENGTH
- *
- * MS RESIDENT OVERLAY. (NOT SUPPORTED)
- * (T5 - T7) = 2/ ,4/ 14,6/ ESTO,12/ TRACK,12/ SECTOR
- *
- * MS READ. (NOT SUPPORTED)
- * (T5 - T7) = 3/0, 9/ ESTO,12/ TRACK,12/ SECTOR
- COMMON SPACE 4,10
- * COMMON DECKS.
- *CALL COMPMAC
- *CALL COMPIOU
- *CALL COMSMSC
- *CALL COMSMSP
- EJECT
- ** ENTRY POINT TRANSFERS.
- ORG MSFW
- CON PRS PRESET ADDRESS
- RDS CON 0 ENTRY
- UJN RDS. ENTER DRIVER
- WDS CON 0 ENTRY
- UJN WDS. ENTER DRIVER
- EMS SPACE 4,10
- ** EMS - END MASS STORAGE OPERATION.
- *
- * EXIT (A) = 0.
- .EMS SUBR ENTRY/EXIT
- LDN 0
- STM CHRV
- UJN .EMSX RETURN
- WDS SPACE 4,10
- ** WDS - WRITE SECTOR.
- *
- * *WDS* HANGS THE PP WHEN IT IS CALLED.
- *
- * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
- WDS. MONITOR HNGM HANG THE PP
- WDS1 UJN WDS. CONTINUE HANGING
- RDS SPACE 4,10
- ** RDS - READ SECTOR.
- *
- * ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
- *
- * EXIT (A) = 0 IF TRANSFER COMPLETE.
- * = ERROR CODE IF ERROR OCCURRED.
- RDS6 EQU WDS1
- RDS7 LDM PLLA GET OVERLAY NAME
- STM RDSB
- LDM PLLB
- STM RDSB+1
- LDC RDSA+ERLN ISSUE ERROR LOG MESSAGE
- RJM DFM
- LDML RDS GET RETURN ADDRESS
- STDL CM
- LCN 1 SET ERROR FLAG
- LJM 0,CM RETURN
- RDS. LDD T5 CHECK 16-BIT LOAD BIT
- SHN 21-11
- RDS1 PJN RDS6 IF NOT 16-BIT LOAD
- SHN 21-10-21+11
- MJN RDS7 IF MS RESIDENT OVERLAY
- SHN 21-5-21+10 GET RPL HEADER
- SCN 77
- LMD T6
- CRD CM
- ADN 1 SET FWA OF OVERLAY
- STD T6
- SHN -14
- STD T5
- LDD CM+1 GET LOAD ADDRESS
- LPN 17
- SHN 14
- LMD CM+2
- ZJN RDS2 IF ZERO LEVEL OVERLAY
- STDL LA
- RDS2 STML 2,LA
- LDDL LA
- ADN 5 SET FWA OF OVERLAY CODE
- STDL CM+2
- SOD T7 COMPUTE THE NUMBER OF BYTES
- SHN 4 BYTES = WORDS(15)/4 AND TRUNCATED
- SBD T7
- SHN -2
- ADDL CM+2 COMPUTE THE LAST BYTE ADDRESS
- STDL T7
- SHN -15
- NJN RDS1 IF OVERLAY WRAPS MEMORY
- LDD CM BUILD NORMAL OVERLAY HEADER
- STI LA
- LDD CM+1
- SCN 77
- STM 1,LA
- LDN 1
- STM 3,LA
- LDD CM+4
- STM 4,LA
- LDN 4
- STD T4
- * START THE MAIN LOOP WITH THESE INITIAL CONDITIONS -
- *
- * (T4) = 4.
- * (T5 - T6) = FWA OF THE OVERLAY IN CM.
- * (T7) = LAST BYTE ADDRESS+1 OF THE OVERLAY IN PP MEMORY.
- * (CM+2) = FWA OF THE OVERLAY CODE.
- * (LA) = LOAD ADDRESS OF THE OVERLAY.
- * GET 15 16-BIT BYTES.
- RDS3 LDD T5 READ THE NEXT 4 WORDS
- SHN 14
- LMD T6
- CRM BUF,T4
- STD T6
- SHN -14
- STD T5
- LDC BUF
- STD CM
- * LOAD 12 BITS FROM THE FIRST BYTE AND 4 FROM THE NEXT.
- RDS4 LDI CM
- SHN 4
- STIL CM+2
- AOD CM
- LDI CM
- SHN -8D
- RAIL CM+2
- AODL CM+2
- SBDL T7
- PJN RDS5 IF LAST BYTE
- * LOAD 8 BITS FROM THE CURRENT BYTE AND 8 FROM THE NEXT.
- LDI CM
- SHN 8D
- SCN 77
- STIL CM+2
- AOD CM
- LDI CM
- SHN -4
- RAIL CM+2
- AODL CM+2
- SBDL T7
- PJN RDS5 IF LAST BYTE
- * LOAD 4 BITS FROM THE CURRENT BYTE AND 12 BITS FROM THE NEXT.
- LDI CM
- LPN 17
- SHN 12D
- STIL CM+2
- AOD CM
- LDI CM
- RAIL CM+2
- AODL CM+2
- SBDL T7
- PJN RDS5 IF LAST BYTE
- * CHECK FOR MORE DATA.
- AOD CM
- SBK BUF+4*5
- MJP RDS4 IF 4 WORDS HAVE NOT BEEN PROCESSED
- UJP RDS3 GET 4 MORE WORDS
- RDS5 LDML RDS GET RETURN ADDRESS
- STDL CM
- LDN 0
- LJM 0,CM RETURN
- RDSA DATA H* 6DC -*
- RDSB DATA C* XXX IS MASS RESIDENT.*
- BUF BSS 0
- * BSS 4*5
- PRS SPACE 4,10
- ** PRS - PRESET.
- *
- * CALLS SLI.
- PRS LDC PRSA GET TABLE OF LONG INSTRUCTIONS
- STD CM+4
- LDD T3 PRESERVE *T3*
- STD CM+3
- PRS1 LDI CM+4 GET NEXT INSTRUCTION ADDRESS
- ZJN PRS2 IF END OF LIST
- STD T3
- BLI T3 BUILD LONG INSTRUCTION
- AOD CM+4
- UJN PRS1 PROCESS NEXT INSTRUCTION
- PRS2 LDD CM+3 RESTORE *T3*
- STD T3
- LDC SMSX ENSURE PRESET IS NOT RE-EXECUTED
- STM MSFW
- LJM SMSX RETURN
- PRSA BSS 0
- LIST16
- .1 MAX *,BUF+4*5
- .1 SET .1+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
- END
cdc/nos2.source/opl871/6dc.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator