Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/cex/cextim.lst
There are no other files named cextim.lst in the archive.
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24
CEXTIM.M11 30-DEC-82 00:34 TABLE OF CONTENTS
2632 DECLARATIONS
2659 $LTMDS - Disable Database Timer
2702 $LTMEN - Enable Database Timer
2745 $STMCN - Cancel short timer
2800 $STMRQ - Start short timer
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 1
CEXTIM.M11 30-DEC-82 00:34
1 .TITLE CEXTIM - COMM/EXEC TIMER SERVICES
2 .IDENT /003070/
3 .ENABL LC
4
5 ;
6 ; COPYRIGHT (c) 1980, 1981, 1982
7 ; DIGITAL EQUIPMENT CORPORATION
8 ; Maynard, Massachusetts
9 ;
10 ; This software is furnished under a license and may be used
11 ; and copied only in accordance with the terms of such license
12 ; and with the inclusion of the above copyright notice. This
13 ; software or any other copies thereof may not be provided or
14 ; otherwise made available to any other person. No title to
15 ; and ownership of the software is hereby transferred.
16 ;
17 ; The information in this software is subject to change
18 ; without notice and should not be construed as a commitment
19 ; by DIGITAL EQUIPMENT CORPORATION.
20 ;
21 ; DIGITAL assumes no responsibility for the use or reliability
22 ; of its software on equipment which is not supplied by
23 ; DIGITAL.
24 ;
25
26 ;++
27 ; FACILITY: MCB Communications Executive
28 ;
29 ; FUNCTIONAL ABSTRACT:
30 ;
31 ; This module contains the routines to handle timer service requests.
32 ;
33 ; ENVIRONMENT: RSX kernel mode with EIS
34 ;
35 ; AUTHOR: Alan D. Peckham, CREATION DATE: 21-MAR-80
36 ;
37 ; MODIFIED BY:
38 ;
39 ; Alan D. Peckham, 2-Jul-80: VERSION 3.0
40 ; 01 - Change CRSH$ references to CRSH$S.
41 ; 02 - Macroize references to APR6 mapping
42 ; 03 - Update CRSH$S contexts.
43 ; Alan D. Peckham, 9-Dec-80: VERSION 3.1
44 ; 04 - All LIX, PIX bytes refer to data base indices.
45 ; Rename ZF.TIM to ZF.LTM.
46 ; Merge $DDSTM, $DLSTM, $LLSTM into STM.
47 ; Alan D. Peckham, 30-Jan-80: VERSION 3.2
48 ; 05 - Support .CRPDB current process descriptor.
49 ; Add data base timer enable/disable.
50 ; 06 - Remove LLC timer support.
51 ; 07 - Fix short timer determination and expand to include
52 ; time unit specifier.
53 ;--
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 2
CEXTIM.M11 30-DEC-82 00:34 DECLARATIONS
55 .SBTTL DECLARATIONS
56
57 ;
58 ; INCLUDE FILES:
59 ;
60
61 .MCALL CLKDF$,CRSH$S
62 .GLOBL $CLINS,$CLRMV,$TKPS
63
64 ;
65 ; MACROS:
66 ;
67 ; None
68 ;
69 ; EQUATED SYMBOLS:
70 ;
71
72 000000' CLKDF$ ; RSX clock queue symbol definitions.
73
74 ;
75 ; OWN STORAGE:
76 ;
77
78 .GLOBL .TIMDS ; Address of timer handler.
79
80 ;
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 3
CEXTIM.M11 30-DEC-82 00:34 $LTMDS - DISABLE DATABASE TIMER
82 .SBTTL $LTMDS - Disable Database Timer
83 ;++
84 ; FUNCTIONAL DESCRIPTION:
85 ;
86 ; Disable the data base timer.
87 ;
88 ; CALLING SEQUENCE:
89 ;
90 ; CALL $LTMDS
91 ;
92 ; INPUT PARAMETERS:
93 ;
94 ; None
95 ;
96 ; IMPLICIT INPUTS:
97 ;
98 ; None
99 ;
100 ; OUTPUT PARAMETERS:
101 ;
102 ; None
103 ;
104 ; IMPLICIT OUTPUTS:
105 ;
106 ; None
107 ;
108 ; CONDITION CODES:
109 ;
110 ; None
111 ;
112 ; SIDE EFFECTS:
113 ;
114 ; None
115 ;--
116
117 000000' .PSECT $CODE$,I,RO
118 000000' $LTMDS::PLVL$ ; Crash if not at process level.
119 000000' PUSH$S R1
120 000002' 016701 000000G MOV .CRPDB,R1 ; Get process descriptor
121 000006' 042761 100000 000010 BIC #ZF.DTM,Z.FLG(R1) ; to disable timer.
122 000014' POP$S R1
123 000016' 000207 RETURN
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 4
CEXTIM.M11 30-DEC-82 00:34 $LTMEN - ENABLE DATABASE TIMER
125 .SBTTL $LTMEN - Enable Database Timer
126 ;++
127 ; FUNCTIONAL DESCRIPTION:
128 ;
129 ; Enable the data base timer.
130 ;
131 ; CALLING SEQUENCE:
132 ;
133 ; CALL $LTMEN
134 ;
135 ; INPUT PARAMETERS:
136 ;
137 ; None
138 ;
139 ; IMPLICIT INPUTS:
140 ;
141 ; None
142 ;
143 ; OUTPUT PARAMETERS:
144 ;
145 ; None
146 ;
147 ; IMPLICIT OUTPUTS:
148 ;
149 ; None
150 ;
151 ; CONDITION CODES:
152 ;
153 ; None
154 ;
155 ; SIDE EFFECTS:
156 ;
157 ; None
158 ;--
159
160 000020' .PSECT $CODE$,I,RO
161 000020' $LTMEN::PLVL$ ; Crash if not at process level.
162 000020' PUSH$S R1
163 000022' 016701 000000G MOV .CRPDB,R1 ; Get process descriptor
164 000026' 052761 100000 000010 BIS #ZF.DTM,Z.FLG(R1) ; to enable timer.
165 000034' POP$S R1
166 000036' 000207 RETURN
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 5
CEXTIM.M11 30-DEC-82 00:34 $STMCN - CANCEL SHORT TIMER
168 .SBTTL $STMCN - Cancel short timer
169 ;++
170 ; FUNCTIONAL DESCRIPTION:
171 ;
172 ; Cancel the specified short timer.
173 ;
174 ; CALLING SEQUENCE:
175 ;
176 ; CALL $STMCN
177 ;
178 ; INPUT PARAMETERS:
179 ;
180 ; R4 = Address of timer block.
181 ;
182 ; IMPLICIT INPUTS:
183 ;
184 ; None
185 ;
186 ; OUTPUT PARAMETERS:
187 ;
188 ; None
189 ;
190 ; IMPLICIT OUTPUTS:
191 ;
192 ; None
193 ;
194 ; CONDITION CODES:
195 ;
196 ; None
197 ;
198 ; SIDE EFFECTS:
199 ;
200 ; None
201 ;--
202
203 000040' .PSECT $CODE$,I,RO
204 000040' $STMCN::PLVL$ ; Crash if not at process level.
205
206 001 .IF NE,D$$BUG
207 CMP T.IDN(R4),R4 ; If identifier not block address
208 BNE 100$ ; then crash.
209 .IFTF
210
211 000040' SAV5$S ; Get room to move
212 000044' PUSH$S R0
213 000046' 010405 MOV R4,R5 ; Set timer ID,
214 000050' 012704 000006 MOV #C.SYST,R4 ; request type,
215 000054' 004767 000000G CALL $CLRMV ; and tell RSX to cancel them.
216 000060' POP$S R0
217 000062' 000207 RETURN
218
219 .IFT
220 100$: CRSH$S TMB ; Invalid timer block identifier
221 000 .ENDC
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 6
CEXTIM.M11 30-DEC-82 00:34 $STMRQ - START SHORT TIMER
223 .SBTTL $STMRQ - Start short timer
224 ;++
225 ; FUNCTIONAL DESCRIPTION:
226 ;
227 ; Schedule a short timer for the current process.
228 ;
229 ; CALLING SEQUENCE:
230 ;
231 ; CALL $STMRQ
232 ;
233 ; INPUT PARAMETERS:
234 ;
235 ; R4 = Timer block containing:
236 ; T.TIM timer interval in milliseconds.
237 ;
238 ; IMPLICIT INPUTS:
239 ;
240 ; None
241 ;
242 ; OUTPUT PARAMETERS:
243 ;
244 ; None
245 ;
246 ; IMPLICIT OUTPUTS:
247 ;
248 ; None
249 ;
250 ; CONDITION CODES:
251 ;
252 ; None
253 ;
254 ; SIDE EFFECTS:
255 ;
256 ; None
257 ;--
258
259 000064' .PSECT $CODE$,I,RO
260 000064' $STMRQ::PLVL$ ; Crash if not at process level.
261
262 001 .IF DF,D$$BUG
263 000064' 105764 000003 TSTB T.UNT(R4)
264 000070' 001404 BEQ 10$
265 000072' 122764 000002 000003 CMPB #TU.SEC,T.UNT(R4)
266 000100' 001055 BNE 100$
267 .IFTF
268
269 000102' 016764 000000G 000020 10$: MOV .CRPDB,T.PDB(R4) ; Set process descriptor,
270 000110' 010464 000004 MOV R4,T.IDN(R4) ; timer identifier,
271 000114' 016764 000000G 000012 MOV .TIMDS,C.SUB(R4) ; and service routine address
272 000122' 001443 BEQ 90$ ; (if there is one).
273 000124' SAV5$S ; Get room to move...
274 000130' PUSH$S <R0,@#KISAR5>
275 000136' 016402 000016 MOV T.TIM(R4),R2 ; Get time interval
276 000142' 105764 000003 TSTB T.UNT(R4) ; If in seconds
277 000146' 001404 BEQ 20$ ; then
278 000150' 070267 000000G MUL $TKPS,R2 ; this many ticks.
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 6-1
CEXTIM.M11 30-DEC-82 00:34 $STMRQ - START SHORT TIMER
279 000154' 010302 MOV R3,R2
280 000156' 000407 BR 70$
281 000160' 070267 000000G 20$: MUL $TKPS,R2 ; convert to number of ticks
282 000164' 071227 001750 DIV #1000.,R2 ; from milliseconds.
283 000170' 005703 60$: TST R3 ; If remainder,
284 000172' 001401 BEQ 70$ ; then
285 000174' 005202 INC R2 ; round up.
286 000176' 005001 70$: CLR R1 ; Set high order time.
287 000200' 010400 MOV R4,R0 ; Clock queue entry address.
288 000202' 012704 000006 MOV #C.SYST,R4 ; Request type
289 000206' 016005 000004 MOV T.IDN(R0),R5 ; and identifier.
290 000212' 017737 000000G 000000G MOV @.PDBVB,@#KISAR5 ; Set mapping to CEX process,
291 000220' 004767 000000G CALL $CLINS ; tell RSX to queue it up.
292 000224' POP$S <@#KISAR5,R0>
293 000232' 000207 90$: RETURN
294
295 .IFT
296 000234' 100$: CRSH$S TMU ; Invalid time unit
297 000 .ENDC
298
299 000001 .END
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 7
CEXTIM.M11 30-DEC-82 00:34 CROSS REFERENCE TABLE -- USER SYMBOLS
CE$TMU= ****** G 296#
C.SUB 000012 271*
C.SYST= 000006 214 288
D$$BUG= 000000 118 161 204 206 260 262
KISAR5= ****** GX 274 290* 292*
S.PARM= 000016 211# 273#
TU.SEC= 000002 265
T.IDN 000004 270* 289
T.PDB 000020 269*
T.TIM 000016 275
T.UNT 000003 263 265 276
ZF.DTM= 100000 121 164
Z.FLG 000010 121* 164*
$CLINS= ****** G 62# 291*
$CLRMV= ****** G 62# 215*
$CRSH = ****** G 296#*
$LTMDS 000000RG 002 118#
$LTMEN 000020RG 002 161#
$SAVE5= ****** G 211# 273#
$STMCN 000040RG 002 204#
$STMRQ 000064RG 002 260#
$TKPS = ****** G 62# 278 281
.CRPDB= ****** GX 120 163 269
.PDBVB= ****** GX 290
.TIMDS= ****** G 78# 271
CEXTIM - COMM/EXEC TIMER SERVICES DNMAC X24.07-563 28-MAY-85 14:24 PAGE 8
CEXTIM.M11 30-DEC-82 00:34 CROSS REFERENCE TABLE -- MACRO NAMES
CLKDF$ 61# 72
CRSH$S 61# 296
PLVL$ 118 161 204 260
POP$S 122 165 216 292
PUSH$S 119 162 212 274
SAV5$S 211 273
. ABS. 000000 000 CON RW ABS LCL I
000000 001 CON RW REL LCL I
$CODE$ 000242 002 CON RO REL LCL I
ERRORS DETECTED: 0
DEFAULT GLOBALS GENERATED: 3
CEXTIM,CEXTIM/CR=MCB:RSXLIB/PA:1,MCBLIB/PA:1,CEX:CEXLIB/PA:1,CEXTIM
RUN-TIME: 4 1 .2 SECONDS
RUN-TIME RATIO: 24/5=4.4
CORE USED: 15K (29 PAGES)