Trailing-Edge
-
PDP-10 Archives
-
bb-m403a-bk
-
save.lst
There are 2 other files named save.lst in the archive. Click here to see a list.
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36
TABLE OF CONTENTS
19- 2 TITLE PAGE
20- 76 GENERAL DESCRIPTION OF SAVE FUNCTION
21- 148 MACROS AND PARAMETERS
22- 246 DEVICE REGISTER DEFINITIONS
23- 344 SAVE TASK IMPURE DATA AREA
24- 400 PURE DATA
25- 454 PARSE COMMAND LINE
26- 555 SETUP SAVE FILE
27- 724 DISMOUNT ALL MOUNTED VOLUMES
28- 761 SAVE SYSTEM STATE
29- 868 WRITE SAVE FILE AND BOOT
30- 885 RESTORE SYSTEM STATE
31- 936 RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
32- 1024 RESTORE -- REDIRECT SY0: TO BOOT DEVICE
33- 1077 RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
34- 1135 RESTORE -- CHECK ALL THE DTE-20'S
35- 1200 RESTORE -- RESTART SYSTEM AND TYPE HERALD
36- 1243 RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
37- 1287 RESTORE -- READ HOM BLOCKS ON BOOT DB
38- 1378 RESTORE -- CKECK STATE OF KLINIK LINE
39- 1476 RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
40- 1510 COMMAND PARSER ROUTINES
41- 1594 TYPEOUT ROUTINES
42- 1792 FILE I/O ROUTINES
43- 1865 DRIVER TABLES
44- 1907 RX-11 FLOPPY DISK ROUTINES
45- 1926 RX-11 BOOTSTRAP
46- 2097 RX-11 WRITE ROUTINE
47- 2222 RP04/RP06 DISK ROUTINES
48- 2255 RP04/RP06 BOOTSTRAP
49- 2341 RP04/RP06 WRITE ROUTINE
50- 2399 TC-11 DECTAPE ROUTINES
51- 2415 TC-11 BOOTSTRAP
52- 2532 TC-11 WRITE ROUTINE
53- 2616 CHK11 - ONCE ONLY SYSTEM DIAGNOSTIC 25 NOV 80
56- 2735 CHK11 MACRO'S
59- 2869 DEFINE DEVICE BLOCKS FOR EACH NODE TYPE
60- 2886 DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
66- 3032 CHECK MEMORY - SLIDING BIT PATTERN
69- 3137 CHECK KW11-L HDW
72- 3213 CHECK SYSTEM FOR EXISTENCE OF OPTIONS
74- 3363 BIT SET/BIT CLEAR TEST
75- 3410 PRINT DEVICE ID ROUTINE
76- 3445 ROUTINE TO FIND DEVICE INTERRUPT LEVEL
77- 3478 CHECK INTERRUPTS AND FIND DEVICE LEVEL
80- 3591 HERE ON AN INTERRUPT WHILE IN CHK11
81- 3641 CHECK DH11 HDW
82- 3817 CHECK DL11-E HDW
83- 3840 CHECK DL11-A HDW
84- 3862 CHECK DM11-BB HDW
85- 3903 CHECK DTE20 HARDWARE
86- 3937 CHECK CD11 HARDWARE
87- 3961 CHECK LP11 HARDWARE
88- 3982 CHECK THE LP20 HARDWARE
89- 4010 CHECK RH11 HARDWARE
90- 4023 CHECK TC11 HARDWARE
91- 4052 RX11 CHECKING
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36
TABLE OF CONTENTS
93- 4080 CK11SC ROUTINE
98- 4232 END STATEMENT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 17
DTE20 HARDWARE BITS
701 .LIST MEB
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 19
DTE20 HARDWARE BITS
1 .TITLE SAVE -- MCR FUNCTION 'SAV' FOR RSX-20F
2 .SBTTL TITLE PAGE
3 .IDENT /014430/
4 ;
5 ; COPYRIGHT (C) 1975, 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 ; MODULE: MCR FUNCTION -- SAV
22 ;
23 ; VERSION: VX14-43
24 ;
25 ; AUTHOR: TOM PORCHER
26 ;
27 ; DATE: 10-SEP-75
28 ;
29 ;
30 ; THIS MODULE CONTAINS:
31 ;
32 ; -- GENERAL FUNCTIONAL DESCRIPTION
33 ;
34 ; -- COMMAND PARSER FOR SAV
35 ;
36 ; -- CODE TO SAVE MACHINE STATE
37 ;
38 ; -- CODE TO WRITE BOOTSTRAP AND SAVE FILE
39 ;
40 ; -- CODE TO RESTORE SAVED SYSTEM AND RESTART
41 ;
42 ; -- RX-11 FLOPPY DISK I/O DRIVER ROUTINES
43 ;
44 ; -- RP DISK I/O DRIVER ROUTINES
45 ;
46 ; -- TC-11 DECTAPE I/O DRIVER ROUTINES
47 ;
48 ; MODIFICATIONS:
49 ;
50 ; NO. DATE PROGRAMMER PURPOSE
51 ; --- ---- ---------- -------
52 ; 001 23-MAY-77 R. BELANGER SUPPORT KLINIK ACTIVITY
53 ; ON REBOOT.
54 ; 002 31-MAY-77 R. BELANGER MODIFY TO SAVE ONLY IMAGE
55 ; OF EXEC AND SAVE TASK.
56 ; 003 01-JUN-77 A. PECKHAM MODIFY REFERENCE TO SYSTEM
57 ; VERSION NUMBER.
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 19-1
TITLE PAGE
58 ; 004 01-JUL-77 R. BELANGER ADD KLINIK EVENT LOGGING
59 ; 005 10-NOV-77 R. BELANGER ADD CODE TO RESET DL11'S (SETDL)
60 ; 006 09-MAY-78 R. BELANGER MODIFY "MNTSY" TO MOUNT A
61 ; SECOND FLOPPY
62 ; 007 25-JUN-79 K. LEFEBVRE ADD DEFAULT BIT TO
63 ; .KLIWD INITIALIZATION
64 ; TCO 4.2333 16-JUL-79 R. BELANGER ADD KL10 ENVIRONMENTAL
65 ; REPORTING SUPPORT.
66 ; BRING SAVE VERSION IN LINE WITH
67 ; RSX-20F VERSION.
68 ; TCO 4.1.1091 12-FEB-80 R. BELANGER FIX MISSING DM-11/BB'S
69 ; TCO 4.1.1138 08-APR-80 R. BELANGER RESET KLINIK DL-11E IF
70 ; NOT ASSERTING CARRIER AT START UP
71 ; 008 13-MAR-81 S. LEAPLINE ADD CHK11 REPORTING
72 ; 009 08-JUL=81 S. LEAPLINE ADD WARNING MESSAGE FOR MISSING
73 ; KLINIK
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 20
TITLE PAGE
75
76 .SBTTL GENERAL DESCRIPTION OF SAVE FUNCTION
77 ;
78 ;+
79 ;
80 ; SAV IS INVOKED BY THE COMMAND 'MCR SAV' TO THE
81 ; RSX-20F CONSOLE COMMAND LANGUAGE. IT ACCEPTS ONE LINE FROM THE
82 ; CONSOLE WHICH HAS THE FOLLOWING FORMAT:
83 ;
84 ; [$<SP>] [<ALPHA> <ALPHA> [$<DIGIT>]] [":"] [$<SP>] ["/" <MODIFIER>] <EOL>
85 ;
86 ; WHERE $<THING> MEANS ANY NUMBER OF <THING>S
87 ; [<THING>] MEANS OPTIONAL <THING>
88 ; "<THING>" MEANS LITERALLY <THING>
89 ; <SP> IS SPACE, <EOL> IS ANY END-OF-LINE SEQUENCE,
90 ; <DIGIT> IS ONE OF 0,1,2,3,4,5,6,7
91 ; <ALPHA> IS ONE OF A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
92 ; <MODIFIER> IS ONE OF WB,WS,AB,EX,MO,DM,RH,PI
93 ;
94 ;
95 ; **** NOTE THAT SAVE MUST BE CALLED ONLY WHEN THE SYSTEM IS QUIESCENT,
96 ; **** I.E. WITH NO PENDING INTERRUPTS, AND THE DTE QUEUED PROTOCOL NOT
97 ; **** RUNNING.
98 ;
99 ; SAVE FINDS THE PHYSICAL DISK ADDRESS OF FILE (5,5) WHICH IS
100 ; THE SYSTEM IMAGE FILE. IF THE FILE IS NOT ALLOCATED, IT IS ALLOCATED
101 ; TO THE SIZE OF THE CURRENT SYSTEM (.MSIZE) CONTIGUOUSLY. SAVE
102 ; THEN TURNS OFF THE INTERRUPT SYSTEM (PRIORITY 7) AND SAVES THE
103 ; STATE OF THE SYSTEM HARDWARE (KT-11 IF ANY), THEN COPIES LOW CORE
104 ; (FIRST 256. WORDS) INTO A SAVE AREA. THE PROPER BOOT FOR THE
105 ; REQUESTED DEVICE IS WRITTEN INTO LOW CORE. THE SYSTEM IMAGE FILE IS WRITTEN,
106 ; USING THE DISK ROUTINES IN SAVE INSTEAD OF THE SYSTEM DISK DRIVERS TO PRESERVE
107 ; THE INTEGRITY OF THE SYSTEM IMAGE. IF WRITE BOOT (/WB) WAS SPECIFIED, THE PROPER
108 ; BOOTSTRAP IS ALSO WRITTEN ON BLOCK ZERO OF THE SPECIFIED DEVICE.
109 ; SAVE THEN ENTERS THE RESTORE CODE, AS IF THE SYSTEM HAD JUST BEEN
110 ; LOADED, SPECIFYING NO SYSTEM INITIALIZATION.
111 ;
112 ; WHEN THE BOOTSTRAP ROM IS INITIATED (BY ONE OF THE BUTTONS)
113 ; BLOCK ZERO OF THE DEVICE IS READ INTO THE FIRST 256. WORDS OF MEMORY.
114 ; THIS CODE THEN READS THE REMAINDER OF THE SYSTEM INTO CORE, READING
115 ; OVER ITSELF, SINCE THE BOOTSTRAP IS ALSO CONTAINED IN THE FIRST
116 ; BLOCK OF THE SYSTEM IMAGE. THE BOOTSTRAP THEN TRANSFERS CONTROL
117 ; (IN USER MODE) TO THE RESTORE CODE, CONTINUING EXECUTION OF THE
118 ; SAVE TASK.
119 ;
120 ; THE SYSTEM STATE IS RESTORED BY FIRST RESTORING LOW CORE FROM
121 ; THE SAVE AREA. THE KT-11 REGISTERS ARE RESTORED (IF THEY WERE SAVED).
122 ; A POWER-RECOVERY
123 ; IS SIMULATED BY SETTING EV.PR IN .SERFG, AND INTERRUPTS ARE
124 ; RE-ENABLED, AT PRIORITY ZERO. THE TOPS HOM BLOCKS ARE
125 ; READ FROM RP BOOT UNIT (IF RP BOOT) TO FIND WHERE THE RSX-20F FILE SYSTEM
126 ; IS ON THAT PACK. WARNINGS ARE PRINTED IF THE HOM BLOCKS CANNOT BE READ,
127 ; THE HOM BLOCKS ARE INCONSISTENT, OR THE RSX-20F FILE SYSTEM IS NOT SET UP.
128 ; IF NO HOM BLOCKS ARE FOUND, THE PACK IS ASSUMED TO BE ENTIRELY AN RSX-20F
129 ; FILE SYSTEM.
130 ;
131 ; IF THE PARAMETER FROM THE ROM
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 20-1
GENERAL DESCRIPTION OF SAVE FUNCTION
132 ; INDICATES SYSTEM INITIALIZATION IS NECCESARY (BP.LD1!BP.LD0 = 00 OR 11)
133 ; A REQUEST FOR THE SYSTEM INITIALIZATION TASK SYSINI IS MADE.
134 ; A SYSTEM RESTART MESSAGE IS ALSO PRINTED. THE SAVE TASK THEN EXITS.
135 ;
136 ; AVAILABLE MODIFIERS:
137 ; /WB (OFF) WRITE BOOT
138 ; /WS (ON) WRITE SAVE FILE
139 ; /AB (OFF) SAVE TO FIXED DISK ADDRESS (NEAR END OF VOLUME) (ONLY IF FTABS DEFINED)
140 ; /EX (ON) EXIT AFTER SAVE COMPLETE
141 ; /MO (OFF) MOUNT VOLUME BEFORE CREATING SAVE FILE
142 ; /DM (OFF) DISMOUNT VOLUME AFTER CREATING SAVE FILE
143 ; /RH (ON) READ HOM BLOCKS TO FIND RSX-20F FILE SYSTEM
144 ;
145 ;-
146 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 21
MACROS AND PARAMETERS
148 .SBTTL MACROS AND PARAMETERS
149 ;
150 ; ASSEMBLY CONDITIONS
151 ;
152 .LIST MEB
153 .ENABLE AMA
154 ;
155 ; MISC. .MCALLS
156 ;
157 .MCALL $DEF,QIOSY$,ALUN$S,QIOW$S,GTIM$S,EXIT$S,RQST$S,CLEF$S,MRKT$S,WTSE$S
158 .MCALL CALL,RETURN,PUSH,POP,MTPI,MFPI,MFPS,MTPS,.INH,.ENB,.INH6,.ENB6
159 000000 $DEF
160 000000 QIOSY$
161 ;
162 ; MACROS
163 ;
164 .MACRO TYPE MSG,ARG
165 .PSECT TEXT
166 $$$=.
167 .ASCIZ "MSG"
168 .PSECT
169 PUSH #$$$
170 .IF NB <ARG>
171 CALL TYP'ARG
172 .IFF
173 CALL TYPMSG
174 .ENDC
175 .ENDM TYPE
176 ;
177 .MACRO ERROR MSG
178 TYPE <"<11>"MSG"<5>">
179 .ENDM ERROR
180 ;
181 .MACRO WARN MSG
182 TYPE <"<12>"MSG"<1>">
183 .ENDM WARN
184 ;
185 ;
186 ; PARAMETERS
187 ;
188 ; DEFINE "FTABS= 1" TO ALLOW FOR /AB (ABSOLUTE SAVE)
189 ;
190 ; LUN ASSIGNMENTS
191 ;
192 000001 CTYLUN= 1 ;LUN FOR CTY
193 000002 DSKLUN= 2 ;LUN FOR SAVE DEVICE
194 ;
195 ; EVENT FLAGS
196 ;
197 000001 E.FQIO= 1 ; (1) QIO WAIT REQUEST
198 000001 EF.QIO=BIT0
199 ;
200 000002 E.FTMO= 2 ; +++001 (2) TIME OUT FLAG
201 000002 EF.TMO=BIT1
202 ;
203 000003 E.FLOG= 3 ; +++004 (3) KLINIK LOG DONE FLAG
204 000004 E.FLOG=BIT2 ; +++004
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 21-1
MACROS AND PARAMETERS
205 ;
206 ; BOOTSTRAP ROM PARAMETER BITS
207 ;
208 100000 BP.ERR= BIT15 ;INDEFINITE ERROR RETRY
209 074000 BP.CLN= BIT14!BIT13!BIT12!BIT11 ;CONSOLE LINE NUMBER (WITHIN DH/DL)
210 003400 BP.UNT= BIT10!BIT9!BIT8 ;BOOT UNIT NUMBER OR DH UNIT NUMBER
211 000200 BP.RP4= BIT7 ;LOAD FROM RP04/RP06
212 000170 BP.CSP= BIT6!BIT5!BIT4!BIT3 ;CONSOLE SPEED IF DH, 1 IF DL, 0 IF DEFAULT
213 000004 BP.LD1= BIT2 ;LOAD CONDITION BITS
214 000002 BP.LD0= BIT1 ; . . .
215 ; .EQ. 00 -- AUTO DEADSTART ENTIRE SYSTEM
216 ; .EQ. 01 -- DEADSTART RSX20F ONLY
217 ; .EQ. 10 -- REBOOT RSX20F
218 ; .EQ. 11 -- OPERATOR CONTROLLED (RE)START
219 000001 BP.SWR= BIT0 ;SWITCH REGISTER BUTTON PUSHED
220 ;
221 ; PS BITS
222 ;
223 140000 PS.USR= BIT15!BIT14
224 030000 PS.PUS= BIT13!BIT12
225 004000 PS.REG= BIT11
226 ;
227 ; WORDS IN HOM BLOCK
228 ;
229 000000 HOMNAM= 0 ;SIXBIT/HOM/
230 105755 SXBTHM= 105755 ; TRUNCATED TO 16 BITS
231 000061 HOMFE0= 61 ;ADDRESS OF -11 FILE SYSTEM
232 000062 HOMFE1= 62 ;SIZE OF FILE SYSTEM
233 ;
234 ; EXTEND CONTROL BITS FOR QUEUE I/O FUNCTION IO.EXT
235 ; IN BYTE I.EXTD+1 OF REQUEST
236 ;
237 000001 EX.AC1= BIT0 ;ALLOCATE CONTIGUOUS SPACE
238 000004 EX.FCO= BIT2 ;MAKE FILE CONTIGUOUS
239 000200 EX.ENA= BIT7 ;ENABLE EXTEND
240 ;
241 ; ACCESS CONTROL BITS FOR QUEUE I/O ACCESS FUNCTIONS
242 ; IN BYTE I.ACTL OF REQUEST
243 ;
244 000200 AC.ENA= BIT7 ;ENABLE ACCESS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 22
DEVICE REGISTER DEFINITIONS
246 .SBTTL DEVICE REGISTER DEFINITIONS
247 ;
248 ; RX-11 DEVICE REGISTER DEFINITIONS
249 ;
250 000006 RX.LVL=6
251 177170 RXCS= 177170 ;CONTROL AND STATUS REGISTER
252 100000 RXERR= BIT15 ;ERROR
253 040000 RXINIT= BIT14 ;INITIALIZE RX-11
254 000200 RXTREQ= BIT7 ;TRANSFER REQUEST
255 000040 RXDONE= BIT5 ;TRANSFER DONE
256 000020 RXUNIT= BIT4 ;UNIT SELECT
257 000016 RXFUNC= BIT3!BIT2!BIT1 ;FUNCTION:
258 000000 RXFILL= 0*BIT1 ; FILL SECTOR BUFFER
259 000002 RXEMPT= 1*BIT1 ; EMPTY SECTOR BUFFER
260 000004 RXWRIT= 2*BIT1 ; WRITE SECTOR
261 000006 RXREAD= 3*BIT1 ; READ SECTOR
262 000016 RXRERR= 7*BIT1 ; READ ERROR REGISTER
263 000001 RXGO= BIT0 ;START FUNCTION
264 177172 RXDB= 177172 ;MULTI-PURPOSE DATA BUFFER REGISTER (BYTE)
265 ;
266 ; RP04/RP06 DEVICE REGISTER DEFINITIONS
267 ;
268 176700 RPCS1= 176700 ;CONTROL/STATUS REGISTER 1
269 040000 RPTRE= BIT14 ;TRANSFER ERROR
270 020000 RPMCPE= BIT13 ;MASSBUS CONTROL PARITY ERROR
271 004000 RPDVA= BIT11 ;DRIVE AVAILABLE (TO -11)
272 000200 RPRDY= BIT7 ;READY FOR FUNCTION
273 000076 RPFUNC= BIT5!BIT4!BIT3!BIT2!BIT1 ;FUNCTION:
274 000000 RPNOOP= 0*BIT1 ; NO-OP
275 000020 RPPRST= 10*BIT1 ; READ-IN PRESET
276 000060 RPWRIT= 30*BIT1 ; WRITE DATA
277 000070 RPREAD= 34*BIT1 ; READ DATA
278 000001 RPGO= BIT0 ;START FUNCTION
279 176702 RPWC= 176702 ;WORD COUNT REGISTER
280 176704 RPBA= 176704 ;UNIBUS ADDRESS REGISTER
281 176706 RPDA= 176706 ;TRACK (HIGH BYTE) SECTOR (LOW BYTE)
282 176710 RPCS2= 176710 ;CONTROL/STATUS REGISTER 2
283 000007 RPUNIT= BIT2!BIT1!BIT0 ;UNIT #
284 176712 RPDS= 176712 ;DRIVE STATUS REGISTER
285 100000 RPATA= BIT15 ;DRIVE ATTENTION ACTIVE
286 040000 RPERR= BIT14 ;DRIVE ERROR
287 010000 RPMOL= BIT12 ;MEDIUM ON-LINE
288 001000 RPPGM= BIT9 ;PROGRAMMABLE (A/B) MODE
289 000400 RPDPR= BIT8 ;DRIVE PRESENT
290 176726 RPDT= 176726 ;DRIVE TYPE REGISTER
291 000020 RPDT04= 20 ;TYPE= RP04
292 000022 RPDT06= 22 ;TYPE= RP06
293 176732 RPOF= 176732 ;OFFSET REGISTER
294 010000 RPFM22= BIT12 ;22-SECTOR FORMAT
295 004000 RPECCI= BIT11 ;INHIBIT ERROR CORRECTION
296 176734 RPDC= 176734 ;DESIRED CYLINDER
297 ;
298 ; TC-11 DECTAPE DEVICE REGISTER DEFINITIONS
299 ;
300 177340 TCST= 177340 ;STATUS REGISTER
301 100000 TCENDZ= BIT15 ;END-ZONE ERROR
302 177342 TCCM= 177342 ;COMMAND REGISTER
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 22-1
DEVICE REGISTER DEFINITIONS
303 100000 TCERR= BIT15 ;ERROR
304 004000 TCREV= BIT11 ;REVERSE DIRECTION (TOWARD FOWARD END-ZONE)
305 003400 TCUNIT= BIT10!BIT9!BIT8 ;UNIT SELECT
306 000200 TCRDY= BIT7 ;READY
307 000016 TCFUNC= BIT3!BIT2!BIT1 ;FUNCTION:
308 000000 TCSATM= 0*BIT1 ; STOP ALL TAPE MOTION
309 000002 TCRNUM= 1*BIT1 ; READ BLOCK NUMBERS
310 000004 TCREAD= 2*BIT1 ; READ DATA
311 000010 TCSTOP= 4*BIT1 ; STOP SELECTED TAPE
312 000014 TCWRIT= 6*BIT1 ; WRITE DATA
313 000001 TCGO= BIT0 ;START FUNCTION
314 177344 TCWC= 177344 ;WORD COUNT REGISTER
315 177346 TCBA= 177346 ;BUS ADDRESS REGISTER
316 177350 TCDT= 177350 ;DATA REGISTER
317 ;
318 ; DTE-20 DEVICE REGISTER DEFINITIONS
319 ;
320 000774 DTVECA= 774 ;DTE-20 #0 INTERRUPT VECTOR (THEY GO DOWN!)
321 174400 DTEXPA= 174400 ;EXTERNAL PAGE ADDRESS OF DTE #0
322 000040 DTEXPZ= 40 ;SIZE OF ADDRESS BLOCK FOR DTE
323 ;
324 000034 DTSTAT= 34 ;STATUS REGISTER
325 004000 DT11DB= BIT11 ;(READ/WRITE) TO -11 DOORBELL
326 002000 DTCL11= BIT10 ;(WRITE) CLEAR TO -11
327 000040 DTINON= BIT5 ;(WRITE) INTERRUPT ENABLE
328 000010 DTINOF= BIT3 ;(WRITE) INTERRUPT DISABLE
329 000010 DTRSMD= BIT3 ;(READ) RESTRICTED MODE
330 ;
331 ; DH-11 DEVICE REGISTER DEFINITIONS
332 ;
333 160020 DHEXPA= 160020 ;EXTERNAL PAGE ADDRESS OF FIRST DH-11
334 000020 DHEXPZ= 20 ;SIZE OF ADDRESS SPACE FOR ONE DH
335 ;
336 ;DM-11/BB REGISTER DEFINITIONS
337 ;
338 170500 DMEXPA=170500 ; [4.1.1091] EXTERNAL PAGE ADDRESS OF FIRST DM-11/BB
339 ;
340 ; KL-11 LINE CLOCK REGISTER DEFINITION
341 ;
342 177546 LKS= 177546
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 23
SAVE TASK IMPURE DATA AREA
344 .SBTTL SAVE TASK IMPURE DATA AREA
345 ;
346 ; VARIABLES
347 ;
348 000000 SPSAVE:: .BLKW 1 ;SAVE'S SP IN IMAGE
349 000002 DRVADR: .BLKW 1 ;ADDRESS OF DRIVER TABLE ENTRY FOR DEVICE
350 000004 DSKADR: .BLKW 2 ;PHYSICAL DISK ADDRESS OF SAVE FILE
351 000010 DSKSIZ: .BLKW 2 ;SIZE OF SAVE FILE *** MUST FOLLOW DSKADR ***
352 000014 MEMSIZ: .BLKW 1 ;SIZE OF SYSTEM IN 32. WORD BLOCKS
353 000016 RADIX: .BLKW 1 ;OUTPUT RADIX FOR TYPNUM
354 000020 GTIMBF: .BLKW 8. ;GET TIME PARAMETERS RETURN BLOCK
355 000040 CMDCLR: ;START OF AREA TO CLEAR ON STARTUP
356 000040 PUDADR: .BLKW 1 ;ADDRESS OF SAVE DEVICE PUD ENTRY
357 000042 DEVNAM: .BLKW 1 ;DEVICE NAME
358 000044 DEVUNT: .BLKB 1 ;DEVICE UNIT #
359 000045 PUDIDX: .BLKB 1 ;PUD INDEX FOR THE SAVE DEVICE
360 000046 WBFLAG: .BLKB 1 ;WRITE BOOT FLAG: 0 DON'T WRITE BOOT
361 ; 1 WRITE BOOT (/WB SPECFIED)
362 000047 WSFLAG: .BLKB 1 ;1-- WRITE SAVE FILE
363 .IF DF FTABS
364 ABFLAG: .BLKB 1 ;1-- SAVE AT ABSOLUTE PLACE ON DISK
365 .ENDC ; .IF DF FTABS
366 000050 EXFLAG: .BLKB 1 ;1-- EXIT WHEN DONE WITH SAVE
367 000051 MOFLAG: .BLKB 1 ;1-- MOUNT DEVICE BEFORE CREATING SAVE FILE
368 000052 DMFLAG: .BLKB 1 ;1-- DISMOUNT ALL DEVICES AFTER CREATING SAVE FILE
369 000053 RHFLAG: .BLKB 1 ;1-- READ HOME BLOCKS
370 000054 RNFLAG: .BLKB 1 ;1-- RP NOT READY
371 000055 RPFLAG: .BLKB 1 ;1-- RP NOT IN A/B MODE
372 000056 QEFLAG: .BLKB 1 ;NON-ZERO-- QIO ERROR CODE FROM FILQIO
373 000057 ACFLAG: .BLKB 1 ;FLAG ACCESS DONE
374 000060 WEFLAG: .BLKB 1 ;WRITE ERROR FLAG: 0 WRITE OK
375 ; 1 WRITE ERROR DURING SAVE
376 000061 DEFLAG: .BLKB 1 ;DTE-20 # NOT AT PRI 6 (-1 IF ALL OK)
377 000062 ALTDXF: .BLKW 1 ; +++006 ALTERNATE DX MOUNT FLAG
378 000024 CMDCLN=.-CMDCLR ;LENGTH OF AREA TO CLEAR
379 ;
380 ; SAVE AREA FOR LOW CORE
381 ;
382 .EVEN
383 000064 LOWCOR:
384 ;
385 ; MISC. BUFFERS (OVERWRITTEN BY LOW CORE)
386 ;
387 000064 HOMBUF: ;BUFFER FOR HOM BLOCKS
388 000064 TYPBUF: .BLKB 100. ;BUFFER FOR CTY OUTPUT
389 000230 CTYBUF: .BLKB 80. ;BUFFER FOR INPUT FROM CTY
390 000120 CTYBFL= .-CTYBUF
391 000350 000 .BYTE 0 ;TO MAKE ASCIZ ALWAYS
392 .EVEN
393 000352 .BLKB <256.*2.>-<.-LOWCOR> ;REST OF LOW CORE
394 001064 QIOSTS: .BLKW 2 ;QIO STATUS BLOCK
395 001070 LOGBUF: ; +++004 KLINIK LOG BUFFER
396 001070 000004 .WORD 4 ; +++004
397 001072 000000G .WORD DV.LOG ; +++004
398 001074 000000 .WORD 0 ; +++004
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 24
PURE DATA
400 .SBTTL PURE DATA
401 ;
402 ; FILE ID BLOCK
403 ;
404 001076 000005 000005 FIDBLK: .WORD 5,5 ;FILE ID 5, FIL SEQ # 5 IS SYSTEM SAVE FILE
405 ;
406 ; ATTRIBUTE CONTROL BLOCK
407 ;
408 001102 367 ATCBLK: .BYTE -9. ;ATTRIBUTE 9 (STATISTICS BLOCK), READ
409 001103 010 .BYTE 8. ;8. BYTES OF STATISTICS (FILE ADDR AND SIZE)
410 001104 000004' .WORD DSKADR ;STORE IN DSKADR AND DSKSIZ
411 001106 000 000 .BYTE 0,0 ;END OF ATTRIBUTE CONTROL BLOCK
412 ;
413 ; MOUNT/DISMOUNT FUNCTION BLOCKS
414 ;
415 001110 001 MNTBLK: .BYTE 1 ;FUNCTION: MOUNT
416 001111 001 .BYTE 1 ;LENGTH OF STRING
417 001112 001114' .WORD 1$ ;ADDRESS OF STRING
418 001114 072 1$: .ASCII /:/
419 .EVEN
420 ;
421 001116 002 DMTBLK: .BYTE 2 ;FUNCTION: DISMOUNT
422 001117 000 .BYTE 0 ;NO STRING
423 ;
424 ; TASK NAME FOR KL INITIALIZATION TASK
425 ;
426 001120 131574 043251 KLINIT: .RAD50 /...KLI/ ;KL INITIALIZATION TASK NAME
427 ;
428 ; TABLE OF SPEED WORDS FOR CONSOLE DH FROM BOOT PARAMETER, BP.SPD
429 ;
430 .MACRO SPD A,B
431 .WORD <A*BIT10>!<A*BIT6>!<B>
432 .ENDM SPD
433 001124 DHSTAB:
434 001124 SPD 0,0 ;(0) CONSOLE NOT SPECIFIED
001124 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
435 001126 SPD 0,0 ;(1) DL-11 LINE, NO SPEED
001126 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
436 001130 SPD 0,0 ;(2) DL-11 LINE, NO SPEED
001130 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
437 001132 SPD 3,BIT2!BIT1!BIT0 ;(3) 110 BAUD, 8 DATA BITS, 2 STOP BITS
001132 006307 .WORD <3*BIT10>!<3*BIT6>!<BIT2!BIT1!BIT0>
438 001134 SPD 4,BIT2!BIT1 ;(4) 134.5 BAUD, 7 DATA BITS, 2 STOP BITS
001134 010406 .WORD <4*BIT10>!<4*BIT6>!<BIT2!BIT1>
439 001136 SPD 5,BIT2!BIT1!BIT0 ;(5) 150 BAUD, 8 DATA BITS, 2 STOP BITS
001136 012507 .WORD <5*BIT10>!<5*BIT6>!<BIT2!BIT1!BIT0>
440 001140 SPD 6,BIT2!BIT1!BIT0 ;(6) 200 BAUD, 8 DATA BITS, 2 STOP BITS
001140 014607 .WORD <6*BIT10>!<6*BIT6>!<BIT2!BIT1!BIT0>
441 001142 SPD 7,BIT1!BIT0 ;(7) 300 BAUD, 8 DATA BITS, 1 STOP BIT
001142 016703 .WORD <7*BIT10>!<7*BIT6>!<BIT1!BIT0>
442 001144 SPD 10,BIT1!BIT0 ;(10) 600 BAUD, 8 DATA BITS, 1 STOP BIT
001144 021003 .WORD <10*BIT10>!<10*BIT6>!<BIT1!BIT0>
443 001146 SPD 11,BIT1!BIT0 ;(11) 1200 BAUD, 8 DATA BITS, 1 STOP BIT
001146 023103 .WORD <11*BIT10>!<11*BIT6>!<BIT1!BIT0>
444 001150 SPD 12,BIT1!BIT0 ;(12) 1800 BAUD, 8 DATA BITS, 1 STOP BIT
001150 025203 .WORD <12*BIT10>!<12*BIT6>!<BIT1!BIT0>
445 001152 SPD 13,BIT1!BIT0 ;(13) 2400 BAUD, 8 DATA BITS, 1 STOP BIT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 24-1
PURE DATA
001152 027303 .WORD <13*BIT10>!<13*BIT6>!<BIT1!BIT0>
446 001154 SPD 14,BIT1!BIT0 ;(14) 4800 BAUD, 8 DATA BITS, 1 STOP BIT
001154 031403 .WORD <14*BIT10>!<14*BIT6>!<BIT1!BIT0>
447 001156 SPD 15,BIT1!BIT0 ;(15) 9600 BAUD, 8 DATA BITS, 1 STOP BIT
001156 033503 .WORD <15*BIT10>!<15*BIT6>!<BIT1!BIT0>
448 001160 SPD 0,0 ;(16) DL-11, 8 DATA BITS, NO SPEED
001160 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
449 001162 SPD 0,0 ;(17) DL-11, NO SPEED
001162 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
450
451 001164 SAVLMT:: ; +++002 SAVE IMAGE LIMITS
452 001164 000000 000000 .LIMIT ; +++002
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 25
PARSE COMMAND LINE
454 .SBTTL PARSE COMMAND LINE
455 ;
456 ; REQUEST FOR SAVE BY MCR SAV COMMAND CALLS SAVE HERE
457 ;
458 001170 SAVE::
459 ;
460 ; SETUP COMMAND DEFAULTS
461 ;
462 001170 012701 000040' MOV #CMDCLR,R1 ;GET START OF AREA TO CLEAR
463 001174 012705 000024 MOV #CMDCLN,R5 ;AND LENGTH OF AREA, IN BYTES
464 001200 10$:
465 001200 105021 CLRB (R1)+ ;CLEAR A BYTE
466 001202 077502 SOB R5,10$ ;CLEAR 'EM ALL
467 001204 105237 000047' INCB WSFLAG ;DEFAULT TO WRITE SAVE FILE
468 001210 105237 000050' INCB EXFLAG ; AND TO EXIT WHEN DONE
469 001214 105237 000053' INCB RHFLAG ; AND TO READ HOME BLOCKS
470 001220 105237 000052' INCB DMFLAG ; AND TO DISMOUNT ALL VOLUMES
471 ;
472 ; SETUP TO READ A LINE FROM THE CTY
473 ;
474 001224 ALUN$S #CTYLUN,#"TT,#0 ;ASSIGN CTY TO LUN 1
001224 005046 CLR -(SP)
001226 012746 052124 MOV #"TT,-(SP)
001232 012746 000001 MOV #CTYLUN,-(SP)
001236 012746 MOV (PC)+,-(SP)
001240 007 004 .BYTE 7.,4
001242 104375 EMT 375
475 001244 103530 BCS EXITA ;GIVE UP IF NO CTY!!!!
476 001246 TYPE ^\SAV>\ ;TYPE PROMPT MESSAGE
000000 123 101 126 .ASCIZ "SAV>"
000003 076 000
001246 012746 000000' MOV #$$$,-(SP)
001252 004737 006074' JSR PC,TYPMSG
477 001256 QIOW$S #IO.RLB,#CTYLUN,#E.FQIO,,#QIOSTS,,<#CTYBUF,#CTYBFL>
001256 012746 000120 MOV #CTYBFL,-(SP)
001262 012746 000230' MOV #CTYBUF,-(SP)
001266 005046 CLR -(SP)
001270 012746 001064' MOV #QIOSTS,-(SP)
001274 005046 CLR -(SP)
001276 112716 000001 MOVB #E.FQIO,(SP)
001302 012746 000001 MOV #CTYLUN,-(SP)
001306 012746 001000 MOV #IO.RLB,-(SP)
001312 012746 MOV (PC)+,-(SP)
001314 003 010 .BYTE 3,$$$T1
001316 104375 EMT 375
478 001320 103502 BCS EXITA ;GIVE UP IF FAILURE
479 001322 105737 001064' TSTB QIOSTS+0 ;ERROR STATUS
480 001326 002477 BLT EXITA ;YES-- THAT'S ENOUGH
481 001330 122737 000003 001065' CMPB #'C-100,QIOSTS+1 ;THIS TERMINATED BY ^C?
482 001336 001473 BEQ EXITA ;YES-- GIVE UP FAST
483 001340 TYPE <"<1>"> ;INSURE A <CR><LF>
000005 001 000 .ASCIZ ""<1>""
001340 012746 000005' MOV #$$$,-(SP)
001344 004737 006074' JSR PC,TYPMSG
484 001350 013704 001066' MOV QIOSTS+2,R4 ;GET # CHARACTERS TYPED AT ME
485 001354 105064 000230' CLRB CTYBUF(R4) ;CLEAR LAST BYTE OF INPUT (MAKE ASCIZZZ)
486 001360 012704 000230' MOV #CTYBUF,R4 ;POINT TO START OF INPUT TO PARSE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 25-1
PARSE COMMAND LINE
487 ;
488 ; NOW TO PARSE THE LINE
489 ;
490 001364 CALL GETNB ;GET NON-BLANK CHARACTER
001364 004737 005742' JSR PC,GETNB
491 001370 001677 BEQ SAVE ;BACK TO SAVE IF NULL COMMAND
492 001372 CALL GETNAM ;GET A DEVICE NAME
001372 004737 005764' JSR PC,GETNAM
493 001376 103471 BCS SYNERR ;NO SUCH LUCK
494 001400 010037 000042' MOV R0,DEVNAM ;SAVE THE TYPED NAME
495 001404 001411 BEQ 20$ ;NULL NAME-- GO ON FOR MODIFIERS
496 001406 CALL GETNUM ;GET UNIT NUMBER OF DEVICE (IF ANY)
001406 004737 006030' JSR PC,GETNUM
497 001412 103463 BCS SYNERR ;TOO BIG-- COMPLAIN
498 001414 110037 000044' MOVB R0,DEVUNT ;SAVE THE UNIT NUMBER
499 001420 122724 000072 CMPB #':,(R4)+ ; : FOLLOWING DEVICE?
500 001424 001401 BEQ 20$ ;YES-- IGNORE IT
501 001426 105744 TSTB -(R4) ;NO-- GO BACK TO LOOK AT IT AGAIN
502 ;
503 ; LOOK FOR ALL MODIFIERS
504 ;
505 001430 20$:
506 001430 CALL GETNB ;SKIP BLANKS AFTER UNIT
001430 004737 005742' JSR PC,GETNB
507 001434 001457 BEQ CMDONE ;END OF COMMAND-- ALL OK
508 001436 122700 000057 CMPB #'/,R0 ;THIS A MODIFIER?
509 001442 001047 BNE SYNERR ;NO-- BAD CHARACTER
510 001444 105724 TSTB (R4)+ ;YES-- SKIP OVER IT
511 001446 012702 000001 MOV #1,R2 ;ASSUME NOT /-(SW)
512 001452 122714 000055 CMPB #'-,(R4) ;THIS /-(SW)?
513 001456 001002 BNE 30$ ;NO-- GO ON
514 001460 105724 TSTB (R4)+ ;YES-- SKIP OVER -
515 001462 005002 CLR R2 ;AND SET TO CLEAR THE FLAG
516 001464 30$:
517 001464 CALL GETNAM ;GET THE MODIFIER
001464 004737 005764' JSR PC,GETNAM
518 001470 103434 BCS SYNERR ;TOO LONG-- GIVE UP
519 001472 012701 001532' MOV #MODTBL,R1 ;GET ADDRESS OF SWITCH TABLE
520 001476 012705 000006 MOV #MODTLN,R5 ; AND LENGTH OF IT
521 001502 40$:
522 001502 020021 CMP R0,(R1)+ ;THIS MODIFIER MATCH?
523 001504 001002 BNE 50$ ;NO-- LOOP FOR MORE
524 001506 110231 MOVB R2,@(R1)+ ;YES-- SET THE FLAG AS REQUESTED
525 001510 000747 BR 20$ ;LOOP FOR ALL MODIFIERS
526 ;
527 001512 50$:
528 001512 005721 TST (R1)+ ;NO-- SKIP OVER FLAG ADDRESS
529 001514 077506 SOB R5,40$ ;NO-- LOOP FOR ALL MODIFIERS
530 001516 ERROR <Illegal modifier /"<2>">
000007 011 111 154 .ASCIZ ""<11>"Illegal modifier /"<2>""<5>""
000012 154 145 147
000015 141 154 040
000020 155 157 144
000023 151 146 151
000026 145 162 040
000031 057 002 005
000034 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 25-2
PARSE COMMAND LINE
001516 012746 000007' MOV #$$$,-(SP)
001522 004737 006074' JSR PC,TYPMSG
531 001526 EXITA:
532 001526 000137 005732' JMP EXIT ;TOO FAR TO HOP
533 ;
534 ; MODIFIER TABLE
535 ;
536 001532 MODTBL:
537 .IRP ARG,<WB,WS,EX,MO,DM,RH>
538 .ASCII /ARG/
539 .EVEN
540 .WORD ARG'FLAG
541 .ENDM
001532 127 102 .ASCII /WB/
001534 000046' .WORD WBFLAG
001536 127 123 .ASCII /WS/
001540 000047' .WORD WSFLAG
001542 105 130 .ASCII /EX/
001544 000050' .WORD EXFLAG
001546 115 117 .ASCII /MO/
001550 000051' .WORD MOFLAG
001552 104 115 .ASCII /DM/
001554 000052' .WORD DMFLAG
001556 122 110 .ASCII /RH/
001560 000053' .WORD RHFLAG
542 .IF DF FTABS
543 .ASCII /AB/
544 .EVEN
545 .WORD ABFLAG
546 .ENDC ; .IF DF FTABS
547 000006 MODTLN=<.-MODTBL>/4
548 ;
549 ; COMMAND ERRORS
550 ;
551 001562 SYNERR:
552 001562 010400 MOV R4,R0 ;POINT INPUT STRING TO OUTPUT STRING
553 001564 ERROR <Syntax error: "<4>">
000035 011 123 171 .ASCIZ ""<11>"Syntax error: "<4>""<5>""
000040 156 164 141
000043 170 040 145
000046 162 162 157
000051 162 072 040
000054 004 005 000
001564 012746 000035' MOV #$$$,-(SP)
001570 004737 006074' JSR PC,TYPMSG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 26
SETUP SAVE FILE
555 .SBTTL SETUP SAVE FILE
556 ;
557 ; THE COMMAND STRING IS NOW PARSED. CHECK OUT THE DEVICE HE SPECIFIED.
558 ;
559 001574 CMDONE:
560 001574 013701 000044' MOV DEVUNT,R1 ;GET SPECIFIED UNIT
561 001600 013700 000042' MOV DEVNAM,R0 ;GET DEVICE SPECIFIED
562 001604 001003 BNE 10$ ;SPECIFIED-- GO ASSIGN IT
563 001606 012700 054523 MOV #"SY,R0 ;NONE-- DEFAULT TO SYSTEM DEVICE
564 001612 005001 CLR R1 ; SY0:
565 ;
566 001614 10$:
567 001614 ALUN$S #DSKLUN,R0,R1 ;ASSIGN THE DEVICE TO LUN 2
001614 010146 MOV R1,-(SP)
001616 010046 MOV R0,-(SP)
001620 012746 000002 MOV #DSKLUN,-(SP)
001624 012746 MOV (PC)+,-(SP)
001626 007 004 .BYTE 7.,4
001630 104375 EMT 375
568 001632 103403 BCS DNSERR ;OOPS-- DEVICE NOT IN SYSTEM
569 001634 CALL FINDEV ;FIND PUD ENTRY ADDRESS FOR DEVICE
001634 004737 006654' JSR PC,FINDEV
570 001640 103006 BCC DEVCHK ;OK-- CHECK THE DEVICE OUT
571 001642 DNSERR:
572 001642 012705 000042' MOV #DEVNAM,R5 ;POINT TO DEVICE NAME/UNIT #
573 001646 ERROR <Device "<3>" not in system>
000057 011 104 145 .ASCIZ ""<11>"Device "<3>" not in system"<5>""
000062 166 151 143
000065 145 040 003
000070 040 156 157
000073 164 040 151
000076 156 040 163
000101 171 163 164
000104 145 155 005
000107 000
001646 012746 000057' MOV #$$$,-(SP)
001652 004737 006074' JSR PC,TYPMSG
574 001656 DEVCHK:
575 001656 016505 000000G MOV U.RP(R5),R5 ; BUT GET REAL DEVICE
576 001662 016537 000000G 000042' MOV U.DN(R5),DEVNAM ;SAVE THE REAL DEVICE NAME
577 001670 116537 000000G 000044' MOVB U.UN(R5),DEVUNT ;SAVE THE REAL UNIT #
578 001676 012700 007042' MOV #DRVTAB,R0 ;GET ADR OF DRIVER TABLE
579 001702 10$:
580 001702 026037 000000 000042' CMP DRVNAM(R0),DEVNAM ;MATCH?
581 001710 001411 BEQ DEVOK ;YES-- GO ON
582 001712 062700 000020 ADD #DRVSIZ,R0 ;BUMP TO NEXT DRIVER ENTRY
583 001716 020027 007122' CMP R0,#DRVTAB+DRVTBZ ;BEYOND END?
584 001722 103767 BLO 10$ ;NO-- LOOP UNTIL WE FIND DEVICE
585 001724 ERROR <Illegal device "<3>">
000110 011 111 154 .ASCIZ ""<11>"Illegal device "<3>""<5>""
000113 154 145 147
000116 141 154 040
000121 144 145 166
000124 151 143 145
000127 040 003 005
000132 000
001724 012746 000110' MOV #$$$,-(SP)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 26-1
SETUP SAVE FILE
001730 004737 006074' JSR PC,TYPMSG
586 001734 DEVOK:
587 001734 023727 000042' 041104 CMP DEVNAM,#"DB ;THIS AN RP04/RP06?
588 001742 001402 BEQ 10$ ;YES-- OK
589 001744 105037 000053' CLRB RHFLAG ;NO-- DON'T READ HOM BLOCKS
590 001750 10$:
591 001750 010037 000002' MOV R0,DRVADR ;SAVE DRIVER TABLE ENTRY ADDRESS
592 001754 010537 000040' MOV R5,PUDADR ;SAVE THE PUD ADDRESS OF THE SAVE DEVICE
593 001760 010500 MOV R5,R0 ;COPY THE PUD ADDRESS
594 001762 162700 000000G SUB #.PUDBA,R0 ;MAKE R0 INDEX INTO THE PUD
595 001766 012701 000000G MOV #U.SZ,R1 ;COMPUTE AN INDEX
596 001772 CALL $DIV ; INTO THE PUD
001772 004737 000000G JSR PC,$DIV
597 001776 110037 000045' MOVB R0,PUDIDX ;SAVE THE INDEX
598 ;
599 ; MOUNT THE SPECIFIED VOLUME IF /MO TYPED
600 ;
601 002002 DEVMNT:
602 002002 105737 000051' TSTB MOFLAG ;/MO?
603 002006 001424 BEQ SETFIL ;NO-- DON'T MOUNT THE DEVICE
604 002010 005765 000000G TST U.VA(R5) ;IS THE VOLUME MOUNTED?
605 002014 001015 BNE MOUNTD ;YES-- GO ON
606 ;
607 002016 CALL FNDACP ;FIND ACP ADDRESS
002016 004737 006712' JSR PC,FNDACP
608 002022 010265 000000G MOV R2,U.ACP(R5) ;SAVE THE ADDRESS SO MOUNT DOESN'T COMPLAIN
609 ;
610 002026 012702 001110' MOV #MNTBLK,R2 ;SET TO MOUNT VOLUME
611 002032 CALL FILMNT ;DO THE MOUNT
002032 004737 006732' JSR PC,FILMNT
612 002036 103010 BCC SETFIL ;OK-- GO ON
613 002040 ERROR <Mount error "<7>">
000133 011 115 157 .ASCIZ ""<11>"Mount error "<7>""<5>""
000136 165 156 164
000141 040 145 162
000144 162 157 162
000147 040 007 005
000152 000
002040 012746 000133' MOV #$$$,-(SP)
002044 004737 006074' JSR PC,TYPMSG
614 002050 MOUNTD:
615 002050 WARN <Device "<3>" already mounted>
000153 012 104 145 .ASCIZ ""<12>"Device "<3>" already mounted"<1>""
000156 166 151 143
000161 145 040 003
000164 040 141 154
000167 162 145 141
000172 144 171 040
000175 155 157 165
000200 156 164 145
000203 144 001 000
002050 012746 000153' MOV #$$$,-(SP)
002054 004737 006074' JSR PC,TYPMSG
616 ;
617 ; SET UP DISK ADDRESS TO SPECIFIC PLACE IF /AB (ABSOLUTE) SPECIFIED
618 ;
619 002060 SETFIL:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 26-2
SETUP SAVE FILE
620 .IF DF FTABS
621 TSTB ABFLAG ;ABSOLUTE DISK SAVE?
622 BNE FILABS ;YES-- SET UP ABSOLUTE FILE
623 .ENDC ; .IF DF FTABS
624 ; BR FILFND ;NO-- FIND FILE (5,5)
625 ;
626 ; FIND SAVE FILE (5,5) AND EXTEND IT IF NECESSARY
627 ;
628 002060 FILFND:
629 002060 012701 001076' MOV #FIDBLK,R1 ;ADDRESS OF FILE-ID BLOCK FOR (5,5)
630 ;
631 ; DO AN ACCESS FOR EXTEND TO FIND IF FILE EXISTS AND WHERE IT IS
632 ;
633 002064 012700 007400 MOV #IO.ACE,R0 ;SET TO ACCESS FOR EXTEND
634 002070 012702 001102' MOV #ATCBLK,R2 ;SET UP ATTRIBUTE CONTROL BLOCK ADDRESS
635 002074 005003 CLR R3 ;NO EXTEND CONTROOL
636 002076 005004 CLR R4 ; . .
637 002100 012705 MOV (PC)+,R5 ;ENABLE ACCESS
638 002102 000 200 .BYTE 0,AC.ENA ; . .
639 002104 CALL FILQIO ;DO IT TO (5,5)
002104 004737 006746' JSR PC,FILQIO
640 002110 103444 BCS 15$ ;ERROR-- JUST CLOSE FILE
641 ;
642 ; FIND OUT HOW BIG THE SAVE FILE SHOULD BE AND SEE IF IT IS BIG ENOUGH
643 ; CURRENT SIZE IS RETURNED IN DSKSIZ+0, DSKSIZ+2 BY ACCESS
644 ;
645 002112 013704 001166' MOV SAVLMT+2,R4 ; +++002 GET UPPER TASK LIMIT
646 002116 062704 003777 ADD #3777,R4 ; +++002 ROUND UP
647 002122 042704 003777 BIC #3777,R4 ; +++002 TO NEXT K OF WORDS
648 002126 000241 CLC ; +++002 CLEAR SIGN BIT AND
649 002130 006004 ROR R4 ; +++002 CONVERT TO 32. WORD BLOCKS
650 002132 006204 ASR R4 ; +++002
651 002134 006204 ASR R4 ; +++002
652 002136 006204 ASR R4 ; +++002
653 002140 006204 ASR R4 ; +++002
654 002142 006204 ASR R4 ; +++002
655 002144 010437 000014' MOV R4,MEMSIZ ;SAVE THIS FOR WRITING FILE
656 002150 006204 ASR R4 ;CONVERT 32. WORD BLOCKS TO 64. WORD BLOCKS
657 002152 006204 ASR R4 ; 128. WORD BLOCKS
658 002154 006204 ASR R4 ; 256. WORD BLOCKS
659 002156 105737 000010' TSTB DSKSIZ+0 ;IS FILE BIGGER THAN 2**16 BLOCKS????
660 002162 003017 BGT 15$ ;YES-- CERTAINLY BIG ENOUGH
661 002164 163704 000012' SUB DSKSIZ+2,R4 ;NO-- FIND HOW MUCH MORE SPACE WE NEED
662 002170 003414 BLE 15$ ;BIG ENOUGH-- JUST CLOSE
663 002172 113737 000057' 000056' MOVB ACFLAG,QEFLAG ;ERROR IF WE WERE HERE BEFORE
664 002200 001010 BNE 15$ ;SO GIVE ERROR
665 ;
666 ; FILE IS NOT BIG ENOUGH-- DO AN EXTEND ON IT, EXTEND INCREMENT IN R4
667 ;
668 002202 012700 011400 MOV #IO.EXT,R0 ;NOT ENOUGH-- SET TO EXTEND FILE
669 002206 012703 MOV (PC)+,R3 ;MAKE FILE CONTIGUOUS,
670 002210 000 205 .BYTE 0,EX.ENA!EX.AC1!EX.FCO ; HIGH EXTEND INCREMENT= 0
671 002212 005002 CLR R2 ;NO ATTRIB
672 002214 005005 CLR R5 ; AND NO ACCESS
673 002216 CALL FILQIO ;DO IT TO (5,5), EXTEND INCREMENT IN R4
002216 004737 006746' JSR PC,FILQIO
674 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 26-3
SETUP SAVE FILE
675 ; DEACCESS FILE. R5= 0 IF EXTEND DONE, QEFLAG= -VE IF ERROR OCCURED
676 ;
677 002222 15$:
678 002222 012700 010000 MOV #IO.DAC,R0 ;DE-ACCESS FILE
679 002226 005002 CLR R2 ;NO ATTRIBUTE CONTROL BLOCK
680 002230 005003 CLR R3 ;NO EXTEND BITS
681 002232 005004 CLR R4 ; . .
682 002234 CALL FILQIO ;DO IT TO (5,5)
002234 004737 006746' JSR PC,FILQIO
683 002240 103004 BCC FILCHK ;NO ERRRORS-- GO CHECK OUT THE FILE
684 002242 ERROR <Create SAVE file (5,5) error "<7>">
000206 011 103 162 .ASCIZ ""<11>"Create SAVE file (5,5) error "<7>""<5>""
000211 145 141 164
000214 145 040 123
000217 101 126 105
000222 040 146 151
000225 154 145 040
000230 050 065 054
000233 065 051 040
000236 145 162 162
000241 157 162 040
000244 007 005 000
002242 012746 000206' MOV #$$$,-(SP)
002246 004737 006074' JSR PC,TYPMSG
685 002252 FILCHK:
686 002252 105237 000057' INCB ACFLAG ;FLAG ONE ACCESS
687 002256 005705 TST R5 ;DID WE DO AN EXTEND?
688 002260 001677 BEQ FILFND ;YES-- GO BACK AND RE-ACCESS
689 002262 005000 CLR R0 ;GET HIGH
690 002264 153700 000004' BISB DSKADR+0,R0 ; DISK ADDRESS (WITHOUT SIGN-EXTEND)
691 002270 013701 000006' MOV DSKADR+2,R1 ;AND ALSO LOW PART
692 002274 001006 BNE FILOK ;NON-ZERO-- WE HAVE A FILE
693 002276 005700 TST R0 ;ZERO-- HIGH PART ZERO TOO?
694 002300 001004 BNE FILOK ;NO-- FILE MUST BE CONTIGUOUS (LUCKILY)
695 002302 ERROR <SAVE file (5,5) not contiguous>
000247 011 123 101 .ASCIZ ""<11>"SAVE file (5,5) not contiguous"<5>""
000252 126 105 040
000255 146 151 154
000260 145 040 050
000263 065 054 065
000266 051 040 156
000271 157 164 040
000274 143 157 156
000277 164 151 147
000302 165 157 165
000305 163 005 000
002302 012746 000247' MOV #$$$,-(SP)
002306 004737 006074' JSR PC,TYPMSG
696 002312 FILOK:
697 002312 013705 000002' MOV DRVADR,R5 ;GET ADDRESS OF DRIVER TABLE ENTRY
698 002316 CALL @DRVSET(R5) ;CALL PROPER ROUTINE TO SET ADDRESS
002316 004775 000002 JSR PC,@DRVSET(R5)
699 .IF DF FTABS
700 BR FILSET ;SAVE ADDRESSES AND GO ON
701 ;
702 ; SAVE TO ABSOLUTE DISK ADDRESS-- SET UP DSKADR+0, DSKADR+2
703 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 26-4
SETUP SAVE FILE
704 FILABS:
705 MOV SAVLMT+2,R5 ; +++002 GET UPPER TASK LIMIT
706 ADD #3777,R5 ; +++002 ROUND UP
707 BIC #3777,R5 ; +++002 TO NEXT K OF WORDS
708 CLC ; +++002 CLEAR SIGN BIT AND
709 ROR R5 ; +++002 CONVERT TO 32. WORD BLOCKS
710 ASR R5 ; +++002
711 ASR R5 ; +++002
712 ASR R5 ; +++002
713 ASR R5 ; +++002
714 ASR R5 ; +++002
715 MOV R5,MEMSIZ ;SAVE THIS FOR WRITING FILE
716 MOV DRVADR,R5 ;GET ADDRESS OF DRIVER TABLE ENTRY
717 CALL @DRVABS(R5) ;CALL PROPER ABSOLUTE SET ROUTINE
718 .ENDC ; .IF DF FTABS
719 002322 FILSET:
720 002322 010037 000004' MOV R0,DSKADR+0 ;SAVE THE ADDRESS
721 002326 010137 000006' MOV R1,DSKADR+2 ; BOTH HALVES
722 ; BR FILDMO ;GO DISMOUNT (IF /DM)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 27
DISMOUNT ALL MOUNTED VOLUMES
724 .SBTTL DISMOUNT ALL MOUNTED VOLUMES
725 ;
726 ; DO DISMOUNT OF ALL VOLUMES IF /DM SPECIFIED
727 ;
728 002332 FILDMO:
729 002332 105737 000052' TSTB DMFLAG ;HE WANT IT DISMOUNTED?
730 002336 001457 BEQ SYSAVE ;NO-- JUST GO SAVE SYSTEM
731 002340 012702 001116' MOV #DMTBLK,R2 ;YES-- SET TO DISMOUNT
732 002344 012705 000000G MOV #.PUDBA,R5 ;START AT BEGINNINING OF THE PUD
733 002350 FILDM1:
734 002350 020565 000000G CMP R5,U.RP(R5) ;REDIRECTED?
735 002354 001043 BNE FILDMX ;YES-- WE'LL FIND THE REAL ONE
736 002356 005765 000000G TST U.VA(R5) ;IS VOLUME MOUNTED?
737 002362 001440 BEQ FILDMX ;NO-- JUST GO ON
738 002364 ALUN$S #DSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN THIS DEVICE
002364 016546 000000G MOV U.UN(R5),-(SP)
002370 016546 000000G MOV U.DN(R5),-(SP)
002374 012746 000002 MOV #DSKLUN,-(SP)
002400 012746 MOV (PC)+,-(SP)
002402 007 004 .BYTE 7.,4
002404 104375 EMT 375
739 002406 013700 000000G MOV $DSW,R0 ;(IN CASE OF ERROR)
740 002412 103405 BCS DMOERR ;OOPS-- THIS CAN'T HAPPEN!!!!
741 ;
742 002414 FILDM2:
743 002414 PUSH R5 ;SAVE THE PUD POINTER
002414 010546 MOV R5,-(SP)
744 002416 CALL FILMNT ;DO THE DISMOUNT FUNCTION
002416 004737 006732' JSR PC,FILMNT
745 002422 POP R5 ;RESTORE THE POINTER
002422 012605 MOV (SP)+,R5
746 002424 103004 BCC FILDM3 ;OK-- GO ON TO NEXT ENTRY
747 002426 DMOERR:
748 002426 ERROR <"<3>" dismount error "<7>">
000310 011 003 040 .ASCIZ ""<11>""<3>" dismount error "<7>""<5>""
000313 144 151 163
000316 155 157 165
000321 156 164 040
000324 145 162 162
000327 157 162 040
000332 007 005 000
002426 012746 000310' MOV #$$$,-(SP)
002432 004737 006074' JSR PC,TYPMSG
749 002436 FILDM3:
750 002436 005765 000000G TST U.VA(R5) ;DID IT REALLY DISMOUNT THE VOLUME?
751 002442 001404 BEQ FILDM4 ;YES-- OK
752 002444 ERROR <"<3>" cannot be dismounted>
000335 011 003 040 .ASCIZ ""<11>""<3>" cannot be dismounted"<5>""
000340 143 141 156
000343 156 157 164
000346 040 142 145
000351 040 144 151
000354 163 155 157
000357 165 156 164
000362 145 144 005
000365 000
002444 012746 000335' MOV #$$$,-(SP)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 27-1
DISMOUNT ALL MOUNTED VOLUMES
002450 004737 006074' JSR PC,TYPMSG
753 002454 FILDM4:
754 002454 TYPE <["<3>" dismounted]"<1>">
000366 133 003 040 .ASCIZ "["<3>" dismounted]"<1>""
000371 144 151 163
000374 155 157 165
000377 156 164 145
000402 144 135 001
000405 000
002454 012746 000366' MOV #$$$,-(SP)
002460 004737 006074' JSR PC,TYPMSG
755 002464 FILDMX:
756 002464 062705 000000G ADD #U.SZ,R5 ;OK-- BUMP TO NEXT ENTRY IN THE PUD
757 002470 020527 000000G CMP R5,#.PUDEA ;AT THE END OF THE PUD?
758 002474 103725 BLO FILDM1 ;NOPE-- BACK FOR SOME MORE
759 ; BR SYSAVE ;YES-- ON TO SAVE THE SYSTEM
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 28
SAVE SYSTEM STATE
761 .SBTTL SAVE SYSTEM STATE
762 ;
763 ; GET CURRENT TIME STUFF FOR TYPE-OUT
764 ;
765 002476 SYSAVE:
766 002476 GTIM$S #GTIMBF ;GET CURRENT TIME PARAMETERS FOR SAVE FILE
002476 012746 000020' MOV #GTIMBF,-(SP)
002502 012746 MOV (PC)+,-(SP)
002504 073 002 .BYTE 59.,2
002506 104375 EMT 375
767 ;
768 ; SEE IF QUEUED PROTOCOL IS RUNNING. IF SO, WE CANNOT CONTINUE.
769 ;
770 002510 032737 000000C 000002G BIT #EF.PR1!EF.PR2,.COMEF+2 ;IS ANY PROTOCOL RUNNING ?
771 002516 001404 BEQ SYSAV1 ;NO-- ALL OK
772 002520 ERROR <DTE-20 Protocol running>
000406 011 104 124 .ASCIZ ""<11>"DTE-20 Protocol running"<5>""
000411 105 055 062
000414 060 040 120
000417 162 157 164
000422 157 143 157
000425 154 040 162
000430 165 156 156
000433 151 156 147
000436 005 000
002520 012746 000406' MOV #$$$,-(SP)
002524 004737 006074' JSR PC,TYPMSG
773 ;
774 ; RAISE PRIORITY TO 7 TO LOCK OUT INTERRUPTS
775 ;
776 002530 SYSAV1:
777 002530 012737 000401 000000G MOV #401,.NOERR ;DIS-ALLOW KL ERROR REPORTING
778 002536 .INH ;;;AND RAISE TO PRIORITY 7
002536 013746 177776 MOV PS,-(SP)
002542 112737 000340 177776 MOVB #PR7,@#PS ;;
779 ;
780 ; TURN THE CLOCK OFF
781 ;
782 002550 005037 177546 CLR @#LKS ;;;CLEAR CLOCK STATUS
783 ;
784 ; FIX UP BOTH BOOTS TO POINT TO US AND THE RIGHT FILE
785 ;
786 002554 013705 000002' MOV DRVADR,R5 ;;;GET DRIVER TABLE ENTRY ADDRESS
787 002560 013775 000014' 000010 MOV MEMSIZ,@DRVMSZ(R5) ;;;SET SIZE OF MEMORY
788 002566 013775 000004' 000012 MOV DSKADR+0,@DRVAD1(R5) ;;;SET FIRST HALF OF DISK ADDRESS
789 002574 013775 000006' 000014 MOV DSKADR+2,@DRVAD2(R5) ;;; AND SECOND HALF
790 .IF DF M$$MGE
791 MOV UPAR0,@DRVUP0(R5) ;;;ALSO OUR PAGE ADDRESS
792 .ENDC
793 ;
794 ; SET BOOT PARAMTER IN R0 WITH LOAD FLAGS= 01 (SO KLINIT WON'T BE CALLED)
795 ;
796 002602 113700 000044' MOVB DEVUNT,R0 ;;;GET THE DEVICE UNIT #
797 002606 000300 SWAB R0 ;;;SET IT TO BITS 10-8
798 002610 056500 000016 BIS DRVBTP(R5),R0 ;;;SET PROPER BIT IN BOOT PARAMETER WORD
799 002614 052700 000002 BIS #BP.LD0,R0 ;;;SET FLAGS= 01
800 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 28-1
SAVE SYSTEM STATE
801 ; SAVE KT-11 STUFF, IF ANY
802 ;
803 002620 042737 030000 177776 BIC #PS.PUS,@#PS ;;;SET PREVIOUS MODE KERNAL
804 .IF DF M$$MGE
805 MOV #KPDR0,R1 ;;;ADDRESS KERNAL DR'S
806 MOV #KPAR0,R2 ;;; AND KERNAL AR'S
807 MOV #UPDR0,R3 ;;; USER DR'S
808 MOV #UPAR0,R4 ;;; AND AR'S
809 MOV #8.,R5 ;;;8 REGITERS PER SET
810 30$:
811 PUSH <(R1)+,(R2)+,(R3)+,(R4)+> ;;;SAVE ALL ON STACK
812 SOB R5,30$ ;;;ALL OF 'EM
813 PUSH <R1,R2,R3,R4> ;;;SAVE ADDR'S TO RESTORE
814 ;
815 ; SAVE STACK LIMIT AND KERNAL SP
816 ;
817 PUSH STKLIM ;;;SAVE STACK LIMIT
818 MFPI SP ;;; AND KERNAL STACK
819 ;
820 ; POINT TO ABSOLUTE ZERO, USING UPAR1, FOR COPY OF BOOT
821 ;
822 MOV #77406,UPDR1 ;;;MAP MAXIMUM SIZE (4096 WORDS)
823 CLR UPAR1 ;;; TO REAL ABSOLUTE ZERO
824 MOV #20000,R1 ;;; FROM 20000 IN VIRTUAL SPACE
825 .IFF
826 002626 005001 CLR R1 ;;;ADDRESS ABSOLUTE 0 (NO KT-11)
827 .ENDC
828 ;
829 ; COPY LOW CORE (FIRST 256. WORDS) TO SAVE AREA LOWCOR, AND
830 ; COPY PROPER BOOT TO LOW CORE.
831 ;
832 ; NOTE THAT R1 POINTS TO ABSOLUTE ZERO, KT-11 OR NOT
833 ;
834 002630 013705 000002' MOV DRVADR,R5 ;;;GET DRIVER ADDRESS BACK
835 002634 016503 000004 MOV DRVBOT(R5),R3 ;;;GET ADDRESS OF BOOT CODE
836 002640 012702 000064' MOV #LOWCOR,R2 ;;;POINT TO SAVE AREA
837 002644 012704 000400 MOV #256.,R4 ;;;COPY 256. WORDS
838 002650 41$:
839 002650 011122 MOV (R1),(R2)+ ;;;MOVE A WORD TO SAVE AREA
840 002652 012321 MOV (R3)+,(R1)+ ;;; AND COPY A WORD OF BOOT
841 002654 077403 SOB R4,41$ ;;;COPY ALL 256
842 ;
843 002656 010041 MOV R0,-(R1) ;;;SAVE BOOT PARAMETER AT LOCATION 776
844 002660 PUSH <R1,R2> ;;;SAVE POINTERS FOR RESTORE
002660 010146 MOV R1,-(SP)
002662 010246 MOV R2,-(SP)
845 ;
846 ; WHAT'S ON THE STACK?
847 ;
848 ; SP+00 R2 (RESTORE POINTER TO SAVE AREA)
849 ; SP+02 R1 (RESTORE POINTER TO LOW CORE)
850 ; KT-11 ONLY:
851 ; SP+04 KERNAL SP
852 ; SP+06 STKLIM
853 ; SP+10 POINTERS TO KT-11 REGISTERS TO RESTORE
854 ; SP+12
855 ; SP+14
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 28-2
SAVE SYSTEM STATE
856 ; SP+16
857 ; SP+20 KT-11 REGISTERS
858 ; ...
859 ; SP+116
860 ;
861 ; SP+NN (BOTTOM OF STACK) USER PS FROM .INH
862 ;
863 ; SO LET'S SAVE SP IN SPSAVE
864 ;
865 002664 010637 000000' MOV SP,SPSAVE ;;;SAVE SP UNTIL WE RESTORE
866 ; BR WTSAVE ;;;NOW WRITE SAVE FILE AND BOOT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 29
WRITE SAVE FILE AND BOOT
868 .SBTTL WRITE SAVE FILE AND BOOT
869 ;
870 ; WRITE SAVE FILE. DSK ADDRESS IS IN DSKADR+0 AND DSKADR+2
871 ;
872 002670 WTSAVE:
873 002670 105337 000047' DECB WSFLAG ;;;WRITE SAVE FILE?
874 002674 002012 BGE 10$ ;;;YES-- GO DO IT
875 002676 105337 000046' DECB WBFLAG ;;; /WB SPECIFIED?
876 002702 002414 BLT RESTORE ;;;NO-- ALL DONE WITH SAVE-- BRING SYSTEM BACK UP
877 002704 005037 000004' CLR DSKADR+0 ;;;YES-- WRITE BOOT TO BLOCK 0
878 002710 005037 000006' CLR DSKADR+2 ;;; . . .
879 002714 012737 000010 000014' MOV #256.*2/100,MEMSIZ ;;;GET # 100 BYTE BLOCKS TO WRITE
880 002722 10$:
881 002722 013705 000002' MOV DRVADR,R5 ;;;GET ADDRESS OF DEVICE DRIVER TABLE ENTRY
882 002726 CALL @DRVWRT(R5) ;;;CALL PROPER WRITE ROUTINE
002726 004775 000006 JSR PC,@DRVWRT(R5)
883 002732 000756 BR WTSAVE ;;;GO BACK AND DO WRITE AGAIN
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 30
RESTORE SYSTEM STATE
885 .SBTTL RESTORE SYSTEM STATE
886 ;
887 ; TRANSFER HERE ON TWO CONDITIONS:
888 ; 1) FROM BOOTSTRAP WITH FRESHLY BOOT'ED SYSTEM
889 ; 2) FROM SAVE COMPLETING A WRITE OF THE SYSTEM IMAGE
890 ;
891 ; THE ACTION IS THE SAME IN EITHER CASE.
892 ;
893 002734 RESTORE::
894 002734 013706 000000' MOV SPSAVE,SP ;;;RESTORE OUR STACK
895 ; SEE IF CHK11 IS TO RUN
896 002740 017600 000002 MOV @2(SP),R0 ;;; GET BOOT PARAMETERS FROM 776
897 002744 010037 000000G MOV R0,.BTPRM ;;; SAVE IN EXEC
898 002750 032700 000001 BIT #BP.SWR,R0 ;;; SWITCH REGISTER BOOT ?
899 002754 001411 BEQ CKDONE ;;; BRANCH IF NOT
900 002756 032700 000006 BIT #BP.LD1!BP.LD0,R0 ;;; BITS 1 OR 2 UP ?
901 002762 001006 BNE CKDONE ;;; BRANCH IF NO CHK11
902 002764 CALL CHK.11 ;;; DO SYSINI
002764 004737 011476' JSR PC,CHK.11
903 002770 122 123 130 .ASCIZ \RSX-20F\
002773 055 062 060
002776 106 000
904 003000 CKDONE:
905 ;
906 ; RESTORE LOW CORE FROM SAVE AREA
907 ;
908 003000 013706 000000' MOV SPSAVE,SP ;;;RESET THE STACK POINTER(CHK11 DESTROYS)
909 003004 POP <R2,R1> ;;;RESTORE SAVED POINTERS TO CORE
003004 012602 MOV (SP)+,R2
003006 012601 MOV (SP)+,R1
910 .IF DF M$$MGE
911 MOV #77406,UPDR1 ;;;MAP ALL OF
912 CLR UPAR1 ;;; LOW CORE TO 20000
913 .IFTF
914 003010 012100 MOV (R1)+,R0 ;;;GET BOOT PARAMETER FROM LOCATION 776
915 003012 012705 000400 MOV #256.,R5 ;;;RESTORE ALL 256 WORDS
916 003016 20$:
917 003016 014241 MOV -(R2),-(R1) ;;;RESTORE A WORD
918 003020 077502 SOB R5,20$ ;;;LOOP FOR WHOLE BLOCK
919 ;
920 ; RESTORE KT-11 REGISTERS (IF ANY)
921 ;
922 .IFT
923 MTPI SP ;;;RESTORE KERNAL SP
924 POP STKLIM ;;; AND STACK LIMIT
925 ;
926 POP <R4,R3,R2,R1> ;;;RESTORE SAVED POINTERS TO KT-11
927 MOV #8.,R5 ;;;8 REGISTERS PER SET
928 30$:
929 POP <-(R4),-(R3),-(R2),-(R1)> ;;;RESTORE 4 REGISTERS
930 SOB R5,30$ ;;;LOOP FOR ALL REGISTERS
931 .ENDC
932 003022 005037 000062' CLR ALTDXF ;;; +++006 RESET THE FLOPPY FLAG
933 003026 013700 000000G MOV .BTPRM,R0 ;;; R0 NEEDS BOOT PARAMETER
934 ; BR SETCTY ;;;ONWARD!!
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 31
RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
936 .SBTTL RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
937 ;
938 ; SET THE CTY TO THE LINE INDICATED BY THE BOOT PARAMETER, NOW IN R0
939 ;
940 003032 SETCTY:
941 003032 010005 MOV R0,R5 ;;;ALSO SAVE BOOT PARAM FOR US TO USE
942 003034 042700 177607 BIC #^C<BP.CSP>,R0 ;;;TRIM TO CONSOLE SPEED, BITS 6-3
943 003040 001450 BEQ SETDL ;;; +++005 CTY NOT SPEC-- LEAVE IT ALONE
944 003042 012704 000000G MOV #DLTBL,R4 ;;;ASSUME DL-11
945 003046 006200 ASR R0 ;;;SHIFT THE SPEED FIELD
946 003050 006200 ASR R0 ;;; OVER TO A WORD INDEX INTO TABLE, BITS 4-1
947 003052 016003 001124' MOV DHSTAB(R0),R3 ;;;GET THE SPEED WORD FOR THE SPECIFIED TYPE
948 003056 001406 BEQ 50$ ;;;NOT A DH-11-- GO ON FOR DL-11
949 ;
950 003060 010504 MOV R5,R4 ;;;DH-11-- GET THE PARAM AGAIN
951 003062 042704 174377 BIC #^C<BP.UNT>,R4 ;;;TRIM TO DH UNIT NUMBER, BITS 10-8
952 003066 006204 ASR R4 ;;;SHIFT INTO PLACE, 16*8=128 BYTES PER DH UNIT, BITS 9-7
953 003070 062704 000000G ADD #DHTBL,R4 ;;;GET DH UNIT TABLE ADDRESS
954 003074 50$:
955 003074 010500 MOV R5,R0 ;;;GET THE WORD BACK
956 003076 042700 103777 BIC #^C<BP.CLN>,R0 ;;;GET JUST LINE NUMBER, BITS 14-11
957 003102 000300 SWAB R0 ;;;MAKE THAT 8 BYTES PER LINE, BITS 6-3
958 003104 060004 ADD R0,R4 ;;;GET TABLE ADDRESS OF NEW CTY
959 ;
960 003106 006200 ASR R0 ;;;GET LINE NUMBER *4
961 003110 006200 ASR R0 ;;; LINE NUMBER *2, WORD INDEX
962 003112 016037 000000G 000000G MOV BITTBL(R0),$BTMSK ;;;GET THE BIT FOR THE LINE TO DH BIT MASK FOR CTY
963 003120 006200 ASR R0 ;;;GET LINE NUMBER WITHIN DH UNIT
964 003122 010037 000000G MOV R0,$UNIT ;;;STORE THAT UNIT NUMBER
965 ;
966 003126 013700 000000G MOV CTYPTR,R0 ;;;GET OLD CTY TABLE ENTRY POINTER
967 003132 042760 000000G 000000G BIC #TT.CTY,STSW1(R0) ;;;MARK NOT THE CTY ANY MORE
968 003140 010437 000000G MOV R4,CTYPTR ;;;SET THE NEW CTY TABLE ENTRY
969 003144 010437 000000C MOV R4,.DQPBA+<Q.SZ*<D.CCTY-1>>+Q.DA ;;;SET THE -10 CTY POINTER TO US, ALSO
970 003150 052764 000000G 000000G BIS #TT.CTY,STSW1(R4) ;;;SET THIS AS THE CTY
971 003156 010364 000000G MOV R3,STSW0(R4) ;;;SET DH PARAMETERS FROM SPEED
972 ;
973 ; RESET DL11 TABLE FOR CONFIGURATION
974 ;
975 003162 SETDL:
976 003162 012737 000000G 000000C MOV #KBS0,DLTBL+TTYEXP ;;; INIT THE EXTERNAL PAGE ADDRESSES
977 003170 012737 000000G 000000C MOV #KBS1,DLTBL+TTYEXP+10
978 003176 012737 175630 000000C MOV #175630,DLTBL+TTYEXP+20
979 003204 012737 175640 000000C MOV #175640,DLTBL+TTYEXP+30
980 003212 012737 175650 000000C MOV #175650,DLTBL+TTYEXP+40 ;;; SO
981 003220 013746 000004 MOV @#4,-(SP) ;;; [4.1.1138] SAVE THE TRAP-AT-4 VECTOR
982 003224 012737 003254' 000004 MOV #10$,@#4 ;;; [4.1.1138] SET UP ALTERNATE
983 003232 012700 000000G MOV #KBS1,R0 ;;; [4.1.1138] POINT TO THE KLINIK LINE
984 003236 032710 010000 BIT #DL.CAR,(R0) ;;; [4.1.1138] IS CARRIER UP??
985 003242 001005 BNE 20$ ;;; [4.1.1138] YES -- GO ON
986 003244 005010 CLR (R0) ;;; [4.1.1138] NO -- RESET IT
987 003246 005060 000004 CLR 4(R0) ;;; [4.1.1138] SO
988 003252 000401 BR 20$ ;;; [4.1.1138] RESTORE TRAP VECTOR
989 ;
990 003254 10$:
991 003254 032626 BIT (SP)+,(SP)+ ;;; [4.1.1138] FLUSH TRAP PS/PC
992 003256 20$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 31-1
RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
993 003256 012637 000004 MOV (SP)+,@#4 ;;; [4.1.1138] RESTORE TRAP VECTOR
994 ;
995 ; RESET DH TABLE SO THAT WE CAN CONFIGURE UP
996 ;
997 003262 SETDH:
998 003262 012700 160020 MOV #DHEXPA,R0 ;;;GET EXT PAGE ADDR OF FIRST DH
999 003266 012701 000000C MOV #DHTBL+TTYEXP,R1 ;;; AND TABLE ADDRESS FOR SAME
1000 003272 10$:
1001 003272 012702 000020 MOV #16.,R2 ;;;# LINES PER DH
1002 003276 20$:
1003 003276 010011 MOV R0,(R1) ;;;SET THIS DH EXTERNAL PAGE ADDRESS
1004 003300 062701 000010 ADD #8.,R1 ;;;BUMP TO NEXT TABLE ENTRY
1005 003304 077204 SOB R2,20$ ;;;LOOP FOR ALL LINES IN THIS DH
1006 ;
1007 003306 062700 000020 ADD #DHEXPZ,R0 ;;;BUMP TO NEXT DH
1008 003312 020127 000000G CMP R1,#TTYEND ;;;END OF TABLE YET?
1009 003316 103765 BLO 10$ ;;;NO-- DO NEXT DH
1010 ;
1011 ; HERE TO RESET THE DM-11/BB TABLE
1012 ;
1013 003320 SETDM:
1014 003320 012700 170500 MOV #DMEXPA,R0 ;;; [4.1.1091] EXTERNAL PAGE ADDRESS OF FIRST DM-11/BB
1015 003324 012701 000000G MOV #DMTBL,R1 ;;; [4.1.1091] POINT TO THE DM-11/BB TABLE
1016 003330 012702 000010 MOV #8.,R2 ;;; [4.1.1091] MAX NUMBER OF DM-11/BB'S
1017 003334 10$:
1018 003334 010011 MOV R0,(R1) ;;; [4.1.1091] SET THE EXTERNAL PAGE ADDRESS
1019 003336 032121 BIT (R1)+,(R1)+ ;;; [4.1.1091] BUMP THE TABLE POINTER
1020 003340 062700 000010 ADD #10,R0 ;;; [4.1.1091] AND THE EXTERNAL PAGE ADDRESS
1021 003344 077205 SOB R2,10$ ;;; [4.1.1091] LOOP THROUGH ALL DM-11/BB'S
1022 ; BR REDSY ;;;CONTINUE . .
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 32
RESTORE -- REDIRECT SY0: TO BOOT DEVICE
1024 .SBTTL RESTORE -- REDIRECT SY0: TO BOOT DEVICE
1025 ;
1026 ; IF THIS WAS A SAVE TO SY, REDIRECT SY TO POINT TO BOOT UNIT
1027 ;
1028 003346 REDSY:
1029 003346 010501 MOV R5,R1 ;;;GET BACK THE BOOT PARAM
1030 003350 106301 ASLB R1 ;;;SHIFT BITS 6-4 INTO 7-5
1031 003352 120127 000060 CMPB R1,#3*BIT4 ;;;IS SPEED FIELD 0-2?
1032 003356 103401 BLO 10$ ;;;YES-- UNIT # IS OK
1033 003360 005001 CLR R1 ;;;NO-- 3-17-- UNIT # IS ZERO
1034 003362 10$:
1035 003362 000301 SWAB R1 ;;;BRING UNIT # INTO BITS 2-0
1036 003364 042701 177770 BIC #^C<7>,R1 ;;;TRIM TO THREE BITS
1037 ;
1038 003370 013700 000042' MOV DEVNAM,R0 ;;;GET DEVICE NAME
1039 003374 CALL FINDEV ;;;ATTEMPT TO FIND BOOT DEVICE
003374 004737 006654' JSR PC,FINDEV
1040 003400 103004 BCC 30$ ;;;GOT IT-- OK
1041 003402 013705 000040' MOV PUDADR,R5 ;;;NOT FOUND-- GET OLD PUD ENTRY ADDRESS
1042 003406 110165 000000G MOVB R1,U.UN(R5) ;;;MAKE IT THE NEW UNIT #
1043 003412 30$:
1044 003412 010504 MOV R5,R4 ;;;SAVE THE PUD ENTRY ADDRESS
1045 003414 005037 000040' CLR PUDADR ;;;ASSUME FAILURE
1046 003420 012700 054523 MOV #"SY,R0 ;;;GET THE
1047 003424 005001 CLR R1 ;;; PUD ENTRY ADDRESS
1048 003426 CALL FINDEV ;;; FOR SY0:
003426 004737 006654' JSR PC,FINDEV
1049 003432 103547 BCS DTECHK ;;;OOPS-- GIVE UP
1050 003434 010465 000000G MOV R4,U.RP(R5) ;;;REDIRECT SY0 TO BOOT DEVICE
1051 003440 010405 MOV R4,R5 ;;;GET BOOT PUD ENTRY ADDRESS BACK
1052 003442 010537 000040' MOV R5,PUDADR ;;; AND SAVE IT
1053 ;
1054 ; UPDATE ALL TASKS FROM OLD SAVE DEVICE TO NEW SYSTEM DEVICE
1055 ;
1056 003446 40$:
1057 003446 010500 MOV R5,R0 ;;;COPY THE PUD ADDRESS
1058 003450 162700 000000G SUB #.PUDBA,R0 ;;;MAKE IT INDEX INTO PUD
1059 003454 012701 000000G MOV #U.SZ,R1 ;;;SET ENTRY SIZE AS DIVISOR
1060 003460 CALL $DIV ;;;COMPUTE PUD INDEX FOR NEW SY INTO R0
003460 004737 000000G JSR PC,$DIV
1061 ;
1062 003464 013703 000000G MOV .STDTA,R3 ;;;GET THE ADDRESS OF THE BEGINNING OF SYSTEM TASK DIRECTORY
1063 003470 010304 MOV R3,R4 ;;;COPY IT AGAIN
1064 003472 063704 000000G ADD .STDTZ,R4 ;;;FIND ADDRESS OF LAST ENTRY IN STD
1065 003476 45$:
1066 003476 012302 MOV (R3)+,R2 ;;;GET AN STD ENTRY ADDRESS
1067 003500 032762 000000G 000000G BIT #SF.FX,S.FW(R2) ;;;FIXED TASK (I.E. NOT DISK-LOADED)?
1068 003506 001006 BNE 47$ ;;;YES-- DON'T CHANGE IT'S DISK
1069 003510 126237 000000G 000045' CMPB S.DI(R2),PUDIDX ;;;IS THIS TASK FROM ORIGINAL SAVE DEVICE?
1070 003516 001002 BNE 47$ ;;;NO-- GO ON
1071 003520 110062 000000G MOVB R0,S.DI(R2) ;;;YES-- UPDATE DISK INDICATOR TO NEW SYSTEM DEVICE
1072 003524 47$:
1073 003524 020304 CMP R3,R4 ;;;AT END OF STD YET?
1074 003526 101763 BLOS 45$ ;;;NO-- KEEP LOOPING FOR ALL TASKS
1075 ; BR RP4CHK ;;;MORE & MORE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 33
RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
1077 .SBTTL RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
1078 ;
1079 ; CHECK THE RP TO MAKE SURE IT IS ON-LINE AND IN A/B MODE
1080 ;
1081 003530 RP4CHK:
1082 003530 105737 000053' TSTB RHFLAG ;;;SHOULD WE CHECK THE RP?
1083 003534 001417 BEQ RP6CHK ;;;NO-- JUST GO ON
1084 003536 116537 000000G 176710 MOVB U.UN(R5),RPCS2 ;;;YES-- SET TO PROPER UNIT #
1085 003544 032737 010000 176712 BIT #RPMOL,RPDS ;;;IS THE RP ON-LINE?
1086 003552 001002 BNE 35$ ;;;YES-- GO ON
1087 003554 105237 000054' INCB RNFLAG ;;;NO-- REMEMBER THAT IT ISN'T
1088 003560 35$:
1089 003560 032737 001000 176712 BIT #RPPGM,RPDS ;;;PROGRAMMABLE MODE (A/B)?
1090 003566 001002 BNE RP6CHK ;;;YES-- ALL OK
1091 003570 105237 000055' INCB RPFLAG ;;;NO-- REMEMBER THAT IT ISN'T
1092 ;
1093 ; CHECK TO FIND ALL THE RP06'S MASQUERADING AS RP04'S
1094 ;
1095 003574 RP6CHK:
1096 003574 042737 030000 177776 BIC #PS.PUS,@#PS ;;;INSURE PREVIOUS KERNAL
1097 003602 012704 000006 MOV #6,R4 ;;;POINT TO TIME-OUT TRAP
1098 003606 MFPI (R4) ;;;SAVE PS OF TRAP
003606 011446 MOV (R4),-(SP)
1099 003610 MFPI -(R4) ;;; AND PC
003610 014446 MOV -(R4),-(SP)
1100 003612 MTPS #80$,(R4)+ ;;;SET NEW PC
003612 012724 003742' MOV #80$,(R4)+
1101 003616 MTPS @#PS,(R4) ;;; AND PS AS CURRENT STATE
003616 013714 177776 MOV @#PS,(R4)
1102 003622 012700 041104 MOV #"DB,R0 ;;;WE ARE CHECKING DB'S
1103 003626 012701 000007 MOV #7,R1 ;;; AND THERE ARE 8 OF THEM
1104 003632 10$:
1105 003632 CALL FINDEV ;;;FIND THIS DB UNIT IN PUD
003632 004737 006654' JSR PC,FINDEV
1106 003636 103436 BCS 70$ ;;;NOT THERE-- CARRY ON
1107 003640 012765 050700 000000G MOV #50700,U.LBN(R5) ;;;ASSUME RP04-- SET LOW PART OF VOLUME SIZE
1108 003646 112765 000002 000000G MOVB #2,U.LBH(R5) ;;; AND HIGH PART
1109 003654 110137 176710 MOVB R1,RPCS2+0 ;;;SELECT THIS UNIT
1110 003660 032737 001400 176712 BIT #RPDPR!RPPGM,RPDS ;;;DRIVE EXIST FOR US?
1111 003666 001422 BEQ 70$ ;;;NO-- SKIP IT
1112 003670 012702 023420 MOV #10000.,R2 ;;;SET TIME-OUT COUNT IF PORT BUSY
1113 003674 20$:
1114 003674 032737 004000 176700 BIT #RPDVA,RPCS1 ;;;DRIVE AVAILABLE AT THIS TIME?
1115 003702 001004 BNE 30$ ;;;YES-- CHECK IT OUT
1116 003704 112737 000001 176700 MOVB #RPNOOP+RPGO,RPCS1+0 ;;;NO-- DO NOOP TO GET IT
1117 003712 077210 SOB R2,20$ ;;;LOOP UNTIL WE HAVE IT
1118 003714 30$:
1119 003714 123727 176726 000022 CMPB RPDT+0,#RPDT06 ;;;THIS AN RP06?
1120 003722 002404 BLT 70$ ;;;NO-- SIZE IS OK
1121 003724 006365 000000G ASL U.LBN(R5) ;;;YES-- DOUBLE
1122 003730 106165 000000G ROLB U.LBH(R5) ;;; THE VOLUME SIZE
1123 003734 70$:
1124 003734 005301 DEC R1 ;;;COUNT DOWN TO NEXT UNIT #
1125 003736 002335 BGE 10$ ;;;NOT DONE-- LOOP FOR ALL 8
1126 003740 000401 BR 90$ ;;;ALL DONE-- GO ON
1127 ;
1128 003742 80$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 33-1
RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
1129 003742 022626 CMP (SP)+,(SP)+ ;;;TIME-OUT TRAP-- REMOVE TRAP FROM STACK
1130 003744 90$:
1131 003744 MTPI -(R4) ;;;RESTORE TRAP AT 4 PC
003744 012644 MOV (SP)+,-(R4)
1132 003746 MTPI 2(R4) ;;; AND PS
003746 012664 000002 MOV (SP)+,2(R4)
1133 ; BR DTECHK ;;;CARRY ON
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 34
RESTORE -- CHECK ALL THE DTE-20'S
1135 .SBTTL RESTORE -- CHECK ALL THE DTE-20'S
1136 ;
1137 ; CHECK TO MAKE SURE THAT ALL DTE-20'S ARE AT PRIORITY 6
1138 ;
1139 003752 DTECHK:
1140 003752 005000 CLR R0 ;;;RESET DTE #
1141 003754 012701 001000 MOV #DTVECA+4,R1 ;;;POINT TO HIGHEST DTE VECTOR ADDRESS
1142 003760 012702 174400 MOV #DTEXPA,R2 ;;; ALSO TO EXTERNAL PAGE ADDRESS FOR #0
1143 003764 005003 CLR R3 ;;;RESET POINTER TO THE PRIVILEDGED DTE
1144 003766 105337 000061' DECB DEFLAG ;;;SAY DTE-20 OK
1145 ;
1146 003772 042737 030000 177776 BIC #PS.PUS,@#PS ;;;INSURE PREVIOUS KERNAL
1147 004000 012704 000006 MOV #6,R4 ;;;POINT TO TIMEOUT VECTOR
1148 004004 MFPI (R4) ;;;SAVE THE PS
004004 011446 MOV (R4),-(SP)
1149 004006 MFPI -(R4) ;;; AND PC FOR TIMEOUT
004006 014446 MOV -(R4),-(SP)
1150 004010 MTPS #60$,(R4)+ ;;;SET WHERE TO GO ON NON-EX DTE
004010 012724 004112' MOV #60$,(R4)+
1151 004014 MTPS @#PS,(R4) ;;; AND HOW TO GET THERE
004014 013714 177776 MOV @#PS,(R4)
1152 004020 10$:
1153 004020 MFPI -(R1) ;;;SAVE PS OF THIS DTE VECTOR
004020 014146 MOV -(R1),-(SP)
1154 004022 MFPI -(R1) ;;; AND PC
004022 014146 MOV -(R1),-(SP)
1155 004024 MTPS #50$,(R1)+ ;;;WHERE TO GO IF IT INTERRUPTS
004024 012721 004104' MOV #50$,(R1)+
1156 004030 MTPS @#PS,(R1) ;;; AND HOW SUCH
004030 013711 177776 MOV @#PS,(R1)
1157 ;
1158 004034 005712 TST (R2) ;;;DTE EXIST? (TRAP IF NOT TO 60$)
1159 004036 032762 000010 000034 BIT #DTRSMD,DTSTAT(R2) ;;;THIS PRIVILEDGED DTE-20?
1160 004044 001402 BEQ 20$ ;;;YES-- THIS IS THE ONE
1161 004046 005703 TST R3 ;;;NO-- FOUND A DTE YET?
1162 004050 001001 BNE 30$ ;;;YES-- DON'T REMEMBER THIS ONE
1163 004052 20$:
1164 004052 010203 MOV R2,R3 ;;;FIRST OR PRIV DTE-- SAVE IT
1165 004054 30$:
1166 004054 012762 004040 000034 MOV #DT11DB!DTINON,DTSTAT(R2) ;;;RING OUR DOORBELL (FROM THE INSIDE)
1167 004062 112737 000240 177776 MOVB #PR5,@#PS ;;;BRING DOWN TO PRI 5
1168 004070 110037 000061' MOVB R0,DEFLAG ;;;DID NOT INTERRUPT-- SAVE DTE # NOT AT PRI 6
1169 004074 024646 CMP -(SP),-(SP) ;;;FAKE TRAP ON STACK
1170 004076 152737 000340 177776 BISB #PR7,@#PS ;;;RESTORE PRI 7
1171 004104 50$:
1172 004104 012762 002010 000034 MOV #DTINOF!DTCL11,DTSTAT(R2) ;;;CLEAR RINGING DOORBELL
1173 004112 60$:
1174 004112 042737 030000 177776 BIC #PS.PUS,@#PS ;;; AND PREVIOUS MODE KERNAL
1175 004120 022626 CMP (SP)+,(SP)+ ;;;REMOVE TRAP FROM STACK
1176 004122 MTPI -(R1) ;;;RESTORE PC FOR DTE VECTOR
004122 012641 MOV (SP)+,-(R1)
1177 004124 MTPI 2(R1) ;;; AND PS
004124 012661 000002 MOV (SP)+,2(R1)
1178 004130 062702 000040 ADD #DTEXPZ,R2 ;;;BUMP TO NEXT DTE-20 EXT PAGE ADDR
1179 004134 005200 INC R0 ;;; AND COUNT UP
1180 004136 020027 000004 CMP R0,#4 ;;;DONE WITH DTE'S?
1181 004142 002726 BLT 10$ ;;;NOPE-- BACK FOR ANOTHER
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 34-1
RESTORE -- CHECK ALL THE DTE-20'S
1182 ;
1183 004144 010337 000000G MOV R3,PROTBL ;;; SET UP "DTENM" IN "PROTBL"
1184 004150 010337 000000G MOV R3,.PRDTE ;;;SAVE THE ADDRESS OF THE PRIV DTE
1185 004154 001402 BEQ 95$ ;;;NOT THERE-- LEAVE STATUS ZERO, TOO
1186 004156 062703 000034 ADD #DTSTAT,R3 ;;;BUMP TO STATUS
1187 004162 95$:
1188 004162 010337 000000G MOV R3,.PRSTA ;;;SAVE THAT ADDR, TOO
1189 ;
1190 004166 MTPI -(R4) ;;;RESTORE PC OF TIMEOUT TRAP
004166 012644 MOV (SP)+,-(R4)
1191 004170 MTPI 2(R4) ;;; AND PS
004170 012664 000002 MOV (SP)+,2(R4)
1192 004174 013700 000000G MOV .BTPRM,R0 ;;;GET BOOT PARAMETER WORD AND
1193 004200 042700 177771 BIC #^C<BP.LD1!BP.LD0>,R0 ;;;ISOLATE THE LOAD SWITCHES
1194 004204 022700 000004 CMP #BP.LD1,R0 ;;;IF SWITCHES = 10
1195 004210 001004 BNE SYSTRT ;;;THEN
1196 004212 005037 000000G CLR .NOERR ;;;ALLOW ERRORS
1197 004216 CALL ..DTP2 ;;;START SECONDARY PROTOCOL AND
004216 004737 000000G JSR PC,..DTP2
1198 ; BR SYSTRT ;;;START SYSTEM GOING
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 35
RESTORE -- RESTART SYSTEM AND TYPE HERALD
1200 .SBTTL RESTORE -- RESTART SYSTEM AND TYPE HERALD
1201 ;
1202 ; FORCE POWER-RECOVERY AST BY SETTING EV.PF AND
1203 ; FAKING AN ENABLE TASK SWITCHING REQUEST (FROM PR3 TO PR0)
1204 ;
1205 004222 SYSTRT:
1206 004222 005037 000000G CLR .DATE3 ;;;INDICATE THAT THE DATE IS NOW INVALID
1207 004226 005037 000000G CLR .CPUSN ;;; [TCO 4.2333] INVALIDATE SERIAL NUMBER
1208 004232 005037 000000G CLR .HRDWR ;;; [TCO 4.2233] AND HARDWARE OPTIONS
1209 004236 012737 000000G 000000G MOV #EV.PF,.SERFG ;;;SET POWER-RECOVERY SIGNIFICANT EVENT
1210 004244 CALL ..ENB0 ;ENABLE TASK SWITCHING
004244 004737 000000G JSR PC,..ENB0
1211 ;
1212 ; SEE IF WRITE ERROR OCCURED DURING SAVE (WEFLAG NON-ZERO)
1213 ;
1214 004250 105737 000060' TSTB WEFLAG ;WRITE SUCCESFUL?
1215 004254 001404 BEQ DTEMSG ;YES-- ALL OK
1216 004256 ERROR <Write error>
000440 011 127 162 .ASCIZ ""<11>"Write error"<5>""
000443 151 164 145
000446 040 145 162
000451 162 157 162
000454 005 000
004256 012746 000440' MOV #$$$,-(SP)
004262 004737 006074' JSR PC,TYPMSG
1217 ;
1218 ; SEE IF DTE-20 PRIORITY CHECK FAILED
1219 ;
1220 004266 DTEMSG:
1221 004266 005737 000000G TST .PRDTE ;DID WE FIND A DTE-20
1222 004272 001007 BNE DTPMSG ;YES-- SEE IF OK
1223 004274 005037 000000G CLR .PRSTA ;IF HE CONTINUES . . .
1224 004300 TYPE <"<11>"No DTE-20"<1>">
000456 011 116 157 .ASCIZ ""<11>"No DTE-20"<1>""
000461 040 104 124
000464 105 055 062
000467 060 001 000
004300 012746 000456' MOV #$$$,-(SP)
004304 004737 006074' JSR PC,TYPMSG
1225 004310 000407 BR DTPMS1 ;GO FLOP
1226 ;
1227 004312 DTPMSG:
1228 004312 113700 000061' MOVB DEFLAG,R0 ;WE FAIL THE CHECK?
1229 004316 002414 BLT SYSMSG ;NO-- ALL OK
1230 004320 TYPE <"<11>"DTE-20 #"<7>" not at priority level 6"<1>">
000472 011 104 124 .ASCIZ ""<11>"DTE-20 #"<7>" not at priority level 6"<1>""
000475 105 055 062
000500 060 040 043
000503 007 040 156
000506 157 164 040
000511 141 164 040
000514 160 162 151
000517 157 162 151
000522 164 171 040
000525 154 145 166
000530 145 154 040
000533 066 001 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 35-1
RESTORE -- RESTART SYSTEM AND TYPE HERALD
004320 012746 000472' MOV #$$$,-(SP)
004324 004737 006074' JSR PC,TYPMSG
1231 004330 DTPMS1:
1232 004330 .INH ;;;BACK UP TO NOTHING-NESS
004330 013746 177776 MOV PS,-(SP)
004334 112737 000340 177776 MOVB #PR7,@#PS ;;
1233 004342 000777 BR . ;;;WAIT FOR SOMEONE TO PICK UP THE PIECES
1234 004344 .ENB ;;;THE PIECES HAVE BEEN PICKED UP
004344 012637 177776 MOV (SP)+,@#PS ;;
1235 ;
1236 ; TYPE SYSTEM MESSAGE
1237 ;
1238 004350 SYSMSG:
1239 004350 012700 000000G MOV #.VERNO,R0 ; +++003 POINT TO VERSION # STRING
1240 004354 TYPE <"<1><1>"RSX-20F "<4>" "<6><1><1>"> ; +++003
000536 001 001 122 .ASCIZ ""<1><1>"RSX-20F "<4>" "<6><1><1>""
000541 123 130 055
000544 062 060 106
000547 040 004 040
000552 006 001 001
000555 000
004354 012746 000536' MOV #$$$,-(SP)
004360 004737 006074' JSR PC,TYPMSG
1241 ; BR MNTSY ;UPWARD
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 36
RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
1243 .SBTTL RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
1244 ;
1245 ; TYPE REDIRECTED MESSAGE, MOUNT SY IF SO
1246 004364 MNTSY: ; +++001
1247 004364 013705 000040' MOV PUDADR,R5 ;GET THE PUD ENTRY FOR THE SY DEVICE
1248 004370 001503 BEQ REDHOM ; +++006 GIVE UP IF NONE
1249 004372 005037 000062' CLR ALTDXF ; +++006 RESET THE FLOPPY FLAG
1250 004376 TYPE <[SY0: redirected to "<3>"]"<1>">
000556 133 123 131 .ASCIZ "[SY0: redirected to "<3>"]"<1>""
000561 060 072 040
000564 162 145 144
000567 151 162 145
000572 143 164 145
000575 144 040 164
000600 157 040 003
000603 135 001 000
004376 012746 000556' MOV #$$$,-(SP)
004402 004737 006074' JSR PC,TYPMSG
1251 004406 MNTSY1: ; +++006
1252 004406 ALUN$S #DSKLUN,U.DN(R5),U.UN(R5) ;ASSIGN THE DEVICE
004406 016546 000000G MOV U.UN(R5),-(SP)
004412 016546 000000G MOV U.DN(R5),-(SP)
004416 012746 000002 MOV #DSKLUN,-(SP)
004422 012746 MOV (PC)+,-(SP)
004424 007 004 .BYTE 7.,4
004426 104375 EMT 375
1253 004430 103422 BCS MNTSY2 ; +++001 OOPS -- SEE IF OTHER FLOPPY MOUNT NEEDED
1254 004432 005765 000000G TST U.VA(R5) ;VOLUME ALREADY MOUNTED?????
1255 004436 001060 BNE REDHOM ;YES-- SKIP THIS
1256 004440 CALL FNDACP ;NO-- FIND ACP FOR DEVICE
004440 004737 006712' JSR PC,FNDACP
1257 004444 010265 000000G MOV R2,U.ACP(R5) ;AND SET IT FOR MOUNT
1258 004450 012702 001110' MOV #MNTBLK,R2 ;GOT IT-- POINT TO MOUNT
1259 004454 PUSH R5 ; +++006 SAVE R5
004454 010546 MOV R5,-(SP)
1260 004456 CALL FILMNT ;MOUNT DEVICE
004456 004737 006732' JSR PC,FILMNT
1261 004462 POP R5 ; +++006 RESTORE R5
004462 012605 MOV (SP)+,R5
1262 004464 103014 BCC SYMNTD ;MOUNTED
1263 004466 WARN <Mount "<10>" error "<7>">
000606 012 115 157 .ASCIZ ""<12>"Mount "<10>" error "<7>""<1>""
000611 165 156 164
000614 040 010 040
000617 145 162 162
000622 157 162 040
000625 007 001 000
004466 012746 000606' MOV #$$$,-(SP)
004472 004737 006074' JSR PC,TYPMSG
1264 004476 MNTSY2:
1265 004476 026527 000000G 054104 CMP U.DN(R5),#"DX ; +++006 MOUNT DX: FAIL??
1266 004504 001035 BNE REDHOM ; +++006 NO -- GO ON
1267 004506 005737 000062' TST ALTDXF ; +++006 YES -- WAS IT THE BOOT DEVICE??
1268 004512 001405 BEQ SYMNT1 ; +++006 YES -- TRY TO MOUNT THE OTHER (AND HOPE...)
1269 004514 000431 BR REDHOM ; +++006 NO -- TRY TO READ HOME BLOCKS
1270 ;
1271 004516 SYMNTD:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 36-1
RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
1272 004516 TYPE <["<10>" mounted]"<1>">
000630 133 010 040 .ASCIZ "["<10>" mounted]"<1>""
000633 155 157 165
000636 156 164 145
000641 144 135 001
000644 000
004516 012746 000630' MOV #$$$,-(SP)
004522 004737 006074' JSR PC,TYPMSG
1273 004526 SYMNT1: ; +++006 HERE TO MOUNT "OTHER" FLOPPY
1274 004526 016500 000000G MOV U.DN(R5),R0 ; +++006 DEVICE NAME TO R0
1275 004532 016501 000000G MOV U.UN(R5),R1 ; +++006 DEVICE NUMBER TO R1
1276 004536 022700 054104 CMP #"DX,R0 ; +++006 IS IT A DX??
1277 004542 001016 BNE REDHOM ; +++006 NO -- SEE IF IT HAS HOME BLOCKS
1278 004544 005101 COM R1 ; +++006 NO -- FIND THE "OTHER" FLOPPY DEVICE NUMBER
1279 004546 042701 177776 BIC #^C1,R1 ; +++006 EITHER "0" OR "1"
1280 004552 005237 000062' INC ALTDXF ; +++006 MARK THAT WE LOOKING FOR THE "OTHER" ONE
1281 004556 CALL FINDEV ; +++006 FIND ITS "PUD" ENTRY
004556 004737 006654' JSR PC,FINDEV
1282 004562 010537 000040' MOV R5,PUDADR ; +++006 SET UP "PUDADR"
1283 004566 103307 BCC MNTSY1 ; +++006 ALL OK -- TRY TO MOUNT IT
1284 004570 WARN <CANNOT FIND SECOND DX:>
000645 012 103 101 .ASCIZ ""<12>"CANNOT FIND SECOND DX:"<1>""
000650 116 116 117
000653 124 040 106
000656 111 116 104
000661 040 123 105
000664 103 117 116
000667 104 040 104
000672 130 072 001
000675 000
004570 012746 000645' MOV #$$$,-(SP)
004574 004737 006074' JSR PC,TYPMSG
1285 ; BR REDHOM ;GO READ THE HOM BLOCKS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 37
RESTORE -- READ HOM BLOCKS ON BOOT DB
1287 .SBTTL RESTORE -- READ HOM BLOCKS ON BOOT DB
1288 ;
1289 ; READ HOM BLOCKS FROM DB0 TO SEE IF WE HAVE A FILE SYSTEM ON IT
1290 ;
1291 004600 REDHOM:
1292 004600 105737 000053' TSTB RHFLAG ;SHOULD WE READ THE HOM BLOCKS?
1293 004604 001542 BEQ RQSKLR ; +++001 NO-- JUST CHECK KLINIK LINE
1294 004606 105737 000054' TSTB RNFLAG ;RP NOT READY?
1295 004612 001113 BNE RNRERR ;YES-- COMPLAIN
1296 004614 105737 000055' TSTB RPFLAG ;RP IN PROGRAMMABLE (A/B) MODE?
1297 004620 001404 BEQ REDHM1 ;YES-- GO WORK ON IT
1298 004622 WARN <"<10>" not in programmable (A/B) mode>
000676 012 010 040 .ASCIZ ""<12>""<10>" not in programmable (A/B) mode"<1>""
000701 156 157 164
000704 040 151 156
000707 040 160 162
000712 157 147 162
000715 141 155 155
000720 141 142 154
000723 145 040 050
000726 101 057 102
000731 051 040 155
000734 157 144 145
000737 001 000
004622 012746 000676' MOV #$$$,-(SP)
004626 004737 006074' JSR PC,TYPMSG
1299 004632 REDHM1:
1300 004632 005003 CLR R3 ;CLEAR COUNT OF # TIMES WE SAW 'HOM'
1301 004634 012705 000001 MOV #1,R5 ;START WITH HOM BLOCK AT LBN 1
1302 004640 20$:
1303 004640 012700 001000 MOV #IO.RLB,R0 ;DO A READ LOGICAL BLOCK FUNCTION
1304 004644 012701 000064' MOV #HOMBUF,R1 ; TO THE HOM BLOCK BUFFER
1305 004650 012702 001000 MOV #512.,R2 ;ONE BLOCK'S WORTH
1306 004654 005004 CLR R4 ;CLEAR LOW-ORDER LBN
1307 004656 CALL FILQIO ;DO IT TO THE DB0
004656 004737 006746' JSR PC,FILQIO
1308 004662 103462 BCS RHMERR ;ERROR-- GO REPORT IT
1309 ;
1310 004664 022711 105755 CMP #SXBTHM,(R1) ;IS THIS A SIXBIT/HOM/ BLOCK?
1311 004670 001013 BNE 30$ ;NO-- LOOK NO FARTHER
1312 004672 005703 TST R3 ;YES-- ALREADY SEEN A GOOD HOM BLOCK?
1313 004674 001010 BNE 29$ ;YES-- DON'T USE THIS ONE
1314 ;
1315 004676 012701 000370' MOV #HOMBUF+<HOMFE0*4>,R1 ;NO-- ADDRESS OUR WORDS IN HOM BLOCK
1316 004702 012702 000000G MOV #.RPADR,R2 ; AND WHERE TO STORE THEM
1317 004706 012122 MOV (R1)+,(R2)+ ;(LH HOMFE0) (.RPADR+0) HIGH-ORDER DISK ADDRESS
1318 004710 012122 MOV (R1)+,(R2)+ ;(RH HOMFE0) (.RPADR+2) LOW-ORDER DISK ADDRESS
1319 004712 012122 MOV (R1)+,(R2)+ ;(LH HOMFE1) (.RPSIZ+0) HIGH-ORDER SIZE
1320 004714 012122 MOV (R1)+,(R2)+ ;(RH HOMFE1) (.RPSIZ+2) LOW-ORDER SIZE
1321 004716 29$:
1322 004716 005203 INC R3 ;SAY WE SAW ANOTHER GOOD HOM BLOCK
1323 004720 30$:
1324 004720 005305 DEC R5 ;WERE WE LOOKING AT
1325 004722 003003 BGT 40$ ; BLOCK #1?
1326 004724 012705 000012 MOV #10.,R5 ;YES-- ALSO TRY BLOCK 10.
1327 004730 000743 BR 20$ ;BACK TO LOOK AT IT
1328 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 37-1
RESTORE -- READ HOM BLOCKS ON BOOT DB
1329 004732 40$:
1330 004732 005303 DEC R3 ;HOW MANY 'HOM' BLOCKS DID WE SEE?
1331 004734 002447 BLT ALLRXF ;0-- DISK IS ALL OURS
1332 004736 001412 BEQ HBCERR ;1-- CONSISTENCY ERROR
1333 004740 012705 000004 MOV #4,R5 ;2-- TOPS FILE SYSTEM
1334 004744 012701 000370' MOV #HOMBUF+<HOMFE0*4>,R1 ;POINT TO SECOND HOM BLOCK AREA
1335 004750 012702 000000G MOV #.RPADR,R2 ; AND TO WHAT WE GOT FROM FIRST BLOCK
1336 004754 50$:
1337 004754 022122 CMP (R1)+,(R2)+ ;CHECK FOR CONSISTENCY
1338 004756 001002 BNE HBCERR ;OOPS-- HOM BLOCKS DON'T AGREE
1339 004760 077503 SOB R5,50$ ;LOOP FOR ALL FOUR WORDS
1340 004762 000404 BR SETRXF ;CHECKS OUT-- JUST CHECK THE FLAG
1341 ;
1342 004764 HBCERR:
1343 004764 WARN <TOPS HOM block consistency error on "<10>">
000741 012 124 117 .ASCIZ ""<12>"TOPS HOM block consistency error on "<10>""<1>""
000744 120 123 040
000747 110 117 115
000752 040 142 154
000755 157 143 153
000760 040 143 157
000763 156 163 151
000766 163 164 145
000771 156 143 171
000774 040 145 162
000777 162 157 162
001002 040 157 156
001005 040 010 001
001010 000
004764 012746 000741' MOV #$$$,-(SP)
004770 004737 006074' JSR PC,TYPMSG
1344 ; BR SETRXF ;USE GOOD (OR FIRST) HOM BLOCK
1345 ;
1346 004774 SETRXF:
1347 004774 005737 000000G TST .RPADR+0 ;IS BIT 2 OF HOMFE0 (BIT 15 OF .RPADR+0) SET?
1348 005000 100442 BMI SOMRXF ;YES-- JUST CLEAR THE FLAG
1349 005002 WARN <No RSX-20F file system on "<10>">
001011 012 116 157 .ASCIZ ""<12>"No RSX-20F file system on "<10>""<1>""
001014 040 122 123
001017 130 055 062
001022 060 106 040
001025 146 151 154
001030 145 040 163
001033 171 163 164
001036 145 155 040
001041 157 156 040
001044 010 001 000
005002 012746 001011' MOV #$$$,-(SP)
005006 004737 006074' JSR PC,TYPMSG
1350 005012 NOTRXF:
1351 005012 012703 000000G MOV #.RPADR,R3 ;POINT TO AREA
1352 005016 005023 CLR (R3)+ ;CLEAR
1353 005020 005023 CLR (R3)+ ; ALL
1354 005022 005023 CLR (R3)+ ; FOUR
1355 005024 005023 CLR (R3)+ ; WORDS
1356 005026 000431 BR RQSKLR ; +++001 ALL DONE
1357 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 37-2
RESTORE -- READ HOM BLOCKS ON BOOT DB
1358 005030 RHMERR:
1359 005030 WARN <TOPS HOM block read error "<7>" on "<10>">
001047 012 124 117 .ASCIZ ""<12>"TOPS HOM block read error "<7>" on "<10>""<1>""
001052 120 123 040
001055 110 117 115
001060 040 142 154
001063 157 143 153
001066 040 162 145
001071 141 144 040
001074 145 162 162
001077 157 162 040
001102 007 040 157
001105 156 040 010
001110 001 000
005030 012746 001047' MOV #$$$,-(SP)
005034 004737 006074' JSR PC,TYPMSG
1360 005040 000411 BR ALLRX1 ;ASSUME ALL OF DISK
1361 ;
1362 005042 RNRERR:
1363 005042 WARN <"<10>" not ready>
001112 012 010 040 .ASCIZ ""<12>""<10>" not ready"<1>""
001115 156 157 164
001120 040 162 145
001123 141 144 171
001126 001 000
005042 012746 001112' MOV #$$$,-(SP)
005046 004737 006074' JSR PC,TYPMSG
1364 005052 000417 BR RQSKLR ; +++001 LEAVE ADDR/SIZE ALONE
1365 ;
1366 005054 ALLRXF:
1367 005054 WARN <No TOPS file system on "<10>">
001130 012 116 157 .ASCIZ ""<12>"No TOPS file system on "<10>""<1>""
001133 040 124 117
001136 120 123 040
001141 146 151 154
001144 145 040 163
001147 171 163 164
001152 145 155 040
001155 157 156 040
001160 010 001 000
005054 012746 001130' MOV #$$$,-(SP)
005060 004737 006074' JSR PC,TYPMSG
1368 005064 ALLRX1:
1369 005064 012703 000000G MOV #.RPADR,R3 ;ADDRESS WORDS TO SET
1370 005070 005023 CLR (R3)+ ;HIGH ADDRESS:0
1371 005072 012723 000001 MOV #1,(R3)+ ;LOW ADDRESS: BLOCK 1
1372 005076 012723 000177 MOV #177,(R3)+ ;HIGH SIZE: MAX TO 24 BITS
1373 005102 012723 177777 MOV #-1,(R3)+ ; LOW SIZE: MAX ALSO
1374 005106 SOMRXF:
1375 005106 105037 000001G CLRB .RPADR+1 ;CLEAR HIGH BYTE OF HIGH ADDRESS
1376 ; BR RQSKLR ; +++001 GO CHECK KLINIK LINE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 38
RESTORE -- CKECK STATE OF KLINIK LINE
1378 .SBTTL RESTORE -- CKECK STATE OF KLINIK LINE
1379 ;
1380 ; CHECK STATE OF KLINIK LINE
1381 ;
1382 005112 RQSKLR:
1383 005112 CLEF$S #E.FTMO ; +++001 RESET TIMEOUT FLAG
005112 012746 000002 MOV #E.FTMO,-(SP)
005116 012746 MOV (PC)+,-(SP)
005120 037 002 .BYTE 31.,2
005122 104375 EMT 375
1384 005124 013705 000000G MOV KLNPTR,R5 ; +++001 KLINIK LINE BLOCK POINTER TO R5
1385 005130 016504 000000G MOV TTYEXP(R5),R4 ; +++001 I/O PAGE ADDRESS TO R4
1386 005134 001002 BNE 5$ ; +++009 BRANCH IF WE HAVE A KLINIK LINE
1387 005136 000137 005576' JMP KLANXM ; +++009 LET THEM KNOW ABOUT NO KLINIK
1388 005142 012703 000055 5$: MOV #^D45,R3 ; +++001 SET UP?? COUNTER
1389 005146 013700 000000G MOV .BTPRM,R0 ; +++001 BOOT PARAMETERS TO R0
1390 005152 042700 177771 BIC #^C<BP.LD1!BP.LD0>,R0 ; +++001 JUST WHAT WE WANT
1391 005156 10$:
1392 005156 032714 010000 BIT #DL.CAR,(R4) ; +++001 IS CARRIER UP
1393 005162 001010 BNE 20$ ; +++001 YES -- GO ON
1394 005164 032765 000000C 000000G BIT #<TT.CRW!TT.RIP>,STSW1(R5) ; +++001 NO -- IN CARRIER WAIT??
1395 005172 001002 BNE 15$ ; +++009 TOO FAR TO BRANCH WITH ADDED CODE
1396 005174 000137 005606' JMP RQSTSK ; +++009
1397 005200 005203 15$: INC R3 ; +++001 YES -- TAKE THIS TICK BACK
1398 005202 000413 BR 30$ ; +++001 WAIT A BIT MORE
1399 ;
1400 005204 20$:
1401 005204 022700 000004 CMP #BP.LD1,R0 ; +++001 CAN PROTOCOLS RUN??
1402 005210 001034 BNE 35$ ; +++001 NO -- SO DON'T EVEN BOTHER
1403 005212 032737 000000C 000002G BIT #<EF.PR1!EF.PR2>,.COMEF+2
1404 005220 001561 BEQ PRNRUN ; +++001 PROTOCOL STOPPED -- JUST GO AWAY
1405 005222 032737 000000G 000002G BIT #EF.RKP,.COMEF+2 ; +++001 DID WE GET KLINIK PARAMETERS??
1406 005230 001024 BNE 35$ ; +++001 YES -- GO ON
1407 005232 30$:
1408 005232 MRKT$S #E.FTMO,#60. ; +++001 WAIT A BIT
005232 005046 CLR -(SP)
005234 005046 CLR -(SP)
005236 012746 000074 MOV #60.,-(SP)
005242 012746 000002 MOV #E.FTMO,-(SP)
005246 012746 MOV (PC)+,-(SP)
005250 027 005 .BYTE 23.,5
005252 104375 EMT 375
1409 005254 WTSE$S #E.FTMO ; +++001 WAIT FOR IT
005254 012746 000002 MOV #E.FTMO,-(SP)
005260 012746 MOV (PC)+,-(SP)
005262 051 002 .BYTE 41.,2
005264 104375 EMT 375
1410 005266 CLEF$S #E.FTMO ; +++001 CLEAR THE FLAG
005266 012746 000002 MOV #E.FTMO,-(SP)
005272 012746 MOV (PC)+,-(SP)
005274 037 002 .BYTE 31.,2
005276 104375 EMT 375
1411 005300 077352 SOB R3,10$ ; +++001 LOOP TILL DONE
1412 005302 35$:
1413 005302 .INH6 ; +++001 DISALLOW INTERRRUPTS
005302 013746 177776 MOV @#PS,-(SP)
005306 112737 000300 177776 MOVB #300,@#PS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 38-1
RESTORE -- CKECK STATE OF KLINIK LINE
1414 005314 032737 000000G 000002G BIT #EF.RKP,.COMEF+2 ;;; +++001 DID WE GET KLINIK PARAMETERS??
1415 005322 001413 BEQ 50$ ;;; +++001 NO -- DO DEFAULT
1416 005324 105737 000000G TSTB .KLNMD+0 ;;; +++001 YES -- DO WE HAVE PARAMETERS??
1417 005330 001410 BEQ 50$ ;;; +++001 NO -- DO DEFAULT
1418 005332 40$:
1419 005332 113737 000000G 000000G MOVB .KLNMD+0,.KLNSW+0 ;;; +++001 SET THE KLINIK MODE
1420 005340 003410 BLE 60$ ;;; +++001 EXIT IF USER
1421 005342 113737 000001G 000000G MOVB .KLNMD+1,.FEMOD ;;; +++001 SET THE CONSOLE MODE
1422 005350 000404 BR 60$ ;;; +++001 GO TO COMMON EXIT
1423 ;
1424 005352 50$:
1425 005352 012737 003401 000000G MOV #3401,.KLNMD ;;; +++001 SET DEFAULT KLINIK PARAMETERS
1426 005360 000764 BR 40$ ;;; +++001 SET OTHER PARAMETERS AND EXIT
1427 ;
1428 005362 60$:
1429 005362 042765 000000G 000000G BIC #TT.OUT,STSW1(R5)
1430 005370 105737 000000G TSTB .KLNMD+0 ;;; +++001 WHICH MODE??
1431 005374 002404 BLT 70$ ;;; +++001 GO DO USER STUFF
1432 005376 052765 000000G 000000G BIS #TT.CTY,STSW1(R5) ;;; +++001 REMOTE -- DECLARE CTY
1433 005404 000403 BR 80$ ;;; +++001 AND GO ON
1434 ;
1435 005406 70$:
1436 005406 042765 000000G 000000G BIC #TT.CTY,STSW1(R5) ;;; +++001 CLEAR CTY BIT
1437 005414 80$:
1438 005414 .ENB6 ;;; +++001 ALLOW INTERRUPTS
005414 012637 177776 MOV (SP)+,@#PS
1439 005420 105737 000000G TSTB .KLNMD+0 ; +++001 CHECK MODE
1440 005424 002411 BLT KLAUSR ; +++001 USER -- GO ON
1441 005426 WARN <KLINIK LINE ACTIVE IN REMOTE MODE>
001163 012 113 114 .ASCIZ ""<12>"KLINIK LINE ACTIVE IN REMOTE MODE"<1>""
001166 111 116 111
001171 113 040 114
001174 111 116 105
001177 040 101 103
001202 124 111 126
001205 105 040 111
001210 116 040 122
001213 105 115 117
001216 124 105 040
001221 115 117 104
001224 105 001 000
005426 012746 001163' MOV #$$$,-(SP)
005432 004737 006074' JSR PC,TYPMSG
1442 005436 WARN <KLINIK LINE CONNECTED TO SYSTEM CONSOLE>
001227 012 113 114 .ASCIZ ""<12>"KLINIK LINE CONNECTED TO SYSTEM CONSOLE"<1>""
001232 111 116 111
001235 113 040 114
001240 111 116 105
001243 040 103 117
001246 116 116 105
001251 103 124 105
001254 104 040 124
001257 117 040 123
001262 131 123 124
001265 105 115 040
001270 103 117 116
001273 123 117 114
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 38-2
RESTORE -- CKECK STATE OF KLINIK LINE
001276 105 001 000
005436 012746 001227' MOV #$$$,-(SP)
005442 004737 006074' JSR PC,TYPMSG
1443 005446 000404 BR KLAREM ; +++001 EXIT THIS ROUTINE
1444 ;
1445 005450 KLAUSR:
1446 005450 WARN <KLINIK LINE ACTIVE IN USER MODE>
001301 012 113 114 .ASCIZ ""<12>"KLINIK LINE ACTIVE IN USER MODE"<1>""
001304 111 116 111
001307 113 040 114
001312 111 116 105
001315 040 101 103
001320 124 111 126
001323 105 040 111
001326 116 040 125
001331 123 105 122
001334 040 115 117
001337 104 105 001
001342 000
005450 012746 001301' MOV #$$$,-(SP)
005454 004737 006074' JSR PC,TYPMSG
1447 005460 KLAREM:
1448 005460 032737 000000G 000002G BIT #EF.PR1,.COMEF+2 ; +++004 AN WE LOG THIS??
1449 005466 001447 BEQ RQSTSK ; +++004 NO -- GO ON
1450 005470 012700 001070' MOV #LOGBUF,R0 ; +++004 YES -- BUFFER POINTER TO R0
1451 005474 113701 000000G MOVB .KLNMD+0,R1 ; +++004 KLINIK MODE TO R1
1452 005500 002406 BLT 10$ ; +++004 USER -- GO ON
1453 005502 113701 000001G MOVB .KLNMD+1,R1 ; +++004 REMOTE -- GET CONSOLE MODE
1454 005506 006201 ASR R1 ; +++004 COMPUTE THE CODE
1455 005510 005201 INC R1 ; +++004
1456 005512 006201 ASR R1 ; +++004
1457 005514 005201 INC R1 ; +++004
1458 005516 10$:
1459 005516 110160 000005 MOVB R1,5(R0) ; +++004 SET THE MODE
1460 005522 112760 000000G 000004 MOVB #K.LRBA,4(R0) ; +++004 SET THE LOG CODE
1461 005530 012701 100000G MOV #BC.HDS+100000,R1 ; +++004 FUNCTION CODE TO R1
1462 005534 012702 000004 MOV #E.FLOG,R2 ; +++004 EVENT FLAG TO R2
1463 005540 012703 000000G MOV #D.CKLN,R3 ; +++004 DEVICE CODE TO R3
1464 005544 CALL ..STIN ; +++004 LOG IT
005544 004737 000000G JSR PC,..STIN
1465 005550 WTSE$S #E.FLOG ; +++004 WAIT FOR IT
005550 012746 000004 MOV #E.FLOG,-(SP)
005554 012746 MOV (PC)+,-(SP)
005556 051 002 .BYTE 41.,2
005560 104375 EMT 375
1466 005562 000411 BR RQSTSK ; +++001 EXIT THIS ROUTINE
1467 ;
1468 005564 PRNRUN:
1469 005564 ERROR <PROTOCOLS NOT RUNNING>
001343 011 120 122 .ASCIZ ""<11>"PROTOCOLS NOT RUNNING"<5>""
001346 117 124 117
001351 103 117 114
001354 123 040 116
001357 117 124 040
001362 122 125 116
001365 116 111 116
001370 107 005 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 38-3
RESTORE -- CKECK STATE OF KLINIK LINE
005564 012746 001343' MOV #$$$,-(SP)
005570 004737 006074' JSR PC,TYPMSG
1470 005574 000456 BR EXIT ; +++001 GO AWAY
1471 ;
1472 005576 KLANXM:
1473 005576 WARN <NO KLINIK LINE> ; +++009 TELL ABOUT NO KLINIK
001373 012 116 117 .ASCIZ ""<12>"NO KLINIK LINE"<1>""
001376 040 113 114
001401 111 116 111
001404 113 040 114
001407 111 116 105
001412 001 000
005576 012746 001373' MOV #$$$,-(SP)
005602 004737 006074' JSR PC,TYPMSG
1474 ; BR RQSTSK ; +++009 REQUEST KLI IF NECESSARY
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 39
RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
1476 .SBTTL RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
1477 ;
1478 ; REQUEST KL SYSTEM INITIALIZATION TASK IF LOAD FLAGS FROM BOOT = 00 OR 11
1479 ;
1480 005606 RQSTSK:
1481 005606 012701 001120' MOV #KLINIT,R1 ;ADDRESS OF .RAD50/...KLI/
1482 005612 013700 000000G MOV .BTPRM,R0 ;GET LOAD FLAGS
1483 005616 012702 000000C MOV #KL.DEF!KL.LRM!KL.LCA!KL.CFM!KL.LVB,R2 ;DEFAULT TO DEFAULT
1484 005622 032700 000001 BIT #BP.SWR,R0 ;FROM SWR BUTTON?
1485 005626 001002 BNE 10$ ;YES-- OK
1486 005630 052702 000000G BIS #KL.VBN,R2 ;NO-- VBOOT DOESN'T PROMPT
1487 005634 10$:
1488 005634 042700 177771 BIC #^C<BP.LD1!BP.LD0>,R0 ;LOAD FLAGS= 00?
1489 005640 001404 BEQ 50$ ;YES-- REQUEST SYSTEM INITIALIZATION
1490 005642 022700 000006 CMP #<BP.LD1!BP.LD0>,R0 ;LOAD FLAGS= 11?
1491 005646 001024 BNE EXIT00 ;NO-- JUST EXIT
1492 005650 005002 CLR R2 ;SET KLI TO ASK DIALOG
1493 005652 50$:
1494 005652 010237 000000G MOV R2,.KLIWD ;SET FLAGS TO ...KLI
1495 005656 RQST$S R1 ;REQUEST TASK
005656 005046 CLR -(SP)
005660 005046 CLR -(SP)
005662 005046 CLR -(SP)
005664 005046 CLR -(SP)
005666 016146 000002 MOV 2(R1),-(SP)
005672 011146 MOV (R1),-(SP)
005674 012746 MOV (PC)+,-(SP)
005676 013 007 .BYTE 11.,7
005700 104375 EMT 375
1496 005702 103006 BCC EXIT00 ;SUCCESS-- JUST LEAVE
1497 005704 013700 000000G MOV $DSW,R0 ;GET THE ERROR CODE
1498 005710 WARN <KLI task request error "<7>">
001414 012 113 114 .ASCIZ ""<12>"KLI task request error "<7>""<1>""
001417 111 040 164
001422 141 163 153
001425 040 162 145
001430 161 165 145
001433 163 164 040
001436 145 162 162
001441 157 162 040
001444 007 001 000
005710 012746 001414' MOV #$$$,-(SP)
005714 004737 006074' JSR PC,TYPMSG
1499 005720 EXIT00:
1500 005720 105737 000050' TSTB EXFLAG ;SHOULD WE EXIT (/EX)
1501 005724 001002 BNE EXIT ;YES-- DO SO
1502 005726 000137 001170' JMP SAVE ;NO-- GO BACK TO SAVE
1503 ;
1504 ; ALL DONE-- DO A TASK EXIT, SYSTEM BACK TO STATE BEFORE SAVE
1505 ;
1506 005732 EXIT:
1507 005732 EXIT$S ;TASK EXIT
005732 012746 MOV (PC)+,-(SP)
005734 063 001 .BYTE 51.,1
005736 104375 EMT 375
1508 005740 000774 BR EXIT ;JUST IN CASE . . .
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 40
COMMAND PARSER ROUTINES
1510 .SBTTL COMMAND PARSER ROUTINES
1511 ;
1512 ; GENERAL NOTES:
1513 ;
1514 ; R4 IS ALWAYS USED AS A POINTER TO THE COMMAND STRING. ON CALL,
1515 ; IT POINTS TO THE NEXT CHARACTER TO BE PROCESSED. ON RETURN, R4
1516 ; ALWAYS POINTS TO THE CHARACTER AFTER THE LAST ONE PROCESSED, I.E.
1517 ; THE NEXT ONE TO BE PROCESSED.
1518 ;
1519 ; NOTE THAT END-OF-LINE IS A ZERO BYTE
1520 ;
1521 ;
1522 ; GETNB -- GET NEXT NON-BLANK CHARACTER
1523 ;
1524 ; RETURNS WITH R4 POINTING TO THE NEXT NON-BLANK CHARACTER
1525 ; R0 -- NON-BLANK CHARACTER
1526 ; CC-Z SET IF END-OF-LINE
1527 ;
1528 005742 GETNB:
1529 005742 112400 MOVB (R4)+,R0 ;GET A CHARACTER
1530 005744 122700 000040 CMPB #' ,R0 ;THIS BLANK?
1531 005750 001774 BEQ GETNB ;YES-- LOOK SOME MORE
1532 005752 122700 000011 CMPB #' ,R0 ;OR A TAB?
1533 005756 001771 BEQ GETNB ;YES-- LOOK SOME MORE
1534 005760 10$:
1535 005760 105744 TSTB -(R4) ;NON-BLANK-- BACK OVER IT (MAY BE EOL)
1536 005762 RETURN ; FROM GETNB
005762 000207 RTS PC
1537 ;
1538 ; GETNAM -- GET TWO-CHARACTER ALPHABETIC NAME
1539 ;
1540 ; RETURNS AFTER TWO CHARCTERS OR NON-ALPHABETIC
1541 ; R0 -- (LOW) FIRST CHARACTER (HIGH) SECOND CHARACTER
1542 ; CC-C SET IF MORE THAN TWO CHARACTERS
1543 ;
1544 005764 GETNAM:
1545 005764 005000 CLR R0 ;CLEAR ANSWER
1546 005766 10$:
1547 005766 122714 000101 CMPB #'A,(R4) ;BELOW A?
1548 005772 101015 BHI 50$ ;YES-- RETURN CC-C CLEAR
1549 005774 121427 000132 CMPB (R4),#'Z ;OR ABOVE Z?
1550 006000 101012 BHI 50$ ;YES-- RETURN CC-C CLEAR
1551 006002 005700 TST R0 ;GOT A BYTE YET?
1552 006004 001002 BNE 20$ ;YES-- STORE SECOND BYTE
1553 006006 112400 MOVB (R4)+,R0 ;NO-- GET LOW BYTE
1554 006010 000766 BR 10$ ;LOOP FOR NEXT CHARACTER
1555 ;
1556 006012 20$:
1557 006012 000300 SWAB R0 ;GET HIGH BYTE
1558 006014 001003 BNE 40$ ;ALREADY THERE-- ERROR
1559 006016 152400 BISB (R4)+,R0 ;OK-- SET SECOND CHARACTER
1560 006020 000300 SWAB R0 ;RESTORE R0 TO PROPER ORIENTATION
1561 006022 000761 BR 10$ ;LOOP FOR ANOTHER (?)
1562 ;
1563 006024 40$:
1564 006024 000261 SEC ;ERROR
1565 006026 50$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 40-1
COMMAND PARSER ROUTINES
1566 006026 RETURN ; FROM GETNAM
006026 000207 RTS PC
1567 ;
1568 ; GETNUM -- GET OCTAL NUMBER
1569 ;
1570 ; RETURNS WITH NON-DIGIT OR IF MORE THAN A BYTE'S WORTH
1571 ; R0 -- (LOW) NUMBER
1572 ; CC-C SET IF LARGER THAN ONE BYTE
1573 ;
1574 006030 GETNUM:
1575 006030 005000 CLR R0 ;CLEAR RESULT
1576 006032 10$:
1577 006032 112401 MOVB (R4)+,R1 ;GET A DIGIT
1578 006034 162701 000060 SUB #'0,R1 ;TRIM DOWN TO DIGIT
1579 006040 103413 BLO 40$ ;NOT A DIGIT-- GIVE UP
1580 006042 022701 000007 CMP #7,R1 ;TOO HIGH?
1581 006046 103410 BLO 40$ ;YES-- GIVE UP WITH CC-C CLEAR
1582 000003 .REPT 3
1583 ASLB R0 ;SHIFT OLD NUMBER A BIT
1584 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
1585 .ENDR
006050 106300 ASLB R0 ;SHIFT OLD NUMBER A BIT
006052 103407 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
006054 106300 ASLB R0 ;SHIFT OLD NUMBER A BIT
006056 103405 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
006060 106300 ASLB R0 ;SHIFT OLD NUMBER A BIT
006062 103403 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
1586 006064 060100 ADD R1,R0 ;ACCUMULATE THIS DIGIT
1587 006066 000761 BR 10$ ;FETCH ANOTHER DIGIT
1588 ;
1589 006070 40$:
1590 006070 105744 TSTB -(R4) ;BACK OVER BAD CHARACTER
1591 006072 50$:
1592 006072 RETURN ;FROM GETNUM
006072 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 41
TYPEOUT ROUTINES
1594 .SBTTL TYPEOUT ROUTINES
1595 ;
1596 ; TYPMSG -- TYPE A RANDOM ASCIZ STRING
1597 ;
1598 ; CALL:
1599 ; PUSH #<ADDRESS OF ASCIZ STRING>
1600 ; CALL TYPMSG
1601 ;
1602 ; SPECIAL CHARACTER CODES IN TEXT:
1603 ; 0 -- END OF TEXT
1604 ; 1 -- TYPE <CR><LF>
1605 ; 2 -- TYPE TWO CHARACTERS FROM R0 (SAVED ON STACK)
1606 ; 3 -- TYPE DEVICE NAME AND UNIT FROM PUD ENTRY (R5)
1607 ; 4 -- TYPE ASCIZ STRING BY R0
1608 ; 5 -- TYPE <CR><LF> AND RETURN TO SAVE
1609 ; 6 -- TYPE SYSTEM DATE
1610 ; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
1611 ; 10 -- DEVICE NAME AND UNIT FROM PUD ENTRY IN PUDADR
1612 ; 11 -- FATAL ERROR PREFIX
1613 ; 12 -- DIAGNOSTIC ERROR PREFIX
1614 ;
1615 006074 TYPMSG:
1616 006074 PUSH <R3,R2,R1,R0> ;SAVE USED REGISTERS
006074 010346 MOV R3,-(SP)
006076 010246 MOV R2,-(SP)
006100 010146 MOV R1,-(SP)
006102 010046 MOV R0,-(SP)
1617 006104 016600 000012 MOV 12(SP),R0 ;GET ADDRESS OF STRING
1618 006110 012702 000064' MOV #TYPBUF,R2 ;POINT TO OUTPUT BUFFER
1619 ;
1620 ; ENTER HERE AT TYPMS1:
1621 ; R0 -- POINTER TO STRING TO BE OUTPUT (AND FOLLOWING CODE)
1622 ; R2 -- CURRENT POINTER TO OUTPUT BUFFER FOR LOADING CHARACTERS
1623 ;
1624 006114 TYPMS1:
1625 006114 112012 MOVB (R0)+,(R2) ;GET A CHARACTER FROM STRING
1626 006116 122227 000013 CMPB (R2)+,#TYPMAX ;SPECIAL CODE?
1627 006122 103374 BHIS TYPMS1 ;NO-- JUST GET NEXT CHARACTER
1628 006124 114203 MOVB -(R2),R3 ;YES-- GET THE CODE
1629 006126 006303 ASL R3 ;MAKE IT WORDS
1630 006130 011601 MOV (SP),R1 ;GET R0 FROM STACK BACK TO R1
1631 006132 CALL @TYPTAB(R3) ;CALL ROUTINE TO PROCESS
006132 004773 006140' JSR PC,@TYPTAB(R3)
1632 006136 000766 BR TYPMS1 ;BACK FOR MORE
1633 ;
1634 ; DISPATCH TABLE FOR SPECIAL CODES
1635 ;
1636 006140 TYPTAB:
1637 006140 006166' 006260' 006264' .WORD TYPDON,TYPCR,TYPTXT,TYPDEV,TYPSTR,TYPSAV,TYPDAT,TYPDEC,TYPSDV,TYPERR,TYPWRN
006146 006302' 006350' 006252'
006154 006360' 006476' 006276'
006162 006336' 006344'
1638 000013 TYPMAX=<.-TYPTAB>/2
1639 ;
1640 ; 0 -- END OF MESSAGE
1641 ;
1642 006166 TYPDON:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 41-1
TYPEOUT ROUTINES
1643 006166 005726 TST (SP)+ ;POP THE RETURN ADDRESS OFF TO NOWHERE
1644 006170 162702 000064' SUB #TYPBUF,R2 ;END OF STRING-- FIND LENGTH
1645 006174 QIOW$S #IO.WLB,#CTYLUN,#E.FQIO,,,,<#TYPBUF,R2,#0> ;TYPE STRING ON CTY
006174 005046 CLR -(SP)
006176 010246 MOV R2,-(SP)
006200 012746 000064' MOV #TYPBUF,-(SP)
006204 005046 CLR -(SP)
006206 005046 CLR -(SP)
006210 005046 CLR -(SP)
006212 112716 000001 MOVB #E.FQIO,(SP)
006216 012746 000001 MOV #CTYLUN,-(SP)
006222 012746 000400 MOV #IO.WLB,-(SP)
006226 012746 MOV (PC)+,-(SP)
006230 003 011 .BYTE 3,$$$T1
006232 104375 EMT 375
1646 006234 103636 BCS EXIT ;GIVE UP IF FAILURE
1647 006236 POP <R0,R1,R2,R3> ;RESTORE REGISTERS
006236 012600 MOV (SP)+,R0
006240 012601 MOV (SP)+,R1
006242 012602 MOV (SP)+,R2
006244 012603 MOV (SP)+,R3
1648 006246 POP (SP) ;RESTORE PC OVER ADDRESS OF STRING
006246 012616 MOV (SP)+,(SP)
1649 006250 RETURN ;FROM TYPMSG
006250 000207 RTS PC
1650 ;
1651 ; 5 -- TYPE <CR><LF> AND RETURN TO SAVE
1652 ;
1653 006252 TYPSAV:
1654 006252 012766 001170' 000012 MOV #SAVE,12(SP) ;SET RETURN PC TO GO BACK TO SAVE
1655 ; BR TYPCR ;FINISH OFF WITH <CR><LF>
1656 ;
1657 ; 1 -- TYPE CRLF
1658 ;
1659 006260 TYPCR:
1660 006260 012701 MOV (PC)+,R1 ;GET <CR> AND <LF>
1661 006262 015 012 .BYTE 15,12 ; . .
1662 ; BR TYPTXT ;TYPE WHAT'S IN R1
1663 ;
1664 ; 2 -- TYPE TEXT IN R0 (SAVED ON STACK)
1665 ;
1666 006264 TYPTXT:
1667 006264 110122 MOVB R1,(R2)+ ;STORE LOW BYTE FIRST
1668 006266 000301 SWAB R1 ;GET HIGH BYTE
1669 006270 001401 BEQ 90$ ;NULL-- IGNORE IT
1670 006272 110122 MOVB R1,(R2)+ ;STORE SECOND CHARACTER
1671 006274 90$:
1672 006274 RETURN ; FROM TYPTXT
006274 000207 RTS PC
1673 ;
1674 ; 10 -- DEVICE NAME AND UNIT FROM PUDADR
1675 ;
1676 006276 TYPSDV:
1677 006276 013705 000040' MOV PUDADR,R5 ;GET THE PUD ADDRESS
1678 ; BR TYPDEV ;AND TYPE IT
1679 ;
1680 ; 3 -- DEVICE AND UNIT # FROM PUD (R5)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 41-2
TYPEOUT ROUTINES
1681 ;
1682 006302 TYPDEV:
1683 006302 016501 000000G MOV U.DN(R5),R1 ;GET THE NAME
1684 006306 CALL TYPTXT ;TYPE THE NAME
006306 004737 006264' JSR PC,TYPTXT
1685 006312 012737 000010 000016' MOV #8.,RADIX ;SET TO OCTAL
1686 006320 116501 000000G MOVB U.UN(R5),R1 ;GET THE UNIT
1687 006324 CALL TYPNUM ;TYPE THE NUMBER
006324 004737 006576' JSR PC,TYPNUM
1688 006330 112722 000072 MOVB #':,(R2)+ ;MAKE IT A DEVICE
1689 006334 RETURN ;BACK FOR MORE
006334 000207 RTS PC
1690 ;
1691 ; 11 -- FATAL ERROR PREFIX
1692 ;
1693 006336 TYPERR:
1694 006336 012701 001447' MOV #ERRMSG,R1 ;GET ERROR STRING
1695 006342 000402 BR TYPSTR ;PUT THE STRING
1696 ;
1697 001447 .PSECT TEXT
1698 001447 123 101 126 ERRMSG: .ASCIZ \SAV -- *Fatal* -- \
001452 040 055 055
001455 040 052 106
001460 141 164 141
001463 154 052 040
001466 055 055 040
001471 000
1699 006344 .PSECT
1700 ;
1701 ; 12 -- WARNING ERROR PREFIX
1702 ;
1703 006344 TYPWRN:
1704 006344 012701 001472' MOV #WRNMSG,R1 ;GET WARNING PREFIX
1705 ; BR TYPSTR ; . .
1706 ;
1707 001472 .PSECT TEXT
1708 001472 123 101 126 WRNMSG: .ASCIZ \SAV -- *Diag* -- \
001475 040 055 055
001500 040 052 104
001503 151 141 147
001506 052 040 055
001511 055 040 000
1709 006350 .PSECT
1710 ;
1711 ; 4 -- STRING FROM R1
1712 ;
1713 006350 TYPSTR:
1714 006350 112122 MOVB (R1)+,(R2)+ ;MOVE A CHARACTER
1715 006352 001376 BNE TYPSTR ;LOOP TILL END OF COMMAND
1716 006354 105742 TSTB -(R2) ;BACK OVER NULL BYTE
1717 006356 RETURN ;BACK FOR MORE
006356 000207 RTS PC
1718 ;
1719 ; 6 -- TYPE SYSTEM DATE
1720 ;
1721 006360 TYPDAT:
1722 006360 012737 000012 000016' MOV #10.,RADIX ;ALL UNDER DECIMAL RADIX
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 41-3
TYPEOUT ROUTINES
1723 006366 113701 000026' MOVB GTIMBF+G.TIHR,R1 ;GET THE HOUR
1724 006372 CALL TYPNUM ;TYPE HOURS
006372 004737 006576' JSR PC,TYPNUM
1725 006376 112722 000072 MOVB #':,(R2)+ ;SEPERATE . . .
1726 006402 113701 000030' MOVB GTIMBF+G.TIMI,R1 ;MINUTES
1727 006406 020127 000011 CMP R1,#9. ;MORE THAN ONE DIGIT?
1728 006412 003002 BGT 10$ ;YES-- WE WILL HAVE TWO
1729 006414 112722 000060 MOVB #'0,(R2)+ ;NO-- MAKE IT TWO
1730 006420 10$:
1731 006420 CALL TYPNUM ;MINUTES . . . . . . . . . . . ...
006420 004737 006576' JSR PC,TYPNUM
1732 006424 112722 000040 MOVB #' ,(R2)+ ;SPACE-ED OUT DATE
1733 006430 113701 000024' MOVB GTIMBF+G.TIDA,R1 ;GET DAY OF MONTH
1734 006434 CALL TYPNUM ;TYPE IT IN DECIMAL
006434 004737 006576' JSR PC,TYPNUM
1735 006440 112722 000055 MOVB #'-,(R2)+ ;SEPARATE
1736 006444 113701 000022' MOVB GTIMBF+G.TIMO,R1 ;GET THE MONTH
1737 006450 006301 ASL R1 ; *2
1738 006452 006301 ASL R1 ; *4 BYTES FOR EACH NAME
1739 006454 062701 006512' ADD #MONTAB-4,R1 ;POINT TO ASCIZ MONTHS
1740 006460 CALL TYPSTR ;TYPE THE STRING
006460 004737 006350' JSR PC,TYPSTR
1741 006464 112722 000055 MOVB #'-,(R2)+ ;SEPARATE
1742 006470 013701 000020' MOV GTIMBF+G.TIYR,R1 ;GET THE YEAR
1743 006474 000440 BR TYPNUM ;TYPE IT AND RETURN
1744 ;
1745 ; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
1746 ;
1747 006476 TYPDEC:
1748 006476 012737 000012 000016' MOV #10.,RADIX ;SET RADIX TO 10
1749 006504 CALL TYPNUM ;TYEP THE NUMBER
006504 004737 006576' JSR PC,TYPNUM
1750 006510 112722 000056 MOVB #'.,(R2)+ ;STORE A . TO INDICATE DECIMAL
1751 006514 RETURN ;BACK FOR ANOTHER CHAR OF STRING
006514 000207 RTS PC
1752 ;
1753 ; TABLE OF MONTHS
1754 ;
1755 006516 MONTAB:
1756 .IRP ARG,<Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec>
1757 .ASCIZ /ARG/
1758 .EVEN
1759 .ENDM
006516 112 141 156 .ASCIZ /Jan/
006521 000
006522 106 145 142 .ASCIZ /Feb/
006525 000
006526 115 141 162 .ASCIZ /Mar/
006531 000
006532 101 160 162 .ASCIZ /Apr/
006535 000
006536 115 141 171 .ASCIZ /May/
006541 000
006542 112 165 156 .ASCIZ /Jun/
006545 000
006546 112 165 154 .ASCIZ /Jul/
006551 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 41-4
TYPEOUT ROUTINES
006552 101 165 147 .ASCIZ /Aug/
006555 000
006556 123 145 160 .ASCIZ /Sep/
006561 000
006562 117 143 164 .ASCIZ /Oct/
006565 000
006566 116 157 166 .ASCIZ /Nov/
006571 000
006572 104 145 143 .ASCIZ /Dec/
006575 000
1760 ;
1761 ; TYPNUM -- TYPE A NUMBER
1762 ; R1 -- NUMBER TO BE TYPED
1763 ; RADIX -- OUTPUT RADIX
1764 ;
1765 ; USES R1,R2,R3
1766 ;
1767 006576 TYPNUM:
1768 006576 005701 TST R1 ;NEGATIVE #?
1769 006600 002003 BGE 10$ ;NO-- OK
1770 006602 005401 NEG R1 ;YES-- MAKE IT POSITIVE
1771 006604 112722 000055 MOVB #'-,(R2)+ ; AND STORE -VE IN STRING
1772 006610 10$:
1773 006610 005003 CLR R3 ;CLEAR REMAINDER
1774 006612 15$:
1775 006612 020137 000016' CMP R1,RADIX ;CAN WE DIVIDE?
1776 006616 002404 BLT 20$ ;NO-- DIVIDE DONE
1777 006620 163701 000016' SUB RADIX,R1 ;YES-- FORM REMAINDER
1778 006624 005203 INC R3 ; AND QUOTIENT
1779 006626 000771 BR 15$ ;LOOP TO DIVIDE R1 BY RADIX
1780 ;
1781 006630 20$:
1782 006630 PUSH R1 ;SAVE REMAINDER AS A DIGIT
006630 010146 MOV R1,-(SP)
1783 006632 010301 MOV R3,R1 ;GO BACK AND DIVIDE AGAIN
1784 006634 001402 BEQ 30$ ; UNLESS ALL DONE
1785 006636 CALL 10$ ;EXTRACT ANOTHER DIGIT ONTO STACK
006636 004737 006610' JSR PC,10$
1786 006642 30$:
1787 006642 POP R1 ;DONE-- GET A DIGIT FROM STACK
006642 012601 MOV (SP)+,R1
1788 006644 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
1789 006650 110122 MOVB R1,(R2)+ ;STORE IT IN OUTPUT STRING
1790 006652 RETURN ;FOR ANOTHER DIGIT OR THE END
006652 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 42
FILE I/O ROUTINES
1792 .SBTTL FILE I/O ROUTINES
1793 ;
1794 ; FINDEV -- FIND PUD ENTRY FOR DEVICE
1795 ; CALL:
1796 ; R0 -- DEVICE NAME AS TWO ASCII BYTES
1797 ; R1 -- UNIT NUMBER AS BINARY BYTE
1798 ; RETURN:
1799 ; R0-R4 UNCHANGED
1800 ; R5 -- PUD ENTRY ADDRESS (POSSIBLY REDIRECTED)
1801 ;
1802 006654 FINDEV:
1803 006654 012705 000000G MOV #.PUDBA,R5 ;POINT TO START OF PUD
1804 006660 10$:
1805 006660 026500 000000G CMP U.DN(R5),R0 ;NAME MATCH?
1806 006664 001003 BNE 20$ ;NO-- GO ON
1807 006666 126501 000000G CMPB U.UN(R5),R1 ;UNIT MATCH?
1808 006672 001406 BEQ 30$ ;YES-- THIS IS IT
1809 006674 20$:
1810 006674 062705 000000G ADD #U.SZ,R5 ;NO-- BUMP TO NEXT PUD ENTRY
1811 006700 020527 000000G CMP R5,#.PUDEA ;END YET?
1812 006704 103765 BLO 10$ ;NO-- LOOP TILL END
1813 006706 000261 SEC ;YES-- DEVICE NOT IN SYSTEM
1814 006710 30$:
1815 006710 RETURN ;RETURN FROM FINDEV
006710 000207 RTS PC
1816 ;
1817 ; FNDACP -- FIND ACP FOR DEVICE, PUD ADDR IN R5
1818 ; RETURNS R2= STD ADDR FOR ACP, OR ZERO IF NOT FOUND
1819 ;
1820 006712 FNDACP:
1821 006712 012701 000070' MOV #TYPBUF+4,R1 ;NO-- GET A SCRACTH AREA
1822 006716 012741 MOV (PC)+,-(R1) ;SET TO
1823 006720 003310 .RAD50 /ACP/ ; THE ACP
1824 006722 016541 000000G MOV U.DACP(R5),-(R1) ; OF THE DEVICE
1825 006726 000137 000000G JMP ..FSTD ;FIND ADR OF THE STD FOR THE ACP
1826 ;
1827 ; FILMNT -- MOUNT/DISMOUNT DEVICE QUEUE I/O REQUEST
1828 ; R2 -- ADDRESS OF FUNCTION CONTROL BLOCK
1829 ;
1830 006732 FILMNT:
1831 006732 012700 014010 MOV #IO.APV,R0 ;PRIVILIGED ACP CONTROL (MOUNT/DISMOUNT)
1832 006736 005001 CLR R1 ;NO FILE-ID BLOCK
1833 006740 005003 CLR R3 ;NO EXTEND
1834 006742 005004 CLR R4 ; . .
1835 006744 005005 CLR R5 ;NO ACCESS CONTROL
1836 ; BR FILQIO ;DO REQUEST AND RETURN
1837 ;
1838 ; FILQIO -- ROUTINE TO DO QIO REQUEST FOR FILE OPERATIONS
1839 ; R0 -- I/O FUNCTION CODE (IO.XXX)
1840 ; R1 -- (PARAMETER #1) ADDRESS OF FILE-ID BLOCK
1841 ; R2 -- (PARAMETER #2) ADDRESS OF ATTRIBUTE CONTROL BLOCK
1842 ; R3 -- (PARAMETER #3) EXTEND CONTROL BITS
1843 ; R4 -- (PARAMETER #4) LOW-ORDER EXTEND INCREMENT
1844 ; R5 -- (PARAMETER #5) ACCESS CONTROL BITS
1845 ;
1846 ; RETURNS CC-C CLEAR, QEFLAG UNCHANGED IF SUCCESS
1847 ; CC-C SET, QEFLAG NON-ZERO IF ERROR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 42-1
FILE I/O ROUTINES
1848 ; R0 -- ERROR CODE FROM I/O STATUS OR DIRECTIVE STATUS
1849 ;
1850 006746 FILQIO:
1851 006746 QIOW$S R0,#DSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,R3,R4,R5>
006746 010546 MOV R5,-(SP)
006750 010446 MOV R4,-(SP)
006752 010346 MOV R3,-(SP)
006754 010246 MOV R2,-(SP)
006756 010146 MOV R1,-(SP)
006760 005046 CLR -(SP)
006762 012746 001064' MOV #QIOSTS,-(SP)
006766 005046 CLR -(SP)
006770 112716 000001 MOVB #E.FQIO,(SP)
006774 012746 000002 MOV #DSKLUN,-(SP)
007000 010046 MOV R0,-(SP)
007002 012746 MOV (PC)+,-(SP)
007004 003 013 .BYTE 3,$$$T1
007006 104375 EMT 375
1852 007010 113700 000056' MOVB QEFLAG,R0 ;DID A PREVIOUS Q I/O FAIL?
1853 007014 001010 BNE 20$ ;YES-- JUST RETURN THAT
1854 007016 113700 000000G MOVB $DSW,R0 ;NO-- GET DIRECTIVE STATUS
1855 007022 103403 BCS 10$ ;ERROR-- JUST RETURN THIS
1856 007024 113700 001064' MOVB QIOSTS+0,R0 ;ERROR OCCUR ON QUEUE I/O?
1857 007030 002003 BGE 30$ ;N0-- JUST GO ON
1858 007032 10$:
1859 007032 110037 000056' MOVB R0,QEFLAG ;YES-- SAVE THAT AS ERROR
1860 007036 20$:
1861 007036 000261 SEC ; AND SAY ERROR
1862 007040 30$:
1863 007040 RETURN ;FROM FILQIO
007040 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 43
DRIVER TABLES
1865 .SBTTL DRIVER TABLES
1866 ;
1867 ; DRIVER TABLE DRVTAB:
1868 ; THIS TABLE CONTAINS ALL THE DEVICE-DEPENDENT DATA AND
1869 ; DISPATCHES FOR THE DEVICES THAT "SAVE" UNDERSTANDS.
1870 ;
1871 .MACRO DRIVER NAME,DV,BTPRM
1872 $$$ADR=.
1873 DRVNAM=.-$$$ADR
1874 .ASCII /NAME/ ;DEVICE NAME IN ASCII
1875 .EVEN
1876 DRVSET=.-$$$ADR
1877 .WORD DV'SET ;DISK ADDRESS SETUP ROUTINE
1878 .IF DF FTABS
1879 DRVABS=.-$$$ADR
1880 .WORD DV'ABS ;ABSOLUTE (/AB) SAVE SETUP ROUTINE
1881 .ENDC ; .IF DF FTABS
1882 DRVBOT=.-$$$ADR
1883 .WORD DV'BOOT ;ADDRESS OF BOOTSTRAP CODE
1884 DRVWRT=.-$$$ADR
1885 .WORD DV'WRT ;DEVICE WRITE ROUTINE
1886 DRVMSZ=.-$$$ADR
1887 .WORD DV'BMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
1888 DRVAD1=.-$$$ADR
1889 .WORD DV'BAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
1890 DRVAD2=.-$$$ADR
1891 .WORD DV'BAD2 ;ADDRESS FOR SECOND PART . .
1892 .IF DF M$$MGE
1893 DRVUP0=.-$$$ADR
1894 .WORD DV'BUP0 ;ADDRESS FOR CURRENT CONTENTS OF UPAR0
1895 .ENDC
1896 DRVBTP=.-$$$ADR
1897 .WORD BTPRM ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1898 DRVSIZ=.-$$$ADR
1899 .ENDM DRIVER
1900 ;
1901 007042 DRVTAB:
1902 007042 DRIVER DX,RX,0
007042 104 130 .ASCII /DX/ ;DEVICE DX IN ASCII
007044 007122' .WORD RXSET ;DISK ADDRESS SETUP ROUTINE
007046 007132' .WORD RXBOOT ;ADDRESS OF BOOTSTRAP CODE
007050 007402' .WORD RXWRT ;DEVICE WRITE ROUTINE
007052 007364' .WORD RXBMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
007054 007170' .WORD RXBAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
007056 007170' .WORD RXBAD2 ;ADDRESS FOR SECOND PART . .
007060 000000 .WORD 0 ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1903 007062 DRIVER DB,RP,BP.RP4
007062 104 102 .ASCII /DB/ ;DEVICE DB IN ASCII
007064 007614' .WORD RPSET ;DISK ADDRESS SETUP ROUTINE
007066 007664' .WORD RPBOOT ;ADDRESS OF BOOTSTRAP CODE
007070 010020' .WORD RPWRT ;DEVICE WRITE ROUTINE
007072 007766' .WORD RPBMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
007074 007702' .WORD RPBAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
007076 007710' .WORD RPBAD2 ;ADDRESS FOR SECOND PART . .
007100 000200 .WORD BP.RP4 ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1904 007102 DRIVER DT,TC,0
007102 104 124 .ASCII /DT/ ;DEVICE DT IN ASCII
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 43-1
DRIVER TABLES
007104 010156' .WORD TCSET ;DISK ADDRESS SETUP ROUTINE
007106 010162' .WORD TCBOOT ;ADDRESS OF BOOTSTRAP CODE
007110 010370' .WORD TCWRT ;DEVICE WRITE ROUTINE
007112 010332' .WORD TCBMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
007114 010166' .WORD TCBAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
007116 010166' .WORD TCBAD2 ;ADDRESS FOR SECOND PART . .
007120 000000 .WORD 0 ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1905 000060 DRVTBZ=.-DRVTAB
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 44
RX-11 FLOPPY DISK ROUTINES
1907 .SBTTL RX-11 FLOPPY DISK ROUTINES
1908 ;
1909 ; RXSET -- SET RX-11 ADDRESS
1910 ;
1911 007122 RXSET:
1912 007122 006301 ASL R1 ;SECTOR IS BLOCK
1913 007124 006301 ASL R1 ; TIMES 4
1914 .IF DF FTABS
1915 BR RXSETX ;RETURN FROM RXSET
1916 ;
1917 ; RXABS -- RX-11 ABSOLUTE ADDRESS SET-UP
1918 ;
1919 RXABS:
1920 MOV #<58.*26.>,R1 ;SET TO END OF DISK
1921 .ENDC ; .IF DF FTABS
1922 007126 RXSETX:
1923 007126 010100 MOV R1,R0 ;COPY IT AGAIN FOR BOTH PARTS
1924 007130 RETURN ;RETURN FROM RXSET/RXABS
007130 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 45
RX-11 BOOTSTRAP
1926 .SBTTL RX-11 BOOTSTRAP
1927 ;
1928 ; RX-11 BOOTSTRAP ROUTINE
1929 ;
1930 ; THIS BOOT IS READ IN FROM SECTOR ZERO (TRACK 1 SECTOR 1)
1931 ; BY THE BM873-YF ROM.
1932 ;
1933 ; THE FOLLOWING STUFF IS RETURNED IN THE REGISTERS BY THE ROM:
1934 ;
1935 ; R0 -- READ FUNCTION WITH UNIT # SET OR JUST UNIT #
1936 ; R1 -- ADDRESS OF RXCS
1937 ; R5 -- BOOTSTRAP PARAMETER (COPY OF SWITCH REGISTER)
1938 ;
1939 007132 RXBOOT:
1940 007132 000240 NOP ;;;THIS IS A BOOTSTRAP
1941 007134 106200 ASRB R0 ;;;GET UNIT BIT INTO CC-C IF NO READ FUNC SPECIFIED
1942 007136 001401 BEQ 10$ ;;;NO READ FUNC-- GO ON
1943 007140 106300 ASLB R0 ;;;READ FUNC ALREADY-- SET IT BACK WITH UNIT #
1944 007142 10$:
1945 007142 103002 BCC 20$ ;;;UNIT 0 OR READ FUNC ALREADY?
1946 007144 012700 000020 MOV #RXUNIT,R0 ;;;NO-- SELECT UNIT 1
1947 007150 20$:
1948 007150 052700 000007 BIS #RXREAD+RXGO,R0 ;;;SET READ FUNCTION
1949 007154 012706 002000 MOV #2000,SP ;;;SETUP TEMPORARY STACK ABOVE FIRST BLOCK
1950 007160 005004 CLR R4 ;;;SET ADDRESS TO START READ AT LOC 0
1951 ;
1952 ; SETUP INITIAL RETURN ADDRESS TO DO A CALL ON
1953 ; RXBBLK TO READ THE FIRST 256. WORDS
1954 ;
1955 007162 PUSH #RXBBLX-RXBOOT ;;;SAME AS CALL RXBBLK/BR RXBBLX
007162 012746 000200 MOV #RXBBLX-RXBOOT,-(SP)
1956 007166 012702 MOV (PC)+,R2 ;;;SETUP INITIAL LOGICAL SECTOR #
1957 007170 RXBAD1:
1958 007170 000000 RXBAD2: .WORD 0 ;;;SET BY SAVE TO POINT TO FILE
1959 ; BR RXBBLK ;;;FALL INTO READ BLOCK ROUTINE
1960 ;
1961 ; RXBBLK -- ROUTINE TO READ ONE BLOCK (256. WORDS) TO MEMORY
1962 ;
1963 ; R0 -- READ FUNCTION WITH UNIT #
1964 ; R1 -- ADDRESS OF RXCS
1965 ; R2 -- CURRENT LOGICAL SECTOR # (UPDATED)
1966 ; R3 -- SCRATCH
1967 ; R4 -- CURRENT MEMORY ADDRESS (UPDATED)
1968 ;
1969 007172 RXBBLK:
1970 007172 CALL (PC) ;;;DO 4 CALLS
007172 004717 JSR PC,(PC)
1971 007174 CALL (PC) ;;; TO READ SECTOR ROUTINE
007174 004717 JSR PC,(PC)
1972 ;
1973 ; READ A SECTOR
1974 ;
1975 007176 PUSH R2 ;;;SAVE CURRENT SECTOR
007176 010246 MOV R2,-(SP)
1976 007200 010011 MOV R0,(R1) ;;;EXECUTE A READ SECTOR FUNCTION
1977 ;
1978 ; COMPUTE CURRENT PHYSICAL SECTOR # AND TRACK #
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 45-1
RX-11 BOOTSTRAP
1979 ;
1980 007202 005003 CLR R3 ;;;RESET TRACK #
1981 007204 PUSH #26. ;;;SET UP DIVISOR ON TOP OF STACK
007204 012746 000032 MOV #26.,-(SP)
1982 007210 20$:
1983 007210 005203 INC R3 ;;;ONE MORE TRACK
1984 007212 161602 SUB (SP),R2 ;;;DIVIDE SECTOR BY 26.
1985 007214 002375 BGE 20$ ;;; TO FIND LOGICAL SECTOR # WITHIN TRACK
1986 007216 061602 ADD (SP),R2 ;;;MAKE SECTOR IN RANGE 0. TO 26.
1987 007220 005303 DEC R3 ;;; TRACK IN RANGE 0. TO 76.
1988 007222 022702 000014 CMP #12.,R2 ;;;SECTOR GREATER THAN 12.?
1989 007226 006102 ROL R2 ;;;IF SO, CC-C SET, INTERLEAVE FACTOR OF 2.
1990 007230 006303 ASL R3 ;;;GET 2*TRACK
1991 007232 060302 ADD R3,R2 ;;;SKEW BY 2*TRACK
1992 007234 060302 ADD R3,R2 ;;; 4*TRACK
1993 007236 060302 ADD R3,R2 ;;; 6*TRACK
1994 007240 30$:
1995 007240 161602 SUB (SP),R2 ;;;GET SECTOR IN RANGE -26. TO -1. AGAIN
1996 007242 002376 BGE 30$ ;;; . .
1997 007244 31$:
1998 007244 062602 ADD (SP)+,R2 ;;;MAKE LOGICAL SECTOR IN RANGE 0. TO 25.
1999 ;
2000 007246 006203 ASR R3 ;;;RESTORE TRACK #
2001 007250 122223 CMPB (R2)+,(R3)+ ;;;PHYSICAL SECTOR 1. TO 26., TRACK 1. TO 77.
2002 ;
2003 ; SET SECTOR AND TRACK IN RX-11 TO START READ
2004 ;
2005 007252 40$:
2006 007252 105711 TSTB (R1) ;;;READY FOR SECTOR #?
2007 007254 100376 BPL 40$ ;;;NO-- WAIT UNTIL IT IS
2008 007256 110261 000002 MOVB R2,RXDB-RXCS(R1) ;;;YES-- SET SECTOR #
2009 007262 50$:
2010 007262 105711 TSTB (R1) ;;;READY FOR TRACK?
2011 007264 100376 BPL 50$ ;;;NO-- WAIT FOR READY
2012 007266 110361 000002 MOVB R3,RXDB-RXCS(R1) ;;;YES-- SET TRACK #
2013 ;
2014 ; WAIT FOR FUNCTION TO COMPLETE
2015 ;
2016 007272 60$:
2017 007272 032711 100040 BIT #RXERR!RXDONE,(R1) ;;;WAIT FOR EROR OR DONE
2018 007276 001775 BEQ 60$ ;;; . .
2019 007300 100714 BMI RXBOOT ;;;ERROR-- RETRY WHOLE SHIBANG
2020 ;
2021 ; EMPTY SECTOR BUFFER TO MEMORY
2022 ;
2023 007302 012711 000003 MOV #RXEMPT!RXGO,(R1) ;;;DO AN EMPTY SECTOR BUFFER FUNCTION
2024 007306 70$:
2025 007306 132711 000240 BITB #RXTREQ!RXDONE,(R1) ;;;READY WITH A BYTE?
2026 007312 001775 BEQ 70$ ;;;NO-- WAIT UNTIL IT IS
2027 007314 100003 BPL 80$ ;;;DONE-- OFF TO NEXT SECTOR
2028 007316 116124 000002 MOVB RXDB-RXCS(R1),(R4)+ ;;;STORE A BYTE TO MEMORY
2029 007322 000771 BR 70$ ;;;LOOP TO EMPTY WHOLE BUFFER
2030 ;
2031 ; BUMP SECTOR TO NEXT SECTOR AND RETURN
2032 ;
2033 007324 80$:
2034 007324 POP R2 ;;;RESTORE LOGICAL SECTOR #
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 45-2
RX-11 BOOTSTRAP
007324 012602 MOV (SP)+,R2
2035 007326 005202 INC R2 ;;;SET TO NEXT SECTOR
2036 007330 RETURN ;;;RETURN TO READ ANOTHER SECTOR OR DONE
007330 000207 RTS PC
2037 ;
2038 .IF G <<.-RXBOOT>-128.>
2039 .ERROR <.-RXBOOT> ; RX BOOT TOO BIG FOR FIRST SECTOR
2040 .ENDC
2041 ;
2042 ; HERE AFTER FIRST BLOCK READ. SETUP KT-11 (IF ANY)
2043 ;
2044 007332 RXBBLX:
2045 007332 012737 000340 177776 MOV #PR7,@#PS ;;;INSURE KERNAL MODE
2046 .IF DF M$$MGE
2047 MOV #77406,R3 ;;;SET TO MAP LARST PAGE
2048 MOV R3,KPDR0 ;;;KERNAL PAGE 0
2049 MOV R3,KPDR1 ;;; AND 1 (FOR READING)
2050 MOV R3,KPDR7 ;;; AND EXTERNAL PAGE
2051 MOV R3,UPDR0 ;;;USER PAGE 0
2052 MOV R3,UPDR7 ;;; AND USER EXTERNAL PAGE FOR SAVE
2053 CLR KPAR0 ;;;MAP KP 0 TO ABSOLUTE ZERO
2054 MOV (PC)+@(PC)+ ;;;USER PAGE TO WHEREEVER SAVE WAS
2055 RXBUP0: .WORD 0,UPAR0 ;;;SET BY SAVE
2056 MOV #7600,R3 ;;;SET TO MAP EXTERNAL PAGE
2057 MOV R3,KPAR7 ;;; FOR KERNAL
2058 MOV R3,UPAR7 ;;; AND USER
2059 MOV #1,SSR0 ;;;ENABLE SEGMENTAION
2060 .IFTF
2061 ;
2062 ; SETUP STACK AT TOP OF BOOT BLOCK, SAVE BOOT PARAMETER IN LOC 776
2063 ;
2064 007340 012706 001000 MOV #1000,SP ;;;SETUP KERNAL STACK
2065 007344 PUSH R5 ;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
007344 010546 MOV R5,-(SP)
2066 ;
2067 007346 005005 CLR R5 ;;;CLEAR BLOCK POINTER
2068 007350 000402 BR RXBNX1 ;;;FINISH THIS BLOCK AND GET NEXT ONE
2069 ;
2070 ; READ NEXT BLOCK (256. WORDS, 4 SECTORS)
2071 ;
2072 007352 RXBNXT:
2073 .IFT
2074 MOV R5,KPAR1 ;;;SET BLOCK TO MAP TO 20000
2075 MOV #20000,R4 ;;;START AT BEGINNING OF THIS BLOCK
2076 .ENDC
2077 007352 CALL RXBBLK-RXBOOT ;;;READ A BLOCK
007352 004737 000040 JSR PC,RXBBLK-RXBOOT
2078 007356 RXBNX1:
2079 007356 062705 000010 ADD #256.*2/100,R5 ;;;BUMP POINTER BY # 32. WORD BLOCKS IN 4 SECTORS
2080 007362 022705 CMP (PC)+,R5 ;;;REACHED MEMORY SIZE YET?
2081 007364 000000 RXBMSZ: .WORD 0 ;;;FILLED BY SAVE TO SIZE OF MEMORY IN 32. WORD BLOCKS
2082 007366 101371 BHI RXBNXT ;;;NO-- READ NEXT BLOCK
2083 ;
2084 ; BOOTSTRAP COMPLETE-- RETURN TO SAVE IN USER MODE
2085 ;
2086 .IF DF M$$MGE
2087 PUSH #PS.USR!PS.REG!PR7 ;;;SET TO USER MODE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 45-3
RX-11 BOOTSTRAP
2088 .IFF
2089 007370 PUSH #PS.REG!PR7 ;;;SET TO REGISTER SET 1
007370 012746 004340 MOV #PS.REG!PR7,-(SP)
2090 .ENDC
2091 007374 PUSH #RESTORE ;;;USER PC, RESTORE SYSTEM
007374 012746 002734' MOV #RESTORE,-(SP)
2092 007400 000002 RTI ;;;RETURN TO SAVE
2093 .IF G <<.-RXBOOT>-<128.*4>>
2094 .ERROR <.-RXBOOT> ; RX BOOT TOO BIG FOR FIRST BLOCK
2095 .ENDC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 46
RX-11 WRITE ROUTINE
2097 .SBTTL RX-11 WRITE ROUTINE
2098 ;
2099 ; RXWRT -- WRITE MEMORY TO THE RX-11
2100 ;
2101 ; INPUTS:
2102 ; DSKADR+0 -- LOGICAL SECTOR TO START WRITE (0.-76.*26.)
2103 ; DEVUNT -- (BYTE) UNIT # TO WRITE ON
2104 ; MEMSIZ -- NUMBER OF 32. WORD BLOCKS TO WRITE, STARTING AT
2105 ; ABSOLUTE ZERO
2106 ;
2107 007402 RXWRT:
2108 ;
2109 ; SETUP REGISTERS:
2110 ; R0 -- WRITE FUNCTION WITH PROPER UNIT #
2111 ; R1 -- ADDRESS OF RXCS
2112 ; R2 -- LOGICAL SECTOR # TO START WRITE
2113 ;
2114 007402 113700 000044' MOVB DEVUNT,R0 ;;;GET SPECIFIED UNIT #
2115 007406 001402 BEQ 10$ ;;;ZERO-- OK
2116 007410 012700 000020 MOV #RXUNIT,R0 ;;;NOT ZERO-- ASSUME UNIT 1
2117 007414 10$:
2118 007414 052700 000005 BIS #RXWRIT!RXGO,R0 ;;;MAKE IT A WRITE FUNCTION
2119 007420 012701 177170 MOV #RXCS,R1 ;;;ADDRESS CONTROL/STATUS REGISTER
2120 007424 013702 000004' MOV DSKADR+0,R2 ;;;GET START SECTOR #
2121 ;
2122 ; SET UP MAP TO ABSOLUTE ZERO
2123 ;
2124 .IF DF M$$MGE
2125 MOV #77406,UPDR1 ;;;MAP AS MUCH AS POSSIBLE
2126 .IFF
2127 007430 005004 CLR R4 ;;;CLEAR POINTER TO MEMORY
2128 .IFTF
2129 007432 005005 CLR R5 ;;;CLEAR COUNTER OF 32. WORD BLOCKS WRITTEN
2130 ;
2131 ; WRITE NEXT BLOCK (256. WORDS, 4 SECTORS) TO FLOPPY
2132 ;
2133 007434 RXWNXT:
2134 .IFT
2135 MOV R5,UPAR1 ;;;SET MAP TO CURRENT 32. WORD BLOCK
2136 MOV #20000,R4 ;;;MAP IT TO 20000
2137 .ENDC
2138 007434 CALL RXWBLK ;;;WRITE A BLOCK (256. WORDS)
007434 004737 007454' JSR PC,RXWBLK
2139 007440 062705 000010 ADD #256.*2/100,R5 ;;;BUMP TO NEXT 32. WORD BLOCK
2140 007444 023705 000014' CMP MEMSIZ,R5 ;;;FINISHED WITH ALL OF CORE?
2141 007450 101371 BHI RXWNXT ;;;NOT YET-- WRITE NEXT BLOCK
2142 ;
2143 007452 RETURN ;;;YES-- RETURN FROM RXWRT
007452 000207 RTS PC
2144 ;
2145 ; RXWBLK -- ROUTINE TO WRITE ONE BLOCK (256. WORDS) TO MEMORY
2146 ;
2147 ; R0 -- WRITE FUNCTION WITH UNIT #
2148 ; R1 -- ADDRESS OF RXCS
2149 ; R2 -- CURRENT LOGICAL SECTOR # (UPDATED)
2150 ; R3 -- SCRATCH
2151 ; R4 -- CURRENT MEMORY ADDRESS (UPDATED)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 46-1
RX-11 WRITE ROUTINE
2152 ;
2153 007454 RXWBLK:
2154 007454 CALL (PC) ;;;DO 4 CALLS
007454 004717 JSR PC,(PC)
2155 007456 CALL (PC) ;;; TO WRITE SECTOR ROUTINE
007456 004717 JSR PC,(PC)
2156 ;
2157 ; FILL SECTOR BUFFER BEFORE WRITE
2158 ;
2159 007460 012711 000001 MOV #RXFILL!RXGO,(R1) ;;;DO A FILL FUNCTION
2160 007464 10$:
2161 007464 132711 000240 BITB #RXTREQ!RXDONE,(R1) ;;;READY FOR A BYTE YET?
2162 007470 001775 BEQ 10$ ;;;NO-- WAIT UNTIL IT IS
2163 007472 100003 BPL 15$ ;;;DONE-- GO WRITE
2164 007474 112461 000002 MOVB (R4)+,RXDB-RXCS(R1) ;;;STORE A BYTE FROM MEMORY IN SECTOR BUFFER
2165 007500 000771 BR 10$ ;;;LOOP TO FILL BUFFER
2166 ;
2167 ; WRITE A SECTOR
2168 ;
2169 007502 15$:
2170 007502 PUSH R2 ;;;SAVE CURRENT SECTOR
007502 010246 MOV R2,-(SP)
2171 007504 010011 MOV R0,(R1) ;;;EXECUTE A WRITE SECTOR FUNCTION
2172 ;
2173 ; COMPUTE CURRENT PHYSICAL SECTOR # AND TRACK #
2174 ;
2175 007506 005003 CLR R3 ;;;RESET TRACK #
2176 007510 PUSH #26. ;;;SET DIVISOR ON TOP OF STACK
007510 012746 000032 MOV #26.,-(SP)
2177 007514 20$:
2178 007514 005203 INC R3 ;;;ONE MORE TRACK
2179 007516 161602 SUB (SP),R2 ;;;DIVIDE SECTOR BY 26.
2180 007520 002375 BGE 20$ ;;; TO FIND LOGICAL SECTOR # WITHIN TRACK
2181 007522 061602 ADD (SP),R2 ;;;MAKE SECTOR IN RANGE 0. TO 25.
2182 007524 005303 DEC R3 ;;; TRACK IN RANGE 0. TO 76.
2183 007526 022702 000014 CMP #12.,R2 ;;;SECTOR GREATER THAN 12.?
2184 007532 006102 ROL R2 ;;;IF SO, CC-C SET, INTERLEAVE FACTOR OF 2.
2185 007534 006303 ASL R3 ;;;GET 2*TRACK
2186 007536 060302 ADD R3,R2 ;;;SKEW BY 2*TRACK
2187 007540 060302 ADD R3,R2 ;;; 4*TRACK
2188 007542 060302 ADD R3,R2 ;;; 6*TRACK
2189 007544 30$:
2190 007544 161602 SUB (SP),R2 ;;;GET SECTOR IN RANGE -26. TO -1. AGAIN
2191 007546 002376 BGE 30$ ;;; . .
2192 007550 31$:
2193 007550 062602 ADD (SP)+,R2 ;;;MAKE LOGICAL SECTOR IN RANGE 0. TO 25.
2194 ;
2195 007552 006203 ASR R3 ;;;RESTORE TRACK #
2196 007554 122223 CMPB (R2)+,(R3)+ ;;;PHYSICAL SECTOR 1. TO 26., TRACK 1. TO 77.
2197 ;
2198 ; SET SECTOR AND TRACK IN RX-11 TO START WRITE
2199 ;
2200 007556 40$:
2201 007556 105711 TSTB (R1) ;;;READY FOR SECTOR #?
2202 007560 100376 BPL 40$ ;;;NO-- WAIT UNTIL IT IS
2203 007562 110261 000002 MOVB R2,RXDB-RXCS(R1) ;;;YES-- SET SECTOR #
2204 007566 50$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 46-2
RX-11 WRITE ROUTINE
2205 007566 105711 TSTB (R1) ;;;READY FOR TRACK?
2206 007570 100376 BPL 50$ ;;;NO-- WAIT FOR READY
2207 007572 110361 000002 MOVB R3,RXDB-RXCS(R1) ;;;YES-- SET TRACK #
2208 ;
2209 ; WAIT FOR FUNCTION TO COMPLETE
2210 ;
2211 007576 60$:
2212 007576 032711 100040 BIT #RXERR!RXDONE,(R1) ;;;WAIT FOR EROR OR DONE
2213 007602 001775 BEQ 60$ ;;; . .
2214 007604 100560 BMI WRTERR ;;;GIVE UP IF ERROR AND COMPLAIN (AFTER RESTORE)
2215 ;
2216 ; BUMP SECTOR TO NEXT SECTOR AND RETURN
2217 ;
2218 007606 POP R2 ;;;RESTORE LOGICAL SECTOR #
007606 012602 MOV (SP)+,R2
2219 007610 005202 INC R2 ;;;SET TO NEXT SECTOR
2220 007612 RETURN ;;;RETURN TO WRITE ANOTHER SECTOR OR DONE
007612 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 47
RP04/RP06 DISK ROUTINES
2222 .SBTTL RP04/RP06 DISK ROUTINES
2223 ;
2224 ; RPSET -- SET RP DISK ADDRESS
2225 ;
2226 007614 RPSET:
2227 007614 012702 000020 MOV #16.,R2 ;SET LOOP COUNT
2228 007620 20$:
2229 007620 006301 ASL R1 ;MULTIPY ADDRESS
2230 007622 006100 ROL R0 ; BY TWO AND MOVE TRACK & SECTOR TO R0
2231 007624 020027 000574 CMP R0,#19.*20. ;LESS THAN A CYLINDER OF BLOCKS LEFT?
2232 007630 103403 BLO 30$ ;YES-- WE ARE DOWN TO LAST CYLINDER
2233 007632 162700 000574 SUB #19.*20.,R0 ;NO-- TRIM OFF ANOTHER CYLINDER
2234 007636 005201 INC R1 ;COUNT ANOTHER CYLINDER (OR 2**N CYLINDERS)
2235 007640 30$:
2236 007640 077211 SOB R2,20$ ;LOOP FOR ALL SIXTEEN BITS OF ADDRESS
2237 ;
2238 007642 PUSH R1 ;SAVE CYLINDER #
007642 010146 MOV R1,-(SP)
2239 007644 012701 000024 MOV #20.,R1 ;SET TO DIVIDE TRACK/SECTOR IN R0 BY
2240 007650 CALL $DIV ; NUMBER OF SECTORS PER TRACK
007650 004737 000000G JSR PC,$DIV
2241 007654 000300 SWAB R0 ;MOVE TRACK TO HIGH BYTE
2242 007656 050001 BIS R0,R1 ; SECTOR TO LOW BYTE (REMAINDER)
2243 007660 POP R0 ;RESTORE CYLINDER #
007660 012600 MOV (SP)+,R0
2244 007662 RETURN ;RETURN FROM RPSET
007662 000207 RTS PC
2245 ;
2246 ; RPABS -- SET RP DISK ABSOLUTE ADDRESS
2247 ;
2248 .IF DF FTABS
2249 RPABS:
2250 MOV #409.,R0 ;SET MAINTAINENCE CYLINDER **** WON'T WORK FOR RP06 ****
2251 MOV #<13.*BIT8>!<8.*BIT0>,R1 ; AT TRACK 13, SECTOR 8 (VERY END)
2252 RETURN ;RETURN FROM RPABS
2253 .ENDC ; .IF DF FTABS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 48
RP04/RP06 BOOTSTRAP
2255 .SBTTL RP04/RP06 BOOTSTRAP
2256 ;
2257 ;
2258 ; RP DISK BOOTSTRAP
2259 ;
2260 ; THIS BOOT IS READ IN FROM BLOCK 0 OF THE RP BY THE BM873-YF ROM.
2261 ;
2262 ; THE ROM RETURNS THE FOLLOWING VALUES IN THE REGISTERS:
2263 ; R1 -- ADDRESS OF RPCS1
2264 ; R5 -- BOOTSTRAP PARAMETER (NORMALLY SWITCH REGISTER)
2265 ;
2266 007664 RPBOOT:
2267 007664 000240 NOP ;;;THIS IS A BOOTSTRAP
2268 ;
2269 ; RESET THE RP AND SET UP INITIAL TRACK AND SECTOR ADDRESS
2270 ;
2271 007666 012711 000021 MOV #RPPRST!RPGO,(R1) ;;;DO READ-IN PRESET
2272 007672 005004 CLR R4 ;;;CLEAR COUNTER OF 32. WORD BLOCKS READ
2273 007674 005061 000004 CLR RPBA-RPCS1(R1) ;;;SET BUS ADDR TO ZERO
2274 007702' RPBAD1= .+2
2275 007700 012761 000000 000034 MOV #0,RPDC-RPCS1(R1) ;;;SETUP CYLINDER #
2276 007710' RPBAD2= .+2
2277 007706 012761 000000 000006 MOV #0,RPDA-RPCS1(R1) ;;; AND TRACK AND SECTOR
2278 007714 052761 004000 000032 BIS #RPECCI,RPOF-RPCS1(R1) ;;;SET ECC INHIBIT
2279 007722 112711 000070 MOVB #RPREAD,(R1) ;;;SET READ FUNCTION, NO GO
2280 ;
2281 ; READ 1K FROM THE RP TO MEMORY
2282 ;
2283 007726 RPBNXT:
2284 007726 012761 176000 000002 MOV #<-1024.>,RPWC-RPCS1(R1) ;;;SET 1K WORD COUNT
2285 007734 105211 INCB (R1) ;;;DO NEXT READ
2286 007736 10$:
2287 007736 105711 TSTB (R1) ;;;TRANSFER COMPLETE?
2288 007740 100376 BPL 10$ ;;;NO-- WAIT FOR DONE
2289 ;
2290 ; CHECK TO MAKE SURE NO ERRORS
2291 ;
2292 007742 032711 060000 BIT #RPTRE!RPMCPE,(R1) ;;;CONTROLLER ERROR?
2293 007746 001346 BNE RPBOOT ;;;YES-- RETRY
2294 007750 032761 140000 000012 BIT #RPATA!RPERR,RPDS-RPCS1(R1) ;;;ATTENTION OR DRIVE ERROR?
2295 007756 001342 BNE RPBOOT ;;;YES-- RETRY
2296 ;
2297 ; SEE IF DONE WITH ALL OF MEMORY
2298 ;
2299 007760 062704 000040 ADD #1024.*2/100,R4 ;;;BUMP # 32. WORD BLOCKS WE'VE READ
2300 007764 022704 CMP (PC)+,R4 ;;;FINISHED WITH ALL OF MEMORY YET?
2301 007766 000000 RPBMSZ: .WORD 0 ;;;SET UP BY SAVE TO # 32. WORD BLOCKS OF MEMORY
2302 007770 101356 BHI RPBNXT ;;;NO-- READ SOME MORE
2303 ;
2304 ; BOOTSTRAP COMPLETE-- SETUP KT-11 REGISTERS, IF ANY
2305 ;
2306 007772 012737 000340 177776 MOV #PR7,@#PS ;;;INSURE KERNAL MODE
2307 .IF DF M$$MGE
2308 MOV #77406,R2 ;;;SET TO MAP MAX PAGE SIZE
2309 MOV R2,KPDR0 ;;; FOR KERNAL PAGE 0
2310 MOV R2,KPDR7 ;;; AND KP 7
2311 MOV R2,UPDR0 ;;; AND USER PAGE 7
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 48-1
RP04/RP06 BOOTSTRAP
2312 MOV R2,UPDR7 ;;; EXTERNAL PAGE FOR USER, TOO
2313 CLR KPAR0 ;;;MAP KERNAL PAGE 0 TO ABSOLUTE 0
2314 MOV (PC)+,@(PC)+ ;;;SET UP USER PAGE 0
2315 RPBUP0: .WORD 0,UPAR0 ;;;SPACE FOR ADDR OF PAGE
2316 MOV #7600,R2 ;;;POINT TO EXTERNAL PAGE
2317 MOV R2,KPAR7 ;;; FOR EXEC
2318 MOV R2,UPAR7 ;;; AND USER
2319 MOV #1,SSR0 ;;;ENABLE SEGMENTATION
2320 .ENDC
2321 ;
2322 ; SETUP TEMPORARY KERNAL STACK AT TOP OF BOOT BLOCK, AND SAVE
2323 ; BOOTSTRAP PARAMETER AT LOCATION 776
2324 ;
2325 010000 012706 001000 MOV #1000,SP ;;;START STACK AT TOP OF OUR BLOCK
2326 010004 PUSH R5 ;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
010004 010546 MOV R5,-(SP)
2327 ;
2328 ; RETURN TO SAVE TASK IN USER MODE AT SYSTEM RESTORE ENTRY POINT
2329 ;
2330 .IF DF M$$MGE
2331 PUSH #PS.USR!PS.REG!PR7 ;;;USER MODE, PRIORITY 7
2332 .IFF
2333 010006 PUSH #PS.REG!PR7 ;;;SET REGISTER SET 1, PRI 7
010006 012746 004340 MOV #PS.REG!PR7,-(SP)
2334 .ENDC
2335 010012 PUSH #RESTORE ;;; AND RETURN PC IN USER SPACE
010012 012746 002734' MOV #RESTORE,-(SP)
2336 010016 000002 RTI ;;;BACK TO SAVE.
2337 .IF G <<.-RPBOOT>-<256.*2>>
2338 .ERROR <.-RPBOOT> ; RP BOOT TOO BIG FOR FIRST BLOCK
2339 .ENDC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 49
RP04/RP06 WRITE ROUTINE
2341 .SBTTL RP04/RP06 WRITE ROUTINE
2342 ;
2343 ; RPWRT -- WRITE MEMORY TO THE RP DISK
2344 ;
2345 ; INPUTS:
2346 ; DSKADR+0 -- CYLINDER ADDRESS TO START TRANSFER
2347 ; DSKADR+2 -- (BYTE) SECTOR TO START
2348 ; DSKADR+3 -- (BYTE) TRACK TO START
2349 ; DEVUNT -- (BYTE) UNIT # TO WRITE ON
2350 ; MEMSIZ -- # OF 32. WORD BLOCKS OF MEMORY TO WRITE
2351 ;
2352 010020 RPWRT:
2353 010020 012701 176700 MOV #RPCS1,R1 ;;;GET ADDRESS OF RPCS1
2354 010024 005004 CLR R4 ;;;CLEAR POINTER TO # 32. WORD BLOCKS WRITTEN
2355 010026 113761 000044' 000010 MOVB DEVUNT,RPCS2+0-RPCS1(R1);;;SET UNIT #
2356 ;
2357 ; INITIALIZE DRIVE
2358 ;
2359 010034 032711 004000 BIT #RPDVA,(R1) ;;;IS DRIVE AVAILABLE?
2360 010040 001442 BEQ WRTERR ;;;NO-- GIVE ERROR
2361 010042 012711 000021 MOV #RPPRST!RPGO,(R1) ;;;DO A READ-IN PRESET
2362 010046 005061 000004 CLR RPBA-RPCS1(R1) ;;;CLEAR BUS ADDRESS TO START WRITE AT ZERO
2363 010052 013761 000004' 000034 MOV DSKADR+0,RPDC-RPCS1(R1) ;;;SETUP DESIRED CYLINDER
2364 010060 013761 000006' 000006 MOV DSKADR+2,RPDA-RPCS1(R1) ;;; AND TRACK AND SECTOR
2365 010066 052761 004000 000032 BIS #RPECCI,RPOF-RPCS1(R1) ;;;SET ECC INHIBIT
2366 010074 112711 000060 MOVB #RPWRIT,(R1) ;;;SET WRITE FUNCTION, NO GO
2367 ;
2368 ; WRITE ONE BLOCK OF MEMORY TO THE RP04
2369 ;
2370 010100 RPWNXT:
2371 010100 012761 177400 000002 MOV #<-256.>,RPWC-RPCS1(R1) ;;;SET -VE WORD COUNT
2372 010106 105211 INCB (R1) ;;;WRITE NEXT BLOCK
2373 010110 10$:
2374 010110 105711 TSTB (R1) ;;;DONE SET?
2375 010112 100376 BPL 10$ ;;;NO-- WAIT FOR TRANSFER TO COMPLETE
2376 ;
2377 ; CHECK FOR ERRORS DURING TRANSFER
2378 ;
2379 010114 032711 060000 BIT #RPTRE!RPMCPE,(R1) ;;;CONTROLLER ERROR?
2380 010120 001012 BNE WRTERR ;;;YES-- GIVE UP
2381 010122 032761 140000 000012 BIT #RPATA!RPERR,RPDS-RPCS1(R1) ;;;DRIVE ERROR?
2382 010130 001006 BNE WRTERR ;;;YES-- GIVE UP ALSO
2383 ;
2384 ; SEE IF DONE WITH ALL OF MEMORY
2385 ;
2386 010132 062704 000010 ADD #256.*2/100,R4 ;;;ADD A BLOCK'S WORTH OF 32. WORD BLOCKS
2387 010136 023704 000014' CMP MEMSIZ,R4 ;;;DONE WITH ALL OF MEMORY?
2388 010142 101356 BHI RPWNXT ;;;NO-- WRITE NEXT BLOCK
2389 010144 RETURN ;;;YES-- RETURN FROM RPWRT
010144 000207 RTS PC
2390 ;
2391 ;
2392 ; HERE ON WRITE ERRORS ON EITHER THE RP04 OR THE RX-11
2393 ; JUST RETURN TO RESTORE WITH WEFLAG= 1 TO INDICATE ERROR
2394 ;
2395 010146 WRTERR:
2396 010146 105237 000060' INCB WEFLAG ;;;NOTE ERROR IN FLAG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 49-1
RP04/RP06 WRITE ROUTINE
2397 010152 000137 002734' JMP RESTORE ;;;RESTORE SYSTEM, THEN GIVE ERROR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 50
TC-11 DECTAPE ROUTINES
2399 .SBTTL TC-11 DECTAPE ROUTINES
2400 ;
2401 ; TCABS -- SET TC-11 ABSOLUTE BLOCK #
2402 ;
2403 .IF DF FTABS
2404 TCABS:
2405 MOV #^D<578-<28*4>-1>,R1 ;SET TO END OF TAPE
2406 ; BR TCSET ;ONWARD!
2407 .ENDC ; .IF DF FTABS
2408 ;
2409 ; TCSET -- SET TC-11 BLOCK #
2410 ;
2411 010156 TCSET:
2412 010156 010100 MOV R1,R0 ;JUST COPY LOW BLOCK #
2413 010160 RETURN ; . .
010160 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 51
TC-11 BOOTSTRAP
2415 .SBTTL TC-11 BOOTSTRAP
2416 ;
2417 ; HERE TO BOOT FROM TC-11
2418 ;
2419 ; REGISTERS LEFT BY BM-873 ROM:
2420 ; R1 -- ADDRESS OF TCCM
2421 ; R5 -- BOOT PARAMETER WORD
2422 ;
2423 010162 TCBOOT:
2424 010162 000240 NOP ;;;THIS IS A BOOTSTRAP
2425 ;
2426 ; SELECT UNIT AND SET UP REGISTERS:
2427 ; R1 -- ADDRESS OF TCCM
2428 ; R2 -- BLOCK #
2429 ; R4 -- COUNT OF 32. WORD BLOCKS READ
2430 ;
2431 010166' TCBAD1=.+2
2432 010166' TCBAD2=.+2
2433 010164 012702 000000 MOV #0,R2 ;;;GET BLOCK #
2434 010170 010203 MOV R2,R3 ;;;COPY THE BLOCK #
2435 010172 162703 000003 SUB #3,R3 ;;;BACK TO THREE BLOCK BEFORE IT
2436 010176 005004 CLR R4 ;;;RESET # BLOCKS READ
2437 010200 005061 000004 CLR TCBA-TCCM(R1) ;;;RESET BUS ADDRESS REGISTER
2438 ;
2439 ; SEARCH FOR CURRENT BLOCK ON TAPE
2440 ;
2441 010204 112711 000002 MOVB #TCRNUM,(R1) ;;;SET READ BLOCK # FUNCTION
2442 010210 5$:
2443 010210 052711 004000 BIS #TCREV,(R1) ;;;SET REVERSE MODE
2444 010214 105211 INCB (R1) ;;;START READ BLOCK FUNCTION
2445 010216 10$:
2446 010216 105711 TSTB (R1) ;;;READY?
2447 010220 100376 BPL 10$ ;;;NO-- WAIT
2448 010222 005711 TST (R1) ;;;ERROR?
2449 010224 100007 BPL 40$ ;;;NO-- CHECK OUT BLOCK #
2450 010226 20$:
2451 010226 005761 177776 TST TCST-TCCM(R1) ;;;ERROR-- IS IT END-ZONE?
2452 010232 100353 BPL TCBOOT ;;;NO-- RETRY
2453 010234 032711 004000 BIT #TCREV,(R1) ;;;GOING REVERSE?
2454 010240 001763 BEQ 5$ ;;;NO-- GO THAT WAY
2455 010242 000403 BR 50$ ;;;YES-- GO FORWARD
2456 ;
2457 010244 40$:
2458 010244 026103 000006 CMP TCDT-TCCM(R1),R3 ;;;PAST BLOCK YET (CURRENT BLOCK LOW)?
2459 010250 003357 BGT 5$ ;;;NO-- KEEP SEARCHING IN REVERSE
2460 010252 50$:
2461 010252 042711 004000 BIC #TCREV,(R1) ;;;GO FORWARD
2462 010256 105211 INCB (R1) ;;;START READ BLOCK # FUNCTION
2463 010260 60$:
2464 010260 105711 TSTB (R1) ;;;READY?
2465 010262 100376 BPL 60$ ;;;NO-- WAIT
2466 010264 005711 TST (R1) ;;;ERROR?
2467 010266 100757 BMI 20$ ;;;YES-- CHECK IT OUT
2468 010270 026102 000006 CMP TCDT-TCCM(R1),R2 ;;;AT PROPER BLOCK?
2469 010274 002766 BLT 50$ ;;;NOT YET-- KEEP GOING
2470 010276 003344 BGT 5$ ;;;OOPS, PAST IT-- GO BACK AGAIN
2471 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 51-1
TC-11 BOOTSTRAP
2472 ; BLOCK FOUND-- START TRANSFER
2473 ;
2474 010300 112711 000004 MOVB #TCREAD,(R1) ;;;SET READ FUNCTION, NO GO
2475 ;
2476 ; START NEXT 1.K TRANSFER
2477 ;
2478 010304 TCBNXT:
2479 010304 012761 176000 000002 MOV #<-1024.>,TCWC-TCCM(R1) ;;;SET WORD COUNT
2480 010312 105211 INCB (R1) ;;;SET GO
2481 010314 10$:
2482 010314 105711 TSTB (R1) ;;;READY?
2483 010316 100376 BPL 10$ ;;;NO-- WAIT FOR TRANSFER TO COMPLETE
2484 010320 005711 TST (R1) ;;;ERRORS?
2485 010322 100717 BMI TCBOOT ;;;YES-- TRY IT ALL AGAIN
2486 ;
2487 ; SEE IF ALL DONE
2488 ;
2489 010324 062704 000040 ADD #1024.*2/100,R4 ;;;BUMP COUNT OF 32. WORD BLOCKS READ
2490 010330 022704 CMP (PC)+,R4 ;;;DONE YET?
2491 010332 000000 TCBMSZ: .WORD 0 ;;;SPACE FOR SIZE
2492 010334 101363 BHI TCBNXT ;;;NO-- GET NEXT BLOCK
2493 010336 112711 000011 MOVB #TCSTOP+TCGO,(R1) ;;;STOP TAPE
2494 ;
2495 ; BOOTSTRAP COMPLETE-- SETUP KT-11 REGISTERS, IF ANY
2496 ;
2497 010342 012737 000340 177776 MOV #PR7,@#PS ;;;INSURE KERNAL MODE
2498 .IF DF M$$MGE
2499 MOV #77406,R2 ;;;SET TO MAP MAX PAGE SIZE
2500 MOV R2,KPDR0 ;;; FOR KERNAL PAGE 0
2501 MOV R2,KPDR7 ;;; AND KP 7
2502 MOV R2,UPDR0 ;;; AND USER PAGE 7
2503 MOV R2,UPDR7 ;;; EXTERNAL PAGE FOR USER, TOO
2504 CLR KPAR0 ;;;MAP KERNAL PAGE 0 TO ABSOLUTE 0
2505 MOV (PC)+,@(PC)+ ;;;SET UP USER PAGE 0
2506 TCBUP0: .WORD 0,UPAR0 ;;;SPACE FOR ADDR OF PAGE
2507 MOV #7600,R2 ;;;POINT TO EXTERNAL PAGE
2508 MOV R2,KPAR7 ;;; FOR EXEC
2509 MOV R2,UPAR7 ;;; AND USER
2510 MOV #1,SSR0 ;;;ENABLE SEGMENTATION
2511 .ENDC
2512 ;
2513 ; SETUP TEMPORARY KERNAL STACK AT TOP OF BOOT BLOCK, AND SAVE
2514 ; BOOTSTRAP PARAMETER AT LOCATION 776
2515 ;
2516 010350 012706 001000 MOV #1000,SP ;;;START STACK AT TOP OF OUR BLOCK
2517 010354 PUSH R5 ;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
010354 010546 MOV R5,-(SP)
2518 ;
2519 ; RETURN TO SAVE TASK IN USER MODE AT SYSTEM RESTORE ENTRY POINT
2520 ;
2521 .IF DF M$$MGE
2522 PUSH #PS.USR!PS.REG!PR7 ;;;USER MODE, PRIORITY 7
2523 .IFF
2524 010356 PUSH #PS.REG!PR7 ;;;SET REGISTER SET 1, PRI 7
010356 012746 004340 MOV #PS.REG!PR7,-(SP)
2525 .ENDC
2526 010362 PUSH #RESTORE ;;; AND RETURN PC IN USER SPACE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 51-2
TC-11 BOOTSTRAP
010362 012746 002734' MOV #RESTORE,-(SP)
2527 010366 000002 RTI ;;;BACK TO SAVE.
2528 .IF G <<.-TCBOOT>-<256.*2>>
2529 .ERROR <.-TCBOOT> ; TC BOOT TOO BIG FOR FIRST BLOCK
2530 .ENDC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 52
TC-11 WRITE ROUTINE
2532 .SBTTL TC-11 WRITE ROUTINE
2533 ;
2534 ; TCWRT -- TC-11 DECTAPE WRITE ROUTINE
2535 ;
2536 ; INPUTS:
2537 ; DSKADR+0 -- BLOCK # TO START TRANSFER AT
2538 ; DEVUNT -- UNIT # TO SCRIBBLE ON
2539 ; MEMSIZ -- # OF 32. WORD BLOCKS TO WRITE
2540 ;
2541 ; REGISTERS:
2542 ; R1 -- ADDRESS OF TCCM
2543 ; R2 -- BLOCK #
2544 ; R4 -- COUNT OF 32. WORD BLOCKS WRITTEN
2545 ;
2546 010370 TCWRT:
2547 010370 012701 177342 MOV #TCCM,R1 ;;;ADDRESS COMMAND REGISTER
2548 010374 013702 000004' MOV DSKADR+0,R2 ;;;GET BLOCK #
2549 010400 010203 MOV R2,R3 ;;;COPY THE BLOCK #
2550 010402 162703 000003 SUB #3,R3 ;;;BACK TO THREE BLOCK BEFORE IT
2551 010406 113761 000044' 000001 MOVB DEVUNT,1(R1) ;;;SELECT PROPER UNIT
2552 010414 005004 CLR R4 ;;;RESET # BLOCKS READ
2553 010416 005061 000004 CLR TCBA-TCCM(R1) ;;;RESET BUS ADDRESS REGISTER
2554 ;
2555 ; SEARCH FOR CURRENT BLOCK ON TAPE
2556 ;
2557 010422 112711 000002 MOVB #TCRNUM,(R1) ;;;SET READ BLOCK # FUNCTION
2558 010426 5$:
2559 010426 052711 004000 BIS #TCREV,(R1) ;;;SET REVERSE MODE
2560 010432 105211 INCB (R1) ;;;START READ BLOCK FUNCTION
2561 010434 10$:
2562 010434 105711 TSTB (R1) ;;;READY?
2563 010436 100376 BPL 10$ ;;;NO-- WAIT
2564 010440 005711 TST (R1) ;;;ERROR?
2565 010442 100007 BPL 40$ ;;;NO-- CHECK OUT BLOCK #
2566 010444 20$:
2567 010444 005761 177776 TST TCST-TCCM(R1) ;;;ERROR-- IS IT END-ZONE?
2568 010450 100244 BPL TCBOOT ;;;NO-- RETRY
2569 010452 032711 004000 BIT #TCREV,(R1) ;;;GOING REVERSE?
2570 010456 001763 BEQ 5$ ;;;NO-- GO THAT WAY
2571 010460 000403 BR 50$ ;;;YES-- GO FORWARD
2572 ;
2573 010462 40$:
2574 010462 026103 000006 CMP TCDT-TCCM(R1),R3 ;;;PAST BLOCK YET (CURRENT BLOCK LOW)?
2575 010466 003357 BGT 5$ ;;;NO-- KEEP SEARCHING IN REVERSE
2576 010470 50$:
2577 010470 042711 004000 BIC #TCREV,(R1) ;;;GO FORWARD
2578 010474 105211 INCB (R1) ;;;START READ BLOCK # FUNCTION
2579 010476 60$:
2580 010476 105711 TSTB (R1) ;;;READY?
2581 010500 100376 BPL 60$ ;;;NO-- WAIT
2582 010502 005711 TST (R1) ;;;ERROR?
2583 010504 100757 BMI 20$ ;;;YES-- CHECK IT OUT
2584 010506 026102 000006 CMP TCDT-TCCM(R1),R2 ;;;AT PROPER BLOCK?
2585 010512 002766 BLT 50$ ;;;NOT YET-- KEEP GOING
2586 010514 003344 BGT 5$ ;;;OOPS, PAST IT-- GO BACK AGAIN
2587 ;
2588 ; BLOCK FOUND-- START TRANSFER
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 52-1
TC-11 WRITE ROUTINE
2589 ;
2590 010516 112711 000014 MOVB #TCWRIT,(R1) ;;;SET WRITE FUNCTION, NO GO
2591 ;
2592 ; START NEXT 1.K TRANSFER
2593 ;
2594 010522 TCWNXT:
2595 010522 012761 177400 000002 MOV #<-256.>,TCWC-TCCM(R1) ;;;SET WORD COUNT
2596 010530 105211 INCB (R1) ;;;SET GO
2597 010532 10$:
2598 010532 105711 TSTB (R1) ;;;READY?
2599 010534 100376 BPL 10$ ;;;NO-- WAIT FOR TRANSFER TO COMPLETE
2600 010536 005711 TST (R1) ;;;ERRORS?
2601 010540 100410 BMI TCWERR ;;;YES-- GIVE UP
2602 ;
2603 ; SEE IF ALL DONE
2604 ;
2605 010542 062704 000010 ADD #256.*2/100,R4 ;;;BUMP COUNT OF 32. WORD BLOCKS TRANSFERED
2606 010546 023704 000014' CMP MEMSIZ,R4 ;;;DONE YET?
2607 010552 101363 BHI TCWNXT ;;;NO-- GET NEXT BLOCK
2608 010554 112711 000011 MOVB #TCSTOP+TCGO,(R1) ;;;STOP TAPE
2609 010560 RETURN ;;;FROM TCWRT
010560 000207 RTS PC
2610 ;
2611 ; HERE ON ERROR ON TC-11
2612 ;
2613 010562 TCWERR:
2614 010562 000137 010146' JMP WRTERR ;;;GIVE UP
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 53
CHK11 - ONCE ONLY SYSTEM DIAGNOSTIC 25 NOV 80
2616 .SBTTL CHK11 - ONCE ONLY SYSTEM DIAGNOSTIC 25 NOV 80
2617
2618 000000 .REPT 0
2619
2620 COPYRIGHT (C) 1977,1978,1979,1980,1981 BY
2621 DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
2622
2623 THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2624 ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
2625 INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
2626 COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
2627 OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
2628 TRANSFERRED.
2629
2630 THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
2631 AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2632 CORPORATION.
2633
2634 DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2635 SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
2636
2637 .ENDR
2638
2639
2640
2641
2642 ; Version 3(67) 13 NOV 79 DMCC/EGF/JBS/LAD/KR/EJW/MM/DRL/KR/DRL/KR/DRL
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 54
CHK11 - ONCE ONLY SYSTEM DIAGNOSTIC 25 NOV 80
2644 ; Revision History
2645
2646 ; 1(13) 08-Sep-76 JBS Started revision history
2647 ; 1(14) 19-Oct-76 KR Added DZ11 code and support to count devices below it
2648 ; Also added more timing before RESET, and CPU type
2649 ; checking
2650 ; as well as fixing bug in core reporting on 11/34
2651 ; 1(15) 03-Nov-76 KR fixed bug in 11/05 CPU determination
2652 ; 1(16) 04-NOV-76 JBS INCLUDED EJW'S DTE CHECKING
2653 ; 1(17) 29-DEC-76 JBS INCLUDED SOME DN61-S CODE
2654 ; 1(20) 21-JAN-77 JBS REMOVED USE OF SPL INSTRUCTION
2655 ; 1(21) 25-JAN-77 JBS STARTED ADDING DN20 CODE (INCOMPLETE)
2656 ; 1(22) 28-JAN-77 JBS SUPPORT DS11 ONLY ON DC75 (CONFLICT WITH LP20)
2657 ; 1(23) 31-JAN-77 JBS ASSUME NOT DN20 ADDRESSING UNLESS REQUESTED
2658 ; 1(24) 01-FEB-77 JBS MINOR LISTING CLEANUP
2659 ; 1(25) 14-FEB-77 JBS UPDATED LEGAL NOTICE AS PER 005-003-286-03
2660 ; 1(26) 09-MAR-77 JBS STORE DTE20 ADDRESSES AND VECTORS
2661 ; AND DO SOME LISTING CLEANUP
2662 ; 1(27) 21-MAR-77 JBS REMOVE KGLOAD MACRO
2663 ;
2664 ; 1(30) 01-APR-77 JBS CHANGE NAME TO DN61
2665 ; 1(31) 06-APR-77 MM SAVE INTERRUPT VECTOR LOCATION
2666 ; IN A DIFFERENT GLOBAL CELL DTEDTO
2667 ; 1(32) 12-APR-77 JBS FIX SUPPRESSION OF KG11-A MESSAGE
2668 ; 1(33) 14-APR-77 JBS FIX DUP11 VECTOR CALCULATION
2669 ; AND ADD KMC11
2670 ; 1(34) 17-MAY-77 JBS REMOVE EXPLICIT REFERENCES TO PS REGISTER AND
2671 ; FILL VECTOR SPACE TO 1200 INSTEAD OF 1000.
2672 ; 1A(35) 27-JUN-77 JBS IMPROVE KMC11 CHECKING AND START IT
2673 ; IF REQUESTED.
2674 ; 1A(36) 30-JUN-77 JBS IMPROVE KMC11 CHECKING AGAIN AND LOAD ITS
2675 ; TO 1A(37) CRAM IF REQUESTED.
2676 ; 2(40) 18-JUL-77 JBS CHANGE VERSION NUMBER TO 2, DONT LOAD
2677 ; KMC11 CRAM IF SIZE11 DID.
2678 ; 2(41) 12-SEP-77 JBS DONT LOAD MORE THAN 2000 OCTAL
2679 ; WORDS OF KMC11 CRAM (I.E., DONT LOAD
2680 ; THE VERSION NUMBER).
2681 ; 2(42) 13-SEP-77 JBS REMOVE ALL REFERENCES TO REGISTER 'P'.
2682 ; 2(43) 14-OCT-77 JBS FIX KMC11 STARTING LOOP TO START MORE
2683 ; THAN ONE KMC11
2684 ; 2(44) 16-JAN-78 DRL FILL ONLY TO 1000 NOT 1200 FOR VECTORS
2685 ; (THIS PREVENTS SCREWING DDT.P11)
2686 ; 3(45) 16-JAN-78 DRL CORRECT DC75 CONDITIONALS
2687 ; UPDATA VERSION NUMBER
2688 ; TAKE OUT EXTRA DC75 CODE
2689 ; FIX DL10 TESTS
2690 ; 3(46) 23-JAN-78 DRL RESTRUCTURE DEVICE MACROS, AND
2691 ; FIX WAY CODE IS INCLUDED OR NOT
2692 ; 3(47) 2-Mar-78 KR Add code to check all of memory, using
2693 ; memory management if present
2694 ; 3(50) 5-Mar-78 KR Add code to distinguish types of KMC11's on DN20
2695 ; 3(51) 21-JUN-78 DRL Fix timing problems for dz11's
2696 ; 3(52) 7-jul-78 drl Add LP20 code
2697 ; 3(53) 3-AUG-78 DRL Make the LP20 code a little smarter
2698 ; 3(54) 5-Sep-78 KR Add DMC11 code, and make DZ11 code skip echo test
2699 ; if interrupt didn't occur (since it will
2700 ; always fail as well)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 54-1
CHK11 - ONCE ONLY SYSTEM DIAGNOSTIC 25 NOV 80
2701 ; 3(55) 12-Sep-78 Allow DL10 on other than 100000
2702 ; 3(57) 26-Sep-78 Put back .BLKB at CKBLK
2703 ; 3(60) 27-NOV-78 DRL FEATURE TEST THE CONTINUE ON ERROR STUFF
2704 ; 3(64) 26-JUN-79 DRL FIX DMC BUG (MR NOT SET AT RIGHT TIME)
2705 ; FIX TYPO FOR DL11 CODE
2706
2707 000067 VRCHK1=067
2708 000004 ERRINT=4
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 55
CHK11 - ONCE ONLY SYSTEM DIAGNOSTIC 25 NOV 80
2710 ; THIS CODE IS EXECUTED ONCE AND THEN OVERLAID WITH TABLES
2711 ;
2712 ; CALL TO CHK11 IS AS FOLLOWS:
2713 ; JSR PC,CHK.11
2714 ; .ASCIZ \PROGRAM NAME\
2715 ; RETURNS BY JUMP TO 'BEGIN'
2716 ; OR TO 'CKDONE' IF THIS IS DEFINED
2717 ;
2718 ; CHK11 WILL DETERMINE WHAT HARDWARE IS PRESENT
2719 ; AND WILL PERFORM A FEW SIMPLE DIAGNOSTIC TESTS OF THE HDW
2720 ;
2721 ; FOR DEV = < DH11, DM11BB, DP11, DQ11, DS11, DU11>
2722 ; CHK11 WILL: JSR PC,CKA'DEV
2723 ; WITH (R3) = DEVICE VECTOR
2724 ; AND (R4) = DEVICE ADR
2725 ; AND (R1) = DEVICE ADR
2726 ; ONCE FOR EACH DEVICE AND A FINAL:
2727 ; JSR PC,CKA'DEV WITH (R4)=0
2728 ;
2729 ; ALL SYMBOLS BEGINING CHK OR CK ARE RESERVED FOR CHK11
2730 010566 ND FLOATV,300 ;FIRST FLOATING VECTOR
2731 010566 ND FLOATD,160000 ;FLOATING DEVICES BEGIN HERE + 10
2732 010566 ND CKDONE,BEGIN
2733 010566 ND BEGIN,CKDONE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 56
CHK11 MACRO'S
2735 .SBTTL CHK11 MACRO'S
2736
2737 ;THIS MACRO IS USED FOR TYPING TEXT AND/OR FOR
2738 ;ERROR REPORTING.
2739 ;
2740 ; ARG BITS ;WHAT TO DO ON A TRAP
2741 000001 CKEFAT= B0 ;FATAL ERROR - HALT
2742 000002 CKEPC= B1 ;PRINT ADDRESS OF ERROR TRAP
2743 000004 CKEMSG= B2 ;PRINT THE MESSAGE FOLLOWING CK11SC
2744 000010 CKEDID= B3 ;PRINT DEVICE ID AND REG
2745 000020 CKEMSE= B4 ;PRINT THE MESSAGE POINTED TO BY
2746 ; THE ADDRESS FOLLOWING THE TRAP.
2747 000040 CKENCL= B5 ;PRINT TEXT WITH OUT CR+LF
2748 000100 CKEGB= B6 ;PRINT ADR/REG=XXXXX GD=XXXXX BD=XXXXX XOR=XXXXX
2749 000200 CKEWRN=B7 ;address is virtual, print physical [3(47)]
2750 ;
2751 ; ARG MSG ;TEXT TO BE OUTPUT
2752 ;
2753 ; ARG COMENT ;ADD A COMMENT TO TRAP
2754 ;
2755 ; ARG STOPCD ;ON A FATAL ERROR VALUE TO BE PUT IN R0
2756 ;
2757 .MACRO CK11SC BITS,MSG,COMENT,STOPCD
2758 .NCHR CKZZZX,<MSG>
2759 .IIF NB,STOPCD, MOV #STOPCD,CKSPCD ;VALUE TO DISPLAY IN R0,
2760 ;AND DATA LIGHTS ON FATAL ERROR
2761 .IIF EQ,CKZZZX, TRAP BITS ;COMENT
2762 .IF NE,CKZZZX
2763 .IF EQ,<BITS&CKEMSE>
2764 TRAP BITS!CKEMSG ;COMENT
2765 ; ASCIZ <MSG>
2766 .ENDC
2767 .IF NE,<BITS&CKEMSE>
2768 TRAP BITS&<^CCKEMSG> ;COMENT
2769 .WORD MSG ;ADR OF MESSAGE
2770 .ENDC
2771 .ENDC
2772 .ENDM CK11SC
2773
2774
2775
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 57
CHK11 MACRO'S
2777 ;THIS MACRO IS USED TO CHECK INTERRUPT CONDITIONS
2778 ;
2779 ; ARG ENBADR ;DEVICE ADR TO ENABLE INTERRUPTS
2780 ;
2781 ; ARG INTADR ;DEVICE ADR TO GENERATE AN INTERRUPT
2782 ;
2783 ; ARG ENLBIT ;BIT TO ENABLE INTERRUPTS
2784 ;
2785 ; ARG INTBIT ;BITS TO CHECK INTERRUPT CONDITIONS
2786 ;
2787 ; ARG BITCLR ;BITS TO CLEAR INTERRUPT CONDITIONS
2788 ; ;IF CLEARING INTERRUPT BITS WON'T CLEAR
2789 ; ;THEM. [EXAMPLE - DL10]
2790 ;
2791 ; ARG INTSUB ;subroutine to cause interrupt, if normal bit
2792 ; ;setting doesnt work. Otherwise 0.
2793 ;
2794 .MACRO $CKINT ENBADR,INTADR,ENLBIT,INTBIT,BITCLR,INTSUB
2795 .IIF NB,ENBADR, MOV ENBADR,R1 ;LOAD ENABLE ADR
2796 .IIF NB,INTADR, MOV INTADR,R2 ;LOAD INTERRUPT ADR
2797 JSR R5,CKINT ;GO CHECK INTERRUPTS
2798 .WORD ENLBIT ;ENABLE BITS - ENLBIT
2799 .WORD INTBIT ;INTERRUPT BITS - INTBIT
2800 .IIF B,BITCLR, .WORD 0 ;NO SPECIAL CLEAR BITS
2801 .IIF NB,BITCLR, .WORD BITCLR ;BITS TO CLEAR DEVICE - BITCLR
2802 .IIF B,INTSUB, .WORD 0 ;no interrupt SUB,routine needed
2803 .IIF NB,INTSUB, .WORD INTSUB ;subroutine to generate interrupt
2804 .ENDM $CKINT
2805
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 58
CHK11 MACRO'S
2807 ;THIS MACRO IS USED TO TO CALL THE ROUTINE TO CHECK A DEVICE
2808 ;AND ASSIGN THE FLOATING ADDRESS AND VECTORS IF THE DEVICE
2809 ;IS THE TYPE THAT REQUIRES IT.
2810 ;
2811 ; ARG A ;DEVICE ADDRESS OR 0 IF FLOATING DEVICE
2812 ;
2813 ; ARG MAXN ;MAXIMUM NUMBER OF DEVICES
2814 ;
2815 ; ARG VI ;VECTOR INCREMENT
2816 ;
2817 ; ARG HI ;HARDWARE INCREMENT
2818 ;
2819 ; ARG VM ;VECTOR MULTIPLE
2820 ;
2821 ; ARG NAM ;ADDRESS OF DEVICE NAME
2822 ;
2823 ; ARG FV ;FIRST VECTOR ADR (FIXED DEV ONLY)
2824 ;
2825 .MACRO DEVICE A,MAXN,VI,HI,VM,NAM,FV
2826
2827 ;DETERMINE HOW MANY NAM'11S IN SYSTEM
2828
2829 JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR NAM'11
2830 .WORD A ;1ST NAM'11 ADR IS A
2831 .BYTE <MAXN>,<VI> ;MAXIMUM NUMBER OF NAM'11 IS MAXN,
2832 ; VECTOR INCREMENT IS VI
2833 .BYTE <HI>,<VM> ;HARDWARE INCREMENT IS HI,
2834 ; 1ST VECTOR MULTIPLE IS VM
2835 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
2836 .WORD CKN'NAM'11 ;ADDRESS OF ASCIZ \NAM'11\
2837 .IIF DF CK'NAM'11,CK'NAM'$$=CK'NAM'11 ;IF DEFINED, USE THE PROC
2838 .IIF NDF CK'NAM'11,CK'NAM'$$=CKPOPJ ;ELSE JUST EXIT
2839 .WORD CK'NAM'$$ ;ADDRESS OF ROUTINE TO CHECK
2840 ; DEVICE (CK'NAM'11)
2841 .IIF DF CKA'NAM'11,CKA'NAM'$$=CKA'NAM'11 ;IF PROGRAM ENTRY DEFINED, USE IT
2842 .IIF NDF CKA'NAM'11,CKA'NAM'$$=CKPOPJ ;ELSE JUST EXIT
2843 .WORD CKA'NAM'$$ ;CALL FOR MAIN PROGRAM (CKA'NAM'11)
2844 .WORD 0 ;FREE ENTRY
2845 .WORD 0 ;WILL CONTAIN NUMBER OF NAM'11 FOUND
2846 .WORD 0 ;WILL CONTAIN FIRST NAM'11 VECTOR ADR
2847 .IIF NDF,NAM'.LVL,NAM'.LVL=0
2848 .WORD NAM'.LVL*40 ;CONTAINS NAM'11 PI LEVEL
2849 .WORD FV ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2850 .ENDM DEVICE
2851
2852
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 59
CHK11 MACRO'S
2854 ;THIS MACRO IS USED FOR SAVING GOOD, BAD, AND ADR ON THE STACK
2855 ;PRIOR TO CALLING "CHKERR".
2856 ;
2857 ; ARG GD ;GOOD DATA
2858 ;
2859 ; ARG BD ;BAD DATA
2860 ;
2861 ; ARG ADR ;ADDRESS WHERE IT HAPPENED
2862 ;
2863 .MACRO CKSERR GD,BD,ADR
2864 MOV GD,-(SP) ;SAVE GOOD (GD) ON STACK
2865 MOV BD,-(SP) ;SAVE BAD (BD) ON STACK
2866 MOV ADR,-(SP) ;SAVE ADDRESS (ADR) ON STACK
2867 .ENDM CKSERR
2868
2869 .SBTTL DEFINE DEVICE BLOCKS FOR EACH NODE TYPE
2870
2871 ; THE CHOICES ARE:
2872 ; 1 DC75
2873 ; 2 DN80/81/82
2874 ; 3 DN85/87
2875 ; 4 DN87S
2876 ; 5 DN20/21/22/200
2877 ;
2878 ; EACH OF THESE ASSIGNS VECTORS AND CSR'S IN A DIFFERENT MANNER.
2879
2880 010566 CKCDEV: ;NOTHING BUT DEVICE MACROS MAY EXIST BETWEEN THE LABELS
2881 ;CKCDEV AND CKCEND, AS THESE MACROS CAUSE CODE & TABLES
2882 ;TO BE BUILD. ALSO, THE SYMBOL CKCADD MUST BE DEFINED
2883 ; TO BE .-CKCDEV AFTER THE FIRST DEVICE MACRO FOR EACH
2884 ; TYPE OF SYSTEM (I.E. THE LENGTH OF THE DEVICE MACRO).
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 60
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2886 .SBTTL DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2887
2888 010566 DEVICE CTISTS,1,0,0,0,KL,CTOVEC ;OPR TTY (DL11-C)
010566 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR KL11
010572 177560 .WORD CTISTS ;1ST KL11 ADR IS CTISTS
010574 001 000 .BYTE <1>,<0> ;MAXIMUM NUMBER OF KL11 IS 1,
010576 000 000 .BYTE <0>,<0> ;HARDWARE INCREMENT IS 0,
010600 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
010602 011346' .WORD CKNKL11 ;ADDRESS OF ASCIZ \KL11\
010604 016406' .WORD CKKL$$ ;ADDRESS OF ROUTINE TO CHECK
010606 012302' .WORD CKAKL$$ ;CALL FOR MAIN PROGRAM (CKAKL11)
010610 000000 .WORD 0 ;FREE ENTRY
010612 000000 .WORD 0 ;WILL CONTAIN NUMBER OF KL11 FOUND
010614 000000 .WORD 0 ;WILL CONTAIN FIRST KL11 VECTOR ADR
010616 000200 .WORD KL.LVL*40 ;CONTAINS KL11 PI LEVEL
010620 000064 .WORD CTOVEC ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2889 000034 CKCADD=.-CKCDEV
2890 010622 DEVICE 175610,1,0,0,0,RD,304 ;TTY INTERFACE (DL11-E) KLINIK
010622 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR RD11
010626 175610 .WORD 175610 ;1ST RD11 ADR IS 175610
010630 001 000 .BYTE <1>,<0> ;MAXIMUM NUMBER OF RD11 IS 1,
010632 000 000 .BYTE <0>,<0> ;HARDWARE INCREMENT IS 0,
010634 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
010636 011361' .WORD CKNRD11 ;ADDRESS OF ASCIZ \RD11\
010640 016342' .WORD CKRD$$ ;ADDRESS OF ROUTINE TO CHECK
010642 012302' .WORD CKARD$$ ;CALL FOR MAIN PROGRAM (CKARD11)
010644 000000 .WORD 0 ;FREE ENTRY
010646 000000 .WORD 0 ;WILL CONTAIN NUMBER OF RD11 FOUND
010650 000000 .WORD 0 ;WILL CONTAIN FIRST RD11 VECTOR ADR
010652 000200 .WORD RD.LVL*40 ;CONTAINS RD11 PI LEVEL
010654 000304 .WORD 304 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2891 010656 DEVICE 175630,3,<-10>,10,0,DL,744 ;ASYNC I/O (DL11-E)
010656 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR DL11
010662 175630 .WORD 175630 ;1ST DL11 ADR IS 175630
010664 003 370 .BYTE <3>,<-10> ;MAXIMUM NUMBER OF DL11 IS 3,
010666 010 000 .BYTE <10>,<0> ;HARDWARE INCREMENT IS 10,
010670 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
010672 011377' .WORD CKNDL11 ;ADDRESS OF ASCIZ \DL11\
010674 016342' .WORD CKDL$$ ;ADDRESS OF ROUTINE TO CHECK
010676 012302' .WORD CKADL$$ ;CALL FOR MAIN PROGRAM (CKADL11)
010700 000000 .WORD 0 ;FREE ENTRY
010702 000000 .WORD 0 ;WILL CONTAIN NUMBER OF DL11 FOUND
010704 000000 .WORD 0 ;WILL CONTAIN FIRST DL11 VECTOR ADR
010706 000200 .WORD DL.LVL*40 ;CONTAINS DL11 PI LEVEL
010710 000744 .WORD 744 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2892 010712 DEVICE CD.STS,1,0,0,0,CD,CD.VEC ;CARD READER (CD11)
010712 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR CD11
010716 177160 .WORD CD.STS ;1ST CD11 ADR IS CD.STS
010720 001 000 .BYTE <1>,<0> ;MAXIMUM NUMBER OF CD11 IS 1,
010722 000 000 .BYTE <0>,<0> ;HARDWARE INCREMENT IS 0,
010724 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
010726 011334' .WORD CKNCD11 ;ADDRESS OF ASCIZ \CD11\
010730 017122' .WORD CKCD$$ ;ADDRESS OF ROUTINE TO CHECK
010732 012302' .WORD CKACD$$ ;CALL FOR MAIN PROGRAM (CKACD11)
010734 000000 .WORD 0 ;FREE ENTRY
010736 000000 .WORD 0 ;WILL CONTAIN NUMBER OF CD11 FOUND
010740 000000 .WORD 0 ;WILL CONTAIN FIRST CD11 VECTOR ADR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 60-1
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
010742 000300 .WORD CD.LVL*40 ;CONTAINS CD11 PI LEVEL
010744 000230 .WORD CD.VEC ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2893 010746 DEVICE LP.STS,2,<-10>,10,0,LP,LP.VEC ;LINE PRINTER (LP11)
010746 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR LP11
010752 177514 .WORD LP.STS ;1ST LP11 ADR IS LP.STS
010754 002 370 .BYTE <2>,<-10> ;MAXIMUM NUMBER OF LP11 IS 2,
010756 010 000 .BYTE <10>,<0> ;HARDWARE INCREMENT IS 10,
010760 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
010762 011433' .WORD CKNLP11 ;ADDRESS OF ASCIZ \LP11\
010764 017232' .WORD CKLP$$ ;ADDRESS OF ROUTINE TO CHECK
010766 012302' .WORD CKALP$$ ;CALL FOR MAIN PROGRAM (CKALP11)
010770 000000 .WORD 0 ;FREE ENTRY
010772 000000 .WORD 0 ;WILL CONTAIN NUMBER OF LP11 FOUND
010774 000000 .WORD 0 ;WILL CONTAIN FIRST LP11 VECTOR ADR
010776 000200 .WORD LP.LVL*40 ;CONTAINS LP11 PI LEVEL
011000 000200 .WORD LP.VEC ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2894 011002 DEVICE RXCS,1,0,0,0,RX,264 ;RX11 FLOPPY CONTROLLER
011002 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR RX11
011006 177170 .WORD RXCS ;1ST RX11 ADR IS RXCS
011010 001 000 .BYTE <1>,<0> ;MAXIMUM NUMBER OF RX11 IS 1,
011012 000 000 .BYTE <0>,<0> ;HARDWARE INCREMENT IS 0,
011014 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011016 011467' .WORD CKNRX11 ;ADDRESS OF ASCIZ \RX11\
011020 017552' .WORD CKRX$$ ;ADDRESS OF ROUTINE TO CHECK
011022 012302' .WORD CKARX$$ ;CALL FOR MAIN PROGRAM (CKARX11)
011024 000000 .WORD 0 ;FREE ENTRY
011026 000000 .WORD 0 ;WILL CONTAIN NUMBER OF RX11 FOUND
011030 000000 .WORD 0 ;WILL CONTAIN FIRST RX11 VECTOR ADR
011032 000300 .WORD RX.LVL*40 ;CONTAINS RX11 PI LEVEL
011034 000264 .WORD 264 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2895 011036 DEVICE TC.STS,1,0,0,0,TC,TC.VEC ;DEC TAPE CONTROL (TC11)
011036 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR TC11
011042 177340 .WORD TC.STS ;1ST TC11 ADR IS TC.STS
011044 001 000 .BYTE <1>,<0> ;MAXIMUM NUMBER OF TC11 IS 1,
011046 000 000 .BYTE <0>,<0> ;HARDWARE INCREMENT IS 0,
011050 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011052 011462' .WORD CKNTC11 ;ADDRESS OF ASCIZ \TC11\
011054 017460' .WORD CKTC$$ ;ADDRESS OF ROUTINE TO CHECK
011056 012302' .WORD CKATC$$ ;CALL FOR MAIN PROGRAM (CKATC11)
011060 000000 .WORD 0 ;FREE ENTRY
011062 000000 .WORD 0 ;WILL CONTAIN NUMBER OF TC11 FOUND
011064 000000 .WORD 0 ;WILL CONTAIN FIRST TC11 VECTOR ADR
011066 000300 .WORD TC.LVL*40 ;CONTAINS TC11 PI LEVEL
011070 000214 .WORD TC.VEC ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2896 011072 DEVICE 176700,1,0,0,0,RH,254 ;FANCY DISK CONTROLER (RH11)
011072 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR RH11
011076 176700 .WORD 176700 ;1ST RH11 ADR IS 176700
011100 001 000 .BYTE <1>,<0> ;MAXIMUM NUMBER OF RH11 IS 1,
011102 000 000 .BYTE <0>,<0> ;HARDWARE INCREMENT IS 0,
011104 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011106 011455' .WORD CKNRH11 ;ADDRESS OF ASCIZ \RH11\
011110 017456' .WORD CKRH$$ ;ADDRESS OF ROUTINE TO CHECK
011112 012302' .WORD CKARH$$ ;CALL FOR MAIN PROGRAM (CKARH11)
011114 000000 .WORD 0 ;FREE ENTRY
011116 000000 .WORD 0 ;WILL CONTAIN NUMBER OF RH11 FOUND
011120 000000 .WORD 0 ;WILL CONTAIN FIRST RH11 VECTOR ADR
011122 000000 .WORD RH.LVL*40 ;CONTAINS RH11 PI LEVEL
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 60-2
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
011124 000254 .WORD 254 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2897 011126 DEVICE 174400,4,<-4>,40,0,TE,774 ;TEN/ELEVEN INTERFACE
011126 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR TE11
011132 174400 .WORD 174400 ;1ST TE11 ADR IS 174400
011134 004 374 .BYTE <4>,<-4> ;MAXIMUM NUMBER OF TE11 IS 4,
011136 040 000 .BYTE <40>,<0> ;HARDWARE INCREMENT IS 40,
011140 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011142 011416' .WORD CKNTE11 ;ADDRESS OF ASCIZ \TE11\
011144 016672' .WORD CKTE$$ ;ADDRESS OF ROUTINE TO CHECK
011146 012302' .WORD CKATE$$ ;CALL FOR MAIN PROGRAM (CKATE11)
011150 000000 .WORD 0 ;FREE ENTRY
011152 000000 .WORD 0 ;WILL CONTAIN NUMBER OF TE11 FOUND
011154 000000 .WORD 0 ;WILL CONTAIN FIRST TE11 VECTOR ADR
011156 000300 .WORD TE.LVL*40 ;CONTAINS TE11 PI LEVEL
011160 000774 .WORD 774 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2898 011162 DEVICE 160020,10,20,20,0,DH,330 ;MULTIPLEX TTY INTERFACE (DH11)
011162 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR DH11
011166 160020 .WORD 160020 ;1ST DH11 ADR IS 160020
011170 010 020 .BYTE <10>,<20> ;MAXIMUM NUMBER OF DH11 IS 10,
011172 020 000 .BYTE <20>,<0> ;HARDWARE INCREMENT IS 20,
011174 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011176 011341' .WORD CKNDH11 ;ADDRESS OF ASCIZ \DH11\
011200 015256' .WORD CKDH$$ ;ADDRESS OF ROUTINE TO CHECK
011202 012302' .WORD CKADH$$ ;CALL FOR MAIN PROGRAM (CKADH11)
011204 000000 .WORD 0 ;FREE ENTRY
011206 000000 .WORD 0 ;WILL CONTAIN NUMBER OF DH11 FOUND
011210 000000 .WORD 0 ;WILL CONTAIN FIRST DH11 VECTOR ADR
011212 000240 .WORD DH.LVL*40 ;CONTAINS DH11 PI LEVEL
011214 000330 .WORD 330 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2899 011216 DEVICE 170500,10,20,10,0,DM,320 ;MODEM CONTROL INTERFACE (DM11)
011216 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR DM11
011222 170500 .WORD 170500 ;1ST DM11 ADR IS 170500
011224 010 020 .BYTE <10>,<20> ;MAXIMUM NUMBER OF DM11 IS 10,
011226 010 000 .BYTE <10>,<0> ;HARDWARE INCREMENT IS 10,
011230 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011232 011406' .WORD CKNDM11 ;ADDRESS OF ASCIZ \DM11\
011234 016456' .WORD CKDM$$ ;ADDRESS OF ROUTINE TO CHECK
011236 012302' .WORD CKADM$$ ;CALL FOR MAIN PROGRAM (CKADM11)
011240 000000 .WORD 0 ;FREE ENTRY
011242 000000 .WORD 0 ;WILL CONTAIN NUMBER OF DM11 FOUND
011244 000000 .WORD 0 ;WILL CONTAIN FIRST DM11 VECTOR ADR
011246 000200 .WORD DM.LVL*40 ;CONTAINS DM11 PI LEVEL
011250 000320 .WORD 320 ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
2900 011252 DEVICE L20STS,2,<-4>,20,0,L2,L2.VEC ;LP20 CONTROLLER
011252 004537 013164' JSR R5,CHKDEV ;ADJUST FLOATING VECTOR FOR L211
011256 175400 .WORD L20STS ;1ST L211 ADR IS L20STS
011260 002 374 .BYTE <2>,<-4> ;MAXIMUM NUMBER OF L211 IS 2,
011262 020 000 .BYTE <20>,<0> ;HARDWARE INCREMENT IS 20,
011264 000000 .WORD 0 ;WILL BECOME NUMBER OF DEVICES
011266 011440' .WORD CKNL211 ;ADDRESS OF ASCIZ \L211\
011270 017326' .WORD CKL2$$ ;ADDRESS OF ROUTINE TO CHECK
011272 012302' .WORD CKAL2$$ ;CALL FOR MAIN PROGRAM (CKAL211)
011274 000000 .WORD 0 ;FREE ENTRY
011276 000000 .WORD 0 ;WILL CONTAIN NUMBER OF L211 FOUND
011300 000000 .WORD 0 ;WILL CONTAIN FIRST L211 VECTOR ADR
011302 000200 .WORD L2.LVL*40 ;CONTAINS L211 PI LEVEL
011304 000754 .WORD L2.VEC ;DEVICE FIRST VECTOR (FIXED DEV ONLY)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 60-3
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2901 011306 CKCEND: ; END OF DEVICE TABLES
2902 011306 000207 RTS PC
2903
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 61
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2905 ;
2906 ; GLOBAL CELLS FOR CHECK11
2907 ;
2908 011310 CHKFLG: .BLKW 1 ;CHK11 FLAGS
2909 000001 CKFERR= B0 ;ERROR DETECTED
2910 000002 CHKMMO= B1 ;memory management on [3(47)]
2911 100000 CKFIDT= B15 ;ID ALREADY TYPED
2912 011312 CKDEVN: .BLKW 1 ;UNIT # CURRENTLY BEING TESTED
2913 011314 CKDNAM: .BLKW 1 ;ADR OF DEVICE NAME(.ASCIZ)
2914 011316 PHYLIM: .BLKW 1 ;HIGHEST MEMORY LIMIT
2915
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 62
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2917 .MACRO DEVTXT DEV,LAB,TEXTX
2918 .IF NB,<DEV>
2919 LAB: .ASCIZ \TEXTX\
2920 .IFF;.IF NB,<DEV>
2921 LAB: .ASCIZ \TEXTX\
2922 .ENDC;.IF NB,<DEV>
2923 .ENDM DEVTXT
2924 011320 DEVTXT CI,CKNCI1,<CTY I>
011320 103 124 131 CKNCI1: .ASCIZ \CTY I\
011323 040 111 000
2925 011326 DEVTXT CO,CKNCO1,<CTY O>
011326 103 124 131 CKNCO1: .ASCIZ \CTY O\
011331 040 117 000
2926 011334 DEVTXT CD,CKNCD1,<CD11>
011334 103 104 061 CKNCD1: .ASCIZ \CD11\
011337 061 000
2927 011341 DEVTXT DH,CKNDH1,<DH11>
011341 104 110 061 CKNDH1: .ASCIZ \DH11\
011344 061 000
2928 011346 DEVTXT KL,CKNKL1,<DL11-C CTY>
011346 104 114 061 CKNKL1: .ASCIZ \DL11-C CTY\
011351 061 055 103
011354 040 103 124
011357 131 000
2929 011361 DEVTXT RD,CKNRD1,<DL11-E KLINIK>
011361 104 114 061 CKNRD1: .ASCIZ \DL11-E KLINIK\
011364 061 055 105
011367 040 113 114
011372 111 116 111
011375 113 000
2930 011377 DEVTXT DL,CKNDL1,<DL11-E>
011377 104 114 061 CKNDL1: .ASCIZ \DL11-E\
011402 061 055 105
011405 000
2931 011406 DEVTXT DM,CKNDM1,<DM11-BB>
011406 104 115 061 CKNDM1: .ASCIZ \DM11-BB\
011411 061 055 102
011414 102 000
2932 011416 DEVTXT TE,CKNTE1,<DTE20>
011416 104 124 105 CKNTE1: .ASCIZ \DTE20\
011421 062 060 000
2933 011424 DEVTXT KW,CKNKW1,<KW11-L>
011424 113 127 061 CKNKW1: .ASCIZ \KW11-L\
011427 061 055 114
011432 000
2934 011433 DEVTXT LP,CKNLP1,<LP11>
011433 114 120 061 CKNLP1: .ASCIZ \LP11\
011436 061 000
2935 011440 DEVTXT L2,CKNL21,<LP20>
011440 114 120 062 CKNL21: .ASCIZ \LP20\
011443 060 000
2936 011445 DEVTXT MM,CKNMM1,<MF11-UP>
011445 115 106 061 CKNMM1: .ASCIZ \MF11-UP\
011450 061 055 125
011453 120 000
2937 011455 DEVTXT RH,CKNRH1,<RH11>
011455 122 110 061 CKNRH1: .ASCIZ \RH11\
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 62-1
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
011460 061 000
2938 011462 DEVTXT TC,CKNTC1,<TC11>
011462 124 103 061 CKNTC1: .ASCIZ \TC11\
011465 061 000
2939 011467 DEVTXT RX,CKNRX1,<RX11>
011467 122 130 061 CKNRX1: .ASCIZ \RX11\
011472 061 000
2940 .EVEN
2941 011474 CK.CAL: .BLKW 1 ;ADR OF JSR PC,CHK.11 IN MAIN PROGRAM
2942
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 63
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2944 011476 000005 CHK.11::RESET ;CLEAR THE WORLD
2945 011500 012737 000340 177776 MOV #BR7,@#PS ;PROCESSOR LEVEL TO 7
2946 011506 012637 011474' MOV (SP)+,CK.CAL ;SAVE CALLING ADDRESS
2947 011512 012737 000300 015252' MOV #FLOATV,CHKFLV ;FLOATING INT VEC BEGIN HERE
2948 011520 012737 160000 015254' MOV #FLOATD,CHKFLD ;FLOATING DEV ADR'S BEGIN HERE
2949 011526 005037 011310' CLR CHKFLG ;CLEAR CHK11 FLAGS
2950 011532 005037 020470' CLR CKSPCD ;CLEAR STOP CODE; NON 0 ON FATAL
2951 ; ERROR PUTS C(CKSPCD) IN R0.
2952
2953 ;INITIALIZE VECTOR SPACE
2954 ;
2955 011536 013703 000014 CKINTS: MOV 14,R3 ;SAVE ODT ADDRESS
2956 011542 005000 CLR R0 ;START LOADING AT ADR 0
2957 011544 012701 015064' MOV #CHKINT,R1 ;WHERE TO GO ON INTERRUPT
2958 011550 012702 000340 MOV #BR7,R2 ;INTERRUPT PS
2959 011554 010120 11$: MOV R1,(R0)+ ;SET INTERRUPT VECTOR
2960 011556 010220 MOV R2,(R0)+ ;SET INTERRUPT LEVEL
2961 011560 005202 INC R2
2962 011562 032700 000077 BIT #77,R0 ;HAVE WE HIT A LIMIT ?
2963 011566 001004 BNE 12$
2964 011570 062701 000012 ADD #CHKITL,R1 ;YES SO CHANGE VECTOR
2965 011574 012702 000340 MOV #BR7,R2 ;RESET PS
2966 011600 12$:
2967 011600 020027 001000 CMP R0,#1000 ;FILL VECTORS UP TO 1000
2968 011604 002763 BLT 11$ ;MORE TO DO.
2969 011606 012737 017670' 000034 MOV #CHKERR,TRPVEC ;WHERE TO GO ON ERROR TRAP
2970 011614 010337 000014 MOV R3,14 ;RESTORE ODT ADDRESS
2971
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 64
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
2973 ;NOW CHECK THE CTY
2974 ;
2975 011620 012737 011664' 000004 MOV #13$,NXMVEC ;WHERE TO TRAP IF NO CTY
2976 011626 042737 100000 011310' BIC #CKFIDT,CHKFLG ;SO WE PRINT DEV ID
2977 011634 005737 177564 TST CTOSTS ;CHECK CTY TRANSMIT STATUS REGISTER
2978 011640 005737 177566 TST CTOCHR
2979 011644 005737 177560 TST CTISTS
2980 011650 005737 177562 TST CTICHR
2981 011654 012737 017620' 000004 MOV #CKBUST,NXMVEC ;WHERE TO GO ON ILLEGAL NXM TRAP
2982 011662 000407 BR 14$
2983 011664 012700 000005 13$: MOV #S..CTY,R0 ;NO CTY STOP CODE
2984 011670 000000 HALT
2985 011672 012700 011664' MOV #13$,R0 ;ADR OF ERROR
2986 011676 000000 HALT ;DISPLAY ADDRESS
2987 011700 000771 BR 13$ ;MAKE HIM START AGAIN
2988
2989 011702 012704 177564 14$: MOV #CTOSTS,R4 ;CTY PUN STATUS
2990 011706 010437 020472' MOV R4,CHKCHR+CKDA ;DEV ADR
2991 011712 010401 MOV R4,R1 ;CHKBIT NEEDS ADR IN R1
2992 011714 012737 000064 020474' MOV #CTOVEC,CHKCHR+CKDV ;CTY PUN VECTOR
2993 011722 012737 011326' 011314' MOV #CKNCO1,CKDNAM ;NAME ADDRESS
2994 011730 005037 011312' CLR CKDEVN ;DEVICE 0
2995 011734 004537 014034' JSR R5,CHKBIT ;CHECK THE FOLLOWING BITS FOR R/W
2996 011740 000104 CO.INE!CO..MM ;BITS TO CHECK FOR R/W
2997 011742 012714 000100 MOV #CO.INE,(R4) ;ENABLE INTERRUPTS
2998 011746 004537 014312' JSR R5,CHKINL ;CHECK INTERRUPT AND FIND DEV LEVEL
2999 011752 177777 -1 ;TIME LOOP CONSTANT
3000 011754 005014 CLR (R4) ;CLR DEV OUT
3001
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 65
DEVICE MACROS FOR ALL POSSIBLE CONFIGURATIONS
3003 ;NOW CHECK THE KBRD SECTION
3004 ;
3005 011756 042737 100000 011310' CHKBRD: BIC #CKFIDT,CHKFLG ;SO WE PRINT DEV ID
3006 011764 012704 177560 MOV #CTISTS,R4 ;KBRD STATUS REG
3007 011770 010437 020472' MOV R4,CHKCHR+CKDA ;DEV ADR
3008 011774 010401 MOV R4,R1 ;CHKBIT NEEDS ADR IN R1
3009 011776 012737 000060 020474' MOV #CTIVEC,CHKCHR+CKDV ;VECTOR ADR
3010 012004 012737 011320' 011314' MOV #CKNCI1,CKDNAM ;ADR OF DEV NAME
3011 012012 004537 014034' JSR R5,CHKBIT ;CHECK THE FOLLOWING BITS
3012 012016 000100 CI.INE ;BITS TO CHECK R/W
3013
3014 012020 11$: CK11SC <0>,<Initializing >
012020 104404 TRAP 0!CKEMSG ;
3015 012022 111 156 151 .ASCIZ \Initializing \
012025 164 151 141
012030 154 151 172
012033 151 156 147
012036 040 000
3016 .EVEN
3017 012040 013700 011474' MOV CK.CALL,R0 ;GET ADDR OF .ASCIZ \PROG NANME\
3018 012044 004737 020512' JSR PC,CKTTXT ;TYPE PROGRAM NAME
3019 ;
3020 012050 005000 CHKCOR: CLR R0 ;START SMALL
3021 012052 012737 012070' 000004 MOV #12$,NXMVEC ;SET BUS TRAP VECTOR
3022 012060 005710 11$: TST (R0) ;check this location [1(14)]
3023 012062 062700 000002 ADD #2,R0 ;point to next location [1(14)]
3024 012066 000774 BR 11$
3025 012070 062706 000004 12$: ADD #4,SP ;FLUSH STACK
3026 012074 010037 011316' 13$: MOV R0,PHYLIM ;SAVE ADR OF 1ST NXM LOCATION
3027 .IIF DF,CKAMEM,JSR PC,CKAMEM ;PRINT LAST MEM LOCATION
3028 ;
3029 ; ; CONTINUED ON NEXT PAGE
3030 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 66
CHECK MEMORY - SLIDING BIT PATTERN
3032 .SBTTL CHECK MEMORY - SLIDING BIT PATTERN
3033
3034 ;HERE TO PERFORM A SIMPLE TEST ON FREE CORE.
3035 ;THE PATTERN USED IS A SLIDING BIT, WITH THE
3036 ;BIT IN EACH OF THE 16 BIT POSITIONS AND THE
3037 ;LAST PATTERN BEING ALL 0'S.
3038 ;
3039 012100 CKCOR:
3040 012100 005000 CLR R0 ;FIRST ADR TO CHECK
3041 012102 012701 012176' MOV #11$,R1 ;LIMIT TO CHECK
3042 012106 004737 012176' JSR PC,11$ ;CHECK LOW CORE
3043 012112 012700 000000G MOV #.FESTB,R0 ;BEGIN CHECKING HERE NOW
3044 012116 012701 012100' MOV #CKCOR,R1 ;AND STOP HERE
3045 012122 004737 012176' JSR PC,11$
3046 012126 004037 020552' JSR R0,CKTCRL ;PRINT AMOUNT OF CORE
3047 012132 040 040 040 .ASCIZ \ \
012135 000
3048 .EVEN
3049 012136 013700 011316' MOV PHYLIM,R0 ;GET AMOUNT
3050 012142 004737 020600' JSR PC,CKTOCT ;PRINT IT
3051 012146 004037 020556' JSR R0,CKTSTR ;FOLLOWED BY MSG:
3052 012152 040 142 171 .ASCIZ \ bytes of memory\
012155 164 145 163
012160 040 157 146
012163 040 155 145
012166 155 157 162
012171 171 000
3053 .EVEN
3054 012174 000443 BR CKMPAR ;ALL OK
3055
3056 012176 012702 000001 11$: MOV #1,R2 ;FIRST PATTERN
3057 012202 011003 MOV @R0,R3 ;SAVE CURRENT DATA
3058 012204 010210 12$: MOV R2,@R0 ;PUT PATTERN IN MEMORY
3059 012206 005110 COM @R0 ;COMPLEMENT IT
3060 012210 005110 COM @R0 ; AND AGAIN
3061 012212 020210 CMP R2,@R0 ;DID IT GO ?
3062 012214 001410 BEQ 13$ ;YES.
3063 012216 CKSERR R2,<(R0)>,R0 ;SAVE GD,BD,ADR
012216 010246 MOV R2,-(SP) ;SAVE GOOD (R2) ON STACK
012220 011046 MOV (R0),-(SP) ;SAVE BAD ((R0)) ON STACK
012222 010046 MOV R0,-(SP) ;SAVE ADDRESS (R0) ON STACK
3064 012224 CK11SC <CKEMSE!CKEFAT!CKEPC!CKEGB>,<CKMG01>,<MEMORY ERROR>,<S..MEM>
012224 012737 000006 020470' .IIF NB,S..MEM, MOV #S..MEM,CKSPCD ;VALUE TO DISPLAY IN R0,
012232 104523 TRAP CKEMSE!CKEFAT!CKEPC!CKEGB&<^CCKEMSG> ;MEMORY ERROR
012234 020750' .WORD CKMG01 ;ADR OF MESSAGE
3065 012236 006302 13$: ASL R2 ;SHIFT PATTERN
3066 012240 001361 BNE 12$
3067 012242 103760 BCS 12$
3068 012244 010310 MOV R3,@R0 ;RESTORE DATA
3069 012246 005110 COM @R0 ;COMPLEMENT IT
3070 012250 005110 COM @R0 ; AND AGAIN
3071 012252 020320 CMP R3,(R0)+ ;BE SURE IT WENT
3072 012254 001410 BEQ 14$
3073 012256 CKSERR R3,<-(R0)>,R0 ;SAVE GD,BD,ADR
012256 010346 MOV R3,-(SP) ;SAVE GOOD (R3) ON STACK
012260 014046 MOV -(R0),-(SP) ;SAVE BAD (-(R0)) ON STACK
012262 010046 MOV R0,-(SP) ;SAVE ADDRESS (R0) ON STACK
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 66-1
CHECK MEMORY - SLIDING BIT PATTERN
3074 012264 CK11SC <CKEMSE!CKEFAT!CKEPC!CKEGB>,<CKMG01>,<MEMORY ERROR>,<S..MEM>
012264 012737 000006 020470' .IIF NB,S..MEM, MOV #S..MEM,CKSPCD ;VALUE TO DISPLAY IN R0,
012272 104523 TRAP CKEMSE!CKEFAT!CKEPC!CKEGB&<^CCKEMSG> ;MEMORY ERROR
012274 020750' .WORD CKMG01 ;ADR OF MESSAGE
3075 012276 020001 14$: CMP R0,R1
3076 012300 001336 BNE 11$ ;LOOP BACK FOR REST OF MEMORY
3077 012302 000207 CKPOPJ: RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 67
CHECK MEMORY - SLIDING BIT PATTERN
3079 ;HERE TO CHECK THE MEMORY PARITY OPTION
3080 012304 CKMPAR: ;START CHECKING CORE HERE
3081 012304 012737 011445' 011314' MOV #CKNMM1,CKDNAM ;SAVE NAME OF "DEVICE"
3082 012312 005037 011312' CLR CKDEVN ;"UNIT" IS 0
3083 012316 012701 172100 MOV #MP.REG,R1 ;OPTION REGISTER
3084 012322 010137 020472' MOV R1,CHKCHR+CKDA ;SAVE ADR IN CASE NEED TO TYPE IT
3085 012326 013746 000004 MOV NXMVEC,-(SP)
3086 012332 012737 000114 020474' MOV #MP.VEC,CHKCHR+CKDV ;VECTOR FOR INTERRUPTS
3087 012340 005037 020476' CLR CHKCHR+CKPI ;NO PRIORITY LEVEL
3088 012344 012737 012536' 000004 MOV #14$,NXMVEC ;IN CASE PARITY OPTION NOT INSTALLED
3089 012352 005037 172100 CLR MP.REG ;TRY TO CLEAR MEMORY PARITY REGISTER
3090 012356 011637 000004 MOV (SP),NXMVEC ;RESTORE TRAP VECTOR
3091 012362 004537 014034' JSR R5,CHKBIT ;CHECK READ/WRITE BITS
3092 012366 107745 107745
3093 ;NOW CHECK INTERRUPTS FROM PARITY CONTROL
3094 ; THIS IS DIFFICULT CUZ SETTING MP.ENB & MP.ERR WON'T CAUSE INTERRUPT
3095 012370 005000 CLR R0 ;VECTOR WE TOOK WILL APPEAR HERE
3096 012372 012711 000004 MOV #MP.WWP,@R1 ;WE WANT TO WRITE WRONG PARITY
3097 012376 013737 012304' 012304' MOV CKMPAR,CKMPAR ;WRITE A BAD WORD
3098
3099 012404 005011 CLR @R1 ;BUT ONLY ONE WORD !
3100 012406 005737 012304' TST CKMPAR ;TRY FOR AN INTERRUPT
3101 012412 000240 NOP ;IN CASE SLOW
3102 012414 005700 TST R0 ;SEE IF WE GOT ONE
3103 012416 001402 BEQ 11$
3104 012420 CK11SC <CKEMSE!CKEDID!CKEPC>,CKMG07,<INTERRUPTED WHEN NOT ENABLED>
012420 104432 TRAP CKEMSE!CKEDID!CKEPC&<^CCKEMSG> ;INTERRUPTED WHEN NOT ENABLED
012422 021120' .WORD CKMG07 ;ADR OF MESSAGE
3105 012424 012711 000001 11$: MOV #MP.ENB,@R1 ;NOW LETS GET THE INTERRUPT
3106 012430 005737 012304' TST CKMPAR
3107 012434 005011 CLR @R1 ;DISABLE FURTHER INTERRUPTS
3108 012436 013737 012304' 012304' MOV CKMPAR,CKMPAR ;WRITE BACK RIGHT
3109 012444 005700 TST R0 ;DID WE GET THE INTERRUPT ?
3110 012446 001003 BNE 12$
3111 012450 CK11SC <CKEDID!CKEMSE!CKEPC>,CKMG04,<INTERRUPT DID NOT OCCUR>
012450 104432 TRAP CKEDID!CKEMSE!CKEPC&<^CCKEMSG> ;INTERRUPT DID NOT OCCUR
012452 021022' .WORD CKMG04 ;ADR OF MESSAGE
3112 012454 000433 BR 15$
3113
3114 012456 020037 020474' 12$: CMP R0,CHKCHR+CKDV ;WAS INTERRUPT RIGHT?
3115 012462 001410 BEQ 13$ ;YES.
3116 012464 CKSERR <CHKCHR+CKDV>,R0,<#CKMPAR> ;GD,BD,ADR
012464 013746 020474' MOV CHKCHR+CKDV,-(SP) ;SAVE GOOD (CHKCHR+CKDV) ON STACK
012470 010046 MOV R0,-(SP) ;SAVE BAD (R0) ON STACK
012472 012746 012304' MOV #CKMPAR,-(SP) ;SAVE ADDRESS (#CKMPAR) ON STACK
3117 012476 CK11SC <CKEMSE!CKEDID!CKEPC!CKEGB>,CKMG05,<interrupted to wrong vector>
012476 104532 TRAP CKEMSE!CKEDID!CKEPC!CKEGB&<^CCKEMSG> ;interrupted to wrong vector
012500 021052' .WORD CKMG05 ;ADR OF MESSAGE
3118 012502 000420 BR 15$ ;DONE.
3119
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 68
CHECK MEMORY - SLIDING BIT PATTERN
3121 ; COME HERE IF PARITY OPTION IS PRESENT AND WORKING
3122
3123 012504 004037 020552' 13$: JSR R0,CKTCRL ;PRINT MESSAGE ABOUT IT
3124 012510 040 040 040 .ASCIZ \ MF11-UP\
012513 040 040 115
012516 106 061 061
012521 055 125 120
012524 000
3125 .EVEN
3126 012526 012737 000001 172100 MOV #MP.ENB,MP.REG ;ENABLE PARITY ERRORS
3127 .IIF DF,CKAMF1,JSR PC,CKAMF1 ;DO MAIN LINE CHECKING
3128 012534 000403 BR 15$ ;ALL DONE.
3129
3130 ;HERE IF WE GET A BUS TRAP WHILE ACCESSING THE PARITY CONTROL REG
3131 012536 012626 14$: MOV (SP)+,(SP)+ ;CLEAN OFF STACK
3132 012540 CK11SC <CKEDID!CKEPC!CKEMSE>,CKMG06,<not found>
012540 104432 TRAP CKEDID!CKEPC!CKEMSE&<^CCKEMSG> ;not found
012542 021106' .WORD CKMG06 ;ADR OF MESSAGE
3133
3134 012544 012637 000004 15$: MOV (SP)+,NXMVEC
3135
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 69
CHECK KW11-L HDW
3137 .SBTTL CHECK KW11-L HDW
3138
3139 ;HERE TO BE SURE CLOCK IS PRESENT AND TICKS
3140
3141 012550 012737 011424' 011314' CHKCLK: MOV #CKNKW1,CKDNAM ;SET UP FOR NAME
3142 012556 042737 100000 011310' BIC #CKFIDT,CHKFLG ;SO WE PRINT DEV ID
3143 012564 012704 177546 MOV #CLKWRD,R4 ;SET UP DEV ADR
3144 012570 010437 020472' MOV R4,CHKCHR+CKDA ;SET UP DEVICE ADR
3145 012574 012737 000100 020474' MOV #CLKVEC,CHKCHR+CKDV ;SET UP VECTOR ADR
3146 012602 005037 011312' CLR CKDEVN ;DEVICE NUMBER
3147 012606 012737 012734' 000004 MOV #13$,NXMVEC ;SET BUS TRAP IN CASE CLOCK IS NOT PRESENT
3148 012614 005714 TST (R4) ;TRAP IF NOT INSTALLED
3149 012616 012737 017620' 000004 MOV #CKBUST,NXMVEC ;WHERE TO GO ON BUS TRAP
3150 012624 013746 000100 MOV CLKVEC,-(SP) ;SAVE WHERE TO GO ON INT
3151 012630 012737 012760' 000100 MOV #14$,CLKVEC ;SETUP INTERRUPT VECTOR
3152 012636 012737 000003 012772' MOV #3,CHKTIM ;TIME 3 TICKS
3153 012644 012737 000000 177776 MOV #0,@#PS ;LET INTERRUPTS HAPPEN
3154 012652 012714 000100 MOV #KW.INE,(R4) ;ENABLE THE CLOCK
3155 012656 001417 BEQ 12$ ;IF COUNTED OUT ALREADY EVIL
3156 012660 005000 CLR R0 ;INITIALIZE WATCHDOG COUNTER
3157 012662 005737 012772' TST CHKTIM ;see if count expired now [1(14)]
3158 012666 001413 BEQ 12$ ;yes, too fast [1(14)]
3159 012670 005737 012772' 11$: TST CHKTIM
3160 012674 001437 BEQ CKCLK9 ;BRANCH IF TIMED OUT ALREADY
3161 012676 077004 SOB R0,11$
3162 012700 CK11SC <CKEFAT!CKEPC!CKEDID>,<Slow>,<NO RESPONSE FROM KW11>,<S..KW1>
012700 012737 000007 020470' .IIF NB,S..KW1, MOV #S..KW1,CKSPCD ;VALUE TO DISPLAY IN R0,
012706 104417 TRAP CKEFAT!CKEPC!CKEDID!CKEMSG ;NO RESPONSE FROM KW11
3163 012710 123 154 157 .ASCIZ \Slow\
012713 167 000
3164 .EVEN
3165 012716 12$: CK11SC <CKEFAT!CKEPC!CKEDID>,<Fast>,<KW11 TICKING TO FAST>,<S..KW1>
012716 012737 000007 020470' .IIF NB,S..KW1, MOV #S..KW1,CKSPCD ;VALUE TO DISPLAY IN R0,
012724 104417 TRAP CKEFAT!CKEPC!CKEDID!CKEMSG ;KW11 TICKING TO FAST
3166 012726 106 141 163 .ASCIZ \Fast\
012731 164 000
3167 .EVEN
3168 012734 13$: CK11SC <CKEFAT!CKEPC!CKEDID>,<Not Present>,<CAN' ACCESS KW11>,<S..KW1>
012734 012737 000007 020470' .IIF NB,S..KW1, MOV #S..KW1,CKSPCD ;VALUE TO DISPLAY IN R0,
012742 104417 TRAP CKEFAT!CKEPC!CKEDID!CKEMSG ;CAN' ACCESS KW11
3169 012744 116 157 164 .ASCIZ \Not Present\
012747 040 120 162
012752 145 163 145
012755 156 164 000
3170 .EVEN
3171
3172 ;HERE ON A KW11 INTERRUPT
3173 012760 005337 012772' 14$: DEC CHKTIM ;COUNT OUT TIMER
3174 012764 001001 BNE 15$
3175 012766 005014 CLR (R4) ;TURN OFF CLOCK
3176 012770 000002 15$: RTI ;DISMISS INTERRUPT
3177
3178 012772 000000 CHKTIM: .WORD 0
3179 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 70
CHECK KW11-L HDW
3181 ;
3182 012774 012737 000340 177776 CKCLK9: MOV #BR7,@#PS ;SET TO LEVEL 7
3183 013002 012714 000100 MOV #KW.INE,(R4) ;ENABLE INT
3184 013006 012637 000100 MOV (SP)+,CLKVEC ;RESTORE WHERE TO GO ON INT
3185 013012 004537 014312' JSR R5,CHKINL ;FIND THE INT LEVEL
3186 013016 177777 -1 ;DELAY TO WAIT FOR INT
3187 013020 042737 000100 177546 BIC #KW.INE,CLKWRD ;DISABLE CLK INTS
3188 013026 004037 020552' JSR R0,CKTCRL ;INDICATE CLOCK PRESENT
3189 013032 040 040 040 .ASCIZ \ KW11-L\
013035 040 040 113
013040 127 061 061
013043 055 114 000
3190 .EVEN
3191 013046 022737 000300 020476' CMP #300,CHKCHR+CKPI ;CHECK FOR CORRECT PRIORITY
3192 013054 001431 BEQ CHK.96 ;BRANCH IF OK
3193 013056 CKSERR <#200>,<CHKCHR+CKPI>,<#CLKVEC>
013056 012746 000200 MOV #200,-(SP) ;SAVE GOOD (#200) ON STACK
013062 013746 020476' MOV CHKCHR+CKPI,-(SP) ;SAVE BAD (CHKCHR+CKPI) ON STACK
013066 012746 000100 MOV #CLKVEC,-(SP) ;SAVE ADDRESS (#CLKVEC) ON STACK
3194 013072 CK11SC <CKEFAT!CKEMSG>,<Interrupted to wrong PI level>,,<S..KW1>
013072 012737 000007 020470' .IIF NB,S..KW1, MOV #S..KW1,CKSPCD ;VALUE TO DISPLAY IN R0,
013100 104405 TRAP CKEFAT!CKEMSG!CKEMSG ;
3195 013102 111 156 164 .ASCIZ \Interrupted to Wrong PI level\
013105 145 162 162
013110 165 160 164
013113 145 144 040
013116 164 157 040
013121 127 162 157
013124 156 147 040
013127 120 111 040
013132 154 145 166
013135 145 154 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 71
CHECK KW11-L HDW
3197 ;
3198 ; NOW CHECK ALL REMAINING DEVICES
3199 ;
3200 013140 CHK.96::
3201 013140 004737 010566' JSR PC,CKCDEV ;CALL DEVICE TABLES ROUTINES
3202 ;
3203 ; WAIT A WHILE THEN DO A UNIBUS RESET
3204 ;
3205 013144 012701 000010 MOV #10,R1 ;COUNTER
3206 013150 005000 15$: CLR R0 ; " "
3207 013152 077001 16$: SOB R0,16$ ;LOOP A WHILE
3208 013154 077103 SOB R1,15$ ;AGAIN
3209 013156 000005 RESET ;RESET THE WORLD
3210 013160 000137 003000' JMP CKDONE ;ALL DONE
3211
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 72
CHECK SYSTEM FOR EXISTENCE OF OPTIONS
3213 .SBTTL CHECK SYSTEM FOR EXISTENCE OF OPTIONS
3214
3215 ;HERE TO CHECK SYSTEM FOR EXISTENCE OF OPTIONS
3216 ; CALL JSR R5,CHKDEV
3217 ; (0) .WORD 1ST DEVICE ADR
3218 ; (2) .BYTE MAX #,VECTOR INC
3219 ; (4) .BYTE HDW INC,1ST VEC MULTIPLE
3220 ; (6) .WORD <ADR OF NUMBER OF DEVICES OR ZERO>
3221 ; (10) .WORD <ADR OF .ASCIZ \NAME\>
3222 ; (12) .WORD <ADR OF ROUTINE TO VERIFY OPERATION>
3223 ; (14) .WORD <ADR OF MAIN PROGRAM ROUTINE FOR DEVICE>
3224 ; (16) .WORD <ADR OF TABLE WHICH CONTAINS MAIN PROG VECTORS OR 0>
3225 ; (20) .WORD <# OF DEVICES FOUND>
3226 ; (22) .WORD <FIRST VECTOR FOUND>
3227 ; (24) .WORD <PI LEVEL>
3228 ; (26) .WORD <FIRST DEV VECTOR FOR FIXED TYPE DEV>
3229 ; RETURN
3230
3231 013164 016537 000010 011314' CHKDEV: MOV 10(R5),CKDNAM ;REMEMBER DEVICE NAME
3232 013172 005002 CLR R2 ;INITIALIZE COUNTER FOR DEVICES
3233 013174 013703 015252' MOV CHKFLV,R3 ;COPY FOR USE
3234 013200 105765 000005 TSTB 5(R5) ;SEE IF FIXED TYPE DEV
3235 013204 001002 BNE 11$ ;BRANCH IF NOT
3236 013206 016503 000026 MOV 26(R5),R3 ;VECTOR TO USE
3237 013212 011504 11$: MOV @R5,R4 ;GET HDW ADR FOR 1ST DEVICE
3238 013214 001005 BNE 12$ ;BRANCH IF NOT A FLOATING DEVICE
3239 013216 062737 000010 015254' ADD #10,CHKFLD ;ADVANCE TO NEXT FLOAT DEVICE SLOT
3240 013224 013704 015254' MOV CHKFLD,R4 ;COPY FOR USE
3241 013230 012737 013330' 000004 12$: MOV #15$,NXMVEC ;SET BUS TRAP VECTOR
3242 013236 005714 13$: TST (R4) ;CHECK TO SEE IF DEVICE IS PRESENT
3243 013240 012737 017620' 000004 MOV #CKBUST,NXMVEC ;SET FOR ILLEGAL BUS TRAP
3244 013246 005702 TST R2 ;IS THIS THE FIRST OF ITS KIND ?
3245 013250 001012 BNE 14$ ;BRANCH IF NOT FIRST
3246 013252 005065 000020 CLR 20(R5) ;CLEAR NUMBER OF DEV FOUND
3247 013256 005065 000022 CLR 22(R5) ;CLEAR FIRST VECTOR ADR
3248 ; CLR 24(R5) ;CLEAR PI LEVEL
3249 013262 116501 000005 MOVB 5(R5),R1 ;GET MULTIPLE VECTOR BEGINS ON
3250 013266 001403 BEQ 14$ ;BRANCH IF FIXED DEV (LPT)
3251 013270 005301 DEC R1
3252 013272 060103 ADD R1,R3
3253 013274 040103 BIC R1,R3
3254 013276 005265 000020 14$: INC 20(R5) ;COUNT DEVICE AND REMEMBER IT
3255 013302 005202 20$: INC R2
3256 013304 116501 000003 MOVB 3(R5),R1 ;GET VECTOR INCREMENT
3257 013310 060103 ADD R1,R3
3258 013312 116501 000004 MOVB 4(R5),R1 ;GET HDW INCREMENT
3259 013316 060104 ADD R1,R4 ;ADVANCE FLOATING DEVICE ADR POINTER
3260 013320 120265 000002 CMPB R2,2(R5) ;HAVE WE CHECK ALL POSSIBLE ?
3261 013324 001341 BNE 12$ ;IF NOT LOOP BACK FOR REST
3262 013326 000405 BR 16$
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 73
CHECK SYSTEM FOR EXISTENCE OF OPTIONS
3264 013330 012737 017620' 000004 15$: MOV #CKBUST,NXMVEC
3265 013336 022626 CMP (SP)+,(SP)+ ;POP OFF ADR AND STATUS
3266 013340 000760 BR 20$ ;SEE IF POSSIBLE HOLE IN DEVICE
3267 013342 005765 000006 16$: TST 6(R5) ;DO WE HAVE ADR FOR NUMBER ?
3268 013346 001402 BEQ 17$ ;IF NOT DON'T STUFF
3269 013350 010275 000006 MOV R2,@6(R5) ;PUT NUMBER FOR SOMEONE TO FIND
3270 013354 005765 000020 17$: TST 20(R5) ;WERE THERE ANY OF THESE ?
3271 013360 001566 BEQ CHKD02
3272 013362 CK11SC 0,< > ;TYPE CR/LF/TAB
013362 104404 TRAP 0!CKEMSG ;
3273 013364 011 000 .ASCIZ \ \
3274 .EVEN
3275 013366 016500 000020 MOV 20(R5),R0 ;NUMBER OF DEVICES WE FOUND
3276 013372 004737 020600' JSR PC,CKTOCT ;TYPE OUT THE NUMBER
3277 013376 004037 020556' JSR R0,CKTSTR ;TYPE A BLANK
3278 013402 040 000 .BYTE 040,0
3279 013404 013700 011314' MOV CKDNAM,R0 ;GET ADR OF ASCIZ STRING
3280 013410 004737 020512' JSR PC,CKTTXT ;TYPE DEVICE NAME
3281 013414 032765 000076 000020 BIT #76,20(R5) ;HOW MANY ?
3282 013422 001403 BEQ CHKDV1
3283 013424 CK11SC <CKENCL>,<'s>
013424 104444 TRAP CKENCL!CKEMSG ;
3284 013426 047 163 000 .ASCIZ \'s\
3285 .EVEN
3286 .ENABL LSB
3287 013432 010346 CHKDV1: MOV R3,-(SP)
3288 013434 010446 MOV R4,-(SP)
3289 013436 016546 000020 MOV 20(R5),-(SP) ;SAVE NUMBER OF DEVICES FOUND
3290 013442 005037 011312' CLR CKDEVN ;CHECK UNIT 0 FIRST
3291 013446 016503 000026 MOV 26(R5),R3 ;GET FIRST VECTOR FOR POSSIBLE FIXED
3292 013452 116500 000005 MOVB 5(R5),R0 ;GET VECTOR MULTIPLE
3293 013456 001405 BEQ 11$ ;BRANCH IF FIXED
3294 013460 013703 015252' MOV CHKFLV,R3 ;GET VECTOR FOR 1ST UNIT
3295 013464 005300 DEC R0
3296 013466 060003 ADD R0,R3
3297 013470 040003 BIC R0,R3
3298 013472 011504 11$: MOV (R5),R4 ;GET HDW ADR FOR FIRST UNIT
3299 013474 001002 BNE 12$
3300 013476 013704 015254' MOV CHKFLD,R4 ;FLOATING DEVICE
3301 013502 005037 020476' 12$: CLR CHKCHR+CKPI ;ROUTINE WILL SET PI LEVEL
3302 013506 016500 000012 MOV 12(R5),R0 ;ADR OF ROUTINE TO VERIFY DEVICE
3303 013512 001467 BEQ 13$ ;BRANCH IF NO ROUTINE TO VERIFY
3304 013514 042737 100000 011310' BIC #CKFIDT,CHKFLG ;HAVEN'T TYPED ID YET
3305 013522 010437 020472' MOV R4,CHKCHR+CKDA ;SAVE DEVICE ADDRESS
3306 013526 010337 020474' MOV R3,CHKCHR+CKDV ;SAVE VECTOR ADDRESS IN CHARACTERISTICS TABLE
3307 013532 010401 MOV R4,R1 ;PUT DEV ADR IN R1 SINCE MOST
3308 ; ROUTINES WILL USE IT.
3309 013534 005037 020500' CLR CHKCHR+CKFLG ;CLEAR FLAGS AND LET DEVICE CHECK ROUTINE SET THEM
3310 013540 012737 000340 177776 MOV #BR7,@#PS ;MAKE SURE WE'RE AT LEVEL 7
3311 013546 012737 014000' 000004 MOV #NONDEV,NXMVEC ;SEE IF THERE WAS A HOLE
3312 013554 005711 TST (R1) ;WAS THERE ?
3313 013556 012737 017620' 000004 MOV #CKBUST,NXMVEC ;NO IF WE GOT HERE
3314 013564 004710 JSR PC,(R0) ;CALL TO DEVICE CHECK
3315 013566 005765 000022 TST 22(R5) ;SEE IF VECTOR ADR SET YET
3316 013572 001037 BNE 13$ ;BRANCH IF SET
3317 013574 013765 020474' 000022 MOV CHKCHR+CKDV,22(R5) ;SET FIRST VECTOR FOUND
3318 013602 005737 020476' TST CHKCHR+CKPI ;MAKE SURE IT INTERRUPTED
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 73-1
CHECK SYSTEM FOR EXISTENCE OF OPTIONS
3319 013606 001431 BEQ 13$ ;BRANCH IF NOT
3320 013610 023765 020476' 000024 CMP CHKCHR+CKPI,24(R5) ;CORRECT PI LEVEL ?
3321 013616 001425 BEQ 13$ ;BRANCH IF SO
3322 013620 CKSERR <24(R5)>,<CHKCHR+CKPI>,<26(R5)>
013620 016546 000024 MOV 24(R5),-(SP) ;SAVE GOOD (24(R5)) ON STACK
013624 013746 020476' MOV CHKCHR+CKPI,-(SP) ;SAVE BAD (CHKCHR+CKPI) ON STACK
013630 016546 000026 MOV 26(R5),-(SP) ;SAVE ADDRESS (26(R5)) ON STACK
3323 013634 CK11SC <CKEDID!CKEGB!CKEMSG>,<INTERRUPT TO WRONG PI LEVEL>
013634 104514 TRAP CKEDID!CKEGB!CKEMSG!CKEMSG ;
3324 013636 111 156 164 .ASCIZ \Interrupt to Wrong PI level\
013641 145 162 162
013644 165 160 164
013647 040 164 157
013652 040 127 162
013655 157 156 147
013660 040 120 111
013663 040 154 145
013666 166 145 154
013671 000
3325 013672 012700 020472' 13$: MOV #CHKCHR,R0 ;POINT TO THE CHARACTERISTIC TABLE
3326 013676 004775 000014 JSR PC,@14(R5) ;CALL TO MAIN PROGRAM
3327 013702 116500 000003 14$: MOVB 3(R5),R0 ;GET VECTOR INCREMENT
3328 013706 060003 ADD R0,R3
3329 013710 116500 000004 MOVB 4(R5),R0 ;HDW INCREMENT
3330 013714 060004 ADD R0,R4
3331 013716 005237 011312' INC CKDEVN ;ON TO NEXT DEVICE NUMBER
3332 013722 021637 011312' CMP (SP),CKDEVN
3333 013726 001265 BNE 12$
3334 013730 012602 MOV (SP)+,R2
3335 013732 012604 MOV (SP)+,R4
3336 013734 012603 MOV (SP)+,R3
3337
3338 013736 CHKD02: ;SAVE <R3,R4>
3339 ;CLR R4 ;FLAG NO MORE DEVICES
3340 ;JSR PC,@14(R5) ;CALL MAIN PROGRAM
3341 ;RESTORE <R4,R3>
3342
3343 ;HERE WHEN DONE CHECKING DEVICE
3344 013736 105765 000005 TSTB 5(R5) ;SEE IF FIXED DEV
3345 013742 001413 BEQ CHKD01 ;BRANCH IF FIXED (LIKE LPT)
3346 013744 013746 015252' MOV CHKFLV,-(SP) ;RESET FLOATING VECTOR
3347 013750 010337 015252' MOV R3,CHKFLV
3348 013754 012603 MOV (SP)+,R3
3349 013756 011500 MOV (R5),R0 ;WAS THIS A FLOATING DEVICE ?
3350 013760 001004 BNE CHKD01 ;BRANCH IF NOT
3351 013762 013700 015254' MOV CHKFLD,R0 ;COPY ADR OF FIRST DEVICE
3352 013766 010437 015254' MOV R4,CHKFLD
3353 013772 062705 000030 CHKD01: ADD #CKCADD-4,R5
3354 013776 000205 RTS R5
3355
3356 014000 022626 NONDEV: CMP (SP)+,(SP)+ ;GET RID OF THE TRAP INFO
3357 014002 CK11SC <CKEWRN!CKEDID!CKEMSG>,<Device does NOT exist>
014002 104614 TRAP CKEWRN!CKEDID!CKEMSG!CKEMSG ;
3358 014004 104 145 166 .ASCIZ \Device does NOT exist\
014007 151 143 145
014012 040 144 157
014015 145 163 040
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 73-2
CHECK SYSTEM FOR EXISTENCE OF OPTIONS
014020 116 117 124
014023 040 145 170
014026 151 163 164
014031 000
3359 .EVEN
3360 014032 000717 BR 13$
3361 .DSABL LSB
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 74
BIT SET/BIT CLEAR TEST
3363 .SBTTL BIT SET/BIT CLEAR TEST
3364
3365 ;HERE TO CHECK WE CAN SET/CLEAR VARIOUS BITS
3366 ;
3367 ; CALL MOV #<ADR OF ASCIZ \NAME\>,CKDNAM
3368 ; MOV <DEVICE NUMBER>,CKDEVN
3369 ; MOV <DEVICE REGISTER ADDRESS>,R1
3370 ; JSR R5,CHKBIT
3371 ; <ALL BITS TO TEST>
3372 ;
3373 014034 010046 CHKBIT: MOV R0,-(SP)
3374 014036 012737 000340 177776 MOV #BR7,@#PS ;DISABLE INTERRUPTS
3375 014044 011500 MOV (R5),R0 ;GET BITS TO CHECK
3376 014046 040011 BIC R0,(R1) ;TRY AND CLEAR ALL OF THEM
3377 014050 030011 BIT R0,(R1) ;SEE IF ALL OF THEM CLEARED?
3378 014052 001410 BEQ 11$ ;BRANCH IF ALL CLEAR
3379 014054 005046 CLR -(SP) ;WHAT THE RESULT SHOULD BE
3380 014056 011146 MOV (R1),-(SP) ;PUT C(DEV REG) ON STACK
3381 014060 010046 MOV R0,-(SP) ;BUT ONLY CERTAIN BITS ARE BAD CANDIDATES
3382 014062 005116 COM (SP) ;GET RID OF ONES
3383 014064 042616 BIC (SP)+,(SP) ; THAT WE'RE NOT INTERESTED IN
3384 014066 010146 MOV R1,-(SP) ;SAVE THE DEVICE ADR
3385 014070 CK11SC <CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG02>,<BITS WOULD NOT CLEAR>
014070 104532 TRAP CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG> ;BITS WOULD NOT CLEAR
014072 020760' .WORD CKMG02 ;ADR OF MESSAGE
3386 014074 012700 000001 11$: MOV #1,R0 ;START WITH B0 AND GO UNTIL B15 IS DONE
3387 014100 031500 12$: BIT (R5),R0 ;WANT THIS BIT CHECKED?
3388 014102 001420 BEQ 14$ ;BRANCH IF NOT, AND MAKE NEW BIT
3389 014104 050011 BIS R0,(R1) ;TRY TO SET THE BIT
3390 014106 030011 BIT R0,(R1) ;SEE IF THE BIT SET
3391 014110 001005 BNE 13$ ;BRANCH IF IT SET
3392 014112 010046 MOV R0,-(SP) ;SAVE GOOD
3393 014114 005046 CLR -(SP) ;GOOD SHOUD BE 0 FOR THAT BIT
3394 014116 010146 MOV R1,-(SP) ;DEV ADR WHERE IT HAPPENED
3395 014120 CK11SC <CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG03>,<BIT WOULD NOT SET>
014120 104532 TRAP CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG> ;BIT WOULD NOT SET
014122 021002' .WORD CKMG03 ;ADR OF MESSAGE
3396 014124 040011 13$: BIC R0,(R1) ;NOW THAT ITS SET TRY TO CLEAR IT
3397 014126 030011 BIT R0,(R1) ;SEE IF IT CLEARED
3398 014130 001405 BEQ 14$ ;BRANCH IF IT CLEARED AND GET NEW BIT
3399 014132 005046 CLR -(SP) ;GOOD SHOUD BE 0
3400 014134 010046 MOV R0,-(SP) ;SINCE IT DIDN'T CLEAR THIS BIT IS BAD
3401 014136 010146 MOV R1,-(SP) ;DEV ADR THAT FAILED
3402 014140 CK11SC <CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG02>,<BIT WOULD NOT CLEAR>
014140 104532 TRAP CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG> ;BIT WOULD NOT CLEAR
014142 020760' .WORD CKMG02 ;ADR OF MESSAGE
3403 014144 006300 14$: ASL R0 ;MAKE NEW BIT POSITION
3404 014146 001354 BNE 12$ ;BRANCH IF THERE IS A BIT
3405 014150 012600 MOV (SP)+,R0
3406 014152 005725 TST (R5)+ ;GO OVER BITS FOLLOWING JSR
3407 014154 000205 RTS R5 ;EXIT
3408
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 75
PRINT DEVICE ID ROUTINE
3410 .SBTTL PRINT DEVICE ID ROUTINE
3411
3412 014156 032737 100000 011310' CKDIDT: BIT #CKFIDT,CHKFLG ;HAVE WE ALREADY TYPE DEVICE ID ?
3413 014164 001051 BNE 11$
3414 014166 004737 020540' JSR PC,CKCRLF ;EXTRA CR + LF
3415 014172 004037 020552' JSR R0,CKTCRL
3416 014176 007 000 .BYTE 007,0
3417 014200 032776 000200 000002 BIT #CKEWRN,@2(SP) ;WARN ?
3418 014206 001004 BNE 5$
3419 014210 CK11SC CKENCL,<? >
014210 104444 TRAP CKENCL!CKEMSG ;
3420 014212 077 040 000 .ASCIZ \? \
3421 .EVEN
3422 014216 000403 BR 10$
3423 014220 5$: CK11SC CKENCL,<% >
014220 104444 TRAP CKENCL!CKEMSG ;
3424 014222 045 040 000 .ASCIZ \% \
3425 .EVEN
3426 014226 013700 011314' 10$: MOV CKDNAM,R0 ;GET ASCIZ \DEVICE NAME\
3427 014232 004737 020512' JSR PC,CKTTXT ;TYPE DEVICE NAME
3428 014236 CK11SC <CKENCL>,< #>
014236 104444 TRAP CKENCL!CKEMSG ;
3429 014240 040 043 000 .ASCIZ \ #\
3430 .EVEN
3431 014244 013700 011312' MOV CKDEVN,R0 ;GET UNIT NUMBER
3432 014250 004737 020600' JSR PC,CKTOCT ;TYPE UNIT NUMBER
3433 014254 CK11SC <CKENCL>,<(Adr = >
014254 104444 TRAP CKENCL!CKEMSG ;
3434 014256 050 101 144 .ASCIZ \(Adr = \
014261 162 040 075
014264 040 000
3435 .EVEN
3436 014266 013700 020472' MOV CHKCHR+CKDA,R0 ;GET DEVICE ADDR
3437 014272 004737 020600' JSR PC,CKTOCT ;TYPE IT
3438 014276 CK11SC <CKENCL>,<)>
014276 104444 TRAP CKENCL!CKEMSG ;
3439 014300 051 000 .ASCIZ \)\
3440 .EVEN
3441 014302 052737 100000 011310' BIS #CKFIDT,CHKFLG ;REMEMBER WE TYPED DEVICE ID
3442 014310 000207 11$: RTS PC
3443
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 76
ROUTINE TO FIND DEVICE INTERRUPT LEVEL
3445 .SBTTL ROUTINE TO FIND DEVICE INTERRUPT LEVEL
3446 ;
3447 ;CALL JSR R5,CHKINL ;WITH DEVICE READY TO INT BUT
3448 ; ; WITH THE PS SET TO LEVEL 7.
3449 ;
3450 014312 010046 CHKINL: MOV R0,-(SP) ;SAVE R0
3451 014314 010146 MOV R1,-(SP) ;SAVE R1
3452 014316 010246 MOV R2,-(SP) ;SAVE R2
3453 014320 012702 000300 MOV #300,R2 ;START BY CHECKING LEVEL 6.
3454 014324 011501 11$: MOV (R5),R1 ;GET TIME TO WAIT
3455 014326 005000 CLR R0 ;WILL BE SET BY INT ROUTINE IF INT
3456 014330 010237 177776 MOV R2,@#PS ;LOWER PS LEVEL
3457 014334 005700 12$: TST R0 ;SEE IF INT YET
3458 014336 001012 BNE 13$ ;NON 0 SAYS INTERRUPT
3459 014340 077103 SOB R1,12$ ;TIME AND WAIT
3460 014342 012737 000340 177776 MOV #BR7,@#PS ;TIMED OUT SO SET LEVEL 7 AND LOWER AND TRY AGAIN
3461 014350 162702 000040 SUB #40,R2 ;MAKE LEVEL LOWER BY 1
3462 014354 002363 BGE 11$ ;BRANCH IF LEVEL 0 NOT CHECKED YET
3463 014356 CK11SC <CKEMSE!CKEDID!CKEPC>,<CKMG04>,<DEVICE NEVER INTERRUPTED>
014356 104432 TRAP CKEMSE!CKEDID!CKEPC&<^CCKEMSG> ;DEVICE NEVER INTERRUPTED
014360 021022' .WORD CKMG04 ;ADR OF MESSAGE
3464 014362 000415 BR 15$ ;EXIT
3465 014364 020037 020474' 13$: CMP R0,CHKCHR+CKDV ;SEE IF SAME AS WHAT IT SHOULD BE
3466 014370 001406 BEQ 14$ ;BRANCH IF CORRECT VECTOR
3467 014372 CKSERR <CHKCHR+CKDV>,<R0>,<R4>
014372 013746 020474' MOV CHKCHR+CKDV,-(SP) ;SAVE GOOD (CHKCHR+CKDV) ON STACK
014376 010046 MOV R0,-(SP) ;SAVE BAD (R0) ON STACK
014400 010446 MOV R4,-(SP) ;SAVE ADDRESS (R4) ON STACK
3468 014402 CK11SC <CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG05>,<Device INTERRUPTED to WRONG VECTOR>
014402 104532 TRAP CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG> ;Device INTERRUPTED to WRONG VECTOR
014404 021052' .WORD CKMG05 ;ADR OF MESSAGE
3469 014406 062702 000040 14$: ADD #40,R2 ;MAKE THE DEVICE LEVEL
3470 014412 010237 020476' MOV R2,CHKCHR+CKPI ;SAVE LEVEL DEVICE INTERRUPTED AT
3471 014416 012602 15$: MOV (SP)+,R2 ;RESTORE R2
3472 014420 012601 MOV (SP)+,R1 ;RESTORE R1
3473 014422 012600 MOV (SP)+,R0 ;RESTORE R0
3474 014424 005725 TST (R5)+ ;SKIP OVER TIME DELAY CONSTANT
3475 014426 000205 RTS R5 ;RETURN WITH DEVICE LEVEL SAVED IN CHARACTERISTICS TABLE
3476
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 77
CHECK INTERRUPTS AND FIND DEVICE LEVEL
3478 .SBTTL CHECK INTERRUPTS AND FIND DEVICE LEVEL
3479
3480 ;ROUTINE TO CHECK INTERRUPTS AND FIND DEVICE LEVEL
3481 ;
3482 ; CALL MOV ENABLE ADR,R1
3483 ; MOV INT ADR,R2
3484 ; JSR R5,CKINT
3485 ; ENABLE BIT
3486 ; INTERRUPT BITS
3487 ; SPECIAL CLEAR BITS
3488 ; 0 if BIS sufficient to generate interrupt, else address
3489 ; of subroutine
3490 ;
3491 014430 010346 CKINT: MOV R3,-(SP)
3492 014432 010446 MOV R4,-(SP)
3493 014434 005037 020476' CLR CHKCHR+CKPI ;START WITH PI OF 0 (NO DEV)
3494 014440 005037 015062' CLR CKFLAG
3495 014444 012704 000001 MOV #1,R4 ;STARTING POSITION OF SLIDING INT BIT
3496 014450 012703 000340 CKINT1: MOV #BR7,R3 ;START CHECKING AT THIS LEVEL
3497 014454 010337 177776 CKINT2: MOV R3,@#PS ;SET PS
3498 014460 005000 CLR R0 ;SET TO 0 SO IF INT HAPPENS WE KNOW IT
3499 014462 030465 000002 CKINT3: BIT R4,2(R5) ;IS THERE A BIT TO TEST?
3500 014466 001002 BNE 11$ ;BRANCH IF BIT IN POSITION
3501 014470 000137 015026' JMP CKINT7 ;MAKE NEW BIT POSITION
3502 014474 005765 000006 11$: TST 6(R5) ;subroutine supplied?
3503 014500 001403 BEQ 12$ ;no, do normal
3504 014502 004775 000006 JSR PC,@6(R5) ;yes, use it
3505 014506 000403 BR 13$ ;and continue
3506 014510 051511 12$: BIS (R5),(R1) ;SET INTERRUPT ENABLE
3507 014512 050412 BIS R4,(R2) ;SET INTERRUPT BIT
3508 014514 000240 NOP ;ALLOW 1 EXTRA INST TIME FOR INT
3509 014516 13$:
3510 014516 012737 000340 177776 MOV #BR7,@#PS ;LET NO INT HAPPEN
3511 014524 041511 BIC (R5),(R1) ;CLEAR INT ENABLE
3512 014526 005765 000004 TST 4(R5) ;SEE IF SPECIAL CLEAR
3513 014532 001403 BEQ 14$ ;BRANCH IF NOT
3514 014534 056512 000004 BIS 4(R5),(R2) ;SPECIAL CLEAR
3515 014540 000402 BR 15$ ;CONTINUE
3516 014542 046512 000002 14$: BIC 2(R5),(R2) ;CLEAR INT BITS
3517 014546 005700 15$: TST R0 ;IF R0 IS NON 0 IT SHOULD BE THE
3518 ; VECTOR ADR. IF 0 NO INT HAPPENED.
3519 014550 001006 BNE 16$ ;BRANCH IF INTERRUPT
3520 014552 162703 000040 SUB #40,R3 ;MAKE PS VALUE 1 LEVEL LESS
3521 014556 002336 BGE CKINT2 ;BRANCH IF NEW LEVEL OK
3522 014560 CK11SC <CKEMSE!CKEPC!CKEDID>,<CKMG04>,<DEVICE NEVER INTERRUPTED>
014560 104432 TRAP CKEMSE!CKEPC!CKEDID&<^CCKEMSG> ;DEVICE NEVER INTERRUPTED
014562 021022' .WORD CKMG04 ;ADR OF MESSAGE
3523 014564 000532 BR CKINTF ;EXIT WITH FAILURE RETURN
3524 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 78
CHECK INTERRUPTS AND FIND DEVICE LEVEL
3526 ;
3527 ; HERE WHEN THE DEVICE HAS INTERRUPTED
3528 ;
3529 014566 005737 015062' 16$: TST CKFLAG ;FIRST TIME THROUGH?
3530 014572 001014 BNE 17$ ;NO.
3531 014574 005337 015062' DEC CKFLAG ;YES, DON'T DO THIS AGAIN.
3532 014600 010337 020476' MOV R3,CHKCHR+CKPI ;STORE PRIORITY INTERRUPT LEVEL
3533 014604 062737 000040 020476' ADD #40,CHKCHR+CKPI
3534 014612 005737 020474' TST CHKCHR+CKDV ;VECTOR SPECIFIED?
3535 014616 001002 BNE 17$ ;YES, IT BETTER BE RIGHT.
3536 014620 010037 020474' MOV R0,CHKCHR+CKDV ;NO, SPECIFY IT NOW.
3537 014624 020037 020474' 17$: CMP R0,CHKCHR+CKDV ;IS VECTOR RIGHT?
3538 014630 001412 BEQ 18$ ;YES.
3539 014632 010046 MOV R0,-(SP) ;SAVE RIGHT ADDR
3540 014634 CKSERR <CHKCHR+CKDV>,R0,<R2> ;GD,BD,ADR
014634 013746 020474' MOV CHKCHR+CKDV,-(SP) ;SAVE GOOD (CHKCHR+CKDV) ON STACK
014640 010046 MOV R0,-(SP) ;SAVE BAD (R0) ON STACK
014642 010246 MOV R2,-(SP) ;SAVE ADDRESS (R2) ON STACK
3541 014644 CK11SC <CKEMSE!CKEPC!CKEDID!CKEGB>,<CKMG05>,<DEVICE INTERRUPTED TO WRONG VECTOR>
014644 104532 TRAP CKEMSE!CKEPC!CKEDID!CKEGB&<^CCKEMSG> ;DEVICE INTERRUPTED TO WRONG VECTOR
014646 021052' .WORD CKMG05 ;ADR OF MESSAGE
3542 014650 012637 020474' MOV (SP)+,CHKCHR+CKDV ;SET VECTOR RIGHT
3543 014654 000470 BR CKINTE ;EXIT
3544 ;
3545 014656 010300 18$: MOV R3,R0 ;GET PRESENT LEVEL
3546 014660 062700 000040 ADD #40,R0 ;MAKE IT THE DEVICE LEVEL
3547 014664 020037 020476' CMP R0,CHKCHR+CKPI ;CHECK LEVEL AGAINST LAST TIME
3548 014670 001424 BEQ CKINT6 ;BRANCH IF LEVEL CHECKS
3549 014672 CKSERR <CHKCHR+CKPI>,R0,R4
014672 013746 020476' MOV CHKCHR+CKPI,-(SP) ;SAVE GOOD (CHKCHR+CKPI) ON STACK
014676 010046 MOV R0,-(SP) ;SAVE BAD (R0) ON STACK
014700 010446 MOV R4,-(SP) ;SAVE ADDRESS (R4) ON STACK
3550 014702 CK11SC <CKEPC!CKEDID!CKEGB>,<Interrupt to Wrong PI Level>,<INTERRUPT TO WRONG PI LEVEL>
014702 104516 TRAP CKEPC!CKEDID!CKEGB!CKEMSG ;INTERRUPT TO WRONG PI LEVEL
3551 014704 111 156 164 .ASCIZ \Interrupt to Wrong PI Level\
014707 145 162 162
014712 165 160 164
014715 040 164 157
014720 040 127 162
014723 157 156 147
014726 040 120 111
014731 040 114 145
014734 166 145 154
014737 000
3552 .EVEN
3553 014740 000436 BR CKINTE ;EXIT
3554 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 79
CHECK INTERRUPTS AND FIND DEVICE LEVEL
3556 ;
3557 014742 012737 000000 177776 CKINT6: MOV #0,@#PS ;CHECK WITH LEVEL 0 AND
3558 014750 005000 CLR R0 ; NO INT ENABLE BITS SET
3559 014752 050412 BIS R4,(R2) ; AND INT BIT SET THAT NO INT OCCURRS
3560 014754 000240 NOP ;PAUSE
3561 014756 000240 NOP ;PAUSE
3562 014760 012737 000340 177776 MOV #BR7,@#PS ;DON'T LET AN INT HAPPEN
3563 014766 005700 TST R0 ;SEE IF ONE HAPPENED
3564 014770 001403 BEQ 11$ ;BRANCH IF NO INT
3565 014772 CK11SC <CKEMSE!CKEDID!CKEPC>,CKMG07,<INTERRUPT WHEN NOT ENABLED>
014772 104432 TRAP CKEMSE!CKEDID!CKEPC&<^CCKEMSG> ;INTERRUPT WHEN NOT ENABLED
014774 021120' .WORD CKMG07 ;ADR OF MESSAGE
3566 014776 000425 BR CKINTF ;EXIT WITH FAILURE RETURN
3567 015000 005765 000004 11$: TST 4(R5) ;SEE IF SPECIAL CLEAR
3568 015004 001403 BEQ 12$ ;BRANCH IF NOT
3569 015006 056512 000004 BIS 4(R5),(R2) ;SPECIAL CLEAR (DL10 FOR ONE)
3570 015012 000401 BR 13$ ;CONTINUE
3571 015014 040412 12$: BIC R4,(R2) ;CLEAR INT BITS
3572 015016 006304 13$: ASL R4 ;MAKE NEW BIT POSITION
3573 015020 001406 BEQ CKINTE ;BRANCH IF DONE
3574 015022 000137 014450' JMP CKINT1 ;TEST NEW BIT
3575 015026 006304 CKINT7: ASL R4 ;MAKE NEW INT BIT POSITION
3576 015030 001402 BEQ CKINTE ;BRANCH IF NO NEW BIT POSITION
3577 015032 000137 014462' JMP CKINT3 ;BRANCH IF NEW BIT POSITION
3578 015036 062705 000010 CKINTE: ADD #10,R5 ;FOR CORRECT RETURN
3579 015042 000241 CLC ;FLAG SUCCESS
3580 015044 CKINTG: ;COMMON RETURN CODE
3581 015044 012604 MOV (SP)+,R4
3582 015046 012603 MOV (SP)+,R3
3583 015050 000205 RTS R5 ;RETURN
3584
3585 015052 062705 000010 CKINTF: ADD #10,R5 ;FOR CORRECT RETURN ADDRESS
3586 015056 000261 SEC ;TO INDICATE FAILURE
3587 015060 000771 BR CKINTG ;GO TO COMMON RETURN CODE
3588
3589 015062 000000 CKFLAG: 0
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 80
HERE ON AN INTERRUPT WHILE IN CHK11
3591 .SBTTL HERE ON AN INTERRUPT WHILE IN CHK11
3592
3593 ;HERE FROM AN INTERRUPT WHILE IN CHK11
3594 ; WILL RETURN VECTOR ADDRESS IN R0 (RANGE 0 TO 1174)
3595 ;
3596 015064 013700 177776 CHKINT: MOV @#PS,R0 ;GET PROCESSOR STATUS
3597 015070 004737 015230' JSR PC,11$ ;COMPUTE INTERRUPT ADDRESS
3598 015074 000000 .WORD 0000 ;THESE INTERRUPTS ARE 0000-0074
3599 000012 CHKITL=.-CHKINT ;LENGTH OF INTERRUPT BLOCK
3600 015076 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3601 015102 004737 015230' JSR PC,11$
3602 015106 000100 .WORD 0100
3603 015110 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3604 015114 004737 015230' JSR PC,11$
3605 015120 000200 .WORD 0200
3606 015122 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3607 015126 004737 015230' JSR PC,11$
3608 015132 000300 .WORD 0300
3609 015134 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3610 015140 004737 015230' JSR PC,11$
3611 015144 000400 .WORD 0400
3612 015146 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3613 015152 004737 015230' JSR PC,11$
3614 015156 000500 .WORD 0500
3615 015160 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3616 015164 004737 015230' JSR PC,11$
3617 015170 000600 .WORD 0600
3618 015172 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3619 015176 004737 015230' JSR PC,11$
3620 015202 000700 .WORD 0700
3621 015204 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3622 015210 004737 015230' JSR PC,11$
3623 015214 001000 .WORD 1000
3624 015216 013700 177776 MOV @#PS,R0 ;GET PROCESSOR STATUS
3625 015222 004737 015230' JSR PC,11$
3626 015226 001100 .WORD 1100
3627 ;
3628 ; HERE AFTER AN INTERRUPT TO COMPUTE THE ADDRESS FROM THE THE LOW
3629 ; FOUR BITS OF THE PS AND THE WORD AFTER THE JSR ABOVE.
3630 ;
3631 015230 042700 177760 11$: BIC #^C17,R0 ;STRIP EXTRA BITS
3632 015234 006300 ASL R0 ;MULTIPLY BY 4
3633 015236 006300 ASL R0
3634 015240 063600 ADD @(SP)+,R0 ;MAKES VECTOR ADR
3635 015242 012766 000340 000002 MOV #BR7,2(SP) ;SO DON'T TRAP BACK AGAIN
3636 015250 000002 RTI
3637
3638 015252 CHKFLV: .BLKW 1 ;CURRENT FLOATING DEVICE VECTOR
3639 015254 CHKFLD: .BLKW 1 ;CURRENT FLOATING DEVICE ADR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 81
CHECK DH11 HDW
3641 .SBTTL CHECK DH11 HDW
3642
3643 ;CALL MOV #<VECTOR ADR>,R3
3644 ; MOV #<HDW ADR>,R4
3645 ; MOV #<HDW ADR>,R1
3646 ; JSR PC,CKDH11
3647 015256 010346 CKDH11: MOV R3,-(SP) ;SAVE REGISTER
3648 015260 004537 014034' JSR R5,CHKBIT ;CHECK RD/WRT BITS
3649 015264 131177 131177 ;READ/WRITE BITS
3650 015266 005721 TST (R1)+ ;ADVANCE TO NXT REC CHAR REG
3651 015270 005721 TST (R1)+ ;ADVANCE TO LINE PARAMETER REG(XX4)
3652 015272 004537 014034' JSR R5,CHKBIT ;CHECK RD/WRT BITS
3653 015276 177767 177767 ;READ/WRITE BITS
3654 015300 005721 TST (R1)+ ;ADVANCE TO CURRENT ADR REG(XX6)
3655 015302 005002 CLR R2 ;START CHECK AT LINE 0
3656 015304 010214 11$: MOV R2,(R4) ;SELECT THE LINE
3657 015306 004537 014034' JSR R5,CHKBIT ;CHECK RD/WRT BITS
3658 015312 177777 -1 ;READ/WRITE BITS
3659 015314 005202 INC R2 ;NEXT LINE TO CHECK
3660 015316 020227 000017 CMP R2,#17 ;DONE
3661 015322 003770 BLE 11$ ;CHECK LINES 0-17
3662 015324 005721 TST (R1)+ ;ADVANCE TO BYTE COUNT REG(X10)
3663 015326 005002 CLR R2 ;START CHECK AT LINE 0
3664 015330 010214 12$: MOV R2,(R4) ;SELECT THE LINE
3665 015332 004537 014034' JSR R5,CHKBIT ;CHECK RD/WRT BITS
3666 015336 177777 -1 ;READ/WRITE BITS
3667 015340 005202 INC R2 ;NEXT LINE TO CHECK
3668 015342 020227 000017 CMP R2,#17 ;ALL LINES CHECKED?
3669 015346 003770 BLE 12$ ;CHECK ALL 20 LINES
3670 015350 005721 TST (R1)+ ;ADVANCE TO BAR REG(XX12)
3671 015352 005721 TST (R1)+ ;ADVANCE TO BREAK REG(X14)
3672 015354 004537 014034' JSR R5,CHKBIT ;CHECK BITS
3673 015360 177777 -1 ;READ/WRITE BITS
3674 015362 005721 TST (R1)+ ;ADVANCE TO SILO STATUS REG(X16)
3675 015364 004537 014034' JSR R5,CHKBIT ;CHECK READ/WRITE BITS
3676 015370 000077 77
3677 015372 $CKINT R4,R4,<DH.RIE!DH..MM>,<DH..RI>
015372 010401 .IIF NB,R4, MOV R4,R1 ;LOAD ENABLE ADR
015374 010402 .IIF NB,R4, MOV R4,R2 ;LOAD INTERRUPT ADR
015376 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
015402 001100 .WORD DH.RIE!DH..MM ;ENABLE BITS - DH.RIE!DH..MM
015404 000200 .WORD DH..RI ;INTERRUPT BITS - DH..RI
015406 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
015410 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
3678 015412 $CKINT ,,<DH.SIE!DH..MM>,<DH..SI>
015412 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
015416 011000 .WORD DH.SIE!DH..MM ;ENABLE BITS - DH.SIE!DH..MM
015420 040000 .WORD DH..SI ;INTERRUPT BITS - DH..SI
015422 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
015424 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
3679 015426 062737 000004 020474' ADD #4,CHKCHR+CKDV ;MAKE EXPECTED VECTOR FOR XMIT
3680 015434 $CKINT ,,<DH.TIE>,<DH..TI>
015434 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
015440 020000 .WORD DH.TIE ;ENABLE BITS - DH.TIE
015442 100000 .WORD DH..TI ;INTERRUPT BITS - DH..TI
015444 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
015446 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 81-1
CHECK DH11 HDW
3681 015450 010337 020474' MOV R3,CHKCHR+CKDV ;PUT VECTOR ADDRESS IN TABLE
3682
3683 015454 CKDH1A:
3684 015454 010337 016340' MOV R3,DHXMII ;ADR TO COME TO ON XMIT INT
3685 015460 062737 000004 016340' ADD #4,DHXMII ;
3686 015466 012700 021156' MOV #CKBLK,R0 ;LOAD A BUFFER WITH COUNT PATTERN
3687 015472 012701 000400 MOV #400,R1 ;LOAD 400 CHARACTERS
3688 015476 005002 CLR R2 ;START WITH 0
3689 015500 110220 11$: MOVB R2,(R0)+ ;STORE THE COUNT PATTERN
3690 015502 105202 INCB R2 ;NEW PATTERN
3691 015504 077103 SOB R1,11$ ;BUFFER LOADED?
3692 015506 005003 CLR R3 ;START WITH LINE 0
3693 015510 012702 000001 MOV #1,R2 ;LINE BIT (LINE 0)
3694 015514 005037 016336' CKDH1B: CLR DHDATA ;FIRST RCV'D SHOULD BE 0
3695 015520 012701 177400 MOV #-400,R1
3696 015524 052714 004000 BIS #DH..MC,(R4) ;CLEAR THE DH
3697 015530 052714 031100 BIS #DH..MM!DH.SIE!DH.TIE!DH.RIE,(R4) ;ENABLE INTS
3698 015534 050314 BIS R3,(R4) ;LOAD THE LINE NUMBER
3699 015536 012764 033567 000004 MOV #B6!B8!B9!B10!B12!B13!DH.2SB!DH.CL8!DH.PEN!DH..OP,DH.LPR(R4) ;SEL 8BIT,9600,PAR,ODD
3700 015544 010164 000010 MOV R1,DH.BCR(R4) ;LENGTH TO XMIT
3701 015550 012764 021156' 000006 MOV #CKBLK,DH.CAR(R4) ;ADR WHERE THE DATA IS
3702 015556 012764 000004 000016 MOV #4,DH.SSR(R4) ;ALARM LEVEL TO 4
3703 015564 005000 CKDH1E: CLR R0 ;INT RETURNS ADR IN HERE
3704 015566 005001 CLR R1 ;TIMER
3705 015570 010264 000012 MOV R2,DH.BAR(R4) ;SET LINE ACTIVE
3706 015574 012737 000000 177776 11$: MOV #0,@#PS ;LEVEL TO 0 FOR INTS
3707 015602 000240 NOP ;LET AN INTERRUPT HAPPEN
3708 015604 012737 000340 177776 MOV #BR7,@#PS ;DON'T LET ONE HAPPEN
3709 015612 020037 020474' CMP R0,CHKCHR+CKDV ;SEE IF RCV INT YET
3710 015616 001467 BEQ 16$ ;BRANCH IF RCV INT
3711 015620 020037 016340' CMP R0,DHXMII ;SEE IF XMIT INT
3712 015624 001427 BEQ 13$ ;BRANCH IF XMIT INT
3713 015626 005700 TST R0 ;SEE IF ANY INTERRUPT
3714 015630 001413 BEQ 12$ ;BRANCH IF NO INTERRUPT
3715 015632 CKSERR <CHKCHR+CKDV>,R0,R3
015632 013746 020474' MOV CHKCHR+CKDV,-(SP) ;SAVE GOOD (CHKCHR+CKDV) ON STACK
015636 010046 MOV R0,-(SP) ;SAVE BAD (R0) ON STACK
015640 010346 MOV R3,-(SP) ;SAVE ADDRESS (R3) ON STACK
3716 015642 CK11SC <CKEPC!CKEGB!CKEDID>,<Ill Int>,<ILLEGAL INT WHILE WAITING FOR DH11 INT>
015642 104516 TRAP CKEPC!CKEGB!CKEDID!CKEMSG ;ILLEGAL INT WHILE WAITING FOR DH11 INT
3717 015644 111 154 154 .ASCIZ \Ill Int\
015647 040 111 156
015652 164 000
3718 .EVEN
3719 015654 000137 016270' JMP CKDH1D ;DON'T TEST ANY MORE
3720 015660 077133 12$: SOB R1,11$ ;TIME-OUT
3721 015662 CK11SC <CKEPC!CKEDID>,<No Int>,<NO DH11 INTERRUPT>
015662 104416 TRAP CKEPC!CKEDID!CKEMSG ;NO DH11 INTERRUPT
3722 015664 116 157 040 .ASCIZ \No Int\
015667 111 156 164
015672 000
3723 .EVEN
3724 015674 004737 016302' JSR PC,CKDHPL ;REPORT LINE NUMBER
3725 015700 000137 016270' JMP CKDH1D ;DON'T TEST ANY MORE
3726 015704 032714 002000 13$: BIT #DH.NXM,(R4) ;SEE IF NXM
3727 015710 001411 BEQ 14$ ;BRANCH IF NO NXM
3728 015712 CK11SC <CKEPC!CKEDID>,<Xmit Nxm>,<TRANSMIT NXM ON DH>
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 81-2
CHECK DH11 HDW
015712 104416 TRAP CKEPC!CKEDID!CKEMSG ;TRANSMIT NXM ON DH
3729 015714 130 155 151 .ASCIZ \Xmit Nxm\
015717 164 040 116
015722 170 155 000
3730 .EVEN
3731 015726 004737 016302' JSR PC,CKDHPL ;REPORT LINE NUMBER
3732 015732 000556 BR CKDH1D ;DON'T TEST ANY MORE
3733 015734 032714 100000 14$: BIT #DH..TI,(R4) ;BETTER HAVE XMIT INT
3734 015740 001013 BNE 15$ ;BRANCH IF WE DO
3735 015742 CK11SC <CKEPC!CKEDID>,<Ill Xmit Int>,<INT TO XMIT BUT FOR NO REASON>
015742 104416 TRAP CKEPC!CKEDID!CKEMSG ;INT TO XMIT BUT FOR NO REASON
3736 015744 111 154 154 .ASCIZ \Ill Xmit Int\
015747 040 130 155
015752 151 164 040
015755 111 156 164
015760 000
3737 .EVEN
3738 015762 004737 016302' JSR PC,CKDHPL ;REPORT LINE NUMBER
3739 015766 000540 BR CKDH1D ;DON'T TEST ANY MORE
3740 015770 042714 100000 15$: BIC #DH..TI,(R4) ;CLEAR XMIT INT
3741 015774 000673 BR CKDH1E ;
3742 015776 032714 040000 16$: BIT #DH..SI,(R4) ;SEE IF SILO OVERFLOW
3743 016002 001411 BEQ CKDH1C ;BRANCH IF SILO HAD ROOM
3744 016004 CK11SC <CKEPC!CKEDID>,<Silo Full>,<SILO OVERFLOW>
016004 104416 TRAP CKEPC!CKEDID!CKEMSG ;SILO OVERFLOW
3745 016006 123 151 154 .ASCIZ \Silo Full\
016011 157 040 106
016014 165 154 154
016017 000
3746 .EVEN
3747 016020 004737 016302' JSR PC,CKDHPL ;REPORT LINE NUMBER
3748 016024 000521 BR CKDH1D ;DON'T TEST ANY MORE
3749 016026 042714 000200 CKDH1C: BIC #DH..RI,(R4) ;CLEAR RCV INT (MUST FOR MAINT MODE)
3750 016032 016400 000002 MOV DH.NRC(R4),R0 ;GET STUFF FROM SILO
3751 016036 032700 070000 BIT #DH.DOV!DH..FE!DH..PE,R0 ;SEE IF ANY ERROR BITS WITH DATA
3752 016042 001424 BEQ 11$ ;BRANCH IF NO ERRORS WITH THE DATA
3753 016044 013746 016336' MOV DHDATA,-(SP) ;MAKE THE GOOD
3754 016050 010346 MOV R3,-(SP) ;PUT LINE # IN
3755 016052 000316 SWAB (SP) ;GET IT IN THE (LB)
3756 016054 052616 BIS (SP)+,(SP) ;LINE # NOW IN GOOD
3757 016056 052716 100000 BIS #DH.VDP,(SP) ;GOOD INCLUDES VALID DATA PRESENT
3758 016062 010046 MOV R0,-(SP) ;THE BAD
3759 016064 010346 MOV R3,-(SP) ;THE LINE UNDER TEST
3760 016066 CK11SC <CKEGB!CKEPC!CKEDID>,<Data Err Bit Set>,<ERROR BITS WITH THE DATA>
016066 104516 TRAP CKEGB!CKEPC!CKEDID!CKEMSG ;ERROR BITS WITH THE DATA
3761 016070 104 141 164 .ASCIZ \Data Err Bit Set\
016073 141 040 105
016076 162 162 040
016101 102 151 164
016104 040 123 145
016107 164 000
3762 .EVEN
3763 016112 000466 BR CKDH1D ;DON'T TEST ANY MORE
3764 016114 032700 100000 11$: BIT #DH.VDP,R0 ;SEE IF VALID DATA
3765 016120 001014 BNE 12$ ;BRANCH IF VALID DATA
3766 016122 CK11SC <CKEPC!CKEDID>,<Not Valid Data>,<NOT VALID DATA BIT SET>
016122 104416 TRAP CKEPC!CKEDID!CKEMSG ;NOT VALID DATA BIT SET
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 81-3
CHECK DH11 HDW
3767 016124 116 157 164 .ASCIZ \Not Valid Data\
016127 040 126 141
016132 154 151 144
016135 040 104 141
016140 164 141 000
3768 .EVEN
3769 016144 004737 016302' JSR PC,CKDHPL ;REPORT LINE NUMBER
3770 016150 000447 BR CKDH1D ;DON'T TEST ANY MORE
3771 016152 042700 170000 12$: BIC #B15!B14!B13!B12,R0 ;CLEAR DATA ERROR BITS
3772 016156 000300 SWAB R0 ;FOR CHECKING LINE #
3773 016160 120003 CMPB R0,R3 ;SEE IF LINE #OK
3774 016162 001415 BEQ 13$ ;BRANCH IF IT IS
3775 016164 010346 MOV R3,-(SP) ;LEGAL LINE NUMBER
3776 016166 005046 CLR -(SP) ;0 FOR BYTE MOVE
3777 016170 110016 MOVB R0,(SP) ;THE ILLEGAL LINE NUMBER
3778 016172 010346 MOV R3,-(SP) ;LINE UNDER TEST
3779 016174 CK11SC <CKEGB!CKEPC!CKEDID>,<Ill Line Num>,<ILLEGAL LINE NUMBER>
016174 104516 TRAP CKEGB!CKEPC!CKEDID!CKEMSG ;ILLEGAL LINE NUMBER
3780 016176 111 154 154 .ASCIZ \Ill Line Num\
016201 040 114 151
016204 156 145 040
016207 116 165 155
016212 000
3781 .EVEN
3782 016214 000425 BR CKDH1D ;DON'T TEST ANY MORE
3783 016216 000300 13$: SWAB R0 ;FOR CHECKING THE DATA
3784 016220 120037 016336' CMPB R0,DHDATA ;SEE IF CORRECT DATA
3785 016224 001414 BEQ 14$ ;BRANCH IF DATA OK
3786 016226 013746 016336' MOV DHDATA,-(SP) ;GOOD DATA
3787 016232 005046 CLR -(SP) ;FOR BYTE MOVE
3788 016234 110016 MOVB R0,(SP) ;THE BAD DATA
3789 016236 010346 MOV R3,-(SP) ;THE LINE #
3790 016240 CK11SC <CKEGB!CKEPC!CKEDID>,<Data Err>,<DATA ERROR>
016240 104516 TRAP CKEGB!CKEPC!CKEDID!CKEMSG ;DATA ERROR
3791 016242 104 141 164 .ASCIZ \Data Err\
016245 141 040 105
016250 162 162 000
3792 .EVEN
3793 016254 000405 BR CKDH1D ;DON'T TEST ANY MORE
3794 016256 105237 016336' 14$: INCB DHDATA ;NEW PATTERN EXPECTED
3795 016262 001402 BEQ 15$ ;BRANCH IF LINE DONE
3796 016264 000137 015564' JMP CKDH1E ;
3797
3798 016270 15$:
3799 016270 005203 CKDH1D: INC R3 ;NEW LINE NUMBER
3800 016272 006302 ASL R2 ;NEW BIT FOR NEXT LINE
3801 016274 001414 BEQ CKDH1F ;BRANCH IF TEST ALL DONE
3802 016276 000137 015514' JMP CKDH1B ;
3803
3804 016302 CKDHPL: CK11SC 0,< Line #>
016302 104404 TRAP 0!CKEMSG ;
3805 016304 011 011 114 .ASCIZ \ Line #\
016307 151 156 145
016312 040 043 000
3806 .EVEN
3807 016316 010300 MOV R3,R0 ;LINE NUMBER TO R0 FOR CALL
3808 016320 004737 020600' JSR PC,CKTOCT ;PRINT LINE NUMBER
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 81-4
CHECK DH11 HDW
3809 016324 000207 RTS PC ;RETURN
3810
3811 016326 052714 004000 CKDH1F: BIS #DH..MC,(R4) ;MASTER CLEAR
3812 016332 012603 MOV (SP)+,R3 ;GET R3 BACK
3813 016334 000207 RTS PC ;DH CHARACTER TEST DONE
3814 016336 000000 DHDATA: 0
3815 016340 000000 DHXMII: 0
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 82
CHECK DL11-E HDW
3817 .SBTTL CHECK DL11-E HDW
3818
3819 ;CALL MOV #<VECTOR ADR>,R3
3820 ; MOV #<HDW ADR>,R4
3821 ; MOV #<HDW ADR>,R1
3822 ; JSR PC,CKDL11
3823 ;
3824 016342 CKRD11:
3825 016342 010346 CKDL11: MOV R3,-(SP)
3826 016344 004537 014034' JSR R5,CHKBIT ;CHECK READ/WRITE BITS
3827 016350 000156 000156
3828 016352 005721 TST (R1)+ ;ADVANCE TO RECEIVE DATA REGISTER
3829 016354 005721 TST (R1)+ ;ADVANCE TO TRANSMIT STATUS REGISTER
3830 016356 004537 014034' JSR R5,CHKBIT
3831 016362 000105 000105
3832 016364 012711 000100 MOV #CO.INE,(R1) ;CAUSE AN INTERRUPT
3833 016370 004537 014312' JSR R5,CHKINL ;CHECK THE PI LEVEL
3834 016374 177777 .WORD -1
3835 016376 042711 000100 BIC #CO.INE,(R1) ;CLEAR THE INTERRUPT
3836 016402 012603 MOV (SP)+,R3
3837 016404 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 83
CHECK DL11-E HDW
3839
3840 .SBTTL CHECK DL11-A HDW
3841
3842 ;CALL MOV #<VECTOR ADR>,R3
3843 ; MOV #<HDW ADR>,R4
3844 ; MOV #<HDW ADR>,R1
3845 ; JSR PC,CKKL11
3846 ;
3847 016406 010346 CKKL11: MOV R3,-(SP)
3848 016410 004537 014034' JSR R5,CHKBIT ;CHECK READ/WRITE BITS
3849 016414 000100 .WORD 000100
3850 016416 005721 TST (R1)+ ;ADVANCE TO RECEIVE DATA REGISTER
3851 016420 005721 TST (R1)+ ;ADVANCE TO TRANSMIT STATUS REGISTER
3852 016422 004537 014034' JSR R5,CHKBIT
3853 016426 000104 .WORD 000104
3854 016430 012764 000100 000004 MOV #CO.INE,4(R4) ;ENABLE PENDING OUTPUT INTERRUPT
3855 016436 004537 014312' JSR R5,CHKINL ;TEST INTERURPTS
3856 016442 177777 .WORD -1 ;TIMEOUT COUNTER
3857 016444 042764 000100 000004 BIC #CO.INE,4(R4) ;DISABLE THAT INTERRUPT
3858 016452 012603 MOV (SP)+,R3
3859 016454 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 84
CHECK DL11-A HDW
3861
3862 .SBTTL CHECK DM11-BB HDW
3863
3864 ;CALL MOV #<VECTOR ADR>,R3
3865 ; MOV #<HDW ADR>,R4
3866 ; MOV #<HDW ADR>,R1
3867 ; JSR PC,CKDM11
3868 016456 004537 014034' CKDM11: JSR R5,CHKBIT ;CHECK FOLLOWING BITS
3869 016462 001357 DM.ALI!DM.DNE!DM..MM!DM.ENB!DM.IEN
3870 016464 $CKINT ,R4,<DM.IEN>,<DM.DNE>
016464 010402 .IIF NB,R4, MOV R4,R2 ;LOAD INTERRUPT ADR
016466 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
016472 000100 .WORD DM.IEN ;ENABLE BITS - DM.IEN
016474 000200 .WORD DM.DNE ;INTERRUPT BITS - DM.DNE
016476 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
016500 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
3871 016502 004737 016552' JSR PC,CKDMCS ;CLEAR SCAN AND CHECK IT CLEARED
3872 016506 052714 000040 BIS #DM.ENB,(R4) ;ENABLE SCAN
3873 016512 032714 000020 BIT #DM.BSY,(R4) ;SEE IF BSY SET
3874 016516 001012 BNE 11$ ;BRANCH IF IT DID
3875 016520 CK11SC <CKEPC!CKEDID>,<Busy did not Set>,<BUSY DID NOT SET>
016520 104416 TRAP CKEPC!CKEDID!CKEMSG ;BUSY DID NOT SET
3876 016522 102 165 163 .ASCIZ \Busy did not Set\
016525 171 040 144
016530 151 144 040
016533 156 157 164
016536 040 123 145
016541 164 000
3877 .EVEN
3878 016544 004737 016552' 11$: JSR PC,CKDMCS ;CLEAR SCAN AND CHECKED IT CLEARED
3879 016550 000207 RTS PC
3880
3881 016552 012702 001357 CKDMCS: MOV #DM.DNE!DM..MM!DM.IEN!DM.ENB!DM.ALI,R2 ;BITS WHICH SHOULD GET CLEARED
3882 016556 012700 000100 MOV #100,R0 ;TIME OUT FOR BUSY
3883 016562 052714 004000 BIS #DM.SCN,(R4) ;CLEAR SCAN
3884 016566 032714 000020 11$: BIT #DM.BSY,(R4) ;SEE IF BUSY CLEAR YET
3885 016572 001414 BEQ 12$ ;BRANCH IF IT IS
3886 016574 077004 SOB R0,11$ ;TIME OUT WAITING FOR BSY TO CLEAR
3887 016576 CK11SC <CKEPC!CKEDID>,<Busy did not Clear>,<CLEARING SCAN FAILED TO CLEAR BUSY>
016576 104416 TRAP CKEPC!CKEDID!CKEMSG ;CLEARING SCAN FAILED TO CLEAR BUSY
3888 016600 102 165 163 .ASCIZ \Busy did not Clear\
016603 171 040 144
016606 151 144 040
016611 156 157 164
016614 040 103 154
016617 145 141 162
016622 000
3889 .EVEN
3890 016624 030114 12$: BIT R1,(R4) ;SEE IF THEY ARE ALL CLEAR
3891 016626 001420 BEQ 14$ ;BRANCH IF THEY ARE ALL CLEAR
3892 016630 011400 MOV (R4),R0 ;GET DM11 STATUS
3893 016632 005102 COM R2 ;MASK OUT NON INTERESTING BITS
3894 016634 040200 BIC R2,R0 ;
3895 016636 005046 CLR -(SP) ;GOOD
3896 016640 010046 MOV R0,-(SP) ;BAD
3897 016642 010446 MOV R4,-(SP) ;ADR
3898 016644 CK11SC <CKEGB!CKEPC!CKEDID>,<Clear Scan Error>,<CLR SCAN FAILED TO CLEAR A BIT>
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 84-1
CHECK DM11-BB HDW
016644 104516 TRAP CKEGB!CKEPC!CKEDID!CKEMSG ;CLR SCAN FAILED TO CLEAR A BIT
3899 016646 103 154 145 .ASCIZ \Clear Scan Error\
016651 141 162 040
016654 123 143 141
016657 156 040 105
016662 162 162 157
016665 162 000
3900 .EVEN
3901 016670 000207 14$: RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 85
CHECK DTE20 HARDWARE
3903 .SBTTL CHECK DTE20 HARDWARE
3904 ;
3905 ; JSR PC,CKTE11
3906 016672 CKTE11:
3907 ; [1(17)]
3908 .IIF DF,DTEBAD,MOV R1,DTEBAD ;SAVE DTE20 BASE ADR [1(26)]
3909 016672 004537 014034' JSR R5,CHKBIT ;CHECK DLYCNT IN DTE'S RAM
3910 016676 177777 177777 ; SINCE WE CAN ACCESS ALL THE BITS
3911 016700 062701 000034 ADD #TE.STW-TE.DYC,R1 ;POINT TO STATUS REGISTER
3912 .IIF DF,DTPSTA,MOV R1,DTPSTA ;SAVE THE POINTER TO STAT REG [1(26)]
3913 016704 012711 000040 MOV #TS.EEE,@R1 ;ENABLE INTERRUPTS
3914 016710 032711 000001 BIT #TS.IEN,@R1 ;DOES DTE AGREE?
3915 016714 001022 BNE 11$ ;YEP
3916 016716 CK11SC <CKEPC!CKEDID>,<Setting TS.EEE didn't set TS.IEN>
016716 104416 TRAP CKEPC!CKEDID!CKEMSG ;
3917 016720 123 145 164 .ASCIZ \Setting TS.EEE didn't set TS.IEN\
016723 164 151 156
016726 147 040 124
016731 123 056 105
016734 105 105 040
016737 144 151 144
016742 156 047 164
016745 040 163 145
016750 164 040 124
016753 123 056 111
016756 105 116 000
3918 .EVEN
3919 016762 11$: $CKINT ,R1,<TS.EEE>,<TS.RES>,<TS.DEI>
016762 010102 .IIF NB,R1, MOV R1,R2 ;LOAD INTERRUPT ADR
016764 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
016770 000040 .WORD TS.EEE ;ENABLE BITS - TS.EEE
016772 004000 .WORD TS.RES ;INTERRUPT BITS - TS.RES
016774 000010 .IIF NB,TS.DEI, .WORD TS.DEI ;BITS TO CLEAR DEVICE - TS.DEI
016776 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
3920 017000 032711 000001 BIT #TS.IEN,@R1 ;WHICH SHOULD TURN THIS OFF
3921 017004 001423 BEQ 12$ ;OKAY
3922 017006 CK11SC <CKEPC!CKEDID>,<Setting TS.DEI didn't clear TS.IEN>
017006 104416 TRAP CKEPC!CKEDID!CKEMSG ;
3923 017010 123 145 164 .ASCIZ \Setting TS.DEI didn't clear TS.IEN\
017013 164 151 156
017016 147 040 124
017021 123 056 104
017024 105 111 040
017027 144 151 144
017032 156 047 164
017035 040 143 154
017040 145 141 162
017043 040 124 123
017046 056 111 105
017051 116 000
3924 .EVEN
3925 017054 032711 000010 12$: BIT #TS.RM,@R1 ;WE SHOULD BE RESTRICTED
3926 017060 001015 BNE 13$ ;WE ARE, FINE
3927 017062 CK11SC <CKEDID!CKEWRN>,<DTE20 is not restricted>
017062 104614 TRAP CKEDID!CKEWRN!CKEMSG ;
3928 017064 104 124 105 .ASCIZ \DTE20 is not restricted\
017067 062 060 040
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 85-1
CHECK DTE20 HARDWARE
017072 151 163 040
017075 156 157 164
017100 040 162 145
017103 163 164 162
017106 151 143 164
017111 145 144 000
3929 017114 012741 000100 13$: MOV #TS.RST,-(R1) ;REALLY INITIALIZE DTE20
3930 .IIF DF,DTEDTO,MOV R3,DTEDTO ;SAVE PTR TO INTP VECTOR ADR [1(26)]
3931 ;DTEDTO GLOBAL CELL IS
3932 ; ALSO USED TO HOLD
3933 ; DEPOSIT/EXAMINE TIMEOUTS
3934 017120 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 86
CHECK DTE20 HARDWARE
3936
3937 .SBTTL CHECK CD11 HARDWARE
3938 ;
3939 ; JSR PC,CKCD11
3940 ;
3941 017122 CKCD11:
3942 017122 032711 010000 BIT #CD.OFL,(R1) ;OFF LINE ?
3943 017126 001012 BNE 10$ ;BRANCH IF NOT
3944 017130 CK11SC 0,<NOT READY>
017130 104404 TRAP 0!CKEMSG ;
3945 017132 011 103 104 .ASCIZ \ CD20 off line\
017135 062 060 040
017140 157 146 146
017143 040 154 151
017146 156 145 000
3946 .EVEN
3947 017152 000207 RTS PC
3948 017154 10$:
3949 017154 004537 014034' JSR R5,CHKBIT ;CHECK HARDWARE BITS
3950 017160 000102 CD.PAK!CD.INE
3951 017162 $CKINT R4,R4,<CD.INE>,,,<CKCD20>
017162 010401 .IIF NB,R4, MOV R4,R1 ;LOAD ENABLE ADR
017164 010402 .IIF NB,R4, MOV R4,R2 ;LOAD INTERRUPT ADR
017166 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
017172 000100 .WORD CD.INE ;ENABLE BITS - CD.INE
017174 000000 .WORD ;INTERRUPT BITS -
017176 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
017200 017204' .IIF NB,CKCD20, .WORD CKCD20 ;SUBROUTINE TO GENERATE INTERRUPT
3952 017202 000207 RTS PC
3953 017204 CKCD20:
3954 017204 012711 000400 MOV #CD.PWR,(R1) ;CLEAR THE CD
3955 017210 012761 177777 000002 MOV #-1,2(R1) ;READ ONE COLUMN
3956 017216 012761 160000 000004 MOV #160000,4(R1) ;INTO NON-EXISTENT MEM
3957 017224 012714 000061 MOV #CD.XAD!CD.GO,(R4) ;START IT GOING
3958 017230 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 87
CHECK CD11 HARDWARE
3960
3961 .SBTTL CHECK LP11 HARDWARE
3962 ;
3963 ; JSR PC,CKLP11
3964 ;
3965 017232 CKLP11:
3966 017232 032714 100000 BIT #LP.ERR,(R4) ;SEE IF DEV READY
3967 017236 001420 BEQ 11$ ;BRANCH IF RDY
3968 017240 CK11SC <CKEMSG>,< LP11 #>
017240 104404 TRAP CKEMSG!CKEMSG ;
3969 017242 040 114 120 .ASCIZ \ LP11 #\
017245 061 061 040
017250 043 000
3970 .EVEN
3971 017252 013700 011312' MOV CKDEVN,R0 ;DEV NUMBER
3972 017256 004737 020600' JSR PC,CKTOCT ;PRINT DEV NUM
3973 017262 CK11SC CKENCL,< Not ready.>
017262 104444 TRAP CKENCL!CKEMSG ;
3974 017264 040 116 157 .ASCIZ \ Not ready.\
017267 164 040 162
017272 145 141 144
017275 171 056 000
3975 .EVEN
3976 017300 004537 014034' 11$: JSR R5,CHKBIT ;CHECK HDW BITS
3977 017304 000100 LP.INE
3978 017306 $CKINT ,R4,<LP.INE>,<LP.DNE>
017306 010402 .IIF NB,R4, MOV R4,R2 ;LOAD INTERRUPT ADR
017310 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
017314 000100 .WORD LP.INE ;ENABLE BITS - LP.INE
017316 000200 .WORD LP.DNE ;INTERRUPT BITS - LP.DNE
017320 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
017322 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
3979 017324 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 88
CHECK LP11 HARDWARE
3981
3982 .SBTTL CHECK THE LP20 HARDWARE
3983
3984
3985 017326 032714 100000 CKL211: BIT #L2.ERR,(R4) ; IS THE DEVICE OK ?
3986 017332 001420 BEQ 11$ ; YES
3987 017334 CK11SC CKEMSG,< LP20 # >
017334 104404 TRAP CKEMSG!CKEMSG ;
3988 017336 040 114 120 .ASCIZ \ LP20 #\
017341 062 060 040
017344 043 000
3989 .EVEN
3990 017346 013700 011312' MOV CKDEVN,R0 ; GET DEVICE NUMBER
3991 017352 004737 020600' JSR PC,CKTOCT ; OUTPUT IT
3992 017356 CK11SC CKENCL,< Not ready.>
017356 104444 TRAP CKENCL!CKEMSG ;
3993 017360 040 116 157 .ASCIZ \ Not ready.\
017363 164 040 162
017366 145 141 144
017371 171 056 000
3994 .EVEN
3995 017374 004537 014034' 11$: JSR R5,CHKBIT ;CHECK SOME BITS
3996 017400 000100 LP.INE
3997 017402 $CKINT R4,R4,<L2.ENB>,,,<CKL220>
017402 010401 .IIF NB,R4, MOV R4,R1 ;LOAD ENABLE ADR
017404 010402 .IIF NB,R4, MOV R4,R2 ;LOAD INTERRUPT ADR
017406 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
017412 000100 .WORD L2.ENB ;ENABLE BITS - L2.ENB
017414 000000 .WORD ;INTERRUPT BITS -
017416 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
017420 017424' .IIF NB,CKL220, .WORD CKL220 ;SUBROUTINE TO GENERATE INTERRUPT
3998 017422 000207 RTS PC
3999
4000 017424 CKL220:
4001 017424 052714 000004 BIS #L2.TM,(R4)
4002 017430 012764 017452' 000004 MOV #TSTCHR,4(R4) ;ADDRESS OF TEST DATA
4003 017436 012764 177774 000006 MOV #-4,6(R4) ;BYTE COUNT
4004 017444 052714 000001 BIS #1,(R4) ;SET GO
4005 017450 000207 RTS PC ;SHOULD INTERRUPT
4006
4007 017452 011 011 011 TSTCHR: .BYTE 11,11,11,11
017455 011
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 89
CHECK THE LP20 HARDWARE
4009
4010 .SBTTL CHECK RH11 HARDWARE
4011
4012 ;CALL MOV #<VECTOR ADR>,R3
4013 ; MOV #<HDW ADR>,R4
4014 ; MOV #<HDW ADR>,R1
4015 ; JSR PC,CKRH11
4016 ;
4017 017456 CKRH11:;BIS #1,CHKRP+4+0 ;GROSS KLUDGE TO PREVENT CHKDEV FROM
4018 017456 000207 RTS PC ; FINDING WHAT LOOKS LIKE AN RP.
4019 ; (THE DEVICE REGISTERS OVERLAP)
4020
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 90
CHECK RH11 HARDWARE
4022
4023 .SBTTL CHECK TC11 HARDWARE
4024
4025 ;CALL MOV #<VECTOR ADR>,R3
4026 ; MOV #<HDW ADR>,R4
4027 ; MOV #<HDW ADR>,R1
4028 ; JSR PC,CKTC11
4029 ;
4030 017460 CKTC11:
4031 017460 004537 014034' JSR R5,CHKBIT ;TEST FOLLOWING BITS
4032 017464 000003 TC.D17!TC.D16
4033 017466 005721 TST (R1)+ ;ADVANCE TO COMMAND REGISTER
4034 017470 004537 014034' JSR R5,CHKBIT ;TEST FOLLOWING BITS
4035 017474 037560 TC..MM!TC..DI!TC.REV!TC.US7!TC.INE!TC.A17!TC.A16
4036 017476 005721 TST (R1)+ ;ADVANCE TO WORD COUNT REG
4037 017500 004537 014034' JSR R5,CHKBIT ;TEST FOLLOWING BITS
4038 017504 177777 -1
4039 017506 005721 TST (R1)+ ;ADVANCE TO BUS ADDR REG
4040 017510 004537 014034' JSR R5,CHKBIT ;TEST THE FOLLOWING BITS
4041 017514 177777 -1
4042 017516 005721 TST (R1)+ ;ADVANCE TO DATA REGISTER
4043 017520 004537 014034' JSR R5,CHKBIT ;CHECK FOLLOWING BITS
4044 017524 177777 -1
4045 017526 010401 MOV R4,R1 ;SET UP ADR FOR INT CHK
4046 017530 005721 TST (R1)+ ;ADVANCE TO COMMAND REG
4047 017532 010102 MOV R1,R2 ;SET UP FOR INT CHK
4048 017534 $CKINT ,,<TC.INE>,<TC.RDY>
017534 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
017540 000100 .WORD TC.INE ;ENABLE BITS - TC.INE
017542 000200 .WORD TC.RDY ;INTERRUPT BITS - TC.RDY
017544 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
017546 000000 .IIF B,, .WORD 0 ;NO INTERRUPT SUB,ROUTINE NEEDED
4049 017550 000207 RTS PC
4050
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 91
RX11 CHECKING
4052 .SBTTL RX11 CHECKING
4053
4054 017552 CKRX11:
4055 017552 010346 MOV R3,-(SP) ;SAVE REGISTER
4056 017554 004537 014034' JSR R5,CHKBIT ;CHECK THE FOLLOWING BITS
4057 017560 000100 .WORD 100
4058 017562 $CKINT R4,R4,<100>,,,<CKRX20>
017562 010401 .IIF NB,R4, MOV R4,R1 ;LOAD ENABLE ADR
017564 010402 .IIF NB,R4, MOV R4,R2 ;LOAD INTERRUPT ADR
017566 004537 014430' JSR R5,CKINT ;GO CHECK INTERRUPTS
017572 000100 .WORD 100 ;ENABLE BITS - 100
017574 000000 .WORD ;INTERRUPT BITS -
017576 000000 .IIF B,, .WORD 0 ;NO SPECIAL CLEAR BITS
017600 017606' .IIF NB,CKRX20, .WORD CKRX20 ;SUBROUTINE TO GENERATE INTERRUPT
4059 017602 012603 MOV (SP)+,R3
4060 017604 000207 RTS PC
4061
4062 017606 CKRX20:
4063 017606 012714 000016 MOV #RXRERR,(R4)
4064 017612 052714 000001 BIS #RXGO,(R4)
4065 017616 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 92
RX11 CHECKING
4067
4068 ;HERE ON A UNEXPECTED BUS TRAP
4069 ;
4070 017620 CKBUST: CK11SC <CKEDID!CKEPC>,<Trap from>
017620 104416 TRAP CKEDID!CKEPC!CKEMSG ;
4071 017622 124 162 141 .ASCIZ \Trap from\
017625 160 040 146
017630 162 157 155
017633 000
4072 .EVEN
4073 017634 011600 MOV (SP),R0 ;GET PC OF NEXT INST
4074 017636 162700 000002 SUB #2,R0 ;MAKE PC WITHIN BAD INST
4075 017642 004737 020564' JSR PC,CKTBOC ;PRINT THE PC WHERE WE WERE DID IN
4076 017646 CK11SC <CKENCL!CKEFAT>,< to Adr 4>,<ILLEGAL BUS TRAP>,<S..NXM>
017646 012737 000001 020470' .IIF NB,S..NXM, MOV #S..NXM,CKSPCD ;VALUE TO DISPLAY IN R0,
017654 104445 TRAP CKENCL!CKEFAT!CKEMSG ;ILLEGAL BUS TRAP
4077 017656 040 164 157 .ASCIZ \ to Adr 4\
017661 040 101 144
017664 162 040 064
017667 000
4078 .EVEN
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 93
CK11SC ROUTINE
4080 .SBTTL CK11SC ROUTINE
4081
4082 ;HERE ON ERROR IN CHK11
4083 ;
4084 ;AT HALT TIME R0 CONTAINS ADDRESS OF TRAP
4085 ;
4086 017670 CHKERR: ;here on error trap
4087 017670 013746 000004 MOV NXMVEC,-(SP) ;save NXM vector [3(47)]
4088 017674 012737 017734' 000004 MOV #2$,NXMVEC ;where to go if MM doesn't exist [3(47)]
4089 017702 042737 000002 011310' BIC #CHKMMO,CHKFLG ;clear indicator [3(47)]
4090 017710 032737 000001 177572 BIT #1,MM.SR0 ;see if memory management on [3(47)]
4091 017716 001403 BEQ 3$ ;skip if not [3(47)]
4092 017720 052737 000002 011310' BIS #CHKMMO,CHKFLG ;remember it [3(47)]
4093 017726 005037 177572 3$: CLR MM.SR0 ;turn it off [3(47)]
4094 017732 000402 BR 4$ ;continue [3(47)]
4095 017734 062706 000004 2$: ADD #4,SP ;adjust stack [3(47)]
4096 017740 012637 000004 4$: MOV (SP)+,NXMVEC ;restore previous state [3(47)]
4097 017744 010046 MOV R0,-(SP)
4098 017746 016646 000002 MOV 2(SP),-(SP) ;GET ADDRESS OF
4099 017752 162716 000002 SUB #2,(SP) ; THE TRAP INSTRUCTION.
4100 017756 032776 000010 000000 BIT #CKEDID,@(SP) ;PRINT DEVICE ID+REG MSG
4101 017764 001405 BEQ 11$ ;BRANCH IF NOT
4102 017766 052737 000001 011310' BIS #CKFERR,CHKFLG ;REMEMBER WE HAD AN ERROR
4103 017774 004737 014156' JSR PC,CKDIDT ;
4104 020000 032776 000002 000000 11$: BIT #CKEPC,@(SP) ;TYPE PC MESSAGE?
4105 020006 001423 BEQ 12$ ;NO, SEE IF SOMETHING ELSE
4106 020010 CK11SC 0,< Error detected at PC> ;
020010 104404 TRAP 0!CKEMSG ;
4107 020012 011 040 105 .ASCIZ \ Error detected at PC\
020015 162 162 157
020020 162 040 144
020023 145 164 145
020026 143 164 145
020031 144 040 141
020034 164 040 120
020037 103 000
4108 .EVEN
4109 020042 052737 000001 011310' BIS #CKFERR,CHKFLG ;REMEMBER WE HAD AN ERROR
4110 020050 011600 MOV (SP),R0 ;GET ADDRESS
4111 020052 004737 020564' JSR PC,CKTBOC ;PRINT SPACE AND ADDRESS
4112 020056 032776 000004 000000 12$: BIT #CKEMSG,@(SP) ;PRINT INLINE ERROR MESSAGE
4113 020064 001423 BEQ 15$ ;BRANCH IF NO
4114 020066 032776 000040 000000 BIT #CKENCL,@(SP) ;SEE IF NO CRLF
4115 020074 001002 BNE 13$ ;BRANCH IF NO CRLF
4116 020076 004737 020540' JSR PC,CKCRLF ;CR+LF
4117 020102 032776 000110 000000 13$: BIT #CKEDID!CKEGB,@(SP) ;IF DEV ID OR GD BD GIVE SPACES FOR FORMAT
4118 020110 001403 BEQ 14$ ;
4119 020112 CK11SC CKENCL,< >
020112 104444 TRAP CKENCL!CKEMSG ;
4120 020114 011 011 000 .ASCIZ \ \
4121 .EVEN
4122 020120 016600 000004 14$: MOV 4(SP),R0 ;GET ADDRESS OF MESSAGE
4123 020124 004737 020512' JSR PC,CKTTXT ;RETURN R0 POINTS TO LOC
4124 ; FOLLOWING MESSAGE
4125 020130 010066 000004 MOV R0,4(SP) ;PUT RETURN PC ON STACK
4126 020134 032776 000020 000000 15$: BIT #CKEMSE,@(SP) ;PRINT MSG AT END
4127 020142 001424 BEQ 18$ ;BRANCH IF NOT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 93-1
CK11SC ROUTINE
4128 020144 032776 000040 000000 BIT #CKENCL,@(SP) ;SEE IF NO CRLF
4129 020152 001002 BNE 16$ ;BRANCH IF NO CRLF
4130 020154 004737 020540' JSR PC,CKCRLF ;CR+LF
4131 020160 032776 000110 000000 16$: BIT #CKEDID!CKEGB,@(SP) ;SEE IF CKEDID OR CKEGB SET, IF SO GIVE SPACES FOR FORMAT
4132 020166 001403 BEQ 17$ ;BRANCH IF JUST TEXT
4133 020170 CK11SC CKENCL,< > ;2 TAB
020170 104444 TRAP CKENCL!CKEMSG ;
4134 020172 011 011 000 .ASCIZ \ \
4135 .EVEN
4136 020176 017600 000004 17$: MOV @4(SP),R0 ;GET ADDRESS OF THE MESSAGE
4137 020202 004737 020512' JSR PC,CKTTXT ;PRINT THE MESSAGE
4138 020206 062766 000002 000004 ADD #2,4(SP) ;MAKE RETURN PC
4139 020214 032776 000100 000000 18$: BIT #CKEGB,@(SP) ;SEE IF GOOD BAD PRINT OUT
4140 020222 001450 BEQ CHKER0 ;BRANCH IF NOT THIS
4141 020224 CK11SC 0,< Adr/Reg =>
020224 104404 TRAP 0!CKEMSG ;
4142 020226 011 011 101 .ASCIZ \ Adr/Reg =\
020231 144 162 057
020234 122 145 147
020237 040 075 000
4143 .EVEN
4144 020242 016600 000010 MOV 10(SP),R0 ;GET ADR OFF THE STACK
4145 020246 20$: ; [3(47)]
4146 020246 004737 020564' JSR PC,CKTBOC ;PRINT ADR
4147 020252 25$: ;%
4148 020252 CK11SC <CKENCL>,< GD =>
020252 104444 TRAP CKENCL!CKEMSG ;
4149 020254 040 040 107 .ASCIZ \ GD =\
020257 104 040 075
020262 000
4150 .EVEN
4151 020264 016600 000014 MOV 14(SP),R0 ;GET "GOOD"
4152 020270 004737 020564' JSR PC,CKTBOC ;PRINT IT
4153 020274 CK11SC <CKENCL>,< BD =>
020274 104444 TRAP CKENCL!CKEMSG ;
4154 020276 040 040 102 .ASCIZ \ BD =\
020301 104 040 075
020304 000
4155 .EVEN
4156 020306 016600 000012 MOV 12(SP),R0 ;PRINT BAD STUFF
4157 020312 004737 020564' JSR PC,CKTBOC ;PRINT BAD
4158 020316 CK11SC CKENCL,< XOR =>
020316 104444 TRAP CKENCL!CKEMSG ;
4159 020320 040 040 130 .ASCIZ \ XOR =\
020323 117 122 040
020326 075 000
4160 .EVEN
4161 020330 016646 000014 MOV 14(SP),-(SP) ;GET GOOD
4162 020334 074016 XOR R0,(SP) ;LEAVE ONLY QUESTIONABLE BITS
4163 020336 012600 MOV (SP)+,R0 ;PRINT THEM
4164 020340 004737 020564' JSR PC,CKTBOC ;
4165 020344 032776 000001 000000 CHKER0: BIT #CKEFAT,@(SP) ;FATAL ERROR - HALT REQUIRED?
4166 020352 001423 BEQ CHKER2 ;BRANCH IN NOT FATAL
4167 020354 052737 000001 011310' BIS #CKFERR,CHKFLG ;REMEMBER WE HAD AN ERROR
4168 020362 CK11SC 0,< Fatal Error>
020362 104404 TRAP 0!CKEMSG ;
4169 020364 011 011 106 .ASCIZ \ Fatal Error\
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 93-2
CK11SC ROUTINE
020367 141 164 141
020372 154 040 105
020375 162 162 157
020400 162 000
4170 .EVEN
4171 020402 013700 020470' MOV CKSPCD,R0 ;PUT STOPCODE IN R0, IF 0 ITS NOT A STOPCODE TO BE DISPLAYED
4172 020406 001401 BEQ CHKER3 ;IF 0
4173 020410 000000 HALT ;STOP CODE IN R0, PRESS CONTINUE
4174 ; GIVES ADR WE CAME FROM
4175 020412 012600 CHKER3: MOV (SP)+,R0 ;ADDRESS OF TRAP IN R0
4176 020414 000000 HALT ;FATAL ERROR - R0 CONTAINS ERROR ADDRESS
4177 020416 000137 003000' JMP BEGIN ;IF CONTINUE DO PROGRAM AGAIN.
4178 020422 032736 000100 CHKER2: BIT #CKEGB,@(SP)+ ;SEE IF THERE WAS A GD-BD PRINT
4179 020426 001002 BNE CHKER1 ;IF YES, CLEAR STACK
4180 020430 012600 MOV (SP)+,R0
4181 020432 000406 BR CHKER9 ;go exit [3(47)]
4182 020434 012600 CHKER1: MOV (SP)+,R0
4183 020436 012666 000004 MOV (SP)+,4(SP) ;PC
4184 020442 012666 000004 MOV (SP)+,4(SP) ;PS
4185 020446 005726 TST (SP)+ ;CLEAN THE STACK
4186 020450 CHKER9: ;here to exit CHKERR [3(47)]
4187 020450 032737 000002 011310' BIT #CHKMMO,CHKFLG ;was memory management on? [3(47)]
4188 020456 001402 BEQ 10$ ;no, skip [3(47)]
4189 020460 005237 177572 INC MM.SR0 ;yes, turn it back on [3(47)]
4190 020464 10$: ;dismiss trap [3(47)]
4191 020464 000002 RTI ;return
4192
4193 020466 000000 CHKX: .WORD 0 ;extension for address [3(47)]
4194 020470 000000 CKSPCD: .WORD 0 ;CONTAINS STOPCODE ON FATAL ERROR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 94
CK11SC ROUTINE
4196 000000 CKDA= 0 ;DEVICE ADDRESS OFFSET
4197 000002 CKDV= 2 ;DEVICE VECTOR OFFSET
4198 000004 CKPI= 4 ;DEVICE PI LEVEL OFFSET
4199 000006 CKFLG= 6 ;DEVICE FLAGS OFFSET
4200 000010 CKSPC= 10 ;SPECIAL CHAR OFFSET
4201 020472 CHKCHR: .BLKW 1 ;DEVICE ADDRESS
4202 020474 .BLKW 1 ;DEVICE VECTOR
4203 020476 .BLKW 1 ;DEVICE PI LEVEL
4204 020500 .BLKW 1 ;DEVICE FLAGS
4205 ; B0-B5 = # OF DQ11 SPECIAL CHAR
4206 ; B15 = INTERRUPTED ON SYNC
4207 020502 .BLKW 4 ;SPECIAL CHARACTERS
4208
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 95
CK11SC ROUTINE
4210
4211 020512 .CKTTS
020512 010146 MOV R1,-(SP)
020514 112001 10$: MOVB (R0)+,R1 ;GET THE NEXT CHARACTER
020516 001403 BEQ 20$ ;BRANCH IF END (NULL)
020520 004737 020650' JSR PC,CKTCHR ;TYPE CHAR
020524 000773 BR 10$ ;GET NEXT CHAR
020526 005200 20$: INC R0 ;
020530 042700 000001 BIC #B0,R0 ;POINT TO EVEN LOC
020534 012601 MOV (SP)+,R1
020536 000207 RTS PC ;RETURN TO CALLER
020540 004037 020556' CKCRLF: JSR R0,CKTSTR
020544 015 012 000 .ASCIZ <15><12>
020550 000207 RTS PC
020552 004737 020540' CKTCRL: JSR PC,CKCRLF ;FIRST TYPE A CR/LF
020556 004737 020512' CKTSTR: JSR PC,CKTTXT ;GO TYPE STRING
020562 000200 RTS R0
020564 010146 MOV R1,-(SP)
020566 012701 000040 MOV #040,R1
020572 004737 020650' JSR PC,CKTCHR
020576 000401 BR CKTOC1
020600 010146 MOV R1,-(SP)
020602 010046 MOV R0,-(SP)
020604 004737 020614' JSR PC,CKTOC2
020610 012600 MOV (SP)+,R0
020612 000750 BR CKTRR1
020614 010046 MOV R0,-(SP)
020616 006000 ROR R0
020620 006000 ROR R0
020622 006000 ROR R0
020624 042700 160000 BIC #160000,R0
020630 001402 BEQ 20$
020632 004737 020614' JSR PC,CKTOC2
020636 012601 MOV (SP)+,R1
020640 042701 177770 BIC #^C7,R1
020644 052701 000060 BIS #60,R1
020650 120127 000040 CKTCHR: CMPB R1,#40 ;DOES THIS NEED FILLER ?
020654 103015 BHIS 20$
020656 120127 000011 CMPB R1,#11 ;IS CHAR A TAB (11)
020662 001005 BNE 10$ ;BRANCH IF NOT A TAB
020664 004037 020556' JSR R0,CKTSTR ;GIVE SPACES FOR IT
020670 040 040 040 .BYTE 40,40,40,0 ;SUBSTITUTE SPACES FOR TAB
020673 000
020674 000207 RTS PC
020676 004737 020702' 10$: JSR PC,12$ ;TYPE CHAR FIRST THEN PAD IT WITH 4 NULLS
020702 004737 020710' 12$: JSR PC,20$
020706 005001 CLR R1
020710 110137 177566 20$: MOVB R1,CTOCHR ;TYPE CHAR
020714 105737 177564 30$: TSTB CTOSTS ;TEST FOR STILL BUSY
020720 100375 BPL 30$
020722 000207 RTS PC
020724 005737 177562 CKGCHR: TST CTICHR ;CLEAR BUFFER
020730 105737 177560 10$: TSTB CTISTS ;WAIT FOR CHAR
020734 100375 BPL 10$ ;
020736 113701 177562 MOVB CTICHR,R1 ;
020742 042701 177600 BIC #^C177,R1 ;KEEP ONLY INTERESTING BITS
020746 000740 BR CKTCHR ;TYPE IT BACK TO HIM
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 96
CK11SC ROUTINE
4213 020750 115 145 155 CKMG01: .ASCIZ \Mem Err\
020753 040 105 162
020756 162 000
4214 020760 102 151 164 CKMG02: .ASCIZ \Bit did not Clear\
020763 040 144 151
020766 144 040 156
020771 157 164 040
020774 103 154 145
020777 141 162 000
4215 021002 102 151 164 CKMG03: .ASCIZ \Bit did not set\
021005 040 144 151
021010 144 040 156
021013 157 164 040
021016 163 145 164
021021 000
4216 021022 111 156 164 CKMG04: .ASCIZ \Interrupt did not Occur\
021025 145 162 162
021030 165 160 164
021033 040 144 151
021036 144 040 156
021041 157 164 040
021044 117 143 143
021047 165 162 000
4217 021052 111 156 164 CKMG05: .ASCIZ \Interrupted to Wrong Vector\
021055 145 162 162
021060 165 160 164
021063 145 144 040
021066 164 157 040
021071 127 162 157
021074 156 147 040
021077 126 145 143
021102 164 157 162
021105 000
4218 021106 156 157 164 CKMG06: .ASCIZ \not found\
021111 040 146 157
021114 165 156 144
021117 000
4219 021120 151 156 164 CKMG07: .ASCIZ \interrupted when not enabled\
021123 145 162 162
021126 165 160 164
021131 145 144 040
021134 167 150 145
021137 156 040 156
021142 157 164 040
021145 145 156 141
021150 142 154 145
021153 144 000
4220
4221 .EVEN
4222 021156 CKBLK: .BLKB 400 ;Buffer for DH11 and DZ11 tests
4223 021156' CKDZTR=CKBLK ;address of receive expected character table for DZ11
4224 021176' CKDZTX=CKDZTR+20 ;address of next char to transmit
4225 021216' CKDZTE=CKDZTX+20 ;address of error table
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 97
CK11SC ROUTINE
4227
4228
4229 .LIST ME
4230
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 98
END STATEMENT
4232 .SBTTL END STATEMENT
4233 001170' .END SAVE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 98-1
SYMBOL TABLE
ACFLAG 000057R B8 = 000400 CKALP$= 012302R CKINTG 015044R CKTOC1 020602R
AC.ENA= 000200 B9 = 001000 CKAL2$= 012302R CKINTS 011536R CKTOC2 020614R
ALLRXF 005054R CDD = 000020 CKARD$= 012302R CKINT1 014450R CKTRR0 020610R
ALLRX1 005064R CD.CHK= 040000 CKARH$= 012302R CKINT2 014454R CKTRR1 020534R
ALTDXF 000062R CD.DAT= 177162 CKARX$= 012302R CKINT3 014462R CKTSTR 020556R
ATCBLK 001102R CD.DTE= 004000 CKATC$= 012302R CKINT6 014742R CKTTXT 020512R
BC.HDS= ****** GX CD.DTL= 002000 CKATE$= 012302R CKINT7 015026R CKZZZX= 000015
BEGIN = 003000R CD.EOF= 020000 CKBLK 021156R CKKL$$= 016406R CK.CAL 011474R
BITTBL= ****** GX CD.ERR= 100000 CKBUST 017620R CKKL11 016406R CLKENB= 000100
BIT0 = 000001 CD.GO = 000001 CKCADD= 000034 CKLP$$= 017232R CLKLVL= 000006
BIT1 = 000002 CD.HEM= 000004 CKCDEV 010566R CKLP11 017232R CLKVEC= 000100
BIT10 = 002000 CD.INE= 000100 CKCD$$= 017122R CKL2$$= 017326R CLKWRD= 177546
BIT11 = 004000 CD.LVL= 000006 CKCD11 017122R CKL211 017326R CMDCLN= 000024
BIT12 = 010000 CD.NXM= 001000 CKCD20 017204R CKL220 017424R CMDCLR 000040R
BIT13 = 020000 CD.OFL= 010000 CKCEND 011306R CKMG01 020750R CMDONE 001574R
BIT14 = 040000 CD.ONL= 000010 CKCLK9 012774R CKMG02 020760R CNUPE = 000002
BIT15 = 100000 CD.PAK= 000002 CKCOR 012100R CKMG03 021002R CO.INE= 000100
BIT2 = 000004 CD.PWR= 000400 CKCRLF 020540R CKMG04 021022R CO..MM= 000004
BIT3 = 000010 CD.RDY= 000200 CKDA = 000000 CKMG05 021052R CS.EXP= 177670
BIT4 = 000020 CD.STS= 177160 CKDEVN 011312R CKMG06 021106R CTICHR= 177562
BIT5 = 000040 CD.VEC= 000230 CKDHPL 016302R CKMG07 021120R CTILVL= 000004
BIT6 = 000100 CD.XAD= 000060 CKDH$$= 015256R CKMPAR 012304R CTISTS= 177560
BIT7 = 000200 CD0DAT= 177162 CKDH1A 015454R CKNCD1 011334R CTIVEC= 000060
BIT8 = 000400 CD0STS= 177160 CKDH1B 015514R CKNCI1 011320R CTOCHR= 177566
BIT9 = 001000 CHKBIT 014034R CKDH1C 016026R CKNCO1 011326R CTOLVL= 000004
BPARER= 000020 CHKBRD 011756R CKDH1D 016270R CKNDH1 011341R CTOSTS= 177564
BP.CLN= 074000 CHKCHR 020472R CKDH1E 015564R CKNDL1 011377R CTOVEC= 000064
BP.CSP= 000170 CHKCLK 012550R CKDH1F 016326R CKNDM1 011406R CTYBFL= 000120
BP.ERR= 100000 CHKCOR 012050R CKDH11 015256R CKNKL1 011346R CTYBUF 000230R
BP.LD0= 000002 CHKDEV 013164R CKDIDT 014156R CKNKW1 011424R CTYLUN= 000001
BP.LD1= 000004 CHKDV1 013432R CKDL$$= 016342R CKNLP1 011433R CTYPTR= ****** GX
BP.RP4= 000200 CHKD01 013772R CKDL11 016342R CKNL21 011440R CYCLS = 000002
BP.SWR= 000001 CHKD02 013736R CKDMCS 016552R CKNMM1 011445R DATE = 000004
BP.UNT= 003400 CHKERR 017670R CKDM$$= 016456R CKNRD1 011361R DCOMST= 000001
BR0 = 000000 CHKER0 020344R CKDM11 016456R CKNRH1 011455R DEFLAG 000061R
BR1 = 000040 CHKER1 020434R CKDNAM 011314R CKNRX1 011467R DEP = 010000
BR2 = 000100 CHKER2 020422R CKDONE 003000R CKNTC1 011462R DEVCHK 001656R
BR3 = 000140 CHKER3 020412R CKDV = 000002 CKNTE1 011416R DEVMNT 002002R
BR4 = 000200 CHKER9 020450R CKDZTE= 021216R CKPI = 000004 DEVNAM 000042R
BR5 = 000240 CHKFLD 015254R CKDZTR= 021156R CKPOPJ 012302R DEVOK 001734R
BR6 = 000300 CHKFLG 011310R CKDZTX= 021176R CKRD$$= 016342R DEVUNT 000044R
BR7 = 000340 CHKFLV 015252R CKEDID= 000010 CKRD11 016342R DEX = 000400
B.DM11= 170500 CHKINL 014312R CKEFAT= 000001 CKRH$$= 017456R DEXDON= 000004
B0 = 000001 CHKINT 015064R CKEGB = 000100 CKRH11 017456R DEXWD1= 174406
B1 = 000002 CHKITL= 000012 CKEMSE= 000020 CKRX$$= 017552R DEXWD2= 174404
B10 = 002000 CHKMMO= 000002 CKEMSG= 000004 CKRX11 017552R DEXWD3= 174402
B11 = 004000 CHKTIM 012772R CKENCL= 000040 CKRX20 017606R DFUNC = 000200
B12 = 010000 CHKX 020466R CKEPC = 000002 CKSPC = 000010 DF.DMG= 000004
B13 = 020000 CHK.11 011476RG CKEWRN= 000200 CKSPCD 020470R DF.DMN= 000007
B14 = 040000 CHK.96 013140RG CKFERR= 000001 CKTBOC 020564R DF.DOR= 000001
B15 = 100000 CHNPNT= 000001 CKFIDT= 100000 CKTCHR 020650R DF.EHG= 000010
B2 = 000004 CI.INE= 000100 CKFLAG 015062R CKTCRL 020552R DF.EHM= 000011
B3 = 000010 CKACD$= 012302R CKFLG = 000006 CKTC$$= 017460R DF.EMG= 000005
B4 = 000020 CKADH$= 012302R CKGCHR 020724R CKTC11 017460R DF.EMN= 000006
B5 = 000040 CKADL$= 012302R CKINT 014430R CKTE$$= 016672R DF.KLR= 000012
B6 = 000100 CKADM$= 012302R CKINTE 015036R CKTE11 016672R DF.KLW= 000013
B7 = 000200 CKAKL$= 012302R CKINTF 015052R CKTOCT 020600R DF.KLX= 000014
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 98-2
SYMBOL TABLE
DF.OFF= 000002 DL.BRK= 000001 DRVAD2= 000014 ERR11C= 000001 IE.ABO= 177761
DF.ON = 000003 DL.CAR= 010000 DRVBOT= 000004 ERR11S= 000002 IE.ACT= 177771
DF.PDP= 000016 DL.CTS= 020000 DRVBTP= 000016 EV.PF = ****** GX IE.ADP= 177636
DF.PEX= 000015 DL.DIE= 000040 DRVMSZ= 000010 EXFLAG 000050R IE.ALN= 177736
DGUTS = 000000 DL.DSC= 100000 DRVNAM= 000000 EXIT 005732R IE.AST= 177660
DHBASE= 160020 DL.DTR= 000002 DRVSET= 000002 EXITA 001526R IE.BAD= 177777
DHDATA 016336R DL.ERR= 100000 DRVSIZ= 000020 EXIT00 005720R IE.BBE= 177710
DHEXPA= 160020 DL.LVL= 000004 DRVTAB 007042R EX.AC1= 000001 IE.BDI= 177714
DHEXPZ= 000020 DL.OVR= 040000 DRVTBZ= 000060 EX.ENA= 000200 IE.BDR= 177716
DHRFER= 020000 DL.RGO= 004000 DRVWRT= 000006 EX.FCO= 000004 IE.BDV= 177711
DHROVR= 040000 DL.RIE= 000100 DR.DTE= 000011 E.FLOG= 000004 IE.BHD= 177700
DHSTAB 001124R DL.RNG= 040000 DSEND = 000004 E.FQIO= 000001 IE.BLK= 177754
DHTBL = ****** GX DL.ROK= 000200 DSKADR 000004R E.FTMO= 000002 IE.BNM= 177712
DHXMII 016340R DL.RTS= 000004 DSKLUN= 000002 FIDBLK 001076R IE.BTF= 177675
DH.AEE= 100000 DL.XIE= 000100 DSKSIZ 000010R FILCHK 002252R IE.BTP= 177725
DH.BAR= 000012 DL.XOK= 000200 DS04 = 004000 FILDMO 002332R IE.BVR= 177701
DH.BCR= 000010 DL..FE= 020000 DS05 = 002000 FILDMX 002464R IE.BYT= 177755
DH.BRK= 000014 DL..MM= 000004 DS06 = 001000 FILDM1 002350R IE.CKP= 177766
DH.CAR= 000006 DL..PE= 010000 DTCL11= 002000 FILDM2 002414R IE.CKS= 177742
DH.CL5= 000000 DL..RC= 000377 DTECHK 003752R FILDM3 002436R IE.CLO= 177732
DH.CL6= 000001 DL..RE= 000001 DTECMD= 000451 FILDM4 002454R IE.CON= 177752
DH.CL7= 000002 DL..XC= 000377 DTEFLG= 000444 FILFND 002060R IE.DAA= 177770
DH.CL8= 000003 DL.2RC= 002000 DTEF11= 000450 FILMNT 006732R IE.DAO= 177763
DH.CNX= 000400 DL.2XM= 000010 DTEMSG 004266R FILOK 002312R IE.DFU= 177750
DH.DOV= 040000 DMBASE= 170500 DTEMTD= 000455 FILQIO 006746R IE.DNA= 177771
DH.LPR= 000004 DMEXPA= 170500 DTEMTI= 000456 FILSET 002322R IE.DNR= 177775
DH.LVL= 000005 DMFLAG 000052R DTEXPA= 174400 FINDEV 006654R IE.DUN= 177767
DH.NRC= 000002 DMOERR 002426R DTEXPZ= 000040 FLOATD= 160000 IE.DUP= 177707
DH.NXM= 002000 DMTBL = ****** GX DTINOF= 000010 FLOATV= 000300 IE.EBX= 177776
DH.PEN= 000020 DMTBLK 001116R DTINON= 000040 FNDACP 006712R IE.EOF= 177766
DH.RIE= 000100 DM.ALI= 000017 DTPMSG 004312R FORPRO= 000020 IE.EOT= 177702
DH.SIE= 010000 DM.BSY= 000020 DTPMS1 004330R FTASRT= 000001 IE.EOV= 177765
DH.SSR= 000016 DM.CAR= 000100 DTRSMD= 000010 FTECHO= 000000 IE.EXP= 177676
DH.TIE= 020000 DM.CTS= 000040 DTSTAT= 000034 FTETR = 000000 IE.FEX= 177717
DH.VDP= 100000 DM.DNE= 000200 DTVECA= 000774 FTGLOM= 000000 IE.FHE= 177705
DH..FE= 020000 DM.DTR= 000002 DT11DB= 004000 FT.CHK= 000001 IE.FOP= 177713
DH..HD= 040000 DM.ENB= 000040 DUPE = 000020 FT.DDT= 000000 IE.HFU= 177744
DH..MC= 004000 DM.IEN= 000100 DURE = 000004 FT.D75= 000000 IE.HWR= 177772
DH..MM= 001000 DM.INI= 002000 DV.LOG= ****** GX FT.HLP= 000001 IE.IDU= 177644
DH..OP= 000040 DM.LE = 000001 DXWRD1= 002000 GETNAM 005764R IE.IEF= 177637
DH..PE= 010000 DM.LVL= 000004 D.CCTY= ****** GX GETNB 005742R IE.IFC= 177776
DH..RI= 000200 DM.RNG= 000200 D.CKLN= ****** GX GETNUM 006030R IE.IFU= 177747
DH..SI= 040000 DM.RTS= 000004 D1011 = 000040 GTIMBF 000020R IE.ILL= 177726
DH..TI= 100000 DM.SCN= 004000 EBSEL = 000100 G.TICP= 000016 IE.ILU= 177640
DH.2SB= 000004 DM.SR = 000020 EBUSPC= 000020 G.TICT= 000014 IE.INS= 177776
DIAG1 = 174430 DM.ST = 000010 EBUSPS= 000004 G.TIDA= 000004 IE.IPR= 177641
DIAG2 = 174432 DM.STP= 000400 EDONES= 040000 G.TIHR= 000006 IE.ISQ= 177703
DIAG3 = 174436 DM..MM= 001000 EF.PR1= ****** GX G.TIMI= 000010 IE.ITI= 177643
DIKL10= 000010 DNSERR 001642R EF.PR2= ****** GX G.TIMO= 000002 IE.ITS= 177770
DLDADR= 175610 DON10C= 040000 EF.QIO= 000001 G.TISC= 000012 IE.LCK= 177745
DLDSIZ= 000010 DON10S= 100000 EF.RKP= ****** GX G.TIYR= 000000 IE.LNL= 177646
DLRBUF= 000002 DON11C= 000100 EF.TMO= 000002 HBCERR 004764R IE.MBK= 177721
DLRSTS= 000000 DON11S= 000200 EPTR = 000000 HIBYTE= 177400 IE.MOD= 177753
DLTBL = ****** GX DPS4 = 040000 ERRINT= 000004 HOMBUF 000064R IE.NBF= 177731
DLXBUF= 000006 DRESET= 000100 ERRMSG 001447R 002 HOMFE0= 000061 IE.NBK= 177727
DLXSTS= 000004 DRVADR 000002R ERR10C= 010000 HOMFE1= 000062 IE.NFI= 177704
DLYCNT= 174400 DRVAD1= 000012 ERR10S= 020000 HOMNAM= 000000 IE.NLN= 177733
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 98-3
SYMBOL TABLE
IE.NNC= 177674 IO.ENA= 006000 IO.STP= 016400 L2.BCM= 007777 MNTSY1 004406R
IE.NOD= 177751 IO.EOF= 003000 IO.SYN= 003040 L2.DB = 000377 MNTSY2 004476R
IE.NSF= 177746 IO.ESA= 002500 IO.TRM= 002410 L2.DEL= 002000 MODTBL 001532R
IE.OFL= 177677 IO.EXT= 011400 IO.UNL= 000042 L2.DH = 002000 MODTLN= 000006
IE.ONP= 177773 IO.FDX= 003020 IO.WAT= 013400 L2.DL = 000010 MOFLAG 000051R
IE.OVR= 177756 IO.FNA= 004400 IO.WLB= 000400 L2.DNR= 000100 MONTAB 006516R
IE.PRI= 177760 IO.HDX= 003010 IO.WLS= 000410 L2.DON= 000200 MOUNTD 002050R
IE.RAC= 177724 IO.HIS= 015000 IO.WLV= 000500 L2.DR = 010000 MPE11 = 001000
IE.RAT= 177723 IO.INL= 002400 IO.WVB= 011000 L2.DTE= 000002 MP.ENB= 000001
IE.RBG= 177730 IO.ITI= 017000 IO.XMT= 014400 L2.ENB= 000100 MP.ERR= 100000
IE.RCN= 177722 IO.KIL= 000012 IO.XNA= 014410 L2.ERE= 001000 MP.LVL= 000007
IE.RER= 177740 IO.LED= 012000 IQ.Q = 000002 L2.ERR= 100000 MP.REG= 172100
IE.RNM= 177715 IO.LOV= 001010 IQ.X = 000001 L2.GER= 000001 MP.VEC= 000114
IE.RSU= 177757 IO.LTK= 000050 IS.BV = 000005 L2.GO = 000001 MP.WWP= 000004
IE.SDP= 177635 IO.MCS= 013400 IS.CLR= 000000 L2.INI= 000400 NONDEV 014000R
IE.SNC= 177735 IO.MDA= 016000 IS.CR = 006401 L2.INT= 004000 NOTRXF 005012R
IE.SPC= 177772 IO.MDI= 014400 IS.ESC= 015401 L2.LDP= 010000 NULSTP= 000040
IE.SQC= 177734 IO.MDO= 015400 IS.PND= 000000 L2.LPE= 000040 NUPE = 000002
IE.SRE= 177762 IO.MLO= 006000 IS.RDD= 000002 L2.LVL= 000004 NXMVEC= 000004
IE.STK= 177706 IO.MOD= 003000 IS.SET= 000002 L2.MPE= 000020 OB0 = 000001
IE.ULN= 177773 IO.MSO= 005000 IS.SUC= 000001 L2.MST= 000004 OB1 = 000002
IE.UPN= 177777 IO.RAL= 001010 KBS0 = ****** GX L2.ONL= 004000 OB10 = 000400
IE.VER= 177774 IO.RAT= 013000 KBS1 = ****** GX L2.OVF= 004000 OB11 = 001000
IE.WAC= 177743 IO.RBC= 003000 KLANXM 005576R L2.PCM= 007777 OB12 = 002000
IE.WAT= 177741 IO.RCI= 015000 KLAREM 005460R L2.PEN= 000002 OB13 = 004000
IE.WER= 177737 IO.RCV= 015000 KLAUSR 005450R L2.PI = 000400 OB14 = 010000
IE.WLK= 177764 IO.RDB= 001200 KLINIT 001120R L2.PNR= 020000 OB15 = 020000
IE.2DV= 177720 IO.RDN= 000022 KLNPTR= ****** GX L2.POL= 000200 OB16 = 040000
IFLOP = 100000 IO.REL= 013400 KLPWRF= 000010 L2.PZE= 040000 OB17 = 100000
INTROF= 000010 IO.RHD= 001010 KL.CFM= ****** GX L2.RDB= 007777 OB2 = 000004
INTRON= 000040 IO.RLB= 001000 KL.DEF= ****** GX L2.RPB= 010000 OB3 = 000010
INTSON= 000001 IO.RLV= 001100 KL.LCA= ****** GX L2.RPE= 000010 OB4 = 000020
INT10S= 000400 IO.RNA= 005400 KL.LRM= ****** GX L2.SPR= 040000 OB5 = 000040
INT11C= 002000 IO.RNC= 001004 KL.LVB= ****** GX L2.TB0= 000400 OB6 = 000100
INT11S= 004000 IO.RNE= 001020 KL.LVL= 000004 L2.TB1= 001000 OB7 = 000200
IO.ACE= 007400 IO.RTC= 003400 KL.VBN= ****** GX L2.TB2= 002000 PASS = 000002
IO.ACR= 006400 IO.RTI= 016400 KPAR0 = 172340 L2.TM = 000004 PDP11 = 000040
IO.ACW= 007000 IO.RTK= 000060 KW.INE= 000100 L2.TRN= 001000 PERCLR= 001000
IO.ADS= 014000 IO.RVB= 010400 KW.TIC= 000200 L2.UCD= 020000 PHYLIM 011316R
IO.APC= 014000 IO.RWD= 002400 K.LRBA= ****** GX L2.VD = 100000 PHYS = 100000
IO.APV= 014010 IO.RWU= 002540 LKS = 177546 L2.VEC= 000754 PIDENT= 000000
IO.ATT= 001400 IO.R1C= 002400 LOAD11= 000004 L20ADR= 000004 PRI7 = 000340
IO.CCI= 014000 IO.SAO= 004000 LOGBUF 001070R L20BCT= 000006 PRNRUN 005564R
IO.CCT= 002460 IO.SCS= 013000 LOWCOR 000064R L20BUF= 000014 PROPNT= 000021
IO.CLN= 003400 IO.SDI= 013000 LP.DAT= 177516 L20CHK= 000017 PROTBL= ****** GX
IO.CON= 015400 IO.SDO= 012400 LP.DNE= 000200 L20COL= 000015 PRTOFF= 004000
IO.CRC= 001020 IO.SEC= 002520 LP.ERR= 100000 L20CRA= 000000 PR0 = 000000
IO.CRE= 012000 IO.SEM= 002440 LP.INE= 000100 L20CRB= 000002 PR1 = 000040
IO.CTI= 015400 IO.SHT= 002410 LP.LVL= 000004 L20PCT= 000010 PR2 = 000100
IO.CTL= 016400 IO.SLO= 005400 LP.STS= 177514 L20PDA= 000016 PR3 = 000140
IO.DAC= 010000 IO.SMO= 002560 LP.VEC= 000200 L20RAM= 000012 PR4 = 000200
IO.DCI= 014400 IO.SNM= 002450 LP0DAT= 177516 L20STS= 175400 PR5 = 000240
IO.DCT= 002470 IO.SPB= 002420 LP0STS= 177514 L21STS= 175420 PR6 = 000300
IO.DEL= 012400 IO.SPF= 002440 LP1DAT= 177522 MEMSIZ 000014R PR7 = 000340
IO.DET= 002000 IO.SSO= 004400 LP1STS= 177520 MM.SR0= 177572 PS = 177776
IO.DIS= 016000 IO.SST= 002430 L2.A16= 000020 MNTBLK 001110R PSWW1 = 000005
IO.DTI= 016000 IO.STC= 002500 L2.A17= 000040 MNTSY 004364R PSWW10= 000014
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 98-4
SYMBOL TABLE
PSWW11= 000015 RPFM22= 010000 SETDL 003162R TCUNIT= 003400 TE.DG1= 000030
PSWW12= 000016 RPFUNC= 000076 SETDM 003320R TCWC = 177344 TE.DG2= 000032
PSWW13= 000017 RPGO = 000001 SETFIL 002060R TCWERR 010562R TE.DG3= 000036
PSWW2 = 000006 RPMCPE= 020000 SETRXF 004774R TCWNXT 010522R TE.DYC= 000000
PSWW3 = 000007 RPMOL = 010000 SF.FX = ****** GX TCWRIT= 000014 TE.EAD= 000022
PSWW4 = 000010 RPNOOP= 000000 SOMRXF 005106R TCWRT 010370R TE.EBC= 000016
PSWW5 = 000011 RPOF = 176732 SPSAVE 000000RG TC.A16= 000020 TE.EDT= 000026
PSWW6 = 000012 RPPGM = 001000 STAT = 174434 TC.A17= 000040 TE.LVL= 000006
PSWW7 = 000013 RPPRST= 000020 STATUS= 000022 TC.BAR= 177346 TE.NNN= 000004
PS.PUS= 030000 RPRDY = 000200 STKLEN= 000200 TC.CLK= 000100 TE.STW= 000034
PS.REG= 004000 RPREAD= 000070 STSW0 = ****** GX TC.CMD= 177342 TE.VEC= 000774
PS.USR= 140000 RPSET 007614R STSW1 = ****** GX TC.DAT= 177350 TE.XAD= 000020
PUDADR 000040R RPTRE = 040000 SWR = 177570 TC.DT0= 000020 TE.XA1= 000010
PUDIDX 000045R RPUNIT= 000007 SWSLLT= 100000 TC.DT1= 000010 TE.XA2= 000012
PULSE = 000020 RPWC = 176702 SXBTHM= 105755 TC.DT2= 000004 TE.XBC= 000014
QEFLAG 000056R RPWNXT 010100R SYMNTD 004516R TC.D16= 000001 TE.XDT= 000024
QIOSTS 001064R RPWRIT= 000060 SYMNT1 004526R TC.D17= 000002 TE.XW1= 000006
QSIZE = 000023 RPWRT 010020R SYNERR 001562R TC.ERR= 100000 TE.XW2= 000004
Q.DA = ****** GX RP4CHK 003530R SYSAVE 002476R TC.ILO= 010000 TE.XW3= 000002
Q.SZ = ****** GX RP6CHK 003574R SYSAV1 002530R TC.INE= 000100 TOBM = 000004
RADIX 000016R RQSKLR 005112R SYSMSG 004350R TC.LVL= 000006 TOD = 000003
RAMIS0= 010000 RQSTSK 005606R SYSTRT 004222R TC.MMT= 000040 TOIP = 000002
RD.LVL= 000004 RXBAD1 007170R S.DI = ****** GX TC.MTE= 020000 TOIT = 000001
REDHM1 004632R RXBAD2 007170R S.FW = ****** GX TC.NXM= 000400 TO10 = 000200
REDHOM 004600R RXBBLK 007172R S..AMC= 000000 TC.PAR= 040000 TO10AD= 174420
REDSY 003346R RXBBLX 007332R S..BDT= 000011 TC.RDA= 000006 TO10BC= 174414
RESTOR 002734RG RXBMSZ 007364R S..CHK= 000012 TC.RDY= 000200 TO10BM= 000001
RFMAD0= 100000 RXBNXT 007352R S..CNK= 000003 TC.REV= 004000 TO10DB= 000400
RFMAD1= 040000 RXBNX1 007356R S..CTY= 000005 TC.RMT= 000002 TO10DN= 100000
RFMAD2= 020000 RXBOOT 007132R S..DCP= 000013 TC.SAT= 000000 TO10DT= 174424
RFMAD3= 010000 RXCS = 177170 S..DL1= 000002 TC.SST= 000010 TO10ER= 020000
RHFLAG 000053R RXDB = 177172 S..DTE= 000002 TC.STS= 177340 TO11 = 000100
RHMERR 005030R RXDONE= 000040 S..ILS= 000004 TC.UPS= 000200 TO11AD= 174422
RH.LVL= 000000 RXEMPT= 000002 S..KW1= 000007 TC.US0= 000000 TO11BC= 174416
RM = 000010 RXERR = 100000 S..MEM= 000006 TC.US1= 000400 TO11BM= 020000
RNFLAG 000054R RXFILL= 000000 S..NCN= 000010 TC.US2= 001000 TO11DB= 004000
RNRERR 005042R RXFUNC= 000016 S..NXM= 000001 TC.US3= 001400 TO11DN= 000200
RPATA = 100000 RXGO = 000001 TCBA = 177346 TC.US4= 002000 TO11DT= 174426
RPBA = 176704 RXINIT= 040000 TCBAD1= 010166R TC.US5= 002400 TO11ER= 000002
RPBAD1= 007702R RXREAD= 000006 TCBAD2= 010166R TC.US6= 003000 TRPVEC= 000034
RPBAD2= 007710R RXRERR= 000016 TCBMSZ 010332R TC.US7= 003400 TSTCHR 017452R
RPBMSZ 007766R RXSET 007122R TCBNXT 010304R TC.VEC= 000214 TS.CET= 000001
RPBNXT 007726R RXSETX 007126R TCBOOT 010162R TC.WCR= 177344 TS.DEI= 000010
RPBOOT 007664R RXTREQ= 000200 TCCM = 177342 TC.WRA= 000016 TS.DEP= 010000
RPCS1 = 176700 RXUNIT= 000020 TCDT = 177350 TC.WTM= 000012 TS.EBM= 020000
RPCS2 = 176710 RXWBLK 007454R TCENDZ= 100000 TC..BM= 002000 TS.EEE= 000040
RPDA = 176706 RXWNXT 007434R TCERR = 100000 TC..DI= 010000 TS.EET= 000002
RPDC = 176734 RXWRIT= 000004 TCFUNC= 000016 TC..DM= 001000 TS.EEX= 000400
RPDPR = 000400 RXWRT 007402R TCGO = 000001 TC..EZ= 100000 TS.EIS= 002000
RPDS = 176712 RX.LVL= 000006 TCRDY = 000200 TC..MM= 020000 TS.ENT= 000100
RPDT = 176726 R$$11M= 000001 TCREAD= 000004 TC..RD= 000004 TS.EPE= 000020
RPDT04= 000020 R$$20F= 000001 TCREV = 004000 TC..SE= 004000 TS.ETD= 000200
RPDT06= 000022 SAVE 001170RG TCRNUM= 000002 TC..WR= 000014 TS.IEN= 000001
RPDVA = 004000 SAVLMT 001164RG TCSATM= 000000 TENAD1= 174410 TS.IFB= 100000
RPECCI= 004000 SCD = 000040 TCSET 010156R TENAD2= 174412 TS.MPE= 001000
RPERR = 040000 SETCTY 003032R TCST = 177340 TE.BAS= 174400 TS.PEX= 100000
RPFLAG 000055R SETDH 003262R TCSTOP= 000010 TE.BNX= 000040 TS.POF= 004000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1113 04-AUG-81 12:36 PAGE 98-5
SYMBOL TABLE
TS.RES= 004000 TYPSTR 006350R $DIV = ****** GX .INICL= 070000 .PRDTE= ****** GX
TS.RM = 000010 TYPTAB 006140R $DSW = ****** GX .IRLTC= 014000 .PRSTA= ****** GX
TS.RST= 000100 TYPTXT 006264R $UNIT = ****** GX .KLIWD= ****** GX .PUDBA= ****** GX
TS.TBM= 000001 TYPWRN 006344R $$ = 000037 .KLNMD= ****** GX .PUDEA= ****** GX
TS.XDN= 000004 UNASG1= 000032 $$MSG = 000000 .KLNSW= ****** GX .RCRM1= 147000
TS.XEC= 010000 UNASG2= 000033 $$$ = 001414R 002 .LCRDL= 052000 .RCRM2= 146000
TS.XEE= 004000 UNASG3= 000034 $$$ADR= 007102R .LCRDR= 051000 .RCRM3= 145000
TS.XER= 020000 UNASG4= 000035 $$$ARG= 000005 .LCRM1= 057000 .RCRM4= 144000
TS.XNT= 100000 UNASG5= 000036 $$$OST= 000020 .LCRM2= 056000 .RCSPF= 141000
TS.XTS= 040000 UNASG6= 000037 $$$T1 = 000013 .LCRM3= 055000 .RDJ14= 134000
TS.ZST= 040000 U.ACP = ****** GX $$$T2 = 000001 .LCRM4= 054000 .RDJ71= 135000
TTYEND= ****** GX U.DACP= ****** GX .BRCLK= 005000 .LCRM5= 053000 .RDMAB= 133000
TTYEXP= ****** GX U.DN = ****** GX .BTPRM= ****** GX .LDAR = 077000 .RPADR= ****** GX
TT.CRW= ****** GX U.LBH = ****** GX .CECLK= 004000 .LDBRL= 043000 .SECLK= 003000
TT.CTY= ****** GX U.LBN = ****** GX .CLRMR= 006000 .LDBRR= 042000 .SERFG= ****** GX
TT.OUT= ****** GX U.RP = ****** GX .CLRUN= 010000 .LDCK1= 046000 .SETMR= 007000
TT.RIP= ****** GX U.SZ = ****** GX .COMEF= ****** GX .LDCK2= 047000 .SETRN= 011000
TYPBUF 000064R U.UN = ****** GX .CONBT= 012000 .LDDIS= 045000 .SSCLK= 002000
TYPCR 006260R U.VA = ****** GX .CPUSN= ****** GX .LDRJD= 064000 .STDTA= ****** GX
TYPDAT 006360R VRCHK1= 000067 .CSHRG= 164000 .LDRJV= 063000 .STDTZ= ****** GX
TYPDEC 006476R VRS = 000022 .DATE3= ****** GX .LDRM1= 060000 .STPCL= 000000
TYPDEV 006302R WBFLAG 000046R .DQPBA= ****** GX .LDRM2= 061000 .STRCL= 001000
TYPDON 006166R WEFLAG 000060R .DRLTC= 015000 .LDRM3= 062000 .VERNO= ****** GX
TYPERR 006336R WEP = 000010 .DSACF= 066000 .LDSEL= 044000 .WRMBX= 071000
TYPMAX= 000013 WRNMSG 001472R 002 .DSIOJ= 065000 .MEMRS= 076000 ..DTP2= ****** GX
TYPMSG 006074R WRTERR 010146R .EIOJA= 067000 .NOERR= ****** GX ..ENB0= ****** GX
TYPMS1 006114R WSFLAG 000047R .FEMOD= ****** GX .PCAB1= 150000 ..FSTD= ****** GX
TYPNUM 006576R WTSAVE 002670R .FESTB= ****** GX .PCAB2= 151000 ..STIN= ****** GX
TYPSAV 006252R ZSTOP = 040000 .GFNR = 102000 .PCAB3= 152000 ...GBL= 000000
TYPSDV 006276R $BTMSK= ****** GX .HRDWR= ****** GX .PCAB4= 153000
. ABS. 000000 000
021556 001
TEXT 001514 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 15048 WORDS ( 59 PAGES)
DYNAMIC MEMORY: 16246 WORDS ( 62 PAGES)
ELAPSED TIME: 00:02:53
[52,10]SAVE,[52,20]SAVE/-SP/CR=[52,30]RSXDC,SAVE
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ACFLAG 000057 R #23-373 26-663 *26-686
AC.ENA = 000200 #21-244 26-638
ALLRXF 005054 R 37-1331 #37-1366
ALLRX1 005064 R 37-1360 #37-1368
ALTDXF 000062 R #23-377 *30-932 *36-1249 36-1267 *36-1280
ATCBLK 001102 R #24-408 26-634
BC.HDS = ****** GX 38-1461
BEGIN = 003000 R 55-2733 93-4177
BITTBL = ****** GX 31-962
BIT0 = 000001 #21-159 21-198 21-219 21-237 22-263 22-278 22-283 22-313 24-437
24-439 24-440 24-441 24-442 24-443 24-444 24-445 24-446 24-447
BIT1 = 000002 #21-159 21-201 21-214 22-257 22-258 22-259 22-260 22-261 22-262
22-273 22-274 22-275 22-276 22-277 22-283 22-307 22-308 22-309
22-310 22-311 22-312 24-437 24-438 24-439 24-440 24-441 24-442
24-443 24-444 24-445 24-446 24-447
BIT10 = 002000 #21-159 21-210 22-305 22-326 24-434 24-435 24-436 24-437 24-438
24-439 24-440 24-441 24-442 24-443 24-444 24-445 24-446 24-447
24-448 24-449
BIT11 = 004000 #21-159 21-209 21-225 22-271 22-295 22-304 22-325
BIT12 = 010000 #21-159 21-209 21-224 22-287 22-294
BIT13 = 020000 #21-159 21-209 21-224 22-270
BIT14 = 040000 #21-159 21-209 21-223 22-253 22-269 22-286
BIT15 = 100000 #21-159 21-208 21-223 22-252 22-285 22-301 22-303
BIT2 = 000004 #21-159 21-204 21-213 21-238 22-257 22-273 22-283 22-307 24-437
24-438 24-439 24-440
BIT3 = 000010 #21-159 21-212 22-257 22-273 22-307 22-328 22-329
BIT4 = 000020 #21-159 21-212 22-256 22-273 32-1031
BIT5 = 000040 #21-159 21-212 22-255 22-273 22-327
BIT6 = 000100 #21-159 21-212 24-434 24-435 24-436 24-437 24-438 24-439 24-440
24-441 24-442 24-443 24-444 24-445 24-446 24-447 24-448 24-449
BIT7 = 000200 #21-159 21-211 21-239 21-244 22-254 22-272 22-306
BIT8 = 000400 #21-159 21-210 22-289 22-305
BIT9 = 001000 #21-159 21-210 22-288 22-305
BPARER = 000020 #21-159
BP.CLN = 074000 #21-209 31-956
BP.CSP = 000170 #21-212 31-942
BP.ERR = 100000 #21-208
BP.LD0 = 000002 #21-214 28-799 30-900 34-1193 38-1390 39-1488 39-1490
BP.LD1 = 000004 #21-213 30-900 34-1193 34-1194 38-1390 38-1401 39-1488 39-1490
BP.RP4 = 000200 #21-211 43-1903
BP.SWR = 000001 #21-219 30-898 39-1484
BP.UNT = 003400 #21-210 31-951
BR0 = 000000 #3-154
BR1 = 000040 #3-155
BR2 = 000100 #3-156
BR3 = 000140 #3-157
BR4 = 000200 #3-158
BR5 = 000240 #3-159
BR6 = 000300 #3-160
BR7 = 000340 #3-161 63-2945 63-2958 63-2965 70-3182 73-3310 74-3374 76-3460 77-3496
77-3510 79-3562 80-3635 81-3708
B.DM11 = 170500 #8-312
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
B0 = 000001 #3-118 3-136 4-188 6-248 6-250 7-265 7-283 7-294 7-304
8-321 8-324 15-498 16-587 16-588 16-591 56-2741 61-2909 95-4211
B1 = 000002 #3-119 3-137 4-187 6-249 6-250 7-266 7-283 7-304 8-321
8-325 15-497 15-518 15-520 15-522 15-524 16-586 56-2742 61-2910
B10 = 002000 #3-128 3-146 4-179 6-219 7-272 8-314 15-488 15-509 15-510
15-511 15-512 16-576 81-3699
B11 = 004000 #3-129 3-147 4-178 6-220 7-273 8-313 15-487 15-504 16-548
16-574 16-575
B12 = 010000 #3-130 3-148 4-177 6-221 6-239 7-274 7-284 15-486 15-503
16-547 16-573 81-3699 81-3771
B13 = 020000 #3-131 3-149 4-176 6-222 6-235 6-238 7-275 7-285 15-485
15-502 16-557 16-572 81-3699 81-3771
B14 = 040000 #3-132 3-150 4-175 6-223 6-234 6-237 6-243 7-276 7-286
15-484 16-556 16-571 81-3771
B15 = 100000 #3-133 3-151 4-174 6-224 6-236 6-242 7-277 7-287 11-377
15-483 15-501 16-549 16-555 16-570 61-2911 81-3771
B2 = 000004 #3-120 3-138 4-186 5-209 6-246 7-267 7-283 7-295 7-304
8-321 15-496 15-519 15-520 15-523 15-524 16-585 56-2743
B3 = 000010 #3-121 3-139 4-185 7-268 7-283 7-304 8-321 8-329 15-495
15-521 15-522 15-523 15-524 16-583 16-584 56-2744
B4 = 000020 #3-122 3-140 4-184 6-245 7-283 7-304 8-320 8-330 15-494
15-516 16-582 56-2745
B5 = 000040 #3-123 3-141 4-184 6-244 7-269 7-283 7-304 8-319 8-331
15-493 15-515 16-581 56-2747
B6 = 000100 #3-124 3-142 4-183 5-204 5-208 6-215 7-270 7-283 7-296
7-304 8-318 8-332 10-365 10-366 11-379 15-492 15-514 16-565
16-580 56-2748 81-3699
B7 = 000200 #3-125 3-143 4-182 6-216 7-271 7-283 7-297 7-304 8-317
8-333 10-367 11-378 15-491 15-513 16-579 56-2749
B8 = 000400 #3-126 3-144 4-181 6-217 8-316 15-490 15-506 15-508 15-510
15-512 16-578 81-3699
B9 = 001000 #3-127 3-145 4-180 6-218 8-315 15-489 15-507 15-508 15-511
15-512 16-577 81-3699
CDD = 000020 #21-159
CD.CHK = 040000 #4-175
CD.DAT = 177162 #4-190
CD.DTE = 004000 #4-178
CD.DTL = 002000 #4-179
CD.EOF = 020000 #4-176
CD.ERR = 100000 #4-174
CD.GO = 000001 #4-188 86-3957
CD.HEM = 000004 #4-186
CD.INE = 000100 #4-183 86-3950 86-3951
CD.LVL = 000006 #4-166 60-2892 60-2892
CD.NXM = 001000 #4-180
CD.OFL = 010000 #4-177 86-3942
CD.ONL = 000010 #4-185
CD.PAK = 000002 #4-187 86-3950
CD.PWR = 000400 #4-181 86-3954
CD.RDY = 000200 #4-182
CD.STS = 177160 #4-172 60-2892
CD.VEC = 000230 #4-167 60-2892
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CD.XAD = 000060 #4-184 86-3957
CD0DAT = 177162 #4-170 4-190
CD0STS = 177160 #4-169 4-170 4-172
CHKBIT 014034 R 64-2995 65-3011 67-3091 #74-3373 81-3648 81-3652 81-3657 81-3665 81-3672
81-3675 82-3826 82-3830 83-3848 83-3852 84-3868 85-3909 86-3949 87-3976
88-3995 90-4031 90-4034 90-4037 90-4040 90-4043 91-4056
CHKBRD 011756 R #65-3005
CHKCHR 020472 R *64-2990 *64-2992 *65-3007 *65-3009 *67-3084 *67-3086 *67-3087 67-3114 67-3116
*69-3144 *69-3145 70-3191 70-3193 *73-3301 *73-3305 *73-3306 *73-3309 73-3317
73-3318 73-3320 73-3322 73-3325 75-3436 76-3465 76-3467 *76-3470 *77-3493
*78-3532 *78-3533 78-3534 *78-3536 78-3537 78-3540 *78-3542 78-3547 78-3549
*81-3679 *81-3681 81-3709 81-3715 #94-4201
CHKCLK 012550 R #69-3141
CHKCOR 012050 R #65-3020
CHKDEV 013164 R 60-2888 60-2890 60-2891 60-2892 60-2893 60-2894 60-2895 60-2896 60-2897
60-2898 60-2899 60-2900 #72-3231
CHKDV1 013432 R 73-3282 #73-3287
CHKD01 013772 R 73-3345 73-3350 #73-3353
CHKD02 013736 R 73-3271 #73-3338
CHKERR 017670 R 63-2969 #93-4086
CHKER0 020344 R 93-4140 #93-4165
CHKER1 020434 R 93-4179 #93-4182
CHKER2 020422 R 93-4166 #93-4178
CHKER3 020412 R 93-4172 #93-4175
CHKER9 020450 R 93-4181 #93-4186
CHKFLD 015254 R *63-2948 *72-3239 72-3240 73-3300 73-3351 *73-3352 #80-3639
CHKFLG 011310 R #61-2908 *63-2949 *64-2976 *65-3005 *69-3142 *73-3304 75-3412 *75-3441 *93-4089
*93-4092 *93-4102 *93-4109 *93-4167 93-4187
CHKFLV 015252 R *63-2947 72-3233 73-3294 73-3346 *73-3347 #80-3638
CHKINL 014312 R 64-2998 70-3185 #76-3450 82-3833 83-3855
CHKINT 015064 R 63-2957 #80-3596 80-3599
CHKITL = 000012 63-2964 #80-3599
CHKMMO = 000002 #61-2910 93-4089 93-4092 93-4187
CHKTIM 012772 R *69-3152 69-3157 69-3159 *69-3173 #69-3178
CHKX 020466 R #93-4193
CHK.11 011476 RG 30-902 30-902 #63-2944
CHK.96 013140 RG 70-3192 #71-3200
CHNPNT = 000001 #21-159
CI.INE = 000100 #5-204 65-3012
CKACD$ = 012302 R #60-2892 60-2892
CKACD1 = ****** 60-2892 60-2892
CKADH$ = 012302 R #60-2898 60-2898
CKADH1 = ****** 60-2898 60-2898
CKADL$ = 012302 R #60-2891 60-2891
CKADL1 = ****** 60-2891 60-2891
CKADM$ = 012302 R #60-2899 60-2899
CKADM1 = ****** 60-2899 60-2899
CKAKL$ = 012302 R #60-2888 60-2888
CKAKL1 = ****** 60-2888 60-2888
CKALP$ = 012302 R #60-2893 60-2893
CKALP1 = ****** 60-2893 60-2893
CKAL2$ = 012302 R #60-2900 60-2900
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CKAL21 = ****** 60-2900 60-2900
CKAMEM = ****** 65-3027
CKAMF1 = ****** 68-3127
CKARD$ = 012302 R #60-2890 60-2890
CKARD1 = ****** 60-2890 60-2890
CKARH$ = 012302 R #60-2896 60-2896
CKARH1 = ****** 60-2896 60-2896
CKARX$ = 012302 R #60-2894 60-2894
CKARX1 = ****** 60-2894 60-2894
CKATC$ = 012302 R #60-2895 60-2895
CKATC1 = ****** 60-2895 60-2895
CKATE$ = 012302 R #60-2897 60-2897
CKATE1 = ****** 60-2897 60-2897
CKBLK 021156 R 81-3686 81-3701 #96-4222 96-4223
CKBUST 017620 R 64-2981 69-3149 72-3243 73-3264 73-3313 #92-4070
CKCADD = 000034 #60-2889 73-3353
CKCDEV 010566 R #59-2880 60-2889 71-3201
CKCD$$ = 017122 R #60-2892 60-2892
CKCD11 017122 R 60-2892 60-2892 60-2892 #86-3941
CKCD20 017204 R 86-3951 #86-3953
CKCEND 011306 R #60-2901
CKCLK9 012774 R 69-3160 #70-3182
CKCOR 012100 R #66-3039 66-3044
CKCRLF 020540 R 75-3414 93-4116 93-4130 #95-4211 95-4211
CKDA = 000000 *64-2990 *65-3007 *67-3084 *69-3144 *73-3305 75-3436 #94-4196
CKDEVN 011312 R #61-2912 *64-2994 *67-3082 *69-3146 *73-3290 *73-3331 73-3332 75-3431 87-3971
88-3990
CKDHPL 016302 R 81-3724 81-3731 81-3738 81-3747 81-3769 #81-3804
CKDH$$ = 015256 R #60-2898 60-2898
CKDH1A 015454 R #81-3683
CKDH1B 015514 R #81-3694 81-3802
CKDH1C 016026 R 81-3743 #81-3749
CKDH1D 016270 R 81-3719 81-3725 81-3732 81-3739 81-3748 81-3763 81-3770 81-3782 81-3793
#81-3799
CKDH1E 015564 R #81-3703 81-3741 81-3796
CKDH1F 016326 R 81-3801 #81-3811
CKDH11 015256 R 60-2898 60-2898 60-2898 #81-3647
CKDIDT 014156 R #75-3412 93-4103
CKDL$$ = 016342 R #60-2891 60-2891
CKDL11 016342 R 60-2891 60-2891 60-2891 #82-3825
CKDMCS 016552 R 84-3871 84-3878 #84-3881
CKDM$$ = 016456 R #60-2899 60-2899
CKDM11 016456 R 60-2899 60-2899 60-2899 #84-3868
CKDNAM 011314 R #61-2913 *64-2993 *65-3010 *67-3081 *69-3141 *72-3231 73-3279 75-3426
CKDONE 003000 R 30-899 30-901 #30-904 55-2732 71-3210
CKDV = 000002 *64-2992 *65-3009 *67-3086 67-3114 67-3116 *69-3145 *73-3306 73-3317 76-3465
76-3467 78-3534 *78-3536 78-3537 78-3540 *78-3542 *81-3679 *81-3681 81-3709
81-3715 #94-4197
CKDZTE = 021216 R #96-4225
CKDZTR = 021156 R #96-4223 96-4224
CKDZTX = 021176 R #96-4224 96-4225
CKEDID = 000010 #56-2744 67-3104 67-3104 67-3104 67-3111 67-3111 67-3111 67-3117 67-3117
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
67-3117 68-3132 68-3132 68-3132 69-3162 69-3162 69-3162 69-3165 69-3165
69-3165 69-3168 69-3168 69-3168 73-3323 73-3323 73-3323 73-3357 73-3357
73-3357 74-3385 74-3385 74-3385 74-3395 74-3395 74-3395 74-3402 74-3402
74-3402 76-3463 76-3463 76-3463 76-3468 76-3468 76-3468 77-3522 77-3522
77-3522 78-3541 78-3541 78-3541 78-3550 78-3550 78-3550 79-3565 79-3565
79-3565 81-3716 81-3716 81-3716 81-3721 81-3721 81-3721 81-3728 81-3728
81-3728 81-3735 81-3735 81-3735 81-3744 81-3744 81-3744 81-3760 81-3760
81-3760 81-3766 81-3766 81-3766 81-3779 81-3779 81-3779 81-3790 81-3790
81-3790 84-3875 84-3875 84-3875 84-3887 84-3887 84-3887 84-3898 84-3898
84-3898 85-3916 85-3916 85-3916 85-3922 85-3922 85-3922 85-3927 85-3927
85-3927 92-4070 92-4070 92-4070 93-4100 93-4117 93-4131
CKEFAT = 000001 #56-2741 66-3064 66-3064 66-3064 66-3074 66-3074 66-3074 69-3162 69-3162
69-3162 69-3165 69-3165 69-3165 69-3168 69-3168 69-3168 70-3194 70-3194
70-3194 92-4076 92-4076 92-4076 93-4165
CKEGB = 000100 #56-2748 66-3064 66-3064 66-3064 66-3074 66-3074 66-3074 67-3117 67-3117
67-3117 73-3323 73-3323 73-3323 74-3385 74-3385 74-3385 74-3395 74-3395
74-3395 74-3402 74-3402 74-3402 76-3468 76-3468 76-3468 78-3541 78-3541
78-3541 78-3550 78-3550 78-3550 81-3716 81-3716 81-3716 81-3760 81-3760
81-3760 81-3779 81-3779 81-3779 81-3790 81-3790 81-3790 84-3898 84-3898
84-3898 93-4117 93-4131 93-4139 93-4178
CKEMSE = 000020 #56-2745 65-3014 65-3014 66-3064 66-3064 66-3064 66-3064 66-3064 66-3074
66-3074 66-3074 66-3074 66-3074 67-3104 67-3104 67-3104 67-3104 67-3104
67-3111 67-3111 67-3111 67-3111 67-3111 67-3117 67-3117 67-3117 67-3117
67-3117 68-3132 68-3132 68-3132 68-3132 68-3132 69-3162 69-3162 69-3165
69-3165 69-3168 69-3168 70-3194 70-3194 73-3272 73-3272 73-3283 73-3283
73-3323 73-3323 73-3357 73-3357 74-3385 74-3385 74-3385 74-3385 74-3385
74-3395 74-3395 74-3395 74-3395 74-3395 74-3402 74-3402 74-3402 74-3402
74-3402 75-3419 75-3419 75-3423 75-3423 75-3428 75-3428 75-3433 75-3433
75-3438 75-3438 76-3463 76-3463 76-3463 76-3463 76-3463 76-3468 76-3468
76-3468 76-3468 76-3468 77-3522 77-3522 77-3522 77-3522 77-3522 78-3541
78-3541 78-3541 78-3541 78-3541 78-3550 78-3550 79-3565 79-3565 79-3565
79-3565 79-3565 81-3716 81-3716 81-3721 81-3721 81-3728 81-3728 81-3735
81-3735 81-3744 81-3744 81-3760 81-3760 81-3766 81-3766 81-3779 81-3779
81-3790 81-3790 81-3804 81-3804 84-3875 84-3875 84-3887 84-3887 84-3898
84-3898 85-3916 85-3916 85-3922 85-3922 85-3927 85-3927 86-3944 86-3944
87-3968 87-3968 87-3973 87-3973 88-3987 88-3987 88-3992 88-3992 92-4070
92-4070 92-4076 92-4076 93-4106 93-4106 93-4119 93-4119 93-4126 93-4133
93-4133 93-4141 93-4141 93-4148 93-4148 93-4153 93-4153 93-4158 93-4158
93-4168 93-4168
CKEMSG = 000004 #56-2743 65-3014 66-3064 66-3074 67-3104 67-3111 67-3117 68-3132 69-3162
69-3165 69-3168 70-3194 70-3194 70-3194 70-3194 73-3272 73-3283 73-3323
73-3323 73-3323 73-3323 73-3357 73-3357 73-3357 73-3357 74-3385 74-3395
74-3402 75-3419 75-3423 75-3428 75-3433 75-3438 76-3463 76-3468 77-3522
78-3541 78-3550 79-3565 81-3716 81-3721 81-3728 81-3735 81-3744 81-3760
81-3766 81-3779 81-3790 81-3804 84-3875 84-3887 84-3898 85-3916 85-3922
85-3927 86-3944 87-3968 87-3968 87-3968 87-3968 87-3973 88-3987 88-3987
88-3987 88-3987 88-3992 92-4070 92-4076 93-4106 93-4112 93-4119 93-4133
93-4141 93-4148 93-4153 93-4158 93-4168
CKENCL = 000040 #56-2747 73-3283 73-3283 73-3283 75-3419 75-3419 75-3419 75-3423 75-3423
75-3423 75-3428 75-3428 75-3428 75-3433 75-3433 75-3433 75-3438 75-3438
75-3438 87-3973 87-3973 87-3973 88-3992 88-3992 88-3992 92-4076 92-4076
92-4076 93-4114 93-4119 93-4119 93-4119 93-4128 93-4133 93-4133 93-4133
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
93-4148 93-4148 93-4148 93-4153 93-4153 93-4153 93-4158 93-4158 93-4158
CKEPC = 000002 #56-2742 66-3064 66-3064 66-3064 66-3074 66-3074 66-3074 67-3104 67-3104
67-3104 67-3111 67-3111 67-3111 67-3117 67-3117 67-3117 68-3132 68-3132
68-3132 69-3162 69-3162 69-3162 69-3165 69-3165 69-3165 69-3168 69-3168
69-3168 74-3385 74-3385 74-3385 74-3395 74-3395 74-3395 74-3402 74-3402
74-3402 76-3463 76-3463 76-3463 76-3468 76-3468 76-3468 77-3522 77-3522
77-3522 78-3541 78-3541 78-3541 78-3550 78-3550 78-3550 79-3565 79-3565
79-3565 81-3716 81-3716 81-3716 81-3721 81-3721 81-3721 81-3728 81-3728
81-3728 81-3735 81-3735 81-3735 81-3744 81-3744 81-3744 81-3760 81-3760
81-3760 81-3766 81-3766 81-3766 81-3779 81-3779 81-3779 81-3790 81-3790
81-3790 84-3875 84-3875 84-3875 84-3887 84-3887 84-3887 84-3898 84-3898
84-3898 85-3916 85-3916 85-3916 85-3922 85-3922 85-3922 92-4070 92-4070
92-4070 93-4104
CKEWRN = 000200 #56-2749 73-3357 73-3357 73-3357 75-3417 85-3927 85-3927 85-3927
CKFERR = 000001 #61-2909 93-4102 93-4109 93-4167
CKFIDT = 100000 #61-2911 64-2976 65-3005 69-3142 73-3304 75-3412 75-3441
CKFLAG 015062 R *77-3494 78-3529 *78-3531 #79-3589
CKFLG = 000006 *73-3309 #94-4199
CKGCHR 020724 R #95-4211
CKINT 014430 R #77-3491 81-3677 81-3678 81-3680 84-3870 85-3919 86-3951 87-3978 88-3997
90-4048 91-4058
CKINTE 015036 R 78-3543 78-3553 79-3573 79-3576 #79-3578
CKINTF 015052 R 77-3523 79-3566 #79-3585
CKINTG 015044 R #79-3580 79-3587
CKINTS 011536 R #63-2955
CKINT1 014450 R #77-3496 79-3574
CKINT2 014454 R #77-3497 77-3521
CKINT3 014462 R #77-3499 79-3577
CKINT6 014742 R 78-3548 #79-3557
CKINT7 015026 R 77-3501 #79-3575
CKKL$$ = 016406 R #60-2888 60-2888
CKKL11 016406 R 60-2888 60-2888 60-2888 #83-3847
CKLP$$ = 017232 R #60-2893 60-2893
CKLP11 017232 R 60-2893 60-2893 60-2893 #87-3965
CKL2$$ = 017326 R #60-2900 60-2900
CKL211 017326 R 60-2900 60-2900 60-2900 #88-3985
CKL220 017424 R 88-3997 #88-4000
CKMG01 020750 R 66-3064 66-3074 #96-4213
CKMG02 020760 R 74-3385 74-3402 #96-4214
CKMG03 021002 R 74-3395 #96-4215
CKMG04 021022 R 67-3111 76-3463 77-3522 #96-4216
CKMG05 021052 R 67-3117 76-3468 78-3541 #96-4217
CKMG06 021106 R 68-3132 #96-4218
CKMG07 021120 R 67-3104 79-3565 #96-4219
CKMPAR 012304 R 66-3054 #67-3080 67-3097 *67-3097 67-3100 67-3106 67-3108 *67-3108 67-3116
CKNCD1 011334 R 60-2892 #62-2926
CKNCI1 011320 R #62-2924 65-3010
CKNCO1 011326 R #62-2925 64-2993
CKNDH1 011341 R 60-2898 #62-2927
CKNDL1 011377 R 60-2891 #62-2930
CKNDM1 011406 R 60-2899 #62-2931
CKNKL1 011346 R 60-2888 #62-2928
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CKNKW1 011424 R #62-2933 69-3141
CKNLP1 011433 R 60-2893 #62-2934
CKNL21 011440 R 60-2900 #62-2935
CKNMM1 011445 R #62-2936 67-3081
CKNRD1 011361 R 60-2890 #62-2929
CKNRH1 011455 R 60-2896 #62-2937
CKNRX1 011467 R 60-2894 #62-2939
CKNTC1 011462 R 60-2895 #62-2938
CKNTE1 011416 R 60-2897 #62-2932
CKPI = 000004 *67-3087 70-3191 70-3193 *73-3301 73-3318 73-3320 73-3322 *76-3470 *77-3493
*78-3532 *78-3533 78-3547 78-3549 #94-4198
CKPOPJ 012302 R 60-2888 60-2890 60-2891 60-2892 60-2893 60-2894 60-2895 60-2896 60-2897
60-2898 60-2899 60-2900 #66-3077
CKRD$$ = 016342 R #60-2890 60-2890
CKRD11 016342 R 60-2890 60-2890 60-2890 #82-3824
CKRH$$ = 017456 R #60-2896 60-2896
CKRH11 017456 R 60-2896 60-2896 60-2896 #89-4017
CKRX$$ = 017552 R #60-2894 60-2894
CKRX11 017552 R 60-2894 60-2894 60-2894 #91-4054
CKRX20 017606 R 91-4058 #91-4062
CKSPC = 000010 #94-4200
CKSPCD 020470 R *63-2950 *66-3064 *66-3074 *69-3162 *69-3165 *69-3168 *70-3194 *92-4076 93-4171
#93-4194
CKTBOC 020564 R 92-4075 93-4111 93-4146 93-4152 93-4157 93-4164 #95-4211
CKTCHR 020650 R 95-4211 95-4211 #95-4211 95-4211
CKTCRL 020552 R 66-3046 68-3123 70-3188 75-3415 #95-4211
CKTC$$ = 017460 R #60-2895 60-2895
CKTC11 017460 R 60-2895 60-2895 60-2895 #90-4030
CKTE$$ = 016672 R #60-2897 60-2897
CKTE11 016672 R 60-2897 60-2897 60-2897 #85-3906
CKTOCT 020600 R 66-3050 73-3276 75-3432 75-3437 81-3808 87-3972 88-3991 #95-4211
CKTOC1 020602 R 95-4211 #95-4211
CKTOC2 020614 R 95-4211 #95-4211 95-4211
CKTRR0 020610 R #95-4211
CKTRR1 020534 R #95-4211 95-4211
CKTSTR 020556 R 66-3051 73-3277 95-4211 #95-4211 95-4211
CKTTXT 020512 R 65-3018 73-3280 75-3427 93-4123 93-4137 #95-4211 95-4211
CKZZZX = 000015 #65-3014 65-3014 65-3014 #66-3064 66-3064 66-3064 #66-3074 66-3074 66-3074
#67-3104 67-3104 67-3104 #67-3111 67-3111 67-3111 #67-3117 67-3117 67-3117
#68-3132 68-3132 68-3132 #69-3162 69-3162 69-3162 #69-3165 69-3165 69-3165
#69-3168 69-3168 69-3168 #70-3194 70-3194 70-3194 #73-3272 73-3272 73-3272
#73-3283 73-3283 73-3283 #73-3323 73-3323 73-3323 #73-3357 73-3357 73-3357
#74-3385 74-3385 74-3385 #74-3395 74-3395 74-3395 #74-3402 74-3402 74-3402
#75-3419 75-3419 75-3419 #75-3423 75-3423 75-3423 #75-3428 75-3428 75-3428
#75-3433 75-3433 75-3433 #75-3438 75-3438 75-3438 #76-3463 76-3463 76-3463
#76-3468 76-3468 76-3468 #77-3522 77-3522 77-3522 #78-3541 78-3541 78-3541
#78-3550 78-3550 78-3550 #79-3565 79-3565 79-3565 #81-3716 81-3716 81-3716
#81-3721 81-3721 81-3721 #81-3728 81-3728 81-3728 #81-3735 81-3735 81-3735
#81-3744 81-3744 81-3744 #81-3760 81-3760 81-3760 #81-3766 81-3766 81-3766
#81-3779 81-3779 81-3779 #81-3790 81-3790 81-3790 #81-3804 81-3804 81-3804
#84-3875 84-3875 84-3875 #84-3887 84-3887 84-3887 #84-3898 84-3898 84-3898
#85-3916 85-3916 85-3916 #85-3922 85-3922 85-3922 #85-3927 85-3927 85-3927
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
#86-3944 86-3944 86-3944 #87-3968 87-3968 87-3968 #87-3973 87-3973 87-3973
#88-3987 88-3987 88-3987 #88-3992 88-3992 88-3992 #92-4070 92-4070 92-4070
#92-4076 92-4076 92-4076 #93-4106 93-4106 93-4106 #93-4119 93-4119 93-4119
#93-4133 93-4133 93-4133 #93-4141 93-4141 93-4141 #93-4148 93-4148 93-4148
#93-4153 93-4153 93-4153 #93-4158 93-4158 93-4158 #93-4168 93-4168 93-4168
CK.CAL 011474 R #62-2941 *63-2946 65-3017
CLKENB = 000100 #10-366
CLKLVL = 000006 #10-357
CLKVEC = 000100 #10-361 69-3145 69-3150 *69-3151 *70-3184 70-3193
CLKWRD = 177546 #10-363 69-3143 *70-3187
CMDCLN = 000024 #23-378 25-463
CMDCLR 000040 R #23-355 23-378 25-462
CMDONE 001574 R 25-507 #26-559
CNUPE = 000002 #21-159
CO.INE = 000100 #5-208 64-2996 64-2997 82-3832 82-3835 83-3854 83-3857
CO..MM = 000004 #5-209 64-2996
CS.EXP = 177670 #21-159
CTICHR = 177562 #5-198 5-199 64-2980 95-4211 95-4211
CTILVL = 000004 #5-203
CTISTS = 177560 #5-197 5-198 60-2888 64-2979 65-3006 95-4211
CTIVEC = 000060 #5-202 5-205 65-3009
CTOCHR = 177566 #5-200 64-2978 *95-4211
CTOLVL = 000004 #5-206
CTOSTS = 177564 #5-199 5-200 64-2977 64-2989 95-4211
CTOVEC = 000064 #5-205 60-2888 64-2992
CTYBFL = 000120 #23-390 25-477
CTYBUF 000230 R #23-389 23-390 25-477 *25-485 25-486
CTYLUN = 000001 #21-192 25-474 25-477 41-1645
CTYPTR = ****** GX 31-966 *31-968
CYCLS = 000002 #21-159
DATE = 000004 #21-159
DCOMST = 000001 #21-159
DEFLAG 000061 R #23-376 *34-1144 *34-1168 35-1228
DEP = 010000 #21-159
DEVCHK 001656 R 26-570 #26-574
DEVMNT 002002 R #26-601
DEVNAM 000042 R #23-357 *25-494 26-561 26-572 *26-576 26-580 26-587 32-1038
DEVOK 001734 R 26-581 #26-586
DEVUNT 000044 R #23-358 *25-498 26-560 *26-577 28-796 46-2114 49-2355 52-2551
DEX = 000400 #21-159
DEXDON = 000004 #21-159
DEXWD1 = 174406 #21-159
DEXWD2 = 174404 #21-159
DEXWD3 = 174402 #21-159
DFUNC = 000200 #21-159
DF.DMG = 000004 #21-159
DF.DMN = 000007 #21-159
DF.DOR = 000001 #21-159
DF.EHG = 000010 #21-159
DF.EHM = 000011 #21-159
DF.EMG = 000005 #21-159
DF.EMN = 000006 #21-159
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DF.KLR = 000012 #21-159
DF.KLW = 000013 #21-159
DF.KLX = 000014 #21-159
DF.OFF = 000002 #21-159
DF.ON = 000003 #21-159
DF.PDP = 000016 #21-159
DF.PEX = 000015 #21-159
DGUTS = 000000 1-45 1-46
DHBASE = 160020 #6-212
DHDATA 016336 R *81-3694 81-3753 81-3784 81-3786 *81-3794 #81-3814
DHEXPA = 160020 #22-333 31-998
DHEXPZ = 000020 #22-334 31-1007
DHRFER = 020000 #6-235
DHROVR = 040000 #6-234
DHSTAB 001124 R #24-433 31-947
DHTBL = ****** GX 31-953 31-999
DHXMII 016340 R *81-3684 *81-3685 81-3711 #81-3815
DH.AEE = 100000 #6-242
DH.BAR = 000012 #6-229 *81-3705
DH.BCR = 000010 #6-228 *81-3700
DH.BRK = 000014 #6-230
DH.CAR = 000006 #6-227 *81-3701
DH.CL5 = 000000 #6-247
DH.CL6 = 000001 #6-248
DH.CL7 = 000002 #6-249
DH.CL8 = 000003 #6-250 81-3699
DH.CNX = 000400 #6-217
DH.DOV = 040000 #6-237 81-3751
DH.LPR = 000004 #6-226 *81-3699
DH.LVL = 000005 #6-213 60-2898 60-2898
DH.NRC = 000002 #6-225 81-3750
DH.NXM = 002000 #6-219 81-3726
DH.PEN = 000020 #6-245 81-3699
DH.RIE = 000100 #6-215 81-3677 81-3697
DH.SIE = 010000 #6-221 81-3678 81-3697
DH.SSR = 000016 #6-231 *81-3702
DH.TIE = 020000 #6-222 81-3680 81-3697
DH.VDP = 100000 #6-236 81-3757 81-3764
DH..FE = 020000 #6-238 81-3751
DH..HD = 040000 #6-243
DH..MC = 004000 #6-220 81-3696 81-3811
DH..MM = 001000 #6-218 81-3677 81-3678 81-3697
DH..OP = 000040 #6-244 81-3699
DH..PE = 010000 #6-239 81-3751
DH..RI = 000200 #6-216 81-3677 81-3749
DH..SI = 040000 #6-223 81-3678 81-3742
DH..TI = 100000 #6-224 81-3680 81-3733 81-3740
DH.2SB = 000004 #6-246 81-3699
DIAG1 = 174430 #21-159
DIAG2 = 174432 #21-159
DIAG3 = 174436 #21-159
DIKL10 = 000010 #21-159
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DLDADR = 175610 #7-254
DLDSIZ = 000010 #7-255
DLRBUF = 000002 #7-280
DLRSTS = 000000 #7-262
DLTBL = ****** GX 31-944 *31-976 *31-977 *31-978 *31-979 *31-980
DLXBUF = 000006 #7-301
DLXSTS = 000004 #7-291
DLYCNT = 174400 #21-159
DL.BRK = 000001 #7-294
DL.CAR = 010000 #7-274 31-984 38-1392
DL.CTS = 020000 #7-275
DL.DIE = 000040 #7-269
DL.DSC = 100000 #7-277
DL.DTR = 000002 #7-266
DL.ERR = 100000 #7-287
DL.LVL = 000004 #7-256 7-257 60-2891 60-2891
DL.OVR = 040000 #7-286
DL.RGO = 004000 #7-273
DL.RIE = 000100 #7-270
DL.RNG = 040000 #7-276
DL.ROK = 000200 #7-271
DL.RTS = 000004 #7-267
DL.XIE = 000100 #7-296
DL.XOK = 000200 #7-297
DL..FE = 020000 #7-285
DL..MM = 000004 #7-295
DL..PE = 010000 #7-284
DL..RC = 000377 #7-283
DL..RE = 000001 #7-265
DL..XC = 000377 #7-304
DL.2RC = 002000 #7-272
DL.2XM = 000010 #7-268
DMBASE = 170500 #8-308
DMEXPA = 170500 #22-338 31-1014
DMFLAG 000052 R #23-368 *25-470 25-541 27-729
DMOERR 002426 R 27-740 #27-747
DMTBL = ****** GX 31-1015
DMTBLK 001116 R #24-421 27-731
DM.ALI = 000017 #8-321 84-3869 84-3881
DM.BSY = 000020 #8-320 84-3873 84-3884
DM.CAR = 000100 #8-332
DM.CTS = 000040 #8-331
DM.DNE = 000200 #8-317 84-3869 84-3870 84-3881
DM.DTR = 000002 #8-325
DM.ENB = 000040 #8-319 84-3869 84-3872 84-3881
DM.IEN = 000100 #8-318 84-3869 84-3870 84-3881
DM.INI = 002000 #8-314
DM.LE = 000001 #8-324
DM.LVL = 000004 #8-310 60-2899 60-2899
DM.RNG = 000200 #8-333
DM.RTS = 000004 8-326
DM.SCN = 004000 #8-313 84-3883
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DM.SR = 000020 #8-330
DM.ST = 000010 #8-329
DM.STP = 000400 #8-316
DM..MM = 001000 #8-315 84-3869 84-3881
DNSERR 001642 R 26-568 #26-571
DON10C = 040000 #21-159
DON10S = 100000 #21-159
DON11C = 000100 #21-159
DON11S = 000200 #21-159
DPS4 = 040000 #21-159
DRESET = 000100 #21-159
DRVADR 000002 R #23-349 *26-591 26-697 28-786 28-834 29-881
DRVAD1 = 000012 28-788 #43-1902 #43-1903 #43-1904
DRVAD2 = 000014 28-789 #43-1902 #43-1903 #43-1904
DRVBOT = 000004 28-835 #43-1902 #43-1903 #43-1904
DRVBTP = 000016 28-798 #43-1902 #43-1903 #43-1904
DRVMSZ = 000010 28-787 #43-1902 #43-1903 #43-1904
DRVNAM = 000000 26-580 #43-1902 #43-1903 #43-1904
DRVSET = 000002 26-698 26-698 #43-1902 #43-1903 #43-1904
DRVSIZ = 000020 26-582 #43-1902 #43-1903 #43-1904
DRVTAB 007042 R 26-578 26-583 #43-1901 43-1905
DRVTBZ = 000060 26-583 #43-1905
DRVWRT = 000006 29-882 29-882 #43-1902 #43-1903 #43-1904
DR.DTE = 000011 #21-159
DSEND = 000004 #21-159
DSKADR 000004 R #23-350 24-410 26-690 26-691 *26-720 *26-721 28-788 28-789 *29-877
*29-878 46-2120 49-2363 49-2364 52-2548
DSKLUN = 000002 #21-193 26-567 27-738 36-1252 42-1851
DSKSIZ 000010 R #23-351 26-659 26-661
DS04 = 004000 #21-159
DS05 = 002000 #21-159
DS06 = 001000 #21-159
DTCL11 = 002000 #22-326 34-1172
DTEBAD = ****** 85-3908
DTECHK 003752 R 32-1049 #34-1139
DTECMD = 000451 #21-159
DTEDTO = ****** 85-3930
DTEFLG = 000444 #21-159
DTEF11 = 000450 #21-159
DTEMSG 004266 R 35-1215 #35-1220
DTEMTD = 000455 #21-159
DTEMTI = 000456 #21-159
DTEXPA = 174400 #22-321 34-1142
DTEXPZ = 000040 #22-322 34-1178
DTINOF = 000010 #22-328 34-1172
DTINON = 000040 #22-327 34-1166
DTPMSG 004312 R 35-1222 #35-1227
DTPMS1 004330 R 35-1225 #35-1231
DTPSTA = ****** 85-3912
DTRSMD = 000010 #22-329 34-1159
DTSTAT = 000034 #22-324 34-1159 *34-1166 *34-1172 34-1186
DTVECA = 000774 #22-320 34-1141
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DT11DB = 004000 #22-325 34-1166
DUPE = 000020 #21-159
DURE = 000004 #21-159
DV.LOG = ****** GX 23-397
DXWRD1 = 002000 #21-159
D.CCTY = ****** GX *31-969
D.CKLN = ****** GX 38-1463
D1011 = 000040 #21-159
EBSEL = 000100 #21-159
EBUSPC = 000020 #21-159
EBUSPS = 000004 #21-159
EDONES = 040000 #21-159
EF.PR1 = ****** GX 28-770 38-1403 38-1448
EF.PR2 = ****** GX 28-770 38-1403
EF.QIO = 000001 #21-198
EF.RKP = ****** GX 38-1405 38-1414
EF.TMO = 000002 #21-201
EPTR = 000000 #21-159
ERRINT = 000004 #54-2708
ERRMSG 001447 R 41-1694 #41-1698
ERR10C = 010000 #21-159
ERR10S = 020000 #21-159
ERR11C = 000001 #21-159
ERR11S = 000002 #21-159
EV.PF = ****** GX 35-1209
EXFLAG 000050 R #23-366 *25-468 25-541 39-1500
EXIT 005732 R 25-532 38-1470 39-1501 #39-1506 39-1508 41-1646
EXITA 001526 R 25-475 25-478 25-480 25-482 #25-531
EXIT00 005720 R 39-1491 39-1496 #39-1499
EX.AC1 = 000001 #21-237 26-670
EX.ENA = 000200 #21-239 26-670
EX.FCO = 000004 #21-238 26-670
E.FLOG = 000004 #21-203 #21-204 38-1462 38-1465
E.FQIO = 000001 #21-197 25-477 41-1645 42-1851
E.FTMO = 000002 #21-200 38-1383 38-1408 38-1409 38-1410
FIDBLK 001076 R #24-404 26-629
FILCHK 002252 R 26-683 #26-685
FILDMO 002332 R #27-728
FILDMX 002464 R 27-735 27-737 #27-755
FILDM1 002350 R #27-733 27-758
FILDM2 002414 R #27-742
FILDM3 002436 R 27-746 #27-749
FILDM4 002454 R 27-751 #27-753
FILFND 002060 R #26-628 26-688
FILMNT 006732 R 26-611 26-611 27-744 27-744 36-1260 36-1260 #42-1830
FILOK 002312 R 26-692 26-694 #26-696
FILQIO 006746 R 26-639 26-639 26-673 26-673 26-682 26-682 37-1307 37-1307 #42-1850
FILSET 002322 R #26-719
FINDEV 006654 R 26-569 26-569 32-1039 32-1039 32-1048 32-1048 33-1105 33-1105 36-1281
36-1281 #42-1802
FLOATD = 160000 55-2731 63-2948
FLOATV = 000300 55-2730 63-2947
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
FNDACP 006712 R 26-607 26-607 36-1256 36-1256 #42-1820
FORPRO = 000020 #21-159
FTABS = ****** 23-363 25-542 26-620 26-699 43-1902 43-1903 43-1904 44-1914 47-2248
50-2403
FTASRT = 000001 1-64
FTECHO = 000000 1-61
FTETR = 000000 1-60
FTGLOM = 000000 1-54
FT.CHK = 000001 1-63
FT.DDT = 000000 1-59
FT.D75 = 000000 10-355 10-356
FT.HLP = 000001 1-53
GETNAM 005764 R 25-492 25-492 25-517 25-517 #40-1544
GETNB 005742 R 25-490 25-490 25-506 25-506 #40-1528 40-1531 40-1533
GETNUM 006030 R 25-496 25-496 #40-1574
GTIMBF 000020 R #23-354 28-766 41-1723 41-1726 41-1733 41-1736 41-1742
G.TICP = 000016 #28-766
G.TICT = 000014 #28-766
G.TIDA = 000004 #28-766 41-1733
G.TIHR = 000006 #28-766 41-1723
G.TIMI = 000010 #28-766 41-1726
G.TIMO = 000002 #28-766 41-1736
G.TISC = 000012 #28-766
G.TIYR = 000000 #28-766 41-1742
HBCERR 004764 R 37-1332 37-1338 #37-1342
HIBYTE = 177400 #21-159
HOMBUF 000064 R #23-387 37-1304 37-1315 37-1334
HOMFE0 = 000061 #21-231 37-1315 37-1334
HOMFE1 = 000062 #21-232
HOMNAM = 000000 #21-229
IFLOP = 100000 #21-159
INTROF = 000010 #21-159
INTRON = 000040 #21-159
INTSON = 000001 #21-159
INT10S = 000400 #21-159
INT11C = 002000 #21-159
INT11S = 004000 #21-159
IO.ACE = 007400 26-633
IO.APV = 014010 42-1831
IO.DAC = 010000 26-678
IO.EXT = 011400 26-668
IO.RLB = 001000 25-477 37-1303
IO.WLB = 000400 41-1645
KBS0 = ****** GX 31-976
KBS1 = ****** GX 31-977 31-983
KLANXM 005576 R 38-1387 #38-1472
KLAREM 005460 R 38-1443 #38-1447
KLAUSR 005450 R 38-1440 #38-1445
KLINIT 001120 R #24-426 39-1481
KLNPTR = ****** GX 38-1384
KLPWRF = 000010 #21-159
KL.CFM = ****** GX 39-1483
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 14
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
KL.DEF = ****** GX 39-1483
KL.LCA = ****** GX 39-1483
KL.LRM = ****** GX 39-1483
KL.LVB = ****** GX 39-1483
KL.LVL = 000004 #7-258 60-2888 60-2888
KL.VBN = ****** GX 39-1486
KPAR0 = 172340 #1-28
KW.INE = 000100 #10-365 69-3154 70-3183 70-3187
KW.TIC = 000200 #10-367
K.LRBA = ****** GX 38-1460
LKS = 177546 #22-342 *28-782
LOAD11 = 000004 #21-159
LOGBUF 001070 R #23-395 38-1450
LOWCOR 000064 R #23-383 23-393 28-836
LP.DAT = 177516 #11-382
LP.DNE = 000200 #11-378 87-3978
LP.ERR = 100000 #11-377 87-3966
LP.INE = 000100 #11-379 87-3977 87-3978 88-3996
LP.LVL = 000004 #11-371 60-2893 60-2893
LP.STS = 177514 #11-375 60-2893
LP.VEC = 000200 #11-372 60-2893
LP0DAT = 177516 #11-381 11-382 11-386
LP0STS = 177514 #11-374 11-375 11-381
LP1DAT = 177522 #11-387
LP1STS = 177520 #11-386 11-387
L2.A16 = 000020 #12-414
L2.A17 = 000040 #12-413
L2.BCM = 007777 #13-443
L2.DB = 000377 #13-455
L2.DEL = 002000 #13-452
L2.DH = 002000 #12-408
L2.DL = 000010 #12-415
L2.DNR = 000100 #12-430
L2.DON = 000200 #12-411
L2.DR = 010000 #12-406
L2.DTE = 000002 #12-435
L2.ENB = 000100 #12-412 88-3997
L2.ERE = 001000 #12-409
L2.ERR = 100000 #12-403 88-3985
L2.GER = 000001 #12-436
L2.GO = 000001 #12-418
L2.INI = 000400 #12-410
L2.INT = 004000 #13-451
L2.LDP = 010000 #12-424
L2.LPE = 000040 #12-431
L2.LVL = 000004 #12-397 60-2900 60-2900
L2.MPE = 000020 #12-432
L2.MST = 000004 #12-434
L2.ONL = 004000 #12-407
L2.OVF = 004000 #12-425
L2.PCM = 007777 #13-446
L2.PEN = 000002 #12-417
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 15
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
L2.PI = 000400 #13-454
L2.PNR = 020000 #12-423
L2.POL = 000200 #12-429
L2.PZE = 040000 #12-404
L2.RDB = 007777 #13-450
L2.RPB = 010000 #13-449
L2.RPE = 000010 #12-433
L2.SPR = 040000 #12-422
L2.TB0 = 000400 #12-428
L2.TB1 = 001000 #12-427
L2.TB2 = 002000 #12-426
L2.TM = 000004 #12-416 88-4001
L2.TRN = 001000 #13-453
L2.UCD = 020000 #12-405
L2.VD = 100000 #12-421
L2.VEC = 000754 #12-398 60-2900
L20ADR = 000004 #13-440 13-442
L20BCT = 000006 #13-442 13-445
L20BUF = 000014 #13-457 13-459
L20CHK = 000017 #13-463
L20COL = 000015 #13-459 13-461
L20CRA = 000000 #12-402 12-420
L20CRB = 000002 #12-420 13-440
L20PCT = 000010 #13-445 13-448
L20PDA = 000016 #13-461 13-463
L20RAM = 000012 #13-448 13-457
L20STS = 175400 #12-399 60-2900
L21STS = 175420 #12-400
MEMSIZ 000014 R #23-352 *26-655 28-787 *29-879 46-2140 49-2387 52-2606
MM.SR0 = 177572 #1-29 93-4090 *93-4093 *93-4189
MNTBLK 001110 R #24-415 26-610 36-1258
MNTSY 004364 R #36-1246
MNTSY1 004406 R #36-1251 36-1283
MNTSY2 004476 R 36-1253 #36-1264
MODTBL 001532 R 25-519 #25-536 25-547
MODTLN = 000006 25-520 #25-547
MOFLAG 000051 R #23-367 25-541 26-602
MONTAB 006516 R 41-1739 #41-1755
MOUNTD 002050 R 26-605 #26-614
MPE11 = 001000 #21-159
MP.ENB = 000001 #14-475 67-3105 68-3126
MP.ERR = 100000 #14-472
MP.LVL = 000007 #14-468
MP.REG = 172100 #14-470 67-3083 *67-3089 *68-3126
MP.VEC = 000114 #14-467 67-3086
MP.WWP = 000004 #14-474 67-3096
M$$MGE = ****** 28-790 28-804 30-910 43-1902 43-1903 43-1904 45-2046 45-2086 46-2124
48-2307 48-2330 51-2498 51-2521
NONDEV 014000 R 73-3311 #73-3356
NOTRXF 005012 R #37-1350
NULSTP = 000040 #21-159
NUPE = 000002 #21-159
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 16
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
NXMVEC = 000004 #1-30 *64-2975 *64-2981 *65-3021 67-3085 *67-3088 *67-3090 *68-3134 *69-3147
*69-3149 *72-3241 *72-3243 *73-3264 *73-3311 *73-3313 93-4087 *93-4088 *93-4096
OB0 = 000001 #3-136
OB1 = 000002 #3-137
OB10 = 000400 #3-144
OB11 = 001000 #3-145
OB12 = 002000 #3-146
OB13 = 004000 #3-147
OB14 = 010000 #3-148
OB15 = 020000 #3-149
OB16 = 040000 #3-150
OB17 = 100000 #3-151
OB2 = 000004 #3-138
OB3 = 000010 #3-139
OB4 = 000020 #3-140
OB5 = 000040 #3-141
OB6 = 000100 #3-142
OB7 = 000200 #3-143
PASS = 000002 1-84 1-85 #1-85
PDP11 = 000040 1-68
PERCLR = 001000 #21-159
PHYLIM 011316 R #61-2914 *65-3026 66-3049
PHYS = 100000 #21-159
PIDENT = 000000 #21-159
PRI7 = 000340 #21-159
PRNRUN 005564 R 38-1404 #38-1468
PROPNT = 000021 #21-159
PROTBL = ****** GX *34-1183
PRTOFF = 004000 #21-159
PR0 = 000000 #21-159
PR1 = 000040 #21-159
PR2 = 000100 #21-159
PR3 = 000140 #21-159
PR4 = 000200 #21-159
PR5 = 000240 #21-159 34-1167
PR6 = 000300 #21-159
PR7 = 000340 #21-159 28-778 34-1170 35-1232 45-2045 45-2089 48-2306 48-2333 51-2497
51-2524
PS = 177776 #21-159 28-778 *28-778 *28-803 *33-1096 33-1101 *34-1146 34-1151 34-1156
*34-1167 *34-1170 *34-1174 35-1232 *35-1232 *35-1234 38-1413 *38-1413 *38-1438
*45-2045 *48-2306 *51-2497 *63-2945 *69-3153 *70-3182 *73-3310 *74-3374 *76-3456
*76-3460 *77-3497 *77-3510 *79-3557 *79-3562 80-3596 80-3600 80-3603 80-3606
80-3609 80-3612 80-3615 80-3618 80-3621 80-3624 *81-3706 *81-3708
PSWW1 = 000005 #21-159
PSWW10 = 000014 #21-159
PSWW11 = 000015 #21-159
PSWW12 = 000016 #21-159
PSWW13 = 000017 #21-159
PSWW2 = 000006 #21-159
PSWW3 = 000007 #21-159
PSWW4 = 000010 #21-159
PSWW5 = 000011 #21-159
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 17
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
PSWW6 = 000012 #21-159
PSWW7 = 000013 #21-159
PS.PUS = 030000 #21-224 28-803 33-1096 34-1146 34-1174
PS.REG = 004000 #21-225 45-2089 48-2333 51-2524
PS.USR = 140000 #21-223
PUDADR 000040 R #23-356 *26-592 32-1041 *32-1045 *32-1052 36-1247 *36-1282 41-1677
PUDIDX 000045 R #23-359 *26-597 32-1069
PULSE = 000020 #21-159
QEFLAG 000056 R #23-372 *26-663 42-1852 *42-1859
QIOSTS 001064 R #23-394 25-477 25-479 25-481 25-484 42-1851 42-1856
QSIZE = 000023 #21-159
Q.DA = ****** GX *31-969
Q.SZ = ****** GX *31-969
RADIX 000016 R #23-353 *41-1685 *41-1722 *41-1748 41-1775 41-1777
RAMIS0 = 010000 #21-159
RD.LVL = 000004 #7-257 7-258 60-2890 60-2890
REDHM1 004632 R 37-1297 #37-1299
REDHOM 004600 R 36-1248 36-1255 36-1266 36-1269 36-1277 #37-1291
REDSY 003346 R #32-1028
RESTOR 002734 RG 29-876 #30-893 45-2091 48-2335 49-2397 51-2526
RFMAD0 = 100000 #21-159
RFMAD1 = 040000 #21-159
RFMAD2 = 020000 #21-159
RFMAD3 = 010000 #21-159
RHFLAG 000053 R #23-369 *25-469 25-541 *26-589 33-1082 37-1292
RHMERR 005030 R 37-1308 #37-1358
RH.LVL = 000000 60-2896 60-2896
RM = 000010 #21-159
RNFLAG 000054 R #23-370 *33-1087 37-1294
RNRERR 005042 R 37-1295 #37-1362
RPATA = 100000 #22-285 48-2294 49-2381
RPBA = 176704 #22-280 *48-2273 *49-2362
RPBAD1 = 007702 R 43-1903 #48-2274
RPBAD2 = 007710 R 43-1903 #48-2276
RPBMSZ 007766 R 43-1903 #48-2301
RPBNXT 007726 R #48-2283 48-2302
RPBOOT 007664 R 43-1903 #48-2266 48-2293 48-2295 48-2337
RPCS1 = 176700 #22-268 33-1114 *33-1116 *48-2273 *48-2275 *48-2277 *48-2278 *48-2284 48-2294
49-2353 *49-2355 *49-2362 *49-2363 *49-2364 *49-2365 *49-2371 49-2381
RPCS2 = 176710 #22-282 *33-1084 *33-1109 *49-2355
RPDA = 176706 #22-281 *48-2277 *49-2364
RPDC = 176734 #22-296 *48-2275 *49-2363
RPDPR = 000400 #22-289 33-1110
RPDS = 176712 #22-284 33-1085 33-1089 33-1110 48-2294 49-2381
RPDT = 176726 #22-290 33-1119
RPDT04 = 000020 #22-291
RPDT06 = 000022 #22-292 33-1119
RPDVA = 004000 #22-271 33-1114 49-2359
RPECCI = 004000 #22-295 48-2278 49-2365
RPERR = 040000 #22-286 48-2294 49-2381
RPFLAG 000055 R #23-371 *33-1091 37-1296
RPFM22 = 010000 #22-294
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 18
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
RPFUNC = 000076 #22-273
RPGO = 000001 #22-278 33-1116 48-2271 49-2361
RPMCPE = 020000 #22-270 48-2292 49-2379
RPMOL = 010000 #22-287 33-1085
RPNOOP = 000000 #22-274 33-1116
RPOF = 176732 #22-293 *48-2278 *49-2365
RPPGM = 001000 #22-288 33-1089 33-1110
RPPRST = 000020 #22-275 48-2271 49-2361
RPRDY = 000200 #22-272
RPREAD = 000070 #22-277 48-2279
RPSET 007614 R 43-1903 #47-2226
RPTRE = 040000 #22-269 48-2292 49-2379
RPUNIT = 000007 #22-283
RPWC = 176702 #22-279 *48-2284 *49-2371
RPWNXT 010100 R #49-2370 49-2388
RPWRIT = 000060 #22-276 49-2366
RPWRT 010020 R 43-1903 #49-2352
RP4CHK 003530 R #33-1081
RP6CHK 003574 R 33-1083 33-1090 #33-1095
RQSKLR 005112 R 37-1293 37-1356 37-1364 #38-1382
RQSTSK 005606 R 38-1396 38-1449 38-1466 #39-1480
RXBAD1 007170 R 43-1902 #45-1957
RXBAD2 007170 R 43-1902 #45-1958
RXBBLK 007172 R #45-1969 45-2077 45-2077
RXBBLX 007332 R 45-1955 #45-2044
RXBMSZ 007364 R 43-1902 #45-2081
RXBNXT 007352 R #45-2072 45-2082
RXBNX1 007356 R 45-2068 #45-2078
RXBOOT 007132 R 43-1902 #45-1939 45-1955 45-2019 45-2038 45-2077 45-2077 45-2093
RXCS = 177170 #22-251 *45-2008 *45-2012 45-2028 46-2119 *46-2164 *46-2203 *46-2207 60-2894
RXDB = 177172 #22-264 *45-2008 *45-2012 45-2028 *46-2164 *46-2203 *46-2207
RXDONE = 000040 #22-255 45-2017 45-2025 46-2161 46-2212
RXEMPT = 000002 #22-259 45-2023
RXERR = 100000 #22-252 45-2017 46-2212
RXFILL = 000000 #22-258 46-2159
RXFUNC = 000016 #22-257
RXGO = 000001 #22-263 45-1948 45-2023 46-2118 46-2159 91-4064
RXINIT = 040000 #22-253
RXREAD = 000006 #22-261 45-1948
RXRERR = 000016 #22-262 91-4063
RXSET 007122 R 43-1902 #44-1911
RXSETX 007126 R #44-1922
RXTREQ = 000200 #22-254 45-2025 46-2161
RXUNIT = 000020 #22-256 45-1946 46-2116
RXWBLK 007454 R 46-2138 46-2138 #46-2153
RXWNXT 007434 R #46-2133 46-2141
RXWRIT = 000004 #22-260 46-2118
RXWRT 007402 R 43-1902 #46-2107
RX.LVL = 000006 #22-250 60-2894 60-2894
R$$11M = 000001 #1-27
R$$20F = 000001 #1-26
SAVE 001170 RG #25-458 25-491 39-1502 41-1654 98-4233
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 19
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
SAVLMT 001164 RG #24-451 26-645
SCD = 000040 #21-159
SETCTY 003032 R #31-940
SETDH 003262 R #31-997
SETDL 003162 R 31-943 #31-975
SETDM 003320 R #31-1013
SETFIL 002060 R 26-603 26-612 #26-619
SETRXF 004774 R 37-1340 #37-1346
SF.FX = ****** GX 32-1067
SOMRXF 005106 R 37-1348 #37-1374
SPSAVE 000000 RG #23-348 *28-865 30-894 30-908
STAT = 174434 #21-159
STATUS = 000022 #21-159
STKLEN = 000200 1-62
STSW0 = ****** GX *31-971
STSW1 = ****** GX *31-967 *31-970 38-1394 *38-1429 *38-1432 *38-1436
SWR = 177570 #21-159
SWSLLT = 100000 #21-159
SXBTHM = 105755 #21-230 37-1310
SYMNTD 004516 R 36-1262 #36-1271
SYMNT1 004526 R 36-1268 #36-1273
SYNERR 001562 R 25-493 25-497 25-509 25-518 #25-551
SYSAVE 002476 R 27-730 #28-765
SYSAV1 002530 R 28-771 #28-776
SYSMSG 004350 R 35-1229 #35-1238
SYSTRT 004222 R 34-1195 #35-1205
S.DI = ****** GX 32-1069 *32-1071
S.FW = ****** GX 32-1067
S..AMC = 000000 #2-89
S..BDT = 000011 #2-100
S..CHK = 000012 #2-101
S..CNK = 000003 #2-93
S..CTY = 000005 #2-95 64-2983
S..DCP = 000013 #2-102
S..DL1 = 000002 #2-91
S..DTE = 000002 #2-92
S..ILS = 000004 #2-94
S..KW1 = 000007 #2-97 69-3162 69-3165 69-3168 70-3194
S..MEM = 000006 #2-96 66-3064 66-3074
S..NCN = 000010 #2-98
S..NXM = 000001 #2-90 92-4076
TCBA = 177346 #22-315 *51-2437 *52-2553
TCBAD1 = 010166 R 43-1904 #51-2431
TCBAD2 = 010166 R 43-1904 #51-2432
TCBMSZ 010332 R 43-1904 #51-2491
TCBNXT 010304 R #51-2478 51-2492
TCBOOT 010162 R 43-1904 #51-2423 51-2452 51-2485 51-2528 52-2568
TCCM = 177342 #22-302 *51-2437 51-2451 51-2458 51-2468 *51-2479 52-2547 *52-2553 52-2567
52-2574 52-2584 *52-2595
TCDT = 177350 #22-316 51-2458 51-2468 52-2574 52-2584
TCENDZ = 100000 #22-301
TCERR = 100000 #22-303
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 20
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TCFUNC = 000016 #22-307
TCGO = 000001 #22-313 51-2493 52-2608
TCRDY = 000200 #22-306
TCREAD = 000004 #22-310 51-2474
TCREV = 004000 #22-304 51-2443 51-2453 51-2461 52-2559 52-2569 52-2577
TCRNUM = 000002 #22-309 51-2441 52-2557
TCSATM = 000000 #22-308
TCSET 010156 R 43-1904 #50-2411
TCST = 177340 #22-300 51-2451 52-2567
TCSTOP = 000010 #22-311 51-2493 52-2608
TCUNIT = 003400 #22-305
TCWC = 177344 #22-314 *51-2479 *52-2595
TCWERR 010562 R 52-2601 #52-2613
TCWNXT 010522 R #52-2594 52-2607
TCWRIT = 000014 #22-312 52-2590
TCWRT 010370 R 43-1904 #52-2546
TC.A16 = 000020 #15-516 90-4035
TC.A17 = 000040 #15-515 90-4035
TC.BAR = 177346 #15-528
TC.CLK = 000100 #15-492
TC.CMD = 177342 #15-500
TC.DAT = 177350 #15-530
TC.DT0 = 000020 #15-494
TC.DT1 = 000010 #15-495
TC.DT2 = 000004 #15-496
TC.D16 = 000001 #15-498 90-4032
TC.D17 = 000002 #15-497 90-4032
TC.ERR = 100000 #15-501
TC.ILO = 010000 #15-486
TC.INE = 000100 #15-514 90-4035 90-4048
TC.LVL = 000006 #15-480 60-2895 60-2895
TC.MMT = 000040 #15-493
TC.MTE = 020000 #15-485
TC.NXM = 000400 #15-490
TC.PAR = 040000 #15-484
TC.RDA = 000006 #15-520
TC.RDY = 000200 #15-513 90-4048
TC.REV = 004000 #15-504 90-4035
TC.RMT = 000002 #15-518
TC.SAT = 000000 #15-517
TC.SST = 000010 #15-521
TC.STS = 177340 #15-482 60-2895
TC.UPS = 000200 #15-491
TC.US0 = 000000 #15-505
TC.US1 = 000400 #15-506
TC.US2 = 001000 #15-507
TC.US3 = 001400 #15-508
TC.US4 = 002000 #15-509
TC.US5 = 002400 #15-510
TC.US6 = 003000 #15-511
TC.US7 = 003400 #15-512 90-4035
TC.VEC = 000214 #15-479 60-2895
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 21
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TC.WCR = 177344 #15-526
TC.WRA = 000016 #15-524
TC.WTM = 000012 #15-522
TC..BM = 002000 #15-488
TC..DI = 010000 #15-503 90-4035
TC..DM = 001000 #15-489
TC..EZ = 100000 #15-483
TC..MM = 020000 #15-502 90-4035
TC..RD = 000004 #15-519
TC..SE = 004000 #15-487
TC..WR = 000014 #15-523
TENAD1 = 174410 #21-159
TENAD2 = 174412 #21-159
TE.BAS = 174400 #16-538
TE.BNX = 000040 #16-539
TE.DG1 = 000030 #16-563
TE.DG2 = 000032 #16-564
TE.DG3 = 000036 #16-590
TE.DYC = 000000 #16-541 85-3911
TE.EAD = 000022 #16-560
TE.EBC = 000016 #16-553
TE.EDT = 000026 #16-562
TE.LVL = 000006 #16-534 60-2897 60-2897
TE.NNN = 000004 #16-537
TE.STW = 000034 #16-568 85-3911
TE.VEC = 000774 #16-535
TE.XAD = 000020 #16-559
TE.XA1 = 000010 #16-545
TE.XA2 = 000012 #16-551
TE.XBC = 000014 #16-552
TE.XDT = 000024 #16-561
TE.XW1 = 000006 #16-544
TE.XW2 = 000004 #16-543
TE.XW3 = 000002 #16-542
TOBM = 000004 #21-159
TOD = 000003 #21-159
TOIP = 000002 #21-159
TOIT = 000001 #21-159
TO10 = 000200 #21-159
TO10AD = 174420 #21-159
TO10BC = 174414 #21-159
TO10BM = 000001 #21-159
TO10DB = 000400 #21-159
TO10DN = 100000 #21-159
TO10DT = 174424 #21-159
TO10ER = 020000 #21-159
TO11 = 000100 #21-159
TO11AD = 174422 #21-159
TO11BC = 174416 #21-159
TO11BM = 020000 #21-159
TO11DB = 004000 #21-159
TO11DN = 000200 #21-159
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 22
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TO11DT = 174426 #21-159
TO11ER = 000002 #21-159
TRPVEC = 000034 #1-31 *63-2969
TSTCHR 017452 R 88-4002 #88-4007
TS.CET = 000001 #16-588
TS.DEI = 000010 #16-584 85-3919
TS.DEP = 010000 #16-547
TS.EBM = 020000 #16-557
TS.EEE = 000040 #16-581 85-3913 85-3919
TS.EET = 000002 #16-586
TS.EEX = 000400 #16-578
TS.EIS = 002000 #16-576
TS.ENT = 000100 #16-580
TS.EPE = 000020 #16-582
TS.ETD = 000200 #16-579
TS.IEN = 000001 #16-587 85-3914 85-3920
TS.IFB = 100000 #16-555
TS.MPE = 001000 #16-577
TS.PEX = 100000 #16-549
TS.POF = 004000 #16-548
TS.RES = 004000 #16-575 85-3919
TS.RM = 000010 #16-583 85-3925
TS.RST = 000100 #16-565 85-3929
TS.TBM = 000001 #16-591
TS.XDN = 000004 #16-585
TS.XEC = 010000 #16-573
TS.XEE = 004000 #16-574
TS.XER = 020000 #16-572
TS.XNT = 100000 #16-570
TS.XTS = 040000 #16-571
TS.ZST = 040000 #16-556
TTYEND = ****** GX 31-1008
TTYEXP = ****** GX *31-976 *31-977 *31-978 *31-979 *31-980 31-999 38-1385
TT.CRW = ****** GX 38-1394
TT.CTY = ****** GX 31-967 31-970 38-1432 38-1436
TT.OUT = ****** GX 38-1429
TT.RIP = ****** GX 38-1394
TYPBUF 000064 R #23-388 41-1618 41-1644 41-1645 42-1821
TYPCR 006260 R 41-1637 #41-1659
TYPDAT 006360 R 41-1637 #41-1721
TYPDEC 006476 R 41-1637 #41-1747
TYPDEV 006302 R 41-1637 #41-1682
TYPDON 006166 R 41-1637 #41-1642
TYPERR 006336 R 41-1637 #41-1693
TYPMAX = 000013 41-1626 #41-1638
TYPMSG 006074 R 25-476 25-476 25-483 25-483 25-530 25-530 25-553 25-553 26-573
26-573 26-585 26-585 26-613 26-613 26-615 26-615 26-684 26-684
26-695 26-695 27-748 27-748 27-752 27-752 27-754 27-754 28-772
28-772 35-1216 35-1216 35-1224 35-1224 35-1230 35-1230 35-1240 35-1240
36-1250 36-1250 36-1263 36-1263 36-1272 36-1272 36-1284 36-1284 37-1298
37-1298 37-1343 37-1343 37-1349 37-1349 37-1359 37-1359 37-1363 37-1363
37-1367 37-1367 38-1441 38-1441 38-1442 38-1442 38-1446 38-1446 38-1469
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 23
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
38-1469 38-1473 38-1473 39-1498 39-1498 #41-1615
TYPMS1 006114 R #41-1624 41-1627 41-1632
TYPNUM 006576 R 41-1687 41-1687 41-1724 41-1724 41-1731 41-1731 41-1734 41-1734 41-1743
41-1749 41-1749 #41-1767
TYPSAV 006252 R 41-1637 #41-1653
TYPSDV 006276 R 41-1637 #41-1676
TYPSTR 006350 R 41-1637 41-1695 #41-1713 41-1715 41-1740 41-1740
TYPTAB 006140 R 41-1631 41-1631 #41-1636 41-1638
TYPTXT 006264 R 41-1637 #41-1666 41-1684 41-1684
TYPWRN 006344 R 41-1637 #41-1703
UNASG1 = 000032 #21-159
UNASG2 = 000033 #21-159
UNASG3 = 000034 #21-159
UNASG4 = 000035 #21-159
UNASG5 = 000036 #21-159
UNASG6 = 000037 #21-159
U.ACP = ****** GX *26-608 *36-1257
U.DACP = ****** GX 42-1824
U.DN = ****** GX 26-576 27-738 36-1252 36-1265 36-1274 41-1683 42-1805
U.LBH = ****** GX *33-1108 *33-1122
U.LBN = ****** GX *33-1107 *33-1121
U.RP = ****** GX 26-575 27-734 *32-1050
U.SZ = ****** GX 26-595 27-756 32-1059 42-1810
U.UN = ****** GX 26-577 27-738 *32-1042 33-1084 36-1252 36-1275 41-1686 42-1807
U.VA = ****** GX 26-604 27-736 27-750 36-1254
VRCHK1 = 000067 #54-2707
VRS = 000022 #1-38
WBFLAG 000046 R #23-360 25-541 *29-875
WEFLAG 000060 R #23-374 35-1214 *49-2396
WEP = 000010 #21-159
WRNMSG 001472 R 41-1704 #41-1708
WRTERR 010146 R 46-2214 49-2360 49-2380 49-2382 #49-2395 52-2614
WSFLAG 000047 R #23-362 *25-467 25-541 *29-873
WTSAVE 002670 R #29-872 29-883
ZSTOP = 040000 #21-159
$BTMSK = ****** GX *31-962
$DIV = ****** GX 26-596 26-596 32-1060 32-1060 47-2240 47-2240
$DSW = ****** GX 27-739 39-1497 42-1854
$UNIT = ****** GX *31-964
$$ = 000037 #25-476 25-476 #25-483 25-483 #25-490 25-490 #25-492 25-492 #25-496
25-496 #25-506 25-506 #25-517 25-517 #25-530 25-530 #25-553 25-553
#26-569 26-569 #26-573 26-573 #26-585 26-585 #26-596 26-596 #26-607
26-607 #26-611 26-611 #26-613 26-613 #26-615 26-615 #26-639 26-639
#26-673 26-673 #26-682 26-682 #26-684 26-684 #26-695 26-695 #26-698
26-698 #27-744 27-744 #27-748 27-748 #27-752 27-752 #27-754 27-754
#28-772 28-772 #29-882 29-882 #30-902 30-902 #32-1039 32-1039 #32-1048
32-1048 #32-1060 32-1060 #33-1105 33-1105 #34-1197 34-1197 #35-1210 35-1210
#35-1216 35-1216 #35-1224 35-1224 #35-1230 35-1230 #35-1240 35-1240 #36-1250
36-1250 #36-1256 36-1256 #36-1260 36-1260 #36-1263 36-1263 #36-1272 36-1272
#36-1281 36-1281 #36-1284 36-1284 #37-1298 37-1298 #37-1307 37-1307 #37-1343
37-1343 #37-1349 37-1349 #37-1359 37-1359 #37-1363 37-1363 #37-1367 37-1367
#38-1441 38-1441 #38-1442 38-1442 #38-1446 38-1446 #38-1464 38-1464 #38-1469
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 24
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
38-1469 #38-1473 38-1473 #39-1498 39-1498 #41-1631 41-1631 #41-1684 41-1684
#41-1687 41-1687 #41-1724 41-1724 #41-1731 41-1731 #41-1734 41-1734 #41-1740
41-1740 #41-1749 41-1749 #41-1785 41-1785 #45-1970 45-1970 #45-1971 45-1971
#45-2077 45-2077 #46-2138 46-2138 #46-2154 46-2154 #46-2155 46-2155 #47-2240
47-2240
$$$ = 001414 R #25-476 25-476 #25-483 25-483 #25-530 25-530 #25-553 25-553 #26-573
26-573 #26-585 26-585 #26-613 26-613 #26-615 26-615 #26-684 26-684
#26-695 26-695 #27-748 27-748 #27-752 27-752 #27-754 27-754 #28-772
28-772 #35-1216 35-1216 #35-1224 35-1224 #35-1230 35-1230 #35-1240 35-1240
#36-1250 36-1250 #36-1263 36-1263 #36-1272 36-1272 #36-1284 36-1284 #37-1298
37-1298 #37-1343 37-1343 #37-1349 37-1349 #37-1359 37-1359 #37-1363 37-1363
#37-1367 37-1367 #38-1441 38-1441 #38-1442 38-1442 #38-1446 38-1446 #38-1469
38-1469 #38-1473 38-1473 #39-1498 39-1498
$$$ADR = 007102 R #43-1902 43-1902 43-1902 43-1902 43-1902 43-1902 43-1902 43-1902 43-1902
43-1902 #43-1903 43-1903 43-1903 43-1903 43-1903 43-1903 43-1903 43-1903
43-1903 43-1903 #43-1904 43-1904 43-1904 43-1904 43-1904 43-1904 43-1904
43-1904 43-1904 43-1904
$$$ARG = 000005 #25-474 25-474 #25-474 25-474 #25-474 25-474 #25-474 25-474 25-474
25-474 25-474 25-474 25-474 25-474 25-474 25-474 25-474 #25-477
25-477 25-477 25-477 25-477 25-477 25-477 25-477 25-477 25-477
25-477 25-477 #26-567 26-567 #26-567 26-567 #26-567 26-567 #26-567
26-567 26-567 26-567 26-567 26-567 26-567 26-567 26-567 26-567
26-567 #27-738 27-738 #27-738 27-738 #27-738 27-738 #27-738 27-738
27-738 27-738 27-738 27-738 27-738 27-738 27-738 27-738 27-738
#36-1252 36-1252 #36-1252 36-1252 #36-1252 36-1252 #36-1252 36-1252 36-1252
36-1252 36-1252 36-1252 36-1252 36-1252 36-1252 36-1252 36-1252 #38-1408
38-1408 38-1408 38-1408 38-1408 38-1408 38-1408 38-1408 38-1408 38-1408
38-1408 #41-1645 41-1645 41-1645 41-1645 41-1645 41-1645 41-1645 41-1645
41-1645 41-1645 41-1645 41-1645 #42-1851 42-1851 42-1851 42-1851 42-1851
42-1851 42-1851 42-1851 42-1851 42-1851 42-1851 42-1851
$$$GLB = ****** 28-766 28-766 28-766 28-766 28-766 28-766 28-766 28-766
$$$OST = 000020 #28-766 28-766 28-766 #28-766 28-766 28-766 #28-766 28-766 28-766
#28-766 28-766 28-766 #28-766 28-766 28-766 #28-766 28-766 28-766
#28-766 28-766 28-766 #28-766 28-766 28-766 #28-766
$$$T1 = 000013 #25-477 25-477 #41-1645 41-1645 #42-1851 42-1851
$$$T2 = 000001 #39-1495 39-1495
.BRCLK = 005000 #21-159
.BTPRM = ****** GX *30-897 30-933 34-1192 38-1389 39-1482
.CECLK = 004000 #21-159
.CLRMR = 006000 #21-159
.CLRUN = 010000 #21-159
.COMEF = ****** GX 28-770 38-1403 38-1405 38-1414 38-1448
.CONBT = 012000 #21-159
.CPUSN = ****** GX *35-1207
.CSHRG = 164000 #21-159
.DATE3 = ****** GX *35-1206
.DQPBA = ****** GX *31-969
.DRLTC = 015000 #21-159
.DSACF = 066000 #21-159
.DSIOJ = 065000 #21-159
.EIOJA = 067000 #21-159
.FEMOD = ****** GX *38-1421
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 25
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.FESTB = ****** GX 66-3043
.GFNR = 102000 #21-159
.HRDWR = ****** GX *35-1208
.INICL = 070000 #21-159
.IRLTC = 014000 #21-159
.KLIWD = ****** GX *39-1494
.KLNMD = ****** GX 38-1416 38-1419 38-1421 *38-1425 38-1430 38-1439 38-1451 38-1453
.KLNSW = ****** GX *38-1419
.LCRDL = 052000 #21-159
.LCRDR = 051000 #21-159
.LCRM1 = 057000 #21-159
.LCRM2 = 056000 #21-159
.LCRM3 = 055000 #21-159
.LCRM4 = 054000 #21-159
.LCRM5 = 053000 #21-159
.LDAR = 077000 #21-159
.LDBRL = 043000 #21-159
.LDBRR = 042000 #21-159
.LDCK1 = 046000 #21-159
.LDCK2 = 047000 #21-159
.LDDIS = 045000 #21-159
.LDRJD = 064000 #21-159
.LDRJV = 063000 #21-159
.LDRM1 = 060000 #21-159
.LDRM2 = 061000 #21-159
.LDRM3 = 062000 #21-159
.LDSEL = 044000 #21-159
.MEMRS = 076000 #21-159
.NOERR = ****** GX *28-777 *34-1196
.PCAB1 = 150000 #21-159
.PCAB2 = 151000 #21-159
.PCAB3 = 152000 #21-159
.PCAB4 = 153000 #21-159
.PRDTE = ****** GX *34-1184 35-1221
.PRSTA = ****** GX *34-1188 *35-1223
.PUDBA = ****** GX 26-594 27-732 32-1058 42-1803
.PUDEA = ****** GX 27-757 42-1811
.RCRM1 = 147000 #21-159
.RCRM2 = 146000 #21-159
.RCRM3 = 145000 #21-159
.RCRM4 = 144000 #21-159
.RCSPF = 141000 #21-159
.RDJ14 = 134000 #21-159
.RDJ71 = 135000 #21-159
.RDMAB = 133000 #21-159
.RPADR = ****** GX 37-1316 37-1335 37-1347 37-1351 37-1369 *37-1375
.SECLK = 003000 #21-159
.SERFG = ****** GX *35-1209
.SETMR = 007000 #21-159
.SETRN = 011000 #21-159
.SSCLK = 002000 #21-159
.STDTA = ****** GX 32-1062
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 26
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.STDTZ = ****** GX 32-1064
.STPCL = 000000 #21-159
.STRCL = 001000 #21-159
.VERNO = ****** GX 35-1239
.WRMBX = 071000 #21-159
..DTP2 = ****** GX 34-1197 34-1197
..ENB0 = ****** GX 35-1210 35-1210
..FSTD = ****** GX 42-1825
..STIN = ****** GX 38-1464 38-1464
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 27
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ALUN$S #21-157 #25-474 #26-567 #27-738 #36-1252
CALL #1-23 #21-158 25-476 25-483 25-490 25-492 25-496 25-506 25-517 25-530
25-553 26-569 26-573 26-585 26-596 26-607 26-611 26-613 26-615 26-639
26-673 26-682 26-684 26-695 26-698 27-744 27-748 27-752 27-754 28-772
29-882 30-902 32-1039 32-1048 32-1060 33-1105 34-1197 35-1210 35-1216 35-1224
35-1230 35-1240 36-1250 36-1256 36-1260 36-1263 36-1272 36-1281 36-1284 37-1298
37-1307 37-1343 37-1349 37-1359 37-1363 37-1367 38-1441 38-1442 38-1446 38-1464
38-1469 38-1473 39-1498 41-1631 41-1684 41-1687 41-1724 41-1731 41-1734 41-1740
41-1749 41-1785 45-1970 45-1971 45-2077 46-2138 46-2154 46-2155 47-2240
CKSERR #59-2863 66-3063 66-3073 67-3116 70-3193 73-3322 76-3467 78-3540 78-3549 81-3715
CK11SC #56-2757 65-3014 66-3064 66-3074 67-3104 67-3111 67-3117 68-3132 69-3162 69-3165
69-3168 70-3194 73-3272 73-3283 73-3323 73-3357 74-3385 74-3395 74-3402 75-3419
75-3423 75-3428 75-3433 75-3438 76-3463 76-3468 77-3522 78-3541 78-3550 79-3565
81-3716 81-3721 81-3728 81-3735 81-3744 81-3760 81-3766 81-3779 81-3790 81-3804
84-3875 84-3887 84-3898 85-3916 85-3922 85-3927 86-3944 87-3968 87-3973 88-3987
88-3992 92-4070 92-4076 93-4106 93-4119 93-4133 93-4141 93-4148 93-4153 93-4158
93-4168
CLEF$S #21-157 38-1383 38-1410
DEVICE #58-2825 #60-2888 #60-2890 #60-2891 #60-2892 #60-2893 #60-2894 #60-2895 #60-2896 #60-2897
#60-2898 #60-2899 #60-2900
DEVTXT #62-2917 #62-2924 #62-2925 #62-2926 #62-2927 #62-2928 #62-2929 #62-2930 #62-2931 #62-2932
#62-2933 #62-2934 #62-2935 #62-2936 #62-2937 #62-2938 #62-2939
DIR$ #25-474 25-474 #25-477 25-477 #26-567 26-567 #27-738 27-738 #28-766 28-766
#36-1252 36-1252 #38-1383 38-1383 #38-1408 38-1408 #38-1409 38-1409 #38-1410 38-1410
#38-1465 38-1465 #39-1495 39-1495 #39-1507 39-1507 #41-1645 41-1645 #42-1851 42-1851
DRIVER #43-1871 #43-1902 #43-1903 #43-1904
ERROR #21-177 #25-530 #25-553 #26-573 #26-585 #26-613 #26-684 #26-695 #27-748 #27-752
#28-772 #35-1216 #38-1469
ERR$ #25-474 #25-477 #26-567 #27-738 #28-766 #36-1252 #38-1383 #38-1408 #38-1409 #38-1410
#38-1465 #39-1495 #39-1507 #41-1645 #42-1851
EXIT$S #21-157 #39-1507
GTIM$S #21-157 #28-766
MFPI #21-158 33-1098 33-1099 34-1148 34-1149 34-1153 34-1154
MFPS #21-158
MOV$ #25-474 #25-474 25-474 25-474 25-474 #25-477 #25-477 25-477 25-477 25-477
25-477 25-477 25-477 #26-567 #26-567 26-567 26-567 26-567 #27-738 #27-738
27-738 27-738 27-738 #28-766 28-766 #36-1252 #36-1252 36-1252 36-1252 36-1252
#38-1383 38-1383 #38-1408 38-1408 38-1408 38-1408 38-1408 #38-1409 38-1409 #38-1410
38-1410 #38-1465 38-1465 #39-1495 39-1495 #41-1645 #41-1645 41-1645 41-1645 41-1645
41-1645 41-1645 41-1645 41-1645 #42-1851 #42-1851 42-1851 42-1851 42-1851 42-1851
42-1851 42-1851 42-1851 42-1851 42-1851
MRKT$S #21-157 38-1408
MTPI #21-158 33-1131 33-1132 34-1176 34-1177 34-1190 34-1191
MTPS #21-158 33-1100 33-1101 34-1150 34-1151 34-1155 34-1156
MVB$ #25-477 25-477 #39-1495 39-1495 #41-1645 41-1645 #42-1851 42-1851
NBL$ #25-474 #25-474 #26-567 #26-567 #27-738 #27-738 #36-1252 #36-1252
ND #17-594 55-2730 55-2731 55-2732 55-2733
OFF$ #28-766 28-766 28-766 28-766 28-766 28-766 28-766 28-766 28-766
POP #21-158 27-745 30-909 36-1261 41-1647 41-1648 41-1787 45-2034 46-2218 47-2243
95-4211 95-4211 95-4211
PUSH #21-158 #25-476 #25-483 #25-530 #25-553 #26-573 #26-585 #26-613 #26-615 #26-684
#26-695 #27-743 #27-748 #27-752 #27-754 #28-772 #28-844 #35-1216 #35-1224 #35-1230
SAVE CREATED BY MACRO ON 4-AUG-81 AT 12:38 PAGE 28
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
#35-1240 #36-1250 #36-1259 #36-1263 #36-1272 #36-1284 #37-1298 #37-1343 #37-1349 #37-1359
#37-1363 #37-1367 #38-1441 #38-1442 #38-1446 #38-1469 #38-1473 #39-1498 #41-1616 #41-1782
#45-1955 #45-1975 #45-1981 #45-2065 #45-2089 #45-2091 #46-2170 #46-2176 #47-2238 #48-2326
#48-2333 #48-2335 #51-2517 #51-2524 #51-2526 #95-4211 #95-4211 #95-4211 #95-4211 #95-4211
QDPB$S #25-477 #25-477 #41-1645 #41-1645 #42-1851 #42-1851
QIOSY$ #21-157 21-160
QIOW$S #21-157 25-477 41-1645 42-1851
RETURN #1-23 #21-158 40-1536 40-1566 40-1592 41-1649 41-1672 41-1689 41-1717 41-1751
41-1790 42-1815 42-1863 44-1924 45-2036 46-2143 46-2220 47-2244 49-2389 50-2413
52-2609
RFA$ #39-1495 39-1495 39-1495
RQST$S #21-157 39-1495
RVP$ #25-474 #25-474 #25-477 #25-477 #26-567 #26-567 #27-738 #27-738 #36-1252 #36-1252
#38-1408 #38-1408 #41-1645 #41-1645 #42-1851 #42-1851
SPD #24-430 #24-434 #24-435 #24-436 #24-437 #24-438 #24-439 #24-440 #24-441 #24-442
#24-443 #24-444 #24-445 #24-446 #24-447 #24-448 #24-449
STOPCD #2-107
TYPE #21-164 25-476 25-483 25-530 25-553 26-573 26-585 26-613 26-615 26-684
26-695 27-748 27-752 27-754 28-772 35-1216 35-1224 35-1230 35-1240 36-1250
36-1263 36-1272 36-1284 37-1298 37-1343 37-1349 37-1359 37-1363 37-1367 38-1441
38-1442 38-1446 38-1469 38-1473 39-1498
WARN #21-181 #26-615 #36-1263 #36-1284 #37-1298 #37-1343 #37-1349 #37-1359 #37-1363 #37-1367
#38-1441 #38-1442 #38-1446 #38-1473 #39-1498
WTSE$S #21-157 #38-1409 #38-1465
$CKINT #57-2794 #81-3677 #81-3678 #81-3680 #84-3870 #85-3919 #86-3951 #87-3978 #88-3997 #90-4048
#91-4058
$DEF #21-157 #21-159
.CKTTS #17-598 95-4211
.ENB #21-158 #35-1234
.ENB6 #21-158 #38-1438
.INH #21-158 #28-778 #35-1232
.INH6 #21-158 #38-1413