IDENT 6DD,MSFW
PERIPH
BASE MIXED
SST
TITLE 6DD - CONCURRENT PP MS OVERLAY LOADER.
*COMMENT 6DD - CONCURRENT PP MS OVERLAY LOADER.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
6DD SPACE 4,10
*** 6DD - CONCURRENT PP MS OVERLAY LOADER.
*
* S. L. BETH. 86/08/14.
SPACE 4,20
*** *6DD* LOADS MS OVERLAYS INTO CONCURRENT PPS (CPP). IT IS
* EXPECTED THAT THE ONLY CPP SUBROUTINE TO CALL *6DD* WILL BE
* THE PERIPHERAL LIBRARY LOADER (PLL) IN PP RESIDENT. *6DD* IS
* LOADED INTO THE DRIVER OVERLAY AREA WHEN A CPP PROGRAM ISSUES
* A *SETMS* REQUEST FOR A 12 BIT MS OVERLAY LOAD. 6DD PROVIDES
* THE STANDARD DRIVER ENTRY POINTS, *RDS*, *WDS*, AND *EMS*.
*
* WHEN IT IS CALLED AT *RDS*, IT ISSUES A CALL TO *1MA* TO AID
* THE LOAD. *1MA* WILL READ THE DISK AND PASS THE DATA TO
* *6DD* VIA THE MESSAGE BUFFER.
*
* WHEN *6DD* IS CALLED AT *WDS*, IT HANGS THE *CPP*.
*
* WHEN IT IS CALLED AT *EMS*, IT SIMPLY RETURNS TO THE CALLER.
*
SPACE 4,10
*** ENTRY CONDITIONS.
*
* MS RESIDENT OVERLAY.
* (T5 - T7) = 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 (LA) = BUFFER ADDRESS FOR SECTOR.
*
* EXIT (A) = 0 IF TRANSFER COMPLETE.
* .LT O, IF ERROR OCCURRED.
RDS. LDD IA
STM RDSB+4
LDN 0
STD T4
STD CM+1
LDD T5 CLEAR RECORD TYPE DATA
LPC 377
STD T5
LDD MA CALL *1MA* TO ASSIST IN THE LOAD
CWM RDSB,ON
STD CM
CWD T4
MONITOR RPPM
LDDL LA SET LOAD ADDRESS
STML RDSA
RDS1 PAUSE
LDD MA
ADN 1
CRD CM
LDD CM CHECK FOR DATA READY
SHN 21-13
MJN RDS2 IF ERROR IN LOAD
SHN 13-12
MJN RDS3 IF EOR ENCOUNTERED
ZJN RDS1 IF DATA NOT READY
LDD MA READ DATA
ADN 2
CRM **,CM
RDSA EQU *-1
LDD CM ADVANCE READ ADDRESS
SHN 2
ADD CM
RAML RDSA
LDN 0 INDICATE READY FOR NEXT BLOCK
STD CM
LDD MA
ADN 1
CWD CM
UJN RDS1 LOOP FOR MORE DATA
RDS2 LDML RDS SET RETURN ADDRESS
STDL CM
LCN 1 SET ERROR FLAG
LJM 0,CM RETURN
RDS3 LDML RDS SET RETURN ADDRESS
STDL CM
LDN 0 INDICATE READ COMPLETE
LJM 0,CM RETURN
RDSB VFD 18/3L1MA,6/0,12/11,24/0
PRS SPACE 4,10
** PRS - PRESET.
*
* MACROS BLI.
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 *
.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