Trailing-Edge
-
PDP-10 Archives
-
AP-4178E-RM
-
swskit-sources/rsx20f.lis
There are no other files named rsx20f.lis in the archive.
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28
TABLE OF CONTENTS
5- 230 TRAP VECTORS
6- 324 TRAP SERVICE FOR COMMON PROGRAM TRAPS
7- 440 CRASH ROUTINE
7- 524 EXEC MODULE ONE -- TITLE PAGE
8- 584 EXEC MODULE ONE -- SYSTEM NOTES
9- 639 EXEC MODULE ONE -- GLOSSARY
9- 664 MACRO CALLS (MCALL)
10- 676 EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
26-1246 EXEC MODULE ONE -- NUL TASK
28-1324 EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
29-1590 EXEC MODULE THREE -- TITLE PAGE
30-1626 EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
37-2017 EXEC MODULE NINE -- TITLE PAGE
38-2054 EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
43-2526 SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
44-2787 POWERFAIL -- POWER DOWN
45-2841 POWERFAIL -- POWER UP ENTRY
46-2890 POWERFAIL -- POWER FAIL RESTART
47-2988 DTE20 EMT DISPATCH DECODER
48-3061 $DORBL -- RING THE KL-10 DOORBELL
49-3116 $DTEOF -- TURN THE DTE20 OFF
50-3156 $DTEON -- TURN THE DTE20 ON
51-3271 $DPMYG -- DEPOSIT INTO MY GENERAL SECTION
52-3314 $EXMYG -- EXAMINE MY GENERAL SECTION
53-3346 $EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
54-3378 $DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
55-3410 $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
56-3444 $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
57-3476 $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
58-3562 $PRVEX -- PRIVILEDGED EXAMINE
59-3599 $PRVDP -- PRIVILEDGED DEPOSIT
60-3631 $RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
61-3666 FNDCPU -- INTERNAL SUBROUTINE FIND THE DTE NUMBER
62-3704 FNDDTE -- INTERNAL SUBROUTINE TO FIND THE DTE20
63-3732 CESCHK -- CHECK FOR CLOCK ERROR STOP
64-3788 DIRECTIVE -- ASSIGN LUN
65-3929 DIRECTIVE -- GET LUN INFORMATION
66-4033 DIRECTIVE -- GET TIME PARAMETERS
67-4146 DIRECTIVE -- CLEAR EVENT FLAG
68-4196 DIRECTIVE -- SET EVENT FLAG
69-4246 DIRECTIVE -- DECLARE SIGNIFICANT EVENT
70-4307 DIRECTIVE -- READ EVENT FLAG
71-4355 DIRECTIVE -- READ ALL EVENT FLAGS
72-4398 DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
73-4461 DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
74-4553 DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
75-4625 DIRECTIVE -- MARK TIME
76-4760 DIRECTIVE -- CANCEL MARK-TIME REQUESTS
77-4857 DIRECTIVE -- SUSPEND EXECUTION
78-4897 DIRECTIVE -- RESUME TASK EXECUTION
79-5003 DIRECTIVE -- TASK EXIT
80-5083 DIRECTIVE -- QUEUE I/O
81-5459 DIRECTIVE -- SEND DATA
82-5515 DIRECTIVE -- SEND AND REQUEST OR RESUME
84-5740 DIRECTIVE -- RECEIVE DATA
85-5777 DIRECTIVE -- RECEIVE DATA OR EXIT
86-5818 DIRECTIVE -- RECEIVE DATA OR SUSPEND
DMSDV - SPECIFY SST TABLE DIR MACRO M1108 16-DEC-77 11:28
TABLE OF CONTENTS
87-5995 DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
88-6084 DIRECTIVE -- SPECIFY POWER FAIL AST
90-6177 DIRECTIVE -- TASK SCHEDULING -- REQUEST
91-6337 DIRECTIVE -- GET TASK PARAMETERS
92-6461 DIRECTIVE -- GET PARTITION PARAMETERS
93-6602 CLOCK TICK RECOGNITION
96-6786 QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH
97-6863 QUEUED PROTOCOL -- ENABLE/DISABLE SENDALL
98-6886 QUEUED PROTOCOL -- HANGUP
99-6945 QUEUED PROTOCOL -- SET LINE ALLOCATION
100-7034 QUEUED PROTOCOL -- STOP LINE INPUT
101-7121 QUEUED PROTOCOL -- XOFF
102-7182 QUEUED PROTOCOL -- XON
103-7283 QUEUED PROTOCOL -- HERE IS INITIAL STATUS
104-7322 QUEUED PROTOCOL -- RETURN TIME OF DAY
105-7347 QUEUED PROTOCOL -- STRING DATA
106-7436 QUEUED PROTOCOL -- LINE NUMBER - CHARACTER
107-7482 QUEUED PROTOCOL -- RETURN TIME OF DAY
108-7508 QUEUED PROTOCOL -- FLUSH DEVICE OUTPUT QUEUE
109-7526 QUEUED PROTOCOL -- RECIEVE KLINIK PARAMETERS
110-7548 QUEUED PROTOCOL -- SENDALL
111-7710 QUEUED PROTOCOL -- COPY BUFFER
112-7751 DTE20 DRIVER -- DTE20 INTERRUPT SERVICE
113-7799 DTE20 DRIVER -- TO TEN DONE SERVICE
114-7870 DTE20 DRIVER -- TO ELEVEN DONE SERVICE
115-8024 DTE20 DRIVER -- DOORBELL SERVICE
116-8150 DTE20 DRIVER -- START TO TEN QUEUE
119-8414 TTY DRIVER -- TTINI (TTY QUEUE SERVICE)
120-8448 TTY DRIVER -- TIMEOUT SERVICE
121-8486 TTY DRIVER -- KL KEEP ALIVE SERVICE
122-8526 TTY DRIVER -- CTY SERVICE
123-8623 TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
126-8764 TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
127-9068 TTY DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)
127-9080 TTY DRIVER -- $DHINP (DH11 INPUT INTERRUPT)
128-9164 TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)
129-9219 TTY DRIVER -- DLINT (DL11-E DATASET INTERRUPT SERVICE)
130-9269 TTY DRIVER -- TTCTY (CTY SERVICE)
131-9422 TTY DRIVER -- DHSAV (DH11 REGISTER SAVE/RESTORE CO-ROUTINE)
132-9475 TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)
133-9536 TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)
134-9596 TTY DRIVER -- .DMHUP (DM11 HANGUP)
135-9626 TTY DRIVER -- .DLHUP (DL11E HANGUP)
136-9669 TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)
137-9749 TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
140-9982 SCOMM MODULE -- COMMON GLOBAL DATA
141-0091 SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS
142-0176 SCOMM -- SYSTEM TASK DIRECTORY (STD)
143-0285 SCOMM -- ACTIVE TASK LIST (ATL)
144-0337 SCOMM -- TASK PARTITION DIRECTORY (TPD)
145-0386 SCOMM -- FREE POOL POINTERS
146-0417 SCOMM -- CLOCK REQUEST LIST
147-0437 SCOMM -- DTE20 REQUEST LIST
148-0455 SCOMM -- DEVICE QUEUE POINTERS
149-0492 SCOMM -- TERMINAL DRIVER TABLES
150-0553 SCOMM -- LOGICAL UNIT TABLES
151-0647 SCOMM MODULE -- INITLM (INITIALIZATION)
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28
TABLE OF CONTENTS
152-0693 SCOMM MODULE -- .CEFN (CONVERT EFN)
153-0751 SCOMM MODULE -- .CKDEL (CLOCK DELETE)
154-0783 SCOMM MODULE -- .DTDEL (DTE20 DELETE)
155-0823 SCOMM MODULE -- ..IODN (SUBROUTINE TO COMPLETE I/O)
156-0875 SCOMM MODULE -- ..DQRN (DEQUEUE A NORMAL REQUEST)
157-0985 SCOMM MODULE -- ..SEFN (SET EVENT FLAG)
158-1022 SCOMM MODULE -- DIV216 (DIV R2 BY 16)
159-1045 SCOMM MODULE -- ..NDEL (NODE DELETE)
160-1071 SCOMM MODULE -- ..IPRI (INSERT NODE BY PRIORITY)
161-1106 SCOMM MODULE -- ..NADD (NODE ADD)
162-1135 SCOMM MODULE -- ..PICK (PICK A NODE)
163-1177 SCOMM MODULE -- ..ENB0 (ENABLE TASK SWITCHING)
164-1220 SCOMM MODULE -- ..FSTD (FIND STD ENTRY)
165-1272 SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2 (ALLOCATE/DEALLOCATE CORE)
167-1409 SCOMM MODULE -- ..ALOW (ALLOCATE OR WAIT)
168-1428 SCOMM MODULE -- ..STTY (START TTY OUTPUT)
169-1580 SCOMM MODULE -- ..STPT (STOP TTY)
170-1676 SCOMM MODULE -- ..STCH (STORE CHARACTER IN TO 10 Q)
171-1713 SCOMM MODULE -- ..SACK (SEND ACKNOWLEDGEMENT)
172-1753 SCOMM MODULE -- ..STFC (STORE FUNCTION)
173-1806 SCOMM MODULE -- ..STIN (START INDIRECT FUNCTION)
174-1880 SCOMM MODULE -- ..STQ (STORE IN TO 10 Q)
175-1945 SCOMM MODULE -- WFED (WAIT FOR EXAMINE/DEPOSIT)
176-2027 SCOMM MODULE -- SWFED (START AND WAIT FOR EX/DEP)
177-2075 SCOMM MODULE -- ..DTSP (STOP DTE PROTOCOLS)
178-2100 SCOMM MODULE -- ..DTP2 (START SECONDARY PROTOCOL)
179-2129 SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)
180-2151 SCOMM MODULE -- ..VXFR (VALADATE TRANSFER)
181-2297 SCOMM MODULE -- ..BLXO (BLOCK OUTPUT) ..BLXI (BLOCK INPUT)
182-2385 SCOMM MODULE -- ..VTOL (MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL)
183-2467 SCOMM MODULE -- ..VVLL (MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL)
RSXFC -- RSX20F PARAMETER FIL MACRO M1108 16-DEC-77 11:28 PAGE 1
1 .TITLE RSXFC -- RSX20F PARAMETER FILE (TOPS-20 SYSTEM DEFINITION)
2 .IDENT /010100/
3 ;
4
5 ; COPYRIGHT (C) 1977, 1978 BY
6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
7 ;
8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
9 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
10 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
11 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
12 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
13 ;
14 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
15 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
16 ; CORPORATION.
17 ;
18 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
19 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
20
21
22 ;
23 ; VERSION 10-10
24 ;
25 ; ALAN D. PECKHAM 19-APR-77
26 ;
27 ; MODIFIED BY:
28 ;
29 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
30 ; THE TOPS20 SYSTEM.
31 ;
32 ; EQUATED SYMBOLS
33 ;
34 000001 $TOP20 =1 ; FOR TOPS-20 SYSTEM
35
36 000001 $LP20 =1 ; INCLUDE LP20 DRIVER
37 000001 $CD11 =1 ; INCLUDE CD11 CARD READER DRIVER
38 000001 $RP04 =1 ; INCLUDE RP04 DISK DRIVER
39 000001 $FE =1 ; INCLUDE FE PSEUDO-DEVICE DRIVER
40 000001 $F11 =1 ; INCLUDE FILES-11 ACP
41 000001 $DH11 =1 ; INCLUDE DH11 DRIVER
42 000001 $DBDTE =1 ; INCLUDE DTE20 DEBUGGING CODE
43 000001 $DTE =1 ; INCLUDE DTE20 DTE DRIVER
44
45 .IF DF $ARPA
46 $TOP20 =1 ; ASSEMBLE TOPS-20 VERSION OF RSX-20F
47 .ENDC ; $ARPA
48
49 .IF DF $TOP10
50 $DTA =1 ; INCLUDE DECTAPE DRIVER
51 .ENDC ; $TOP10
52
53 .IF NDF $ARPA
54 .IF DF $TOP20
55 000001 $RX11 =1 ; INCLUDE FLOPPY DRIVER
56 .ENDC ; $TOP20
57 .ENDC ; $ARPA
RSXFC -- RSX20F PARAMETER FIL MACRO M1108 16-DEC-77 11:28 PAGE 1-1
58
59 .IF DF $ARPA&$TOP20
60 $DTA =1 ; INCLUDE DECTAPE DRIVER FOR ARPA
61 .ENDC ; $ARPA&$TOP20
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1108 16-DEC-77 11:28 PAGE 2
63 .TITLE RSX20F -- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
64 .IDENT /012120/
65 .ENABL AMA
66 .LIST MEB
67 .NLIST CND
68 ;
69 ; COPYRIGHT (C) 1975, 1978 BY
70 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
71 ;
72 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
73 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
74 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
75 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
76 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
77 ;
78 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
79 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
80 ; CORPORATION.
81 ;
82 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
83 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
84 ;
85 ; R. MCLEAN 19-MAR-75
86 ;
87 ; VERSION 12-12
88 ;
89 ; MODIFIED BY:
90 ;
91 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF THE RSX20F EXEC.
92 ;
93 ; SET VERSION OF RSX20F EXEC HERE
94 ;
95 000012 RSX$$V = 12 ; VERSION 12
96 000012 RSX$$E = 12 ; EDIT 12
97 ;
98 ; RELEASE VERSION
99 ;
100 000126 RSX$$K = 'V ; KEY FOR RELEASE
101 000000 RSX$$F = 0 ; DEFINE FORM AS NULL
106 000102 RSX$$F = 'B ; TOPS-20 FORM OF THE EXEC.
111 ;
112 ; DTE20 REGISTER OFFSETS
113 ;
114 000036 DAG3 =36
115 000034 STATD =34
116 000032 DAG2 =32
117 000030 DAG1 =30
118 000022 T11AD =22
119 000020 T10AD =20
120 000016 T11BC =16
121 000010 TNAD1 =10
122 000012 TNAD2 =12
123 000006 DXWD1 =6
124 000004 DXWD2 =4
125 000002 DXWD3 =2
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1108 16-DEC-77 11:28 PAGE 3
127 ;+
128 ; MACRO TO SET IDENT FOR EXEC MODULES.
129 ; FORMAT OF CALL IS:
130 ; IDENT$ VERSION,EDIT
131 ; OR
132 ; IDENT$ VERSION,EDIT,RSX$$F
133 ; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
134 ;-
135
136 .MACRO IDENT$ VER,EDT,FRM,NUM
137 .IF B,NUM
138 .IF B,FRM
139 IDENT$ \VER,\EDT,0,0
140 .IFF
141 .IF EQ,<FRM-'A>
142 IDENT$ \VER,\EDT,A,0
143 .IFF
144 .IF EQ,<FRM-'B>
145 IDENT$ \VER,\EDT,B,0
146 .IFF
147 IDENT$ \VER,\EDT,C,0
148 .ENDC
149 .ENDC
150 .ENDC
151 .MEXIT
152 .IFF
153 .IF GE,VER-10
154 .IF GE,EDT-10
155 .LIST
156 .IDENT /'FRM'VER'EDT'0/
157 .NLIST
158 .IFF
159 .LIST
160 .IDENT /'FRM'VER'0'EDT'0/
161 .NLIST
162 .ENDC
163 .IFF
164 .IF GE,EDT-10
165 .LIST
166 .IDENT /'FRM'0'VER'EDT'0/
167 .NLIST
168 .IFF
169 .LIST
170 .IDENT /'FRM'0'VER'0'EDT'0/
171 .NLIST
172 .ENDC
173 .ENDC
174 .ENDC
175 .ENDM IDENT$
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 4
177 .TITLE LC -- LOW CORE FOR RSX20F
178 000000 IDENT$ 10,RSX$$E,RSX$$F
.IDENT /B10120/
179 ;
180 ;
181 ; COPYRIGHT (C) 1975, 1978 BY
182 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
183 ;
184 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
185 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
186 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
187 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
188 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
189 ;
190 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
191 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
192 ; CORPORATION.
193 ;
194 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
195 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
196 ;
197 ; MODULE: LOW CORE
198 ;
199 ; VERSION: 10-04
200 ;
201 ; AUTHOR: R. MCLEAN
202 ;
203 ; DATE: 19 JUL 75
204 ;
205 ;
206 ; THIS MODULE CONTAINS:
207 ;
208 ; 1 -- CODE TO SERVICE LOW CORE TRAPS AND ERRORS
209 ;
210 ; MODIFICATIONS:
211 ;
212 ; NO. DATE PROGRAMMER PURPOSE
213 ; --- ---- ---------- -------
214 ; 001 03-FEB-77 R. BELANGER ADD DL11E INTERRUPT VECTORS
215 ; 002 15-MAR-77 R. BELANGER LIMIT SIZE OF PATCH SPACE
216 ; TO 40 BYTES AND DEFINE SYMBOL .PAT..
217 ; 003 18-AUG-77 R. BELANGER DIFFERENTIATE BETWEEN DTE-20
218 ; BUS TIMEOUTS AND OTHERS
219 ; 004 28-AUG-77 R. BELANGER LOAD CRASH CODE INTO 0 AND 2
220 ;
221 ; MACRO CALLS
222 ;
223 .MCALL .CRASH,MFPS,$DEF,CALL
224 000000 $DEF
225 ;
226 ; EQUATED SYMBOLS:
227 ;
228 000040 PATSIZ==40 ; +++002 SIZE OF PATCH SPACE
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 5
TRAP VECTORS
230 .SBTTL TRAP VECTORS
231 ;
232 ; MACRO FOR GENERATING LOW CORE
233 ;
234 .MACRO PSW PRI,TRPADR,UNIT
235 .IF B,<TRPADR>
236 .WORD .-LOWCOD+1
237 .IFF
238 .WORD TRPADR
239 .ENDC ; IFB <TRPADR>
240 .IF B,<UNIT>
241 .WORD 0+<40*PRI>+4000
242 .IFF
243 .WORD UNIT+<40*PRI>+4000
244 .ENDC ; IFB <UNIT>
245 .ENDM ; PSW
246 ;
247 000000' LOWCOD==.
248 000000 PSW 6 ;ILLEGAL INTERRUPT
000000 000001 .WORD .-LOWCOD+1
000002 004300 .WORD 0+<40*6>+4000
249 000004 PSW 7,COMTRP,0 ;TRAP TO 4 (TIMOUT)
000004 001000' .WORD COMTRP
000006 004340 .WORD 0+<40*7>+4000
250 000010 PSW 7,COMTRP,2 ;RESERVED INSTRUCTION
000010 001000' .WORD COMTRP
000012 004342 .WORD 2+<40*7>+4000
251 000014 PSW 6,COMTRP,4 ;T BIT OR BPT TRAP
000014 001000' .WORD COMTRP
000016 004304 .WORD 4+<40*6>+4000
252 000020 PSW 6,COMTRP,6 ;IOT TRAP
000020 001000' .WORD COMTRP
000022 004306 .WORD 6+<40*6>+4000
253 000024 PSW 7,.PWRDN ;POWER FAIL (POWER DOWN)
000024 007006' .WORD .PWRDN
000026 004340 .WORD 0+<40*7>+4000
254 000030 PSW 7,EMTTRP,STXDX ;EMT TRAP
000030 002352' .WORD EMTTRP
000032 004340 .WORD STXDX+<40*7>+4000
255 000034 PSW 6,.DRSRN ;TRAP TRAP
000034 002666' .WORD .DRSRN
000036 004300 .WORD 0+<40*6>+4000
256 000004 .REPT 4
257 PSW 6 ;ILLEGAL INTERRUPTS
258 .ENDR
000040 000041 .WORD .-LOWCOD+1
000042 004300 .WORD 0+<40*6>+4000
000044 000045 .WORD .-LOWCOD+1
000046 004300 .WORD 0+<40*6>+4000
000050 000051 .WORD .-LOWCOD+1
000052 004300 .WORD 0+<40*6>+4000
000054 000055 .WORD .-LOWCOD+1
000056 004300 .WORD 0+<40*6>+4000
259 000060 PSW 6,$TTINP,0 ;TTY LINE 0 INPUT (CTY)
000060 026216' .WORD $TTINP
000062 004300 .WORD 0+<40*6>+4000
260 000064 PSW 6,$TTOUT,0 ;TTY LINE 0 OUTPUT (CTY)
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 5-1
TRAP VECTORS
000064 024530' .WORD $TTOUT
000066 004300 .WORD 0+<40*6>+4000
261 000002 .REPT 2.
262 PSW 6 ;ILLEGAL TRAPS
263 .ENDR
000070 000071 .WORD .-LOWCOD+1
000072 004300 .WORD 0+<40*6>+4000
000074 000075 .WORD .-LOWCOD+1
000076 004300 .WORD 0+<40*6>+4000
264 ;
265 000100 PSW 6,.KW11S ;CLOCK INTERRUPT
000100 025750' .WORD .KW11S
000102 004300 .WORD 0+<40*6>+4000
266 000002 .REPT 2
267 PSW 6
268 .ENDR
000104 000105 .WORD .-LOWCOD+1
000106 004300 .WORD 0+<40*6>+4000
000110 000111 .WORD .-LOWCOD+1
000112 004300 .WORD 0+<40*6>+4000
269 000114 PSW 7,.PARER ;PARITY ERROR
000114 001254' .WORD .PARER
000116 004340 .WORD 0+<40*7>+4000
270 000017 .REPT 15.
271 PSW 6 ;EMERGENCY INTERRUPT
272 .ENDR
000120 000121 .WORD .-LOWCOD+1
000122 004300 .WORD 0+<40*6>+4000
000124 000125 .WORD .-LOWCOD+1
000126 004300 .WORD 0+<40*6>+4000
000130 000131 .WORD .-LOWCOD+1
000132 004300 .WORD 0+<40*6>+4000
000134 000135 .WORD .-LOWCOD+1
000136 004300 .WORD 0+<40*6>+4000
000140 000141 .WORD .-LOWCOD+1
000142 004300 .WORD 0+<40*6>+4000
000144 000145 .WORD .-LOWCOD+1
000146 004300 .WORD 0+<40*6>+4000
000150 000151 .WORD .-LOWCOD+1
000152 004300 .WORD 0+<40*6>+4000
000154 000155 .WORD .-LOWCOD+1
000156 004300 .WORD 0+<40*6>+4000
000160 000161 .WORD .-LOWCOD+1
000162 004300 .WORD 0+<40*6>+4000
000164 000165 .WORD .-LOWCOD+1
000166 004300 .WORD 0+<40*6>+4000
000170 000171 .WORD .-LOWCOD+1
000172 004300 .WORD 0+<40*6>+4000
000174 000175 .WORD .-LOWCOD+1
000176 004300 .WORD 0+<40*6>+4000
000200 000201 .WORD .-LOWCOD+1
000202 004300 .WORD 0+<40*6>+4000
000204 000205 .WORD .-LOWCOD+1
000206 004300 .WORD 0+<40*6>+4000
000210 000211 .WORD .-LOWCOD+1
000212 004300 .WORD 0+<40*6>+4000
276 000214 PSW 6
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 5-2
TRAP VECTORS
000214 000215 .WORD .-LOWCOD+1
000216 004300 .WORD 0+<40*6>+4000
278 000002 .REPT 2.
279 PSW 6
280 .ENDR
000220 000221 .WORD .-LOWCOD+1
000222 004300 .WORD 0+<40*6>+4000
000224 000225 .WORD .-LOWCOD+1
000226 004300 .WORD 0+<40*6>+4000
281 000230 PSW 4,$CDINT
000230 000000G .WORD $CDINT
000232 004200 .WORD 0+<40*4>+4000
282 000004 .REPT 4.
283 PSW 6
284 .ENDR
000234 000235 .WORD .-LOWCOD+1
000236 004300 .WORD 0+<40*6>+4000
000240 000241 .WORD .-LOWCOD+1
000242 004300 .WORD 0+<40*6>+4000
000244 000245 .WORD .-LOWCOD+1
000246 004300 .WORD 0+<40*6>+4000
000250 000251 .WORD .-LOWCOD+1
000252 004300 .WORD 0+<40*6>+4000
285 000254 PSW 4,.DBINT
000254 000000G .WORD .DBINT
000256 004200 .WORD 0+<40*4>+4000
286 000260 PSW 6
000260 000261 .WORD .-LOWCOD+1
000262 004300 .WORD 0+<40*6>+4000
288 000264 PSW 6,$DXINT
000264 000000G .WORD $DXINT
000266 004300 .WORD 0+<40*6>+4000
292 000270 PSW 6
000270 000271 .WORD .-LOWCOD+1
000272 004300 .WORD 0+<40*6>+4000
293 000274 PSW 6
000274 000275 .WORD .-LOWCOD+1
000276 004300 .WORD 0+<40*6>+4000
294 000300 PSW 6,$TTINP,1 ; +++001 DL11E # 0 INPUT (KLINIK)
000300 026216' .WORD $TTINP
000302 004301 .WORD 1+<40*6>+4000
295 000304 PSW 6,$TTOUT,1 ; +++001 DL11E # 0 OUTPUT (KLINIK)
000304 024530' .WORD $TTOUT
000306 004301 .WORD 1+<40*6>+4000
296 000310 PSW 6
000310 000311 .WORD .-LOWCOD+1
000312 004300 .WORD 0+<40*6>+4000
297 000314 PSW 6
000314 000315 .WORD .-LOWCOD+1
000316 004300 .WORD 0+<40*6>+4000
298 .IRP .U,<0,1,2,3,4,5,6,7,10,11,12,13,14,15,16>
299 PSW 6,$DMINT,.U ;DM11-BB
300 PSW 6
301 PSW 6,$DHINP,.U ;DH11
302 PSW 6,$DHOUT,.U
303 .ENDM
000320 027506' .WORD $DMINT
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 5-3
TRAP VECTORS
000322 004300 .WORD 0+<40*6>+4000
000324 000325 .WORD .-LOWCOD+1
000326 004300 .WORD 0+<40*6>+4000
000330 025754' .WORD $DHINP
000332 004300 .WORD 0+<40*6>+4000
000334 024126' .WORD $DHOUT
000336 004300 .WORD 0+<40*6>+4000
000340 027506' .WORD $DMINT
000342 004301 .WORD 1+<40*6>+4000
000344 000345 .WORD .-LOWCOD+1
000346 004300 .WORD 0+<40*6>+4000
000350 025754' .WORD $DHINP
000352 004301 .WORD 1+<40*6>+4000
000354 024126' .WORD $DHOUT
000356 004301 .WORD 1+<40*6>+4000
000360 027506' .WORD $DMINT
000362 004302 .WORD 2+<40*6>+4000
000364 000365 .WORD .-LOWCOD+1
000366 004300 .WORD 0+<40*6>+4000
000370 025754' .WORD $DHINP
000372 004302 .WORD 2+<40*6>+4000
000374 024126' .WORD $DHOUT
000376 004302 .WORD 2+<40*6>+4000
000400 027506' .WORD $DMINT
000402 004303 .WORD 3+<40*6>+4000
000404 000405 .WORD .-LOWCOD+1
000406 004300 .WORD 0+<40*6>+4000
000410 025754' .WORD $DHINP
000412 004303 .WORD 3+<40*6>+4000
000414 024126' .WORD $DHOUT
000416 004303 .WORD 3+<40*6>+4000
000420 027506' .WORD $DMINT
000422 004304 .WORD 4+<40*6>+4000
000424 000425 .WORD .-LOWCOD+1
000426 004300 .WORD 0+<40*6>+4000
000430 025754' .WORD $DHINP
000432 004304 .WORD 4+<40*6>+4000
000434 024126' .WORD $DHOUT
000436 004304 .WORD 4+<40*6>+4000
000440 027506' .WORD $DMINT
000442 004305 .WORD 5+<40*6>+4000
000444 000445 .WORD .-LOWCOD+1
000446 004300 .WORD 0+<40*6>+4000
000450 025754' .WORD $DHINP
000452 004305 .WORD 5+<40*6>+4000
000454 024126' .WORD $DHOUT
000456 004305 .WORD 5+<40*6>+4000
000460 027506' .WORD $DMINT
000462 004306 .WORD 6+<40*6>+4000
000464 000465 .WORD .-LOWCOD+1
000466 004300 .WORD 0+<40*6>+4000
000470 025754' .WORD $DHINP
000472 004306 .WORD 6+<40*6>+4000
000474 024126' .WORD $DHOUT
000476 004306 .WORD 6+<40*6>+4000
000500 027506' .WORD $DMINT
000502 004307 .WORD 7+<40*6>+4000
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 5-4
TRAP VECTORS
000504 000505 .WORD .-LOWCOD+1
000506 004300 .WORD 0+<40*6>+4000
000510 025754' .WORD $DHINP
000512 004307 .WORD 7+<40*6>+4000
000514 024126' .WORD $DHOUT
000516 004307 .WORD 7+<40*6>+4000
000520 027506' .WORD $DMINT
000522 004310 .WORD 10+<40*6>+4000
000524 000525 .WORD .-LOWCOD+1
000526 004300 .WORD 0+<40*6>+4000
000530 025754' .WORD $DHINP
000532 004310 .WORD 10+<40*6>+4000
000534 024126' .WORD $DHOUT
000536 004310 .WORD 10+<40*6>+4000
000540 027506' .WORD $DMINT
000542 004311 .WORD 11+<40*6>+4000
000544 000545 .WORD .-LOWCOD+1
000546 004300 .WORD 0+<40*6>+4000
000550 025754' .WORD $DHINP
000552 004311 .WORD 11+<40*6>+4000
000554 024126' .WORD $DHOUT
000556 004311 .WORD 11+<40*6>+4000
000560 027506' .WORD $DMINT
000562 004312 .WORD 12+<40*6>+4000
000564 000565 .WORD .-LOWCOD+1
000566 004300 .WORD 0+<40*6>+4000
000570 025754' .WORD $DHINP
000572 004312 .WORD 12+<40*6>+4000
000574 024126' .WORD $DHOUT
000576 004312 .WORD 12+<40*6>+4000
000600 027506' .WORD $DMINT
000602 004313 .WORD 13+<40*6>+4000
000604 000605 .WORD .-LOWCOD+1
000606 004300 .WORD 0+<40*6>+4000
000610 025754' .WORD $DHINP
000612 004313 .WORD 13+<40*6>+4000
000614 024126' .WORD $DHOUT
000616 004313 .WORD 13+<40*6>+4000
000620 027506' .WORD $DMINT
000622 004314 .WORD 14+<40*6>+4000
000624 000625 .WORD .-LOWCOD+1
000626 004300 .WORD 0+<40*6>+4000
000630 025754' .WORD $DHINP
000632 004314 .WORD 14+<40*6>+4000
000634 024126' .WORD $DHOUT
000636 004314 .WORD 14+<40*6>+4000
000640 027506' .WORD $DMINT
000642 004315 .WORD 15+<40*6>+4000
000644 000645 .WORD .-LOWCOD+1
000646 004300 .WORD 0+<40*6>+4000
000650 025754' .WORD $DHINP
000652 004315 .WORD 15+<40*6>+4000
000654 024126' .WORD $DHOUT
000656 004315 .WORD 15+<40*6>+4000
000660 027506' .WORD $DMINT
000662 004316 .WORD 16+<40*6>+4000
000664 000665 .WORD .-LOWCOD+1
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 5-5
TRAP VECTORS
000666 004300 .WORD 0+<40*6>+4000
000670 025754' .WORD $DHINP
000672 004316 .WORD 16+<40*6>+4000
000674 024126' .WORD $DHOUT
000676 004316 .WORD 16+<40*6>+4000
304 000004 .REPT 4.
305 PSW 6
306 .ENDR
000700 000701 .WORD .-LOWCOD+1
000702 004300 .WORD 0+<40*6>+4000
000704 000705 .WORD .-LOWCOD+1
000706 004300 .WORD 0+<40*6>+4000
000710 000711 .WORD .-LOWCOD+1
000712 004300 .WORD 0+<40*6>+4000
000714 000715 .WORD .-LOWCOD+1
000716 004300 .WORD 0+<40*6>+4000
307 000720 PSW 6,$TTINP,4 ; +++001 DL11E # 3 INPUT (DN20 #2)
000720 026216' .WORD $TTINP
000722 004304 .WORD 4+<40*6>+4000
308 000724 PSW 6,$TTOUT,4 ; +++001 DL11E # 3 OUTPUT (DN20 #2)
000724 024530' .WORD $TTOUT
000726 004304 .WORD 4+<40*6>+4000
309 000730 PSW 6,$TTINP,3 ; +++001 DL11E # 2 INPUT (DN20 #1)
000730 026216' .WORD $TTINP
000732 004303 .WORD 3+<40*6>+4000
310 000734 PSW 6,$TTOUT,3 ; +++001 DL11E # 2 OUTPUT (DN20 #1)
000734 024530' .WORD $TTOUT
000736 004303 .WORD 3+<40*6>+4000
311 000740 PSW 6,$TTINP,2 ; +++001 DL11E # 1 INPUT (DN20 #0)
000740 026216' .WORD $TTINP
000742 004302 .WORD 2+<40*6>+4000
312 000744 PSW 6,$TTOUT,2 ; +++001 DL11E # 1 OUTPUT (DN20 #0)
000744 024530' .WORD $TTOUT
000746 004302 .WORD 2+<40*6>+4000
314 000750 PSW 4,$LPINT,1
000750 000000G .WORD $LPINT
000752 004201 .WORD 1+<40*4>+4000
315 000754 PSW 4,$LPINT,0
000754 000000G .WORD $LPINT
000756 004200 .WORD 0+<40*4>+4000
320 000004 .REPT 4
321 PSW 7,.DTINT ;DTE0 INTERRUPT VECTOR
322 .ENDR
000760 020126' .WORD .DTINT
000762 004340 .WORD 0+<40*7>+4000
000764 020126' .WORD .DTINT
000766 004340 .WORD 0+<40*7>+4000
000770 020126' .WORD .DTINT
000772 004340 .WORD 0+<40*7>+4000
000774 020126' .WORD .DTINT
000776 004340 .WORD 0+<40*7>+4000
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 6
TRAP SERVICE FOR COMMON PROGRAM TRAPS
324 .SBTTL TRAP SERVICE FOR COMMON PROGRAM TRAPS
325 ;
326 ; TRAPS HANDLED HERE ARE:
327 ;
328 ; TRAP TO 4 (DEVICE OR MEMORY TIMEOUT AND 11 CATCH ALL)
329 ; TRAP TO 10 (ILLEGAL INSTRUCTION)
330 ; T-BIT AND BPT TRAPS
331 ; IOT INSTRUCTION
332 ; TRAP INSTRUCTION
333 ;
334 ; ILLEGAL INTERRUPTS TRAP HERE. THEY ARE DETERMINED
335 ; BY PLACING AN ODD ADDRESS IN UNUSED TRAP VECTORS
336 ; WHEN THE PROCESSOR TRAPS TO AN ILLEGAL TRAP VECTOR IT WIL
337 ; PUT THE ILLEGAL (ODD) ADDRESS IN THE PC AND TRAP TO 4
338 ; THIS WILL THEN ALLOW THE FIELD SERVICE PEOPLE TO
339 ; DETERMINE WHAT LOCATION THE PROCESSOR HAS PICKED
340 ; TO DO AN ILLEGAL TRAP
341 ;
342 ;
343 ; GENERALLY THESE TRAPS LIKE THE OTHERS THAT TRAP TO UN ATTACHED
344 ; TRAP VECTORS ARE FATAL. THESE HAVE BEEN SEPARATED OUT
345 ; BECAUSE THEY ARE PROBABLY PROGRAM ERRORS AND NOT
346 ; HARDWARE ERRORS. IT IS POSSIBLE THAT IF THESE ARE
347 ; SEPARATED FROM HARDWARE TRAPS THAT IT WILL BE POSSIBLE
348 ; TO PROVIDE SOME PROGRAM DEBUGGING BY IDENTIFICATION OF
349 ; THESE SPECIFIC TYPES.
350 ;
351 ; HARDWARE/SOFTWARE ERROR TRAPS HANDLED HERE ARE:
352 ;
353 ; TRAP TO UNASSIGNED TRAP VECTOR
354 ; PARITY ERROR
355 ;
356 ;
357 .ENABL LSB
358 001000 COMTRP:
359 001000 013737 177776 031202' MOV PS,TRPASV ;SAVE THE COMTRP PS
360 001006 042737 177760 031202' BIC #177760,TRPASV ;MASK OFF PRIORITY BITS
361 001014 022706 001000 CMP #1000,SP ;LEGAL STACK?
362 001020 103403 BLO 10$ ;YES -- NOT RED VIOLATION
363 001022 012706 040370' MOV #EMGSTK,SP ;NO -- BETTER RESCUE STACK
364 001026 000450 BR 30$ ;THEN CRASH SYSTEM
365 ;
366 001030 10$:
367 001030 010546 MOV R5,-(SP)
368 001032 032766 000340 000004 BIT #340,4(SP) ;EXEC?
369 001040 001043 BNE 30$ ;YES -- CRASH
370 ;FIND THE TRAP VECTOR
371 001042 013705 031110' MOV .CRTSK,R5 ;FIND THE CURRENT TASK
372 001046 016505 000016 MOV A.TD(R5),R5 ;FIND STD POINTER
373 001052 016505 000030 MOV S.SS(R5),R5 ;FIND THE SST VECTOR
374 001056 001410 BEQ CMNABO ;NONE -- CRASH
375 001060 063705 031202' ADD TRPASV,R5 ;FIND WHICH VECTOR
376 001064 MFPS @R5,R5 ;FIND THE ADDRESS
001064 011505 MOV @R5,R5
377 001066 001404 BEQ CMNABO ;NONE FOUND -QUIT
378 001070 012637 031200' MOV (SP)+,EMTSTK ;SAVE R5 FOR COMMON TRAP
379 001074 000137 002642' JMP .SSTCO
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 6-1
TRAP SERVICE FOR COMMON PROGRAM TRAPS
380 ;
381 001100 CMNABO::
382 001100 013705 031110' MOV .CRTSK,R5 ;FIND THE CURRENT TASK
383 001104 013765 031202' 000024 MOV TRPASV,A.FM+0(R5) ;SET THE REASON FOR ABORT
384 001112 112765 000004 000014 MOVB #TS.TKN,A.TS(R5) ;SET TASK STATUS TO ABORT
385 001120 005237 031232' INC .TKTN ;SET TKTN FLAG
386 001124 026527 000006 033436' CMP A.PD(R5),#F11TPD ;FILES 11 TPD?
387 001132 001003 BNE 20$ ;NO -- TKTN WILL WORK
388 001134 .CRASH FTA ;YES -- CAN'T GET TKTN IN
001134 000004 IOT
001136 106 124 101 .ASCIZ /FTA/
001141 000
389 ;
390 001142 TRPXIT: ; +++003
391 001142 20$:
392 001142 012605 MOV (SP)+,R5 ;RESTORE R5
393 001144 000137 004146' JMP ..INTX ;RETURN
394 ;
395 ;
396 001150 30$:
397 001150 013705 031202' MOV TRPASV,R5 ;DO COMMON CRASH PROCEDURE
398 001154 000175 001160' JMP @CRSTB(R5) ;CRASH
399 .DSABL LSB
400 ;
401 001160 CRSTB:
402 001160 001170' .WORD TRP4
403 001162 001240' .WORD RESERV
404 001164 001246' .WORD BPTTRP
405 001166 001304' .WORD IOTTRP
406 ;
407 001170 TRP4:
408 001170 012705 000004 MOV #4,R5 ; +++003 POINT TO TRAP VECTOR
409 001174 011546 MOV (R5),-(SP) ; +++003 SAVE IT
410 001176 012715 001216' MOV #10$,(R5) ; +++003 SET UP TEMPORARY VECTOR
411 001202 005777 030146 TST @.PRSTA ; +++003 WAS IT THE DTE20??
412 001206 012615 MOV (SP)+,(R5) ; +++003 NO -- OTHER BUS TIMEOUT
413 001210 .CRASH T04
001210 000004 IOT
001212 124 060 064 .ASCIZ /T04/
001215 000
414 ;
415 001216 10$: ; +++003 HERE ON DTE-20 BUS TIMEOUT
416 001216 022626 CMP (SP)+,(SP)+ ; +++003 GET RID OF SECOND TRAP PS, PC
417 001220 012615 MOV (SP)+,(R5) ; +++003 RESTORE TRAP VECTOR
418 001222 032737 004000 031114' BIT #EF.PFR,.COMEF+2 ; +++003 POWERFAIL IN PROGRESS??
419 001230 001344 BNE TRPXIT ; +++003 YES -- IGNORE TRAP
420 001232 .CRASH DTD ; +++003 NO -- DTE20 IS DEAD
001232 000004 IOT
001234 104 124 104 .ASCIZ /DTD/
001237 000
421 ;
422 001240 RESERV:
423 001240 .CRASH RES
001240 000004 IOT
001242 122 105 123 .ASCIZ /RES/
001245 000
424 ;
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 6-2
TRAP SERVICE FOR COMMON PROGRAM TRAPS
425 001246 BPTTRP:
426 001246 .CRASH TBT
001246 000004 IOT
001250 124 102 124 .ASCIZ /TBT/
001253 000
427 ;
428 001254 .PARER:
429 001254 012700 172100 MOV #.PARRG,R0 ;SET UP POINTER TO REGISTERS
430 001260 012737 001276' 000004 MOV #20$,@#4 ;SET UP TO POINT TO CRASH MESSAGE ON NXM
431 001266 012701 040372' MOV #PARSAV,R1 ;SET UP SAVE AREA POINTER
432 001272 10$:
433 001272 012021 MOV (R0)+,(R1)+
434 001274 000776 BR 10$
435 ;
436 001276 20$:
437 001276 .CRASH MPE ;MEMORY PARITY ERROR
001276 000004 IOT
001300 115 120 105 .ASCIZ /MPE/
001303 000
438 ;
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 7
CRASH ROUTINE
440 .SBTTL CRASH ROUTINE
441 ;
442 ; CRASH -- SUBROUTINE THAT WILL NOT RETURN TO SAVE THE
443 ; INFORMATION NECESSARY WHEN THE MACHINE ENTERS AN UNRECOVERABLE
444 ; STATE THAT REQUIRES RE-LOAD. CRASH ATTEMPTS TO SAVE ALL THE
445 ; VOLATILE REGISTERS THAT MIGHT BE NECESSARY TO DEBUG
446 ; THE SOFTWARE OR HARDWARE WHEN THE PDP-11 SYSTEM CRASHES.
447 ;
448 001304 IOTTRP:
449 ;RESTORE R5 FOR TRACE
450 001304 016605 000002 MOV 2(SP),R5
451 001310 010637 040370' MOV SP,SPSAV ;SAVE SP
452 001314 012706 040370' MOV #EMGSTK,SP ;SET UP THE EMERGENCY STACK POINTER
453 001320 010546 MOV R5,-(SP)
454 001322 012705 001510' MOV #CMSG,R5 ;SET UP THE CRASH MESSAGE POINTER
455 001326 CALL 20$ ; +++002 PRINT THE MESSAGE
001326 004737 001442' JSR PC,20$
456 001332 011605 MOV (SP),R5 ; +++004 CRASH CODE POINTER TO R5
457 001334 010446 MOV R4,-(SP) ; +++004 SAVE R4
458 001336 005004 CLR R4 ; +++004 CLEAR R4
459 001340 012524 MOV (R5)+,(R4)+ ; +++004 SAVE THE CRASH CODE
460 001342 011524 MOV (R5),(R4)+ ; +++004
461 001344 013705 040372' MOV PARSAV,R5 ; +++004 GET PARITY ERROR DATA
462 001350 006205 ASR R5 ; +++004 POSITION IT
463 001352 006205 ASR R5 ; +++004
464 001354 006205 ASR R5 ; +++004
465 001356 006205 ASR R5 ; +++004
466 001360 006205 ASR R5 ; +++004
467 001362 150544 BISB R5,-(R4) ; +++004 SAVE IT IN HIGH BYTE
468 001364 012604 MOV (SP)+,R4 ; +++004 RESTORE REGISTERS
469 001366 012605 MOV (SP)+,R5 ; +++002 CRASH CODE POINTER TO R5
470 001370 CALL 20$ ; +++002 PRINT THE CRASH CODE
001370 004737 001442' JSR PC,20$
471 001374 10$:
472 001374 012737 000006 000004 MOV #6,@#4 ;FORCE AN EARLY HALT IF NXM
473 001402 005037 000006 CLR @#6
474 001406 013705 031356' MOV .PRDTE,R5 ;FIND DTE20
475 001412 062705 000006 ADD #6,R5 ;POINT TO DEXWD1
476 001416 012725 000004 MOV #LOAD11,(R5)+
477 001422 012725 010000 MOV #DEP,(R5)+
478 001426 012725 000022 MOV #22,(R5)+ ;REQUEST RELOAD
479 001432 012777 000400 027714 MOV #TO10DB,@.PRSTA ;RING BELL
480 001440 000755 BR 10$
481 ;
482 001442 20$: ; +++002
483 001442 105737 031342' TSTB .KLNSW+0 ; +++002 IS KLINIK ACTIVE??
484 001446 003402 BLE 30$ ; +++002 NOT THAT WE CARE...
485 001450 111537 175616 MOVB (R5),@#PRB1 ; +++002 YES -- PRINT A CHARACTER ON KLINIK LINE
486 001454 30$: ; +++002
487 001454 112537 177566 MOVB (R5)+,@#PRB0 ; +++002 PRINT THE SAME CHARACTER ON THE CTY
488 001460 40$: ; +++002
489 001460 105737 177564 TSTB @#PRS0 ; +++002 IS THE CTY DONE???
490 001464 100375 BPL 40$ ; +++002 NO -- WAIT SOME MORE
491 001466 105737 031342' TSTB .KLNSW+0 ; +++002 YES -- IS KLINIK ACTIVE??
492 001472 003403 BLE 50$ ; +++002 NO -- NOT THAT WE CARE...
493 001474 105737 175614 TSTB @#PRS1 ; +++002 YES -- IS THE KLINIK LINE FINISHED??
494 001500 100367 BPL 40$ ; +++002 NO -- WAIT SOME MORE
LC -- LOW CORE FOR RSX20F MACRO M1108 16-DEC-77 11:28 PAGE 7-1
CRASH ROUTINE
495 001502 50$: ; +++002
496 001502 105715 TSTB (R5) ; +++002 IS THE MESSAGE DONE??
497 001504 001356 BNE 20$ ; +++002 NO -- CONTINUE THE MESSAGE
498 001506 RETURN ; +++002 YES -- RETURN TO CALLER
001506 000207 RTS PC
499 ;
500 ;
501 ;
502 ; AFTER THE SYSTEM HALTS THE PDP-10 WILL EVENTUALLY REALIZE
503 ; THAT THE PDP11 HAS CRASHED AND ATTEMPT TO
504 ; RELOAD IT.
505 ;
506 ;
507 001510 CMSG:
508 001510 015 012 061 .ASCIZ <15><12>"11-HALT"<15><12>
001513 061 055 110
001516 101 114 124
001521 015 012 000
509 .EVEN
510 ;
511 ; THE FOLLOWING AREA CAN BE USED IN TWO WAYS:
512 ;
513 ; 1) IF THE EXEC IS MODIFIED, THE ADDRESS OF "SCOMM" MIGHT CHANGE,
514 ; WHICH WOULD REQUIRE REBUILDING ALL THE PRIVLEDGED TASKS. THIS
515 ; AREA CAN BE USED TO ADJUST THE "SCOMM" ADDRESSES TO CORRESPOND TO
516 ; THEIR PREVIOUS ADDRESSES SO THAT REBUILDING DOES NOT HAVE TO OCCUR.
517 ;
518 ; 2) THIS AREA IS ALSO AVAILABLE FOR PATCH SPACE
519 ;
520 001524 .PAT..:: ; +++002 PATCH SPACE
521 ; +++002 THIS AREA MUST NEVER EXCEED 40 BYTES
522 .BLKB PATSIZ ; +++002
523 .TITLE SCH - TASK SCHEDULER & GLOBAL DEFS
524 .SBTTL EXEC MODULE ONE -- TITLE PAGE
525 001564 IDENT$ 10,10,RSX$$F
.IDENT /B10100/
526 ;
527 ;
528 ;
529 ;
530 ;
531 ;
532 ; COPYRIGHT (C) 1975, 1978 BY
533 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
534 ;
535 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
536 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
537 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
538 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
539 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
540 ;
541 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
542 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
543 ; CORPORATION.
544 ;
545 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
546 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 7-2
EXEC MODULE ONE -- TITLE PAGE
547 ;
548 ;
549 ;
550 ;
551 ;
552 ; MODULE: EXEC MODULE ONE
553 ;
554 ; VERSION: 10-10
555 ;
556 ; AUTHOR: R. MCLEAN
557 ;
558 ; DATE: 19 MAR 75
559 ;
560 ;
561 ; THIS MODULE CONTAINS:
562 ;
563 ; 1 -- SYSTEM NOTES,
564 ; 2 -- GLOSSARY,
565 ; 3 -- SYMBOLIC DEFINITIONS,
566 ; 4 -- NUL TASK.
567 ;
568 ; MODIFICATIONS:
569 ;
570 ; NO. DATE PROGRAMMER PURPOSE
571 ; --- ---- ---------- -------
572 ; 001 18-OCT-76 A. PECKHAM ADDITIONAL .KLIWD FLAGS
573 ; 002 20-OCT-76 A. PECKHAM FIX FOR F11 PARTITION
574 ; LOAD REQUEST FAILURE.
575 ; 003 03-FEB-77 R. BELANGER CHANGED KLR EVENT FLAG
576 ; ADDED KLD EVENT FLAG
577 ; 004 04-MAR-77 R. BELANGER ADDED CODE IN NULL TASK
578 ; TO INVOKE TIME OF DAY TASK
579 ; 005 07-MAR-77 A. PECKHAM REMOVE BUG FROM DOWN MESSAGE CODE.
580 ; 006 01-JUL-77 R. BELANGER ADD KLINIK EVENT LOGGING CODES.
581 ; 007 18-AUG-77 R. BELANGER ADD POWER RESTART IN PROGRESS FLAG
582 ; 008 05-OCT-77 R. BELANGER ADD COMM REGION INVALID FLAG
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 8
EXEC MODULE ONE -- SYSTEM NOTES
584 .SBTTL EXEC MODULE ONE -- SYSTEM NOTES
585 ;+
586 ; PROCESSOR PRIORITIES
587 ;
588 ; PERIPHERIAL DEVICE INTERRUPT SERVICE ROUTINES RUN AT PROCESSOR PRIORITY
589 ; LEVELS FOUR THRU SEVEN (4-7). ALSO, PARTS OF THE SOFTWARE THAT CANNOT BE
590 ; INTERRUPTED ARE ALSO RUN AT PRIORITY SEVEN (PRI=7). THESE UNINTERRUPTABLE
591 ; PERIODS ARE AS SHORT AS POSSIBLE.
592 ;
593 ; PRIORITY LEVELS ZERO THRU THREE (0-3) ARE USED BY THE SYSTEM AS OPERATION
594 ; INDICATORS. I.E., THERE ARE NO "SOFTWARE INTERRUPTS", AND THEREFORE, THERE
595 ; IS NO PRECEDENCE IMPLIED (OR ENVOKED) BY LEVELS ZERO THRU THREE.
596 ;
597 ; LEVEL ZERO (PRI=0) IS USED EXCLUSIVELY FOR TASK EXECUTION.
598 ;
599 ; LEVELS ONE, TWO, AND THREE ARE USED FOR "SYSTEM LEVEL" EXECUTION.
600 ;
601 ; LEVEL TWO (PRI=2) IS USED FOR THE RECOGNITION OF "SYSTEM EVENTS".
602 ; THESE EVENTS ARE INDICATED IN THE "SYSTEM EVENT RECOGNITION" FLAG
603 ; '.SERFG' AND ARE RECOGNIZED (SERVICED) ONLY WHEN RETURNING TO
604 ; TASK EXECUTION (VIZ., FROM AN INTERRUPT, OR FROM A DIRECTIVE).
605 ; SYSTEM EVENTS ARE (1) SIGNIFICANT EVENT DECLARATIONS, (2) CLOCK
606 ; TICKS, AND (3) POWER FAILURE RECOVERIES.
607 ;
608 ; LEVEL THREE (PRI=3) IS USED FOR EXECUTION OF ROUTINES WHICH CANNOT BE
609 ; INTERRUPTED BY SIGNIFICANT-EVENT OR CLOCK-TICK RECOGNITION, BUT CAN BE
610 ; INTERRUPTED BY PERIPHERIAL DEVICE INTERRUPTS
611 ; IN THESE CASES, THE LEVEL
612 ; MAY BE SET TO THREE BY ANY MEANS, BUT MUST BE LOWERED TO ZERO BY
613 ; TRANSFERRING CONTROL TO '..INTX' TO ALLOW RECOGNITION OF "SYSTEM
614 ; EVENTS THAT MIGHT HAVE OCCURED WHILE RUNNING AT PRI=3.
615 ; THE SYSTEM TRACE (DEBUGGING) ROUTINE RUNS AT PRI=7.
616 ;
617 ;
618 ;
619 ; FORMAT OF PROCESSOR STATUS (PS) WORD
620 ;
621 ; C CPP RXX XLL LTN ZVC
622 ;
623 ; CC CURRENT MODE (00:KERNEL, 11:USER)
624 ; PP PREVIOUS MODE (00:KERNEL, 11:USER)
625 ; R REGISTER CLEAR (BIT ALWAYS CLEAR)
626 ; XXX UNUSED BITS
627 ; LLL PROCESSOR PRIORITY LEVEL
628 ; T TRACE BIT
629 ; N CONDITION CODE -- NEGATIVE
630 ; Z CONDITION CODE -- ZERO
631 ; V CONDITION CODE -- OVERFLOW
632 ; C CONDITION CODE -- CARRY
633 ;
634 ; KEY TEXT IN THIS LISTING IS DELIMITED BY LINES CONATINING A ";+" AND A ";-"
635 ; AS THE FIRST TWO CHARACTERS OF A SOURCE LINE. A ";+" LINE DEFINES THE
636 ; BEGINNING OF A BLOCK OF KEY TEXT, AND A ";-" LINE DEFINES THE END.
637 ;-
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 9
EXEC MODULE ONE -- GLOSSARY
639 .SBTTL EXEC MODULE ONE -- GLOSSARY
640 ;+
641 ;
642 ;
643 ; ATL -- ACTIVE TASK LIST
644 ;
645 ; CKL -- CLOCK LIST
646 ;
647 ; DTL -- DTE20 LIST
648 ;
649 ; MRL -- MEMORY REQUEST LIST
650 ;
651 ; PUD -- PHYSICAL UNIT DEVICE TABLE
652 ;
653 ; DEQUE -- DOUBLE ENDED QUEUE. FORWARD AND BACKWARD CIRCULAR LINKAGES.
654 ;
655 ; EXTERNAL PAGE -- 4K PAGE OF REAL MEMORY SPACE (760000-777776) CONTAINING
656 ; CPU & PERIPHERIAL DEVICE CONTROL & STATUS REGISTERS (THE DEVICE PAGE).
657 ;
658 ; ISR -- INTERRUPT SERVICE ROUTINE
659 ;
660 ;
661 ; STD -- SYSTEM TASK DIRECTORY
662 ;-
663
664 .SBTTL MACRO CALLS (MCALL)
665
669 .MCALL .ENB0,.INH0,.ENB6,.INH6,.INH,.ENB,.INH5,.ENB5,.CRASH,RQST$
670 .MCALL DIR$,CLEF$S,QIOW$,WTSE$,WTSE$S,.STKM,$DEF
671 .MCALL CALL,RETURN,DTON$S,MFPS,MTPS,MTPI,MFPI,.DQPEN,DECL$S,CMKT$S
672 .MCALL MRKT$,WTLO$,WSIG$S,WTLO$C,CLEF$C,QIOSY$,MRKT$S
673 001564 QIOSY$
674 001564 $DEF
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 10
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
676 .SBTTL EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
677 ;
678 ; EXTERNAL PAGE DEFINITIONS
679 ;
680 177776 PS==177776 ;PROCESSOR STATUS WORD
681 177546 LKS==177546 ;KW11L CLOCK
682 177560 KBS0==177560 ;CTY TTY
683 177562 KBB0==177562 ;CTY BUFFER (INPUT)
684 177564 PRS0==177564 ;CTY OUTPUT STATUS
685 177566 PRB0==177566 ;CTY OUTPUT BUFFER
686 175610 KBS1==175610
687 175612 KBB1==175612
688 175614 PRS1==175614
689 175616 PRB1==175616
690 173000 .BM873==173000 ;START OF BOOTSTRAP
691 172100 .PARRG==172100 ;PARITY ERROR REGISTER 0
692 ;
693 000340 PR7==340 ;PRIORITY 7
694 000340 PRI7==340
695 000100 .INTEN==000100 ;INTERRUPT ENABLE BIT
696 ;
697 172360 KPAR0=172360 ;KERNEL PAGE ADDRESS REG 0
698 172362 KPAR1=172362 ;REG 1
699 172364 KPAR2=172364 ;REG 2
700 172366 KPAR3=172366 ;REG 3
701 172370 KPAR4=172370 ;REG 4
702 172372 KPAR5=172372 ;REG 5
703 172374 KPAR6=172374 ;REG 6
704 172376 KPAR7=172376 ;REG 7
705 ;
706 172300 KPDR0=172300 ;KERNEL PAGE DESCRIPTOR REGISTER 0
707 172302 KPDR1=172302 ;REG 1
708 172304 KPDR2=172304 ;REG 2
709 172306 KPDR3=172306 ;REG 6
710 172310 KPDR4=172310 ;REG 4
711 172312 KPDR5=172312 ;REG 5
712 172314 KPDR6=172314 ;REG 6
713 172316 KPDR7=172316 ;REG 7
714 ;
715 177640 UPAR0=177640 ;USER PAGE ADDRESS REG 0
716 177642 UPAR1=177642 ;REG 1
717 177644 UPAR2=177644 ;REG 2
718 177646 UPAR3=177646 ;REG 3
719 177650 UPAR4=177650 ;REG 4
720 177652 UPAR5=177652 ;RRG 5
721 177654 UPAR6=177654 ;REG 6
722 177656 UPAR7=177656 ;REG 7
723 ;
724 177600 UPDR0=177600 ;USER PAGE DESCRIPTOR REG 0
725 177602 UPDR1=177602 ;REG 1
726 177604 UPDR2=177604 ;REG 2
727 177606 UPDR3=177606 ;REG 3
728 177610 UPDR4=177610 ;REG 4
729 177612 UPDR5=177612 ;REG 5
730 177614 UPDR6=177614 ;REG 6
731 177616 UPDR7=177616 ;REG 7
732 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 10-1
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
733 000046 $DSW==46 ;DIRECTIVE STATUS WORD
734 000050 .FSRPT==50 ;FCS POINTER
735 000054 N.OVPT==54 ;FCP OVERLAY POINTER
736 ;
737 ;
738 ; SYSTEM TRACE (T-BIT) DEBUGGING AID CONDITIONAL DEFINITIONS
739 ;
740 000020 TBIT==20 ;TRACE BIT IN PS
741 ;
742 000000 STXAS==0 ;SIGNIFICANT EVENT RECOGNITION (ATL SCAN) TRACE SWITCH
743 000000 STXCS==0 ;CLOCK TICK RECOGNITION TRACE SWITCH
744 000000 STXDX==0 ;DIRECTIVE EXECUTION TRACE SWITCH
745 ;
746 ; PRIVLEDGED TASK EVENT FLAG BIT MASKS
747 ;
748 000001 EF.DTE==1 ;EVENT FLAG FOR DTE20 DOORBELL (UNUSED)
749 000001 E.DTE==1.
750 000002 EF.CLK==2 ;EVENT FLAG FOR CLOCK (UNUSED)
751 000002 E.CLK==2.
752 000004 EF.TTY==4 ;EVENT FLAG FOR TTY INPUT COMPLETE (UNUSED)
753 000003 E.TTY==3.
754 000010 EF.NIR==10 ;EVENT FLAG TO SIGNAL QIO REQUEST ENTERED (DRIVERS)
755 000004 E.NIR==4.
756 000020 EF.IOD==20 ;EVENT FLAG TO SIGNAL QIO REQUEST DONE (DRIVERS)
757 000005 E.IOD==5.
758 000040 EF.BOV==40 ;EVENT FLAG TO SIGNAL NOT ENOUGH NODE SPACE (UNUSED)
759 000006 E.BOV==6.
760 000100 EF.TMO==100 ;EVENT FLAG TO SIGNAL TIMOUT REQUEST FOR TTY (TTYDRR & SCOMM)
761 000007 E.TMO==7.
762 000200 EF.RQM==200 ;REQUEST MCR (TTYDRR)
763 000010 E.RQM==8.
764 000400 EF.WFM==400 ;WAIT FOR MARK TIME (UNUSED)
765 000011 E.WFM==9.
766 001000 EF.RKR==1000 ; +++003 REQUEST KLINIK RING SERVICE (TTYDRR)
767 000012 E.RKR==10. ; +++003
768 002000 EF.RKH==2000 ; +++003 REQUEST KLINIK HANG-UP SERVICE (TTYDRR)
769 000013 E.RKH==11. ; +++003
770 004000 EF.RSS==4000 ; +++009 REQUEST SETSPD FOR AUTOBAUD (TTYDRR)
771 000014 E.RSS==12. ; +++009
772 ;
773 ; RESERVED LOCAL EVENT FLAG BIT MASKS (25. - 32.)
774 ;
775 100000 EF.SND==100000 ;SEND ALL FINISHED
776 000040 E.FSND==32.
777 ;
778 ; RESERVED GLOBAL EVENT FLAG BIT MASKS (57. - 64.)
779 ;
780 100000 EF.CTC==100000 ;^C FLAG
781 000100 E.FCTC==64.
782 040000 EF.PR1==040000 ;PRIMARY PROTOCOL RUNNING FLAG
783 000077 E.FPR1==63.
784 020000 EF.PR2==020000 ;SECONDARY PROTOCOL RUNNING FLAG
785 000076 E.FPR2==62.
786 010000 EF.RKP==010000 ; +++003 KLINIK PARAMETERS RECIEVED (QPRDTE, SAVE)
787 000075 E.FRKP==61.
788 004000 EF.PFR==004000 ; +++007 POWER FAIL RESTART IN PROGRESS (SCOMM, KLINIT)
789 000074 E.FPFR==60.
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 10-2
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
790 002000 EF.CRI==002000 ; +++008 COMM REGION IS INVALID (BOOT, TKTN)
791 000073 E.FCRI==59.
792 ;
793 ; COMMON NODE DEFINITONS
794 ;
795 000000 N.FP==0 ;FORWARD POINTER
796 000002 N.BP==2 ;BACKWARD POINTER
797 000010 N.PR==10 ;PRIORITY BYTE
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 11
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
799 ; TPD -- TASK PARTITION DIRECTORY
800 ;
801 ; THE "TPD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PARTITION IN A
802 ; SYSTEM.
803 ; CONSISTING OF ENTRIES OF THE FOLLOWING FORMAT:
804 ;
805 000000 T.PN==00 ; WD. 00 (B 00) -- PARTITION NAME (FIRST HALF)
806 ; WD. 01 (B 02) -- PARTITION NAME (SECOND HALF)
807 000004 T.BA==04 ; WD. 02 (B 04) -- BASE ADDRESS OF PARTITION (IN BYTES)
808 000006 T.PZ==06 ; WD. 03 (B 06) -- SIZE OF PARTITION (IN BYTES)
809 000010 T.FW==10 ; WD. 04 (B 10) -- PARTITION FLAGS WORD
810 000012 T.HP==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADR OF FIRST HOLE, OR ZERO IF NO HOLES.
811 000014 T.RF==14 ; WD. 06 (B 14) -- MRL LISTHEAD (FORWARD LINKAGE)
812 000016 T.RB==16 ; WD. 07 (B 16) -- MRL LISTHEAD (BACKWARD LINKAGE)
813 ;
814 000020 T.SZ==20 ;SIZE (IN BYTES) OF TPD ENTRIES
815 ;
816 ;
817 ; FLAGS WORD BIT DEFINITIONS:
818 ;
819 000002 TF.OU==000002 ;[01] SET IF OCCUPIED USER CONTROLLED PARTITION.
820 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 12
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
822 ;
823 ; TASK HEADER DEFINITIONS
824 ;
825 000000 H.CSP==0 ;CURRENT STACK POINTER (UNUSED)
826 000002 H.HSZ==2 ;LENGTH OF HEADER
827 000046 H.DSW==46 ;DIRECTIVE STATUS WORD SAVE AREA
828 000050 H.FCP==50 ;FCP SAVE AREA
829 000052 H.FOR==52 ;FORTRAN SAVE AREA
830 000054 H.OVL==54 ;OVERLAY SAVE AREA
831 000074 H.IPS==74 ;INITIAL PS
832 000076 H.IPC==76 ;INITIAL PC
833 000100 H.ISP==100 ;INITIAL SP
834 000106 H.TKVA==106 ;TASK SST VECTOR ADDRESS
835 000130 H.LUT==130 ;LOGICAL UNIT TABLE SIZE
836 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 13
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
838 ;
839 ; STD -- SYSTEM TASK DIRECTORY
840 ;
841 ; THE SYSTEM TASK DIRECTORY IS A MEMORY RESIDENT DIRECTORY OF ALL TASKS
842 ; THAT HAVE BEEN INSTALLED INTO A SYSTEM THAT ARE NOT PREMANENTLY RESIDENT.
843 ; THIS DIRECTORY CONSISTS OF TWO
844 ; PARTS: (1) A FIXED SIZE AREA OF ONE WORD FOR EACH TASK THAT COULD
845 ; BE INSTALLED AT ANY TIME, AND (2) AN STD ENTRY FOR EACH TASK THAT IS
846 ; INSTALLED. THE FIXED SIZED AREA IS CALLED THE "ALPHA TABLE AREA", AND
847 ; PROVIDES SPACE FOR AN ALPHABETICALLY ORDERED CONTIGUOUS LIST POINTERS
848 ; TO STD ENTRIES (TO FACILLATE BINARY SEARCH FOR STD ENTRY BY TASK NAME).
849 ; EACH STD ENTRY IS OF THE FOLLOWING FORMAT:
850 ;
851 000000 S.TN==00 ; WD. 00 (B 00) -- TASK NAME (6 CHAR IN RADIX-50, 2 WORDS)
852 ; WD. 01 (B 02) -- (SECOND HALF OF TASK NAME)
853 000004 S.TD==04 ; WD. 02 (B 04) -- DEFAULT TASK PARTITION (TPD ADDRESS)
854 000006 S.FW==06 ; WD. 03 (B 06) -- FLAGS WORD
855 000010 S.DP==10 ; WD. 04 (B 10) -- DEFAULT PRIORITY (BYTE)
856 000011 S.DI==11 ; (B 11) -- SYSTEM DISK INDICATOR (BYTE)
857 000012 S.BA==12 ; WD. 05 (B 12) -- 1/64 TH OF BASE ADDRESS OF LOAD IMAGE
858 000014 S.LZ==14 ; WD. 06 (B 14) -- SIZE OF LOAD IMAGE
859 000016 S.TZ==16 ; WD. 07 (B 16) -- MAX TASK SIZE
860 000020 S.PC==20 ; WD. 10 (B 20) -- INITIAL PC OF TASK
861 000022 S.SP==22 ; WD. 11 (B 22) -- INITIAL SP OF TASK
862 000024 S.RF==24 ; WD. 12 (B 24) -- SEND AND REQUEST QUEUE FORWARD PTR
863 000026 S.RB==26 ; WD. 13 (B 26) -- SEND AND REQUEST QUEUE BACKWARD PTR
864 000030 S.SS==30 ; WD. 14 (B 30) -- SST VECTOR TABLE ADDRESS
865 000032 S.DL==32 ; WD. 15 (B 32) -- LOAD IMAGE FIRST BLOCK NUMBER (32-BITS)
866 ; WD. 16 (B 34) (SECOND HALF OF DISK ADDRESS)
867 ;
868 000036 S.SZ==36 ;SIZE OF STD ENTRY
869 ;
870 ;
871 ;
872 ; FLAGS WORD BIT DEFINITIONS:
873 ;
874 000001 SF.TA==000001 ;[00] SET WHEN TASK IS ACTIVE
875 000001 SF.PT==000001 ;[00] SET WHEN TASK IS PRIVILEDGED (ACTIVE FOR NOW)
876 000002 SF.FX==000002 ;[01] SET WHEN TASK IS FIXED IN MEMORY
877 000004 SF.EX==000004 ;[02] SET WHEN TASK IS TO BE REMOVED ON EXIT
878 040000 SF.IR==040000 ;[14] SET WHEN INSTALL IS REQUESTED
879 100000 SF.ST==100000 ;[15] SET WHEN TASK IS SYSTEM TASK
880 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 14
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
882 ;
883 ; ATL -- ACTIVE TASK LIST
884 ;
885 ; THE "ATL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS
886 ; THAT HAVE MEMORY ALLOCATED FOR THEIR EXECUTION. THE TASKS REPRESENTED
887 ; BY ENTRIES IN THE ATL ARE EITHER MEMORY RESIDENT, OR A REQUEST FOR THEIR
888 ; LOADING HAS BEEN QUEUED. THE LISTHEAD FOR THIS DEQUE IS IN THE SYSTEM
889 ; COMMUNICATIONS AREA (SCOM), AND THE NODES ARE OF THE FOLLOWING FORMAT:
890 ;
891 ; WD. 00 (B 00) -- FORWARD LINKAGE
892 ; WD. 01 (B 02) -- BACKWARD LINKAGE
893 000004 A.SP==04 ; WD. 02 (B 04) -- STACK POINTER (R6) OF RUNNING TASK
894 ; WHEN TASK IS NOT CURRENT TASK
895 000006 A.PD==06 ; WD. 03 (B 06) -- TASK'S RUN PARTITION (TPD ADDRESS)
896 000010 A.RP==10 ; WD. 04 (B 10) -- TASK'S RUN PRIORITY (BYTE)
897 000012 A.HA==12 ; WD. 05 (B 12) -- 1/64TH REAL ADR OF LOAD IMAGE
898 000014 A.TS==14 ; WD. 06 (B 14) -- TASK STATUS (BYTE)
899 000015 A.FB==15 ; WD. 06 (B 15) -- TASK FLAGS BYTE
900 000016 A.TD==16 ; WD. 07 (B 16) -- SYSTEM TASK DIRECTORY (STD) ENTRY ADDRESS
901 000020 A.EF==20 ; WD. 10 (B 20) -- TASK'S EVENT FLAGS (1-32)
902 ; WD. 11 (B 22) -- (SECOND HALF OF TASK'S EVENT FLAGS)
903 000024 A.FM==24 ; WD. 12 (B 24) -- TASK'S EVENT FLAGS MASKS (64-BITS)
904 ; WD. 13 (B 26) -- (SECOND WORD OF FLAGS MASK)
905 ; WD. 14 (B 30) -- (THIRD WORD OF FLAGS MASK)
906 ; WD. 15 (B 32) -- (FOURTH WORD OF FLAGS MASK)
907 000034 A.PF==34 ; WD. 16 (B 34) -- POWER FAIL AST TRAP ADDRESS
908 ;
909 000036 A.SZ==36 ;SIZE OF ATL
910 ;
911 ; TASK STATUS VALUES ARE DESCRIBED AT 'ASXDT'
912 ;
913 ; BEFORE EXECUTION , THE FIRST THREE
914 ; FLAGS MASK WORDS ARE USED AS FOLLOWS:
915 ;
916 ; A.FM+0 -- ADDRESS OF TASK LOAD I/O REQUEST DEQUE LISTHEAD,
917 ; A.FM+2 -- ADDRESS OF TASK LOAD I/O REQUEST NODE,
918 ;
919 ; MRL -- MEMORY REQUIRED LIST
920 ;
921 ; THE "MRL" IS A PRIORITY ORDERED DEQUE OF "ATL" NODES FOR ACTIVE TASKS
922 ; THAT REQUIRE MEMORY IN A PARTITION. EACH PARTITION HAS ITS OWN MRL.
923 ; WHENEVER A NON-FIXED TASK RUNNING IN A PARTITION EXITS, AN
924 ; ATTEMPT IS MADE TO ASSIGN MEMORY TO THE FIRST (HIGHEST PRIORITY)
925 ; TASK IN THE LIST. IF MEMORY IS FOUND, THE TASK'S NODE IS
926 ; MOVED FROM THE "MRL" TO THE "ATL" DEQUE. THE MRL LISTHEAD IS IN
927 ; THE TPD ENTRY FOR THE CORRESPONDING PARTITION.
928 ;
929 ;
930 ; FLAGS BYTE BIT DEFINITIONS
931 ;
932 000200 AF.PP==200 ;[07] SET WHEN TASK IS PRIMARY PROTOCOL TASK
933 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 15
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
935 ;
936 ; CKL -- CLOCK TABLE
937 ;
938 ; THE CLOCK LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION
939 ; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME. A "SCHEDULE DELTA-
940 ; TIME" EACH ENTRY (IF ANY) OF THE CLOCK QUEUE IS DECREMENTED
941 ; AT EACH CLOCK TICK UNTIL THE ENTRY "COMES DUE", AT WHICH TIME THE
942 ; INDICATED OPERATION IS PERFORMED. CLOCK TABLE ENTRIES ARE OF
943 ; FOLLOWING FORMAT.
944 ;
945 000000 C.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR
946 000002 C.AS==02 ; WD. 02 -- AST TRAP ADDRESS OF REQUESTOR
947 000004 C.SD==04 ; WD. 02 -- SCHEDULE DELTA IN TICKS (16-BITS)
948 000006 C.RS==06 ; WD. 03 -- RESCHEDULE DELTA IN TICKS (16-BITS)
949 000010 C.FM==10 ; WD. 04 -- FLAG MASK (BIS SRC)
950 000012 C.FA==12 ; WD. 05 -- FLAGS WORD ADR (BIS DST ADR)
951 ;
952 000014 C.SZ==14 ; SIZE OF CLOCK TABLE ENTRY
953 ;
954 ;
955 000074 .CYLTM==60. ;CYCLE TIME OF CLOCK
956 ;
957 000005 .KALSC==5 ;TIMEOUT INTERVAL FOR KL10
958 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 16
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
960 ;
961 ; DTE -- DTE TABLE
962 ;
963 ; THE DTE LIST IS A TABLE CONSISTING OF ONE ENTRY FOR EACH OPERATION
964 ; SCHEDULED TO BE PERFORMED AT SOME FUTURE TIME WHEN THE DTE20
965 ; INTERRUPTS. THE DTE20 TABLE ENTRIES ARE OF THE FOLLOWING
966 ; FORMAT.
967 ;
968 000000 D.AT==00 ; WD. 00 -- ATL NODE ADDRESS OF REQUESTOR
969 000002 D.FM==02 ; WD. 01 -- FLAG MASK (BIS SRC)
970 000004 D.FA==04 ; WD. 02 -- FLAGS WORD ADR (BIS DIST ADR)
971 ;
972 000006 D.SZ==06 ; SIZE OF DTE20 TABLE ENTRY
973 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 17
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
975 ;
976 ; KLI PARAMETER WORD DEFINITIONS (.KLIWD)
977 ;
978 000001 KL.LRM==1 ;LOAD RAMS
979 000002 KL.CFM==2 ;CONFIGURE MEMORY
980 000004 KL.LVB==4 ;LOAD VBOOT
981 000010 KL.VBN==10 ;VBOOT START AT START+1
982 000020 KL.VBD==20 ;DUMP MONITOR
983 000040 KL.SPF==40 ;START AT LOC 70 (AFTER POWER FAIL)
984 000100 KL.LCA==100 ; +001 LOAD CACHE
988 000400 KL.CFL==400 ; +001 IF = 0, CONFIGURE FROM FILE
989 ;
990 ; ALL BITS 0 IMPLIES ASK QUESTIONS TO CONTROL LOADING
991 ;
992 ;
993 ; PARAMETER DEFINITIONS FOR KL ERROR WORD
994 ;
995 000001 KS.TSP==1 ;TEN STOPPED (HALTED)
996 000002 KS.CES==2 ;CLOCK ERROR STOP
997 000004 KS.EPE==4 ;E BOX PARITY ERROR
998 000010 KS.DEX==10 ;DEPOSIT EXAMINE ERROR
999 000020 KS.CST==20 ;KEEP ALIVE STOPPED
1000 000040 KS.TRR==40 ;TEN REQUEST'S RE-BOOT
1001 000100 KS.PFT==100 ;POWER FAIL RESTART
1002 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 18
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1004 ;
1005 ; PUD -- PHYSICAL UNIT DEVICE TABLE
1006 ;
1007 ; THE "PUD" IS A FIXED LIST OF ENTRIES DESCRIBING EACH PHYSICAL DEVICE-
1008 ; UNIT IN A SYSTEM.
1009 ; CONSISTS OF ENTRIES OF THE FOLLOWING FORMAT:
1010 ;
1011 000000 U.DN==00 ; WD. 00 (B 00) -- DEVICE NAME (2 ASCII CHARS)
1012 000002 U.UN==02 ; WD. 01 (B 02) -- UNIT NUMBER (BYTE)
1013 000003 U.FB==03 ; (B 03) -- FLAGS (BYTE)
1014 000004 U.C1==04 ; WD. 02 (B 04) -- CHARACTERISTICS WORD ONE (DEVICE INDEPENDENT INDICATORS)
1015 000006 U.C2==06 ; WD. 03 (B 06) -- CHARACTERISTICS WORD TWO (DEVICE DEPENDENT INDICATORS
1016 000010 U.C3==10 ; WD. 04 (B 10) -- CHARACTERISTICS WORD THREE (DEVICE DEPENDENT INDICATORS)
1017 000012 U.C4==12 ; WD. 05 (B 12) -- CHARACTERISTICS WORD FOUR (SIZE OF BLOCK, BUFFER, LINE)
1018 000014 U.AF==14 ; WD. 06 (B 14) -- ATTACH FLAG (ATL NODE ADDRESS OF ATTAC HING TASK
1019 000016 U.RP==16 ; WD. 07 (B 16) -- REDIRECT POINTER
1020 000020 U.HA==20 ; WD. 10 (B 20) -- HANDLER TASK ATL NODE ADDRESS
1021 000022 U.RF==22 ; WD. 11 (B 22) -- UNIT REQUEST DEQUE LISTHEAD (FWD PNTR)
1022 000024 U.RB==24 ; WD. 12 (B 24) -- UNIT REQUEST DEQUE LISTHEAD (BKG PNTR)
1023 ;
1024 ; PHYSICAL UITS ARE CONSIDERED "VOLUMES" BY THE FILES SYSTEM, AND THE
1025 ; REMAINDER OF THE PUD ENTRY IS A "VOLUME CONTROL BLOCK".
1026 ;
1027 000026 U.VA==26 ; WD. 13 (B 26) -- ADDRESS OF VOLUME CONTROL BLOCK EXTENSION
1028 000030 U.UI==30 ; WD. 14 (B 30) -- USER IDENTIFICATION CODE (UIC)
1029 000030 U.PC==30 ; (B 30) -- UIC PROGRAMMER CODE
1030 000031 U.GC==31 ; (B 31) -- UIC GROUP CODE
1031 000032 U.VP==32 ; WD. 15 (B 32) -- VOLUME PROTECTION WORD
1032 000032 U.CH==32 ; (B 32) -- CHARACTERISTICS FLAGS
1033 ; (B 33) -- RESERVED BYTE
1034 000034 U.AR==34 ; WD. 16 (B 34) -- ACCESS RIGHTS FLAGS WORD
1035 000036 U.DACP==36;WD. 20 (B 36) -- DEFAULT ACP NAME, RAD50 (FIRST WORD)
1036 000040 U.ACP==40 ; WD. 20 (B 40) -- STD ENTRY ADDRESS OF CURRENT ACP
1037 000042 U.TF==42 ; WD. 21 (B 42) -- TERMINAL FLAGS WORD
1038 000042 U.PR==42 ; (B 42) -- TERMINAL PRIVILEDGE WORD
1039 000043 U.FO==43 ; (B 43) -- TERMINAL FORMS BYTE
1040 000044 U.LBH==44 ; WD. 22 (B 44) -- HIGH ORDER - TOTAL # OF BLOCKS FOR DEVICE
1041 000046 U.LBN==46 ; WD. 24 (B46) -- LOW ORDER TOTAL # OF BLOCKS FOR DEVICE
1042 000050 U.SZ==50 ;SIZE (IN BYTES OF PUD ENTRIES
1043 ;
1044 ; FLAGS BYTE DEFINITIONS
1045 ;
1046 000040 UF.RD==040 ; **************TEMP*********
1047 000200 UF.RH==200 ; [7] SET WHEN HANDLER TASK IS DECLARED RESIDENT
1048 000100 UF.TL==100 ; [6] SET WHEN HANDLER TASK RECOGNIZES LOAD AND RECORD
1049 000040 UF.OFL==040 ; [5] SET WHEN DEVICE IS OFFLINE
1050 ;
1051 ; BIT DEFINITIONS FOR CHARACTERISTICS WORD ONE
1052 ;
1053 000001 UC.REC==000001 ;[00] SET IF RECORD ORIENTED DEVICE (VIZ., TT,LP, CR)
1054 000002 UC.CCL==000002 ;[01] SET IF CARRIAGE CONTROL DEVICE (VIZ., TT LP)
1055 000004 UC.TTY==000004 ;[02] SET IF TTY DEVICE (VIZ., KSR, LA30)
1056 000010 UC.DIR==000010 ;[03] SET IF DEVICE IS A DIRECTORY DEVICE
1057 000020 UC.SDI==000020 ;[04] SET IF DEVICE IS A SINGLE DIRECTORY DEVICE
1058 000040 UC.SQD==000040 ;[05] SET IF DEVICE IS A SEQUENTIAL DEVICE
1059 000100 UC.ETB==000100 ;[06] SET IF DEVICE IS EIGHTEEN BIT MODE
1060 000400 UC.INB==000400 ;+003 [08] SET IF THE DEVICE IS INTERMEDIATE BUFFERED
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 18-1
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1061 001000 UC.SWL==001000 ;[09] SET IF THE DEVICE IS SOFTWARE WRITE LOCKED
1062 002000 UC.ISP==002000 ;[10] SET IF DEVICE IS INPUT SPOOLED
1063 004000 UC.0SP==004000 ;[11] SET IF DEVICE IS OUTPUT SPOOLED
1064 010000 UC.PSE==010000 ;[12] SET IF DEVICE IS PSEUDO DEVICE
1065 020000 UC.COM==020000 ;[13] SET IF DEVICE IS COMMUNICATIONS CHANNEL
1066 040000 UC.F11==040000 ;[14] SET IF DEVICE IS FILES-11
1067 100000 UC.MNT==100000 ;[15] SET IF DEVICE IS MOUNTABLE
1068 ;
1069 ; BIT DEFINITIONS FOR CHARACTERISTICS WORD TWO
1070 ;
1071 000200 CH.OFF==200 ;VOLUME IS OFF-LINE
1072 000100 CH.FOR==100 ;VOLUME IS FOREIGN
1073 000040 CH.UNL==40 ;DISMOUNT PENDING
1074 000020 CH.NAT==20 ;ATTACH/DETACH NOT PERMITTED
1075 000010 CH.NDC==10 ;DEVICE CONTROL FUNCTIONS NOT PERMITTED
1076 000001 CH.LAB==1 ;VOLUME IS LABELED TAPE
1077 ;
1078 ; BIT DEFINITIONS FOR TERMINAL PRIVILEDGE BYTE
1079 ;
1080 000001 UT.PR==1 ;SET IF TY ID PRIVILEDGED
1081 000002 UT.SL==2 ;SET IF TTY IS SLAVED
1082 000004 UT.LG==4 ;SET IF TERMINAL IS LOGGED ON
1083 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 19
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1085 ;
1086 ; TASK TERMINATION NOTICE ERROR CODES FOR A.FM+0
1087 ;
1088 000012 TN.EMT==12 ;NON-RSX EMT
1089 000014 TN.TRP==14 ;TRAP INSTRUCTION
1090 000040 TN.LRF==40 ;LOAD FAILURE
1091 ;
1092 ; SEND AND REQUEST QUEUE ENTRY
1093 ;
1094 000004 Q.SI==04 ; WD. 02 (B 04) -- SYSTEM TASK LIST ADDRESS
1095 000006 Q.D1==06 ; WD. 03 (B 06) -- FIRST DATA WORD
1096 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 20
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1098 ;
1099 ; DEVICE QUEUE POINTER TABLE (TO 11 QUEUE ENTRIES)
1100 ;
1101 000000 Q.DA==0 ; WD. 00 (B 00) -- ADDRESS OF DEVICE TABLE LIST
1102 000002 Q.TS==02 ; WD. 01 (B 02) -- SIZE OF AN ENTRY IN THE DEVICE TABLE LIST
1103 000004 Q.ST==04 ; WD. 02 (B 04) -- ADDRESS OF DEVICE START SUBROUTINE
1104 000006 Q.SP==06 ; WD. 03 (B 06) -- ADDRESS OF DEVICE STOP SUBROUTINE
1105 ; WD. 04 (B 10) -- SPARE
1106 000012 Q.AK==12 ; WD. 05 (B 12) -- ACKNOWLEDGE ROUTINE
1107 ; WD. 06 (B 14) -- SPARE
1108 000016 Q.DZ==16 ; WD. 07 (B 16) -- DEVICE COUNT
1109 000020 Q.SZ==20 ; SIZE OF TABLE ENTRY
1110 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 21
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1112 ;
1113 ; DEVICE ERROR LOGGING INFORMATION AND STATUS BLOCK DEFINITONS
1114 ;
1115 ; WORD 0 -- STANDARD STATUS BITS (DV.XXX)
1116 ;
1117 ; 1 DEVICE-DEPENDENT BITS
1118 ; 2 ...........
1119 ; N
1120 ;
1121 ; DEVICE ERROR LOGGING BITS (FIRST WORD BITS ONLY)
1122 ;
1123 000001 DV.NXD==1 ;NON-EX DEVICE
1124 000002 DV.OFL==2 ;OFF-LINE
1125 000004 DV.OIR==4 ;HARDWARE ERROR. OPERATOR INTERVENTION REQ'D
1126 000010 DV.SCN==10 ;SOFTWARE CONDITION. ACKNOWLEDGE REQUIRED
1127 000020 DV.IOP==20 ;I/O IN PROGRESS
1128 000040 DV.EOF==40 ;END-OF-FILE ENCOUNTERED
1129 000100 DV.LOG==100 ;ERROR LOGGING REQUIRED
1130 000200 DV.URE==200 ;UN-RECOVERABLE ERROR
1131 000400 DV.F11==400 ;ERROR ON FROM -11 REQUEST
1132 001000 DV.HNG==1000 ;DEVICE HUNG
1133 002000 DV.LIN==2000 ;DEVICE LOST INTERRUPT ENABLE
1134 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 22
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1136 ;
1137 ; KLINIK EVENT LOGGING CODES
1138 ;
1139
1140 000000 K.LUND==0 ; UNDEFINED CODE
1141
1142 000001 K.LSCK==1 ; SET/CLEAR KLINIK COMMAND
1143 000001 K.LSKL==1 ; SET KLINIK
1144 177777 K.LCKL==-1 ; CLEAR KLINIK
1145
1146 000002 K.LRNG==2 ; KLINIK RING
1147 000001 K.LRAC==1 ; ACCEPTED (WINDOW OPEN)
1148 177777 K.LRRJ==-1 ; REJECTED (WINDOW CLOSED)
1149
1150 000003 K.LDSC==3 ; KLINIK LINE DISCONNECT
1151 000001 K.LDCM==1 ; DIRECTED DISCONNECT (COMMAND)
1152 177777 K.LDRP==-1 ; CARRIER DROP
1153
1154 000004 K.LCON==4 ; KLINIK LINE CONNECT
1155 000001 K.LROP==1 ; REMOTE -- OPERATOR MODE
1156 000002 K.LRPR==2 ; REMOTE -- PROGRAMMER MODE
1157 000003 K.LRMN==3 ; REMOTE -- MAINTENANCE MODE
1158 177777 K.LUSR==-1 ; USER MODE
1159
1160 000005 K.LBPW==5 ; BAD PASSWORD
1161
1162 000006 K.LLTO==6 ; LOGON TIMEOUT
1163
1164 000007 K.LRBA==7 ; KLINIK ACTIVE ON REBOOT
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 23
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1166 ;
1167 ; OFFSETS FOR SST TRAPS TABLE IN USER'S AREA
1168 ;
1169 000000 T.RAP4==0 ;TRAP AT 4
1170 000002 T.RAPM==2 ;MEMORY PROTECT VIOLATOION
1171 000004 T.RAPB==4 ;T BIT OR BPT TRAP
1172 000006 T.RAPI==6 ;IOT TRAP
1173 000010 T.RAPR==10 ;RESERVED INSTRUCTION TRAP
1174 000012 T.RAPE==12 ;EMT TRAP (NON RSX)
1175 000014 T.RAPT==14 ;TRAP TRAP
1176 000016 T.RAPF==16 ;FLOATING POINT TRAP
1177 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 24
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1179 ;
1180 ; IRQ -- I/O REQUEST QUEUE
1181 ;
1182 ; THE "IRQ" IS A PRIORITY ORDERED DEQUE OF I/O REQUEST NODES WITH ITS
1183 ; LISTHEAD IN THE PUD ENTRY OF THE PHYSICAL UNIT FOR WHICH THE I/O
1184 ; REQUEST WAS QUEUED. EACH PHYSICAL UNIT HAS ITS OWN I/O REQUEST QUEUE.
1185 ; I/O REQUEST NODES ARE CREATED AND QUEUED PRIMARILY BY THE "QUEUE I/O"
1186 ; DIRECTIVE. HOWEVER, THE EXEC ALSO CREATES I/O REQUESTS TO:
1187 ; (1) LOAD A TASK IMAGE,
1188 ; I/O REQUEST NODES ARE
1189 ; THE FOLLOWING FORMAT.
1190 ;
1191 ; WD. 00 (B 00) -- FORWARD LINKAGE
1192 ; WD. 01 (B 02) -- BACKWARD LINKAGE
1193 000004 R.TD==04 ; WD. 02 (B 04) -- STD NODE OF REQUESTOR
1194 000006 R.AT==06 ; WD. 03 (B 06) -- ATL NODE OF REQUESTOR ***
1195 000010 R.PR==10 ; WD. 04 (B 10) -- PRIORITY (BYTE)
1196 000011 R.DP==11 ; (B 11) -- DPB SIZE (BYTE) ***
1197 000012 R.LU==12 ; WD. 05 (B 12) -- LOGICAL UNIT NUMBER (BYTE)
1198 000013 R.FN==13 ; (B 13) -- EVENT FLAG NUMBER (BYTE)
1199 000014 R.FC==14 ; WD. 06 (B 14) -- I/O FUNCTION CODE
1200 000016 R.SB==16 ; WD. 07 (B 16) -- ADDRESS OF STATUS BLOCK
1201 000020 R.AS==20 ; WD. 10 (B 20) -- AST ADDRESS
1202 000022 R.UI==22 ; WD. 11 (B 22) -- UIC (UNUSED)
1203 000024 R.PB==24 ; WD. 12 (B 24) -- PARAMETER #1
1204 ; WD. 13 (B 26) -- PARAMETER #2
1205 ; WD. 14 (B 30) -- PARAMETER #3
1206 ; WD. 15 (B 32) -- PARAMETER #4
1207 ; WD. 16 (B 34) -- PARAMETER #5
1208 ; WD. 17 (B 36) -- PARAMETER #6
1209 ;
1210 ; THE LOW ORDER THREE-BITS OF THE I/O FUNCTION CODE ARE USED BY THE SYSTEM
1211 ; AS FOLLOWS:
1212 ;
1213 ;[0] -- RESERVED FOR FUTURE USE
1214 000002 RF.XR==000002 ;RESERVED
1215 ;[2] -- RESERVED FOR FUTURE USE
1216 ;
1217 ; *** WHENEVER AN I/O REQUEST IS QUEUED BY THE "QUEUE I/O" DIRECTIVE, THE
1218 ; DPB SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE RECORDED IN THE I/O
1219 ; REQUEST NODE. WHENEVER AN I/O REQUEST IS QUEUED AS A RESULT OF ANOTHER
1220 ; DIRECTIVE (VIZ., "REQUEST" CAUSING A TASK IMAGE TO BE LOADED), THE DPB
1221 ; SIZE AND THE REQUESTOR'S ATL NODE ADDRESS ARE SET TO ZERO. THUS, BOTH
1222 ; BOTH THE DPB SIZE AND THE ATL NODE ADDRESS ARE ALSO "EXEC REQUEST"
1223 ; INDICATORS.
1224 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 25
EXEC MODULE ONE -- SYMBOLIC DEFINITIONS
1226 ;+
1227 ; SIGNIFICANT EVENT FLAG DEFINITIONS
1228 ;
1229 ;
1230 ; THE HIGH-ORDER BYTE '.SERFG+1' IS INCREMENTED WHENEVER A CLOCK
1231 ; TICK OCCURS (WHENEVER THE CLOCK INTERRUPT SERVICE ROUTINE RUNS).
1232 ; HENCE, '.SERFG+1' IS A BYTE CONTAINING A COUNT OF UNRECOGNIZED
1233 ; CLOCK TICKS.
1234 ;
1235 ; THE BITS OF THE LOW-ORDER BYTE '.SERFG+0' ARE USED TO FLAG THE
1236 ; FOLLOWING EVENTS:
1237 ;
1238 000001 EV.SE==001 ; [0] SET WHENEVER A SIGNIFICANT EVENT IS TO BE
1239 ; RECOGNIZED,
1240 ;
1241 000002 EV.AS==002 ; [1] SET WHEN POWER FAIL IS REQUIRED
1242 000200 EV.PF==200 ; [7] SET WHEN POWER DOWN HAS OCCURRED AND MUST BE RECOGNIZED
1243 ; ** MUST BE SIGN BIT **
1244 ;-
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 26
EXEC MODULE ONE -- NUL TASK
1246 .SBTTL EXEC MODULE ONE -- NUL TASK
1247 ;
1248 ; THE NUL TASK EXISTS TO ELIMINATE EXCEPTION TESTING WHEN SCANNING THE
1249 ; ACTIVE TASK LIST, AND WHEN PROCESSING DIRECTIVES THAT CAUSE AN
1250 ; ATL SCAN TO CONTINUE FROM THE NEXT TASK OF LOWER PRIORITY THAN THE
1251 ; DIRECTIVE ISSUING TASK.
1252 ;
1253 ; THE NUL TASK IS THE LOWEST PRIORITY TASK IN A SYSTEM.
1254 ;
1255 ; THE NUL TASK HAS AN ATL NODE WITH STATUS OF "RUNNING", BUT HAS NO STD
1256 ; ENTRY.
1257 ;
1258 ; THE NUL TASK DOES NOT RESIDE IN A PARTITION.
1259 ;
1260 ; THE NUL TASK EXECUTION CONSISTS OF "WAIT" INSTRUCTIONS (TO INCREASE
1261 ; UNIBUS THROUGHPUT). HOWEVER, THE NUL TASK DOES HAVE CONTEXT, AND CAN
1262 ; EXECUTE PDP-11 INSTRUCTIONS
1263 ;
1264 ;
1265 001564 NULHD:: .STKM 170017,0,0,0,0,0,0,NTKXEP,174000,NTKXSP
001632 000000 000000 000000 .WORD 0,0,0,0
001640 000000
001660 174000 002070' 002044' .WORD 174000,NTKXEP,NTKXSP
001714 000005 .WORD 5
001716 037202' .WORD TTPEN
001720 000000 .WORD 0
001722 000000 .WORD 0
001724 000000 .WORD 0
001726 000000 .WORD 0
001730 000000 .WORD 0
001732 000000 .WORD 0
001734 000000 .WORD 0
001736 000000 .WORD 0
001740 000000 .WORD 0
001742 000000 .WORD 0
002044 170017 .WORD 170017
002046 000000 .WORD 0
002050 000000 .WORD 0
002052 000000 .WORD 0
002054 000000 .WORD 0
002056 000000 .WORD 0
002060 002070' .WORD NTKXEP
002062 174000 .WORD 174000
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 27
EXEC MODULE ONE -- NUL TASK
1267 002064 NTKXEN: .ENB6 ;ENABLE INTERRUPTS
002064 012637 177776 MOV (SP)+,@#PS
1268 002070 000001 NTKXEP: WAIT
1269 002072 000001 WAIT
1270 002074 005200 INC R0
1271 002076 032737 040000 031114' BIT #EF.PR1,.COMEF+2 ;IF PRIMARY PROTOCOL IS DEAD
1272 002104 001440 BEQ 40$ ;THEN SEND DOWN MESSAGE
1273 002106 005737 031302' TST .ACKAL ;IF ACKAL HAS NOT BEEN SENT
1274 002112 001002 BNE 20$ ;THEN KL MAY STILL BE SHAKY
1275 002114 105037 002351' CLRB SNDMSG ;OTHERWISE RESET MSG FLAG
1276 002120 20$: .INH6 ;INHIBIT INTERRUPTS
002120 013746 177776 MOV @#PS,-(SP)
002124 112737 000300 177776 MOVB #300,@#PS
1277 002132 005737 031232' TST .TKTN ;;;CHECK FOR TASK TERMINATION REQUIRED
1278 002136 001410 BEQ 30$ ;;; +++004 NO -- LOOK AT TIME OF DAY FLAG
1279 002140 005037 031232' CLR .TKTN ;;;CLEAR REQUEST FOR TASK TERMINTATION
1281 002144 .ENB6 ;;;ENABLE INTERRUPTS
002144 012637 177776 MOV (SP)+,@#PS
1282 002150 DIR$ #.TKTN. ;REQUEST TASK TERMINATION
002150 012746 002256' MOV #.TKTN.,-(SP)
002154 104375 EMT 375
1283 002156 000744 BR NTKXEP
1284 ;
1288 002160 30$: ;;; +++004
1289 002160 .ENB6 ;;; +++004 ENABLE INTERRUPTS
002160 012637 177776 MOV (SP)+,@#PS
1290 002164 005737 031242' TST .CLKSW ; +++004 NEED TIME CHANGE?
1291 002170 100337 BPL NTKXEP ; +++004 NO -- JUST GO ON
1292 002172 005037 031242' CLR .CLKSW ; +++004 YES -- RESET CLOCK SWITCH
1293 002176 DIR$ #.TOD. ; +++004 REQUEST TIME OF DAY TASK
002176 012746 002240' MOV #.TOD.,-(SP)
002202 104375 EMT 375
1294 002204 000731 BR NTKXEP ; +++004 AND CONTINUE IDLE LOOP
1295 ;
1296
1297 002206 105737 002351' 40$: TSTB SNDMSG ;HAVE WE INFORMED THE TTYS ?
1298 002212 001342 BNE 20$ ;YES -- DON'T RE-SEND
1299 002214 012704 002274' MOV #DWNMSG,R4 ;SEND DOWN MESSAGE
1300 002220 CALL COPBUF ;COPY BUFFER TO FREE SPACE
002220 004737 020054' JSR PC,COPBUF
1301 002224 010004 MOV R0,R4 ;SET UP TO SEND IT
1302 002226 CALL .SNDAL ;SEND MESSAGE
002226 004737 017436' JSR PC,.SNDAL
1303 002232 105237 002351' INCB SNDMSG ;SYSTEM DOWN MESSAGE HAS BEEN SENT.
1304 002236 000730 BR 20$
1305 ;
1306 002240 .TOD.:
1307 002240 RQST$ MIDNIT ; +++004
002240 013 007 .BYTE 11.,7
002242 051254 054374 .RAD50 /MIDNIT/
002246 000000 000000 .WORD 0,0
002252 000000 .WORD
002254 000 000 .BYTE ,
1308
1310 002256 .TKTN.: RQST$ TKTN
002256 013 007 .BYTE 11.,7
002260 077314 053600 .RAD50 /TKTN/
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 27-1
EXEC MODULE ONE -- NUL TASK
002264 000000 000000 .WORD 0,0
002270 000000 .WORD
002272 000 000 .BYTE ,
1312
1313 002274 000000 000060 002306' DWNMSG: .WORD 0,60,DWNMS,DWNMSZ,DWNMSZ*400
002302 000043 021400
1314
1316 002306 015 012 007 DWNMS: .ASCII <15><12><7><7><7>/%DECSYSTEM-20 NOT RUNNING/<15><12><7><7><7>
002311 007 007 045
002314 104 105 103
002317 123 131 123
002322 124 105 115
002325 055 062 060
002330 040 116 117
002333 124 040 122
002336 125 116 116
002341 111 116 107
002344 015 012 007
002347 007 007
1320 000043 DWNMSZ=.-DWNMS
1321 002351 001 SNDMSG: .BYTE 1 ; +++005 A SYSTEM DOWN MSG HAS BEEN SENT
1322 .EVEN
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 28
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
1324 .SBTTL EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
1325 ;
1326 ;
1327 ; EMT INSTRUCTIONS ARE ONLY EXECUTED BY NON-INTERRUPT SERVICE ROUTINES
1328 ;
1329 ; DIRECTIVE DISPATCH -- CONTROL IS TRANSFERRED TO A DIRECTIVE SERVICE
1330 ; ROUTINE PER DIRECTIVE IDENTIFICATION CODE (DIC)
1331 ;
1332 ; REGISTER DEFINITIONS ON EXIT:
1333 ; R0 -- PC OF EMT INSTRUCTION
1334 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
1335 ; R2 -- DPB SIZE
1336 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
1337 ; R5 -- CURRENT TASK POINTER
1338 ;
1339 000020 EM.DRO==20 ;OFFSET TO DPB OR DPB POINTER ON STACK
1340 ;
1341 ;
1342 ;
1343 002352 010546 EMTTRP::MOV R5,-(SP) ;SAVE R5 INCASE OF TRAP(SST)
1344 002354 016605 000002 MOV 2(SP),R5 ;=PC+2 OF EMT INSTRUCTION
1345 002360 024527 CMP -(R5),(PC)+ ;WAS IT A
1346 002362 104375 EMT 375 ; DIRECTIVE ?
1347 002364 001421 BEQ 10$ ;YES -- LEGAL DIRECTIVE REQUEST
1348 002366 011637 031200' MOV @SP,EMTSTK ;SAVE R5
1349 002372 111516 MOVB @R5,@SP ;NO -- MUST SET IT UP FOR SST
1350 002374 013705 031110' MOV .CRTSK,R5 ;FIND THE CURRENT TASK POINTER
1351 002400 016505 000016 MOV A.TD(R5),R5 ;FIND STD ADDRESS
1352 002404 016505 000030 MOV S.SS(R5),R5 ;FIND THE SST TABLE
1353 002410 001403 BEQ 5$ ;NONE -- FORGET IT
1354 002412 MFPS T.RAPE(R5),R5 ;IS THERE AN ENTRY IN THE TABLE?
002412 016505 000012 MOV T.RAPE(R5),R5
1355 002416 001106 BNE .SSTET ;DO SST SERVICE
1356
1357 002420 012737 000012 031202' 5$: MOV #TN.EMT,TRPASV ;SAVE THE TERMINATION TYPE
1358 002426 000513 BR CMNABT ;AND GO TO COMMON ABORT
1359
1360 002430 10$: ;REMOVE THE SAVED R0 -- NOT NEEDED NOW
1361 ;SAVE REGISTERS
1362 002430 010446 MOV R4,-(SP)
1363 002432 010346 MOV R3,-(SP)
1364 002434 010246 MOV R2,-(SP)
1365 002436 010146 MOV R1,-(SP)
1366 002440 010046 MOV R0,-(SP)
1367 002442 010637 031200' MOV SP,EMTSTK ;SAVE EMT STACK POINTER
1369 002446 016601 000020 MOV EM.DRO(SP),R1 ;FIND THE DIRECTIVE OR DIRECTIVE POINTER
1375 ;
1376 ; IF R1 IS EVEN, IT IS ASSUMED TO BE A DPB POINTER
1377 ; IF R1 IS ODD, IT IS ASSUMED TO BE THE FIRST WORD OF A DPB THAT
1378 ; HAS BEEN PUSHED ONTO THE STACK.
1379 ;
1380 ;
1381 ; TEST FOR ODD OR EVEN
1382 ;
1383 002452 032701 000001 BIT #1,R1
1384 002456 001003 BNE 20$
1385 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 28-1
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
1386 ; EVEN -- R1 CONTAINS A DPB POINTER (ADDRESS).
1387 ;
1388 002460 MFPS @R1,R2 ;FIND THE FIRST DPB WORD
002460 011102 MOV @R1,R2
1389 002462 010203 MOV R2,R3 ;FIND THE DIRECTIVE IDENTIFICATION CODE
1390 002464 000405 BR 30$ ;EXECUTE DIRECTIVE
1391 ;
1392 ; ODD WORD ON STACK -- DPB IS ON THE ISSUING
1393 ; TASK'S STACK, AND R1 CONTAINS THE FIRST DPB WORD.
1394 ;
1395 ; SET R1 TO THE DPB ADDRESS, R2 TO THE DPB SIZE (IN WORDS),
1396 ; R3 TO THE DIRECTIVE IDENTIFICATION CODE.
1397 ;
1398 002466 010102 20$: MOV R1,R2 ;SET DPB SIZE IN R2
1399 002470 010103 MOV R1,R3 ;SET DIRECTIVE CODE
1400 002472 010601 MOV SP,R1 ;FIND THE ADDRESS OF THE DPB
1401 002474 062701 000020 ADD #EM.DRO,R1 ;POINT PAST SAVED STACK
1402 002500 042703 177400 30$: BIC #177400,R3
1403 002504 105002 CLRB R2
1404 002506 000302 SWAB R2 ;SET SIZE IN LOW ORDER
1405 ;
1406 ; R3 CONTAINS THE DIRECTIVE IDENTIFICATION CODE.
1407 ; THE DIC IS AN ODD QUANTITY AND SHOULD BE IN THE RANGE
1408 ; 001-127.(MAX RANGE)
1409 ;
1410 002510 005721 TST (R1)+ ;ADVANCE R1 TO POINT TO THE WORD FOLLOWING
1411 ;THE FIRST WORD DPB WORD.
1412 002512 013705 031110' MOV .CRTSK,R5 ;SET UP CURRENT TASK POINTER
1413 002516 022703 000102 CMP #DIRMAX,R3 ;CHECK TO SEE IF LEGAL DIRECTIVE
1414 002522 103001 BHIS DIROK ;OK -- LEGAL RANGE
1415 002524 104635 DS.99: TRAP DE.99 ;ILLEGAL DIRECTIVE
1416 002526 000173 002531' DIROK: JMP @DIRDPT-1(R3) ;DISPATCH TO APPROPRIATE DIRECTIVE SERVICE CODE.
1417 ;
1418 002532 012126' DIRDPT: .WORD .D.QIO ;001. -- QIO
1419 002534 012126' .WORD .D.QIO ;003. -- QIO AND WAIT
1420 002536 011144' .WORD .D.GLI ;005. -- GET LUN INFORMATION
1421 002540 011040' .WORD .D.ASS ;007. -- ASSIGN LUN
1422 002542 007524' .WORD .D.DTE ;009. -- DTE20 FUNCTIONS
1423 002544 013254' .WORD .D.REQ ;011. -- REQUEST
1424 002546 012600' .WORD .D.SEN ;013. -- SEND
1425 002550 012614' .WORD .D.SAR ;015. -- SEND AND REQUEST
1426 002552 013052' .WORD .D.REC ;017. -- RECEIVE
1427 002554 013052' .WORD .D.ROE ;019. -- RECEIVE OR EXIT
1428 002556 013052' .WORD .D.ROS ;021. -- RECEIVE OR SUSPEND
1429 002560 011626' .WORD .D.MKT ;023. -- MARK TIME
1430 002562 013232' .WORD .D.PUT ;025. -- POWER UP AST
1431 002564 011730' .WORD .D.CMT ;027. -- CANCEL MARK TIME REQUESTS
1432 002566 002524' .WORD DS.99 ; 029. -- ILLEGAL DIRECTIVE
1433 002570 011310' .WORD .D.CEF ;031. -- CLEAR EVENT FLAG
1434 002572 011326' .WORD .D.SEF ;033. -- SET EVENT FLAG
1435 002574 011344' .WORD .D.DSE ;035. -- DECLARE SIGNIFICANT EVENT
1436 002576 011370' .WORD .D.REF ;037. -- READ EVENT FLAG
1437 002600 011404' .WORD .D.RAF ;039. -- READ ALL EVENT FLAGS
1438 002602 011430' .WORD .D.WFS ;041. -- WAIT FOR SINGLE EVENT FLAG
1439 002604 011506' .WORD .D.WFL ;043. -- WAIT FOR LOGICAL "OR" OF EVENT FLAGS
1440 002606 011776' .WORD .D.SUS ;045. -- SUSPEND EXECUTION
1441 002610 012010' .WORD .D.RES ;047. -- RESUME TASK EXECUTION
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 28-2
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
1442 002612 011614' .WORD .D.WSE ;049. -- WAIT FOR NEXT SIGNIFICANT EVENT
1443 002614 012104' .WORD .D.EXT ;051. -- TASK EXIT
1448 002616 002524' .WORD DS.99 ; 053. -- ILLEGAL DIRECTIVE
1449 002620 002524' .WORD DS.99 ; 055. -- ILLEGAL DIRECTIVE
1451 002622 013220' .WORD .D.STV ;057. -- SPECIFY SST VECTOR
1452 002624 011174' .WORD .D.GTP ;059. -- GET TIME PARAMETERS
1453 002626 002524' .WORD DS.99 ;061. -- ILLEGAL
1454 002630 013502' .WORD .D.GPP ;063. -- GET TASK PARAMETERS
1455 002632 013624' .WORD .D.GMP ;065. -- GET PARTITION PARAMETERS
1456 000102 DIRMAX=.-DIRDPT ;LEGAL NUMBER OF DIRECTIVES
1457 ;
1458 ; .SSTET -- SST FOR TRAP AND EMT'S
1459 ;
1460 002634 .SSTET::
1461 002634 105066 000001 CLRB 1(SP) ;CLEAR HIGH BYTE
1462 002640 006316 ASL @SP ;MULTIPLY BY 2
1463 002642 .SSTCO::
1465 002642 012746 004000 MOV #004000,-(SP) ;SET PS
1469 002646 010546 MOV R5,-(SP) ;SET TRAP ADDRESS
1470 002650 013705 031200' MOV EMTSTK,R5 ;RESTORE R5
1471 002654 000002 RTI ;RETURN TO USER
1472 ;
1473 002656 013705 031200' CMNABT: MOV EMTSTK,R5 ;RESTORE R5
1474 002662 000137 001100' JMP CMNABO ;AND GO TO COMMON ABORT
1475 ;
1476 ; CONTROL IS RETUNRED TO ".DR.NS" TO EXIT DIRECTIVE SERVICE WITHOUT ALTERING
1477 ; AN ISSUING TASK'S DIRECTIVE STATUS OR CONDITION CODES.
1478 ;
1479 ; DIRECTIVE RETURN STATUSES
1480 ;
1481 000000 DR.00==0 ;DIRECTIVE RETURN 00
1482 000001 DR.01==1 ;DIRECTIVE RETURN 01
1483 000002 DR.02==2 ;DIRECTIVE RETURN 02
1484 000003 DR.03==3 ;DIRECTIVE RETURN 03
1485 ;
1486 ; DIRECTIVE ERROR RETURNS
1487 ;
1488 000377 DE.01==-1&377 ;ERR 01
1489 000376 DE.02==-2&377 ;ERR 02
1490 000375 DE.03==-3&377 ;ERR 03
1491 000374 DE.04==-4&377 ;ERR 04
1492 000373 DE.05==-5&377 ;ERR 05
1493 000372 DE.06==-6&377 ;ERR 06
1494 000371 DE.07==-7&377 ;ERR 07
1495 000370 DE.08==-8.&377 ;ERR 08
1496 000367 DE.09==-9.&377 ;ERR 09
1497 000366 DE.10==-10.&377 ;ERR 10
1498 000365 DE.11==-11.&377 ;ERR 11
1499 000260 DE.80==-80.&377 ;ERR 80
1500 000257 DE.81==-81.&377 ;ERR 81
1501 000246 DE.90==-90.&377 ;ERR 90
1502 000245 DE.91==-91.&377 ;ERR 91
1503 000244 DE.92==-92.&377 ;ERR 92
1504 000243 DE.93==-93.&377 ;ERR 93
1505 000242 DE.94==-94.&377 ;ERR 94
1506 000241 DE.95==-95.&377 ;ERR 95
1507 000240 DE.96==-96.&377 ;ERR 96
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 28-3
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
1508 000237 DE.97==-97.&377 ;ERR 97
1509 000236 DE.98==-98.&377 ;ERR 98
1510 000235 DE.99==-99.&377 ;ERR 99
1511 ;
1512 002666 132766 000340 000002 .DRSRN::BITB #340,2(SP) ;FROM EXEC?
1513 002674 001025 BNE 20$ ;YES -- CONTIUE
1514 002676 011646 MOV @SP,-(SP) ;PUT IT ON STACK TWICE
1515 002700 162716 000002 SUB #2,@SP
1516 002704 117616 000000 MOVB @(SP),@SP
1517 002710 010537 031200' MOV R5,EMTSTK
1518 002714 013705 031110' MOV .CRTSK,R5 ;FIND THE CURRENT TASK
1519 002720 016505 000016 MOV A.TD(R5),R5 ;FIND STD ADDRESS
1520 002724 016505 000030 MOV S.SS(R5),R5 ;IS THERE AN SST VECTOR?
1521 002730 001403 BEQ 10$ ;NO -- CRASH
1522 002732 MFPS T.RAPT(R5),R5 ;FIND THE ADDRESS
002732 016505 000014 MOV T.RAPT(R5),R5
1523 002736 001336 BNE .SSTET ;NONE -- CRASH
1524 002740 012737 000014 031202' 10$: MOV #TN.TRP,TRPASV ;SET TRAP TYPE
1525 002746 000743 BR CMNABT ;AND GO TO COMMON ABORT
1526 ;
1527 ;
1528 002750 162716 000002 20$: SUB #2,@SP ;FIND THE TRAP VALUE
1529 002754 113600 MOVB @(SP)+,R0
1530 002756 100006 BPL DRXCOM ;BRANCH IF THE DIRECTIVE SUCCEEDED
1531 002760 013706 031200' DEXCOM: MOV EMTSTK,SP ;RESTORE STACK FOR REGISTER SAVE
1532 002764 052766 000001 000016 BIS #1,EM.DRO-2(SP) ;SET CC-C -2(ISSUING TASK'S PS)
1533 002772 000405 BR DRXRR ;---
1534 ;
1535 002774 .DR.NS:: ;RETURN NO STATUS
1536 002774 013706 031200' DRXCOM: MOV EMTSTK,SP ;RESTORE STACK FOR REGISTER SAVE
1537 003000 042766 000001 000016 BIC #1,EM.DRO-2(SP) ;CLEAR CC-C -2(ISSUING TASK'S PS)
1538 003006 DRXRR: ;-----
1539 003006 010037 000046 MOV R0,$DSW ;SAVE THE DSW
1540 003012 012600 MOV (SP)+,R0 ;POP (RESORE) R0
1541 003014 012601 MOV (SP)+,R1 ;POP (RESTORE) R1
1542 003016 012602 MOV (SP)+,R2 ;POP (RESTORE) R2
1543 003020 012603 MOV (SP)+,R3 ;POP (RESTORE) R3
1545 003022 016604 000010 MOV 10(SP),R4 ;FIND DPB OR DPB ADDRESS
1550 003026 106004 RORB R4 ;ADDRESS OR DPB?
1551 003030 103402 BCS 10$ ;DPB -- FOUND SIZE REQ'D
1552 003032 012704 000400 MOV #400,R4 ;SET UP TO POP ONLY 1 WORD
1553 003036 105004 10$: CLRB R4
1554 003040 000304 SWAB R4 ;PUT SIZE IN LOW ORDER
1555 003042 006304 ASL R4 ;MAKE +2 FOR COUNT
1557 003044 062704 000020 ADD #EM.DRO,R4 ;POINT TO USER STACK LOCATION
1558 003050 063704 031200' ADD EMTSTK,R4
1564 003054 016644 000006 MOV 6(SP),-(R4) ;RESET STACK
1565 003060 016644 000004 MOV 4(SP),-(R4)
1566 003064 016644 000002 MOV 2(SP),-(R4)
1567 003070 011644 MOV @SP,-(R4)
1568 003072 010406 MOV R4,SP ;SET STACK POINTER
1569 ;
1570 ; A DIRECTIVE HAS BEEN PROCESSED -- IF A TASK IS CURRENT (THE ISSUING
1571 ; TASK) ITS PS, PC, R5, & R4 ARE ON THE KERNEL STACK, AND '.CRTSK' POINTS
1572 ; TO THE ATL NODE OF THAT TASK. IF A TASK IS NOT CURRENT (ISSUING
1573 ; TASK EXIT'ED), '.CRTSK' IS SET TO ZERO.
1574 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 28-4
EXEC MODULE TWO -- SERVICE FOR "EMT" & "TRAP" INSTRUCTIONS
1575 ; R0 CONTAINS THE ADDRESS OF THE NEXT ATL NODE TO BE EXAMINED.
1576 ;
1577 003074 032766 000340 000006 BIT #PRI7,+6(SP) ;IS PROCESSOR PRIORITY OF DIRECTIVE ISSUING TASK ZERO?
1578 003102 001403 BEQ 20$ ;YES -- SCAN ATL FROM ENTRY POINTED TO BY R5.
1579 003104 012604 MOV (SP)+,R4 ;NO -- TASK SWITCHING HAS BEEN INHIBITED BY ISSUING TASK,
1580 003106 012605 MOV (SP)+,R5 ;RESTORE R4, R5, PC, & PS, AND RETURN TO ISSUING TASK.
1581 003110 000002 RTI ;(PRIORITY IS ZEROED IF TASK EXIT'ED.)
1582 ;
1583 ; TRANSFER CONTROL TO THE SCAN ATL ROUTINE AT PRIORITY TWO,
1584 ; PREVIOUS MODE: USER, CURRENT MODE: KERNEL, AND CC'S ZERO.
1585 ;
1586 003112 012746 034100 20$: MOV #034100+STXAS,-(SP)
1587 003116 012746 003140' MOV #ASXE2,-(SP)
1588 003122 000002 RTI
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 29
EXEC MODULE THREE -- TITLE PAGE
1590 .SBTTL EXEC MODULE THREE -- TITLE PAGE
1591 ;
1592 ;
1593 ;
1594 ;
1595 ;
1596 ;
1597 ; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS 01754.
1598 ;
1599 ;
1600 ; THE MATERIAL INCLUDED IN THIS FUNCTIONAL SPECIFICATION, INCLUDING BUT
1601 ; NOT LIMITED TO, INSTRUCTION TIMES AND OPERATING SPEEDS IS FOR
1602 ; INFORMATION PURPOSES ONLY. ALL SUCH MATERIAL IS SUBJECT TO CHANGE
1603 ; WITHOUT NOTICE. CONSEQUENTLY DEC MAKES NO CLAIM AND SHALL NOT BE LIABLE
1604 ; FOR ITS ACCURACY.
1605 ;
1606 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE
1607 ; ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
1608 ;
1609 ;
1610 ;
1611 ;
1612 ;
1613 ; MODULE: EXEC MODULE THREE (ATL SCAN)
1614 ;
1615 ; VERSION: V001A
1616 ;
1617 ; AUTHOR: R. MCLEAN
1618 ;
1619 ; DATE: 19 MAR 75
1620 ;
1621 ;
1622 ; THIS MODULE CONTAINS:
1623 ;
1624 ; 1 -- ATL (ACTIVE TASK LIST) SCAN CODE.
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 30
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1626 .SBTTL EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1627 ;+
1628 ; THE ACTIVE TASK LIST (ATL) IS A PRIORITY ORDERED LIST OF TASKS THAT
1629 ; HAVE BEEN ASSIGNED MEMORY SPACE FOR EXECUTION, AND HAVE NOT EXIT'ED.
1630 ;
1631 ; THE SYSTEM IS DRIVEN BY SCANNING THE ATL FROM THE TOP (HIGH PRIORITY)
1632 ; WHETHER A TASK IS CAPABLE OF EXECUTION IS INDICATED BY THE 'A.TS'TH
1633 ; BYTE OF EACH ATL NODE (ENTRY).
1634 ;
1635 ; THE ATL IS SCANNED DOWNWARD FROM A TASK WHENEVER THAT TASK VOLUNTARILY
1636 ; STOPS EXECUTION (VIZ., WAITFOR, EXIT) AND A SIGNIFICANT
1637 ; EVENT HAS NOT BEEN DECLARED.
1638 ;
1639 ; SIGNIFICANT EVENTS ARE DECLARED BY TASKS (PRI=0) VIA SYSTEM DIRECTIVES,
1640 ; AND BY INTERRUPT SERVICE ROUTINES (PRI 4,5,6,7) VIA SYSTEM SUBROUTINES.
1641 ; A DECLARATION OF A SIGNIFICANT EVENT IS INDICATED BY THE SOFTWARE FLAG
1642 ; (BYTE) '.SERFG+0'.
1643 ;
1644 ; CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE UNDER TWO CONDITIONS:
1645 ; (1) WHEN CONTROL IS RETURNED TO A TASK (PRI 0) VIA THE "COMMON RETURN TO
1646 ; INTERRUPTED PROGRAM" AND A SIGNIFICANT EVENT HAS BEEN DECLARED (NON-ZERO
1647 ; '.SERFG+0'), AND (2) WHEN CONTROL IS RETURNED FROM A DIRECTIVE SERVICE
1648 ; ROUTINE.
1649 ;
1650 ; THERE ARE TWO ENTRY POINTS TO THE ATL SCAN ROUTINE:
1651 ; ASXE1 -- TO SCAN THE ATL DOWNWARD FROM THE TOP. I.E., TO EFFECT A
1652 ; DECLARATION OF A SIGNIFICANT EVENT.
1653 ;
1654 ; CONTROL IS TRANSFERRED TO 'ASXE1' FROM THE 'COMMON RETURN TO INTERRUPTED
1655 ; PROGRAM', OR FROM ATL SCAN TASK STATUS SERVICE, WHENEVER A SIGNIFICANT
1656 ; EVENT DECLARATION IS TO BE EFFECTED.
1657 ;
1658 ; ASXE2 -- TO SERVICE THE STATUS OF THE TASK WHOSE ATL NODE ADDRESS
1659 ; IS IN R5, AND THEN TO EITHER: (1) RETURN CONTROL TO THAT TASK,
1660 ; (2) SCAN THE ATL FROM THAT TASK THRU LOWER PRIORITY TASKS, OR
1661 ; (3) TO SCAN THE ATL FROM THE TOP.
1662 ;
1663 ; CONTROL IS TRANSFERRED TO 'ASXE2' FROM THE COMMON EXIT FOR DIRECTIVE
1664 ; (EMT 375) SERVICE CODE.
1665 ;
1666 ; IF A SIGNIFICANT EVENT HAS BEEN DECLARED (EITHER COINCIDENTLY OR AS
1667 ; A RESULT OF DIRECTIVE EXECUTION) CONTROL IS TRANSFERRED TO 'ASXE1'.
1668 ; HOWEVER, THE DECISION TO TRANSFER TO 'ASXE1' IS NOT MADE UNTIL THE
1669 ; "TASK STATUS SERVICE" FOR THE DIRECTIVE ISSUING TASK HAS BEEN PERFORMED.
1670 ;
1671 ; WHENEVER CONTROL IS TRANSFERRED TO THE ATL SCAN ROUTINE AND A TASK IS
1672 ; CURRENT, THE PS, PC, R5, & R4 OF THE CURRENT TASK HAVE BEEN PUSHED
1673 ; ONTO THE STACK.
1674 ;-
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 31
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1676 003124 142737 000001 031116' ASXE1:: BICB #EV.SE,.SERFG+0 ;CLEAR SIGNIFICANT EVENT FLAG, AND SET
1677 003132 012705 032552' MOV #.ATLLH,R5 ;R5 TO THE ADDRESS OF THE FIRST ATL NODE.
1678 ;DISPATCH PER TASK STATUS
1679 ;
1680 ; SCAN LOOP -- AFTER PROCESSING AN ATL ENTRY, CONTROL IS TRANSFERRED EITHER:
1681 ; (1) TO 'ASXSCN' TO PROCESS THE NEXT ATL NODE, OR (2) TO 'ASXTE' TO
1682 ; TERMINATE THE ATL SCAN (A RUNABLE TASK HAS BEEN FOUND).
1683 ;
1684 ; CONTROL IS TRANSFERRED HERE FROM A ATL SCAN SERVICE ROUTINE, WITH THE
1685 ; STACK AND R5 UNCHANGED FROM THE DISPATCH TO THAT SERVICE ROUTINE.
1686 ;
1687 003136 011505 ASXSCN: MOV @R5,R5 ;ADVANCE R5 TO THE NEXT ATL NODE,
1688 003140 116504 000014 ASXE2: MOVB A.TS(R5),R4 ;DISPATCH PER ACTIVE TASK STATUS, WITH
1689 003144 000174 003146' JMP @ASXDT-02(R4) ;R0 = ATL NODE ADR & R4 = STATUS.
1690 ;
1691 003150 ASXDT: ;STATUS DEFINITIONS & DISPATCH ADDRESS TABLE.
1692 ;
1693 ;THE DISPATCH ROUTINE AT 'ASXE2' EXPECTS THE DISPATCH TABLE
1694 ;TO BEGIN WITH STATUS "02" AND INCREASE SEQUENTIALLY BY TWOS.
1695 ;
1696 ;
1697 000002 TS.LRQ==02 ;TASK LOAD REQEUST QUEUED
1698 003150 003346' ASXLRQ
1699 000004 TS.TKN==04 ;TASK WAITING FOR TERMINATION NOTICE
1700 003152 003136' ASXSCN
1701 000006 TS.LRF==06 ;TASK LOAD REQUEST FAILED
1702 003154 003310' ASXLRF
1703 000010 TS.RUN==10 ;** TASK IS RUNNING
1704 003156 003756' ASXTE
1705 000012 TS.SUS==12 ;** TASK IS SUSPENDED
1706 003160 003136' ASXSCN
1707 000014 TS.WF0==14 ;** TASK WAITING FOR AN EVENT FLAG 1-14
1708 ;** ('TS.WF0'-'TS.WS4' ARE EXPECTED IN SEQUENCE
1709 ;** BY THE WAITFOR DIRECTIVES.)
1710 003162 003176' ASXWR0
1711 000016 TS.WF1==16 ;** TASK WAITING FOR AN EVENT FLAG 17-32
1712 003164 003206' ASXWR1
1713 000020 TS.WF2==20 ;** TASK WAITING FOR AN EVENT FLAG 33-48
1714 003166 003216' ASXWR2
1715 000022 TS.WF3==22 ;** TASK WAITING FOR AN EVENT FLAG 49-64
1716 003170 003226' ASXWR3
1717 000024 TS.WF4==24 ;** TASK WAITING FOR AN EVENT FLAG 1-64
1718 003172 003236' ASXWR4
1719 000026 TS.EXT==26 ;TASK EXITED
1720 003174 003464' ASXEXT
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 32
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1722 ;
1723 ; SERVICE FOR "WAITFOR" TASK STATUSES
1724 ;
1725 ; A TASK (THE TASK WHOSE ATL NODE IS POINTED TO BY R5) HAS ISSUED A
1726 ; WAITFOR DIRECTIVE. IF ANY INDICATED EVENT FLAG IS SET, CHANGE TASK'S
1727 ; TO "RUNNING", AND TERMINATE ATL SCAN TO RUN THE TASK.
1728 ;
1729 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ZERO (FLAGS 1-16)
1730 ;
1731 003176 036565 000024 000020 ASXWR0: BIT A.FM+0(R5),A.EF+0(R5)
1732 003204 000433 BR ASXCMN
1733 ;
1734 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE ONE (FLAGS 17-32)
1735 ;
1736 003206 036565 000024 000022 ASXWR1: BIT A.FM+0(R5),A.EF+2(R5)
1737 003214 000427 BR ASXCMN
1738 ;
1739 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE TWO (FLAGS 33-48)
1740 ;
1741 003216 036537 000024 031112' ASXWR2: BIT A.FM+0(R5),.COMEF+0
1742 003224 000423 BR ASXCMN
1743 ;
1744 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE THREE (FLAGS 49-64)
1745 ;
1746 003226 036537 000024 031114' ASXWR3: BIT A.FM+0(R5),.COMEF+2
1747 003234 000417 BR ASXCMN
1748 ;
1749 ; TASK IS WAITING FOR INDICATED FLAG(S) IN RANGE FOUR (FLAGS 1-64)
1750 ;
1751 003236 036565 000024 000020 ASXWR4: BIT A.FM+0(R5),A.EF+0(R5)
1752 003244 001014 BNE WFXSET
1753 003246 036565 000026 000022 BIT A.FM+2(R5),A.EF+2(R5)
1754 003254 001010 BNE WFXSET
1755 003256 036537 000030 031112' BIT A.FM+4(R5),.COMEF+0
1756 003264 001004 BNE WFXSET
1757 003266 036537 000032 031114' BIT A.FM+6(R5),.COMEF+2
1758 003274 001720 ASXCMN: BEQ ASXSCN
1759 003276 WFXSET:
1760 003276 112765 000010 000014 MOVB #TS.RUN,A.TS(R5)
1761 003304 000137 003756' JMP ASXTE
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 33
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1763 ;
1764 ; SERVICE FOR TASK STATUS: LOAD REQUEST FAILED
1765 ;
1766 003310 012765 000040 000024 ASXLRF: MOV #TN.LRF,A.FM+0(R5) ;SET LOAD REQUEST FAILURE
1767 003316 112765 000004 000014 MOVB #TS.TKN,A.TS(R5) ;SET TERMINATION NOTICE REQUESTED
1768 003324 005237 031232' INC .TKTN ;REQUEST TASK TERMINATION
1769 003330 026527 000006 033436' CMP A.PD(R5),#F11TPD ;F11 TPD PARTITION?
1770 003336 001300 BNE ASXE2 ;NO -- CONTINUE
1771 003340 .CRASH LRF ;LOAD REQUEST FAILURE
003340 000004 IOT
003342 114 122 106 .ASCIZ /LRF/
003345 000
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 34
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1773 ;
1774 ; SERVICE FOR TASK REQUEST QUEUE'D SERVICE
1775 ;
1776 003346 006265 000020 ASXLRQ: ASR A.EF+0(R5) ;CHECK FOR REQUEST TO LOAD DONE
1777 003352 103271 BCC ASXSCN ;NO -- CONTINUE TO WAIT
1778 003354 105765 000030 TSTB A.FM+4(R5) ;DID THE I/O SUCCEED?
1779 003360 100753 BMI ASXLRF ;NO -- COMPLAIN
1780 003362 112765 000010 000014 MOVB #TS.RUN,A.TS(R5) ;SET THE TASK STATUS TO RUNNING
1781 003370 016504 000012 MOV A.HA(R5),R4 ;FIND THE HEADER ADDRESS
1788 003374 016446 000106 MOV H.TKVA(R4),-(SP) ;SAVE THE SST ADDRESS
1789 003400 016446 000076 MOV H.IPC(R4),-(SP) ;SAVE INITIAL PC
1790 003404 016446 000074 MOV H.IPS(R4),-(SP) ;SAVE INITIAL PS
1791 003410 016446 000130 MOV H.LUT(R4),-(SP) ;FIND OVERLAY LUN
1792 003414 006316 ASL @SP ;MAKE OFFSET
1793 003416 006316 ASL @SP
1794 003420 062716 000126 ADD #H.LUT-2,@SP ;POINT TO START OF LUT
1795 003424 060416 ADD R4,@SP ;POINT TO CORRECT LUT
1796 003426 016536 000022 MOV A.EF+2(R5),@(SP)+ ;SET LUT
1797 003432 016404 000100 MOV H.ISP(R4),R4 ;FIND INITIAL STACK
1798 003436 012644 MOV (SP)+,-(R4) ;STORE THE PS
1799 003440 012644 MOV (SP)+,-(R4) ;STORE THE PC
1800 003442 162704 000014 SUB #14,R4 ;INCLUDE REGISTER SAVE
1801 003446 010465 000004 MOV R4,A.SP(R5) ;SET STACK VALUE
1802 003452 016504 000016 MOV A.TD(R5),R4 ;FIND THE STD ADDRESS
1803 003456 012664 000030 MOV (SP)+,S.SS(R4) ;SET SST ADDRESS
1804 003462 000535 BR ASXTE ;GO TO START THE TASK
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 35
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1806 ;
1807 ; SERVICE FOR TASK STATUS: EXIT
1808 ;
1809 003464 010446 ASXEXT: MOV R4,-(SP)
1810 003466 010346 MOV R3,-(SP)
1811 003470 010246 MOV R2,-(SP)
1812 003472 010146 MOV R1,-(SP)
1813 003474 010046 MOV R0,-(SP)
1814 003476 016502 000016 MOV A.TD(R5),R2 ;FIND THE STD ADDRESS
1815 003502 016500 000006 MOV A.PD(R5),R0 ;FIND THE TPD ADDRESS
1816 003506 042762 000001 000006 BIC #SF.TA,S.FW(R2) ;CLEAR ACTIVE FLAG IN STD
1817 003514 10$:
1818 003514 032762 000002 000006 BIT #SF.FX,S.FW(R2) ;CHECK TO SEE IF TASK FIXED
1819 003522 001003 BNE 20$ ;YES -- DON'T FREE CORE
1820 ;
1821 ;
1822 ; FREE MEMORY (AND POSSIBLY START TASK WAITING FOR MEMORY) AND RETURN
1823 ; ATL NODE TO POOL.
1824 ;
1825 003524 042760 000002 000010 BIC #TF.OU,T.FW(R0) ;RELEASE PARTITION
1826 ;
1827 ;
1828 003532 010504 20$: MOV R5,R4 ;POINT R5 TO THE NEXT LOWEST PRIORITY TASK'S
1829 003534 010501 MOV R5,R1 ;ATL NODE, DELETE NODE FROM ATL, AND RETURN
1830 003536 011505 MOV @R5,R5 ;IT TO THE POOL.
1831 003540 CALL ..NDEL
003540 004737 041306' JSR PC,..NDEL
1832 003544 012704 033506' MOV #.POLLH,R4 ;RETURN THE NODE TO THE POOL
1833 003550 CALL ..NADD
003550 004737 041422' JSR PC,..NADD
1834 003554 032762 000004 000006 BIT #SF.EX,S.FW(R2) ;HAS THE TASK BEEN REQUESTED TO EXIT?
1835 003562 001426 BEQ 50$ ;NO -- JUST CONTINUE
1836 003564 010046 MOV R0,-(SP) ;SAVE R0 (TPD ADDRESS)
1837 003566 013700 032000' MOV .STDTA,R0 ;FIND THE HEAD OF THE STD LIST
1838 003572 013703 032004' MOV .STDTZ,R3 ;FIND THE SIZE OF THE LIST
1839 003576 162737 000002 032004' SUB #2,.STDTZ ;RESET THE SIZE FOR NOW IT IS SMALLER
1840 003604 006203 ASR R3 ;DIVIDE BY 2
1841 003606 005203 INC R3 ;MAKE 1 LARGER BECAUSE IT IS 2*N-2
1842 003610 020210 30$: CMP R2,@R0 ;THE CORRECT ENTRY?
1843 003612 001403 BEQ 40$ ;YES -- FOUND IT
1844 003614 005720 TST (R0)+ ;NO -- CONTINUE SEARCH
1845 003616 005303 DEC R3 ;CONTINUE SCAN
1846 003620 000773 BR 30$
1847 ;
1848 003622 016020 000002 40$: MOV 2(R0),(R0)+ ;MOVE ENTRIES BACK
1849 003626 077303 SOB R3,40$ ;UNTIL DONE
1850 003630 010201 MOV R2,R1 ;RETURN NODE TO POOL
1851 ;NOTE -- R4 STILL POINTS TO .POLLH
1852 ;FROM ABOVE RETURN OF ATL!!!!!
1853 003632 CALL ..NADD ;RETURN NODE
003632 004737 041422' JSR PC,..NADD
1854 003636 012600 MOV (SP)+,R0 ;RESTORE R0
1855 003640 032760 000002 000010 50$: BIT #TF.OU,T.FW(R0) ;CHECK FOR PARTITION OCCUPIED
1856 003646 001025 BNE 60$ ;YES -- DON'T TRY TO START TASK
1857 003650 010004 MOV R0,R4 ;SET UP TO PICL A NODE FROM MRL
1858 003652 062704 000014 ADD #T.RF,R4 ;POINT TO MRL
1859 003656 CALL ..PICK ;PICK NODE
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 35-1
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
003656 004737 041464' JSR PC,..PICK
1860 003662 103417 BCS 60$ ;NONE FOUND -- DON'T ATTEMPT TO START
1861 003664 010401 MOV R4,R1 ;SAVE THE NODE ADDRESS FOUND
1862 003666 022424 CMP (R4)+,(R4)+ ;POINT TO THE ENTRIES IN THE NDOE
1863 003670 012402 MOV (R4)+,R2 ;SET UP TO CALL .REQS
1864 003672 012403 MOV (R4)+,R3
1865 003674 012446 MOV (R4)+,-(SP) ;PUSH PRI
1866 003676 012704 033506' MOV #.POLLH,R4 ;RETURN THE NODE TO THE POOL
1867 003702 CALL ..NADD ;RETURN NODE
003702 004737 041422' JSR PC,..NADD
1868 003706 012604 MOV (SP)+,R4 ;GET THE PRIORITY
1869 003710 042762 000001 000006 BIC #SF.TA,S.FW(R2) ;CLEAR TASK ACTIVE FLAGS
1870 003716 CALL .REQS ;REQUEST THE TASK
003716 004737 004362' JSR PC,.REQS
1871 ;
1872 003722 012600 60$: MOV (SP)+,R0 ;POP (RESTORE) R0,R2,R1
1873 003724 012601 MOV (SP)+,R1
1874 003726 012602 MOV (SP)+,R2
1875 003730 012603 MOV (SP)+,R3
1876 003732 012604 MOV (SP)+,R4
1877 ;
1878 ; IF EXITING TASK IS NOT "CURRENT", ITS CONTEXT IS STORED IN ITS STACK.
1879 ; IF EXITING TASK IS "CURRENT", ITS PS, PC, R5, & R4 ARE STORED ON THE
1880 ; STACK AND THE REMAINDER OF ITS CONTEXT IS LOADED.
1881 ;
1882 ; R1 CONTAINS THE ADDRESS OF THE ATL NODE (WHICH HAS BEEN RETURNED TO THE
1883 ; POOL) OF THE EXITING TASK.
1884 ;
1885 003734 020537 031110' CMP R5,.CRTSK ;IF EXITING TASK IS "CURRENT", REMOVE (POP)
1886 003740 001004 BNE 70$ ;ITS R4, R5, PC, & PS FROM THE STACK
1887 003742 062706 000010 ADD #8.,SP ;(POP)
1888 003746 005037 031110' CLR .CRTSK
1889 003752 70$:
1890 003752 000137 003140' JMP ASXE2 ;DISPATCH PER STATUS OF TASK POINTED TO BY R5.
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 36
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
1892 ;
1893 ; TERMINATION OF ATL SCAN -- A TASK THAT CAN BE RUN HAS BEEN FOUND
1894 ;
1895 ; CONTROL IS TRANSFERRED HERE WITH THE PS, PC, R5, & R4 OF THE CURRENT
1896 ; TASK PUSHED ONTO THE STACK.
1897 ;
1898 ; CONTROL IS TRANSFERRED HERE EITHER BY DIRECT DISPATCH, OR FROM AN ATL
1899 ; SCAN SERVICE ROUTINE. IN EITHER CASE, THE STACK AND R5 ARE
1900 ; UNCHANGED FROM THE LAST ATL SCAN DISPATCH.
1901 003756 020537 031110' ASXTE: CMP R5,.CRTSK ;IS CONTROL RETURNING TO CURRENT TASK?
1902 003762 001461 BEQ CSDONE ;YES -- RESTORE R5, R4, PS, & PC FROM STACK
1903 003764 132737 000001 031116' BITB #EV.SE,.SERFG+0 ;NO -- HAS A SIGNIFICANT EVENT OCCURRED?
1904 003772 001402 BEQ 10$
1905 003774 000137 003124' JMP ASXE1 ;YES -- RESTART ATL SCAN
1906
1907 004000 112737 000340 177776 10$: MOVB #340,@#PS ;INHIBIT INTERRUPTS WHILE CONTEXT SWITCHING
1908 004006 013704 031110' MOV .CRTSK,R4 ;NO -- IS THERE A CURRENT TASK?
1909 004012 001420 BEQ 40$ ;NO -- (CURRENT TASK EXITED) NO CONTEXT TO SAVE
1910 ;YES -- SAVE CONTEXT OF OLD CURRENT TASK, AND
1911 ;LOAD CONTEXT OF NEW CURRENT TASK.
1912
1914 004014 010346 MOV R3,-(SP) ;PUSH R3
1915 004016 010246 MOV R2,-(SP) ;PUSH R2
1916 004020 010146 MOV R1,-(SP) ;PUSH R1
1917 004022 010046 MOV R0,-(SP) ;PUSH R0
1918 004024 016400 000012 MOV A.HA(R4),R0 ;FIND THE HEADER ADDRESS
1925 004030 062700 000046 ADD #H.DSW,R0 ;POINT TO DSW
1926 004034 012701 000046 MOV #$DSW,R1 ;POINT TO DSW
1927 004040 012120 MOV (R1)+,(R0)+ ;SAVE THE CONTEXT OF LOW CORE
1928 004042 012120 MOV (R1)+,(R0)+
1929 004044 012120 MOV (R1)+,(R0)+
1930 004046 011110 MOV @R1,@R0
1931 004050 010664 000004 MOV SP,A.SP(R4) ;SAVE OLD PS
1932 004054 016506 000004 40$: MOV A.SP(R5),SP ;SET UP NEW STACK
1933 004060 016500 000012 MOV A.HA(R5),R0 ;RESTORE CONTEXT
1940 004064 062700 000054 ADD #H.DSW+6,R0 ;POINT TO DSW SAVE
1941 004070 012701 000054 MOV #$DSW+6,R1
1942 004074 011011 MOV @R0,@R1
1943 004076 014041 MOV -(R0),-(R1)
1944 004100 014041 MOV -(R0),-(R1)
1945 004102 014041 MOV -(R0),-(R1)
1946 004104 012600 MOV (SP)+,R0 ;RESTORE REGISTERS FROM THE IS TASK
1947 004106 012601 MOV (SP)+,R1
1948 004110 012602 MOV (SP)+,R2
1949 004112 012603 MOV (SP)+,R3
1951
1988
1989 004114 010537 031110' MOV R5,.CRTSK ;SET NEW '.CRTSK' (ATL NODE ADR OF CURRENT TASK).
1990 004120 142737 000300 177776 BICB #300,@#PS ;LOWER TO PRI 1 AFTER CONTEXT SWITCH
1991
1992 004126 CSDONE: ;CONTEXT SWITCH (IF REQUIRED) IS DONE.
1994 004126 052766 004000 000006 BIS #4000,6(SP) ;SET REG SET 1
1995 004134 042766 170000 000006 BIC #170000,6(SP) ;CLEAR OFF MODE BITS
1997 ;
1998 ; A TASK'S PS, PC, R5, & R4 ARE ON THE STACK, AND THE TASK'S ATL
1999 ; NODE ADDRESS IS IN R5. I.E., CONDITIONS ARE CORRECT FOR AN ATL SCAN
2000 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 36-1
EXEC MODULE THREE -- SCAN OF ACTIVE TASK LIST
2001 ;
2002 ; IF THE TASK'S STATUS IS "RUNNING", CONTROL IS RETURNED TO THE TASK
2003 ; (UNLESS A SIGNIFICANT EVENT HAS BEEN DECLARED, IN WHICH CASE, CONTROL
2004 ; WILL BE RETURNED LATER).
2005 ;
2006 ;
2007 004142 012604 MOV (SP)+,R4 ;POP (RESTORE) R4
2008 004144 012605 MOV (SP)+,R5 ;POP (RESTORE) R5
2009 ;
2010 ; TRANSFER CONTROL TO TASK VIA COMMON "RETURN TO INTERRUPTED PROGRAM"
2011 ; ROUTINE (CLOCK AND/OR EVENT RECOGNITION MAY CAUSE ACTUAL TRANSFER TO
2012 ; OCCUR LATER IN REAL TIME).
2013 ;
2014 ; BR ..INTX
2015 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 37
EXEC MODULE NINE -- TITLE PAGE
2017 .SBTTL EXEC MODULE NINE -- TITLE PAGE
2018 ;
2019 ;
2020 ;
2021 ;
2022 ;
2023 ;
2024 ; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASSACHUSETTS 01754.
2025 ;
2026 ;
2027 ; THE MATERIAL INCLUDED IN THIS FUNCTIONAL SPECIFICATION, INCLUDING BUT
2028 ; NOT LIMITED TO, INSTRUCTION TIMES AND OPERATING SPEEDS IS FOR
2029 ; INFORMATION PURPOSES ONLY. ALL SUCH MATERIAL IS SUBJECT TO CHANGE
2030 ; WITHOUT NOTICE. CONSEQUENTLY DEC MAKES NO CLAIM AND SHALL NOT BE LIABLE
2031 ; FOR ITS ACCURACY.
2032 ;
2033 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS SOFTWARE
2034 ; ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
2035 ;
2036 ;
2037 ;
2038 ;
2039 ;
2040 ; MODULE: EXEC MODULE NINE (INTERRUPT RETURN)
2041 ;
2042 ; VERSION: V001A
2043 ;
2044 ; AUTHOR: R. MCLEAN
2045 ;
2046 ; DATE: 19 MAR 75
2047 ;
2048 ;
2049 ; THIS MODULE CONTAINS:
2050 ;
2051 ; 1 -- COMMON CODE FOR EXITING AN INTERRUPT SERVICE ROUTINE.
2052 ;
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 38
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2054 .SBTTL EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2055 ;
2056 ; MOST INTERRUPT SERVICE ROUTINES ARE CONTAINED WITHIN I/O HANDLER TASKS
2057 ; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE,
2058 ; WHEN THE INTERRUPT SERVICE ROUTINE WAS "CONNECTED" TO THE INTERRUPT.
2059 ;
2060 ; CONTROL IS TRANSFERRED TO A TASK CONTAINED INTERRUPT SERVICE ROUTINE
2061 ; WITH THE INTERRUPTED PROGRAM'S PS & PC,
2062 ;
2063 ; ALL TASK CONTAINED INTERRUPT SERVICE ROUTINES EXIT VIA "JMP ..INTX" WITH
2064 ; PS & PC OF THE INTERRUPTED PROGRAM
2065 ;
2066 ; THE '..INTX' ROUTINE EFFECTS A RETURN OF CONTROL
2067 ; TO THE INTERRUPTED PROGRAM.
2068 ;
2069 ; WITH THE PS & PC OF THE INTERRUPTED PROGRAM ON THE STACK.
2070 ;
2071 ; THE 'EXINTX' ROUTINE EFFECTS A RETURN TO THE INTERRUPTED PROGRAM.
2072 ;
2073 ; WHENEVER CONTROL IS RETURNED TO OTHER THAN A TASK (NON-ZERO PRI),
2074 ; CONTROL IS TRANSFERRED DIRECTLY TO THE INTERRUPTED PROGRAM. HOWEVER,
2075 ; WHEN CONTROL IS BEING RETURNED TO A TASK (PRI=0), THE "SYSTEM
2076 ; EVENT RECOGNITION FLAG" IN THE SYSTEM COMMUNICANTIONS AREA (SCOM) IS
2077 ; EXAMINED, AND IF FOUND NON-ZERO, THE INDICATED EVENTS ARE RECOGNIZED
2078 ; BEFORE CONTROL IS RETURNED TO THE INTERRUPTED TASK.
2079 ;
2080
2081 004146 ..INTX:: ;NORMAL ISR EXIT
2082 004146 052737 000340 177776 BIS #000340,@#PS ;;;INHIBIT INTERRUPTS (RAISE PRIORITY TO 7)
2083 004154 032766 000340 000002 BIT #000340,+2(SP) ;;;IS CONTROL RETURNING TO A TASK (PRI=0)?
2084 004162 001010 BNE CRTNXA ;;;YES -- EXAMINE SYSTEM EVENT RECOGNITION FLAG
2085
2086 004164 005737 040376' TST .PFAIL ;;;POWER FAIL SERVICE?
2087 004170 001402 BEQ CRTNX1 ;;;NO -- JUST RETURN
2088 004172 000137 007006' JMP .PWRDN ;;;YES -- POWER DOWN
2089
2090 004176 005737 031116' CRTNX1: TST .SERFG ;;;** ANY UNRECOGNIZED "SYSTEM EVENTS"?
2091 004202 001001 BNE CRTNX3 ;;;** YES -- TRANSFER CONTROL TO APPROPRIATE
2092 ;;;** EVENT RECOGNITON ROUTINE.
2093 004204 CRTNXA:
2094 ; CMP .DBRTT,SP ;;;** ## NO -- IS CONTROL RETURNING FROM SYSTEM
2095 ; BNE 10$ ;;;** ## TRACE DEBUGGING ROUTINE?
2096 ; CLR .DBRTT ;;;** ## YES -- RETURN VIA "RTT" INSTEAD OF "RTI"
2097 ; RTT ;;;** ##
2098 004204 10$: ;;;** ##
2099 004204 000002 CRTNX2: RTI ;;;** NO -- RETURN CONTROL TO TASK
2100
2101 ;** A RACE CONDITION EXISTS WHENEVER A
2102 ;POWER FAILURE OCCURS WHILE EXECUTING
2103 ;BETWEEN 'CRTNX1' AND 'CRTNX2'. TO
2104 ;AVOID THIS CONDITION, THE POWER FAIL
2105 ;TRAP SERVICE ROUTINE SETS THE PC TO
2106 ;'CRTNX1' WHENEVER IT INTERRUPTS EXECUTION
2107 ;IN THE RANGE 'CRTNX1' THRU 'CRTNX2'.
2108 ;
2109 ; A SYSTEM EVENT IS TO BE RECOGNIZED (NON-ZERO '.SERFG'), CONTROL IS
2110 ; TRANSFERRED TO SERVICE ROUTINE PER '.SERFG'
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 38-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2111 ; PRI=2, CONDITION CODES CLEARED, AND THE
2112 ; INTERRUPTED TASK'S PS, PC, R5 & R4 PUSHED ONTO THE STACK.
2113 ;
2114 004206 010546 CRTNX3: MOV R5,-(SP) ;;;PUSH R5
2115 004210 010446 MOV R4,-(SP) ;;;PUSH R4
2116
2117 004212 012746 034100 MOV #034100,-(SP)
2118 004216 105737 031117' TSTB .SERFG+1 ;;;UN-RECOGNIZED CLOCK TICK(S)?
2119 004222 001403 BEQ 10$ ;;;
2120 ;;;YES -- RECOGNIZE CLOCK TICKS (NORMALLY
2121 004224 012746 013756' MOV #.TICK,-(SP) ;;;ONLY ONE)
2122 004230 000002 RTI ;;;
2123 004232 132737 000201 031116' 10$: BITB #EV.SE!EV.PF,.SERFG+0 ;;;NO -- SIGNIFICANT EVENT RECOGNITION?
2124 004240 100437 BMI 60$ ;;;OR POWER FAIL
2125 004242 001403 BEQ 30$ ;;;
2126 ;;;YES -- SCAN ATL FROM THE TOP
2127 004244 012746 003124' 20$: MOV #ASXE1,-(SP) ;;;
2128 004250 000002 RTI ;;;
2129
2130 004252 132737 000002 031116' 30$: BITB #EV.AS,.SERFG+0 ;;;AST?
2131 004260 001435 BEQ 70$ ;;;YIPES -- GOOFED AND SYSTEM BROKEN
2132 004262 010316 MOV R3,@SP ;;;SAVE CONTEXT
2133 004264 010246 MOV R2,-(SP)
2134 004266 010146 MOV R1,-(SP)
2135 004270 010046 MOV R0,-(SP)
2139 004272 012746 004000 MOV #004000,-(SP)
2141 004276 013746 031122' MOV .CKASS,-(SP) ;;;SET AST ADDRESS
2142 004302 001411 BEQ 50$ ;;;NOT THIS TYPE
2143 004304 005037 031122' CLR .CKASS ;;;CLEAR THIS FOR NEXT TIME
2144 004310 005737 031124' TST .PFASS ;;;POWER FAIL ALSO?
2145 004314 001334 BNE CRTNX3 ;;;YES -- BETTER DO IT TOO
2146 004316 142737 000002 031116' 40$: BICB #EV.AS,.SERFG+0 ;;;CLEAR THIS FLAG
2147 004324 000002 RTI ;;;RETURN TO USER
2148
2149 004326 013716 031124' 50$: MOV .PFASS,@SP ;;;SET UP POWER FAIL AST
2150 004332 005037 031124' CLR .PFASS ;;;CLEAR POWER FAIL AST ADDRESS
2151 004336 000767 BR 40$ ;;;AND RETURN TO USER
2152
2153 004340 142737 000200 031116' 60$: BICB #EV.PF,.SERFG+0 ;;;CLEAR POWER FAIL FLAG
2154 004346 CALL .PFRST ;;;POWER FAIL RESTART
004346 004737 007342' JSR PC,.PFRST
2155 004352 000734 BR 20$ ;;;RETURN
2156
2157 004354 70$: .CRASH IAS ;;;CRASH SYSTEM UNKNOWN SIG EVENT
004354 000004 IOT
004356 111 101 123 .ASCIZ /IAS/
004361 000
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 39
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2159 ;
2160 ; .REQS -- SUBROUTINE TO ATTEMPT TO MAKE A TASK ACTIVE
2161 ;
2162 ; ENTRY CONDITIONS:
2163 ;
2164 ; R2 -- STD ENTRY ADDRESS (TASK ID ) OF REQUESTED TASK
2165 ; R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION) , FOR REQUESTED TASK
2166 ; R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY), FOR REQUESTED TASK
2167 ;
2168 ; CALLING SEQUENCE:
2169 ;
2170 ; CALL .REQS
2171 ;
2172 ; EXIT CONDITIONS:
2173 ;
2174 ; R2=00 -- TASK MADE ACTIVE
2175 ; R2=02 -- TASK NOT MADE ACTIVE, TASK ALREADY ACTIVE
2176 ; R2=06 -- TASK NOT MADE ACTIVE, INSUFFICIENT POOL NODE(S)
2177 ;
2178 ; REGISTERS ALTERED:
2179 ; R0,R1,R2,R3,R4
2180 ;
2181 ;
2182 004362 032762 000001 000006 .REQS:: BIT #SF.TA,S.FW(R2) ;IS TASK ACTIVE?
2183 004370 001403 BEQ 10$ ;NO -- IT IS LEGAL TO ACTIVATE IT
2184 004372 012702 000002 MOV #2,R2 ;YES -- RETURN +2
2185 004376 RETURN
004376 000207 RTS PC
2186
2187 004400 005703 10$: TST R3 ;CHECK THE PARTITION
2188 004402 001002 BNE 20$ ;PARTITION SPECIFIED
2189 004404 016203 000004 MOV S.TD(R2),R3 ;PARTITION NOT SPECIFIED -- USE DEFAULT
2190 004410 005704 20$: TST R4 ;PRIORITY?
2191 004412 001002 BNE 30$ ;YES -- DON'T USE DEFAULT
2192 004414 156204 000010 BISB S.DP(R2),R4 ;FIND THE DEFAULT PRIORITY
2193 004420 010446 30$: MOV R4,-(SP) ;SAVE PRI
2194 004422 010346 MOV R3,-(SP) ;SAVE TPD
2195 004424 012704 033506' MOV #.POLLH,R4 ;PICK AN ATL NODE
2196 004430 CALL ..PICK
004430 004737 041464' JSR PC,..PICK
2197 004434 103004 BCC 50$ ;GOT NODE
2198 004436 022626 40$: CMP (SP)+,(SP)+ ;REMOVE SAVED TPD AND PRI
2199 004440 012702 000006 MOV #6,R2 ;COMPLAIN NO NODES AVAILABLE
2200 004444 RETURN ;RETURN TO CALLER
004444 000207 RTS PC
2201
2202 004446 032762 000002 000006 50$: BIT #SF.FX,S.FW(R2) ;FIXED IN CORE?
2203 004454 001436 BEQ 70$ ;NO -- MUST READ THE TASK IN
2204 004456 010401 MOV R4,R1 ;SAVE NODE ADDRESS
2205 004460 016204 000022 MOV S.SP(R2),R4 ;SET UP STACK
2206 004464 062704 000014 ADD #14,R4 ;SET POINTER TO PC
2207 004470 016224 000020 MOV S.PC(R2),(R4)+ ;SET PC
2208 004474 012724 174000 MOV #174000,(R4)+ ;SET UP PS
2209 004500 012703 000010 MOV #TS.RUN,R3 ;SET UP TO START TASK
2210 004504 010104 60$: MOV R1,R4 ;SAVE THE ATL NODE ADDRESS
2211 004506 022424 CMP (R4)+,(R4)+ ;MOVE OVER LISTHEAD
2212 004510 016224 000022 MOV S.SP(R2),(R4)+ ;SET INITIAL STACK POINTER
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 39-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2213 004514 012624 MOV (SP)+,(R4)+ ;SET UP TPD AND PRI
2214 004516 012624 MOV (SP)+,(R4)+
2215 004520 016224 000012 MOV S.BA(R2),(R4)+ ;SET BASE ADDRESS
2216 004524 010324 MOV R3,(R4)+ ;SET RUN STATE
2217 004526 010224 MOV R2,(R4)+ ;SET STD NODE ADDRESS
2218 004530 005024 CLR (R4)+
2219 004532 005064 000012 CLR A.PF-A.EF-2(R4) ;CLEAR POWER FAIL AST ADDRESS
2220 004536 052762 000001 000006 BIS #SF.TA,S.FW(R2) ;SET TASK ACTIVE
2221 004544 012702 032552' MOV #.ATLLH,R2 ;INSERT NODE INTO ATL
2222 004550 000536 BR 120$
2223
2224 004552 032763 000002 000010 70$: BIT #TF.OU,T.FW(R3) ;PARTITION BUSY?
2225 004560 001117 BNE 110$ ;YES -- BETER PUT IN MRL
2226 004562 010446 MOV R4,-(SP) ;SAVE NODE ADDRESS OF ATL NODE
2227 004564 012701 000040 MOV #32.,R1 ;PICK AN I/O NODE
2228 004570 CALL ..ALCB
004570 004737 041642' JSR PC,..ALCB
2229 004574 010004 MOV R0,R4 ;SET CORRECT NODE ADDRESS
2230 004576 103006 BCC 80$ ;GOT ONE
2231 004600 012601 MOV (SP)+,R1 ;NONE AVAILABLE -- RETURN ATL NODE
2232 004602 012704 033506' MOV #.POLLH,R4
2233 004606 CALL ..NADD ;ADD NODE BACK TO ATL
004606 004737 041422' JSR PC,..NADD
2234 004612 000711 BR 40$ ;RETURN +6
2235
2236 004614 010446 80$: MOV R4,-(SP) ;SAVE NODE ADDRESS
2237 004616 022424 CMP (R4)+,(R4)+ ;MOVE OVER LISTHEAD
2238 004620 010224 MOV R2,(R4)+ ;SET UP STD ADDRESS
2239 004622 016624 000002 MOV 2(SP),(R4)+ ;SET UP ATL NODE ADDRESS
2240 004626 012724 175014 MOV #250.*400+12.,(R4)+ ;SET UP PRI/DPB SIZE
2241 004632 012724 000400 MOV #400,(R4)+ ;SET EFN
2242 004636 012724 000050 MOV #IO.LTK,(R4)+ ;CLAIM THIS IS A READ
2243 004642 005024 CLR (R4)+ ;NO I/O STATUS
2244 004644 005024 CLR (R4)+ ;NO AST ADDRESS
2245 004646 022424 CMP (R4)+,(R4)+ ;ADDRESS IS NOT SPECIFIED HERE
2246 004650 016224 000014 MOV S.LZ(R2),(R4)+ ;SET UP INITIAL SIZE
2247 004654 005024 CLR (R4)+ ;SKIP THIS PARAMETER
2248 004656 016224 000032 MOV S.DL(R2),(R4)+ ;SET UP DISK ADDRESS
2249 004662 016224 000034 MOV S.DL+2(R2),(R4)+ ;LOW ORDER DISK ADDRESS
2250 004666 012601 MOV (SP)+,R1 ;RESTORE R1
2251 004670 016603 000002 MOV 2(SP),R3 ;RESTORE THE TPD ADDRESS
2252 004674 032763 000002 000010 BIT #TF.OU,T.FW(R3) ;PARTITON OCCUPIED?
2253 004702 001407 BEQ 90$ ;NO -- MUST BE OK TO LOAD
2254 004704 012603 MOV (SP)+,R3 ;YES -- BETTER ADD IT TO MRL
2255 004706 012601 MOV (SP)+,R1 ;RESTORE ATL ADDRESS
2256 004710 010361 000030 MOV R3,A.FM+4(R1) ;SET THE NODE ADDRESS IN FLAGS MASK WORD TO PRESERVE IT
2257 004714 012703 100002 MOV #TS.LRQ+100000,R3 ;SET LOAD REQUEST QUEUE'D AND PARTITION BUSY
2258 004720 000671 BR 60$ ;SET UP ATL
2259
2260 004722 010246 90$: MOV R2,-(SP) ;SAVE STD ADDRESS
2261 004724 052763 000002 000010 BIS #TF.OU,T.FW(R3) ;DECLARE THE PARTITION OCCUPIED
2262 004732 005003 CLR R3 ;FIND PUD ENTRY
2263 004734 156203 000011 BISB S.DI(R2),R3 ;SET DISK INDICATOR
2264 004740 012702 037202' MOV #.PUDBA,R2 ;SET UP FOR ..IPRI
2265 004744 062702 000050 100$: ADD #U.SZ,R2 ;POINT TO AN ENTRY
2266 004750 077303 SOB R3,100$ ;LOOP UNTIL CORRECT ENTRY FOUND
2267 004752 010203 MOV R2,R3 ;SAVE THE LOGICAL UNIT NUMBER
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 39-2
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2268 004754 062702 000022 ADD #U.RF,R2 ;POINT TO LISTHEAD
2269 004760 CALL ..IPRI ;ENTER IN LIST
004760 004737 041346' JSR PC,..IPRI
2270 004764 014202 MOV -(R2),R2 ;FIND ATL NODE ADDRESS OF HANDLER TASK
2271 004766 052762 000010 000020 BIS #EF.NIR,A.EF(R2) ;START HANDLER
2272 004774 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;DECLARE SIG EVENT
2273 005002 012602 MOV (SP)+,R2 ;RESTORE STD ADDRESS
2274 005004 012601 MOV (SP)+,R1 ;RESTORE R1 (ATL NODE ADDRESS)
2275 005006 010361 000022 MOV R3,A.EF+2(R1) ;SAVE THE OVERLAY PUD ADDRESS
2276 005012 012703 000002 MOV #TS.LRQ,R3 ;SET UP TO INDICATE LOAD REQUEST QUEUE'D
2277 005016 000632 BR 60$ ;AND START TASK
2278
2279 005020 010401 110$: MOV R4,R1 ;SAVE THE NODE ADDRESS
2280 005022 052762 000001 000006 BIS #SF.TA,S.FW(R2) ;SET TASK ACTIVE
2281 005030 022424 CMP (R4)+,(R4)+
2282 005032 010224 MOV R2,(R4)+ ;SAVE THE ATTRIBUTES OF THIS CALL
2283 005034 012624 MOV (SP)+,(R4)+
2284 005036 012624 MOV (SP)+,(R4)+
2285 005040 010302 MOV R3,R2 ;FIND THE MRL
2286 005042 062702 000014 ADD #T.RF,R2 ;POINT TO IT IN TPD
2287 005046 120$: CALL ..IPRI ;INSERT THIS NODE IN MRL BY PRI
005046 004737 041346' JSR PC,..IPRI
2288 005052 005002 CLR R2 ;DECLARE TASK ACTIVE
2289 005054 RETURN ;RETURN TO CALLER
005054 000207 RTS PC
2290
2291 005056 104401 .RQESD::TRAP DR.01 ;RETURN +1
2292 005060 104771 TRAP DE.07 ;RETURN -7
2293 005062 104401 TRAP DR.01 ;RETURN+1 (CURRENTLY UNUSED)
2294 005064 104777 TRAP DE.01 ;RETURN -1
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 40
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2296 ;
2297 ; .FEPPU -- SUBROUTINE TO FETCH PARTITION AND PRIORITY
2298 ;
2299 ; ENTRY CONDITIONS:
2300 ;
2301 ; R1 -- DPB PLUS SIX -- POINTING TO FOLLOWING DATA IN PREVIOUS SPACE
2302 ; [PARTITION NAME (FIRST HALF),
2303 ; [PARTITION NAME (SECOND HALF),
2304 ; [PRIORITY],
2305 ; [UNUSED].
2306 ;
2307 ; IT IS ASSUMED THAT THESE WORDS CAN BE FETCHED WITHOUT SEGMENT FAULT.
2308 ;
2309 ; R2 -- STD ENTRY OF TASK TO FIT IN PARTITION
2310 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK
2311 ;
2312 ; CALLING SEQUENCE:
2313 ;
2314 ; CALL .FEPPU
2315 ;
2316 ; EXIT CONDITIONS:
2317 ;
2318 ; R1 -- ADVANCED BY 8 (4 WORDS)
2319 ; R3 -- TPD ENTRY ADDRESS, OR ZERO (DEFAULT PARTITION)
2320 ; R4 -- RUN PRIORITY, OR ZERO (DEFAULT PRIORITY)
2321 ;
2322 ; REGISTERS ALTERED R1,R3,R4
2323 ;
2324 005066 .FEPPU::MFPI (R1)+ ;PUSH 2-WORD PARTITION NAME ONTO STACK
005066 012146 MOV (R1)+,-(SP)
2325 005070 MFPI (R1)+
005070 012146 MOV (R1)+,-(SP)
2326 005072 005003 CLR R3 ;CLEAR R3 (TPD ADDRESS
2327 005074 005766 000002 TST 2(SP) ;WAS A PARTITION NAME SPECIFIED?
2328 005100 001423 BEQ 20$ ;NO -- RETURN WITH ZERO IN R3
2329 005102 012703 033216' MOV #.TPDBA,R3 ;YES -- SET UP TO SCAN TPD FOR PARTITION
2330 005106 020327 033216' 10$: CMP R3,#.TPDBA ;END OF TPD?
2331 005112 001425 BEQ X.X94 ;YES -- RETURN STS=-94.
2332 005114 162703 000020 SUB #T.SZ,R3 ;NO -- SET UP R3 TO EXAMINE ENTRY
2333 005120 021366 000002 CMP @R3,2(SP) ;PARTITION NAME MATCH?
2334 005124 001370 BNE 10$ ;NO -- CHECK NEXT TPD
2335 005126 026316 000002 CMP 2(R3),@SP ;MAYBE -- CHECK SECOND HALF OF NAME
2336 005132 001365 BNE 10$ ;NO -- CHECK NEXT TPD
2337 005134 016204 000016 MOV S.TZ(R2),R4 ;SET R4 TO THE NUMBER OF 32-WORD BLOCKS
2338 ;REQUIRED FOR THE TASK INDICATED BY R2.
2339 005140 020463 000006 CMP R4,T.PZ(R3) ;IS PARTITION LARG ENOUGH FOR TASK?
2340 005144 101401 BLOS 20$ ;YES -- SET R4 PER PRIORITY SPECIFIED
2341 005146 104775 TRAP DE.03 ;NO -- RETURN STS=-03
2342
2343 005150 022626 20$: CMP (SP)+,(SP)+ ;REMOVE PARTITION NAME FROM STACK
2344 005152 MFPS (R1)+,R4 ;SET R4 TO PRIORITY INDICATOR
005152 012104 MOV (R1)+,R4
2345 005154 020427 000372 CMP R4,#250. ;IS PRIORITY GREATER THAN 250?
2346 005160 101003 BHI X.X95 ;YES -- RETURN STS=-95.
2347 005162 005721 TST (R1)+ ;MOVE OVER UNUSED WORD
2348 005164 RETURN ;RETURN TO CALLER
005164 000207 RTS PC
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 40-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2349
2350 005166 104642 X.X94: TRAP DE.94 ;RETURN STS=94.
2351 005170 104641 X.X95: TRAP DE.95 ;RETURN STS=95.
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 41
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2353 ;
2354 ; .VCLUN -- VERIFY & CONVER LOGICAL UNIT NUMBER
2355 ;
2356 ; ENTRY CONDITIONS:
2357 ;
2358 ; R5 -- ATL NODE ADR OF DIRECTIVE ISSUING TASK
2359 ; TOP OF STACK -- LOGICAL UNIT NUMBER
2360 ;
2361 ; CALLING SEQUENCE:
2362 ;
2363 ; CALL .VCLUN
2364 ;
2365 ; EXIT CONDITIONS:
2366 ;
2367 ; R4 -- POINTS TO FIRST LUT ENTRY
2368 ; CC-C SET IF TASK NOT FOUND
2369 ;
2370 ; IF LUN IS ASSIGNED TO A PHYSICAL UNIT, THE LUN (ON TOP OF
2371 ; STACK) IS REPLACED BY THE ADDRESS OF THE CORRESPONDING PUD
2372 ; ENTRY.
2373 ;
2374 ; IF AN INVALID LUN, RETURN STS-96.
2375 ;
2376 ; IF THE LUN IS NOT ASSIGNED, IT IS REPLACED BY A ZERO.
2377 ;
2378 ;
2379 ; REGISTERS ALTERED:
2380 ;
2381 ; NONE
2382 ;
2383 005172 010046 .VCLUN::MOV R0,-(SP) ;PUSH (SAVE) R0
2384 005174 016600 000004 MOV 4(SP),R0 ;LUN MINUS ONE TO R0
2385 005200 005300 DEC R0
2386
2391 005202 016504 000012 MOV A.HA(R5),R4 ;POINT TO HEADER ADDRESS
2398 005206 062704 000130 ADD #H.LUT,R4
2400
2401 005212 020024 CMP R0,(R4)+ ;IS LUN <1, OR >MAX FOR TASK?
2402 005214 103013 BHIS X9X96 ;YES -- RETURN STS=-96
2403 005216 006300 ASL R0 ;NO -- SET LUT CONTENTS (PER LUN) IN R0
2404 005220 006300 ASL R0
2405 005222 060400 ADD R4,R0
2406 005224 011000 MOV @R0,R0 ;(PUD ENT ADR OR ZERO IN R0)
2407 005226 001402 BEQ 10$ ;IF ASSIGNED, EFFECT REDIRECTION (IF ANY)
2408 005230 016000 000016 MOV U.RP(R0),R0
2409 005234 10$:
2410 005234 010066 000004 MOV R0,4(SP) ;REPLACE LUN (ON STACK) BY PUD
2411 ;ENTRY ADDRESS (OR ZERO).
2412
2413 005240 012600 MOV (SP)+,R0 ;POP (RESTORE) R0
2414 005242 RETURN ;EXIT SUBROUTINE
005242 000207 RTS PC
2415 ;
2416 ; COMMON JMP'S TO DIRECTIVE EXITS
2417 ;
2418 005244 104640 X9X96: TRAP DE.96
SCH - TASK SCHEDULER & GLOB MACRO M1108 16-DEC-77 11:28 PAGE 42
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2420 ;
2421 ; .STAST -- SUBROUTINE TO SET AN AST IN A TASK
2422 ;
2423 ; ENTRY CONDITONS:
2424 ;
2425 ; R5 -- ACTIVE TASK LIST POINTER
2426 ; R4 -- ENTRY ADDRESS
2427 ;
2428 ; CALLING SEQUENCE:
2429 ;
2430 ; CALL .STAST
2431 ;
2432 ; EXIT CONDITIONS:
2433 ;
2434 ; CC-C CLEAR -- AST SET AND ALL OK
2435 ; CC-C SET -- THE TASK IS CURRENT AND CAN'T SET AST
2436 ;
2437 005246 010246 .STAST::MOV R2,-(SP) ;SAVE REGISTERS
2438 005250 010346 MOV R3,-(SP)
2439 005252 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;DECLARE A SIG EVENT
2440 005260 012702 000006 MOV #6,R2 ;SET UP TO SAVE REGISTERS
2441 005264 000241 CLC ;ASSUME SUCCESS
2442 005266 .INH0 ;;INHIBIT INTERRUPTS
005266 013746 177776 MOV @#PS,-(SP)
005272 112737 000140 177776 MOVB #140,@#PS
2443 005300 020537 031110' CMP R5,.CRTSK ;;CURRENT TASK?
2444 005304 001415 BEQ 30$ ;;YES 0-- BETTER SET CARRY
2445 005306 016503 000004 MOV A.SP(R5),R3 ;;SET UP A POINTER TO THE TASK'S STACK
2446 005312 010443 MOV R4,-(R3) ;;SET UP NEW PC
2450 005314 012743 004000 MOV #004000,-(R3)
2452 005320 016343 000016 10$: MOV 16(R3),-(R3) ;SET UP NEW STACK SAVE
2453 005324 077203 SOB R2,10$ ;;CONTINUE TIL DONE
2454 005326 20$: .ENB0 ;ENABLE INTERRUPTS
005326 004737 041526' JSR PC,..ENB0
2455 005332 012603 MOV (SP)+,R3 ;RESTORE
2456 005334 012602 MOV (SP)+,R2
2457 005336 RETURN ;RETURN TO CALLER
005336 000207 RTS PC
2458
2459 005340 005216 30$: INC @SP ;ENABLE INTERRUPTS
2460 005342 152737 000002 031116' BISB #EV.AS,.SERFG+0 ;SET AST REQUIRED
2461 005350 000766 BR 20$ ;AND RETURN
2462 .TITLE BOOT -- BOOT PROTOCOL HANDLER
2463 005352 IDENT$ 10,10
.IDENT /010100/
2464 ;
2465 ;
2466 ;
2467 ;
2468 ;
2469 ;
2470 ; COPYRIGHT (C) 1975, 1978 BY
2471 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2472 ;
2473 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2474 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2475 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 42-1
EXEC MODULE NINE -- COMMON RETURN TO INTERRUPTED PROGRAM
2476 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2477 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2478 ;
2479 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2480 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2481 ; CORPORATION.
2482 ;
2483 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2484 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2485 ;
2486 ;
2487 ;
2488 ; MODULE: "BOOT PROTOCOL HANDLER"
2489 ;
2490 ; VERSION: 10-10
2491 ;
2492 ; AUTHOR: R. MCLEAN
2493 ;
2494 ; DATE: 12 OCT 76
2495 ;
2496 ; THIS MODULE CONTAINS:
2497 ;
2498 ; 1 -- CODE TO SERVICE BOOT PROTOCOL ETC.
2499 ;
2500 ; MODIFIED:
2501 ; NO. DATE PROGRAMMER PURPOSE
2502 ; --- ---- ---------- -------
2503 ; 001 12-OCT-76 R. BELANGER CHANGED PHYSICAL EXAMINES &
2504 ; DEPOSITS TO EPT RELATIVE
2505 ; 002 21-OCT-76 A. PECKHAM ADDITION OF CODE TO COUNT
2506 ; DOORBELLS.
2507 ;
2508 ; 003 04-NOV-76 R. BELANGER ADDED CODE TO DELETE
2509 ; ENTRIES FROM TO10Q ON
2510 ; PRIMARY PROTOCOL RESTART.
2511 ; 004 29-NOV-76 A. PECKHAM CHANGES TOO NUMEROUS TO MENTION.
2512 ; 005 07-MAR-77 A. PECKHAM ADDED CHANGE TO AVOID RESETTING TO -10 Q.
2513 ; 006 21-MAR-77 A. PECKHAM FIXED BUG IN ACKNOWLEGE
2514 ; 007 28-AUG-77 R. BELANGER RESET POWERFAIL FLAG ON
2515 ; PRIMARY PROTOCOL START
2516 ; 008 07-OCT-77 R. BELANGER IGNORE COMM REGION IF SO DIRECTED BY "TKTN"
2517 ;
2518 ; MACRO CALLS
2519 ;
2521 .MCALL CALL,RETURN,.STKM,CLEF$S,WTSE$S,QIOW$,DTON$S,.CRASH
2522 .MCALL WSIG$S,.ENB0,.INH6,.ENB6,$DEF
2523 005352 $DEF
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 43
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
2526 .SBTTL SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
2527 ;
2528 ; BTPROT -- ROUTINE TO HANDLE THE PROTOCOL BETWEEN
2529 ; RSX20F INITALIZATION AND BOOTS
2530 ; IT IS ASSUMED THAT THIS PROTOCOL WILL BE USED
2531 ; DURING INITALIZATION AND IN CASE OF MONITOR CRASHED ETC
2532 ; WHEN THE NORMAL MEANS OF COMMUNICATIONS THRU THE COMM REGION ARE DESTROYED
2533 ;
2534 ;
2535 ; CALLING SEQUENCE:
2536 ;
2537 ;
2538 ; IF SUCCESS IN COMMUNICATION WITH BOOTS IT WILL ENTER (OR RE-ENTER)
2539 ;
2540 ; IF UNSUCCESSFUL IT WILL RETURN TO KLDCP
2541 ;
2542 ;
2543 005352 BTPHD::
2544 005352 .STKM 0,1,2,3,4,5,0,BTPRO,174000,.BTSTK
005420 000000 000000 000000 .WORD 0,0,0,0
005426 000000
005446 174000 005652' 005632' .WORD 174000,BTPRO,.BTSTK
005502 000005 .WORD 5
005504 037202' .WORD TTPEN
005506 000000 .WORD 0
005510 000000 .WORD 0
005512 000000 .WORD 0
005514 000000 .WORD 0
005516 000000 .WORD 0
005520 000000 .WORD 0
005522 000000 .WORD 0
005524 000000 .WORD 0
005526 000000 .WORD 0
005530 000000 .WORD 0
005632 000000 .WORD 0
005634 000001 .WORD 1
005636 000002 .WORD 2
005640 000003 .WORD 3
005642 000004 .WORD 4
005644 000005 .WORD 5
005646 005652' .WORD BTPRO
005650 174000 .WORD 174000
2545
2546 005652 BTPRO:
2547 005652 WTSE$S #E.FPR2 ;WAIT FOR ACTIVATION.
005652 012746 000076 MOV #E.FPR2,-(SP)
005656 012746 MOV (PC)+,-(SP)
005660 051 002 .BYTE 41.,2
005662 104375 EMT 375
2548 005664 052737 100000 033036' BIS #BIT15,FETSK+A.EF ;SET SECONDARY PROTOCOL FLAG FOR FETSK
2549 005672 013700 031356' MOV .PRDTE,R0 ;FIND ADDRESS OF PRIVILEDGED DTE
2550 005676 013705 031354' MOV .PRSTA,R5
2551 005702 012715 000010 MOV #INTROF,@R5 ;CLEAR THE STATUS
2552 005706 000405 BR 20$ ;GO LOOK FOR CHANGE TO BOOT PROTOCOL
2553 ;
2554 005710 10$:
2555 005710 .ENB6 ;;;ENABLE INTERRUPTS
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 43-1
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
005710 012637 177776 MOV (SP)+,@#PS
2556 005714 WSIG$S ;WAIT FOR SIG EVENT
005714 012746 MOV (PC)+,-(SP)
005716 061 001 .BYTE 49.,1
005720 104375 EMT 375
2557 005722 20$:
2558 005722 .INH6 ;INHIBIT INTERRUPTS
005722 013746 177776 MOV @#PS,-(SP)
005726 112737 000300 177776 MOVB #300,@#PS
2559 005734 032737 002000 031114' BIT #EF.CRI,.COMEF+2 ;;; +++008 IS THE COMM REGION VALID??
2560 005742 001015 BNE 30$ ;;; +++008 NO -- GO ON
2561 005744 005060 000010 CLR TNAD1(R0) ;;; MAYBE -- LOOK FOR PROTOCOL CHANGE
2562 005750 005060 000012 CLR TNAD2(R0) ;;;BY TESTING RELATIVE ADDR WORD
2563 005754 CALL WFED ;;;WAIT FOR EXAMINE
005754 004737 044012' JSR PC,WFED
2564 005760 103432 BCS 47$ ;;;KL HAS BEEN LOST..
2565 005762 005760 000002 TST DXWD3(R0) ;;;IF NON-ZERO
2566 005766 001403 BEQ 30$ ;;;THEN EXAMINE VALID, SO
2567 005770 010702 MOV PC,R2 ;;; +++006 SAY NO ACKNOWLEGE NEEDED
2568 005772 000137 006656' JMP 120$ ;;; +++005 RETURN TO PRIMARY PROTOCOL.
2569 ;
2570 005776 30$:
2571 005776 032715 000010 BIT #RM,@R5 ;;;PRIVILEDGED DTE?
2572 006002 001342 BNE 10$ ;;;NO -- CONTINUE WAITING FOR PRIMARY
2573 006004 032760 004000 000030 BIT #DS04,DAG1(R0) ;;;CHECK FOR CLOCK ERROR STOP
2574 006012 001146 BNE 86$ ;;;YES -- STOP PROTOCOL
2575 006014 032715 004000 BIT #TO11DB,@R5 ;;;WAIT OR A DOORBELL INTERRUPT
2576 006020 001733 BEQ 10$ ;;;LOOP UNTIL IT OCCURS
2577 006022 40$:
2578 006022 005237 031360' INC .PRDCT ;;; +002 ONE MORE DOORBELL....
2579 006026 012760 004000 000010 MOV #PRTOFF!EPTR,TNAD1(R0) ;;; +001 PROTECT OFF
2580 006034 012760 000451 000012 MOV #DTECMD,TNAD2(R0) ;;;READ THE COMMAND PASSED
2581 006042 CALL WFED ;;;WAIT FOR EXAMINE DEPOSIT
006042 004737 044012' JSR PC,WFED
2582 006046 47$:
2583 006046 103532 BCS 87$
2584 006050 012715 002000 MOV #INT11C,@R5 ;;;ALLOW MORE DOORBEL INTERRUPTS
2585 006054 122760 000011 000003 CMPB #11,DXWD3+1(R0) ;;;LOOK AT THE COMMAND WORD
2586 006062 001312 BNE 10$ ;;;NOT WHAT WE WANT...
2587 ;
2588 ; CHANGE PROTOCOL TO SECONDARY (FUNCTION 11)
2589 ;
2590 006064 50$:
2591 006064 012760 177777 000002 MOV #-1,DXWD3(R0) ;;;ACKNOWLEDGE THE COMMAND
2592 006072 052760 014000 000010 BIS #DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +001 SET DEPOSIT IN TEN MEMORY FLAG
2593 006100 012760 000444 000012 MOV #DTEFLG,TNAD2(R0) ;;;START TRANSFER TO DTE FLAG WORD
2594 006106 CALL WFED ;;;WAIT FOR EXAMINE DEPOSIT
006106 004737 044012' JSR PC,WFED
2595 006112 103510 BCS 87$ ;;;TEN STOPPED
2596 006114 012715 000400 MOV #TO10DB,@R5 ;;;SET 10'S DOORBELL
2597 006120 005037 031300' CLR .BTSCH ;;;CLEAR ANY SAVED CHARACTERS
2598 ;
2599 ; AT THIS POINT WE ARE OFFICIALLY IN SECONDARY PROTOCOL
2600 ;
2601 ; THIS IS THE MAIN COMMAND LOOP WHICH PROCESSES THE SECONDARY
2602 ; PROTOCOL COMMANDS AND PASSES CTY CHARACTERS TO THE -10.
2603 ;
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 43-2
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
2604 006124 60$:
2605 006124 .ENB6 ;;;ENABLE INTERRUPTS
006124 012637 177776 MOV (SP)+,@#PS
2606 006130 WSIG$S ;WAIT FOR SIG EVENT
006130 012746 MOV (PC)+,-(SP)
006132 061 001 .BYTE 49.,1
006134 104375 EMT 375
2607 006136 .INH6 ;INHIBIT INTERRUPTS
006136 013746 177776 MOV @#PS,-(SP)
006142 112737 000300 177776 MOVB #300,@#PS
2608 006150 032715 004000 BIT #TO11DB,@R5 ;;;WAIT FOR ANOTHER DOORBELL
2609 006154 001073 BNE 90$ ;;;FOUND IT -- CHECK THE COMMAND
2610 006156 032760 004000 000030 BIT #DS04,DAG1(R0) ;;;CHECK FOR CLOCK ERROR STOP
2611 006164 001061 BNE 86$ ;;;YES -- STOP PROTOCOL
2612 006166 70$:
2613 006166 113701 031300' MOVB .BTSCH,R1 ;;;CHECK FOR CTY CHARACTER
2614 006172 001754 BEQ 60$
2615 ;
2616 ; TRANSFER CTY CHARACTER TO -10
2617 ;
2618 006174 80$:
2619 006174 012760 004000 000010 MOV #PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF
2620 006202 012760 000456 000012 MOV #DTEMTI,TNAD2(R0) ;;;PICK UP THE INPUT BUSY FLAG
2621 006210 81$:
2622 006210 CALL WFED ;;;WAIT FOR EXAMINE DEPOSIT
006210 004737 044012' JSR PC,WFED
2623 006214 103447 BCS 87$ ;;;TEN STOPPED
2624 006216 005760 000004 TST DXWD2(R0)
2625 006222 001340 BNE 60$ ;;;TEN CAN'T ACCEPT ANOTHER CHARACTER YET
2626 006224 042701 177600 BIC #^C177,R1 ;;;MASK OFF JUNK
2627 006230 010160 000002 MOV R1,DXWD3(R0) ;;;PUT THE WORD IN THE DTE
2628 006234 005060 000004 CLR DXWD2(R0)
2629 006240 005060 000006 CLR DXWD1(R0)
2630 006244 012760 014000 000010 MOV #DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG
2631 006252 012760 000450 000012 MOV #DTEF11,TNAD2(R0) ;;;STORE THE CHARACTER IN THE 10
2632 006260 CALL WFED ;;;WAIT FOR EXAMINE/DEPOSIT
006260 004737 044012' JSR PC,WFED
2633 006264 103423 BCS 87$ ;;;TEN STOPPED
2634 006266 105037 031300' CLRB .BTSCH ;;;CHARACTER HAS NOW BEEN SENT
2635 006272 012760 177777 000002 MOV #-1,DXWD3(R0) ;;;SET CHARACTER IN BUFFER FLAG
2636 006300 012760 014000 000010 MOV #DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEP!PRTOFF!EPTR DEPOSIT FLAG
2637 006306 012760 000456 000012 MOV #DTEMTI,TNAD2(R0) ;;;TRANSFER TO 10 MEMORY
2638 006314 CALL WFED ;;;WAIT FOR TRANSFER
006314 004737 044012' JSR PC,WFED
2639 006320 103405 BCS 87$ ;;;TEN STOPPED
2640 006322 012715 000400 MOV #TO10DB,@R5 ;;;SET THE 10'S DOORBELL
2641 006326 000676 BR 60$ ;;;CONTINUE POLLING
2642 ;
2643 ; AN ERROR ON EXAMINE / DEPOSIT TURNS OFF BOOT PROTOCOL
2644 ;
2645 006330 86$:
2646 006330 CALL WFED ;;;RECOGNIZE ERROR, THEN
006330 004737 044012' JSR PC,WFED
2647 006334 87$:
2648 006334 .ENB0 ;;; +++006 ENABLE INTERRUPTS
006334 004737 041526' JSR PC,..ENB0
2649 006340 000137 005652' JMP BTPRO ;AND GO TO WAIT FOR REACTIVATION.
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 43-3
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
2650 ;
2651 ; RECIEVE A COMMAND FROM THE -10
2652 ;
2653 006344 90$:
2654 006344 005237 031360' INC .PRDCT ;;; +002 ONE MORE DOORBELL...
2655 006350 012760 004000 000010 MOV #PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET PROTECT OFF
2656 006356 012760 000451 000012 MOV #DTECMD,TNAD2(R0) ;;;READ THE COMMAND WORD
2657 006364 CALL WFED ;;;WAIT FOR EXAMINE DEPOSIT
006364 004737 044012' JSR PC,WFED
2658 006370 012715 002000 MOV #INT11C,@R5 ;;;WARNING !!!!!DON'T MOVE THIS INSTRUCTION!!!!!!!
2659 ;;;DOORBELL MUST NOT BE CLEARED BEFORE THE
2660 ;;;10 FINISHES THE SET DOORBELL!!!!!!
2661 ;;;IT IS GUARANTEED TO BE SAFE AFTER WFED
2662 006374 103757 BCS 87$ ;;;TEN STOPPED
2663 006376 122760 000012 000003 CMPB #12,DXWD3+1(R0) ;;;MONITOR MODE CONTROL OFF?
2664 006404 001443 BEQ 100$ ;;;YES -- RE-ENTER RSX20F
2665 006406 122760 000011 000003 CMPB #11,DXWD3+1(R0) ;;;MONITOR MODE CONTROL ON?
2666 006414 001003 BNE 95$ ;;;NO -- MUST BE CTY CHARACTER
2667 006416 012715 002000 MOV #INT11C,@R5 ;;;ALLOW MORE DOORBELLS AND
2668 006422 000620 BR 50$ ;;;ACKNOWLEDGE THE COMMAND.
2669 ;
2670 ; OUTPUT A CHARACTER TO THE CTY (FUNCTION 10)
2671 ;
2672 006424 95$:
2673 006424 116037 000002 007004' MOVB DXWD3(R0),QPROAD ;;;OUTPUT A CHARACTER
2674 006432 .ENB6 ;;;ENABLE INTERRUPTS
006432 012637 177776 MOV (SP)+,@#PS
2675 006436 DIR$ #QPROMS ;OUTPUT CHARACTER
006436 012746 006762' MOV #QPROMS,-(SP)
006442 104375 EMT 375
2676 006444 .INH6 ;INHIBIT INTERRUPTS
006444 013746 177776 MOV @#PS,-(SP)
006450 112737 000300 177776 MOVB #300,@#PS
2677 006456 012760 177777 000002 MOV #-1,DXWD3(R0) ;;;ACKNOWLEDGE CHARACTER OUTPUT
2678 006464 012760 014000 000010 MOV #DEP!PRTOFF!EPTR,TNAD1(R0) ;;; +001 SET DEPOSIT
2679 006472 012760 000455 000012 MOV #DTEMTD,TNAD2(R0) ;;;START TRANSFER TO INDICATE CHARACTER OUTPUT
2680 006500 CALL WFED ;;;WAIT FOR EXAMINE DEPOSIT
006500 004737 044012' JSR PC,WFED
2681 006504 103713 BCS 87$ ;;;WHOOPS !
2682 006506 012715 000400 MOV #TO10DB,@R5 ;;;CLEAR THE 11 DOORBELL AND SET THE 10'S DOORBELL
2683 006512 000625 BR 70$ ;;;CONTINUE POLLING
2684 ;
2685 ; CHANGE PROTOCOL TO PRIMARY (FUNCTION 12)
2686 ;
2687 006514 100$:
2688 006514 005002 CLR R2 ;;; +++006 NEED ACKNOWLEGE
2689 006516 042737 006000 031114' BIC #EF.PFR!EF.CRI,.COMEF+2 ;;; +++007 GUARD AGAINST SPURIOUS POWERFAIL
2690 ;;; +++008 DECLARE COMM REGION VALID
2691 006524 032760 000001 000002 BIT #1,DXWD3(R0) ;;;CHECK FOR RE-INIT
2692 006532 001451 BEQ 120$ ;;; +++006 NO
2693 006534 110$:
2694 006534 010046 MOV R0,-(SP)
2695 006536 113$:
2696 006536 013704 031742' MOV TO10Q,R4 ;;; +003 Q LISTHEAD TO R4
2697 006542 022704 031742' CMP #TO10Q,R4 ;;; +003 DONE?
2698 006546 001416 BEQ 112$ ;;; +003 YES -- LEAVE
2699 006550 CALL ..NDEL ;;; +003 NO -- REMOVE THIS ENTRY FROM Q
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 43-4
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
006550 004737 041306' JSR PC,..NDEL
2700 006554 005764 000012 TST 12(R4) ;;; +003 TEST INDIRECT INDICATOR
2701 006560 003003 BGT 111$ ;;; +003 NOT INDIRECT -- GO ON
2702 006562 056474 000024 000026 BIS 24(R4),@26(R4) ;;; +003 INDIRECT -- DECLARE XFER COMPLETE
2703 006570 111$:
2704 006570 010400 MOV R4,R0 ;;; +003 SET UP TO
2705 006572 016001 000004 MOV 4(R0),R1 ;;; +003 RETURN CORE BLOCK
2706 006576 CALL ..DECB ;;; +003 RETURN IT
006576 004737 042012' JSR PC,..DECB
2707 006602 000755 BR 113$ ;;; +003 DO NEXT ENTRY IN Q
2708 ;
2709 006604 112$:
2710 006604 005037 031740' CLR TO10QC ;;; +003 DONE -- CLEAR CURRENT COUNTS
2711 006610 005037 031666' CLR .CPDV ;;; CLEAR CURRENT TO-10 DEVICE
2712 006614 013700 031674' MOV .CRHD,R0 ;;; GET CURRENT NODE
2713 006620 062700 000010 ADD #10,R0 ;;; POINT TO DATA AREA
2714 006624 010037 031672' MOV R0,.CRPB ;;; AND SET BUFFER POINTER.
2715 006630 005060 177776 CLR -2(R0) ;;; CLEAR ENTRY COUNT
2716 006634 016000 177774 MOV -4(R0),R0 ;;; GET LENGTH OF NODE
2717 006640 162700 000012 SUB #10.,R0 ;;; ADJUST,
2718 006644 010037 031670' MOV R0,.CRSZ ;;; AND SET BUFFER SIZE.
2719 006650 005037 031662' CLR .CRQZ ;;; NOTHING ENTERED YET.
2720 006654 012600 MOV (SP)+,R0
2721 006656 120$: ;;; +++005
2722 006656 CLEF$S #E.FPR2 ;;;TURN SECONDARY PROTOCOL OFF
006656 012746 000076 MOV #E.FPR2,-(SP)
006662 012746 MOV (PC)+,-(SP)
006664 037 002 .BYTE 31.,2
006666 104375 EMT 375
2723 006670 DTON$S ;;;ENABLE DTE20
006670 012746 000003 MOV #DF.ON,-(SP)
006674 012746 001011 MOV #400*2.+DR.DTE,-(SP)
006700 104375 EMT 375
2724 006702 103614 BCS 87$ ;;; +++006 LOST COMM REGION
2725 006704 005702 TST R2 ; +++006 ACKNOWLEGE??
2726 006706 001013 BNE 130$ ; +++006 NO -- GO ON
2727 006710 012760 177777 000002 MOV #-1,DXWD3(R0) ;;; +++006 ACK THE COMMAND
2728 006716 012760 014000 000010 MOV #DEP!EPTR!PRTOFF,TNAD1(R0) ;;; +++001 SET DEPOSIT
2729 006724 012760 000444 000012 MOV #DTEFLG,TNAD2(R0) ;;; +++006 START IT
2730 006732 CALL WFED ; +++006 WAIT FOR IT
006732 004737 044012' JSR PC,WFED
2731 006736 130$: ;;; +++006
2732 006736 012715 000440 MOV #INTRON!TO10DB,@R5 ;;;ENABLE INTERRUPTS
2733 006742 .ENB0 ;;;ENABLE INTERRUPTS
006742 004737 041526' JSR PC,..ENB0
2734 006746 005237 031302' INC .ACKAL ;SEND ACK ALL
2735 006752 005037 031306' CLR .FEACT ;FE IS NOW AVAILABLE
2736 006756 000137 005652' JMP BTPRO ;WAIT FOR PROTOCOL REACTIVICATION.
2737 ;
2738 006762 QPROMS:
2739 006762 QIOW$ IO.WLB,1,2,0,0,0,<QPROAD,1,0>
006762 003 011 .BYTE 3,$$$ARG
006764 000400 .WORD IO.WLB
006766 000001 .WORD 1
006770 002 000 .BYTE 2,0
006772 000000 .WORD 0
006774 000000 .WORD 0
BOOT -- BOOT PROTOCOL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 43-5
SECONDARY PROTOCOL -- BOOT PROTOCOL SERVICE
006776 007004' .WORD QPROAD
007000 000001 .WORD 1
007002 000000 .WORD 0
2740 007004 QPROAD:
2741 007004 000000 .WORD 0
2742 .TITLE PF -- POWER FAIL HANDLER
2743 007006 IDENT$ 10,6
.IDENT /010060/
2744 ;
2745 ; COPYRIGHT (C) 1975, 1978 BY
2746 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2747 ;
2748 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2749 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2750 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2751 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2752 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2753 ;
2754 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2755 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2756 ; CORPORATION.
2757 ;
2758 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2759 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2760 ;
2761 ; MODULE: "POWER FAIL"
2762 ;
2763 ; VERSION: 10-06
2764 ;
2765 ; AUTHOR: R. MCLEAN
2766 ;
2767 ; DATE: 19 JUL 75
2768 ;
2769 ;
2770 ; THIS MODULE CONTAINS:
2771 ;
2772 ; 1 -- CODE TO SUPPORT POWER FAIL
2773 ;
2774 ; MODIFICATIONS:
2775 ;
2776 ; NO. DATE PROGRAMMER REASON
2777 ; --- ---- ---------- ------
2778 ; 001 10-AUG-77 R. BELANGER WAIT FOR KL CROBAR TO
2779 ; SETTLE ON POWER RESTART
2780 ; 002 18-AUG-77 R. BELANGER FLAG POWER RESTART
2781
2783 .MCALL CALL,$DEF,.CRASH
2784 007006 $DEF
PF -- POWER FAIL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 44
POWERFAIL -- POWER DOWN
2787 .SBTTL POWERFAIL -- POWER DOWN
2788 ;
2789 ; POWER FAILURE AND RECOVERY SERVICE
2790 ;
2791 ; WHEN A POWER FAILURE TRAP OCCURS, THE VOLATILE REGISTERS
2792 ; ARE SAVED AND THE TRAP VEECTOR FOR POWER UP IS SET.
2793 ;
2794 ; IF POWER FAIL INTERRUPTS A PRI 7 (I/O INITALIZE OR DTE
2795 ; EXAMINE/DEPOSIT) THEN .PFAIL IS SET AND RTI
2796 ; IS EXECUTED. ROUTINES WHICH BREAK DOWN FROM PRI7
2797 ; MUST CHECK TO SEE IF .PFAIL IS SET AND JUMP TO
2798 ; .PFRTN -- THIS WILL ALLOW THEM TO FINISH AND
2799 ; STILL PROTECT POWERFAIL FROM FAILING
2800 ;
2801 ;
2802 ; NOTE: POWERFAIL TRAP CANNOT BE INHIBITED.
2803 ; POWER FAIL TRAP SERVICE CAN NOT USE ROUTINES THAT INHIBIT
2804 ; INTERRUPTS TO AVOID RACE CONDITIONS
2805 ;
2806 ; NOTE: ALL MEMORY IS ASSUMED TO BE NON-VOLATILE (IT CANNOT BE
2807 ; SAVED IN THE TIME PERMITTED FOR POWER FAIL SAVE)
2808 ;
2809 ; POWER DOWN ENTRY -- CONTROL IS TRANSFERRED HERE (VIA POWER
2810 ; FAIL TRAP VECTOR) AT PRIORITY SEVEN.
2811 ;
2812 007006 .PWRDN::
2813 007006 052737 006000 031114' BIS #EF.PFR!EF.CRI,.COMEF+2 ; +++002 ALWAYS FLAG POWER FAIL (ALWAYS!)
2814 007014 016646 000002 MOV 2(SP),-(SP) ;FIND THE PS
2815 007020 042716 177437 BIC #177437,@SP ;MASK OFF ALL BUT PRI
2816 007024 022726 000340 CMP #340,(SP)+ ;IS IT PRI 7?
2817 007030 001005 BNE 10$ ;NO -- THEN ACCEPT POWER FAIL
2818 007032 005237 040376' INC .PFAIL ;SET POWER FAIL ERROR
2819 007036 105237 031116' INCB .SERFG+0 ; +++001 LEST WE FORGET...
2820 007042 000006 RTT ;RETURN TO CALLER
2821
2822 007044 013746 000006 10$: MOV @#6,-(SP) ;SAVE LOW CORE
2823 007050 013746 000004 MOV @#4,-(SP)
2824 007054 012737 007130' 000004 MOV #20$,@#4 ;SET UP TO HALT IF FAKE POWER FAIL
2825 007062 012737 000340 000006 MOV #340,@#6 ;SET PRIORITY 7 IN ODD ADDRESS TRAP ADDRESS
2826 007070 005737 173000 TST .BM873 ;IF NOT POWER FAIL THIS WILL TRAP TO 4
2827 007074 010046 MOV R0,-(SP) ;SAVE REGISTERS
2828 007076 010146 MOV R1,-(SP)
2829 007100 010246 MOV R2,-(SP)
2830 007102 010346 MOV R3,-(SP)
2831 007104 010446 MOV R4,-(SP)
2832 007106 010546 MOV R5,-(SP)
2833 007110 010637 040402' MOV SP,PWRXSP ;SAVE STACK REGISTER
2834 007114 012737 007134' 000024 MOV #PWR.UP,@#24 ;SET UP POWER UP TRAP VECTOR ADDRESS
2835 007122 012737 000006 007132' MOV #6,CROBAR ; +++001 SET UP CROBAR COUNTER
2836 007130 000000 20$: HALT
2837
2838 007132 CROBAR:: ; +++001
2839 007132 000000 .WORD 0 ; +++001 KL CROBAR COUNTER
PF -- POWER FAIL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 45
POWERFAIL -- POWER UP ENTRY
2841 .SBTTL POWERFAIL -- POWER UP ENTRY
2842
2843 ;
2844 ;
2845 ; POWER UP ENTRY
2846 ;
2847 007134 PWR.UP::
2848 007134 013706 040402' MOV PWRXSP,SP ;RESTORE STACK POINTER
2849 007140 012737 007134' 000004 MOV #PWR.UP,@#4 ; +++001 MAKE BUS TIMEOUT TRAP TO "PWR.UP"
2850 007146 012737 004340 000006 MOV #4340,@#6
2851 007154 005337 007132' DEC CROBAR ; +++001 COUNT THIS ATTEMPT
2852 007160 003003 BGT 10$ ; +++001 ALL OK IF STILL .GT. 0
2853 007162 .CRASH CBR ; +++001 CRASH IF MORE THAN ONE MINUTE
007162 000004 IOT
007164 103 102 122 .ASCIZ /CBR/
007167 000
2854 ;
2855 007170 10$:
2856 007170 013701 031356' MOV .PRDTE,R1 ; +++001 ADDRESS OF DTE20 TO R1
2857 007174 CALL 20$ ; +++001 WAIT FOR KL CROBAR
007174 004737 007314' JSR PC,20$
2858 007200 CALL 20$ ; +++001 AND BE DAMN SURE OF IT
007200 004737 007314' JSR PC,20$
2859 007204 012761 000100 000032 MOV #DRESET,DAG2(R1) ; +++001 RESET THE DTE20
2860 007212 005037 040376' CLR .PFAIL ;CLEAR POWER FAIL FLAG
2861 007216 012737 177777 040400' MOV #-1,.PFIOW ;SET POWER FAIL BITS TO INTERRUPT ROUTINES
2862 007224 012605 MOV (SP)+,R5 ;RESTORE REGISTERS
2863 007226 012604 MOV (SP)+,R4
2864 007230 012603 MOV (SP)+,R3
2865 007232 012602 MOV (SP)+,R2
2866 007234 012601 MOV (SP)+,R1
2867 007236 012600 MOV (SP)+,R0
2868 007240 012637 000004 MOV (SP)+,@#4 ;RESTORE LOW CORE
2869 007244 012637 000006 MOV (SP)+,@#6
2870 007250 012737 007006' 000024 MOV #.PWRDN,@#24 ;SET UP POWER DOWN TRAP AGAIN
2871 007256 052737 000100 031234' BIS #KS.PFT,.KLITK ;FORCE POWER RESTART
2872 007264 012737 000401 031230' MOV #401,.NOERR ;SET NO ERROR OR HALT
2873 007272 CALL ..DTSP ;TURN OFF PROTOCOL TASKS
007272 004737 044300' JSR PC,..DTSP
2874 007276 105237 031232' INCB .TKTN ;TASK TERMINATION REQUEST
2875 007302 152737 000200 031116' BISB #EV.PF,.SERFG+0 ;INDICATE POWER FAIL & SIG EVENT
2876 007310 000137 004146' JMP ..INTX ;RETURN TO INTERRUPTED ROUTINE
2877 ;
2878 007314 20$: ; +++001
2879 007314 012700 000454 MOV #^D<5*60>,R0 ; +++001 WAIT FOR CROWBAR TO SETTLE (5 SECONDS)
2880 007320 30$: ; +++001
2881 007320 105737 177546 TSTB @#LKS ; +++001 CHECK WITH CLOCK
2882 007324 100375 BPL 30$ ; +++001 WAIT FOR TICK
2883 007326 105037 177546 CLRB @#LKS ; +++001 CLEAR CLOCK FLAG
2884 007332 077006 SOB R0,30$ ; +++001 WAIT THE FULL COUNT
2885 007334 005777 022014 TST @.PRSTA ; +++001 LOOK AT DTE20 STATUS REGISTER
2886 ; +++001 IF NOT THERE (CROBAR TRUE) TRAP
2887 ; +++001 TO "PWR.UP", ELSE GO ON
2888 007340 RETURN ; +++001 MADE IT -- RETURN
007340 000207 RTS PC
PF -- POWER FAIL HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 46
POWERFAIL -- POWER FAIL RESTART
2890 .SBTTL POWERFAIL -- POWER FAIL RESTART
2891
2892 ;
2893 ; .PFAIL INDICATES POWER FAIL IN PROGRESS
2894 ; .PFIOW IS BIT ENCODED TO INDICATE POWER FAIL
2895 ; OCCURED AND POWER UP RECOVERY IS NECESSARY
2896 ;
2897 007342 .PFRST::
2898 007342 013746 000004 MOV @#4,-(SP) ;SAVE ABS 6 &4 (NEXM STOP)
2899 007346 013746 000006 MOV @#6,-(SP)
2900 007352 010046 MOV R0,-(SP) ;POWER FAIL RESTORE
2901 007354 010146 MOV R1,-(SP)
2902 007356 010246 MOV R2,-(SP)
2903 007360 010346 MOV R3,-(SP)
2904 007362 010446 MOV R4,-(SP)
2905 007364 010546 MOV R5,-(SP)
2906 007366 012737 177777 040400' MOV #-1,.PFIOW ;INDICATE POWER/FAIL TTY ENABLE
2907 007374 CALL .DMTMO ;DO TIMEOUT
007374 004737 030414' JSR PC,.DMTMO
2908 007400 CALL .DLTMO
007400 004737 030142' JSR PC,.DLTMO
2909 007404 005237 000000G INC .LPPFL
2910 007410 005237 000000G INC .CRPFL
2911 007414 005037 040400' CLR .PFIOW ;CLEAR POWER FAIL FLAG
2912 007420 042737 004000 031114' BIC #EF.PFR,.COMEF+2 ; +++002 CLEAR POWERFAIL IN PROGRESS FLAG
2913 007426 012737 000100 177546 MOV #.INTEN,@#LKS ;ENABLE CLOCK
2915 007434 012777 000400 021712 MOV #TO10DB,@.PRSTA ;SET THE DOORBELL TO TELL 10 WE ARE HERE AND READY
2917 007442 012605 MOV (SP)+,R5 ;RESTORE
2918 007444 012604 MOV (SP)+,R4
2919 007446 012603 MOV (SP)+,R3
2920 007450 012602 MOV (SP)+,R2
2921 007452 012601 MOV (SP)+,R1
2922 007454 012600 MOV (SP)+,R0
2923 007456 012704 000020 MOV #16.,R4 ;SET UP TO RESTORE PARITY ERROR REGISTERS
2924 007462 012705 172100 MOV #.PARRG,R5 ;SET UP THE ADDRESS OF THE REGISTERS
2925 007466 012737 000006 000004 MOV #6,@#4 ;SET UP 4 TO TRAP TO 6
2926 007474 012737 000002 000006 MOV #2,@#6 ;SET 6 TO BE A RTI INSTRUCTION
2927 ;ALL THE REGISTERS WILL NOT EXIST AND THERE
2928 ;MAY BE A HOLE IN THESE REGISTERS
2929 ;THEREFORE TRAPS TO 4 WILL OCCUR
2930 ;THIS CODE WILL SET UP THE REGISTERS AND
2931 ;WILL NOT CARE IF REGISTERS ARE MISSING.
2932 007502 012725 000001 PARLOA: MOV #1,(R5)+ ;ENABLE PARITY CHECKING
2933 007506 005304 DEC R4
2934 007510 001374 BNE PARLOA ;DO AGAIN IF NOT ALL REGISTERS
2935 007512 012637 000006 MOV (SP)+,@#6 ;RESTORE LOW CORE
2936 007516 012637 000004 MOV (SP)+,@#4
2937 007522 RETURN ;RETURN TO CALLER
007522 000207 RTS PC
2938 .TITLE DMDTE - DTE DIRECTIVES MODULE
2939 007524 IDENT$ 7,3
.IDENT /007030/
2940 ;
2941 ; COPYRIGHT (C) 1975, 1978 BY
2942 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2943 ;
2944 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 46-1
POWERFAIL -- POWER FAIL RESTART
2945 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2946 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2947 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2948 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2949 ;
2950 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2951 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2952 ; CORPORATION.
2953 ;
2954 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2955 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2956 ;
2957 ; MODULE: "DTE20" DIRECTIVE
2958 ;
2959 ; VERSION: 07-03
2960 ;
2961 ; AUTHOR: R. MCLEAN
2962 ;
2963 ; DATE: 19 MAR 75
2964 ;
2965 ;
2966 ; THIS MODULE CONTAINS:
2967 ;
2968 ; 1 -- CODE TO SERVICE THE DTE20 EMT SERVICE
2969 ;
2970 ; MODIFICATIONS:
2971 ;
2972 ; NO. DATE PROGRAMMER PURPOSE
2973 ; --- ---- ---------- -------
2974 ; 001 14-MAR-77 R. BELANGER CONDITIONALLY REMOVE UNUSED
2975 ; DTE-20 EMT SERVICES
2976 ; 002 01-APR-77 A. PECKHAM FIX BUG IN "$DTEON"
2977 ; 003 18-AUG-77 R. BELANGER FIX "$DTEON" TO RETURN CORRECT STATUS
2978 ; AND NOT START PRIMARY PROTOCOL IF
2979 ; "SWFED" FAILS.
2980 ;
2981 ; MACRO CALLS
2982 ;
2984 .MCALL CALL,RETURN,MFPI,MTPI,MFPS,MTPS,.CRASH,.INH,.ENB,$DEF
2985 007524 $DEF
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 47
DTE20 EMT DISPATCH DECODER
2988 .SBTTL DTE20 EMT DISPATCH DECODER
2989 ;
2990 ; CALLED BY EMT DISPATCH
2991 ; THIS ROUTINE DECODES THE SPECIFIC DTE FUNCTION CODE
2992 ; AND DISPATCHES TO THE CORRECT FUNCTION
2993 ;
2994 ; ENTRY CONDITIONS:
2995 ;
2996 ; R1 -- ADDRESS OF DPB
2997 ; R2 -- SIZE OF DPB
2998 ; R3 -- DIRECTIVE IDENTIFICATION CODE
2999 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
3000 ;
3001 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3002 ;
3003 ; R0,R1,R2,R3,R4,R5
3004 ;
3005 ; REGISTERS FOR USER AND DOES NOT REQUIRE EMT SERVICE
3006 ; ROUTINES TO SAVE EMT'S REGISTERS.
3007 ;
3008 ; EXIT TO DTE EMT SERVICE ROUTINE CONDITIONS:
3009 ;
3010 ; 3(SP) -- FUNCTION CODE PLUS HIGH ORDER BYTE OF SECOND WORD OF DPB
3011 ; R0 -- POINTER TO EXAMINE/DEPOSIT ADDRESSES
3012 ; R1 -- WORD 5 OF DPB
3013 ; R2 -- WORD 3 OF DPB
3014 ; R3 -- WORD 4 OF DPB
3015 ; R4 -- ADDRESS OF DPB
3016 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
3017 ;
3018 ;
3019 ;
3020 007524 005046 .D.DTE::CLR -(SP)
3021 007526 005046 CLR -(SP)
3022 007530 010146 MOV R1,-(SP) ;SAVE POINTER TO DPB FOR R4
3023 007532 MFPS (R1)+,R0 ;PUT THE FUNCTION CODE IN R0
007532 012100 MOV (R1)+,R0
3024 007534 150066 000002 BISB R0,2(SP)
3025 007540 105000 CLRB R0
3026 007542 010066 000004 MOV R0,4(SP)
3027 007546 010204 MOV R2,R4 ;SAVE SIZE OF DPB
3028 007550 005046 CLR -(SP) ;SET DEFAULT PROCESSOR NUMBER
3029 007552 162704 000002 SUB #2,R4 ;CHECK COUNT OF PARAMETERS
3030 007556 001406 BEQ 10$ ;IF ZERO REGISTERS DON'T NEED BE SET UP (NO PARAMS)
3031 007560 MFPS (R1)+,R2 ;MOVE THE CPU ADDRESS
007560 012102 MOV (R1)+,R2
3032 007562 MFPS (R1)+,R3 ;MOVE IN OFFSET ADDRESS TO COMM AREA
007562 012103 MOV (R1)+,R3
3033 007564 162704 000002 SUB #2,R4 ;CHECK TO SEE IF CPU PARAMETER
3034 007570 001401 BEQ 10$ ;NO -- DON'T ATTEMPT TO SET REGISTER
3035 007572 MFPS (R1)+,@SP ;YES -- SET CPU NUMBER
007572 012116 MOV (R1)+,@SP
3036 007574 012601 10$: MOV (SP)+,R1 ;SET CPU NUMBER
3037 007576 012604 MOV (SP)+,R4
3038 007600 CALL FNDCPU ;FIND DTE20 BLOCK
007600 004737 010730' JSR PC,FNDCPU
3039 007604 006316 ASL @SP ;MULTIPLY FUNCTION CODE BY 2 TO FORM OFFSET
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 47-1
DTE20 EMT DISPATCH DECODER
3040 007606 062716 007616' ADD #DTEDSP-2,@SP ;POINT INTO DISPATCH TABLE
3041 007612 017616 000000 MOV @(SP),@SP
3042 007616 000136 JMP @(SP)+ ;GO TO ROUTINE AND REMOVE ELEMENTFROM STACK
3043 ;
3044 ;
3045 007620 007656' DTEDSP: .WORD $DORBL ;RING DORBELL (FUNCTION CODE 1)
3046 007622 007660' .WORD $DTEOF ;TURN OFF DTE20 (FUNCTION CODE 2)
3047 007624 007672' .WORD $DTEON ;TURN ON DTE20 (FUNCTION CODE 3)
3048 007626 010262' .WORD $DPMYG ;DEPOSIT MY GENERAL SECTION (FUNCTION CODE 4)
3049 007630 010320' .WORD $EXMYG ;EXAMINE MY GENERAL SECTION (FUNCTION CODE 5)
3050 007632 010330' .WORD $EXMYN ;EXAMINE MY SECTION FOR CPU N (FUNCTION CODE 6)
3051 007634 010336' .WORD $DPMYN ;DEPOSIT MY SECTION FOR CPU N (FUNCTION CODE 7)
3052 007636 010344' .WORD $EXHSG ;EXAMINE HIS GENERAL COMM (FUNCTION CODE 10)
3053 007640 010352' .WORD $EXHSM ;EXAMINE HIS SECTION FOR ME (FUNCTION CODE 11)
3054 007642 010360' .WORD $KLDFR ;START KL10 DIAGNOSTIC FUNCTION READ
3055 007644 010516' .WORD $KLDFW ;START KL10 DIAGNOSTIC FUNCTION WRITE
3056 007646 010472' .WORD $KLDFX ;START KL10 DIAGNOSTIC FUNCTION (FUNCTION CODE 12)
3057 007650 010616' .WORD $PRVEX ;PRIVILEDGED EXAMINE (FUNCTION 13)
3058 007652 010654' .WORD $PRVDP ;PRIVILEDGED DEPOSIT (FUNCTION 14)
3059 007654 010676' .WORD $RWDRG ;READ/WRITE DIAGNOSTIC REGISTER (FUNCTION 15)
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 48
$DORBL -- RING THE KL-10 DOORBELL
3061 .SBTTL $DORBL -- RING THE KL-10 DOORBELL
3062 ;
3063 ;+
3064 ;
3065 ; $DORBL -- RING THE DOORBELL
3066 ; OF THE KL-10 SPECIFIED
3067 ;
3068 ;
3069 ; ENTRY CONDITIONS:
3070 ;
3071 ; R1 -- CPU NUMBER OF THE DTE TO RING THE DOORBELL
3072 ; CALL $DORBL
3073 ;
3074 ; EXIT CONDITIONS:
3075 ;
3076 ; CC-C CLEAR TO INDICATE SUCCESS
3077 ;
3078 ; R0 -- STATUS -- +1 DOORBELL RUNG
3079 ; +2 DOORBELL ALREADY RUNG (HAS NOT RESPONDED FROM LAST RING)
3080 ;
3081 ;
3082 ; ERROR CONDITIONS:
3083 ;
3084 ; CC-C SET
3085 ;
3086 ; R0 -- -1 ILLEGAL CPU NUMBER
3087 ; R0 -- -2 E BOX STOPPED
3088 ; R0 -- -3 SECONDARY PROTOCOL IN USE
3089 ;
3090 ;
3091 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3092 ;
3093 ;-
3094 007656 $DORBL::
3111
3112 007656 104635 TRAP DE.99 ; +++001 THIS ISN'T HERE
3113 ;
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 49
$DTEOF -- TURN THE DTE20 OFF
3116 .SBTTL $DTEOF -- TURN THE DTE20 OFF
3117 ;
3118 ;+
3119 ;
3120 ; $DTEOF -- TURN OFF THE DTE20
3121 ;
3122 ; CALLING SEQUENCE:
3123 ; ENTRY CONDITIONS:
3124 ;
3125 ;
3126 ; CALL $DTEOF
3127 ;
3128 ; EXIT CONDITIONS:
3129 ;
3130 ; R0 --1 TO INDICATE SUCCESS
3131 ; CC-C CLEAR TO INDICATE SUCCESS
3132 ;
3133 ;
3134 ; ERROR CONDITIONS: NONE
3135 ;
3136 ;
3137 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3138 ;
3139 ;-
3140 ;
3141 007660 $DTEOF::
3142 000000 .REPT 0
3143 MOV #16.,R0 ;TURN OFF ALL DTE'S
3144 MOV #PROTBL,R2 ;FIND THE TABLE
3145 10$: TST @R2 ;IS THERE A DTE HERE?
3146 BEQ 20$ ;NO -- FORGET IT
3147 MOV @R1,R3 ;FIND THE ADDRESS OF THE DTE
3148 MOV #INTROF,STATD(R3) ;SET THE STATSUS TO INTERRUPT OFF
3149 20$: ADD #5*2,R1 ;LOOK AT THE NEXT ENTRY IN THE TABLE
3150 SOB R0,10$ ;END OF TABLE?
3151 .ENDR; END .REPT 0
3152 007660 CALL ..DTSP ;+ TURN OFF PROTOCOLS AND
007660 004737 044300' JSR PC,..DTSP
3153 007664 CALL ..DTP2 ;+ START UP SECONDARY PROTOCOL.
007664 004737 044316' JSR PC,..DTP2
3154 007670 104401 TRAP DR.01 ;RETURN STATUS OK
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 50
$DTEON -- TURN THE DTE20 ON
3156 .SBTTL $DTEON -- TURN THE DTE20 ON
3157 ;
3158 ;+
3159 ;
3160 ; $DTEON -- TURN ON THE DTE20
3161 ; THIS ROUTINE WILL SET UP THE TABLES NECESSARY TO
3162 ; INITALIZE THE COMMUNICATON BETWEEN THE PDP10 AND PDP11'S
3163 ;
3164 ;
3165 ; ENTRY CONDITIONS:
3166 ;
3167 ;
3168 ; CALL $DTEON
3169 ;
3170 ; EXIT CONDITIONS:
3171 ;
3172 ; R0 --1 TO INDICATE SUCCESS
3173 ; CC-C CLEAR TO INDICATE SUCCESS
3174 ;
3175 ;
3176 ; ERROR CONDITIONS:
3177 ;
3178 ; R0 -2 -- E BOX STOPPED
3179 ; CC-C SET
3180 ;
3181 ;
3182 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3183 ;
3184 ;-
3185 ;
3186 007672 010546 $DTEON::MOV R5,-(SP)
3187 007674 013700 031356' MOV .PRDTE,R0 ;FIND THE COMMON DTE20
3188 007700 005001 CLR R1 ;;;SET UP TO FIND PROCESSOR NUMBER
3189 007702 005002 CLR R2 ;;;START TRANSFER OF ABS WORD 0 OF EPT (MY PROCESSOR NUMBER
3190 007704 012703 031206' MOV #DEXTM3,R3 ;;;SET UP ADDRESS TO STORE WORDS
3191 007710 CALL SWFED ;;;WAIT FOR EXAMINE/DEPOSIT
007710 004737 044200' JSR PC,SWFED
3192 007714 103417 BCS 1$ ;;;E BOX STOP
3193 007716 011304 MOV @R3,R4 ;;;YES --FIND OFFSET TO MY R/W AREA
3194 007720 113702 031211' MOVB @#DEXTM2+1,R2 ;;;FIND THE PROCESSOR NUMBER
3195 ;;; PROCESSOR NUMBER TO LOW ORDER BITS
3196 007724 042702 177760 BIC #177760,R2 ;;;MASK OFF JUNK(0.-15. LEGAL)
3197 007730 010237 031372' MOV R2,PRMEMN ;;;SAVE PROCESSOR NUMBER
3198 007734 005202 INC R2 ;;;FIND COMMUNICATIONS VIRTUAL 2
3199 007736 010237 031370' MOV R2,COMBSE ;;;SAVE BASE OF COMMUNICATIONS AREA
3200 007742 060402 ADD R4,R2 ;;;ADD OFFSET TO BASE OF COMM AREA
3201 007744 010237 031374' MOV R2,DEPOF ;;;SET CORRECT OFFSETT
3202 007750 CALL SWFED ;;;WAIT FOR TRANSFER
007750 004737 044200' JSR PC,SWFED
3203 007754 103537 1$: BCS 80$ ;;; +++003
3204 007756 013705 031210' 2$: MOV @#DEXTM2,R5 ;;;PICK UP THE NUMBER OF 8 TM BLOCKS
3205 007762 042705 177770 BIC #177770,R5 ;;;FIND THE NUMBER OF 8 WORD BLOCKS IN MY AREA
3206 007766 162705 000002 SUB #2,R5 ;;;ACCOUNT FOR MY GENERAL SECTION
3207 007772 010246 MOV R2,-(SP)
3208 007774 010546 MOV R5,-(SP) ;;;SAVE COUNT OF BLOCKS
3209 007776 16$: ;;; +++002
3210 007776 062766 000020 000002 ADD #FORPRO,2(SP) ;;;LOOK AT A COMMUNICATIONS AREA TO ANOTHER PROCESSOR
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 50-1
$DTEON -- TURN THE DTE20 ON
3211 010004 016602 000002 MOV 2(SP),R2
3212 010010 CALL SWFED ;;;WAIT FOR TRANSFER
010010 004737 044200' JSR PC,SWFED
3213 010014 103517 BCS 80$ ;;; +++003 E BOX STOPPED
3214 010016 011304 MOV @R3,R4 ;;;FIND PROCESSOR NUMBER
3215 010020 012705 031376' MOV #PROTBL,R5 ;SET INITIAL POINTER
3216 010024 042704 177770 BIC #177770,R4 ;;;MASK OFF JUNK
3217 010030 001403 BEQ 19$ ;;;YES -- CONTINUE
3218 010032 062705 000012 37$: ADD #5*2,R5 ;NO -- LOOK AT NEXT ENTRY
3219 010036 077403 SOB R4,37$ ;TRY UNTIL ALL DONE
3220 010040 013704 031210' 19$: MOV @#DEXTM2,R4 ;;;FIND NUMBER OF 8 WORD BLOCS
3221 010044 042704 177770 BIC #177770,R4 ;;;MASK OFF POSSIBLE GARBAGE
3222 010050 160416 SUB R4,@SP ;;;UPDATE COUNT OF BLOCKS
3223 010052 005015 CLR @R5 ;;;SET UP TO CLEAR TABLE IF NO DTE
3224 010054 013704 031212' MOV @#DEXTM1,R4 ;;;PICK UP DTE NUMBER
3225 010060 032704 000004 BIT #4,R4 ;;;DTE HERE?
3226 010064 001423 BEQ 20$ ;;;NO -- DON'T ENTER IN TABLE
3227 010066 000304 SWAB R4 ;;;MAKE MOD 40 (8)
3228 010070 006004 ROR R4
3229 010072 006004 ROR R4
3230 010074 006004 ROR R4
3231 010076 042704 177637 BIC #177637,R4 ;;;MASKOFF JUNK
3232 010102 062704 174400 ADD #174400,R4 ;;;POINT TO FIRST BLOCK OF DTE'S
3233 010106 020437 031356' CMP R4,.PRDTE ;;;PRIMARY DTE?
3234 010112 001002 BNE 10$ ;;;NO -- DON'T SET TABLE POINTER
3235 010114 010537 031352' MOV R5,.PRADR ;;;SAVE TABLE OFFSET
3236 010120 010415 10$: MOV R4,@R5 ;;;SET DTE ADDRESS IN TABLE
3237 010122 012714 037777 MOV #37777,@R4 ;;;SET UP DELAY COUNTER
3238 010126 012764 000040 000034 MOV #INTRON,STATD(R4) ;;;YES -- ENABLE INTERRUPT ON IT
3239 010134 010265 000002 20$: MOV R2,EMYN(R5) ;;;SET THE ADDRESS OF EXAMINE MY AREA FOR N
3240 ;;;MAKE ADDRESS OF THE ADDRESS OF DEPOSIT MY AREA FOR N
3241 010140 010265 000004 MOV R2,DMYN(R5) ;;;STORE IT
3242 010144 163765 031374' 000004 SUB DEPOF,DMYN(R5) ;;;RESTORE SUBRESS FOR EXAMINE OF THIS BLOCK
3243 010152 062702 000001 ADD #PROPNT-FORPRO,R2 ;;;READ POINTER TO HIS COMM AREA
3244 010156 CALL SWFED ;;;WAIT FOR EXAMINE/DEPOSIT
010156 004737 044200' JSR PC,SWFED
3245 010162 103434 BCS 80$ ;;; +++003 E BOX STOPPED
3246 010164 011302 MOV @R3,R2 ;;;FIND THE EXAMINE ADDRESS
3247 010166 063702 031370' ADD COMBSE,R2 ;;;ADD OFFSET TO COMMON AREA
3248 010172 010265 000006 MOV R2,EHSG(R5) ;;;SET EHSG ADDRESS IN TABLE
3249 010176 062702 000020 ADD #FORPRO,R2 ;;;POINT TO HIS FIRST TABLE FOR OTHER PROCESSORS
3250 010202 50$: CALL SWFED ;;;WAIT FOR EXAMINE/DEPOSIT
010202 004737 044200' JSR PC,SWFED
3251 010206 103422 BCS 80$ ;;; +++003
3252 010210 123713 031372' CMPB PRMEMN,@R3 ;;;SAME PROCESSOR NUMBER?
3253 010214 001411 BEQ 60$ ;;;YES -- FOUND MY ENTRY
3254 010216 013704 031210' MOV @#DEXTM2,R4 ;;;NO -- FIND NEXT ENTRY IN LIST
3255 010222 042704 177770 BIC #177770,R4 ;;;IT IS IN 8 WORD INCREMENTS
3256 010226 006304 ASL R4 ;;;SO IT MUST BE SHIFTED LEFT 3 BITS
3257 010230 006304 ASL R4 ;;;
3258 010232 006304 ASL R4 ;;;
3259 010234 060402 ADD R4,R2 ;;;READ NEXT BLOCK
3260 010236 000761 BR 50$ ;;;AND TRY AGAIN
3261 ;
3262 010240 010265 000010 60$: MOV R2,EHSM(R5) ;;;STORE EHSM ADDRESS
3263 010244 011605 MOV @SP,R5 ;;;DONE ALL BLOCKS??
3264 010246 101253 BHI 16$ ;;; +++002 NO -- TRY NEXT BLOCK
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 50-2
$DTEON -- TURN THE DTE20 ON
3265 010250 70$:
3266 010250 CALL ..DTP1 ;;;START THE PRIMARY PROTOCOL TASK
010250 004737 044356' JSR PC,..DTP1
3267 010254 80$: ;;; +++003
3268 010254 012605 MOV (SP)+,R5 ;;; +++003 RESTORE R5
3269 010256 000137 002774' JMP .DR.NS ;RETURN STATUS IN R0
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 51
$DPMYG -- DEPOSIT INTO MY GENERAL SECTION
3271 .SBTTL $DPMYG -- DEPOSIT INTO MY GENERAL SECTION
3272 ;+
3273 ;
3274 ; $DPMYG -- DEPOSIT INTO MY GENERAL SECTION
3275 ; WITH PROCESSOR N
3276 ;
3277 ; ENTRY CONDITIONS:
3278 ;
3279 ; R2 -- ADDRESS OF PDP-10 LOCATION TO TRANSFER RELATIVE TO MY GEN REGION
3280 ; R3 -- ADDRESS OF PDP-11 CORE ADDRESS TO WRITE FROM
3281 ; $DPMYG
3282 ;
3283 ; EXIT CONDITIONS:
3284 ;
3285 ; R0 -- +1 TRANSFER COMPLETED
3286 ; CC-C CLEAR -- TRANSFER COMPLETED
3287 ;
3288 ; ERROR CONDITIONS:
3289 ;
3290 ; CC-C SET
3291 ;
3292 ; R0 -2 -- E BOX STOPPED
3293 ; R0 -3 -- SECONDARY PROTOCOL IN USE
3294 ;
3295 ;
3296 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3297 ;-
3298 ;
3299 ;
3300 010262 005001 $DPMYG::CLR R1
3301 010264 052701 010000 DPCMN: BIS #DEP,R1 ;;;SET DEPOSIT BIT IN ADDRESS WORD
3302 010270 032737 040000 031114' CMEDP: BIT #EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL RUNNING?
3303 010276 001407 BEQ DPMSEP ;;;NO -- ERROR
3304 010300 005004 CLR R4 ;;;NON PRIV EXAMINE
3305 010302 011000 MOV @R0,R0 ;;;FIND DTE20 ADDRESS
3306 010304 CALL SWFED ;;;WAIT FOR EXAMINE/DEPOSIT
010304 004737 044200' JSR PC,SWFED
3307 010310 103401 BCS DPSEC ;;;ERROR -2
3308 010312 104401 TRAP DR.01
3309 ;
3310 010314 104776 DPSEC: TRAP DE.02 ;E BOX STOPPED
3311 ;
3312 010316 104775 DPMSEP: TRAP DE.03 ;SECONDARY PROTOCOLIN USE
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 52
$EXMYG -- EXAMINE MY GENERAL SECTION
3314 .SBTTL $EXMYG -- EXAMINE MY GENERAL SECTION
3315 ;+
3316 ;
3317 ; $EXMYG -- EXAMINE MY (PDP-11) GENERAL SECTION
3318 ;
3319 ; ENTRY CONDITIONS:
3320 ;
3321 ; R2 -- ADDRESS OF A PDP10 ADDRESS TO EXAMINE RELATIVE TO THE BASE OF MY GENERAL SECTION
3322 ; R3 -- ADDRESS OF THE THREE WORDD BLOCK TO TRANSFER TO
3323 ; $EXMYG
3324 ;
3325 ; EXIT CONDITIONS:
3326 ;
3327 ; R0 -- +1 SUCCESS
3328 ; CC-C CLEAR -- SUCCESS
3329 ;
3330 ; ERROR CONDITIONS:
3331 ;
3332 ; CC-C SET
3333 ;
3334 ; R0 -2 -- E BOX STOPPED
3335 ; R0 -3 -- SECONDARY PROTOCOL IN USE
3336 ;
3337 ;
3338 ;
3339 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3340 ;-
3341 ;
3342 010320 063702 031374' $EXMYG::ADD DEPOF,R2 ;ADD DEPOSIT OFFSET TO EXAMINE ADDRESS
3343 010324 005001 EXCMN: CLR R1 ;;;CLEAR HIGH ORDER 10 ADDRESS (FORCES EXAMINE)
3344 010326 000760 BR CMEDP
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 53
$EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
3346 .SBTTL $EXMYN -- EXAMINE MY SECTION FOR PROCESSOR N
3347 ;+
3348 ;
3349 ; $EXMYN -- EXAMINE MY SECTION FOR COMMUNICATING WITH PROCESSOR N
3350 ;
3351 ; ENTRY CONDITIONS:
3352 ;
3353 ; R1 -- CPU NUMBER
3354 ; R2 -- ADDRESS WORD WITHIN REGION TO EXAMINE
3355 ; R3 -- PDP-11 CORE ADDRESS
3356 ; $EXMYN
3357 ;
3358 ; EXIT CONDITIONS:
3359 ;
3360 ; R0 -- +1 - SUCCESS
3361 ; CC-C CLEAR -- SUCCESS
3362 ;
3363 ; ERROR CONDITIONS:
3364 ;
3365 ; CC-C SET
3366 ; R0 -1 -- ILLEGAL CPU NUMBER
3367 ; R0 -2 -- E BOX STOPPED
3368 ; R0 -3 -- SECONDARY PROTOCOL IN USE
3369 ;
3370 ;
3371 ;
3372 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3373 ;-
3374 ;
3375 010330 066002 000002 $EXMYN::ADD EMYN(R0),R2 ;SET CALCULATED ADDRESS TO COMM AREA
3376 010334 000773 BR EXCMN ;GO TO COMMON AREA
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 54
$DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
3378 .SBTTL $DPMYN -- DEPOSIT INTO MY SECTION FOR COMM WITH PROCESSOR N
3379 ;+
3380 ;
3381 ; $DPMYN -- DEPOSET INTO MY SECTION FOR COMMUNICATING WITH PROCESSOR N
3382 ;
3383 ; ENTRY CONDITIONS:
3384 ;
3385 ; R1 -- CPU NUMBER
3386 ; R2 -- ADDRESS WORD WITHIN REGION TO DEPOSIT
3387 ; R3 -- ADDRESS IN PDP-11 TO TRANSFER FROM
3388 ; $DPMYN
3389 ;
3390 ; EXIT CONDITIONS:
3391 ;
3392 ; R0 -- +1 -SUCCESS
3393 ; CC-C CLEAR - SUCCESS
3394 ;
3395 ; ERROR CONDITIONS:
3396 ;
3397 ; CC-C SET
3398 ; R0 -1 -- ILLEGAL CPU NUMBER
3399 ; R0 -2 -- E BOX STOPPED
3400 ; R0 -3 -- SECONDARY PROTOCOL IN USE
3401 ;
3402 ;
3403 ;
3404 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3405 ;-
3406 ;
3407 010336 066002 000004 $DPMYN::ADD DMYN(R0),R2 ;FIND CORRECT ADDRESS IN COMMON AREA
3408 010342 000750 BR DPCMN ;DEPOSIT IN COMMON AREA
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 55
$EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
3410 .SBTTL $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
3411 ;+
3412 ;
3413 ; $EXHSG -- EXAMINE HIS GENERAL COMMUNICATION SECTION
3414 ;
3415 ; ENTRY CONDITIONS:
3416 ;
3417 ; R1 -- CPU NUMBER
3418 ; R2 -- WORD NUMBER IN HIS GENERAL SECTION
3419 ; R3 -- ADDRESS TO STORE EXAMINE
3420 ; $EXHSG
3421 ;
3422 ; EXIT CONDITIONS:
3423 ;
3424 ; R0 -- +1 - SUCCESS
3425 ; CC-C CLEAR - SUCCESS
3426 ;
3427 ; ERROR CONDITIONS:
3428 ;
3429 ; R0 -1 -- ILLEGAL CPU NUMBER
3430 ; R0 -2 -- EBOX STOPPED
3431 ; R0 -3 -- SECONDARY PROTOCOL IN USE
3432 ;
3433 ;
3434 ; CC-C SET
3435 ;
3436 ;
3437 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3438 ;-
3439 ;
3440 ;
3441 010344 066002 000006 $EXHSG::ADD EHSG(R0),R2 ;FIND OFFSET TO COMMUNICATIONS AREA
3442 010350 000765 BR EXCMN ;GO TO COMMON EXAMINE
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 56
$EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
3444 .SBTTL $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
3445 ;+
3446 ;
3447 ; $EXHSM -- EXAMINE HIS SECTION FOR COMMUNICATING WITH ME
3448 ;
3449 ; ENTRY CONDITIONS:
3450 ;
3451 ; R1 -- CPU NUMBER
3452 ; R2 -- ADDRESS OF WORD WITHIN REGION TO EXAMINE
3453 ; R3 -- ADDRESS TO STORE PDP-10 WORD
3454 ; $EXHSM
3455 ;
3456 ; EXIT CONDITIONS:
3457 ;
3458 ; R0 -- +1 - SUCCESS
3459 ; CC-C CLEAR - SUCCESS
3460 ;
3461 ; ERROR CONDITIONS:
3462 ;
3463 ; CC-C SET
3464 ; R0 -1 -- ILLEGAL CPU NUMBER
3465 ; R0 -2 -- E BOX STOPPED
3466 ; R0 -3 -- SECONDARY PROTOCOL IN USE
3467 ;
3468 ;
3469 ;
3470 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3471 ;-
3472 ;
3473 010352 066002 000010 $EXHSM::ADD EHSM(R0),R2 ;FIND OFFSET INTO COMM AREA
3474 010356 000762 BR EXCMN ;GO TO EXAMINE
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 57
$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
3476 .SBTTL $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
3477 ;
3478 ;+
3479 ;
3480 ; $KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
3481 ; THIS FUNCTION WILL LOAD AND READ THE EBUS.
3482 ; IT DOES A DATA SEND OPERATION IF IT IS A WRITE FUNCTION
3483 ; AND IT ALWAYS RETURNS THE STATUS OF THE DIAGNOSTIC REGISTERS
3484 ; AND EBUS (DEXWD1-3) AFTER EACH FUNCTION.
3485 ;
3486 ; ENTRY CONDITIONS:
3487 ;
3488 ; R0 -- FUNCTION TO BE EXECUTED (BITS 15-9)
3489 ; R0 -- IF BIT 8 IS SET IT IS A LOAD FUNCTION
3490 ; R1 -- DTE20 NUMBER (CURRENT UNUSED)
3491 ; R3 -- ADDRESS OF FOUR WORD BLOCK TO STORE DIAG1-3
3492 ; R2 -- PDP11 6 WORD BLOCK THE FIRST 3 WORDS ARE
3493 ; USED TO STORE THE CONTENTS IN THE E BUS THE SECOND 3 WORDS
3494 ; ARE USED TO STORE THE RESULTS OF THE DIAGNOSTIC FUNCTION E BUS
3495 ; CALL $KLDFX
3496 ;
3497 ; EXIT CONDITIONS
3498 ;
3499 ; CC-C CLEAR
3500 ; R0 -- +1 -- SUCCESS
3501 ;
3502 ; ERROR CONDITIONS:
3503 ;
3504 ; -2 -- FUNCTION FAILED
3505 ;
3506 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3507 ;
3508 ;-
3509 ;
3510 010360 $KLDFR: CALL FNDDTE ;FIND DTE20
010360 004737 010762' JSR PC,FNDDTE
3511 010364 012600 MOV (SP)+,R0 ;RESTORE FUNCTION
3512 010366 CALL CESCHK ;RESET DTE-20 IF CLOCK ERROR STOP
010366 004737 011014' JSR PC,CESCHK
3513 010372 042700 000777 BIC #777,R0 ;MASK OFF FUNCTION CODE
3514 010376 052700 000211 BIS #DIKL10!DCOMST!DFUNC,R0 ;SET DIAGNOSTIC FUNCTION START BITS
3515 010402 062702 000006 ADD #6,R2 ;DON'T DO THE E BUS WRITE
3516 010406 010061 000030 KLCST: MOV R0,DAG1(R1) ;START FUNCTION
3517 010412 012737 003000 031204' MOV #3000,DEXST ;TIME OUT FUNCTION
3518 010420 032761 000001 000030 10$: BIT #DCOMST,DAG1(R1) ;WAIT FOR THE FUNCTION TO COMPLETE
3519 010426 001404 BEQ 22$
3520 010430 005337 031204' DEC DEXST ;COUNT DOWN
3521 010434 100371 BPL 10$
3522 010436 104776 TRAP DE.02 ;TRAP ERROR
3523 ;
3524 010440 22$: MTPS DXWD3(R1),(R2)+ ;STORE THE FOUND WORD IN PDP11
010440 016122 000002 MOV DXWD3(R1),(R2)+
3525 010444 MTPS DXWD2(R1),(R2)+
010444 016122 000004 MOV DXWD2(R1),(R2)+
3526 010450 MTPS DXWD1(R1),(R2)+
010450 016122 000006 MOV DXWD1(R1),(R2)+
3527 010454 005703 TST R3 ;ANYWHERE TO STORE?
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 57-1
$KLDFX -- EXECUTE A DIAGNOSTIC FUNCTION
3528 010456 001404 BEQ 20$ ;NO -- FORGET IT
3529 010460 MTPS (R4)+,(R3)+ ;STORE DIAGNOSITC REGISTERS
010460 012423 MOV (R4)+,(R3)+
3530 010462 MTPS (R4)+,(R3)+
010462 012423 MOV (R4)+,(R3)+
3531 010464 MTPS (R4)+,(R3)+
010464 012423 MOV (R4)+,(R3)+
3532 010466 MTPS (R4)+,(R3)+
010466 012423 MOV (R4)+,(R3)+
3533 010470 104401 20$: TRAP DR.01 ;SET OK RETURN TO CALLER
3534 ;
3535 010472 $KLDFX::CALL FNDDTE ;FIND DTE20
010472 004737 010762' JSR PC,FNDDTE
3536 010476 012600 MOV (SP)+,R0 ;FIND FUNCTION BITS
3537 010500 CALL CESCHK ;RESET DTE-20 IF CLOCK ERROR STOP
010500 004737 011014' JSR PC,CESCHK
3538 010504 042700 000777 BIC #777,R0 ;CLEAR OFF LOW ORDER FUNCTION CODE
3539 010510 052700 000201 BIS #DCOMST!DFUNC,R0 ;SET DIAG FUNCTION EXECUTE
3540 010514 000411 BR $KLDFC ;ENTER COMMON CODE
3541 ;
3542 010516 $KLDFW::CALL FNDDTE ;FIND DTE20 ADDRESS
010516 004737 010762' JSR PC,FNDDTE
3543 010522 012600 MOV (SP)+,R0 ;FIND FUNCTION BITS
3544 010524 CALL CESCHK ;RESET DTE-20 IF CLOCK ERROR STOP
010524 004737 011014' JSR PC,CESCHK
3545 010530 042700 000777 BIC #777,R0 ;MASK OFF LOW ORDER FUNCTION CODE
3546 010534 052700 000215 BIS #DCOMST!DSEND!DIKL10!DFUNC,R0
3547 010540 $KLDFC::MFPS (R2)+,DXWD3(R1) ;STORE THE OUTPUT FOR THE EBUS
010540 012261 000002 MOV (R2)+,DXWD3(R1)
3548 010544 MFPS (R2)+,DXWD2(R1)
010544 012261 000004 MOV (R2)+,DXWD2(R1)
3549 010550 MFPS (R2)+,DXWD1(R1)
010550 012261 000006 MOV (R2)+,DXWD1(R1)
3550 010554 032700 000004 BIT #DSEND,R0 ;DIAG WRITE?
3551 010560 001712 BEQ KLCST ;GO TO COMMON OUTPUT EQOUTINE
3552 ;
3553 010562 012761 000014 000030 10$: MOV #DIKL10!DSEND,DAG1(R1) ;WRITE
3554 010570 012761 010000 000010 MOV #DEP,TNAD1(R1) ;SIMULATE DEPOSIT
3555 010576 005061 000012 CLR TNAD2(R1)
3556 010602 010046 20$: MOV R0,-(SP) ;SAVE R0
3557 010604 010100 MOV R1,R0
3558 010606 CALL WFED ;WAIT FOR DEX DONE
010606 004737 044012' JSR PC,WFED
3559 010612 012600 MOV (SP)+,R0
3560 010614 000674 BR KLCST
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 58
$PRVEX -- PRIVILEDGED EXAMINE
3562 .SBTTL $PRVEX -- PRIVILEDGED EXAMINE
3563 ;
3564 ;+
3565 ;
3566 ; $PRVEX -- PRIVILEDGED EXAMINE OF THE KL10 MEMORY
3567 ;
3568 ;
3569 ; ENTRY CONDITIONS:
3570 ;
3571 ; R0 -- FUNCTION CODE PLUS HIGN ORDER BYTE OF SECOND WORD OF DPB
3572 ; R1 -- WORD 5 OF DPB
3573 ; R2 -- WORD 3 OF DPB
3574 ; R3 -- WORD 4 OF DPB
3575 ; R4 -- ADDRESS OF DPB
3576 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK
3577 ;
3578 ; JMP $PRVEX
3579 ;
3580 ; ERROR CONDITIONS:
3581 ;
3582 ;
3583 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3584 ;-
3585 ;
3586 010616 $PRVEX::
3587 010616 CALL FNDDTE ;FIND DTE20 ADDRESS
010616 004737 010762' JSR PC,FNDDTE
3588 010622 MFPS 2(R2),R1 ;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS
010622 016201 000002 MOV 2(R2),R1
3589 010626 MFPS @R2,R2 ;LOWER ORDER HALF
010626 011202 MOV @R2,R2
3590 010630 052601 BIS (SP)+,R1 ;SET HIGH ORDER OF PRIVILEDGE
3591 010632 052701 004000 BIS #PRTOFF,R1 ;SET PRIVILEDGED EXAMINE
3592 010636 042701 010000 BIC #DEP,R1 ;INSURE THAT IT IS AN EXAMINE
3593 010642 PRVCM: CALL SWFED ;START-WAITFOR EXAMINE/DEPOSIT
010642 004737 044200' JSR PC,SWFED
3594 010646 103401 BCS 20$ ;E BOX STOPPED ERROR
3595 010650 104401 TRAP DR.01 ;MUST BE OK -- RETURN TO USER
3596 ;
3597 010652 104776 20$: TRAP DE.02 ;RETURN EBOX STOPPED ERROR
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 59
$PRVDP -- PRIVILEDGED DEPOSIT
3599 .SBTTL $PRVDP -- PRIVILEDGED DEPOSIT
3600 ;
3601 ;+
3602 ;
3603 ; $PRVDP -- PRIVILEDGED DEPOSIT OF THE KL10 MEMORY
3604 ;
3605 ;
3606 ; ENTRY CONDITIONS:
3607 ;
3608 ; R0 -- FUNCTION CODE PLUS HIGN ORDER BYTE OF SECOND WORD OF DPB
3609 ; R1 -- WORD 5 OF DPB
3610 ; R2 -- WORD 3 OF DPB
3611 ; R3 -- WORD 4 OF DPB
3612 ; R4 -- ADDRESS OF DPB
3613 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK
3614 ;
3615 ; JMP $PRVDP
3616 ;
3617 ; ERROR CONDITIONS:
3618 ;
3619 ;
3620 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3621 ;-
3622 ;
3623 010654 $PRVDP::
3624 010654 CALL FNDDTE ;FIND DTE20 ADDRESS
010654 004737 010762' JSR PC,FNDDTE
3625 010660 MFPS 2(R2),R1 ;SET UP THE INTERNAL ADDRESS 2(PDP11 ADDRESS
010660 016201 000002 MOV 2(R2),R1
3626 010664 MFPS @R2,R2 ;LOWER ORDER HALF
010664 011202 MOV @R2,R2
3627 010666 052601 BIS (SP)+,R1 ;SET HIGH ORDER OF PRIVILEDGE
3628 010670 052701 014000 BIS #PRTOFF!DEP,R1 ;SET PRIVILEDGED DEPOSIT
3629 010674 000762 BR PRVCM
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 60
$RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
3631 .SBTTL $RWDRG -- READ/WRITE DIAGNOSTIC REGISTER
3632 ;
3633 ;+
3634 ;
3635 ; $RWDRG -- PRIVILEDGED READ/WRITE OF DIAGNOSTIC DTE20 REGISTERS
3636 ;
3637 ;
3638 ; ENTRY CONDITIONS:
3639 ;
3640 ; R0 -- FUNCTION CODE PLUS HIGN ORDER BYTE OF SECOND WORD OF DPB
3641 ; R1 -- WORD 5 OF DPB
3642 ; R2 -- WORD 3 OF DPB
3643 ; R3 -- WORD 4 OF DPB
3644 ; R4 -- ADDRESS OF DPB
3645 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK
3646 ;
3647 ; JMP $RWDRG
3648 ;
3649 ; ERROR CONDITIONS:
3650 ;
3651 ;
3652 ; REGISTERS SAVED AND RESTORED BY EMT SERVICE
3653 ;-
3654 ;
3655 010676 $RWDRG::CALL FNDDTE ;FIND DTE20
010676 004737 010762' JSR PC,FNDDTE
3656 010702 000316 SWAB @SP ;FIND THE REGISTER NUMBER
3657 010704 062601 ADD (SP)+,R1 ;MAKE EXTERNAL PAGE OFFSET
3658 010706 005702 TST R2 ;IS IT WRITE?
3659 010710 001402 BEQ 10$ ;NO -- DON'T SET IT
3660 010712 MFPS @R2,DAG1(R1) ;YES -- SET REGISTER
010712 011261 000030 MOV @R2,DAG1(R1)
3661 010716 005703 10$: TST R3 ;RETURN ADDRESS SPECIFIED?
3662 010720 001402 BEQ 20$ ;NO -- THEN RETURN ALL OK
3663 010722 MTPS DAG1(R1),@R3 ;SET IN USER SPACE
010722 016113 000030 MOV DAG1(R1),@R3
3664 010726 104401 20$: TRAP DR.01 ;MUST BE OK -- RETURN TO USER
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 61
FNDCPU -- INTERNAL SUBROUTINE FIND THE DTE NUMBER
3666 .SBTTL FNDCPU -- INTERNAL SUBROUTINE FIND THE DTE NUMBER
3667 ;
3668 ; FNDCPU -- FIND THE CPU NUMBER AND POINT TO IT'S AREA
3669 ;
3670 ; ENTRY CONDITIONS:
3671 ;
3672 ; R1 -- CPU NUMBER
3673 ; CALL FNDCPU
3674 ;
3675 ; EXIT CONDITIONS:
3676 ;
3677 ; R0 -- POINTS TO BLOCK (HOPEFULLY ALWAYS POSITIVE NUMBER BUT
3678 ; CC-C CLEAR INDICATES SUCCESS
3679 ;
3680 ; CC-C CLEAR
3681 ;
3682 ; ERROR CONDITIONS:
3683 ;
3684 ; R0 -- -2 -- ILLEGAL CPU NUMBER (CPU # .GT. 16.)
3685 ; R0 -- -3 -- SECONDARY PROTOCOL IN USE
3686 ; CC-C SET
3687 ;
3688 ;
3689 010730 012700 031376' FNDCPU: MOV #PROTBL,R0 ;POINT TO BEGINNING OF TABLE
3690 ;UPDATE OF THE KEEPALIVE COUNT IS NOT NECESSARY
3691 010734 010146 MOV R1,-(SP) ;SAVE R1
3692 010736 001406 BEQ 30$ ;COMPLETE NO MORE CHECKS NECESSARY
3693 010740 032701 177760 BIT #177760,R1 ;CHECK TO SEE IF THE NUMBER PASSED IS 0-16
3694 010744 001005 BNE 40$ ;NO -- MUST BE OUTSIDE LEGAL RANGE ERROR
3695 010746 062700 000012 10$: ADD #5.*2,R0 ;POINT TO NEXT CPU BLOCK
3696 010752 077103 SOB R1,10$ ;LOOK AT NEXT BLOCK
3697 ;
3698 010754 012601 30$: MOV (SP)+,R1 ;RESTORE REGISTER
3699 010756 RETURN ;RETURN WITH STATUS IN R0
010756 000207 RTS PC
3700 ;
3701 010760 104776 40$: TRAP DE.02 ;RETURN FAILURE -- ILLEGAL CPU NUMBER
3702 ;SET CC-C TO INDICATE FAILURE AND R0 -1
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 62
FNDDTE -- INTERNAL SUBROUTINE TO FIND THE DTE20
3704 .SBTTL FNDDTE -- INTERNAL SUBROUTINE TO FIND THE DTE20
3705 ;
3706 ; FNDDTE -- FIND THE DTE20 ADDRESS
3707 ;
3708 ; ENTRY CONDITIONS:
3709 ;
3710 ; R1 -- DTE20 NUMBER
3711 ;
3712 ; CALL FNDDTE
3713 ;
3714 ; EXIT CONDITIONS:
3715 ;
3716 ; R0 -- ADDRESS OF DTE20
3717 ; R1 -- ADDRESS OF DTE20
3718 ;
3719 ;
3720 010762 005301 FNDDTE: DEC R1
3721 010764 100410 BMI 20$ ;IF MINUS IT IS PRIV ONE
3722 010766 006301 ASL R1 ;FIND ADDRESS
3723 010770 006301 ASL R1
3724 010772 006301 ASL R1
3725 010774 006301 ASL R1
3726 010776 062701 174400 ADD #174400,R1
3727 011002 010100 10$: MOV R1,R0 ;TO BOTH
3728 011004 RETURN ;RETURN TO CALLER
011004 000207 RTS PC
3729 011006 013701 031356' 20$: MOV .PRDTE,R1 ;SET UP TO POINT TO PRIV DTE
3730 011012 000773 BR 10$
DMDTE - DTE DIRECTIVES MODULE MACRO M1108 16-DEC-77 11:28 PAGE 63
CESCHK -- CHECK FOR CLOCK ERROR STOP
3732 .SBTTL CESCHK -- CHECK FOR CLOCK ERROR STOP
3733 ;
3734 ; CESCHK -- CHECK FOR CLOCK ERROR STOP
3735 ;
3736 ; ENTRY CONDITIONS:
3737 ;
3738 ; R1 -- ADDRESS OF CURRENT DTE-20
3739 ;
3740 ; NO REGISTERS MODIFIED
3741 ;
3742 011014 CESCHK:
3743 011014 005061 000030 CLR DAG1(R1) ;CLEAR ALL FLAGS
3744 011020 032761 004000 000030 BIT #DS04,DAG1(R1) ;CLOCK ERROR STOP UP?
3745 011026 001403 BEQ 10$ ;NO-- JUST RETURN
3746 011030 012761 000100 000032 MOV #DRESET,DAG2(R1) ;YES-- REWSET DTE-20
3747 011036 10$:
3748 011036 RETURN ;FROM CESCHK
011036 000207 RTS PC
3749 .TITLE DMASS - "ASSIGN LUN" DIRECTIVE MODULE
3750 011040 IDENT$ 1,0
.IDENT /001000/
3751 ;
3752 ; COPYRIGHT (C) 1975, 1978 BY
3753 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3754 ;
3755 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3756 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3757 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3758 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3759 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3760 ;
3761 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3762 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3763 ; CORPORATION.
3764 ;
3765 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3766 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3767 ;
3768 ; MODULE: "ASSIGN LUN" DIRECTIVE
3769 ;
3770 ; VERSION: 01-00
3771 ;
3772 ; AUTHOR: R. MCLEAN
3773 ;
3774 ; DATE: 19 JUL 75
3775 ;
3776 ;
3777 ; THIS MODULE CONTAINS:
3778 ;
3779 ; 1 -- CODE TO SERVICE THE "ASSIGN LUN" DIRECTIVE.
3780 ;
3781 ; MACRO DEFINITIONS
3782 ;
3784 .MCALL CALL,RETURN
3785 .MCALL MFPI,MFPS
DMASS - "ASSIGN LUN" DIRECTIV MACRO M1108 16-DEC-77 11:28 PAGE 64
DIRECTIVE -- ASSIGN LUN
3788 .SBTTL DIRECTIVE -- ASSIGN LUN
3789 ;+
3790 ; THE "ASSIGN LUN" DIRECTIVE
3791 ;
3792 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO ASSIGN A LOGICAL UNIT NUMBER (LUN)
3793 ; TO A PHYSICAL DEVICE-UNIT.
3794 ;
3795 ; A FOUR-WORD DPB OF THE FOLLOWING FORMAT IS USED TO ASSIGN A LUN
3796 ; TO A PHYSICAL DEVICE:
3797 ;
3798 ; WD. 00 -- DIC (07.) & DPB SIZE (4.),
3799 ; WD. 01 -- LOGICAL UNIT NUMBER,
3800 ; WD. 02 -- PHYSICAL DEVICE NAME,
3801 ; WD. 03 -- PHYSICAL DEVICE UNIT NUMBER.
3802 ;
3803 ; A TWO-WORD DPB OF THE FOLLOWING FORMAT IS USED TO DEASSIGN (ASSIGN
3804 ; TO "NONE") A LUN:
3805 ;
3806 ; WD. 00 -- DIC (07.) & DPB SIZE (2.),
3807 ; WD. 01 -- LOGICAL UNIT NUMBER.
3808 ;
3809 ; THE FOLLOWING STATUS IS RETURNED:
3810 ;
3811 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
3812 ; OF ONE (+1).
3813 ;
3814 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
3815 ;
3816 ; -90 -- LUN USAGE INTERLOCKED (VIZ., FILE OPEN),
3817 ; -92 -- INVALID DEVICE AND/OR UNIT,
3818 ; -96 -- INVALID LOGICAL UNIT NUMBER,
3819 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
3820 ; -99 -- DIC OR DPB SIZE IS INVALID.
3821 ;-
3822 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
3823 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
3824 ; STACK, AND R0-R5 SET AS FOLLOWS:
3825 ; R0 -- PC OF EMT INSTRUCTION
3826 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
3827 ; R2 -- DPB SIZE
3828 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
3829 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
3830 ;
3831 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
3832 ;
3833 ;
3834 ; LUN ASSIGNMENT -- CHECK FOR VALIDITY OF LUN & DEVICE-UNIT AND ASSIGN
3835 ; IF NOT INTERLOCKED.
3836 ;
3837 011040 .D.ASS::MFPI @R1 ;VALIDATE LUN, AND SETUP TO ACCESS TASK
011040 011146 MOV @R1,-(SP)
3838 ;HEADER, BY PUSHING LUN AND CALLING
3839 ;SUBROUTINE TO CONVERT & VERIFY.
3840 011042 CALL .VCLUN ;IF INVALID LUN, RETURN STS=-96.
011042 004737 005172' JSR PC,.VCLUN
3841 011046 010416 MOV R4,@SP ;PUD ENTRY ADR ON STACK REPLACED BY LUT ADDRESS
3842 ;
DMASS - "ASSIGN LUN" DIRECTIV MACRO M1108 16-DEC-77 11:28 PAGE 64-1
DIRECTIVE -- ASSIGN LUN
3843 011050 005003 CLR R3 ;SET UP INCASE OF DEASSIGNMENT
3844 011052 020227 000002 CMP R2,#2 ;IS THIS LUN DEASSIGNMENT?
3845 011056 001422 BEQ 60$ ;YES -- DEASSIGN LUN
3851 ;
3852 011060 45$: MFPI (R1)+ ;PUSH LUN, AND LEAVE R1 POINTING TO DEV NAME
011060 012146 MOV (R1)+,-(SP)
3853 ;
3854 011062 MFPS (R1)+,R4 ;SET R4 TO DEVICE NAME.
011062 012104 MOV (R1)+,R4
3855 ;R0 CONTAINS DEVICE UNIT NUMBER
3856 011064 MFPS @R1,R0
011064 011100 MOV @R1,R0
3857 ;
3858 ; SCAN PUD FOR DEVICE-UNIT IN R4-R0.
3859 ;
3860 011066 012703 037202' MOV #.PUDBA,R3 ;USE R3 TO SCAN PUD
3861 011072 20$:
3862 011072 020327 040262' CMP R3,#.PUDEA ;END OF PUD?
3863 011076 001001 BNE 30$
3864 011100 104644 TRAP DE.92 ;YES -- DEVICE-UNIT NOT FOUND
3865 011102 021304 30$: CMP @R3,R4 ;NO -- DEVICE NAME MATCH?
3866 011104 001003 BNE 40$ ;NO -- CHECK NEXT ENTRY
3867 011106 126300 000002 CMPB U.UN(R3),R0 ;YES -- UNIT NUMBER MATCH?
3868 011112 001403 BEQ 50$ ;YES -- DEVICE-UNIT FOUND
3869 ;NO -- CHECK NEXT ENTRY
3870 011114 40$:
3871 011114 062703 000050 ADD #U.SZ,R3 ;ADVANCE R3 TO NEXT PUD ENTRY (IF ANY), AND
3872 011120 000764 BR 20$ ;CHECK FOR DEVICE-UNIT MATCH.
3873 ;
3874 ; INDICATED DEVICE-UNIT FOUND IN PUD -- PUD ENTRY ADDRESS IS IN R3
3875 ;
3876 011122 012600 50$: MOV (SP)+,R0 ;SET R0 TO LUN
3877 ;
3878 ; R3 CONTAINS A VALUE (PUD ENTRY ADDRESS OR ZERO) TO BE SET IN THE
3879 ; THE FIRST WORD OF THE LUT PER LUN IN R0.
3880 ;
3881 011124 60$:
3882 011124 006300 ASL R0 ;SET R0 TO FOUR TIMES THE LUN
3883 011126 006300 ASL R0
3884 011130 062600 ADD (SP)+,R0 ;POINT TO LUT AS SAVED
3885 ;
3886 011132 005740 TST -(R0) ;IS LUN LOCKED IN USE?
3887 011134 001401 BEQ 70$
3888 011136 104646 TRAP DE.90 ;YES -- RETURN STS=-90.
3889 011140 010340 70$: MOV R3,-(R0) ;NO -- MAKE ASSIGNMENT, AND
3890 011142 104401 TRAP DR.01 ;RETURN STS=+1
3891 .TITLE DMGLI - "GET LUN INFO" DIRECTIVE MODULE
3892 011144 IDENT$ 1,0
.IDENT /001000/
3893 ;
3894 ; COPYRIGHT (C) 1975, 1978 BY
3895 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3896 ;
3897 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3898 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3899 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3900 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
DMGLI - "GET LUN INFO" DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 64-2
DIRECTIVE -- ASSIGN LUN
3901 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3902 ;
3903 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3904 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3905 ; CORPORATION.
3906 ;
3907 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3908 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3909 ;
3910 ; MODULE: "GET LUN INFO" DIRECTIVE
3911 ;
3912 ; VERSION: 01-00
3913 ;
3914 ; AUTHOR: R. MCLEAN
3915 ;
3916 ; DATE: 19 JUL 75
3917 ;
3918 ;
3919 ; THIS MODULE CONTAINS:
3920 ;
3921 ; 1 -- CODE TO SERVICE THE "GET LUN INFO" DIRECTIVE.
3922 ;
3923 ; MACROS
3924 ;
3926 .MCALL CALL,RETURN,MTPI,MFPI,MFPS
DMGLI - "GET LUN INFO" DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 65
DIRECTIVE -- GET LUN INFORMATION
3929 .SBTTL DIRECTIVE -- GET LUN INFORMATION
3930 ;+
3931 ; THE "GET LUN INFORMATION" DIRECTIVE
3932 ;
3933 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL A SIX WORD BUFFER
3934 ; WITH INFORMATION ABOUT A PHYSICAL UNIT TO WHICH IT IS ASSIGNED.
3935 ; IF REQUESTS TO THE PHYSICAL UNIT HAVE BEEN RE-DIRECTED TO ANOTHER
3936 ; UNIT, THE INFORMATION RETURNED WILL DESCRIBE THE EFFECTIVE ASSIGNMENT.
3937 ;
3938 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
3939 ;
3940 ; WD. 00 -- DIC (05.) & DPB SIZE (3.),
3941 ; WD. 01 -- LUN,
3942 ; WD. 02 -- ADDRESS OF SIX-WORD BUFFER.
3943 ;
3944 ;
3945 ; THE SIX WORD BUFFER IS FILLED WITH THE FIRST SIX WORDS OF THE
3946 ; CORRESPONDING PUD ENTRY AS FOLLOWS:
3947 ;
3948 ; WD. 00 -- NAME OF ASSIGNED DEVICE,
3949 ; WD. 01 -- UNIT NUMBER OF ASSIGNED DEVICE & FLAGS BYTE,
3950 ; WD. 02 -- DEVICE CHARACTERISTICS WD. #1,
3951 ; WD. 03 -- DEVICE CHARACTERISTICS WD. #2,
3952 ; WD. 04 -- DEVICE CHARACTERISTICS WD. #3,
3953 ; WD. 05 -- DEVICE CHARACTERISTICS WD. #4.
3954 ;
3955 ; THE FOLLOWING STATUS IS RETURNED:
3956 ;
3957 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
3958 ; OF ONE (+1).
3959 ;
3960 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
3961 ;
3962 ; -05 -- UNASSIGNED LUN,
3963 ;
3964 ; -95 -- INVALID BUFFER SIZE ( 1> OR >U.SZ)
3965 ; -96 -- INVALID LOGICAL UNIT NUMBER,
3966 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
3967 ; -99 -- DIC OR DPB SIZE IS INVALID.
3968 ;-
3969 ;R0 CONTAINS BUFFER ADDRESS (LAST DPB WORD)
3970 ;
3971 011144 006302 .D.GLI::ASL R2 ;MULTIPLY THE DPB SIZE BY 2
3977 ;
3978 ;
3979 011146 10$: MFPI (R1)+ ;PUSH LUN, AND CONVERT TO PUD ENTRY ADR
011146 012146 MOV (R1)+,-(SP)
3980 011150 CALL .VCLUN ;IF INVALID LUN, RETURN STS=-96.
011150 004737 005172' JSR PC,.VCLUN
3981 011154 012604 MOV (SP)+,R4 ;SET R4 TO PUD ENTRY ADR IF LUN ASSIGNED
3982 011156 001001 BNE 20$ ;IF UN-ASSIGNED LUN, RETURN STS=-05.
3983 011160 104773 TRAP DE.05
3984 ;
3985 ; FILL BUFFER -- IF SEGMENT FAULT, RETURN STS=-98.
3986 ;
3987 011162 20$: MFPS (R1),R0
011162 011100 MOV (R1),R0
DMGLI - "GET LUN INFO" DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 65-1
DIRECTIVE -- GET LUN INFORMATION
3988 011164 012446 30$: MOV (R4)+,-(SP)
3989 011166 MTPI (R0)+
011166 012620 MOV (SP)+,(R0)+
3990 011170 077203 SOB R2,30$
3991 ;
3992 011172 104401 TRAP DR.01 ;RETURN STS=+1
3993 ;
3994 .TITLE DMGTP - "GET TIME PARAMETERS" DIRECTIVE MODULE
3995 011174 IDENT$ 1,0
.IDENT /001000/
3996 ;
3997 ; COPYRIGHT (C) 1975, 1978 BY
3998 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3999 ;
4000 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4001 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4002 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4003 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4004 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4005 ;
4006 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4007 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4008 ; CORPORATION.
4009 ;
4010 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4011 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4012 ;
4013 ; MODULE: "GET TIME PARAMETERS" DIRECTIVE
4014 ;
4015 ; VERSION: 01-00
4016 ;
4017 ; AUTHOR: R. MCLEAN
4018 ;
4019 ; DATE: 19 JUL 75
4020 ;
4021 ;
4022 ; THIS MODULE CONTAINS:
4023 ;
4024 ; 1 -- CODE TO SERVICE THE "GET TIME PARAMETERS" DIRECTIVE.
4025 ;
4026 ; MACROS
4027 ;
4029 ;
4030 .MCALL CALL,RETURN,MTPI,MFPS
DMGTP - "GET TIME PARAMETERS" MACRO M1108 16-DEC-77 11:28 PAGE 66
DIRECTIVE -- GET TIME PARAMETERS
4033 .SBTTL DIRECTIVE -- GET TIME PARAMETERS
4034 ;+
4035 ; THE "GET TIME PARAMETERS" DIRECTIVE
4036 ;
4037 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED EIGHT WORD BUFFER
4038 ; WITH CURRENT TIME PARAMETERS.
4039 ;
4040 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
4041 ;
4042 ; WD. 00 -- DIC (59.) & DPB SIZE (2.),
4043 ; WD. 01 -- ADDRESS OF 8-WORD BUFFER.
4044 ;
4045 ; THE 8-WORD BUFFER IS FILLED AS FOLLOWS:
4046 ;
4047 ; WD. 0 -- YEAR (SINCE 1900),
4048 ; WD. 1 -- MONTH OF YEAR,
4049 ; WD. 2 -- DAY OF MONTH,
4050 ; WD. 3 -- HOUR OF DAY,
4051 ; WD. 4 -- MINUTE OF HOUR,
4052 ; WD. 5 -- SECOND OF MINUTE,
4053 ; WD, 6 -- TICK OF SECOND,
4054 ; WD. 7 -- TICKS PER SECOND.
4055 ;
4056 ; THE FOLLOWING STATUS IS RETURNED:
4057 ;
4058 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4059 ; OF ONE (+1).
4060 ;
4061 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4062 ;
4063 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
4064 ; -99 -- DIC OR DPB SIZE IS INVALID.
4065 ;
4066 011174 013746 031260' .D.GTP::MOV .TKPS,-(SP) ;PUSH TICKS-PER-SECOND
4067 011200 010104 MOV R1,R4 ;SAVE DPB POINTER
4068 011202 013700 031254' MOV .SSM,R0 ;FIND HOURS
4069 011206 012701 003410 MOV #60.*30.,R1
4070 011212 CALL $DIV ;DIVIDE
011212 004737 000000G JSR PC,$DIV
4071 011216 010003 MOV R0,R3 ;SAVE ANSWER
4072 011220 010100 MOV R1,R0 ;SET UP REMAINDER FOR NEXT DIVIDE
4073 011222 012701 000036 MOV #30.,R1
4074 011226 CALL $DIV ;FIND MIN
011226 004737 000000G JSR PC,$DIV
4075 011232 005046 CLR -(SP) ;TICKS NOT RETURNED
4076 011234 006301 ASL R1
4077 011236 010146 MOV R1,-(SP) ;SAVE SECONDS
4078 011240 010046 MOV R0,-(SP)
4079 011242 010346 MOV R3,-(SP) ;HOURS
4080 011244 005046 CLR -(SP)
4081 011246 113716 031250' MOVB .DAY,@SP
4082 011252 005216 INC @SP
4083 011254 005046 CLR -(SP)
4084 011256 113716 031251' MOVB .MON,@SP
4085 011262 005216 INC @SP
4086 011264 013746 031246' MOV .YEAR,-(SP)
4087 011270 162716 003554 SUB #1900.,@SP
DMGTP - "GET TIME PARAMETERS" MACRO M1108 16-DEC-77 11:28 PAGE 66-1
DIRECTIVE -- GET TIME PARAMETERS
4088 ;
4089 ;
4090 ; MOVE TIME PARAMETERS FROM KERNEL STACK TO 8-WORD BUFFER IN USER SPACE
4091 ;
4092 ;
4093 011274 012703 000010 MOV #8.,R3
4094 ;
4095 011300 MFPS (R4),R4 ;FIND BUFFER ADDRESS
011300 011404 MOV (R4),R4
4096 011302 10$:
4097 011302 MTPI (R4)+ ;MOVE WORD
011302 012624 MOV (SP)+,(R4)+
4098 011304 077302 SOB R3,10$ ;LOOP 8 TIMES
4099 ;
4100 011306 104401 TRAP DR.01 ;RETURN STS=+1
4101 ;
4102 .TITLE DMSED - SIGNIFICANT EVENT DIRECTIVES MODULE
4103 011310 IDENT$ 1,0
.IDENT /001000/
4104 ;
4105 ; COPYRIGHT (C) 1975, 1978 BY
4106 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4107 ;
4108 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4109 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4110 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4111 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4112 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4113 ;
4114 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4115 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4116 ; CORPORATION.
4117 ;
4118 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4119 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4120 ;
4121 ; MODULE: SIGNIFICANT EVENT DIRECTIVES
4122 ;
4123 ; VERSION: 01-00
4124 ;
4125 ; AUTHOR: R. MCLEAN
4126 ;
4127 ; DATE: 19 MAR 75
4128 ;
4129 ;
4130 ; THIS MODULE CONTAINS:
4131 ;
4132 ; 1 -- CODE TO SERVICE THE "WAITFOR SINGLE EVENT FLAG" DIRECTIVE,
4133 ; 2 -- CODE TO SERVICE THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE,
4134 ; 3 -- CODE TO SERVICE THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE.
4135 ; 4 -- CODE TO SERVICE THE "CLEAR EVENT FLAG" DIRECTIVE,
4136 ; 5 -- CODE TO SERVICE THE "SET EVENT FLAG" DIRECTIVE,
4137 ; 6 -- CODE TO SERVICE THE "DECLARE SIG EVENT" DIRECTIVE,
4138 ; 7 -- CODE TO SERVICE THE "READ EVENT FLAGS" DIRECTIVE
4139 ;
4140 ; MACROS
4142 ;
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 66-2
DIRECTIVE -- GET TIME PARAMETERS
4143 .MCALL CALL,RETURN,MTPS,MFPS,MFPI,MTPI
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 67
DIRECTIVE -- CLEAR EVENT FLAG
4146 .SBTTL DIRECTIVE -- CLEAR EVENT FLAG
4147 ;+
4148 ; THE "CLEAR EVENT FLAG" DIRECTIVE
4149 ;
4150 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CLEAR AND INDICATE
4151 ; EVENT FLAG AND REPORT THE FLAG'S POLARITY BEFORE CLEARING.
4152 ;
4153 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED;
4154 ;
4155 ; WD. 00 -- DIC (31.) & DPB SIZE (2.)
4156 ; WD. 01 -- EVENT FLAG NUMBER (EFN)
4157 ;
4158 ; THE FOLLOWING STATUS IS RETURNED:
4159 ;
4160 ;
4161 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
4162 ;
4163 ; R0 -- +0 -- FLAG WAS ALREADY RESET,
4164 ; R0 -- +2 -- FLAG WAS SET.
4165 ;
4166 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4167 ;
4168 ; R0 -- -97 -- EFN>64 OR EFN<1,
4169 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4170 ;-
4171 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4172 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4173 ; STACK, AND R0-R5 SET AS FOLLOWS:
4174 ; R0 -- PC OF EMT INSTRUCTION
4175 ; R1 -- WORD FOLLOWING THE DIC & SIZE
4176 ; R2 -- SIZE OF DPB (IN WORDS),
4177 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE )
4178 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4179 ;
4180 ;
4181 ;
4182 011310 .D.CEF::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
011310 004737 040404' JSR PC,.CEFN
4183 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
4184 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
4185 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
4186 ;SPECIFIED), RETURN WITH R2=R3=00.
4187 ;CONDITION CODES ARE SET PER "TST R3".
4188 ;
4189 ;EVENT FLAG SPECIFIED?
4190 011314 001444 BEQ SEX97 ;NO -- RETURN STS=-97
4191 011316 030312 BIT R3,@R2 ;YES -- IS FLAG CLEARED?
4192 011320 001410 BEQ SEXP0 ;YES -- RETURN STS=+0
4193 011322 040312 BIC R3,@R2 ;NO -- CLEAR FLAG & RETURN STS=+2
4194 011324 104402 SEXP2: TRAP DR.02 ;COMMON RETURN -- STS=+2
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 68
DIRECTIVE -- SET EVENT FLAG
4196 .SBTTL DIRECTIVE -- SET EVENT FLAG
4197 ;+
4198 ; THE "SET EVENT FLAG" DIRECTIVE
4199 ;
4200 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SET AND INDICATED EVENT FLAG
4201 ; AND REPORT THE FLAG'S POLARITY BEFORE SETTING.
4202 ;
4203 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
4204 ;
4205 ; WD. 00 -- DIC (33.) & DPB SIZE (2.),
4206 ; WD. 01 -- EVENT FLAG NUMBER (EFN).
4207 ;
4208 ; THE FOLLOWING STATUS IS RETURNED:
4209 ;
4210 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
4211 ;
4212 ; R0 -- +0 -- FLAG WAS CLEARED,
4213 ; R0 --+2 -- FLAG WAS SET.
4214 ;
4215 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4216 ;
4217 ; R0 -- -97 -- EFN>64 OR EFN<1,
4218 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4219 ;-
4220 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4221 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4222 ; STACK, AND R0-R5 SET AS FOLLOWS:
4223 ; R0 -- PC OF EMT INSTRUCTION
4224 ; R1 -- WORD FOLLOWING DIC % SIZE
4225 ; R2 -- DPB SIZE
4226 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4227 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4228 ;
4229 ;
4230 ;R1 IS POINTING TO EFN IN DPB
4231 ;
4232 011326 .D.SEF::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
011326 004737 040404' JSR PC,.CEFN
4233 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
4234 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
4235 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
4236 ;SPECIFIED), RETURN WITH R2=R3=00.
4237 ;CONDITION CODES ARE SET PER "TST R3".
4238 ;
4239 ;EVENT FLAG SPECIFIED?
4240 011332 001435 BEQ SEX97 ;NO -- RETURN STS=-97
4241 011334 030312 SEXCM: BIT R3,@R2 ;YES -- IS FLAG ALREADY SET?
4242 011336 001372 BNE SEXP2 ;YES -- RETURN STS=+2
4243 011340 050312 BIS R3,@R2 ;NO -- SET FLAG & RETURN STS=+0
4244 011342 104400 SEXP0: TRAP DR.00 ;COMMON RETURN -- STS=+0
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 69
DIRECTIVE -- DECLARE SIGNIFICANT EVENT
4246 .SBTTL DIRECTIVE -- DECLARE SIGNIFICANT EVENT
4247 ;+
4248 ; THE "DECLARE SIGNIFICANT EVENT" DIRECTIVE
4249 ;
4250 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT
4251 ; AND OPTIONALLY SET AN EVENT FLAG & AND REPORT ITS POLARITY BEFORE
4252 ; IT WAS SET.
4253 ;
4254 ; A TWO WORD DBP OF THE FOLLOWING FORMAT IS USED TO (1) READ AN EVENT
4255 ; FLAG, (2) SET THE EVENT FLAG, (3) DECLARE A SIGNIFICANT EVENT, AND
4256 ; (4) REPORT THE PRE-EVENT FLAG POLARITY:
4257 ;
4258 ; WD. 00 -- DIC (35.) & DPB SIZE (2.),
4259 ; WD. 01 -- EVENT FLAG NUMBER (EFN).
4260 ;
4261 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO (1) DECLARE A
4262 ; SIGNIFICANT EVENT:
4263 ;
4264 ; WD. 00 -- DIC (07.) & DPB SIZE (2.).
4265 ; WD. 01 -- NO EVENT FLAG SPECIFIED
4266 ;
4267 ; THE FOLLOWING STATUS IS RETURNED:
4268 ;
4269 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
4270 ;
4271 ; R0 -- +1 -- NO EVENT FLAG SPECIFIED,
4272 ; R0 -- +0 -- SPECIFIED FLAG WAS CLEARED,
4273 ; R0 --+2 -- SPECIFIED FLAG WAS SET.
4274 ;
4275 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4276 ;
4277 ; R0 -- -97 -- EFN<1 OR EFN>64.,
4278 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4279 ;-
4280 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4281 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4282 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
4283 ; R0 -- PC OF EMT INSTRUCTION
4284 ; R1 -- WORD FOLLOWING DIC & SIZE
4285 ; R2 -- DPB SIZE
4286 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4287 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4288 ;
4289 ;
4290 ;
4291 011344 152737 000001 031116' .D.DSE::BISB #EV.SE,.SERFG+0 ;SET SIGNIFICANT EVENT FLAG
4292 011352 005302 DEC R2
4293 011354 001401 BEQ 5$
4294 011356 104400 TRAP DR.00
4295 011360 5$: CALL .CEFN ;YES -- R1 IS POINTING TO EFN IN DPB.
011360 004737 040404' JSR PC,.CEFN
4296 ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
4297 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
4298 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
4299 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
4300 ;SPECIFIED), RETURN WITH R2=R3=00.
4301 ;CONDITION CODES ARE SET PER "TST R3".
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 69-1
DIRECTIVE -- DECLARE SIGNIFICANT EVENT
4302 ;
4303 ;EVENT FLAG SPECIFIED?
4304 011364 001417 BEQ SEXP1 ;NO -- RETURN STS=1.
4305 011366 000762 BR SEXCM ;GO TO COMMON TEST
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 70
DIRECTIVE -- READ EVENT FLAG
4307 .SBTTL DIRECTIVE -- READ EVENT FLAG
4308 ;+
4309 ; THE "READ EVENT FLAG" DIRECTIVE
4310 ;
4311 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ AND INDICATED EVENT FLAG.
4312 ;
4313 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
4314 ;
4315 ; WD. 00 -- DIC (37.) & DPB SIZE (2.),
4316 ; WD. 01 -- EVENT FLAG NUMBER (EFN).
4317 ;
4318 ; THE FOLLOWING STATUS IS RETURNED:
4319 ;
4320 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS OF:
4321 ;
4322 ; R0 -- +0 -- FLAG WAS CLEARED,
4323 ; R0 -- +2 -- FLAG WAS SET.
4324 ;
4325 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4326 ;
4327 ; R0 -- -97 -- EFN>64 OR EFN<1,
4328 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4329 ;-
4330 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4331 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4332 ; STACK, AND R0-R5 SET AS FOLLOWS:
4333 ; R0 -- PC OF EMT INSTRUCTION
4334 ; R1 -- WORD FOLLOWING DIC & SIZE
4335 ; R2 -- DPB SIZE
4336 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4337 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4338 ;
4339 ;
4340 ;R1 IS POINTING TO EFN IN DPB.
4341 ;
4342 011370 .D.REF::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
011370 004737 040404' JSR PC,.CEFN
4343 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
4344 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
4345 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
4346 ;SPECIFIED), RETURN WITH R2=R3=00.
4347 ;CONDITION CODES ARE SET PER "TST R3".
4348 ;
4349 ;EVENT FLAG SPECIFIED?
4350 011374 001414 BEQ SEX97 ;NO -- RETURN STS=-97
4351 011376 030312 BIT R3,@R2 ;YES -- IS FLAG SET?
4352 011400 001351 BNE SEXP2 ;YES -- RETURN STS=+2
4353 011402 104400 TRAP DR.00 ;NO -- RETURN STS=+0
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 71
DIRECTIVE -- READ ALL EVENT FLAGS
4355 .SBTTL DIRECTIVE -- READ ALL EVENT FLAGS
4356 ;+
4357 ; THE "READ ALL FLAGS" DIRECTIVE
4358 ;
4359 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO READ ALL SIXTY-FOUR
4360 ; EVENT FLAGS FOR THE ISSUING TASK AND RECORD THEIR POLARITIES
4361 ; IN A SIXTY-FOUR BIT (4-WORD) BUFFER.
4362 ;
4363 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
4364 ;
4365 ; WD. 00 -- DIC (39.) & DPB SIZE (2.),
4366 ; WD. 01 -- ADDRESS OF 64-BIT BUFFER.
4367 ;
4368 ; THE FOLLOWING STATUS IS RETURNED:
4369 ;
4370 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4371 ; OF ONE (+1).
4372 ;
4373 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4374 ;
4375 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4376 ;-
4377 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4378 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4379 ; STACK, AND R0-R5 SET AS FOLLOWS:
4380 ; R0 -- PC OF EMT INSTRUCTION
4381 ; R1 -- WORD FOLLOWING DIC & SIZE
4382 ; R2 -- DPB SIZE
4383 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4384 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4385 ;
4386 ;
4387 ; FILL FOUR WORD BUFFER
4388 ;
4389 011404 .D.RAF::MTPS A.EF+0(R5),(R1)+ ;FLAGS 1-16 TO BUF+0
011404 016521 000020 MOV A.EF+0(R5),(R1)+
4390 011410 MTPS A.EF+2(R5),(R1)+ ;FLAGS 17-32 TO BUF+2
011410 016521 000022 MOV A.EF+2(R5),(R1)+
4391 011414 MTPS .COMEF+0,(R1)+ ;FLAGS 33-48 TO BUF+4
011414 013721 031112' MOV .COMEF+0,(R1)+
4392 011420 MTPS .COMEF+2,(R1)+ ;FLAGS 49-64 TO BUF+6
011420 013721 031114' MOV .COMEF+2,(R1)+
4393 ;
4394 011424 104401 SEXP1: TRAP DR.01 ;RETURN STS=+1
4395 ;
4396 011426 104637 SEX97: TRAP DE.97
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 72
DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
4398 .SBTTL DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
4399 ;+
4400 ; THE "WAIT FOR SINGLE EVENT FLAG" DIRECTIVE
4401 ;
4402 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
4403 ; ISSUING TASK UNTIL AN INDICATED EVENT FLAG IS SET. IF THE FLAG IS SET
4404 ; AT ISSUANCE, TASK EXECUTION IS EFFECTIVELY NOT SUSPENDED. (ACTUALLY, THE
4405 ; TASK IS ALWAYS SUSPENDED, BUT R0 IS LEFT POINTING TO THE ISSUING TASK'S
4406 ; ATL NODE; AND THEREFORE, A CHECK IS ALWAYS MADE BY THE ATL SCAN ROUTINE.)
4407 ;
4408 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
4409 ;
4410 ; WD. 00 -- DIC (41.) & DPB SIZE (2.),
4411 ; WD. 01 -- EVENT FLAG NUMBER (EFN).
4412 ;
4413 ; THE FOLLOWING STATUS IS RETURNED:
4414 ;
4415 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4416 ; OF ONE (+1).
4417 ;
4418 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4419 ;
4420 ; R0 -- -97 -- INVALID EVENT FLAG NUMBER (<1 OR >64.),
4421 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4422 ;-
4423 ;
4424 ;
4425 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4426 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4427 ; STACK, AND R0-R5 SET AS FOLLOWS:
4428 ; R0 -- PC OF EMT INSTRUCTION
4429 ; R1 -- WORD FOLLOWING DIC & SIZE
4430 ; R2 -- DPB SIZE
4431 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4432 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4433 ;
4434 ;
4435 011430 011103 .D.WFS::MOV @R1,R3 ;SET R3 TO EFN
4436 ;IS AN EVENT FLAG SPECIFIED (NON-ZERO EFN)?
4437 011432 .D.WFO:: ;SPECIAL ENTRY POINT FOR QIO AND WAIT
4438 011432 001775 BEQ SEX97 ;NO -- RETURN STS=-97.
4439 011434 020327 000100 CMP R3,#64. ;YES -- IS EFN IN RANGE: 0-64.?
4440 011440 101372 BHI SEX97 ;NO -- RETURN STS=-97.
4441 ;
4442 011442 005303 DEC R3 ;YES -- CONVERT EFN TO FLAG SET NUMBER (R2),
4443 011444 005002 CLR R2 ;AND FLAG MASK (R1)
4444 011446 CALL DIV216 ;DIVIDE R2 BY 16.
011446 004737 041262' JSR PC,DIV216
4445 011452 012701 000001 MOV #1,R1
4446 011456 005303 10$: DEC R3 ;DO AN ASH R3,R1
4447 011460 100402 BMI 20$
4448 011462 006301 ASL R1
4449 011464 000774 BR 10$
4450 011466 20$:
4451 ;
4452 ;
4453 011466 006302 ASL R2 ;CONVERT SET NUMBER (0,1,2,3) TO TASK
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 72-1
DIRECTIVE -- WAITFOR SINGLE EVENT FLAG
4454 011470 062702 000014 ADD #TS.WF0,R2 ;STATUS FOR ATL NODE.
4455 ;
4456 011474 010165 000024 MOV R1,A.FM+0(R5) ;SET MASK AND STATUS IN ATL NODE
4457 011500 110265 000014 MOVB R2,A.TS(R5)
4458 ;
4459 011504 104401 TRAP DR.01 ;RETURN STS=+1
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 73
DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
4461 .SBTTL DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
4462 ;+
4463 ; THE "WAITFOR LOGICAL 'OR' OF FLAGS" DIRECTIVE
4464 ;
4465 ;
4466 ; IF THE INDICATED CONDITION IS MET AT ISSUANCE, TASK EXECUTION IS
4467 ; EFFECTIVELY NOT SUSPENDED. (ACTUALLY, THE TASK IS ALWAYS SUSPENDED,
4468 ;
4469 ;
4470 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAIT FOR EVENT FLAGS OF A GIVEN SET
4471 ;
4472 ; WD. 00 -- DIC (43.) & DPB SIZE (3.)
4473 ; WD. 01 -- SET NUMBER
4474 ; WD. 02 -- FLAGS MASK FOR THIS SET
4475 ;
4476 ;
4477 ; A FIVE-WORD DPB OF THE FOLLOWING FORMAT IS USED TO WAITFOR EVENT FLAGS
4478 ; OF SET FOUR:
4479 ;
4480 ; WD. 00 -- DIC (15.) & DPB SIZE (5.),
4481 ; WD. 01 -- MASK WORD FOR FLAGS 1-16,
4482 ; WD. 02 -- MASK WORD FOR FLAGS 17-32,
4483 ; WD. 03 -- MASK WORD FOR FLAGS 33-48,
4484 ; WD. 04 -- MASK WORD FOR FLAGS 49-64.
4485 ;
4486 ; MASK WORD BITS FROM RIGHT-TO-LEFT REPRESENT INCREASING EVENT FLAG
4487 ; NUMBERS, AND A SET MASK WORD BIT INDICATES "WAITFOR THE CORRESPONDING
4488 ; EVENT FLAG".
4489 ;
4490 ; THE FOLLOWING STATUS IS RETURNED.
4491 ;
4492 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4493 ; OF ONE (+1).
4494 ;
4495 ; CC-C SET TO INDICATE REJECTION, AND DIRECTIVE STATUS OF:
4496 ;
4497 ; R0 -- -97 -- NO EVENT FLAG SPECIFIED IN MASK WORD(S),
4498 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4499 ;-
4500 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4501 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4502 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
4503 ; R0 -- PC OF EMT INSTRUCTION
4504 ; R1 -- WORD FOLLOWING DIC & SIZE
4505 ; R2 -- DPB SIZE
4506 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4507 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4508 ;
4509 ;
4510 ;
4511 ; EVEN FLAG SET IS FOUR. I.E., WAIT FOR ANY OF SIXTY-FOUR EVENT FLAGS.
4512 ;
4513 ; SET 64-BIT FLAGS MASK IN ATL NODE AND ACCUMULATE 'OR' OF MASK WORDS
4514 ; IN R2. THE 64-BIT MASK IS SET BY MOVING FOUR WORDS FROM THE DPB TO
4515 ; THE ATL NODE.
4516 ;
4517 ; IF NO FLAG INDICATED (ALL 64 BITS ARE ZERO), RETURN STS=-97.
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 73-1
DIRECTIVE -- WAITFOR LOGICAL 'OR' OF FLAGS
4518 ;
4519 011506 022702 000005 .D.WFL::CMP #5,R2 ;THREE OR 5 WORD DPB?
4520 011512 001020 BNE 10$ ;THREE WORD DPB (WAIT FOR ONE SET)
4521 011514 010502 MOV R5,R2 ;SETUP R2 TO FILL ATL NODE
4522 011516 062702 000024 ADD #A.FM,R2
4523 011522 MFPS (R1)+,@R2 ;MASK FOR FLAGS 1-16
011522 012112 MOV (R1)+,@R2
4524 011524 012203 MOV (R2)+,R3
4525 ;MASK FOR FLAGS 17-32
4526 011526 MFPS (R1)+,@R2
011526 012112 MOV (R1)+,@R2
4527 011530 052203 BIS (R2)+,R3
4528 ;MASK FOR FLAGS 33-48
4529 011532 MFPS (R1)+,@R2
011532 012112 MOV (R1)+,@R2
4530 011534 052203 BIS (R2)+,R3
4531 011536 MFPS @R1,@R2 ;MASK FOR FLAGS 49-64 (LAST DPB WORD)
011536 011112 MOV @R1,@R2
4532 011540 051203 BIS @R2,R3
4533 011542 001731 BEQ SEX97 ;RETURN STS=-97 IF NO FLAG INDICATED
4534 ;
4535 011544 112765 000024 000014 MOVB #TS.WF4,A.TS(R5) ;SET WAITFOR-SET-FOUR TASK STATUS
4536 ;
4537 011552 104401 TRAP DR.01 ;RETURN DIRECTIVE STS=+1
4538 ;
4539 011554 10$: MFPS (R1)+,R2 ;FIND THE SET NUMBER
011554 012102 MOV (R1)+,R2
4540 011556 001415 BEQ 30$ ;ILLEGAL SET NUMBER
4541 011560 MFPS (R1)+,R3 ;FIND THE FLAGS TO WAIT FOR
011560 012103 MOV (R1)+,R3
4542 011562 020227 000004 CMP R2,#4 ;LEGAL SET NUMBER?
4543 011566 101011 BHI 30$ ;NO -- ILLEGAL SET TO WAIT FOR
4544 011570 005302 DEC R2 ;DECREMENT SO SET1 IS 0
4545 011572 006302 ASL R2 ;MULTIPLY BY 2
4546 011574 062702 000014 ADD #TS.WF0,R2 ;POINT TO THE CORRECT ATL STATUS
4547 011600 110265 000014 MOVB R2,A.TS(R5) ;SET THE CORRECT STATUS IN THE ATL NODE
4548 011604 010365 000024 MOV R3,A.FM(R5) ;SET UP THE FLAGS MASK WORD FOR THESE EVENT FLAGS
4549 011610 104401 TRAP DR.01 ;RETURN STS +1
4550 ;
4551 011612 104636 30$: TRAP DE.98 ;ILLEGAL SET NUMBER
DMSED - SIGNIFICANT EVENT DIR MACRO M1108 16-DEC-77 11:28 PAGE 74
DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
4553 .SBTTL DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
4554 ;+
4555 ; THE "WAIT FOR NEXT SIGNIFICANT EVENT" DIRECTIVE
4556 ;
4557 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
4558 ; ISSUING TASK UNTIL THE NEXT SIGNIFICANT EVENT HAS BEEN DECLARED.
4559 ;
4560 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
4561 ;
4562 ; WD. 00 -- DIC (49.) & DPB SIZE (1.).
4563 ;
4564 ; THE FOLLOWING STATUS IS RETURNED:
4565 ;
4566 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4567 ; OF ONE (+1).
4568 ;
4569 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4570 ;
4571 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4572 ;-
4573 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4574 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4575 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
4576 ; R0 -- PC OF EMT INSTRUCTION
4577 ; R1 -- WORD FOLLOWING DIC & SIZE
4578 ; R2 -- DPB SIZE
4579 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4580 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4581 ;
4582 ;
4583 011614 011505 .D.WSE::MOV @R5,R5 ;ADVANCE R5 (ATL NODE POINTER)
4584 011616 012737 000001 031120' MOV #EV.SE,.SEWFL
4585 011624 104401 TRAP DR.01 ;RETURN STS=+1.
4586 ;
4587 .TITLE DMMKT - "MARK TIME" DIRECTIVE MODULE
4588 011626 IDENT$ 1,0
.IDENT /001000/
4589 ;
4590 ; COPYRIGHT (C) 1975, 1978 BY
4591 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4592 ;
4593 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4594 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4595 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4596 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4597 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4598 ;
4599 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4600 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4601 ; CORPORATION.
4602 ;
4603 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4604 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4605 ;
4606 ; MODULE: "MARK TIME" DIRECTIVE
4607 ;
4608 ; VERSION: 01-00
DMMKT - "MARK TIME" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 74-1
DIRECTIVE -- WAITFOR NEXT SIGNIFICANT EVENT
4609 ;
4610 ; AUTHOR: R. MCLEAN
4611 ;
4612 ; DATE: 19 APR 75
4613 ;
4614 ;
4615 ; THIS MODULE CONTAINS:
4616 ;
4617 ; 1 -- CODE TO SERVICE THE "MARK TIME" DIRECTIVE.
4618 ;
4619 ; MACROS
4621 ;
4622 .MCALL CALL,RETURN,MFPI,MTPI,MTPS,MFPS
DMMKT - "MARK TIME" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 75
DIRECTIVE -- MARK TIME
4625 .SBTTL DIRECTIVE -- MARK TIME
4626 ;+
4627 ; THE "MARK TIME" DIRECTIVE
4628 ;
4629 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO DECLARE A SIGNIFICANT EVENT
4630 ; IN AN INDICATED TIME INTERVAL FROM ISSUANCE.
4631 ;
4632 ; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED AT ISSUANCE AND SET
4633 ; AT THE TIME OF THE SIGNIFICANT EVENT.
4634 ;
4635 ;
4636 ; IF AN EVENT FLAG NUMBER
4637 ; IS SPECIFIED, THE SIGNIFICANT EVENT WILL STILL OCCUR AFTER
4638 ; THE INDICATED TIME INTERVAL.
4639 ;
4640 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
4641 ;
4642 ; WD. 00 -- DIC (23.) & DPB SIZE (5.),
4643 ; WD. 01 -- EVENT FLAG NUMBER (EFN),
4644 ; WD. 02 -- TIME INTERVAL MAGNITUDE, ( IN TICS)
4645 ; WD. 03 -- RESCHEDULE INTERVAL (IN TICS)
4646 ; WD. 04 -- AST TRAP ADDRESS
4647 ;
4648 ; THE FOLLOWING STATUS IS RETURNED:
4649 ;
4650 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4651 ; OF ONE (+1).
4652 ;
4653 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4654 ;
4655 ; -01 -- UNAVAILABLE ENTRY (FOR CLOCK LIST),
4656 ;
4657 ; -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
4658 ; -99 -- DIC OR DPB SIZE IS INVALID.
4659 ;-
4660 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4661 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4662 ; STACK, AND R0-R5 SET AS FOLLOWS:
4663 ;
4664 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
4665 ;
4666 ;
4667 ;R1 IS POINTING TO EFN IN DPB
4668 ;
4669 ;
4670 011626 .D.MKT::CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
011626 004737 040404' JSR PC,.CEFN
4671 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
4672 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
4673 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
4674 ;SPECIFIED), RETURN WITH R2=R3=00.
4675 ;CONDITION CODES ARE SET PER "TST R3".
4676 ;
4677 011632 001001 BNE 10$ ;ALL OK WITH EFN
4678 011634 104637 TRAP DE.97 ;RETURN STS=-97
4679 011636 062701 000004 10$: ADD #4,R1 ;R1 IS POINTING TO THE EFN, ADVANCE TO THE
4680 ;FIRST WORD (MAGNITUDE) OF TIME INTERVAL.
DMMKT - "MARK TIME" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 75-1
DIRECTIVE -- MARK TIME
4681 ;
4682 011642 010246 MOV R2,-(SP) ;PUSH EFN WORD ADDRESS
4683 011644 010346 MOV R3,-(SP) ;PUSH EFN MASK
4684 ;
4685 011646 MFPI (R1) ;PUSH THE RESCHED INTERVAL
011646 011146 MOV (R1),-(SP)
4686 011650 MFPI -(R1) ;PUSH TIME INTERVAL MAGNITUED MAGNITUDE
011650 014146 MOV -(R1),-(SP)
4687 011652 MFPI 4(R1) ;PUSH AST TRAP ADDRES
011652 016146 000004 MOV 4(R1),-(SP)
4688 ;
4689 ;
4690 ; STACK & REGISTER SUMMARY:
4691 ;
4692 ; SP+10 -- FLAG WORD ADDRESS (OR ZERO)
4693 ; SP+06 -- FLAG MASK (OR ZERO)
4694 ; SP+04 -- TIME RESCHEDULE INTERVAL
4695 ; SP+02 -- TIME INTERVAL
4696 ; SP+00 -- AST TRAP ADDRESS
4697 ;
4698 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK
4699 ; R1 -- ADDRESS OF NODE FOR CLOCK QUEUE
4700 ;
4701 011656 046676 000006 000010 BIC +6(SP),@+10(SP) ;CLEAR INDICATED EVENT FLAG
4702 ;
4703 011664 012700 034452' MOV #.CLKBA,R0 ;POINT TO BEGINNING OF CLOCK LIST
4704 011670 022700 034656' 20$: CMP #.CLKEA,R0 ;END OF LIST?
4705 011674 001001 BNE 30$ ;NO -- MUST BE OK
4706 011676 104777 TRAP DE.01 ;YES -- RAN OUT OF CLOCK ENTRIES
4707 011700 005710 30$: TST @R0 ;LOOK FOR A FREE ENTRY
4708 011702 001403 BEQ 40$ ;FOUND ONE
4709 011704 062700 000014 ADD #C.SZ,R0 ;NOT HERE -- TRYNEXT ENTRY
4710 011710 000767 BR 20$
4711 ;
4712 ;
4713 011712 010520 40$: MOV R5,(R0)+ ;ATL NODE OF ISSUING TASK
4714 011714 012620 MOV (SP)+,(R0)+ ;AST ADDRESS
4715 011716 012620 MOV (SP)+,(R0)+ ;(POP) SCHEDULE INTERVAL
4716 011720 012620 MOV (SP)+,(R0)+ ;(POP) RESCHEDULE INTERVAL
4717 011722 012620 MOV (SP)+,(R0)+ ;(POP) EVENT FLAG MASK
4718 011724 012620 MOV (SP)+,(R0)+ ;(POP) EVENT FLAG WORD ADDRESS
4719 ;
4720 011726 104401 TRAP DR.01 ;RETURN STS=+1
4721 ;
4722 .TITLE DMCMT - "CANCEL MARK TIME" DIRECTIVE MODULE
4723 011730 IDENT$ 1,0
.IDENT /001000/
4724 ;
4725 ; COPYRIGHT (C) 1975, 1978 BY
4726 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4727 ;
4728 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4729 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4730 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4731 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4732 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4733 ;
DMCMT - "CANCEL MARK TIME" DI MACRO M1108 16-DEC-77 11:28 PAGE 75-2
DIRECTIVE -- MARK TIME
4734 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4735 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4736 ; CORPORATION.
4737 ;
4738 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4739 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4740 ;
4741 ; MODULE: "CANCEL MARK TIME" DIRECTIVE
4742 ;
4743 ; VERSION: 01-00
4744 ;
4745 ; AUTHOR: R. MCLEAN
4746 ;
4747 ; DATE: 19 MAR 75
4748 ;
4749 ;
4750 ; THIS MODULE CONTAINS:
4751 ;
4752 ; 1 -- CODE TO SERVICE THE "CANCEL MARK TIME" DIRECTIVE.
4753 ;
4754 ; MACROS
4755 ;
4757 .MCALL CALL,RETURN
DMCMT - "CANCEL MARK TIME" DI MACRO M1108 16-DEC-77 11:28 PAGE 76
DIRECTIVE -- CANCEL MARK-TIME REQUESTS
4760 .SBTTL DIRECTIVE -- CANCEL MARK-TIME REQUESTS
4761 ;+
4762 ; THE "CANCEL MARK-TIME REQUESTS" DIRECTIVE
4763 ;
4764 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO CANCEL MARK-TIME REQUESTS
4765 ; THAT HAVE BEEN MADE BY THE ISSUING TASK.
4766 ;
4767 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED TO CANCEL ALL MARK-TIME
4768 ; REQUESTS THAT HAVE BEEN MADE BY THE ISSUING TASK:
4769 ;
4770 ; WD. 00 -- DIC (21.) & DPB SIZE (1.).
4771 ;
4772 ;
4773 ; THE FOLLOWING STATUS IS RETURNED:
4774 ;
4775 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4776 ; OF ONE (R0 - +1).
4777 ;
4778 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4779 ;
4780 ; R0 -- -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
4781 ; R0 -- -99 -- DIC OR DPB SIZE IS INVALID.
4782 ;-
4783 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4784 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
4785 ; STACK, AND R0-R5 SET AS FOLLOWS:
4786 ; R0 -- PC OF EMT INSTRUCTION
4787 ; R1 -- WORD FOLLOWING DIC & SIZE
4788 ; R2 -- DPB SIZE
4789 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4790 ;
4791 ;
4792 ; ALL MARK-TIME REQUESTS BY THE ISSUING TASK ARE TO BE DELETED
4793 ; FROM THE CLOCK QUEUE.
4794 ;
4795 ;
4796 011730 010546 .D.CMT::MOV R5,-(SP) ;SAVE CURRENT TASK POINTER
4797 011732 012704 034452' MOV #.CLKBA,R4 ;USE R4 TO SCAN DEQUE
4798 ;
4799 011736 020427 034656' 50$: CMP R4,#.CLKEA ;END OF SCAN (END OF DEQUE)?
4800 011742 001002 BNE 60$
4801 011744 012605 MOV (SP)+,R5 ;RESTORE CURRENT TASK POINTER
4802 011746 104401 TRAP DR.01 ;YES -- RETURN STS=+1.
4803 ;NO -- CHECK NODE POINTED TO BY R4
4804 011750 026405 000000 60$: CMP C.AT(R4),R5 ;YES -- WAS REQUEST MADE BY ISSUING TASK?
4805 011754 001005 BNE 45$ ;NO -- NEXT NODE
4806 ;DELETE NODE (PER R4) FROM CLOCK QUEUE, AND
4807 011756 CALL .CKDEL ;QUEUE NODE (R4 IS NOT ALTERED).
011756 004737 040472' JSR PC,.CKDEL
4808 ;
4809 ;
4810 011762 000765 BR 50$ ;TEST FOR END OF DEQUE
4811 ;
4812 011764 012605 90$: MOV (SP)+,R5 ;RESTORE CURRENT TASK POINTER
4813 011766 104637 TRAP DE.97 ;TO RETURN STS=-97.
4814 ;
4815 011770 062704 000014 45$: ADD #C.SZ,R4 ;UPDATE THE Q SIZE TO LOOK AT NEXT ENTRY
DMCMT - "CANCEL MARK TIME" DI MACRO M1108 16-DEC-77 11:28 PAGE 76-1
DIRECTIVE -- CANCEL MARK-TIME REQUESTS
4816 011774 000760 BR 50$
4817 ;
4818 .TITLE DMSUS - "SUSPEND" & "RESUME" DIRECTIVES MODULE
4819 011776 IDENT$ 1,0
.IDENT /001000/
4820 ;
4821 ; COPYRIGHT (C) 1975, 1978 BY
4822 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4823 ;
4824 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4825 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4826 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4827 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4828 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4829 ;
4830 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4831 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4832 ; CORPORATION.
4833 ;
4834 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4835 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4836 ;
4837 ; MODULE: "SUSPEND" & "RESUME" DIRECTIVES
4838 ;
4839 ; VERSION: 01-00
4840 ;
4841 ; AUTHOR: R. MCLEAN
4842 ;
4843 ; DATE: 19 MAR 75
4844 ;
4845 ;
4846 ; THIS MODULE CONTAINS:
4847 ;
4848 ; 1 -- CODE TO SERVICE THE "SUSPEND" DIRECTIVE,
4849 ; 2 -- CODE TO SERVICE THE "RESUME" DIRECTIVE.
4850 ;
4851 ; MACROS
4852 ;
4854 .MCALL CALL,RETURN
DMSUS - "SUSPEND" & "RESUME" MACRO M1108 16-DEC-77 11:28 PAGE 77
DIRECTIVE -- SUSPEND EXECUTION
4857 .SBTTL DIRECTIVE -- SUSPEND EXECUTION
4858 ;+
4859 ; THE "SUSPEND" DIRECTIVE
4860 ;
4861 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO SUSPEND THE EXECUTION OF THE
4862 ; ISSUING TASK.
4863 ;
4864 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
4865 ;
4866 ; WD. 00 -- DIC (23.) & DPB SIZE (1.).
4867 ;
4868 ; THE FOLLOWING STATUS IS RETURNED:
4869 ;
4870 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4871 ; OF TWO (+2). TWO IS RETURNED SO THAT "RECEIVE" CAN BE IDENTIFIED IN THE CASE
4872 ; OF A "RECEIVE OR SUSPEND" DIRECTIVE.
4873 ;
4874 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4875 ;
4876 ; -99 -- DIC OR DPB SIZE IS INVALID.
4877 ;-
4878 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4879 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
4880 ; STACK, AND R0-R5 SET AS FOLLOWS:
4881 ; R0 -- PC OF EMT INSTRUCTION
4882 ; R1 -- WORD FOLLOWING DIC & SIZE
4883 ; R2 -- DPB SIZE
4884 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4885 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4886 ;
4887 ; R5 IS SET TO THE ATL NODE ADDRESS OF THE TASK OF NEXT LOWEST PRIORITY
4888 ; THAN THE ISSUING TASK.
4889 ;
4890 ; COMMON CODE FOR "SUSPEND" & "RECEIVE OR SUSPEND" -- R5 CONTAINS THE
4891 ; ISSUING TASK'S ATL NODE ADDRESS.
4892 ;
4893 011776 112765 000012 000014 .D.SUS::MOVB #TS.SUS,A.TS(R5) ;CHANGE TASK STATUS TO "SUSPENDED"
4894 012004 011505 MOV @R5,R5 ;POINT R5 TO NEXT LOWEST PRIORITY TASK
4895 012006 104402 TRAP DR.02 ;AND RETURN STS=+2.
DMSUS - "SUSPEND" & "RESUME" MACRO M1108 16-DEC-77 11:28 PAGE 78
DIRECTIVE -- RESUME TASK EXECUTION
4897 .SBTTL DIRECTIVE -- RESUME TASK EXECUTION
4898 ;+
4899 ; THE "RESUME" DIRECTIVE
4900 ;
4901 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RESUME THE EXECUTION OF A TASK
4902 ; THAT HAS ISSUED A "SUSPEND" DIRECTIVE.
4903 ;
4904 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
4905 ;
4906 ; WD. 00 -- DIC (25.) & DPB SIZE (3.),
4907 ; WD. 01 -- TASK NAME (FIRST HALF),
4908 ; WD. 02 -- TASK NAME (SECOND HALF).
4909 ;
4910 ; THE FOLLOWING STATUS IS RETURNED:
4911 ;
4912 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
4913 ; OF ONE (+1).
4914 ;
4915 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
4916 ;
4917 ; -02 -- TASK NOT INSTALLED,
4918 ; -07 -- TASK NOT ACTIVE,
4919 ; -08 -- TASK NOT SUSPENDED,
4920 ;
4921 ; -99 -- DIC OR DPB SIZE IS INVALID.
4922 ;-
4923 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
4924 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
4925 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
4926 ; R0 -- PC OF EMT INSTRUCTION
4927 ; R1 -- WORD FOLLOWING DIC & SIZE
4928 ; R2 -- DPB SIZE
4929 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
4930 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
4931 ;
4932 ; R5 -- LAST WORD OF DPB.
4933 ;
4934 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
4935 ;
4936 012010 .D.RES::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO
012010 004737 041562' JSR PC,..FSTD
4937 ;ZERO IF TASK NAME NOT FOUND (AND SET
4938 ;CONDITION CODES PER "TST R2").
4939 ;
4940 ;ADVANCE R1 BY FOUR (PAST TASK NAME).
4941 ;
4942 012014 001001 BNE 10$ ;IF TASK NOT INSTALLED, RETURN STS=-02.
4943 012016 104776 TRAP DE.02
4944 012020 032762 000001 000006 10$: BIT #SF.TA,S.FW(R2) ;IS TASK ACTIVE?
4945 012026 001425 BEQ 70$ ;NO -- RETURN STS=-07.
4946 012030 012703 032552' MOV #.ATLLH,R3 ;YES -- SETUP FOR ATL SCAN
4947 012034 20$:
4948 012034 011303 MOV @R3,R3 ;SETUP R3 TO EXAMINE NEXT ENTRY
4949 012036 020327 032552' CMP R3,#.ATLLH ;END OF DEQUE?
4950 012042 001417 BEQ 70$ ;YES -- RETURN STS=-07.
4951 012044 026302 000016 CMP A.TD(R3),R2 ;NO -- STD ADDRESS MATCH?
4952 012050 001371 BNE 20$ ;NO -- CHECK NEXT ATL NODE
DMSUS - "SUSPEND" & "RESUME" MACRO M1108 16-DEC-77 11:28 PAGE 78-1
DIRECTIVE -- RESUME TASK EXECUTION
4953 012052 30$:
4954 012052 126327 000014 000012 CMPB A.TS(R3),#TS.SUS ;NO -- IS TASK SUSPENDED?
4955 012060 001007 BNE 60$
4956 ;
4957 012062 112763 000010 000014 MOVB #TS.RUN,A.TS(R3) ;SET STATUS TO RUNNING
4958 ;YES -- CHANGE STATUS TO RUNNING, DECLARE A
4959 012070 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;SIGNIFICANT EVENT, AND RETURN STS=+1.
4960 012076 104401 TRAP DR.01 ;AND RETURN STS=+1.
4961 012100 104770 60$: TRAP DE.08 ;NO -- RETURN STS=-08.
4962 ;
4963 012102 104771 70$: TRAP DE.07 ;COMMON RETURN STS=-07.
4964 ;
4965 .TITLE DMEXT - "EXIT" DIRECTIVE MODULE
4966 012104 IDENT$ 1,0
.IDENT /001000/
4967 ;
4968 ; COPYRIGHT (C) 1975, 1978 BY
4969 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4970 ;
4971 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4972 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4973 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4974 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4975 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4976 ;
4977 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4978 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4979 ; CORPORATION.
4980 ;
4981 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4982 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4983 ;
4984 ; MODULE: "EXIT" DIRECTIVE
4985 ;
4986 ; VERSION: 01-00
4987 ;
4988 ; AUTHOR: R. MCLEAN
4989 ;
4990 ; DATE: 19 MAR 75
4991 ;
4992 ;
4993 ; THIS MODULE CONTAINS:
4994 ;
4995 ; 1 -- CODE TO SERVICE THE "EXIT" DIRECTIVE
4996 ;
4997 ; MACROS
4998 ;
5000 .MCALL CALL,RETURN
DMEXT - "EXIT" DIRECTIVE MODU MACRO M1108 16-DEC-77 11:28 PAGE 79
DIRECTIVE -- TASK EXIT
5003 .SBTTL DIRECTIVE -- TASK EXIT
5004 ;+
5005 ; THE "TASK EXIT" DIRECTIVE
5006 ;
5007 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO TERMINATE THE EXECUTION OF THE
5008 ; ISSUING TASK.
5009 ;
5010 ; A ONE WORD DPB OF THE FOLLOWING FORMAT IS USED:
5011 ;
5012 ; WD. 00 -- DIC (27.) & DPB SIZE (1.).
5013 ;
5014 ; THE FOLLOWING STATUS IS RETURNED:
5015 ;
5016 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
5017 ; OF ONE (+1).
5018 ;
5019 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
5020 ;
5021 ; -99 -- DIC OR DPB SIZE IS INVALID.
5022 ;-
5023 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
5024 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
5025 ; STACK, AND R0-R5 SET AS FOLLOWS:
5026 ; R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
5027 ; R2 -- DPB SIZE
5028 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
5029 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
5030 ;
5031 ;
5032 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
5033 ;
5034 ; R5 CONTAINS THE EXITING TASK'S ATL NODE ADDRESS.
5035 ;
5036 012104 042766 000340 000020 .D.EXT::BIC #000340,EM.DRO(SP) ;SET ISSUING TASK'S PROCESSRO PRIROITY TO ZERO TO
5037 ;PREVENT RETURN TO TASK IF EXIT DIRECTIVE HAS
5038 ;BEEN ISSUED FROM NON TASK LEVEL
5039 ;
5040 012112 112765 000026 000014 MOVB #TS.EXT,A.TS(R5) ;CHANGE STATUS TO "EXIT", INDICATE
5041 012120 005065 000024 CLR A.FM+0(R5) ;NO TERMINATION NOTIFICATION, AND
5042 012124 104401 TRAP DR.01 ;EXIT DIRECTIVE SERVICE (SET STS=+1)
5043 ;
5044 .TITLE DMQIO - "QUEUE I/O" DIRECTIVE MODULE
5045 012126 IDENT$ 1,0
.IDENT /001000/
5046 ;
5047 ; COPYRIGHT (C) 1975, 1978 BY
5048 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
5049 ;
5050 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
5051 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
5052 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
5053 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
5054 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
5055 ;
5056 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
5057 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
5058 ; CORPORATION.
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 79-1
DIRECTIVE -- TASK EXIT
5059 ;
5060 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
5061 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
5062 ;
5063 ; MODULE: "QUEUE I/O" DIRECTIVE
5064 ;
5065 ; VERSION: 01-00
5066 ;
5067 ; AUTHOR: R. MCLEAN
5068 ;
5069 ; DATE: 19 JUL 75
5070 ;
5071 ;
5072 ; THIS MODULE CONTAINS:
5073 ;
5074 ; 1 -- CODE TO SERVICE THE "QUEUE I/O" DIRECTIVE.
5075 ; 2 -- CODE TO SERVICE THE "QUEUE I/O AND WAIT" DIRECTIVE.
5076 ;
5077 ; MACROS
5078 ;
5080 .MCALL CALL,RETURN,MFPI,MTPI,MTPS,MFPS
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 80
DIRECTIVE -- QUEUE I/O
5083 .SBTTL DIRECTIVE -- QUEUE I/O
5084 ;+
5085 ; THE "QUEUE I/O" DIRECITVE
5086 ;
5087 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN
5088 ; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE-
5089 ; UNIT. THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH
5090 ; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT.
5091 ;
5092 ; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL
5093 ; UNIT TABLE) IN THE TASK'S HEADER. EACH PHYSICAL UNIT IS REPRESENTED
5094 ; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY). WHEN A LUN IS
5095 ; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD
5096 ; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY. WHEN A LUN IS NOT
5097 ; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE
5098 ; CORRESPONDING LUT ENTRY IS SET TO ZERO.
5099 ;
5100 ; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM
5101 ; SUBROUTINES) UPON I/O COMPLETION.
5102 ;
5103 ; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST
5104 ; IS QUEUED, AND SET AT THE SIGNIFICANT EVENT.
5105 ;
5106 ; IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR
5107 ; UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE
5108 ; STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S
5109 ; (USER) STACK.
5110 ;
5111 ; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED:
5112 ;
5113 ; WD. 00 -- DIC (01.) & DPB SIZE (6-12),
5114 ; WD. 01 -- I/O FUNCTION CODE,
5115 ; WD. 02 -- LUN,
5116 ; WD. 03 -- [EFN] & [PRIORITY],
5117 ; WD. 04 -- [ADDRESS OF I/O STATUS BLOCK],
5118 ; WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT],
5119 ; WD. 06 -- PARAMETER #1,
5120 ; WD. 07 -- PARAMETER #2,
5121 ; WD. 10 -- PARAMETER #3,
5122 ; WD. 11 -- PARAMETER #4,
5123 ; WD. 12 -- PARAMETER #5,
5124 ; WD. 13 -- PARAMETER #6.
5125 ;
5126 ; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED
5127 ; UNDER "SYMBOLIC DEFINITIONS".
5128 ;
5129 ; THE FOLLOWING STATUS IS RETURNED:
5130 ;
5131 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
5132 ; OF ONE (+1).
5133 ;
5134 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
5135 ;
5136 ; -01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE,
5137 ; -05 -- UNASSIGNED LUN,
5138 ;
5139 ; -95 -- INVALID PRIORITY (>250.),
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 80-1
DIRECTIVE -- QUEUE I/O
5140 ; -96 -- INVALID LUN,
5141 ; -97 -- INVALID EFN (>64.),
5142 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
5143 ; -99 -- DIC OR DPB SIZE IS INVALID.
5144 ; THE "QUEUE I/O AND WAIT" DIRECITVE
5145 ;
5146 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO PLACE AN I/O REQUEST FOR AN
5147 ; INDICATED DEVICE IN A QUEUE OF PRIORITY ORDERED REQUESTS FOR THAT DEVICE-
5148 ; UNIT. THE DEVICE-UNIT IS SPECIFIED AS A LOGICAL UNIT NUMBER (LUN), WHICH
5149 ; IS MAPPED INTO A PHYSICAL UNIT SPECIFICATION PER LUN ASSIGNMENT.
5150 ;
5151 ; EACH LUN IS REPRESENTED BY AN ENTRY IN THE ISSUING TASK'S LUT (LOGICAL
5152 ; UNIT TABLE) IN THE TASK'S HEADER. EACH PHYSICAL UNIT IS REPRESENTED
5153 ; BY AN ENTRY IN THE PUD (PHYSICAL UNIT DIRECTORY). WHEN A LUN IS
5154 ; ASSIGNED TO A PHYSICAL UNIT, THE ADDRESS OF THE CORRESPONDING PUD
5155 ; ENTRY IS SET IN THE CORRESPONDING LUT ENTRY. WHEN A LUN IS NOT
5156 ; ASSIGNED TO A PHYSICAL UNIT ("DEASSIGNED" OR "ASSIGNED TO NONE"), THE
5157 ; CORRESPONDING LUT ENTRY IS SET TO ZERO.
5158 ;
5159 ; NORMALLY, A SIGNIFICANT EVENT IS DECLARED BY HANDLER TASKS (VIA SYSTEM
5160 ; SUBROUTINES) UPON I/O COMPLETION.
5161 ;
5162 ; IF AN EVENT FLAG IS SPECIFIED, IT IS CLEARED WHEN THE REQUEST
5163 ; IS QUEUED, AND SET AT THE SIGNIFICANT EVENT.
5164 ; IF AN EVENT FLAG IS SPECIFIED, A WAIT DIRECTIVE IS ALSO
5165 ; EXECUTED BEFORE TASK SWITCHING IS ENABLED.
5166 ;
5167 ; IF NO EVENT FLAG IS SPECIFIED THE I/O WILL BE QUEUE'D
5168 ; AND THE WAIT DIRECTIVE WILL BE REJECTED (STATUS -97.)
5169 ;
5170 ;
5171 ; IF AN AST SERVICE ENTRY POINT IS SPECIFIED, THE AST WILL OCCUR
5172 ; UPON I/O COMPLETION WITH THE TASK'S PS, PC, VIRTUAL ZERO (DIRECTIVE
5173 ; STATUS), AND [ADDRESS OF I/O STATUS BLOCK] PUSHED ONTO THE TASK'S
5174 ; (USER) STACK.
5175 ;
5176 ; A 6-12 WORD DPB OF THE FOLLOWING FORMAT IS USED:
5177 ;
5178 ; WD. 00 -- DIC (03.) & DPB SIZE (6-12),
5179 ; WD. 01 -- I/O FUNCTION CODE,
5180 ; WD. 02 -- LUN,
5181 ; WD. 03 -- [EFN] & [PRIORITY],
5182 ; WD. 04 -- [ADDRESS OF I/O STATUS BLOCK],
5183 ; WD. 05 -- [I/O DONE AST SERVICE ENTRY POINT],
5184 ; WD. 06 -- PARAMETER #1,
5185 ; WD. 07 -- PARAMETER #2,
5186 ; WD. 10 -- PARAMETER #3,
5187 ; WD. 11 -- PARAMETER #4,
5188 ; WD. 12 -- PARAMETER #5,
5189 ; WD. 13 -- PARAMETER #6.
5190 ;
5191 ; THE FORMAT OF THE I/O REQUEST NODE CREATED IS DESCRIBED
5192 ; UNDER "SYMBOLIC DEFINITIONS".
5193 ;
5194 ; THE FOLLOWING STATUS IS RETURNED:
5195 ;
5196 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 80-2
DIRECTIVE -- QUEUE I/O
5197 ; OF ONE (+1).
5198 ;
5199 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
5200 ;
5201 ; -01 -- UNAVAILABLE POOL NODE FOR REQUEST QUEUE,
5202 ; -05 -- UNASSIGNED LUN,
5203 ; -06 -- HANDLER TASK NOT DECLARED RESIDENT,
5204 ;
5205 ; -95 -- INVALID PRIORITY (>250.),
5206 ; -96 -- INVALID LUN,
5207 ; -97 -- INVALID EFN (>64.), OR 0 EVENT FLAG (I/O QUEUE'D BUT WAIT NOT EXECUTED),
5208 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
5209 ; -99 -- DIC OR DPB SIZE IS INVALID.
5210 ;-
5211 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
5212 ; DIRECTIVE ISSUING TASK'S PS, PC, & R5-R0 PUSHED ONTO THE
5213 ; KERNEL STACK, AND R5-R0 SET AS FOLLOWS:
5214 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
5215 ;
5216 012126 010346 .D.QIO::MOV R3,-(SP) ;SAVE THE DIC TO DETERMINE IF QIO& WAIT OR JUST QIO.
5217 ;
5218 012130 20$: MFPS (R1)+,R3 ;SET R3 TO FUNCTION CODE
012130 012103 MOV (R1)+,R3
5219 ;(LEAVE R1 POINTING TO LUN WORD)
5220 ;
5221 012132 MFPI (R1)+ ;PUSH LUN, AND CONVERT TO PUD ENTRY ADR
012132 012146 MOV (R1)+,-(SP)
5222 012134 CALL .VCLUN ;(LEAVE R1 POINTING TO EFN/PRI WORD)
012134 004737 005172' JSR PC,.VCLUN
5223 ;IF INVALID LUN, RETURN STS=-96.
5224 012140 011600 MOV @SP,R0 ;SET R0 TO PUD ENTRY ADR IF LUN ASSIGNED
5225 012142 001001 BNE 40$ ;IF UN-ASSIGNED LUN, RETURN STS=-05.
5226 012144 104773 TRAP DE.05
5227 012146 010246 40$: MOV R2,-(SP) ;PUSH DPB SIZE
5228 ;
5229 ;TO ACCESS REQUESTOR'S HEADER BY '.VCLUN').
5230 ;
5231 012150 MFPI +4(R1) ;PUSH I/O DONE AST ENTRY PT (OR ZERO)
012150 016146 000004 MOV +4(R1),-(SP)
5232 ;
5233 012154 MFPI +02(R1) ;PUSH I/O STATUS BLOCK ADR (OR ZERO),
012154 016146 000002 MOV +02(R1),-(SP)
5234 012160 011602 MOV @SP,R2 ;AND CLEAR TWO-WORD STATUS BLOCK.
5235 012162 001404 BEQ 50$ ;(IF SPECIFIED). IF PART OF STATUS
5236 012164 005046 CLR -(SP) ;OUT OF ADDRESS SPACE, RETURN
5237 012166 MTPI (R2)+
012166 012622 MOV (SP)+,(R2)+
5238 012170 005046 CLR -(SP)
5239 012172 MTPI @R2
012172 012612 MOV (SP)+,@R2
5240 012174 50$:
5241 012174 010346 MOV R3,-(SP) ;PUSH I/O FUNCTION CODE WORD
5242 ;
5243 ;R1 IS POINTING TO [EFN] IN DPB.
5244 ;
5245 012176 CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
012176 004737 040404' JSR PC,.CEFN
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 80-3
DIRECTIVE -- QUEUE I/O
5246 ;IN R2, AND (2) FLAG MASK IN R3 (R2 IS
5247 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
5248 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
5249 ;SPECIFIED), RETURN WITH R2=R3=00.
5250 ;CONDITION CODES ARE SET PER "TST R3".
5251 ;
5252 012202 MFPS @R1,R4 ;SET PRIORITY IN R4, EFN IN HIGH ORDER
012202 011104 MOV @R1,R4
5253 ;BYTE OF R0, AND ZERO IN LOW ORDER BYTE
5254 012204 010400 MOV R4,R0 ;OF R0
5255 012206 105004 CLRB R4
5256 012210 000304 SWAB R4
5257 012212 000300 SWAB R0
5258 012214 105000 CLRB R0
5259 ;IS A PRIORITY SPECIFIED?
5260 012216 001002 BNE 70$ ;YES -- CHECK ITS VALIDITY
5261 012220 156504 000010 BISB A.RP(R5),R4 ;NO -- USE RUN PARIORITY OF ISSUING TASK
5262 ;("BISB" INTO A CLEARED R4 EFFECTS A
5263 ;"MOVB" WITHOUT SIGN EXTENSION.)
5264 ;
5265 012224 70$: MFPI -(R1) ;PUSH LUN & FORM LUN/EFN WORD ON STACK.
012224 014146 MOV -(R1),-(SP)
5266 012226 050016 BIS R0,@SP ;(R1 IS LEFT POINTING TO LUN)
5267 ;
5268 012230 010446 MOV R4,-(SP) ;PUSH PRI/BYTE RESERVED FOR DPB SIZE
5269 ;
5270 ; STACK & REGISTER SUMMARY:
5271 ;
5272 ; SP+14 -- PUD ENTRY ADDRESS
5273 ; SP+12 -- DPB SIZE
5274 ; SP+10 -- AST ENTRY PT (OR ZERO)
5275 ; SP+06 -- I/O STATUS BUF ADR (OR ZERO)
5276 ; SP+04 -- I/O FUNCTION CODE
5277 ; SP+02 -- LUN/EFN WORD
5278 ; SP+00 -- PRI/RESERVED BYTE
5279 ;
5280 ; R5 -- ATL NODE ADR OF ISSUING TASK
5281 ; R2 & R3 SETUP TO CLEAR EVENT FLAG
5282 ;
5283 012232 116666 000012 000001 MOVB +12(SP),+1(SP) ;SET DPB SIZE IN "PRI/DPB-SIZE" WORD
5284 ;
5285 012240 010100 MOV R1,R0 ;SETUP R0 TO FETCH I/O PARAMETERS (FROM DPB)
5286 012242 062700 000010 ADD #10,R0
5287 012246 010046 MOV R0,-(SP) ;SAVE R0
5288 ;
5289 012250 012701 000040 MOV #32.,R1 ;SET UP TO PICK A NODE
5290 012254 CALL ..ALCB
012254 004737 041642' JSR PC,..ALCB
5291 012260 010001 MOV R0,R1 ;SET UP NODE ADDRESS
5292 012262 103001 BCC 79$ ;OK -- CHECK FUNCTION CODE
5293 012264 104777 TRAP DE.01 ;NO -- RETURN POOL EMPTY ERROR
5294 ;
5295 ;
5296 ;
5297 ; REQUEST CAN BE MADE -- STACK & REGISTER SUMMARY:
5298 ;
5299 ; SP+14 -- PUD ENTRY ADDRESS
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 80-4
DIRECTIVE -- QUEUE I/O
5300 ; SP+12 -- DPB SIZE
5301 ; SP+10 -- AST ENTRY PT (OR ZERO)
5302 ; SP+06 -- I/O STATUS BUF ADR (OR ZERO)
5303 ; SP+04 -- I/O FUNCTION CODE
5304 ; SP+02 -- LUN/EFN WORD
5305 ; SP+00 -- PRI/DPB SIZE
5306 ;
5307 ; R5 -- ATL NODE ADR OF ISSUING TASK
5308 ; R1 -- I/O REQUEST NODE ADDRESS
5309 ; R2 & R3 SETUP TO CLEAR EVENT FLAG
5310 ; R0 -- POINTING TO FIRST PARAMETER WORD IN DPB
5311 ;
5312 012266 040312 79$: BIC R3,@R2 ;CLEAR EVENT FLAG, IFF SPECIFIED.
5313 ;NOTE -- IF NO EFN SPECIFIED, R3=R3=00.
5314 ;I.E., NO BITS IN LOCATION ZERO ARE CLEARED.
5315 012270 012600 MOV (SP)+,R0 ;RESTORE BUFFER ADDRESS
5316 ;
5317 ; FILL I/O REQUEST NODE
5318 ;
5319 012272 010104 MOV R1,R4 ;SETUP R4 TO FILL NODE
5320 012274 022424 CMP (R4)+,(R4)+ ;MOVE OVER LISTHEAD
5321 012276 016524 000016 MOV A.TD(R5),(R4)+ ;SET STD ADDRESS
5322 ;
5323 012302 010524 MOV R5,(R4)+ ;SET ATL NODE ADR OF REQUESTOR
5324 012304 012624 MOV (SP)+,(R4)+ ;(POP) SET PRI/DPB-SIZE WORD
5325 012306 011603 MOV @SP,R3 ;SAVE LUN/EFN
5326 012310 012624 MOV (SP)+,(R4)+ ;(POP) SET LUN/EFN WORD
5327 012312 012624 MOV (SP)+,(R4)+ ;(POP) SET I/O FUNCTION CODE
5328 012314 012624 MOV (SP)+,(R4)+ ;(POP) SET I/O STATUS BLK ADR (OR ZERO)
5329 012316 012624 MOV (SP)+,(R4)+ ;(POP) SET AST ENTRY PT (OR ZERO)
5330 012320 013724 031262' MOV .SYUIC,(R4)+ ;SET THE UIC
5331 ;
5332 012324 012602 MOV (SP)+,R2 ;(POP) SET DPB SIZE IN R2, CONVERT
5333 012326 162702 000006 SUB #6.,R2 ;TO NUMBER OF I/O PARAMETERS, AND
5334 012332 001402 BEQ 90$ ;MOVE PARAMETERS FROM DPB TO I/O
5335 012334 80$: ;REQUEST NODE.
5336 012334 MFPS (R0)+,(R4)+
012334 012024 MOV (R0)+,(R4)+
5337 012336 077202 SOB R2,80$
5338 012340 90$:
5339 ;
5340 ;
5341 012340 012602 MOV (SP)+,R2 ;(POP) SET R2 TO PUD ENTRY ADDRESS, AND
5342 012342 016204 000020 MOV U.HA(R2),R4 ;SET R2 TO HANDLER TASK'S ATL NODE ADDRESS.
5343 ;
5344 ; IF FUNCTION CODE 'RF.XR' IS SET, THIS FUNCTION IS AN "EXPRESS" FUNCTION.
5345 ; EXPRESS REQUESTS ARE NORMALLY DE-QUEUED BEFORE NORMAL REQUESTS. VIZ.,
5346 ; "KILL READ REQUEST", OR "RUNDOWN I/O ON TASK".
5347 ;
5348 012346 010137 012566' MOV R1,QNDSV ;SAVE THE QIO NODE ADDRESS
5349 012352 016100 000014 MOV R.FC(R1),R0 ;FIND THE FUNCTION CODE
5350 012356 020027 002500 CMP R0,#IO.STC ;CHECK TO SEE IF LEGAL
5351 012362 101457 BLOS 95$ ;YES -- DON'T NEED FCP
5352 012364 010246 MOV R2,-(SP)
5353 012366 010346 MOV R3,-(SP)
5354 012370 010203 MOV R2,R3 ;FIND THE PUD ADDRESS
5355 012372 016302 000040 MOV U.ACP(R3),R2 ;FIND THE STD ADDRESS OF THE ACP
DMQIO - "QUEUE I/O" DIRECTIVE MACRO M1108 16-DEC-77 11:28 PAGE 80-5
DIRECTIVE -- QUEUE I/O
5356 012376 001015 BNE 77$ ;FOUND ACP -- DON'T DIDDLE CODES
5357 012400 022700 011000 CMP #IO.WVB,R0 ;IS CODE WRITE VIRTUAL?
5358 012404 001003 BNE 74$ ;NO -- LOOK FOR READ
5359 012406 012761 000400 000014 MOV #IO.WLB,R.FC(R1) ;YES SET FUNCTON CODE
5360 012414 022700 010400 74$: CMP #IO.RVB,R0 ;IS FUNCTION CODE READ VIRTUAL?
5361 012420 001036 BNE 93$ ;NO -- FORGET IT
5362 012422 012761 001000 000014 MOV #IO.RLB,R.FC(R1) ;SET FUNCTION CODE
5363 012430 000432 BR 93$
5364 012432 77$:
5368 012432 020027 010400 CMP R0,#IO.RVB ;CHECK FOR READ/WRITE VIRTUAL
5369 012436 001403 BEQ 71$ ;YES -- ATTEMPT TO MAP IT
5370 012440 020027 011000 CMP R0,#IO.WVB ;MAYBE TRY WRITE
5371 012444 001003 BNE 73$ ;NO -- CALL FCP
5372 012446 71$: CALL ..VTOL ;TRY AND MAP
012446 004737 044500' JSR PC,..VTOL
5373 012452 103021 BCC 93$ ;MADE IT -- DON'T CALL FCP
5374 012454 010337 012570' 73$: MOV R3,QNDSV+2 ;SET PUD ADDRESS
5375 012460 016137 000014 012572' MOV R.FC(R1),QNDSV+4 ;SET FUNCTION CODE
5376 012466 012701 012574' MOV #PRMBLK,R1 ;POINTER TO BUFFER ADDRESS AND EFN
5377 012472 CALL .SEND ;SEND BLOCK
012472 004737 012746' JSR PC,.SEND
5378 012476 005003 CLR R3
5379 012500 005004 CLR R4 ;SET DEFAULT PARTITION AND PRI FOR ACP
5380 012502 010102 MOV R1,R2
5381 012504 CALL .REQS ;REQ ACP
012504 004737 004362' JSR PC,.REQS
5382 012510 012603 MOV (SP)+,R3
5383 012512 012602 MOV (SP)+,R2
5384 012514 000414 BR 100$
5385 ;
5386 012516 012603 93$: MOV (SP)+,R3 ;RESTORE
5387 012520 012602 MOV (SP)+,R2
5388 012522 95$: ;(R2 CONTAINS PUD ENTRY ADDRESS)
5389 012522 062702 000022 ADD #U.RF,R2 ;SET R2 TO I/O REQUEST DEQUE LISTHEAD ADR
5390 ;(R1 IS SET TO REQUEST NODE ADDRESS)
5391 012526 CALL ..IPRI ;AND INSERT REQUEST NODE BY PRIORITY.
012526 004737 041346' JSR PC,..IPRI
5392 012532 052764 000010 000020 BIS #EF.NIR,A.EF+0(R4) ;NO -- SET TRIGGER EVENT FLAG 'EF.NIR'.
5393 012540 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;DECLARE SIGNIFICANT EVENT TO EFFECT "TRIGGER"
5394 ;
5395 012546 022627 000003 100$: CMP (SP)+,#3 ;CHECK THE DIC TO SEE IF QIO AND WAIT
5396 012552 001401 BEQ 120$ ;YES -- ISSUE THE WAIT
5397 ; ;NO -- JUST RETURN
5398 012554 104401 TRAP DR.01 ;RETURN STS=+1
5399 ;
5400 012556 105003 120$: CLRB R3 ;SET UP FOR THE WAIT DIRECTIVE
5401 012560 000303 SWAB R3
5402 012562 000137 011432' JMP .D.WFO ;ISSUE WAIT DIRECTIVE
5403 ;
5404 012566 000000 000000 000000 QNDSV: .WORD 0,0,0 ;SAVE AREA FOR NODE
5405 ;
5406 012574 012566' PRMBLK: .WORD QNDSV ;POINTER TO SEND BUFFER
5407 012576 000000 .WORD 0 ;EFN (0)
5408 .TITLE DMSAR - SEND & RECEIVE DIRECTIVES MODULE
5409 012600 IDENT$ 1,0
.IDENT /001000/
5410 ;
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 80-6
DIRECTIVE -- QUEUE I/O
5411 ;
5412 ;
5413 ;
5414 ;
5415 ;
5416 ; COPYRIGHT (C) 1975, 1978 BY
5417 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
5418 ;
5419 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
5420 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
5421 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
5422 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
5423 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
5424 ;
5425 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
5426 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
5427 ; CORPORATION.
5428 ;
5429 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
5430 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
5431 ;
5432 ;
5433 ;
5434 ;
5435 ;
5436 ; MODULE: SEND & RECEIVE DIRECTIVES
5437 ;
5438 ; VERSION: 01-00
5439 ;
5440 ; AUTHOR: R. MCLEAN
5441 ;
5442 ; DATE: 19 MAY 75
5443 ;
5444 ;
5445 ; THIS MODULE CONTAINS:
5446 ;
5447 ; 1 -- CODE TO SERVICE THE "SEND DATA" DIRECTIVE,
5448 ; 2 -- CODE TO SERVICE THE "SEND AND REQUEST OR RESUME" DIRECTIVE,
5449 ; 3 -- CODE TO SERVICE THE "RECEIVE DATA" DIRECTIVE,
5450 ; 4 -- CODE TO SERVICE THE "RECEIVE OR EXIT" DIRECTIVE,
5451 ; 5 -- CODE TO SERVICE THE "RECEIVE OR SUSPEND" DIRECTIVE,
5452 ;
5453 ; MACROS
5454 ;
5456 .MCALL CALL,RETURN,MTPI,MTPS,MFPI,MFPS
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 81
DIRECTIVE -- SEND DATA
5459 .SBTTL DIRECTIVE -- SEND DATA
5460 ;+
5461 ; THE "SEND DATA" DIRECTIVE
5462 ;
5463 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD
5464 ; BLOCK OF DATA FOR A TASK TO RECEIVE.
5465 ;
5466 ; A FIVE WORD DPB OF THE FOLLOWING FORMAT IS USED:
5467 ;
5468 ; WD. 00 -- DIC (13.) & DPB SIZE (5.),
5469 ; WD. 01 -- RECEIVER TASK NAME (FIRST HALF),
5470 ; WD. 02 -- RECEIVER TASK NAME (SECOND HALF),
5471 ; WD. 03 -- ADDRESS OF THIRTEEN WORD DATA BLOCK,
5472 ; WD. 04 -- [EVENT FLAG NUMBER (EFN)].
5473 ;
5474 ; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED
5475 ; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET.
5476 ;
5477 ; THE FOLLOWING STATUS IS RETURNED:
5478 ;
5479 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
5480 ; OF ONE (+1).
5481 ;
5482 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
5483 ;
5484 ; -02 -- RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND),
5485 ; -04 -- INSUFFICIENT POOL NODES FOR "SEND",
5486 ;
5487 ; -97 -- INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
5488 ; -99 -- DIC OR DPB SIZE IS INVALID.
5489 ;-
5490 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
5491 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
5492 ; STACK, AND R0-R5 SET AS FOLLOWS:
5493 ; R0 -- PC OF EMT INSTRUCTION
5494 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
5495 ; R2 -- DPB SIZE
5496 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
5497 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
5498 ;
5499 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
5500 ;
5501 012600 .D.SEN::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO
012600 004737 041562' JSR PC,..FSTD
5502 ;ZERO IF TASK NAME NOT FOUND (AND SET
5503 ;CONDITION CODES PER "TST R2").
5504 ;
5505 ;ADVANCE R1 BY FOUR (PAST TASK NAME).
5506 ;
5507 012604 001406 BEQ .X.02 ;IF TASK NOT INSTALLED, RETURN STS=-02.
5508 ;
5509 ; R1 IS POINTING TO DPB WD. 03, AND R2 CONTAINS STD NODE ADR OF RECEIVER.
5510 ;
5511 012606 10$: CALL .SEND ;SEND DATA & SET EVENT FLAG PER R1 & R2
012606 004737 012746' JSR PC,.SEND
5512 ;
5513 012612 104401 TRAP DR.01 ;RETURN STS=+1.
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 82
DIRECTIVE -- SEND AND REQUEST OR RESUME
5515 .SBTTL DIRECTIVE -- SEND AND REQUEST OR RESUME
5516 ;+
5517 ; THE "SEND AND REQUEST OR RESUME" DIRECTIVE
5518 ;
5519 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO QUEUE (FIFO) A THIRTEEN WORD
5520 ; BLOCK OF DATA FOR A TASK TO RECEIVE, AND TO REQUEST OR RESUME THE
5521 ; EXECUTION OF THE RECEIVER TASK.
5522 ;
5523 ; THIS DIRECTIVE HAS THE EFFECT OF ISSUING A "SEND DATA" DIRECTIVE
5524 ; FOLLOWED BY A "REQUEST" OR "RESUME" DIRECTIVE, EXCEPT THAT (1) NO TASK
5525 ; SWITCHING CAN OCCUR BETWEEN THE SEND AND THE REQUEST OR RECEIVE, AND
5526 ; (2) IF THE SEND IS NOT PERFORMED, NEITHER THE REQEST NOR THE RESUME
5527 ; WILL BE ATTEMPTED.
5528 ;
5529 ; I.E., IF DATA IS SENT TO AN INACTIVE TASK, THAT TASK WILL BE REQUESTED;
5530 ; IF DATA IS SENT TO A SUSPENDED TASK, THAT TASK WILL BE RESUMED.
5531 ;
5532 ; A NINE WORD DPB OF THE FOLLOWING FORMAT IS USED:
5533 ;
5534 ; WD. 00 -- DIC (15.) & DPB SIZE (9.),
5535 ; WD. 01 -- RECEIVER TASK NAME (FIRST HALF),
5536 ; WD. 02 -- RECEIVER TASK NAME (SECOND HALF),
5537 ; WD. 03 -- [PARTITION NAME (FIRST HALF)],
5538 ; WD. 04 -- [PARTITION NAME (SECOND HALF)],
5539 ; WD. 05 -- [PRIORITY],
5540 ; WD. 06 -- 0,
5541 ; WD. 07 -- ADDRESS OF THIRTEEN WORD DATA BLOCK,
5542 ; WD. 10 -- [EVENT FLAG NUMBER (EFN)].
5543 ;
5544 ; WHEN AN EVENT FLAG IS SPECIFIED, A SIGNIFICANT EVENT IS DECLARED
5545 ; (IF THE DIRECTIVE IS PERFORMED) AND THE INDICATED EVENT FLAG IS SET.
5546 ;
5547 ; THE FOLLOWING STATUS IS RETURNED:
5548 ;
5549 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE
5550 ; STATUS OF:
5551 ;
5552 ; +1 -- DATA SENT AND TASK REQUESTED,
5553 ; +2 -- DATA SEND AND TASK RESUMED,
5554 ; +3 -- DATA SENT TO AN NON-SUSPENDED ACTIVE TASK.
5555 ;
5556 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
5557 ;
5558 ; -01 -- [R] INSUFFICIENT POOL NODES AVAILABLE FOR "REQUEST",
5559 ; -02 -- [B] RECEIVER TASK NOT INSTALLED (NO STD ENTRY FOUND),
5560 ; -03 -- [R] PARTITION TOO SMALL FOR RECEIVER TASK,
5561 ; -04 -- [B] INSUFFICIENT POOL NODES FOR "SEND",
5562 ; -08 -- [R] RECEIVER TASK IS DISABLED,
5563 ;
5564 ; -80 -- [B] DIRECTIVE ISSUED BY "BACKGROUND" TASK,
5565 ; -94 -- [R] PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND),
5566 ; -95 -- [R] INVALID PRIORITY SPECIFIED (<0 OR >250.),
5567 ; -97 -- [B] INVALID EVENT FLAG NUMBER (EFN<0 OR EFN>64),
5568 ; -99 -- [B] DIC OR DPB SIZE IS INVALID.
5569 ;
5570 ; [R] -- REQUEST OR RESUME REJECTED
5571 ; [B] -- BOTH SEND & REQUEST OR RESUME REJECTED
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 82-1
DIRECTIVE -- SEND AND REQUEST OR RESUME
5572 ;-
5573 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
5574 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
5575 ; STACK, AND R0-R5 SET AS FOLLOWS:
5576 ; R0 -- PC OF EMT INSTRUCTION
5577 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
5578 ; R2 -- DPB SIZE
5579 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
5580 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
5581 ;
5582 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
5583 ;
5584 012614 .D.SAR::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO
012614 004737 041562' JSR PC,..FSTD
5585 ;ZERO IF TASK NAME NOT FOUND (AND SET
5586 ;CONDITION CODES PER "TST R2").
5587 ;
5588 ;ADVANCE R1 BY FOUR (PAST TASK NAME).
5589 ;
5590 012620 001001 BNE SKX ;IF TASK NOT INSTALLED, RETURN STS=-02.
5591 012622 104776 .X.02: TRAP DE.02
5592 ;
5593 012624 010146 SKX: MOV R1,-(SP) ;PUSH (SAVE) R1 & R2, AND ADVANCE R1 TO POINT
5594 012626 010246 MOV R2,-(SP) ;TO DPB WD. 07.
5595 012630 062701 000010 ADD #8.,R1
5596 ;
5597 ; R1 IS POINTING TO DPB WD. 07, AND R2 CONTAINS STD ENTRY ADR OF RECEIVER.
5598 ;
5599 012634 CALL .SEND ;SEND DATA & SET EVENT FLAG PER R1 & R2
012634 004737 012746' JSR PC,.SEND
5600 ;(R1, R2, R3, R4, & R5 ARE ALTERED)
5601 ;
5602 012640 012602 MOV (SP)+,R2 ;POP (RESTORE) R2 & R1
5603 012642 012601 MOV (SP)+,R1 ;(R1 IS POINTING TO DPB WD. 03.)
5604 ;
5605 012644 CALL .FEPPU ;SET R3 TO TPD ADDRESS IF A PARTITION IS
012644 004737 005066' JSR PC,.FEPPU
5606 ;SPECIFIED, OR TO ZERO IF NOT SPECIFIED.
5607 ;
5608 ;SET R4 TO PRIORITY IF SPECIFIED, OR TO
5609 ;ZERO IF NOT SPECIFIED.
5610 ;
5611 ;
5612 ;ADVANCE R1 BY EIGHT (PAST PARTITION NAME,
5613 ;PRIORITY INDICATOR, AND UIC INDICATOR.).
5614 ;
5615 ;IF INVALID PRIORITY, RETURN STS=-95.
5616 ;IF PARTITION NOT IS SYSTEM, RETURN
5617 ;STS=-94. IF NON-PRIVILEGED TASK HAS
5618 ;SPECIFIED OTHER THAN OWN UIC, RETURN
5619 ;STS=-91. IF SPECIFIED PARTITION IS
5620 ;TOO SMALL FOR TASK, RETURN STS=-03.
5621 ;
5622 ;
5623 012650 012701 000001 MOV #1,R1 ;SET R1 TO INDICATE "MAKE TASK ACTIVE WHETHER
5624 ;MEMORY IS AVAILABLE OR NOT"
5625 ;
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 82-2
DIRECTIVE -- SEND AND REQUEST OR RESUME
5626 012654 016500 000016 MOV A.TD(R5),R0 ;SET R5 TO STD ADDRESS OF REQUESTOR
5627 ;
5628 012660 010246 MOV R2,-(SP) ;PUSH STD ENTRY ADDRESS (FOR ATL SCAN)
5629 ;
5630 012662 CALL .REQS ;MAKE A TASK ACTIVE PER R0, R1, R2, R3, R4 & R5.
012662 004737 004362' JSR PC,.REQS
5631 ;(R1, R2, R3, R4, & R5 ARE ALTERED)
5632 012666 012604 MOV (SP)+,R4 ;POP STD ENTRY ADDRESS INTO R4
5633 ;
5634 012670 020227 000002 CMP R2,#02 ;SPECIAL CASE -- IS TASK ACTIVE?
5635 012674 001402 BEQ 10$ ;YES -- RESUME IF SUSPENDED
5636 012676 000162 005056' JMP .RQESD(R2) ;NO -- RETURN DIRECTIVE STATUS PER SUBROUTINE
5637 ;STATUS IN R2.
5638 ;
5639 ; RECEIVER TASK IS ACTIVE:
5640 ;
5641 ; IF SUSPENDED, RESUME & RETURN STS=+2
5642 ; IF NOT SUSPENDED, RETURN STS=+3
5643 ;
5644 ; R4 CONTAINS THE STD ENTRY ADDRESS OF THE RECEIVER TASK.
5645 ;
5646 012702 012703 032552' 10$: MOV #.ATLLH,R3 ;SETUP FOR ATL SCAN
5647 012706 20$:
5648 012706 011303 MOV @R3,R3 ;SETUP R3 TO EXAMINE NEXT ENTRY
5649 012710 020337 032554' CMP R3,.ATLLH+2 ;IS R3 POINTING TO ENTRY FOR NUL TASK?
5650 012714 001413 BEQ 70$ ;YES -- ATL NODE IS NOT IN THE ATL (IT IS
5651 ;IN THE "MRL" FOR A PARTITION) RETURN STS=+3.
5652 012716 026304 000016 CMP A.TD(R3),R4 ;NO -- STD ADDRESS MATCH?
5653 012722 001371 BNE 20$ ;NO -- CHECK NEXT ATL NODE
5654 012724 126327 000014 000012 60$: CMPB A.TS(R3),#TS.SUS ;NO -- IS TASK SUSPENDED?
5655 012732 001004 BNE 70$
5656 012734 112763 000010 000014 MOVB #TS.RUN,A.TS(R3) ;YES -- CHANGE STATUS TO RUNNING (A SIGNIFICANT
5657 ;EVENT HAS BEEN DECLARED AS A RESULT OF THE
5658 012742 104402 TRAP DR.02 ;SEND), AND RETURN STS=+2.
5659 ;
5660 012744 104403 70$: TRAP DR.03 ;STS +3
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 83
DIRECTIVE -- SEND AND REQUEST OR RESUME
5662 ; SEND -- SUBROUTINE TO PERFORM "SEND" FOR "SEND DATA" AND "SEND DATA &
5663 ; REQUEST RECEIVER" DIRECTIVES.
5664 ;
5665 ; ENTRY CONDITIONS:
5666 ;
5667 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK
5668 ; R1 -- POINTING (IN DPB) TO ADR OF 13 WORD BLOCK OF DATA,
5669 ; WHICH IS FOLLOWED BY AN [EFN]. BOTH WORDS MUST BE FETCHABLE
5670 ; WITHOUT SEGMENT FAULT.
5671 ; R2 -- STD ENTRY ADDRESS OF RECEIVER TASK
5672 ;
5673 ; CALLING SEQUENCE:
5674 ;
5675 ; JSR PC,SEND
5676 ;
5677 ; EXIT CONDITIONS:
5678 ;
5679 ; IF NO POOL NODE AVAILABLE, RETURN AT 'DE.01'
5680 ; IF INVALID EFN, RETURN AT 'DE.97'
5681 ; IF PART OF DATA OUT OF TASK'S ADDRESS SPACE, RETURN AT 'DE.98'
5682 ;
5683 ; IF SUCCESSFUL, DATA IS QUEUED, EFN (IF SPECIFIED) IS SET,
5684 ; AND A SIGNIFICANT EVENT IS DECLARED.
5685 ;
5686 ; R1 -- STD OF RECEIVER TASK
5687 ;
5688 ;
5689 ; REGISTERS ALTERED:
5690 ;
5691 ; R1, R2, R3, R4, & R0
5692 ;
5693 012746 .SEND:: MFPI (R1)+ ;SET R5 TO ADDRESS OF DATA BLOCK, AND
012746 012146 MOV (R1)+,-(SP)
5694 012750 012600 MOV (SP)+,R0 ;LEAVE R1 POINTING TO [EFN].
5695 ;
5696 012752 010246 MOV R2,-(SP) ;SAVE RECEIVER STD ENTRY ADR IN -(SP)
5697 ;
5698 ;R1 IS POINTING TO [EFN] IN DPB.
5699 ;
5700 012754 CALL .CEFN ;CONVERT EFN TO: (1) FLAG WORD ADDRESS
012754 004737 040404' JSR PC,.CEFN
5701 ;IN R2, AND (2) FLAG MASK IN R3 (R1 IS
5702 ;POINTING TO EFN). IF EFN<0, OR EFN>64.,
5703 ;RETURN STS=-97. IF EFN=0 (NO EVENT FLAG
5704 ;SPECIFIED), RETURN WITH R2=R3=00.
5705 ;CONDITION CODES ARE SET PER "TST R3".
5706 ;
5707 012760 010246 MOV R2,-(SP) ;PUSH "BIS" ADDRESS WORD
5708 012762 010346 MOV R3,-(SP) ;PUSH "BIS" MASK WORD
5709 ;
5710 012764 012704 033506' MOV #.POLLH,R4 ;LISTHEAD
5711 012770 CALL ..PICK ;ISSUING TASK, AND SET R1 TO NODE ADR.
012770 004737 041464' JSR PC,..PICK
5712 012774 103001 BCC 10$ ;IF NONE AVAILABLE, RETURN STS=-04.
5713 012776 104774 TRAP DE.04
5714 ;
5715 013000 010401 10$: MOV R4,R1 ;SETUP R3 TO FILL NODE
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 83-1
DIRECTIVE -- SEND AND REQUEST OR RESUME
5716 013002 062704 000006 ADD #Q.D1,R4
5717 013006 012703 000015 MOV #13.,R3
5718 013012 20$:
5719 013012 MFPI (R0)+ ;MOVE WORD FROM DATA BLOCK TO NODE
013012 012046 MOV (R0)+,-(SP)
5720 013014 012624 MOV (SP)+,(R4)+
5721 013016 077303 SOB R3,20$
5722 013020 052636 BIS (SP)+,@(SP)+ ;SET EVENT FLAG IF SPECIFIED (IF NOT
5723 013022 011604 MOV @SP,R4 ;FIND RECEIVER'S STD ADDRESS
5724 013024 010461 000004 MOV R4,Q.SI(R1) ;SET SENDERS STD ADDRESS
5725 ;
5726 013030 016404 000026 MOV S.RB(R4),R4 ;SET R4 TO ADDRESS OF LAST NODE (OR LISTHEAD)
5727 013034 CALL ..NADD ;OF TASK'S RECEIVE DEQUE (LISTHEAD IN STD),
013034 004737 041422' JSR PC,..NADD
5728 ;AND ADD NODE AT END OF DEQUE.
5729 ;
5730 ;SPECIFIED, SET NO BITS IN WORD ZERO).
5731 ;
5732 013040 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;DECLARE A SIGNIFICANT EVENT
5733 ;
5734 013046 012601 MOV (SP)+,R1 ;SET RECEIVER STD ADDRESS
5735 ;
5736 ;
5737 013050 RETURN ;EXIT SUBROUTINE
013050 000207 RTS PC
5738 ;
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 84
DIRECTIVE -- RECEIVE DATA
5740 .SBTTL DIRECTIVE -- RECEIVE DATA
5741 ;+
5742 ; THE "RECEIVE DATA" DIRECTIVE
5743 ;
5744 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
5745 ; DATA BLOCK THAT HAS BEEN QUEUED (FIFO) FOR IT (VIA "SEND DATA" OR
5746 ; "SEND DATA & REQUEST RECEIVER" DIRECTIVES).
5747 ;
5748 ; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
5749 ; TASK IS RECEIVED.
5750 ;
5751 ; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
5752 ; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
5753 ; THE FIRST TWO WORDS.
5754 ;
5755 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
5756 ;
5757 ; WD. 00 -- DIC (17.) & DPB SIZE (4.),
5758 ; WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
5759 ; WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
5760 ; WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
5761 ;
5762 ; THE FOLLOWING STATUS IS RETURNED:
5763 ;
5764 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
5765 ; OF ONE (+1).
5766 ;
5767 ;
5768 ; CC-C SET TO INDICATE REJECTIONAND A DIRECTIVE STATUS OF:
5769 ;
5770 ; -02 -- SPECIFIED SENDER TASK NOT INSTALLED,
5771 ; -08 -- NO DATA QUEUED (SENT),
5772 ;
5773 ; -99 -- DIC OR DPB SIZE IS INVALID.
5774 ;-
5775 ; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND".
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 85
DIRECTIVE -- RECEIVE DATA OR EXIT
5777 .SBTTL DIRECTIVE -- RECEIVE DATA OR EXIT
5778 ;+
5779 ; THE "RECEIVE DATA OR EXIT" DIRECTIVE
5780 ;
5781 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
5782 ; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO EXIT IF NO
5783 ; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED.
5784 ;
5785 ; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR
5786 ; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES.
5787 ;
5788 ; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
5789 ; TASK IS RECEIVED.
5790 ;
5791 ; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
5792 ; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
5793 ; THE FIRST TWO WORDS.
5794 ;
5795 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
5796 ;
5797 ; WD. 00 -- DIC (19.) & DPB SIZE (4.),
5798 ; WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
5799 ; WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
5800 ; WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
5801 ;
5802 ; THE FOLLOWING STATUS IS RETURNED:
5803 ;
5804 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
5805 ; OF ONE (+1).
5806 ;
5807 ;
5808 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
5809 ;
5810 ; -02 -- SPECIFIED SENDER TASK NOT INSTALLED,
5811 ;
5812 ; -80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK,
5813 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
5814 ; -99 -- DIC OR DPB SIZE IS INVALID.
5815 ;-
5816 ; THIS DIRECTIVE SERVICE HAS A COMMON ENTRY WITH "RECEIVE DATA OR SUSPEND".
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 86
DIRECTIVE -- RECEIVE DATA OR SUSPEND
5818 .SBTTL DIRECTIVE -- RECEIVE DATA OR SUSPEND
5819 ;+
5820 ; THE "RECEIVE DATA OR SUSPEND" DIRECTIVE
5821 ;
5822 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECEIVE A THIRTEEN WORD
5823 ; DATA BLOCK IF AT LEAST ONE IS CAN BE RECEIVED, OR TO SUSPEND IF NO
5824 ; THIRTEEN WORD DATA BLOCKS ARE CAN BE RECEIVED.
5825 ;
5826 ; DATA BLOCKS ARE QUEUED (FIFO) FOR THE TASK VIA THE "SEND DATA" OR
5827 ; THE "SEND DATA & REQUEST RECEIVER" DIRECTIVES.
5828 ;
5829 ; WHEN A SENDER TASK IS SPECIFIED, ONLY DATA SENT BY THE INDICATED
5830 ; TASK IS RECEIVED.
5831 ;
5832 ; A TWO-WORD SENDER TASK NAME, AND THE THIRTEEN-WORD DATA BLOCK, ARE
5833 ; RETURNED IN AN INDICATED FIFTEEN WORD BUFFER, WITH THE TASK NAME IN
5834 ; THE FIRST TWO WORDS.
5835 ;
5836 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
5837 ;
5838 ; WD. 00 -- DIC (21.) & DPB SIZE (4.),
5839 ; WD. 01 -- [SENDER TASK NAME (FIRST HALF)],
5840 ; WD. 02 -- [SENDER TASK NAME (SECOND HALF)],
5841 ; WD. 03 -- ADDRESS OF FIFTEEN WORD BUFFER.
5842 ;
5843 ; THE FOLLOWING STATUS IS RETURNED:
5844 ;
5845 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE
5846 ; STATUS OF:
5847 ;
5848 ; +1 -- IF DATA WAS RECEIVED,
5849 ; +2 -- IF TASK WAS SUSPENDED.
5850 ;
5851 ; CC-C SET TO INDICATE REJECTION AND A DIRECTIVE STATUS OF:
5852 ;
5853 ; -02 -- SPECIFIED SENDER TASK NOT INSTALLED,
5854 ;
5855 ; -80 -- DIRECTIVE ISSUED BY "BACKGROUND" TASK,
5856 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
5857 ; -99 -- DIC OR DPB SIZE IS INVALID.
5858 ;-
5859 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
5860 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
5861 ; STACK, AND R0-R5 SET AS FOLLOWS:
5862 ; R0 -- PC OF EMT INSTRUCTION
5863 ; R1 -- POINTER TO WORD FOLLOWING DIC & SIZE
5864 ; R2 -- DPB SIZE
5865 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
5866 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK')
5867 ;
5868 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
5869 ;
5870 ;R5 IS POINTING TO 15-WORD BUFFER IN TASK.
5871 ;
5872 ;R4 IS SET TO STD NODE ADDRESS OF RECEIVER TASK.
5873 ;
5874 ; COMMON ENTRY POINT FOR "RECEIVE", "RECEIVE OR EXIT", & "RECEIVE OR SUSPEND".
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 86-1
DIRECTIVE -- RECEIVE DATA OR SUSPEND
5875 ;
5876
5877 013052 .D.REC::
5878 013052 .D.ROE::
5879 013052 .D.ROS::
5880 013052 016504 000016 MOV A.TD(R5),R4 ;SET R4 TO RECEIVE DEQUE LISTHEAD (IN STD ENTRY).
5881 013056 062704 000024 ADD #S.RF,R4
5882 ;
5883 013062 MFPI (R1)+ ;IS A SENDER TASK SPECIFIED?
013062 012146 MOV (R1)+,-(SP)
5884 013064 MFPI (R1)+ ;MAYBE -- CHECK SECOND HALF OF TASK NAME
013064 012146 MOV (R1)+,-(SP)
5885 013066 052626 BIS (SP)+,(SP)+
5886 013070 001004 BNE 10$ ;NO -- RECEIVE FROM ANY SENDER
5887 ;YES -- RECEIVE ONLY FROM INDICATED SENDER
5888 ;NO -- RECEIVE FROM ANY SENDER
5889 013072 CALL ..PICK ;PICK FIRST NODE FROM REC DEQUE, AND LEAVE NODE
013072 004737 041464' JSR PC,..PICK
5890 ;ADDRESS IN R4.
5891 ;NODE PICKED?
5892 013076 103017 BCC 40$ ;YES -- FILL BUFFER
5893 013100 000440 BR 70$ ;NO -- NO DATA BY ANY SENDER
5894 ;
5895 013102 024141 10$: CMP -(R1),-(R1)
5896 ; R1 IS POINTING TO SPECIFIED SENDER'S TASK NAME IN PREVIOUS SPACE.
5897 ;
5898 013104 CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO
013104 004737 041562' JSR PC,..FSTD
5899 ;ZERO IF TASK NAME NOT FOUND (AND SET
5900 ;CONDITION CODES PER "TST R2").
5901 ;
5902 ;ADVANCE R1 BY FOUR (PAST TASK NAME).
5903 ;
5904 013110 001001 BNE 20$ ;IF TASK NOT INSTALLED, RETURN STS=-02.
5905 013112 104776 TRAP DE.02 ;RETURN STS=-02.
5906 ;
5907 013114 010401 20$: MOV R4,R1 ;SAVE LISTHEAD ADDRESS IN R1, AND
5908 ;SCAN DEQUE FOR DATA SENT BY SENDER PER R2.
5909 013116 30$:
5910 013116 011404 MOV @R4,R4 ;ADVANCE R4 TO NEXT NODE
5911 013120 020401 CMP R4,R1 ;END OF DEQUE?
5912 013122 001427 BEQ 70$ ;YES -- NO DATA BY SPECIFIED SENDER
5913 013124 026402 000004 CMP Q.SI(R4),R2 ;NO -- IS DATA SENT BY SPECIFIED SENDER?
5914 013130 001372 BNE 30$ ;NO -- CHECK NEXT NODE
5915 013132 CALL ..NDEL ;YES -- DELETE NODE FROM DEQUE
013132 004737 041306' JSR PC,..NDEL
5916 ;
5917 ; DATA RECEIVED -- R4 CONTAINS NODE ADDRESS & R1 CONTAINS DATA BUFFER
5918 ; ADDRESS. FILL BUFFER (2-WORD TASK NAME & 13-WORD DATA BLOCK).
5919 ;
5920 013136 40$:
5921 013136 MFPS @R1,R0 ;FIND THE BUFFER ADDRESS
013136 011100 MOV @R1,R0
5922 013140 010401 MOV R4,R1 ;SAVE NODE ADR IN R1 FOR '..RNTP'
5923 013142 062704 000004 ADD #Q.SI,R4 ;ADVANCE R4 TO POINT TO SENDER ID WORD
5924 ;
5925 013146 012403 MOV (R4)+,R3 ;SET R3 TO SENDER STD NODE ADDRESS
DMSAR - SEND & RECEIVE DIRECT MACRO M1108 16-DEC-77 11:28 PAGE 86-2
DIRECTIVE -- RECEIVE DATA OR SUSPEND
5926 ;
5927 013150 50$:
5928 013150 MTPS S.TN+0(R3),(R0)+ ;SET SENDER TASK NAME IN FIRST TWO WORDS
013150 016320 000000 MOV S.TN+0(R3),(R0)+
5929 013154 MTPS S.TN+2(R3),(R0)+
013154 016320 000002 MOV S.TN+2(R3),(R0)+
5930 ;
5931 013160 012703 000015 MOV #13.,R3 ;FILL REMAINING 13 WORDS FROM NODE.
5932 013164 60$:
5933 013164 MTPS (R4)+,(R0)+
013164 012420 MOV (R4)+,(R0)+
5934 013166 077302 SOB R3,60$
5935 ;
5936 013170 012704 033506' MOV #.POLLH,R4 ;RETURN NODE TO POOL
5937 013174 CALL ..NADD ;RETURN NODE (PER R1) TO POOL
013174 004737 041422' JSR PC,..NADD
5938 ;
5939 013200 104401 TRAP DR.01 ;RETURN STS=+1.
5940 ;
5941 ; DATA NOT RECEIVED:
5942 ; IF "RECEIVE", RETURN STS=-08.
5943 ; IF "RECEIVE OR EXIT", EXIT.
5944 ; IF "RECEIVE OR SUSPEND", SUSPEND.
5945 ;
5946 ; R3 CONTAINS THE DIC SIZE.
5947 ; R0 CONTAINS THE ISSUING TASK'S ATL NODE ADDRESS
5948 ;
5949 013202 006303 70$: ASL R3
5950 013204 000173 013144' JMP @80$-2-<17.*2.>(R3)
5951 013210 013216' 80$: .WORD 90$
5952 013212 012104' .WORD .D.EXT
5953 013214 011776' .WORD .D.SUS
5954 ;
5955 013216 104770 90$: TRAP DE.08
5956 ;
5957 .TITLE DMSDV - SPECIFY SST TABLE DIRECTIVES MODULE
5958 013220 IDENT$ 1,0
.IDENT /001000/
5959 ;
5960 ; COPYRIGHT (C) 1975, 1978 BY
5961 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
5962 ;
5963 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
5964 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
5965 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
5966 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
5967 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
5968 ;
5969 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
5970 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
5971 ; CORPORATION.
5972 ;
5973 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
5974 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
5975 ;
5976 ; MODULE: SPECIFY SST TABLE DIRECTIVES
5977 ;
DMSDV - SPECIFY SST TABLE DIR MACRO M1108 16-DEC-77 11:28 PAGE 86-3
DIRECTIVE -- RECEIVE DATA OR SUSPEND
5978 ; VERSION: 01-00
5979 ;
5980 ; AUTHOR: R. MCLEAN
5981 ;
5982 ; DATE: 19 JUN 75
5983 ;
5984 ;
5985 ; THIS MODULE CONTAINS:
5986 ;
5987 ; 1 -- CODE TO SERVICE THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE.
5988 ;
5989 ; MACRO LIBRARY CALLS
5991 ;
5992 .MCALL MTPS,MFPS,MFPI,MTPI,CALL,RETURN
DMSDV - SPECIFY SST TABLE DIR MACRO M1108 16-DEC-77 11:28 PAGE 87
DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
5995 .SBTTL DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
5996 ;+
5997 ; THE "SPECIFY SST VECTOR TABLE FOR TASK" DIRECTIVE
5998 ;
5999 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD THE ADDRESS (VIRTUAL) OF
6000 ; A TABLE OF SYNCHRONOUS SYSTEM TRAP SERVICE ROUTINE ENTRY POINTS
6001 ; FOR USE BY THE ISSUING TASK. WHENEVER AN SST SERVICE ROUTINE ENTRY IS
6002 ; SPECIFIED IN BOTH THE TASK'S TABLE & DDT'S TABLE, THE TRAP OCCURS
6003 ; FOR THE DEBUGGING AID, AND NOT FOR THE TASK.
6004 ;
6005 ;
6006 ; WD. 00 -- "ODD ADDRESS" ERROR,
6007 ; WD. 01 -- SEGMENT FAULT,
6008 ; WD. 02 -- T-BIT TRAP OR EXECUTION OF A 'BPT' INSTRUCTION,
6009 ; WD. 03 -- EXECUTION OF AN 'IOT' INSTRUCTION,
6010 ; WD. 04 -- EXECUTION OF A "RESERVED" INSTRUCTION,
6011 ; WD. 05 -- EXECUTION OF "NON-RSX EMT",
6012 ; WD. 06 -- EXECUTION OF A 'TRAP' INSTRUCTION,
6013 ; WD. 07 -- PDP-11/40 FLOATING POINT EXCEPTION.
6014 ;
6015 ; THE TABLE IS OF THE FOLLOWING FORMAT:
6016 ; A THREE WORD DPB OF THE FOLLOWING FORMAT IS USED:
6017 ;
6018 ; WD. 00 -- DIC (43.) & DPB SIZE (3.),
6019 ; WD. 01 -- ADDRESS OF SST VECTOR TABLE,
6020 ; WD. 02 -- NUMBER OF TABLE ENTRIES (8). (MUST BE AT LEAST 8!)
6021 ;
6022 ; THE FOLLOWING STATUS IS RETURNED:
6023 ;
6024 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
6025 ; OF ONE (+1).
6026 ;
6027 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
6028 ;
6029 ; -99 -- DIC OR DPB SIZE IS INVALID.
6030 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
6031 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
6032 ; STACK, AND R0-R5 SET AS FOLLOWS:
6033 ; R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
6034 ; R2 -- DPB SIZE
6035 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
6036 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
6037 ;
6038 ;
6039 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
6040 ;R1 IS POINTING TO THE ADDRESS OF THE TABLE
6041 ;R5 CONTAINS THE TABLE SIZE
6042 ;
6043 013220 016502 000016 .D.STV::MOV A.TD(R5),R2 ;FIND THE STD ADDRESS OF THIS TASK
6044 013224 MFPS @R1,S.SS(R2) ;SET UP SST VECTOR ADDRESS
013224 011162 000030 MOV @R1,S.SS(R2)
6045 013230 104401 TRAP DR.01 ;VALID DIRECTIVE RETURN
6046 .TITLE DMAST - SPECIFY AST SERVICE DIRECTIVES
6047 013232 IDENT$ 1,0
.IDENT /001000/
6048 ;
6049 ; COPYRIGHT (C) 1975, 1978 BY
DMAST - SPECIFY AST SERVICE D MACRO M1108 16-DEC-77 11:28 PAGE 87-1
DIRECTIVE -- SPECIFY SST VECTOR TABLE FOR TASK
6050 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6051 ;
6052 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
6053 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6054 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
6055 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
6056 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
6057 ;
6058 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
6059 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
6060 ; CORPORATION.
6061 ;
6062 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
6063 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
6064 ;
6065 ; MODULE: SPECIFY AST SERVICE DIRECTIVES
6066 ;
6067 ; VERSION: 01-00
6068 ;
6069 ; AUTHOR: R. MCLEAN
6070 ;
6071 ; DATE: 19 JUN 75
6072 ;
6073 ;
6074 ; THIS MODULE CONTAINS:
6075 ;
6076 ; 1 -- CODE TO SERVICE THE "SPECIFY POWER RECOVERY AST" DIRECTIVE,
6077 ;
6078 ; MACRO LIBRARY CALLS
6079 ;
6081 .MCALL CALL,RETURN,MTPS,MTPI,MFPI,MFPS
DMAST - SPECIFY AST SERVICE D MACRO M1108 16-DEC-77 11:28 PAGE 88
DIRECTIVE -- SPECIFY POWER FAIL AST
6084 .SBTTL DIRECTIVE -- SPECIFY POWER FAIL AST
6085 ;+
6086 ; THE "SPECIFY POWER FAIL AST" DIRECTIVE
6087 ;
6088 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO RECORD EITHER (1) THAT POWER
6089 ; RECOVERY AST'S FOR THE ISSUING TASK ARE DESIRED, AND WHERE CONTROL
6090 ; IS TO BE TRANSFERRED WHEN A POWER FAIL AST OCCURS, OR (2) THAT
6091 ; POWER FAIL AST'S FOR THE ISSUING TASK ARE NO LONGER DESIRED.
6092 ;
6093 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
6094 ;
6095 ; WD. 00 -- DIC (45..) & DPB SIZE (2.),
6096 ; WD. 01 -- [AST SERVICE ENTRY POINT].
6097 ;
6098 ; WHEN AN "AST SERVICE ENTRY POINT" IS SPECIFIED, FUTURE POWER FAIL
6099 ; AST'S WILL OCCUR FOR THE ISSUING TASK, AND CONTROL WILL BE TRANSFERRED
6100 ; TO THE INDICATED LOCATION WHENEVER A POWER FAIL AST OCCURS.
6101 ;
6102 ; WHEN AN "AST SERVICE ENTRY POINT" IS NOT SPECIFIED (ZERO SECOND DPB
6103 ; WORD), FUTURE POWER FAIL AST'S WILL NOT OCCUR (UNTIL AN AST ENTRY
6104 ; POINT IS SPECIFIED AGAIN).
6105 ;
6106 ; THE FOLLOWING STATUS IS RETURNED:
6107 ;
6108 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
6109 ;
6110 ; OF ONE (+1).
6111 ;
6112 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
6113 ;
6114 ; -08 -- AST ENTRY ALREADY UN-SPECIFIED,
6115 ;
6116 ; -98 -- PART OF DPB IS OUT OF ISSUING TASK'S ADDRESS SPACE,
6117 ; -99 -- DIC OR DPB SIZE IS INVALID.
6118 ;
6119 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
6120 ; DIRECTIVE ISSUING TASK'S PS, PC, & R1-R5 PUSHED ONTO THE
6121 ; STACK, AND R0-R5 SET AS FOLLOWS:
6122 ; R1 -- ADDRESS OF WORD FOLLOWING DIC & SIZE
6123 ; R2 -- DPB SIZE
6124 ; R3 -- DIC (DIRECTIVE IDENTIFICATION CODE)
6125 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
6126 ;
6127 ;
6128 ; R5 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
6129 ;
6130 013232 .D.PUT::MFPS @R1,R1 ;FIND THE LAST WORD OF THE DPB
013232 011101 MOV @R1,R1
6131 013234 001403 BEQ 20$ ;YES -- THEN CHECK IT OUT
6132 013236 010165 000034 10$: MOV R1,A.PF(R5) ;SPECIFY POWER FAIL AST
6133 013242 104401 TRAP DR.01 ;AND RETURN +1
6134 ;
6135 013244 005765 000034 20$: TST A.PF(R5) ;CHECK FOR ALREADY CLEAR
6136 013250 001372 BNE 10$ ;NO -- ALL OK
6137 013252 104770 TRAP DE.08 ;YES -- ERROR
DMREQ - "REQUEST AND EXECUTE" MACRO M1108 16-DEC-77 11:28 PAGE 89
DIRECTIVE -- SPECIFY POWER FAIL AST
6139 .TITLE DMREQ - "REQUEST AND EXECUTE" DIRECTIVES MODULE
6140 013254 IDENT$ 1,0
.IDENT /001000/
6141 ;
6142 ; COPYRIGHT (C) 1975, 1978 BY
6143 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6144 ;
6145 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
6146 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6147 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
6148 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
6149 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
6150 ;
6151 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
6152 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
6153 ; CORPORATION.
6154 ;
6155 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
6156 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
6157 ;
6158 ; MODULE: "REQUEST" DIRECTIVE
6159 ;
6160 ; VERSION: 01-00
6161 ;
6162 ; AUTHOR: R. MCLEAN
6163 ;
6164 ; DATE: 1 JUL 75
6165 ;
6166 ;
6167 ; THIS MODULE CONTAINS:
6168 ;
6169 ; 1 -- CODE TO SERVICE THE "REQUEST" DIRECTIVE.
6170 ;
6171 ; MACROS
6172 ;
6174 .MCALL CALL,RETURN,MFPS
DMREQ - "REQUEST AND EXECUTE" MACRO M1108 16-DEC-77 11:28 PAGE 90
DIRECTIVE -- TASK SCHEDULING -- REQUEST
6177 .SBTTL DIRECTIVE -- TASK SCHEDULING -- REQUEST
6178 ;+
6179 ; THE "REQUEST" DIRECTIVE
6180 ;
6181 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO MAKE A TASK ACTIVE. I.E., TO
6182 ; RUN CONTINGENT UPON PRIORITY AND MEMORY AVAILABILITY.
6183 ;
6184 ; A SEVEN WORD DPB OF THE FOLLOWING FORMAT IS USED:
6185 ;
6186 ; WD. 00 -- DIC (11.) & DPB SIZE (7.),
6187 ; WD. 01 -- TASK NAME (FIRST HALF),
6188 ; WD. 02 -- TASK NAME (SECOND HALF),
6189 ; WD. 03 -- [PARTITION NAME (FIRST HALF)],
6190 ; WD. 04 -- [PARTITION NAME (SECOND HALF)],
6191 ; WD. 05 -- [PRIORITY],
6192 ; WD. 06 -- [UIC].
6193 ;
6194 ; THE FOLLOWING STATUS IS RETURNED:
6195 ;
6196 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
6197 ; OF ONE (+1).
6198 ;
6199 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
6200 ;
6201 ; -01 -- INSUFFICIENT POOL NODES AVAILABLE,
6202 ; -03 -- PARTITION TOO SMALL FOR TASK,
6203 ; -06 -- HANDLER TASK NOT RESIDENT TO LOAD TASK,
6204 ; -07 -- TASK IS ACTIVE,
6205 ;
6206 ; -94 -- PARTITION NOT IN SYSTEM (NO TPD ENTRY FOUND),
6207 ; -95 -- INVALID PRIORITY SPECIFIED (<0 OR >250.),
6208 ; -99 -- DIC OR DPB SIZE IS INVALID.
6209 ;
6210 ;-
6211 013254 .D.REQ::CALL ..FSTD ;SET R2 TO STD ENTRY ADDRESS, OR TO
013254 004737 041562' JSR PC,..FSTD
6212 ;ZERO IF TASK NAME NOT FOUND (AND SET
6213 ;CONDITION CODES PER "TST R2").
6214 ;
6215 ;ADVANCE R1 BY FOUR (PAST TASK NAME).
6216 ;
6217 ;
6218 013260 001406 BEQ 20$ ;IF TASK IS NOT INSTALLED TRY TO GET IT INSTALLED
6219 013262 CALL .FEPPU ;SET R3 TO TPD ADDRESS IF A PARTITION IS
013262 004737 005066' JSR PC,.FEPPU
6220 ;SPECIFIED, OR TO ZERO IF NOT SPECIFIED.
6221 ;
6222 ;SET R4 TO PRIORITY IF SPECIFIED, OR TO
6223 ;ZERO IF NOT SPECIFIED.
6224 ;
6225 ;
6226 ;ADVANCE R1 BY EIGHT (PAST PARTITION NAME,
6227 ;PRIORITY INDICATOR, AND UIC INDICATOR.).
6228 ;
6229 ;IF INVALID PRIORITY, RETURN STS=-95.
6230 ;IF PARTITION NOT IS SYSTEM, RETURN
6231 ;STS=-94. IF NON-PRIVILEGED TASK HAS
DMREQ - "REQUEST AND EXECUTE" MACRO M1108 16-DEC-77 11:28 PAGE 90-1
DIRECTIVE -- TASK SCHEDULING -- REQUEST
6232 ;SPECIFIED OTHER THAN OWN UIC, RETURN
6233 ;STS=-91. IF SPECIFIED PARTITION IS
6234 ;TOO SMALL FOR TASK, RETURN STS=-03.
6235 ;
6236 ;
6237 ;
6238 ;
6239 013266 10$: CALL .REQS ;MAKE A TASK ACTIVE PER R1, R2, R3, R4 & R5.
013266 004737 004362' JSR PC,.REQS
6240 ;(R1, R2, R3, R4, & R5 ARE ALTERED)
6241 ;
6242 013272 000162 005056' JMP .RQESD(R2) ;RETURN DIRECTIVE STATUS PER SUBROUTINE
6243 ;STATUS IN R2.
6244 ;
6245 013276 012704 013466' 20$: MOV #RQSPB,R4 ;SET UP TO INSERT PARAMETERS INTO SEND
6246 013302 024141 CMP -(R1),-(R1) ;BACKUP TO POINT TO TASK NAME
6247 013304 MFPS (R1)+,(R4)+ ;TASK NAME
013304 012124 MOV (R1)+,(R4)+
6248 013306 MFPS (R1)+,(R4)+
013306 012124 MOV (R1)+,(R4)+
6249 013310 MFPS (R1)+,(R4)+ ;PARTITION NAME
013310 012124 MOV (R1)+,(R4)+
6250 013312 MFPS (R1)+,(R4)+
013312 012124 MOV (R1)+,(R4)+
6251 013314 MFPS (R1)+,(R4)+ ;PRIORITY
013314 012124 MOV (R1)+,(R4)+
6252 013316 012704 033506' MOV #.POLLH,R4 ;PICK A NODE FROM THE POOL
6253 013322 CALL ..PICK
013322 004737 041464' JSR PC,..PICK
6254 013326 103001 BCC 30$ ;GOT ONE
6255 013330 104777 TRAP DE.01 ;NONE RETURN -1
6256 ;
6257 013332 010401 30$: MOV R4,R1 ;SAVE THE NODE ADDRESS
6258 013334 012704 033506' MOV #.POLLH,R4 ;FIND THE LISTHEAD OF THE POOL
6259 013340 021404 CMP @R4,R4 ;ANY NODES?
6260 013342 001003 BNE 35$ ;YES -- PROCEED
6261 013344 CALL ..NADD ;NO RETURN NODE
013344 004737 041422' JSR PC,..NADD
6262 013350 104777 TRAP DE.01 ;NOT ENOUGH NODES
6263 ;
6264 013352 010137 013500' 35$: MOV R1,RQSTD ;SET UP THE STD ADDRESS
6265 013356 005743 TST -(R3) ;BACK UP TO POINT TO CORRECT ENTRY TO INSERT
6266 013360 012704 013466' MOV #RQSPB,R4 ;SET UP PARAMETERS IN STD
6267 013364 012421 MOV (R4)+,(R1)+
6268 013366 012421 MOV (R4)+,(R1)+
6269 013370 005021 CLR (R1)+
6270 013372 012721 040005 MOV #SF.EX!SF.TA!SF.IR,(R1)+ ;DECLARE TASK ACTIVE
6271 013376 062701 000014 ADD #S.RF-S.DP,R1 ;POINT TO SEND LISTHEAD
6272 013402 010111 MOV R1,@R1 ;SET UP LISTHEAD
6273 013404 010161 000002 MOV R1,2(R1)
6274 013410 013704 013500' MOV RQSTD,R4 ;RESTORE STD ADDRESS
6275 013414 011301 40$: MOV @R3,R1 ;MAKE ENTRY IN STD
6276 013416 001403 BEQ 50$ ;END OF LIST
6277 013420 010423 MOV R4,(R3)+ ;MOVE LIST DOWN
6278 013422 010104 MOV R1,R4 ;SET NEXT ENTRY
6279 013424 000773 BR 40$ ;GO NEXT ENTRY
6280 ;
DMREQ - "REQUEST AND EXECUTE" MACRO M1108 16-DEC-77 11:28 PAGE 90-2
DIRECTIVE -- TASK SCHEDULING -- REQUEST
6281 013426 010413 50$: MOV R4,@R3 ;STORE LAST ENTRY
6282 013430 062737 000002 032004' ADD #2,.STDTZ ;UPDATE SIZE
6286 013436 012702 032312' MOV #STDINS,R2 ;SET UP STD NODE OF RECEIVER
6287 013442 012701 013462' MOV #RQSPT,R1 ;SET UP TO SEND TO INSTALL
6288 013446 CALL .SEND ;SEND DATA
013446 004737 012746' JSR PC,.SEND
6289 013452 005004 CLR R4 ;START AT DEFAULT PART & PRI
6290 013454 005003 CLR R3
6291 013456 010102 MOV R1,R2 ;SET UP STD OF INSTALL
6292 013460 000702 BR 10$
6293 ;
6294 013462 013466' RQSPT:: .WORD RQSPB ;POINTER TO SEND BLOCK
6295 013464 000000 .WORD 0 ;EVENT FLAG (NONE)
6296 013466 RQSPB: .BLKW 5 ;DATA TO BE XMITTED
6297 013500 000000 RQSTD: .WORD 0 ;STD ADDRESS
6298 ;
6299 .TITLE DMGPP - "GET TASK PARAMETERS" DIRECTIVE MODULE
6300 013502 IDENT$ 1,0
.IDENT /001000/
6301 ;
6302 ; COPYRIGHT (C) 1975, 1978 BY
6303 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6304 ;
6305 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
6306 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6307 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
6308 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
6309 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
6310 ;
6311 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
6312 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
6313 ; CORPORATION.
6314 ;
6315 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
6316 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
6317 ;
6318 ; MODULE: "GET TASK PARAMETERS" DIRECTIVE
6319 ;
6320 ; VERSION: 01-00
6321 ;
6322 ; AUTHOR: R. MCLEAN
6323 ;
6324 ; DATE: 19 AUG 75
6325 ;
6326 ;
6327 ; THIS MODULE CONTAINS:
6328 ;
6329 ; 1 -- CODE TO SERVICE THE "GET TASK PARAMETERS" DIRECTIVE.
6330 ;
6331 ; MACRO CALLS
6332 ;
6334 .MCALL MTPS,MFPS
DMGPP - "GET TASK PARAMETERS" MACRO M1108 16-DEC-77 11:28 PAGE 91
DIRECTIVE -- GET TASK PARAMETERS
6337 .SBTTL DIRECTIVE -- GET TASK PARAMETERS
6338 ;+
6339 ; THE "GET TASK PARAMETERS" DIRECTIVE
6340 ;
6341 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED SIXTEEN WORD
6342 ; BUFFER WITH PARAMETERS RELATING TO THE ISSUING TASK.
6343 ;
6344 ; A TWO WORD DPB OF THE FOLLOWING FORMAT IS USED:
6345 ;
6346 ; WD. 00 -- DIC (63.) & DPB SIZE (2.),
6347 ; WD. 01 -- ADDRESS OF SIXTEEN WORD BUFFER.
6348 ;
6349 ; THE SIXTEEN WORD BUFFER IS FILLED AS FOLLOWS:
6350 ;
6351 ; WD. 00 -- ISSUING TASK'S NAME (FIRST HALF),
6352 ; WD. 01 -- ISSUING TASK'S NAME (SECOND HALF),
6353 ; WD. 02 -- PARTITION NAME (FIRST HALF),
6354 ; WD. 03 -- PARTITION NAME (SECOND HALF),
6355 ; WD. 04 -- TASK NAME OF REQUESTOR OF ISSUING TASK (FIRST HALF),
6356 ; WD. 05 -- TASK NAME OF REQUESTOR OF ISSUING TASK (SECOND HALF),
6357 ; WD. 06 -- RUN PRIORITY,
6358 ; WD. 07 -- USER IDENTIFICATION CODE (UIC FOR FILES SYSTEM),
6359 ; WD. 10 -- NUMBER OF LOGICAL I/O UNITS (LUN'S),
6360 ; WD. 11 -- MACHINE TYPE INDICATOR (VIZ., 45. FOR PDP-11/45),
6361 ; WD. 12 -- STD FLAGS WORD,
6362 ; WD. 13 -- [ADDRESS OF TASK SST VECTOR TABLE],
6363 ; WD. 14 -- [SIZE OF TASK SST VECTOR TABLE (IN WORDS)],
6364 ; WD. 15 -- TASK SIZE
6365 ; WD. 16 -- ZERO (RESERVED),
6366 ; WD. 17 -- ZERO (RESERVED).
6367 ;
6368 ; THE FOLLOWING STATUS IS RETURNED:
6369 ;
6370 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
6371 ; OF ONE (+1).
6372 ;
6373 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
6374 ;
6375 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
6376 ; -99 -- DIC OR DPB SIZE IS INVALID.
6377 ;-
6378 000050 .PDP11=40. ;PDP11/40
6379 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
6380 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
6381 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
6382 ; R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'),
6383 ; R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO,
6384 ; R2 -- SIZE OF DPB (IN WORDS),
6385 ; R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC),
6386 ; R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND
6387 ; R5 -- LAST WORD OF DPB.
6388 ;
6389 ; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
6390 ;
6391 ;
6392 013502 005046 .D.GPP::CLR -(SP) ;PUSH ZERO
6393 013504 005046 CLR -(SP) ;PUSH ZERO
DMGPP - "GET TASK PARAMETERS" MACRO M1108 16-DEC-77 11:28 PAGE 91-1
DIRECTIVE -- GET TASK PARAMETERS
6394 013506 016504 000016 MOV A.TD(R5),R4 ;FIND STD ADDRESS
6395 013512 016502 000006 MOV A.PD(R5),R2 ;FIND THE TPD ADDRESS
6396 013516 016500 000012 MOV A.HA(R5),R0 ;FIND THE HEADER ADDRESS
6397 013522 016246 000006 MOV T.PZ(R2),-(SP) ;SET PARTITION SIZE (TASK SIZE)
6398 013526 012746 000010 MOV #8.,-(SP) ;PUSH VECTOR TBL SIZE
6399 013532 016046 000106 MOV H.TKVA(R0),-(SP) ;PUSH VECTOR TBL ADDRESS
6400 013536 016446 000006 MOV S.FW(R4),-(SP) ;PUSH STD FLAGS WORD
6401 013542 012746 000050 MOV #.PDP11,-(SP) ;PUSH MACHINE TYPE INDICATOR
6402 013546 016046 000130 MOV H.LUT(R0),-(SP) ;PUSH NUMBER OF LUN'S
6403 013552 013746 031262' MOV .SYUIC,-(SP) ;PUSH UIC
6404 013556 005046 CLR -(SP) ;PUSH RUN PRIORITY
6405 013560 116516 000010 MOVB A.RP(R5),@SP
6406 013564 005046 CLR -(SP)
6407 013566 005046 CLR -(SP)
6408 013570 016246 000002 MOV T.PN+2(R2),-(SP)
6409 013574 016246 000000 MOV T.PN+0(R2),-(SP)
6410 013600 016446 000002 MOV S.TN+2(R4),-(SP);PUSH TASK NAME
6411 013604 016446 000000 MOV S.TN+0(R4),-(SP)
6412 ;
6413 013610 012702 000020 MOV #16.,R2 ;POP SIXTEEN WORDS FROM STACK INTO BUFFER
6414 013614 MFPS @R1,R1 ;PICK UP HIS ADDRESS
013614 011101 MOV @R1,R1
6415 ;IN ISSUING TASK'S ADDRESS SPACE.
6416 ;R5 CONTAINS VIRTUAL ADDRESS OF BUFFER.
6417 013616 10$:
6418 013616 MTPS (SP)+,(R1)+
013616 012621 MOV (SP)+,(R1)+
6419 013620 077202 SOB R2,10$
6420 ;
6421 013622 104401 TRAP DR.01 ;RETURN STS=+1.
6422 ;
6423 .TITLE DMGMP - "GET PARTITION PARAMETERS" DIRECTIVE MODULE
6424 013624 IDENT$ 1,0
.IDENT /001000/
6425 ;
6426 ; COPYRIGHT (C) 1975, 1978 BY
6427 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6428 ;
6429 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
6430 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6431 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
6432 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
6433 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
6434 ;
6435 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
6436 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
6437 ; CORPORATION.
6438 ;
6439 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
6440 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
6441 ;
6442 ; MODULE: "GET PARTITION PARAMETERS" DIRECTIVE
6443 ;
6444 ; VERSION: 01-00
6445 ;
6446 ; AUTHOR: R. MCLEAN
6447 ;
DMGMP - "GET PARTITION PARAME MACRO M1108 16-DEC-77 11:28 PAGE 91-2
DIRECTIVE -- GET TASK PARAMETERS
6448 ; DATE: 19 AUG 75
6449 ;
6450 ;
6451 ; THIS MODULE CONTAINS:
6452 ;
6453 ; 1 -- CODE TO SERVICE THE "GET PARTITION PARAMETERS" DIRECTIVE.
6454 ;
6455 ; MACRO CALLS
6456 ;
6458 .MCALL MFPI,MTPI,MFPS,MTPS
DMGMP - "GET PARTITION PARAME MACRO M1108 16-DEC-77 11:28 PAGE 92
DIRECTIVE -- GET PARTITION PARAMETERS
6461 .SBTTL DIRECTIVE -- GET PARTITION PARAMETERS
6462 ;+
6463 ; THE "GET PARTITION PARAMETERS" DIRECTIVE
6464 ;
6465 ; THIS DIRECTIVE INSTRUCTS THE SYSTEM TO FILL AN INDICATED THREE WORD
6466 ; BUFFER WITH PARTITION PARAMETERS.
6467 ;
6468 ; A FOUR WORD DPB OF THE FOLLOWING FORMAT IS USED:
6469 ;
6470 ; WD. 00 -- DIC (65.) & DPB SIZE (4.),
6471 ; WD. 01 -- [PARTITION NAME (FIRST HALF)],
6472 ; WD. 02 -- [PARTITION NAME (SECOND HALF)],
6473 ; WD. 03 -- ADDRESS OF THREE WORD BUFFER.
6474 ;
6475 ; IF A PARTITION IS NOT SPECIFIED, THE PARTITION OF THE ISSUING TASK
6476 ; IS ASSUMED.
6477 ;
6478 ; THE THREE WORD BUFFER IS FILLED AS FOLLOWS:
6479 ;
6480 ; WD. 00 -- 1/64TH BASE ADDRESS OF PARTITION,
6481 ; WD. 01 -- 1/64TH SIZE OF PARTITION,
6482 ; WD. 02 -- PARTITION FLAGS WORD.
6483 ;
6484 ; THE FOLLOWING STATUS IS RETURNED:
6485 ;
6486 ; CC-C CLEARED TO INDICATE SUCCESSFUL COMPLETION, AND A DIRECTIVE STATUS
6487 ; OF ONE (+0).
6488 ;
6489 ; CC-C SET TO INDICATE REJECTION, AND A DIRECTIVE STATUS OF:
6490 ;
6491 ; -02 -- INDICATED PARTITION NOT IS SYSTEM,
6492 ;
6493 ; -98 -- PART OF DPB OR BUFFER IS OUT OF TASK'S ADDRESS SPACE,
6494 ; -99 -- DIC OR DPB SIZE IS INVALID.
6495 ;-
6496 ; CONTROL IS TRANSFERRED HERE (BY DIRECTIVE DISPATCH ROUTINE) WITH THE
6497 ; DIRECTIVE ISSUING TASK'S PS, PC, & R0-R5 PUSHED ONTO THE
6498 ; KERNEL STACK, AND R0-R5 SET AS FOLLOWS:
6499 ; R0 -- ATL NODE ADDRESS OF ISSUING TASK ('.CRTSK'),
6500 ; R1 -- VIRTUAL ADDRESS OF DPB PLUS TWO,
6501 ; R2 -- SIZE OF DPB (IN WORDS),
6502 ; R3 -- TWICE THE DIRECTIVE IDENTIFICATION CODE (2*DIC),
6503 ; R4 -- STD ENTRY ADDRESS OF ISSUING TASK, AND
6504 ; R5 -- LAST WORD OF DPB.
6505 ;
6506 ; R0 IS LEFT UNALTERED (I.E. POINTING TO ISSUING TASK'S ATL NODE).
6507 ;
6508 ; R5 CONTAINS ADDRESS OF THREE WORD BUFFER.
6509 ;
6510 013624 .D.GMP::MFPI (R1)+ ;PUSH 2-WORD PARTITION NAME (OR TWO ZEROS)
013624 012146 MOV (R1)+,-(SP)
6511 013626 MFPI (R1)+ ;ONTO KERNEL STACK (IN REVERSE ORDER)
013626 012146 MOV (R1)+,-(SP)
6512 ;WAS A NAME SPECIFIED?
6513 013630 001011 BNE 10$ ;YES -- SCAN "TPD" FOR MATCH
6514 013632 005766 000002 TST +2(SP) ;MAYBE -- CHECK FIRST HALF OF NAME
6515 013636 001006 BNE 10$ ;YES -- SCAN "TPD" FOR MATCH
DMGMP - "GET PARTITION PARAME MACRO M1108 16-DEC-77 11:28 PAGE 92-1
DIRECTIVE -- GET PARTITION PARAMETERS
6516 013640 016504 000006 MOV A.PD(R5),R4 ;NO -- REPLACE TWO-ZEROS WITH NAME OF PARTITION
6517 013644 016446 000000 MOV T.PN+0(R4),-(SP) ;IN WHICH ISSUING TASK IS EXECUTING.
6518 013650 016446 000002 MOV T.PN+2(R4),-(SP)
6519 013654 10$:
6520 013654 012703 033476' MOV #.TPDEA,R3 ;SETUP R3 TO SCAN "TPD"
6521 013660 20$:
6522 013660 020327 033216' CMP R3,#.TPDBA ;END OF SCAN?
6523 013664 001001 BNE 30$
6524 013666 104776 TRAP DE.02 ;YES -- RETURN STS=-02.
6525 ;
6526 013670 162703 000020 30$: SUB #T.SZ,R3 ;NO -- REDUCE R3 TO POINT TO TPD ENTRY
6527 013674 010304 MOV R3,R4 ;SETUP R4 TO INDEX THRU TPD ENTRY
6528 013676 022466 000002 CMP (R4)+,+2(SP) ;DOES NAME MATCH?
6529 013702 001366 BNE 20$ ;NO -- CONTINUE SCAN
6530 013704 022416 CMP (R4)+,@SP ;MAYBE -- CHECK SECOND HALF
6531 013706 001364 BNE 20$ ;NO -- CONTINUE SCAN
6532 ;
6533 013710 012703 000002 MOV #2.,R3 ;YES -- MOVE 2-WORDS TO BUF IN PREVIOUS SPACE
6534 013714 MFPS @R1,R1 ;FIND BUFFER
013714 011101 MOV @R1,R1
6535 013716 011400 MOV @R4,R0 ;FIND PARTITION START
6536 013720 40$:
6537 013720 012446 MOV (R4)+,-(SP)
6539 013722 006216 ASR @SP
6540 013724 006216 ASR @SP
6541 013726 006216 ASR @SP
6542 013730 006216 ASR @SP
6543 013732 006216 ASR @SP
6544 013734 006216 ASR @SP
6545 013736 042716 176000 BIC #176000,@SP ;MASK OFF CARRY FROM SHIFT
6547 013742 MTPI (R1)+
013742 012621 MOV (SP)+,(R1)+
6548 013744 077313 SOB R3,40$
6549 013746 005724 TST (R4)+ ;RETURN FLAGS WORD
6550 013750 MTPS (R4)+,(R1)+ ;SET IN USER'S AREA
013750 012421 MOV (R4)+,(R1)+
6551 ;
6555 013752 000137 002774' JMP .DR.NS ;RETURN R0 STATUS
6557 ;
6558 .TITLE RUN - CLOCK HANDLER
6559 ;
6560 ; COPYRIGHT (C) 1975, 1978 BY
6561 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6562 ;
6563 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
6564 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6565 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
6566 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
6567 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
6568 ;
6569 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
6570 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
6571 ; CORPORATION.
6572 ;
6573 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
6574 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
6575 ;
RUN - CLOCK HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 92-2
DIRECTIVE -- GET PARTITION PARAMETERS
6576 ; MODULE: "CLOCK TICK RECOGNITION"
6577 ;
6578 ; VERSION: 07-00
6579 ;
6580 ; AUTHOR: R. MCLEAN
6581 ;
6582 ; DATE: 19 JUL 75
6583 ;
6584 ;
6585 ; THIS MODULE CONTAINS:
6586 ;
6587 ; 1 -- CODE TO SERVICE CLOCK TICK RECOGNITION
6588 ;
6589 ;
6590 ; MODIFICATIONS:
6591 ;
6592 ; NO. DATE PROGRAMMER PURPOSE
6593 ; --- ---- ---------- -------
6594 ; 001 04-MAR-77 R. BELANGER CHANGE MIDNIGHT RECOGNITION
6595 ;
6596 ; MACROS
6597 ;
6599 .MCALL CALL,RETURN,DIR$,.CRASH,.STKM
RUN - CLOCK HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 93
CLOCK TICK RECOGNITION
6602 .SBTTL CLOCK TICK RECOGNITION
6603 ;
6604 ; UPDATE TICKS
6605 ;
6606 013756 012704 031240' .TICK:: MOV #.TICKS,R4 ;POINT TO BASE OF TIME PARAMETERS
6607 013762 005214 INC @R4 ;UPDATE TICKS
6608 013764 023714 031260' CMP .TKPS,@R4 ;1 SEC YET?
6609 013770 101020 BHI 3$ ;NO DONE
6610 ;
6611 ; TICKS OVERFLOWED, UPDATE SECONDS
6612 ;
6613 013772 005024 CLR (R4)+ ;CLEAR FRACTIONS
6614 013774 000337 031256' SWAB .SSM+2 ;FIND IF TIME TO UPDATE SSM
6615 014000 001414 BEQ 3$ ;NO -- CONTINUE
6616 014002 005237 031254' INC .SSM ;UPDATE SECONDS SINCE MIDNIGHT
6617 014006 022737 124277 031254' CMP #30.*60.*24.-1,.SSM ;MIDNIGHT?
6618 014014 101006 BHI 3$ ;NO, CAN INCREMENT
6619 014016 006337 031242' ASL .CLKSW ;GIVE THE 10 TIME TO CHANGE IT'S DATE -- WE DON'T
6620 ; +++001 RREMOVED 10. INSTRUCTIONS
6621 014022 001003 BNE 3$ ; +++001 NO -- GO ON
6622 014024 012737 177777 031242' MOV #-1,.CLKSW ; +++001 YES -- FLAG NULL TASK TO REQUEST
6623 ; +++001 TIME-OF-DAY TASK
6624 ;
6625 ;INCREMENT IN NO OVERFLOW CASES - SECONDS OR MINUTES
6626 ;
6627 014032 3$:
6628 ;
6629 ; SET UP FOR LINE FREQ. SERVICE
6630 ;
6631 ;
6632 014032 012704 034452' 4$: MOV #.CLKBA,R4 ;DELETE THE ENTRY OR RESCHEDULE IT
6633 014036 012405 10$: MOV (R4)+,R5 ;NO -- AN ENTRY HERE?
6634 014040 001436 BEQ 40$ ;NO -- GO
6635 014042 005724 TST (R4)+ ;OVER AST ADDRESS
6636 014044 005324 DEC (R4)+ ;YES --DECREMENT THE COUNT
6637 014046 001403 BEQ 30$ ;END OF COUNT SET EVENT FLAG
6638 014050 062704 000006 20$: ADD #6,R4 ;NO -- LOOK AT NEXT ENTRY
6639 014054 000770 BR 10$
6640 ;
6641 014056 152737 000001 031116' 30$: BISB #EV.SE,.SERFG+0 ;DECLARE A SIG EVENT
6642 014064 012464 177774 MOV (R4)+,-4(R4) ;RESET RESCHEDULE INTERVAL
6643 014070 052434 BIS (R4)+,@(R4)+ ;DO THE SETTING OF THE EVENT FLAG
6644 014072 010446 MOV R4,-(SP) ;SAVE R4
6645 014074 016404 177766 MOV -12(R4),R4 ;FIND AST ADDRESS
6646 014100 001405 BEQ 35$ ;NONE -- FORGET IT
6647 014102 CALL .STAST ;START AST
014102 004737 005246' JSR PC,.STAST
6648 014106 103002 BCC 35$ ;GOT IT -- CONTINUE
6649 014110 010437 031122' MOV R4,.CKASS ;NOT QUITE -- TASK IS CURRENT GET AT ..INTX
6650 014114 012604 35$: MOV (SP)+,R4
6651 014116 005764 177772 TST -6(R4) ;RESCHEDULE?
6652 014122 001345 BNE 10$ ;NO -- DO NEXT ENTRY
6653 014124 162704 000014 SUB #C.SZ,R4 ;BACK UP POINTER
6654 014130 CALL .CKDEL ;DELETE ENTRY
014130 004737 040472' JSR PC,.CKDEL
6655 014134 000740 BR 10$ ;AND TRY AGAIN
6656 ;
RUN - CLOCK HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 93-1
CLOCK TICK RECOGNITION
6657 014136 105337 031117' 40$: DECB .SERFG+1 ;COUNT DOWN CLOCK COUNTER
6658 014142 001305 BNE .TICK ;AND GO DO ANOTHER IF WE MISSED ONE
6659 014144 012604 MOV (SP)+,R4 ;RESTORE REGISTERS
6660 014146 012605 MOV (SP)+,R5
6661 014150 053737 031120' 031116' BIS .SEWFL,.SERFG ;SET SIG EVENT FLAG IF NECESSARYH
6662 014156 005037 031120' CLR .SEWFL ;AND CLEAR FLAG
6663 014162 000137 004146' JMP ..INTX ;AND RETURN TO INTERRUPT EXIT
6664 .TITLE QPRDTE - DTE-20 DRIVER AND PRIMARY PROTOCOL SERVICE
6665 014166 IDENT$ 10,21
.IDENT /010210/
6666 ;
6667 ; COPYRIGHT (C) 1975, 1978 BY
6668 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6669 ;
6670 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
6671 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
6672 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
6673 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
6674 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
6675 ;
6676 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
6677 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
6678 ; CORPORATION.
6679 ;
6680 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
6681 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
6682 ;
6683 ;
6684 ; MODULE: "DTE 20 INTERRUPT SERVICE AND TASK
6685 ;
6686 ; VERSION: V10-21
6687 ;
6688 ; AUTHOR: R. MCLEAN
6689 ;
6690 ; DATE: 19 JUL 75
6691 ;
6692 ;
6693 ; THIS MODULE CONTAINS:
6694 ;
6695 ; 1 -- DTE-20 INTERRUPT SERVICE
6696 ; 2 -- DTE20 TASK SERVICE CODE AND PROTOCOL SERVICE
6697 ;
6698 ; MODIFICATIONS:
6699 ;
6700 ; NO. DATE PROGRAMMER PURPOSE
6701 ; --- ---- ---------- -------
6702 ; 001 21-OCT-76 A. PECKHAM INSERT CODING TO COUNT
6703 ; DOORBELLS.
6704 ; 002 08-NOV-76 K. RETI ADD SUPPRESS SEND-ALL
6705 ; R. BELANGER CODE.
6706 ; 003 03-FEB-77 R. BELANGER ADDED GENERALIZED DL11E
6707 ; SUPPORT
6708 ; 004 10-FEB-77 A. PECKHAM KEEP TO-11 QUEUE COUNT
6709 ; STRAIGHT
6710 ; 005 16-FEB-77 A. PECKHAM SET SPEED OF REMOTE LINES
6711 ; 006 07-MAR-77 A. PECKHAM REORGANIZE SENDALL
6712 ; 007 08-MAR-77 A. PECKHAM FIX "XOFF" FOR CTY
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 93-2
CLOCK TICK RECOGNITION
6713 ; 008 14-MAR-77 R. BELANGER CONDITIONALLY REMOVE
6714 ; SUPPORT FOR UNUSED DTE-20
6715 ; DIRECTIVES
6716 ; 009 31-MAY-77 R. BELANGER ADD SUPPORT FOR KLINIK
6717 ; PARAMETER PASSING
6718 ; 010 15-JUL-77 R. BELANGER ADD AUTO-BAUD SUPPORT
6719 ; 011 25-JUL-77 R. BELANGER FIX BUG IN INITIAL STATUS
6720 ; 012 25-AUG-77 R. BELANGER ADD KL POWERFAIL SUPPORT
6721 ; 013 02-SEP-77 R. BELANGER XON/XOFF BUG FIX
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 94
CLOCK TICK RECOGNITION
6723 ;
6724 ; MACRO DEFINITIONS
6725 ;
6727 .MCALL RQST$,WTSE$S,$DEF
6728 .MCALL .DQPEN,MRKT$,WTLO$,WTSE$,.CRASH,CALL,RETURN,.STKM,DIR$,.INH6,.ENB6
6729 014166 $DEF
6730 .MCALL WSIG$S,.INH5,.ENB5
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 95
CLOCK TICK RECOGNITION
6733 ;
6734 ; DATA AREAS
6735 ;
6736 000140 E.OPSZ==140 ;OPTIMAL SIZE FOR A TO 10 QUEUE
6737 ;
6738 ; LOCAL DEFINITIONS FOR DTE20 TASK
6739 ;
6740 000100 EF.TED=100 ;TO ELEVEN DONE EVENT FLAG
6741 ;
6742 ; TO ELEVEN QUEUE ENTRY
6743 ;
6744 000000 E.FP==0 ;FORWARD POINTER
6745 000002 E.LS==2 ;LIST SIZE
6746 000004 E.FN==4 ;FUNCTION CODE
6747 000006 E.DV==6 ;DEVICE CODE
6748 000010 E.FW==10 ;FUNCTION FIRST WORD
6749 ;
6750 ; FUNCTION CODE DEFINITIONS
6751 ;
6752 000001 BC.RQD==1 ;REQUEST DEVICES
6753 000002 BC.HAD==2 ;HERE ARE DEVICES
6754 000003 BC.STR==3 ;STRING DATA
6755 000004 BC.LNC==4 ;LINE/CHARACTER DATA
6756 000005 BC.RDS==5 ;RETURN DEVICE STATUS
6757 000006 BC.SDS==6 ;SET DEVICE STATUS
6758 000007 BC.HDS==7 ;HERE IS DEVICE STATUS
6759 000010 BC.DES==10 ;DEVICE ERROR STATUS
6760 000011 BC.RTD==11 ;RETURN TIME OF DAY
6761 000012 BC.HTD==12 ;HERE IS TIME OF DAY
6762 000013 BC.FOD==13 ;FLUSH OUTPUT DEVICE QUEUE
6763 000014 BC.SNA==14 ;SEND ALL
6764 000015 BC.TDU==15 ;DEVICE DIAL UP
6765 000016 BC.THU==16 ;DEVICE HANG UP
6766 000017 BC.SAK==17 ;ACKNOWLEDGE DEVICE DONE
6767 000020 BC.XOF==20 ;X-OFF (TTY ONLY)
6768 000021 BC.XON==21 ;X-ON (TTY ONLY)
6769 000022 BC.STS==22 ;SET TTY SPEED
6770 000023 BC.SLA==23 ;SET LINE ALLOCATION
6771 000024 BC.BTP==24 ;11 REBOOT WORD
6772 000025 BC.AKA==25 ;ACK ALL
6773 000026 BC.SPT==26 ;START/STOP LINE
6774 000027 BC.EDR==27 ;ENABLE/DISABLE REMOTES
6775 000030 BC.LDR==30 ;LOAD LP RAM
6776 000031 BC.LDV==31 ;LOAD LP VFU
6777 000032 BC.NSA==32 ; +002 SUPPRESS SEND-ALL FUNCTION (SET OR CLEAR BIT)
6778 000033 BC.SKP==33 ; +++009 SEND KLINIK PARAMETERS
6779 000034 BC.FNM==34 ; +++009 1 GREATER THAN MAX FUNCTION
6780 ;
6781 ; DPB'S
6782 ;
6783 014166 WTLODT:
6784 014166 WTLO$ 1,EF.TED ;WAIT FOR TEN DONE
014166 053 003 .BYTE 43.,3
014170 000001 .WORD 1
014172 000100 .WORD EF.TED
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 96
QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH
6786 .SBTTL QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH
6787
6788 014174 DTEHD::
6789 014174 .STKM 0,0,0,0,0,0,0,QPRDTE,174000,DTESP
014242 000000 000000 000000 .WORD 0,0,0,0
014250 000000
014270 174000 014502' 014454' .WORD 174000,QPRDTE,DTESP
014324 000005 .WORD 5
014326 037202' .WORD TTPEN
014330 000000 .WORD 0
014332 000000 .WORD 0
014334 000000 .WORD 0
014336 000000 .WORD 0
014340 000000 .WORD 0
014342 000000 .WORD 0
014344 000000 .WORD 0
014346 000000 .WORD 0
014350 000000 .WORD 0
014352 000000 .WORD 0
014454 000000 .WORD 0
014456 000000 .WORD 0
014460 000000 .WORD 0
014462 000000 .WORD 0
014464 000000 .WORD 0
014466 000000 .WORD 0
014470 014502' .WORD QPRDTE
014472 174000 .WORD 174000
6790
6791 014474 QPRDTC::
6792 014474 012737 037777 174400 MOV #37777,@#DLYCNT ;SET UP THE DELAY COUNTER
6793 014502 QPRDTE::
6794 014502 DIR$ #WTLODT ;WAIT FOR TEN DONE
014502 012746 014166' MOV #WTLODT,-(SP)
014506 104375 EMT 375
6795 014510 .INH6 ;INHIBIT INTERRUPTS
014510 013746 177776 MOV @#PS,-(SP)
014514 112737 000300 177776 MOVB #300,@#PS
6796 014522 013700 031110' MOV .CRTSK,R0 ;;;POINT TO CURRENT TASK
6797 014526 005060 000020 CLR A.EF(R0) ;;;AND CLEAR THE EVENT FLAGS.
6798 014532 .ENB6 ;;;RE-ENABLE THE INTERRUPTS
014532 012637 177776 MOV (SP)+,@#PS
6799 014536 QPRDTL:
6800 014536 .INH6 ;;;INHIBIT DTE20 INTERRUPTS
014536 013746 177776 MOV @#PS,-(SP)
014542 112737 000300 177776 MOVB #300,@#PS
6801 014550 013704 031750' MOV TO11Q,R4 ;;;PICK IT FROM THE QUEUE
6802 014554 001402 BEQ 10$ ;;;NO QUEUE
6803 014556 011437 031750' MOV @R4,TO11Q ;;;SET UP THE NEXT LISTHEAD OR ZERO
6804 014562 10$:
6805 014562 .ENB6 ;;;ENABLE DTE20 INTERRUPTS
014562 012637 177776 MOV (SP)+,@#PS
6806 014566 010400 MOV R4,R0 ;SET IN R0 ALSO
6807 014570 001741 BEQ QPRDTC ;RESET DELAY COUNTER
6808 014572 116401 000004 MOVB E.FN(R4),R1 ;FIND THE FUNCTION CODE OF THE REQUEST
6809 014576 006301 ASL R1 ;MAKE IT 2* FUNCTION
6811 014600 020127 000066 CMP R1,#DFTSZ ;CHECK FOR LEGAL FUNCTION
6812 014604 101035 BHI UNRGFN
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 96-1
QUEUED PROTOCOL -- PROTOCOL PACKET SERVICE DISPATCH
6814 014606 000171 014610' JMP @DFTBL-2(R1) ;GO TO THE CORRECT ROUTINE
6815 ;
6816 014612 DFTBL::
6817 014612 016500' HICTS ; (01) HERE IS INITIAL STATUS
6818 014614 014700' UNRGFN ; (02) UNRECGONIZED FUNCTION
6819 014616 016710' STRDAT ; (03) STRING DATA FOR DEVICE
6820 014620 017114' LINCHR ; (04) LINE NUMBER CHARACTER DATA FOR DEVICE
6821 014622 016710' RTDVST ; (05) RETURN DEVICE STATUS
6822 014624 016710' STDVST ; (06) SET DEVICE STATUS FOR DEVICE
6823 014626 016710' HIDVST ; (07) HERE IS DEVICE STATUS
6824 014630 014700' UNRGFN ; (10) ERROR DEVICE STATUS
6825 014632 016626' RTNTOD ; (11) RETURN TIME OF DAY
6826 014634 017240' RETTOD ; (12) SEND TIME OF DAY
6827 014636 017314' FLDVOT ; (13) FLUSH DEVICE OUTPUT QUEUE
6828 014640 017430' SNDALL ; (14) SEND ALL TTY'S
6829 014642 014700' DIALUP ; (15) DIAL UP
6830 014644 014756' HANGUP ; (16) HANG UP
6831 014646 015164' ACKNOW ; (17) ACKNOWLEDGE END OF DATA IN BUFFER
6832 014650 016014' XOFF ; (20) XOFF (TTY)
6833 014652 016174' XON ; (21) XON (TTY)
6834 014654 015212' SETSPD ; (22) SET TTY SPEED
6835 014656 015176' SETLIN ; (23) SET LINE ALLOCATION
6836 014660 014700' UNRGFN ; (24) SET RELOAD PARAMETERS
6837 014662 016170' DEAND1 ; (25) ACK ALL
6838 014664 015520' STPLIN ; (26) STOP LINE
6839 014666 014706' EDRMT ; (27) ENABLE/DISABLE REMOTE LINES
6840 014670 016710' LDLPR ; (30) LOAD LP RAM
6841 014672 016710' LDLPV ; (31) LOAD LP VFU
6842 014674 014716' NOSNDA ; +002 (32) SET OR CLEAR "SUPPRESS SEND-ALL" BIT
6843 014676 017352' RCVKLP ; +++009 (33) RECIEVE KLINIK PARAMETERS FROM KL
6844
6845 000066 DFTSZ=.-DFTBL ;LEGAL FUNCTIONS COUNT *2
6846
6847 ;
6848 ; DIALUP -- FUNCTION 15
6849 ;
6850 014700 DIALUP:: ;UNRECOGNIZED FUNCTION -- PROTOCOL BROKEN
6851 014700 UNRGFN::
6852 014700 .CRASH ILF ; +++003 ILF -- ILLEGAL FUNCTION
014700 000004 IOT
014702 111 114 106 .ASCIZ /ILF/
014705 000
6853 .ENABL LSB
6854
6855 ;
6856 ; EDRMT -- FUNCTION 27
6857 ;
6858 014706 EDRMT::
6859 014706 016037 000010 031362' MOV E.FW(R0),.INHDM ;ENABLE/DISABLE DH11'S
6860 014714 000521 BR DEAND3 ;AND QUIT
6861 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 97
QUEUED PROTOCOL -- ENABLE/DISABLE SENDALL
6863 .SBTTL QUEUED PROTOCOL -- ENABLE/DISABLE SENDALL
6864
6865 ; +002 *********************************************************
6866 ; +002
6867 ; +002 NOSNDA FUNCTION (SET/CLEAR SUPPRESS SEND-ALL BIT) FUNCTION 32
6868 ; +002
6869 ; +002 *********************************************************
6870 ; +002
6871
6872 014716 NOSNDA:: ; +002 SET OR CLEAR BIT TO SUPPRESS SEND-ALLS
6873 014716 000360 000010 SWAB E.FW(R0) ; +002 SET UP LINE NUMBER FOR "FDVNMM"
6874 014722 CALL FDVNMM ; +002 GET R2 TO POINT TO BLOCK FOR THIS LINE
014722 004737 016756' JSR PC,FDVNMM
6875 014726 105760 000010 TSTB E.FW(R0) ; +002 TEST ARGUMENT BYTE
6876 014732 001404 BEQ 3$ ; +002 IF .NE. 0,
6877 014734 052762 004000 000006 BIS #TT.NSA,STSW1(R2); +002 THEN SET BIT.
6878 014742 000403 BR 4$ ; +002 OTHERWISE
6879 ;
6880 014744 3$:
6881 014744 042762 004000 000006 BIC #TT.NSA,STSW1(R2); +002 CLEAR BIT AND
6882 014752 4$:
6883 014752 000137 017304' JMP DEANOD ; +002 FREE THE NODE
6884 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 98
QUEUED PROTOCOL -- HANGUP
6886 .SBTTL QUEUED PROTOCOL -- HANGUP
6887
6888 ;
6889 ; HANGUP -- FUNCTION 16
6890 ;
6891 014756 HANGUP::
6892 014756 CALL FDVNMM ;FIND DEVICE
014756 004737 016756' JSR PC,FDVNMM
6893 014762 010205 MOV R2,R5 ;SET UP TABLE ADDRESS
6894 014764 032765 000400 000006 BIT #TT.CTY,STSW1(R5) ; +++003 IS THIS A CTY??
6895 014772 001420 BEQ 5$ ; +++003 NO -- GO ON
6896 014774 105737 031342' TSTB .KLNSW+0 ; +++003 YES -- IS KLINIK ACTIVE??
6897 015000 003415 BLE 5$ ; +++003 NOT THAT WE CARE
6898 015002 010546 MOV R5,-(SP) ; +++003 YES -- SAVE POINTER
6899 015004 013705 031222' MOV KLNPTR,R5 ; +++003 POINT TO KLINIK LINE
6900 015010 .INH6 ; +++003 DISALLOW INTERRUPTS
015010 013746 177776 MOV @#PS,-(SP)
015014 112737 000300 177776 MOVB #300,@#PS
6901 015022 CALL .DLHUP ;;; +++003 HANG UP THE KLINIK LINE
015022 004737 030016' JSR PC,.DLHUP
6902 015026 .ENB6 ;;; +++003 ALLOW INTERRUPTS
015026 012637 177776 MOV (SP)+,@#PS
6903 015032 012605 MOV (SP)+,R5 ; +++003 RESTORE POINTER
6904 015034 5$:
6905 015034 022705 035176' CMP #DHTBL,R5 ; +++003 IS THIS A DH11
6906 015040 101036 BHI 30$ ; +++003 NO -- DL11 SPECIAL CASE
6907 015042 005004 CLR R4 ;FIND THE UNIT NUMBER
6908 015044 156004 000011 BISB E.FW+1(R0),R4
6909 015050 162704 000005 SUB #DLCNT,R4 ;REMOVE DL11S
6910 ; +++003 REMOVED ONE INSTRUCTION
6911 015054 012701 035062' MOV #DMTBL,R1 ;FIND DM ENTRY
6912 015060 10$:
6913 015060 026105 000002 CMP 2(R1),R5 ;CORRECT ENTRY?
6914 015064 101002 BHI 20$ ;YES -- HANGUP
6915 015066 022121 CMP (R1)+,(R1)+ ;NO -- LOOK AT NEXT
6916 015070 000773 BR 10$
6917 ;
6918 015072 20$:
6919 015072 042704 177760 BIC #177760,R4 ;MAKE IT A UNIT NUMBER
6920 015076 016101 177774 MOV -4(R1),R1 ;FIND THE DM11 BB EXTERNAL PAGE ADDRESS
6921 015102 .INH6 ; +++003 DISALLOW INTERRUPTS
015102 013746 177776 MOV @#PS,-(SP)
015106 112737 000300 177776 MOVB #300,@#PS
6922 015114 CALL .DMHUP ;;; +++003 HANGUP
015114 004737 027712' JSR PC,.DMHUP
6923 015120 032765 010000 000006 BIT #TT.ABL,STSW1(R5) ;;; +++010 IS THIS AN AUTO-BAUD LINE??
6924 015126 001412 BEQ 40$ ;;; +++010 NO -- GO ON
6925 015130 CALL .DHSPR ;;; +++010 YES RESET LINE SPEED TO DEFAULT
015130 004737 027354' JSR PC,.DHSPR
6926 015134 000407 BR 40$ ;;; +++003 RETURN THE NODE
6927 ;
6928 015136 30$:
6929 015136 .INH6 ; +++003 DISALLOW INTERRUPTS
015136 013746 177776 MOV @#PS,-(SP)
015142 112737 000300 177776 MOVB #300,@#PS
6930 015150 CALL .DLHUP ;;; +++003 HANG IT UP
015150 004737 030016' JSR PC,.DLHUP
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 98-1
QUEUED PROTOCOL -- HANGUP
6931 015154 40$: ;;; +++003
6932 015154 000137 016164' JMP DEAND2 ;;; +++003 RETURN THE NODE
6933 015160 DEAND3:
6934 015160 000137 016170' JMP DEAND1 ;RETURN NODE
6935 ;
6936 ;
6937 ; ACKNOWLEDGE DEVICE -- FUNCTION 17
6938 ;
6939 015164 ACKNOW::
6940 015164 CALL FDVNMM ;FIND UNIT ETC
015164 004737 016756' JSR PC,FDVNMM
6941 015170 CALL @.DQPBA-20+Q.AK(R1) ;GO TO USER STATUS ROUTINE
015170 004771 034652' JSR PC,@.DQPBA-20+Q.AK(R1)
6942 015174 000771 BR DEAND3
6943 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 99
QUEUED PROTOCOL -- SET LINE ALLOCATION
6945 .SBTTL QUEUED PROTOCOL -- SET LINE ALLOCATION
6946
6947 ;
6948 ; SET LINE ALLOCATION -- FUNCTION 23
6949 ;
6950 015176 SETLIN::
6951 015176 CALL FDVNMM ;FIND DEVICE
015176 004737 016756' JSR PC,FDVNMM
6952 015202 116461 000011 034654' MOVB E.FW+1(R4),.DQPBA-20+14(R1) ;SET IT IN THE TABLE
6953 015210 000763 BR DEAND3 ;AND RETURN
6954 ;
6955 .DSABL LSB
6956 .ENABL LSB
6957 ;
6958 ; SETSPD -- SET SPEED OF TTY -- FUNCTION 22
6959 ;
6960 015212 SETSPD::
6961 015212 032764 040000 000016 BIT #BIT14,E.FW+6(R4) ; +++010 IS THIS AN AUTO-BAUD LINE??
6962 015220 001403 BEQ 5$ ; +++010 NO -- GO ON
6963 015222 012703 016703 MOV #16703,R3 ; +++010 YES -- DEFAULT TO 300 BAUD
6964 015226 000431 BR 25$ ; +++010 AND PROCEED
6965 ;
6966 015230 5$: ; +++010
6967 015230 016402 000012 MOV E.FW+2(R4),R2 ;FIND THE INPUT SPEED
6968 015234 CALL FNDSPD ;FIND THIS SPEED
015234 004737 015726' JSR PC,FNDSPD
6969 015240 006203 ASR R3 ;PUT IT IN THE CORRECT POSITION FOR DH
6970 015242 006203 ASR R3
6971 015244 010346 MOV R3,-(SP) ;SAVE THE WORD
6972 015246 016402 000014 MOV E.FW+4(R4),R2 ;FIND THE OUTPUT SPEED
6973 015252 CALL FNDSPD ;FIND THIS SPEED
015252 004737 015726' JSR PC,FNDSPD
6974 015256 006303 ASL R3 ;PUT OUTPUT SPEED IN CORRECT POSITION
6975 015260 006303 ASL R3
6976 015262 001002 BNE 10$ ;YES -- DON'T ALTER IT
6977 015264 012703 006007 MOV #6007,R3 ;NO -- WELL THEN SET IT TO AN OUTPUT SPEED OF 110
6978 ;THIS IS DONE TO PREVENT PROBLEMS WHEN ZERO OUTPUT BAUD
6979 ;IS DONE AND THERE IS OUTPUT FOR THIS LINE
6980 015270 10$:
6981 015270 052603 BIS (SP)+,R3 ;SET THE INPUT AND OUTPUT TOGETHER
6982 015272 016401 000016 MOV E.FW+6(R4),R1
6983 015276 006301 ASL R1 ;1 IS 1 STOP BIT 2 IS TWO STOP BITS
6984 015300 042701 177770 BIC #177770,R1 ;CLEAR OFF JUNK
6985 015304 050103 BIS R1,R3 ;SET IN STATUS WORD
6986 015306 20$:
6987 015306 052703 000003 BIS #3,R3 ;SET 8 BIT CHARACTER LENGTH
6988 015312 25$: ; +++010
6989 015312 005005 CLR R5 ;FIND THE LINE NUMBER
6990 015314 156005 000010 BISB E.FW(R0),R5 ;FIND THE UNIT NUMBER
6991 015320 162705 000005 SUB #DLCNT,R5 ;SUBTRACT OUT DL11'S
6992 015324 100715 BMI DEAND3 ;DL 11 NOT LEGAL
6993 015326 010304 MOV R3,R4
6994 015330 000360 000010 SWAB E.FW(R0) ;SWAP THE PLACE OF THE LINE NUMBER
6995 015334 CALL FDVNMM
015334 004737 016756' JSR PC,FDVNMM
6996 015340 010403 MOV R4,R3
6997 015342 010504 MOV R5,R4 ;SAVE UNIT NUMBER
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 99-1
QUEUED PROTOCOL -- SET LINE ALLOCATION
6998 015344 010205 MOV R2,R5
6999 ; +++005 REMOVED TWO INSTRUCTIONS
7000 015346 010365 000004 MOV R3,STSW0(R5) ;SET THE NEW SPEED IN THE TABLE
7001 015352 30$:
7002 015352 016501 000002 MOV TTYEXP(R5),R1 ;FIND EXTERNAL PAGE ADDRESS
7003 015356 005760 000016 TST E.FW+6(R0) ;CHECK FOR REMOTE FLAG
7004 015362 100045 BPL 60$ ;NO -- DON'T SET REMOTE FLAG
7005 015364 010365 000004 MOV R3,STSW0(R5) ;SAVE SPEED
7006 015370 052765 000100 000006 BIS #TT.RMT,STSW1(R5) ;SET REMOTE FLAG
7007 015376 010146 MOV R1,-(SP)
7008 015400 010546 MOV R5,-(SP)
7009 015402 012701 035062' MOV #DMTBL,R1 ;FIND ADDRESS OF DM11
7010 015406 162705 035176' SUB #DHTBL,R5
7011 015412 40$:
7012 015412 162705 000200 SUB #200,R5 ;FIND DH NUMBER
7013 015416 100402 BMI 50$ ;END -- QUIT
7014 015420 022121 CMP (R1)+,(R1)+ ;MOVE ON TO NEXT DH
7015 015422 000773 BR 40$
7016 ;
7017 015424 50$:
7018 015424 011101 MOV @R1,R1 ;SET UP FOR DM11
7019 015426 042704 177760 BIC #177760,R4 ;MASK UNIT NUMBER
7020 015432 012605 MOV (SP)+,R5 ;RESTORE R5
7021 015434 .INH6 ; +++003 DISALLOW INTERRUPTS
015434 013746 177776 MOV @#PS,-(SP)
015440 112737 000300 177776 MOVB #300,@#PS
7022 015446 CALL .DMHUP ;;; +++003 HANGUP THE DEVICE
015446 004737 027712' JSR PC,.DMHUP
7023 015452 .ENB6 ;;; +++003 ALLOW INTERRUPTS
015452 012637 177776 MOV (SP)+,@#PS
7024 015456 012601 MOV (SP)+,R1 ;RESTORE TTY EXTERNAL PAGE
7025 015460 032760 040000 000016 BIT #BIT14,E.FW+6(R0) ; +++010 IS THIS AN AUTO-BAUD LINE??
7026 015466 001403 BEQ 60$ ; ++010 NO -- GO ON
7027 015470 052765 010000 000006 BIS #TT.ABL,STSW1(R5) ; +++010 YES -- SET THE FLAG
7028 015476 60$:
7029 015476 .INH6 ;LOCK OUT INTERRUPTS THAT WOULD CHANGE UNIT
015476 013746 177776 MOV @#PS,-(SP)
015502 112737 000300 177776 MOVB #300,@#PS
7030 015510 CALL .DHSPD ;;; +++010 SET DH11 LINE SPEED
015510 004737 027430' JSR PC,.DHSPD
7031 015514 000137 016164' JMP DEAND2 ;;; +++003 DEALLOCATE NODE
7032 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 100
QUEUED PROTOCOL -- STOP LINE INPUT
7034 .SBTTL QUEUED PROTOCOL -- STOP LINE INPUT
7035
7036 ;
7037 ; STOP INPUT FROM LINE -- FUNCTION 26
7038 ;
7039 015520 STPLIN::
7040 015520 000360 000010 SWAB E.FW(R0) ;SWAP THE BYTES
7041 015524 CALL FDVNMM ;FIND DEVICE
015524 004737 016756' JSR PC,FDVNMM
7042 015530 103613 BCS DEAND3 ;QUIT IF ILLEGAL DEVICE NUMBER
7043 015532 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ; +++003 IS THIS A CTY?
7044 015540 001411 BEQ 65$ ; +++003 NO -- GO ON
7045 015542 105737 031342' TSTB .KLNSW+0 ; +++003 YES -- IS KLINIK ACTIVE?
7046 015546 003406 BLE 65$ ; +++003 NOT THAT WE CARE -- GO ON
7047 015550 010246 MOV R2,-(SP) ; +++003 YES -- SAVE R2
7048 015552 013702 031222' MOV KLNPTR,R2 ; +++003 KLINIK POINTER TO R2
7049 015556 CALL DLSTOP ; +++003 STOP THE KLINIK LINE
015556 004737 015650' JSR PC,DLSTOP
7050 015562 012602 MOV (SP)+,R2 ; +++003 RESTORE POINTER
7051 015564 65$:
7052 015564 022702 035176' CMP #DHTBL,R2 ; +++003 IS THIS A DH11??
7053 015570 101024 BHI STOPDL ; +++003 NO -- STOP THE DL11E
7054 015572 016203 000004 MOV STSW0(R2),R3 ;FIND THE REQUESTED SPEED
7055 015576 010205 MOV R2,R5 ; +++010 SET UP R5 FOR ".DHSPD"
7056 015600 010304 MOV R3,R4 ; +++010 SAVE R3 IN R4
7057 015602 105760 000010 TSTB E.FW(R0) ;CHECK TO SEE IF STOP OR START
7058 015606 001002 BNE 70$ ; +++010 START LINE -- GO DO IT
7059 015610 042703 001700 BIC #1700,R3 ;STOP LINE -- SET LINE SPEED ON INPUT TO 0
7060 015614 70$: ; +++010
7061 015614 .INH6 ; +++010 DISALLOW INTERRUPTS
015614 013746 177776 MOV @#PS,-(SP)
015620 112737 000300 177776 MOVB #300,@#PS
7062 015626 CALL .DHSPD ;;; +++010 SET THE NEW LINE SPEED
015626 004737 027430' JSR PC,.DHSPD
7063 015632 010462 000004 MOV R4,STSW0(R2) ;;; +++010 SET THE SPEED IN THE DLS TABLE
7064 015636 000137 016164' JMP DEAND2 ;;; +++010 DEALLOCATE THE NODE
7065 ;
7066 .DSABL LSB
7067 015642 STOPDL: ; +++003
7068 015642 CALL DLSTOP ; +++003 DO THE SET / CLEAR FOR THIS LINE
015642 004737 015650' JSR PC,DLSTOP
7069 015646 000550 BR DEAND1 ; +++003 DEALLOCATE NODE AND EXIT
7070 ;
7071 015650 DLSTOP:
7072 015650 .INH6 ; +++003 DISALLOW INTERRUPTS
015650 013746 177776 MOV @#PS,-(SP)
015654 112737 000300 177776 MOVB #300,@#PS
7073 015662 016201 000002 MOV TTYEXP(R2),R1 ;;; +++003 I/O PAGE POINTER TO R1
7074 015666 012703 000100 MOV #DL.REN,R3 ;;; +++003 START / STOP BIT TO R3
7075 015672 105760 000010 TSTB E.FW(R0) ;;; +++003 IS THIS A STOP OR A START??
7076 015676 001004 BNE 40$ ;;; +++003 STOP -- GO ON
7077 015700 005062 000004 CLR STSW0(R2) ;;; +++003 START THE LINE
7078 015704 050311 BIS R3,(R1) ;;; +++003 ENABLE INTERRUPPTS
7079 015706 000404 BR 50$ ;;; +++003 AND RETURN
7080 015710 40$:
7081 015710 012762 177777 000004 MOV #-1,STSW0(R2) ;;; +++003 STOP THE LINE
7082 015716 040311 BIC R3,(R1) ;;; +++003 DISABLE INTERRUPTS
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 100-1
QUEUED PROTOCOL -- STOP LINE INPUT
7083 015720 50$:
7084 015720 .ENB6 ;;; +++003 ALLOW INTERRUPTS
015720 012637 177776 MOV (SP)+,@#PS
7085 015724 RETURN ; +++003 TO CALLER
015724 000207 RTS PC
7086
7087 015726 FNDSPD:
7088 015726 012705 015760' MOV #SPDTBL,R5 ;FIND THE ADDRESS OF THE SPEED TABLE
7089 015732 012701 000016 MOV #SPDTBZ,R1 ;SET UP THE TABLE SIZE
7090 015736 005003 CLR R3 ;SET UP COUNTER
7091 015740 10$:
7092 015740 020225 CMP R2,(R5)+ ;COMPARE AGAINST TABLE
7093 015742 001404 BEQ 20$ ;FOUND CORRECT ENTRY -- R3 IS CORRECT WHEN FOUND
7094 015744 005203 INC R3 ;UPDATE R3
7095 015746 077104 SOB R1,10$ ;TRY NEXT ENTRY
7096 015750 005726 TST (SP)+ ;RETURN TO DELETE NODE
7097 015752 000506 BR DEAND1
7098 ;
7099 015754 20$:
7100 015754 000303 SWAB R3 ;SET IN HIGH BYTE
7101 015756 RETURN ;RETURN TO CALLER
015756 000207 RTS PC
7102
7103 015760 SPDTBL:
7104 015760 000000 .WORD 0 ;ZERO BAUD
7105 015762 000062 .WORD 50. ;50 BAUD
7106 015764 000113 .WORD 75. ;ETC ......
7107 015766 000156 .WORD 110.
7108 015770 000206 .WORD 134.
7109 015772 000226 .WORD 150.
7110 015774 000310 .WORD 200.
7111 015776 000454 .WORD 300.
7112 016000 001130 .WORD 600.
7113 016002 002260 .WORD 1200.
7114 016004 003410 .WORD 1800.
7115 016006 004540 .WORD 2400.
7116 016010 011300 .WORD 4800.
7117 016012 022600 .WORD 9600.
7118
7119 000016 SPDTBZ=.-SPDTBL/2
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 101
QUEUED PROTOCOL -- XOFF
7121 .SBTTL QUEUED PROTOCOL -- XOFF
7122
7123 ;
7124 ; XOFF -- FUNCTION 20
7125 ;
7126 ; THIS ROUTINE WILL INITIATE THE XOFF SEQUENCE FOR A TERMINAL LINE.
7127 ; THE "XOFF" STATUS BIT ("TT.XOF") IS SET IN THE LINE STATUS WORD WHICH
7128 ; BLOCKS ANY FURTHER OUTPUT FROM THE TERMINAL DRIVER. IF THE LINE IS
7129 ; A DH11, THE OUTPUT IS NOT STOPPED IMMEDIATELY, BUT A RUNDOWN SEQUENCE
7130 ; IS INITATED SINCE EARLIER DH11'S WILL "RUN AWAY" IF THE DEVICE BYTE
7131 ; COUNT IS SIMPLY CLEARED. THE TERMINAL INTERRUPT SERVICE WILL RESET THE
7132 ; PACKET ADDRESS AND BYTE COUNT AT OUTPUT DONE SO THAT THE XON CODE CAN
7133 ; DO A NORMAL LINE START.
7134 ;
7135 ; THIS MESSAGE IS IGNORED IF:
7136 ;
7137 ; 1. THE LINE IS ALREADY X'D OFF
7138 ; 2. THE LINE HAS NO OUTPUT PENDING (THREAD LIST EMPTY)
7139 ; 3. A SENDALL IS IN PROGRESS ON THIS LINE
7140 ; 4. THE CTY IS IN PDP-11 I/O WAIT AND THE CTY IS TO BE X'D OFF
7141
7142 016014 XOFF::
7143 016014 CALL FDVNMM ;FIND THE DEVICE UNIT NUMBER
016014 004737 016756' JSR PC,FDVNMM
7144 016020 .INH6 ;;;INHIBIT INTERRUPTS
016020 013746 177776 MOV @#PS,-(SP)
016024 112737 000300 177776 MOVB #300,@#PS
7145 016032 032762 001200 000006 BIT #TT.SIP!TT.XOF,STSW1(R2) ;;; +++013 SEND ALL IN PROGRESS??
7146 ;;; +++013 OR ALREADY X'D OFF??
7147 016040 001051 BNE DEAND2 ;;; +++013 YES -- DON'T ACKNOWLEDGE IT
7148 016042 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;; +++007 NO -- IS THIS A CTY??
7149 016050 001421 BEQ 20$ ;;; +++007 NO -- GO ON
7150 016052 005737 031216' TST .TTP11 ;;; +++007 YES -- IN PDP-11 I/O WAIT??
7151 016056 001042 BNE DEAND2 ;;; +++007 YES -- GO AWAY
7152 016060 105737 031342' TSTB .KLNSW+0 ;;; +++003 NO -- IS KLINIK ACTIVE??
7153 016064 003413 BLE 20$ ;;; +++003 USER -- GO ON
7154 016066 010246 MOV R2,-(SP) ;;; +++003 SAVE CURRENT POINTER
7155 016070 013702 031222' MOV KLNPTR,R2 ;;; +++003 KLINIK POINTER TO R2
7156 016074 005722 TST (R2)+ ;;; +++013 ANYTHING IN THE QUEUE??
7157 016076 001405 BEQ 10$ ;;; +++013 NO -- GO ON
7158 016100 005722 TST (R2)+ ;;; +++013 DEVICE EXIST??
7159 016102 001403 BEQ 10$ ;;; +++013 NO -- GO ON
7160 016104 052762 000200 000002 BIS #TT.XOF,2(R2) ;;; +++013 YES -- MARK LINE AS X'D OFF
7161 016112 10$: ;;; +++013
7162 016112 012602 MOV (SP)+,R2 ;;; +++003 RESTORE FIRST POINTER
7163 016114 20$:
7164 016114 005722 TST (R2)+ ;;;IS THERE ANYTHING IN THE QUEUE??
7165 016116 001422 BEQ DEAND2 ;;;NO -- NOTHING TO DO
7166 016120 012201 MOV (R2)+,R1 ;;;FIND THE EXTERNAL PAGE ADDRESS
7167 016122 001420 BEQ DEAND2 ;;; +++013 NONEXISTANT -- GO AWAY
7168 016124 052762 000200 000002 BIS #TT.XOF,2(R2) ;;; +++013 MARK LINE AS X'D OFF
7169 016132 010204 MOV R2,R4 ;;; +++013 TABLE POINTER TO R4
7170 016134 162704 035176' SUB #DHTBL,R4 ;;; +++013 FIND THE UNIT NUMBER
7171 016140 100411 BMI DEAND2 ;;;IF THIS IS DL11 THEN DONE
7172 016142 CALL SETDHL ;;; +++013 SET THE LINE NUMBER IN THE DH11
016142 004737 016454' JSR PC,SETDHL
7173 016146 022761 177776 000010 CMP #-2,10(R1) ;;; +++013 HOW MANY BYTES REMAIN??
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 101-1
QUEUED PROTOCOL -- XOFF
7174 016154 003403 BLE DEAND2 ;;; +++013 JUST LET I/O RUNDOWN IF 2 OR LESS
7175 016156 012761 177777 000010 MOV #-1,10(R1) ;;; +++013 ELSE FORCE THE RUNDOWN
7176 016164 DEAND2:
7177 016164 .ENB6 ;;;ENABLE INTERRUPTS
016164 012637 177776 MOV (SP)+,@#PS
7178 016170 DEAND1:
7179 016170 000137 017304' JMP DEANOD ;DEALLOCATE THE NODE
7180 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 102
QUEUED PROTOCOL -- XON
7182 .SBTTL QUEUED PROTOCOL -- XON
7183
7184 ;
7185 ; XON -- FUNCTION 21
7186 ;
7187 ; THIS ROUTINE WILL RESUME OUTPUT FOR A LINE WHICH WAS PREVIOUSLY
7188 ; X'D OFF. THE OUTPUT WILL BE RESUMED PER THE DATA IN THE CURRENT
7189 ; NODE IN THE THREAD LIST FOR THIS LINE. (T.HCBC AND T.HACD) THIS
7190 ; DATA IS SAVED AT OUTPUT INTERRUPT TIME FROM THE XOFF.
7191 ;
7192 ; THIS MESSAGE WILL BE IGNORED IF:
7193 ;
7194 ; 1. THE LINE HAS NOT BEEN PREVIOUSLY X'D OFF
7195 ; 2. A SENDALL IS CURRENTLY IN PROGRESS ON THIS LINE
7196 ;
7197 ; THE DEVICE WILL NOT BE RESTARTED IF:
7198 ;
7199 ; 1. OUTPUT IS ALREADY IN PROGRESS ON THIS LINE
7200 ; 2. THE OUTPUT THREAD LIST FOR THIS LINE IS EMPTY
7201 ; 3. THE DEVICE DOES NOT EXIST
7202
7203
7204 016174 XON::
7205 016174 CALL FDVNMM ;FIND THIS DEVICE
016174 004737 016756' JSR PC,FDVNMM
7206 016200 .INH6 ;INHIBIT INTERRUPTS
016200 013746 177776 MOV @#PS,-(SP)
016204 112737 000300 177776 MOVB #300,@#PS
7207 016212 105762 000006 TSTB STSW1+0(R2) ;;; +++013 IS THIS LINE X'D OFF
7208 016216 100362 BPL DEAND2 ;;; +++013 NO -- IGNORE THIS MESSAGE
7209 016220 032762 001000 000006 BIT #TT.SIP,STSW1(R2) ;;; +++013 SENDALL IN PROGRESS??
7210 016226 001356 BNE DEAND2 ;;; +++013 YES -- IGNORE THIS MESSAGE
7211 016230 032762 000001 000006 BIT #TT.OUT,STSW1(R2) ;;; YES -- CHECK FOR ALREADY BUSY
7212 016236 001103 BNE 70$ ;;;YES -- JUST IGNORE
7213 016240 011203 MOV @R2,R3 ;;; NO -- IS THERE ANYTHING IN THE QUEUE?
7214 016242 001501 BEQ 70$ ;;; NO -- RESET STATUS AND EXIT
7215 016244 016201 000002 MOV TTYEXP(R2),R1 ;;; YES -- FIND THE EXTERNAL PAGE ADDRESS
7216 016250 001476 BEQ 70$ ;;; +++003 NOTHING MORE TO DO IF NOT THERE
7217 016252 010204 MOV R2,R4
7218 016254 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;; +++003 IS THIS A CTY??
7219 016262 001413 BEQ 10$ ;;; +++003 NO -- GO ON
7220 016264 105737 031342' TSTB .KLNSW+0 ;;; +++003 YES -- IS KLINIK ACTIVE??
7221 016270 003410 BLE 10$ ;;; +++003 NOT THAT WE CARE
7222 016272 010146 MOV R1,-(SP) ;;; +++003 YES -- SAVE R1
7223 016274 010246 MOV R2,-(SP) ;;; +++003 AND R2
7224 016276 013702 031222' MOV KLNPTR,R2 ;;; +++003 KLINIK LINE POINTER TO R2
7225 016302 CALL 40$ ;;; +++003 TURN ON THE KLINIK LINE
016302 004737 016410' JSR PC,40$
7226 016306 012602 MOV (SP)+,R2 ;;; +++003 RESTORE R2
7227 016310 012601 MOV (SP)+,R1 ;;; +++003 AND R1
7228 016312 10$:
7229 016312 162704 035176' SUB #DHTBL,R4 ;;;IS IT DL?
7230 016316 100431 BMI 30$ ;;;YES -- SPECIAL CASE
7231 016320 CALL SETDHL ;;; +++013 NO -- SET DH11 LINE NUMBER
016320 004737 016454' JSR PC,SETDHL
7232 016324 036461 042572' 000012 BIT BITTBL(R4),12(R1) ;;;CHECK TO SEE IF ALREADY ACTIVE
7233 016332 001045 BNE 70$ ;;;YES -- FORGET IT
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 102-1
QUEUED PROTOCOL -- XON
7234 016334 062701 000006 ADD #6,R1 ;;;POINT TO CURRENT ADDRESS BUFFER
7235 016340 116305 000006 MOVB T.HCBC(R3),R5 ;;; +++013 GET THE BYTE COUNT
7236 016344 001005 BNE 20$ ;;; +++013 GO ON IF NOT AT END
7237 016346 005363 000004 DEC T.HCAD(R3) ;;; +++013 END OF PACKET -- BACK UP ONE BYTE
7238 016352 105073 000004 CLRB @T.HCAD(R3) ;;; +++013 STORE A <NULL> TO CAUSE INTERRUPT
7239 016356 005205 INC R5 ;;; +++013 AND ACCOUNT FOR NULL BYTE
7240 016360 20$:
7241 016360 005405 NEG R5 ;;; +++013 NEGATE THE BYTE COUNT
7242 016362 016321 000004 MOV T.HCAD(R3),(R1)+ ;;; +++013 SET THE PACKET ADDRESS IN DH11
7243 016366 010521 MOV R5,(R1)+ ;;; +++013 AND BYTE COUNT
7244 016370 056411 042572' BIS BITTBL(R4),@R1 ;;;START THE DEVICE
7245 016374 CALL 50$ ;;; +++013 SET STATUS
016374 004737 016430' JSR PC,50$
7246 016400 000671 BR DEAND2 ;;; +++013 AND EXIT
7247 ;
7248 016402 30$:
7249 016402 CALL 40$ ;;; +++003 START UP THIS LINE
016402 004737 016410' JSR PC,40$
7250 016406 000666 BR DEAND2 ;;; +++003 DEALLOCATE NODE AND EXIT
7251 ;
7252 016410 40$:
7253 016410 016201 000002 MOV TTYEXP(R2),R1 ;;; +++003 I/O PAGE POINTER TO R1
7254 016414 001410 BEQ 60$ ;;; +++003 NOTHING MORE TO DO IF NOT THERE
7255 016416 105061 000006 CLRB 6(R1) ;;; +++003 SET A NULL TO START TTY
7256 016422 052761 000100 000004 BIS #DL.XEN,4(R1) ;;; +++003 ENABLE INTERRUPTS
7257 016430 50$: ;;; +++013
7258 016430 052762 000001 000006 BIS #TT.OUT,STSW1(R2) ;;; +++003 SET OUTPUT BUSY
7259 016436 60$:
7260 016436 042762 000200 000006 BIC #TT.XOF,STSW1(R2) ;;; +++013 MARK LINE AS X'D ON
7261 016444 RETURN ;;; +++003 TO CALLER
016444 000207 RTS PC
7262 016446 70$:
7263 016446 CALL 60$ ;;; +++013 CLEAR XOFF STATUS
016446 004737 016436' JSR PC,60$
7264 016452 000644 BR DEAND2 ;;; +++013 AND EXIT
7265 ;
7266 ;
7267 ; SETDHL -- SET LINE ADDRESS IN DH11 CONTROL REGISTER
7268 ;
7269 ; R1 -- POINTS TO DH11 CSR
7270 ; R4 -- OFFSET INTO DH11 TABLE FOR THIS LINE
7271 ;
7272
7273 016454 SETDHL:
7274 016454 006204 ASR R4 ; COMPUTE DH11 LINE NUMBER
7275 016456 006204 ASR R4
7276 016460 006204 ASR R4
7277 016462 042704 177760 BIC #^C17,R4 ; CLEAR JUNK
7278 016466 042711 001077 BIC #1077,(R1) ; SET UP LINE NUMBER
7279 016472 050411 BIS R4,(R1) ; SO
7280 016474 006304 ASL R4 ; CONVERT LINE NUMBER TO WORD INDEX
7281 016476 RETURN ; TO CALLER
016476 000207 RTS PC
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 103
QUEUED PROTOCOL -- HERE IS INITIAL STATUS
7283 .SBTTL QUEUED PROTOCOL -- HERE IS INITIAL STATUS
7284
7285 ;
7286 ; HERE IS INITIAL STATUS -- FUNCTION 1
7287 ; FW IS ALLOCATED WITH LOW ORDER PART AS # OF TTY'S
7288 ; BIT 16 IS ALLOCATED TO INDICATE 50CPS
7289 ;
7290 ;
7291 .ENABL LSB
7292 016500 HICTS::
7293 016500 012737 000074 031260' MOV #60.,.TKPS ;SET UP THE CLOCK TO 60. CPS
7294 016506 105760 000010 TSTB E.FW+0(R0) ; +++011 CHECK FOR 50 CPS (BYTES ARE SWAPPED)
7295 016512 100003 BPL 10$ ;HIGH ORDER BIT SET IS 50CPS
7296 016514 162737 000012 031260' SUB #10.,.TKPS ;SET TO 50 CPS
7297 016522 10$:
7298 016522 012703 000001 MOV #D.CCTY,R3 ;SET DEVICE ID
7299 016526 012701 000002 MOV #BC.HAD,R1 ;SET HERE IS DEVICE STATUS
7300 016532 013704 031220' MOV CTYPTR,R4 ;FIND THE CTY NUMBER
7301 016536 162704 035126' SUB #TTTBL,R4
7302 016542 006204 ASR R4 ;MAKE NUMBER
7303 016544 006204 ASR R4
7304 016546 006204 ASR R4
7305 016550 CALL ..STFC ;START FUNCTION
016550 004737 043252' JSR PC,..STFC
7306 016554 105737 031332' TSTB .KLNMD+0 ; +++009 ANY KLINIK PARAMETERS TO SEND??
7307 016560 001415 BEQ 15$ ; +++009 NO -- GO ON
7308 016562 010046 MOV R0,-(SP) ; +++009 YES -- SAVE R0
7309 016564 012700 031312' MOV #.KLNPB,R0 ; +++009 BUFFER POINTER TO R0
7310 016570 012710 000026 MOV #KLNPLN,(R0) ; +++009 BYTE COUNT TO BUFFER HEADER
7311 016574 012701 100033 MOV #BC.SKP+100000,R1 ; +++009 FUNCTION CODE TO R1
7312 016600 005002 CLR R2 ; +++009 DON'T WAIT FOR IT
7313 016602 012703 000200 MOV #D.CCPU,R3 ; +++009 DEVICE ID TO R3
7314 016606 CALL ..STIN ; +++009 SEND THE KLINIK PARAMETERS
016606 004737 043442' JSR PC,..STIN
7315 016612 012600 MOV (SP)+,R0 ; +++009 RESTORE R0
7316 016614 15$: ; +++009
7317 016614 013704 031276' MOV .BTPRM,R4 ;SEND BOOT PARAMETERS
7318 016620 012701 000024 MOV #BC.BTP,R1 ;SET BOOT PARAMETERS
7319 016624 000407 BR 20$ ;DEALLOCATE NODE
7320 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 104
QUEUED PROTOCOL -- RETURN TIME OF DAY
7322 .SBTTL QUEUED PROTOCOL -- RETURN TIME OF DAY
7323
7324 ;
7325 ; RTNTOD -- RETURN TIME OF DAY TO KL -- FUNCTION 11
7326 ;
7327 016626 RTNTOD::
7328 016626 012703 000007 MOV #D.CCLK,R3 ;SET UP TO POINT TO CLOCK
7329 016632 012701 000012 MOV #BC.HTD,R1 ;SET DEVICE ID
7330 016636 013704 031244' MOV .DATE3,R4 ;RETURN DATE OR 0 IF NONE HERE
7331 016642 001003 BNE 30$ ;YES -- DATE VALID RETURN IT
7332 016644 20$:
7333 016644 CALL ..STFC ;SEND FUNCTION
016644 004737 043252' JSR PC,..STFC
7334 016650 000406 BR 40$ ;DEALLOCATE NODE
7335 ;
7336 016652 30$:
7337 016652 012737 177777 031366' MOV #-1,.ABFLG ; +++010 FLAG "SETSPD" TO REPORT ALL LINES
7338 016660 DIR$ #.RQSPD ; +++010 SET SPEED AND THEN RETURN TIME OF DAY
016660 012746 016672' MOV #.RQSPD,-(SP)
016664 104375 EMT 375
7339 016666 40$:
7340 016666 000137 016170' JMP DEAND1 ; +++003 DEALLOCATE THIS NODE
7341 ;
7342 .DSABL LSB
7343 ;
7344 016672 .RQSPD:: ; +++010 ALSO CALLED FROM TTYDRR
7345 016672 RQST$ SETSPD
016672 013 007 .BYTE 11.,7
016674 073634 074504 .RAD50 /SETSPD/
016700 000000 000000 .WORD 0,0
016704 000000 .WORD
016706 000 000 .BYTE ,
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 105
QUEUED PROTOCOL -- STRING DATA
7347 .SBTTL QUEUED PROTOCOL -- STRING DATA
7348
7349 ; STRDAT -- ROUTINE TO HANDLE STRING DATA -- FUNCTION 3
7350 ; HIDVST -- ROUTINE TO RECIEVE DEVICE STATUS -- FUNCTION 7
7351 ; RTDVST -- ROUTINE TO RECEIVE REQUEST FOR DEVICE STATUS -- FUNCTION 5
7352 ; STDVST -- ROUTINE TOSET DEVICE STATUS -- FUNCTION 6
7353 ; LDLPR -- ROUTINE TO LOAD LP RAM -- FUNCTION 30
7354 ; LDLPV -- ROUTINE TO LOAD LP VFU -- FUNCTION 31
7355 ;
7356 ;
7357 016710 HIDVST::
7358 016710 LDLPR::
7359 016710 LDLPV::
7360 016710 STDVST::
7361 016710 RTDVST::
7362 016710 STRDAT::
7363 016710 012702 000006 MOV #6,R2 ;MOVE OVER THE LISTHEAD AND COUNT
7364 016714 060204 ADD R2,R4 ;FIND THE DEVICE ADDRESS
7365 016716 012401 MOV (R4)+,R1 ;FIND THE DEVICE ADDRESS
7366 016720 012403 MOV (R4)+,R3 ;FIND THE FIRST WORD
7367 016722 160204 SUB R2,R4 ;BACKUP TO STORE IN THE HEADER
7368 016724 111464 000003 MOVB @R4,3(R4) ;SAVE FUNCTION CODE
7369 016730 010414 MOV R4,@R4 ;SAVE THE ADDRESS
7370 016732 060224 ADD R2,(R4)+ ;UPDATE ADDRESS
7371 016734 000303 SWAB R3 ;SET UP BYTES SWAPED
7372 016736 110314 MOVB R3,@R4 ;STORE BYTE COUNT
7373 016740 CALL FDVNM ;FIND DEVICE TABLE ENTRY
016740 004737 016772' JSR PC,FDVNM
7374 016744 103557 BCS DEANOD ;ILLEGAL DEVICE -- FORGET IT
7375 ;
7376 016746 CALL @.DQPBA+Q.ST-20(R1) ;START DEVICE
016746 004771 034644' JSR PC,@.DQPBA+Q.ST-20(R1)
7377 016752 10$:
7378 016752 000137 014536' JMP QPRDTL ;GO TO DO MORE WORK
7379 ;
7380 .ENABL LSB
7381 016756 FDVNMM:
7382 016756 016001 000006 MOV E.DV(R0),R1 ;FIND DEVICE
7383 016762 016003 000010 MOV E.FW(R0),R3 ;FIND FIRST WORD
7384 016766 005046 CLR -(SP) ;SAVE ENTRY FLAG
7385 016770 000402 BR 5$
7386 ;
7387 016772 FDVNM:
7388 016772 012746 177777 MOV #-1,-(SP) ;SAVE ENTRY FLAG
7389 016776 5$:
7390 016776 010546 MOV R5,-(SP) ;SAVE REGISTERS
7391 017000 010446 MOV R4,-(SP)
7392 017002 010146 MOV R1,-(SP) ;SAVE DEVICE
7393 017004 006301 ASL R1 ;FIND THE DEVICE ADDRESS
7394 017006 006301 ASL R1
7395 017010 006301 ASL R1
7396 017012 006301 ASL R1
7397 017014 116105 034642' MOVB .DQPBA-20+Q.TS(R1),R5 ;FIND THE SIZE OF A TABLE ENTRY
7398 017020 016102 034640' MOV .DQPBA-20+Q.DA(R1),R2 ;FIND THE TABLE HEAD ADDRESS
7399 017024 105003 CLRB R3 ;FIND THE LINE NUMBER
7400 017026 000303 SWAB R3 ;PUT IT IN LOWER ORDER OF BYTE
7401 017030 010346 MOV R3,-(SP) ;SAVE LINE NUMBER
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 105-1
QUEUED PROTOCOL -- STRING DATA
7402 017032 126103 034656' CMPB .DQPBA-20+Q.DZ(R1),R3 ;IS THIS A LEGAL NUMBER?
7403 017036 101416 BLOS 30$ ;NO -- IGNORE IT -- NOTE THIS SETS C BIT
7404 017040 10$:
7405 017040 005303 DEC R3 ;ATTEMPT TO FIND THE ADDRESS OF THE HEAD OF THE LIST
7406 017042 100402 BMI 20$ ;FOUND IT -- QUIT -- NOTE THIS SHOULD CLEAR C
7407 017044 060502 ADD R5,R2 ;MULTIPLY BY TABLE ENTRY SIZE
7408 017046 000774 BR 10$ ;AND TRY AGAIN
7409 ;
7410 017050 20$:
7411 017050 022626 CMP (SP)+,(SP)+
7412 017052 000241 CLC
7413 017054 25$:
7414 017054 012604 MOV (SP)+,R4
7415 017056 012605 MOV (SP)+,R5 ;RESTORE REGISTERS
7416 017060 005226 INC (SP)+ ;REMOVE THE ENTRY FLAG
7417 017062 103401 BCS 27$
7418 017064 26$:
7419 017064 RETURN ;RETURN TO CALLER
017064 000207 RTS PC
7420 ;
7421 017066 27$:
7422 017066 001776 BEQ 26$
7423 017070 005726 TST (SP)+
7424 017072 000504 BR DEANOD
7425 ;
7426 017074 30$:
7427 017074 012604 MOV (SP)+,R4 ;SET LINE NUMBER
7428 017076 012603 MOV (SP)+,R3 ;SET DEVICE NAME
7429 017100 012701 000017 MOV #BC.SAK,R1 ;SEND ACK
7430 017104 CALL ..STFC ;START FUNCTION
017104 004737 043252' JSR PC,..STFC
7431 017110 000261 SEC ;SET ERROR
7432 017112 000760 BR 25$ ;AND RETURN
7433 ;
7434 .DSABL LSB
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 106
QUEUED PROTOCOL -- LINE NUMBER - CHARACTER
7436 .SBTTL QUEUED PROTOCOL -- LINE NUMBER - CHARACTER
7437
7438 ;
7439 ; LINCHR --LINE NUMBER - CHARACTER -- FUNCTION 4
7440 ;
7441 017114 LINCHR::
7442 017114 010046 MOV R0,-(SP) ;SAVE THE NODE ADDRESS
7443 017116 005046 CLR -(SP)
7444 017120 116416 000005 MOVB E.FN+1(R4),@SP ;SAVE SIZE OF BLOCK
7445 017124 162716 000010 SUB #E.FW,@SP ;SUBTRACT THE SIZE OF THE HEADER
7446 017130 010405 MOV R4,R5 ;SET UP THE POINTER TO THE BUFFER
7447 017132 016404 000006 MOV E.DV(R4),R4 ;FIND THE DEVICE
7448 017136 062705 000010 ADD #E.FW,R5 ;POINT TO THE CHARACTER
7449 017142 4$:
7450 017142 012701 000014 MOV #T.HHDS+4,R1 ;SET UP THE BUFFER SIZE
7451 ;
7452 017146 5$:
7453 017146 CALL ..ALOW ;ALLOCATE A BLOCK
017146 004737 042164' JSR PC,..ALOW
7454 ;
7455 017152 10$:
7456 017152 010002 MOV R0,R2 ;SAVE THE NODE ADDRESS
7457 017154 005722 TST (R2)+ ;MOVE OVER THE THREAD POINTER
7458 017156 010122 MOV R1,(R2)+ ;SET UP THE CHARACTER COUNT
7459 017160 010012 MOV R0,@R2 ;SET UP THE MEMORY ADDRESS
7460 017162 062722 000012 ADD #T.HHDS+2,(R2)+ ;POINT TO THE BUFFER
7461 017166 012722 000001 MOV #1,(R2)+ ;SET UP THE CURRENT COUNT POINTER
7462 017172 005722 TST (R2)+
7463 017174 010401 MOV R4,R1 ;PICK UP THE DEVICE
7464 017176 112503 MOVB (R5)+,R3
7465 017200 112522 MOVB (R5)+,(R2)+ ;STORE THE CHARCTER
7466 017202 000303 SWAB R3 ;SET UP LINE NUMBER FOR FDVNM
7467 017204 CALL FDVNM ;FIND THE DEVICE NUMBER
017204 004737 016772' JSR PC,FDVNM
7468 017210 103410 BCS 30$ ;ILLEGAL LINE NUMBER
7469 017212 CALL @.DQPBA+Q.ST-20(R1) ;START TTY
017212 004771 034644' JSR PC,@.DQPBA+Q.ST-20(R1)
7470 017216 20$:
7471 017216 162716 000002 SUB #2,@SP ;POINT TO THE NEXT CHARACTER
7472 017222 001347 BNE 4$ ;DO AT LEAST ONE MORE
7473 017224 005726 TST (SP)+ ;REMOVE COUNT
7474 017226 012600 MOV (SP)+,R0 ;SET UP TO RETURN NODE
7475 017230 000425 BR DEANOD ;ALL DONE -- RETURN THE NODE
7476 ;
7477 017232 30$:
7478 017232 CALL ..DECN ;DEALLOCAE BUFFER
017232 004737 042006' JSR PC,..DECN
7479 017236 000767 BR 20$ ;AND TRY NEXT BLOCK
7480 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 107
QUEUED PROTOCOL -- RETURN TIME OF DAY
7482 .SBTTL QUEUED PROTOCOL -- RETURN TIME OF DAY
7483
7484 ;
7485 ; RETTOD -- RETURN TIME OF DAY -- FUNCTION 12
7486 ;
7487 017240 RETTOD::
7488 017240 062704 000010 ADD #E.FW,R4 ;MOVE OVER THE HEADER
7489 017244 005724 TST (R4)+ ;MOVE OVER THE VALID BIT AND CHECK IT
7490 017246 001416 BEQ DEANOD ;TIME NOT VALID FORGET IT
7491 ; +++003 REMOVED ONE INSTRUCTION
7492 017250 012703 031244' MOV #.DATE,R3 ;SET UP TO SET DATE
7493 017254 .INH6 ;;;INHIBIT CLOCK INTERRUPTS
017254 013746 177776 MOV @#PS,-(SP)
017260 112737 000300 177776 MOVB #300,@#PS
7494 017266 012423 MOV (R4)+,(R3)+ ;;;SET UP VALIDITY BITS
7495 017270 012423 MOV (R4)+,(R3)+ ;;;SET UP YEAR
7496 017272 012423 MOV (R4)+,(R3)+ ;;;SET UP DAY
7497 ;;;SET UP MON
7498 017274 012423 MOV (R4)+,(R3)+ ;;;SAVE DAYLIGHT SAVINGS TIME INDICATOR (1=DST)
7499 ;;;SET UP DAY OF WEEK
7500 017276 012423 MOV (R4)+,(R3)+ ;;;SET SECONDS SINCE MIDNIGHT
7501 017300 .ENB6 ;ENABLE INTERRUPTS
017300 012637 177776 MOV (SP)+,@#PS
7502 017304 DEANOD:
7503 017304 CALL ..DECN ;DEALLOCATE BUFFER
017304 004737 042006' JSR PC,..DECN
7504 017310 QPRDTF:
7505 017310 000137 014536' JMP QPRDTL ;GO TO NEXT FUNCTION
7506 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 108
QUEUED PROTOCOL -- FLUSH DEVICE OUTPUT QUEUE
7508 .SBTTL QUEUED PROTOCOL -- FLUSH DEVICE OUTPUT QUEUE
7509
7510 ;
7511 ; FLDVOT -- FLUSH OUTPUT FOR THIS DEVICE -- FUNCTION 13
7512 ;
7513 017314 FLDVOT::
7514 017314 CALL FDVNMM ;FIND THE DEVICE POINTER
017314 004737 016756' JSR PC,FDVNMM
7515 017320 010146 MOV R1,-(SP)
7516 017322 CALL @.DQPBA+Q.SP-20(R1) ;STOP DEVICE
017322 004771 034646' JSR PC,@.DQPBA+Q.SP-20(R1)
7517 017326 012601 MOV (SP)+,R1
7518 017330 016100 034640' MOV .DQPBA+Q.DA-20(R1),R0 ;FIND DEVICE TABLE BASE ADDRESS
7519 017334 010205 MOV R2,R5 ;FIND THIS DEVICE ADDRESS
7520 017336 016403 000006 MOV E.DV(R4),R3 ;FIND DEVICE NUMBER
7521 017342 CALL ..SACK ;SEND ACKNOWLEDGEMENT
017342 004737 043166' JSR PC,..SACK
7522 017346 010400 MOV R4,R0 ;SET UP TO RETURN NODE
7523 017350 000755 BR DEANOD ;DEALLOCATE NODE
7524 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 109
QUEUED PROTOCOL -- RECIEVE KLINIK PARAMETERS
7526 .SBTTL QUEUED PROTOCOL -- RECIEVE KLINIK PARAMETERS
7527
7528 ;
7529 ; RCVKLP -- RECIEVE KLINIK PARAMETERS -- FUNCTION 33
7530 ;
7531 017352 RCVKLP::
7532 017352 062704 000012 ADD #E.FW+2,R4 ; +++009 GET OVER THE INDIRECT HEADER
7533 017356 012402 MOV (R4)+,R2 ; +++009 BYTE COUNT TO R2
7534 017360 001422 BEQ 90$ ; +++009 QUIT IF NULL
7535 017362 .INH6 ; +++009 DISALLOW INTERRUPTS
017362 013746 177776 MOV @#PS,-(SP)
017366 112737 000300 177776 MOVB #300,@#PS
7536 017374 006202 ASR R2 ;;; +++009 MAKE A WORD COUNT
7537 017376 012703 031316' MOV #.KLNFT,R3 ;;; +++009 BUFFER POINTER TO R3
7538 017402 042737 010000 031114' BIC #EF.RKP,.COMEF+2 ;;; +++009 CLEAR THE FLAG
7539 017410 10$: ;;; +++009
7540 017410 012423 MOV (R4)+,(R3)+ ;;; +++009 LOAD THE PARAMETERS
7541 017412 077202 SOB R2,10$ ;;; +++009 LOOP TILL DONE
7542 017414 052737 010000 031114' BIS #EF.RKP,.COMEF+2 ;;; +++009 SET THE EVENT FLAG
7543 017422 .ENB6 ;;; +++009 ALLOW INTERRUPTS
017422 012637 177776 MOV (SP)+,@#PS
7544 017426 90$: ; ++009
7545 017426 000726 BR DEANOD ; +++009 DEQUEUE THIS NODE AND EXIT
7546 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 110
QUEUED PROTOCOL -- SENDALL
7548 .SBTTL QUEUED PROTOCOL -- SENDALL
7549
7550 ;
7551 ; SNDALL -- SENDALL SERVICE -- FUNCTION 14
7552 ;
7553
7554 017430 SNDALL::
7555 017430 CALL .SNDAL ;DO SENDALL
017430 004737 017436' JSR PC,.SNDAL
7556 017434 000725 BR QPRDTF ;AND RETURN
7557 ;
7558 ;
7559 ; .SNDAL -- SUBROUTINE TO DO A SENDALL
7560 ;
7561 ; CALLING SEQUENCE
7562 ;
7563 ; R0 & R4 -- POINTER TO BUFFER TO BE SENT (QUEUED PROTOCOL FORMAT)
7564 ;
7565 ; REGISTERS ALTERED
7566 ;
7567 ; R0,R1,R2,R3,R5
7568 ;
7569 ; THE SENDALL MESSAGES AND COUNTS ARE MAINTINED IN PARALLEL RING BUFFERS
7570 ; IN ".SNDBF" AND ".SNDCN" (Q.V.). ".SNDLP" POINTS THE THE NEXT FREE LOGICAL
7571 ; NODE IN THE SENDALL RING. EACH ENTRY IN THE DATA LINE SCANNER TABLE HAS
7572 ; AS SENDALL INDEX BYTE IN "STSW1" ("TT.SND") WHICH POINTS TO THE LAST NODE
7573 ; PROCESSED SENDALL RING. THE QUEUED PROTOCOL BUFFER IS DEALLOCATEED BY THE
7574 ; TERMINAL DRIVER WHEN THE LAST TERMINAL HAS PROCESSED THAT NODE.
7575 ;
7576 ; A SENDALL IS DEEMED TO BE PENDING FOR A LINE IF ITS SENDALL INDEX IS
7577 ; DIFFERENT FROM THAT IN ".SNDLP". THE SENDALL WILL BE INITIATED AT "..STTY"
7578 ; IF THE LINE IS IDLE, OR AT "STTYDN" IF THE LINE HAS ACTIVE OUTPUT.
7579 ;
7580 ; IN ORDER TO PREVENT PROBLEMS ASSOCIATED WITH LARGE SENDALLS (A LARGE
7581 ; SENDALL IS DEFINED AS ONE WHICH WILL FILL THE SENDALL RING), THE RING IS
7582 ; ACTUALLY MANAGED AS A CIRCULAR LIST, WITH A GUARANTEED NULL ENTRY IN THE
7583 ; LIST AT ALL TIMES. SHOULD A REQUEST BE MADE TO FILL AN EMPTY NODE IN THE
7584 ; RING WITHOUT THE FOLLOWING NODE BEING EMPTY, THAT MODE WILL NOT BE FILLED
7585 ; UNTIL THE FOLLOWING NODE BECOMES EMPTY (NULL). IN EFFECT, THE SENDALL
7586 ; PROCESS IS DRIVEN BY THE SLOWEST TERMINAL(S) IN THE DATA LINE SCANNER.
7587 ;
7588
7589 017436 .SNDAL:: ; +++006
7590 017436 010004 MOV R0,R4 ; +++006 COPY SENDALL POINTER
7591 017440 022020 CMP (R0)+,(R0)+ ; +++006 GET OVER LISTHEAD
7592 017442 010010 MOV R0,(R0) ; +++006 SET UP CURRENT ADDRESS POINTER
7593 017444 062720 000006 ADD #6,(R0)+ ; +++006 CORRECT BUFFER POINTER
7594 017450 116010 000003 MOVB 3(R0),(R0) ; +++006 MOVE THE BYTE COUNT
7595 017454 10$: ; +++006
7596 017454 .INH6 ; +++006 DISALLOW INTERRUPTS
017454 013746 177776 MOV @#PS,-(SP)
017460 112737 000300 177776 MOVB #300,@#PS
7597 017466 013701 031636' MOV .SNDLP,R1 ;;; +++006 FIND THE CURRENT POINTER FOR SENDALL
7598 017472 010102 MOV R1,R2 ;;; +++006 COPY IT TO R2
7599 017474 006301 ASL R1 ;;; +++006 MAKE RING WORD INDEX
7600 017476 005202 INC R2 ;;; +++006 UPDATE THE POINTER TO NEXT NODE
7601 017500 042702 177774 BIC #^C3,R2 ;;; +++006 MODULO 4
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 110-1
QUEUED PROTOCOL -- SENDALL
7602 017504 006302 ASL R2 ;;; +++014 MAKE A WORD INDEX OF IT
7603 017506 005762 031640' TST .SNDBF(R2) ;;; +++014 HAVE WE WRAPPED AROUND??
7604 017512 001131 BNE 60$ ;;; +++014 YES -- WAIT FOR IT TO DIE OUT
7605 017514 006202 ASR R2 ;;; +++014 NO -- RESET INDEX
7606 017516 010237 031636' MOV R2,.SNDLP ;;; +++006 SET THE POINTER TO THE NEXT RING BUFFER
7607 017522 013761 034736' 031650' MOV .DQDH0+Q.DZ,.SNDCN(R1) ;;; +++006 SET UP THE TTY COUNT
7608 017530 001402 BEQ 15$ ;;; +++006 GO ON IF NO DH'S
7609 017532 010461 031640' MOV R4,.SNDBF(R1) ;;; +++006 SET PACKET IN THE CURRENT RING BUFFER
7610 017536 15$:
7611 017536 .ENB6 ;;; +++006 ENABLE INTERRUPTS
017536 012637 177776 MOV (SP)+,@#PS
7612 ; +++003 REMOVED ONE INSTRUCTION
7613 017542 012702 035126' MOV #DLTBL,R2 ; +++003 DO THE DL11C AND DL11ES
7614 017546 20$:
7615 017546 020237 031222' CMP R2,KLNPTR ; +++003 IS THIS THE KLINIK LINE??
7616 017552 001003 BNE 25$ ; +++003 NO -- GO ON
7617 017554 105737 031342' TSTB .KLNSW+0 ; +++003 YES -- IS IT ACTIVE AS USER CONSOLE??
7618 017560 002024 BGE 30$ ; +++003 NO -- FORGET IT
7619 017562 25$:
7620 017562 005762 000002 TST TTYEXP(R2) ; +++003 IS IT HERE??
7621 017566 001421 BEQ 30$ ; +++003 NO -- FORGET IT
7622 017570 032762 004000 000006 BIT #TT.NSA,STSW1(R2) ; +++003 SUPPRESS SENDALLS??
7623 017576 001015 BNE 30$ ; +++003 YES -- SO DO IT
7624 017600 .INH6 ; +++003 NO -- INHIBIT INTERRUPTS
017600 013746 177776 MOV @#PS,-(SP)
017604 112737 000300 177776 MOVB #300,@#PS
7625 017612 010246 MOV R2,-(SP) ;;; +++006 SAVE R2 FROM COPBUF
7626 017614 CALL COPBUF ;;; +++003 COPY THE BUFFER
017614 004737 020054' JSR PC,COPBUF
7627 017620 012602 MOV (SP)+,R2 ;;; +++006 RESTORE R2
7628 017622 CALL ..STTY ;;; +++003 START THE LINE UP
017622 004737 042204' JSR PC,..STTY
7629 017626 .ENB6 ;;; +++003 ENABLE INTERRUPTS
017626 012637 177776 MOV (SP)+,@#PS
7630 017632 30$:
7631 017632 062702 000010 ADD #^D8,R2 ; +++003 POINT TO THE NEXT LINE
7632 017636 022702 035176' CMP #DHTBL,R2 ; +++003 IS IT A DL11??
7633 017642 101341 BHI 20$ ; +++003 YES -- DO THIS LINE
7634 017644 010400 MOV R4,R0 ;SET UP POINTER TO TTY BUFFER FOR "..STTY"
7635 017646 010037 031660' MOV R0,.CRSND ;SET THAT THIS IS CURRENT SENDALL
7636 017652 35$:
7637 017652 .INH6 ; DISALLOW INTERRUPTS
017652 013746 177776 MOV @#PS,-(SP)
017656 112737 000300 177776 MOVB #300,@#PS
7638 017664 005737 034736' TST .DQDH0+Q.DZ ;;;DH'S EXIST?
7639 017670 001005 BNE 45$ ;;; YES -- GO ON
7640 017672 CALL ..DECN ;;; NO -- DEALOCATE THE NODE
017672 004737 042006' JSR PC,..DECN
7641 017676 .ENB6 ;;; ALLOW INTERRUPTS
017676 012637 177776 MOV (SP)+,@#PS
7642 017702 000430 BR 55$ ; AND GO AWAY
7643 ;
7644 017704 45$:
7645 017704 032762 000001 000006 BIT #TT.OUT,STSW1(R2) ;;; +++010 ANY KIND OF OUTPUT PENDING??
7646 017712 001015 BNE 50$ ;;; +++010 YES -- DON'T RESTART
7647 017714 032762 004010 000006 BIT #TT.NSA!TT.ABW,STSW1(R2) ;;; +++010 NO -- IGNORE SENDALL OR AUTO-BAUD WAIT??
7648 017722 001033 BNE 70$ ;;; +++010 YES -- DON'T START THIS LINE BUT ACCOUNT FOR IT
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 110-2
QUEUED PROTOCOL -- SENDALL
7649 017724 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;; +++010 NO -- IS THIS A CTY??
7650 017732 001403 BEQ 46$ ;;; +++010 NO -- GO ON
7651 017734 005737 031216' TST .TTP11 ;;; +++010 YES -- IN -11 I/O WAIT??
7652 017740 001002 BNE 50$ ;;; +++010 YES -- DON'T RESTART
7653 017742 46$:
7654 017742 CALL ..STTY ;;; +++010 NO-- START SENDALL FOR THIS TTY
017742 004737 042204' JSR PC,..STTY
7655 017746 50$:
7656 017746 .ENB6 ;;;ENABLE INTERRUPTS
017746 012637 177776 MOV (SP)+,@#PS
7657 017752 062702 000010 ADD #8.,R2 ;LOOK AT THE NEXT DH
7658 017756 005762 000002 TST TTYEXP(R2) ;END OF LIST
7659 017762 001333 BNE 35$ ;NO TRY NEXT LINE
7660 017764 55$:
7661 017764 005037 031660' CLR .CRSND ;CLEAR CURRENT SENDALL POINTER
7662 017770 005037 020116' CLR TTUNT ;CLEAR ALREADY SENT ERROR FLAG
7663 017774 RETURN ;RETURN TO CALLER
017774 000207 RTS PC
7664 017776 60$:
7665 017776 .ENB6 ;;;ENABLE INTERRUPTS
017776 012637 177776 MOV (SP)+,@#PS
7666 020002 WSIG$S ;WAIT FOR NEXT SIGNIFICANT EVENT
020002 012746 MOV (PC)+,-(SP)
020004 061 001 .BYTE 49.,1
020006 104375 EMT 375
7667 020010 000621 BR 10$ ; AND TRY AGAIN
7668 ;
7695
7696 020012 70$: ;;; +002 HERE TO PRETEND WE DID SENDALL ON LINE
7697 020012 013701 031636' MOV .SNDLP,R1 ;;; +002 GET POINTER TO CURRENT SENDALL + 1
7698 020016 005301 DEC R1 ;;; +002 MAKE IT POINTER TO CURRENT
7699 020020 042701 177774 BIC #177774,R1 ;;; +002 WE ONLY WANT TWO BITS
7700 020024 006301 ASL R1 ;;; +002 MAKE IT INTO A WORD INDEX
7701 020026 005361 031650' DEC .SNDCN(R1) ;;; +002 DECREMENT COUNT OF SENDALLS SENT
7702 020032 001004 BNE 75$ ;;; +002 IF SOME LEFT, DON'T FREE MESSAGE
7703 020034 005061 031640' CLR .SNDBF(R1) ;;; +002 INDICATE NONEXISTANT
7704 020040 CALL ..DECN ;;; +002 DEALLOCATE THE NODE
020040 004737 042006' JSR PC,..DECN
7705 020044 75$: ;;; +002 HERE TO FINISH DUMMY SENDALL
7706 020044 062762 040000 000006 ADD #TT.SNI,STSW1(R2);;; +002 BUMP INDEX TO NEXT SENDALL
7707 020052 000735 BR 50$ ;;; +002 AND DO THE NEXT LINE
7708 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 111
QUEUED PROTOCOL -- COPY BUFFER
7710 .SBTTL QUEUED PROTOCOL -- COPY BUFFER
7711
7712 ;
7713 ; COPBUF -- ROUTINE TO COPY A TTY BUFFER AND CORRECT THE
7714 ; ADDRESS OF THE BUFFER IN THE CURRENT ADDRESS POINTER
7715 ;
7716 ; CALLING SEQUENCE:
7717 ;
7718 ; R4 -- ADDRESS OF BUFFER TO BE COPIED
7719 ;
7720 ; CALL COPBUB
7721 ;
7722 ; EXIT CONDITIONS:
7723 ;
7724 ; R0 -- NEW BUFFER ADDRESS
7725 ;
7726 ; REGISTERS ALTERED:
7727 ;
7728 ; R1,R2,R5
7729 ;
7730 020054 COPBUF::
7731 020054 016401 000002 MOV 2(R4),R1 ;SET UP THE BUFFER SIZE
7732 020060 CALL ..ALOW ;ALLOCATE A BUFFER
020060 004737 042164' JSR PC,..ALOW
7733 ;
7734 020064 10$:
7735 020064 010405 MOV R4,R5 ;SAVE R5 BUFFER POINTER
7736 020066 010002 MOV R0,R2 ;SAVE TTY BUFFER POINTER
7737 020070 006201 ASR R1 ;MAKE WORD INDEX
7738 020072 20$:
7739 020072 012522 MOV (R5)+,(R2)+ ;COPY THE BUFFER
7740 020074 077102 SOB R1,20$ ;COPY UNTIL FINISHED
7741 020076 010060 000004 MOV R0,T.HCAD(R0) ;SET THE CURRENT ADDRESS
7742 020102 062760 000012 000004 ADD #T.HHDS+2,T.HCAD(R0) ;CORRECT IT TO POINT TO BUFFER
7743 020110 RETURN
020110 000207 RTS PC
7744 ;
7745 020112 TTLGE:
7746 020112 000014 .WORD 14
7747 020114 001100 .WORD DV.LOG!DV.HNG ;DEVICE HUNG
7748 020116 TTUNT:
7749 .BLKW 4
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 112
DTE20 DRIVER -- DTE20 INTERRUPT SERVICE
7751 .SBTTL DTE20 DRIVER -- DTE20 INTERRUPT SERVICE
7752
7753 020126 .DTINT::
7754 020126 010046 MOV R0,-(SP) ;SAVE REGISTERS
7755 020130 010146 MOV R1,-(SP)
7756 020132 010246 MOV R2,-(SP)
7757 020134 010346 MOV R3,-(SP)
7758 020136 010446 MOV R4,-(SP)
7759 020140 010546 MOV R5,-(SP)
7760 020142 INTLPS:
7761 020142 013700 031356' MOV .PRDTE,R0 ;SET UP POINTER TO THIS PROCESSOR NUMBER
7762 020146 013703 031352' MOV .PRADR,R3 ;ADDRESS OF COMM TABLE OFFSETS
7763 020152 032777 121000 011174 BIT #TO10DN!TO10ER!MPE11,@.PRSTA ;TO 10 DONE OR ERROR?
7764 020160 001026 BNE TOTNDN ;YES -- GO CHECK IT OUT
7765 020162 132777 000202 011164 BITB #TO11DN!TO11ER,@.PRSTA ;TO 11 DONE OR ERROR?
7766 020170 001402 BEQ 4$ ;NO -- GO ON
7767 020172 000137 020656' JMP TOELDN ;YES -- SEE WHAT IS NEXT FOR 11
7768 ;
7769 020176 4$:
7770 020176 032777 004000 011150 BIT #TO11DB,@.PRSTA ;NO -- CHECK FOR DOORBELL INTERRUPT
7774 020204 001404 BEQ DTEXIT ; +++008 NONE -- DISMISS INTERRUPT
7776 020206 005237 031360' INC .PRDCT ; +001 ONE MORE DOORBELL RECIEVED...
7777 020212 000137 021364' JMP DBLRNG ;YES -- GO DO DOORBELL STUFF
7778 ;
7789 020216 DTEXIT:
7790 020216 012605 MOV (SP)+,R5 ;RESTORE REGISTERS
7791 020220 012604 MOV (SP)+,R4
7792 020222 012603 MOV (SP)+,R3
7793 020224 012602 MOV (SP)+,R2
7794 020226 012601 MOV (SP)+,R1
7795 020230 012600 MOV (SP)+,R0
7796 020232 000137 004146' JMP @#..INTX ;GO TO INTERRUPT EXIT
7797 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 113
DTE20 DRIVER -- TO TEN DONE SERVICE
7799 .SBTTL DTE20 DRIVER -- TO TEN DONE SERVICE
7800
7801 ;
7802 ; TO TEN DONE INTERRUPT SERVICE
7803 ;
7804 020236 TOTNDN:
7805 020236 100403 BMI 10$ ;DONE?
7806 020240 .CRASH TET ;NO -- MUST BE EITHER MEMORY PARITY OR TO10ER
020240 000004 IOT
020242 124 105 124 .ASCIZ /TET/
020245 000
7807
7808 020246 10$:
7810 020246 013704 031730' MOV TO10SZ,R4
7811 020252 063704 031732' ADD TO10AS,R4
7812 020256 020460 000020 CMP R4,T10AD(R0)
7813 020262 001403 BEQ 13$
7814 020264 .CRASH DTF
020264 000004 IOT
020266 104 124 106 .ASCIZ /DTF/
020271 000
7815 020272 13$:
7816 020272 012737 000001 031732' MOV #1,TO10AS ;SET NO XFER EXPECTED
7818 020300 012777 040000 011046 MOV #DON10C,@.PRSTA ;CLEAR DONE FLAGS
7819 020306 013704 031742' MOV TO10Q,R4 ;START NEXT ENTRY IF THERE IS ONE
7820 020312 005764 000012 TST 12(R4) ;CHECK FOR INDIRECT FUNCTION
7821 020316 100433 BMI INDTTF ;YES -- START THE FUNCTIIN
7822 020320 001011 BNE 15$ ;NO -- IF NE THEN NORMAL FUNCTION
7823 020322 053777 031700' 011352 BIS DTEMSK,@DTEADR ;NOT -- FINISH INDIRECT FUNCTION
7824 020330 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;DECLARE SIG EVENT
7825 020336 042737 000006 031736' BIC #TOIP!TOBM,STSTT+2 ;CLEAR INDIRECT IN PROGRESS
7826 020344 15$:
7827 020344 CALL ..NDEL
020344 004737 041306' JSR PC,..NDEL
7828 020350 010046 MOV R0,-(SP) ;SAVE R0 -- CPU NUMBER
7829 020352 016401 000004 MOV 4(R4),R1 ;FIND THE SIZE OF THIS ENTRY
7830 020356 010400 MOV R4,R0 ;SET THE NODE ADDRESS
7831 020360 CALL ..DECB ;DEALLOCATE
020360 004737 042012' JSR PC,..DECB
7832 020364 012600 MOV (SP)+,R0 ;RESTORE THE CPU NUMBER
7833 020366 013704 031742' MOV TO10Q,R4 ;FIND THE LISTHEAD AGAIN
7834 020372 022704 031742' CMP #TO10Q,R4 ;IS THERE ANOTHER ONE TO DO
7835 020376 001661 BEQ INTLPS
7836 020400 CALL STNTQ ;START NEXT TEN QUEUE
020400 004737 022166' JSR PC,STNTQ
7837 020404 20$:
7838 020404 000656 BR INTLPS ;CHECK THE OTHER CONDITIONS NOW
7839 ;
7840 020406 INDTTF:
7841 020406 005064 000012 CLR 12(R4) ;SET INDICATOR TO INDICATE THAT THIS WAS INDIRECT
7842 020412 005060 000006 CLR DXWD1(R0) ;DEPOSIT THE WORD COUNT
7843 020416 005060 000004 CLR DXWD2(R0)
7844 020422 005005 CLR R5
7845 020424 156405 000020 BISB 20(R4),R5 ;SET THE COUNT
7846 020430 010560 000002 MOV R5,DXWD3(R0)
7848 020434 016437 000022 031732' MOV 22(R4),TO10AS
7849 020442 010537 031730' MOV R5,TO10SZ
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 113-1
DTE20 DRIVER -- TO TEN DONE SERVICE
7851 020446 016460 000022 000020 MOV 22(R4),T10AD(R0) ;SET THE TO 10 ADDRESS
7852 020454 012705 000003 MOV #QSIZE-FORPRO,R5 ;DEPOSIT THE SIZE IN 10 MEMORY
7853 020460 066305 000004 ADD DMYN(R3),R5 ;GET OFFSET
7854 020464 012760 010000 000010 MOV #DEP,TNAD1(R0) ;SET DEPOSIT
7855 020472 010560 000012 MOV R5,TNAD2(R0) ;START XFER
7856 020476 CALL WFED ;WAIT FOR DEPOSIT
020476 004737 044012' JSR PC,WFED
7857 020502 052737 000006 031736' BIS #TOIP!TOBM,STSTT+2 ;SET INDIRECT IN PROGRESS FLAG
7858 020510 005060 000036 CLR DAG3(R0)
7859 020514 013760 031734' 000006 MOV STSTT,DXWD1(R0) ;SET IN 10 MEMORY
7860 020522 013760 031736' 000004 MOV STSTT+2,DXWD2(R0)
7861 020530 013760 031740' 000002 MOV STSTT+4,DXWD3(R0)
7862 020536 062760 177777 000012 ADD #STATUS-QSIZE,TNAD2(R0) ;DEPOSIT IN 10 MEMORY
7863 020544 CALL WFED ;WAIT FOR DEPOSIT
020544 004737 044012' JSR PC,WFED
7864 020550 016437 000024 031700' MOV 24(R4),DTEMSK ;GET READY TO SET EVENT FLAG FOR INDIRECT
7865 020556 016437 000026 031702' MOV 26(R4),DTEADR
7866 020564 012777 000400 010562 MOV #TO10DB,@.PRSTA
7867 020572 000427 BR SETDNE
7868 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 114
DTE20 DRIVER -- TO ELEVEN DONE SERVICE
7870 .SBTTL DTE20 DRIVER -- TO ELEVEN DONE SERVICE
7871
7872 ;
7873 ; TO ELEVEN DONE SERVICE
7874 ;
7875 020574 TOITDN:
7876 020574 042737 000001 031736' BIC #TOIT,STSTT+2 ;CKEAR PROCESSING QUEUE STATUS
7877 020602 STTOIP:
7878 020602 012702 000002 MOV #STATUS-FORPRO,R2 ;YES -- BETTER INDICATE THAT 11 IS FINISHED
7879 020606 066302 000004 ADD DMYN(R3),R2 ;POINT TO STATUS WORD
7880 020612 012760 010000 000010 MOV #DEP,TNAD1(R0) ;INDICATE WRITE
7881 020620 013760 031734' 000006 MOV STSTT,DXWD1(R0) ;SET UP TO DEPOSIT
7882 020626 013760 031736' 000004 MOV STSTT+2,DXWD2(R0)
7883 020634 013760 031740' 000002 MOV STSTT+4,DXWD3(R0)
7884 020642 010260 000012 MOV R2,TNAD2(R0) ;START XFER
7885 020646 CALL WFED ;WAIT FODEPOSIT
020646 004737 044012' JSR PC,WFED
7886 020652 SETDNE:
7887 020652 000137 020142' JMP INTLPS
7888 ;
7889 020656 TOELDN:
7890 020656 100403 BMI 10$ ;ERROR?
7891 020660 5$:
7892 020660 .CRASH ETE ;YES -- TO ELEVEN ERROR FLAG UP
020660 000004 IOT
020662 105 124 105 .ASCIZ /ETE/
020665 000
7893
7894 020666 10$:
7896 020666 013701 031726' MOV TO11BS,R1
7897 020672 052701 170000 BIS #170000,R1
7898 020676 005401 NEG R1
7899 020700 032737 020000 031726' BIT #TO11BM,TO11BS
7900 020706 001001 BNE 6$
7901 020710 006301 ASL R1
7902 020712 6$:
7903 020712 063701 031724' ADD TO11AS,R1
7904 020716 020160 000022 CMP R1,T11AD(R0)
7905 020722 001406 BEQ 7$
7906 020724 016027 000022 MOV T11AD(R0),(PC)+
7907 020730 000000 .WORD 0
7908 020732 .CRASH DTB
020732 000004 IOT
020734 104 124 102 .ASCIZ /DTB/
020737 000
7909 020740 7$:
7911 020740 000337 031710' SWAB TO11FN ;CHECK FOR INDIRECT FUNCTION
7912 020744 012777 000100 010402 MOV #DON11C,@.PRSTA ;CLEAR DONE FLAGS
7913
7914 .ENABL LSB
7915
7916 020752 005737 031710' TST TO11FN ;SET IN THE CORRECT ORDER
7917 020756 001061 BNE 40$ ;YES -- BETTER QUEUE IT
7918 020760 8$:
7919 020760 013701 031704' MOV TO11NP,R1 ;ENTER THE NODE IN THE QUEUE
7920 020764 012704 031750' MOV #TO11Q,R4 ;FIND THE LISTHEAD
7921 020770 005037 031722' CLR TO11QP ; +++004 CLEAR THE ENTRY COUNT
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 114-1
DTE20 DRIVER -- TO ELEVEN DONE SERVICE
7922 020774 9$:
7923 020774 010402 MOV R4,R2 ;SAVE THE CURRENT POINTER
7924 020776 005237 031722' INC TO11QP ; +++004 INCREMENT THE ENTRY COUNT
7925 021002 011404 MOV @R4,R4 ;LOOK FOR THE NEXT ENTRY
7926 021004 001373 BNE 9$ ;FOUND ONE -- TRY AGAIN
7927 021006 005011 CLR @R1 ;CLEAR THE THREAD WORD
7928 021010 010112 MOV R1,@R2 ;STORE THIS NODE AS THE LAST ONE
7929 021012 022737 000012 031722' CMP #12,TO11QP
7930 021020 101002 BHI 10$
7931 021022 012710 020000 MOV #20000,@R0 ;STOP DTE! (THE HARD WAY!)
7932 021026 10$:
7933 021026 STEIF:
7934 021026 052737 000100 032576' BIS #EF.TED,DTETSK+A.EF ;SET TENDONE EVENT FLAG
7935 021034 152737 000001 031116' BISB #EV.SE,.SERFG+0
7936 021042 005737 031746' TST EQSZ ;ANY MORE TO XFER?
7937 021046 001652 BEQ TOITDN ;NO -- SET DONE TO 10
7938 021050 STQUE:
7939 021050 005001 CLR R1 ;ASSUME NO 10 INTERRUPT WANTED
7940 021052 162737 000012 031746' SUB #10.,EQSZ ;SUBTRACT THE SIZE OFTHE HEADER
7941 021060 001002 BNE 5$ ;DON'T SET TO INTERRUPT 10
7942 021062 052701 100000 BIS #IFLOP,R1 ;COUNT GOING TO ZERO THIS TIME INTERRUPT 10
7943 021066 5$:
7945 021066 012737 031706' 031724' MOV #TO11HD,TO11AS ;SAVE ADDRESS
7947 021074 012760 031706' 000022 MOV #TO11HD,T11AD(R0) ;SET UP THE CURRENT ADDRESS
7948 021102 052701 027766 BIS #-10.&7777+TO11BM,R1
7949 021106 010160 000016 MOV R1,T11BC(R0) ;START XFER
7951 021112 010137 031726' MOV R1,TO11BS ;SAVE COUNT
7953
7954 021116 30$:
7955 021116 000137 020142' JMP INTLPS ;GO WORK ON THE NEXT THING
7956 ;
7957 021122 40$:
7958 021122 000337 031706' SWAB TO11HD ;SWAP BYTES TO CORRECT DIRECTION
7959 021126 000337 031712' SWAB TO11DV
7960 021132 010005 MOV R0,R5 ;SAVE THE CPU NIMBER -ALSO RESTART HERE IF ALL FAIL
7961 021134 022737 000010 031712' CMP #.DQPSZ,TO11DV ;LEGAL DEVICE?
7962 021142 103003 BHIS 42$ ;YES -- ALL OK
7963 021144 .CRASH PT1 ;NO -- PROTOCOL BROKEN
021144 000004 IOT
021146 120 124 061 .ASCIZ /PT1/
021151 000
7964 021152 42$:
7965 021152 005737 031710' TST TO11FN ;INDIRECT FUNCTION?
7966 021156 100471 BMI 44$ ;YES -- GET OUT AND WAIT FOR REST
7967 021160 123727 031710' 000034 CMPB TO11FN,#BC.FNM ;FUNCTION MAX?
7968 021166 103403 BLO 46$ ;YES -- ALL OK HERE
7969 021170 .CRASH PT2 ;NO -- PROTOCOL BROKEN
021170 000004 IOT
021172 120 124 062 .ASCIZ /PT2/
021175 000
7970 021176 46$:
7971 021176 013701 031706' MOV TO11HD,R1 ;SET THE NODE SIZE
7972 021202 122121 CMPB (R1)+,(R1)+ ;ADD 2 BYTES
7973 021204 CALL ..ALCB ;ALLOCATE A BLOCK
021204 004737 041642' JSR PC,..ALCB
7974 021210 103003 BCC 50$ ;GOT IT ALL OK
7975 021212 .CRASH BF1
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 114-2
DTE20 DRIVER -- TO ELEVEN DONE SERVICE
021212 000004 IOT
021214 102 106 061 .ASCIZ /BF1/
021217 000
7976
7977 021220 50$:
7978 021220 010037 031704' MOV R0,TO11NP ;SET THE NODE POINTER
7979 021224 005720 TST (R0)+ ;MOVE OVER THREAD WORD
7980 021226 010120 MOV R1,(R0)+ ;STORE THE NODE SIZE
7981 021230 113720 031710' MOVB TO11FN,(R0)+ ;SAVE THE FUNCTION
7982 021234 113720 031706' MOVB TO11HD,(R0)+ ;SAVE SIZE
7983 021240 013720 031712' MOV TO11DV,(R0)+ ;SAVE THE DEVICE
7984 021244 013720 031716' MOV TO11FW,(R0)+ ;SAVE THE FIRST FUNCTION WORD
7985 021250 010065 000022 MOV R0,T11AD(R5) ;SET UP XFER ADDRESS JUST IN CASE
7987 021254 010037 031724' MOV R0,TO11AS ;SAVE ADDRESS
7989 021260 012702 020000 MOV #TO11BM,R2 ;SET UP BYTE MODE MASK
7990 021264 013701 031706' MOV TO11HD,R1 ;FIND THE HEADER
7991 021270 162701 000012 SUB #10.,R1 ;ANY MORE HERE?
7992 021274 001416 BEQ 67$ ;NO -- JUST QUIT AND QUEUE IT
7993 021276 160137 031746' SUB R1,EQSZ ;YES -- ACCOUNT FOR ITS SIZE
7994 021302 001002 BNE 65$ ;SET INTERRUPT BOTH IF ZERO'S COUNT
7995 021304 052702 100000 BIS #IFLOP,R2 ;SET IFLOP
7996 021310 65$:
7997 021310 005401 NEG R1 ;SET UP BYTE COUNTER
7998 021312 042701 170000 BIC #170000,R1 ;MASK TO 0-11
7999 021316 050102 BIS R1,R2 ;SET UP FOR BYTE POINTER
8000 021320 010265 000016 MOV R2,T11BC(R5) ;SET BYTE COUNT AND START
8002 021324 010237 031726' MOV R2,TO11BS
8004 021330 000404 BR 44$ ;WAIT FOR XFER
8005 ;
8006 021332 67$:
8007 021332 005037 031710' CLR TO11FN ;INDICATE NO FUNCTION IN PROGRESS
8008 021336 39$:
8009 021336 010500 MOV R5,R0 ;RESTORE R0
8010 021340 000607 BR 8$ ;AND TRY NEXT
8011 ;
8012 021342 44$:
8013 021342 010500 MOV R5,R0
8014 021344 005737 031710' TST TO11FN ;IS IT INDIRECT?
8015 021350 100002 BPL 45$
8016 021352 000137 020574' JMP TOITDN
8017 ;
8018 021356 45$:
8019 021356 005037 031710' CLR TO11FN ;CLEAR FUNCTION INDICATOR TO START Q MECHANISM
8020 021362 000655 BR 30$
8021 ;
8022 .DSABL LSB
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 115
DTE20 DRIVER -- DOORBELL SERVICE
8024 .SBTTL DTE20 DRIVER -- DOORBELL SERVICE
8025
8026 ;
8027 ; DOOR BELL INTERRUPT SERVICE
8028 ;
8029 021364 DBLRNG:
8030 021364 005060 000010 CLR TNAD1(R0) ;READ STATUS WORD
8031 021370 012702 000002 MOV #STATUS-FORPRO,R2 ;FIND THE ADDRESS OF HIS STATUS-TO ME
8032 021374 066302 000010 ADD EHSM(R3),R2
8033 021400 010260 000012 MOV R2,TNAD2(R0) ;READ THAT STATUS WORD
8034 021404 CALL WFED ;WAIT FOR EXAMINE
021404 004737 044012' JSR PC,WFED
8035 021410 103420 BCS 10$
8036 021412 016037 000006 031752' MOV DXWD1(R0),STATI ;SAVE STATUS
8037 021420 016037 000004 031754' MOV DXWD2(R0),STATI+2
8038 021426 016037 000002 031756' MOV DXWD3(R0),STATI+4
8039 021434 005737 031752' TST STATI ;VALID EXAMINE?
8040 021440 001006 BNE DBLSTS ;MUST BE SET IF WORD IS NON-ZERO
8041 021442 CALL ..DTSP ;GOOD-BYE PRIMARY PROTOCOL AND
021442 004737 044300' JSR PC,..DTSP
8042 021446 CALL ..DTP2 ;HELLO SECONDARY PROTOCOL.
021446 004737 044316' JSR PC,..DTP2
8043 021452 10$:
8044 021452 DBLXIT: ; +++012
8045 021452 000137 020216' JMP DTEXIT ;RETURN
8046 ;
8047 021456 DBLSTS:
8048 021456 032737 000016 031752' BIT #16,STATI ;DISASTER?(POWER FAIL/RELOAD)
8049 021464 001431 BEQ 10$ ;NO -- ALL OK
8050 021466 032737 000004 031752' BIT #LOAD11,STATI ;LOAD THE 10 REQUEST?
8051 021474 001013 BNE 5$ ;YES -- BETTER RELOAD HIM
8052 021476 032737 000010 031752' BIT #KLPWRF,STATI ; +++012 KL POWERFAIL??
8053 021504 001404 BEQ 1$ ; +++012 NO -- DIE...
8054 021506 052737 004000 031114' BIS #EF.PFR,.COMEF+2 ; +++012 YES -- NOTE THAT WE EXPECT IT
8055 021514 000756 BR DBLXIT ; +++012 AND RETURN THROUGH "DTEXIT"
8056 ; ; +++012 IN ANTICIPATION OF OUR POWERFAIL
8057 021516 1$: ; +++012
8058 021516 .CRASH UIE ;UNIMPLEMENTED FUNCTION
021516 000004 IOT
021520 125 111 105 .ASCIZ /UIE/
021523 000
8059 ;
8060 021524 5$:
8061 021524 052737 000040 031234' BIS #KS.TRR,.KLITK ;REQUEST RE-BOOT
8062 021532 105237 031230' INCB .NOERR ;SIGNAL ERROR BEING SERVED
8063 021536 CALL ..DTSP ;TURN OFF ALL PROTOCOLS
021536 004737 044300' JSR PC,..DTSP
8064 021542 105237 031232' INCB .TKTN ;REQUEST DIAGNOSIS
8065 021546 000501 BR 35$ ;AND CLEAR FLAGS
8066 ;
8067 021550 10$:
8068 021550 032737 000002 031754' BIT #TOIP,STATI+2 ;INDIRECT IN PROGRESS
8069 021556 001505 BEQ 30$ ;NO -- MUST BE NORMAL
8070 021560 005737 031710' TST TO11FN ;TO ELEVEN FUNCTION?
8071 021564 100403 BMI 20$ ;YES -- ALL OK
8072 021566 .CRASH PT3 ;OOPS PROTOCOL BROKEN
021566 000004 IOT
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 115-1
DTE20 DRIVER -- DOORBELL SERVICE
021570 120 124 063 .ASCIZ /PT3/
021573 000
8073
8074 021574 20$:
8075 021574 062760 000001 000012 ADD #QSIZE-STATUS,TNAD2(R0) ;READ THE STATUS WORD
8076 021602 CALL WFED ;WAIT FOR EXAMINE
021602 004737 044012' JSR PC,WFED
8077 021606 103461 BCS 35$
8078 021610 016001 000002 MOV DXWD3(R0),R1 ;START TRANSFER
8079 021614 010002 MOV R0,R2 ;SAVE DTE20 ADDRESS
8080 021616 062701 000012 ADD #12,R1 ;INCLUDE 12 BYTE HEADER
8081 021622 CALL ..ALCB ;ALLOCATE A BUFFER
021622 004737 041642' JSR PC,..ALCB
8082 021626 103003 BCC 99$ ;NO BUFFER OVERFLOW ALL OK
8083 021630 .CRASH BO2
021630 000004 IOT
021632 102 117 062 .ASCIZ /BO2/
021635 000
8084
8085 021636 99$:
8086 021636 010037 031704' MOV R0,TO11NP ;SAVE THE NODE POINTER
8087 021642 005720 TST (R0)+ ;STORE SOME STUFF IN IT
8088 021644 010120 MOV R1,(R0)+ ;SAVE THE BYTE COUNT OF THE BUFFER
8089 021646 113720 031710' MOVB TO11FN,(R0)+ ;SAVBE THE FUNCTION CODE
8090 021652 113720 031706' MOVB TO11HD,(R0)+
8091 021656 013720 031712' MOV TO11DV,(R0)+ ;SAVE THE DEVICE CODE
8092 021662 013720 031716' MOV TO11FW,(R0)+ ;SAVE THE FIRST WORD
8093 021666 016201 000002 MOV DXWD3(R2),R1 ;RESET THE BYTE COUNT
8094 021672 005401 NEG R1 ;MAKE COUNT NEGITIVE
8095 021674 042701 170000 BIC #170000,R1 ;MASK OFF COUNT
8096 021700 106001 RORB R1 ;!!!WARNING THIS ASSUMES C BIT IS SET BY NEG R1!!!!^^
8097 021702 032737 000004 031754' BIT #TOBM,STATI+2 ;WORD MODE?
8098 021710 001003 BNE 25$ ;YES -- DON'T SET BYTE FLAG
8099 021712 106101 ROLB R1 ;!!^^SEE ABOVE -- RESTORE TO BYTE COUNT!!
8100 021714 052701 020000 BIS #TO11BM,R1 ;SET BYTE MODE
8101 021720 25$:
8102 021720 052701 100000 BIS #IFLOP,R1 ;SET INTERRUPT BOTH
8103 021724 010062 000022 MOV R0,T11AD(R2) ;AND START XFER
8104 021730 010162 000016 MOV R1,T11BC(R2) ;SET BYTE COUNT
8106 021734 010037 031724' MOV R0,TO11AS
8107 021740 010137 031726' MOV R1,TO11BS
8109 021744 005037 031710' CLR TO11FN ;INDICATE NO FUNCTION IN PROGRESS
8110 021750 010200 MOV R2,R0
8111 021752 35$:
8112 021752 012777 002000 007374 MOV #INT11C,@.PRSTA
8113 021760 052737 000001 031736' BIS #TOIT,STSTT+2 ;SET TO IT
8114 021766 000137 020602' JMP STTOIP ;RETURN
8115 ;
8116 021772 30$:
8117 021772 123737 031756' 031740' CMPB STATI+4,TO10QC ;IS THIS THE CORRECT COUNT
8118 022000 001764 BEQ 35$ ;YES -- CONTINUE PROCESSING
8119 022002 052737 000001 031736' BIS #TOIT,STSTT+2 ;SET QUEUE IN PROGRESS
8120 022010 105237 031740' INCB TO10QC ;INDICATE Q UPDATED
8121 022014 123737 031756' 031740' CMPB STATI+4,TO10QC ;COUNT CORRECT?
8122 022022 001403 BEQ 40$ ;YES -- PROCEED
8123 022024 .CRASH ILQ ;NO -- DISASTER
022024 000004 IOT
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 115-2
DTE20 DRIVER -- DOORBELL SERVICE
022026 111 114 121 .ASCIZ /ILQ/
022031 000
8124
8125 022032 40$:
8126 022032 012760 010000 000010 MOV #DEP,TNAD1(R0) ;SET UP TO DEPOSIT
8127 022040 013760 031734' 000006 MOV STSTT,DXWD1(R0) ;THE STATUS
8128 022046 013760 031736' 000004 MOV STSTT+2,DXWD2(R0)
8129 022054 013760 031740' 000002 MOV STSTT+4,DXWD3(R0)
8130 022062 012702 000002 MOV #STATUS-FORPRO,R2
8131 022066 066302 000004 ADD DMYN(R3),R2
8132 022072 010260 000012 MOV R2,TNAD2(R0)
8133 022076 CALL WFED ;START DEPOSIT
022076 004737 044012' JSR PC,WFED
8134 022102 012777 002000 007244 MOV #INT11C,@.PRSTA
8135 022110 012702 000003 MOV #QSIZE-FORPRO,R2 ;FIND THE QUEUE SIZE
8136 022114 066302 000010 ADD EHSM(R3),R2 ;EXAMINE HIS FOR ME
8137 022120 005060 000010 CLR TNAD1(R0) ;CLEAR DEPOSIT BIT
8138 022124 010260 000012 MOV R2,TNAD2(R0)
8139 022130 CALL WFED ;WAIT FOR EXAMINE/DEPOSIT
022130 004737 044012' JSR PC,WFED
8140 022134 103412 BCS 77$
8141 022136 016037 000002 031746' MOV DXWD3(R0),EQSZ ;SET UP Q SIZE
8142 022144 023727 031746' 000144 CMP EQSZ,#100. ;LEGAL SIZE
8143 022152 103403 BLO 77$ ;YES -- ALL OK
8144 022154 .CRASH PT4
022154 000004 IOT
022156 120 124 064 .ASCIZ /PT4/
022161 000
8145 ;THIS AUTOMATICALLY SETS UP EQSZ
8146 022162 77$:
8147 022162 000137 021050' JMP STQUE ;AND PROCESS QUEUE
8148 ;
QPRDTE - DTE-20 DRIVER AND PRI MACRO M1108 16-DEC-77 11:28 PAGE 116
DTE20 DRIVER -- START TO TEN QUEUE
8150 .SBTTL DTE20 DRIVER -- START TO TEN QUEUE
8151
8152 ;
8153 ; STNTQ -- SUBROUTINE TO START NEXT TO TEN QUEUE
8154 ;
8155 ; THIS ROUTINE MUST BE ENTERED WITH INTERRUPTS INHIBITTED
8156 ;
8157 022166 STNTQ::
8158 022166 010546 MOV R5,-(SP) ;;;SAVE REGISTERS
8159 022170 010046 MOV R0,-(SP)
8160 022172 013700 031356' MOV .PRDTE,R0 ;;;SET UP ADDRESS OF DTE20
8161 022176 005060 000006 CLR DXWD1(R0)
8162 022202 005060 000004 CLR DXWD2(R0)
8163 022206 010405 MOV R4,R5 ;;;SAVE THE NODE ADDRESS
8164 022210 062705 000006 ADD #6,R5 ;;;MOVE OVER LISTHEAD AND NODE SIZE
8166 022214 011537 031730' MOV @R5,TO10SZ
8168 022220 012560 000002 MOV (R5)+,DXWD3(R0) ;;;SET THE QUEUE SIZE IN MY AREA TO HIM
8169 022224 010560 000020 MOV R5,T10AD(R0) ;;;SET UP THE TO10 ADDRESS
8170 022230 012760 000001 000036 MOV #1,DAG3(R0) ;;;SET BYTE MODE
8172 022236 010537 031732' MOV R5,TO10AS
8174 022242 013705 031352' MOV .PRADR,R5 ;;;FIND THE CORRECT DTE
8175 022246 016505 000004 MOV DMYN(R5),R5 ;;;FIND THE OFFSET INTO MY AREA
8176 022252 062705 000003 ADD #QSIZE-FORPRO,R5 ;;; FIND Q SIZE
8177 022256 012760 010000 000010 MOV #DEP,TNAD1(R0) ;;;SET UP TO DO DEPOSIT
8178 022264 010560 000012 MOV R5,TNAD2(R0)
8179 022270 CALL WFED
022270 004737 044012' JSR PC,WFED
8180 022274 105237 031741' INCB TO11QC ;;;INCREMENT THE COUNT
8181 022300 013760 031734' 000006 MOV STSTT,DXWD1(R0)
8182 022306 013760 031736' 000004 MOV STSTT+2,DXWD2(R0)
8183 022314 013760 031740' 000002 MOV STSTT+4,DXWD3(R0)
8184 022322 062760 177777 000012 ADD #STATUS-QSIZE,TNAD2(R0)
8185 022330 CALL WFED ;;;EXAMINE/DEPOSIT
022330 004737 044012' JSR PC,WFED
8186 022334 012777 000400 007012 MOV #TO10DB,@.PRSTA ;;;RING UP THE 10
8187 022342 012600 MOV (SP)+,R0
8188 022344 012605 MOV (SP)+,R5 ;;;RESTORE REGISTERS
8189 022346 RETURN
022346 000207 RTS PC
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 117
DTE20 DRIVER -- START TO TEN QUEUE
8191 .TITLE TTYDRR - GENERAL TTY HANDLER
8192 022350 IDENT$ 10,17
.IDENT /010170/
8193 ;
8194 ; COPYRIGHT (C) 1975, 1978 BY
8195 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
8196 ;
8197 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
8198 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
8199 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
8200 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
8201 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
8202 ;
8203 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
8204 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
8205 ; CORPORATION.
8206 ;
8207 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
8208 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
8209 ;
8210 ; VERSION 10-17
8211 ;
8212 ; R. MC LEAN
8213 ; 7-APR-75
8214 ;
8215 ; TERMINAL DRIVER FOR DL11-AAND DL11-E LINE INTERFACES AND DH11 LINE MULTIPLEX
8216 ;
8217 ; MODIFICATIONS:
8218 ;
8219 ; NO. DATE PROGRAMMER PURPOSE
8220 ; --- ---- ---------- -------
8221 ; 001 08-NOV-76 K. RETI ADD SUPPRESS SEND-ALL
8222 ; R. BELANGER CODE.
8223 ;
8224 ; 002 16-NOV-76 R. BELANGER FIX TYPO IN EDIT 001
8225 ;
8226 ; 003 16-NOV-76 T. PORCHER ADD CODE TO ALLOW CTY
8227 ; R. BELANGER TO BE MOVED
8228 ; 004 29-NOV-76 A. PECKHAM RELOCATED ACKAL FOR LPT
8229 ; 005 03-FEB-77 R. BELANGER ADDED GENERALIZED DL11E
8230 ; SERVICE AND NEW KLINIK
8231 ; HOOKS AND HANDLES
8232 ; 006 07-MAR-77 A. PECKHAM CLEAN UP "TT.OUT" MANAGEMENT
8233 ; 007 01-JUL-77 R. BELANGER FIX BUG IN INTERNAL I/O INITIALIZATION
8234 ; 008 14-JUL-77 R. BELANGER ADD AUTO-BAUD SUPPORT
8235 ; 009 10-AUG-77 R. BELANGER FIX DL11E INPUT TO IGNORE
8236 ; CHARACTERS WITH FRAMING ERRORS
8237 ; (DN20 RUNNING OPEN ON POWERFAIL)
8238 ; 010 02-SEP-77 R. BELANGER XON/XOFF BUG FIX
8239 ; 011 06-SEP-77 R. BELANGER SHORTEN TIMEOUT COUNT TO 4 SECONDS
8240 ; 012 28-OCT-77 R. BELANGER IGNORE DH-11 CHARACTERS WITH FRMING ERRORS
8241 ; 013 02-NOV-77 R. BELANGER FIX LONG SENDALLS
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 118
DTE20 DRIVER -- START TO TEN QUEUE
8243 ; MACRO LIBRARY CALLS
8244 ;
8246 .MCALL .STKM,WTLO$,CLEF$,CALL,RETURN,WSIG$S,.INH6,.ENB6,DIR$,RQST$
8247 .MCALL EHSG$,DMYG$,$DEF
8248 022350 $DEF
8250 ;
8251 ; EQUATED SYMBOLS
8252 ;
8253 ; TERMINAL CONTROL BLOCK OFFSET DEFINITIONS
8254 ;
8255 ; FOR USE ONLY WITH CTY
8256 ;
8257 000000 STATS=0 ;TERMINAL STATUS WORD (MUST BE ZERO)
8258 000002 STRBF=2 ;CURRENT BUFFER ADDRESS (INPUT)
8259 000004 RMBYT=4 ;REMAINING BYTES IN BUFFER (INPUT)
8260 000005 FNBYT=5 ;TERMINAL BYTE (INPUT)
8261 000006 CURBF=6 ;STARTING BUFFER ADDRESS (INPUT)
8262 000010 MECNT=10 ;MULTI-ECHO BYTE COUNT
8263 000011 FLBYT=11 ;FILL BYTE
8264 000012 MEBUF=12 ;MULTI-ECHO BUFFER ADDRESS
8265 000014 MBUFR=14 ;DYNAMIC MULTI-ECHO BUFFER
8266 000016 HORPS=16 ;HORIZONTAL POSITION OF CARRIAGE
8267 000020 DHBUF=20 ;DH CHARACTER BUFFER
8268 ;
8269 ; TERMINAL STATUS WORD BIT DEFINITIONS
8270 ;
8271 100000 MODE=100000 ;MODE OF BUSY TERMINAL (0=INPUT 1=OUTPUT)
8272 074000 LFCT=074000 ;UNPROCESSED LINE FEED COUNT FIELD
8273 004000 LFBT=004000 ;UNPROCESSED LINE FEED ADD/SUB BIT
8274 002000 CRTY=002000 ;CARRIAGE CONTROL AT END OF LINE (1=YES)
8275 001000 CRJT=001000 ;CARRIAGE RETURN JUST TYPED (1=YES)
8276 000400 EOLS=000400 ;END OF LINE SEEN (1=YES)
8277 000040 CTLO=000040 ;OUTPUT DISABLED (1=YES)
8278 000020 RUBP=000020 ;RUBOUT SEQUENCE IN PROGRESS (1=YES)
8279 000017 FLCT=000017 ;UNPROCESSED FILL COUNT FIELD
8280 000001 FLBT=000001 ;UNPROCESSED FILL COUNT BIT
8281 ;
8282 ; TERMINAL STATUS OFFSETS FOR ALL TTY'S
8283 ;
8284 000000 THRED==0 ;OUTPUT THREAD WORD POINTER (MUST BE ZERO)
8285 000002 TTYEXP==2 ;EXTERNAL PAGE ADDRESS
8286 000004 STSW0==4 ;STATUS WORD 0 (SAME AS DH LINE STATUS WORD)
8287 ; HOLDS LINE SPEED FOR DH11'S
8288 ; HOLDS INPUT BLOCK FLAG FOR DL11'S
8289 000006 STSW1==6 ;STATUS WORD 1 -- SPECIFIC CHARACTERISTICS
8290 ;
8291 ; STSW1 BIT DEFINITIONS
8292 ;
8293 140000 TT.SND==140000 ; +001 INDEX OF NEXT SEND-ALL TO DO FOR THIS LINE
8294 040000 TT.SNI==040000 ; +001 TO INCREMENT SEND-ALL INDEX
8295 ; 020000 ; UNUSED STATUS WORD BIT
8296 010000 TT.ABL==010000 ; +++008 LINE IS AN AUTO-BAUD LINE
8297 004000 TT.NSA==004000 ; +001 SUPPRESS SEND-ALLS FOR THIS LINE
8298 002000 TT.RIP==002000 ;TTY REMOTE IN PROGRESS
8299 001000 TT.SIP==001000 ;TTY SEND ALL IN PROGRESS
8300 000400 TT.CTY==000400 ;TTY IS CONSOLE TTY
8301 000200 TT.XOF==000200 ; +++010 TTY IS X'D OFF (WAS "TT.BSY")
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 118-1
DTE20 DRIVER -- START TO TEN QUEUE
8302 ; +++010 !!! MUST BE SIGN BIT OF LOW BYTE !!!!
8303 000100 TT.RMT==000100 ;REMOTE FLAG
8304 000040 TT.VT5==000040 ;VT05 FLAG
8305 000020 TT.L3S==000020 ;LA30S FLAG
8306 000010 TT.ABW==000010 ; +++008 LINE IS IN AUTO-BAUD WAIT
8307 000004 TT.CRW==000004 ;WAITING FOR CARRIER FLAG
8308 000002 TT.ECH==000002 ;ECHO FLAG
8309 000001 TT.OUT==000001 ;TTY OUTPUT FLAG
8310 ;
8311 ; THREAD ENTRIES ARE IN THE FOLLOWING FORMAT
8312 ;
8313 000000 T.HRED==0 ;THREAD WORD (MUST BE ZERO)
8314 000002 T.HBCT==2 ;BYTE COUNT OF THIS BUFFER
8315 000004 T.HCAD==4 ;CURRENT ADDRESS OF THIS POINTER
8316 000006 T.HCBC==6 ;CURRENT BYTE COUNT OF CARS LEFT IN BUFFER
8317 000007 T.HFCN==7 ;FUNCTION CODE
8318 000010 T.HHDS==10 ;SIZE OF THIS HEADER
8319 ;
8320 ; DL11E RCSR BITS
8321 ;
8322 100000 DL.DSC==BIT15 ; +++005 DL11E DATASET STATUS CHANGE
8323 040000 DL.RNG==BIT14 ; +++005 DL11E RING INDICATOR
8324 020000 DL.CTS==BIT13 ; +++005 DL11E CLEAR TO SEND
8325 010000 DL.CAR==BIT12 ; +++005 DL11E CARRIER DETECT
8326 004000 DL.RAC==BIT11 ; +++005 DL11E RECIEVER ACTIVE
8327 002000 DL.SRD==BIT10 ; +++005 DL11E SECONDARY RECIEVED DATA
8328 000200 DL.RDN==BIT7 ; +++005 DL11E RECIVER DONE
8329 000100 DL.REN==BIT6 ; +++005 DL11E RECIEVER INTERRUPT ENABLE
8330 000040 DL.DEN==BIT5 ; +++005 DL11E DATASET INTERRUPT ENABLE
8331 000010 DL.STD==BIT3 ; +++005 DL11E SECONDARY TRANSMITTED DATA
8332 000004 DL.RTS==BIT2 ; +++005 DL11E REQUEST TO SEND
8333 000002 DL.DTR==BIT1 ; +++005 DL11E DATA TERMINAL READY
8334 000001 DL.RDE==BIT0 ; +++005 DL11E READER ENABLE
8335 001420 DL.UNA==BIT9!BIT8!BIT4 ; +++005 DL11E UNASSIGNED
8336 ;
8337 ; DL11E RBUF BITS
8338 ;
8339 020000 DL.FER==BIT13 ; +++009 DL11 FRAMING ERROR
8340 ;
8341 ; DL11E XCSR BITS
8342 ;
8343 000100 DL.XEN==BIT6 ; +++005 DL11E XMTR ENABLE
8344 ;
8345 ; DH11 NRCR BITS
8346 ;
8347 020000 DH.FER==BIT13 ; +++012 DH11 FRAMING ERROR
8348
8349 022350 TTYHD::
8350 022350 .STKM 0,0,0,0,0,0,0,TTINI,174000,TTYSP
022416 000000 000000 000000 .WORD 0,0,0,0
022424 000000
022444 174000 023062' 022630' .WORD 174000,TTINI,TTYSP
022500 000005 .WORD 5
022502 037202' .WORD TTPEN
022504 000000 .WORD 0
022506 000000 .WORD 0
022510 000000 .WORD 0
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 118-2
DTE20 DRIVER -- START TO TEN QUEUE
022512 000000 .WORD 0
022514 000000 .WORD 0
022516 000000 .WORD 0
022520 000000 .WORD 0
022522 000000 .WORD 0
022524 000000 .WORD 0
022526 000000 .WORD 0
022630 000000 .WORD 0
022632 000000 .WORD 0
022634 000000 .WORD 0
022636 000000 .WORD 0
022640 000000 .WORD 0
022642 000000 .WORD 0
022644 023062' .WORD TTINI
022646 174000 .WORD 174000
8351 ;
8352 ; LOCAL DATA
8353 ;
8354 022650 DMTMP:
8355 .BLKW 1 ;TEMP STORAGE FOR CONTROLLER NUMBER
8356 022652 DLTMP:
8357 .BLKW 1 ;TEMP STORAGE FOR CONTROLLER NUMBER
8358 022654 DHTMP:
8359 .BLKW 1 ;TEMP STORAGE FOR CONTROLLER NUMBER (USED ONLY FOR OUTPUT)
8360 022656 DHSTSV:
8361 022656 000000 .WORD 0 ;DH TABLE SAVE POINTER
8362 022660 CTYSTS:
8363 000020 .REPT 16. ;CONSOLE TTY STATUS BLOCK
8364 .WORD 0
8365 .ENDR
022660 000000 .WORD 0
022662 000000 .WORD 0
022664 000000 .WORD 0
022666 000000 .WORD 0
022670 000000 .WORD 0
022672 000000 .WORD 0
022674 000000 .WORD 0
022676 000000 .WORD 0
022700 000000 .WORD 0
022702 000000 .WORD 0
022704 000000 .WORD 0
022706 000000 .WORD 0
022710 000000 .WORD 0
022712 000000 .WORD 0
022714 000000 .WORD 0
022716 000000 .WORD 0
8366 022720 CNT:
8367 022720 000000 .WORD 0
8368 022722 BYCNT:
8369 022722 000000 .WORD 0
8370 022724 CRADR:
8371 022724 000000 .WORD 0
8372 022726 PKT:
8373 022726 000000 .WORD 0 ;I/O PACKET ADDRESS
8374 ;
8375 ; CONTROL OUTPUT MESSAGES
8376 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 118-3
DTE20 DRIVER -- START TO TEN QUEUE
8377 022730 CTRLC:
8378 022730 136 103 015 .ASCII /^C/<15><12>
022733 012
8379 022734 CTRLU:
8380 022734 136 125 015 .ASCII /^U/<15><12>
022737 012
8381 022740 CTRLZ:
8382 022740 136 132 015 .ASCII /^Z/<15><12>
022743 012
8383 ;
8384 ; LA30S CARRIAGE RETURN FILL TABLE
8385 ;
8386 022744 FILTB:
8387 022744 004 .BYTE 4. ;0-8.
8388 022745 010 .BYTE 8. ;9.-16.
8389 022746 006 .BYTE 6. ;17.-24.
8390 022747 003 .BYTE 3. ;25.-32.
8391 022750 000 .BYTE 0. ;33.-40.
8392 022751 002 .BYTE 2. ;41.-48.
8393 022752 004 .BYTE 4. ;49.-56.
8394 022753 006 .BYTE 6. ;57.-64.
8395 022754 010 .BYTE 8. ;65.-72.
8396 022755 012 .BYTE 10. ;73.-80.
8397
8398 .ENABL LSB
8399 022756 TTWLO: ; +++008
8400 022756 WTLO$ 1,EF.NIR!EF.IOD!EF.TMO!EF.RQM!EF.RKR!EF.RKH!EF.RSS
022756 053 003 .BYTE 43.,3
022760 000001 .WORD 1
022762 007330 .WORD EF.NIR!EF.IOD!EF.TMO!EF.RQM!EF.RKR!EF.RKH!EF.RSS
8401 022764 EXKAL:
8402 022764 EHSG$ 0,PSWW1,KPAL0
022764 002411 .WORD 400*5.+DR.DTE
022766 000010 .WORD DF.EHG
022770 000005 .WORD PSWW1
022772 031760' .WORD KPAL0
022774 000000 .WORD 0
8403 022776 DPKAL:
8404 022776 DMYG$ PSWW1,KPAL1
022776 002011 .WORD 400*4.+DR.DTE
023000 000004 .WORD DF.DMG
023002 000005 .WORD PSWW1
023004 031770' .WORD KPAL1
8405 023006 TMOCNT:
8406 023006 000012 .WORD 10. ; +++011 TIME OUT COUNTER
8407 023010 RQMCR:
8408 023010 RQST$ PARSER,,249.
023010 013 007 .BYTE 11.,7
023012 062072 073632 .RAD50 /PARSER/
023016 000000 000000 .WORD 0,0
023022 000371 .WORD 249.
023024 000 000 .BYTE ,
8409 023026 RQKLR:
8410 023026 RQST$ KLRING,,10
023026 013 007 .BYTE 11.,7
023030 043262 035167 .RAD50 /KLRING/
023034 000000 000000 .WORD 0,0
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 118-4
DTE20 DRIVER -- START TO TEN QUEUE
023040 000010 .WORD 10
023042 000 000 .BYTE ,
8411 023044 RQKLD: ; +++005
8412 023044 RQST$ KLDISC,,10
023044 013 007 .BYTE 11.,7
023046 043244 035473 .RAD50 /KLDISC/
023052 000000 000000 .WORD 0,0
023056 000010 .WORD 10
023060 000 000 .BYTE ,
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 119
TTY DRIVER -- TTINI (TTY QUEUE SERVICE)
8414 .SBTTL TTY DRIVER -- TTINI (TTY QUEUE SERVICE)
8415
8416 023062 TTINI::
8417 023062 DIR$ #TTWLO ;WAIT FOR TTY
023062 012746 022756' MOV #TTWLO,-(SP)
023066 104375 EMT 375
8418 023070 .INH6 ;;;INHIBIT TASK SWITCHING
023070 013746 177776 MOV @#PS,-(SP)
023074 112737 000300 177776 MOVB #300,@#PS
8419 023102 013705 031110' MOV .CRTSK,R5 ;;;FIND THE CURRENT TASK POINTER
8420 023106 016504 000020 MOV A.EF(R5),R4 ;;;FIND EVENT FLAGS
8421 023112 005065 000020 CLR A.EF(R5) ;;;CLEAR EVENT FLAGS
8422 023116 .ENB6 ;ENABLE TASK SWITCHING
023116 012637 177776 MOV (SP)+,@#PS
8423 023122 032704 000200 BIT #EF.RQM,R4 ;REQUEST MCR?
8424 023126 001403 BEQ 5$ ;NO -- MUST BE SOMETHING ELSE
8425 023130 DIR$ #RQMCR ;YES -- REQUEST PARSER
023130 012746 023010' MOV #RQMCR,-(SP)
023134 104375 EMT 375
8426 023136 5$:
8427 023136 032704 001000 BIT #EF.RKR,R4 ; +++005 KLINIK RING INTERRUPT?
8428 023142 001403 BEQ 7$ ; +++005 NO -- FORGET IT
8429 023144 DIR$ #RQKLR ;YES -- REQUEST KLR
023144 012746 023026' MOV #RQKLR,-(SP)
023150 104375 EMT 375
8430 023152 7$: ; +++005
8431 023152 032704 002000 BIT #EF.RKH,R4 ; +++005 KLINIK HANGUP?
8432 023156 001403 BEQ 10$ ; +++005 NO -- GO ON
8433 023160 DIR$ #RQKLD ; +++005 YES -- REQUEST KLD
023160 012746 023044' MOV #RQKLD,-(SP)
023164 104375 EMT 375
8434 023166 10$:
8435 023166 032704 004000 BIT #EF.RSS,R4 ; +++008 AUTO-BAUD REQUEST??
8436 023172 001412 BEQ 12$ ; +++008 NO -- GO ON
8437 023174 005737 031366' TST .ABFLG ; +++008 YES -- INTERLOCK SET??
8438 023200 001007 BNE 12$ ; +++008 YES -- GO ON
8439 023202 013737 031364' 031366' MOV .ABCNT,.ABFLG ; +++008 NO -- REAL REQUEST??
8440 023210 001403 BEQ 12$ ; +++008 NO -- IGNORE IT
8441 023212 DIR$ #.RQSPD ; +++008 YES -- REQUEST "SETSPD"
023212 012746 016672' MOV #.RQSPD,-(SP)
023216 104375 EMT 375
8442 023220 12$: ; +++008
8443 023220 032704 000020 BIT #EF.IOD,R4 ;I/O DONE?
8444 023224 001402 BEQ 15$
8445 023226 000137 023734' JMP 50$ ;YES -- HANDLE THAT FIRST
8446 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 120
TTY DRIVER -- TIMEOUT SERVICE
8448 .SBTTL TTY DRIVER -- TIMEOUT SERVICE
8449
8450 023232 15$:
8451 023232 032704 000100 BIT #EF.TMO,R4 ;TIMEOUT?
8452 023236 001544 BEQ 45$ ;NO -- CONTINUE
8453 023240 005337 023006' DEC TMOCNT ; +++011 ONLY DO TIMEOUT EVERY 10 SEC
8454 023244 001064 BNE 20$
8455 023246 012737 000012 023006' MOV #10.,TMOCNT ; +++011 RESET TIMEOUT COUNT
8456 023254 .INH6 ;DISALLOW INTERRUPTS
023254 013746 177776 MOV @#PS,-(SP)
023260 112737 000300 177776 MOVB #300,@#PS
8458 023266 CALL .DMTMO ;;;CHECK FOR TIMEOUT ON DM11-BBS
023266 004737 030414' JSR PC,.DMTMO
8460 023272 CALL .DLTMO ;;;DL11-E ALSO
023272 004737 030142' JSR PC,.DLTMO
8461 023276 .ENB6 ;;; ALLOW INTERRUPTS
023276 012637 177776 MOV (SP)+,@#PS
8463 023302 005737 031302' TST .ACKAL ;ACK ALL REQUESTED??
8464 023306 001443 BEQ 20$ ;NO -- CONTINUE
8465 023310 005037 031302' CLR .ACKAL ;YES -- CLEAR FLAG
8466 023314 012703 000005 MOV #D.CLPT,R3 ; +004 SET LINE ALLOCATION ON LPT
8467 023320 012704 000214 MOV #140.,R4 ; +004 140 BYTES
8468 023324 012701 000023 MOV #BC.SLA,R1 ; +004 SET LINE ALLOCATION
8469 023330 CALL ..STFC
023330 004737 043252' JSR PC,..STFC
8470 023334 062704 000400 ADD #400,R4 ; +004 ALSO LPT1
8471 023340 CALL ..STFC
023340 004737 043252' JSR PC,..STFC
8472 023344 012701 000025 MOV #BC.AKA,R1 ;SEND ACK ALL
8473 023350 012703 000007 MOV #7,R3 ;RANDOM FUNCTION CODE (ZERO A BAD IDEA HERE)
8474 ;DON'T CARE ABOUT FIRST WORD SENT
8475 023354 CALL ..STFC ;START ACK FUNCTION
023354 004737 043252' JSR PC,..STFC
8476 023360 005737 031244' TST .DATE3 ;REALLY DO IT?
8477 023364 001414 BEQ 20$ ;NOPE -- FORGET IT
8478 023366 012700 031242' MOV #.CLKSW,R0 ;RETURN THE TIME OF DAY TO THE 10
8479 023372 012701 100012 MOV #100000+BC.HTD,R1
8480 023376 005002 CLR R2
8481 023400 012703 000007 MOV #D.CCLK,R3
8482 023404 012710 000014 MOV #14,@R0 ;14 BYTES
8483 023410 CALL ..STIN ;YES -- THEN START INDIRECT FUNCTION
023410 004737 043442' JSR PC,..STIN
8484 023414 005010 CLR (R0) ; +++005 RESET CLOCK FLAG
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 121
TTY DRIVER -- KL KEEP ALIVE SERVICE
8486 .SBTTL TTY DRIVER -- KL KEEP ALIVE SERVICE
8487 ;
8488 ; KEEP ALIVE SERVICE IS DONE HERE --
8489 ; IT IS DONE HERE TO ELIMINATE THE OVERHEAD
8490 ; OF A SEPARATE TASK SINCE TTY MUST DO TIMEOUT ANYWAY
8491 ; AND IT IS JUST AS CONVENIENT TO DO IT HERE
8492 ; AS IN A SEP TASK
8493 ;
8494 023416 20$:
8495 023416 032737 040000 031114' BIT #EF.PR1,.COMEF+2 ;+ IF PRIMARY PROTOCOL
8496 023424 001007 BNE 25$ ;+ IS NOT RUNNING THEN
8497 023426 012737 000005 031776' MOV #.KALSC,.KPAC ;+ RESET THE COUNTER AND
8498 023434 013737 031760' 031766' MOV KPAL0,OKPAL0 ;+ VALUE FOR PROTOCOL RESTART.
8499 023442 000442 BR 40$ ;+
8500 ;
8501 023444 25$:
8502 023444 005737 031230' TST .NOERR ;+ IF EVERYTHING IS COZY
8503 023450 001024 BNE 30$ ;+ THEN
8504 023452 DIR$ #EXKAL ;GET 10 KEEP ALIVE
023452 012746 022764' MOV #EXKAL,-(SP)
023456 104375 EMT 375
8505 023460 103433 BCS 40$ ;TEN STOPPED
8506 023462 123737 031760' 031766' CMPB KPAL0,OKPAL0 ;ANY CHANGE?
8507 023470 001014 BNE 30$
8508 023472 005337 031776' DEC .KPAC ;NO OF SAME READINGS
8509 023476 003017 BGT 35$ ;STILL OKAY
8510 023500 052737 000020 031234' BIS #KS.CST,.KLITK ;ADD KEEP ALIVE STOPPED
8511 023506 105237 031230' INCB .NOERR ;WE ARE SERVICING THE ERROR
8512 023512 CALL ..DTSP ;TURN OFF PROTOCOLS
023512 004737 044300' JSR PC,..DTSP
8513 023516 105237 031232' INCB .TKTN ;REQUEST OPERATOR NOTIFICATION
8514 023522 30$:
8515 023522 012737 000005 031776' MOV #.KALSC,.KPAC ;.KALSC CHANCES
8516 023530 013737 031760' 031766' MOV KPAL0,OKPAL0 ;SAVE IT
8517 ;
8518 ;INC 11S KEEP ALIVE
8519 ;
8520 023536 35$:
8521 023536 105237 031770' INCB KPAL1
8522 023542 DIR$ #DPKAL ;SEND IT
023542 012746 022776' MOV #DPKAL,-(SP)
023546 104375 EMT 375
8523 023550 40$:
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 122
TTY DRIVER -- CTY SERVICE
8526 .SBTTL TTY DRIVER -- CTY SERVICE
8527
8528 023550 45$:
8529 023550 005737 022726' TST PKT ;CHECK PACKET
8530 023554 001162 BNE TTINO ;PACKET IN USE -- WAIT
8531 023556 DQNXT:
8532 023556 .INH6 ; +++007 DISALLOW INTERRUPTS
023556 013746 177776 MOV @#PS,-(SP)
023562 112737 000300 177776 MOVB #300,@#PS
8533 023570 105737 031342' TSTB .KLNSW+0 ;;; +++005 IS KLINIK ACTIVE??
8534 023574 003406 BLE 46$ ;;; +++005 NO -- GO ON
8535 023576 013700 031222' MOV KLNPTR,R0 ;;; +++005 KLINIK LINE POINTER TO R0
8536 023602 032760 000001 000006 BIT #TT.OUT,STSW1(R0) ;;; +++005 IS IT BUSY??
8537 023610 001142 BNE TTINX ;;; +++005 YES -- WAIT A WHILE
8538 023612 46$: ;;; +++005
8539 023612 013700 031220' MOV CTYPTR,R0 ;;; +++005 CHECK AND WAIT FOR I/O FROM 10 TO STOP
8540 023616 032760 000001 000006 BIT #TT.OUT,STSW1(R0) ;;; +++005 OUTPUT IN PROGRESS?
8541 023624 001134 BNE TTINX ;;; +++005
8542 023626 012700 052124 MOV #"TT,R0 ;;; +++005 SET UP TO DEQUEUE FROM TTY LUN
8543 023632 CALL ..DQRN ;;; +++005 GET AN I/O PACKET TO PROCESS
023632 004737 040656' JSR PC,..DQRN
8544 023636 103527 BCS TTINX ;;; +++005 IF CC-C IS SET CONTROLLER BUSY OR NO REQUEST
8545 023640 005237 031216' INC .TTP11 ;;; +++007 SET PDP11 I/O IN PROGRESS
8546 023644 .ENB6 ;;; +++007 ALLOW INTERRUPTS
023644 012637 177776 MOV (SP)+,@#PS
8547 ;
8548 ; THE FOLLOWING ARGUMENTS ARE RETURNED BY ..DQRN:
8549 ;
8550 ; R0 -- LOGICAL UNIT NUMBER
8551 ; R1 -- ADDRESS OF THE I/O REQUEST PACKET.
8552 ;
8553 023650 010137 022726' MOV R1,PKT ;SAVE PCAKET ADDRESS
8554 023654 010337 022722' MOV R3,BYCNT ;SAVE THE BYTE COUNT
8555 023660 010337 022720' MOV R3,CNT ;SAVE IT HERE ALSO
8556 023664 010537 022724' MOV R5,CRADR ;SAVE CURRENT ADDRESS
8557 023670 013705 031220' MOV CTYPTR,R5 ;FIND THE CTY TERMINAL
8558 023674 012703 022660' MOV #CTYSTS,R3 ;FIND TERMINAL STATUS WORD
8559 023700 122761 000001 000015 CMPB #IO.WLB/256.,R.FC+1(R1) ;WRITE LOGICAL FUNCTION?
8560 023706 001451 BEQ 70$ ;IF EQ YES
8561 023710 042713 000040 BIC #CTLO,@R3 ;ENABLE OUTPUT
8562 023714 122761 000002 000015 CMPB #IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL FUNCTION?
8563 023722 001422 BEQ 60$ ;YES -- PROCESS REQUEST
8564 023724 012703 000001 MOV #IS.SUC,R3 ;SET UP THE ERROR STATUS
8565 023730 005004 CLR R4 ;INDICATE NO TRANSFER
8566 023732 000407 BR 55$ ;TRY AGAIN
8567 ;
8568 ;
8569 ; I/O DONE SERVICE
8570 ;
8571 023734 50$:
8572 023734 013701 022726' MOV PKT,R1 ;FIND THE I/O PACKET
8573 023740 001706 BEQ DQNXT
8574 023742 016104 000026 MOV R.PB+2(R1),R4 ;SET THE COUNT XFERED
8575 023746 013703 022724' MOV CRADR,R3 ;RETURN THE STATUS
8576 023752 55$:
8577 023752 CALL ..IODN ;CALL I/O DONE OUTINE
023752 004737 040534' JSR PC,..IODN
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 122-1
TTY DRIVER -- CTY SERVICE
8578 023756 005337 031216' DEC .TTP11 ;PDP11 INPUT NOT IN PROGREESS
8579 023762 005037 022726' CLR PKT ;SET NO PACKET IN USE
8580 023766 000673 BR DQNXT ;AND WAIT FOR NEXT JOB
8581 ;
8582 ;
8583 ; REQUEST IS A SOLICITED INPUT REQUEST-GET A BUFFER FOR INPUT
8584 ;
8585 023770 60$: ;SET SOLICITED INPUT FLAG
8586 023770 042713 102400 BIC #MODE!EOLS!CRTY,@R3
8587 023774 013763 022724' 000006 MOV CRADR,CURBF(R3) ;SET RANDOM INPUT VALUES
8588 024002 013763 022722' 000004 MOV BYCNT,RMBYT(R3)
8589 024010 013763 022724' 000002 MOV CRADR,STRBF(R3)
8590 024016 032713 001000 BIT #CRJT,@R3 ;CARRIAGE RETURN JUST TYPED?
8591 024022 001426 BEQ 80$ ;NO -- NO CARRAGE CONTROL NECESSARY
8592 024024 65$:
8593 024024 062713 004000 ADD #LFBT,@R3 ;FORCE LINE FEED
8594 024030 000423 BR 80$ ;AND FORCE IT OUT
8595 ;
8596 ;
8597 ; REQUEST IS AN OUTPUT REQUEST-SET UP CARRIAGE CONTROL FLAGS
8598 ;
8599 024032 70$:
8600 024032 005737 037216' TST TTPEN+U.AF ;CHECK FOR ATTACHED
8601 024036 001002 BNE 75$ ;YES -- DON'T CLEAR STATUS FLAGS
8602 024040 042713 000040 BIC #CTLO,@R3 ;ENABLE OUTPUT
8603 024044 75$:
8604 024044 042713 076437 BIC #LFCT!CRTY!EOLS!RUBP!FLCT,@R3 ;CLEAR STATUS WORD
8605 024050 052713 100000 BIS #MODE,@R3 ;SET OUTPUT MODE
8606 024054 005761 000030 TST R.PB+4(R1) ;CHECK FOR CARRAGE CONTROL
8607 024060 001407 BEQ 80$ ;NO -- NOTHING TO DO
8608 024062 122761 000044 000030 CMPB #'$,R.PB+4(R1) ;$?
8609 024070 001755 BEQ 65$ ;YES -- DON'T FAKE CARRAGE CONTROL HERE
8610 024072 052713 002000 BIS #CRTY,@R3 ;YES -- IT WILL ALWAYS BE ASSUMED ' '
8611 024076 000752 BR 65$ ;OUTPUT CRLF
8612 ;
8613 024100 80$:
8614 024100 .INH6 ; +++006 DISALLOW INTERRUPTS
024100 013746 177776 MOV @#PS,-(SP)
024104 112737 000300 177776 MOVB #300,@#PS
8615 024112 CALL OUTPT ;;; +++006 START OUTPUT
024112 004737 025010' JSR PC,OUTPT
8616 024116 TTINX: ;;; +++007
8617 024116 .ENB6 ;;; +++006 ALLOW INTERRUPTS
024116 012637 177776 MOV (SP)+,@#PS
8618 024122 TTINO:
8619 024122 000137 023062' JMP TTINI ;MAKE SURE OUTPUT IS ACTIVE
8620 ;
8621 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 123
TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
8623 .SBTTL TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
8624 ;
8625 ; DHOUT -- DH11 TERMINAL MUX OUT INTERRUPTS
8626 ;
8627 024126 $DHOUT:: ;;;REF LABEL
8628 024126 013737 177776 022654' MOV @#PS,DHTMP ;;;SAVE CONTROLLER NUMBER
8629 024134 CALL R3,DHSAV ;;;SAVE R3 AND SETUP R3 AND R4
024134 004337 027232' JSR R3,DHSAV
8630 024140 10$:
8631 024140 042714 101077 BIC #101077,@R4 ;;;CLEAR CURRENT UNIT AND TRANSMIT INT
8632 024144 20$:
8633 024144 032765 000001 000006 BIT #TT.OUT,STSW1(R5) ;;;OUTPUT INTERRUPT EXPECTED?
8634 024152 001403 BEQ 30$ ;;;IF EQ NO
8635 024154 005764 000010 TST 10(R4) ;;;ZERO BYTE COUNT?
8636 024160 001407 BEQ 40$ ;;;IF EQ YES
8637 024162 30$:
8638 024162 005214 INC @R4 ;;;INCREMENT UNIT NUMBER
8639 024164 062705 000010 ADD #10,R5 ;;; POINT TO NEXT ENTRY
8640 024170 026504 000002 CMP TTYEXP(R5),R4 ;;;SAME DH ?
8641 024174 001763 BEQ 20$ ;;;YES -- CHECK NEXT UNIT
8642 024176 RETURN
024176 000207 RTS PC
8643 024200 40$: ;;; +++006
8644 024200 042765 000001 000006 BIC #TT.OUT,STSW1(R5) ;;; +++006 THIS OPERATION IS FINISHED
8645 024206 032765 000400 000006 BIT #TT.CTY,STSW1(R5) ;;;LOOK AT THE THREAD WORD
8646 024214 001003 BNE 60$ ;;;CHECK TO SEE IF THIS IS THE CTY -- NO NORMAL CASE
8647 024216 50$:
8648 024216 CALL STTYDN ;;;START NEXT CHARACTER
024216 004737 024244' JSR PC,STTYDN
8649 024222 000757 BR 30$ ;;;GO GET ANOTHER CHARACTER
8650 ;
8651 024224 60$:
8652 024224 005737 031216' TST .TTP11 ;;;IS THIS PDP11 OUTPUT?
8653 024230 001772 BEQ 50$ ;;;NO -- THEN HANDLE AS NORMAL CASE
8654 024232 010446 MOV R4,-(SP) ;;;SAVE R4 AND R3
8655 024234 CALL OUTPT3 ;;;FINISH OUTPUT PROCESSING
024234 004737 024730' JSR PC,OUTPT3
8656 024240 012604 MOV (SP)+,R4 ;;;
8657 024242 000747 BR 30$ ;;;GO AGAIN
8658 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 124
TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
8660 ;
8661 ; REMOVE ENTRY FOR LAST OPERATION
8662 ;
8663 ; IF THIS IS A SENDALL WHICH HAS FINSHED, DECREMENT THE COUNT FOR
8664 ; THE NODE IN THE SENDALL RING. IF THE COUNT HAS EXHAUSTED, DEALLOCATE
8665 ; THER CURRENT SENDALL BUFFER. THE SENDALL OFFSET FOR THIS LINE IS MOVED
8666 ; TO THE NEXT NODE IN THE SENDALL RING.
8667 ;
8668 ; IF THIS IS A NORMAL I/O TERMINATION, SEE IF THE LINE HAS BEEN X'D OFF.
8669 ; IF IT HAS BEEN X'D OFF, ALTER THE BUFFER ADDRESS AND BYTE COUNT IN THE
8670 ; CURRENT NODE SO THAT THE XON CODE CAN DO A NORMAL LINE START. THE PACKET
8671 ; WILL BE ACK'ED AND DEALLOCATED AFTER THE LINE HAS BEEN RESTARTED.
8672 ;
8673 ; IF THE LINE HAS NOT BEEN X'D OFF, THE CURRENT NODE IS REMOVED FROM THE
8674 ; THREAD LIST, DEALLOCATED AND AN ATTEMPT MADE TO START THE NEXT ENTRY
8675 ; IN THE THREAD LIST. IF THE LIST IS EMPTY, THIS LINE WILL BE ACK'ED.
8676
8677 024244 STTYDN: ;;; +003 REMOVED ONE INSTRUCTION
8678 024244 032765 001000 000006 BIT #TT.SIP,STSW1(R5) ;;;IS THIS SEND ALL IN PROGRESS?
8679 024252 001426 BEQ 10$ ;;;NO -- DON'T MAKE SENDALL RETURN CHECKS
8680 024254 042765 001000 000006 BIC #TT.SIP,STSW1(R5) ;;;CLEAR SENDALL IN PROGRESS
8681 024262 016502 000006 MOV STSW1(R5),R2 ;;; +003 FIND THE POSITION IN THE SEND ALL TABLE
8682 024266 062765 040000 000006 ADD #TT.SNI,STSW1(R5) ;;;MOVE TO NEXT SENDALL RING WORD
8683 024274 006102 ROL R2 ;;; +003 FIND THE POSITION IN THE TABLE
8684 024276 006102 ROL R2 ;;; +003 OF THE CURRENT SENDALL
8685 024300 006102 ROL R2 ;;; +003 JUST FINISHED
8686 024302 042702 177774 BIC #177774,R2 ;;; +003 MASK OFF JUNK
8687 024306 006302 ASL R2 ;;; +003 MAKE A WORD INDEX
8688 024310 005362 031650' DEC .SNDCN(R2) ;;; +003 DECREMENT THE CURRENT INUSE COUNT
8689 024314 001032 BNE STNXT ;;;THIS SENDALL QUEUE NOT FINISHED -- DON'T RELEASE IT
8690 024316 016200 031640' MOV .SNDBF(R2),R0 ;;; +003 PICK UP THE ENTRY
8691 024322 005062 031640' CLR .SNDBF(R2) ;;; +003 CLEAR OUT THIS ENTRY (MARK END OF RING)
8692 024326 000423 BR 20$ ;;; +++005 AND CONTINUE
8693 ;
8694 024330 10$: ;;; HERE TO REMOVE THREAD ENTRY (NOT SENDALL)
8695 024330 011500 MOV (R5),R0 ;;;PICK UP THE THREAD POINTER
8696 024332 001423 BEQ STNXT ;;; +++010 GO ON IF EMPTY
8697 024334 105765 000006 TSTB STSW1+0(R5) ;;; +++010 IS THIS LINE X'D OFF??
8698 024340 100015 BPL 15$ ;;; +++010 NO -- GO ON
8699 024342 016401 000006 MOV 6(R4),R1 ;;; +++010 YES -- PICK UP CURRENT ADDRESS
8700 024346 116002 000006 MOVB T.HCBC(R0),R2 ;;; +++010 GET ORIGINAL BYTE COUNT
8701 024352 016046 000004 MOV T.HCAD(R0),-(SP) ;;; +++010 ORIGINAL ADDRESS TO STACK
8702 024356 010160 000004 MOV R1,T.HCAD(R0) ;;; +++010 CURRENT ADDRESS TO PACKET
8703 024362 162601 SUB (SP)+,R1 ;;; +++010 COMPUTE OFFSET INTO PACKET
8704 024364 160102 SUB R1,R2 ;;; +++010 DISCOUNT FROM PACKET SIZE
8705 024366 110260 000006 MOVB R2,T.HCBC(R0) ;;; +++010 AND SET NEW PACKET SIZE
8706 024372 000403 BR STNXT ;;; +++010 AND SEE ABOUT SENDALLS
8707 ;
8708 024374 15$:
8709 024374 011015 MOV @R0,(R5) ;;; DELINK THIS THREAD NODE
8710 024376 20$: ;;; +++005
8711 024376 CALL ..DECN ;;;DEALLOCATE THE NODE
024376 004737 042006' JSR PC,..DECN
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 125
TTY DRIVER -- $DHOUT (DH11 OUTPUT INTERRUPT)
8713 ;
8714 ; START NEXT OPERATION
8715 ;
8716 ; R0 -- POINTS TO THREAD NODE TO BE STARTED
8717 ; R4 -- POINTS TO I/O PAGE ADDR THIS DEVICE
8718 ; R5 -- POINTS TO DLS TABLE THIS DEVICE
8719 ;
8720 ; BEFORE ATTEMPTING TO START THE NEXT NODE IN THE THREAD LIST, SEE IF A
8721 ; SENDALL IS PENDING FOR THIS LINE, (".SNDLP" .NE. "TT.SND"). IF SO, START
8722 ; THE SENDALL. IF SENDALLS ARE SUPPRESSED FOR THIS LINE, GO IMMEDIATELY TO
8723 ; "STTYDN" AND ACCOUNT FOR THIS LINE IN THE SENDALL RING.
8724 ;
8725 ; IF NO SENDALL IS PENDING FOR THIS LINE, ATTEMPT TO START THE THE NEXT
8726 ; NODE IN THE THREAD LIST. IF ANOTHER ENTRY EXISTS, START IT; IF NOT, SEND
8727 ; AN ACK. IF THE LINE HAS BEEN X'D OFF, DO NOTHING.
8728 ;
8729 ; NOTE: SENDALLS ARE FORCED OUT OVER THE XOFF -- THEY ARE NOT TO BE STOPPED.
8730
8731 024402 STNXT:
8732 024402 016502 000006 MOV STSW1(R5),R2 ;;;FIND THE STATUS WORD TO LOOK AT
8733 024406 006102 ROL R2 ;;; GET THE RING INDEX OUT OF STATUS WORD
8734 024410 006102 ROL R2
8735 024412 006102 ROL R2
8736 024414 042702 177774 BIC #^C3,R2 ;;; +++013 R2 NOW HAS OFFSET INTO SENDALL RING
8737 024420 020237 031636' CMP R2,.SNDLP ;;; ANY SENDALLS PENDING THIS LINE??
8738 024424 001414 BEQ 10$ ;;; NO -- CONTINUE NORMAL I/O
8739 024426 006302 ASL R2 ;;; +++013 MAKE R2 A WORD INDEX INTO RING
8740 024430 016200 031640' MOV .SNDBF(R2),R0 ;;; +++013 GET THE NEXT SENDALL NODE INTO R0
8741 024434 001410 BEQ 10$ ;;; +++013 CONTINUE NORMAL I/O IF EMPTY
8742 024436 052765 001000 000006 BIS #TT.SIP,STSW1(R5) ;;; +001 SET SEND-ALL IN PROGRESS
8743 024444 032765 004000 000006 BIT #TT.NSA,STSW1(R5) ;;; +002 ARE WE SUPPRESSING SEND-ALL'S?
8744 024452 001274 BNE STTYDN ;;; +001 YES -- PRETEND WE JUST FINISHED IT
8745 024454 000405 BR 20$ ;;; +++013 NO -- START IT UP
8746 ;
8747 024456 10$:
8748 024456 105765 000006 TSTB STSW1+0(R5) ;;; +++010 IS THIS LINE X'D OFF??
8749 024462 100475 BMI TTOUTR ;;; +++010 YES -- GO AWAY
8750 024464 011500 MOV (R5),R0 ;;; +++010 NO -- START THE XFER ON THIS STRING
8751 024466 001474 BEQ TTACK ;;; SEND AN ACK IF END
8752 ;;; +003 REMOVED LABEL "STTYDN"
8753 024470 20$:
8754 024470 016064 000004 000006 MOV T.HCAD(R0),6(R4) ;;;SET IT IN THE EXTERNAL ADDRESS REGISTER
8755 024476 016064 000006 000010 MOV T.HCBC(R0),10(R4) ;;;SET THE BYTE COUNT
8756 024504 005464 000010 NEG 10(R4) ;;;MAKE BYTE COUNT NEGATIVE
8757 024510 011402 MOV @R4,R2 ;;;FIND THE UNIT NUMBER TO START THE DH
8758 024512 042702 177760 BIC #177760,R2 ;;;MASK OFF HIGH ORDER JUNK
8759 024516 006302 ASL R2 ;;;MAKE AN INDEX INTO BIT TABLE
8760 024520 056264 042572' 000012 BIS BITTBL(R2),12(R4) ;;;START THE DH
8761 024526 000450 BR TTOUTX ;;; +++005 MARK OUTPUT BUSY AND EXIT
8762 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 126
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
8764 .SBTTL TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
8765 ;+
8766 ; **-$TTOUT-DL11 TERMINAL OUTPUT INTERRUPTS
8767 ;-
8768
8769 024530 $TTOUT:: ;;;REF LABEL
8770 024530 013737 177776 022652' MOV @#PS,DLTMP ;;;SAVE CONTROLLER NUMBER
8771 024536 CALL R3,TTSAV ;;;SAVE R3 AND SETUP R3, R4, AND R5
024536 004337 027270' JSR R3,TTSAV
8772 024542 032765 000001 000006 BIT #TT.OUT,STSW1(R5) ;;;OUTPUT INTERRUPT EXPECTED?
8773 024550 001443 BEQ TTACK ;;;IF EQ YES
8774 024552 042765 000001 000006 BIC #TT.OUT,STSW1(R5) ;;; +++006 MARK OUTPUT DONE
8775 024560 032765 000400 000006 BIT #TT.CTY,STSW1(R5) ;;;IS THIS A CONSOLE?
8776 024566 001403 BEQ STTYO ;;;NO -- SEND THE LINE
8777 024570 005737 031216' TST .TTP11 ;;;IS THIS PDP11 INPUT?
8778 024574 001055 BNE OUTPT3 ;;;YES -- SPECIAL CASE
8779 024576 STTYO:
8780 024576 105765 000006 TSTB STSW1+0(R5) ;;; +++010 IS THIS LINE X'D OFF??
8781 024602 100425 BMI TTOUTR ;;; +++010 YES -- JUST GO AWAY
8782 024604 011500 MOV (R5),R0 ;;; +++010 NO -- PICK UP THIS LINE IN USE
8783 024606 001424 BEQ TTACK ;;; ACK THE LINE IF END OF THREAD LIST
8784 024610 005360 000006 DEC T.HCBC(R0) ;;;DECREMENT THE BYTE COUNT
8785 024614 001005 BNE 10$ ;;;FINISHED?
8786 024616 011015 MOV @R0,(R5) ;;;SAVE NEXT THREAD POINTER
8787 024620 CALL ..DECN ;;;DEALLOCATE THE BUFFER
024620 004737 042006' JSR PC,..DECN
8788 024624 011500 MOV (R5),R0 ;;;SET THE NEW THREAD POINTER
8789 024626 001414 BEQ TTACK ;;;GO ACK THE LINE
8790 024630 10$:
8791 024630 117064 000004 000006 MOVB @T.HCAD(R0),6(R4) ;;;START THE NEXT CHARACTER
8792 024636 005260 000004 INC T.HCAD(R0) ;;;UPDATE THE CHARACTER POINTER
8793 024642 052764 000100 000004 BIS #DL.XEN,4(R4) ;;; +++005 INSURE INTERRUPT ENABLED
8794 024650 TTOUTX:
8795 024650 052765 000001 000006 BIS #TT.OUT,STSW1(R5) ;;; +++006 MARK OUTPUT BUSY
8796 024656 TTOUTR: ;;; +++010
8797 024656 RETURN ;;;RETURN TO CALLER
024656 000207 RTS PC
8798 024660 TTACK:: ;;; +++006 REMOVED ONE INSTRUCTION
8799 024660 032765 000400 000006 BIT #TT.CTY,STSW1(R5) ;;;IF THIS IS A CTY
8800 024666 001411 BEQ 15$ ;;; +++005 GO ON IF NOT
8801 024670 005737 031216' TST .TTP11 ;;;IT IS TALKING
8802 024674 001014 BNE 20$ ;;;TO THE -11, THEN IGNORE.
8803 024676 10$:
8804 024676 105737 031342' TSTB .KLNSW+0 ;;; +++005 IS KLINIK ACTIVE??
8805 024702 001403 BEQ 15$ ;;; +++005 NO -- GO ON
8806 024704 020537 031222' CMP R5,KLNPTR ;;; +++005 YES -- IS THIS THE KLINIK LINE??
8807 024710 001406 BEQ 20$ ;;; +++005 YES -- DON'T ACK IT!
8808 024712 15$:
8809 024712 010346 MOV R3,-(SP)
8810 024714 012703 000004 MOV #D.CDLS,R3 ;;;SET DATA LINE SCANNER
8811 024720 CALL ..SACK ;;;ACKNOWLEDGE
024720 004737 043166' JSR PC,..SACK
8812 024724 012603 MOV (SP)+,R3
8813 024726 20$:
8814 024726 RETURN ;;;RETURN TO CALLER
024726 000207 RTS PC
8815 024730 OUTPT3: ;;; +++005 HERE TO SYNCH CTY OUTPUT
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 126-1
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
8816 ;;; +++006 REMOVED ONE INSTRUCTION
8817 024730 105737 031342' TSTB .KLNSW+0 ;;; +++005 KLINIK REMOTE CONSOLE ACTIVE?
8818 024734 003425 BLE OUTPT ;;; +++005 NO -- CONTINUE
8819 024736 010546 MOV R5,-(SP) ;;; +++005 SAVE CURRENT POINTER
8820 024740 022705 035176' CMP #DHTBL,R5 ;;; +++005 IS CTY A DH11 LINE??
8821 024744 101410 BLOS 10$ ;;; +++005 YES -- GO ON
8822 024746 032765 000001 000006 BIT #TT.OUT,STSW1(R5) ;;; +++005 NO -- IS THIS LINE FINISHED??
8823 024754 001012 BNE 30$ ;;; +++005 NO -- EXIT
8824 024756 013705 031220' MOV CTYPTR,R5 ;;; +++005 YES -- POINT TO THE CTY
8825 024762 020516 CMP R5,(SP) ;;; +++005 HAVE WE ALREADY CHECKED IT??
8826 024764 001002 BNE 20$ ;;; +++005 NO -- GO ON
8827 024766 10$:
8828 024766 013705 031222' MOV KLNPTR,R5 ;;; +++005 YES -- POINT TO THE KLINIK LINE
8829 024772 20$:
8830 024772 032765 000001 000006 BIT #TT.OUT,STSW1(R5) ;;; +++005 IS IT FINISHED??
8831 025000 001402 BEQ 90$ ;;; +++005 YES -- TYPE IF FINISHED
8832 025002 30$:
8833 025002 012605 MOV (SP)+,R5 ;;; +++005 NO -- RESTORE POINTER
8834 025004 RETURN ;;; +++005 RETURN TO CALLER
025004 000207 RTS PC
8835 025006 90$:
8836 025006 005726 TST (SP)+ ;;; +++005 CLEAR STACK
8837 ;
8838 ; OUTPUT NEXT BYTE
8839 ;
8840 .ENABL LSB
8841 025010 OUTPT:
8842 025010 013705 031220' MOV CTYPTR,R5 ;;; +++005 POINT TO THE CTY
8843 025014 012703 022660' MOV #CTYSTS,R3 ;;;GET CTY BLOCK POINTER
8844 025020 032713 000017 BIT #FLCT,@R3 ;;;SHOULD A FILL BE ECHOED?
8845 025024 001113 BNE 60$ ;;;IF NE YES
8846 025026 032713 074000 BIT #LFCT,@R3 ;;;ANY UNPROCESSED LINE FEEDS?
8847 025032 001074 BNE 40$ ;;;IF NE YES
8848 025034 105763 000010 TSTB MECNT(R3) ;;;MULTIECHO SEQUENCE IN PROGRESS?
8849 025040 001076 BNE 50$ ;;;IF NE YES
8850 025042 005713 TST @R3 ;;;INPUT OR OUTPUT IN PROGRESS?
8851 025044 100056 BPL INPPT ;;;IF PL INPUT
8852 ;
8853 ; OUTPUT REQUEST IN PROGRESS
8854 ;
8855 025046 005737 022722' TST BYCNT ;;;ANY MORE BYTES TO OUTPUT?
8856 025052 100416 BMI 20$ ;;;IF MI NO
8857 025054 005337 022722' DEC BYCNT ;;;DECREMENT BYTE COUNT
8858 025060 100405 BMI 10$ ;;;IF MI CHECK CARRIAGE CONTROL
8859 025062 117746 175636 MOVB @CRADR,-(SP) ;;;STORE CHARACTER ON STACK
8860 ;;;!!!NOTE: THIS SHOULD BE VXFR AND BLXI!!!!!
8861 025066 005237 022724' INC CRADR ;;;UPDATE POINTER TO NEXT CHARACTER
8862 025072 000473 BR ECHOB ;;;ECHO NEXT BYTE
8863 ;
8864 025074 10$:
8865 025074 112746 000015 MOVB #15,-(SP) ;;;ASSUME TRAILING CARRIAGE RETURN REQUIRED
8866 025100 032713 002000 BIT #CRTY,@R3 ;;;OUTPUT TRAILING CARRIAGE RETURN?
8867 025104 001066 BNE ECHOB ;;;IF NE YES
8868 025106 005726 TST (SP)+ ;;;CLEAN STACK
8869 025110 20$:
8870 025110 012737 000001 022724' MOV #IS.SUC&377,CRADR ;;;SET SUCCESSFUL COMPLETION STATUS
8871 025116 TTYDNE:
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 126-2
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
8872 025116 052737 000020 032636' BIS #EF.IOD,TTYTSK+A.EF ;;;SET EVENT FLAG INDICATING I/O DONE
8873 025124 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;;;DECLARE A SIG EVENT
8874 025132 105737 031342' TSTB .KLNSW+0 ;;; +++005 IS KLINIK ACTIVE??
8875 025136 003412 BLE TTYDNX ;;; +++005 NO -- GO ON
8876 025140 010546 MOV R5,-(SP) ;;; +++005 YES -- SAVE R5
8877 025142 010446 MOV R4,-(SP) ;;; +++005 AND R4
8878 025144 013705 031222' MOV KLNPTR,R5 ;;; +++005 POINT TO THE KLINIK LINE
8879 025150 016504 000002 MOV TTYEXP(R5),R4 ;;; +++005 I/O PAGE POINTER TO R5
8880 025154 CALL STTYO ;;; +++005 START OR DEALLOCATE
025154 004737 024576' JSR PC,STTYO
8881 025160 012604 MOV (SP)+,R4 ;;; +++005 RESTORE REGISTERS
8882 025162 012605 MOV (SP)+,R5 ;;; +++005 SO
8883 025164 TTYDNX: ;;; +++005
8884 025164 022705 035176' CMP #DHTBL,R5 ;;;CALLED FROM DH?
8885 025170 101002 BHI 30$ ;;; NO --TRY THE ONE ON DL11
8886 ;;; +003 REMOVED ONE INSTRUCTION
8887 025172 000137 024244' JMP STTYDN ;;;GO DO ACK AND CLEAR BUSY
8888 ;
8889 025176 30$:
8890 025176 000137 024576' JMP STTYO ;;; SEE WHAT'S NEXT FOR DL11
8891 ;
8892 ;
8893 ; INPUT REQUEST IN PROGRESS
8894 ;
8895 025202 INPPT:
8896 025202 032713 000400 BIT #EOLS,@R3 ;;;END OF LINE SEEN?
8897 025206 001402 BEQ INPT0
8898 025210 000137 025660' JMP INPT1
8899 ;
8900 025214 INPT0:
8901 025214 142765 000002 000006 BICB #TT.ECH,STSW1(R5) ;;;CLEAR ECHO IN PROGRESS
8902 025222 RETURN ;;;
025222 000207 RTS PC
8903 ;
8904 ; ECHO LINE FEED
8905 ;
8906 025224 40$:
8907 025224 162713 004000 SUB #LFBT,@R3 ;;;REDUCE LINE FEED COUNT
8908 025230 112746 000012 MOVB #12,-(SP) ;;;SET TO ECHO LINE FEED
8909 025234 000412 BR ECHOB ;;;ECHO BYTE
8910 ;
8911 ;
8912 ; MULTI-ECHO SEQUENCE
8913 ;
8914 025236 50$:
8915 025236 117346 000012 MOVB @MEBUF(R3),-(SP) ;;;SET NEXT BYTE TO ECHO
8916 025242 005263 000012 INC MEBUF(R3) ;;;INCREMENT BUFFER ADDRESS
8917 025246 105363 000010 DECB MECNT(R3) ;;;DECREMENT MULTIECHO BYTE COUNT
8918 025252 000403 BR ECHOB ;;;ECHO BYTE
8919 ;
8920 ;
8921 ; ECHO FILL BYTE
8922 ;
8923 025254 60$:
8924 025254 005313 DEC @R3 ;;;DECREMENT FILL COUNT
8925 025256 116346 000011 MOVB FLBYT(R3),-(SP) ;;;SET TO ECHO FILL BYTE
8926 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 126-3
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
8927 ;
8928 ; ECHO NEXT BYTE
8929 ;
8930 025262 ECHOB:
8931 025262 042716 177600 BIC #177600,@SP ;;;MASK OFF PARITY
8932 025266 121627 000037 CMPB @SP,#37 ;;;IS THIS A CONTROL BYTE?
8933 025272 101101 BHI 70$ ;;;IF HI NO
8934 025274 122716 000015 CMPB #15,@SP ;;;CARRIAGE RETURN?
8935 025300 001427 BEQ 10$ ;;;IF EQ YES
8936 025302 122716 000014 CMPB #14,@SP ;;;FORM FEED?
8937 025306 001452 BEQ 30$ ;;;IF EQ YES
8938 025310 122716 000013 CMPB #13,@SP ;;;VERTICLE TAB?
8939 025314 001451 BEQ 40$ ;;;IF EQ YES
8940 025316 122716 000012 CMPB #12,@SP ;;;LINE FEED?
8941 025322 001452 BEQ 50$ ;;;IF EQ YES
8942 025324 122716 000011 CMPB #11,@SP ;;;HORIZONTAL TAB?
8943 025330 001066 BNE 80$ ;;;IF NE NO
8944 ;
8945 ; HORIZONTAL TAB
8946 ;
8947 025332 116316 000016 MOVB HORPS(R3),@SP ;;;GET CURRENT HORIZONTAL POSITION
8948 025336 052716 177770 BIS #177770,@SP ;;;CALCULATE BLANK COUNT TO NEXT TAB STOP
8949 025342 005416 NEG @SP ;;;
8950 025344 051613 BIS @SP,@R3 ;;;MERGE BLANK COUNT
8951 025346 112763 000040 000011 MOVB #' ,FLBYT(R3) ;;;SET FILL TO A BLANK
8952 025354 5$:
8953 025354 005726 TST (SP)+ ;;;REMOVE BYTE FROM STACK
8954 025356 000614 BR OUTPT ;;;START OUTPUT
8955 ;
8956 ;
8957 ; CARRIAGE RETURN
8958 ;
8959 025360 10$:
8960 025360 032765 000020 000006 BIT #TT.L3S,STSW1(R5) ;;;LA30S?
8961 025366 001414 BEQ 20$ ;;;IF EQ NO
8962 025370 005046 CLR -(SP) ;;;PICKUP CURRENT HORIZONAL POSITION
8963 025372 156316 000016 BISB HORPS(R3),@SP ;;;
8964 025376 006216 ASR @SP ;;;DIVIDE POSITION BY 8.
8965 025400 006216 ASR @SP ;;;
8966 025402 006216 ASR @SP ;;;
8967 025404 062716 022744' ADD #FILTB,@SP ;;;CALCULATE ADDRESS OF FILL TABLE ENTRY
8968 025410 113646 MOVB @(SP)+,-(SP) ;;;GET CORRECT FILL COUNT
8969 025412 042716 177760 BIC #177760,@SP ;;;CLEAR EXTRANEOUS BITS ON WIDE CARRIAGE
8970 025416 052613 BIS (SP)+,@R3 ;;;SET PROPER FILL COUNT
8971 025420 20$:
8972 025420 052713 001000 BIS #CRJT,@R3 ;;;SET CARRIAGE RETURN JUST TYPED
8973 025424 005213 INC @R3 ;;;ALWAYS ONE FILL BYTE
8974 025426 105063 000016 CLRB HORPS(R3) ;;;CLEAR HORIZONTAL POSITION
8975 025432 000416 BR 60$ ;;;OUTPUT CARRIAGE RETURN
8976 ;
8977 ;
8978 ; FORM FEED
8979 ;
8980 025434 30$:
8981 025434 062713 020000 ADD #LFBT*4,@R3 ;;;ADD IN FOUR LINE FEEDS
8982 ;
8983 ; VERTICAL TAB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 126-4
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
8984 ;
8985 025440 40$:
8986 025440 062713 014000 ADD #LFBT*3,@R3 ;;;ADD IN THREE LINE FEEDS
8987 025444 112716 000012 MOVB #12,@SP ;;;CHANGE BYTE TO LINE FEED
8988 ;
8989 ; LINE FEED
8990 ;
8991 025450 50$:
8992 025450 042713 001000 BIC #CRJT,@R3 ;;;CLEAR CARRIAGE RETURN JUST TYPED
8993 025454 032765 000040 000006 BIT #TT.VT5,STSW1(R5) ;;;VT05B?
8994 025462 001411 BEQ 80$ ;;;IF EQ NO
8995 025464 062713 000003 ADD #FLBT*3,@R3 ;;;SET FILL COUNT TO 3
8996 025470 60$:
8997 025470 105063 000011 CLRB FLBYT(R3) ;;;SET NULL FILL BYTE
8998 025474 000404 BR 80$ ;;;
8999 ;
9000 ;
9001 ; BYTE REQUIRES HORIZONTAL POSITION
9002 ;
9003 025476 70$:
9004 025476 042713 001000 BIC #CRJT,@R3 ;;;CLEAR CARRIAGE RETURN JUST TYPED
9005 025502 105263 000016 INCB HORPS(R3) ;;;INCREMENT HORIZONTAL POSITION
9006 025506 80$:
9007 025506 005713 TST @R3 ;;;INPUT MODE?
9008 025510 100003 BPL 81$ ;;;IF PL YES
9009 025512 032713 000040 BIT #CTLO,@R3 ;;;OUTPUT DISABLED?
9010 025516 001316 BNE 5$ ;;;IF NE YES
9011 025520 81$:
9012 025520 105737 031342' TSTB .KLNSW+0 ;;; +++005 KLINIK REMOTE MODE ACTIVE?
9013 025524 003420 BLE 82$ ;;; +++005 NO -- BETTER LEAVE IT ALONE
9014 025526 010546 MOV R5,-(SP) ;;; +++005 SAVE DLS POINTER
9015 025530 013705 031222' MOV KLNPTR,R5 ;;; +++005 GET KLINIK DLS POINTER
9016 025534 016503 000002 MOV TTYEXP(R5),R3 ;;; +++005 POINT TO CSR
9017 025540 001411 BEQ 84$ ;;; +++005 IGNORE IF NOT THERE
9018 025542 116663 000002 000006 MOVB 2(SP),6(R3) ;;; +++005 START KLINIK LINE
9019 025550 052763 000100 000004 BIS #DL.XEN,4(R3) ;;; +++005 ENABLE XMTR INTERRUPTS
9020 025556 052765 000001 000006 BIS #TT.OUT,STSW1(R5) ;;; +++005 SET TTY BUSY
9021 025564 84$:
9022 025564 012605 MOV (SP)+,R5 ;;; +++005 RESTORE CTY POINTER
9023 025566 82$:
9024 025566 016503 000002 MOV TTYEXP(R5),R3 ;;;GET ADDRESS OF CONTROL STATUS REGISTER
9025 025572 022705 035176' CMP #DHTBL,R5 ;;;IS THIS A DL ?
9026 025576 101021 BHI 90$ ;;;YES -- SPECIAL CASE
9027 025600 112637 022700' MOVB (SP)+,DHBUF+CTYSTS ;;;PUT BYTE IN OUTPUT BUFFER
9028 025604 042713 001077 BIC #1077,@R3 ;;;CLEAR CURRENT UNIT
9029 025610 153713 031224' BISB $UNIT,@R3 ;;;SELECT DESIRED UNIT
9030 025614 042723 000060 BIC #60,(R3)+ ;;;
9031 025620 062703 000004 ADD #4,R3 ;;;POINT TO CURRENT ADDRESS REGISTER
9032 025624 012723 022700' MOV #DHBUF+CTYSTS,(R3)+
9033 025630 012723 177777 MOV #-1,(R3)+ ;;;SET BYTE COUNT TO MINUS ONE
9034 ;;; +++006 REMOVED ONE INSTRUCTION
9035 025634 053713 031226' BIS $BTMSK,@R3 ;;;START OUTPUT
9036 025640 000405 BR 99$ ;;; +++005 MARK OUTPUT BUSY AND EXIT
9037 ;
9038 025642 90$:
9039 025642 112663 000006 MOVB (SP)+,6(R3) ;;;OUTPUT BYTE
9040 025646 052763 000100 000004 BIS #DL.XEN,4(R3) ;;;ENABLE OUTPUT INTERRUPT
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 126-5
TTY DRIVER -- $TTOUT (DL11 OUTPUT INTERRUPT)
9041 025654 99$:
9042 025654 000137 024650' JMP TTOUTX ;;; +++005 MARK OUTPUT BUSY AD EXIT
9043 ;
9044 ;
9045 ; END OF INPUT LINE
9046 ;
9047 025660 INPT1:
9048 025660 012703 022662' MOV #CTYSTS+2,R3 ;;;FIND THE TERMINAL STATUS WORD
9049 025664 117337 000000 022724' MOVB @(R3),CRADR ;;;FIND THE LAST CHARACTER
9050 025672 016346 000004 MOV 4(R3),-(SP)
9051 025676 162316 SUB (R3)+,@SP ;;;FIND THE BYTE COUNT
9052 025700 112713 000001 MOVB #IS.SUC&377,@R3 ;;;ASSUME NORMAL TERMINATION
9053 025704 012300 MOV (R3)+,R0 ;;;GET FINAL BYTE AND STATUS
9054 025706 100006 BPL 40$ ;;;IF PL NORMAL TERMINATION
9055 025710 012700 015366 MOV #32*400+366,R0 ;;;ASSUME ^Z
9056 025714 105243 INCB -(R3) ;;;CONTROL Z?
9057 025716 001402 BEQ 40$ ;;;IF EQ YES
9058 025720 012700 000361 MOV #IE.ABO&377,R0 ;;;SET ABORT STATUS
9059 025724 40$:
9060 025724 013701 022726' MOV PKT,R1 ;;;FIND THE PACKET ADDRESS
9061 025730 010037 022724' MOV R0,CRADR ;;;SAVE THE STARTS FIRST WORD
9062 025734 012661 000026 MOV (SP)+,R.PB+2(R1) ;;;STORE THE BYTE COUNT
9063 025740 50$:
9064 025740 CALL INPT0 ;;;CLEAR ECHO IN PROGRESS
025740 004737 025214' JSR PC,INPT0
9065 025744 000137 025116' JMP TTYDNE
9066 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 127
TTY DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)
9068 .SBTTL TTY DRIVER -- .KW11S (KW11 LINE CLOCK INTERRUPT)
9069 ;+
9070 ; **-KW11L LINE CLOCK INTERRUPT SERVICE HANDLER
9071 ;
9072 ; THIS ROUTINE ONLY UPDATES THE COUNT OF CLOCK TICKS
9073 ; IT THEN GOES AND DUMP'S THE DH11 SILO
9074 ; AND THEN DOES THE INTERRUPT SERVICE EXIT
9075 ;-
9076
9077 025750 .KW11S::
9078 025750 105237 031117' INCB .SERFG+1
9079
9080 .SBTTL TTY DRIVER -- $DHINP (DH11 INPUT INTERRUPT)
9081 ;+
9082 ; **-$DHINP-DH11 TERMINAL MULTIPLEXER INPUT INTERRUPTS
9083 ;-
9084
9085 025754 $DHINP:: ;;;REF LABEL
9086 025754 013737 177776 022654' MOV @#PS,DHTMP
9087 025762 CALL R3,DHSAV ;;;SAVE R3 AND SETUP R4 AND R5
025762 004337 027232' JSR R3,DHSAV
9088 025766 012705 035176' MOV #DHTBL,R5 ;;;SET UP BEGINNING OF DH TABLE FOR THIS CONTROLLER
9089 025772 10$:
9090 025772 010537 022656' MOV R5,DHSTSV ;;;SET UP THE HEAD OF THIS CONTROLLER TABLE ADDRESS
9091 025776 016504 000002 MOV TTYEXP(R5),R4 ;;;SET UP EXTERNAL PAGE ADDRESS FOR CONTROLLER
9092 026002 001413 BEQ 30$ ;;;DONE WITH ALL EXISTING CONTROLLERS
9093 026004 20$:
9094 026004 012746 026004' MOV #20$,-(SP) ;;;SET RETURN ADDRESS IN CASE OF PDP11 CHAR
9095 026010 016446 000002 MOV 2(R4),-(SP) ;;;GET NEXT BYTE FROM CONTROLLER SILO
9096 026014 100415 BMI 50$ ;;;PROCESS CHARACTER FROM LINE IF THERE
9097 026016 25$: ;;; +++012
9098 026016 022626 CMP (SP)+,(SP)+ ;;;REMOVE NULL CHARACTER AND RETURN ADDRESS
9099 026020 013705 022656' MOV DHSTSV,R5 ;;;FIND THIS DH
9100 026024 062705 000200 ADD #16.*8.,R5 ;;;MOVE TO NEXT DH
9101 026030 000760 BR 10$ ;;;TRY NEXT DH
9102 ;
9103 026032 30$:
9104 026032 032737 040000 031114' BIT #EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL?
9105 026040 001402 BEQ 40$ ;;;NO -- DON'T BOTHER IT
9106 026042 CALL ..STQ ;;;START TO 10 QUEUE IF POSSIBLE
026042 004737 043630' JSR PC,..STQ
9107 026046 40$:
9108 026046 RETURN ;;;RETURN TO CALLER -- ALL FINISHED
026046 000207 RTS PC
9109 026050 50$:
9110 026050 116605 000001 MOVB 1(SP),R5 ;;; +++008 GET THE LINE NUMBER
9111 026054 042705 177760 BIC #^C17,R5 ;;; +++008 GET RID OF ERRORS, ETC.
9112 026060 006305 ASL R5 ;;; +++008 MAKE A TABLE POINTER TO LINE WTHIN MUX
9113 026062 006305 ASL R5 ;;; +++008
9114 026064 006305 ASL R5 ;;; +++008
9115 026066 063705 022656' ADD DHSTSV,R5 ;;; +++008 FROM BASE OF CONTROLLER TABLE
9116 026072 032765 000010 000006 BIT #TT.ABW,STSW1(R5) ;;; +++008 IN AUTO-BAUD WAIT??
9117 026100 001473 BEQ TTSTCH ;;; +++012 NO -- STORE CHARACTER AND EXIT
9118 ;
9119 026102 55$: ;;; +++012
9120 026102 005002 CLR R2 ;;; +++008 CLEAR COUNTER
9121 026104 012701 000011 MOV #11,R1 ;;; +++008 LOOP COUNT TO R1
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 127-1
TTY DRIVER -- $DHINP (DH11 INPUT INTERRUPT)
9122 026110 60$:
9123 026110 121662 026162' CMPB (SP),CHTBL(R2) ;;; +++008 MATCH A BIT PATTERN??
9124 026114 001403 BEQ 70$ ;;; +++008 YES -- DONE
9125 026116 005202 INC R2 ;;; +++008 NO -- NEXT PATTERN
9126 026120 077105 SOB R1,60$ ;;; +++008 TRY AGAIN
9127 026122 000470 BR TTINPB ;;; +++008 NO MATCH -- FLUSH CHRARACTER AND DISMISS
9128 ;
9129 026124 70$: ;;; +++008 HERE ON BIT PATTERN MATCH
9130 026124 042765 000010 000006 BIC #TT.ABW,STSW1(R5) ;;; +++008 NO LONGER IN AUTO-BAUD WAIT
9131 026132 006302 ASL R2 ;;; +++008 FIND WORD INDEX
9132 026134 016203 026174' MOV BAUDTB(R2),R3 ;;; +++008 LINE SPEED WORD TO R3
9133 026140 CALL .DHSPD ;;; +++008 SET THE LINE SPEED
026140 004737 027430' JSR PC,.DHSPD
9134 026144 CALL .DHSPF ;;; +++008 FLAG THE NEW SPEED
026144 004737 027400' JSR PC,.DHSPF
9135 026150 010446 MOV R4,-(SP) ;;; +++008 SAVE R4
9136 026152 CALL .STTYD ;;; +++008 RING THE LINE
026152 004737 027650' JSR PC,.STTYD
9137 026156 012604 MOV (SP)+,R4 ;;; +++008 RESTORE R4
9138 026160 000451 BR TTINPB ;;; +++008 DISMISS THE INTERRUPT
9139 ;
9140 026162 CHTBL:
9141 026162 214 .BYTE 214 ; <CR> AT 110 BAUD
9142 026163 213 .BYTE 213 ; <CR> AT 110 BAUD
9143 026164 346 .BYTE 346 ; <CR> AT 150 BAUD
9144 026165 015 .BYTE 15 ; <CR> AT 300 BAUD
9145 026166 215 .BYTE 215 ; <CR> AT 300 BAUD
9146 026167 174 .BYTE 174 ; <^C> AT 110 BAUD
9147 026170 036 .BYTE 36 ; <^C> AT 150 BAUD
9148 026171 203 .BYTE 203 ; <^C> AT 300 BAUD
9149 026172 003 .BYTE 3 ; <^C> AT 300 BAUD
9150 .EVEN
9151
9152 026174 BAUDTB:
9153 026174 006307 .WORD 6307 ; 110 BAUD
9154 026176 006307 .WORD 6307 ; 110 BAUD
9155 026200 012503 .WORD 12503 ; 150 BAUD
9156 026202 016703 .WORD 16703 ; 300 BAUD
9157 026204 016703 .WORD 16703 ; 300 BAUD
9158 026206 006307 .WORD 6307 ; 110 BAUD
9159 026210 012503 .WORD 12503 ; 150 BAUD
9160 026212 016703 .WORD 16703 ; 300 BAUD
9161 026214 016703 .WORD 16703 ; 300 BAUD
9162
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 128
TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)
9164 .SBTTL TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)
9165 ;+
9166 ; **-$TTINP-DL11 TERMINAL INPUT INTERRUPTS
9167 ;-
9168 .ENABL LSB
9169 026216 $TTINP:: ;;;REF LABEL
9170 026216 013737 177776 022652' MOV @#PS,DLTMP ;;;SAVE CONTROLLER NUMBER
9171 026224 CALL R3,TTSAV ;;;SAVE R3 AND SETUP R4 AND R5
026224 004337 027270' JSR R3,TTSAV
9172 026230 011400 MOV (R4),R0 ;;;GET STATUS
9173 026232 100470 BMI DLINT ;;;THIS IS MODEM INTERRUPT.
9174 026234 TTINPA: ;;; +++005
9175 026234 020537 031222' CMP R5,KLNPTR ;;; +++005 IS THIS THE KLINIK LINE??
9176 026240 001003 BNE 5$ ;;; +++005 NO -- GO ON
9177 026242 105737 031342' TSTB .KLNSW+0 ;;; +++005 YES -- IS KLINIK ACTIVE??
9178 026246 001461 BEQ 90$ ;;; +++005 NO -- GO AWAY
9179 026250 5$: ;;; +++005
9180 026250 005765 000004 TST STSW0(R5) ;;; +++005 YES -- IS THIS LINE TURNED OFF??
9181 026254 001056 BNE 90$ ;;; +++005 YES -- GO AWAY
9182 026256 016446 000002 MOV 2(R4),-(SP) ;;; +++009 GET INPUT BYTE AND FLAGS
9183 026262 032716 020000 BIT #DL.FER,(SP) ;;; +++009 FRAMING ERROR PRESENT??
9184 026266 001006 BNE TTINPB ;;; +++009 YES -- FORGET IT
9185 026270 TTSTCH:
9186 026270 032765 000400 000006 BIT #TT.CTY,STSW1(R5) ;;;IS THIS THE CTY?
9187 026276 001004 BNE 30$ ;;;YES -- SPECIAL CASE
9188 026300 10$:
9189 026300 CALL ..STCH ;;;STORE CHARACTER WITH PARITY
026300 004737 043112' JSR PC,..STCH
9190 026304 TTINPB: ;;; +++008
9191 026304 20$:
9192 026304 005726 TST (SP)+ ;;;REMOVE THE CHARACTER
9193 026306 RETURN ;;;AND EXIT
026306 000207 RTS PC
9194 026310 30$:
9195 026310 013705 031220' MOV CTYPTR,R5 ;;; +++005 POINT TO REAL CTY
9196 026314 011600 MOV (SP),R0 ;;;GET THE CHARACTER AND
9197 026316 042700 177600 BIC #^C177,R0 ;;;MASK OFF PARITY
9198 026322 122700 000003 CMPB #'C-100,R0 ;;;^C?
9199 026326 001006 BNE 40$ ;;;NO -- DON'T SET EVENT FLAG
9200 026330 052737 100000 031114' BIS #EF.CTC,.COMEF+2 ;;;TELL THE MONITOR
9201 026336 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;;;THIS IS SIGNIFICANT.
9202 026344 40$:
9203 026344 123700 031214' CMPB .BRKCH,R0 ;;;NULL CHARACTER?
9204 026350 001007 BNE 50$ ;;;NO -- ALL OK
9205 026352 052737 000200 032636' BIS #EF.RQM,TTYTSK+A.EF ;;;START PARSER TASK
9206 026360 152737 000001 031116' BISB #EV.SE,.SERFG+0
9207 026366 000746 BR 20$ ;;;IGNORE CHARACTER
9208 ;
9209 026370 50$:
9210 026370 005737 031216' TST .TTP11 ;;;IS THIS PDP11 INPUT?
9211 026374 001066 BNE TTCTY ;;;YES -- GO DO ECHO ETC
9212 026376 032737 020000 031114' BIT #EF.PR2,.COMEF+2 ;;;IS THIS BOOT PROTOCOL?
9213 026404 001735 BEQ 10$ ;;;NO -- THEN JUST TREAT IT AS A NORMAL REQUEST
9214 026406 112637 031300' MOVB (SP)+,.BTSCH ;;;STORE CHARACTER FOR BOOT PROTOCOL
9215 026412 90$:
9216 026412 RETURN
026412 000207 RTS PC
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 128-1
TTY DRIVER -- $TTINP (DL11 INPUT INTERRUPT)
9217 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 129
TTY DRIVER -- DLINT (DL11-E DATASET INTERRUPT SERVICE)
9219 .SBTTL TTY DRIVER -- DLINT (DL11-E DATASET INTERRUPT SERVICE)
9220 ;+
9221 ; DLINT -- DL11E DATASET INTERRUPT SERVICE
9222 ;
9223 ; ENTER WITH:
9224 ;
9225 ; R0 -- CSR FOR THIS DEVICE
9226 ; R4 -- POINTS TO EXTERNAL PAGE FOR THIS DEVICE
9227 ; R5 -- POINTS TO DLS ENTRY FOR THIS DEVICE
9228 ;
9229 ;-
9230
9231 026414 DLINT::
9232 026414 032765 000100 000006 BIT #TT.RMT,STSW1(R5);;; +++005 REMOTE TERMINAL?
9233 026422 001450 BEQ 20$ ;;; +++005 NO -- NOISE - GO AWAY
9234 026424 032700 040000 BIT #DL.RNG,R0 ;;; +++005 YES -- DID IT RING?
9235 026430 001417 BEQ 10$ ;;; +++005 NO -- GO LOOK AT CARRIER
9236 026432 012714 000046 MOV #DL.DTR!DL.DEN!DL.RTS,(R4)
9237 ;;; +++005 SET UP TO WAIT FOR CARRIER
9238 026436 020537 031222' CMP R5,KLNPTR ;;; +++005 IS THIS THE KLINIK LINE??
9239 026442 001012 BNE 10$ ;;; +++005 NO -- GO ON
9240 026444 105737 031342' TSTB .KLNSW+0 ;;; +++005 YES -- ALREADY ACTIVE?
9241 026450 001007 BNE 10$ ;;; +++005 YES -- NOISE - GO ON
9242 026452 052737 001000 032636' BIS #EF.RKR,TTYTSK+A.EF ;;; +++005 NO -- REQUEST KLR
9243 026460 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;;; +++005 REQUEST THE KLINIK RING TASK
9244 026466 000430 BR 90$ ;;; +++005 AND LET IT HANDLE CARRIER
9245 ;
9246 026470 10$:
9247 026470 032700 010000 BIT #DL.CAR,R0 ;;; +++005 CARRIER DETECT UP?
9248 026474 001415 BEQ 15$ ;;; +++005 NO -- GO LOOK AT DATA TERMINAL READY
9249 026476 042765 002004 000006 BIC #TT.CRW!TT.RIP,STSW1(R5)
9250 026504 052714 000100 BIS #DL.REN,(R4) ;;; +++005 ENABLE RCVR INTERRUPTS
9251 026510 020537 031222' CMP R5,KLNPTR ;;; +++005 IS THIS THE KLINIK LINE??
9252 026514 001413 BEQ 20$ ;;; +++005 YES -- GO ON
9253 026516 010446 MOV R4,-(SP) ;;; +++005 NO -- SAVE R4
9254 026520 CALL .STTYD ;;; +++005 TELL -10 ABOUT DIALUP
026520 004737 027650' JSR PC,.STTYD
9255 026524 012604 MOV (SP)+,R4 ;;; +++005 RESTORE R4
9256 026526 000406 BR 20$ ;;; +++005 AND GO AWAY
9257 ;
9258 026530 15$: ;;; +++005 HERE IF CARRIER IS OFF
9259 026530 032714 000002 BIT #DL.DTR,(R4) ;;; +++005 DATA TERMINAL READY LIT?
9260 026534 001403 BEQ 20$ ;;; +++005 NO -- GO ON
9261 026536 052765 002004 000006 BIS #TT.CRW!TT.RIP,STSW1(R5)
9262 ;;; +++005 YES -- WAIT FOR CARRIER
9263 026544 20$:
9264 026544 105714 TSTB (R4) ;;; +++005 RCVR DONE LIT?
9265 026546 100632 BMI TTINPA ;;; +++005 YES -- PROCESS DATA
9266 026550 90$:
9267 026550 RETURN
026550 000207 RTS PC
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 130
TTY DRIVER -- TTCTY (CTY SERVICE)
9269 .SBTTL TTY DRIVER -- TTCTY (CTY SERVICE)
9270
9271 .ENABL LSB
9272 026552 TTCTY:
9273 026552 013705 031220' MOV CTYPTR,R5 ;;;RESET TO CTY AND
9274 026556 012703 022660' MOV #CTYSTS,R3 ;;;GET CTY BLOCK POINTER.
9275 026562 110016 MOVB R0,(SP) ;;;USE CHARACTER WITHOUT PARITY.
9276 026564 132765 000002 000006 BITB #TT.ECH,STSW1(R5) ;;;ECHO IN PROGRESS?
9277 026572 001016 BNE 85$ ;;;IF NE YES
9278 026574 152765 000002 000006 BISB #TT.ECH,STSW1(R5) ;;;SET ECHO IN PROGRESS
9279 026602 122716 000017 CMPB #'O-100,@SP ;;;CONTROL O?
9280 026606 001012 BNE 95$ ;;;IF NE NO
9281 026610 011346 MOV @R3,-(SP) ;;;XOR CTLO BIT
9282 026612 042716 177737 BIC #^C<CTLO>,@SP ;;;WITH STATUS WORD
9283 026616 052713 000040 BIS #CTLO,@R3
9284 026622 042613 BIC (SP)+,@R3
9285 026624 80$:
9286 026624 CALL INPT0 ;;;CLEAR ECHO IN PROGRESS
026624 004737 025214' JSR PC,INPT0
9287 ;
9288 ; CONTROLLER IS BUSY ON OUTPUT-IGNORE INPUT REQUEST
9289 ;
9290 026630 85$:
9291 026630 005726 TST (SP)+ ;;;REMOVE BYTE FROM STACK
9292 026632 90$:
9293 026632 RETURN ;;;EXIT INTERRUPT
026632 000207 RTS PC
9294 ;
9295 ; CONTROLLER IS BUSY ON INPUT OR OUTPUT
9296 ;
9297 026634 95$:
9298 026634 005713 TST @R3 ;;;BUSY ON INPUT?
9299 026636 100772 BMI 80$ ;;;IF MI NO
9300 ;
9301 ; PROCESS NEXT INPUT BYTE
9302 ;
9303 026640 100$:
9304 026640 122716 000177 CMPB #177,@SP ;;;RUBOUT?
9305 026644 001453 BEQ 115$ ;;;IF EQ YES
9306 026646 122716 000025 CMPB #25,@SP ;;;LINE DELETE?
9307 026652 001477 BEQ 125$ ;;;IF EQ YES
9308 026654 122716 000175 CMPB #175,@SP ;;;ALTMODE?
9309 026660 101511 BLOS 1$ ;;;IF LOS YES
9310 026662 122716 000033 CMPB #33,@SP ;;;ALTMODE?
9311 026666 001506 BEQ 1$ ;;;IF EQ YES
9312 026670 122716 000032 CMPB #32,@SP ;;;CONTROL Z?
9313 026674 001510 BEQ 11$ ;;;IF EQ YES
9314 026676 122716 000015 CMPB #15,@SP ;;;CARRIAGE RETURN?
9315 026702 001525 BEQ 41$ ;;;IF EQ YES
9316 026704 122716 000003 CMPB #3,@SP ;;;^C?
9317 026710 001511 BEQ 21$ ;;;YES
9318 026712 122716 000140 CMPB #140,@SP ;;;CHECK FOR LC
9319 026716 103005 BHIS 105$ ;;;NO
9320 026720 122716 000173 CMPB #173,@SP
9321 026724 103402 BLO 105$
9322 026726 042716 000040 BIC #40,@SP ;;;YES
9323 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 130-1
TTY DRIVER -- TTCTY (CTY SERVICE)
9324 ; STORE BYTE IN INPUT BUFFER
9325 ;
9326 026732 105$:
9327 026732 111673 000006 MOVB @SP,@CURBF(R3) ;;;STORE BYTE IN BUFFER
9328 026736 005263 000006 INC CURBF(R3) ;;;INCREMENT BUFFER ADDRESS
9329 026742 105363 000004 DECB RMBYT(R3) ;;;ANY REMAINING SPACE IN BUFFER
9330 026746 001004 BNE 110$ ;;;IF NE YES
9331 026750 005363 000006 DEC CURBF(R3) ;;;BACK UP TO END OF BUFFER
9332 026754 052713 000400 BIS #EOLS,@R3 ;;;TERMINATE ON BYTE COUNT
9333 026760 110$:
9334 026760 032713 000020 BIT #RUBP,@R3 ;;;RUBOUT IN PROGRESS?
9335 026764 001500 BEQ 61$ ;;;IF EQ NO
9336 026766 042713 000020 BIC #RUBP,@R3 ;;;CLEAR RUBOUT IN PROGRESS
9337 026772 000417 BR 120$ ;;;
9338 ;
9339 ;
9340 ; RUBOUT
9341 ;
9342 026774 115$:
9343 026774 026363 000006 000002 CMP CURBF(R3),STRBF(R3) ;;;ANY BYTES TO RUBOUT?
9344 027002 001710 BEQ 80$ ;;;IF EQ NO
9345 027004 005363 000006 DEC CURBF(R3) ;;;BACK UP ONE BYTE
9346 027010 117316 000006 MOVB @CURBF(R3),@SP ;;;GET BYTE TO BE RUBBED OUT
9347 027014 105263 000004 INCB RMBYT(R3) ;;;INCREMENT REMAINING SPACE IN BUFFER
9348 027020 032713 000020 BIT #RUBP,@R3 ;;;RUBOUT ALREADY IN PROGRESS?
9349 027024 001060 BNE 61$ ;;;IF NE YES
9350 027026 052713 000020 BIS #RUBP,@R3 ;;;SET RUBOUT IN PROGRESS
9351 027032 120$:
9352 027032 000316 SWAB @SP ;;;SWAP BYTE TO HIGH BYTE
9353 027034 112716 000134 MOVB #'\,@SP ;;;INSERT BACKSLASH
9354 027040 011663 000014 MOV @SP,MBUFR(R3) ;;;INSERT TEXT IN MULTI-ECHO BUFFER
9355 027044 012716 000002 MOV #2,@SP ;;;SET LENGTH OF BUFFER
9356 027050 000457 BR 81$ ;;;
9357 ;
9358 ;
9359 ; LINE DELETE
9360 ;
9361 027052 125$:
9362 027052 012716 000004 MOV #4,@SP ;;;SET LENGTH OF BUFFER
9363 027056 012746 022734' MOV #CTRLU,-(SP) ;;;SET ADDRESS OF MULTI-ECHO BUFFER
9364 027062 042713 000020 BIC #RUBP,@R3 ;;;CLEAR RUBOUT IN PROGRESS FLAG
9365 027066 013763 022720' 000004 MOV CNT,RMBYT(R3) ;;;RESET REMAINING BYTES IN BUFFER
9366 027074 016363 000002 000006 MOV STRBF(R3),CURBF(R3) ;;;RESET ADDRESS IN BUFFER
9367 027102 000445 BR 91$ ;;;
9368 ;
9369 ;
9370 ; ALTMODE CODES 33, 175, AND 176
9371 ;
9372 027104 1$:
9373 027104 105016 CLRB @SP ;;;SET TO ECHO ZERO BYTE
9374 027106 112763 000033 000005 MOVB #33,FNBYT(R3) ;;;SET FINAL BYTE
9375 027114 000422 BR 51$ ;;;SET END OF LINE SEEN
9376 ;
9377 ;
9378 ; CONTROL Z
9379 ;
9380 027116 11$:
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 130-2
TTY DRIVER -- TTCTY (CTY SERVICE)
9381 027116 105363 000005 DECB FNBYT(R3) ;;;SET CONTROL Z FLAG
9382 027122 012716 000004 MOV #4,@SP
9383 027126 012746 022740' MOV #CTRLZ,-(SP) ;;;SET ADDRESS OF MULTI-ECHO BUFFER
9384 027132 000406 BR 31$
9385 ;
9386 ;
9387 ; CONTROL C
9388 ;
9389 027134 21$:
9390 027134 111663 000005 MOVB @SP,FNBYT(R3) ;;;SET IN LAST CHARACTER
9391 027140 012716 000004 MOV #4,@SP ;;;SET COUNT
9392 027144 012746 022730' MOV #CTRLC,-(SP) ;;;SET CNTRL C
9393 027150 31$:
9394 027150 052713 000400 BIS #EOLS,@R3 ;;;SET END OF LINE
9395 027154 000420 BR 91$ ;;;AND ECHO
9396 ;
9397 ;
9398 ; CARRIAGE RETURN /CNTRL Z
9399 ;
9400 027156 41$:
9401 027156 111663 000005 MOVB @SP,FNBYT(R3)
9402 027162 51$:
9403 027162 052713 000400 BIS #EOLS,@R3 ;;;SET END OF LINE SEEN
9404 027166 61$:
9405 027166 032713 074000 BIT #LFCT,@R3 ;;;ANY LINE FEEDS WAITING?
9406 027172 001002 BNE 71$ ;;;IF NE YES
9407 027174 000137 025262' JMP ECHOB ;;;ECHO BYTE
9408 ;
9409 027200 71$:
9410 027200 111663 000014 MOVB @SP,MBUFR(R3) ;;;SET FOR MULTI-ECHO OF ONE BYTE
9411 027204 012716 000001 MOV #1,@SP ;;;SET LENGTH OF BUFFER
9412 027210 81$:
9413 027210 010346 MOV R3,-(SP) ;;;CALCULATE ADDRESS OF MULTI-ECHO BUFFER
9414 027212 062716 000014 ADD #MBUFR,@SP ;;;
9415 027216 91$:
9416 027216 012663 000012 MOV (SP)+,MEBUF(R3) ;;;INSERT ADDRESS OF MULTI-ECHO BUFFER
9417 027222 112663 000010 MOVB (SP)+,MECNT(R3) ;;;INSERT LENGTH OF BUFFER
9418 027226 000137 025010' JMP OUTPT ;;;START OUTPUT
9419 ;
9420 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 131
TTY DRIVER -- DHSAV (DH11 REGISTER SAVE/RESTORE CO-ROUTINE)
9422 .SBTTL TTY DRIVER -- DHSAV (DH11 REGISTER SAVE/RESTORE CO-ROUTINE)
9423
9424 ; DH11 TERMINAL MULTIPLEXER SAVE ROUTINE
9425 ;
9426 ; THIS ROUTINE SAVES R0 THRU R5 ON THE STACK AND RETURNS:
9427 ;
9428 ; R4 -- POINTS TO EXTERNAL PAGE FOR THIS DEVICE (UNIT)
9429 ; R5 -- POINTS TO THE DLS ENTRY FOR THIS DEVICE (UNIT)
9430 ;
9431 .ENABL LSB
9432 027232 DHSAV:
9433 027232 010046 MOV R0,-(SP) ;SAVE REGISTERS
9434 027234 010146 MOV R1,-(SP)
9435 027236 010246 MOV R2,-(SP)
9436 027240 010446 MOV R4,-(SP)
9437 027242 010546 MOV R5,-(SP)
9438 027244 010346 MOV R3,-(SP) ;;;SET RETURN ADDRESS
9439 027246 013705 022654' MOV DHTMP,R5 ;;;RET SAVED PS WORD
9440 027252 042705 177760 BIC #177760,R5 ;;;CLEAR ALL BUT CONTROLLER NUMBER
9441 027256 000305 SWAB R5 ;;;CONVERT TO WORD INDEX
9442 027260 006205 ASR R5
9443 027262 062705 035176' ADD #DHTBL,R5 ;;;POINT TO THE BEGINNING OF DH TABLE
9444 027266 000417 BR 20$ ;;;FINISH IN COMMON CODE
9445 ;
9446 ;
9447 ; DL11 TERMINAL SAVE ROUTINE
9448 ;
9449 027270 TTSAV:
9450 027270 010046 MOV R0,-(SP) ;SAVE REGISTERS
9451 027272 010146 MOV R1,-(SP)
9452 027274 010246 MOV R2,-(SP)
9453 027276 010446 MOV R4,-(SP)
9454 027300 010546 MOV R5,-(SP)
9455 027302 010346 MOV R3,-(SP) ;;;SET RETURN ADDRESS
9456 027304 013705 022652' MOV DLTMP,R5 ;;;RETRIEVE SAVED PS WORD
9457 027310 042705 177760 BIC #177760,R5 ;;;CLEAR ALL BUT CONTROLLER (UNIT) NUMBER
9458 027314 006305 ASL R5 ;;;CONVERT TO WORD INDEX
9459 027316 006305 ASL R5
9460 027320 006305 ASL R5
9461 027322 062705 035126' ADD #TTTBL,R5 ;;;POINT TO THE BEGINNING OF THE DL TABLE
9462 027326 20$:
9463 027326 016504 000002 MOV TTYEXP(R5),R4 ;;;SET UP EXTERNAL PAGE ADDRESS OF THIS DEVICE
9464 027332 CALL @(SP)+ ;;;CALL THE CALLER BACK
027332 004736 JSR PC,@(SP)+
9465 027334 012605 MOV (SP)+,R5 ;;;RESTORE REGISTERS
9466 027336 012604 MOV (SP)+,R4
9467 027340 012602 MOV (SP)+,R2
9468 027342 012601 MOV (SP)+,R1
9469 027344 012600 MOV (SP)+,R0
9470 027346 012603 MOV (SP)+,R3
9471 027350 000137 004146' JMP ..INTX ;;;EXIT FROM INTERRUPT
9472 ;
9473 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 132
TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)
9475 .SBTTL TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)
9476
9477 ; .DHSPR -- RESET A DH-11 LINE TO DEFAULT AUTO-BAUD SPEED
9478 ;
9479 ; R5 -- POINTS TO DLS TABLE ENTRY FOR THIS DH-11 LINE
9480 ;
9481
9482 .ENABL LSB
9483
9484 027354 .DHSPR::
9485 027354 016546 000004 MOV STSW0(R5),-(SP) ;;; SAVE LINE SPEED WORD AS FLAG
9486 027360 010346 MOV R3,-(SP) ;;; SAVE R3
9487 027362 012703 016703 MOV #16703,R3 ;;; DEFAULT LINE SPEED TO R3 (300 BAUD)
9488 027366 CALL .DHSPD ;;; SET IT
027366 004737 027430' JSR PC,.DHSPD
9489 027372 012603 MOV (SP)+,R3 ;;; RESTORE R3
9490 027374 005726 TST (SP)+ ;;; HAS THE TASK BEEN BLOCKED??
9491 027376 100402 BMI 10$ ;;; YES -- DON'T COUNT THIS LINE
9492 ;
9493 ; .DHSPF -- FLAG LINE SPEED TO BE REPORTED TO KL
9494 ;
9495 ; R5 -- POINTS TO DLS TABLE ENTRY FOR THIS DH-11 LINE
9496 ;
9497
9498 027400 .DHSPF::
9499 027400 005237 031364' INC .ABCNT ;;; INCREMENT THE COUNT
9500 027404 10$:
9501 027404 052765 100000 000004 BIS #BIT15,STSW0(R5) ;;; FLAG THE LINE SPEED
9502 027412 052737 004000 032636' BIS #EF.RSS,TTYTSK+A.EF ;;; REQUEST THE TASK
9503 027420 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;;; DECLARE A SIGNIFICANT EVENT
9504 027426 000426 BR 30$ ;;; AND EXIT
9505 ;
9506 ;
9507 ; .DHSPD -- SET LINE SPEED FOR A DH-11 LINE
9508 ;
9509 ; R3 -- LINE SPEED TO BE SET
9510 ; R5 -- POINTS TO DLS TABLE ENTRY FOR THIS DH-11 LINE
9511 ;
9512
9513 027430 .DHSPD::
9514 027430 010446 MOV R4,-(SP) ;;; SAVE R4
9515 027432 010146 MOV R1,-(SP) ;;; AND R1
9516 027434 010501 MOV R5,R1 ;;; TABLE POINTER TO R1
9517 027436 162701 035176' SUB #DHTBL,R1 ;;; COMPUTE DH-11 LINE NUMBER
9518 027442 100416 BMI 20$ ;;; DON'T TOUCH DL-11
9519 027444 006201 ASR R1 ;;; NOW COMPUTE UNIT NUMBER
9520 027446 006201 ASR R1
9521 027450 006201 ASR R1
9522 027452 042701 177760 BIC #^C17,R1 ;;; WITHIN THIS CONTROLLER
9523 027456 016504 000002 MOV TTYEXP(R5),R4 ;;; POINT TO I/O PAGE
9524 027462 042714 001077 BIC #1077,(R4) ;;; CLEAR OUT OLD LINE
9525 027466 050114 BIS R1,(R4) ;;; SET THE NEW LINE NUMBER
9526 027470 010364 000004 MOV R3,4(R4) ;;; SET THE NEW LINE SPEED
9527 027474 010365 000004 MOV R3,STSW0(R5) ;;; MARK IT IN LINE TABLE TOO
9528 027500 20$:
9529 027500 012601 MOV (SP)+,R1 ;;; RESTORE R1
9530 027502 012604 MOV (SP)+,R4 ;;; AND R4
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 132-1
TTY DRIVER -- .DHSPD (DH-11 AUTO-BAUD SUPPORT)
9531 027504 30$:
9532 027504 RETURN ;;; TO CALLER
027504 000207 RTS PC
9533
9534 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 133
TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)
9536 .SBTTL TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)
9537 ;+
9538 ; **-$DMINT-DM11-BB MODEM CONTROL MULTIPLEXER INTERRUPTS
9539 ;-
9540 .ENABL LSB
9541 027506 $DMINT:: ;;;REF LABEL
9542 027506 013737 177776 022650' MOV @#PS,DMTMP ;;;SAVE CONTROLLER NUMBER
9543 027514 CALL R3,TTSAV ;;;SAVE REGISTERS
027514 004337 027270' JSR R3,TTSAV
9544 027520 013703 022650' MOV DMTMP,R3 ;;;RETRIEVE SAVED PS WORD
9545 027524 042703 177760 BIC #177760,R3 ;;;CLEAR ALL BUT CONTROLLER NUMBER
9546 027530 006303 ASL R3 ;;;CONVERT TO WORD INDEX
9547 027532 006303 ASL R3 ;;;
9548 027534 016304 035062' MOV DMTBL(R3),R4 ;;;GET ADDRESS OF DM11-BB CSR
9549 027540 012405 MOV (R4)+,R5 ;;;GET INTERRUPT STATUS
9550 027542 042705 177760 BIC #177760,R5 ;;;CLEAR ALL BUT UNIT NUMBER
9551 027546 006305 ASL R5 ;;;CONVERT UNIT NUMBER TO WORD INDEX
9552 027550 006305 ASL R5 ;;;
9553 027552 006305 ASL R5 ;;;
9554 027554 066305 035064' ADD DMTBL+2(R3),R5 ;;;CALCULATE ADDRESS OF DHTBL ADDRESS
9555 027560 005737 031362' TST .INHDM ;;;DM INHIBITED?
9556 027564 001405 BEQ 10$ ;;; NO -- GO ON
9557 027566 052714 000001 BIS #1,@R4 ;;;SET RING ENABLE
9558 027572 042744 001200 BIC #1200,-(R4) ;;;RE ENABLE SCAN
9559 027576 RETURN ;;;RETURN
027576 000207 RTS PC
9560 027600 10$:
9561 027600 052714 000007 BIS #7,@R4 ;;;SET REQUEST SEND+DATA ENABLE+RING ENABLE
9562 027604 011402 MOV @R4,R2 ;;;GET UNIT STATUS
9563 027606 005102 COM R2 ;;;COMPLEMENT UNIT STATUS
9564 027610 042744 001200 BIC #1200,-(R4) ;;;REENABLE SCANNING
9565 ;
9566 ; CARRIER OR CLEAR TO SEND TRANSITION
9567 ;
9568 027614 032702 000140 BIT #140,R2 ;;;CARRIER AND CLEAR TO SEND SET?
9569 027620 001030 BNE 40$ ;;;IF NE NO
9570 ;
9571 ; RING TRANSITION
9572 ;
9573 027622 042765 002004 000006 BIC #TT.CRW!TT.RIP,STSW1(R5) ;;;CLEAR CARRIER WAIT
9574 027630 032765 010000 000006 BIT #TT.ABL,STSW1(R5) ;;; +++008 AN AUTO-BAUD LINE??
9575 027636 001404 BEQ .STTYD ;;; +++008 NO -- GO ON
9576 027640 052765 000010 000006 BIS #TT.ABW,STSW1(R5) ;;; +++008 YES -- MARK AUTO-BAUD WAIT
9577 027646 000414 BR 30$ ;;; +++008 AND EXIT
9578 ;
9579 027650 .STTYD:: ;;; +++008
9580 027650 012701 000015 MOV #BC.TDU,R1 ;;;DIALUP FUNCTION
9581 027654 .STTYH:: ;;; +++006
9582 027654 010504 MOV R5,R4 ;;;SET UP TO RETURN DIALUP OR HANGUP
9583 027656 162704 035126' SUB #DLTBL,R4 ;;;FIND UNIT NUMBER IN R4
9584 027662 006204 ASR R4 ;;;DIVIDE BY 8
9585 027664 006204 ASR R4
9586 027666 006204 ASR R4
9587 027670 012703 000004 MOV #D.CDLS,R3 ;;;DATA LINE SCANNER
9588 027674 CALL ..STFC ;;;START FUNCTION
027674 004737 043252' JSR PC,..STFC
9589 027700 30$:
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 133-1
TTY DRIVER -- $DMINT (DM11 MODEM CONTROL INTERRUPT)
9590 027700 RETURN
027700 000207 RTS PC
9591 027702 40$:
9592 027702 052765 002004 000006 BIS #TT.CRW!TT.RIP,STSW1(R5) ;;;SET CARRIER WAIT
9593 027710 RETURN ;;;RETURN FROM INTERRUPT
027710 000207 RTS PC
9594 .DSABL LSB
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 134
TTY DRIVER -- .DMHUP (DM11 HANGUP)
9596 .SBTTL TTY DRIVER -- .DMHUP (DM11 HANGUP)
9597 ;
9598 ; SUBROUTINE TO HANG UP A DM11-BB UNIT IF NOT READY
9599 ;
9600 027712 .DMHUP::
9601 027712 032765 000100 000006 BIT #TT.RMT,STSW1(R5) ;;;REMOTE TTY??
9602 027720 001435 BEQ 30$ ;;;NO -- FORGET IT
9603 027722 032737 040000 031114' BIT #EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL?
9604 027730 001431 BEQ 30$ ;;;NO -- DON'T DO THE HANGUP NOW -- WAIT FOR PRIMARY
9605 027732 042765 002014 000006 BIC #TT.CRW!TT.ABW!TT.RIP,STSW1(R5) ;;; +++008 CLEAR CARRIER WAIT AND ENABLE UNIT
9606 027740 042711 001040 BIC #1040,@R1 ;;;DISABLE SCAN
9607 027744 10$:
9608 027744 032711 000020 BIT #20,@R1 ;;;SCAN STOPPED?
9609 027750 001375 BNE 10$ ;;;IF NE NO
9610 027752 042711 001017 BIC #1017,@R1 ;;;CLEAR CURRENT UNIT
9611 027756 050421 BIS R4,(R1)+ ;;;SELECT DESIRED UNIT
9612 027760 012711 000001 MOV #1,@R1 ;;;ENABLE RING INTERRUT
9613 027764 010446 MOV R4,-(SP)
9614 027766 010346 MOV R3,-(SP) ;;;SAVE REGISTERS
9615 027770 010146 MOV R1,-(SP)
9616 027772 012701 000016 MOV #BC.THU,R1 ;;;SEND HANGUP
9617 027776 CALL .STTYH ;;; +++006 SEND TO 10
027776 004737 027654' JSR PC,.STTYH
9618 030002 012601 MOV (SP)+,R1 ;;;RESTORE
9619 030004 012603 MOV (SP)+,R3
9620 030006 012604 MOV (SP)+,R4
9621 030010 20$:
9622 030010 052741 000140 BIS #140,-(R1) ;;;RESTART SCAN AND ENABLE INTERRUPT
9623 030014 30$:
9624 030014 RETURN ;;;
030014 000207 RTS PC
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 135
TTY DRIVER -- .DLHUP (DL11E HANGUP)
9626 .SBTTL TTY DRIVER -- .DLHUP (DL11E HANGUP)
9627 ;+
9628 ; THIS ROUTINE SERVICES A DL11-E HANGUP REQUEST.
9629 ; IF THE KLINIK LINE IS ACTIVE, THE KLINIK DISCONNECT TASK, KLD, IS
9630 ; REQUESTED. OTHERWISE THE LINE IS HUNG UP HERE
9631 ;
9632 ; INPUT ARGUMENTS:
9633 ;
9634 ; R5 POINTS TO THE DLS TABLE ENTRY FOR THIS INE
9635 ;
9636 ; OUTPUT ARGUMENTS:
9637 ;
9638 ; NONE.
9639 ;-
9640
9641 030016 .DLHUP::
9642 030016 032765 000100 000006 BIT #TT.RMT,STSW1(R5) ;;; REMOTE LINE??
9643 030024 001445 BEQ 90$ ;;; NO -- FORGET IT
9644 030026 016504 000002 MOV TTYEXP(R5),R4 ;;; YES -- SAVE I/O PAGE ADDRESS
9645 030032 023705 031222' CMP KLNPTR,R5 ;;; IS THIS THE KLINIK LINE??
9646 030036 001015 BNE 10$ ;;; NO -- GO ON
9647 030040 105737 031342' TSTB .KLNSW+0 ;;; YES -- IS IT ACTIVE??
9648 030044 001424 BEQ 20$ ;;; INACTIVE -- JUST HANG IT UP
9649 030046 112737 000002 031343' MOVB #2,.KLNSW+1 ;;; FLAG THE DISCONNECT
9650 030054 052737 002000 032636' BIS #EF.RKH,TTYTSK+A.EF ;;; REQUEST KLD
9651 030062 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;;; DECLARE A SIG EVENT
9652 030070 000423 BR 90$ ;;; AND GO AWAY
9653 ;
9654 030072 10$:
9655 030072 032737 040000 031114' BIT #EF.PR1,.COMEF+2;;; PRIMARY PROTOCOL RUNNING?
9656 030100 001406 BEQ 20$ ;;; NO -- WAIT FOR IT
9657 030102 010446 MOV R4,-(SP) ;;; YES -- SAVE R4
9658 030104 012701 000016 MOV #BC.THU,R1 ;;; HANGUP FUNCTION TO R1
9659 030110 CALL .STTYH ;;; TELL THE KL
030110 004737 027654' JSR PC,.STTYH
9660 030114 012604 MOV (SP)+,R4 ;;; RESTORE I/O PAGE POINTER
9661 030116 20$:
9662 030116 005764 000002 TST 2(R4) ;;; CLEAR INPUT FLAGS
9663 030122 012714 000140 MOV #DL.DEN!DL.REN,(R4) ;;; HANG THE LINE UP
9664 030126 042765 002004 000006 BIC #TT.CRW!TT.RIP,STSW1(R5) ;;; NO LONGER IN CARRIER WAIT
9665 030134 005065 000004 CLR STSW0(R5) ;;; ENABLE INPUT SIDE IF IT WASN'T
9666 030140 90$:
9667 030140 RETURN ;;; AND EXIT
030140 000207 RTS PC
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 136
TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)
9669 .SBTTL TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)
9670 ;+
9671 ; THIS ROUTINE INSURES THAT THE CTY IS RUNNING AND TIMES OUT THE
9672 ; DL11-E LINE WHEN CARRIER IS LOST.
9673 ;
9674 ; INPUTS:
9675 ;
9676 ; NONE
9677 ;
9678 ; OUTPUTS:
9679 ;
9680 ; NONE
9681 ;
9682 ; NOTE:
9683 ;
9684 ; NXM VECTOR IS ALTERED DURING POWER FAIL RECOVERY
9685 ;-
9686
9687 030142 .DLTMO::
9688 030142 012705 035126' MOV #DLTBL,R5 ; +++005 GET LOCAL DL11C POINTER
9689 030146 016504 000002 MOV TTYEXP(R5),R4 ; +++005 AND EXTERNAL PAGE POINTER
9690 030152 001416 BEQ 10$ ; +++005 IF NO ONE HAS THE LINE
9691 030154 005765 000004 TST STSW0(R5) ; +++005 IS THIS LINE TURNED OFF??
9692 030160 001002 BNE 5$ ; +++005 YES -- GO ON
9693 030162 052714 000100 BIS #DL.REN,(R4) ; +++005 ENABLE RCVR AND
9694 030166 5$: ; +++005
9695 030166 052764 000100 000004 BIS #DL.XEN,4(R4) ; +++005 XMTR INTERRUPTS
9696 030174 005737 040400' TST .PFIOW ; +++005 IS THIS A POWER FAIL START??
9697 030200 001403 BEQ 10$ ; +++005 NO -- GO ON
9698 030202 012737 030404' 000004 MOV #100$,@#4 ; +++005 YES -- SET NXM TRAP FOR DEVICE CHECKS
9699 030210 10$:
9700 030210 012705 035136' MOV #DLETBL,R5 ; +++005 GET DL11-E TABLE POINTER
9701 030214 012700 000004 MOV #DLECNT,R0 ; +++005 COUNT OF DL11-E'S TO R0
9702 030220 001470 BEQ 90$ ; +++005 GO AWAY IF NO DL11-E'S
9703 030222 20$:
9704 030222 016504 000002 MOV TTYEXP(R5),R4 ; +++005 EXTERNAL PAGE POINTER TO R4
9705 030226 001462 BEQ 80$ ; +++005 TRY NEXT IF THIS ONE ISN'T THERE
9706 030230 052714 000040 BIS #DL.DEN,(R4) ; +++005 ENABLE DATASET INTERRUPTS
9707 030234 052764 000100 000004 BIS #DL.XEN,4(R4) ; +++005 SO
9708 030242 005765 000004 TST STSW0(R5) ; +++005 IS THIS LINE TURNED OFF??
9709 030246 001002 BNE 25$ ; +++005 YES -- GO ON
9710 030250 052714 000100 BIS #DL.REN,(R4) ; +++005 NO -- ENABLE RCVR INTERRUPTS
9711 030254 25$:
9712 030254 005737 040400' TST .PFIOW ; +++005 POWER FAIL??
9713 030260 001420 BEQ 30$ ; +++005 NO -- GO ON
9714 030262 032714 010000 BIT #DL.CAR,(R4) ; +++005 YES -- IS CARRIER DETECT UP??
9715 030266 001406 BEQ 27$ ; +++005 NO -- GO ON
9716 030270 052714 000006 BIS #DL.DTR!DL.RTS,(R4) ; +++005 ENABLE THIS DL11-E LINE
9717 030274 042765 002004 000006 BIC #TT.CRW!TT.RIP,STSW1(R5) ; +++005 CLEAR THE TIMEOUT REQUEST
9718 030302 000434 BR 80$ ; +++005 AND TRY THE NEXT ONE
9719 ;
9720 030304 27$:
9721 030304 032714 000002 BIT #DL.DTR,(R4) ; +++005 IS DATA TERMINAL READY UP??
9722 030310 001404 BEQ 30$ ; +++005 NO -- GO ON
9723 030312 052765 002004 000006 BIS #TT.CRW!TT.RIP,STSW1(R5) ; +++005 YES -- SET CARRIER WAIT STATE
9724 030320 000425 BR 80$ ; +++005 AND DO THE NEXT LINE
9725 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 136-1
TTY DRIVER -- .DLTMO (DL11-E MODEM CONTROL TIMEOUT)
9726 030322 30$:
9727 030322 032765 000004 000006 BIT #TT.CRW,STSW1(R5) ; +++005 WAITING FOR CARRIER??
9728 030330 001421 BEQ 80$ ; +++005 NO -- GO ON
9729 030332 032765 002000 000006 BIT #TT.RIP,STSW1(R5) ; +++005 YES -- IS THIS THE FIRST TIME??
9730 030340 001404 BEQ 40$ ; +++005 NO -- GO TURN THE LINE OFF
9731 030342 042765 002000 000006 BIC #TT.RIP,STSW1(R5) ; +++005 YES -- SET TIMEOUT REQUEST
9732 030350 000411 BR 80$ ; +++005 AND TRY THE NEXT LINE
9733 ;
9734 030352 40$:
9735 030352 .INH6 ; +++005 DISALLOW INTERRUPTS
030352 013746 177776 MOV @#PS,-(SP)
030356 112737 000300 177776 MOVB #300,@#PS
9736 030364 CALL .DLHUP ;;; +++005 HANG UP THE LINE
030364 004737 030016' JSR PC,.DLHUP
9737 030370 .ENB6 ;;; +++005 ALLOW INTERRUPTS
030370 012637 177776 MOV (SP)+,@#PS
9738 030374 80$:
9739 030374 062705 000010 ADD #^D8,R5 ; +++005 POINT TO THE NEXT DLS ENTRY
9740 030400 077070 SOB R0,20$ ; +++005 DO THE NEXT LINE
9741 030402 90$:
9742 030402 RETURN
030402 000207 RTS PC
9743 030404 100$: ; +++005 HERE ON NXM INTERRUPT
9744 030404 005065 000002 CLR TTYEXP(R5) ; +++005 SET NON-EXISTENT DEVICE
9745 030410 022626 CMP (SP)+,(SP)+ ; +++005 CLEAR THE INTERRUPT
9746 030412 000770 BR 80$ ; AND TRY THE NEXT LINE
9747 ;
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 137
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
9749 .SBTTL TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
9750 ;
9751 ; DM11-BB TIME OUT ROUTINE
9752 ;
9753 ; THIS ROUTINE IS ENTERED EVERY X SECONDS FROM THE TTY DISPATCH ROTUINE
9754 ; TO CHECK FOR DM11-BB TIMEOUTS.
9755 ;
9756 ; INPUTS:
9757 ;
9758 ; NONE
9759 ;
9760 ; OUTPUTS:
9761 ;
9762 ; ALL DM11-BB UNITS ARE EXAMINED FOR TIMEOUT. IF A TIMEOUT OCCURS,
9763 ; THEN THE UNIT IS HUNG UP.
9764 ; REGISTERS ARE NOT PRESERVED
9765 ;
9766 .ENABL LSB
9767 030414 .DMTMO::
9768 030414 012700 035062' MOV #DMTBL,R0 ;SET UP TABLE POINTERS
9769 030420 012701 035176' MOV #DHTBL,R1
9770 030424 012702 000200 MOV #DHCNT,R2 ;COUNT OF DH11'S
9771 030430 005737 040400' TST .PFIOW ;IS THIS A POWER FAIL START ?
9772 030434 001403 BEQ 20$ ;NO -- DON'T TRAP FOR DH COUNTING
9773 030436 012737 031040' 000004 MOV #125$,@#4 ;YES -- SET UP TO TAKE POWER FAIL
9774 030444 20$:
9775 030444 016104 000002 MOV 2(R1),R4 ;FIND THE ADDRESS OF THE DH
9776 030450 001514 BEQ 70$ ;DONE -- QUIT
9777 030452 032714 002000 BIT #002000,@R4 ;CHECK FOR NXM
9778 030456 001003 BNE 59$ ;YES -- HANDLE AS TIMEOUT
9779 030460 032714 000100 BIT #100,@R4 ;CHECK TO SEE IF INTERRUPTS ENABLED
9780 030464 001103 BNE 60$ ;YES -- DON'T BOTHER THIS DH
9781 030466 59$:
9782 030466 012714 004000 MOV #004000,@R4 ;MASTER CLEAR DH
9783 030472 012764 000040 000016 MOV #32.,16(R4) ;NO -- SET IT UP -- INIT SILO
9784 030500 012705 000020 MOV #16.,R5 ;COUNT OF DH11 LINES IN THIS GROUP
9785 030504 005014 CLR @R4 ;START WITH UNIT 0
9786 030506 30$:
9787 030506 016164 000004 000004 MOV STSW0(R1),4(R4) ;SET LINE SPEED
9788 030514 032761 000100 000006 BIT #TT.RMT,STSW1(R1) ;REMOTE TTY?
9789 030522 001412 BEQ 40$ ;NO -- DON'T SET UP DM11
9790 030524 011403 MOV @R4,R3 ;PICK UP THE UNIT NUMBER
9791 030526 042703 177760 BIC #177760,R3 ;MASK OFF UNIT BITS
9792 030532 010330 MOV R3,@(R0)+ ;SET IT IN DM
9793 030534 014003 MOV -(R0),R3 ;FIND THE DM ADDRESS
9794 030536 012763 000007 000002 MOV #7,2(R3) ;ENABLE LINE
9795 030544 012713 000140 MOV #140,@R3 ;ENABLE SCAN
9796 030550 40$:
9797 030550 005214 INC @R4 ;UPDATE UNIT NUMBER
9798 030552 062701 000010 ADD #8.,R1 ;POINT TO NEXT TABLE ENTRY
9799 030556 077525 SOB R5,30$ ;DO UNTIL DONE
9800 030560 012714 030100 MOV #30100,@R4 ;ENABLE DH
9801 030564 005737 040400' TST .PFIOW ;POWER FAIL?
9802 030570 001037 BNE 50$ ;YES -- DON'T LOG
9803 030572 010437 031106' MOV R4,TTLOGE ;NO -- ERROR LOG
9804 030576 010046 MOV R0,-(SP) ;SAVE REGISTERS
9805 030600 010146 MOV R1,-(SP)
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 137-1
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
9806 030602 010246 MOV R2,-(SP)
9807 030604 010346 MOV R3,-(SP)
9808 030606 012703 000003 MOV #D.CDH1,R3 ;SET DEVICE NAME
9809 030612 012702 000001 MOV #1,R2 ;EVENT FLAG 1
9810 030616 012701 100007 MOV #BC.HDS+100000,R1 ;DEVICE STATUS
9811 030622 012700 031102' MOV #TTERLG,R0 ;BUFFER ADDRESS
9812 030626 CALL ..STIN ;START INDIRECT FUNCTION
030626 004737 043442' JSR PC,..STIN
9813 030632 103412 BCS 45$ ;FORGET IT PROTOCOL NOT RUNNING
9814 030634 42$:
9815 030634 032737 040000 031114' BIT #EF.PR1,.COMEF+2 ;CHECK FOR PRIMARY PROTOCOL
9816 030642 001406 BEQ 45$ ;IF OFF -- DISAPPEAR
9817 030644 013701 031110' MOV .CRTSK,R1 ;EVENT FLAG SET YET?
9818 030650 032761 000001 000020 BIT #1,A.EF(R1)
9819 030656 001766 BEQ 42$ ;NO -- CONTINUE WAITING
9820 030660 45$:
9821 030660 012603 MOV (SP)+,R3
9822 030662 012602 MOV (SP)+,R2
9823 030664 012601 MOV (SP)+,R1
9824 030666 012600 MOV (SP)+,R0
9825 030670 50$:
9826 030670 022020 CMP (R0)+,(R0)+ ;MOVE TO NEXT ENTRY
9827 030672 000664 BR 20$ ;AND TRY NEXT DH
9828 ;
9829 030674 60$:
9830 030674 062701 000200 ADD #16.*8.,R1 ;DO THE NEXT DH
9831 030700 000773 BR 50$
9832 ;
9833 030702 70$:
9834 030702 012746 030712' MOV #75$,-(SP)
9835 030706 024646 CMP -(SP),-(SP)
9836 030710 000453 BR 125$
9837 ;
9838 030712 75$:
9839 030712 012700 035062' MOV #DMTBL,R0 ;FIND THE HEAD OF THE DM TABLE
9840 030716 013702 034736' MOV .DQDH0+Q.DZ,R2 ;SET UP THE COUNT OF DH11'S
9841 030722 001466 BEQ 127$ ;QUIT IF NOTHING
9842 030724 80$:
9843 030724 005004 CLR R4 ;SET UNIT NUMBER
9844 030726 012001 MOV (R0)+,R1 ;SET EXTERNAL PAGE ADR OF DM
9845 030730 012005 MOV (R0)+,R5 ;FIND THE DH TABLE ENTRY
9846 030732 90$:
9847 030732 132765 000004 000006 BITB #TT.CRW,STSW1(R5) ;WAITING FOR CARRIER?
9848 030740 001426 BEQ 110$ ;IF EQ NO
9849 030742 032765 002000 000006 BIT #TT.RIP,STSW1(R5) ;TIMING OUT?
9850 030750 001017 BNE 100$ ;NOT THIS TIME
9851 030752 .INH6 ; DISALLOW INTERRUPTS
030752 013746 177776 MOV @#PS,-(SP)
030756 112737 000300 177776 MOVB #300,@#PS
9852 030764 CALL .DMHUP ;;;HANG UP UNIT
030764 004737 027712' JSR PC,.DMHUP
9853 030770 032765 010000 000006 BIT #TT.ABL,STSW1(R5) ;;; +++008 IS THIS AN AUTO-BAUD LINE??
9854 030776 001402 BEQ 99$ ;;; +++008 NO -- GO ON
9855 031000 CALL .DHSPR ;;; +++008 YES -- RESET LINER SPEED
031000 004737 027354' JSR PC,.DHSPR
9856 031004 99$:
9857 031004 .ENB6 ;;; ALLOW INTERRUPTS
TTYDRR - GENERAL TTY HANDLER MACRO M1108 16-DEC-77 11:28 PAGE 137-2
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
031004 012637 177776 MOV (SP)+,@#PS
9858 031010 100$:
9859 031010 042765 002000 000006 BIC #TT.RIP,STSW1(R5) ;SET TIMEOUT DONE
9860 031016 110$:
9861 031016 062705 000010 ADD #8.,R5 ;POINT AT NEXT ENTRY
9862 031022 005302 DEC R2 ;CHECK COUNT
9863 031024 101425 BLOS 127$ ;DONE
9864 031026 120$:
9865 031026 005204 INC R4 ;ADD 1 TO UNIT COUNT
9866 031030 032704 000020 BIT #20,R4 ;CHECK FOR OVERFLOW
9867 031034 001736 BEQ 90$ ;GET NEXT
9868 031036 000732 BR 80$ ;DO NEXT ENTRY
9869 ;
9870 031040 125$:
9871 031040 005061 000002 CLR 2(R1) ;INDICATE NO MORE DH'S
9872 031044 162701 035176' SUB #DHTBL,R1 ;FIND THE NUMBER OF DH'S
9873 031050 006201 ASR R1
9874 031052 006201 ASR R1
9875 031054 006201 ASR R1
9876 031056 010137 034736' MOV R1,.DQDH0+Q.DZ ;SET UP DH LINE COUNT
9877 031062 062701 000005 ADD #DLCNT,R1
9878 031066 010137 034676' MOV R1,.DQPBA+Q.DZ
9879 031072 010137 034756' MOV R1,.DQDLS+Q.DZ ;SET UP NUMBER OF LINES
9880 031076 022626 CMP (SP)+,(SP)+ ;REMOVE JUNK
9881 031100 127$:
9882 031100 RETURN ;RETURN TO CALLER
031100 000207 RTS PC
9883 .DSABL LSB
9884
9885 031102 TTERLG:
9886 031102 000006 .WORD 6 ;ERROR LOGGING WORD
9887 031104 002100 .WORD DV.LOG!DV.LIN
9888 031106 TTLOGE:
9889 031106 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 138
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
9891 .TITLE SCOMM - COMMON DATA AND SUBROUTINES
9892 031110 IDENT$ 10,12,RSX$$F
.IDENT /B10120/
9893 ;
9894 ; COPYRIGHT (C) 1975, 1978 BY
9895 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
9896 ;
9897 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
9898 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
9899 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
9900 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
9901 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
9902 ;
9903 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
9904 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
9905 ; CORPORATION.
9906 ;
9907 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
9908 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
9909 ;
9910 ; MODULE: "SCOMM"
9911 ; VERSION: 10-12
9912 ; AUTHOR: R. MCLEAN
9913 ; DATE: 19 JUL 75
9914 ;
9915 ;
9916 ; MODIFICATIONS:
9917 ;
9918 ; THIS MODULE CONTAINS:
9919 ;
9920 ; 1 -- THIS MODULE CONTAINS SYSTEM COMMON MODULES AND TABLES
9921 ;
9922 ; NO. DATE PROGRAMMER PURPOSE
9923 ; --- ---- ---------- -------
9924 ; 001 27-JUL-76 J. MASSE CHANGE 'LBNL' FOR DX0 & DX1
9925 ; FROM 496. TO 494.
9926 ; 002 8-AUG-76 J. MASSE CHANGE VERSION NO. TO 004A
9927 ; 003 9-AUG-76 J. MASSE ADD KLINIK HOOKS
9928 ; 004 20-OCT-76 A. PECKHAM ADD DORBELL COUNTER
9929 ; 005 20-OCT-76 A. PECKHAM CHANGE VERSION NO. TO 006A
9930 ; 006 03-FEB-77 R. BELANGER ADD GENERALIZED DL11E
9931 ; SERVICE AND NEW KLINIK
9932 ; HOOKS AND HANDLES
9933 ; 007 07-MAR-77 A. PECKHAM FIXED BUG IN ..STTY
9934 ; 008 14-MAR-77 R. BELANGER CONDITIONALLY REMOVE
9935 ; SUPPORT FOR DTE20 DIRECTIVES
9936 ; ADD CODE FOR DYNAMIC ALLOCATION
9937 ; OF .BGBUF AND .FREPL
9938 ; 009 15-JUL-77 R. BELANGER ADD AUTO BAUD SUPPORT
9939 ; 010 02-SEP-77 R. BELANGER XON/XOFF BUG FIX
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 139
TTY DRIVER -- .DMTMO (DM11 MODEM CONTROL TIMEOUT)
9941 001400 POLMIN==1400
9942 ;
9943 000001 R$$11D=1
9944 ;
9945 ; MACRO LIBRARY CALLS
9946 ;
9948 .MCALL .CRASH
9949 .MCALL .PUDEN,.STDEN,.ATLEN,MTPI,MFPI,MTPS,MFPS,CALL,RETURN,.INH5,.ENB5
9950 .MCALL $DEF,F11DF$
9951 .MCALL .INH0,.ENB0,WSIG$S
9952 .MCALL .ENB,.INH,.ENB6,.INH6,.TPDEN,.PUDEN,.DQPEN
9954 031110 $DEF
9955 031110 F11DF$
9956
9957 .MACRO RSXVR$ KEY,FRM,VER,EDT,NUM
9958 .IF B,NUM
9959 .IF NB,FRM
9960 RSXVR$ \KEY,\FRM,\VER,\EDT,0
9961 .IFF
9962 RSXVR$ \KEY,200,\VER,\EDT,0
9963 .ENDC
9964 .MEXIT
9965 .IFF
9966 .IF GE,VER-10
9967 .IF GE,EDT-10
9968 .ASCIZ <KEY><FRM>\'VER'-'EDT'\<200>
9969 .IFF
9970 .ASCIZ <KEY><FRM>\'VER'-0'EDT'\<200>
9971 .ENDC
9972 .IFF
9973 .IF GE,EDT-10
9974 .ASCIZ <KEY><FRM>\0'VER'-'EDT'\<200>
9975 .IFF
9976 .ASCIZ <KEY><FRM>\0'VER'-0'EDT'\<200>
9977 .ENDC
9978 .ENDC
9979 .ENDC
9980 .ENDM RSXVR$
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 140
SCOMM MODULE -- COMMON GLOBAL DATA
9982 .SBTTL SCOMM MODULE -- COMMON GLOBAL DATA
9983 ;
9984 ; CURRENT TASK POINTER (POINTS TO ACTIVE TASK LIST NODE OF CURRENT TASK
9985 ;
9986 031110 000000 .CRTSK::.WORD 0
9987 ;
9988 031112 000000 000000 .COMEF::.WORD 0,0 ;COMMON EVENT FLAGS
9989 ;
9990 031116 000000 .SERFG::.WORD 0 ;SIG EVENT FLAG
9991 031120 000000 .SEWFL::.WORD 0 ;SIG EVENT WAIT FLAG
9992 ;
9993 031122 000000 .CKASS::.WORD 0 ;AST ADDRESS FOR CURRENT TASK (CLOCK)
9994 ;
9995 031124 000000 .PFASS::.WORD 0 ;AST ADDRESS FOR CURRENT TASK (POWER FAIL)
9996 ;
9997 .BLKW 20
9998 ;
9999 031166 001600 .MSIZE::.WORD 1600 ; MEMORY SIZE
10000 ;
10001 031170 000000 000000 .RPADR::.WORD 0,0 ;!!!!RPADR AND RPSIZ MUST BE IN THIS ORDER
10002 031174 000000 000000 .RPSIZ::.WORD 0,0 ;!!!
10003 ;
10004 031200 000000 EMTSTK::.WORD 0 ;EMT SAVED DURING EMT STACK
10005 031202 000000 TRPASV::.WORD 0 ;SAVED PS OF EMT/TRAP
10006 031204 000000 DEXST:: .WORD 0 ;DEXDONE TIMEOUT
10007
10008 031206 000000 DEXTM3::.WORD 0 ;EXAMINE WORD 3 (TEMP STORAGE) TO BE
10009 031210 000000 DEXTM2::.WORD 0 ;EXAMINE WORD 2 -USED ONLY BECAUSE EXAMINE
10010 031212 000000 DEXTM1::.WORD 0 ;EXAMINE WORD 1 - OR DEPOSIT MAY FAIL AND MUST BE REDONE
10011
10012 031214 000034 .BRKCH::.WORD '\-100 ;BREAK CHARACTER (^\)
10013 031216 000000 .TTP11::.WORD 0 ;TTY PDP11 INPUT IN PROGRESS
10014 031220 .CTYPT::
10015 031220 035126' CTYPTR::.WORD DLTBL ;CONSOLE TTY TABLE POINTER
10016 031222 .KLNPT::
10017 031222 035136' KLNPTR::.WORD DLETBL ; +++006 KLINIK LINE POINTER
10018 031224 000000 $UNIT:: .WORD 0 ;DH UNIT NUMBER IF CTY
10019 031226 000000 $BTMSK::.WORD 0 ;MASK TO START CONSOLE TTY (DH)
10020 ;
10021 ; THE NEXT TWO BYTES MUST BE KEPT TOGETHER IN THEIR CURRENT ORDER !!!!
10022 ;
10023 031230 000401 .NOERR::.WORD 401 ;DO NOT RECOGNIZE KL ERROR IF NON-ZERO
10024 031231' .NOHLT == .NOERR+1 ;DO NOT PANIC IF KL HALTS IF NON-ZERO
10025 ;
10026 031232 000000 .TKTN:: .WORD 0 ;NON ZERO IF TKTN REQUIRED
10027 031234 000000 .KLITK::.WORD 0 ;KL ATTENTION REQUEST
10028 ;
10029 031236 000000 .KLIWD::.WORD 0 ;KL WORD TO DETERMINE BOOT PARAMETERS
10030 ;
10031 031240 000000 .TICKS::.WORD 0
10032 031242 000000 .CLKSW::.WORD 0 ;CLOCK OVERFLOW SWITCH
10033 031244 .DATE::
10034 031244 000000 .DATE3::.WORD 0
10035 031246 003671 .YEAR:: .WORD 1977.
10036 031250 000 .DAY:: .BYTE 0.
10037 031251 004 .MON:: .BYTE 4.
10038 031252 000 .DST:: .BYTE 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 140-1
SCOMM MODULE -- COMMON GLOBAL DATA
10039 031253 000 .DOW:: .BYTE 0
10040 031254 000000 000400 .SSM:: .WORD 0,400
10041 031260 000074 .TKPS:: .WORD .CYLTM
10042 ;
10043 031262 002405 .SYUIC::.WORD 5.*400+5. ;SYSTEM UIC [5,5]
10044 ;
10045 031264 .VERNO::RSXVR$ RSX$$K,RSX$$F,RSX$$V,RSX$$E ; RSX20F VERSION NUMBER.
031264 126 102 061 .ASCIZ <126><102>\12-12\<200>
031267 062 055 061
031272 062 200 000
10046 .EVEN
10047 ;
10048 031276 000000 .BTPRM::.WORD 0 ;BOOT PARAMETER
10049 031300 000000 .BTSCH::.WORD 0 ;CHARACTER SAVED -- FOR SECONDARY PROTOCOL
10050 031302 000001 .ACKAL::.WORD 1 ;ACK ALL SWITCH
10051 031304 000000 .RPUNT::.WORD 0 ;RP UNIT NUMBER FOR RPADR ETC.
10052 031306 000000 .FEACT::.WORD 0 ;FE DEVICE AVAILABLE FOR DB ACCESS WHEN .NE. 0
10053 031310 000000 .KLERW::.WORD 0 ;KL WORD FOR ERROR REPORTING BY SETSPD
10054 ;
10055 ; NOTE --
10056 ; THE NEXT 32 BYTES MUST REMAIN CONTIGUOUS AND IN THE SAME ORDER
10057 ;
10058 031312 000026 .KLNPB::.WORD KLNPLN ; +++003 KLINIK PARAMETER BLOCK LENGTH
10059 ; +++003 BUFFER FOR PARAMETER SAVE STARTS HERE
10060 031314 .KLNLB:: ; +++003
10061 031314 000024 .KLNBC::.WORD KLNPLN-2 ; +++003 BYTE COUNT FOR TRANSFER
10062 031316 000000 .KLNFT::.WORD 0 ; +++003 KLINIK ENABLE START TIME --
10063 ; SECONDS SINCE MIDNIGHT
10064 031320 000 000 000 .KLNFD::.BYTE 0,0,0,0 ; +++003 KLINIK ENABLE START DATE
031323 000
10065 031324 000000 .KLNTT::.WORD 0 ; +++003 KLINIK ENABLE END TIME --
10066 ; SECONDS SINCE MIDNIGHT
10067 031326 000 000 000 .KLNTD::.BYTE 0,0,0,0 ; +++003 KLINIK ENABLE END DATE
031331 000
10068 031332 000 000 .KLNMD::.BYTE 0,0 ; +++006 KLINIK MODE FLAGS
10069 .EVEN ; +++006
10070 000016 KLNLGL==.-.KLNFT ; +++006 LOG BUFFER LENGTH IN BYTES
10071 031334' .KLNPE==.
10072 031334 000000 000000 000000 .KLNPW::.WORD 0,0,0 ; +++003 ASCII PASSWORD FOR KLINIK
10073 .EVEN
10074 000026 KLNPLN==.-.KLNBC ; +++006 SAVE BUFFER LENGTH IN BYTES
10075 031342 000 000 .KLNSW::.BYTE 0,0 ; +++006 KLINIK LINE STATUS BYTES
10076 ;
10077 ;
10078 ;
10079 031344 000001 .FEMOD::.WORD 1 ; +++003 FRONT END CONSOLE MODE FLAG
10080 031346 000000 .KLRLD::.WORD 0 ;KL RELOAD FLAG
10081 031350 000000 .KLFLG::.WORD 0 ;FLAG FOR PARSER TO INDICATE STATE OF KL10
10082 031352 000000 .PRADR::.WORD 0 ;ADDRESS OF PRIV OFFSET TABLE ENTRY
10083 031354 174434 .PRSTA::.WORD 174434 ;PRIVILEDGED DTE20 STATUS WORD
10084 031356 174400 .PRDTE::.WORD 174400 ;FIRST DTE ADDRESS OF PRIVILEDGED DTE20
10085 031360 000000 .PRDCT::.WORD 0 ; +004 DORBELL COUNTER FOR KLINIT.
10086 031362 000001 .INHDM::.WORD 1 ;INBIBIT/ENABLE REMOTE LINES (0)=ENABLE
10087 ;
10088 031364 000000 .ABCNT::.WORD 0 ; +++009 COUNT OF AUTO BAUDED LINES
10089 031366 000000 .ABFLG::.WORD 0 ; +++009 FLAG FOR "SETSPD"
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 141
SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS
10091 .SBTTL SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS
10092
10093 ;
10094 ; POINTERS TO COMMUNICATIONS AREA
10095 ;
10096 031370 000000 COMBSE::.WORD 0 ;BASE OF COMMUNICATION AREA
10097 031372 000000 PRMEMN::.WORD 0 ;MY PROCESSOR NUMBER
10098 031374 000000 DEPOF:: .WORD 0 ;DEPOSIT OFFSET FROM EXAMINE
10099 ;
10100 ;
10101 ; PROCESSOR IDENTIFICATION TABLE
10102 ;
10103 ; PROTBL FORMAT:
10104 ;
10105 ; 5 WORDS/ENTRY
10106 ; 16 ENTRYS IN THE TABLE ONE FOR EACH PROCESSOR IN COMMUNICATION
10107 ; COMMUNICATION NUMBERS ARE LIMITED TO THE RANGE 0-15.
10108 ;
10109 ; (PROCESSOR 0) PROTBL: ADDRESS OF DTE20 TO ACCESS THIS PROCESSOR
10110 000000 DTENM=0
10111 ; (PROCESOR 0) ADDRESS TO COMMUNICATE TO PROCESSOR 0
10112 000002 EMYN==2
10113 ; (PROCESSOR 0) ADDRESS TO COMMUNICATE TO PROCESSOR 0 (WRITE)
10114 000004 DMYN==4
10115 ; (PROCESSOR 0) ADDRESS FROM GENERAL
10116 000006 EHSG==6
10117 ; (PROCESSOR 0) ADDRESS FROM SPECIFIC
10118 000010 EHSM==10
10119 ;
10120 ; (PROCESSOR 1) ADDRESS OF DTE20 TO USE TO ACCESS THIS PROCESSOR
10121 ; ...........
10122 ;
10123 031376 PROTBL::.BLKW 16.*5.
10124 ;
10125 ; SEND ALL MESSAGE POINTERS
10126 ;
10127 031636 000000 .SNDLP::.WORD 0 ;POINTER TO SENDALL BUFFER IN USE
10128 031640 000000 000000 000000 .SNDBF::.WORD 0,0,0,0 ;SEND ALL LIST
031646 000000
10129 031650 000000 000000 000000 .SNDCN::.WORD 0,0,0,0 ;SEND ALL TTY COUNT (THIS AND ABOVE MUST BE TOGETHER)
031656 000000
10130 031660 000000 .CRSND::.WORD 0 ;CURRENT SEND ALL NODE POINTER -- USED BY ..STTY
10131
10132 031662 000000 .CRQZ:: .WORD 0 ;CURRENT QUEUE SIZE
10133 031664 000000 .CPFN:: .WORD 0 ;CURRENT FUNCTION IN TO 10 Q
10134 031666 000000 .CPDV:: .WORD 0 ;CURRENT DEVICE IN TO 10 QUEUE
10135 031670 000000 .CRSZ:: .WORD 0 ;CURRENT SIZE OF TO10 Q
10136 031672 000000 .CRPB:: .WORD 0 ;CURRENT BUFFER POINTER IN TO10 Q
10137 031674 000000 .CRHD:: .WORD 0 ;HEAD OF CURRENT TO10Q
10138 031676 000000 .CRSB:: .WORD 0 ;POINTER TO CURRENT FUNCTION SIZE
10139
10140 031700 000000 DTEMSK::.WORD 0 ;DTE DEVICE EVENT FLAG MASK
10141 031702 000000 DTEADR::.WORD 0 ;DTE DEVICE INDIRECT FLAG ADDRESS
10142
10143 031704 000000 TO11NP::.WORD 0 ;NODE POINTER FOR NODE
10144 031706 000000 TO11HD::.WORD 0 ;COUNT OF BYTES IN THIS QUEUE
10145 031710 000000 TO11FN::.WORD 0 ;TO ELEVEN FUNCTION CODE
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 141-1
SCOMM -- COMM, PROCESSOR, AND QUEUE POINTERS
10146 031712 000000 TO11DV::.WORD 0 ;TO ELEVEN DEVICE NUMBER
10147 031714 000000 TO11SP::.WORD 0 ;SPACE
10148 031716 000000 TO11FW::.WORD 0 ;FIRST WORD OF FUNCTION
10150 031720 177777 TO11GW::.WORD -1 ;GUARD WORD FOR DTE20
10151 031722 000000 TO11QP::.WORD 0
10152 031724 000000 TO11AS::.WORD 0 ;ADDRESS SAVE
10153 031726 000000 TO11BS::.WORD 0 ;BYTE COUNT SAVE
10154 031730 000000 TO10SZ::.WORD 0 ;BYTE COUNT OF XFER
10155 031732 000000 TO10AS::.WORD 0
10157
10158 031734 000001 000000 000000 STSTT::.WORD 1,0,0 ;TO 10 STATUS
10159
10160 031740' TO10QC==STSTT+4 ;TO 10 QUEUE COUNT
10161 031741' TO11QC==STSTT+5 ;TO 11 QUEUE COUNT
10162
10163 031742 031742' TO10Q:: .WORD . ;LISTHEAD FOR TO 10 QUEUE
10164 031744 031742' .WORD .-2
10165
10166 031746 000000 EQSZ:: .WORD 0 ;ELEVEN Q SIZE
10167
10168 031750 000000 TO11Q:: .WORD 0 ;TO 11 QUEUE
10169 031752 STATI:: .BLKW 3 ;STATUS/SCRATCH WORD FOR EXAMINES/DEPOSITS
10170
10171 031760 000000 000000 000000 KPAL0:: .WORD 0,0,0 ;10 KEEP ALIVE
10172 031766 000000 OKPAL0::.WORD 0 ;SAVED KEEP ALIVE
10173 031770 000000 000000 000000 KPAL1:: .WORD 0,0,0 ;11 KEEP ALIVE
10174 031776 000005 .KPAC:: .WORD 5 ;COUNTER FOR KP.
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 142
SCOMM -- SYSTEM TASK DIRECTORY (STD)
10176 .SBTTL SCOMM -- SYSTEM TASK DIRECTORY (STD)
10177
10178 ;
10179 ; SYSTEM TASK DIRECTORY
10180 ;
10181 032000 032006' .STDTA::.WORD .STDTB ;STD ALPHA TABLE ADDRESS
10182 032002 000044 .STDTC::.WORD 36. ;STD ALPHA TABLE MAX SIZE *2
10183 032004 000024 .STDTZ::.WORD 24 ;STD "SIZE" (2N-2)
10184 ;
10185 032006 .STDTB::
10187 032006 032412' .WORD STDCDR ;CARD READER ENTRY
10189 032010 032052' .WORD STDDTE ;DTE CLOCK ENTRY
10194 032012 032112' .WORD STDFED ;FE DRIVER
10197 032014 032152' .WORD STDDX ;FLOPPY DRIVER
10200 032016 032212' .WORD STDF11 ;F11ACP
10203 032020 032352' .WORD STDLPT ;LP20
10205 032022 032512' .WORD STDQPR ;QUEUE'D PROTOCOL
10207 032024 032252' .WORD STDRPT ;RP04 ENTRY
10209 032026 032452' .WORD STDTTY ;TTY ENTRY
10211 032030 032312' .WORD STDINS ;INSTALL
10213 032032 000000 000000 000000 .WORD 0,0,0,0,0,0,0
032040 000000 000000 000000
032046 000000
10233 032050 000000 .WORD 0
10235 ;
10236 ;
10237 ;
10238 032052 STDDTE: .STDEN DTE20,DTETPD,SF.TA!SF.FX!SF.ST,200,0,DTEHD,0,0,0,0,0,0
032052 016045 146260 .RAD50 "DTE20"
032056 033236' .WORD DTETPD
032060 100003 .WORD SF.TA!SF.FX!SF.ST
032062 200 000 .BYTE 200,0
032064 014174' .WORD DTEHD
032066 000000 .WORD 0
032070 000000 .WORD 0
032072 000000 .WORD 0
032074 000000 .WORD 0
032076 032076' .WORD .
032100 032076' .WORD .-2
032102 000000 .WORD 0
032104 000000 .WORD 0
032106 000000 .WORD 0
032110 000000 .WORD 0
10240 ;
10241 032112 STDFED: .STDEN FE....,FETPD,SF.TA!SF.FX!SF.ST,176,0,FEHD,0,0,0,0,0,0
032112 023144 131574 .RAD50 "FE...."
032116 033256' .WORD FETPD
032120 100003 .WORD SF.TA!SF.FX!SF.ST
032122 176 000 .BYTE 176,0
032124 000000G .WORD FEHD
032126 000000 .WORD 0
032130 000000 .WORD 0
032132 000000 .WORD 0
032134 000000 .WORD 0
032136 032136' .WORD .
032140 032136' .WORD .-2
032142 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 142-1
SCOMM -- SYSTEM TASK DIRECTORY (STD)
032144 000000 .WORD 0
032146 000000 .WORD 0
032150 000000 .WORD 0
10248 ;
10249 032152 STDDX: .STDEN DX....,DXTPD,SF.TA!SF.FX!SF.ST,176,0,DXHD,0,0,0,0,0,0
032152 016334 131574 .RAD50 "DX...."
032156 033376' .WORD DXTPD
032160 100003 .WORD SF.TA!SF.FX!SF.ST
032162 176 000 .BYTE 176,0
032164 000000G .WORD DXHD
032166 000000 .WORD 0
032170 000000 .WORD 0
032172 000000 .WORD 0
032174 000000 .WORD 0
032176 032176' .WORD .
032200 032176' .WORD .-2
032202 000000 .WORD 0
032204 000000 .WORD 0
032206 000000 .WORD 0
032210 000000 .WORD 0
10252 ;
10253 032212 STDF11:
10255 032212 .STDEN F11ACP,F11TPD,SF.ST,220,<<DX0PEN-.PUDBA>/U.SZ>,145400,7700,0,145400,145400,0,5
032212 025167 003310 .RAD50 "F11ACP"
032216 033436' .WORD F11TPD
032220 100000 .WORD SF.ST
032222 220 011 .BYTE 220,<DX0PEN-.PUDBA>/U.SZ
032224 145400 .WORD 145400
032226 007700 .WORD 7700
032230 000000 .WORD 0
032232 145400 .WORD 145400
032234 145400 .WORD 145400
032236 032236' .WORD .
032240 032236' .WORD .-2
032242 000000 .WORD 0
032244 000000 .WORD 0
032246 000005 .WORD 5
032250 000000 .WORD 0
10265 ;
10266 032252 STDRPT: .STDEN RP....,RPTPD,SF.TA!SF.FX!SF.ST,176,0,RPHD,0,0,0,0,0,0
032252 071434 131574 .RAD50 "RP...."
032256 033416' .WORD RPTPD
032260 100003 .WORD SF.TA!SF.FX!SF.ST
032262 176 000 .BYTE 176,0
032264 000000G .WORD RPHD
032266 000000 .WORD 0
032270 000000 .WORD 0
032272 000000 .WORD 0
032274 000000 .WORD 0
032276 032276' .WORD .
032300 032276' .WORD .-2
032302 000000 .WORD 0
032304 000000 .WORD 0
032306 000000 .WORD 0
032310 000000 .WORD 0
10269 ;
10270 032312 STDINS::.STDEN .INST.,INSTPD,SF.FX!SF.ST,200,0,INSHD,0,0,INSTAL,INSTK-16,0,0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 142-2
SCOMM -- SYSTEM TASK DIRECTORY (STD)
032312 130166 074774 .RAD50 ".INST."
032316 033216' .WORD INSTPD
032320 100002 .WORD SF.FX!SF.ST
032322 200 000 .BYTE 200,0
032324 000000G .WORD INSHD
032326 000000 .WORD 0
032330 000000 .WORD 0
032332 000000G .WORD INSTAL
032334 177762G .WORD INSTK-16
032336 032336' .WORD .
032340 032336' .WORD .-2
032342 000000 .WORD 0
032344 000000 .WORD 0
032346 000000 .WORD 0
032350 000000 .WORD 0
10273 ;
10274 032352 STDLPT: .STDEN LPDRV,LPTPD,SF.TA!SF.FX!SF.ST,176,0,LPHD,0,0,0,0,0,0
032352 046604 071760 .RAD50 "LPDRV"
032356 033316' .WORD LPTPD
032360 100003 .WORD SF.TA!SF.FX!SF.ST
032362 176 000 .BYTE 176,0
032364 000000G .WORD LPHD
032366 000000 .WORD 0
032370 000000 .WORD 0
032372 000000 .WORD 0
032374 000000 .WORD 0
032376 032376' .WORD .
032400 032376' .WORD .-2
032402 000000 .WORD 0
032404 000000 .WORD 0
032406 000000 .WORD 0
032410 000000 .WORD 0
10277 ;
10278 032412 STDCDR: .STDEN CDDRV,CDRTPD,SF.TA!SF.FX!SF.ST,210,0,CRHD,0,0,57252,55130-16,0,0
032412 011544 071760 .RAD50 "CDDRV"
032416 033336' .WORD CDRTPD
032420 100003 .WORD SF.TA!SF.FX!SF.ST
032422 210 000 .BYTE 210,0
032424 000000G .WORD CRHD
032426 000000 .WORD 0
032430 000000 .WORD 0
032432 057252 .WORD 57252
032434 055112 .WORD 55130-16
032436 032436' .WORD .
032440 032436' .WORD .-2
032442 000000 .WORD 0
032444 000000 .WORD 0
032446 000000 .WORD 0
032450 000000 .WORD 0
10280 ;
10281 032452 STDTTY: .STDEN TTYDRV,TTYTPD,SF.TA!SF.FX!SF.ST,177,0,TTYHD,0,0,0,0,0,0
032452 100071 015746 .RAD50 "TTYDRV"
032456 033276' .WORD TTYTPD
032460 100003 .WORD SF.TA!SF.FX!SF.ST
032462 177 000 .BYTE 177,0
032464 022350' .WORD TTYHD
032466 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 142-3
SCOMM -- SYSTEM TASK DIRECTORY (STD)
032470 000000 .WORD 0
032472 000000 .WORD 0
032474 000000 .WORD 0
032476 032476' .WORD .
032500 032476' .WORD .-2
032502 000000 .WORD 0
032504 000000 .WORD 0
032506 000000 .WORD 0
032510 000000 .WORD 0
10282 ;
10283 032512 STDQPR: .STDEN QDPROT,QPRTPD,SF.TA!SF.FX!SF.ST,176,0,BTPHD,0,0,0,0,0,0
032512 065360 071354 .RAD50 "QDPROT"
032516 033356' .WORD QPRTPD
032520 100003 .WORD SF.TA!SF.FX!SF.ST
032522 176 000 .BYTE 176,0
032524 005352' .WORD BTPHD
032526 000000 .WORD 0
032530 000000 .WORD 0
032532 000000 .WORD 0
032534 000000 .WORD 0
032536 032536' .WORD .
032540 032536' .WORD .-2
032542 000000 .WORD 0
032544 000000 .WORD 0
032546 000000 .WORD 0
032550 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 143
SCOMM -- ACTIVE TASK LIST (ATL)
10285 .SBTTL SCOMM -- ACTIVE TASK LIST (ATL)
10286
10287 ;
10288 ; ACTIVE TASK LISTHEAD
10289 ;
10290 032552 032556' .ATLLH::.WORD DTETSK ;FORWARD POINTER IN ACTIVE TASK LIST
10291 032554 033156' .WORD NULTSK ;NULL TASK
10292 ;
10293 ;
10294 032556 DTETSK::.ATLEN TTYTSK,.ATLLH,DTESP,0,200,DTEHD,TS.RUN,0,STDDTE,0,0,0,0,0,0,0
032556 032616' .WORD TTYTSK
032560 032552' .WORD .ATLLH
032562 014454' .WORD DTESP
032564 000000 .WORD 0
032566 000200 .WORD 200
032570 014174' .WORD DTEHD
032572 010 000 .BYTE TS.RUN,0
032574 032052' .WORD STDDTE
032576 000000 000000 .WORD 0,0
032602 000000 000000 000000 .WORD 0,0,0,0
032610 000000
032612 000000 .WORD 0
032614 000000 .WORD 0
10295 ;
10296 032616 TTYTSK::.ATLEN RPTSK,DTETSK,TTYSP,0,177,TTYHD,TS.RUN,0,STDTTY,0,0,0,0,0,0,0
032616 032656' .WORD RPTSK
032620 032556' .WORD DTETSK
032622 022630' .WORD TTYSP
032624 000000 .WORD 0
032626 000177 .WORD 177
032630 022350' .WORD TTYHD
032632 010 000 .BYTE TS.RUN,0
032634 032452' .WORD STDTTY
032636 000000 000000 .WORD 0,0
032642 000000 000000 000000 .WORD 0,0,0,0
032650 000000
032652 000000 .WORD 0
032654 000000 .WORD 0
10297 ;
10299 032656 RPTSK:: .ATLEN LPTSK,TTYTSK,RPSTK,0,176,RPHD,TS.RUN,0,STDRPT,0,0,0,0,0,0,0
032656 032716' .WORD LPTSK
032660 032616' .WORD TTYTSK
032662 000000G .WORD RPSTK
032664 000000 .WORD 0
032666 000176 .WORD 176
032670 000000G .WORD RPHD
032672 010 000 .BYTE TS.RUN,0
032674 032252' .WORD STDRPT
032676 000000 000000 .WORD 0,0
032702 000000 000000 000000 .WORD 0,0,0,0
032710 000000
032712 000000 .WORD 0
032714 000000 .WORD 0
10303 ;
10305 032716 LPTSK:: .ATLEN CDTSK,RPTSK,LPSTK,0,176,LPHD,TS.RUN,0,STDLPT,0,0,0,0,0,0,0
032716 032756' .WORD CDTSK
032720 032656' .WORD RPTSK
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 143-1
SCOMM -- ACTIVE TASK LIST (ATL)
032722 000000G .WORD LPSTK
032724 000000 .WORD 0
032726 000176 .WORD 176
032730 000000G .WORD LPHD
032732 010 000 .BYTE TS.RUN,0
032734 032352' .WORD STDLPT
032736 000000 000000 .WORD 0,0
032742 000000 000000 000000 .WORD 0,0,0,0
032750 000000
032752 000000 .WORD 0
032754 000000 .WORD 0
10310 032756 CDTSK:: .ATLEN DTTSK,LPTSK,CRSTK,CDRTPD,176,CRHD,TS.RUN,0,STDCDR,0,0,0,0,0,0,0
032756 033016' .WORD DTTSK
032760 032716' .WORD LPTSK
032762 000000G .WORD CRSTK
032764 033336' .WORD CDRTPD
032766 000176 .WORD 176
032770 000000G .WORD CRHD
032772 010 000 .BYTE TS.RUN,0
032774 032412' .WORD STDCDR
032776 000000 000000 .WORD 0,0
033002 000000 000000 000000 .WORD 0,0,0,0
033010 000000
033012 000000 .WORD 0
033014 000000 .WORD 0
10314 ;
10318 033016 DTTSK::
10320 ;
10322 033016 FETSK:: .ATLEN DXTSK,DTTSK,FESTK,0,176,FEHD,TS.RUN,0,STDFED,0,0,0,0,0,0,0
033016 033056' .WORD DXTSK
033020 033016' .WORD DTTSK
033022 000000G .WORD FESTK
033024 000000 .WORD 0
033026 000176 .WORD 176
033030 000000G .WORD FEHD
033032 010 000 .BYTE TS.RUN,0
033034 032112' .WORD STDFED
033036 000000 000000 .WORD 0,0
033042 000000 000000 000000 .WORD 0,0,0,0
033050 000000
033052 000000 .WORD 0
033054 000000 .WORD 0
10326 ;
10328 033056 DXTSK:: .ATLEN QPRTSK,FETSK,DXSTK,0,176,DXHD,TS.RUN,0,STDDX,0,0,0,0,0,0,0
033056 033116' .WORD QPRTSK
033060 033016' .WORD FETSK
033062 000000G .WORD DXSTK
033064 000000 .WORD 0
033066 000176 .WORD 176
033070 000000G .WORD DXHD
033072 010 000 .BYTE TS.RUN,0
033074 032152' .WORD STDDX
033076 000000 000000 .WORD 0,0
033102 000000 000000 000000 .WORD 0,0,0,0
033110 000000
033112 000000 .WORD 0
033114 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 143-2
SCOMM -- ACTIVE TASK LIST (ATL)
10332 ;
10333 033116 QPRTSK::.ATLEN NULTSK,DXTSK,.BTSTK,0,1,BTPHD,TS.RUN,0,STDQPR,0,0,0,0,0,0,0
033116 033156' .WORD NULTSK
033120 033056' .WORD DXTSK
033122 005632' .WORD .BTSTK
033124 000000 .WORD 0
033126 000001 .WORD 1
033130 005352' .WORD BTPHD
033132 010 000 .BYTE TS.RUN,0
033134 032512' .WORD STDQPR
033136 000000 000000 .WORD 0,0
033142 000000 000000 000000 .WORD 0,0,0,0
033150 000000
033152 000000 .WORD 0
033154 000000 .WORD 0
10334 ;
10335 033156 NULTSK::.ATLEN .ATLLH,QPRTSK,NTKXSP,0,0,NULHD,TS.RUN,0,0,0,0,0,0,0,0,0
033156 032552' .WORD .ATLLH
033160 033116' .WORD QPRTSK
033162 002044' .WORD NTKXSP
033164 000000 .WORD 0
033166 000000 .WORD 0
033170 001564' .WORD NULHD
033172 010 000 .BYTE TS.RUN,0
033174 000000 .WORD 0
033176 000000 000000 .WORD 0,0
033202 000000 000000 000000 .WORD 0,0,0,0
033210 000000
033212 000000 .WORD 0
033214 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 144
SCOMM -- TASK PARTITION DIRECTORY (TPD)
10337 .SBTTL SCOMM -- TASK PARTITION DIRECTORY (TPD)
10338
10339 ;
10340 ; TASK PARTITION DIRECTORY
10341 ;
10342 033216 .TPDBA::
10344 ;
10345 033216 INSTPD::.TPDEN INSTPD,INSHD,0,0,TF.OU
033216 000000 000000 .WORD 0,0
033216 035203 077604 .RAD50 "INSTPD"
033222 000000G .WORD INSHD
033224 000000 .WORD 0
033226 000000 .WORD 0
033230 000002 .WORD TF.OU
033232 033232' .WORD .
033234 033232' .WORD .-2
10347 ;
10348 033236 DTETPD::.TPDEN DTETPD,DTEHD,0,0,TF.OU
033236 000000 000000 .WORD 0,0
033236 016045 077604 .RAD50 "DTETPD"
033242 014174' .WORD DTEHD
033244 000000 .WORD 0
033246 000000 .WORD 0
033250 000002 .WORD TF.OU
033252 033252' .WORD .
033254 033252' .WORD .-2
10350 ;
10351 033256 FETPD: .TPDEN FETPD,FEHD,0,0,TF.OU
033256 000000 000000 .WORD 0,0
033256 023134 062240 .RAD50 "FETPD"
033262 000000G .WORD FEHD
033264 000000 .WORD 0
033266 000000 .WORD 0
033270 000002 .WORD TF.OU
033272 033272' .WORD .
033274 033272' .WORD .-2
10353 ;
10354 033276 TTYTPD: .TPDEN TTYTPD,TTYHD,0,0,TF.OU
033276 000000 000000 .WORD 0,0
033276 100071 077604 .RAD50 "TTYTPD"
033302 022350' .WORD TTYHD
033304 000000 .WORD 0
033306 000000 .WORD 0
033310 000002 .WORD TF.OU
033312 033312' .WORD .
033314 033312' .WORD .-2
10356 ;
10357 033316 LPTPD: .TPDEN LPTPD,LPHD,0,0,TF.OU
033316 000000 000000 .WORD 0,0
033316 046624 062240 .RAD50 "LPTPD"
033322 000000G .WORD LPHD
033324 000000 .WORD 0
033326 000000 .WORD 0
033330 000002 .WORD TF.OU
033332 033332' .WORD .
033334 033332' .WORD .-2
10360 ;
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 144-1
SCOMM -- TASK PARTITION DIRECTORY (TPD)
10361 033336 CDRTPD: .TPDEN CDRTPD,CRHD,0,0,TF.OU
033336 000000 000000 .WORD 0,0
033336 011562 077604 .RAD50 "CDRTPD"
033342 000000G .WORD CRHD
033344 000000 .WORD 0
033346 000000 .WORD 0
033350 000002 .WORD TF.OU
033352 033352' .WORD .
033354 033352' .WORD .-2
10363 ;
10364 033356 QPRTPD: .TPDEN QPRTPD,BTPHD,0,0,TF.OU
033356 000000 000000 .WORD 0,0
033356 066322 077604 .RAD50 "QPRTPD"
033362 005352' .WORD BTPHD
033364 000000 .WORD 0
033366 000000 .WORD 0
033370 000002 .WORD TF.OU
033372 033372' .WORD .
033374 033372' .WORD .-2
10370 ;
10371 033376 DXTPD: .TPDEN DXTPD,DXHD,0,0,TF.OU
033376 000000 000000 .WORD 0,0
033376 016324 062240 .RAD50 "DXTPD"
033402 000000G .WORD DXHD
033404 000000 .WORD 0
033406 000000 .WORD 0
033410 000002 .WORD TF.OU
033412 033412' .WORD .
033414 033412' .WORD .-2
10374 ;
10375 033416 RPTPD: .TPDEN RPTPD,RPHD,0,0,TF.OU
033416 000000 000000 .WORD 0,0
033416 071424 062240 .RAD50 "RPTPD"
033422 000000G .WORD RPHD
033424 000000 .WORD 0
033426 000000 .WORD 0
033430 000002 .WORD TF.OU
033432 033432' .WORD .
033434 033432' .WORD .-2
10378 ;
10379 033436 F11TPD::.TPDEN F11TPD,145400,12400,0,0 ; +++008
033436 000000 000000 .WORD 0,0
033436 025167 077604 .RAD50 "F11TPD"
033442 145400 .WORD 145400
033444 012400 .WORD 12400
033446 000000 .WORD 0
033450 000000 .WORD 0
033452 033452' .WORD .
033454 033452' .WORD .-2
10381 ;
10382 033456 GENTPD: .TPDEN GEN,100000,45400,0,0 ; +++008
033456 000000 000000 .WORD 0,0
033456 026226 .RAD50 "GEN"
033462 100000 .WORD 100000
033464 045400 .WORD 45400
033466 000000 .WORD 0
033470 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 144-2
SCOMM -- TASK PARTITION DIRECTORY (TPD)
033472 033472' .WORD .
033474 033472' .WORD .-2
10383 ;
10384 033476 .TPDEA:: ;END OF TPD
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 145
SCOMM -- FREE POOL POINTERS
10386 .SBTTL SCOMM -- FREE POOL POINTERS
10387
10388 076000 .BGBST==76000 ; +++008 START OF BIG BUFFER
10389 002000 .BGLEN==2000 ; +++008 LENGTH OF BIG BIFFER
10390
10391 ;
10392 ; POOL FREE CORE AREA
10393 ;
10394 033476 076000 .BGBUF::.WORD .BGBST ; +++008 BIG BUFFER SPACE (1000 EACH)
10395 033500 002000 .WORD .BGLEN
10396
10397 033502 000000 .FREPL::.WORD 0 ; +++008 FREE POOL BASE ADDRESS
10398 033504 000000 .WORD 0 ; +++008 FREE POOL SIZE IN BYTES
10399
10400 033506 033512' .POLLH::.WORD .POLST ;HEAD OF POOL
10401 033510 034412' .WORD .POLND ;END OF POOL
10402
10403 033512 033552' .POLST: .WORD .+40
10404 033514 033506' .WORD .POLLH
10405 .BLKW 14.
10406
10407 000015 .REPT 15
10408 .WORD .+40
10409 .WORD .-40
10410 .BLKW 14.
10411 .ENDR
033552 033612' .WORD .+40
033554 033514' .WORD .-40
033612 033652' .WORD .+40
033614 033554' .WORD .-40
033652 033712' .WORD .+40
033654 033614' .WORD .-40
033712 033752' .WORD .+40
033714 033654' .WORD .-40
033752 034012' .WORD .+40
033754 033714' .WORD .-40
034012 034052' .WORD .+40
034014 033754' .WORD .-40
034052 034112' .WORD .+40
034054 034014' .WORD .-40
034112 034152' .WORD .+40
034114 034054' .WORD .-40
034152 034212' .WORD .+40
034154 034114' .WORD .-40
034212 034252' .WORD .+40
034214 034154' .WORD .-40
034252 034312' .WORD .+40
034254 034214' .WORD .-40
034312 034352' .WORD .+40
034314 034254' .WORD .-40
034352 034412' .WORD .+40
034354 034314' .WORD .-40
10412
10413 034412 033506' .POLND: .WORD .POLLH
10414 034414 034354' .WORD .-40
10415 .BLKW 14.
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 146
SCOMM -- CLOCK REQUEST LIST
10417 .SBTTL SCOMM -- CLOCK REQUEST LIST
10418
10419 ;
10420 ; CLOCK LIST (LIST OF ENTRIES IN THE CLOCK QUEUE TO RECEIVE
10421 ; EVENT FLAGS SET ON COMPLETION OF CLOCK TIMER
10422 ;
10423 000007 .CLKSZ==7. ;CLOCK QUEUE SIZE
10424 000014 C.SZ=14 ;CLOCK ENTRY SIZE LOCAL DEFINITION (NOTE: IS A GLOBAL VAR.)
10425
10426 034452 032616' .CLKBA::.WORD TTYTSK
10427 034454 000000 .WORD 0
10428 034456 000074 .WORD .CYLTM
10429 034460 000074 .WORD .CYLTM
10430 034462 000100 .WORD EF.TMO
10431 034464 032636' .WORD TTYTSK+A.EF
10432 000074 .REPT .CLKSZ-2*C.SZ
10433 .WORD 0
10434 .ENDR
034466 000000 .WORD 0
034470 000000 .WORD 0
034472 000000 .WORD 0
034474 000000 .WORD 0
034476 000000 .WORD 0
034500 000000 .WORD 0
034502 000000 .WORD 0
034504 000000 .WORD 0
034506 000000 .WORD 0
034510 000000 .WORD 0
034512 000000 .WORD 0
034514 000000 .WORD 0
034516 000000 .WORD 0
034520 000000 .WORD 0
034522 000000 .WORD 0
034524 000000 .WORD 0
034526 000000 .WORD 0
034530 000000 .WORD 0
034532 000000 .WORD 0
034534 000000 .WORD 0
034536 000000 .WORD 0
034540 000000 .WORD 0
034542 000000 .WORD 0
034544 000000 .WORD 0
034546 000000 .WORD 0
034550 000000 .WORD 0
034552 000000 .WORD 0
034554 000000 .WORD 0
034556 000000 .WORD 0
034560 000000 .WORD 0
034562 000000 .WORD 0
034564 000000 .WORD 0
034566 000000 .WORD 0
034570 000000 .WORD 0
034572 000000 .WORD 0
034574 000000 .WORD 0
034576 000000 .WORD 0
034600 000000 .WORD 0
034602 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 146-1
SCOMM -- CLOCK REQUEST LIST
034604 000000 .WORD 0
034606 000000 .WORD 0
034610 000000 .WORD 0
034612 000000 .WORD 0
034614 000000 .WORD 0
034616 000000 .WORD 0
034620 000000 .WORD 0
034622 000000 .WORD 0
034624 000000 .WORD 0
034626 000000 .WORD 0
034630 000000 .WORD 0
034632 000000 .WORD 0
034634 000000 .WORD 0
034636 000000 .WORD 0
034640 000000 .WORD 0
034642 000000 .WORD 0
034644 000000 .WORD 0
034646 000000 .WORD 0
034650 000000 .WORD 0
034652 000000 .WORD 0
034654 000000 .WORD 0
10435 034656 000000 .CLKEA::.WORD 0 ;END OF CLOCK LIST
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 147
SCOMM -- DTE20 REQUEST LIST
10437 .SBTTL SCOMM -- DTE20 REQUEST LIST
10438
10439 ;
10440 ; DTE20 LIST (LIST OF ENTRIES IN THE DTE QUEUE TO RECEIVE
10441 ; EVENT FLAGS SET ON COMPLETION OF DTE INTERRUPT)
10442 ;
10443 000005 .DTESZ==5. ;SIZE OF DTE20 TABLE
10444 000005 D.SZ=5 ;DTE20 ENTRY SIZE LOCAL DEFINITION (NOTE: IS A GLOBAL VAR.)
10445
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 148
SCOMM -- DEVICE QUEUE POINTERS
10455 .SBTTL SCOMM -- DEVICE QUEUE POINTERS
10456
10457 ;
10458 ; DEVICE QUEUE POINTERS
10459 ;
10460 000020 Q.SZ=20 ;QUEUE ENTRY SIZE (NOTE:IS A GLOBAL VAR.)
10461
10462 000001 D.CCTY==1 ;DEVICE CODE FOR CTY
10463 034660 .DQPBA::.DQPEN TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT
034660 035126' .WORD TTTBL
034662 000010 .WORD 8.
034664 042204' .WORD ..STTY
034666 042632' .WORD ..STPT
034670 035060' .WORD IGNO
034672 035060' .WORD IGNO
034674 000000 .WORD 0
034676 000205 .WORD TTCNT
10464 000002 D.CDL1==2 ;DEVICE CODE FOR DL11
10465 034700 .DQPEN DLTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DLCNT
034700 035126' .WORD DLTBL
034702 000010 .WORD 8.
034704 042204' .WORD ..STTY
034706 042632' .WORD ..STPT
034710 035060' .WORD IGNO
034712 035060' .WORD IGNO
034714 000000 .WORD 0
034716 000005 .WORD DLCNT
10466 000003 D.CDH1==3 ;DEVICE CODE FOR DH11 (1)
10467 034720 .DQDH0::.DQPEN DHTBL,8.,..STTY,..STPT,IGNO,IGNO,0,DHCNT
034720 035176' .WORD DHTBL
034722 000010 .WORD 8.
034724 042204' .WORD ..STTY
034726 042632' .WORD ..STPT
034730 035060' .WORD IGNO
034732 035060' .WORD IGNO
034734 000000 .WORD 0
034736 000200 .WORD DHCNT
10468 000004 D.CDLS==4 ;DEVICE CODE FOR DATA LINE SCANNER (1)
10469 034740 .DQDLS::.DQPEN TTTBL,8.,..STTY,..STPT,IGNO,IGNO,0,TTCNT
034740 035126' .WORD TTTBL
034742 000010 .WORD 8.
034744 042204' .WORD ..STTY
034746 042632' .WORD ..STPT
034750 035060' .WORD IGNO
034752 035060' .WORD IGNO
034754 000000 .WORD 0
034756 000205 .WORD TTCNT
10470 000005 D.CLPT==5 ;DEVICE CODE FOR LPT
10471 034760 .DQPEN LPTBL,8.,..STLP,..SPLP,IGNO,..AKLP,0,2
034760 000000G .WORD LPTBL
034762 000010 .WORD 8.
034764 000000G .WORD ..STLP
034766 000000G .WORD ..SPLP
034770 035060' .WORD IGNO
034772 000000G .WORD ..AKLP
034774 000000 .WORD 0
034776 000002 .WORD 2
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 148-1
SCOMM -- DEVICE QUEUE POINTERS
10472 000006 D.CCDR==6 ;DEVICE CODE FOR CDR
10473 035000 .DQPEN CRTBL,8.,..STCR,IGNO,IGNO,..AKCR,0,1
035000 000000G .WORD CRTBL
035002 000010 .WORD 8.
035004 000000G .WORD ..STCR
035006 035060' .WORD IGNO
035010 035060' .WORD IGNO
035012 000000G .WORD ..AKCR
035014 000000 .WORD 0
035016 000001 .WORD 1
10474 000007 D.CCLK==7 ;DEVICE CODE FOR CLOCK
10475 035020 .DQPEN 0,0,0,0,0,0,0,1
035020 000000 .WORD 0
035022 000000 .WORD 0
035024 000000 .WORD 0
035026 000000 .WORD 0
035030 000000 .WORD 0
035032 000000 .WORD 0
035034 000000 .WORD 0
035036 000001 .WORD 1
10476 000010 D.FEPD==10 ;PSEUDO DEVICE FOR FE
10477 035040 .DQPEN FETBL,2.,.FEST,0,IGNO,.FEACK,0,4
035040 000000G .WORD FETBL
035042 000002 .WORD 2.
035044 000000G .WORD .FEST
035046 000000 .WORD 0
035050 035060' .WORD IGNO
035052 000000G .WORD .FEACK
035054 000000 .WORD 0
035056 000004 .WORD 4
10478
10479
10480 035060 .DQPEA:: ;END OF DEVICE QUEUE POINTER TABLE
10481 000010 .DQPSZ==.DQPEA-.DQPBA/Q.SZ ;SIZE OF DEVICE QUEUE POINTER TABLE
10482
10483 035060 IGNO: RETURN ;TO IGNORE UNUSED FUNCTIONS.
035060 000207 RTS PC
10484 ;
10485 ; NOTE -- THESE PSUEDO-DEVICES ARE OUTPUT-ONLY AND
10486 ; ARE ASSOCIATED WITH ERROR LOGGING
10487 ;
10488 000200 D.CCPU==200 ;PSEUDO DEVICE PDP10 CPU
10489 000201 D.CKLE==201 ;KL ERROR PSEUDO DEVICE
10490 000210 D.CKLN==210 ; KLINIK PSEUDO-DEVICE
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 149
SCOMM -- TERMINAL DRIVER TABLES
10492 .SBTTL SCOMM -- TERMINAL DRIVER TABLES
10493
10494 ;
10495 ; TTY TABLES
10496 ;
10497 ; CONTROLLER IMPURE DATA TABLES (INDEXED BY CONTROLLER (UNIT) NUMBER)
10498 ;
10499 035062 170500 035176' DMTBL:: .WORD 170500,DHTBL ;DM11BB TABLE
10500 035066 170510 035376' .WORD 170510,16.*8.+DHTBL
10501 035072 170520 035576' .WORD 170520,16.*8.*2.+DHTBL
10502 035076 170530 035776' .WORD 170530,16.*8.*3.+DHTBL
10503 035102 170540 036176' .WORD 170540,16.*8.*4.+DHTBL
10504 035106 170550 036376' .WORD 170550,16.*8.*5.+DHTBL
10505 035112 170560 036576' .WORD 170560,16.*8.*6.+DHTBL
10506 035116 170570 036776' .WORD 170570,16.*8.*7.+DHTBL
10507 035122 170570 037176' .WORD 170570,16.*8.*8.+DHTBL
10508
10509 ; THE DATA LINE SCANNER TABLE IS ORGANIZED AS FOLLOWS:
10510 ; THE DL11'S ARE FIRST IN THE TABLE AND THE DL11C (CTY) IS UNIT 0,
10511 ; THE DL11E(S) FOLLOW AND BEGIN AT UNIT 1. THE DH11HS FOLLOW THE
10512 ; DL11ES
10513 ;
10514 035126 TTTBL:: ;START OF DATA LINE SCANNER TABLE
10515 035126 000000 177560 000000 DLTBL:: .WORD 0,177560,0,TT.CTY ;TERMINAL STATUS FOR DL11C
035134 000400
10516 035136 DLETBL:: ; +++006 DL11E TABLE
10517 035136 000000 175610 000000 .WORD 0,175610,0,TT.RMT ; +++006 DL11E # 0 (KLINIK)
035144 000100
10518 035146 000000 175630 000000 .WORD 0,175630,0,TT.RMT ; +++006 DL11E # 1
035154 000100
10519 035156 000000 175640 000000 .WORD 0,175640,0,TT.RMT ; +++006 DL11E # 2
035164 000100
10520 035166 000000 175650 000000 .WORD 0,175650,0,TT.RMT ; +++006 DL11E # 3
035174 000100
10521 000005 DLCNT ==.-DLTBL/8. ;NUMBER OF DL11'S
10522 000004 DLECNT ==.-DLETBL/8. ; +++006 NUMBER OF DL11E'S
10523 035176 000020 DHTBL:: .REPT 16.
10524 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
10525 .ENDR
035176 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035204 000000
035206 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035214 000000
035216 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035224 000000
035226 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035234 000000
035236 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035244 000000
035246 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035254 000000
035256 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035264 000000
035266 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035274 000000
035276 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035304 000000
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 149-1
SCOMM -- TERMINAL DRIVER TABLES
035306 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035314 000000
035316 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035324 000000
035326 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035334 000000
035336 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035344 000000
035346 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035354 000000
035356 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035364 000000
035366 000000 160020 006007 .WORD 0,160020,6007,0 ; DH11 MUX CONRTOLLER 0
035374 000000
10526 000020 .REPT 16.
10527 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
10528 .ENDR
035376 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035404 000000
035406 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035414 000000
035416 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035424 000000
035426 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035434 000000
035436 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035444 000000
035446 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035454 000000
035456 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035464 000000
035466 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035474 000000
035476 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035504 000000
035506 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035514 000000
035516 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035524 000000
035526 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035534 000000
035536 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035544 000000
035546 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035554 000000
035556 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035564 000000
035566 000000 160040 006007 .WORD 0,160040,6007,0 ; DH11 MUX CONTROLLER 1
035574 000000
10529 000020 .REPT 16.
10530 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
10531 .ENDR
035576 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035604 000000
035606 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035614 000000
035616 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 149-2
SCOMM -- TERMINAL DRIVER TABLES
035624 000000
035626 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035634 000000
035636 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035644 000000
035646 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035654 000000
035656 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035664 000000
035666 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035674 000000
035676 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035704 000000
035706 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035714 000000
035716 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035724 000000
035726 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035734 000000
035736 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035744 000000
035746 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035754 000000
035756 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035764 000000
035766 000000 160060 006007 .WORD 0,160060,6007,0 ; DH11 MUX CONTROLLER 2
035774 000000
10532 000020 .REPT 16.
10533 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
10534 .ENDR
035776 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036004 000000
036006 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036014 000000
036016 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036024 000000
036026 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036034 000000
036036 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036044 000000
036046 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036054 000000
036056 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036064 000000
036066 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036074 000000
036076 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036104 000000
036106 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036114 000000
036116 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036124 000000
036126 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036134 000000
036136 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036144 000000
036146 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 149-3
SCOMM -- TERMINAL DRIVER TABLES
036154 000000
036156 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036164 000000
036166 000000 160100 006007 .WORD 0,160100,6007,0 ; DH11 MUX CONTROLLER 3
036174 000000
10535 000020 .REPT 16.
10536 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
10537 .ENDR
036176 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036204 000000
036206 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036214 000000
036216 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036224 000000
036226 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036234 000000
036236 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036244 000000
036246 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036254 000000
036256 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036264 000000
036266 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036274 000000
036276 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036304 000000
036306 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036314 000000
036316 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036324 000000
036326 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036334 000000
036336 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036344 000000
036346 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036354 000000
036356 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036364 000000
036366 000000 160120 006007 .WORD 0,160120,6007,0 ; DH11 MUX CONTROLLER 4
036374 000000
10538 000020 .REPT 16.
10539 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
10540 .ENDR
036376 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036404 000000
036406 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036414 000000
036416 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036424 000000
036426 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036434 000000
036436 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036444 000000
036446 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036454 000000
036456 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036464 000000
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 149-4
SCOMM -- TERMINAL DRIVER TABLES
036466 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036474 000000
036476 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036504 000000
036506 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036514 000000
036516 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036524 000000
036526 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036534 000000
036536 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036544 000000
036546 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036554 000000
036556 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036564 000000
036566 000000 160140 006007 .WORD 0,160140,6007,0 ; DH11 MUX CONTROLLER 5
036574 000000
10541 000020 .REPT 16.
10542 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
10543 .ENDR
036576 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036604 000000
036606 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036614 000000
036616 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036624 000000
036626 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036634 000000
036636 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036644 000000
036646 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036654 000000
036656 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036664 000000
036666 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036674 000000
036676 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036704 000000
036706 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036714 000000
036716 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036724 000000
036726 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036734 000000
036736 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036744 000000
036746 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036754 000000
036756 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036764 000000
036766 000000 160160 006007 .WORD 0,160160,6007,0 ; DH11 MUX CONTROLLER 6
036774 000000
10544 000020 .REPT 16.
10545 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
10546 .ENDR
036776 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 149-5
SCOMM -- TERMINAL DRIVER TABLES
037004 000000
037006 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037014 000000
037016 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037024 000000
037026 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037034 000000
037036 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037044 000000
037046 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037054 000000
037056 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037064 000000
037066 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037074 000000
037076 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037104 000000
037106 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037114 000000
037116 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037124 000000
037126 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037134 000000
037136 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037144 000000
037146 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037154 000000
037156 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037164 000000
037166 000000 160200 006007 .WORD 0,160200,6007,0 ; DH11 MUX CONTROLLER 7
037174 000000
10547
10548 000200 DHCNT ==.-DHTBL/8. ;COUNT OF DH11'S
10549 000205 TTCNT ==.-TTTBL/8. ;NUMBER OF ENTRIES OF DATA LINE SCANNER TABLE
10550 037176' TTYEND==.
10551 037176 000000 000000 .WORD 0,0 ;GUARD WORDS FOR DH DRIVER INITIL
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150
SCOMM -- LOGICAL UNIT TABLES
10553 .SBTTL SCOMM -- LOGICAL UNIT TABLES
10554
10555 ;
10556 ; LOGICAL UNIT TABLE
10557 ;
10558 037202 .PUDBA:: ;START OF LOGICAL UNIT TABLE
10559 ;
10560 000001 L.TTY==1 ;LOGICAL UNIT 1
10561 037202 TTPEN:: .PUDEN TT,0,0,UC.REC!UC.CCL!UC.TTY,0,0,80.,TTPEN,TTYTSK,0,0,0
037202 124 124 .ASCII "TT"
037204 000 .BYTE 0
037205 000 .BYTE 0
037206 000007 .WORD UC.REC!UC.CCL!UC.TTY
037210 000000 .WORD 0
037212 000000 .WORD 0
037214 000120 .WORD 80.
037216 000000 .WORD 0
037220 037202' .WORD TTPEN
037222 032616' .WORD TTYTSK
037224 037224' .WORD .
037226 037224' .WORD .-2
037230 000000 .WORD 0
037232 005 005 .BYTE 5,5
037234 000000 .WORD 0
037236 177777 .WORD -1
037240 135600 .RAD50 /0/
037242 000000 .WORD 0
037244 000000 .WORD 0
037246 000000 .WORD 0
037250 000000 .WORD 0
10562 ;
10563 000002 L.RP4==2
10564 ;DVCH=CH.OFF+CH.NAT*400+CH.OFF+CH.NAT
10565 110220 DVCH=110220
10566 ;FW=UF.TL!UF.RH
10567 000300 FW=300
10568 ;C1=UC.MNT!UC.F11!UC.DIR
10569 140010 C1=140010
10570 ;C1DB=UC.MNT!UC.F11!UC.DIR!UC.ETB
10571 140110 C1DB=140110
10572 ;
10574 037252 RPPEN:: .PUDEN DB,0,FW,C1DB,0,0,512.,RPPEN,RPTSK,DVCH,F11,0
037252 104 102 .ASCII "DB"
037254 000 .BYTE 0
037255 300 .BYTE FW
037256 140110 .WORD C1DB
037260 000000 .WORD 0
037262 000000 .WORD 0
037264 001000 .WORD 512.
037266 000000 .WORD 0
037270 037252' .WORD RPPEN
037272 032656' .WORD RPTSK
037274 037274' .WORD .
037276 037274' .WORD .-2
037300 000000 .WORD 0
037302 005 005 .BYTE 5,5
037304 110220 .WORD DVCH
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150-1
SCOMM -- LOGICAL UNIT TABLES
037306 177777 .WORD -1
037310 025167 .RAD50 /F11/
037312 000000 .WORD 0
037314 000000 .WORD 0
037316 000000 .WORD 0
037320 000000 .WORD 0
10575 ; THIS IS DONE TO KEEP .PUDEN MACROS SHORTER THAN 80 CHARS
10576 037316' .=.-4
10577 037316 000002 .WORD 2
10578 037320 050700 .WORD 50700 ;RP SIZE IS 140000. BLOCKS
10579 037322 .RP1PE::.PUDEN DB,1,FW,C1DB,0,0,512.,.RP1PE,RPTSK,DVCH,F11,0
037322 104 102 .ASCII "DB"
037324 001 .BYTE 1
037325 300 .BYTE FW
037326 140110 .WORD C1DB
037330 000000 .WORD 0
037332 000000 .WORD 0
037334 001000 .WORD 512.
037336 000000 .WORD 0
037340 037322' .WORD .RP1PE
037342 032656' .WORD RPTSK
037344 037344' .WORD .
037346 037344' .WORD .-2
037350 000000 .WORD 0
037352 005 005 .BYTE 5,5
037354 110220 .WORD DVCH
037356 177777 .WORD -1
037360 025167 .RAD50 /F11/
037362 000000 .WORD 0
037364 000000 .WORD 0
037366 000000 .WORD 0
037370 000000 .WORD 0
10580 037366' .=.-4
10581 037366 000002 .WORD 2
10582 037370 050700 .WORD 50700
10583 037372 .RP2PE::.PUDEN DB,2,FW,C1DB,0,0,512.,.RP2PE,RPTSK,DVCH,F11,0
037372 104 102 .ASCII "DB"
037374 002 .BYTE 2
037375 300 .BYTE FW
037376 140110 .WORD C1DB
037400 000000 .WORD 0
037402 000000 .WORD 0
037404 001000 .WORD 512.
037406 000000 .WORD 0
037410 037372' .WORD .RP2PE
037412 032656' .WORD RPTSK
037414 037414' .WORD .
037416 037414' .WORD .-2
037420 000000 .WORD 0
037422 005 005 .BYTE 5,5
037424 110220 .WORD DVCH
037426 177777 .WORD -1
037430 025167 .RAD50 /F11/
037432 000000 .WORD 0
037434 000000 .WORD 0
037436 000000 .WORD 0
037440 000000 .WORD 0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150-2
SCOMM -- LOGICAL UNIT TABLES
10584 037436' .=.-4
10585 037436 000002 .WORD 2
10586 037440 050700 .WORD 50700
10587 037442 .RP3PE::.PUDEN DB,3,FW,C1DB,0,0,512.,.RP3PE,RPTSK,DVCH,F11,0
037442 104 102 .ASCII "DB"
037444 003 .BYTE 3
037445 300 .BYTE FW
037446 140110 .WORD C1DB
037450 000000 .WORD 0
037452 000000 .WORD 0
037454 001000 .WORD 512.
037456 000000 .WORD 0
037460 037442' .WORD .RP3PE
037462 032656' .WORD RPTSK
037464 037464' .WORD .
037466 037464' .WORD .-2
037470 000000 .WORD 0
037472 005 005 .BYTE 5,5
037474 110220 .WORD DVCH
037476 177777 .WORD -1
037500 025167 .RAD50 /F11/
037502 000000 .WORD 0
037504 000000 .WORD 0
037506 000000 .WORD 0
037510 000000 .WORD 0
10588 037506' .=.-4
10589 037506 000002 .WORD 2
10590 037510 050700 .WORD 50700
10591 037512 .RP4PE::.PUDEN DB,4,FW,C1DB,0,0,512.,.RP4PE,RPTSK,DVCH,F11,0
037512 104 102 .ASCII "DB"
037514 004 .BYTE 4
037515 300 .BYTE FW
037516 140110 .WORD C1DB
037520 000000 .WORD 0
037522 000000 .WORD 0
037524 001000 .WORD 512.
037526 000000 .WORD 0
037530 037512' .WORD .RP4PE
037532 032656' .WORD RPTSK
037534 037534' .WORD .
037536 037534' .WORD .-2
037540 000000 .WORD 0
037542 005 005 .BYTE 5,5
037544 110220 .WORD DVCH
037546 177777 .WORD -1
037550 025167 .RAD50 /F11/
037552 000000 .WORD 0
037554 000000 .WORD 0
037556 000000 .WORD 0
037560 000000 .WORD 0
10592 037556' .=.-4
10593 037556 000002 .WORD 2
10594 037560 050700 .WORD 50700
10595 037562 .RP5PE::.PUDEN DB,5,FW,C1DB,0,0,512.,.RP5PE,RPTSK,DVCH,F11,0
037562 104 102 .ASCII "DB"
037564 005 .BYTE 5
037565 300 .BYTE FW
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150-3
SCOMM -- LOGICAL UNIT TABLES
037566 140110 .WORD C1DB
037570 000000 .WORD 0
037572 000000 .WORD 0
037574 001000 .WORD 512.
037576 000000 .WORD 0
037600 037562' .WORD .RP5PE
037602 032656' .WORD RPTSK
037604 037604' .WORD .
037606 037604' .WORD .-2
037610 000000 .WORD 0
037612 005 005 .BYTE 5,5
037614 110220 .WORD DVCH
037616 177777 .WORD -1
037620 025167 .RAD50 /F11/
037622 000000 .WORD 0
037624 000000 .WORD 0
037626 000000 .WORD 0
037630 000000 .WORD 0
10596 037626' .=.-4
10597 037626 000002 .WORD 2
10598 037630 050700 .WORD 50700
10599 037632 .RP6PE::.PUDEN DB,6,FW,C1DB,0,0,512.,.RP6PE,RPTSK,DVCH,F11,0
037632 104 102 .ASCII "DB"
037634 006 .BYTE 6
037635 300 .BYTE FW
037636 140110 .WORD C1DB
037640 000000 .WORD 0
037642 000000 .WORD 0
037644 001000 .WORD 512.
037646 000000 .WORD 0
037650 037632' .WORD .RP6PE
037652 032656' .WORD RPTSK
037654 037654' .WORD .
037656 037654' .WORD .-2
037660 000000 .WORD 0
037662 005 005 .BYTE 5,5
037664 110220 .WORD DVCH
037666 177777 .WORD -1
037670 025167 .RAD50 /F11/
037672 000000 .WORD 0
037674 000000 .WORD 0
037676 000000 .WORD 0
037700 000000 .WORD 0
10600 037676' .=.-4
10601 037676 000002 .WORD 2
10602 037700 050700 .WORD 50700
10603 037702 .RP7PE::.PUDEN DB,7,FW,C1DB,0,0,512.,.RP7PE,RPTSK,DVCH,F11,0
037702 104 102 .ASCII "DB"
037704 007 .BYTE 7
037705 300 .BYTE FW
037706 140110 .WORD C1DB
037710 000000 .WORD 0
037712 000000 .WORD 0
037714 001000 .WORD 512.
037716 000000 .WORD 0
037720 037702' .WORD .RP7PE
037722 032656' .WORD RPTSK
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150-4
SCOMM -- LOGICAL UNIT TABLES
037724 037724' .WORD .
037726 037724' .WORD .-2
037730 000000 .WORD 0
037732 005 005 .BYTE 5,5
037734 110220 .WORD DVCH
037736 177777 .WORD -1
037740 025167 .RAD50 /F11/
037742 000000 .WORD 0
037744 000000 .WORD 0
037746 000000 .WORD 0
037750 000000 .WORD 0
10604 037746' .=.-4
10605 037746 000002 .WORD 2
10606 037750 050700 .WORD 50700
10608 000003 L.DT0==3
10618 ;
10619 000005 L.DX0==5
10620 037752 DX0PEN::.PUDEN DX,0,FW,C1,0,0,512.,DX0PEN,DXTSK,DVCH,F11,0
037752 104 130 .ASCII "DX"
037754 000 .BYTE 0
037755 300 .BYTE FW
037756 140010 .WORD C1
037760 000000 .WORD 0
037762 000000 .WORD 0
037764 001000 .WORD 512.
037766 000000 .WORD 0
037770 037752' .WORD DX0PEN
037772 033056' .WORD DXTSK
037774 037774' .WORD .
037776 037774' .WORD .-2
040000 000000 .WORD 0
040002 005 005 .BYTE 5,5
040004 110220 .WORD DVCH
040006 177777 .WORD -1
040010 025167 .RAD50 /F11/
040012 000000 .WORD 0
040014 000000 .WORD 0
040016 000000 .WORD 0
040020 000000 .WORD 0
10621 040020' .=.-2
10622 040020 000756 .WORD 494. ; +++001
10623 000006 L.DX1==6
10624 040022 DX1PEN::.PUDEN DX,1,FW,C1,0,0,512.,DX1PEN,DXTSK,DVCH,F11,0
040022 104 130 .ASCII "DX"
040024 001 .BYTE 1
040025 300 .BYTE FW
040026 140010 .WORD C1
040030 000000 .WORD 0
040032 000000 .WORD 0
040034 001000 .WORD 512.
040036 000000 .WORD 0
040040 040022' .WORD DX1PEN
040042 033056' .WORD DXTSK
040044 040044' .WORD .
040046 040044' .WORD .-2
040050 000000 .WORD 0
040052 005 005 .BYTE 5,5
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150-5
SCOMM -- LOGICAL UNIT TABLES
040054 110220 .WORD DVCH
040056 177777 .WORD -1
040060 025167 .RAD50 /F11/
040062 000000 .WORD 0
040064 000000 .WORD 0
040066 000000 .WORD 0
040070 000000 .WORD 0
10625 040070' .=.-2
10626 040070 000756 .WORD 494. ; +++001
10629 ;
10630 040072 LP0PUD::.PUDEN LP,0,0,UC.REC!UC.CCL,0,0,132.,LP0PUD,LPTSK,0,0,0
040072 114 120 .ASCII "LP"
040074 000 .BYTE 0
040075 000 .BYTE 0
040076 000003 .WORD UC.REC!UC.CCL
040100 000000 .WORD 0
040102 000000 .WORD 0
040104 000204 .WORD 132.
040106 000000 .WORD 0
040110 040072' .WORD LP0PUD
040112 032716' .WORD LPTSK
040114 040114' .WORD .
040116 040114' .WORD .-2
040120 000000 .WORD 0
040122 005 005 .BYTE 5,5
040124 000000 .WORD 0
040126 177777 .WORD -1
040130 135600 .RAD50 /0/
040132 000000 .WORD 0
040134 000000 .WORD 0
040136 000000 .WORD 0
040140 000000 .WORD 0
10633 ;
10634 040142 FE0PUD::.PUDEN FE,0,UF.RH,C1,0,0,512.,FE0PUD,FETSK,DVCH,T20,0
040142 106 105 .ASCII "FE"
040144 000 .BYTE 0
040145 200 .BYTE UF.RH
040146 140010 .WORD C1
040150 000000 .WORD 0
040152 000000 .WORD 0
040154 001000 .WORD 512.
040156 000000 .WORD 0
040160 040142' .WORD FE0PUD
040162 033016' .WORD FETSK
040164 040164' .WORD .
040166 040164' .WORD .-2
040170 000000 .WORD 0
040172 005 005 .BYTE 5,5
040174 110220 .WORD DVCH
040176 177777 .WORD -1
040200 101036 .RAD50 /T20/
040202 000000 .WORD 0
040204 000000 .WORD 0
040206 000000 .WORD 0
040210 000000 .WORD 0
10636 ;
10637 040212 SY0PUD::
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 150-6
SCOMM -- LOGICAL UNIT TABLES
10639 040212 .PUDEN SY,0,0,0,0,0,0,DX0PEN,0,0,0,0
040212 123 131 .ASCII "SY"
040214 000 .BYTE 0
040215 000 .BYTE 0
040216 000000 .WORD 0
040220 000000 .WORD 0
040222 000000 .WORD 0
040224 000000 .WORD 0
040226 000000 .WORD 0
040230 037752' .WORD DX0PEN
040232 000000 .WORD 0
040234 040234' .WORD .
040236 040234' .WORD .-2
040240 000000 .WORD 0
040242 005 005 .BYTE 5,5
040244 000000 .WORD 0
040246 177777 .WORD -1
040250 135600 .RAD50 /0/
040252 000000 .WORD 0
040254 000000 .WORD 0
040256 000000 .WORD 0
040260 000000 .WORD 0
10641
10645 040262 .PUDEA:: ;END OF LOGICAL UNIT ABLE
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 151
SCOMM MODULE -- INITLM (INITIALIZATION)
10647 .SBTTL SCOMM MODULE -- INITLM (INITIALIZATION)
10648
10649 ;
10650 ; INITIALIZATION CODE ALSO DOUBLES AS
10651 ; EMERGENCY STACK AREA FOR CRASH
10652 ;
10653 040262 INITLM::
10654 040262 013700 000002G MOV .EXEND+2,R0 ; +++008 GET ABSOLUTE EXEC LIMIT
10655 040266 062700 000003 ADD #3,R0 ; +++008 ROUND UP TO NEXT 4 BYTES
10656 040272 042700 000003 BIC #3,R0 ; +++008 SO
10657 040276 010037 033502' MOV R0,.FREPL ; +++008 SET BASE OF FREE POOL
10658 040302 012701 075774 MOV #.BGBST-4,R1 ; +++008 END OF FREE POOL - 10 BYTES
10659 040306 160001 SUB R0,R1 ; +++008 COMPUTE SIZE OF FREE POOL
10660 040310 005020 CLR (R0)+ ;INDICATE NO LINKS
10661 040312 010110 MOV R1,@R0 ; +++008 SET FREE POOL SIZE
10662 040314 010137 033504' MOV R1,.FREPL+2 ; +++008 HERE TOO
10663 040320 013700 033476' MOV .BGBUF,R0
10664 040324 005020 CLR (R0)+
10665 040326 012710 002000 MOV #.BGLEN,@R0
10666 040332 105237 031231' INCB .NOERR+1 ;SET FORCED STOP
10667 040336 010706 MOV PC,SP ;SET UP THE STACK
10668 040340 012737 000200 031116' MOV #EV.PF,.SERFG+0 ;SET POWER FAIL
10669 040346 012737 004000 177776 MOV #4000,@#PS ;ENABLE INTERRUPTS
10670 040354 012746 003124' MOV #ASXE1,-(SP)
10671 040360 162706 000006 SUB #6,SP ;SET UP INITIAL TO TEN Q
10672 040364 000137 043712' JMP INIAN ;GODO IT
10673 040370 EMGSTK:: ;EMERGENCY STACK AREA
10674 ;
10675 040370 000000 SPSAV::.WORD 0 ;SAVE AREA FOR STACK
10676 ;
10677 040372 PARSAV::.BLKW 2 ;SAVE AREA FOR PARITY ERROR REGISTERS
10678 ;(USED BY LC)
10679 ;
10680 ; .PFAIL INDICATES POWER FAIL IN PROGRESS
10681 ; IT IS USED ONLY TO INDICATE TO PRI7 TASKS THAT
10682 ; POWER FAIL UNDERWAY AND A RETURN TO THE PROGRAM
10683 ; SHOULD NOT OCCUR
10684 ;
10685 040376 000000 .PFAIL::.WORD 0
10686 ;
10687 ;
10688 040400 000000 .PFIOW::.WORD 0
10689 ;
10690 ;
10691 040402 000000 PWRXSP::.WORD 0 ;BUFFER FOR STACK POINTER
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 152
SCOMM MODULE -- .CEFN (CONVERT EFN)
10693 .SBTTL SCOMM MODULE -- .CEFN (CONVERT EFN)
10694 ; .CEFN -- SUBROUTINE TO CONVERT AN EVENT FLAG NUMBER INTO A FORM SUCH THAT
10695 ; IT MAY BE READ, SET, AND CLEARED VIA "BIT", "BIS", AND "BIC" INSTRUCTIONS.
10696 ;
10697 ; ALTERNATE ENTRY POINT .CEFN3 THAT DETERMINES EFN WITHOUT DOIN
10698 ; MOVE FROM PRIVIOUS
10699 ; ENTRY CONDITIONS:
10700 ;
10701 ; R1 -- ADDRESS OF A WORD CONTAINING
10702 ; R3 -- EFN NUMBER (FOR .CEFN3 ENTRY ONLY)
10703 ; THE EVENT FLAG NUMBER, AND THE EFN CAN BE FETCHED
10704 ; R5 -- ATL NODE ADDRESS OF ISSUING TASK (.CRTSK)
10705 ;
10706 ; CALLING SEQUENCE:
10707 ;
10708 ; CALL .CEFN
10709 ; CALL .CEFN3
10710 ;
10711 ; EXIT CONDITIONS:
10712 ;
10713 ; R3 -- BIT MASK SELECTING FLAG IN WORD
10714 ; R2 -- ADDRESS OF WORD CONTAINING THE FLAG
10715 ;
10716 ; IF AN EVENT FLAG IS NOT SPECIFIED (EFN=0),
10717 ; BOTH R2 & R3 ARE RETURNED ZERO.
10718 ;
10719 ; CONDITION CODES ARE SET PER "TST R3" AT RETURN
10720 ;
10721 ; IF EFN IS OUT OF RANGE (<0 OR >64.) CONTROL IS TRANSFERRED
10722 ; TO DIRECTIVE ERROR STATUS 'E.97'.
10723 ;
10724 ; REGISTERS ALTERED:
10725 ;
10726 ; R2 & R3
10727 ;
10728 040404 005002 .CEFN:: CLR R2 ;(CLEARED FOR DIVIDE AND ERROR RETURN)
10729 040406 MFPS @R1,R3
040406 011103 MOV @R1,R3
10730 040410 042703 177400 .CEFN3::BIC #177400,R3
10731 040414 001423 BEQ 20$ ;EFN=0 -- NO FLAG SPECIFIED
10732 040416 020327 000100 CMP R3,#64. ;IS EFN IN RANGE: 0-64.?
10733 040422 101022 BHI X8X97 ;NO -- RETURN STS=-97
10734 040424 005303 DEC R3 ;YES -- CONVERT EFN TO INDEX (0,2,4,6)
10735 ;IN R2, AND FLAG MASK IN R3.
10736 040426 CALL DIV216 ;DIVIDE R2 BY 16
040426 004737 041262' JSR PC,DIV216
10737 040432 006302 ASL R2
10738 040434 006303 ASL R3 ;FIND BIT MASK
10739 040436 016303 042572' MOV BITTBL(R3),R3
10740 040442 020227 000004 CMP R2,#4 ;FLAG IN RANGE 33-64?
10741 040446 002403 BLT 10$
10742 040450 062702 031106' ADD #.COMEF-4,R2 ;YES -- SET R2 TO ADDRESS OF WORD IN
10743 040454 000403 BR 20$ ;SCOMM(COMMON EVENT FLAGS)
10744 040456 060502 10$: ADD R5,R2 ;NO -- SET R2 TO ADDRESS OF WORD IN
10745 040460 062702 000020 ADD #A.EF,R2 ;ATL NODE (TASK'S EVENT FLAGS)
10746 040464 005703 20$: TST R3 ;SET CONDITION CODES
10747 040466 RETURN
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 152-1
SCOMM MODULE -- .CEFN (CONVERT EFN)
040466 000207 RTS PC
10748
10749 040470 104637 X8X97::TRAP DE.97
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 153
SCOMM MODULE -- .CKDEL (CLOCK DELETE)
10751 .SBTTL SCOMM MODULE -- .CKDEL (CLOCK DELETE)
10752 ;
10753 ;
10754 ;
10755 ; .CKDEL -- SUBROUTINE TO REMOVE AN ENTRY FORM THE CLOCK LIST
10756 ;
10757 ; CALLING SEQUENCE:
10758 ;
10759 ; R4 -- POINTER TO ENTRY TO BE REMOVED
10760 ;
10761 ; CALL .CKDEL
10762 ;
10763 ; EXIT CONDITIONS:
10764 ;
10765 ; NO ERROR CONDITIONS:
10766 ;
10767 ; REGISTERS ALTERED: NONE
10768 ;
10769 .ENABL LSB
10770 040472 010446 .CKDEL::MOV R4,-(SP) ;SAVE REGISTERS
10771 040474 010546 MOV R5,-(SP)
10772 040476 010405 MOV R4,R5
10773 040500 062705 000014 ADD #C.SZ,R5 ;LOOK AT THE NEXT ENTRY
10774 040504 012524 10$: MOV (R5)+,(R4)+ ;NO -- MOVE AN ENTRY UP
10775 040506 001406 BEQ 30$ ;END OF TABLE
10776 040510 012524 MOV (R5)+,(R4)+
10777 040512 012524 MOV (R5)+,(R4)+
10778 040514 012524 MOV (R5)+,(R4)+
10779 040516 012524 MOV (R5)+,(R4)+
10780 040520 012524 MOV (R5)+,(R4)+
10781 040522 000770 BR 10$ ;TRY AGAIN
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 154
SCOMM MODULE -- .DTDEL (DTE20 DELETE)
10783 .SBTTL SCOMM MODULE -- .DTDEL (DTE20 DELETE)
10784 ;
10785 ;
10786 ;
10787 ; .DTDEL -- SUBROUTINE TO REMOVE AN ENTRY FORM THE DTE20 LIST
10788 ;
10789 ; CALLING SEQUENCE:
10790 ;
10791 ; R4 -- POINTER TO ENTRY TO BE REMOVED
10792 ;
10793 ; CALL .DTDEL
10794 ;
10795 ; EXIT CONDITIONS:
10796 ;
10797 ; NO ERROR CONDITIONS:
10798 ;
10799 ; REGISTERS ALTERED: NONE
10800 ;
10815
10816 040524 005024 30$: CLR (R4)+ ;INSURE LAST ENTRY 0
10817 040526 012605 MOV (SP)+,R5 ;RESTORE
10818 040530 012604 MOV (SP)+,R4
10819 040532 RETURN ;RETURN TO CALLER
040532 000207 RTS PC
10821 .DSABL LSB
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 155
SCOMM MODULE -- ..IODN (SUBROUTINE TO COMPLETE I/O)
10823 .SBTTL SCOMM MODULE -- ..IODN (SUBROUTINE TO COMPLETE I/O)
10824 ;+
10825 ;
10826 ; ..IODN -- SUBROUTINE TO COMPLETE THE USER'S I/O
10827 ; REQUEST. ..IODN SETS TWO WORDS OF
10828 ; THE I/O STATUS BLOCK IN THE USER'S AREA AND
10829 ; AN EVENT FLAG (IF SPECIFIED) IS SET.
10830 ; THE REQUEST NODE IS RETURNED TO THE POOL .
10831 ;
10832 ; JUST BEFORE ..IODN EXITS IT DECLARES A SIG EVENT TO INFORM THE
10833 ; SYSTEM THAT SOME I/O IS COMPLETE AND
10834 ; POSSIBLE A TASK MAY BE RESTARTED.
10835 ;
10836 ;
10837 ; CALLING SEQUENCE:
10838 ; R1 -- REQUEST NODE ADDRESS
10839 ; R3 -- I/O STATUS BLOCK WD. 00
10840 ; R4 -- I/O STATUS BLOCK WD. 01.
10841 ; CALL ..IODN
10842 ;-
10843 ;
10844 ;
10845 040534 010046 ..IODN::MOV R0,-(SP) ;SAVE THE REGISTERS
10846 040536 010446 MOV R4,-(SP)
10847 ;STATUS SO THAT THEY CAN BE SET BY BLXO
10848 040540 010346 MOV R3,-(SP)
10849 040542 010604 MOV SP,R4 ;POINT TO THE TWO VALUES FOR I/O STATUS BLOCK
10850 040544 010246 MOV R2,-(SP)
10851 040546 012703 000004 MOV #4,R3 ;SET UP TO MOVE 4 BYTES
10852 040552 016102 000016 MOV R.SB(R1),R2
10853 040556 001402 BEQ 10$ ;SKIP IF NO STATUS BLOCK
10854 040560 CALL ..BLXO ;MOVE THE TWO WORDS
040560 004737 044416' JSR PC,..BLXO
10855 040564 012602 10$: MOV (SP)+,R2 ;RESTORE R2
10856 040566 012603 MOV (SP)+,R3
10857 040570 116100 000013 MOVB R.FN(R1),R0 ;PICKUP EVENT FLAG NUMBER
10858 040574 001404 BEQ 20$ ;DON'T TRY TO SET IF NO FLAG
10859 040576 016104 000006 MOV R.AT(R1),R4 ;FIND THE ATL NODE ADDRESS
10860 040602 CALL ..SEFN ;SET THE EVENT FLAG
040602 004737 041200' JSR PC,..SEFN
10861 040606 152737 000001 031116' 20$: BISB #EV.SE,.SERFG+0 ;;DECLARE A SIG EVENT
10862 040614 016104 000020 MOV R.AS(R1),R4 ;AST ADDRESS?
10863 040620 001406 BEQ 30$ ;NO -- FORGET IT
10864 040622 010546 MOV R5,-(SP) ;SAVE R5
10865 040624 016105 000006 MOV R.AT(R1),R5 ;SET UP THE ATL ADDRESS
10866 040630 CALL .STAST ;START AST (NOTE -- CAN'T FAIL)!!
040630 004737 005246' JSR PC,.STAST
10867 040634 012605 MOV (SP)+,R5 ;RESTORE R5
10868 040636 010100 30$: MOV R1,R0 ;SET UP NODE ADDRESS
10869 040640 012701 000040 MOV #32.,R1 ;SET UP SIZE OFNODE
10870 040644 CALL ..DECB ;DEALLOCATE CORE BUFFER
040644 004737 042012' JSR PC,..DECB
10871 040650 012604 MOV (SP)+,R4
10872 040652 012600 MOV (SP)+,R0
10873 040654 RETURN
040654 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 156
SCOMM MODULE -- ..DQRN (DEQUEUE A NORMAL REQUEST)
10875 .SBTTL SCOMM MODULE -- ..DQRN (DEQUEUE A NORMAL REQUEST)
10876 ;+
10877 ;
10878 ;
10879 ; ..DQRN -- ROUTINE TO PICK A REQEST NODE FROM PUD
10880 ;
10881 ;
10882 ; THE NODE ON THE TOP IF THE QUEUE (HIGHEST PRIORITY)
10883 ; PICKED FROM THE QUEUE AND RETURNED TO THE
10884 ; HANDLER TASK.
10885 ; IF NO NODE CAN BE FOUND ..DQRN RETURNS WITH
10886 ; THE CONDITION CODES SET TO INDICATE FAILURE
10887 ; TO PICK A NODE
10888 ; TASK SWITCHING IS INHIBITED DURING THE SCAN OF
10889 ; THE DEQUE TO PREVENT ..IPRI FROM
10890 ; INSERTING A NODE INTO THE LIST WHILE ONE
10891 ; IS BEING REMOVED.
10892 ;
10893 ; CALLING SEQUENCE:
10894 ;
10895 ; R0 -- ASCII 2 CHARACTER DEVICE NAME
10896 ;
10897 ; CALL ..DQRN
10898 ;
10899 ; EXIT CONDITIONS:
10900 ; R0 -- PUD ADDRESS OF NODE PICKED+U.RF
10901 ; R1 -- ADDRESS OF REQUEST NODE OR UNDEFINED IF NO NODE FOUND
10902 ; R2 -- UNIT NUMBER
10903 ; R3 -- BYTE COUNT
10904 ; R4 -- HIGH ORDER ADDRESS (BITS 4,5)
10905 ; R5 -- LOW ORDER ADDRESS
10906 ;
10907 ; CC -- C BIT SET IF NO NODE FOUND
10908 ; CC -- C BIT CLEAR IF NODE FOUND
10909 ;
10910 ; EVENT FLAG EF.NIR CLEARED IF NO NODE FOUND
10911 ; EVENT FLAG EF.NIR SET IF NODE FOUND
10912 ;-
10913 ;
10914 ;
10915 040656 013701 031110' ..DQRN::MOV .CRTSK,R1 ;CLEAR THE EVENT FLAG OF THE HANDLER
10916 040662 042761 000010 000020 BIC #EF.NIR,A.EF(R1)
10917 040670 012704 037202' MOV #.PUDBA,R4 ;FIND THE LOGICAL UNIT NUMBER
10918 040674 020014 10$: CMP R0,@R4 ;FIND THE POINTER TO THIS LUN
10919 040676 001403 BEQ 20$ ;FOUND CORRECT LUN
10920 040700 062704 000050 ADD #U.SZ,R4 ;POINT TO NEXT LUN
10921 040704 000773 BR 10$ ;AND TRY AGAIN
10922 ;
10923 040706 062704 000022 20$: ADD #U.RF,R4 ;NO -- DEQUE FIRST NODE
10924 040712 .INH0 ;;INHIBIT TASK SWITCHING
040712 013746 177776 MOV @#PS,-(SP)
040716 112737 000140 177776 MOVB #140,@#PS
10925 040724 010446 30$: MOV R4,-(SP) ;;SAVE ADDRESS
10926 040726 CALL ..PICK ;;PICK A NODE IF POSSIBLE
040726 004737 041464' JSR PC,..PICK
10927 040732 103011 BCC 40$ ;;POSSIBLE -- CONTINUE
10928 040734 012604 MOV (SP)+,R4 ;;RESTORE PUD ADDRESS
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 156-1
SCOMM MODULE -- ..DQRN (DEQUEUE A NORMAL REQUEST)
10929 040736 062704 000050 ADD #U.SZ,R4 ;;LOOK AT NEXT ENTRY
10930 040742 026464 177756 177706 CMP -U.RF(R4),-U.RF-U.SZ(R4) ;CHECK DEVICE NAME
10931 040750 001765 BEQ 30$
10932 040752 005216 INC @SP ;;SET CARRY
10933 040754 000466 BR 65$ ;;AND RETURN
10934 ;
10935 040756 010401 40$: MOV R4,R1 ;;SET UP NODE ADDRESS FOR RETURN
10936 040760 016102 000004 MOV R.TD(R1),R2 ;;YES -- CHHANGE THE DISK ADDRESS
10937 040764 013704 031110' MOV .CRTSK,R4 ;;SET THE EVENT FLAG
10938 040770 016105 000014 MOV R.FC(R1),R5 ;;FIND THE FUNCTION CODE
10939 040774 020527 001400 CMP R5,#IO.ATT ;;ATTACH FUNCTION?
10940 041000 001457 BEQ 70$ ;;YES -- HANDLE ATTACH HERE
10941 041002 020527 002000 CMP R5,#IO.DET ;;DETACH ?
10942 041006 001470 BEQ 80$ ;;YES HANDLE HERE
10943 041010 022705 001010 CMP #IO.LOV,R5 ;;IS THE FUNCTION CODE LOAD OVERLAY?
10944 041014 001013 BNE 50$ ;;NO -- PROCEED
10945 041016 066261 000034 000034 ADD S.DL+2(R2),R.PB+10(R1)
10946 041024 005561 000032 ADC R.PB+6(R1)
10947 041030 066261 000032 000032 ADD S.DL(R2),R.PB+6(R1)
10948 041036 012761 001000 000014 45$: MOV #IO.RLB,R.FC(R1) ;SET FUNCTION CODE TO READ LOGICAL BLOCK
10949 041044 022761 000050 000014 50$: CMP #IO.LTK,R.FC(R1) ;;IS THIS A LOAD TASK FUNCTION?
10950 041052 001013 BNE 60$ ;; PROCEED
10951 041054 016202 000012 MOV S.BA(R2),R2 ;;SET THE CORE ADDRESS
10958 041060 010261 000024 MOV R2,R.PB(R1) ;;SET CORE ADDRESS
10959 041064 016102 000006 MOV R.AT(R1),R2 ;;FIND THE ATL NODE ADDRESS
10960 041070 062702 000030 ADD #A.FM+4,R2 ;;SET I/O STATUS WORD TO POINT TO A.FM+4
10961 041074 010261 000016 MOV R2,R.SB(R1) ;;
10962 041100 000756 BR 45$ ;;CHANGE FUNCTION TO READ
10963 ;
10964 041102 052764 000010 000020 60$: BIS #EF.NIR,A.EF(R4) ;;FOR DQ NORMAL
10965 041110 016103 000026 MOV R.PB+2(R1),R3 ;;FIND THE SIZE OF THE XFER
10966 041114 016102 000024 MOV R.PB(R1),R2 ;;SET UP FOR VALIDATE
10967 041120 CALL ..VXFR ;;VALIDATE XFER
041120 004737 044376' JSR PC,..VXFR
10968 041124 012600 MOV (SP)+,R0 ;;FIND THE PUD ADDRESS
10969 041126 116002 177760 MOVB U.UN-U.RF(R0),R2 ;;SET UNIT NUMBER ON STACK
10970 041132 65$: .ENB0 ;;ENABLE INTERRUPTS
041132 004737 041526' JSR PC,..ENB0
10971 041136 RETURN ;NO -- RETURN
041136 000207 RTS PC
10972 ;
10973 041140 012604 70$: MOV (SP)+,R4 ;;RESTORE PUD ADDRESS
10974 041142 016164 000006 177772 MOV R.AT(R1),U.AF-U.RF(R4) ;;SET ATTACH FLAG
10975 041150 75$: .ENB0 ;;ENABLE TASK SWITCHING
041150 004737 041526' JSR PC,..ENB0
10976 041154 012703 000001 MOV #1,R3 ;;RETURN +1 STATUS
10977 041160 005004 CLR R4
10978 041162 CALL ..IODN
041162 004737 040534' JSR PC,..IODN
10979 041166 000633 BR ..DQRN ;DEQUEUE AGAIN
10980 ;
10981 041170 012604 80$: MOV (SP)+,R4 ;;RESTORE PUD ADDRESS
10982 041172 005064 177772 CLR U.AF-U.RF(R4) ;;CLEAR ATTACH
10983 041176 000764 BR 75$ ;;AND RETURN I/O DONE STATUS
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 157
SCOMM MODULE -- ..SEFN (SET EVENT FLAG)
10985 .SBTTL SCOMM MODULE -- ..SEFN (SET EVENT FLAG)
10986 ;+
10987 ;
10988 ;
10989 ; ..SEFN -- SUBROUTINE TO SET AN EVENT FLAG FOR A HANDLER TASK.
10990 ; THIS IS A GENERAL ROUTINE TO SET ANY EVENT FLAG AND
10991 ; MAY BE USED BY A HANDLER TASK AT INTERRUPT LEVEL.
10992 ; THE MAIN PURPOSE OF THIS ROUTINE IS TO
10993 ; SET THE REQUESTOR'S EVENT FLAG FOR ..IODN.
10994 ;
10995 ;
10996 ; CALLING SEQUENCE:
10997 ; R0 -- EVENT FLAG NUMBER 1-64
10998 ; R4 -- ACTIVE TASK LIST ENTRY
10999 ; CALL ..SEFN
11000 ;-
11001 ;
11002 041200 010246 ..SEFN::MOV R2,-(SP) ;SAVE USED REGISTERS
11003 041202 010346 MOV R3,-(SP)
11004 041204 010003 MOV R0,R3 ;
11005 041206 005303 DEC R3 ;DECREMENT FOR 1 LESS THAN COUNT
11006 ;CONVERT EFN TO INDEX AND
11007 041210 CALL DIV216 ;FLAG MASK
041210 004737 041262' JSR PC,DIV216
11008 041214 006302 ASL R2
11009 041216 006303 ASL R3 ;FIND BIT MASK ADDRESS
11010 041220 020227 000004 CMP R2,#4 ;TEST FOR COMMON SET
11011 041224 002403 BLT 10$ ;NO -- FLAGS IN ATL
11012 041226 062702 031106' ADD #.COMEF-4,R2 ;YES -- POINT TO COMMON FLAGS
11013 041232 000403 BR 20$
11014 041234 060402 10$: ADD R4,R2 ;POINT TO ATL SET
11015 041236 062702 000020 ADD #A.EF,R2
11016 041242 056312 042572' 20$: BIS BITTBL(R3),@R2 ;SET EVENT FLAGS
11017 041246 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;DECLARE SIGNIFIGANT EVENT
11018 041254 012603 MOV (SP)+,R3
11019 041256 012602 MOV (SP)+,R2
11020 041260 RETURN ;RETURN
041260 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 158
SCOMM MODULE -- DIV216 (DIV R2 BY 16)
11022 .SBTTL SCOMM MODULE -- DIV216 (DIV R2 BY 16)
11023 ;
11024 ; DIV216 -- SUBROUTINE TO SIMULATE A HARDWARE
11025 ; DIVIDE INSTRUCTION (DIV #16,R2)
11026 ;
11027 ; CALLING SEQUENCE:
11028 ;
11029 ; R3 -- NUMBER TO BE DIVIDED BY 16
11030 ; CALL DIV216
11031 ;
11032 ; EXIT CONDITIONS:
11033 ; R3 -- REMAINDER
11034 ; R2 -- QUOTIENT
11035 ;
11036 041262 010302 DIV216::MOV R3,R2 ;FIND THE REMAINDER
11037 041264 042703 177760 BIC #177760,R3 ;MASK OFF THE REMAINDER
11038 041270 006002 ROR R2 ;DIVIDE R2 BY 2
11039 041272 006002 ROR R2 ;AGAIN
11040 041274 006002 ROR R2 ;AND AGAIN
11041 041276 006002 ROR R2 ;NOW HAVE DONE IT BY 16.
11042 041300 042702 170000 BIC #170000,R2 ;MASK OFF JUNK PROPIGATED BY ROR
11043 041304 RETURN ;RETURN TO CALLER
041304 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 159
SCOMM MODULE -- ..NDEL (NODE DELETE)
11045 .SBTTL SCOMM MODULE -- ..NDEL (NODE DELETE)
11046 ;+
11047 ;
11048 ; ..NDEL -- ROUTINE TO DELETE A NODE FROM A LIST
11049 ; THIS IS A BASIC SUBROUTINE TO DELETE
11050 ; NODES FROM A LIST. IT DOES NOT DO
11051 ; ANY ACCOUNTING OR LOOKING THE NODE
11052 ; IT ASSUMES THAT THERE IS A NODE TO BE PICKED
11053 ; AND INHIBITS INTERRUPTS TO PREVENT CONFLICTS WITH
11054 ; NODES BEING ADDED TO A DEQUE.
11055 ;
11056 ;
11057 ; CALLING SEQUENCE:
11058 ; R4 -- POINTER TO NODE TO BE DELETED
11059 ; CALL ..NDEL
11060 ;-
11061 ;
11062 041306 010146 ..NDEL::MOV R1,-(SP) ;SAVE R1
11063 041310 .INH6 ;;;INHIBIT ALL INTERRUPTS
041310 013746 177776 MOV @#PS,-(SP)
041314 112737 000300 177776 MOVB #300,@#PS
11064 041322 011401 MOV @R4,R1 ;;;PICK THE NODE
11065 041324 010174 000002 MOV R1,@2(R4) ;;;
11066 041330 016461 000002 000002 MOV 2(R4),2(R1) ;;;
11067 041336 .ENB6 ;;;ENABLE INTERRUPTS
041336 012637 177776 MOV (SP)+,@#PS
11068 041342 012601 MOV (SP)+,R1 ;RESTORE R1
11069 041344 RETURN ;RETURN TO CALLER
041344 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 160
SCOMM MODULE -- ..IPRI (INSERT NODE BY PRIORITY)
11071 .SBTTL SCOMM MODULE -- ..IPRI (INSERT NODE BY PRIORITY)
11072 ;+
11073 ;
11074 ; ..IPRI -- ROUTINE TO INSERT A NODE BY PRIORITY
11075 ; THIS ROUTINE WILL SEARCH A QUEUE (TASK SWITCHING INHIBITED)
11076 ; AND INSERT A NODE IN IT'S CORRECT PRIORITY POSITION. IF THERE
11077 ; IS A NODE IN THE
11078 ; LIST WITH THE SAME PRIORITY AS THE ONE
11079 ; TO BE INSERTED THE NEW NODE WILL COME AFTER
11080 ; THE OTHER NODES WITH THE SAME PRIORITY (FIFO)
11081 ; ..IPRI EXPECTS THE NODE TO HAVE A PRIORITY
11082 ; IN THE COMMON NODE PRIORITY POSITION.
11083 ;
11084 ;
11085 ; CALLING SEQUENCE:
11086 ; R1 -- NODE ADDRESS
11087 ; R2 -- LIST HEAD
11088 ; CALL ..IPRI
11089 ;-
11090 ;
11091 ;
11092 041346 010446 ..IPRI::MOV R4,-(SP) ;SAVE R4
11093 041350 010204 MOV R2,R4 ;PICK UP THE POINTER TO THE LIST HEAD
11094 041352 .INH0 ;;INHIBIT ALL INTERRUPTS DURING SCAN
041352 013746 177776 MOV @#PS,-(SP)
041356 112737 000140 177776 MOVB #140,@#PS
11095 041364 011404 10$: MOV @R4,R4 ;;PICK UP THE FIRST NODE
11096 041366 020402 CMP R4,R2 ;;END OF THE SCAN?
11097 041370 001404 BEQ 20$ ;;YES -- INSERT THE NODE
11098 041372 126461 000010 000010 CMPB N.PR(R4),N.PR(R1) ;;NO -- LOOK AT THE PRIORITIES
11099 041400 103371 BHIS 10$ ;;NO MATCH TRY AGAIN
11100 041402 016404 000002 20$: MOV N.BP(R4),R4 ;;BACK UP ONE
11101 041406 CALL ..NADD ;;ADD THE NODE TO THE QUEUE
041406 004737 041422' JSR PC,..NADD
11102 041412 .ENB0 ;;ENABLE INTERRUPTS
041412 004737 041526' JSR PC,..ENB0
11103 041416 012604 MOV (SP)+,R4 ;RESTORE R4
11104 041420 RETURN ;RETURN TO CALLER
041420 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 161
SCOMM MODULE -- ..NADD (NODE ADD)
11106 .SBTTL SCOMM MODULE -- ..NADD (NODE ADD)
11107 ;+
11108 ;
11109 ;
11110 ; ..NADD -- ROUTINE TO ADD A NODE TO A DEQUEUE
11111 ; ..NADD IS THE GENERAL PICK A NODE ROUTINE
11112 ; THE ADDITION OF A NODE IS DONE WITH INTERRUPTS
11113 ; INHIBITED TO PREVENT A CONFLICT WITH
11114 ; NODE DELETION.
11115 ;
11116 ;
11117 ; CALLING SEQUENCE:
11118 ; R1 -- NODE ADDRESS
11119 ; R4 -- ADDRESS OF LISTHEAD OR PREVIOUS NODE
11120 ; CALL ..NADD
11121 ;-
11122 ;
11123 ;
11124 041422 010246 ..NADD::MOV R2,-(SP) ;SAVE R2
11125 041424 010461 000002 MOV R4,2(R1) ;SET UP BACKWARD POINTER IN NODE
11126 041430 .INH6 ;;;INHIBIT INTERRUPTS
041430 013746 177776 MOV @#PS,-(SP)
041434 112737 000300 177776 MOVB #300,@#PS
11127 041442 011411 MOV @R4,@R1 ;;;SET UP FORWARD POINTER
11128 041444 010114 MOV R1,@R4 ;;;FORWARD POINTER FROM LIST HEAD
11129 041446 011102 MOV @R1,R2 ;;;
11130 041450 010162 000002 MOV R1,2(R2) ;;;
11131 041454 .ENB6 ;;;ENABLE INTERRUPTS
041454 012637 177776 MOV (SP)+,@#PS
11132 041460 012602 MOV (SP)+,R2 ;RESTORE R2
11133 041462 RETURN ;RETURN TO CALLER
041462 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 162
SCOMM MODULE -- ..PICK (PICK A NODE)
11135 .SBTTL SCOMM MODULE -- ..PICK (PICK A NODE)
11136 ;+
11137 ;
11138 ;
11139 ; ..PICK -- ROUTINE TO PICK A NODE FROM A DEQUEUE
11140 ; ..PICK IS THE GENERAL PICK A NODE ROUTINE.
11141 ; IT'S PRIMARY USE IS TO PICK A NODE FROM
11142 ; A LIST. IT CHECKS TO SEE THAT A NODE DOES
11143 ; EXIST IN THE LIST BUT IT DOES NO
11144 ; ACCOUNTING OF THE NODES. ..PICK INHIBITS
11145 ; INTERRUPTS TO PREVENT A NODE FROM
11146 ; BEING ADDED WHILE IT CHECKS TO SEE
11147 ; IF THERE IS REALLY A NODE TO BE PICKED.
11148 ;
11149 ; CALLING SEQUENCE:
11150 ; R4 -- LIST HEAD OR PREVIOUS NODE TO THE NODE TO BE PICKED
11151 ; CALL ..PICK
11152 ;
11153 ; EXIT CONDITIONS:
11154 ; CC - C BIT CLEAR
11155 ; R4 -- PICKED NODE ADDRESS
11156 ; ERROR CONDITIONS:
11157 ; CC -- C BIT SET
11158 ; NOTE -- THIS CONDITION CAN'T HAPPEN UNLESS R4 IS THE LISTHEAD
11159 ; R4 -- ZERO
11160 ;-
11161 ;
11162 ;
11163 ;
11164 041464 000241 ..PICK::CLC ;ASSUME SUCCESS
11165 041466 .INH6 ;;;INHIBIT ALL INTERRPUTS
041466 013746 177776 MOV @#PS,-(SP)
041472 112737 000300 177776 MOVB #300,@#PS
11166 041500 020414 CMP R4,@R4 ;;;IS THERE A NODE TO PICK?
11167 041502 001406 BEQ 20$ ;;;NO -- THEN DON'T PICK IT
11168 041504 011404 MOV @R4,R4 ;;;
11169 041506 CALL ..NDEL ;;;DELETE THE NODE
041506 004737 041306' JSR PC,..NDEL
11170 041512 10$: .ENB6 ;;;ENABLE INTERRUPTS
041512 012637 177776 MOV (SP)+,@#PS
11171 041516 RETURN ;RETURN TO CALLER
041516 000207 RTS PC
11172 ;
11173 041520 005004 20$: CLR R4 ;NO NODE FOUND CLEAR RETURNED VALUE
11174 041522 005216 INC @SP ;SET C BIT TO INDICATE ERROR
11175 041524 000772 BR 10$ ;RETURN
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 163
SCOMM MODULE -- ..ENB0 (ENABLE TASK SWITCHING)
11177 .SBTTL SCOMM MODULE -- ..ENB0 (ENABLE TASK SWITCHING)
11178 ;+
11179 ;
11180 ;
11181 ; ..ENB0 -- ROUTINE TO ENABLE TASK SWITCHING
11182 ; ..ENB0 -- ENABLES TASK SWITCHING AND
11183 ; ALLOWS THE SYSTEM TO UPDATE THE CLOCK AND
11184 ; RECOGNIZE SIGNIFIGANT EVENTS. THIS
11185 ; ROUTINE MUST BE ENTERED WITH THE PS SAVED ON
11186 ; THE TOP OF THE STACK. THE USUAL WAY
11187 ; SETTING UP TO USE THIS ROUTINE IS BY USE OF
11188 ; THE .INH0 MACRO.
11189 ; THIS ROUTINE WILL NOT ENABLE TASK SWITCHING IF
11190 ; THE PRIORITY SAVED ON THE STACK
11191 ; DOES NOT INDICATE A RETURN TO PRIORITY 0 (NON
11192 ; ENTERED AT PROCESSOR PRIORITY LEVEL 3
11193 ;
11194 ; CALLING SEQUENCE:
11195 ; CALL ..ENB0
11196 ;
11197 ; NOTE -- PS SAVED BY .INH0 MUST BE ON THE TOP OF THE STACK
11198 ;
11199 ; .INH0 IS A MACRO DEFINED AS FOLLOWS:
11200 ; .MACRO .INH0
11201 ; MOV PS,-(SP)
11202 ; BIS #140,PS
11203 ; .ENDM
11204 ;
11205 ;-
11206 ;
11207 ;
11208 041526 010146 ..ENB0::MOV R1,-(SP) ;;
11209 041530 016601 000004 MOV 4(SP),R1 ;;PICK UP THE STATUS WORD FROM THE STACK
11210 041534 032701 000340 BIT #340,R1 ;;TEST THE STATUS RETURNING TO
11211 041540 001003 BNE 20$ ;;IF RETURNING TO OTHER THAN 0 DON'T ENABLE TASK SWITCHING
11212 041542 010146 10$: MOV R1,-(SP) ;;NEW STATUS WORD IN R1
11213 ;; PLACE IT ON THE STACK
11214 ;;TO SET UP FOR COMMON SCAN
11215 041544 004737 004146' JSR PC,..INTX ;;PUSH THE RETURN ADDRESS ON THE STACK
11216 041550 012601 20$: MOV (SP)+,R1 ;RESTORE R1 TO PRE-TASK SWITCHING STATE
11217 041552 016637 000002 177776 MOV 2(SP),@#PS ;SET UP THE NEW PROCESSOR STATUS
11218 041560 000002 RTI ;RTI POPS THE STACK TWICE AND RETURNS TO THE CALLER
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 164
SCOMM MODULE -- ..FSTD (FIND STD ENTRY)
11220 .SBTTL SCOMM MODULE -- ..FSTD (FIND STD ENTRY)
11221 ;+
11222 ;
11223 ; ..FSTD -- SUBROUTINE TO SEARCH THE SYSTEM TASK DIRECTORY FOR AN
11224 ; ENTRY FOR A NAMED TASK.
11225 ;
11226 ; ENTRY CONDITIONS:
11227 ;
11228 ; R1 -- ADDRESS OF THE FIRST WORD
11229 ; OF A TWO WORD BLOCK CONTAINING A TASK NAME (RADIX-50),
11230 ; AND THE BLOCK CAN BE FETCHED
11231 ;
11232 ; CALLING SEQUENCE:
11233 ;
11234 ; CALL ..FSTD
11235 ;
11236 ; EXIT CONDITIONS:
11237 ;
11238 ; R1 -- ADVANCED BY FOUR (2 WORDS),
11239 ; R2 -- STD ENTRY ADDRESS, OR ZERO IF NAME NOT FOUND.
11240 ; R3 -- 1 BEYOND ALPHA PLACE TO INSERT
11241 ;
11242 ; CONDITION CODES SET PER "TST R2".
11243 ;
11244 ; REGISTERS ALTERED:
11245 ;
11246 ;
11247 ; INTERNAL REGISTER USAGE:
11248 ;
11249 ;-
11250 ;
11251 041562 010546 ..FSTD::MOV R5,-(SP)
11252 041564 013703 032000' MOV .STDTA,R3 ;FIND THE BEGINNING
11253 041570 010305 MOV R3,R5 ;FIND THE END
11254 041572 063705 032004' ADD .STDTZ,R5
11255 041576 MFPI (R1)+ ;FIND TASK NAME
041576 012146 MOV (R1)+,-(SP)
11256 041600 MFPI (R1)+
041600 012146 MOV (R1)+,-(SP)
11257 041602 012302 5$: MOV (R3)+,R2
11258 041604 021266 000002 CMP @R2,2(SP) ;TASK NAME CORRECT?
11259 041610 101007 BHI 50$ ;NO -- TRY NEXT ONE
11260 041612 103404 BLO 10$ ;NO AND NOT HERE
11261 041614 026216 000002 CMP 2(R2),@SP ;MAYBE CHECK SECOND HALF
11262 041620 001404 BEQ 30$ ;GOT IT
11263 041622 101002 BHI 50$ ;NO -- AND NOTHING THERE
11264 041624 020305 10$: CMP R3,R5 ;END OF LIST?
11265 041626 101765 BLOS 5$ ;NO -- CONTUNUE
11266 041630 005002 50$: CLR R2 ;RETURN R2 0
11267 041632 022626 30$: CMP (SP)+,(SP)+ ;REMOVE NAME
11268 041634 012605 MOV (SP)+,R5
11269 041636 005702 TST R2 ;RETURN CONDITIONS PER R2
11270 041640 60$: RETURN ;RETURN TO CALLER
041640 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 165
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2 (ALLOCATE/DEALLOCA
11272 .SBTTL SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2 (ALLOCATE/DEALLOCATE CORE)
11273 ;+
11274 ;
11275 ; THIS ROUTINE IS CALLED TO ALLOCATE AN CORE BUFFER. THE ALLOCATION
11276 ; ALGORITHM IS FIRST FIT AND BLOCKS ARE ALLOCATED IN MULTIPLES OF FOUR
11277 ; BYTES.
11278 ;
11279 ; INPUTS:
11280 ;
11281 ; R0=ADDRESS OF CORE ALLOCATION LISTHEAD IF ENTRY AT $ALOC1.
11282 ; R1=SIZE OF THE CORE BUFFER TO ALLOCATE IN BYTES.
11283 ;
11284 ; OUTPUTS:
11285 ;
11286 ; CC-C=1 IF INSUFFICIENT CORE IS AVAILABLE TO ALLOCATE THE BLOCK.
11287 ; CC-C=0 IF THE BLOCK IS ALLOCATED.
11288 ; R0=ADDRESS OF THE ALLOCATED BLOCK.
11289 ;-
11290 ;
11291 041642 ..ALCB::
11292 041642 062701 000003 ADD #3,R1 ;MASK TO CORRECT SIZE
11293 041646 042701 000003 BIC #3,R1
11294 041652 012700 033502' MOV #.FREPL,R0 ;POINT TO ALLOCATION LISTHEAD
11295 041656 ..ALC2::
11296 041656 010346 MOV R3,-(SP) ; SAVE R3
11297 041660 010003 MOV R0,R3 ; COPY LISTHEAD POINTER TO R3
11298 041662 160163 000002 SUB R1,2(R3) ;CHECK TO SEE IF POOL LOW
11299 041666 023727 033504' 001400 CMP .FREPL+2,#POLMIN
11300 041674 103003 BHIS 10$ ;NO -- DON'T SLOW DOWN
11301 041676 012777 020000 167452 MOV #20000,@.PRDTE ;YES -- SLOW DTE
11302 041704 10$:
11303 041704 010246 MOV R2,-(SP) ;SAVE REGISTERS
11304 041706 000241 CLC ;ASSUME SUCCESS
11305 041710 .INH6 ;;;INHIBIT INTERRUPTS
041710 013746 177776 MOV @#PS,-(SP)
041714 112737 000300 177776 MOVB #300,@#PS
11306 041722 15$:
11307 041722 010002 MOV R0,R2 ;;;SAVE ADDRESS OF CURRENT BLOCK
11308 041724 011200 MOV @R2,R0 ;;;GET ADDRESS OF NEXT BLOCK
11309 041726 001421 BEQ 30$ ;;;IF EQ END OF CHAIN
11310 041730 026001 000002 CMP 2(R0),R1 ;;;BLOCK BIG ENOUGH?
11311 041734 103772 BLO 15$ ;;;IF LO NO
11312 041736 001407 BEQ 20$ ;;;IF EQ BLOCK IS EXACT SIZE
11313 041740 005720 TST (R0)+ ;;;POINT TO SIZE
11314 041742 160110 SUB R1,@R0 ;;;ALLOCATE BLOCK
11315 041744 060001 ADD R0,R1 ;;;POINT TO NEXT FREE SPACE
11316 041746 011011 MOV @R0,@R1 ;;;STORE NEW POINTER
11317 041750 014041 MOV -(R0),-(R1) ;;;STORE ADDRESS
11318 041752 010110 MOV R1,@R0 ;;;STORE SIZE
11319 041754 160001 SUB R0,R1
11320 041756 20$:
11321 041756 011012 MOV @R0,@R2 ;;;REMOVE BLOCK FROM LIST
11322 041760 40$:
11323 041760 .ENB6 ;;;ENABLE INTERRUPTS
041760 012637 177776 MOV (SP)+,@#PS
11324 041764 012602 MOV (SP)+,R2 ;RESTORE REGISTERS
11325 041766 012603 MOV (SP)+,R3 ; RESTORE R3
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 165-1
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2 (ALLOCATE/DEALLOCA
11326 041770 RETURN ; RETURN WITH R0 POINTING TO CALLER'S NODE
041770 000207 RTS PC
11327 041772 30$:
11328 041772 005216 INC @SP ;;;SET CARRY
11329 041774 060163 000002 ADD R1,2(R3) ;;;RESET COUNTER
11330 042000 000767 BR 40$ ;;;AND RETURN
11331 ;
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 166
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2 (ALLOCATE/DEALLOCA
11333 ;+
11334 ;
11335 ; THIS ROUTINE IS CALLED TO DEALLOCATE AN EXEC CORE BUFFER. THE BLOCK IS
11336 ; INSERTED INTO THE FREE BLOCK CHAIN BY CORE ADDRESS. IF AN ADJACENT
11337 ; BLOCK IS CURRENTLY FREE, THEN THE TWO BLOCKS ARE MERGED AND INSERTED
11338 ; IN THE FREE BLOCK CHAIN.
11339 ;
11340 ; INPUTS:
11341 ;
11342 ; R0=ADDRESS OF THE CORE BUFFER TO BE DEALLOCATED.
11343 ; R1=SIZE OF THE CORE BUFFER TO DEALLOCATE IN BYTES.
11344 ; R3=ADDRESS OF CORE ALLOCATION LISTHEAD IF ENTRY AT ..DEC1.
11345 ;
11346 ; OUTPUTS:
11347 ;
11348 ; THE CORE BLOCK IS MERGED INTO THE FREE CORE CHAIN BY CORE
11349 ; ADDRESS AND IS AGCOMERATED IF NECESSARY WITH ADJACENT BLOCKS.
11350 ;-
11351
11352 .ENABL LSB
11353
11354 042002 ..DEC2::
11355 042002 010346 MOV R3,-(SP) ;SAVE REGISTERS
11356 042004 000411 BR 10$
11357 ;
11358 042006 ..DECN::
11359 042006 016001 000002 MOV T.HBCT(R0),R1 ; PACKET SIZE TO R1
11360 042012 ..DECB::
11361 042012 010346 MOV R3,-(SP) ;SAVE REGISTERS
11362 042014 062701 000003 ADD #3,R1 ;ROUND OFF
11363 042020 042701 000003 BIC #3,R1
11364 042024 012703 033502' MOV #.FREPL,R3
11365 042030 10$:
11366 042030 060163 000002 ADD R1,2(R3) ;UPDATE SIZE
11367 042034 023727 033504' 001400 CMP .FREPL+2,#POLMIN ;MIN OK?
11368 042042 101403 BLOS 20$ ;NO -- DON'T SPEED DTE
11369 042044 012777 037777 167304 MOV #37777,@.PRDTE ;YES -- SET DELAY COUNTER
11370 042052 20$:
11371 042052 010246 MOV R2,-(SP)
11372 042054 010146 MOV R1,-(SP)
11373 042056 010046 MOV R0,-(SP)
11374 042060 .INH6 ;;;INHIBIT INTERRUPTS
042060 013746 177776 MOV @#PS,-(SP)
042064 112737 000300 177776 MOVB #300,@#PS
11375 042072 40$:
11376 042072 010302 MOV R3,R2 ;;;SAVE ADDRESS OF CURRENT BLOCK
11377 042074 011203 MOV @R2,R3 ;;;GET ADDRESS OF NEXT BLOCK
11378 042076 001402 BEQ 50$ ;;;IF EQ END OF CHAIN
11379 042100 020003 CMP R0,R3 ;;;BLOCK GO HERE?
11380 042102 103373 BHIS 40$ ;;;IF HIS NO
11381 042104 50$:
11382 042104 010310 MOV R3,@R0 ;;;ASSUME NO AGLOMERATION
11383 042106 010046 MOV R0,-(SP) ;;;CALCULATE ADDRESS OF NEW BLOCK
11384 042110 060116 ADD R1,@SP ;;;
11385 042112 020326 CMP R3,(SP)+ ;;;EQUAL TO NEXT IN CHAIN?
11386 042114 001002 BNE 60$ ;;;IF NE NO
11387 042116 012310 MOV (R3)+,@R0 ;;;MOVE LINK WORD TO BLOCK RELEASED
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 166-1
SCOMM MODULE -- ..ALCB/..DECB/..ALC2/..DEC2 (ALLOCATE/DEALLOCA
11388 042120 061301 ADD @R3,R1 ;;;MERGE TWO BLOCKS
11389 042122 60$:
11390 042122 010246 MOV R2,-(SP) ;;;SAVE ADDRESS OF PREVIOUS BLOCK
11391 042124 010022 MOV R0,(R2)+ ;;;ASSUME NO AGLOMERATION
11392 042126 061216 ADD @R2,@SP ;;;CALCULATE ADDRESS OF NEXT BLOCK
11393 042130 020026 CMP R0,(SP)+ ;;;EQUAL TO BLOCK BEING RELEASED?
11394 042132 001003 BNE 70$ ;;;IF NE NO
11395 042134 061201 ADD @R2,R1 ;;;MERGE TWO BLOCKS
11396 042136 011042 MOV @R0,-(R2) ;;;MOVE LINK WORD TO PREVIOUS BLOCK
11397 042140 010200 MOV R2,R0 ;;;SET NEW ADDRESS OF BLOCK
11398 042142 70$:
11399 042142 010160 000002 MOV R1,2(R0) ;;;SET SIZE OF BLOCK RELEASED
11400 042146 .ENB6 ;;;ENABLE INTERRUPTS
042146 012637 177776 MOV (SP)+,@#PS
11401 042152 80$:
11402 042152 012600 MOV (SP)+,R0 ;RESTORE REGISTERS
11403 042154 012601 MOV (SP)+,R1
11404 042156 012602 MOV (SP)+,R2
11405 042160 012603 MOV (SP)+,R3
11406 042162 RETURN
042162 000207 RTS PC
11407 .DSABL LSB
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 167
SCOMM MODULE -- ..ALOW (ALLOCATE OR WAIT)
11409 .SBTTL SCOMM MODULE -- ..ALOW (ALLOCATE OR WAIT)
11410 ;
11411 ;+
11412 ;
11413 ; ..ALOW -- SUBROUTINE TO ALLOCATE A BUFFER (..ALCB) OR WAIT
11414 ; IF ONE IS NOT AVAILABLE
11415 ;
11416 ; CALLING SEQUENCE:
11417 ;
11418 ; SAME AS ..ALCB
11419 ;
11420 ;-
11421 042164 ..ALOW::CALL ..ALCB ;TRY TO ALLOCATE A CORE BUFFER
042164 004737 041642' JSR PC,..ALCB
11422 042170 103004 BCC 10$ ;RETURN IF SUCCESSFUL
11423 042172 WSIG$S ;WAIT FOR SIG EVENT
042172 012746 MOV (PC)+,-(SP)
042174 061 001 .BYTE 49.,1
042176 104375 EMT 375
11424 042200 000771 BR ..ALOW ;AND TRY AGAIN
11425 ;
11426 042202 10$: RETURN ;RETURN TO CALLER
042202 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 168
SCOMM MODULE -- ..STTY (START TTY OUTPUT)
11428 .SBTTL SCOMM MODULE -- ..STTY (START TTY OUTPUT)
11429 ;
11430 ;
11431 ;
11432 ;+
11433 ;
11434 ; .STTY -- SUBROUTINE TO START TTY OUTPUT IF THE LINE
11435 ; REQUESTED IS NOT IN USE.
11436 ;
11437 ; IF ENTERED HERE FROM DTE20 SENDALL IT IS ASSUMED THAT IT
11438 ; WILL ONLY BE CALLED IF THE TTY HAS NOT BEEN STARTED
11439 ;
11440 ; IF THE REQUEST IS FOR THE LOCAL CTY AND KLINIK IS ACTIVE IN
11441 ; REMOTE MODE, THE REQUEST WILL BE PROCESSED FOR BOTH
11442 ; THE LOCAL AND REMOTE CTYS.
11443 ;
11444 ;
11445 ; ENTRY CONDITIONS:
11446 ; R0 -- BUFFER POINTER
11447 ; R2 -- POINTER TO TTYTBL (TABLE WHERE QUEUE FOR THIS LINE IS
11448 ;
11449 ; CALL ..STTY
11450 ;
11451 ; EXIT CONDITIONS:
11452 ;
11453 ;
11454 ; NO REGISTERS ALTERED
11455 ;
11456 ;-
11457 ;
11458 ;
11459 042204 ..STTY::
11460 042204 010146 MOV R1,-(SP) ; +++006 SAVE REGISTERS
11461 042206 010246 MOV R2,-(SP)
11462 042210 010046 MOV R0,-(SP)
11463 042212 010446 MOV R4,-(SP)
11464 042214 010546 MOV R5,-(SP)
11465 042216 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ; +++006 IS THIS A CTY?
11466 042224 001414 BEQ 6$ ; +++006 NO -- GO ON
11467 042226 105737 031342' TSTB .KLNSW+0 ; +++006 YES -- KLINIK ACTIVE IN REMOTE MODE??
11468 042232 003411 BLE 6$ ; +++006 NO -- GO ON
11469 042234 010004 MOV R0,R4 ; +++006 YES -- COPY BUFFER
11470 042236 CALL COPBUF ; +++006 COPY IT
042236 004737 020054' JSR PC,COPBUF
11471 042242 013702 031222' MOV KLNPTR,R2 ; +++006 START KLINIK LINE
11472 042246 012746 042256' MOV #6$,-(SP) ; +++006 FAKE CALL SO WE CAN DO LOCAL CTY
11473 042252 024646 CMP -(SP),-(SP) ; +++006 DON'T CARE WHAT IS ON STACK -- JUST HAVE TO
11474 ; +++006 HAVE DUMMY ARGS
11475 042254 000404 BR 7$ ; +++006 GO START THE KLINIK LINE
11476 ;
11477 042256 6$: ; +++006 RETURN HERE TO START LOCAL CTY
11478 ; +++006 OR PROCESS NON-CTY LINE
11479 042256 012605 MOV (SP)+,R5 ; +++006 RESTORE REGISTERS
11480 042260 012604 MOV (SP)+,R4
11481 042262 012600 MOV (SP)+,R0
11482 042264 011602 MOV @SP,R2 ; +++006 RESTORE POINTER TO LOCAL CTY
11483 042266 7$:
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 168-1
SCOMM MODULE -- ..STTY (START TTY OUTPUT)
11484 042266 .INH5 ;INHIBIT INTERRUPTS FROM TTY'S
042266 013746 177776 MOV @#PS,-(SP)
042272 112737 000240 177776 MOVB #240,@#PS
11485 042300 105060 000007 CLRB T.HFCN(R0) ;;;DON'T SAVE FUNCTION CODE
11486 042304 011201 MOV @R2,R1 ;;;LOOK FOR AN ENTRY IN THE TABLE
11487 042306 001424 BEQ 40$ ;;;NONE FOUND -- MUST START TTY
11488 042310 011102 10$: MOV @R1,R2 ;;;FIND THE END OF THE THREAD
11489 042312 001402 BEQ 20$ ;;;FOUND IT -- ENTER THIS ONE
11490 042314 010201 15$: MOV R2,R1 ;;;LOOK AT THE NEXT ENTRY
11491 042316 000774 BR 10$ ;;;AND TRY AGAIN
11492 ;
11493 042320 20$: ;;; +++010 HERE IF THREAD LIST IS ACTIVE
11494 042320 016602 000002 MOV 2(SP),R2 ;;; +++010 RETREIVE I/O PAGE POINTER
11495 042324 020037 031660' CMP R0,.CRSND ;;;IS THIS A SENDALL?
11496 042330 001004 BNE 25$ ;;; +++010 NO -- GO ON
11497 042332 105762 000006 TSTB STSW1+0(R2) ;;; +++010 YES -- IS LINE X'D OFF??
11498 042336 100410 BMI 40$ ;;; +++010 YES -- FORCE THE SENDALL OUT
11499 042340 000402 BR 30$ ;;; +++010 NO -- LET THE SENDALL START AT "STTYDN"
11500 ;
11501 042342 25$: ;;; +++010 HERE TO INSERT A NODE IN THREAD LIST
11502 042342 010011 MOV R0,@R1 ;;;SET UP THIS ENTRY POINTER
11503 042344 005010 CLR @R0 ;;;CLEAR THE THREAD POINTER TO INDICATE END OF LIST
11504 042346 30$: .ENB5 ;;;ENABLE INTERRUPTS
042346 012637 177776 MOV (SP)+,@#PS
11505 042352 35$: ; +++009
11506 042352 012602 MOV (SP)+,R2
11507 042354 012601 MOV (SP)+,R1
11508 042356 RETURN ;RETURN TO CALLER
042356 000207 RTS PC
11509 ;
11510 042360 40$:
11511 042360 010201 MOV R2,R1 ;;; +++009 COPY DLS POINTER TO R1
11512 042362 020037 031660' CMP R0,.CRSND ;;; +++009 IS THIS A SENDALL??
11513 042366 001010 BNE 41$ ;;; +++009 NO -- GO ON
11514 042370 032762 001000 000006 BIT #TT.SIP,STSW1(R2) ;;; +++009 YES -- ALREADY IN PROGRESS??
11515 042376 001363 BNE 30$ ;;; +++009 YES -- LET IT START AT "STTYDN"
11516 042400 052762 001000 000006 BIS #TT.SIP,STSW1(R2) ;;; +++009 YES -- MARK SENDALL IN PROGRESS
11517 042406 000415 BR 45$ ;;; +++009 AND START IT UP (DON'T INSERT IN QUEUE)
11518 ;
11519 042410 41$: ;;; +++009 HERE IF NOT SENDALL (NORMAL OUTPUT)
11520 042410 032762 001200 000006 BIT #TT.XOF!TT.SIP,STSW1(R2) ;;; +++009 SENDALL IN PROGRESS OR X'D OFF??
11521 042416 001351 BNE 25$ ;;; +++009 YES -- JUST QUEUE IT UP AND EXIT
11522 042420 032762 000010 000006 BIT #TT.ABW,STSW1(R2) ;;; +++009 NO -- AUTO-BAUD WAIT??
11523 042426 001403 BEQ 43$ ;;; +++009 NO -- QUEUE THE NODE AND START OUTPUT
11524 ;;; +++009 ELSE DEALLOCATE THE NODE NOW
11525 042430 42$: ;;; +++009 HERE TO DEALLOCATE A TTY NODE
11526 042430 CALL ..DECN ;;; +++009 GET RID OF THE NODE
042430 004737 042006' JSR PC,..DECN
11527 042434 000744 BR 30$ ;;; +++009 AND GO AWAY
11528 ;
11529 042436 43$: ;;; +++009 HERE TO QUEUE NODE AND START NORMAL OUTPUT
11530 042436 010012 MOV R0,@R2 ;;;SET UP THE NEW THREAD POINTER
11531 042440 005010 CLR @R0 ;;;CLEAR THREAD POINTER
11532 042442 45$: ;;; +++009 HERE TO START OUTPUT (NORMAL OR SENDALL)
11533 042442 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;;CTY?
11534 042450 001403 BEQ 47$ ;;;NO -- FORGET IT
11535 042452 005737 031216' TST .TTP11 ;;;YES -- IN USE?
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 168-2
SCOMM MODULE -- ..STTY (START TTY OUTPUT)
11536 042456 001333 BNE 30$ ;;;YES -- DON'T DISTURB IT
11537 042460 47$:
11538 042460 016201 000002 MOV TTYEXP(R2),R1 ;;;FIND EXTERNAL PAGE ADDRESS
11539 042464 001761 BEQ 42$ ;;; +++009 NO DEVICE -- DEALLOCATE NODE
11540 042466 052762 000001 000006 BIS #TT.OUT,STSW1(R2) ;;; +++007 SET OUTPUT IN PROGRESS
11541 042474 162702 035176' SUB #DHTBL,R2 ;;;IS THIS A DH DEVICE?
11542 042500 103011 BHIS 50$ ;;;YES -- START DH ADDRESSES
11543 042502 117061 000004 000006 MOVB @T.HCAD(R0),6(R1) ;;;NO -- START DL11
11544 042510 005260 000004 INC T.HCAD(R0) ;;;INCREMENT CURRENT ADDRESS POINTER
11545 042514 052761 000100 000004 BIS #DL.XEN,4(R1) ;;; +++006 INTERRUPT ENABLE DEVICE
11546 042522 000711 BR 30$ ;;;RETURN TO CALLER
11547 ;
11548 042524 042711 001077 50$: BIC #1077,@R1 ;;;CLEAR THE CURRENT UNIT NUMBER ETC
11549 042530 006202 ASR R2 ;;;FIND THE UNIT NUMBER OF THIS DH LINE
11550 042532 006202 ASR R2
11551 042534 006202 ASR R2
11552 042536 042702 177760 BIC #177760,R2 ;;;MASK OFF EXTRA BITS
11553 042542 050221 BIS R2,(R1)+ ;;;SET THE UNIT NUMBER IN THE DH
11554 042544 062701 000004 ADD #4,R1 ;;;MUST ADD TO SKIP OVER SILO
11555 042550 016021 000004 MOV T.HCAD(R0),(R1)+ ;;; SET UP THE CURRENT ADDRESS POINTER
11556 042554 016011 000006 MOV T.HCBC(R0),@R1 ;;;SET UP THE BYTE COUNT
11557 042560 005421 NEG (R1)+ ;;;NEGATE BYTE COUNT
11558 042562 006302 ASL R2
11559 042564 056211 042572' BIS BITTBL(R2),@R1 ;;;START THE TRANSFER
11560 042570 000666 BR 30$
11561 ;
11562 042572 000001 BITTBL::.WORD 1 ;BIT TABLE FOR ASH SIMULATION
11563 042574 000002 .WORD 2
11564 042576 000004 .WORD 4
11565 042600 000010 .WORD 10
11566 042602 000020 .WORD 20
11567 042604 000040 .WORD 40
11568 042606 000100 .WORD 100
11569 042610 000200 .WORD 200
11570 042612 000400 .WORD 400
11571 042614 001000 .WORD 1000
11572 042616 002000 .WORD 2000
11573 042620 004000 .WORD 4000
11574 042622 010000 .WORD 10000
11575 042624 020000 .WORD 20000
11576 042626 040000 .WORD 40000
11577 042630 100000 .WORD 100000
11578 ;
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 169
SCOMM MODULE -- ..STPT (STOP TTY)
11580 .SBTTL SCOMM MODULE -- ..STPT (STOP TTY)
11581 ;
11582 ;+
11583 ;
11584 ; ..STPT -- SUBROUTINE TO STOP TTY OUTPUT AND FLUSH THE BUFFERS
11585 ;
11586 ; ENTRY CONDITIONS:
11587 ; R2 -- POINTER TO TTYTBL (TABLE WHERE QUEUE FOR THIS LINE IS)
11588 ;
11589 ; CALL ..STPT
11590 ;
11591 ; EXIT CONDITIONS;
11592 ;
11593 ; CC-C CLEAR
11594 ;
11595 ; R0,R1 REGISTERS ALTERED
11596 ;
11597 ;-
11598 ;
11599 042632 ..STPT::
11600 042632 .INH5 ;;;INHIBIT TTY INTERRUPTS
042632 013746 177776 MOV @#PS,-(SP)
042636 112737 000240 177776 MOVB #240,@#PS
11601 042644 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;;+++006 IS THIS ACTY??
11602 042652 001411 BEQ 5$ ;;; +++006 NO -- GO ON
11603 042654 105737 031342' TSTB .KLNSW+0 ;;; +++006 YES -- IS KLINIK ACTIVE
11604 042660 003406 BLE 5$ ;;; +++006 NOT THAT WE CARE
11605 042662 010246 MOV R2,-(SP) ;;; +++006 YES -- SAVE R2
11606 042664 013702 031222' MOV KLNPTR,R2 ;;; +++006 KLINIK LINE POINTER TO R2
11607 042670 CALL 10$ ;;; +++006 DEQUEUE AND STOP KLINIK LINE
042670 004737 042710' JSR PC,10$
11608 042674 012602 MOV (SP)+,R2 ;;; +++006 RESTORE R2
11609 042676 5$: ;;; +++006
11610 042676 CALL 10$ ;;; +++006 DEQUEUE AND STOP LINE
042676 004737 042710' JSR PC,10$
11611 042702 .ENB5 ;;; +++006 ENABLE INTERRUPTS
042702 012637 177776 MOV (SP)+,@#PS
11612 042706 RETURN ; +++006 EXIT
042706 000207 RTS PC
11613 ;
11614 ; HERE TO FLUSH OUTPUT LIST AND STOP LINE
11615 ;
11616 042710 10$:
11617 042710 020227 035176' CMP R2,#DHTBL ;;; IS THIS A DH-11??
11618 042714 103455 BLO 40$ ;;; NO -- GO STOP DL11 OUTPUT
11619 042716 010246 MOV R2,-(SP) ;;; YES -- SAVE DH-11 POINTER
11620 042720 011202 MOV (R2),R2 ;;; MOVE OVER FIRST NODE
11621 042722 001402 BEQ 20$ ;;; ONLY ONE NODE -- FORGET IT
11622 042724 CALL 60$ ;;; FLUSH THE THREAD LIST
042724 004737 043074' JSR PC,60$
11623 ;
11624 ; HERE TO STOP A DH-11 LINE
11625 ;
11626 042730 20$:
11627 042730 012602 MOV (SP)+,R2 ;;; RESTORE DH-11 POINTER
11628 042732 010201 MOV R2,R1 ;;;INSURE TTY WILL STOP
11629 042734 105762 000006 TSTB STSW1+0(R2) ;;; X'D OFF??
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 169-1
SCOMM MODULE -- ..STPT (STOP TTY)
11630 042740 100004 BPL 25$ ;;; NO -- GO ON
11631 042742 032762 000001 000006 BIT #TT.OUT,STSW1(R2) ;;; YES -- XOFF WAIT??
11632 042750 001451 BEQ 60$ ;;; NO -- GET RID OF FIRST NODE AND EXIT
11633 042752 25$:
11634 042752 032762 001000 000006 BIT #TT.SIP,STSW1(R2) ;;; MAYBE -- CHECK FOR SENDALL
11635 042760 001045 BNE 60$ ;;; YES -- GET RID OF FIRST NODE AND EXIT
11636 042762 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;; IS THIS A CTY??
11637 042770 001403 BEQ 30$ ;;; +++007 NO -- GO ON
11638 042772 005737 031216' TST .TTP11 ;;; +++001 YES -- -11 I/O WAIT??
11639 042776 001036 BNE 60$ ;;; YES -- GET RID OF FIRST NODE AND EXIT
11640 043000 30$: ;;; +++007
11641 043000 162701 035176' SUB #DHTBL,R1 ;;; FIND THE DH-11 UNIT NUMBER
11642 043004 006201 ASR R1 ;;;
11643 043006 006201 ASR R1 ;;;
11644 043010 006201 ASR R1 ;;;
11645 043012 042701 177760 BIC #^C17,R1 ;;; MASK OFF JUNK
11646 043016 016200 000002 MOV TTYEXP(R2),R0 ;;; FIND I/O PAGE ADDRESS
11647 043022 042710 001077 BIC #1077,(R0) ;;; CLEAR CURRENT UNIT
11648 043026 050110 BIS R1,(R0) ;;; SET UP DESIRED UNIT
11649 043030 022760 177776 000010 CMP #-2,10(R0) ;;; MORE THAN TWO CHARACTERS LEFT??
11650 043036 003424 BLE 70$ ;;; NO -- GO ON
11651 043040 012760 177777 000010 MOV #-1,10(R0) ;;; YES -- FORCE THE RUNDOWN
11652 043046 000420 BR 70$ ;;; AND EXIT
11653 ;
11654 ;
11655 ; HERE TO STOP A DL11 LINE
11656 ;
11657 043050 40$:
11658 043050 032762 000400 000006 BIT #TT.CTY,STSW1(R2) ;;; IS THIS A CTY??
11659 043056 001406 BEQ 60$ ;;; NO -- GO ON
11660 043060 005737 031216' TST .TTP11 ;;; YES -- -11 I/O WAIT??
11661 043064 001003 BNE 60$ ;;; YES -- JUST FLUSH THREAD LIST
11662 043066 042762 000001 000006 BIC #TT.OUT,STSW1(R2) ;;; NO -- SET NO INTERRUPT EXPECTED
11663 ;
11664 ; INTERNAL SUBROUTINE TO REMOVE THREAD LIST ENTRIES UP TO THAT
11665 ; POINTED TO BY R2
11666 ;
11667 043074 60$:
11668 043074 011200 MOV (R2),R0 ;;; GET THIS NODE POINTER
11669 043076 001404 BEQ 70$ ;;; END OF LIST IF .EQ. 0
11670 043100 011012 MOV (R0),(R2) ;;; DELINK AND
11671 043102 CALL ..DECN ;;; DEALLOACTE THIS NODE
043102 004737 042006' JSR PC,..DECN
11672 043106 000772 BR 60$ ;;; DO THE NEXT NODE
11673 043110 70$:
11674 043110 RETURN ;;; TO CALLER
043110 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 170
SCOMM MODULE -- ..STCH (STORE CHARACTER IN TO 10 Q)
11676 .SBTTL SCOMM MODULE -- ..STCH (STORE CHARACTER IN TO 10 Q)
11677 ;+
11678 ;
11679 ;
11680 ; ..STCH -- SUBROUTINE TO STORE A CHARACTER IN THE TO 10
11681 ; QUEUE AND IF THAT QUEUE IS FULL SEND IT TO THE KL10 BY
11682 ; ENTERING IT IN THE TO10Q.
11683 ;
11684 ; CALLING SEQUENCE:
11685 ;
11686 ; MOV CHARACTER,-(SP)
11687 ; R5 -- POINTER TO DEVICE TABLE ENTRY
11688 ; CALL ..STCH
11689 ;
11690 ; REGISTERS ALTERED: NONE
11691 ;
11692 ;-
11693 .ENABL LSB
11694
11695 043112 032737 040000 031114' ..STCH::BIT #EF.PR1,.COMEF+2 ;IF PRIMARY PROTOCOL NOT RUNNING
11696 043120 001421 BEQ 10$ ;IGNORE CHARACTER.
11697 043122 010446 MOV R4,-(SP) ;SAVE REGISTERS
11698 043124 010346 MOV R3,-(SP)
11699 043126 010146 MOV R1,-(SP)
11700 043130 012703 000004 MOV #D.CDLS,R3 ;SET UP AS DATA/LINE SCANNER
11701 043134 CALL STLN ;GET LINE NUMBER
043134 004737 043206' JSR PC,STLN
11702 043140 000304 SWAB R4 ;AND PUT IN HIGH ORDER BYTE
11703 043142 156604 000010 BISB 10(SP),R4 ;SET CHARACTER
11704 043146 012701 000004 MOV #BC.LNC,R1 ;SET LINE/CHARACTER
11705 043152 STCM: CALL ..STFC ;STORE FUNCTION
043152 004737 043252' JSR PC,..STFC
11706 043156 012601 MOV (SP)+,R1 ;RESTORE
11707 043160 012603 MOV (SP)+,R3
11708 043162 012604 MOV (SP)+,R4
11709 043164 10$: RETURN
043164 000207 RTS PC
11710
11711 .DSABL LSB
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 171
SCOMM MODULE -- ..SACK (SEND ACKNOWLEDGEMENT)
11713 .SBTTL SCOMM MODULE -- ..SACK (SEND ACKNOWLEDGEMENT)
11714
11715 ;+
11716 ;
11717 ; ..SACK -- SUBROUTINE TO ACKNOWLEDGE THE OUTPUT OF CHARACTER OR STRINGS
11718 ;
11719 ; CALLING SEQUENCE:
11720 ;
11721 ; R3 -- DEVICE ID
11722 ; R5 -- DEVICE TABLE POINTER
11723 ;
11724 ; EXIT CONDITIONS:
11725 ; NO REGISTERS ALTERED
11726 ;
11727 ;-
11728
11729 043166 010446 ..SACK::MOV R4,-(SP) ;SAVE REGISTERS
11730 043170 010346 MOV R3,-(SP)
11731 043172 010146 MOV R1,-(SP)
11732 043174 CALL STLN ;GET LINE NUMBER.
043174 004737 043206' JSR PC,STLN
11733 043200 012701 000017 MOV #BC.SAK,R1
11734 043204 000762 BR STCM ;STORE COMMON
11735
11736 043206 010246 STLN: MOV R2,-(SP)
11737 043210 005004 CLR R4 ;DEFAULT LINE # TO ZERO.
11738 043212 010302 MOV R3,R2 ;COMPUTE OFFSET TO
11739 043214 006302 ASL R2 ;DEVICE QUEUE ENTRY
11740 043216 006302 ASL R2
11741 043220 006302 ASL R2
11742 043222 006302 ASL R2
11743 043224 010501 MOV R5,R1 ;NOW COMPUTE OFFSET
11744 043226 166201 034640' SUB .DQPBA-20(R2),R1;INTO DEVICE LINE TABLE
11745 043232 001405 BEQ 20$ ;FIRST ENTRY - ALL DONE.
11746 043234 116202 034642' MOVB .DQPBA-20+2(R2),R2 ;GET TABLE ENTRY SIZE
11747 043240 005204 10$: INC R4 ;AND MARCH THROUGH
11748 043242 160201 SUB R2,R1
11749 043244 003375 BGT 10$
11750 043246 012602 20$: MOV (SP)+,R2
11751 043250 RETURN ;GOOD-BYE !
043250 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 172
SCOMM MODULE -- ..STFC (STORE FUNCTION)
11753 .SBTTL SCOMM MODULE -- ..STFC (STORE FUNCTION)
11754
11755 ;+
11756 ;
11757 ; ..STFC -- SUBROUTINE TO START A ONE WORD FUNCTION OF CHARACTER
11758 ;
11759 ; CALLING SEQUENCE:
11760 ;
11761 ; R1 -- FUNCTION CODE
11762 ; R3 -- DEVICE ID
11763 ; R4 -- CHARACTER TO BE SENT TO 10 AND LINE NUMBER
11764 ;
11765 ; EXIT CONDITIONS:
11766 ;
11767 ;-
11768
11769 043252 010546 ..STFC::MOV R5,-(SP) ;SAVE R5
11770 043254 .INH6
043254 013746 177776 MOV @#PS,-(SP)
043260 112737 000300 177776 MOVB #300,@#PS
11771 043266 020137 031664' CMP R1,.CPFN ;THE CORRECT CURRENT FUNCTION?
11772 043272 001026 BNE 10$ ;NO -- MUST RESET
11773 043274 020337 031666' CMP R3,.CPDV ;SAME DEVICE?
11774 043300 001023 BNE 10$ ;MUST RESET HERE ALSO
11775 043302 010477 166364 5$: MOV R4,@.CRPB ;SET THE LINE NUMBER
11776 043306 012705 000002 MOV #2,R5
11777 043312 060537 031672' ADD R5,.CRPB
11778 043316 060577 166354 ADD R5,@.CRSB
11779 043322 060537 031662' ADD R5,.CRQZ
11780 043326 160537 031670' SUB R5,.CRSZ
11781 043332 001002 BNE 7$ ;YES -- RETURN TO CALLER
11782 043334 CALL ..STQ ;NO -- BETTER START QUEUE
043334 004737 043630' JSR PC,..STQ
11783 043340 7$: .ENB6 ;ENABLE INTERRUPTS
043340 012637 177776 MOV (SP)+,@#PS
11784 043344 012605 MOV (SP)+,R5 ;RESTORE
11785 043346 RETURN ;RETURN TO CALLER
043346 000207 RTS PC
11786 ;
11787 043350 022737 000012 031670' 10$: CMP #10.,.CRSZ ;IS THERE ROOM?
11788 043356 101402 BLOS 15$ ;YES -- START NEW ENTRY
11789 043360 13$: CALL ..STQ ;NO -- ENTER IT IN THE QUEUE
043360 004737 043630' JSR PC,..STQ
11790 043364 010046 15$: MOV R0,-(SP) ;SAVE R0
11791 043366 012705 000010 MOV #10,R5
11792 043372 013700 031672' MOV .CRPB,R0 ;FIND CURRENT BUFFER POINTER
11793 043376 060537 031662' ADD R5,.CRQZ ;UPDATE QUEUE COUNTS
11794 043402 160537 031670' SUB R5,.CRSZ
11795 043406 010037 031676' MOV R0,.CRSB ;SET UP CURRENT BUFFER POINTER
11796 043412 010520 MOV R5,(R0)+ ;SET UP CURRENT SIZE
11797 043414 010120 MOV R1,(R0)+ ;SET THE FUNCTION CODE
11798 043416 010137 031664' MOV R1,.CPFN ;SAVE CURRENT FUNCTION
11799 043422 010320 MOV R3,(R0)+ ;SET DEVICE CODE
11800 043424 010337 031666' MOV R3,.CPDV ;SET DEVICE CODE FOR REFER LATER
11801 043430 005020 CLR (R0)+ ;CLEAR SPARE WORD
11802 043432 010037 031672' MOV R0,.CRPB ;SET CURRENT BUFFER POINTER
11803 043436 012600 MOV (SP)+,R0 ;RESTORE R0
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 172-1
SCOMM MODULE -- ..STFC (STORE FUNCTION)
11804 043440 000720 BR 5$ ;AND SET FUNCTION
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 173
SCOMM MODULE -- ..STIN (START INDIRECT FUNCTION)
11806 .SBTTL SCOMM MODULE -- ..STIN (START INDIRECT FUNCTION)
11807 ;
11808 ;+
11809 ;
11810 ; ..STIN -- SUBROUTINE TO START AN INDIRECT DTE20 FUNCTION
11811 ; TO THE 10
11812 ;
11813 ; ENTRY CONDITIONS:
11814 ;
11815 ; R0 -- BUFFER ADDRESS
11816 ; R1 -- FUNCTION +100000
11817 ; R2 -- EFN/BUFFER SIZE
11818 ; R3 -- DEVICE ID
11819 ;
11820 ; NOTE : THE FIRST WORD OF THE BUFFER MUST CONTAIN THE
11821 ; LINE NUMBER AND BUFFER SIZE
11822 ;
11823 ; MAY NOT BE CALLED FROM ISR
11824 ;
11825 ;
11826 ; CALL ..STIN
11827 ;
11828 ; EXIT CONDITIONS:
11829 ; CC-C CLEAR SUCCESS
11830 ; CC-C SET FAILURE -- PRIMARY PROTOCOL IN USE
11831 ;
11832 ;-
11833 ;
11834 043442 010546 ..STIN::MOV R5,-(SP) ;SAVE REGISTERS
11835 043444 010046 MOV R0,-(SP)
11836 043446 010146 MOV R1,-(SP)
11837 043450 012701 000030 MOV #30,R1 ;SET UP TO ALLOCATE A BUFFER
11838 043454 10$: CALL ..ALOW ;ALLOCATE BUFFER
043454 004737 042164' JSR PC,..ALOW
11839 ;
11840 043460 010005 20$: MOV R0,R5 ;MOVE BUFFER ADDRESS TO R5
11841 043462 022525 CMP (R5)+,(R5)+ ;MOVE OVER THE LISTHEAD
11842 043464 010125 MOV R1,(R5)+ ;STORE THE BUFFER SIZE
11843 043466 012715 000012 MOV #12,@R5 ;PUT IN THE SIZE OF THIS HEADER PACKET
11844 043472 012525 MOV (R5)+,(R5)+ ;ALSO PUT IT IN FIRST WORD TO 10
11845 043474 011625 MOV @SP,(R5)+ ;STORE FUNCTION CODE
11846 043476 010325 MOV R3,(R5)+ ;STORE THE DEVICE I/D
11847 043500 005025 CLR (R5)+ ;CLEAR THE SPARE WORD
11848 043502 016601 000002 MOV 2(SP),R1 ;RESTORE BUFFER ADDRESS
11849 043506 012125 MOV (R1)+,(R5)+ ;SET BYTE COUNT/LINE NUMBER
11850 043510 010125 MOV R1,(R5)+ ;SET UP BUFFER ADDRESS
11851 043512 010246 MOV R2,-(SP) ;SAVE REGISTERS MODIFIED
11852 043514 010346 MOV R3,-(SP)
11853 043516 010546 MOV R5,-(SP)
11854 043520 013705 031110' MOV .CRTSK,R5 ;SET UP TO CONVERT EFN
11855 043524 010203 MOV R2,R3
11856 043526 CALL .CEFN3 ;CONVERT EFN
043526 004737 040410' JSR PC,.CEFN3
11857 043532 012605 MOV (SP)+,R5 ;RESTORE R5
11858 043534 010325 MOV R3,(R5)+ ;SET MASK
11859 043536 010225 MOV R2,(R5)+ ;SET ADDRESS
11860 043540 012603 MOV (SP)+,R3 ;RESTORE REGISTERS
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 173-1
SCOMM MODULE -- ..STIN (START INDIRECT FUNCTION)
11861 043542 012602 MOV (SP)+,R2
11862 043544 010446 MOV R4,-(SP) ;SAVE R4
11863 043546 010001 MOV R0,R1 ;SET UP TO ENTER NODE
11864 043550 .INH6 ;INHIBIT DTE20 INTERRUPTS
043550 013746 177776 MOV @#PS,-(SP)
043554 112737 000300 177776 MOVB #300,@#PS
11865 043562 012704 031742' MOV #TO10Q,R4 ;;;START TO 10 Q IF NECESSARY
11866 043566 021404 CMP @R4,R4 ;;;CHECK TO SEE IF ALREADY GOING
11867 043570 001003 BNE 30$ ;;;YES -- JUST ENTER IN Q
11868 043572 010104 MOV R1,R4 ;;;NO -- SET NODE ADDRESS
11869 043574 CALL STNTQ ;;;START QUEUE
043574 004737 022166' JSR PC,STNTQ
11870 043600 013704 031744' 30$: MOV TO10Q+2,R4 ;;;ENTER Q
11871 043604 CALL ..NADD ;;;ADD NODE
043604 004737 041422' JSR PC,..NADD
11872 043610 .ENB6 ;;;ENABLE INTERRUPTS
043610 012637 177776 MOV (SP)+,@#PS
11873 043614 012604 MOV (SP)+,R4 ;;;RESTORE REGISTERS
11874 043616 012601 MOV (SP)+,R1
11875 043620 012600 MOV (SP)+,R0
11876 043622 012605 MOV (SP)+,R5
11877 043624 000241 CLC ;CLEAR C
11878 043626 RETURN ;RETURN TO CALLER
043626 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 174
SCOMM MODULE -- ..STQ (STORE IN TO 10 Q)
11880 .SBTTL SCOMM MODULE -- ..STQ (STORE IN TO 10 Q)
11881 ;
11882 ;+
11883 ;
11884 ; ..STQ -- SUBROUTINE TO STORE IN THE TO 10 Q AND
11885 ; GET ANOTHER BUFFER FOR TRANSFERRING TO THE TO 10 QUEUE.
11886 ; INIAN -- SPECIAL ENTRY POINT FOR INI.MAC (INITIALIZATION)
11887 ; IT SHOULD BE USED BY NO OTHERS!!
11888 ;
11889 ;
11890 ; CALLING SEQUENCE:
11891 ;
11892 ; .CP?? MUST BE SETUP TO THE LAST Q ENTRY
11893 ; CALL ..STQ
11894 ;
11895 ; EXIT CONDITIONS:
11896 ;
11897 ; .CP?? IS SET UP TO POINT TO A NEW QUEUE
11898 ;
11899 ;-
11900 ;
11901 .ENABL LSB
11902 043630 010046 ..STQ:: MOV R0,-(SP) ;SAVE REGISTERS
11903 043632 010146 MOV R1,-(SP)
11904 043634 010446 MOV R4,-(SP)
11905 043636 013704 031674' MOV .CRHD,R4 ;FIND THE HEADER OF THE CURRENT BUFFER
11906 043642 013764 031662' 000006 MOV .CRQZ,6(R4) ;SET THE CURRENT QUEUE SIZE IN THE BUFFER
11907 ;AND CHECK TO SEE IF ANYTHING THERE
11908 043650 001454 BEQ 40$ ;NO -- DON'T ATTEMPT TO SEND TO 10
11909 043652 012701 031742' MOV #TO10Q,R1 ;FIND THE LISTHEAD OF THE 10Q
11910 043656 021101 CMP @R1,R1 ;IS THERE AN ENTRY?
11911 043660 001003 BNE 20$ ;ALREADY STARTED?
11912 043662 CALL STNTQ ;START THE QUEUE UP
043662 004737 022166' JSR PC,STNTQ
11913 043666 000404 BR 25$
11914 ;
11915 043670 022737 000014 031670' 20$: CMP #14,.CRSZ
11916 043676 101441 BLOS 40$ ;YES -- DON'T QUEUE IT YET
11917 043700 010401 25$: MOV R4,R1 ;SET UP THE NODE ADDRESS
11918 043702 013704 031744' MOV TO10Q+2,R4 ;SET UP LISTHEAD ADDRESS
11919 043706 CALL ..NADD ;ADD THE NODE TO THE LIST
043706 004737 041422' JSR PC,..NADD
11920 043712 012701 000140 INIAN:: MOV #E.OPSZ,R1 ;SET UP THE BUFFER SIZE
11921 043716 27$: CALL ..ALCB ;ALLOCATE A BUFFER
043716 004737 041642' JSR PC,..ALCB
11922 043722 103010 BCC 30$ ;GO SET UP NEW BUFFER POINTERS
11923 043724 012701 000030 MOV #30,R1 ;TRY FOR A SMALLER BUFFER
11924 043730 CALL ..ALCB
043730 004737 041642' JSR PC,..ALCB
11925 043734 103003 BCC 30$ ;GOT IT -- ALL OK
11926 043736 .CRASH B03
043736 000004 IOT
043740 102 060 063 .ASCIZ /B03/
043743 000
11927 ;
11928 ;
11929 043744 010037 031674' 30$: MOV R0,.CRHD ;SET UP THE POINTER TO THE HEAD OF THE BUFFER
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 174-1
SCOMM MODULE -- ..STQ (STORE IN TO 10 Q)
11930 043750 005037 031666' CLR .CPDV ;SET NO DEVICE IN USE
11931 043754 022020 CMP (R0)+,(R0)+ ;MOVE OVER THE FORWARD/BACKWARD POINTERS
11932 043756 010120 MOV R1,(R0)+ ;SET UB NODE SIZE
11933 043760 005020 CLR (R0)+ ;SET UP CURRENT SIZE OF Q
11934 043762 010037 031672' MOV R0,.CRPB ;SET THE CURRENT BUFFER POINTER
11935 043766 162701 000012 SUB #10.,R1 ;DON'T WANT TO INCLUDE HEADER
11936 043772 010137 031670' MOV R1,.CRSZ ;SET UP SIZE OF Q(MAX)
11937 043776 005037 031662' CLR .CRQZ ;CLEAR CURRENT QUEUE SIZE
11938 044002 012604 40$: MOV (SP)+,R4 ;RESTORE REGISTSERS
11939 044004 012601 MOV (SP)+,R1
11940 044006 012600 MOV (SP)+,R0
11941 044010 RETURN ;RETURN TO CALLER
044010 000207 RTS PC
11942 ;
11943 .DSABL LSB
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 175
SCOMM MODULE -- WFED (WAIT FOR EXAMINE/DEPOSIT)
11945 .SBTTL SCOMM MODULE -- WFED (WAIT FOR EXAMINE/DEPOSIT)
11946 ;+
11947 ; WFED -- WAITS FOR EXAMINE/DEPOSIT TRANSFERS AND
11948 ; CHECKS TO SEE THAT E-BOX HAS NOT STOPPED
11949 ;
11950 ; NOTE: **** THIS ROUTINE MUST BE ENTERED AT PRI6 ****
11951 ;
11952 ;
11953 ; CALLING SEQUENCE:
11954 ; ENTRY CONDITIONS:
11955 ; R0 -- ADDRESS OF DTE20
11956 ; IF ".NOERR" .NE. 0 -- ONLY CHECK TIMEOUT AND POWERFAIL RESTART
11957 ; ELSE CHECK ALL ERRORS
11958 ;
11959 ; CALL WFED
11960 ;
11961 ; EXIT CONDITIONS:
11962 ;
11963 ; SUCCESS -- NO REGISTERS ALTERED CC-C CLEAR
11964 ;
11965 ; NORMAL ERROR CONDITIONS:
11966 ;
11967 ; CC-C SET -- E-BOX STOPPED (PROTOCOL STOPPED - KS.CES SET IN .KLITK)
11968 ; CC-C SET -- DEP/EX FAILURE (PROTOCOL STOPPED - KS.DEX SET IN .KLITK)
11969 ;
11970 ; CC-C CLEAR -- E-BUS PARITY ERROR (PROTOCOL UNCHANGED -- KS.EPE SET IN .KLITK)
11971 ; CC-C CLEAR -- TEN STOPPED (PROTOCOL STOPPED -- KS.TSP SET IN .KLITK)
11972 ;
11973 ; SPECIAL ERROR CONDITIONS:
11974 ;
11975 ; TIMEOUT AND ".NOERR" .NE. 0 - CC-C SET
11976 ;-
11977
11978 044012 WFED::
11979 044012 012737 003000 031204' MOV #3000,DEXST ;SET UP TIMEOUT FOR DEXDONE
11980 044020 5$:
11981 044020 032760 000004 000034 BIT #DEXDON,STATD(R0) ;WAIT FOR TRANSFER TO COMPLETE
11982 044026 001043 BNE 85$ ;DONE
11983 044030 005337 031204' DEC DEXST ;TIMEOUT?
11984 044034 001371 BNE 5$ ;NO -- CONTINUE WAITING
11985 044036 005060 000030 CLR DAG1(R0) ;CLEAR FLAGS
11986 044042 105737 031230' TSTB .NOERR ; +001 IF REQUESTED,
11987 044046 000261 SEC ;(SET ERROR FOR RETURN)
11988 044050 001052 BNE 90$ ; +001 JUST RETURN TO THE CALLER.
11989 044052 032760 004000 000030 BIT #DS04,DAG1(R0) ;CHECK FOR E BOX STOPPED
11990 044060 001004 BNE 10$ ;YES -- COMPLAIN
11991 044062 052737 000010 031234' BIS #KS.DEX,.KLITK ;SET DEX ERROR
11992 044070 000413 BR 80$
11993 044072 10$:
11994 044072 052737 000002 031234' BIS #KS.CES,.KLITK ;SET CLOCK ERROR STOP
11995 044100 000407 BR 80$
11996 044102 20$:
11997 044102 052737 000004 031234' BIS #KS.EPE,.KLITK ;SET E-BUS PARITY ERROR
11998 044110 000407 BR 81$
11999 044112 30$:
12000 044112 052737 000001 031234' BIS #KS.TSP,.KLITK ;SET TEN STOPPED
12001 044120 80$:
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 175-1
SCOMM MODULE -- WFED (WAIT FOR EXAMINE/DEPOSIT)
12002 044120 105237 031230' INCB .NOERR ;ERROR IS RECOGNIZED
12003 044124 CALL ..DTSP ;CLEAR BOTH PROTOCOLS
044124 004737 044300' JSR PC,..DTSP
12004 044130 81$:
12005 044130 105237 031232' INCB .TKTN ;ASK FOR NOTIFICATION
12006 044134 RETURN
044134 000207 RTS PC
12007 044136 85$:
12008 044136 105737 031230' TSTB .NOERR ; +001 IF REQUESTED,
12009 044142 001015 BNE 90$ ; +001 IGNORE ERRORS
12010 044144 032760 000020 000034 BIT #BPARER,STATD(R0) ;CHECK FOR E BUS PARITY ERROR
12011 ;
12012 ; **NOTE** E-BUS PARITY ERROR DOES NOT STOP THE -10. IF WE CHANGED THE
12013 ; PROTOCOL AT THIS POINT WITHOUT HALTING THE -10 WITH A FX 10
12014 ; HE WOULD TAKE NOTICE AND RELOAD US BEFORE WE COULD CORRECT
12015 ; HIM. AT SOME POINT THE FX 10 SHOULD BE INSERTED INTO THIS
12016 ; CODING TO RECOGNIZE THE ERROR.
12017 ;
12018 044152 001353 BNE 20$ ;YES -- RECOGNIZE AS ERROR
12019 044154 005060 000030 CLR DAG1(R0)
12020 044160 105737 031231' TSTB .NOHLT ;+ IF HALTS ALLOWED
12021 044164 001004 BNE 90$ ;+ THEN DON'T CHECK, OTHERWISE
12022 044166 032760 001000 000030 BIT #DS06,DAG1(R0) ;CHECK FOR TEN STOPPED
12023 044174 001346 BNE 30$ ;YES -- RECOGNIZE AS ERROR
12024 044176 90$:
12025 044176 RETURN
044176 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 176
SCOMM MODULE -- SWFED (START AND WAIT FOR EX/DEP)
12027 .SBTTL SCOMM MODULE -- SWFED (START AND WAIT FOR EX/DEP)
12028 ;+
12029 ; SWFED -- STARTS A DEPOSIT/EXAMINE SEQUENCE AND WAITS FOR
12030 ; ITS COMPLETION.
12031 ;
12032 ; NOTE: **** THIS ROUTINE MUST BE ENTERED AT PRI6 ****
12033 ;
12034 ;
12035 ; CALLING SEQUENCE:
12036 ;
12037 ; R0 -- ADDRESS OF DTE20
12038 ; R1-- HIGH ORDER EXAMINE/DEPOSIT ADDRESS WORD (FOR TENAD1)
12039 ; R2 -- LOW ORDER EXAMINE/DEPOSIT ADDRESS WORD (FOR TENAD2)
12040 ; R3 -- ADDRESS TO XFER 3 WORD BLOCK TO OR FROM
12041 ;
12042 ; CALL SWFED
12043 ;
12044 ; EXIT CONDITIONS:
12045 ;
12046 ; SUCCESS NO REGISTERS ALTERED CC-C CLEAR
12047 ;
12048 ; ERROR CONDITIONS:
12049 ;
12050 ; CC-C SET
12051 ;-
12052 ;
12053 044200 010346 SWFED:: MOV R3,-(SP) ;SAVE REGISTERS
12054 044202 032701 010000 BIT #DEP,R1 ;CHECK FOR DEPOSIT
12055 044206 001016 BNE 20$ ;YES -- GO TO DEPOSIT PART OF SUB
12056 044210 010160 000010 MOV R1,TNAD1(R0) ;SET UP ADDRESS OF XFER IN DTE
12057 044214 010260 000012 MOV R2,TNAD2(R0) ;START XFER
12058 044220 CALL WFED ;WAIT FOR EXAMINE/DEPOSIT
044220 004737 044012' JSR PC,WFED
12059 044224 103423 BCS 40$ ;COMPLAIN ABOUT E BOX STOPPED
12060 044226 MTPS DXWD3(R0),(R3)+ ;STORE THE WORD XFERED
044226 016023 000002 MOV DXWD3(R0),(R3)+
12061 044232 MTPS DXWD2(R0),(R3)+
044232 016023 000004 MOV DXWD2(R0),(R3)+
12062 044236 MTPS DXWD1(R0),(R3)+
044236 016023 000006 MOV DXWD1(R0),(R3)+
12063 044242 000414 BR 40$ ;ALL DONE.
12064
12065 044244 20$: MFPS (R3)+,DXWD3(R0) ;TRANSFER TO 10
044244 012360 000002 MOV (R3)+,DXWD3(R0)
12066 044250 MFPS (R3)+,DXWD2(R0) ;SET UP WORD IN DTE
044250 012360 000004 MOV (R3)+,DXWD2(R0)
12067 044254 MFPS (R3)+,DXWD1(R0)
044254 012360 000006 MOV (R3)+,DXWD1(R0)
12068 044260 010160 000010 MOV R1,TNAD1(R0) ;SET HIGH ORDER ADDRESS
12069 044264 010260 000012 MOV R2,TNAD2(R0)
12070 044270 CALL WFED ;WAIT FOR EXAMINE/DEPOSIT
044270 004737 044012' JSR PC,WFED
12071
12072 044274 012603 40$: MOV (SP)+,R3 ;RESTORE R3
12073 044276 RETURN ;RETURN TO CALLER
044276 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 177
SCOMM MODULE -- ..DTSP (STOP DTE PROTOCOLS)
12075 .SBTTL SCOMM MODULE -- ..DTSP (STOP DTE PROTOCOLS)
12076 ;+
12077 ;
12078 ; ..DTSP -- SUBROUTINE TO TURN OFF PRIMARY AND SECONDARY PROTOCOLS.
12079 ; THIS REQUIRES TURNING OFF THE DTE INTERRUPT.
12080 ;
12081 ; CALLING SEQUENCE:
12082 ; (NO REGISTERS USED)
12083 ;
12084 ; CALL ..DTSP
12085 ;
12086 ; EXIT CONDITIONS:
12087 ;
12088 ; SUCCESS IS ASSURED, CC-C IS CLEARED
12089 ;
12090 ; THERE ARE NO ERRORS
12091 ;
12092 ;-
12093 ;
12094 044300 ..DTSP::
12095 044300 012777 000010 165046 MOV #INTROF,@.PRSTA ;;TURN OFF DTE INTERRUPTS
12096 044306 042737 060000 031114' BIC #EF.PR1!EF.PR2,.COMEF+2 ;;AND PROTOCOLS
12097 044314 000426 BR DTPXIT ;; +++010 AND EXIT
12098 ;
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 178
SCOMM MODULE -- ..DTP2 (START SECONDARY PROTOCOL)
12100 .SBTTL SCOMM MODULE -- ..DTP2 (START SECONDARY PROTOCOL)
12101 ;+
12102 ; ..DTP2 -- SUBROUTINE TO TURN ON SECONDARY PROTOCOL.
12103 ; A CHECK IS MADE TO MAKE SURE PRIMARY PROTOCOL IS OFF.
12104 ;
12105 ; CALLING SEQUENCE:
12106 ; (NO REGISTERS USED)
12107 ;
12108 ; CALL ..DTP2
12109 ;
12110 ; EXIT CONDITIONS:
12111 ;
12112 ; SUCCESS IS ASSURED, CC-C IS CLEARED
12113 ;
12114 ; THERE ARE NO ERRORS
12115 ;
12116 ;-
12117 ;
12118 044316 ..DTP2::
12119 044316 032737 040000 031114' BIT #EF.PR1,.COMEF+2 ;;IF PRIMARY PROTOCOL IS ON,
12120 044324 001402 BEQ 10$ ;;THEN
12121 044326 CALL ..DTSP ;;TURN IT OFF
044326 004737 044300' JSR PC,..DTSP
12122 044332 10$:
12123 044332 012777 004010 165014 MOV #INTROF!INT11S,@.PRSTA ;;DISABLE INTERRUPTS
12124 044340 052737 020000 031114' BIS #EF.PR2,.COMEF+2 ;;LET THE BOOT PROTOCOL TASK GO
12125 044346 152737 000001 031116' BISB #EV.SE,.SERFG+0 ;; +++007 DECLARE A SIGNIFICANT EVENT
12126 044354 000406 BR DTPXIT ;; +++ 010 AND RETURN
12127 ;
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 179
SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)
12129 .SBTTL SCOMM MODULE -- ..DTP1 (START PRIMARY PROTOCOL)
12130 ;+
12131 ; ..DTP1 -- SUBROUTINE TO TURN ON PRIMARY PROTOCOL.
12132 ;
12133 ; CALLING SEQUENCE:
12134 ; (NO REGISTERS USED)
12135 ;
12136 ; CALL ..DTP1
12137 ;
12138 ; EXIT CONDITIONS:
12139 ;
12140 ; ERROR CONDITIONS:
12141 ;
12142 ;-
12143 ;
12144 044356 ..DTP1::
12145 044356 052737 040000 031114' BIS #EF.PR1,.COMEF+2 ;;ENABLE THE PROTOCOL TASK
12146 044364 052737 000001 031116' BIS #EV.SE,.SERFG+0 ;;THIS IS SIGNIFICANT
12147 044372 DTPXIT: ;; +++010
12148 044372 000241 CLC ;;MAKE SURE CC-C
12149 044374 RETURN ;;AND RETURN
044374 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 180
SCOMM MODULE -- ..VXFR (VALADATE TRANSFER)
12151 .SBTTL SCOMM MODULE -- ..VXFR (VALADATE TRANSFER)
12152 ;+
12153 ;
12154 ;
12155 ; ..VXFR -- ROUTINE TO VALADATE A USER'S TRANSFER REQUEST
12156 ; ..VXFR CHECKS TO SEE IF A USER'S REQUEST TO TRANSFER
12157 ; INTO OR OUT OF HIS SPACE IS LEGAL.
12158 ; ..VXFR WILL CHECK TO SEE THAT TRANSFER'S ACROSS VIRTUAL
12159 ; BOUNDS ARE ALSO TRANSFER'S IN CONTIGUOUS CORE.
12160 ; THIS MEANS THAT AFTER VALIDATION A HANDLER
12161 ; TASK DOES NOT HAVE TO WORRY ABOUT
12162 ; THE VALIDITY OF TRANSFERING A CONTIGUOUS BLOCK
12163 ; OF CORE INTO THE USER'S AREA.
12164 ; ..VXFR WILL ALSO RETURN TO THE CALLER THE PHYSICAL
12165 ; 18 BIT ADDRESS OF THE USER'S BUFFER. ..VXFR
12166 ; WILL NOT LET THE USER TRANSFER INTO READONLY SPACE
12167 ; IF THE DIRECTION SPECIFIED BY THE HANDLER
12168 ; IS WRITE.
12169 ;
12170 ;
12171 ; CALLING SEQUENCE:
12172 ; R1 -- REQUEST NODE ADDRESS
12173 ; R2 -- STARTING ADDRESS (VIRTUAL)
12174 ; R3 -- TRANSFER LENGTH
12175 ; CALL ..VXFR
12176 ;
12177 ; EXIT CONDITIONS:
12178 ; R4 -- HIGH ORDER ADDRESS (BITS 4,5)
12179 ; R5 -- LOW ORDER ADDRESS
12180 ;
12181 ; ERROR EXIT -- C BIT SET
12182 ;-
12183 ;
12184 ;
12185 ;
12187 044376 010205 ..VXFR::MOV R2,R5 ;IF NOT KT11 THEN JUST RETURN CURRENT ADDRESS
12188 044400 005004 CLR R4
12189 044402 RETURN
044402 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 181
SCOMM MODULE -- ..BLXO (BLOCK OUTPUT) ..BLXI (BLOCK INPUT)
12297 .SBTTL SCOMM MODULE -- ..BLXO (BLOCK OUTPUT) ..BLXI (BLOCK INPUT)
12298 ;+
12299 ;
12300 ;
12301 ; ..BLXO -- ROUTINE TO PASS INFORMATION TO A USER'S PARTITION
12302 ; ..BLXO VALIDATES THE TRANSFER OF THE REQUEST TO
12303 ; TRANSFER TO OR FROM A HANDLER TASK'S AREA.
12304 ;
12305 ; ..BLXI -- ROUTINE TO PASS INFORMATION FROM A USER'S
12306 ; PARTITION. ..BLXO VALIDATES THE TRANSFER OF THE
12307 ; REQUEST TO TRANSFER TO A HANDLER TASK'S AREA.
12308 ;
12309 ;
12310 ; CALLING SEQUENCE:
12311 ; R1 -- REQUEST NODE ADDRESS
12312 ; R2 -- STARTING ADDRESS (VIRTUAL)
12313 ; R3 -- TRANSFER LENGTH (BYTES)
12314 ; R4 -- HANDLER VIRTUAL ADDRESS
12315 ; CALL ..BLXO OR CALL ..BLXI
12316 ;
12317 ; EXIT CONDITIONS
12318 ; CC -- C BIT SET
12319 ;
12320 ; NOTE -- RESTRICTED TO 4K-64 (10) WORD TRANSFER'S
12321 ;-
12322 ;
12323 ;
12324 ;
12325 ;
12326 044404 010446 ..BLXI::MOV R4,-(SP)
12327 044406 010546 MOV R5,-(SP)
12328 044410 012705 000001 MOV #1,R5 ;SET DIRECTION OF TRANSFER TO IN
12329 044414 000403 BR BLXCOM ;AND ENTER COMMON CODE
12330 ;
12331 044416 010446 ..BLXO::MOV R4,-(SP) ;SAVE THE REGISTERS
12332 044420 010546 MOV R5,-(SP)
12333 044422 005005 CLR R5 ;INDICATE TRANSFER OUT
12334 044424 010546 BLXCOM: MOV R5,-(SP) ;SAVE THE DIRECTION OF TRANSFER
12335 044426 CALL ..VXFR ;VALADATE TRANSFER
044426 004737 044376' JSR PC,..VXFR
12348 044432 010346 MOV R3,-(SP) ;SAVE R3
12353 044434 016604 000006 MOV 6(SP),R4 ;SET UP THE FROM ADDRESS
12354 044440 005766 000002 TST 2(SP)
12356 044444 001403 BEQ BLXPLP ;DIRECTION OK FOR OUTPUT --DO TRANSFER
12363 044446 010546 MOV R5,-(SP)
12364 044450 010405 MOV R4,R5
12365 044452 012604 MOV (SP)+,R4
12367 044454 112425 BLXPLP: MOVB (R4)+,(R5)+ ;MOVE A BYTE
12368 044456 077302 SOB R3,BLXPLP ;YES -- FINISHED?
12369 044460 012603 MOV (SP)+,R3 ;RESTORE R3
12374 ;CLEAR C BIT TO INDICATE LEGAL TRANSFER
12375 044462 005726 TST (SP)+ ;REMOVE THE DIRECTION WORD FROM THE STACK
12376 044464 012605 BLXRTN: MOV (SP)+,R5 ;RESTORE REGISTERS
12377 044466 012604 MOV (SP)+,R4
12378 044470 RETURN ;RETURN TO CALLER
044470 000207 RTS PC
12379 ;
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 181-1
SCOMM MODULE -- ..BLXO (BLOCK OUTPUT) ..BLXI (BLOCK INPUT)
12380 044472 005726 ILBLT: TST (SP)+ ;REMOVE THE DIRECTION WORD
12381 044474 000261 SEC ;SET C TO INDICATE XFER BAD
12382 044476 000772 BR BLXRTN ;AND RETURN TO CALLER
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 182
SCOMM MODULE -- ..VTOL (MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL
12385 .SBTTL SCOMM MODULE -- ..VTOL (MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL)
12386
12387 ;+
12388 ;
12389 ;CALL: JSR PC,..VTOL ;CLOSED, RETURN IN-LINE
12390 ;
12391 ;IN: R1 - POINTER TO REQUEST NODE, CONTAINING:
12392 ; R.AT - ATL OF CALLING TASK
12393 ; R.LU - LUN HAVING WINDOW IN LUT(N2)
12394 ; R.FC - I/O FUNCTION CODE, VIRTUAL READ OR WRITE
12395 ; R.PB+6,+10 - VIRTUAL BLOCK NUMBER TO MAP
12396 ;
12397 ;OUT: C=0 - MAPPING SUCCESSFUL
12398 ; R1 - POINTER TO REQUEST NODE, CONTAINING
12399 ; R.FC - I/O FUNCTION CODE, LOGICAL READ OR WRITE
12400 ; R.PB+6,+10 - LOGICAL BLOCK NUMBER MAPPED
12401 ;
12402 ; C=1 MAPPING FAILURE
12403 ;
12404 ;NOTE: THIS LIBRARY ROUTINE USES THE FOLLOWING
12405 ; OTHER LIBRARY ROUTINES---
12406 ;
12407 ; ..SPD3 - SWAP PAGE-3 DESCRIPTORS, EXEC FUNCTION
12408 ; ..VVLL - INTERNAL VIRTUAL TO LOGICAL FILE FUNCTION
12409 ;
12410 ;-
12411
12412 044500 ..VTOL::
12413 044500 010046 MOV R0,-(SP) ;SAVE WORKING REGISTERS
12414 044502 010146 MOV R1,-(SP)
12415 044504 010246 MOV R2,-(SP)
12416 044506 010346 MOV R3,-(SP)
12417 044510 010446 MOV R4,-(SP)
12418
12419 ; GET WINDOW POINTER FROM LUT(N2) IN TASK HEADER
12420
12421 044512 010104 MOV R1,R4 ; SAVE POINTER TO REQUEST NODE
12422 044514 016402 000006 MOV R.AT(R4),R2 ; POINT TO ATL NODE
12423 044520 116403 000012 MOVB R.LU(R4),R3 ; GET LUN
12424 044524 006303 ASL R3
12425 044526 006303 ASL R3
12426 044530 066203 000012 ADD A.HA(R2),R3 ;!!!!!DOESN'T WORK IF MACY11 CONDITIONAL IS OFF
12427 044534 016301 000130 MOV H.LUT(R3),R1 ; GET WINDOW POINTER FROM LUT
12428 044540 001441 BEQ 30$ ; NO WINDOW, NO MAP....
12429 044542 030127 000001 BIT R1,#1 ; SEE IF WINDOW POINTER IS ODD
12430 044546 001036 BNE 30$ ; ECCCHH!
12431
12432 ; SEE IF THIS IS A READ OR WRITE AND CHECK PERMISSIONS APPROPRIATELY.
12433
12434 044550 012746 001000 MOV #IO.RLB,-(SP) ; SET UP FOR A READ
12435 044554 026427 000014 010400 CMP R.FC(R4),#IO.RVB ; SEE IF IT IS A READ
12436 044562 001405 BEQ 10$ ; YES
12437 044564 012716 000400 MOV #IO.WLB,(SP) ; NO, MUST BE A WRITE
12438 044570 031127 001000 BIT (R1),#WI.WRV ; SEE IF THE FILE IS WRITE ACCESSED
12439 044574 001422 BEQ 20$ ; IF NOT, CAN'T WRITE IT
12440
12441 ; NOW DO THE MAPPING ALREADY
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 182-1
SCOMM MODULE -- ..VTOL (MAP VIRTUAL TO LOGICAL BLOCK, EXTERNAL
12442
12443 044576 016400 000026 10$: MOV R.PB+2(R4),R0 ; GET BYTE COUNT
12444 044602 016402 000032 MOV R.PB+6.(R4),R2 ; HIGH ORDER VBN
12445 044606 016403 000034 MOV R.PB+8.(R4),R3 ; LOW ORDER VBN
12446 044612 CALL ..VVLL ; CALL THE MAPPER
044612 004737 044662' JSR PC,..VVLL
12447 044616 103411 BCS 20$ ; NO SUCH LUCK
12448 044620 005700 TST R0 ; CHECK IF MAPPING IS COMPLETE
12449 044622 001007 BNE 20$ ; NO
12450
12451 ; SUCCESSFUL MAPPING - TURN THE NODE INTO A LOGICAL TRANSFER
12452
12453 044624 010264 000032 MOV R2,R.PB+6.(R4) ; SET HIGH ORDER LBN
12454 044630 010364 000034 MOV R3,R.PB+8.(R4) ; SET LOW ORDER LBN
12455 044634 012664 000014 MOV (SP)+,R.FC(R4) ; SET FUNCTION CODE
12456 044640 000402 BR 40$
12457
12458 044642 005726 20$: TST (SP)+ ; CLEAN THE STACK
12459 044644 000261 30$: SEC ; SET FAILURE
12460 044646 012604 40$: MOV (SP)+,R4 ;RESTORE REGISTERS
12461 044650 012603 MOV (SP)+,R3
12462 044652 012602 MOV (SP)+,R2
12463 044654 012601 MOV (SP)+,R1
12464 044656 012600 MOV (SP)+,R0
12465 044660 RETURN
044660 000207 RTS PC
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183
SCOMM MODULE -- ..VVLL (MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL
12467 .SBTTL SCOMM MODULE -- ..VVLL (MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL)
12468
12469 ;+
12470 ;
12471 ;CALL: JSR PC,..VVLL ;CLOSED, RETURN IN-LINE
12472 ;
12473 ;IN: R0 - NUMBER OF BYTES IN TRANSFER
12474 ; R1 - ADDRESS OF WINDOW
12475 ; R2,R3 - VBN TO MAP
12476 ;
12477 ;OUT: SUCCESS - C=0
12478 ; R0 - NUMBER OF BLOCKS NOT MAPPED
12479 ; R2,R3 - LOGICAL BLOCK NUMBER DESIRED
12480 ;
12481 ; FAILURE - C=1
12482 ; R0,R2,R3 - GARBAGED
12483 ;
12484 ;NOTE: THIS ROUTINE MAKES NO EXTERNAL CALLS.
12485 ; THIS ROUTINES IS USED BY---
12486 ;
12487 ; ..VTOL EXTERNAL VIRTUAL TO LOGICAL MAPPER
12488 ; WINDOW TURN FILE CONTROL PRIMITIVE
12489 ; INDEX FILE FILE CONTROL UTILITY
12490 ;
12491 ;-
12492
12493 044662 ..VVLL::
12494 044662 010146 MOV R1,-(SP) ;SAVE WORKING REGISTERS
12495 044664 010446 MOV R4,-(SP)
12496 044666 010546 MOV R5,-(SP)
12497 044670 .INH0 ; INHIBIT TASK SWITCHING
044670 013746 177776 MOV @#PS,-(SP)
044674 112737 000140 177776 MOVB #140,@#PS
12498 044702 062700 000777 ADD #511.,R0 ;; ROUND UP BYTE COUNT TO NEXT BLOCK
12499 044706 006000 ROR R0 ;; RECOVER CARRY
12500 044710 105000 CLRB R0 ;; CLEAR FRACTIONAL PART
12501 044712 000300 SWAB R0 ;; AND CONVERT TO BLOCK COUNT
12502
12503 ; GET STARTING VBN OF CURRENT WINDOW
12504
12505 044714 111104 MOVB (R1),R4 ;; GET COUNT OF RETRIEVAL POINTERS
12506 044716 001417 BEQ 40$ ;; EMPTY WINDOW
12507 044720 062701 000006 ADD #W.VBN,R1 ;; POINT TO STARTING VBN IN WINDOW
12508 044724 012105 MOV (R1)+,R5 ;; GET HIGH ORDER VBN
12509 044726 042705 177400 BIC #177400,R5 ;; MASK OFF HIGH BYTE
12510 044732 160502 SUB R5,R2 ;; SUBTRACT FROM DESIRED VBN
12511 044734 162103 SUB (R1)+,R3 ;; SUBTRACT LOW ORDER
12512 044736 005602 SBC R2 ;; AND THE CARRY
12513 044740 002406 BLT 40$ ;; WINDOW IS PAST VBN - OUT
12514
12515 ; NOW SCAN THE WINDOW FOR THE DESIRED VBN
12516
12517 044742 161103 10$: SUB (R1),R3 ;; ACCUMULATE BLOCK COUNT
12518 044744 005602 SBC R2
12519 044746 103407 BLO 20$ ;; BRANCH IF WE GO BELOW ZERO
12520 044750 062701 000006 ADD #6,R1 ;; SKIP OVER THIS RETRIEVAL POINTER
12521 044754 077406 SOB R4,10$ ;; AND LOOP FOR RETRIEVAL POINTERS
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-1
SCOMM MODULE -- ..VVLL (MAP VIRTUAL TO LOGICAL BLOCK, INTERNAL
12522 044756 40$: .ENB0 ;; OUT OF POINTERS - VBN IS BEYOND WINDOW
044756 004737 041526' JSR PC,..ENB0
12523 044762 000261 SEC ;SET FAILURE
12524 044764 000430 BR 50$ ;RETURN
12525 ;
12526 ; FOUND THE RIGHT RETRIEVAL POINTER - COMPUTE LBN
12527 ;
12528 044766 010305 20$: MOV R3,R5 ;; R5 = - (BLOCKS IN THIS EXTENT PAST VBN)
12529 ;; COMPUTE NUMBER OF CONTIGUOUS BLOCKS
12530 044770 005405 NEG R5 ;; STARTING AT DESIRED VBN
12531 044772 062103 ADD (R1)+,R3 ;; COMPUTE LBN OFFSET IN THIS EXTENT
12532 044774 005502 ADC R2
12533 044776 062102 ADD (R1)+,R2 ;; GET HIGH ORDER LBN
12534 045000 062103 ADD (R1)+,R3 ;; AND LOW ORDER LBN
12535 045002 005502 ADC R2
12536 045004 160500 SUB R5,R0 ;; SEE IF THE TRANSFER LIES WITHIN THIS EXTENT
12537 045006 101413 BLOS 25$ ;; YES
12538
12539 045010 005304 DEC R4 ;; SEE IF THERE IS ANOTHER POINTER
12540 045012 001412 BEQ 30$ ;; NO
12541 045014 020021 CMP R0,(R1)+ ;; SEE IF REMAINDER OF TRANSFER LIES IN NEXT EXTENT
12542 045016 101010 BHI 30$ ;; NO
12543 045020 060305 ADD R3,R5 ;; COMPUTE END LBN + 1
12544 045022 010204 MOV R2,R4
12545 045024 005504 ADC R4 ;; COMPUTE HIGH ORDER
12546 045026 020421 CMP R4,(R1)+ ;; SEE IF NEXT EXTENT IS CONTIGUOUS WITH THIS ONE
12547 045030 001003 BNE 30$ ;; NO
12548 045032 020521 CMP R5,(R1)+ ;; COMPARE LOW ORDER
12549 045034 001001 BNE 30$ ;; NO
12550
12551 045036 005000 25$: CLR R0 ;; TRANSFER IS COMPLETELY MAPPED
12552 045040 30$: .ENB0 ; ENABLE TASK SWITCHING
045040 004737 041526' JSR PC,..ENB0
12553 045044 000241 CLC ; SET SUCCESS
12554 045046 012605 50$: MOV (SP)+,R5 ; RESTORE REGISTES
12555 045050 012604 MOV (SP)+,R4
12556 045052 012601 MOV (SP)+,R1
12557 045054 RETURN
045054 000207 RTS PC
12559 040262' .END INITLM
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-2
SYMBOL TABLE
ACKNOW 015164RG BIT0 = 000001 CR$BF1= 021214RG DEXCOM 002760R DIAG2 = 174432
AF.PP = 000200 G BIT1 = 000002 CR$BO2= 021632RG DEXDON= 000004 DIAG3 = 174436
ASXCMN 003274R BIT10 = 002000 CR$B03= 043740RG DEXST 031204RG DIALUP 014700RG
ASXDT 003150R BIT11 = 004000 CR$CBR= 007164RG DEXTM1 031212RG DIKL10= 000010
ASXEXT 003464R BIT12 = 010000 CR$DTB= 020734RG DEXTM2 031210RG DIRDPT 002532R
ASXE1 003124RG BIT13 = 020000 CR$DTD= 001234RG DEXTM3 031206RG DIRMAX= 000102
ASXE2 003140R BIT14 = 040000 CR$DTF= 020266RG DEXWD1= 174406 DIROK 002526R
ASXLRF 003310R BIT15 = 100000 CR$ETE= 020662RG DEXWD2= 174404 DIV216 041262RG
ASXLRQ 003346R BIT2 = 000004 CR$FTA= 001136RG DEXWD3= 174402 DLCNT = 000005 G
ASXSCN 003136R BIT3 = 000010 CR$IAS= 004356RG DE.01 = 000377 G DLECNT= 000004 G
ASXTE 003756R BIT4 = 000020 CR$ILF= 014702RG DE.02 = 000376 G DLETBL 035136RG
ASXWR0 003176R BIT5 = 000040 CR$ILQ= 022026RG DE.03 = 000375 G DLINT 026414RG
ASXWR1 003206R BIT6 = 000100 CR$LRF= 003342RG DE.04 = 000374 G DLSTOP 015650R
ASXWR2 003216R BIT7 = 000200 CR$MPE= 001300RG DE.05 = 000373 G DLTBL 035126RG
ASXWR3 003226R BIT8 = 000400 CR$PT1= 021146RG DE.06 = 000372 G DLTMP 022652R
ASXWR4 003236R BIT9 = 001000 CR$PT2= 021172RG DE.07 = 000371 G DLYCNT= 174400
A.EF = 000020 G BLXCOM 044424R CR$PT3= 021570RG DE.08 = 000370 G DL.CAR= 010000 G
A.FB = 000015 G BLXPLP 044454R CR$PT4= 022156RG DE.09 = 000367 G DL.CTS= 020000 G
A.FM = 000024 G BLXRTN 044464R CR$RES= 001242RG DE.10 = 000366 G DL.DEN= 000040 G
A.HA = 000012 G BPARER= 000020 CR$TBT= 001250RG DE.11 = 000365 G DL.DSC= 100000 G
A.PD = 000006 G BPTTRP 001246R CR$TET= 020242RG DE.80 = 000260 G DL.DTR= 000002 G
A.PF = 000034 G BTPHD 005352RG CR$T04= 001212RG DE.81 = 000257 G DL.FER= 020000 G
A.RP = 000010 G BTPRO 005652R CR$UIE= 021520RG DE.90 = 000246 G DL.RAC= 004000 G
A.SP = 000004 G BYCNT 022722R CSDONE 004126R DE.91 = 000245 G DL.RDE= 000001 G
A.SZ = 000036 G CDD = 000020 CS.EXP= 177670 DE.92 = 000244 G DL.RDN= 000200 G
A.TD = 000016 G CDRTPD 033336R CTLO = 000040 DE.93 = 000243 G DL.REN= 000100 G
A.TS = 000014 G CDTSK 032756RG CTRLC 022730R DE.94 = 000242 G DL.RNG= 040000 G
BAUDTB 026174R CESCHK 011014R CTRLU 022734R DE.95 = 000241 G DL.RTS= 000004 G
BC.AKA= 000025 G CHNPNT= 000001 CTRLZ 022740R DE.96 = 000240 G DL.SRD= 002000 G
BC.BTP= 000024 G CHTBL 026162R CTYPTR 031220RG DE.97 = 000237 G DL.STD= 000010 G
BC.DES= 000010 G CH.FOR= 000100 G CTYSTS 022660R DE.98 = 000236 G DL.UNA= 001420 G
BC.EDR= 000027 G CH.LAB= 000001 G CURBF = 000006 DE.99 = 000235 G DL.XEN= 000100 G
BC.FNM= 000034 G CH.NAT= 000020 G CYCLS = 000002 DFTBL 014612RG DMTBL 035062RG
BC.FOD= 000013 G CH.NDC= 000010 G C.AS = 000002 G DFTSZ = 000066 DMTMP 022650R
BC.HAD= 000002 G CH.OFF= 000200 G C.AT = 000000 G DFUNC = 000200 DMYN = 000004 G
BC.HDS= 000007 G CH.UNL= 000040 G C.FA = 000012 G DF.DMG= 000004 DON10C= 040000
BC.HTD= 000012 G CMEDP 010270R C.FM = 000010 G DF.DMN= 000007 DON10S= 100000
BC.LDR= 000030 G CMNABO 001100RG C.RS = 000006 G DF.DOR= 000001 DON11C= 000100
BC.LDV= 000031 G CMNABT 002656R C.SD = 000004 G DF.EHG= 000010 DON11S= 000200
BC.LNC= 000004 G CMSG 001510R C.SZ = 000014 G DF.EHM= 000011 DPCMN 010264R
BC.NSA= 000032 G CNT 022720R C1 = 140010 DF.EMG= 000005 DPKAL 022776R
BC.RDS= 000005 G CNUPE = 000002 C1DB = 140110 DF.EMN= 000006 DPMSEP 010316R
BC.RQD= 000001 G COMBSE 031370RG DAG1 = 000030 DF.KLR= 000012 DPSEC 010314R
BC.RTD= 000011 G COMTRP 001000R DAG2 = 000032 DF.KLW= 000013 DPS4 = 040000
BC.SAK= 000017 G COPBUF 020054RG DAG3 = 000036 DF.KLX= 000014 DQNXT 023556R
BC.SDS= 000006 G CRADR 022724R DATE = 000004 DF.OFF= 000002 DRESET= 000100
BC.SKP= 000033 G CRHD = ****** GX DBLRNG 021364R DF.ON = 000003 DRXCOM 002774R
BC.SLA= 000023 G CRJT = 001000 DBLSTS 021456R DF.PDP= 000016 DRXRR 003006R
BC.SNA= 000014 G CROBAR 007132RG DBLXIT 021452R DF.PEX= 000015 DR.DTE= 000011
BC.SPT= 000026 G CRSTB 001160R DCOMST= 000001 DHBUF = 000020 DR.00 = 000000 G
BC.STR= 000003 G CRSTK = ****** GX DEAND1 016170R DHCNT = 000200 G DR.01 = 000001 G
BC.STS= 000022 G CRTBL = ****** GX DEAND2 016164R DHSAV 027232R DR.02 = 000002 G
BC.TDU= 000015 G CRTNXA 004204R DEAND3 015160R DHSTSV 022656R DR.03 = 000003 G
BC.THU= 000016 G CRTNX1 004176R DEANOD 017304R DHTBL 035176RG DSEND = 000004
BC.XOF= 000020 G CRTNX2 004204R DEP = 010000 DHTMP 022654R DS.99 002524R
BC.XON= 000021 G CRTNX3 004206R DEPOF 031374RG DH.FER= 020000 G DS04 = 004000
BITTBL 042572RG CRTY = 002000 DEX = 000400 DIAG1 = 174430 DS05 = 002000
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-3
SYMBOL TABLE
DS06 = 001000 D.FM = 000002 G E.FPR1= 000077 G F.SIZE 000032 IE.FOP= 177713
DTEADR 031702RG D.SZ = 000005 G E.FPR2= 000076 G F.STAT 000040 IE.HFU= 177744
DTECMD= 000451 D1011 = 000040 E.FRKP= 000075 G F.STD 000004 IE.HWR= 177772
DTEDSP 007620R EBSEL = 000100 E.FSND= 000040 G F.UCHA 000020 IE.IDU= 177644
DTEFLG= 000444 EBUSPC= 000020 E.FW = 000010 G F11TPD 033436RG IE.IEF= 177637
DTEF11= 000450 EBUSPS= 000004 E.IOD = 000005 G GENTPD 033456R IE.IFC= 177776
DTEHD 014174RG ECHOB 025262R E.LS = 000002 G HANGUP 014756RG IE.IFU= 177747
DTEMSK 031700RG EDONES= 040000 E.NIR = 000004 G HIBYTE= 177400 IE.ILL= 177726
DTEMTD= 000455 EDRMT 014706RG E.OPSZ= 000140 G HICTS 016500RG IE.ILU= 177640
DTEMTI= 000456 EF.BOV= 000040 G E.RKH = 000013 G HIDVST 016710RG IE.INS= 177776
DTENM = 000000 EF.CLK= 000002 G E.RKR = 000012 G HORPS = 000016 IE.IPR= 177641
DTESP 014454RG EF.CRI= 002000 G E.RQM = 000010 G H.CSP = 000000 G IE.ISQ= 177703
DTETPD 033236RG EF.CTC= 100000 G E.RSS = 000014 G H.DSW = 000046 G IE.ITI= 177643
DTETSK 032556RG EF.DTE= 000001 G E.TMO = 000007 G H.FCP = 000050 G IE.ITS= 177770
DTEXIT 020216R EF.IOD= 000020 G E.TTY = 000003 G H.FOR = 000052 G IE.LCK= 177745
DTPXIT 044372R EF.NIR= 000010 G E.WFM = 000011 G H.HSZ = 000002 G IE.LNL= 177646
DTTSK 033016RG EF.PFR= 004000 G FC.CEF= 020000 H.IPC = 000076 G IE.MBK= 177721
DUPE = 000020 EF.PR1= 040000 G FC.DIR= 040000 H.IPS = 000074 G IE.MOD= 177753
DURE = 000004 EF.PR2= 020000 G FC.FCO= 010000 H.ISP = 000100 G IE.NBF= 177731
DVCH = 110220 EF.RKH= 002000 G FC.WAC= 100000 H.LUT = 000130 G IE.NBK= 177727
DV.EOF= 000040 G EF.RKP= 010000 G FDVNM 016772R H.OVL = 000054 G IE.NFI= 177704
DV.F11= 000400 G EF.RKR= 001000 G FDVNMM 016756R H.TKVA= 000106 G IE.NLN= 177733
DV.HNG= 001000 G EF.RQM= 000200 G FEHD = ****** GX IE.ABO= 177761 IE.NNC= 177674
DV.IOP= 000020 G EF.RSS= 004000 G FESTK = ****** GX IE.ACT= 177771 IE.NOD= 177751
DV.LIN= 002000 G EF.SND= 100000 G FETBL = ****** GX IE.ADP= 177636 IE.NSF= 177746
DV.LOG= 000100 G EF.TED= 000100 FETPD 033256R IE.ALN= 177736 IE.OFL= 177677
DV.NXD= 000001 G EF.TMO= 000100 G FETSK 033016RG IE.AST= 177660 IE.ONP= 177773
DV.OFL= 000002 G EF.TTY= 000004 G FE0PUD 040142RG IE.BAD= 177777 IE.OVR= 177756
DV.OIR= 000004 G EF.WFM= 000400 G FILTB 022744R IE.BBE= 177710 IE.PRI= 177760
DV.SCN= 000010 G EHSG = 000006 G FLBT = 000001 IE.BDI= 177714 IE.RAC= 177724
DV.URE= 000200 G EHSM = 000010 G FLBYT = 000011 IE.BDR= 177716 IE.RAT= 177723
DWNMS 002306R EMGSTK 040370RG FLCT = 000017 IE.BDV= 177711 IE.RBG= 177730
DWNMSG 002274R EMTSTK 031200RG FLDVOT 017314RG IE.BHD= 177700 IE.RCN= 177722
DWNMSZ= 000043 EMTTRP 002352RG FNBYT = 000005 IE.BLK= 177754 IE.RER= 177740
DXHD = ****** GX EMYN = 000002 G FNDCPU 010730R IE.BNM= 177712 IE.RNM= 177715
DXSTK = ****** GX EM.DRO= 000020 G FNDDTE 010762R IE.BTF= 177675 IE.RSU= 177757
DXTPD 033376R EOLS = 000400 FNDSPD 015726R IE.BTP= 177725 IE.SDP= 177635
DXTSK 033056RG EPTR = 000000 FORPRO= 000020 IE.BVR= 177701 IE.SNC= 177735
DXWD1 = 000006 EQSZ 031746RG FW = 000300 IE.BYT= 177755 IE.SPC= 177772
DXWD2 = 000004 ERR10C= 010000 F.DREF 000042 IE.CKP= 177766 IE.SQC= 177734
DXWD3 = 000002 ERR10S= 020000 F.DRNM 000044 IE.CKS= 177742 IE.SRE= 177762
DXWRD1= 002000 ERR11C= 000001 F.FEXT 000002 IE.CLO= 177732 IE.STK= 177706
DX0PEN 037752RG ERR11S= 000002 F.FNUM 000006 IE.CON= 177752 IE.ULN= 177773
DX1PEN 040022RG EV.AS = 000002 G F.FOWN 000014 IE.DAA= 177770 IE.UPN= 177777
D.AT = 000000 G EV.PF = 000200 G F.FPRO 000016 IE.DAO= 177763 IE.VER= 177774
D.CCDR= 000006 G EV.SE = 000001 G F.FSEQ 000010 IE.DFU= 177750 IE.WAC= 177743
D.CCLK= 000007 G EXCMN 010324R F.FSQN 000013 IE.DNA= 177771 IE.WAT= 177741
D.CCPU= 000200 G EXKAL 022764R F.FVBN 000046 IE.DNR= 177775 IE.WER= 177737
D.CCTY= 000001 G E.BOV = 000006 G F.HDLB 000022 IE.DUN= 177767 IE.WLK= 177764
D.CDH1= 000003 G E.CLK = 000002 G F.LBN 000026 IE.DUP= 177707 IE.2DV= 177720
D.CDLS= 000004 G E.DTE = 000001 G F.LGTH 000052 IE.EBX= 177776 IFLOP = 100000
D.CDL1= 000002 G E.DV = 000006 G F.LINK 000000 IE.EOF= 177766 IGNO 035060R
D.CKLE= 000201 G E.FCRI= 000073 G F.NACS 000036 IE.EOT= 177702 ILBLT 044472R
D.CKLN= 000210 G E.FCTC= 000100 G F.NLCK 000037 IE.EOV= 177765 INDTTF 020406R
D.CLPT= 000005 G E.FN = 000004 G F.NWAC 000040 IE.EXP= 177676 INIAN 043712RG
D.FA = 000004 G E.FP = 000000 G F.RVN 000012 IE.FEX= 177717 INITLM 040262RG
D.FEPD= 000010 G E.FPFR= 000074 G F.SCHA 000021 IE.FHE= 177705 INPPT 025202R
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-4
SYMBOL TABLE
INPT0 025214R IO.RAL= 001010 KBB0 = 177562 G K.LSKL= 000001 G PRS0 = 177564 G
INPT1 025660R IO.RAT= 013000 KBB1 = 175612 G K.LUND= 000000 G PRS1 = 175614 G
INSHD = ****** GX IO.RBC= 003000 KBS0 = 177560 G K.LUSR= 177777 G PRTOFF= 004000
INSTAL= ****** GX IO.RCI= 015000 KBS1 = 175610 G LDLPR 016710RG PRVCM 010642R
INSTK = ****** GX IO.RCV= 015000 KLCST 010406R LDLPV 016710RG PR0 = 000000
INSTPD 033216RG IO.RDB= 001200 KLNLGL= 000016 G LFBT = 004000 PR1 = 000040
INTLPS 020142R IO.RDN= 000022 KLNPLN= 000026 G LFCT = 074000 PR2 = 000100
INTROF= 000010 IO.REL= 013400 KLNPTR 031222RG LINCHR 017114RG PR3 = 000140
INTRON= 000040 IO.RHD= 001010 KLPWRF= 000010 LKS = 177546 G PR4 = 000200
INTSON= 000001 IO.RLB= 001000 KL.CFL= 000400 G LOAD11= 000004 PR5 = 000240
INT10S= 000400 IO.RLV= 001100 KL.CFM= 000002 G LOWCOD= 000000RG PR6 = 000300
INT11C= 002000 IO.RNA= 005400 KL.LCA= 000100 G LPHD = ****** GX PR7 = 000340 G
INT11S= 004000 IO.RNC= 001004 KL.LRM= 000001 G LPSTK = ****** GX PS = 177776 G
IOTTRP 001304R IO.RNE= 001020 KL.LVB= 000004 G LPTBL = ****** GX PSWW1 = 000005
IO.ACE= 007400 IO.RTC= 003400 KL.SPF= 000040 G LPTPD 033316R PSWW10= 000014
IO.ACR= 006400 IO.RTI= 016400 KL.VBD= 000020 G LPTSK 032716RG PSWW11= 000015
IO.ACW= 007000 IO.RTK= 000060 KL.VBN= 000010 G LP0PUD 040072RG PSWW12= 000016
IO.ADS= 014000 IO.RVB= 010400 KPAL0 031760RG L.DT0 = 000003 G PSWW13= 000017
IO.APC= 014000 IO.RWD= 002400 KPAL1 031770RG L.DX0 = 000005 G PSWW2 = 000006
IO.APV= 014010 IO.RWU= 002540 KPAR0 = 172360 L.DX1 = 000006 G PSWW3 = 000007
IO.ATT= 001400 IO.R1C= 002400 KPAR1 = 172362 L.RP4 = 000002 G PSWW4 = 000010
IO.CCI= 014000 IO.SAO= 004000 KPAR2 = 172364 L.TTY = 000001 G PSWW5 = 000011
IO.CCT= 002460 IO.SCS= 013000 KPAR3 = 172366 MBUFR = 000014 PSWW6 = 000012
IO.CLN= 003400 IO.SDI= 013000 KPAR4 = 172370 MEBUF = 000012 PSWW7 = 000013
IO.CON= 015400 IO.SDO= 012400 KPAR5 = 172372 MECNT = 000010 PULSE = 000020
IO.CRC= 001020 IO.SEC= 002520 KPAR6 = 172374 MODE = 100000 PWRXSP 040402RG
IO.CRE= 012000 IO.SEM= 002440 KPAR7 = 172376 MPE11 = 001000 PWR.UP 007134RG
IO.CTI= 015400 IO.SHT= 002410 KPDR0 = 172300 NOSNDA 014716RG QNDSV 012566R
IO.CTL= 016400 IO.SLO= 005400 KPDR1 = 172302 NTKXEN 002064R QPRDTC 014474RG
IO.DAC= 010000 IO.SMO= 002560 KPDR2 = 172304 NTKXEP 002070R QPRDTE 014502RG
IO.DCI= 014400 IO.SNM= 002450 KPDR3 = 172306 NTKXSP 002044RG QPRDTF 017310R
IO.DCT= 002470 IO.SPB= 002420 KPDR4 = 172310 NULHD 001564RG QPRDTL 014536R
IO.DEL= 012400 IO.SPF= 002440 KPDR5 = 172312 NULSTP= 000040 QPROAD 007004R
IO.DET= 002000 IO.SSO= 004400 KPDR6 = 172314 NULTSK 033156RG QPROMS 006762R
IO.DIS= 016000 IO.SST= 002430 KPDR7 = 172316 NUPE = 000002 QPRTPD 033356R
IO.DTI= 016000 IO.STC= 002500 KS.CES= 000002 G N.BP = 000002 G QPRTSK 033116RG
IO.ENA= 006000 IO.STP= 016400 KS.CST= 000020 G N.FP = 000000 G QSIZE = 000023
IO.EOF= 003000 IO.SYN= 003040 KS.DEX= 000010 G N.OVPT= 000054 G Q.AK = 000012 G
IO.ESA= 002500 IO.TRM= 002410 KS.EPE= 000004 G N.PR = 000010 G Q.DA = 000000 G
IO.EXT= 011400 IO.UNL= 000042 KS.PFT= 000100 G OKPAL0 031766RG Q.DZ = 000016 G
IO.FDX= 003020 IO.WAT= 013400 KS.TRR= 000040 G OUTPT 025010R Q.D1 = 000006 G
IO.FNA= 004400 IO.WLB= 000400 KS.TSP= 000001 G OUTPT3 024730R Q.IOAE= 000012
IO.HDX= 003010 IO.WLS= 000410 K.LBPW= 000005 G PARLOA 007502R Q.IOEF= 000006
IO.HIS= 015000 IO.WLV= 000500 K.LCKL= 177777 G PARSAV 040372RG Q.IOFN= 000002
IO.INL= 002400 IO.WVB= 011000 K.LCON= 000004 G PATSIZ= 000040 G Q.IOLU= 000004
IO.ITI= 017000 IO.XMT= 014400 K.LDCM= 000001 G PERCLR= 001000 Q.IOPL= 000014
IO.KIL= 000012 IO.XNA= 014410 K.LDRP= 177777 G PHYS = 100000 Q.IOPR= 000007
IO.LED= 012000 IQ.Q = 000002 K.LDSC= 000003 G PIDENT= 000000 Q.IOSB= 000010
IO.LOV= 001010 IQ.X = 000001 K.LLTO= 000006 G PKT 022726R Q.SI = 000004 G
IO.LTK= 000050 IS.BV = 000005 K.LRAC= 000001 G POLMIN= 001400 G Q.SP = 000006 G
IO.MCS= 013400 IS.CLR= 000000 K.LRBA= 000007 G PRB0 = 177566 G Q.ST = 000004 G
IO.MDA= 016000 IS.CR = 006401 K.LRMN= 000003 G PRB1 = 175616 G Q.SZ = 000020 G
IO.MDI= 014400 IS.ESC= 015401 K.LRNG= 000002 G PRI7 = 000340 G Q.TS = 000002 G
IO.MDO= 015400 IS.PND= 000000 K.LROP= 000001 G PRMBLK 012574R RAMIS0= 010000
IO.MLO= 006000 IS.RDD= 000002 K.LRPR= 000002 G PRMEMN 031372RG RCVKLP 017352RG
IO.MOD= 003000 IS.SET= 000002 K.LRRJ= 177777 G PROPNT= 000021 RESERV 001240R
IO.MSO= 005000 IS.SUC= 000001 K.LSCK= 000001 G PROTBL 031376RG RETTOD 017240RG
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-5
SYMBOL TABLE
RFMAD0= 100000 SF.TA = 000001 G S.STBK= 000012 TRP4 001170R T.HCAD= 000004 G
RFMAD1= 040000 SKX 012624R S.SZ = 000036 G TS.EXT= 000026 G T.HCBC= 000006 G
RFMAD2= 020000 SNDALL 017430RG S.TD = 000004 G TS.LRF= 000006 G T.HFCN= 000007 G
RFMAD3= 010000 SNDMSG 002351R S.TN = 000000 G TS.LRQ= 000002 G T.HHDS= 000010 G
RF.XR = 000002 G SPDTBL 015760R S.TZ = 000016 G TS.RUN= 000010 G T.HP = 000012 G
RM = 000010 SPDTBZ= 000016 TBIT = 000020 G TS.SUS= 000012 G T.HRED= 000000 G
RMBYT = 000004 SPSAV 040370RG TENAD1= 174410 TS.TKN= 000004 G T.PN = 000000 G
RPHD = ****** GX STAT = 174434 TENAD2= 174412 TS.WF0= 000014 G T.PZ = 000006 G
RPPEN 037252RG STATD = 000034 TF.OU = 000002 G TS.WF1= 000016 G T.RAPB= 000004 G
RPSTK = ****** GX STATI 031752RG THRED = 000000 G TS.WF2= 000020 G T.RAPE= 000012 G
RPTPD 033416R STATS = 000000 TMOCNT 023006R TS.WF3= 000022 G T.RAPF= 000016 G
RPTSK 032656RG STATUS= 000022 TNAD1 = 000010 TS.WF4= 000024 G T.RAPI= 000006 G
RQKLD 023044R STCM 043152R TNAD2 = 000012 TTACK 024660RG T.RAPM= 000002 G
RQKLR 023026R STDCDR 032412R TN.EMT= 000012 G TTCNT = 000205 G T.RAPR= 000010 G
RQMCR 023010R STDDTE 032052R TN.LRF= 000040 G TTCTY 026552R T.RAPT= 000014 G
RQSPB 013466R STDDX 032152R TN.TRP= 000014 G TTERLG 031102R T.RAP4= 000000 G
RQSPT 013462RG STDFED 032112R TOBM = 000004 TTINI 023062RG T.RB = 000016 G
RQSTD 013500R STDF11 032212R TOD = 000003 TTINO 024122R T.RF = 000014 G
RSX$$E= 000012 STDINS 032312RG TOELDN 020656R TTINPA 026234R T.SZ = 000020 G
RSX$$F= 000102 STDLPT 032352R TOIP = 000002 TTINPB 026304R T10AD = 000020
RSX$$K= 000126 STDQPR 032512R TOIT = 000001 TTINX 024116R T11AD = 000022
RSX$$V= 000012 STDRPT 032252R TOITDN 020574R TTLGE 020112R T11BC = 000016
RTDVST 016710RG STDTTY 032452R TOTNDN 020236R TTLOGE 031106R UC.CCL= 000002 G
RTNTOD 016626RG STDVST 016710RG TO10 = 000200 TTOUTR 024656R UC.COM= 020000 G
RUBP = 000020 STEIF 021026R TO10AD= 174420 TTOUTX 024650R UC.DIR= 000010 G
R$$11D= 000001 STLN 043206R TO10AS 031732RG TTPEN 037202RG UC.ETB= 000100 G
R.AS = 000020 G STNTQ 022166RG TO10BC= 174414 TTSAV 027270R UC.F11= 040000 G
R.AT = 000006 G STNXT 024402R TO10BM= 000001 TTSTCH 026270R UC.INB= 000400 G
R.DP = 000011 G STOPDL 015642R TO10DB= 000400 TTTBL 035126RG UC.ISP= 002000 G
R.FC = 000014 G STPLIN 015520RG TO10DN= 100000 TTUNT 020116R UC.MNT= 100000 G
R.FN = 000013 G STQUE 021050R TO10DT= 174424 TTWLO 022756R UC.PSE= 010000 G
R.LU = 000012 G STRBF = 000002 TO10ER= 020000 TTYDNE 025116R UC.REC= 000001 G
R.PB = 000024 G STRDAT 016710RG TO10Q 031742RG TTYDNX 025164R UC.SDI= 000020 G
R.PR = 000010 G STSTT 031734RG TO10QC= 031740RG TTYEND= 037176RG UC.SQD= 000040 G
R.QSGC= 000015 STSW0 = 000004 G TO10SZ 031730RG TTYEXP= 000002 G UC.SWL= 001000 G
R.QSPC= 000014 STSW1 = 000006 G TO11 = 000100 TTYHD 022350RG UC.TTY= 000004 G
R.QSPN= 000006 STTOIP 020602R TO11AD= 174422 TTYSP 022630RG UC.0SP= 004000 G
R.QSPR= 000012 STTYDN 024244R TO11AS 031724RG TTYTPD 033276R UF.OFL= 000040 G
R.QSTN= 000002 STTYO 024576R TO11BC= 174416 TTYTSK 032616RG UF.RD = 000040 G
R.SB = 000016 G STXAS = 000000 G TO11BM= 020000 TT.ABL= 010000 G UF.RH = 000200 G
R.TD = 000004 G STXCS = 000000 G TO11BS 031726RG TT.ABW= 000010 G UF.TL = 000100 G
R.UI = 000022 G STXDX = 000000 G TO11DB= 004000 TT.CRW= 000004 G UNASG1= 000032
SCD = 000040 SWFED 044200RG TO11DN= 000200 TT.CTY= 000400 G UNASG2= 000033
SETDHL 016454R SWR = 177570 TO11DT= 174426 TT.ECH= 000002 G UNASG3= 000034
SETDNE 020652R SWSLLT= 100000 TO11DV 031712RG TT.L3S= 000020 G UNASG4= 000035
SETLIN 015176RG SY0PUD 040212RG TO11ER= 000002 TT.NSA= 004000 G UNASG5= 000036
SETSPD 015212RG S.BA = 000012 G TO11FN 031710RG TT.OUT= 000001 G UNASG6= 000037
SEXCM 011334R S.DI = 000011 G TO11FW 031716RG TT.RIP= 002000 G UNRGFN 014700RG
SEXP0 011342R S.DL = 000032 G TO11GW 031720RG TT.RMT= 000100 G UPAR0 = 177640
SEXP1 011424R S.DP = 000010 G TO11HD 031706RG TT.SIP= 001000 G UPAR1 = 177642
SEXP2 011324R S.FW = 000006 G TO11NP 031704RG TT.SND= 140000 G UPAR2 = 177644
SEX97 011426R S.LZ = 000014 G TO11Q 031750RG TT.SNI= 040000 G UPAR3 = 177646
SF.EX = 000004 G S.PC = 000020 G TO11QC= 031741RG TT.VT5= 000040 G UPAR4 = 177650
SF.FX = 000002 G S.RB = 000026 G TO11QP 031722RG TT.XOF= 000200 G UPAR5 = 177652
SF.IR = 040000 G S.RF = 000024 G TO11SP 031714RG T.BA = 000004 G UPAR6 = 177654
SF.PT = 000001 G S.SP = 000022 G TRPASV 031202RG T.FW = 000010 G UPAR7 = 177656
SF.ST = 100000 G S.SS = 000030 G TRPXIT 001142R T.HBCT= 000002 G UPDR0 = 177600
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-6
SYMBOL TABLE
UPDR1 = 177602 V.WISZ 000020 $RX11 = 000001 .DLHUP 030016RG .INHDM 031362RG
UPDR2 = 177604 WEP = 000010 $TOP20= 000001 .DLTMO 030142RG .INICL= 070000
UPDR3 = 177606 WFED 044012RG $TTINP 026216RG .DMHUP 027712RG .INTEN= 000100 G
UPDR4 = 177610 WFXSET 003276R $TTOUT 024530RG .DMTMO 030414RG .IRLTC= 014000
UPDR5 = 177612 WI.BPS= 100000 $UNIT 031224RG .DOW 031253RG .KALSC= 000005 G
UPDR6 = 177614 WI.DLK= 010000 $$ = 000037 .DQDH0 034720RG .KLERW 031310RG
UPDR7 = 177616 WI.EXT= 002000 $$MSG = 000000 .DQDLS 034740RG .KLFLG 031350RG
UT.LG = 000004 G WI.LCK= 004000 $$$ = 033462R .DQPBA 034660RG .KLITK 031234RG
UT.PR = 000001 G WI.RDV= 000400 $$$ARG= 000011 .DQPEA 035060RG .KLIWD 031236RG
UT.SL = 000002 G WI.WRV= 001000 $$$OST= 000016 .DQPSZ= 000010 G .KLNBC 031314RG
U.ACP = 000040 G WTLODT 014166R $$$T1 = 000000 .DRLTC= 015000 .KLNFD 031320RG
U.AF = 000014 G W.CTL 000000 .ABCNT 031364RG .DRSRN 002666RG .KLNFT 031316RG
U.AR = 000034 G W.FCB 000002 .ABFLG 031366RG .DR.NS 002774RG .KLNLB 031314RG
U.CH = 000032 G W.RTRV 000012 .ACKAL 031302RG .DSACF= 066000 .KLNMD 031332RG
U.C1 = 000004 G W.STD 000004 .ATLLH 032552RG .DSIOJ= 065000 .KLNPB 031312RG
U.C2 = 000006 G W.VBN 000006 .BGBST= 076000 G .DST 031252RG .KLNPE= 031334RG
U.C3 = 000010 G W.WISZ 000007 .BGBUF 033476RG .DTESZ= 000005 G .KLNPT 031222RG
U.C4 = 000012 G XOFF 016014RG .BGLEN= 002000 G .DTINT 020126RG .KLNPW 031334RG
U.DACP= 000036 G XON 016174RG .BM873= 173000 G .D.ASS 011040RG .KLNSW 031342RG
U.DN = 000000 G X.X94 005166R .BRCLK= 005000 .D.CEF 011310RG .KLNTD 031326RG
U.FB = 000003 G X.X95 005170R .BRKCH 031214RG .D.CMT 011730RG .KLNTT 031324RG
U.FO = 000043 G X8X97 040470RG .BTPRM 031276RG .D.DSE 011344RG .KLRLD 031346RG
U.GC = 000031 G X9X96 005244R .BTSCH 031300RG .D.DTE 007524RG .KPAC 031776RG
U.HA = 000020 G ZSTOP = 040000 .BTSTK 005632RG .D.EXT 012104RG .KW11S 025750RG
U.LBH = 000044 G $BTMSK 031226RG .CECLK= 004000 .D.GLI 011144RG .LCRDL= 052000
U.LBN = 000046 G $CDINT= ****** GX .CEFN 040404RG .D.GMP 013624RG .LCRDR= 051000
U.PC = 000030 G $CD11 = 000001 .CEFN3 040410RG .D.GPP 013502RG .LCRM1= 057000
U.PR = 000042 G $DBDTE= 000001 .CKASS 031122RG .D.GTP 011174RG .LCRM2= 056000
U.RB = 000024 G $DHINP 025754RG .CKDEL 040472RG .D.MKT 011626RG .LCRM3= 055000
U.RF = 000022 G $DHOUT 024126RG .CLKBA 034452RG .D.PUT 013232RG .LCRM4= 054000
U.RP = 000016 G $DH11 = 000001 .CLKEA 034656RG .D.QIO 012126RG .LCRM5= 053000
U.SZ = 000050 G $DIV = ****** GX .CLKSW 031242RG .D.RAF 011404RG .LDAR = 077000
U.TF = 000042 G $DMINT 027506RG .CLKSZ= 000007 G .D.REC 013052RG .LDBRL= 043000
U.UI = 000030 G $DORBL 007656RG .CLRMR= 006000 .D.REF 011370RG .LDBRR= 042000
U.UN = 000002 G $DPMYG 010262RG .CLRUN= 010000 .D.REQ 013254RG .LDCK1= 046000
U.VA = 000026 G $DPMYN 010336RG .COMEF 031112RG .D.RES 012010RG .LDCK2= 047000
U.VP = 000032 G $DSW = 000046 G .CONBT= 012000 .D.ROE 013052RG .LDDIS= 045000
VC.BMW= 000002 $DTE = 000001 .CPDV 031666RG .D.ROS 013052RG .LDRJD= 064000
VC.IFW= 000001 $DTEOF 007660RG .CPFN 031664RG .D.SAR 012614RG .LDRJV= 063000
V.FCB 000006 $DTEON 007672RG .CRHD 031674RG .D.SEF 011326RG .LDRM1= 060000
V.FFNU 000055 $DXINT= ****** GX .CRPB 031672RG .D.SEN 012600RG .LDRM2= 061000
V.FIEX 000025 $EXHSG 010344RG .CRPFL= ****** GX .D.STV 013220RG .LDRM3= 062000
V.FMAX 000016 $EXHSM 010352RG .CRQZ 031662RG .D.SUS 011776RG .LDSEL= 044000
V.FPRO 000030 $EXMYG 010320RG .CRSB 031676RG .D.WFL 011506RG .LPPFL= ****** GX
V.FRBK 000034 $EXMYN 010330RG .CRSND 031660RG .D.WFO 011432RG .MEMRS= 076000
V.IBLB 000012 $FE = 000001 .CRSZ 031670RG .D.WFS 011430RG .MON 031251RG
V.IBSZ 000013 $F11 = 000001 .CRTSK 031110RG .D.WSE 011614RG .MSIZE 031166RG
V.IFWI 000002 $KLDFC 010540RG .CSHRG= 164000 .EIOJA= 067000 .NOERR 031230RG
V.LABL 000040 $KLDFR 010360R .CTYPT 031220RG .EXEND= ****** GX .NOHLT= 031231RG
V.LGTH 000056 $KLDFW 010516RG .CYLTM= 000074 G .FEACK= ****** GX .PARER 001254R
V.LRUC 000035 $KLDFX 010472RG .DATE 031244RG .FEACT 031306RG .PARRG= 172100 G
V.SBCL 000021 $LPINT= ****** GX .DATE3 031244RG .FEMOD 031344RG .PAT.. 001524RG
V.SBLB 000024 $LP20 = 000001 .DAY 031250RG .FEPPU 005066RG .PCAB1= 150000
V.SBSZ 000022 $PRVDP 010654RG .DBINT= ****** GX .FEST = ****** GX .PCAB2= 151000
V.STAT 000054 $PRVEX 010616RG .DHSPD 027430RG .FREPL 033502RG .PCAB3= 152000
V.STD 000004 $RP04 = 000001 .DHSPF 027400RG .FSRPT= 000050 G .PCAB4= 153000
V.TRCT 000000 $RWDRG 010676RG .DHSPR 027354RG .GFNR = 102000 .PDP11= 000050
SCOMM - COMMON DATA AND SUBRO MACRO M1108 16-DEC-77 11:28 PAGE 183-7
SYMBOL TABLE
.PFAIL 040376RG .REQS 004362RG .SNDLP 031636RG .TPDEA 033476RG ..FSTD 041562RG
.PFASS 031124RG .RPADR 031170RG .SSCLK= 002000 .TTP11 031216RG ..INTX 004146RG
.PFIOW 040400RG .RPSIZ 031174RG .SSM 031254RG .VCLUN 005172RG ..IODN 040534RG
.PFRST 007342RG .RPUNT 031304RG .SSTCO 002642RG .VERNO 031264RG ..IPRI 041346RG
.POLLH 033506RG .RP1PE 037322RG .SSTET 002634RG .WRMBX= 071000 ..NADD 041422RG
.POLND 034412R .RP2PE 037372RG .STAST 005246RG .X.02 012622R ..NDEL 041306RG
.POLST 033512R .RP3PE 037442RG .STDTA 032000RG .YEAR 031246RG ..PICK 041464RG
.PRADR 031352RG .RP4PE 037512RG .STDTB 032006RG ..AKCR= ****** GX ..SACK 043166RG
.PRDCT 031360RG .RP5PE 037562RG .STDTC 032002RG ..AKLP= ****** GX ..SEFN 041200RG
.PRDTE 031356RG .RP6PE 037632RG .STDTZ 032004RG ..ALCB 041642RG ..SPLP= ****** GX
.PRSTA 031354RG .RP7PE 037702RG .STPCL= 000000 ..ALC2 041656RG ..STCH 043112RG
.PUDBA 037202RG .RQESD 005056RG .STRCL= 001000 ..ALOW 042164RG ..STCR= ****** GX
.PUDEA 040262RG .RQSPD 016672RG .STTYD 027650RG ..BLXI 044404RG ..STFC 043252RG
.PWRDN 007006RG .SECLK= 003000 .STTYH 027654RG ..BLXO 044416RG ..STIN 043442RG
.RCRM1= 147000 .SEND 012746RG .SYUIC 031262RG ..DECB 042012RG ..STLP= ****** GX
.RCRM2= 146000 .SERFG 031116RG .TICK 013756RG ..DECN 042006RG ..STPT 042632RG
.RCRM3= 145000 .SETMR= 007000 .TICKS 031240RG ..DEC2 042002RG ..STQ 043630RG
.RCRM4= 144000 .SETRN= 011000 .TKPS 031260RG ..DQRN 040656RG ..STTY 042204RG
.RCSPF= 141000 .SEWFL 031120RG .TKTN 031232RG ..DTP1 044356RG ..VTOL 044500RG
.RDJ14= 134000 .SNDAL 017436RG .TKTN. 002256R ..DTP2 044316RG ..VVLL 044662RG
.RDJ71= 135000 .SNDBF 031640RG .TOD. 002240R ..DTSP 044300RG ..VXFR 044376RG
.RDMAB= 133000 .SNDCN 031650RG .TPDBA 033216RG ..ENB0 041526RG ...GBL= 000000
. ABS. 000056 000
045056 001
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 16850 WORDS ( 66 PAGES)
DYNAMIC MEMORY: 17888 WORDS ( 68 PAGES)
ELAPSED TIME: 00:29:12
,[100,20]RSXTOPS20.LST/-SP/CRF=[100,30]RSXTOPS20.TMP
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ACKNOW 015164 RG 96-6831 #98-6939
AF.PP = 000200 G #14-932
ASXCMN 003274 R 32-1732 32-1737 32-1742 32-1747 #32-1758
ASXDT 003150 R 31-1689 #31-1691
ASXEXT 003464 R 31-1720 #35-1809
ASXE1 003124 RG #31-1676 36-1905 38-2127 151-10670
ASXE2 003140 R 28-1587 #31-1688 33-1770 35-1890
ASXLRF 003310 R 31-1702 #33-1766 34-1779
ASXLRQ 003346 R 31-1698 #34-1776
ASXSCN 003136 R #31-1687 31-1700 31-1706 32-1758 34-1777
ASXTE 003756 R 31-1704 32-1761 34-1804 #36-1901
ASXWR0 003176 R 31-1710 #32-1731
ASXWR1 003206 R 31-1712 #32-1736
ASXWR2 003216 R 31-1714 #32-1741
ASXWR3 003226 R 31-1716 #32-1746
ASXWR4 003236 R 31-1718 #32-1751
A.EF = 000020 G #14-901 32-1731 32-1736 32-1751 32-1753 *34-1776 34-1796 *39-2219 *39-2271
*39-2275 *43-2548 71-4389 71-4390 *80-5392 *96-6797 *114-7934 119-8420 *119-8421
*126-8872 *128-9205 *129-9242 *132-9502 *135-9650 137-9818 146-10431 152-10745 *156-10916
*156-10964 157-11015
A.FB = 000015 G #14-899
A.FM = 000024 G *6-383 #14-903 32-1731 32-1736 32-1741 32-1746 32-1751 32-1753 32-1755
32-1757 *33-1766 34-1778 *39-2256 *72-4456 73-4522 *73-4548 *79-5041 156-10960
A.HA = 000012 G #14-897 34-1781 36-1918 36-1933 41-2391 91-6396 182-12426
A.PD = 000006 G 6-386 #14-895 33-1769 35-1815 91-6395 92-6516
A.PF = 000034 G #14-907 *39-2219 *88-6132 88-6135
A.RP = 000010 G #14-896 80-5261 91-6405
A.SP = 000004 G #14-893 *34-1801 *36-1931 36-1932 42-2445
A.SZ = 000036 G #14-909
A.TD = 000016 G 6-372 #14-900 28-1351 28-1519 34-1802 35-1814 78-4951 80-5321 82-5626
82-5652 86-5880 87-6043 91-6394
A.TS = 000014 G *6-384 #14-898 31-1688 *32-1760 *33-1767 *34-1780 *72-4457 *73-4535 *73-4547
*77-4893 78-4954 *78-4957 *79-5040 82-5654 *82-5656
BAUDTB 026174 R 127-9132 #127-9152
BC.AKA = 000025 G #95-6772 120-8472
BC.BTP = 000024 G #95-6771 103-7318
BC.DES = 000010 G #95-6759
BC.EDR = 000027 G #95-6774
BC.FNM = 000034 G #95-6779 114-7967
BC.FOD = 000013 G #95-6762
BC.HAD = 000002 G #95-6753 103-7299
BC.HDS = 000007 G #95-6758 137-9810
BC.HTD = 000012 G #95-6761 104-7329 120-8479
BC.LDR = 000030 G #95-6775
BC.LDV = 000031 G #95-6776
BC.LNC = 000004 G #95-6755 170-11704
BC.NSA = 000032 G #95-6777
BC.RDS = 000005 G #95-6756
BC.RQD = 000001 G #95-6752
BC.RTD = 000011 G #95-6760
BC.SAK = 000017 G #95-6766 105-7429 171-11733
BC.SDS = 000006 G #95-6757
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
BC.SKP = 000033 G #95-6778 103-7311
BC.SLA = 000023 G #95-6770 120-8468
BC.SNA = 000014 G #95-6763
BC.SPT = 000026 G #95-6773
BC.STR = 000003 G #95-6754
BC.STS = 000022 G #95-6769
BC.TDU = 000015 G #95-6764 133-9580
BC.THU = 000016 G #95-6765 134-9616 135-9658
BC.XOF = 000020 G #95-6767
BC.XON = 000021 G #95-6768
BITTBL 042572 RG 102-7232 102-7244 125-8760 152-10739 157-11016 168-11559 #168-11562
BIT0 = 000001 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8334 #139-9954
BIT1 = 000002 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8333 #139-9954
BIT10 = 002000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8327 #139-9954
BIT11 = 004000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8326 #139-9954
BIT12 = 010000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8325 #139-9954
BIT13 = 020000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8324 118-8339
118-8347 #139-9954
BIT14 = 040000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 99-6961 99-7025 #118-8248
118-8323 #139-9954
BIT15 = 100000 #4-224 #9-674 #42-2523 43-2548 #43-2784 #46-2985 #94-6729 #118-8248 118-8322
132-9501 #139-9954
BIT2 = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8332 #139-9954
BIT3 = 000010 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8331 #139-9954
BIT4 = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8335 #139-9954
BIT5 = 000040 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8330 #139-9954
BIT6 = 000100 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8329 118-8343
#139-9954
BIT7 = 000200 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8328 #139-9954
BIT8 = 000400 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8335 #139-9954
BIT9 = 001000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8335 #139-9954
BLXCOM 044424 R 181-12329 #181-12334
BLXPLP 044454 R 181-12356 #181-12367 181-12368
BLXRTN 044464 R #181-12376 181-12382
BPARER = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954 175-12010
BPTTRP 001246 R 6-404 #6-425
BTPHD 005352 RG #43-2543 142-10283 143-10333 144-10364
BTPRO 005652 R 43-2544 43-2544 #43-2546 43-2649 43-2736
BYCNT 022722 R #118-8368 *122-8554 122-8588 126-8855 *126-8857
CDD = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
CDRTPD 033336 R 142-10278 143-10310 #144-10361
CDTSK 032756 RG 143-10305 #143-10310
CESCHK 011014 R 57-3512 57-3512 57-3537 57-3537 57-3544 57-3544 #63-3742
CHNPNT = 000001 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
CHTBL 026162 R 127-9123 #127-9140
CH.FOR = 000100 G #18-1072
CH.LAB = 000001 G #18-1076
CH.NAT = 000020 G #18-1074
CH.NDC = 000010 G #18-1075
CH.OFF = 000200 G #18-1071
CH.UNL = 000040 G #18-1073
CMEDP 010270 R #51-3302 52-3344
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CMNABO 001100 RG 6-374 6-377 #6-381 28-1474
CMNABT 002656 R 28-1358 #28-1473 28-1525
CMSG 001510 R 7-454 #7-507
CNT 022720 R #118-8366 *122-8555 130-9365
CNUPE = 000002 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
COMBSE 031370 RG *50-3199 50-3247 #141-10096
COMTRP 001000 R 5-249 5-250 5-251 5-252 #6-358
COPBUF 020054 RG 27-1300 27-1300 110-7626 110-7626 #111-7730 168-11470 168-11470
CRADR 022724 R #118-8370 *122-8556 122-8575 122-8587 122-8589 126-8859 *126-8861 *126-8870 *126-9049
*126-9061
CRHD = ****** GX 142-10278 143-10310 144-10361
CRJT = 001000 #118-8275 122-8590 126-8972 126-8992 126-9004
CROBAR 007132 RG *44-2835 #44-2838 *45-2851
CRSTB 001160 R 6-398 #6-401
CRSTK = ****** GX 143-10310
CRTBL = ****** GX 148-10473
CRTNXA 004204 R 38-2084 #38-2093
CRTNX1 004176 R 38-2087 #38-2090
CRTNX2 004204 R #38-2099
CRTNX3 004206 R 38-2091 #38-2114 38-2145
CRTY = 002000 #118-8274 122-8586 122-8604 122-8610 126-8866
CR$BF1 = 021214 RG #114-7975
CR$BO2 = 021632 RG #115-8083
CR$B03 = 043740 RG #174-11926
CR$CBR = 007164 RG #45-2853
CR$DTB = 020734 RG #114-7908
CR$DTD = 001234 RG #6-420
CR$DTF = 020266 RG #113-7814
CR$ETE = 020662 RG #114-7892
CR$FTA = 001136 RG #6-388
CR$IAS = 004356 RG #38-2157
CR$ILF = 014702 RG #96-6852
CR$ILQ = 022026 RG #115-8123
CR$LRF = 003342 RG #33-1771
CR$MPE = 001300 RG #6-437
CR$PT1 = 021146 RG #114-7963
CR$PT2 = 021172 RG #114-7969
CR$PT3 = 021570 RG #115-8072
CR$PT4 = 022156 RG #115-8144
CR$RES = 001242 RG #6-423
CR$TBT = 001250 RG #6-426
CR$TET = 020242 RG #113-7806
CR$T04 = 001212 RG #6-413
CR$UIE = 021520 RG #115-8058
CSDONE 004126 R 36-1902 #36-1992
CS.EXP = 177670 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
CTLO = 000040 #118-8277 122-8561 122-8602 126-9009 130-9282 130-9283
CTRLC 022730 R #118-8377 130-9392
CTRLU 022734 R #118-8379 130-9363
CTRLZ 022740 R #118-8381 130-9383
CTYPTR 031220 RG 103-7300 122-8539 122-8557 126-8824 126-8842 128-9195 130-9273 #140-10015
CTYSTS 022660 R #118-8362 122-8558 126-8843 *126-9027 126-9032 126-9048 130-9274
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CURBF = 000006 #118-8261 *122-8587 130-9327 *130-9328 *130-9331 130-9343 *130-9345 130-9346 *130-9366
CYCLS = 000002 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
C.AS = 000002 G #15-946
C.AT = 000000 G #15-945 76-4804
C.FA = 000012 G #15-950
C.FM = 000010 G #15-949
C.RS = 000006 G #15-948
C.SD = 000004 G #15-947
C.SZ = 000014 G #15-952 75-4709 76-4815 93-6653 #146-10424 146-10432 153-10773
C1 = 140010 #150-10569 150-10620 150-10624 150-10634
C1DB = 140110 #150-10571 150-10574 150-10579 150-10583 150-10587 150-10591 150-10595 150-10599 150-10603
DAG1 = 000030 #2-117 43-2573 43-2610 *57-3516 57-3518 *57-3553 *60-3660 60-3663 *63-3743
63-3744 *175-11985 175-11989 *175-12019 175-12022
DAG2 = 000032 #2-116 *45-2859 *63-3746
DAG3 = 000036 #2-114 *113-7858 *116-8170
DATE = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DBLRNG 021364 R 112-7777 #115-8029
DBLSTS 021456 R 115-8040 #115-8047
DBLXIT 021452 R #115-8044 115-8055
DCOMST = 000001 #4-224 #9-674 #42-2523 #43-2784 #46-2985 57-3514 57-3518 57-3539 57-3546
#94-6729 #118-8248 #139-9954
DEAND1 016170 R 96-6837 98-6934 100-7069 100-7097 #101-7178 104-7340
DEAND2 016164 R 98-6932 99-7031 100-7064 101-7147 101-7151 101-7165 101-7167 101-7171 101-7174
#101-7176 102-7208 102-7210 102-7246 102-7250 102-7264
DEAND3 015160 R 96-6860 #98-6933 98-6942 99-6953 99-6992 100-7042
DEANOD 017304 R 97-6883 101-7179 105-7374 105-7424 106-7475 107-7490 #107-7502 108-7523 109-7545
DEP = 010000 #4-224 7-477 #9-674 #42-2523 43-2592 43-2630 43-2636 43-2678 43-2728
#43-2784 #46-2985 51-3301 57-3554 58-3592 59-3628 #94-6729 113-7854 114-7880
115-8126 116-8177 #118-8248 #139-9954 176-12054
DEPOF 031374 RG *50-3201 50-3242 52-3342 #141-10098
DEX = 000400 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DEXCOM 002760 R #28-1531
DEXDON = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954 175-11981
DEXST 031204 RG *57-3517 *57-3520 #140-10006 *175-11979 *175-11983
DEXTM1 031212 RG 50-3224 #140-10010
DEXTM2 031210 RG 50-3194 50-3204 50-3220 50-3254 #140-10009
DEXTM3 031206 RG 50-3190 #140-10008
DEXWD1 = 174406 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DEXWD2 = 174404 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DEXWD3 = 174402 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DE.01 = 000377 G #28-1488 39-2294 75-4706 80-5293 90-6255 90-6262
DE.02 = 000376 G #28-1489 51-3310 57-3522 58-3597 61-3701 78-4943 82-5591 86-5905 92-6524
DE.03 = 000375 G #28-1490 40-2341 51-3312
DE.04 = 000374 G #28-1491 83-5713
DE.05 = 000373 G #28-1492 65-3983 80-5226
DE.06 = 000372 G #28-1493
DE.07 = 000371 G #28-1494 39-2292 78-4963
DE.08 = 000370 G #28-1495 78-4961 86-5955 88-6137
DE.09 = 000367 G #28-1496
DE.10 = 000366 G #28-1497
DE.11 = 000365 G #28-1498
DE.80 = 000260 G #28-1499
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DE.81 = 000257 G #28-1500
DE.90 = 000246 G #28-1501 64-3888
DE.91 = 000245 G #28-1502
DE.92 = 000244 G #28-1503 64-3864
DE.93 = 000243 G #28-1504
DE.94 = 000242 G #28-1505 40-2350
DE.95 = 000241 G #28-1506 40-2351
DE.96 = 000240 G #28-1507 41-2418
DE.97 = 000237 G #28-1508 71-4396 75-4678 76-4813 152-10749
DE.98 = 000236 G #28-1509 73-4551
DE.99 = 000235 G 28-1415 #28-1510 48-3112
DFTBL 014612 RG 96-6814 #96-6816 96-6845
DFTSZ = 000066 96-6811 #96-6845
DFUNC = 000200 #4-224 #9-674 #42-2523 #43-2784 #46-2985 57-3514 57-3539 57-3546 #94-6729
#118-8248 #139-9954
DF.DMG = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8404 #139-9954
DF.DMN = 000007 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.DOR = 000001 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.EHG = 000010 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8402 #139-9954
DF.EHM = 000011 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.EMG = 000005 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.EMN = 000006 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.KLR = 000012 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.KLW = 000013 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.KLX = 000014 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.OFF = 000002 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.ON = 000003 #4-224 #9-674 #42-2523 43-2723 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.PDP = 000016 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DF.PEX = 000015 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DHBUF = 000020 #118-8267 *126-9027 126-9032
DHCNT = 000200 G 137-9770 148-10467 #149-10548
DHSAV 027232 R 123-8629 127-9087 #131-9432
DHSTSV 022656 R #118-8360 *127-9090 127-9099 127-9115
DHTBL 035176 RG 98-6905 99-7010 100-7052 101-7170 102-7229 110-7632 126-8820 126-8884 126-9025
127-9088 131-9443 132-9517 137-9769 137-9872 148-10467 149-10499 149-10500 149-10501
149-10502 149-10503 149-10504 149-10505 149-10506 149-10507 #149-10523 149-10548 168-11541
169-11617 169-11641
DHTMP 022654 R #118-8358 *123-8628 *127-9086 131-9439
DH.FER = 020000 G #118-8347
DIAG1 = 174430 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DIAG2 = 174432 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DIAG3 = 174436 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DIALUP 014700 RG 96-6829 #96-6850
DIKL10 = 000010 #4-224 #9-674 #42-2523 #43-2784 #46-2985 57-3514 57-3546 57-3553 #94-6729
#118-8248 #139-9954
DIRDPT 002532 R 28-1416 #28-1418 28-1456
DIRMAX = 000102 28-1413 #28-1456
DIROK 002526 R 28-1414 #28-1416
DIV216 041262 RG 72-4444 72-4444 152-10736 152-10736 157-11007 157-11007 #158-11036
DLCNT = 000005 G 98-6909 99-6991 137-9877 148-10465 #149-10521
DLECNT = 000004 G 136-9701 #149-10522
DLETBL 035136 RG 136-9700 140-10017 #149-10516 149-10522
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DLINT 026414 RG 128-9173 #129-9231
DLSTOP 015650 R 100-7049 100-7049 100-7068 100-7068 #100-7071
DLTBL 035126 RG 110-7613 133-9583 136-9688 140-10015 148-10465 #149-10515 149-10521
DLTMP 022652 R #118-8356 *126-8770 *128-9170 131-9456
DLYCNT = 174400 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 96-6792 #118-8248 #139-9954
DL.CAR = 010000 G #118-8325 129-9247 136-9714
DL.CTS = 020000 G #118-8324
DL.DEN = 000040 G #118-8330 129-9236 135-9663 136-9706
DL.DSC = 100000 G #118-8322
DL.DTR = 000002 G #118-8333 129-9236 129-9259 136-9716 136-9721
DL.FER = 020000 G #118-8339 128-9183
DL.RAC = 004000 G #118-8326
DL.RDE = 000001 G #118-8334
DL.RDN = 000200 G #118-8328
DL.REN = 000100 G 100-7074 #118-8329 129-9250 135-9663 136-9693 136-9710
DL.RNG = 040000 G #118-8323 129-9234
DL.RTS = 000004 G #118-8332 129-9236 136-9716
DL.SRD = 002000 G #118-8327
DL.STD = 000010 G #118-8331
DL.UNA = 001420 G #118-8335
DL.XEN = 000100 G 102-7256 #118-8343 126-8793 126-9019 126-9040 136-9695 136-9707 168-11545
DMTBL 035062 RG 98-6911 99-7009 133-9548 133-9554 137-9768 137-9839 #149-10499
DMTMP 022650 R #118-8354 *133-9542 133-9544
DMYN = 000004 G *50-3241 *50-3242 54-3407 113-7853 114-7879 115-8131 116-8175 #141-10114
DON10C = 040000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 113-7818 #118-8248 #139-9954
DON10S = 100000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DON11C = 000100 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 114-7912 #118-8248 #139-9954
DON11S = 000200 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DPB.CK = ****** 64-3846 65-3972
DPCMN 010264 R #51-3301 54-3408
DPKAL 022776 R #118-8403 121-8522
DPMSEP 010316 R 51-3303 #51-3312
DPSEC 010314 R 51-3307 #51-3310
DPS4 = 040000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DQNXT 023556 R #122-8531 122-8573 122-8580
DRESET = 000100 #4-224 #9-674 #42-2523 #43-2784 45-2859 #46-2985 63-3746 #94-6729 #118-8248
#139-9954
DRXCOM 002774 R 28-1530 #28-1536
DRXRR 003006 R 28-1533 #28-1538
DR.DTE = 000011 #4-224 #9-674 #42-2523 43-2723 #43-2784 #46-2985 #94-6729 #118-8248 118-8402
118-8404 #139-9954
DR.00 = 000000 G #28-1481 68-4244 69-4294 70-4353
DR.01 = 000001 G #28-1482 39-2291 39-2293 49-3154 51-3308 57-3533 58-3595 60-3664 64-3890
65-3992 66-4100 71-4394 72-4459 73-4537 73-4549 74-4585 75-4720 76-4802
78-4960 79-5042 80-5398 81-5513 86-5939 87-6045 88-6133 91-6421
DR.02 = 000002 G #28-1483 67-4194 77-4895 82-5658
DR.03 = 000003 G #28-1484 82-5660
DSEND = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 57-3546 57-3550 57-3553 #94-6729
#118-8248 #139-9954
DS.99 002524 R #28-1415 28-1432 28-1448 28-1449 28-1453
DS04 = 004000 #4-224 #9-674 #42-2523 43-2573 43-2610 #43-2784 #46-2985 63-3744 #94-6729
#118-8248 #139-9954 175-11989
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DS05 = 002000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DS06 = 001000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954 175-12022
DTEADR 031702 RG 113-7823 *113-7865 #141-10141
DTECMD = 000451 #4-224 #9-674 #42-2523 43-2580 43-2656 #43-2784 #46-2985 #94-6729 #118-8248
#139-9954
DTEDSP 007620 R 47-3040 #47-3045
DTEFLG = 000444 #4-224 #9-674 #42-2523 43-2593 43-2729 #43-2784 #46-2985 #94-6729 #118-8248
#139-9954
DTEF11 = 000450 #4-224 #9-674 #42-2523 43-2631 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DTEHD 014174 RG #96-6788 142-10238 143-10294 144-10348
DTEMSK 031700 RG 113-7823 *113-7864 #141-10140
DTEMTD = 000455 #4-224 #9-674 #42-2523 43-2679 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DTEMTI = 000456 #4-224 #9-674 #42-2523 43-2620 43-2637 #43-2784 #46-2985 #94-6729 #118-8248
#139-9954
DTENM = 000000 #141-10110
DTESP 014454 RG 96-6789 #96-6789 143-10294
DTETPD 033236 RG 142-10238 #144-10348
DTETSK 032556 RG *114-7934 143-10290 #143-10294 143-10296
DTEXIT 020216 R 112-7774 #112-7789 115-8045
DTPXIT 044372 R 177-12097 178-12126 #179-12147
DTTSK 033016 RG 143-10310 #143-10318 143-10322
DUPE = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DURE = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DVCH = 110220 #150-10565 150-10574 150-10579 150-10583 150-10587 150-10591 150-10595 150-10599 150-10603
150-10620 150-10624 150-10634
DV.EOF = 000040 G #21-1128
DV.F11 = 000400 G #21-1131
DV.HNG = 001000 G #21-1132 111-7747
DV.IOP = 000020 G #21-1127
DV.LIN = 002000 G #21-1133 137-9887
DV.LOG = 000100 G #21-1129 111-7747 137-9887
DV.NXD = 000001 G #21-1123
DV.OFL = 000002 G #21-1124
DV.OIR = 000004 G #21-1125
DV.SCN = 000010 G #21-1126
DV.URE = 000200 G #21-1130
DWNMS 002306 R 27-1313 #27-1316 27-1320
DWNMSG 002274 R 27-1299 #27-1313
DWNMSZ = 000043 27-1313 27-1313 #27-1320
DXHD = ****** GX 142-10249 143-10328 144-10371
DXSTK = ****** GX 143-10328
DXTPD 033376 R 142-10249 #144-10371
DXTSK 033056 RG 143-10322 #143-10328 143-10333 150-10620 150-10624
DXWD1 = 000006 #2-123 *43-2629 57-3526 *57-3549 *113-7842 *113-7859 *114-7881 115-8036 *115-8127
*116-8161 *116-8181 176-12062 *176-12067
DXWD2 = 000004 #2-124 43-2624 *43-2628 57-3525 *57-3548 *113-7843 *113-7860 *114-7882 115-8037
*115-8128 *116-8162 *116-8182 176-12061 *176-12066
DXWD3 = 000002 #2-125 43-2565 43-2585 *43-2591 *43-2627 *43-2635 43-2663 43-2665 43-2673
*43-2677 43-2691 *43-2727 57-3524 *57-3547 *113-7846 *113-7861 *114-7883 115-8038
115-8078 115-8093 *115-8129 115-8141 *116-8168 *116-8183 176-12060 *176-12065
DXWRD1 = 002000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
DX0PEN 037752 RG 142-10255 #150-10620 150-10620 150-10639
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DX1PEN 040022 RG #150-10624 150-10624
D.AT = 000000 G #16-968
D.CCDR = 000006 G #148-10472
D.CCLK = 000007 G 104-7328 120-8481 #148-10474
D.CCPU = 000200 G 103-7313 #148-10488
D.CCTY = 000001 G 103-7298 #148-10462
D.CDH1 = 000003 G 137-9808 #148-10466
D.CDLS = 000004 G 126-8810 133-9587 #148-10468 170-11700
D.CDL1 = 000002 G #148-10464
D.CKLE = 000201 G #148-10489
D.CKLN = 000210 G #148-10490
D.CLPT = 000005 G 120-8466 #148-10470
D.FA = 000004 G #16-970
D.FEPD = 000010 G #148-10476
D.FM = 000002 G #16-969
D.SZ = 000005 G #16-972 #147-10444
D1011 = 000040 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
EBSEL = 000100 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
EBUSPC = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
EBUSPS = 000004 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
ECHOB 025262 R 126-8862 126-8867 126-8909 126-8918 #126-8930 130-9407
EDONES = 040000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
EDRMT 014706 RG 96-6839 #96-6858
EF.BOV = 000040 G #10-758
EF.CLK = 000002 G #10-750
EF.CRI = 002000 G #10-790 43-2559 43-2689 44-2813
EF.CTC = 100000 G #10-780 128-9200
EF.DTE = 000001 G #10-748
EF.IOD = 000020 G #10-756 118-8400 119-8443 126-8872
EF.NIR = 000010 G #10-754 39-2271 80-5392 118-8400 156-10916 156-10964
EF.PFR = 004000 G 6-418 #10-788 43-2689 44-2813 46-2912 115-8054
EF.PR1 = 040000 G #10-782 27-1271 51-3302 121-8495 127-9104 134-9603 135-9655 137-9815 170-11695
177-12096 178-12119 179-12145
EF.PR2 = 020000 G #10-784 128-9212 177-12096 178-12124
EF.RKH = 002000 G #10-768 118-8400 119-8431 135-9650
EF.RKP = 010000 G #10-786 109-7538 109-7542
EF.RKR = 001000 G #10-766 118-8400 119-8427 129-9242
EF.RQM = 000200 G #10-762 118-8400 119-8423 128-9205
EF.RSS = 004000 G #10-770 118-8400 119-8435 132-9502
EF.SND = 100000 G #10-775
EF.TED = 000100 #95-6740 95-6784 114-7934
EF.TMO = 000100 G #10-760 118-8400 120-8451 146-10430
EF.TTY = 000004 G #10-752
EF.WFM = 000400 G #10-764
EHSG = 000006 G *50-3248 55-3441 #141-10116
EHSM = 000010 G *50-3262 56-3473 115-8032 115-8136 #141-10118
EIS = ****** 181-12357 181-12362
EMGSTK 040370 RG 6-363 7-452 #151-10673
EMTSTK 031200 RG *6-378 *28-1348 *28-1367 28-1470 28-1473 *28-1517 28-1531 28-1536 28-1558
#140-10004
EMTTRP 002352 RG 5-254 #28-1343
EMYN = 000002 G *50-3239 53-3375 #141-10112
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
EM.DRO = 000020 G #28-1339 28-1369 28-1401 *28-1532 *28-1537 28-1557 *79-5036
EOLS = 000400 #118-8276 122-8586 122-8604 126-8896 130-9332 130-9394 130-9403
EPTR = 000000 #4-224 #9-674 #42-2523 43-2579 43-2592 43-2619 43-2630 43-2636 43-2655
43-2678 43-2728 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
EQSZ 031746 RG 114-7936 *114-7940 *114-7993 *115-8141 115-8142 #141-10166
ERR10C = 010000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
ERR10S = 020000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
ERR11C = 000001 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
ERR11S = 000002 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
EV.AS = 000002 G #25-1241 38-2130 38-2146 42-2460
EV.PF = 000200 G #25-1242 38-2123 38-2153 45-2875 151-10668
EV.SE = 000001 G #25-1238 31-1676 36-1903 38-2123 39-2272 42-2439 69-4291 74-4584 78-4959
80-5393 83-5732 93-6641 113-7824 114-7935 126-8873 128-9201 128-9206 129-9243
132-9503 135-9651 155-10861 157-11017 178-12125 179-12146
EXCMN 010324 R #52-3343 53-3376 55-3442 56-3474
EXKAL 022764 R #118-8401 121-8504
E.BOV = 000006 G #10-759
E.CLK = 000002 G #10-751
E.DTE = 000001 G #10-749
E.DV = 000006 G #95-6747 105-7382 106-7447 108-7520
E.FCRI = 000073 G #10-791
E.FCTC = 000100 G #10-781
E.FN = 000004 G #95-6746 96-6808 106-7444
E.FP = 000000 G #95-6744
E.FPFR = 000074 G #10-789
E.FPR1 = 000077 G #10-783
E.FPR2 = 000076 G #10-785 43-2547 43-2722
E.FRKP = 000075 G #10-787
E.FSND = 000040 G #10-776
E.FW = 000010 G #95-6748 96-6859 *97-6873 97-6875 98-6908 99-6952 99-6961 99-6967 99-6972
99-6982 99-6990 *99-6994 99-7003 99-7025 *100-7040 100-7057 100-7075 103-7294
105-7383 106-7445 106-7448 107-7488 109-7532
E.IOD = 000005 G #10-757
E.LS = 000002 G #95-6745
E.NIR = 000004 G #10-755
E.OPSZ = 000140 G #95-6736 174-11920
E.RKH = 000013 G #10-769
E.RKR = 000012 G #10-767
E.RQM = 000010 G #10-763
E.RSS = 000014 G #10-771
E.TMO = 000007 G #10-761
E.TTY = 000003 G #10-753
E.WFM = 000011 G #10-765
FDVNM 016772 R 105-7373 105-7373 #105-7387 106-7467 106-7467
FDVNMM 016756 R 97-6874 97-6874 98-6892 98-6892 98-6940 98-6940 99-6951 99-6951 99-6995
99-6995 100-7041 100-7041 101-7143 101-7143 102-7205 102-7205 #105-7381 108-7514
108-7514
FEHD = ****** GX 142-10241 143-10322 144-10351
FESTK = ****** GX 143-10322
FETBL = ****** GX 148-10477
FETPD 033256 R 142-10241 #144-10351
FETSK 033016 RG *43-2548 #143-10322 143-10328 150-10634
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
FE0PUD 040142 RG #150-10634 150-10634
FILTB 022744 R #118-8386 126-8967
FLBT = 000001 #118-8280 126-8995
FLBYT = 000011 #118-8263 126-8925 *126-8951 *126-8997
FLCT = 000017 #118-8279 122-8604 126-8844
FLDVOT 017314 RG 96-6827 #108-7513
FNBYT = 000005 #118-8260 *130-9374 *130-9381 *130-9390 *130-9401
FNDCPU 010730 R 47-3038 47-3038 #61-3689
FNDDTE 010762 R 57-3510 57-3510 57-3535 57-3535 57-3542 57-3542 58-3587 58-3587 59-3624
59-3624 60-3655 60-3655 #62-3720
FNDSPD 015726 R 99-6968 99-6968 99-6973 99-6973 #100-7087
FORPRO = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 50-3210 50-3243 50-3249 #94-6729
113-7852 114-7878 115-8031 115-8130 115-8135 116-8176 #118-8248 #139-9954
FW = 000300 #150-10567 150-10574 150-10579 150-10583 150-10587 150-10591 150-10595 150-10599 150-10603
150-10620 150-10624
F11TPD 033436 RG 6-386 33-1769 142-10255 #144-10379
GENTPD 033456 R #144-10382
HANGUP 014756 RG 96-6830 #98-6891
HDR64 = ****** 34-1782 36-1919 36-1934 41-2392 92-6538 156-10952
HIBYTE = 177400 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
HICTS 016500 RG 96-6817 #103-7292
HIDVST 016710 RG 96-6823 #105-7357
HORPS = 000016 #118-8266 126-8947 126-8963 *126-8974 *126-9005
H.CSP = 000000 G #12-825
H.DSW = 000046 G #12-827 36-1925 36-1940
H.FCP = 000050 G #12-828
H.FOR = 000052 G #12-829
H.HSZ = 000002 G #12-826
H.IPC = 000076 G #12-832 34-1789
H.IPS = 000074 G #12-831 34-1790
H.ISP = 000100 G #12-833 34-1797
H.LUT = 000130 G #12-835 34-1791 34-1794 41-2398 91-6402 182-12427
H.OVL = 000054 G #12-830
H.TKVA = 000106 G #12-834 34-1788 91-6399
IE.ABO = 177761 126-9058
IFLOP = 100000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 114-7942 114-7995 115-8102
#118-8248 #139-9954
IGNO 035060 R 148-10463 148-10463 148-10465 148-10465 148-10467 148-10467 148-10469 148-10469 148-10471
148-10473 148-10473 148-10477 #148-10483
ILBLT 044472 R #181-12380
INDTTF 020406 R 113-7821 #113-7840
INIAN 043712 RG 151-10672 #174-11920
INITLM 040262 RG #151-10653 183-12559
INPPT 025202 R 126-8851 #126-8895
INPT0 025214 R 126-8897 #126-8900 126-9064 126-9064 130-9286 130-9286
INPT1 025660 R 126-8898 #126-9047
INSHD = ****** GX 142-10270 144-10345
INSTAL = ****** GX 142-10270
INSTK = ****** GX 142-10270
INSTPD 033216 RG 142-10270 #144-10345
INTLPS 020142 R #112-7760 113-7835 113-7838 114-7887 114-7955
INTROF = 000010 #4-224 #9-674 #42-2523 43-2551 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
177-12095 178-12123
INTRON = 000040 #4-224 #9-674 #42-2523 43-2732 #43-2784 #46-2985 50-3238 #94-6729 #118-8248
#139-9954
INTSON = 000001 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
INT10S = 000400 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
INT11C = 002000 #4-224 #9-674 #42-2523 43-2584 43-2658 43-2667 #43-2784 #46-2985 #94-6729
115-8112 115-8134 #118-8248 #139-9954
INT11S = 004000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954 178-12123
IOTTRP 001304 R 6-405 #7-448
IO.ATT = 001400 156-10939
IO.DET = 002000 156-10941
IO.LOV = 001010 156-10943
IO.LTK = 000050 39-2242 156-10949
IO.RLB = 001000 80-5362 122-8562 156-10948 182-12434
IO.RVB = 010400 80-5360 80-5368 182-12435
IO.STC = 002500 80-5350
IO.WLB = 000400 43-2739 80-5359 122-8559 182-12437
IO.WVB = 011000 80-5357 80-5370
IS.SUC = 000001 122-8564 126-8870 126-9052
KBB0 = 177562 G #10-683
KBB1 = 175612 G #10-687
KBS0 = 177560 G #10-682
KBS1 = 175610 G #10-686
KLCST 010406 R #57-3516 57-3551 57-3560
KLNLGL = 000016 G #140-10070
KLNPLN = 000026 G 103-7310 140-10058 140-10061 #140-10074
KLNPTR 031222 RG 98-6899 100-7048 101-7155 102-7224 110-7615 122-8535 126-8806 126-8828 126-8878
126-9015 128-9175 129-9238 129-9251 135-9645 #140-10017 168-11471 169-11606
KLPWRF = 000010 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 115-8052 #118-8248 #139-9954
KL.CFL = 000400 G #17-988
KL.CFM = 000002 G #17-979
KL.LCA = 000100 G #17-984
KL.LRM = 000001 G #17-978
KL.LVB = 000004 G #17-980
KL.SPF = 000040 G #17-983
KL.VBD = 000020 G #17-982
KL.VBN = 000010 G #17-981
KPAL0 031760 RG 118-8402 121-8498 121-8506 121-8516 #141-10171
KPAL1 031770 RG 118-8404 *121-8521 #141-10173
KPAR0 = 172360 #10-697
KPAR1 = 172362 #10-698
KPAR2 = 172364 #10-699
KPAR3 = 172366 #10-700
KPAR4 = 172370 #10-701
KPAR5 = 172372 #10-702
KPAR6 = 172374 #10-703
KPAR7 = 172376 #10-704
KPDR0 = 172300 #10-706
KPDR1 = 172302 #10-707
KPDR2 = 172304 #10-708
KPDR3 = 172306 #10-709
KPDR4 = 172310 #10-710
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
KPDR5 = 172312 #10-711
KPDR6 = 172314 #10-712
KPDR7 = 172316 #10-713
KS.CES = 000002 G #17-996 175-11994
KS.CST = 000020 G #17-999 121-8510
KS.DEX = 000010 G #17-998 175-11991
KS.EPE = 000004 G #17-997 175-11997
KS.PFT = 000100 G #17-1001 45-2871
KS.TRR = 000040 G #17-1000 115-8061
KS.TSP = 000001 G #17-995 175-12000
KT11 = ****** 28-1368 28-1371 28-1464 28-1544 28-1547 28-1556 28-1560 36-1913 36-1952
36-1993 38-2136 41-2387 42-2447 80-5365 90-6283 92-6552 180-12186 180-12191
181-12336 181-12349 181-12352 181-12370
K.LBPW = 000005 G #22-1160
K.LCKL = 177777 G #22-1144
K.LCON = 000004 G #22-1154
K.LDCM = 000001 G #22-1151
K.LDRP = 177777 G #22-1152
K.LDSC = 000003 G #22-1150
K.LLTO = 000006 G #22-1162
K.LRAC = 000001 G #22-1147
K.LRBA = 000007 G #22-1164
K.LRMN = 000003 G #22-1157
K.LRNG = 000002 G #22-1146
K.LROP = 000001 G #22-1155
K.LRPR = 000002 G #22-1156
K.LRRJ = 177777 G #22-1148
K.LSCK = 000001 G #22-1142
K.LSKL = 000001 G #22-1143
K.LUND = 000000 G #22-1140
K.LUSR = 177777 G #22-1158
LDLPR 016710 RG 96-6840 #105-7358
LDLPV 016710 RG 96-6841 #105-7359
LFBT = 004000 #118-8273 122-8593 126-8907 126-8981 126-8986
LFCT = 074000 #118-8272 122-8604 126-8846 130-9405
LINCHR 017114 RG 96-6820 #106-7441
LKS = 177546 G #10-681 45-2881 45-2883 46-2913
LOAD11 = 000004 #4-224 7-476 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 115-8050 #118-8248
#139-9954
LOWCOD = 000000 RG #5-247 5-248 5-258 5-258 5-258 5-258 5-263 5-263 5-268
5-268 5-272 5-272 5-272 5-272 5-272 5-272 5-272 5-272
5-272 5-272 5-272 5-272 5-272 5-272 5-272 5-276 5-280
5-280 5-284 5-284 5-284 5-284 5-286 5-292 5-293 5-296
5-297 5-303 5-303 5-303 5-303 5-303 5-303 5-303 5-303
5-303 5-303 5-303 5-303 5-303 5-303 5-303 5-306 5-306
5-306 5-306
LPHD = ****** GX 142-10274 143-10305 144-10357
LPSTK = ****** GX 143-10305
LPTBL = ****** GX 148-10471
LPTPD 033316 R 142-10274 #144-10357
LPTSK 032716 RG 143-10299 #143-10305 143-10310 150-10630
LP0PUD 040072 RG #150-10630 150-10630
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
L.DT0 = 000003 G #150-10608
L.DX0 = 000005 G #150-10619
L.DX1 = 000006 G #150-10623
L.RP4 = 000002 G #150-10563
L.TTY = 000001 G #150-10560
MACY11 = ****** 9-666 42-2520 43-2782 46-2983 63-3783 64-3925 65-4028 66-4141 74-4620
75-4756 76-4853 78-4999 79-5079 80-5455 86-5990 87-6080 89-6173 90-6333
91-6457 92-6598 94-6726 118-8245 139-9947
MBUFR = 000014 #118-8265 *130-9354 *130-9410 130-9414
MEBUF = 000012 #118-8264 126-8915 *126-8916 *130-9416
MECNT = 000010 #118-8262 126-8848 *126-8917 *130-9417
MODE = 100000 #118-8271 122-8586 122-8605
MPE11 = 001000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 112-7763 #118-8248 #139-9954
NOSNDA 014716 RG 96-6842 #97-6872
NTKXEN 002064 R #27-1267
NTKXEP 002070 R 26-1265 26-1265 #27-1268 27-1283 27-1291 27-1294
NTKXSP 002044 RG 26-1265 #26-1265 143-10335
NULHD 001564 RG #26-1265 143-10335
NULSTP = 000040 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
NULTSK 033156 RG 143-10291 143-10333 #143-10335
NUPE = 000002 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
N.BP = 000002 G #10-796 160-11100
N.FP = 000000 G #10-795
N.OVPT = 000054 G #10-735
N.PR = 000010 G #10-797 160-11098 160-11098
OKPAL0 031766 RG *121-8498 121-8506 *121-8516 #141-10172
OUTPT 025010 R 122-8615 122-8615 126-8818 #126-8841 126-8954 130-9418
OUTPT3 024730 R 123-8655 123-8655 126-8778 #126-8815
PARLOA 007502 R #46-2932 46-2934
PARSAV 040372 RG 6-431 7-461 #151-10677
PATSIZ = 000040 G #4-228 7-522
PERCLR = 001000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PHYS = 100000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PIDENT = 000000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PKT 022726 R #118-8372 122-8529 *122-8553 122-8572 *122-8579 126-9060
POLMIN = 001400 G #139-9941 165-11299 166-11367
PRB0 = 177566 G 7-487 #10-685
PRB1 = 175616 G 7-485 #10-689
PRI7 = 000340 G #4-224 #9-674 #10-694 28-1577 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248
#139-9954
PRMBLK 012574 R 80-5376 #80-5406
PRMEMN 031372 RG *50-3197 50-3252 #141-10097
PROPNT = 000021 #4-224 #9-674 #42-2523 #43-2784 #46-2985 50-3243 #94-6729 #118-8248 #139-9954
PROTBL 031376 RG 50-3215 61-3689 #141-10123
PRS0 = 177564 G 7-489 #10-684
PRS1 = 175614 G 7-493 #10-688
PRTOFF = 004000 #4-224 #9-674 #42-2523 43-2579 43-2592 43-2619 43-2630 43-2636 43-2655
43-2678 43-2728 #43-2784 #46-2985 58-3591 59-3628 #94-6729 #118-8248 #139-9954
PRVCM 010642 R #58-3593 59-3629
PR0 = 000000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PR1 = 000040 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PR2 = 000100 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 14
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
PR3 = 000140 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PR4 = 000200 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PR5 = 000240 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PR6 = 000300 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PR7 = 000340 G #4-224 #9-674 #10-693 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PS = 177776 G #4-224 6-359 #9-674 #10-680 27-1267 27-1276 27-1276 27-1281 27-1289
36-1907 36-1990 38-2082 42-2442 42-2442 #42-2523 43-2555 43-2558 43-2558
43-2605 43-2607 43-2607 43-2674 43-2676 43-2676 #43-2784 #46-2985 #94-6729
96-6795 96-6795 96-6798 96-6800 96-6800 96-6805 98-6900 98-6900 98-6902
98-6921 98-6921 98-6929 98-6929 99-7021 99-7021 99-7023 99-7029 99-7029
100-7061 100-7061 100-7072 100-7072 100-7084 101-7144 101-7144 101-7177 102-7206
102-7206 107-7493 107-7493 107-7501 109-7535 109-7535 109-7543 110-7596 110-7596
110-7611 110-7624 110-7624 110-7629 110-7637 110-7637 110-7641 110-7656 110-7665
#118-8248 119-8418 119-8418 119-8422 120-8456 120-8456 120-8461 122-8532 122-8532
122-8546 122-8614 122-8614 122-8617 123-8628 126-8770 127-9086 128-9170 133-9542
136-9735 136-9735 136-9737 137-9851 137-9851 137-9857 #139-9954 151-10669 156-10924
156-10924 159-11063 159-11063 159-11067 160-11094 160-11094 161-11126 161-11126 161-11131
162-11165 162-11165 162-11170 163-11217 165-11305 165-11305 165-11323 166-11374 166-11374
166-11400 168-11484 168-11484 168-11504 169-11600 169-11600 169-11611 172-11770 172-11770
172-11783 173-11864 173-11864 173-11872 183-12497 183-12497
PSWW1 = 000005 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 118-8402 118-8404
#139-9954
PSWW10 = 000014 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW11 = 000015 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW12 = 000016 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW13 = 000017 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW2 = 000006 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW3 = 000007 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW4 = 000010 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW5 = 000011 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW6 = 000012 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PSWW7 = 000013 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PULSE = 000020 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
PWRXSP 040402 RG *44-2833 45-2848 #151-10691
PWR.UP 007134 RG 44-2834 #45-2847 45-2849
QNDSV 012566 R *80-5348 *80-5374 *80-5375 #80-5404 80-5406
QPRDTC 014474 RG #96-6791 96-6807
QPRDTE 014502 RG 96-6789 96-6789 #96-6793
QPRDTF 017310 R #107-7504 110-7556
QPRDTL 014536 R #96-6799 105-7378 107-7505
QPROAD 007004 R *43-2673 43-2739 #43-2740
QPROMS 006762 R 43-2675 #43-2738
QPRTPD 033356 R 142-10283 #144-10364
QPRTSK 033116 RG 143-10328 #143-10333 143-10335
QSIZE = 000023 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 113-7852 113-7862 115-8075
115-8135 116-8176 116-8184 #118-8248 #139-9954
Q.AK = 000012 G #20-1106 98-6941 98-6941
Q.DA = 000000 G #20-1101 105-7398 108-7518
Q.DZ = 000016 G #20-1108 105-7402 110-7607 110-7638 137-9840 *137-9876 *137-9878 *137-9879
Q.D1 = 000006 G #19-1095 83-5716
Q.IOAE = 000012 #43-2739
Q.IOEF = 000006 #43-2739
RSXTOPS20 CREATED BY MACRO ON 16-DEC-77 AT 11:44 PAGE 15
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
Q.IOFN = 000002 #43-2739
Q.IOLU = 000004 #43-2739
Q.IOPL = 000014 #43-2739
Q.IOPR = 000007 #43-2739
Q.IOSB = 000010 #43-2739
Q.SI = 000004 G #19-1094 *83-5724 86-5913 86-5923
Q.SP = 000006 G #20-1104 108-7516 108-7516
Q.ST = 000004 G #20-1103 105-7376 105-7376 106-7469 106-7469
Q.SZ = 000020 G #20-1109 #148-10460 148-10481
Q.TS = 000002 G #20-1102 105-7397
RAMIS0 = 010000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RCVKLP 017352 RG 96-6843 #109-7531
RESERV 001240 R 6-403 #6-422
RETTOD 017240 RG 96-6826 #107-7487
RFMAD0 = 100000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RFMAD1 = 040000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RFMAD2 = 020000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RFMAD3 = 010000 #4-224 #9-674 #42-2523 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RF.XR = 000002 G #24-1214
RM = 000010 #4-224 #9-674 #42-2523 43-2571 #43-2784 #46-2985 #94-6729 #118-8248 #139-9954
RMBYT = 000004 #118-8259 *122-8588 *130-9329 *130-9347 *130-9365
RPHD = ****** GX 142-10266 143-10299 144-10375
RPPEN 037252 RG #150-10574 150-10574
RPSTK = ****** GX 143-10299
RPTPD 033416 R 142-10266 #144-10375
RPTSK 032656 RG 143-10296 #143-10299 143-10305 150-10574 150-10579 150-10583 150-10587 150-10591 150-10595
150-10599 150-10603
RQKLD 023044 R #118-8411 119-8433
RQKLR 023026 R #118-8409 119-8429
RQMCR 023010 R #118-8407 119-8425
RQSPB 013466 R 90-6245 90-6266 90-6294 #90-6296
RQSPT 013462 RG 90-6287 #90-6294
RQSTD 013500 R *90-6264 90-6274 #90-6297
RSX$$E = 000012 #2-96 4-178 140-10045
RSX$$F = 000102 #2-101 #2-106 2-108 4-178 4-178 7-525 7-525 138-9892 138-9892
140-10045
RSX$$K = 000126 #2-100 140-10045
RSX$$V = 000012 #2-95 140-10045
RTDVST 016710 RG 96-6821 #105-7361
RTNTOD 016626 RG 96-6825 #104-7327
RUBP = 000020 #118-8278 122-8604 130-9334 130-9336 130-9348 130-9350 130-9364
R$$11D = 000001 #139-9943
R.AS = 000020