Seq # *Modification Id* Act
----------------------------+
00001 M00S00001.6dc +++| IDENT 6DC,MSFW
00002 M00S00002.6dc +++| PERIPH
00003 M00S00003.6dc +++| BASE MIXED
00004 M00S00004.6dc +++| SST
00005 M00S00005.6dc +++| TITLE 6DC - CONCURRENT PP OVERLAY LOADER.
00006 M00S00006.6dc +++|*COMMENT 6DC - CONCURRENT PP OVERLAY LOADER.
Line S00007 Modification History |
M01 (Removed by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00007 M01S00007.281l803 ---| COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1985.
Line S00001 Modification History |
M01 (Added by) | 281l803 |
Seq # *Modification Id* Act
----------------------------+
00008 M01S00001.281l803 +++| COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
00009 M00S00008.6dc +++| 6DC SPACE 4,10
00010 M00S00009.6dc +++|*** 6DC - CONCURRENT PP OVERLAY LOADER.
00011 M00S00010.6dc +++|*
00012 M00S00011.6dc +++|* J. M. MAREK. 85/11/01.
00013 M00S00012.6dc +++| SPACE 4,20
00014 M00S00013.6dc +++|*** *6DC* LOADS 16-BIT OVERLAYS INTO CONCURRENT PPS (CPP). IT IS
00015 M00S00014.6dc +++|* EXPECTED THAT THE ONLY CPP SUBROUTINE TO CALL *6DC* WILL BE
00016 M00S00015.6dc +++|* THE PERIPHERAL LIBRARY LOADER (PLL) IN PP RESIDENT. *6DC* IS
00017 M00S00016.6dc +++|* LOADED INTO THE DRIVER OVERLAY AREA WHEN A CPP PROGRAM ISSUES
00018 M00S00017.6dc +++|* A *SETMS* REQUEST. *6DC* PROVIDES THE STANDARD DRIVER ENTRY
00019 M00S00018.6dc +++|* POINTS, *RDS*, *WDS*, AND *EMS*.
00020 M00S00019.6dc +++|*
00021 M00S00020.6dc +++|* WHEN IT IS CALLED AT *RDS*, IT EXAMINES THE PARAMETERS IN
00022 M00S00021.6dc +++|* *T5* - *T7*. IF THE PARAMETERS SPECIFY LOADING A CM RESIDENT
00023 M00S00022.6dc +++|* 16-BIT PP PROGRAM, *6DC* COMPLETES THE LOAD, PERFORMING THE
00024 M00S00023.6dc +++|* NECESSARY PACKING, AND RETURNS TO THE CALLER. IF A MASS
00025 M00S00024.6dc +++|* RESIDENT PROGRAM IS REQUESTED, *RDS* ISSUES AN ERROR LOG
00026 M00S00025.6dc +++|* MESSAGE AND RETURNS AN ERROR STATUS (-1) TO THE CALLER. IF
00027 M00S00026.6dc +++|* *T5* - *T7* DO NOT SPECIFY A 16-BIT LOAD, *6DC* HANGS THE
00028 M00S00027.6dc +++|* CPP.
00029 M00S00028.6dc +++|*
00030 M00S00029.6dc +++|* WHEN *6DC* IS CALLED AT *WDS*, IT ALSO HANGS THE *CPP*.
00031 M00S00030.6dc +++|*
00032 M00S00031.6dc +++|* WHEN IT IS CALLED AT *EMS*, IT SIMPLY RETURNS TO THE CALLER.
00033 M00S00032.6dc +++|*
00034 M00S00033.6dc +++|* NOTE. DURING EXECUTION *6DC* DESTROYS ITS PRESET CODE.
00035 M00S00034.6dc +++|* DRIVER PRESET SHOULD NEVER BE SPECIFIED WITHOUT DRIVER LOAD.
00036 M00S00035.6dc +++| SPACE 4,10
00037 M00S00036.6dc +++|*** ENTRY CONDITIONS.
00038 M00S00037.6dc +++|*
00039 M00S00038.6dc +++|* CM RESIDENT 16-BIT OVERLAY.
00040 M00S00039.6dc +++|* (T5 - T7) = 2/ ,4/ 10,18/ *RPL* ADDRESS,12/ LENGTH
00041 M00S00040.6dc +++|*
00042 M00S00041.6dc +++|* MS RESIDENT OVERLAY. (NOT SUPPORTED)
00043 M00S00042.6dc +++|* (T5 - T7) = 2/ ,4/ 14,6/ ESTO,12/ TRACK,12/ SECTOR
00044 M00S00043.6dc +++|*
00045 M00S00044.6dc +++|* MS READ. (NOT SUPPORTED)
00046 M00S00045.6dc +++|* (T5 - T7) = 3/0, 9/ ESTO,12/ TRACK,12/ SECTOR
00047 M00S00046.6dc +++| COMMON SPACE 4,10
00048 M00S00047.6dc +++|* COMMON DECKS.
00049 M00S00048.6dc +++|
00050 M00S00049.6dc +++|
00051 M00S00050.6dc +++|*CALL COMPMAC
00052 M00S00051.6dc +++|*CALL COMPIOU
00053 M00S00052.6dc +++|*CALL COMSMSC
00054 M00S00053.6dc +++|*CALL COMSMSP
00055 M00S00054.6dc +++| EJECT
00056 M00S00055.6dc +++|** ENTRY POINT TRANSFERS.
00057 M00S00056.6dc +++|
00058 M00S00057.6dc +++|
00059 M00S00058.6dc +++| ORG MSFW
00060 M00S00059.6dc +++|
00061 M00S00060.6dc +++| CON PRS PRESET ADDRESS
00062 M00S00061.6dc +++|
00063 M00S00062.6dc +++|
00064 M00S00063.6dc +++| RDS CON 0 ENTRY
00065 M00S00064.6dc +++| UJN RDS. ENTER DRIVER
00066 M00S00065.6dc +++|
00067 M00S00066.6dc +++|
00068 M00S00067.6dc +++| WDS CON 0 ENTRY
00069 M00S00068.6dc +++| UJN WDS. ENTER DRIVER
00070 M00S00069.6dc +++| EMS SPACE 4,10
00071 M00S00070.6dc +++|** EMS - END MASS STORAGE OPERATION.
00072 M00S00071.6dc +++|*
00073 M00S00072.6dc +++|* EXIT (A) = 0.
00074 M00S00073.6dc +++|
00075 M00S00074.6dc +++|
00076 M00S00075.6dc +++| .EMS SUBR ENTRY/EXIT
00077 M00S00076.6dc +++| LDN 0
00078 M00S00077.6dc +++| STM CHRV
00079 M00S00078.6dc +++| UJN .EMSX RETURN
00080 M00S00079.6dc +++| WDS SPACE 4,10
00081 M00S00080.6dc +++|** WDS - WRITE SECTOR.
00082 M00S00081.6dc +++|*
00083 M00S00082.6dc +++|* *WDS* HANGS THE PP WHEN IT IS CALLED.
00084 M00S00083.6dc +++|*
00085 M00S00084.6dc +++|* ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
00086 M00S00085.6dc +++|
00087 M00S00086.6dc +++|
00088 M00S00087.6dc +++| WDS. MONITOR HNGM HANG THE PP
00089 M00S00088.6dc +++| WDS1 UJN WDS. CONTINUE HANGING
00090 M00S00089.6dc +++| RDS SPACE 4,10
00091 M00S00090.6dc +++|** RDS - READ SECTOR.
00092 M00S00091.6dc +++|*
00093 M00S00092.6dc +++|* ENTRY (A) = BUFFER ADDRESS FOR SECTOR.
00094 M00S00093.6dc +++|*
00095 M00S00094.6dc +++|* EXIT (A) = 0 IF TRANSFER COMPLETE.
00096 M00S00095.6dc +++|* = ERROR CODE IF ERROR OCCURRED.
00097 M00S00096.6dc +++|
00098 M00S00097.6dc +++|
00099 M00S00098.6dc +++| RDS6 EQU WDS1
00100 M00S00099.6dc +++|
00101 M00S00100.6dc +++| RDS7 LDM PLLA GET OVERLAY NAME
00102 M00S00101.6dc +++| STM RDSB
00103 M00S00102.6dc +++| LDM PLLB
00104 M00S00103.6dc +++| STM RDSB+1
00105 M00S00104.6dc +++| LDC RDSA+ERLN ISSUE ERROR LOG MESSAGE
00106 M00S00105.6dc +++| RJM DFM
00107 M00S00106.6dc +++| LDML RDS GET RETURN ADDRESS
00108 M00S00107.6dc +++| STDL CM
00109 M00S00108.6dc +++| LCN 1 SET ERROR FLAG
00110 M00S00109.6dc +++| LJM 0,CM RETURN
00111 M00S00110.6dc +++|
00112 M00S00111.6dc +++| RDS. LDD T5 CHECK 16-BIT LOAD BIT
00113 M00S00112.6dc +++| SHN 21-11
00114 M00S00113.6dc +++| RDS1 PJN RDS6 IF NOT 16-BIT LOAD
00115 M00S00114.6dc +++| SHN 21-10-21+11
00116 M00S00115.6dc +++| MJN RDS7 IF MS RESIDENT OVERLAY
00117 M00S00116.6dc +++| SHN 21-5-21+10 GET RPL HEADER
00118 M00S00117.6dc +++| SCN 77
00119 M00S00118.6dc +++| LMD T6
00120 M00S00119.6dc +++| CRD CM
00121 M00S00120.6dc +++| ADN 1 SET FWA OF OVERLAY
00122 M00S00121.6dc +++| STD T6
00123 M00S00122.6dc +++| SHN -14
00124 M00S00123.6dc +++| STD T5
00125 M00S00124.6dc +++| LDD CM+1 GET LOAD ADDRESS
00126 M00S00125.6dc +++| LPN 17
00127 M00S00126.6dc +++| SHN 14
00128 M00S00127.6dc +++| LMD CM+2
00129 M00S00128.6dc +++| ZJN RDS2 IF ZERO LEVEL OVERLAY
00130 M00S00129.6dc +++| STDL LA
00131 M00S00130.6dc +++| RDS2 STML 2,LA
00132 M00S00131.6dc +++| LDDL LA
00133 M00S00132.6dc +++| ADN 5 SET FWA OF OVERLAY CODE
00134 M00S00133.6dc +++| STDL CM+2
00135 M00S00134.6dc +++| SOD T7 COMPUTE THE NUMBER OF BYTES
00136 M00S00135.6dc +++| SHN 4 BYTES = WORDS(15)/4 AND TRUNCATED
00137 M00S00136.6dc +++| SBD T7
00138 M00S00137.6dc +++| SHN -2
00139 M00S00138.6dc +++| ADDL CM+2 COMPUTE THE LAST BYTE ADDRESS
00140 M00S00139.6dc +++| STDL T7
00141 M00S00140.6dc +++| SHN -15
00142 M00S00141.6dc +++| NJN RDS1 IF OVERLAY WRAPS MEMORY
00143 M00S00142.6dc +++| LDD CM BUILD NORMAL OVERLAY HEADER
00144 M00S00143.6dc +++| STI LA
00145 M00S00144.6dc +++| LDD CM+1
00146 M00S00145.6dc +++| SCN 77
00147 M00S00146.6dc +++| STM 1,LA
00148 M00S00147.6dc +++| LDN 1
00149 M00S00148.6dc +++| STM 3,LA
00150 M00S00149.6dc +++| LDD CM+4
00151 M00S00150.6dc +++| STM 4,LA
00152 M00S00151.6dc +++| LDN 4
00153 M00S00152.6dc +++| STD T4
00154 M00S00153.6dc +++|
00155 M00S00154.6dc +++|* START THE MAIN LOOP WITH THESE INITIAL CONDITIONS -
00156 M00S00155.6dc +++|*
00157 M00S00156.6dc +++|* (T4) = 4.
00158 M00S00157.6dc +++|* (T5 - T6) = FWA OF THE OVERLAY IN CM.
00159 M00S00158.6dc +++|* (T7) = LAST BYTE ADDRESS+1 OF THE OVERLAY IN PP MEMORY.
00160 M00S00159.6dc +++|* (CM+2) = FWA OF THE OVERLAY CODE.
00161 M00S00160.6dc +++|* (LA) = LOAD ADDRESS OF THE OVERLAY.
00162 M00S00161.6dc +++|
00163 M00S00162.6dc +++|* GET 15 16-BIT BYTES.
00164 M00S00163.6dc +++|
00165 M00S00164.6dc +++| RDS3 LDD T5 READ THE NEXT 4 WORDS
00166 M00S00165.6dc +++| SHN 14
00167 M00S00166.6dc +++| LMD T6
00168 M00S00167.6dc +++| CRM BUF,T4
00169 M00S00168.6dc +++| STD T6
00170 M00S00169.6dc +++| SHN -14
00171 M00S00170.6dc +++| STD T5
00172 M00S00171.6dc +++| LDC BUF
00173 M00S00172.6dc +++| STD CM
00174 M00S00173.6dc +++|
00175 M00S00174.6dc +++|* LOAD 12 BITS FROM THE FIRST BYTE AND 4 FROM THE NEXT.
00176 M00S00175.6dc +++|
00177 M00S00176.6dc +++| RDS4 LDI CM
00178 M00S00177.6dc +++| SHN 4
00179 M00S00178.6dc +++| STIL CM+2
00180 M00S00179.6dc +++| AOD CM
00181 M00S00180.6dc +++| LDI CM
00182 M00S00181.6dc +++| SHN -8D
00183 M00S00182.6dc +++| RAIL CM+2
00184 M00S00183.6dc +++| AODL CM+2
00185 M00S00184.6dc +++| SBDL T7
00186 M00S00185.6dc +++| PJN RDS5 IF LAST BYTE
00187 M00S00186.6dc +++|
00188 M00S00187.6dc +++|* LOAD 8 BITS FROM THE CURRENT BYTE AND 8 FROM THE NEXT.
00189 M00S00188.6dc +++|
00190 M00S00189.6dc +++| LDI CM
00191 M00S00190.6dc +++| SHN 8D
00192 M00S00191.6dc +++| SCN 77
00193 M00S00192.6dc +++| STIL CM+2
00194 M00S00193.6dc +++| AOD CM
00195 M00S00194.6dc +++| LDI CM
00196 M00S00195.6dc +++| SHN -4
00197 M00S00196.6dc +++| RAIL CM+2
00198 M00S00197.6dc +++| AODL CM+2
00199 M00S00198.6dc +++| SBDL T7
00200 M00S00199.6dc +++| PJN RDS5 IF LAST BYTE
00201 M00S00200.6dc +++|
00202 M00S00201.6dc +++|* LOAD 4 BITS FROM THE CURRENT BYTE AND 12 BITS FROM THE NEXT.
00203 M00S00202.6dc +++|
00204 M00S00203.6dc +++| LDI CM
00205 M00S00204.6dc +++| LPN 17
00206 M00S00205.6dc +++| SHN 12D
00207 M00S00206.6dc +++| STIL CM+2
00208 M00S00207.6dc +++| AOD CM
00209 M00S00208.6dc +++| LDI CM
00210 M00S00209.6dc +++| RAIL CM+2
00211 M00S00210.6dc +++| AODL CM+2
00212 M00S00211.6dc +++| SBDL T7
00213 M00S00212.6dc +++| PJN RDS5 IF LAST BYTE
00214 M00S00213.6dc +++|
00215 M00S00214.6dc +++|* CHECK FOR MORE DATA.
00216 M00S00215.6dc +++|
00217 M00S00216.6dc +++| AOD CM
00218 M00S00217.6dc +++| SBK BUF+4*5
00219 M00S00218.6dc +++| MJP RDS4 IF 4 WORDS HAVE NOT BEEN PROCESSED
00220 M00S00219.6dc +++| UJP RDS3 GET 4 MORE WORDS
00221 M00S00220.6dc +++|
00222 M00S00221.6dc +++| RDS5 LDML RDS GET RETURN ADDRESS
00223 M00S00222.6dc +++| STDL CM
00224 M00S00223.6dc +++| LDN 0
00225 M00S00224.6dc +++| LJM 0,CM RETURN
00226 M00S00225.6dc +++|
00227 M00S00226.6dc +++|
00228 M00S00227.6dc +++| RDSA DATA H* 6DC -*
00229 M00S00228.6dc +++| RDSB DATA C* XXX IS MASS RESIDENT.*
00230 M00S00229.6dc +++|
00231 M00S00230.6dc +++| BUF BSS 0
00232 M00S00231.6dc +++|* BSS 4*5
00233 M00S00232.6dc +++| PRS SPACE 4,10
00234 M00S00233.6dc +++|** PRS - PRESET.
00235 M00S00234.6dc +++|*
00236 M00S00235.6dc +++|* CALLS SLI.
00237 M00S00236.6dc +++|
00238 M00S00237.6dc +++|
00239 M00S00238.6dc +++| PRS LDC PRSA GET TABLE OF LONG INSTRUCTIONS
00240 M00S00239.6dc +++| STD CM+4
00241 M00S00240.6dc +++| LDD T3 PRESERVE *T3*
00242 M00S00241.6dc +++| STD CM+3
00243 M00S00242.6dc +++| PRS1 LDI CM+4 GET NEXT INSTRUCTION ADDRESS
00244 M00S00243.6dc +++| ZJN PRS2 IF END OF LIST
00245 M00S00244.6dc +++| STD T3
00246 M00S00245.6dc +++| BLI T3 BUILD LONG INSTRUCTION
00247 M00S00246.6dc +++| AOD CM+4
00248 M00S00247.6dc +++| UJN PRS1 PROCESS NEXT INSTRUCTION
00249 M00S00248.6dc +++|
00250 M00S00249.6dc +++| PRS2 LDD CM+3 RESTORE *T3*
00251 M00S00250.6dc +++| STD T3
00252 M00S00251.6dc +++| LDC SMSX ENSURE PRESET IS NOT RE-EXECUTED
00253 M00S00252.6dc +++| STM MSFW
00254 M00S00253.6dc +++| LJM SMSX RETURN
00255 M00S00254.6dc +++|
00256 M00S00255.6dc +++|
00257 M00S00256.6dc +++| PRSA BSS 0
00258 M00S00257.6dc +++| LIST16
00259 M00S00258.6dc +++|
00260 M00S00259.6dc +++| .1 MAX *,BUF+4*5
00261 M00S00260.6dc +++| .1 SET .1+4-MSFW CHECK FOR OVERFLOW
00262 M00S00261.6dc +++| .1 SET .1/5
00263 M00S00262.6dc +++| .1 SET MSFW+.1*5
00264 M00S00263.6dc +++| .2 SET PPFW-5-*-5 BYTES AVAILABLE BEFORE OVERFLOW
00265 M00S00264.6dc +++| ERRNG PPFW-5-.1 DRIVER OVERFLOWS INTO *PPFW*-5
00266 M00S00265.6dc +++| END