Trailing-Edge
-
PDP-10 Archives
-
AP-4178E-RM
-
swskit-sources/save.lis
There is 1 other file named save.lis in the archive. Click here to see a list.
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41
TABLE OF CONTENTS
2- 2 TITLE PAGE
3- 70 GENERAL DESCRIPTION OF SAVE FUNCTION
4- 142 MACROS AND PARAMETERS
5- 240 DEVICE REGISTER DEFINITIONS
6- 333 SAVE TASK IMPURE DATA AREA
7- 388 PURE DATA
8- 442 PARSE COMMAND LINE
9- 543 SETUP SAVE FILE
10- 712 DISMOUNT ALL MOUNTED VOLUMES
11- 754 SAVE SYSTEM STATE
12- 861 WRITE SAVE FILE AND BOOT
13- 878 RESTORE SYSTEM STATE
14- 917 RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
15- 980 RESTORE -- REDIRECT SY0: TO BOOT DEVICE
16-1033 RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
17-1091 RESTORE -- CHECK ALL THE DTE-20'S
18-1155 RESTORE -- RESTART SYSTEM AND TYPE HERALD
19-1196 RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
20-1220 RESTORE -- READ HOM BLOCKS ON BOOT DB
21-1311 RESTORE -- CKECK STATE OF KLINIK LINE
22-1403 RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
23-1437 COMMAND PARSER ROUTINES
24-1521 TYPEOUT ROUTINES
25-1719 FILE I/O ROUTINES
26-1792 DRIVER TABLES
27-1834 RX-11 FLOPPY DISK ROUTINES
28-1853 RX-11 BOOTSTRAP
29-2024 RX-11 WRITE ROUTINE
30-2149 RP04/RP06 DISK ROUTINES
31-2182 RP04/RP06 BOOTSTRAP
32-2268 RP04/RP06 WRITE ROUTINE
33-2326 TC-11 DECTAPE ROUTINES
34-2342 TC-11 BOOTSTRAP
35-2459 TC-11 WRITE ROUTINE
36-2543 END STATEMENT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 2
RSXDC -- RSX20F CONDITIONAL DEFINITION MODULE
1 .TITLE SAVE -- MCR FUNCTION 'SAV' FOR RSX-20F
2 .SBTTL TITLE PAGE
3 .IDENT /010050/
4 ;
5 ;
6 ;
7 ; COPYRIGHT (C) 1975, 1978 BY
8 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
9 ;
10 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
11 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
12 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
13 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
14 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
15 ;
16 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
17 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
18 ; CORPORATION.
19 ;
20 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
21 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
22 ;
23 ;
24 ;
25 ;
26 ;
27 ;
28 ;
29 ; MODULE: MCR FUNCTION -- SAV
30 ;
31 ; VERSION: VX10-05
32 ;
33 ; AUTHOR: TOM PORCHER
34 ;
35 ; DATE: 10-SEP-75
36 ;
37 ;
38 ; THIS MODULE CONTAINS:
39 ;
40 ; -- GENERAL FUNCTIONAL DESCRIPTION
41 ;
42 ; -- COMMAND PARSER FOR SAV
43 ;
44 ; -- CODE TO SAVE MACHINE STATE
45 ;
46 ; -- CODE TO WRITE BOOTSTRAP AND SAVE FILE
47 ;
48 ; -- CODE TO RESTORE SAVED SYSTEM AND RESTART
49 ;
50 ; -- RX-11 FLOPPY DISK I/O DRIVER ROUTINES
51 ;
52 ; -- RP DISK I/O DRIVER ROUTINES
53 ;
54 ; -- TC-11 DECTAPE I/O DRIVER ROUTINES
55 ;
56 ; MODIFICATIONS:
57 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 2-1
TITLE PAGE
58 ; NO. DATE PROGRAMMER PURPOSE
59 ; --- ---- ---------- -------
60 ; 001 23-MAY-77 R. BELANGER SUPPORT KLINIK ACTIVITY
61 ; ON REBOOT.
62 ; 002 31-MAY-77 R. BELANGER MODIFY TO SAVE ONLY IMAGE
63 ; OF EXEC AND SAVE TASK.
64 ; 003 1-JUN-77 A. PECKHAM MODIFY REFERENCE TO SYSTEM
65 ; VERSION NUMBER.
66 ; 004 01-JUL-77 R. BELANGER ADD KLINIK EVENT LOGGING
67 ; 005 10-NOV-77 R. BELANGER ADD CODE TO RESET DL11'S (SETDL)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 3
TITLE PAGE
69
70 .SBTTL GENERAL DESCRIPTION OF SAVE FUNCTION
71 ;
72 ;+
73 ;
74 ; SAV IS INVOKED BY THE COMMAND 'MCR SAV' TO THE
75 ; RSX-20F CONSOLE COMMAND LANGUAGE. IT ACCEPTS ONE LINE FROM THE
76 ; CONSOLE WHICH HAS THE FOLLOWING FORMAT:
77 ;
78 ; [$<SP>] [<ALPHA> <ALPHA> [$<DIGIT>]] [":"] [$<SP>] ["/" <MODIFIER>] <EOL>
79 ;
80 ; WHERE $<THING> MEANS ANY NUMBER OF <THING>S
81 ; [<THING>] MEANS OPTIONAL <THING>
82 ; "<THING>" MEANS LITERALLY <THING>
83 ; <SP> IS SPACE, <EOL> IS ANY END-OF-LINE SEQUENCE,
84 ; <DIGIT> IS ONE OF 0,1,2,3,4,5,6,7
85 ; <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
86 ; <MODIFIER> IS ONE OF WB,WS,AB,EX,MO,DM,RH,PI
87 ;
88 ;
89 ; **** NOTE THAT SAVE MUST BE CALLED ONLY WHEN THE SYSTEM IS QUIESCENT,
90 ; **** I.E. WITH NO PENDING INTERRUPTS, AND THE DTE QUEUED PROTOCOL NOT
91 ; **** RUNNING.
92 ;
93 ; SAVE FINDS THE PHYSICAL DISK ADDRESS OF FILE (5,5) WHICH IS
94 ; THE SYSTEM IMAGE FILE. IF THE FILE IS NOT ALLOCATED, IT IS ALLOCATED
95 ; TO THE SIZE OF THE CURRENT SYSTEM (.MSIZE) CONTIGUOUSLY. SAVE
96 ; THEN TURNS OFF THE INTERRUPT SYSTEM (PRIORITY 7) AND SAVES THE
97 ; STATE OF THE SYSTEM HARDWARE (KT-11 IF ANY), THEN COPIES LOW CORE
98 ; (FIRST 256. WORDS) INTO A SAVE AREA. THE PROPER BOOT FOR THE
99 ; REQUESTED DEVICE IS WRITTEN INTO LOW CORE. THE SYSTEM IMAGE FILE IS WRITTEN,
100 ; USING THE DISK ROUTINES IN SAVE INSTEAD OF THE SYSTEM DISK DRIVERS TO PRESERVE
101 ; THE INTEGRITY OF THE SYSTEM IMAGE. IF WRITE BOOT (/WB) WAS SPECIFIED, THE PROPER
102 ; BOOTSTRAP IS ALSO WRITTEN ON BLOCK ZERO OF THE SPECIFIED DEVICE.
103 ; SAVE THEN ENTERS THE RESTORE CODE, AS IF THE SYSTEM HAD JUST BEEN
104 ; LOADED, SPECIFYING NO SYSTEM INITIALIZATION.
105 ;
106 ; WHEN THE BOOTSTRAP ROM IS INITIATED (BY ONE OF THE BUTTONS)
107 ; BLOCK ZERO OF THE DEVICE IS READ INTO THE FIRST 256. WORDS OF MEMORY.
108 ; THIS CODE THEN READS THE REMAINDER OF THE SYSTEM INTO CORE, READING
109 ; OVER ITSELF, SINCE THE BOOTSTRAP IS ALSO CONTAINED IN THE FIRST
110 ; BLOCK OF THE SYSTEM IMAGE. THE BOOTSTRAP THEN TRANSFERS CONTROL
111 ; (IN USER MODE) TO THE RESTORE CODE, CONTINUING EXECUTION OF THE
112 ; SAVE TASK.
113 ;
114 ; THE SYSTEM STATE IS RESTORED BY FIRST RESTORING LOW CORE FROM
115 ; THE SAVE AREA. THE KT-11 REGISTERS ARE RESTORED (IF THEY WERE SAVED).
116 ; A POWER-RECOVERY
117 ; IS SIMULATED BY SETTING EV.PR IN .SERFG, AND INTERRUPTS ARE
118 ; RE-ENABLED, AT PRIORITY ZERO. THE TOPS HOM BLOCKS ARE
119 ; READ FROM RP BOOT UNIT (IF RP BOOT) TO FIND WHERE THE RSX-20F FILE SYSTEM
120 ; IS ON THAT PACK. WARNINGS ARE PRINTED IF THE HOM BLOCKS CANNOT BE READ,
121 ; THE HOM BLOCKS ARE INCONSISTENT, OR THE RSX-20F FILE SYSTEM IS NOT SET UP.
122 ; IF NO HOM BLOCKS ARE FOUND, THE PACK IS ASSUMED TO BE ENTIRELY AN RSX-20F
123 ; FILE SYSTEM.
124 ;
125 ; IF THE PARAMETER FROM THE ROM
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 3-1
GENERAL DESCRIPTION OF SAVE FUNCTION
126 ; INDICATES SYSTEM INITIALIZATION IS NECCESARY (BP.LD1!BP.LD0 = 00 OR 11)
127 ; A REQUEST FOR THE SYSTEM INITIALIZATION TASK SYSINI IS MADE.
128 ; A SYSTEM RESTART MESSAGE IS ALSO PRINTED. THE SAVE TASK THEN EXITS.
129 ;
130 ; AVAILABLE MODIFIERS:
131 ; /WB (OFF) WRITE BOOT
132 ; /WS (ON) WRITE SAVE FILE
133 ; /AB (OFF) SAVE TO FIXED DISK ADDRESS (NEAR END OF VOLUME) (ONLY IF FTABS DEFINED)
134 ; /EX (ON) EXIT AFTER SAVE COMPLETE
135 ; /MO (OFF) MOUNT VOLUME BEFORE CREATING SAVE FILE
136 ; /DM (OFF) DISMOUNT VOLUME AFTER CREATING SAVE FILE
137 ; /RH (ON) READ HOM BLOCKS TO FIND RSX-20F FILE SYSTEM
138 ;
139 ;-
140 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 4
MACROS AND PARAMETERS
142 .SBTTL MACROS AND PARAMETERS
143 ;
144 ; ASSEMBLY CONDITIONS
145 ;
146 .LIST MEB
147 .ENABLE AMA
148 ;
149 ; MISC. .MCALLS
150 ;
151 .MCALL $DEF,QIOSY$,ALUN$S,QIOW$S,GTIM$S,EXIT$S,RQST$S,CLEF$S,MRKT$S,WTSE$S
152 .MCALL CALL,RETURN,PUSH,POP,MTPI,MFPI,MFPS,MTPS,.INH,.ENB,.INH6,.ENB6
153 000000 $DEF
154 000000 QIOSY$
155 ;
156 ; MACROS
157 ;
158 .MACRO TYPE MSG,ARG
159 .PSECT TEXT
160 $$$=.
161 .ASCIZ "MSG"
162 .PSECT
163 PUSH #$$$
164 .IF NB <ARG>
165 CALL TYP'ARG
166 .IFF
167 CALL TYPMSG
168 .ENDC
169 .ENDM TYPE
170 ;
171 .MACRO ERROR MSG
172 TYPE <"<11>"MSG"<5>">
173 .ENDM ERROR
174 ;
175 .MACRO WARN MSG
176 TYPE <"<12>"MSG"<1>">
177 .ENDM WARN
178 ;
179 ;
180 ; PARAMETERS
181 ;
182 ; DEFINE "FTABS= 1" TO ALLOW FOR /AB (ABSOLUTE SAVE)
183 ;
184 ; LUN ASSIGNMENTS
185 ;
186 000001 CTYLUN= 1 ;LUN FOR CTY
187 000002 DSKLUN= 2 ;LUN FOR SAVE DEVICE
188 ;
189 ; EVENT FLAGS
190 ;
191 000001 E.FQIO= 1 ; (1) QIO WAIT REQUEST
192 000001 EF.QIO=BIT0
193 ;
194 000002 E.FTMO= 2 ; +++001 (2) TIME OUT FLAG
195 000002 EF.TMO=BIT1
196 ;
197 000003 E.FLOG= 3 ; +++004 (3) KLINIK LOG DONE FLAG
198 000004 E.FLOG=BIT2 ; +++004
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 4-1
MACROS AND PARAMETERS
199 ;
200 ; BOOTSTRAP ROM PARAMETER BITS
201 ;
202 100000 BP.ERR= BIT15 ;INDEFINITE ERROR RETRY
203 074000 BP.CLN= BIT14!BIT13!BIT12!BIT11 ;CONSOLE LINE NUMBER (WITHIN DH/DL)
204 003400 BP.UNT= BIT10!BIT9!BIT8 ;BOOT UNIT NUMBER OR DH UNIT NUMBER
205 000200 BP.RP4= BIT7 ;LOAD FROM RP04/RP06
206 000170 BP.CSP= BIT6!BIT5!BIT4!BIT3 ;CONSOLE SPEED IF DH, 1 IF DL, 0 IF DEFAULT
207 000004 BP.LD1= BIT2 ;LOAD CONDITION BITS
208 000002 BP.LD0= BIT1 ; . . .
209 ; .EQ. 00 -- AUTO DEADSTART ENTIRE SYSTEM
210 ; .EQ. 01 -- DEADSTART RSX20F ONLY
211 ; .EQ. 10 -- REBOOT RSX20F
212 ; .EQ. 11 -- OPERATOR CONTROLLED (RE)START
213 000001 BP.SWR= BIT0 ;SWITCH REGISTER BUTTON PUSHED
214 ;
215 ; PS BITS
216 ;
217 140000 PS.USR= BIT15!BIT14
218 030000 PS.PUS= BIT13!BIT12
219 004000 PS.REG= BIT11
220 ;
221 ; WORDS IN HOM BLOCK
222 ;
223 000000 HOMNAM= 0 ;SIXBIT/HOM/
224 105755 SXBTHM= 105755 ; TRUNCATED TO 16 BITS
225 000061 HOMFE0= 61 ;ADDRESS OF -11 FILE SYSTEM
226 000062 HOMFE1= 62 ;SIZE OF FILE SYSTEM
227 ;
228 ; EXTEND CONTROL BITS FOR QUEUE I/O FUNCTION IO.EXT
229 ; IN BYTE I.EXTD+1 OF REQUEST
230 ;
231 000001 EX.AC1= BIT0 ;ALLOCATE CONTIGUOUS SPACE
232 000004 EX.FCO= BIT2 ;MAKE FILE CONTIGUOUS
233 000200 EX.ENA= BIT7 ;ENABLE EXTEND
234 ;
235 ; ACCESS CONTROL BITS FOR QUEUE I/O ACCESS FUNCTIONS
236 ; IN BYTE I.ACTL OF REQUEST
237 ;
238 000200 AC.ENA= BIT7 ;ENABLE ACCESS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 5
DEVICE REGISTER DEFINITIONS
240 .SBTTL DEVICE REGISTER DEFINITIONS
241 ;
242 ; RX-11 DEVICE REGISTER DEFINITIONS
243 ;
244 177170 RXCS= 177170 ;CONTROL AND STATUS REGISTER
245 100000 RXERR= BIT15 ;ERROR
246 040000 RXINIT= BIT14 ;INITIALIZE RX-11
247 000200 RXTREQ= BIT7 ;TRANSFER REQUEST
248 000040 RXDONE= BIT5 ;TRANSFER DONE
249 000020 RXUNIT= BIT4 ;UNIT SELECT
250 000016 RXFUNC= BIT3!BIT2!BIT1 ;FUNCTION:
251 000000 RXFILL= 0*BIT1 ; FILL SECTOR BUFFER
252 000002 RXEMPT= 1*BIT1 ; EMPTY SECTOR BUFFER
253 000004 RXWRIT= 2*BIT1 ; WRITE SECTOR
254 000006 RXREAD= 3*BIT1 ; READ SECTOR
255 000016 RXRERR= 7*BIT1 ; READ ERROR REGISTER
256 000001 RXGO= BIT0 ;START FUNCTION
257 177172 RXDB= 177172 ;MULTI-PURPOSE DATA BUFFER REGISTER (BYTE)
258 ;
259 ; RP04/RP06 DEVICE REGISTER DEFINITIONS
260 ;
261 176700 RPCS1= 176700 ;CONTROL/STATUS REGISTER 1
262 040000 RPTRE= BIT14 ;TRANSFER ERROR
263 020000 RPMCPE= BIT13 ;MASSBUS CONTROL PARITY ERROR
264 004000 RPDVA= BIT11 ;DRIVE AVAILABLE (TO -11)
265 000200 RPRDY= BIT7 ;READY FOR FUNCTION
266 000076 RPFUNC= BIT5!BIT4!BIT3!BIT2!BIT1 ;FUNCTION:
267 000000 RPNOOP= 0*BIT1 ; NO-OP
268 000020 RPPRST= 10*BIT1 ; READ-IN PRESET
269 000060 RPWRIT= 30*BIT1 ; WRITE DATA
270 000070 RPREAD= 34*BIT1 ; READ DATA
271 000001 RPGO= BIT0 ;START FUNCTION
272 176702 RPWC= 176702 ;WORD COUNT REGISTER
273 176704 RPBA= 176704 ;UNIBUS ADDRESS REGISTER
274 176706 RPDA= 176706 ;TRACK (HIGH BYTE) SECTOR (LOW BYTE)
275 176710 RPCS2= 176710 ;CONTROL/STATUS REGISTER 2
276 000007 RPUNIT= BIT2!BIT1!BIT0 ;UNIT #
277 176712 RPDS= 176712 ;DRIVE STATUS REGISTER
278 100000 RPATA= BIT15 ;DRIVE ATTENTION ACTIVE
279 040000 RPERR= BIT14 ;DRIVE ERROR
280 010000 RPMOL= BIT12 ;MEDIUM ON-LINE
281 001000 RPPGM= BIT9 ;PROGRAMMABLE (A/B) MODE
282 000400 RPDPR= BIT8 ;DRIVE PRESENT
283 176726 RPDT= 176726 ;DRIVE TYPE REGISTER
284 000020 RPDT04= 20 ;TYPE= RP04
285 000022 RPDT06= 22 ;TYPE= RP06
286 176732 RPOF= 176732 ;OFFSET REGISTER
287 010000 RPFM22= BIT12 ;22-SECTOR FORMAT
288 004000 RPECCI= BIT11 ;INHIBIT ERROR CORRECTION
289 176734 RPDC= 176734 ;DESIRED CYLINDER
290 ;
291 ; TC-11 DECTAPE DEVICE REGISTER DEFINITIONS
292 ;
293 177340 TCST= 177340 ;STATUS REGISTER
294 100000 TCENDZ= BIT15 ;END-ZONE ERROR
295 177342 TCCM= 177342 ;COMMAND REGISTER
296 100000 TCERR= BIT15 ;ERROR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 5-1
DEVICE REGISTER DEFINITIONS
297 004000 TCREV= BIT11 ;REVERSE DIRECTION (TOWARD FOWARD END-ZONE)
298 003400 TCUNIT= BIT10!BIT9!BIT8 ;UNIT SELECT
299 000200 TCRDY= BIT7 ;READY
300 000016 TCFUNC= BIT3!BIT2!BIT1 ;FUNCTION:
301 000000 TCSATM= 0*BIT1 ; STOP ALL TAPE MOTION
302 000002 TCRNUM= 1*BIT1 ; READ BLOCK NUMBERS
303 000004 TCREAD= 2*BIT1 ; READ DATA
304 000010 TCSTOP= 4*BIT1 ; STOP SELECTED TAPE
305 000014 TCWRIT= 6*BIT1 ; WRITE DATA
306 000001 TCGO= BIT0 ;START FUNCTION
307 177344 TCWC= 177344 ;WORD COUNT REGISTER
308 177346 TCBA= 177346 ;BUS ADDRESS REGISTER
309 177350 TCDT= 177350 ;DATA REGISTER
310 ;
311 ; DTE-20 DEVICE REGISTER DEFINITIONS
312 ;
313 000774 DTVECA= 774 ;DTE-20 #0 INTERRUPT VECTOR (THEY GO DOWN!)
314 174400 DTEXPA= 174400 ;EXTERNAL PAGE ADDRESS OF DTE #0
315 000040 DTEXPZ= 40 ;SIZE OF ADDRESS BLOCK FOR DTE
316 ;
317 000034 DTSTAT= 34 ;STATUS REGISTER
318 004000 DT11DB= BIT11 ;(READ/WRITE) TO -11 DOORBELL
319 002000 DTCL11= BIT10 ;(WRITE) CLEAR TO -11
320 000040 DTINON= BIT5 ;(WRITE) INTERRUPT ENABLE
321 000010 DTINOF= BIT3 ;(WRITE) INTERRUPT DISABLE
322 000010 DTRSMD= BIT3 ;(READ) RESTRICTED MODE
323 ;
324 ; DH-11 DEVICE REGISTER DEFINITIONS
325 ;
326 160020 DHEXPA= 160020 ;EXTERNAL PAGE ADDRESS OF FIRST DH-11
327 000020 DHEXPZ= 20 ;SIZE OF ADDRESS SPACE FOR ONE DH
328 ;
329 ; KL-11 LINE CLOCK REGISTER DEFINITION
330 ;
331 177546 LKS= 177546
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 6
SAVE TASK IMPURE DATA AREA
333 .SBTTL SAVE TASK IMPURE DATA AREA
334 ;
335 ; VARIBLES
336 ;
337 000000 SPSAVE: .BLKW 1 ;SAVE'S SP IN IMAGE
338 000002 DRVADR: .BLKW 1 ;ADDRESS OF DRIVER TABLE ENTRY FOR DEVICE
339 000004 DSKADR: .BLKW 2 ;PHYSICAL DISK ADDRESS OF SAVE FILE
340 000010 DSKSIZ: .BLKW 2 ;SIZE OF SAVE FILE *** MUST FOLLOW DSKADR ***
341 000014 MEMSIZ: .BLKW 1 ;SIZE OF SYSTEM IN 32. WORD BLOCKS
342 000016 RADIX: .BLKW 1 ;OUTPUT RADIX FOR TYPNUM
343 000020 GTIMBF: .BLKW 8. ;GET TIME PARAMETERS RETURN BLOCK
344 000040 CMDCLR: ;START OF AREA TO CLEAR ON STARTUP
345 000040 PUDADR: .BLKW 1 ;ADDRESS OF SAVE DEVICE PUD ENTRY
346 000042 DEVNAM: .BLKW 1 ;DEVICE NAME
347 000044 DEVUNT: .BLKB 1 ;DEVICE UNIT #
348 000045 PUDIDX: .BLKB 1 ;PUD INDEX FOR THE SAVE DEVICE
349 000046 WBFLAG: .BLKB 1 ;WRITE BOOT FLAG: 0 DON'T WRITE BOOT
350 ; 1 WRITE BOOT (/WB SPECFIED)
351 000047 WSFLAG: .BLKB 1 ;1-- WRITE SAVE FILE
352 .IF DF FTABS
353 ABFLAG: .BLKB 1 ;1-- SAVE AT ABSOLUTE PLACE ON DISK
354 .ENDC ; .IF DF FTABS
355 000050 EXFLAG: .BLKB 1 ;1-- EXIT WHEN DONE WITH SAVE
356 000051 MOFLAG: .BLKB 1 ;1-- MOUNT DEVICE BEFORE CREATING SAVE FILE
357 000052 DMFLAG: .BLKB 1 ;1-- DISMOUNT ALL DEVICES AFTER CREATING SAVE FILE
358 000053 RHFLAG: .BLKB 1 ;1-- READ HOME BLOCKS
359 000054 RNFLAG: .BLKB 1 ;1-- RP NOT READY
360 000055 RPFLAG: .BLKB 1 ;1-- RP NOT IN A/B MODE
361 000056 QEFLAG: .BLKB 1 ;NON-ZERO-- QIO ERROR CODE FROM FILQIO
362 000057 ACFLAG: .BLKB 1 ;FLAG ACCESS DONE
363 000060 WEFLAG: .BLKB 1 ;WRITE ERROR FLAG: 0 WRITE OK
364 ; 1 WRITE ERROR DURING SAVE
365 000061 DEFLAG: .BLKB 1 ;DTE-20 # NOT AT PRI 6 (-1 IF ALL OK)
366 000022 CMDCLN=.-CMDCLR ;LENGTH OF AREA TO CLEAR
367 ;
368 ; SAVE AREA FOR LOW CORE
369 ;
370 .EVEN
371 000062 LOWCOR:
372 ;
373 ; MISC. BUFFERS (OVERWRITTEN BY LOW CORE)
374 ;
375 000062 HOMBUF: ;BUFFER FOR HOM BLOCKS
376 000062 TYPBUF: .BLKB 100. ;BUFFER FOR CTY OUTPUT
377 000226 CTYBUF: .BLKB 80. ;BUFFER FOR INPUT FROM CTY
378 000120 CTYBFL= .-CTYBUF
379 000346 000 .BYTE 0 ;TO MAKE ASCIZ ALWAYS
380 .EVEN
381 .BLKB <256.*2.>-<.-LOWCOR> ;REST OF LOW CORE
382 001062 QIOSTS: .BLKW 2 ;QIO STATUS BLOCK
383 001066 LOGBUF: ; +++004 KLINIK LOG BUFFER
384 001066 000004 .WORD 4 ; +++004
385 001070 000000G .WORD DV.LOG ; +++004
386 001072 000000 .WORD 0 ; +++004
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 7
PURE DATA
388 .SBTTL PURE DATA
389 ;
390 ; FILE ID BLOCK
391 ;
392 001074 000005 000005 FIDBLK: .WORD 5,5 ;FILE ID 5, FIL SEQ # 5 IS SYSTEM SAVE FILE
393 ;
394 ; ATTRIBUTE CONTROL BLOCK
395 ;
396 001100 367 ATCBLK: .BYTE -9. ;ATTRIBUTE 9 (STATISTICS BLOCK), READ
397 001101 010 .BYTE 8. ;8. BYTES OF STATISTICS (FILE ADDR AND SIZE)
398 001102 000004' .WORD DSKADR ;STORE IN DSKADR AND DSKSIZ
399 001104 000 000 .BYTE 0,0 ;END OF ATTRIBUTE CONTROL BLOCK
400 ;
401 ; MOUNT/DISMOUNT FUNCTION BLOCKS
402 ;
403 001106 001 MNTBLK: .BYTE 1 ;FUNCTION: MOUNT
404 001107 001 .BYTE 1 ;LENGTH OF STRING
405 001110 001112' .WORD 1$ ;ADDRESS OF STRING
406 001112 072 1$: .ASCII /:/
407 .EVEN
408 ;
409 001114 002 DMTBLK: .BYTE 2 ;FUNCTION: DISMOUNT
410 001115 000 .BYTE 0 ;NO STRING
411 ;
412 ; TASK NAME FOR KL INITIALIZATION TASK
413 ;
414 001116 131574 043251 KLINIT: .RAD50 /...KLI/ ;KL INITIALIZATION TASK NAME
415 ;
416 ; TABLE OF SPEED WORDS FOR CONSOLE DH FROM BOOT PARAMETER, BP.SPD
417 ;
418 .MACRO SPD A,B
419 .WORD <A*BIT10>!<A*BIT6>!<B>
420 .ENDM SPD
421 001122 DHSTAB:
422 001122 SPD 0,0 ;(0) CONSOLE NOT SPECIFIED
001122 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
423 001124 SPD 0,0 ;(1) DL-11 LINE, NO SPEED
001124 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
424 001126 SPD 0,0 ;(2) DL-11 LINE, NO SPEED
001126 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
425 001130 SPD 3,BIT2!BIT1!BIT0 ;(3) 110 BAUD, 8 DATA BITS, 2 STOP BITS
001130 006307 .WORD <3*BIT10>!<3*BIT6>!<BIT2!BIT1!BIT0>
426 001132 SPD 4,BIT2!BIT1 ;(4) 134.5 BAUD, 7 DATA BITS, 2 STOP BITS
001132 010406 .WORD <4*BIT10>!<4*BIT6>!<BIT2!BIT1>
427 001134 SPD 5,BIT2!BIT1!BIT0 ;(5) 150 BAUD, 8 DATA BITS, 2 STOP BITS
001134 012507 .WORD <5*BIT10>!<5*BIT6>!<BIT2!BIT1!BIT0>
428 001136 SPD 6,BIT2!BIT1!BIT0 ;(6) 200 BAUD, 8 DATA BITS, 2 STOP BITS
001136 014607 .WORD <6*BIT10>!<6*BIT6>!<BIT2!BIT1!BIT0>
429 001140 SPD 7,BIT1!BIT0 ;(7) 300 BAUD, 8 DATA BITS, 1 STOP BIT
001140 016703 .WORD <7*BIT10>!<7*BIT6>!<BIT1!BIT0>
430 001142 SPD 10,BIT1!BIT0 ;(10) 600 BAUD, 8 DATA BITS, 1 STOP BIT
001142 021003 .WORD <10*BIT10>!<10*BIT6>!<BIT1!BIT0>
431 001144 SPD 11,BIT1!BIT0 ;(11) 1200 BAUD, 8 DATA BITS, 1 STOP BIT
001144 023103 .WORD <11*BIT10>!<11*BIT6>!<BIT1!BIT0>
432 001146 SPD 12,BIT1!BIT0 ;(12) 1800 BAUD, 8 DATA BITS, 1 STOP BIT
001146 025203 .WORD <12*BIT10>!<12*BIT6>!<BIT1!BIT0>
433 001150 SPD 13,BIT1!BIT0 ;(13) 2400 BAUD, 8 DATA BITS, 1 STOP BIT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 7-1
PURE DATA
001150 027303 .WORD <13*BIT10>!<13*BIT6>!<BIT1!BIT0>
434 001152 SPD 14,BIT1!BIT0 ;(14) 4800 BAUD, 8 DATA BITS, 1 STOP BIT
001152 031403 .WORD <14*BIT10>!<14*BIT6>!<BIT1!BIT0>
435 001154 SPD 15,BIT1!BIT0 ;(15) 9600 BAUD, 8 DATA BITS, 1 STOP BIT
001154 033503 .WORD <15*BIT10>!<15*BIT6>!<BIT1!BIT0>
436 001156 SPD 0,0 ;(16) DL-11, 8 DATA BITS, NO SPEED
001156 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
437 001160 SPD 0,0 ;(17) DL-11, NO SPEED
001160 000000 .WORD <0*BIT10>!<0*BIT6>!<0>
438
439 001162 SAVLMT: ; +++002 SAVE IMAGE LIMITS
440 001162 000000 000000 .LIMIT ; +++002
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 8
PARSE COMMAND LINE
442 .SBTTL PARSE COMMAND LINE
443 ;
444 ; REQUEST FOR SAVE BY MCR SAV COMMAND CALLS SAVE HERE
445 ;
446 001166 SAVE:
447 ;
448 ; SETUP COMMAND DEFAULTS
449 ;
450 001166 012701 000040' MOV #CMDCLR,R1 ;GET START OF AREA TO CLEAR
451 001172 012705 000022 MOV #CMDCLN,R5 ;AND LENGTH OF AREA, IN BYTES
452 001176 10$:
453 001176 105021 CLRB (R1)+ ;CLEAR A BYTE
454 001200 077502 SOB R5,10$ ;CLEAR 'EM ALL
455 001202 105237 000047' INCB WSFLAG ;DEFAULT TO WRITE SAVE FILE
456 001206 105237 000050' INCB EXFLAG ; AND TO EXIT WHEN DONE
457 001212 105237 000053' INCB RHFLAG ; AND TO READ HOME BLOCKS
458 001216 105237 000052' INCB DMFLAG ; AND TO DISMOUNT ALL VOLUMES
459 ;
460 ; SETUP TO READ A LINE FROM THE CTY
461 ;
462 001222 ALUN$S #CTYLUN,#"TT,#0 ;ASSIGN CTY TO LUN 1
001222 005046 CLR -(SP)
001224 012746 052124 MOV #"TT,-(SP)
001230 012746 000001 MOV #CTYLUN,-(SP)
001234 012746 MOV (PC)+,-(SP)
001236 007 004 .BYTE 7.,4
001240 104375 EMT 375
463 001242 103530 BCS EXITA ;GIVE UP IF NO CTY!!!!
464 001244 TYPE ^\SAV>\ ;TYPE PROMPT MESSAGE
000000 123 101 126 .ASCIZ "SAV>"
000003 076 000
001244 012746 000000' MOV #$$$,-(SP)
001250 004737 005622' JSR PC,TYPMSG
465 001254 QIOW$S #IO.RLB,#CTYLUN,#E.FQIO,,#QIOSTS,,<#CTYBUF,#CTYBFL>
001254 012746 000120 MOV #CTYBFL,-(SP)
001260 012746 000226' MOV #CTYBUF,-(SP)
001264 005046 CLR -(SP)
001266 012746 001062' MOV #QIOSTS,-(SP)
001272 005046 CLR -(SP)
001274 112716 000001 MOVB #E.FQIO,(SP)
001300 012746 000001 MOV #CTYLUN,-(SP)
001304 012746 001000 MOV #IO.RLB,-(SP)
001310 012746 MOV (PC)+,-(SP)
001312 003 010 .BYTE 3,$$$T1
001314 104375 EMT 375
466 001316 103502 BCS EXITA ;GIVE UP IF FAILURE
467 001320 105737 001062' TSTB QIOSTS+0 ;ERROR STATUS
468 001324 002477 BLT EXITA ;YES-- THAT'S ENOUGH
469 001326 122737 000003 001063' CMPB #'C-100,QIOSTS+1 ;THIS TERMINATED BY ^C?
470 001334 001473 BEQ EXITA ;YES-- GIVE UP FAST
471 001336 TYPE <"<1>"> ;INSURE A <CR><LF>
000005 001 000 .ASCIZ ""<1>""
001336 012746 000005' MOV #$$$,-(SP)
001342 004737 005622' JSR PC,TYPMSG
472 001346 013704 001064' MOV QIOSTS+2,R4 ;GET # CHARACTERS TYPED AT ME
473 001352 105064 000226' CLRB CTYBUF(R4) ;CLEAR LAST BYTE OF INPUT (MAKE ASCIZZZ)
474 001356 012704 000226' MOV #CTYBUF,R4 ;POINT TO START OF INPUT TO PARSE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 8-1
PARSE COMMAND LINE
475 ;
476 ; NOW TO PARSE THE LINE
477 ;
478 001362 CALL GETNB ;GET NON-BLANK CHARACTER
001362 004737 005470' JSR PC,GETNB
479 001366 001677 BEQ SAVE ;BACK TO SAVE IF NULL COMMAND
480 001370 CALL GETNAM ;GET A DEVICE NAME
001370 004737 005512' JSR PC,GETNAM
481 001374 103471 BCS SYNERR ;NO SUCH LUCK
482 001376 010037 000042' MOV R0,DEVNAM ;SAVE THE TYPED NAME
483 001402 001411 BEQ 20$ ;NULL NAME-- GO ON FOR MODIFIERS
484 001404 CALL GETNUM ;GET UNIT NUMBER OF DEVICE (IF ANY)
001404 004737 005556' JSR PC,GETNUM
485 001410 103463 BCS SYNERR ;TOO BIG-- COMPLAIN
486 001412 110037 000044' MOVB R0,DEVUNT ;SAVE THE UNIT NUMBER
487 001416 122724 000072 CMPB #':,(R4)+ ; : FOLLOWING DEVICE?
488 001422 001401 BEQ 20$ ;YES-- IGNORE IT
489 001424 105744 TSTB -(R4) ;NO-- GO BACK TO LOOK AT IT AGAIN
490 ;
491 ; LOOK FOR ALL MODIFIERS
492 ;
493 001426 20$:
494 001426 CALL GETNB ;SKIP BLANKS AFTER UNIT
001426 004737 005470' JSR PC,GETNB
495 001432 001457 BEQ CMDONE ;END OF COMMAND-- ALL OK
496 001434 122700 000057 CMPB #'/,R0 ;THIS A MODIFIER?
497 001440 001047 BNE SYNERR ;NO-- BAD CHARACTER
498 001442 105724 TSTB (R4)+ ;YES-- SKIP OVER IT
499 001444 012702 000001 MOV #1,R2 ;ASSUME NOT /-(SW)
500 001450 122714 000055 CMPB #'-,(R4) ;THIS /-(SW)?
501 001454 001002 BNE 30$ ;NO-- GO ON
502 001456 105724 TSTB (R4)+ ;YES-- SKIP OVER -
503 001460 005002 CLR R2 ;AND SET TO CLEAR THE FLAG
504 001462 30$:
505 001462 CALL GETNAM ;GET THE MODIFIER
001462 004737 005512' JSR PC,GETNAM
506 001466 103434 BCS SYNERR ;TOO LONG-- GIVE UP
507 001470 012701 001530' MOV #MODTBL,R1 ;GET ADDRESS OF SWITCH TABLE
508 001474 012705 000006 MOV #MODTLN,R5 ; AND LENGTH OF IT
509 001500 40$:
510 001500 020021 CMP R0,(R1)+ ;THIS MODIFIER MATCH?
511 001502 001002 BNE 50$ ;NO-- LOOP FOR MORE
512 001504 110231 MOVB R2,@(R1)+ ;YES-- SET THE FLAG AS REQUESTED
513 001506 000747 BR 20$ ;LOOP FOR ALL MODIFIERS
514 ;
515 001510 50$:
516 001510 005721 TST (R1)+ ;NO-- SKIP OVER FLAG ADDRESS
517 001512 077506 SOB R5,40$ ;NO-- LOOP FOR ALL MODIFIERS
518 001514 ERROR <ILLEGAL MODIFIER /"<2>">
000007 011 111 114 .ASCIZ ""<11>"ILLEGAL MODIFIER /"<2>""<5>""
000012 114 105 107
000015 101 114 040
000020 115 117 104
000023 111 106 111
000026 105 122 040
000031 057 002 005
000034 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 8-2
PARSE COMMAND LINE
001514 012746 000007' MOV #$$$,-(SP)
001520 004737 005622' JSR PC,TYPMSG
519 001524 EXITA:
520 001524 000137 005460' JMP EXIT ;TOO FAR TO HOP
521 ;
522 ; MODIFIER TABLE
523 ;
524 001530 MODTBL:
525 .IRP ARG,<WB,WS,EX,MO,DM,RH>
526 .ASCII /ARG/
527 .EVEN
528 .WORD ARG'FLAG
529 .ENDM
001530 127 102 .ASCII /WB/
001532 000046' .WORD WBFLAG
001534 127 123 .ASCII /WS/
001536 000047' .WORD WSFLAG
001540 105 130 .ASCII /EX/
001542 000050' .WORD EXFLAG
001544 115 117 .ASCII /MO/
001546 000051' .WORD MOFLAG
001550 104 115 .ASCII /DM/
001552 000052' .WORD DMFLAG
001554 122 110 .ASCII /RH/
001556 000053' .WORD RHFLAG
530 .IF DF FTABS
531 .ASCII /AB/
532 .EVEN
533 .WORD ABFLAG
534 .ENDC ; .IF DF FTABS
535 000006 MODTLN=<.-MODTBL>/4
536 ;
537 ; COMMAND ERRORS
538 ;
539 001560 SYNERR:
540 001560 010400 MOV R4,R0 ;POINT INPUT STRING TO OUTPUT STRING
541 001562 ERROR <SYNTAX ERROR: "<4>">
000035 011 123 131 .ASCIZ ""<11>"SYNTAX ERROR: "<4>""<5>""
000040 116 124 101
000043 130 040 105
000046 122 122 117
000051 122 072 040
000054 004 005 000
001562 012746 000035' MOV #$$$,-(SP)
001566 004737 005622' JSR PC,TYPMSG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 9
SETUP SAVE FILE
543 .SBTTL SETUP SAVE FILE
544 ;
545 ; THE COMMAND STRING IS NOW PARSED. CHECK OUT THE DEVICE HE SPECIFIED.
546 ;
547 001572 CMDONE:
548 001572 013701 000044' MOV DEVUNT,R1 ;GET SPECIFIED UNIT
549 001576 013700 000042' MOV DEVNAM,R0 ;GET DEVICE SPECIFIED
550 001602 001003 BNE 10$ ;SPECIFIED-- GO ASSIGN IT
551 001604 012700 054523 MOV #"SY,R0 ;NONE-- DEFAULT TO SYSTEM DEVICE
552 001610 005001 CLR R1 ; SY0:
553 ;
554 001612 10$:
555 001612 ALUN$S #DSKLUN,R0,R1 ;ASSIGN THE DEVICE TO LUN 2
001612 010146 MOV R1,-(SP)
001614 010046 MOV R0,-(SP)
001616 012746 000002 MOV #DSKLUN,-(SP)
001622 012746 MOV (PC)+,-(SP)
001624 007 004 .BYTE 7.,4
001626 104375 EMT 375
556 001630 103403 BCS DNSERR ;OOPS-- DEVICE NOT IN SYSTEM
557 001632 CALL FINDEV ;FIND PUD ENTRY ADDRESS FOR DEVICE
001632 004737 006402' JSR PC,FINDEV
558 001636 103006 BCC DEVCHK ;OK-- CHECK THE DEVICE OUT
559 001640 DNSERR:
560 001640 012705 000042' MOV #DEVNAM,R5 ;POINT TO DEVICE NAME/UNIT #
561 001644 ERROR <DEVICE "<3>" NOT IN SYSTEM>
000057 011 104 105 .ASCIZ ""<11>"DEVICE "<3>" NOT IN SYSTEM"<5>""
000062 126 111 103
000065 105 040 003
000070 040 116 117
000073 124 040 111
000076 116 040 123
000101 131 123 124
000104 105 115 005
000107 000
001644 012746 000057' MOV #$$$,-(SP)
001650 004737 005622' JSR PC,TYPMSG
562 001654 DEVCHK:
563 001654 016505 000000G MOV U.RP(R5),R5 ; BUT GET REAL DEVICE
564 001660 016537 000000G 000042' MOV U.DN(R5),DEVNAM ;SAVE THE REAL DEVICE NAME
565 001666 116537 000000G 000044' MOVB U.UN(R5),DEVUNT ;SAVE THE REAL UNIT #
566 001674 012700 006570' MOV #DRVTAB,R0 ;GET ADR OF DRIVER TABLE
567 001700 10$:
568 001700 026037 000000 000042' CMP DRVNAM(R0),DEVNAM ;MATCH?
569 001706 001411 BEQ DEVOK ;YES-- GO ON
570 001710 062700 000020 ADD #DRVSIZ,R0 ;BUMP TO NEXT DRIVER ENTRY
571 001714 020027 006650' CMP R0,#DRVTAB+DRVTBZ ;BEYOND END?
572 001720 103767 BLO 10$ ;NO-- LOOP UNTIL WE FIND DEVICE
573 001722 ERROR <ILLEGAL DEVICE "<3>">
000110 011 111 114 .ASCIZ ""<11>"ILLEGAL DEVICE "<3>""<5>""
000113 114 105 107
000116 101 114 040
000121 104 105 126
000124 111 103 105
000127 040 003 005
000132 000
001722 012746 000110' MOV #$$$,-(SP)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 9-1
SETUP SAVE FILE
001726 004737 005622' JSR PC,TYPMSG
574 001732 DEVOK:
575 001732 023727 000042' 041104 CMP DEVNAM,#"DB ;THIS AN RP04/RP06?
576 001740 001402 BEQ 10$ ;YES-- OK
577 001742 105037 000053' CLRB RHFLAG ;NO-- DON'T READ HOM BLOCKS
578 001746 10$:
579 001746 010037 000002' MOV R0,DRVADR ;SAVE DRIVER TABLE ENTRY ADDRESS
580 001752 010537 000040' MOV R5,PUDADR ;SAVE THE PUD ADDRESS OF THE SAVE DEVICE
581 001756 010500 MOV R5,R0 ;COPY THE PUD ADDRESS
582 001760 162700 000000G SUB #.PUDBA,R0 ;MAKE R0 INDEX INTO THE PUD
583 001764 012701 000000G MOV #U.SZ,R1 ;COMPUTE AN INDEX
584 001770 CALL $DIV ; INTO THE PUD
001770 004737 000000G JSR PC,$DIV
585 001774 110037 000045' MOVB R0,PUDIDX ;SAVE THE INDEX
586 ;
587 ; MOUNT THE SPECIFIED VOLUME IF /MO TYPED
588 ;
589 002000 DEVMNT:
590 002000 105737 000051' TSTB MOFLAG ;/MO?
591 002004 001424 BEQ SETFIL ;NO-- DON'T MOUNT THE DEVICE
592 002006 005765 000000G TST U.VA(R5) ;IS THE VOLUME MOUNTED?
593 002012 001015 BNE MOUNTD ;YES-- GO ON
594 ;
595 002014 CALL FNDACP ;FIND ACP ADDRESS
002014 004737 006440' JSR PC,FNDACP
596 002020 010265 000000G MOV R2,U.ACP(R5) ;SAVE THE ADDRESS SO MOUNT DOESN'T COMPLAIN
597 ;
598 002024 012702 001106' MOV #MNTBLK,R2 ;SET TO MOUNT VOLUME
599 002030 CALL FILMNT ;DO THE MOUNT
002030 004737 006460' JSR PC,FILMNT
600 002034 103010 BCC SETFIL ;OK-- GO ON
601 002036 ERROR <MOUNT ERROR "<7>">
000133 011 115 117 .ASCIZ ""<11>"MOUNT ERROR "<7>""<5>""
000136 125 116 124
000141 040 105 122
000144 122 117 122
000147 040 007 005
000152 000
002036 012746 000133' MOV #$$$,-(SP)
002042 004737 005622' JSR PC,TYPMSG
602 002046 MOUNTD:
603 002046 WARN <DEVICE "<3>" ALREADY MOUNTED>
000153 012 104 105 .ASCIZ ""<12>"DEVICE "<3>" ALREADY MOUNTED"<1>""
000156 126 111 103
000161 105 040 003
000164 040 101 114
000167 122 105 101
000172 104 131 040
000175 115 117 125
000200 116 124 105
000203 104 001 000
002046 012746 000153' MOV #$$$,-(SP)
002052 004737 005622' JSR PC,TYPMSG
604 ;
605 ; SET UP DISK ADDRESS TO SPECIFIC PLACE IF /AB (ABSOLUTE) SPECIFIED
606 ;
607 002056 SETFIL:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 9-2
SETUP SAVE FILE
608 .IF DF FTABS
609 TSTB ABFLAG ;ABSOLUTE DISK SAVE?
610 BNE FILABS ;YES-- SET UP ABSOLUTE FILE
611 .ENDC ; .IF DF FTABS
612 ; BR FILFND ;NO-- FIND FILE (5,5)
613 ;
614 ; FIND SAVE FILE (5,5) AND EXTEND IT IF NECESSARY
615 ;
616 002056 FILFND:
617 002056 012701 001074' MOV #FIDBLK,R1 ;ADDRESS OF FILE-ID BLOCK FOR (5,5)
618 ;
619 ; DO AN ACCESS FOR EXTEND TO FIND IF FILE EXISTS AND WHERE IT IS
620 ;
621 002062 012700 007400 MOV #IO.ACE,R0 ;SET TO ACCESS FOR EXTEND
622 002066 012702 001100' MOV #ATCBLK,R2 ;SET UP ATTRIBUTE CONTROL BLOCK ADDRESS
623 002072 005003 CLR R3 ;NO EXTEND CONTROOL
624 002074 005004 CLR R4 ; . .
625 002076 012705 MOV (PC)+,R5 ;ENABLE ACCESS
626 002100 000 200 .BYTE 0,AC.ENA ; . .
627 002102 CALL FILQIO ;DO IT TO (5,5)
002102 004737 006474' JSR PC,FILQIO
628 002106 103444 BCS 15$ ;ERROR-- JUST CLOSE FILE
629 ;
630 ; FIND OUT HOW BIG THE SAVE FILE SHOULD BE AND SEE IF IT IS BIG ENOUGH
631 ; CURRENT SIZE IS RETURNED IN DSKSIZ+0, DSKSIZ+2 BY ACCESS
632 ;
633 002110 013704 001164' MOV SAVLMT+2,R4 ; +++002 GET UPPER TASK LIMIT
634 002114 062704 003777 ADD #3777,R4 ; +++002 ROUND UP
635 002120 042704 003777 BIC #3777,R4 ; +++002 TO NEXT K OF WORDS
636 002124 000241 CLC ; +++002 CLEAR SIGN BIT AND
637 002126 006004 ROR R4 ; +++002 CONVERT TO 32. WORD BLOCKS
638 002130 006204 ASR R4 ; +++002
639 002132 006204 ASR R4 ; +++002
640 002134 006204 ASR R4 ; +++002
641 002136 006204 ASR R4 ; +++002
642 002140 006204 ASR R4 ; +++002
643 002142 010437 000014' MOV R4,MEMSIZ ;SAVE THIS FOR WRITING FILE
644 002146 006204 ASR R4 ;CONVERT 32. WORD BLOCKS TO 64. WORD BLOCKS
645 002150 006204 ASR R4 ; 128. WORD BLOCKS
646 002152 006204 ASR R4 ; 256. WORD BLOCKS
647 002154 105737 000010' TSTB DSKSIZ+0 ;IS FILE BIGGER THAN 2**16 BLOCKS????
648 002160 003017 BGT 15$ ;YES-- CERTAINLY BIG ENOUGH
649 002162 163704 000012' SUB DSKSIZ+2,R4 ;NO-- FIND HOW MUCH MORE SPACE WE NEED
650 002166 003414 BLE 15$ ;BIG ENOUGH-- JUST CLOSE
651 002170 113737 000057' 000056' MOVB ACFLAG,QEFLAG ;ERROR IF WE WERE HERE BEFORE
652 002176 001010 BNE 15$ ;SO GIVE ERROR
653 ;
654 ; FILE IS NOT BIG ENOUGH-- DO AN EXTEND ON IT, EXTEND INCREMENT IN R4
655 ;
656 002200 012700 011400 MOV #IO.EXT,R0 ;NOT ENOUGH-- SET TO EXTEND FILE
657 002204 012703 MOV (PC)+,R3 ;MAKE FILE CONTIGUOUS,
658 002206 000 205 .BYTE 0,EX.ENA!EX.AC1!EX.FCO ; HIGH EXTEND INCREMENT= 0
659 002210 005002 CLR R2 ;NO ATTRIB
660 002212 005005 CLR R5 ; AND NO ACCESS
661 002214 CALL FILQIO ;DO IT TO (5,5), EXTEND INCREMENT IN R4
002214 004737 006474' JSR PC,FILQIO
662 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 9-3
SETUP SAVE FILE
663 ; DEACCESS FILE. R5= 0 IF EXTEND DONE, QEFLAG= -VE IF ERROR OCCURED
664 ;
665 002220 15$:
666 002220 012700 010000 MOV #IO.DAC,R0 ;DE-ACCESS FILE
667 002224 005002 CLR R2 ;NO ATTRIBUTE CONTROL BLOCK
668 002226 005003 CLR R3 ;NO EXTEND BITS
669 002230 005004 CLR R4 ; . .
670 002232 CALL FILQIO ;DO IT TO (5,5)
002232 004737 006474' JSR PC,FILQIO
671 002236 103004 BCC FILCHK ;NO ERRRORS-- GO CHECK OUT THE FILE
672 002240 ERROR <CREATE SAVE FILE (5,5) ERROR "<7>">
000206 011 103 122 .ASCIZ ""<11>"CREATE SAVE FILE (5,5) ERROR "<7>""<5>""
000211 105 101 124
000214 105 040 123
000217 101 126 105
000222 040 106 111
000225 114 105 040
000230 050 065 054
000233 065 051 040
000236 105 122 122
000241 117 122 040
000244 007 005 000
002240 012746 000206' MOV #$$$,-(SP)
002244 004737 005622' JSR PC,TYPMSG
673 002250 FILCHK:
674 002250 105237 000057' INCB ACFLAG ;FLAG ONE ACCESS
675 002254 005705 TST R5 ;DID WE DO AN EXTEND?
676 002256 001677 BEQ FILFND ;YES-- GO BACK AND RE-ACCESS
677 002260 005000 CLR R0 ;GET HIGH
678 002262 153700 000004' BISB DSKADR+0,R0 ; DISK ADDRESS (WITHOUT SIGN-EXTEND)
679 002266 013701 000006' MOV DSKADR+2,R1 ;AND ALSO LOW PART
680 002272 001006 BNE FILOK ;NON-ZERO-- WE HAVE A FILE
681 002274 005700 TST R0 ;ZERO-- HIGH PART ZERO TOO?
682 002276 001004 BNE FILOK ;NO-- FILE MUST BE CONTIGUOUS (LUCKILY)
683 002300 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 106 111 114
000260 105 040 050
000263 065 054 065
000266 051 040 116
000271 117 124 040
000274 103 117 116
000277 124 111 107
000302 125 117 125
000305 123 005 000
002300 012746 000247' MOV #$$$,-(SP)
002304 004737 005622' JSR PC,TYPMSG
684 002310 FILOK:
685 002310 013705 000002' MOV DRVADR,R5 ;GET ADDRESS OF DRIVER TABLE ENTRY
686 002314 CALL @DRVSET(R5) ;CALL PROPER ROUTINE TO SET ADDRESS
002314 004775 000002 JSR PC,@DRVSET(R5)
687 .IF DF FTABS
688 BR FILSET ;SAVE ADDRESSES AND GO ON
689 ;
690 ; SAVE TO ABSOLUTE DISK ADDRESS-- SET UP DSKADR+0, DSKADR+2
691 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 9-4
SETUP SAVE FILE
692 FILABS:
693 MOV SAVLMT+2,R5 ; +++002 GET UPPER TASK LIMIT
694 ADD #3777,R5 ; +++002 ROUND UP
695 BIC #3777,R5 ; +++002 TO NEXT K OF WORDS
696 CLC ; +++002 CLEAR SIGN BIT AND
697 ROR R5 ; +++002 CONVERT TO 32. WORD BLOCKS
698 ASR R5 ; +++002
699 ASR R5 ; +++002
700 ASR R5 ; +++002
701 ASR R5 ; +++002
702 ASR R5 ; +++002
703 MOV R5,MEMSIZ ;SAVE THIS FOR WRITING FILE
704 MOV DRVADR,R5 ;GET ADDRESS OF DRIVER TABLE ENTRY
705 CALL @DRVABS(R5) ;CALL PROPER ABSOLUTE SET ROUTINE
706 .ENDC ; .IF DF FTABS
707 002320 FILSET:
708 002320 010037 000004' MOV R0,DSKADR+0 ;SAVE THE ADDRESS
709 002324 010137 000006' MOV R1,DSKADR+2 ; BOTH HALVES
710 ; BR FILDMO ;GO DISMOUNT (IF /DM)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 10
DISMOUNT ALL MOUNTED VOLUMES
712 .SBTTL DISMOUNT ALL MOUNTED VOLUMES
713 ;
714 ; DO DISMOUNT OF ALL VOLUMES IF /DM SPECIFIED
715 ;
716 002330 FILDMO:
717 002330 105737 000052' TSTB DMFLAG ;HE WANT IT DISMOUNTED?
718 002334 001472 BEQ SYSAVE ;NO-- JUST GO SAVE SYSTEM
719 002336 012702 001114' MOV #DMTBLK,R2 ;YES-- SET TO DISMOUNT
720 002342 012705 000000G MOV #.PUDBA,R5 ;START AT BEGINNINING OF THE PUD
721 002346 FILDM1:
722 002346 020565 000000G CMP R5,U.RP(R5) ;REDIRECTED?
723 002352 001056 BNE FILDMX ;YES-- WE'LL FIND THE REAL ONE
724 002354 005765 000000G TST U.VA(R5) ;IS VOLUME MOUNTED?
725 002360 001453 BEQ FILDMX ;NO-- JUST GO ON
726 002362 ALUN$S #DSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN THIS DEVICE
002362 016546 000000G MOV U.UN(R5),-(SP)
002366 016546 000000G MOV U.DN(R5),-(SP)
002372 012746 000002 MOV #DSKLUN,-(SP)
002376 012746 MOV (PC)+,-(SP)
002400 007 004 .BYTE 7.,4
002402 104375 EMT 375
727 002404 013700 000000G MOV $DSW,R0 ;(IN CASE OF ERROR)
728 002410 103420 BCS DMOERR ;OOPS-- THIS CAN'T HAPPEN!!!!
729 ;
730 002412 016500 000000G MOV U.ACP(R5),R0 ;GET THE ACP ADDRESS OF THE VOLUME
731 002416 001410 BEQ FILDM2 ;OOPS-- MOUNTED WITH NO ACP????
732 002420 126037 000000G 000045' CMPB S.DI(R0),PUDIDX ;IS THIS ACP ON THE SAVE DEVICE?
733 002426 001404 BEQ FILDM2 ;YES-- THAT'S OK
734 002430 ERROR <ACP FOR "<3>" NOT ON "<10>">
000310 011 101 103 .ASCIZ ""<11>"ACP FOR "<3>" NOT ON "<10>""<5>""
000313 120 040 106
000316 117 122 040
000321 003 040 116
000324 117 124 040
000327 117 116 040
000332 010 005 000
002430 012746 000310' MOV #$$$,-(SP)
002434 004737 005622' JSR PC,TYPMSG
735 002440 FILDM2:
736 002440 PUSH R5 ;SAVE THE PUD POINTER
002440 010546 MOV R5,-(SP)
737 002442 CALL FILMNT ;DO THE DISMOUNT FUNCTION
002442 004737 006460' JSR PC,FILMNT
738 002446 POP R5 ;RESTORE THE POINTER
002446 012605 MOV (SP)+,R5
739 002450 103004 BCC FILDM3 ;OK-- GO ON TO NEXT ENTRY
740 002452 DMOERR:
741 002452 ERROR <"<3>" DISMOUNT ERROR "<7>">
000335 011 003 040 .ASCIZ ""<11>""<3>" DISMOUNT ERROR "<7>""<5>""
000340 104 111 123
000343 115 117 125
000346 116 124 040
000351 105 122 122
000354 117 122 040
000357 007 005 000
002452 012746 000335' MOV #$$$,-(SP)
002456 004737 005622' JSR PC,TYPMSG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 10-1
DISMOUNT ALL MOUNTED VOLUMES
742 002462 FILDM3:
743 002462 005765 000000G TST U.VA(R5) ;DID IT REALLY DISMOUNT THE VOLUME?
744 002466 001404 BEQ FILDM4 ;YES-- OK
745 002470 ERROR <"<3>" CANNOT BE DISMOUNTED>
000362 011 003 040 .ASCIZ ""<11>""<3>" CANNOT BE DISMOUNTED"<5>""
000365 103 101 116
000370 116 117 124
000373 040 102 105
000376 040 104 111
000401 123 115 117
000404 125 116 124
000407 105 104 005
000412 000
002470 012746 000362' MOV #$$$,-(SP)
002474 004737 005622' JSR PC,TYPMSG
746 002500 FILDM4:
747 002500 TYPE <["<3>" DISMOUNTED]"<1>">
000413 133 003 040 .ASCIZ "["<3>" DISMOUNTED]"<1>""
000416 104 111 123
000421 115 117 125
000424 116 124 105
000427 104 135 001
000432 000
002500 012746 000413' MOV #$$$,-(SP)
002504 004737 005622' JSR PC,TYPMSG
748 002510 FILDMX:
749 002510 062705 000000G ADD #U.SZ,R5 ;OK-- BUMP TO NEXT ENTRY IN THE PUD
750 002514 020527 000000G CMP R5,#.PUDEA ;AT THE END OF THE PUD?
751 002520 103712 BLO FILDM1 ;NOPE-- BACK FOR SOME MORE
752 ; BR SYSAVE ;YES-- ON TO SAVE THE SYSTEM
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 11
SAVE SYSTEM STATE
754 .SBTTL SAVE SYSTEM STATE
755 ;
756 ; GET CURRENT TIME STUFF FOR TYPE-OUT
757 ;
758 002522 SYSAVE:
759 002522 GTIM$S #GTIMBF ;GET CURRENT TIME PARAMETERS FOR SAVE FILE
002522 012746 000020' MOV #GTIMBF,-(SP)
002526 012746 MOV (PC)+,-(SP)
002530 073 002 .BYTE 59.,2
002532 104375 EMT 375
760 ;
761 ; SEE IF QUEUED PROTOCOL IS RUNNING. IF SO, WE CANNOT CONTINUE.
762 ;
763 002534 032737 000000C 000002G BIT #EF.PR1!EF.PR2,.COMEF+2 ;IS ANY PROTOCOL RUNNING ?
764 002542 001404 BEQ SYSAV1 ;NO-- ALL OK
765 002544 ERROR <DTE-20 PROTOCOL RUNNING>
000433 011 104 124 .ASCIZ ""<11>"DTE-20 PROTOCOL RUNNING"<5>""
000436 105 055 062
000441 060 040 120
000444 122 117 124
000447 117 103 117
000452 114 040 122
000455 125 116 116
000460 111 116 107
000463 005 000
002544 012746 000433' MOV #$$$,-(SP)
002550 004737 005622' JSR PC,TYPMSG
766 ;
767 ; RAISE PRIORITY TO 7 TO LOCK OUT INTERRUPTS
768 ;
769 002554 SYSAV1:
770 002554 012737 000401 000000G MOV #401,.NOERR ;DIS-ALLOW KL ERROR REPORTING
771 002562 .INH ;;;AND RAISE TO PRIORITY 7
002562 013746 177776 MOV PS,-(SP)
002566 112737 000340 177776 MOVB #PR7,@#PS ;;
772 ;
773 ; TURN THE CLOCK OFF
774 ;
775 002574 005037 177546 CLR @#LKS ;;;CLEAR CLOCK STATUS
776 ;
777 ; FIX UP BOTH BOOTS TO POINT TO US AND THE RIGHT FILE
778 ;
779 002600 013705 000002' MOV DRVADR,R5 ;;;GET DRIVER TABLE ENTRY ADDRESS
780 002604 013775 000014' 000010 MOV MEMSIZ,@DRVMSZ(R5) ;;;SET SIZE OF MEMORY
781 002612 013775 000004' 000012 MOV DSKADR+0,@DRVAD1(R5) ;;;SET FIRST HALF OF DISK ADDRESS
782 002620 013775 000006' 000014 MOV DSKADR+2,@DRVAD2(R5) ;;; AND SECOND HALF
783 .IF DF M$$MGE
784 MOV UPAR0,@DRVUP0(R5) ;;;ALSO OUR PAGE ADDRESS
785 .ENDC
786 ;
787 ; SET BOOT PARAMTER IN R0 WITH LOAD FLAGS= 01 (SO KLINIT WON'T BE CALLED)
788 ;
789 002626 113700 000044' MOVB DEVUNT,R0 ;;;GET THE DEVICE UNIT #
790 002632 000300 SWAB R0 ;;;SET IT TO BITS 10-8
791 002634 056500 000016 BIS DRVBTP(R5),R0 ;;;SET PROPER BIT IN BOOT PARAMETER WORD
792 002640 052700 000002 BIS #BP.LD0,R0 ;;;SET FLAGS= 01
793 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 11-1
SAVE SYSTEM STATE
794 ; SAVE KT-11 STUFF, IF ANY
795 ;
796 002644 042737 030000 177776 BIC #PS.PUS,@#PS ;;;SET PREVIOUS MODE KERNAL
797 .IF DF M$$MGE
798 MOV #KPDR0,R1 ;;;ADDRESS KERNAL DR'S
799 MOV #KPAR0,R2 ;;; AND KERNAL AR'S
800 MOV #UPDR0,R3 ;;; USER DR'S
801 MOV #UPAR0,R4 ;;; AND AR'S
802 MOV #8.,R5 ;;;8 REGITERS PER SET
803 30$:
804 PUSH <(R1)+,(R2)+,(R3)+,(R4)+> ;;;SAVE ALL ON STACK
805 SOB R5,30$ ;;;ALL OF 'EM
806 PUSH <R1,R2,R3,R4> ;;;SAVE ADDR'S TO RESTORE
807 ;
808 ; SAVE STACK LIMIT AND KERNAL SP
809 ;
810 PUSH STKLIM ;;;SAVE STACK LIMIT
811 MFPI SP ;;; AND KERNAL STACK
812 ;
813 ; POINT TO ABSOLUTE ZERO, USING UPAR1, FOR COPY OF BOOT
814 ;
815 MOV #77406,UPDR1 ;;;MAP MAXIMUM SIZE (4096 WORDS)
816 CLR UPAR1 ;;; TO REAL ABSOLUTE ZERO
817 MOV #20000,R1 ;;; FROM 20000 IN VIRTUAL SPACE
818 .IFF
819 002652 005001 CLR R1 ;;;ADDRESS ABSOLUTE 0 (NO KT-11)
820 .ENDC
821 ;
822 ; COPY LOW CORE (FIRST 256. WORDS) TO SAVE AREA LOWCOR, AND
823 ; COPY PROPER BOOT TO LOW CORE.
824 ;
825 ; NOTE THAT R1 POINTS TO ABSOLUTE ZERO, KT-11 OR NOT
826 ;
827 002654 013705 000002' MOV DRVADR,R5 ;;;GET DRIVER ADDRESS BACK
828 002660 016503 000004 MOV DRVBOT(R5),R3 ;;;GET ADDRESS OF BOOT CODE
829 002664 012702 000062' MOV #LOWCOR,R2 ;;;POINT TO SAVE AREA
830 002670 012704 000400 MOV #256.,R4 ;;;COPY 256. WORDS
831 002674 41$:
832 002674 011122 MOV (R1),(R2)+ ;;;MOVE A WORD TO SAVE AREA
833 002676 012321 MOV (R3)+,(R1)+ ;;; AND COPY A WORD OF BOOT
834 002700 077403 SOB R4,41$ ;;;COPY ALL 256
835 ;
836 002702 010041 MOV R0,-(R1) ;;;SAVE BOOT PARAMETER AT LOCATION 776
837 002704 PUSH <R1,R2> ;;;SAVE POINTERS FOR RESTORE
002704 010146 MOV R1,-(SP)
002706 010246 MOV R2,-(SP)
838 ;
839 ; WHAT'S ON THE STACK?
840 ;
841 ; SP+00 R2 (RESTORE POINTER TO SAVE AREA)
842 ; SP+02 R1 (RESTORE POINTER TO LOW CORE)
843 ; KT-11 ONLY:
844 ; SP+04 KERNAL SP
845 ; SP+06 STKLIM
846 ; SP+10 POINTERS TO KT-11 REGISTERS TO RESTORE
847 ; SP+12
848 ; SP+14
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 11-2
SAVE SYSTEM STATE
849 ; SP+16
850 ; SP+20 KT-11 REGISTERS
851 ; ...
852 ; SP+116
853 ;
854 ; SP+NN (BOTTOM OF STACK) USER PS FROM .INH
855 ;
856 ; SO LET'S SAVE SP IN SPSAVE
857 ;
858 002710 010637 000000' MOV SP,SPSAVE ;;;SAVE SP UNTIL WE RESTORE
859 ; BR WTSAVE ;;;NOW WRITE SAVE FILE AND BOOT
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 12
WRITE SAVE FILE AND BOOT
861 .SBTTL WRITE SAVE FILE AND BOOT
862 ;
863 ; WRITE SAVE FILE. DSK ADDRESS IS IN DSKADR+0 AND DSKADR+2
864 ;
865 002714 WTSAVE:
866 002714 105337 000047' DECB WSFLAG ;;;WRITE SAVE FILE?
867 002720 002012 BGE 10$ ;;;YES-- GO DO IT
868 002722 105337 000046' DECB WBFLAG ;;; /WB SPECIFIED?
869 002726 002414 BLT RESTORE ;;;NO-- ALL DONE WITH SAVE-- BRING SYSTEM BACK UP
870 002730 005037 000004' CLR DSKADR+0 ;;;YES-- WRITE BOOT TO BLOCK 0
871 002734 005037 000006' CLR DSKADR+2 ;;; . . .
872 002740 012737 000010 000014' MOV #256.*2/100,MEMSIZ ;;;GET # 100 BYTE BLOCKS TO WRITE
873 002746 10$:
874 002746 013705 000002' MOV DRVADR,R5 ;;;GET ADDRESS OF DEVICE DRIVER TABLE ENTRY
875 002752 CALL @DRVWRT(R5) ;;;CALL PROPER WRITE ROUTINE
002752 004775 000006 JSR PC,@DRVWRT(R5)
876 002756 000756 BR WTSAVE ;;;GO BACK AND DO WRITE AGAIN
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 13
RESTORE SYSTEM STATE
878 .SBTTL RESTORE SYSTEM STATE
879 ;
880 ; TRANSFER HERE ON TWO CONDITIONS:
881 ; 1) FROM BOOTSTRAP WITH FRESHLY BOOT'ED SYSTEM
882 ; 2) FROM SAVE COMPLETING A WRITE OF THE SYSTEM IMAGE
883 ;
884 ; THE ACTION IS THE SAME IN EITHER CASE.
885 ;
886 002760 RESTORE:
887 002760 013706 000000' MOV SPSAVE,SP ;;;RESTORE OUR STACK
888 ;
889 ; RESTORE LOW CORE FROM SAVE AREA
890 ;
891 002764 POP <R2,R1> ;;;RESTORE SAVED POINTERS TO CORE
002764 012602 MOV (SP)+,R2
002766 012601 MOV (SP)+,R1
892 .IF DF M$$MGE
893 MOV #77406,UPDR1 ;;;MAP ALL OF
894 CLR UPAR1 ;;; LOW CORE TO 20000
895 .IFTF
896 002770 012100 MOV (R1)+,R0 ;;;GET BOOT PARAMETER FROM LOCATION 776
897 002772 012705 000400 MOV #256.,R5 ;;;RESTORE ALL 256 WORDS
898 002776 20$:
899 002776 014241 MOV -(R2),-(R1) ;;;RESTORE A WORD
900 003000 077502 SOB R5,20$ ;;;LOOP FOR WHOLE BLOCK
901 ;
902 ; RESTORE KT-11 REGISTERS (IF ANY)
903 ;
904 .IFT
905 MTPI SP ;;;RESTORE KERNAL SP
906 POP STKLIM ;;; AND STACK LIMIT
907 ;
908 POP <R4,R3,R2,R1> ;;;RESTORE SAVED POINTERS TO KT-11
909 MOV #8.,R5 ;;;8 REGISTERS PER SET
910 30$:
911 POP <-(R4),-(R3),-(R2),-(R1)> ;;;RESTORE 4 REGISTERS
912 SOB R5,30$ ;;;LOOP FOR ALL REGISTERS
913 .ENDC
914 003002 010037 000000G MOV R0,.BTPRM ;;;SAVE THE BOOT PARAMETER WORD IN EXEC
915 ; BR SETCTY ;;;ONWARD!!
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 14
RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
917 .SBTTL RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
918 ;
919 ; SET THE CTY TO THE LINE INDICATED BY THE BOOT PARAMETER, NOW IN R0
920 ;
921 003006 SETCTY:
922 003006 010005 MOV R0,R5 ;;;ALSO SAVE BOOT PARAM FOR US TO USE
923 003010 042700 177607 BIC #^C<BP.CSP>,R0 ;;;TRIM TO CONSOLE SPEED, BITS 6-3
924 003014 001450 BEQ SETDL ;;; +++005 CTY NOT SPEC-- LEAVE IT ALONE
925 003016 012704 000000G MOV #DLTBL,R4 ;;;ASSUME DL-11
926 003022 006200 ASR R0 ;;;SHIFT THE SPEED FIELD
927 003024 006200 ASR R0 ;;; OVER TO A WORD INDEX INTO TABLE, BITS 4-1
928 003026 016003 001122' MOV DHSTAB(R0),R3 ;;;GET THE SPEED WORD FOR THE SPECIFIED TYPE
929 003032 001406 BEQ 50$ ;;;NOT A DH-11-- GO ON FOR DL-11
930 ;
931 003034 010504 MOV R5,R4 ;;;DH-11-- GET THE PARAM AGAIN
932 003036 042704 174377 BIC #^C<BP.UNT>,R4 ;;;TRIM TO DH UNIT NUMBER, BITS 10-8
933 003042 006204 ASR R4 ;;;SHIFT INTO PLACE, 16*8=128 BYTES PER DH UNIT, BITS 9-7
934 003044 062704 000000G ADD #DHTBL,R4 ;;;GET DH UNIT TABLE ADDRESS
935 003050 50$:
936 003050 010500 MOV R5,R0 ;;;GET THE WORD BACK
937 003052 042700 103777 BIC #^C<BP.CLN>,R0 ;;;GET JUST LINE NUMBER, BITS 14-11
938 003056 000300 SWAB R0 ;;;MAKE THAT 8 BYTES PER LINE, BITS 6-3
939 003060 060004 ADD R0,R4 ;;;GET TABLE ADDRESS OF NEW CTY
940 ;
941 003062 006200 ASR R0 ;;;GET LINE NUMBER *4
942 003064 006200 ASR R0 ;;; LINE NUMBER *2, WORD INDEX
943 003066 016037 000000G 000000G MOV BITTBL(R0),$BTMSK ;;;GET THE BIT FOR THE LINE TO DH BIT MASK FOR CTY
944 003074 006200 ASR R0 ;;;GET LINE NUMBER WITHIN DH UNIT
945 003076 010037 000000G MOV R0,$UNIT ;;;STORE THAT UNIT NUMBER
946 ;
947 003102 013700 000000G MOV CTYPTR,R0 ;;;GET OLD CTY TABLE ENTRY POINTER
948 003106 042760 000000G 000000G BIC #TT.CTY,STSW1(R0) ;;;MARK NOT THE CTY ANY MORE
949 003114 010437 000000G MOV R4,CTYPTR ;;;SET THE NEW CTY TABLE ENTRY
950 003120 010437 000000C MOV R4,.DQPBA+<Q.SZ*<D.CCTY-1>>+Q.DA ;;;SET THE -10 CTY POINTER TO US, ALSO
951 003124 052764 000000G 000000G BIS #TT.CTY,STSW1(R4) ;;;SET THIS AS THE CTY
952 003132 010364 000000G MOV R3,STSW0(R4) ;;;SET DH PARAMETERS FROM SPEED
953 ;
954 ; RESET DL11 TABLE FOR CONFIGURATION
955 ;
956 003136 SETDL:
957 003136 012737 000000G 000000C MOV #KBS0,DLTBL+TTYEXP
958 003144 012737 000000G 000000C MOV #KBS1,DLTBL+TTYEXP+10
959 003152 012737 175630 000000C MOV #175630,DLTBL+TTYEXP+20
960 003160 012737 175640 000000C MOV #175640,DLTBL+TTYEXP+30
961 003166 012737 175650 000000C MOV #175650,DLTBL+TTYEXP+40
962 ;
963 ; RESET DH TABLE SO THAT WE CAN CONFIGURE UP
964 ;
965 003174 SETDH:
966 003174 012700 160020 MOV #DHEXPA,R0 ;;;GET EXT PAGE ADDR OF FIRST DH
967 003200 012701 000000C MOV #DHTBL+TTYEXP,R1 ;;; AND TABLE ADDRESS FOR SAME
968 003204 10$:
969 003204 012702 000020 MOV #16.,R2 ;;;# LINES PER DH
970 003210 20$:
971 003210 010011 MOV R0,(R1) ;;;SET THIS DH EXTERNAL PAGE ADDRESS
972 003212 062701 000010 ADD #8.,R1 ;;;BUMP TO NEXT TABLE ENTRY
973 003216 077204 SOB R2,20$ ;;;LOOP FOR ALL LINES IN THIS DH
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 14-1
RESTORE -- SETUP CTY LINE # AND DH-11 TABLES
974 ;
975 003220 062700 000020 ADD #DHEXPZ,R0 ;;;BUMP TO NEXT DH
976 003224 020127 000000G CMP R1,#TTYEND ;;;END OF TABLE YET?
977 003230 103765 BLO 10$ ;;;NO-- DO NEXT DH
978 ; BR REDSY ;;;CONTINUE . .
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 15
RESTORE -- REDIRECT SY0: TO BOOT DEVICE
980 .SBTTL RESTORE -- REDIRECT SY0: TO BOOT DEVICE
981 ;
982 ; IF THIS WAS A SAVE TO SY, REDIRECT SY TO POINT TO BOOT UNIT
983 ;
984 003232 REDSY:
985 003232 010501 MOV R5,R1 ;;;GET BACK THE BOOT PARAM
986 003234 106301 ASLB R1 ;;;SHIFT BITS 6-4 INTO 7-5
987 003236 120127 000060 CMPB R1,#3*BIT4 ;;;IS SPEED FIELD 0-2?
988 003242 103401 BLO 10$ ;;;YES-- UNIT # IS OK
989 003244 005001 CLR R1 ;;;NO-- 3-17-- UNIT # IS ZERO
990 003246 10$:
991 003246 000301 SWAB R1 ;;;BRING UNIT # INTO BITS 2-0
992 003250 042701 177770 BIC #^C<7>,R1 ;;;TRIM TO THREE BITS
993 ;
994 003254 013700 000042' MOV DEVNAM,R0 ;;;GET DEVICE NAME
995 003260 CALL FINDEV ;;;ATTEMPT TO FIND BOOT DEVICE
003260 004737 006402' JSR PC,FINDEV
996 003264 103004 BCC 30$ ;;;GOT IT-- OK
997 003266 013705 000040' MOV PUDADR,R5 ;;;NOT FOUND-- GET OLD PUD ENTRY ADDRESS
998 003272 110165 000000G MOVB R1,U.UN(R5) ;;;MAKE IT THE NEW UNIT #
999 003276 30$:
1000 003276 010504 MOV R5,R4 ;;;SAVE THE PUD ENTRY ADDRESS
1001 003300 005037 000040' CLR PUDADR ;;;ASSUME FAILURE
1002 003304 012700 054523 MOV #"SY,R0 ;;;GET THE
1003 003310 005001 CLR R1 ;;; PUD ENTRY ADDRESS
1004 003312 CALL FINDEV ;;; FOR SY0:
003312 004737 006402' JSR PC,FINDEV
1005 003316 103547 BCS DTECHK ;;;OOPS-- GIVE UP
1006 003320 010465 000000G MOV R4,U.RP(R5) ;;;REDIRECT SY0 TO BOOT DEVICE
1007 003324 010405 MOV R4,R5 ;;;GET BOOT PUD ENTRY ADDRESS BACK
1008 003326 010537 000040' MOV R5,PUDADR ;;; AND SAVE IT
1009 ;
1010 ; UPDATE ALL TASKS FROM OLD SAVE DEVICE TO NEW SYSTEM DEVICE
1011 ;
1012 003332 40$:
1013 003332 010500 MOV R5,R0 ;;;COPY THE PUD ADDRESS
1014 003334 162700 000000G SUB #.PUDBA,R0 ;;;MAKE IT INDEX INTO PUD
1015 003340 012701 000000G MOV #U.SZ,R1 ;;;SET ENTRY SIZE AS DIVISOR
1016 003344 CALL $DIV ;;;COMPUTE PUD INDEX FOR NEW SY INTO R0
003344 004737 000000G JSR PC,$DIV
1017 ;
1018 003350 013703 000000G MOV .STDTA,R3 ;;;GET THE ADDRESS OF THE BEGINNING OF SYSTEM TASK DIRECTORY
1019 003354 010304 MOV R3,R4 ;;;COPY IT AGAIN
1020 003356 063704 000000G ADD .STDTZ,R4 ;;;FIND ADDRESS OF LAST ENTRY IN STD
1021 003362 45$:
1022 003362 012302 MOV (R3)+,R2 ;;;GET AN STD ENTRY ADDRESS
1023 003364 032762 000000G 000000G BIT #SF.FX,S.FW(R2) ;;;FIXED TASK (I.E. NOT DISK-LOADED)?
1024 003372 001006 BNE 47$ ;;;YES-- DON'T CHANGE IT'S DISK
1025 003374 126237 000000G 000045' CMPB S.DI(R2),PUDIDX ;;;IS THIS TASK FROM ORIGINAL SAVE DEVICE?
1026 003402 001002 BNE 47$ ;;;NO-- GO ON
1027 003404 110062 000000G MOVB R0,S.DI(R2) ;;;YES-- UPDATE DISK INDICATOR TO NEW SYSTEM DEVICE
1028 003410 47$:
1029 003410 020304 CMP R3,R4 ;;;AT END OF STD YET?
1030 003412 101763 BLOS 45$ ;;;NO-- KEEP LOOPING FOR ALL TASKS
1031 ; BR RP4CHK ;;;MORE & MORE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 16
RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
1033 .SBTTL RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
1034 ;
1035 ; CHECK THE RP TO MAKE SURE IT IS ON-LINE AND IN A/B MODE
1036 ;
1037 003414 RP4CHK:
1038 003414 105737 000053' TSTB RHFLAG ;;;SHOULD WE CHECK THE RP?
1039 003420 001417 BEQ RP6CHK ;;;NO-- JUST GO ON
1040 003422 116537 000000G 176710 MOVB U.UN(R5),RPCS2 ;;;YES-- SET TO PROPER UNIT #
1041 003430 032737 010000 176712 BIT #RPMOL,RPDS ;;;IS THE RP ON-LINE?
1042 003436 001002 BNE 35$ ;;;YES-- GO ON
1043 003440 105237 000054' INCB RNFLAG ;;;NO-- REMEMBER THAT IT ISN'T
1044 003444 35$:
1045 003444 032737 001000 176712 BIT #RPPGM,RPDS ;;;PROGRAMMABLE MODE (A/B)?
1046 003452 001002 BNE RP6CHK ;;;YES-- ALL OK
1047 003454 105237 000055' INCB RPFLAG ;;;NO-- REMEMBER THAT IT ISN'T
1048 ;
1049 ; CHECK TO FIND ALL THE RP06'S MASQUERADING AS RP04'S
1050 ;
1051 003460 RP6CHK:
1052 003460 042737 030000 177776 BIC #PS.PUS,@#PS ;;;INSURE PREVIOUS KERNAL
1053 003466 012704 000006 MOV #6,R4 ;;;POINT TO TIME-OUT TRAP
1054 003472 MFPI (R4) ;;;SAVE PS OF TRAP
003472 011446 MOV (R4),-(SP)
1055 003474 MFPI -(R4) ;;; AND PC
003474 014446 MOV -(R4),-(SP)
1056 003476 MTPS #80$,(R4)+ ;;;SET NEW PC
003476 012724 003626' MOV #80$,(R4)+
1057 003502 MTPS @#PS,(R4) ;;; AND PS AS CURRENT STATE
003502 013714 177776 MOV @#PS,(R4)
1058 003506 012700 041104 MOV #"DB,R0 ;;;WE ARE CHECKING DB'S
1059 003512 012701 000007 MOV #7,R1 ;;; AND THERE ARE 8 OF THEM
1060 003516 10$:
1061 003516 CALL FINDEV ;;;FIND THIS DB UNIT IN PUD
003516 004737 006402' JSR PC,FINDEV
1062 003522 103436 BCS 70$ ;;;NOT THERE-- CARRY ON
1063 003524 012765 050700 000000G MOV #50700,U.LBN(R5) ;;;ASSUME RP04-- SET LOW PART OF VOLUME SIZE
1064 003532 112765 000002 000000G MOVB #2,U.LBH(R5) ;;; AND HIGH PART
1065 003540 110137 176710 MOVB R1,RPCS2+0 ;;;SELECT THIS UNIT
1066 003544 032737 001400 176712 BIT #RPDPR!RPPGM,RPDS ;;;DRIVE EXIST FOR US?
1067 003552 001422 BEQ 70$ ;;;NO-- SKIP IT
1068 003554 012702 023420 MOV #10000.,R2 ;;;SET TIME-OUT COUNT IF PORT BUSY
1069 003560 20$:
1070 003560 032737 004000 176700 BIT #RPDVA,RPCS1 ;;;DRIVE AVAILABLE AT THIS TIME?
1071 003566 001004 BNE 30$ ;;;YES-- CHECK IT OUT
1072 003570 112737 000001 176700 MOVB #RPNOOP+RPGO,RPCS1+0 ;;;NO-- DO NOOP TO GET IT
1073 003576 077210 SOB R2,20$ ;;;LOOP UNTIL WE HAVE IT
1074 003600 30$:
1075 003600 123727 176726 000022 CMPB RPDT+0,#RPDT06 ;;;THIS AN RP06?
1076 003606 002404 BLT 70$ ;;;NO-- SIZE IS OK
1077 003610 006365 000000G ASL U.LBN(R5) ;;;YES-- DOUBLE
1078 003614 106165 000000G ROLB U.LBH(R5) ;;; THE VOLUME SIZE
1079 003620 70$:
1080 003620 005301 DEC R1 ;;;COUNT DOWN TO NEXT UNIT #
1081 003622 002335 BGE 10$ ;;;NOT DONE-- LOOP FOR ALL 8
1082 003624 000401 BR 90$ ;;;ALL DONE-- GO ON
1083 ;
1084 003626 80$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 16-1
RESTORE -- CHECK BOOT DB & LOOK FOR RP06'S
1085 003626 022626 CMP (SP)+,(SP)+ ;;;TIME-OUT TRAP-- REMOVE TRAP FROM STACK
1086 003630 90$:
1087 003630 MTPI -(R4) ;;;RESTORE TRAP AT 4 PC
003630 012644 MOV (SP)+,-(R4)
1088 003632 MTPI 2(R4) ;;; AND PS
003632 012664 000002 MOV (SP)+,2(R4)
1089 ; BR DTECHK ;;;CARRY ON
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 17
RESTORE -- CHECK ALL THE DTE-20'S
1091 .SBTTL RESTORE -- CHECK ALL THE DTE-20'S
1092 ;
1093 ; CHECK TO MAKE SURE THAT ALL DTE-20'S ARE AT PRIORITY 6
1094 ;
1095 003636 DTECHK:
1096 003636 005000 CLR R0 ;;;RESET DTE #
1097 003640 012701 001000 MOV #DTVECA+4,R1 ;;;POINT TO HIGHEST DTE VECTOR ADDRESS
1098 003644 012702 174400 MOV #DTEXPA,R2 ;;; ALSO TO EXTERNAL PAGE ADDRESS FOR #0
1099 003650 005003 CLR R3 ;;;RESET POINTER TO THE PRIVILEDGED DTE
1100 003652 105337 000061' DECB DEFLAG ;;;SAY DTE-20 OK
1101 ;
1102 003656 042737 030000 177776 BIC #PS.PUS,@#PS ;;;INSURE PREVIOUS KERNAL
1103 003664 012704 000006 MOV #6,R4 ;;;POINT TO TIMEOUT VECTOR
1104 003670 MFPI (R4) ;;;SAVE THE PS
003670 011446 MOV (R4),-(SP)
1105 003672 MFPI -(R4) ;;; AND PC FOR TIMEOUT
003672 014446 MOV -(R4),-(SP)
1106 003674 MTPS #60$,(R4)+ ;;;SET WHERE TO GO ON NON-EX DTE
003674 012724 003776' MOV #60$,(R4)+
1107 003700 MTPS @#PS,(R4) ;;; AND HOW TO GET THERE
003700 013714 177776 MOV @#PS,(R4)
1108 003704 10$:
1109 003704 MFPI -(R1) ;;;SAVE PS OF THIS DTE VECTOR
003704 014146 MOV -(R1),-(SP)
1110 003706 MFPI -(R1) ;;; AND PC
003706 014146 MOV -(R1),-(SP)
1111 003710 MTPS #50$,(R1)+ ;;;WHERE TO GO IF IT INTERRUPTS
003710 012721 003770' MOV #50$,(R1)+
1112 003714 MTPS @#PS,(R1) ;;; AND HOW SUCH
003714 013711 177776 MOV @#PS,(R1)
1113 ;
1114 003720 005712 TST (R2) ;;;DTE EXIST? (TRAP IF NOT TO 60$)
1115 003722 032762 000010 000034 BIT #DTRSMD,DTSTAT(R2) ;;;THIS PRIVILEDGED DTE-20?
1116 003730 001402 BEQ 20$ ;;;YES-- THIS IS THE ONE
1117 003732 005703 TST R3 ;;;NO-- FOUND A DTE YET?
1118 003734 001001 BNE 30$ ;;;YES-- DON'T REMEMBER THIS ONE
1119 003736 20$:
1120 003736 010203 MOV R2,R3 ;;;FIRST OR PRIV DTE-- SAVE IT
1121 003740 30$:
1122 003740 012762 004040 000034 MOV #DT11DB!DTINON,DTSTAT(R2) ;;;RING OUR DOORBELL (FROM THE INSIDE)
1123 003746 112737 000240 177776 MOVB #PR5,@#PS ;;;BRING DOWN TO PRI 5
1124 003754 110037 000061' MOVB R0,DEFLAG ;;;DID NOT INTERRUPT-- SAVE DTE # NOT AT PRI 6
1125 003760 024646 CMP -(SP),-(SP) ;;;FAKE TRAP ON STACK
1126 003762 152737 000340 177776 BISB #PR7,@#PS ;;;RESTORE PRI 7
1127 003770 50$:
1128 003770 012762 002010 000034 MOV #DTINOF!DTCL11,DTSTAT(R2) ;;;CLEAR RINGING DOORBELL
1129 003776 60$:
1130 003776 042737 030000 177776 BIC #PS.PUS,@#PS ;;; AND PREVIOUS MODE KERNAL
1131 004004 022626 CMP (SP)+,(SP)+ ;;;REMOVE TRAP FROM STACK
1132 004006 MTPI -(R1) ;;;RESTORE PC FOR DTE VECTOR
004006 012641 MOV (SP)+,-(R1)
1133 004010 MTPI 2(R1) ;;; AND PS
004010 012661 000002 MOV (SP)+,2(R1)
1134 004014 062702 000040 ADD #DTEXPZ,R2 ;;;BUMP TO NEXT DTE-20 EXT PAGE ADDR
1135 004020 005200 INC R0 ;;; AND COUNT UP
1136 004022 020027 000004 CMP R0,#4 ;;;DONE WITH DTE'S?
1137 004026 002726 BLT 10$ ;;;NOPE-- BACK FOR ANOTHER
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 17-1
RESTORE -- CHECK ALL THE DTE-20'S
1138 ;
1139 004030 010337 000000G MOV R3,.PRDTE ;;;SAVE THE ADDRESS OF THE PRIV DTE
1140 004034 001402 BEQ 95$ ;;;NOT THERE-- LEAVE STATUS ZERO, TOO
1141 004036 062703 000034 ADD #DTSTAT,R3 ;;;BUMP TO STATUS
1142 004042 95$:
1143 004042 010337 000000G MOV R3,.PRSTA ;;;SAVE THAT ADDR, TOO
1144 ;
1145 004046 MTPI -(R4) ;;;RESTORE PC OF TIMEOUT TRAP
004046 012644 MOV (SP)+,-(R4)
1146 004050 MTPI 2(R4) ;;; AND PS
004050 012664 000002 MOV (SP)+,2(R4)
1147 004054 013700 000000G MOV .BTPRM,R0 ;;;GET BOOT PARAMETER WORD AND
1148 004060 042700 177771 BIC #^C<BP.LD1!BP.LD0>,R0 ;;;ISOLATE THE LOAD SWITCHES
1149 004064 022700 000004 CMP #BP.LD1,R0 ;;;IF SWITCHES = 10
1150 004070 001004 BNE SYSTRT ;;;THEN
1151 004072 005037 000000G CLR .NOERR ;;;ALLOW ERRORS
1152 004076 CALL ..DTP2 ;;;START SECONDARY PROTOCOL AND
004076 004737 000000G JSR PC,..DTP2
1153 ; BR SYSTRT ;;;START SYSTEM GOING
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 18
RESTORE -- RESTART SYSTEM AND TYPE HERALD
1155 .SBTTL RESTORE -- RESTART SYSTEM AND TYPE HERALD
1156 ;
1157 ; FORCE POWER-RECOVERY AST BY SETTING EV.PF AND
1158 ; FAKING AN ENABLE TASK SWITCHING REQUEST (FROM PR3 TO PR0)
1159 ;
1160 004102 SYSTRT:
1161 004102 005037 000000G CLR .DATE3 ;;;INDICATE THAT THE DATE IS NOW INVALID
1162 004106 012737 000000G 000000G MOV #EV.PF,.SERFG ;;;SET POWER-RECOVERY SIGNIFICANT EVENT
1163 004114 CALL ..ENB0 ;ENABLE TASK SWITCHING
004114 004737 000000G JSR PC,..ENB0
1164 ;
1165 ; SEE IF WRITE ERROR OCCURED DURING SAVE (WEFLAG NON-ZERO)
1166 ;
1167 004120 105737 000060' TSTB WEFLAG ;WRITE SUCCESFUL?
1168 004124 001404 BEQ DTEMSG ;YES-- ALL OK
1169 004126 ERROR <WRITE ERROR>
000465 011 127 122 .ASCIZ ""<11>"WRITE ERROR"<5>""
000470 111 124 105
000473 040 105 122
000476 122 117 122
000501 005 000
004126 012746 000465' MOV #$$$,-(SP)
004132 004737 005622' JSR PC,TYPMSG
1170 ;
1171 ; SEE IF DTE-20 PRIORITY CHECK FAILED
1172 ;
1173 004136 DTEMSG:
1174 004136 005737 000000G TST .PRDTE ;DID WE FIND A DTE-20
1175 004142 001007 BNE DTPMSG ;YES-- SEE IF OK
1176 004144 005037 000000G CLR .PRSTA ;IF HE CONTINUES . . .
1177 004150 TYPE <"<11>"NO DTE-20"<1>">
000503 011 116 117 .ASCIZ ""<11>"NO DTE-20"<1>""
000506 040 104 124
000511 105 055 062
000514 060 001 000
004150 012746 000503' MOV #$$$,-(SP)
004154 004737 005622' JSR PC,TYPMSG
1178 004160 000407 BR DTPMS1 ;GO FLOP
1179 ;
1180 004162 DTPMSG:
1181 004162 113700 000061' MOVB DEFLAG,R0 ;WE FAIL THE CHECK?
1182 004166 002414 BLT SYSMSG ;NO-- ALL OK
1183 004170 TYPE <"<11>"DTE-20 #"<7>" NOT AT PRIORITY LEVEL 6"<1>">
000517 011 104 124 .ASCIZ ""<11>"DTE-20 #"<7>" NOT AT PRIORITY LEVEL 6"<1>""
000522 105 055 062
000525 060 040 043
000530 007 040 116
000533 117 124 040
000536 101 124 040
000541 120 122 111
000544 117 122 111
000547 124 131 040
000552 114 105 126
000555 105 114 040
000560 066 001 000
004170 012746 000517' MOV #$$$,-(SP)
004174 004737 005622' JSR PC,TYPMSG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 18-1
RESTORE -- RESTART SYSTEM AND TYPE HERALD
1184 004200 DTPMS1:
1185 004200 .INH ;;;BACK UP TO NOTHING-NESS
004200 013746 177776 MOV PS,-(SP)
004204 112737 000340 177776 MOVB #PR7,@#PS ;;
1186 004212 000777 BR . ;;;WAIT FOR SOMEONE TO PICK UP THE PIECES
1187 004214 .ENB ;;;THE PIECES HAVE BEEN PICKED UP
004214 012637 177776 MOV (SP)+,@#PS ;;
1188 ;
1189 ; TYPE SYSTEM MESSAGE
1190 ;
1191 004220 SYSMSG:
1192 004220 012700 000000G MOV #.VERNO,R0 ; +++003 POINT TO VERSION # STRING
1193 004224 TYPE <"<1><1>"RSX-20F "<4>" "<6><1><1>"> ; +++003
000563 001 001 122 .ASCIZ ""<1><1>"RSX-20F "<4>" "<6><1><1>""
000566 123 130 055
000571 062 060 106
000574 040 004 040
000577 006 001 001
000602 000
004224 012746 000563' MOV #$$$,-(SP)
004230 004737 005622' JSR PC,TYPMSG
1194 ; BR MNTSY ;UPWARD
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 19
RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
1196 .SBTTL RESTORE -- TYPE SY0: REDIRECT MESSAGE AND MOUNT SY0:
1197 ;
1198 ; TYPE REDIRECTED MESSAGE, MOUNT SY IF SO
1199 004234 MNTSY: ; +++001
1200 004234 013705 000040' MOV PUDADR,R5 ;GET THE PUD ENTRY FOR THE SY DEVICE
1201 004240 001436 BEQ RQSTS1 ;GIVE UP IF NONE
1202 004242 TYPE <[SY0: REDIRECTED TO "<3>"]"<1>">
000603 133 123 131 .ASCIZ "[SY0: REDIRECTED TO "<3>"]"<1>""
000606 060 072 040
000611 122 105 104
000614 111 122 105
000617 103 124 105
000622 104 040 124
000625 117 040 003
000630 135 001 000
004242 012746 000603' MOV #$$$,-(SP)
004246 004737 005622' JSR PC,TYPMSG
1203 004252 ALUN$S #DSKLUN,U.DN(R5),U.UN(R5) ;ASSIGN THE SY DEVCICE
004252 016546 000000G MOV U.UN(R5),-(SP)
004256 016546 000000G MOV U.DN(R5),-(SP)
004262 012746 000002 MOV #DSKLUN,-(SP)
004266 012746 MOV (PC)+,-(SP)
004270 007 004 .BYTE 7.,4
004272 104375 EMT 375
1204 004274 103572 BCS RQSKLR ; +++001 OPPS-- JUST CHECK KLINIK LINE
1205 004276 005765 000000G TST U.VA(R5) ;VOLUME ALREADY MOUNTED?????
1206 004302 001022 BNE REDHOM ;YES-- SKIP THIS
1207 004304 CALL FNDACP ;NO-- FIND ACP FOR SY
004304 004737 006440' JSR PC,FNDACP
1208 004310 010265 000000G MOV R2,U.ACP(R5) ;AND SET IT FOR MOUNT
1209 004314 012702 001106' MOV #MNTBLK,R2 ;GOT IT-- POINT TO MOUNT
1210 004320 CALL FILMNT ;MOUNT SY
004320 004737 006460' JSR PC,FILMNT
1211 004324 103005 BCC SYMNTD ;MOUNTED
1212 004326 WARN <MOUNT "<10>" ERROR "<7>">
000633 012 115 117 .ASCIZ ""<12>"MOUNT "<10>" ERROR "<7>""<1>""
000636 125 116 124
000641 040 010 040
000644 105 122 122
000647 117 122 040
000652 007 001 000
004326 012746 000633' MOV #$$$,-(SP)
004332 004737 005622' JSR PC,TYPMSG
1213 004336 RQSTS1:
1214 004336 000551 BR RQSKLR ; +++001 OOPS
1215 ;
1216 004340 SYMNTD:
1217 004340 TYPE <["<10>" MOUNTED]"<1>">
000655 133 010 040 .ASCIZ "["<10>" MOUNTED]"<1>""
000660 115 117 125
000663 116 124 105
000666 104 135 001
000671 000
004340 012746 000655' MOV #$$$,-(SP)
004344 004737 005622' JSR PC,TYPMSG
1218 ; BR REDHOM ;GO READ THE HOM BLOCKS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 20
RESTORE -- READ HOM BLOCKS ON BOOT DB
1220 .SBTTL RESTORE -- READ HOM BLOCKS ON BOOT DB
1221 ;
1222 ; READ HOM BLOCKS FROM DB0 TO SEE IF WE HAVE A FILE SYSTEM ON IT
1223 ;
1224 004350 REDHOM:
1225 004350 105737 000053' TSTB RHFLAG ;SHOULD WE READ THE HOM BLOCKS?
1226 004354 001542 BEQ RQSKLR ; +++001 NO-- JUST CHECK KLINIK LINE
1227 004356 105737 000054' TSTB RNFLAG ;RP NOT READY?
1228 004362 001113 BNE RNRERR ;YES-- COMPLAIN
1229 004364 105737 000055' TSTB RPFLAG ;RP IN PROGRAMMABLE (A/B) MODE?
1230 004370 001404 BEQ REDHM1 ;YES-- GO WORK ON IT
1231 004372 WARN <"<10>" NOT IN PROGRAMMABLE (A/B) MODE>
000672 012 010 040 .ASCIZ ""<12>""<10>" NOT IN PROGRAMMABLE (A/B) MODE"<1>""
000675 116 117 124
000700 040 111 116
000703 040 120 122
000706 117 107 122
000711 101 115 115
000714 101 102 114
000717 105 040 050
000722 101 057 102
000725 051 040 115
000730 117 104 105
000733 001 000
004372 012746 000672' MOV #$$$,-(SP)
004376 004737 005622' JSR PC,TYPMSG
1232 004402 REDHM1:
1233 004402 005003 CLR R3 ;CLEAR COUNT OF # TIMES WE SAW 'HOM'
1234 004404 012705 000001 MOV #1,R5 ;START WITH HOM BLOCK AT LBN 1
1235 004410 20$:
1236 004410 012700 001000 MOV #IO.RLB,R0 ;DO A READ LOGICAL BLOCK FUNCTION
1237 004414 012701 000062' MOV #HOMBUF,R1 ; TO THE HOM BLOCK BUFFER
1238 004420 012702 001000 MOV #512.,R2 ;ONE BLOCK'S WORTH
1239 004424 005004 CLR R4 ;CLEAR LOW-ORDER LBN
1240 004426 CALL FILQIO ;DO IT TO THE DB0
004426 004737 006474' JSR PC,FILQIO
1241 004432 103462 BCS RHMERR ;ERROR-- GO REPORT IT
1242 ;
1243 004434 022711 105755 CMP #SXBTHM,(R1) ;IS THIS A SIXBIT/HOM/ BLOCK?
1244 004440 001013 BNE 30$ ;NO-- LOOK NO FARTHER
1245 004442 005703 TST R3 ;YES-- ALREADY SEEN A GOOD HOM BLOCK?
1246 004444 001010 BNE 29$ ;YES-- DON'T USE THIS ONE
1247 ;
1248 004446 012701 000366' MOV #HOMBUF+<HOMFE0*4>,R1 ;NO-- ADDRESS OUR WORDS IN HOM BLOCK
1249 004452 012702 000000G MOV #.RPADR,R2 ; AND WHERE TO STORE THEM
1250 004456 012122 MOV (R1)+,(R2)+ ;(LH HOMFE0) (.RPADR+0) HIGH-ORDER DISK ADDRESS
1251 004460 012122 MOV (R1)+,(R2)+ ;(RH HOMFE0) (.RPADR+2) LOW-ORDER DISK ADDRESS
1252 004462 012122 MOV (R1)+,(R2)+ ;(LH HOMFE1) (.RPSIZ+0) HIGH-ORDER SIZE
1253 004464 012122 MOV (R1)+,(R2)+ ;(RH HOMFE1) (.RPSIZ+2) LOW-ORDER SIZE
1254 004466 29$:
1255 004466 005203 INC R3 ;SAY WE SAW ANOTHER GOOD HOM BLOCK
1256 004470 30$:
1257 004470 005305 DEC R5 ;WERE WE LOOKING AT
1258 004472 003003 BGT 40$ ; BLOCK #1?
1259 004474 012705 000012 MOV #10.,R5 ;YES-- ALSO TRY BLOCK 10.
1260 004500 000743 BR 20$ ;BACK TO LOOK AT IT
1261 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 20-1
RESTORE -- READ HOM BLOCKS ON BOOT DB
1262 004502 40$:
1263 004502 005303 DEC R3 ;HOW MANY 'HOM' BLOCKS DID WE SEE?
1264 004504 002447 BLT ALLRXF ;0-- DISK IS ALL OURS
1265 004506 001412 BEQ HBCERR ;1-- CONSISTENCY ERROR
1266 004510 012705 000004 MOV #4,R5 ;2-- TOPS FILE SYSTEM
1267 004514 012701 000366' MOV #HOMBUF+<HOMFE0*4>,R1 ;POINT TO SECOND HOM BLOCK AREA
1268 004520 012702 000000G MOV #.RPADR,R2 ; AND TO WHAT WE GOT FROM FIRST BLOCK
1269 004524 50$:
1270 004524 022122 CMP (R1)+,(R2)+ ;CHECK FOR CONSISTENCY
1271 004526 001002 BNE HBCERR ;OOPS-- HOM BLOCKS DON'T AGREE
1272 004530 077503 SOB R5,50$ ;LOOP FOR ALL FOUR WORDS
1273 004532 000404 BR SETRXF ;CHECKS OUT-- JUST CHECK THE FLAG
1274 ;
1275 004534 HBCERR:
1276 004534 WARN <TOPS HOM BLOCK CONSISTENCY ERROR ON "<10>">
000735 012 124 117 .ASCIZ ""<12>"TOPS HOM BLOCK CONSISTENCY ERROR ON "<10>""<1>""
000740 120 123 040
000743 110 117 115
000746 040 102 114
000751 117 103 113
000754 040 103 117
000757 116 123 111
000762 123 124 105
000765 116 103 131
000770 040 105 122
000773 122 117 122
000776 040 117 116
001001 040 010 001
001004 000
004534 012746 000735' MOV #$$$,-(SP)
004540 004737 005622' JSR PC,TYPMSG
1277 ; BR SETRXF ;USE GOOD (OR FIRST) HOM BLOCK
1278 ;
1279 004544 SETRXF:
1280 004544 005737 000000G TST .RPADR+0 ;IS BIT 2 OF HOMFE0 (BIT 15 OF .RPADR+0) SET?
1281 004550 100442 BMI SOMRXF ;YES-- JUST CLEAR THE FLAG
1282 004552 WARN <NO RSX-20F FILE SYSTEM ON "<10>">
001005 012 116 117 .ASCIZ ""<12>"NO RSX-20F FILE SYSTEM ON "<10>""<1>""
001010 040 122 123
001013 130 055 062
001016 060 106 040
001021 106 111 114
001024 105 040 123
001027 131 123 124
001032 105 115 040
001035 117 116 040
001040 010 001 000
004552 012746 001005' MOV #$$$,-(SP)
004556 004737 005622' JSR PC,TYPMSG
1283 004562 NOTRXF:
1284 004562 012703 000000G MOV #.RPADR,R3 ;POINT TO AREA
1285 004566 005023 CLR (R3)+ ;CLEAR
1286 004570 005023 CLR (R3)+ ; ALL
1287 004572 005023 CLR (R3)+ ; FOUR
1288 004574 005023 CLR (R3)+ ; WORDS
1289 004576 000431 BR RQSKLR ; +++001 ALL DONE
1290 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 20-2
RESTORE -- READ HOM BLOCKS ON BOOT DB
1291 004600 RHMERR:
1292 004600 WARN <TOPS HOM BLOCK READ ERROR "<7>" ON "<10>">
001043 012 124 117 .ASCIZ ""<12>"TOPS HOM BLOCK READ ERROR "<7>" ON "<10>""<1>""
001046 120 123 040
001051 110 117 115
001054 040 102 114
001057 117 103 113
001062 040 122 105
001065 101 104 040
001070 105 122 122
001073 117 122 040
001076 007 040 117
001101 116 040 010
001104 001 000
004600 012746 001043' MOV #$$$,-(SP)
004604 004737 005622' JSR PC,TYPMSG
1293 004610 000411 BR ALLRX1 ;ASSUME ALL OF DISK
1294 ;
1295 004612 RNRERR:
1296 004612 WARN <"<10>" NOT READY>
001106 012 010 040 .ASCIZ ""<12>""<10>" NOT READY"<1>""
001111 116 117 124
001114 040 122 105
001117 101 104 131
001122 001 000
004612 012746 001106' MOV #$$$,-(SP)
004616 004737 005622' JSR PC,TYPMSG
1297 004622 000417 BR RQSKLR ; +++001 LEAVE ADDR/SIZE ALONE
1298 ;
1299 004624 ALLRXF:
1300 004624 WARN <NO TOPS FILE SYSTEM ON "<10>">
001124 012 116 117 .ASCIZ ""<12>"NO TOPS FILE SYSTEM ON "<10>""<1>""
001127 040 124 117
001132 120 123 040
001135 106 111 114
001140 105 040 123
001143 131 123 124
001146 105 115 040
001151 117 116 040
001154 010 001 000
004624 012746 001124' MOV #$$$,-(SP)
004630 004737 005622' JSR PC,TYPMSG
1301 004634 ALLRX1:
1302 004634 012703 000000G MOV #.RPADR,R3 ;ADDRESS WORDS TO SET
1303 004640 005023 CLR (R3)+ ;HIGH ADDRESS:0
1304 004642 012723 000001 MOV #1,(R3)+ ;LOW ADDRESS: BLOCK 1
1305 004646 012723 000177 MOV #177,(R3)+ ;HIGH SIZE: MAX TO 24 BITS
1306 004652 012723 177777 MOV #-1,(R3)+ ; LOW SIZE: MAX ALSO
1307 004656 SOMRXF:
1308 004656 105037 000001G CLRB .RPADR+1 ;CLEAR HIGH BYTE OF HIGH ADDRESS
1309 ; BR RQSKLR ; +++001 GO CHECK KLINIK LINE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 21
RESTORE -- CKECK STATE OF KLINIK LINE
1311 .SBTTL RESTORE -- CKECK STATE OF KLINIK LINE
1312 ;
1313 ; CHECK STATE OF KLINIK LINE
1314 ;
1315 004662 RQSKLR:
1316 004662 CLEF$S #E.FTMO ; +++001 RESET TIMEOUT FLAG
004662 012746 000002 MOV #E.FTMO,-(SP)
004666 012746 MOV (PC)+,-(SP)
004670 037 002 .BYTE 31.,2
004672 104375 EMT 375
1317 004674 013705 000000G MOV KLNPTR,R5 ; +++001 KLINIK LINE BLOCK POINTER TO R5
1318 004700 016504 000000G MOV TTYEXP(R5),R4 ; +++001 I/O PAGE ADDRESS TO R4
1319 004704 012703 000055 MOV #^D45,R3 ; +++001 SET UP?? COUNTER
1320 004710 013700 000000G MOV .BTPRM,R0 ; +++001 BOOT PARAMETERS TO R0
1321 004714 042700 177771 BIC #^C<BP.LD1!BP.LD0>,R0 ; +++001 JUST WHAT WE WANT
1322 004720 10$:
1323 004720 032714 000000G BIT #DL.CAR,(R4) ; +++001 IS CARRIER UP
1324 004724 001006 BNE 20$ ; +++001 YES -- GO ON
1325 004726 032765 000000C 000000G BIT #<TT.CRW!TT.RIP>,STSW1(R5) ; +++001 NO -- IN CARRIER WAIT??
1326 004734 001577 BEQ RQSTSK ; +++001 NO -- OH WELL....
1327 004736 005203 INC R3 ; +++001 YES -- TAKE THIS TICK BACK
1328 004740 000413 BR 30$ ; +++001 WAIT A BIT MORE
1329 ;
1330 004742 20$:
1331 004742 022700 000004 CMP #BP.LD1,R0 ; +++001 CAN PROTOCOLS RUN??
1332 004746 001034 BNE 35$ ; +++001 NO -- SO DON'T EVEN BOTHER
1333 004750 032737 000000C 000002G BIT #<EF.PR1!EF.PR2>,.COMEF+2
1334 004756 001561 BEQ PRNRUN ; +++001 PROTOCOL STOPPED -- JUST GO AWAY
1335 004760 032737 000000G 000002G BIT #EF.RKP,.COMEF+2 ; +++001 DID WE GET KLINIK PARAMETERS??
1336 004766 001024 BNE 35$ ; +++001 YES -- GO ON
1337 004770 30$:
1338 004770 MRKT$S #E.FTMO,#60. ; +++001 WAIT A BIT
004770 005046 CLR -(SP)
004772 005046 CLR -(SP)
004774 012746 000074 MOV #60.,-(SP)
005000 012746 000002 MOV #E.FTMO,-(SP)
005004 012746 MOV (PC)+,-(SP)
005006 027 005 .BYTE 23.,5
005010 104375 EMT 375
1339 005012 WTSE$S #E.FTMO ; +++001 WAIT FOR IT
005012 012746 000002 MOV #E.FTMO,-(SP)
005016 012746 MOV (PC)+,-(SP)
005020 051 002 .BYTE 41.,2
005022 104375 EMT 375
1340 005024 CLEF$S #E.FTMO ; +++001 CLEAR THE FLAG
005024 012746 000002 MOV #E.FTMO,-(SP)
005030 012746 MOV (PC)+,-(SP)
005032 037 002 .BYTE 31.,2
005034 104375 EMT 375
1341 005036 077350 SOB R3,10$ ; +++001 LOOP TILL DONE
1342 005040 35$:
1343 005040 .INH6 ; +++001 DISALLOW INTERRRUPTS
005040 013746 177776 MOV @#PS,-(SP)
005044 112737 000300 177776 MOVB #300,@#PS
1344 005052 032737 000000G 000002G BIT #EF.RKP,.COMEF+2 ;;; +++001 DID WE GET KLINIK PARAMETERS??
1345 005060 001413 BEQ 50$ ;;; +++001 NO -- DO DEFAULT
1346 005062 105737 000000G TSTB .KLNMD+0 ;;; +++001 YES -- DO WE HAVE PARAMETERS??
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 21-1
RESTORE -- CKECK STATE OF KLINIK LINE
1347 005066 001410 BEQ 50$ ;;; +++001 NO -- DO DEFAULT
1348 005070 40$:
1349 005070 113737 000000G 000000G MOVB .KLNMD+0,.KLNSW+0 ;;; +++001 SET THE KLINIK MODE
1350 005076 003410 BLE 60$ ;;; +++001 EXIT IF USER
1351 005100 113737 000001G 000000G MOVB .KLNMD+1,.FEMOD ;;; +++001 SET THE CONSOLE MODE
1352 005106 000404 BR 60$ ;;; +++001 GO TO COMMON EXIT
1353 ;
1354 005110 50$:
1355 005110 012737 003401 000000G MOV #3401,.KLNMD ;;; +++001 SET DEFAULT KLINIK PARAMETERS
1356 005116 000764 BR 40$ ;;; +++001 SET OTHER PARAMETERS AND EXIT
1357 ;
1358 005120 60$:
1359 005120 042765 000000G 000000G BIC #TT.OUT,STSW1(R5)
1360 005126 105737 000000G TSTB .KLNMD+0 ;;; +++001 WHICH MODE??
1361 005132 002404 BLT 70$ ;;; +++001 GO DO USER STUFF
1362 005134 052765 000000G 000000G BIS #TT.CTY,STSW1(R5) ;;; +++001 REMOTE -- DECLARE CTY
1363 005142 000403 BR 80$ ;;; +++001 AND GO ON
1364 ;
1365 005144 70$:
1366 005144 042765 000000G 000000G BIC #TT.CTY,STSW1(R5) ;;; +++001 CLEAR CTY BIT
1367 005152 80$:
1368 005152 .ENB6 ;;; +++001 ALLOW INTERRUPTS
005152 012637 177776 MOV (SP)+,@#PS
1369 005156 105737 000000G TSTB .KLNMD+0 ; +++001 CHECK MODE
1370 005162 002411 BLT KLAUSR ; +++001 USER -- GO ON
1371 005164 WARN <KLINIK LINE ACTIVE IN REMOTE MODE>
001157 012 113 114 .ASCIZ ""<12>"KLINIK LINE ACTIVE IN REMOTE MODE"<1>""
001162 111 116 111
001165 113 040 114
001170 111 116 105
001173 040 101 103
001176 124 111 126
001201 105 040 111
001204 116 040 122
001207 105 115 117
001212 124 105 040
001215 115 117 104
001220 105 001 000
005164 012746 001157' MOV #$$$,-(SP)
005170 004737 005622' JSR PC,TYPMSG
1372 005174 WARN <KLINIK LINE CONNECTED TO SYSTEM CONSOLE>
001223 012 113 114 .ASCIZ ""<12>"KLINIK LINE CONNECTED TO SYSTEM CONSOLE"<1>""
001226 111 116 111
001231 113 040 114
001234 111 116 105
001237 040 103 117
001242 116 116 105
001245 103 124 105
001250 104 040 124
001253 117 040 123
001256 131 123 124
001261 105 115 040
001264 103 117 116
001267 123 117 114
001272 105 001 000
005174 012746 001223' MOV #$$$,-(SP)
005200 004737 005622' JSR PC,TYPMSG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 21-2
RESTORE -- CKECK STATE OF KLINIK LINE
1373 005204 000404 BR KLAREM ; +++001 EXIT THIS ROUTINE
1374 ;
1375 005206 KLAUSR:
1376 005206 WARN <KLINIK LINE ACTIVE IN USER MODE>
001275 012 113 114 .ASCIZ ""<12>"KLINIK LINE ACTIVE IN USER MODE"<1>""
001300 111 116 111
001303 113 040 114
001306 111 116 105
001311 040 101 103
001314 124 111 126
001317 105 040 111
001322 116 040 125
001325 123 105 122
001330 040 115 117
001333 104 105 001
001336 000
005206 012746 001275' MOV #$$$,-(SP)
005212 004737 005622' JSR PC,TYPMSG
1377 005216 KLAREM:
1378 005216 032737 000000G 000002G BIT #EF.PR1,.COMEF+2 ; +++004 AN WE LOG THIS??
1379 005224 001443 BEQ RQSTSK ; +++004 NO -- GO ON
1380 005226 012700 001066' MOV #LOGBUF,R0 ; +++004 YES -- BUFFER POINTER TO R0
1381 005232 113701 000000G MOVB .KLNMD+0,R1 ; +++004 KLINIK MODE TO R1
1382 005236 002406 BLT 10$ ; +++004 USER -- GO ON
1383 005240 113701 000001G MOVB .KLNMD+1,R1 ; +++004 REMOTE -- GET CONSOLE MODE
1384 005244 006201 ASR R1 ; +++004 COMPUTE THE CODE
1385 005246 005201 INC R1 ; +++004
1386 005250 006201 ASR R1 ; +++004
1387 005252 005201 INC R1 ; +++004
1388 005254 10$:
1389 005254 110160 000005 MOVB R1,5(R0) ; +++004 SET THE MODE
1390 005260 112760 000000G 000004 MOVB #K.LRBA,4(R0) ; +++004 SET THE LOG CODE
1391 005266 012701 100000G MOV #BC.HDS+100000,R1 ; +++004 FUNCTION CODE TO R1
1392 005272 012702 000004 MOV #E.FLOG,R2 ; +++004 EVENT FLAG TO R2
1393 005276 012703 000000G MOV #D.CKLN,R3 ; +++004 DEVICE CODE TO R3
1394 005302 CALL ..STIN ; +++004 LOG IT
005302 004737 000000G JSR PC,..STIN
1395 005306 WTSE$S #E.FLOG ; +++004 WAIT FOR IT
005306 012746 000004 MOV #E.FLOG,-(SP)
005312 012746 MOV (PC)+,-(SP)
005314 051 002 .BYTE 41.,2
005316 104375 EMT 375
1396 005320 000405 BR RQSTSK ; +++001 EXIT THIS ROUTINE
1397 ;
1398 005322 PRNRUN:
1399 005322 ERROR <PROTOCOLS NOT RUNNING>
001337 011 120 122 .ASCIZ ""<11>"PROTOCOLS NOT RUNNING"<5>""
001342 117 124 117
001345 103 117 114
001350 123 040 116
001353 117 124 040
001356 122 125 116
001361 116 111 116
001364 107 005 000
005322 012746 001337' MOV #$$$,-(SP)
005326 004737 005622' JSR PC,TYPMSG
1400 005332 000452 BR EXIT ; +++001 GO AWAY
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 21-3
RESTORE -- CKECK STATE OF KLINIK LINE
1401 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 22
RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
1403 .SBTTL RESTORE -- REQUEST KL INITIALIZATION TASK AND/OR EXIT
1404 ;
1405 ; REQUEST KL SYSTEM INITIALIZATION TASK IF LOAD FLAGS FROM BOOT = 00 OR 11
1406 ;
1407 005334 RQSTSK:
1408 005334 012701 001116' MOV #KLINIT,R1 ;ADDRESS OF .RAD50/...KLI/
1409 005340 013700 000000G MOV .BTPRM,R0 ;GET LOAD FLAGS
1410 005344 012702 000000C MOV #KL.LRM!KL.LCA!KL.CFM!KL.LVB,R2 ;DEFAULT TO DEFAULT
1411 005350 032700 000001 BIT #BP.SWR,R0 ;FROM SWR BUTTON?
1412 005354 001002 BNE 10$ ;YES-- OK
1413 005356 052702 000000G BIS #KL.VBN,R2 ;NO-- VBOOT DOESN'T PROMPT
1414 005362 10$:
1415 005362 042700 177771 BIC #^C<BP.LD1!BP.LD0>,R0 ;LOAD FLAGS= 00?
1416 005366 001404 BEQ 50$ ;YES-- REQUEST SYSTEM INITIALIZATION
1417 005370 022700 000006 CMP #<BP.LD1!BP.LD0>,R0 ;LOAD FLAGS= 11?
1418 005374 001024 BNE EXIT00 ;NO-- JUST EXIT
1419 005376 005002 CLR R2 ;SET KLI TO ASK DIALOG
1420 005400 50$:
1421 005400 010237 000000G MOV R2,.KLIWD ;SET FLAGS TO ...KLI
1422 005404 RQST$S R1 ;REQUEST TASK
005404 005046 CLR -(SP)
005406 005046 CLR -(SP)
005410 005046 CLR -(SP)
005412 005046 CLR -(SP)
005414 016146 000002 MOV 2(R1),-(SP)
005420 011146 MOV (R1),-(SP)
005422 012746 MOV (PC)+,-(SP)
005424 013 007 .BYTE 11.,7
005426 104375 EMT 375
1423 005430 103006 BCC EXIT00 ;SUCCESS-- JUST LEAVE
1424 005432 013700 000000G MOV $DSW,R0 ;GET THE ERROR CODE
1425 005436 WARN <KLI TASK REQUEST ERROR "<7>">
001367 012 113 114 .ASCIZ ""<12>"KLI TASK REQUEST ERROR "<7>""<1>""
001372 111 040 124
001375 101 123 113
001400 040 122 105
001403 121 125 105
001406 123 124 040
001411 105 122 122
001414 117 122 040
001417 007 001 000
005436 012746 001367' MOV #$$$,-(SP)
005442 004737 005622' JSR PC,TYPMSG
1426 005446 EXIT00:
1427 005446 105737 000050' TSTB EXFLAG ;SHOULD WE EXIT (/EX)
1428 005452 001002 BNE EXIT ;YES-- DO SO
1429 005454 000137 001166' JMP SAVE ;NO-- GO BACK TO SAVE
1430 ;
1431 ; ALL DONE-- DO A TASK EXIT, SYSTEM BACK TO STATE BEFORE SAVE
1432 ;
1433 005460 EXIT:
1434 005460 EXIT$S ;TASK EXIT
005460 012746 MOV (PC)+,-(SP)
005462 063 001 .BYTE 51.,1
005464 104375 EMT 375
1435 005466 000774 BR EXIT ;JUST IN CASE . . .
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 23
COMMAND PARSER ROUTINES
1437 .SBTTL COMMAND PARSER ROUTINES
1438 ;
1439 ; GENERAL NOTES:
1440 ;
1441 ; R4 IS ALWAYS USED AS A POINTER TO THE COMMAND STRING. ON CALL,
1442 ; IT POINTS TO THE NEXT CHARACTER TO BE PROCESSED. ON RETURN, R4
1443 ; ALWAYS POINTS TO THE CHARACTER AFTER THE LAST ONE PROCESSED, I.E.
1444 ; THE NEXT ONE TO BE PROCESSED.
1445 ;
1446 ; NOTE THAT END-OF-LINE IS A ZERO BYTE
1447 ;
1448 ;
1449 ; GETNB -- GET NEXT NON-BLANK CHARACTER
1450 ;
1451 ; RETURNS WITH R4 POINTING TO THE NEXT NON-BLANK CHARACTER
1452 ; R0 -- NON-BLANK CHARACTER
1453 ; CC-Z SET IF END-OF-LINE
1454 ;
1455 005470 GETNB:
1456 005470 112400 MOVB (R4)+,R0 ;GET A CHARACTER
1457 005472 122700 000040 CMPB #' ,R0 ;THIS BLANK?
1458 005476 001774 BEQ GETNB ;YES-- LOOK SOME MORE
1459 005500 122700 000011 CMPB #' ,R0 ;OR A TAB?
1460 005504 001771 BEQ GETNB ;YES-- LOOK SOME MORE
1461 005506 10$:
1462 005506 105744 TSTB -(R4) ;NON-BLANK-- BACK OVER IT (MAY BE EOL)
1463 005510 RETURN ; FROM GETNB
005510 000207 RTS PC
1464 ;
1465 ; GETNAM -- GET TWO-CHARACTER ALPHABETIC NAME
1466 ;
1467 ; RETURNS AFTER TWO CHARCTERS OR NON-ALPHABETIC
1468 ; R0 -- (LOW) FIRST CHARACTER (HIGH) SECOND CHARACTER
1469 ; CC-C SET IF MORE THAN TWO CHARACTERS
1470 ;
1471 005512 GETNAM:
1472 005512 005000 CLR R0 ;CLEAR ANSWER
1473 005514 10$:
1474 005514 122714 000101 CMPB #'A,(R4) ;BELOW A?
1475 005520 101015 BHI 50$ ;YES-- RETURN CC-C CLEAR
1476 005522 121427 000132 CMPB (R4),#'Z ;OR ABOVE Z?
1477 005526 101012 BHI 50$ ;YES-- RETURN CC-C CLEAR
1478 005530 005700 TST R0 ;GOT A BYTE YET?
1479 005532 001002 BNE 20$ ;YES-- STORE SECOND BYTE
1480 005534 112400 MOVB (R4)+,R0 ;NO-- GET LOW BYTE
1481 005536 000766 BR 10$ ;LOOP FOR NEXT CHARACTER
1482 ;
1483 005540 20$:
1484 005540 000300 SWAB R0 ;GET HIGH BYTE
1485 005542 001003 BNE 40$ ;ALREADY THERE-- ERROR
1486 005544 152400 BISB (R4)+,R0 ;OK-- SET SECOND CHARACTER
1487 005546 000300 SWAB R0 ;RESTORE R0 TO PROPER ORIENTATION
1488 005550 000761 BR 10$ ;LOOP FOR ANOTHER (?)
1489 ;
1490 005552 40$:
1491 005552 000261 SEC ;ERROR
1492 005554 50$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 23-1
COMMAND PARSER ROUTINES
1493 005554 RETURN ; FROM GETNAM
005554 000207 RTS PC
1494 ;
1495 ; GETNUM -- GET OCTAL NUMBER
1496 ;
1497 ; RETURNS WITH NON-DIGIT OR IF MORE THAN A BYTE'S WORTH
1498 ; R0 -- (LOW) NUMBER
1499 ; CC-C SET IF LARGER THAN ONE BYTE
1500 ;
1501 005556 GETNUM:
1502 005556 005000 CLR R0 ;CLEAR RESULT
1503 005560 10$:
1504 005560 112401 MOVB (R4)+,R1 ;GET A DIGIT
1505 005562 162701 000060 SUB #'0,R1 ;TRIM DOWN TO DIGIT
1506 005566 103413 BLO 40$ ;NOT A DIGIT-- GIVE UP
1507 005570 022701 000007 CMP #7,R1 ;TOO HIGH?
1508 005574 103410 BLO 40$ ;YES-- GIVE UP WITH CC-C CLEAR
1509 000003 .REPT 3
1510 ASLB R0 ;SHIFT OLD NUMBER A BIT
1511 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
1512 .ENDR
005576 106300 ASLB R0 ;SHIFT OLD NUMBER A BIT
005600 103407 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
005602 106300 ASLB R0 ;SHIFT OLD NUMBER A BIT
005604 103405 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
005606 106300 ASLB R0 ;SHIFT OLD NUMBER A BIT
005610 103403 BCS 50$ ;CARRY OUT-- NUMBER TOO BIG-- CC-C SET
1513 005612 060100 ADD R1,R0 ;ACCUMULATE THIS DIGIT
1514 005614 000761 BR 10$ ;FETCH ANOTHER DIGIT
1515 ;
1516 005616 40$:
1517 005616 105744 TSTB -(R4) ;BACK OVER BAD CHARACTER
1518 005620 50$:
1519 005620 RETURN ;FROM GETNUM
005620 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 24
TYPEOUT ROUTINES
1521 .SBTTL TYPEOUT ROUTINES
1522 ;
1523 ; TYPMSG -- TYPE A RANDOM ASCIZ STRING
1524 ;
1525 ; CALL:
1526 ; PUSH #<ADDRESS OF ASCIZ STRING>
1527 ; CALL TYPMSG
1528 ;
1529 ; SPECIAL CHARACTER CODES IN TEXT:
1530 ; 0 -- END OF TEXT
1531 ; 1 -- TYPE <CR><LF>
1532 ; 2 -- TYPE TWO CHARACTERS FROM R0 (SAVED ON STACK)
1533 ; 3 -- TYPE DEVICE NAME AND UNIT FROM PUD ENTRY (R5)
1534 ; 4 -- TYPE ASCIZ STRING BY R0
1535 ; 5 -- TYPE <CR><LF> AND RETURN TO SAVE
1536 ; 6 -- TYPE SYSTEM DATE
1537 ; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
1538 ; 10 -- DEVICE NAME AND UNIT FROM PUD ENTRY IN PUDADR
1539 ; 11 -- FATAL ERROR PREFIX
1540 ; 12 -- DIAGNOSTIC ERROR PREFIX
1541 ;
1542 005622 TYPMSG:
1543 005622 PUSH <R3,R2,R1,R0> ;SAVE USED REGISTERS
005622 010346 MOV R3,-(SP)
005624 010246 MOV R2,-(SP)
005626 010146 MOV R1,-(SP)
005630 010046 MOV R0,-(SP)
1544 005632 016600 000012 MOV 12(SP),R0 ;GET ADDRESS OF STRING
1545 005636 012702 000062' MOV #TYPBUF,R2 ;POINT TO OUTPUT BUFFER
1546 ;
1547 ; ENTER HERE AT TYPMS1:
1548 ; R0 -- POINTER TO STRING TO BE OUTPUT (AND FOLLOWING CODE)
1549 ; R2 -- CURRENT POINTER TO OUTPUT BUFFER FOR LOADING CHARACTERS
1550 ;
1551 005642 TYPMS1:
1552 005642 112012 MOVB (R0)+,(R2) ;GET A CHARACTER FROM STRING
1553 005644 122227 000013 CMPB (R2)+,#TYPMAX ;SPECIAL CODE?
1554 005650 103374 BHIS TYPMS1 ;NO-- JUST GET NEXT CHARACTER
1555 005652 114203 MOVB -(R2),R3 ;YES-- GET THE CODE
1556 005654 006303 ASL R3 ;MAKE IT WORDS
1557 005656 011601 MOV (SP),R1 ;GET R0 FROM STACK BACK TO R1
1558 005660 CALL @TYPTAB(R3) ;CALL ROUTINE TO PROCESS
005660 004773 005666' JSR PC,@TYPTAB(R3)
1559 005664 000766 BR TYPMS1 ;BACK FOR MORE
1560 ;
1561 ; DISPATCH TABLE FOR SPECIAL CODES
1562 ;
1563 005666 TYPTAB:
1564 005666 005714' 006006' 006012' .WORD TYPDON,TYPCR,TYPTXT,TYPDEV,TYPSTR,TYPSAV,TYPDAT,TYPDEC,TYPSDV,TYPERR,TYPWRN
005674 006030' 006076' 006000'
005702 006106' 006224' 006024'
005710 006064' 006072'
1565 000013 TYPMAX=<.-TYPTAB>/2
1566 ;
1567 ; 0 -- END OF MESSAGE
1568 ;
1569 005714 TYPDON:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 24-1
TYPEOUT ROUTINES
1570 005714 005726 TST (SP)+ ;POP THE RETURN ADDRESS OFF TO NOWHERE
1571 005716 162702 000062' SUB #TYPBUF,R2 ;END OF STRING-- FIND LENGTH
1572 005722 QIOW$S #IO.WLB,#CTYLUN,#E.FQIO,,,,<#TYPBUF,R2,#0> ;TYPE STRING ON CTY
005722 005046 CLR -(SP)
005724 010246 MOV R2,-(SP)
005726 012746 000062' MOV #TYPBUF,-(SP)
005732 005046 CLR -(SP)
005734 005046 CLR -(SP)
005736 005046 CLR -(SP)
005740 112716 000001 MOVB #E.FQIO,(SP)
005744 012746 000001 MOV #CTYLUN,-(SP)
005750 012746 000400 MOV #IO.WLB,-(SP)
005754 012746 MOV (PC)+,-(SP)
005756 003 011 .BYTE 3,$$$T1
005760 104375 EMT 375
1573 005762 103636 BCS EXIT ;GIVE UP IF FAILURE
1574 005764 POP <R0,R1,R2,R3> ;RESTORE REGISTERS
005764 012600 MOV (SP)+,R0
005766 012601 MOV (SP)+,R1
005770 012602 MOV (SP)+,R2
005772 012603 MOV (SP)+,R3
1575 005774 POP (SP) ;RESTORE PC OVER ADDRESS OF STRING
005774 012616 MOV (SP)+,(SP)
1576 005776 RETURN ;FROM TYPMSG
005776 000207 RTS PC
1577 ;
1578 ; 5 -- TYPE <CR><LF> AND RETURN TO SAVE
1579 ;
1580 006000 TYPSAV:
1581 006000 012766 001166' 000012 MOV #SAVE,12(SP) ;SET RETURN PC TO GO BACK TO SAVE
1582 ; BR TYPCR ;FINISH OFF WITH <CR><LF>
1583 ;
1584 ; 1 -- TYPE CRLF
1585 ;
1586 006006 TYPCR:
1587 006006 012701 MOV (PC)+,R1 ;GET <CR> AND <LF>
1588 006010 015 012 .BYTE 15,12 ; . .
1589 ; BR TYPTXT ;TYPE WHAT'S IN R1
1590 ;
1591 ; 2 -- TYPE TEXT IN R0 (SAVED ON STACK)
1592 ;
1593 006012 TYPTXT:
1594 006012 110122 MOVB R1,(R2)+ ;STORE LOW BYTE FIRST
1595 006014 000301 SWAB R1 ;GET HIGH BYTE
1596 006016 001401 BEQ 90$ ;NULL-- IGNORE IT
1597 006020 110122 MOVB R1,(R2)+ ;STORE SECOND CHARACTER
1598 006022 90$:
1599 006022 RETURN ; FROM TYPTXT
006022 000207 RTS PC
1600 ;
1601 ; 10 -- DEVICE NAME AND UNIT FROM PUDADR
1602 ;
1603 006024 TYPSDV:
1604 006024 013705 000040' MOV PUDADR,R5 ;GET THE PUD ADDRESS
1605 ; BR TYPDEV ;AND TYPE IT
1606 ;
1607 ; 3 -- DEVICE AND UNIT # FROM PUD (R5)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 24-2
TYPEOUT ROUTINES
1608 ;
1609 006030 TYPDEV:
1610 006030 016501 000000G MOV U.DN(R5),R1 ;GET THE NAME
1611 006034 CALL TYPTXT ;TYPE THE NAME
006034 004737 006012' JSR PC,TYPTXT
1612 006040 012737 000010 000016' MOV #8.,RADIX ;SET TO OCTAL
1613 006046 116501 000000G MOVB U.UN(R5),R1 ;GET THE UNIT
1614 006052 CALL TYPNUM ;TYPE THE NUMBER
006052 004737 006324' JSR PC,TYPNUM
1615 006056 112722 000072 MOVB #':,(R2)+ ;MAKE IT A DEVICE
1616 006062 RETURN ;BACK FOR MORE
006062 000207 RTS PC
1617 ;
1618 ; 11 -- FATAL ERROR PREFIX
1619 ;
1620 006064 TYPERR:
1621 006064 012701 001422' MOV #ERRMSG,R1 ;GET ERROR STRING
1622 006070 000402 BR TYPSTR ;PUT THE STRING
1623 ;
1624 001422 .PSECT TEXT
1625 001422 123 101 126 ERRMSG: .ASCIZ \SAV -- *FATAL* -- \
001425 040 055 055
001430 040 052 106
001433 101 124 101
001436 114 052 040
001441 055 055 040
001444 000
1626 006072 .PSECT
1627 ;
1628 ; 12 -- WARNING ERROR PREFIX
1629 ;
1630 006072 TYPWRN:
1631 006072 012701 001445' MOV #WRNMSG,R1 ;GET WARNING PREFIX
1632 ; BR TYPSTR ; . .
1633 ;
1634 001445 .PSECT TEXT
1635 001445 123 101 126 WRNMSG: .ASCIZ \SAV -- *DIAG* -- \
001450 040 055 055
001453 040 052 104
001456 111 101 107
001461 052 040 055
001464 055 040 000
1636 006076 .PSECT
1637 ;
1638 ; 4 -- STRING FROM R1
1639 ;
1640 006076 TYPSTR:
1641 006076 112122 MOVB (R1)+,(R2)+ ;MOVE A CHARACTER
1642 006100 001376 BNE TYPSTR ;LOOP TILL END OF COMMAND
1643 006102 105742 TSTB -(R2) ;BACK OVER NULL BYTE
1644 006104 RETURN ;BACK FOR MORE
006104 000207 RTS PC
1645 ;
1646 ; 6 -- TYPE SYSTEM DATE
1647 ;
1648 006106 TYPDAT:
1649 006106 012737 000012 000016' MOV #10.,RADIX ;ALL UNDER DECIMAL RADIX
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 24-3
TYPEOUT ROUTINES
1650 006114 113701 000026' MOVB GTIMBF+G.TIHR,R1 ;GET THE HOUR
1651 006120 CALL TYPNUM ;TYPE HOURS
006120 004737 006324' JSR PC,TYPNUM
1652 006124 112722 000072 MOVB #':,(R2)+ ;SEPERATE . . .
1653 006130 113701 000030' MOVB GTIMBF+G.TIMI,R1 ;MINUTES
1654 006134 020127 000011 CMP R1,#9. ;MORE THAN ONE DIGIT?
1655 006140 003002 BGT 10$ ;YES-- WE WILL HAVE TWO
1656 006142 112722 000060 MOVB #'0,(R2)+ ;NO-- MAKE IT TWO
1657 006146 10$:
1658 006146 CALL TYPNUM ;MINUTES . . . . . . . . . . . ...
006146 004737 006324' JSR PC,TYPNUM
1659 006152 112722 000040 MOVB #' ,(R2)+ ;SPACE-ED OUT DATE
1660 006156 113701 000024' MOVB GTIMBF+G.TIDA,R1 ;GET DAY OF MONTH
1661 006162 CALL TYPNUM ;TYPE IT IN DECIMAL
006162 004737 006324' JSR PC,TYPNUM
1662 006166 112722 000055 MOVB #'-,(R2)+ ;SEPARATE
1663 006172 113701 000022' MOVB GTIMBF+G.TIMO,R1 ;GET THE MONTH
1664 006176 006301 ASL R1 ; *2
1665 006200 006301 ASL R1 ; *4 BYTES FOR EACH NAME
1666 006202 062701 006240' ADD #MONTAB-4,R1 ;POINT TO ASCIZ MONTHS
1667 006206 CALL TYPSTR ;TYPE THE STRING
006206 004737 006076' JSR PC,TYPSTR
1668 006212 112722 000055 MOVB #'-,(R2)+ ;SEPARATE
1669 006216 013701 000020' MOV GTIMBF+G.TIYR,R1 ;GET THE YEAR
1670 006222 000440 BR TYPNUM ;TYPE IT AND RETURN
1671 ;
1672 ; 7 -- DECIMAL NUMBER IN R0 (SAVED ON STACK)
1673 ;
1674 006224 TYPDEC:
1675 006224 012737 000012 000016' MOV #10.,RADIX ;SET RADIX TO 10
1676 006232 CALL TYPNUM ;TYEP THE NUMBER
006232 004737 006324' JSR PC,TYPNUM
1677 006236 112722 000056 MOVB #'.,(R2)+ ;STORE A . TO INDICATE DECIMAL
1678 006242 RETURN ;BACK FOR ANOTHER CHAR OF STRING
006242 000207 RTS PC
1679 ;
1680 ; TABLE OF MONTHS
1681 ;
1682 006244 MONTAB:
1683 .IRP ARG,<JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC>
1684 .ASCIZ /ARG/
1685 .EVEN
1686 .ENDM
006244 112 101 116 .ASCIZ /JAN/
006247 000
006250 106 105 102 .ASCIZ /FEB/
006253 000
006254 115 101 122 .ASCIZ /MAR/
006257 000
006260 101 120 122 .ASCIZ /APR/
006263 000
006264 115 101 131 .ASCIZ /MAY/
006267 000
006270 112 125 116 .ASCIZ /JUN/
006273 000
006274 112 125 114 .ASCIZ /JUL/
006277 000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 24-4
TYPEOUT ROUTINES
006300 101 125 107 .ASCIZ /AUG/
006303 000
006304 123 105 120 .ASCIZ /SEP/
006307 000
006310 117 103 124 .ASCIZ /OCT/
006313 000
006314 116 117 126 .ASCIZ /NOV/
006317 000
006320 104 105 103 .ASCIZ /DEC/
006323 000
1687 ;
1688 ; TYPNUM -- TYPE A NUMBER
1689 ; R1 -- NUMBER TO BE TYPED
1690 ; RADIX -- OUTPUT RADIX
1691 ;
1692 ; USES R1,R2,R3
1693 ;
1694 006324 TYPNUM:
1695 006324 005701 TST R1 ;NEGATIVE #?
1696 006326 002003 BGE 10$ ;NO-- OK
1697 006330 005401 NEG R1 ;YES-- MAKE IT POSITIVE
1698 006332 112722 000055 MOVB #'-,(R2)+ ; AND STORE -VE IN STRING
1699 006336 10$:
1700 006336 005003 CLR R3 ;CLEAR REMAINDER
1701 006340 15$:
1702 006340 020137 000016' CMP R1,RADIX ;CAN WE DIVIDE?
1703 006344 002404 BLT 20$ ;NO-- DIVIDE DONE
1704 006346 163701 000016' SUB RADIX,R1 ;YES-- FORM REMAINDER
1705 006352 005203 INC R3 ; AND QUOTIENT
1706 006354 000771 BR 15$ ;LOOP TO DIVIDE R1 BY RADIX
1707 ;
1708 006356 20$:
1709 006356 PUSH R1 ;SAVE REMAINDER AS A DIGIT
006356 010146 MOV R1,-(SP)
1710 006360 010301 MOV R3,R1 ;GO BACK AND DIVIDE AGAIN
1711 006362 001402 BEQ 30$ ; UNLESS ALL DONE
1712 006364 CALL 10$ ;EXTRACT ANOTHER DIGIT ONTO STACK
006364 004737 006336' JSR PC,10$
1713 006370 30$:
1714 006370 POP R1 ;DONE-- GET A DIGIT FROM STACK
006370 012601 MOV (SP)+,R1
1715 006372 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
1716 006376 110122 MOVB R1,(R2)+ ;STORE IT IN OUTPUT STRING
1717 006400 RETURN ;FOR ANOTHER DIGIT OR THE END
006400 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 25
FILE I/O ROUTINES
1719 .SBTTL FILE I/O ROUTINES
1720 ;
1721 ; FINDEV -- FIND PUD ENTRY FOR DEVICE
1722 ; CALL:
1723 ; R0 -- DEVICE NAME AS TWO ASCII BYTES
1724 ; R1 -- UNIT NUMBER AS BINARY BYTE
1725 ; RETURN:
1726 ; R0-R4 UNCHANGED
1727 ; R5 -- PUD ENTRY ADDRESS (POSSIBLY REDIRECTED)
1728 ;
1729 006402 FINDEV:
1730 006402 012705 000000G MOV #.PUDBA,R5 ;POINT TO START OF PUD
1731 006406 10$:
1732 006406 026500 000000G CMP U.DN(R5),R0 ;NAME MATCH?
1733 006412 001003 BNE 20$ ;NO-- GO ON
1734 006414 126501 000000G CMPB U.UN(R5),R1 ;UNIT MATCH?
1735 006420 001406 BEQ 30$ ;YES-- THIS IS IT
1736 006422 20$:
1737 006422 062705 000000G ADD #U.SZ,R5 ;NO-- BUMP TO NEXT PUD ENTRY
1738 006426 020527 000000G CMP R5,#.PUDEA ;END YET?
1739 006432 103765 BLO 10$ ;NO-- LOOP TILL END
1740 006434 000261 SEC ;YES-- DEVICE NOT IN SYSTEM
1741 006436 30$:
1742 006436 RETURN ;RETURN FROM FINDEV
006436 000207 RTS PC
1743 ;
1744 ; FNDACP -- FIND ACP FOR DEVICE, PUD ADDR IN R5
1745 ; RETURNS R2= STD ADDR FOR ACP, OR ZERO IF NOT FOUND
1746 ;
1747 006440 FNDACP:
1748 006440 012701 000066' MOV #TYPBUF+4,R1 ;NO-- GET A SCRACTH AREA
1749 006444 012741 MOV (PC)+,-(R1) ;SET TO
1750 006446 003310 .RAD50 /ACP/ ; THE ACP
1751 006450 016541 000000G MOV U.DACP(R5),-(R1) ; OF THE DEVICE
1752 006454 000137 000000G JMP ..FSTD ;FIND ADR OF THE STD FOR THE ACP
1753 ;
1754 ; FILMNT -- MOUNT/DISMOUNT DEVICE QUEUE I/O REQUEST
1755 ; R2 -- ADDRESS OF FUNCTION CONTROL BLOCK
1756 ;
1757 006460 FILMNT:
1758 006460 012700 014010 MOV #IO.APV,R0 ;PRIVILIGED ACP CONTROL (MOUNT/DISMOUNT)
1759 006464 005001 CLR R1 ;NO FILE-ID BLOCK
1760 006466 005003 CLR R3 ;NO EXTEND
1761 006470 005004 CLR R4 ; . .
1762 006472 005005 CLR R5 ;NO ACCESS CONTROL
1763 ; BR FILQIO ;DO REQUEST AND RETURN
1764 ;
1765 ; FILQIO -- ROUTINE TO DO QIO REQUEST FOR FILE OPERATIONS
1766 ; R0 -- I/O FUNCTION CODE (IO.XXX)
1767 ; R1 -- (PARAMETER #1) ADDRESS OF FILE-ID BLOCK
1768 ; R2 -- (PARAMETER #2) ADDRESS OF ATTRIBUTE CONTROL BLOCK
1769 ; R3 -- (PARAMETER #3) EXTEND CONTROL BITS
1770 ; R4 -- (PARAMETER #4) LOW-ORDER EXTEND INCREMENT
1771 ; R5 -- (PARAMETER #5) ACCESS CONTROL BITS
1772 ;
1773 ; RETURNS CC-C CLEAR, QEFLAG UNCHANGED IF SUCCESS
1774 ; CC-C SET, QEFLAG NON-ZERO IF ERROR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 25-1
FILE I/O ROUTINES
1775 ; R0 -- ERROR CODE FROM I/O STATUS OR DIRECTIVE STATUS
1776 ;
1777 006474 FILQIO:
1778 006474 QIOW$S R0,#DSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,R3,R4,R5>
006474 010546 MOV R5,-(SP)
006476 010446 MOV R4,-(SP)
006500 010346 MOV R3,-(SP)
006502 010246 MOV R2,-(SP)
006504 010146 MOV R1,-(SP)
006506 005046 CLR -(SP)
006510 012746 001062' MOV #QIOSTS,-(SP)
006514 005046 CLR -(SP)
006516 112716 000001 MOVB #E.FQIO,(SP)
006522 012746 000002 MOV #DSKLUN,-(SP)
006526 010046 MOV R0,-(SP)
006530 012746 MOV (PC)+,-(SP)
006532 003 013 .BYTE 3,$$$T1
006534 104375 EMT 375
1779 006536 113700 000056' MOVB QEFLAG,R0 ;DID A PREVIOUS Q I/O FAIL?
1780 006542 001010 BNE 20$ ;YES-- JUST RETURN THAT
1781 006544 113700 000000G MOVB $DSW,R0 ;NO-- GET DIRECTIVE STATUS
1782 006550 103403 BCS 10$ ;ERROR-- JUST RETURN THIS
1783 006552 113700 001062' MOVB QIOSTS+0,R0 ;ERROR OCCUR ON QUEUE I/O?
1784 006556 002003 BGE 30$ ;N0-- JUST GO ON
1785 006560 10$:
1786 006560 110037 000056' MOVB R0,QEFLAG ;YES-- SAVE THAT AS ERROR
1787 006564 20$:
1788 006564 000261 SEC ; AND SAY ERROR
1789 006566 30$:
1790 006566 RETURN ;FROM FILQIO
006566 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 26
DRIVER TABLES
1792 .SBTTL DRIVER TABLES
1793 ;
1794 ; DRIVER TABLE DRVTAB:
1795 ; THIS TABLE CONTAINS ALL THE DEVICE-DEPENDENT DATA AND
1796 ; DISPATCHES FOR THE DEVICES THAT "SAVE" UNDERSTANDS.
1797 ;
1798 .MACRO DRIVER NAME,DV,BTPRM
1799 $$$ADR=.
1800 DRVNAM=.-$$$ADR
1801 .ASCII /NAME/ ;DEVICE NAME IN ASCII
1802 .EVEN
1803 DRVSET=.-$$$ADR
1804 .WORD DV'SET ;DISK ADDRESS SETUP ROUTINE
1805 .IF DF FTABS
1806 DRVABS=.-$$$ADR
1807 .WORD DV'ABS ;ABSOLUTE (/AB) SAVE SETUP ROUTINE
1808 .ENDC ; .IF DF FTABS
1809 DRVBOT=.-$$$ADR
1810 .WORD DV'BOOT ;ADDRESS OF BOOTSTRAP CODE
1811 DRVWRT=.-$$$ADR
1812 .WORD DV'WRT ;DEVICE WRITE ROUTINE
1813 DRVMSZ=.-$$$ADR
1814 .WORD DV'BMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
1815 DRVAD1=.-$$$ADR
1816 .WORD DV'BAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
1817 DRVAD2=.-$$$ADR
1818 .WORD DV'BAD2 ;ADDRESS FOR SECOND PART . .
1819 .IF DF M$$MGE
1820 DRVUP0=.-$$$ADR
1821 .WORD DV'BUP0 ;ADDRESS FOR CURRENT CONTENTS OF UPAR0
1822 .ENDC
1823 DRVBTP=.-$$$ADR
1824 .WORD BTPRM ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1825 DRVSIZ=.-$$$ADR
1826 .ENDM DRIVER
1827 ;
1828 006570 DRVTAB:
1829 006570 DRIVER DX,RX,0
006570 104 130 .ASCII /DX/ ;DEVICE DX IN ASCII
006572 006650' .WORD RXSET ;DISK ADDRESS SETUP ROUTINE
006574 006660' .WORD RXBOOT ;ADDRESS OF BOOTSTRAP CODE
006576 007130' .WORD RXWRT ;DEVICE WRITE ROUTINE
006600 007112' .WORD RXBMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
006602 006716' .WORD RXBAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
006604 006716' .WORD RXBAD2 ;ADDRESS FOR SECOND PART . .
006606 000000 .WORD 0 ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1830 006610 DRIVER DB,RP,BP.RP4
006610 104 102 .ASCII /DB/ ;DEVICE DB IN ASCII
006612 007342' .WORD RPSET ;DISK ADDRESS SETUP ROUTINE
006614 007412' .WORD RPBOOT ;ADDRESS OF BOOTSTRAP CODE
006616 007546' .WORD RPWRT ;DEVICE WRITE ROUTINE
006620 007514' .WORD RPBMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
006622 007430' .WORD RPBAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
006624 007436' .WORD RPBAD2 ;ADDRESS FOR SECOND PART . .
006626 000200 .WORD BP.RP4 ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1831 006630 DRIVER DT,TC,0
006630 104 124 .ASCII /DT/ ;DEVICE DT IN ASCII
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 26-1
DRIVER TABLES
006632 007704' .WORD TCSET ;DISK ADDRESS SETUP ROUTINE
006634 007710' .WORD TCBOOT ;ADDRESS OF BOOTSTRAP CODE
006636 010116' .WORD TCWRT ;DEVICE WRITE ROUTINE
006640 010060' .WORD TCBMSZ ;ADDRESS WHERE MEMORY SIZE GOES IN BOOT
006642 007714' .WORD TCBAD1 ;ADDRESS FOR FIRST PART DISK ADDRESS
006644 007714' .WORD TCBAD2 ;ADDRESS FOR SECOND PART . .
006646 000000 .WORD 0 ;BOOTSTRAP PARAMETER BITS FOR DEVICE
1832 000060 DRVTBZ=.-DRVTAB
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 27
RX-11 FLOPPY DISK ROUTINES
1834 .SBTTL RX-11 FLOPPY DISK ROUTINES
1835 ;
1836 ; RXSET -- SET RX-11 ADDRESS
1837 ;
1838 006650 RXSET:
1839 006650 006301 ASL R1 ;SECTOR IS BLOCK
1840 006652 006301 ASL R1 ; TIMES 4
1841 .IF DF FTABS
1842 BR RXSETX ;RETURN FROM RXSET
1843 ;
1844 ; RXABS -- RX-11 ABSOLUTE ADDRESS SET-UP
1845 ;
1846 RXABS:
1847 MOV #<58.*26.>,R1 ;SET TO END OF DISK
1848 .ENDC ; .IF DF FTABS
1849 006654 RXSETX:
1850 006654 010100 MOV R1,R0 ;COPY IT AGAIN FOR BOTH PARTS
1851 006656 RETURN ;RETURN FROM RXSET/RXABS
006656 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 28
RX-11 BOOTSTRAP
1853 .SBTTL RX-11 BOOTSTRAP
1854 ;
1855 ; RX-11 BOOTSTRAP ROUTINE
1856 ;
1857 ; THIS BOOT IS READ IN FROM SECTOR ZERO (TRACK 1 SECTOR 1)
1858 ; BY THE BM873-YF ROM.
1859 ;
1860 ; THE FOLLOWING STUFF IS RETURNED IN THE REGISTERS BY THE ROM:
1861 ;
1862 ; R0 -- READ FUNCTION WITH UNIT # SET OR JUST UNIT #
1863 ; R1 -- ADDRESS OF RXCS
1864 ; R5 -- BOOTSTRAP PARAMETER (COPY OF SWITCH REGISTER)
1865 ;
1866 006660 RXBOOT:
1867 006660 000240 NOP ;;;THIS IS A BOOTSTRAP
1868 006662 106200 ASRB R0 ;;;GET UNIT BIT INTO CC-C IF NO READ FUNC SPECIFIED
1869 006664 001401 BEQ 10$ ;;;NO READ FUNC-- GO ON
1870 006666 106300 ASLB R0 ;;;READ FUNC ALREADY-- SET IT BACK WITH UNIT #
1871 006670 10$:
1872 006670 103002 BCC 20$ ;;;UNIT 0 OR READ FUNC ALREADY?
1873 006672 012700 000020 MOV #RXUNIT,R0 ;;;NO-- SELECT UNIT 1
1874 006676 20$:
1875 006676 052700 000007 BIS #RXREAD+RXGO,R0 ;;;SET READ FUNCTION
1876 006702 012706 002000 MOV #2000,SP ;;;SETUP TEMPORARY STACK ABOVE FIRST BLOCK
1877 006706 005004 CLR R4 ;;;SET ADDRESS TO START READ AT LOC 0
1878 ;
1879 ; SETUP INITIAL RETURN ADDRESS TO DO A CALL ON
1880 ; RXBBLK TO READ THE FIRST 256. WORDS
1881 ;
1882 006710 PUSH #RXBBLX-RXBOOT ;;;SAME AS CALL RXBBLK/BR RXBBLX
006710 012746 000200 MOV #RXBBLX-RXBOOT,-(SP)
1883 006714 012702 MOV (PC)+,R2 ;;;SETUP INITIAL LOGICAL SECTOR #
1884 006716 RXBAD1:
1885 006716 000000 RXBAD2: .WORD 0 ;;;SET BY SAVE TO POINT TO FILE
1886 ; BR RXBBLK ;;;FALL INTO READ BLOCK ROUTINE
1887 ;
1888 ; RXBBLK -- ROUTINE TO READ ONE BLOCK (256. WORDS) TO MEMORY
1889 ;
1890 ; R0 -- READ FUNCTION WITH UNIT #
1891 ; R1 -- ADDRESS OF RXCS
1892 ; R2 -- CURRENT LOGICAL SECTOR # (UPDATED)
1893 ; R3 -- SCRATCH
1894 ; R4 -- CURRENT MEMORY ADDRESS (UPDATED)
1895 ;
1896 006720 RXBBLK:
1897 006720 CALL (PC) ;;;DO 4 CALLS
006720 004717 JSR PC,(PC)
1898 006722 CALL (PC) ;;; TO READ SECTOR ROUTINE
006722 004717 JSR PC,(PC)
1899 ;
1900 ; READ A SECTOR
1901 ;
1902 006724 PUSH R2 ;;;SAVE CURRENT SECTOR
006724 010246 MOV R2,-(SP)
1903 006726 010011 MOV R0,(R1) ;;;EXECUTE A READ SECTOR FUNCTION
1904 ;
1905 ; COMPUTE CURRENT PHYSICAL SECTOR # AND TRACK #
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 28-1
RX-11 BOOTSTRAP
1906 ;
1907 006730 005003 CLR R3 ;;;RESET TRACK #
1908 006732 PUSH #26. ;;;SET UP DIVISOR ON TOP OF STACK
006732 012746 000032 MOV #26.,-(SP)
1909 006736 20$:
1910 006736 005203 INC R3 ;;;ONE MORE TRACK
1911 006740 161602 SUB (SP),R2 ;;;DIVIDE SECTOR BY 26.
1912 006742 002375 BGE 20$ ;;; TO FIND LOGICAL SECTOR # WITHIN TRACK
1913 006744 061602 ADD (SP),R2 ;;;MAKE SECTOR IN RANGE 0. TO 26.
1914 006746 005303 DEC R3 ;;; TRACK IN RANGE 0. TO 76.
1915 006750 022702 000014 CMP #12.,R2 ;;;SECTOR GREATER THAN 12.?
1916 006754 006102 ROL R2 ;;;IF SO, CC-C SET, INTERLEAVE FACTOR OF 2.
1917 006756 006303 ASL R3 ;;;GET 2*TRACK
1918 006760 060302 ADD R3,R2 ;;;SKEW BY 2*TRACK
1919 006762 060302 ADD R3,R2 ;;; 4*TRACK
1920 006764 060302 ADD R3,R2 ;;; 6*TRACK
1921 006766 30$:
1922 006766 161602 SUB (SP),R2 ;;;GET SECTOR IN RANGE -26. TO -1. AGAIN
1923 006770 002376 BGE 30$ ;;; . .
1924 006772 31$:
1925 006772 062602 ADD (SP)+,R2 ;;;MAKE LOGICAL SECTOR IN RANGE 0. TO 25.
1926 ;
1927 006774 006203 ASR R3 ;;;RESTORE TRACK #
1928 006776 122223 CMPB (R2)+,(R3)+ ;;;PHYSICAL SECTOR 1. TO 26., TRACK 1. TO 77.
1929 ;
1930 ; SET SECTOR AND TRACK IN RX-11 TO START READ
1931 ;
1932 007000 40$:
1933 007000 105711 TSTB (R1) ;;;READY FOR SECTOR #?
1934 007002 100376 BPL 40$ ;;;NO-- WAIT UNTIL IT IS
1935 007004 110261 000002 MOVB R2,RXDB-RXCS(R1) ;;;YES-- SET SECTOR #
1936 007010 50$:
1937 007010 105711 TSTB (R1) ;;;READY FOR TRACK?
1938 007012 100376 BPL 50$ ;;;NO-- WAIT FOR READY
1939 007014 110361 000002 MOVB R3,RXDB-RXCS(R1) ;;;YES-- SET TRACK #
1940 ;
1941 ; WAIT FOR FUNCTION TO COMPLETE
1942 ;
1943 007020 60$:
1944 007020 032711 100040 BIT #RXERR!RXDONE,(R1) ;;;WAIT FOR EROR OR DONE
1945 007024 001775 BEQ 60$ ;;; . .
1946 007026 100714 BMI RXBOOT ;;;ERROR-- RETRY WHOLE SHIBANG
1947 ;
1948 ; EMPTY SECTOR BUFFER TO MEMORY
1949 ;
1950 007030 012711 000003 MOV #RXEMPT!RXGO,(R1) ;;;DO AN EMPTY SECTOR BUFFER FUNCTION
1951 007034 70$:
1952 007034 132711 000240 BITB #RXTREQ!RXDONE,(R1) ;;;READY WITH A BYTE?
1953 007040 001775 BEQ 70$ ;;;NO-- WAIT UNTIL IT IS
1954 007042 100003 BPL 80$ ;;;DONE-- OFF TO NEXT SECTOR
1955 007044 116124 000002 MOVB RXDB-RXCS(R1),(R4)+ ;;;STORE A BYTE TO MEMORY
1956 007050 000771 BR 70$ ;;;LOOP TO EMPTY WHOLE BUFFER
1957 ;
1958 ; BUMP SECTOR TO NEXT SECTOR AND RETURN
1959 ;
1960 007052 80$:
1961 007052 POP R2 ;;;RESTORE LOGICAL SECTOR #
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 28-2
RX-11 BOOTSTRAP
007052 012602 MOV (SP)+,R2
1962 007054 005202 INC R2 ;;;SET TO NEXT SECTOR
1963 007056 RETURN ;;;RETURN TO READ ANOTHER SECTOR OR DONE
007056 000207 RTS PC
1964 ;
1965 .IF G <<.-RXBOOT>-128.>
1966 .ERROR <.-RXBOOT> ; RX BOOT TOO BIG FOR FIRST SECTOR
1967 .ENDC
1968 ;
1969 ; HERE AFTER FIRST BLOCK READ. SETUP KT-11 (IF ANY)
1970 ;
1971 007060 RXBBLX:
1972 007060 012737 000340 177776 MOV #PR7,@#PS ;;;INSURE KERNAL MODE
1973 .IF DF M$$MGE
1974 MOV #77406,R3 ;;;SET TO MAP LARST PAGE
1975 MOV R3,KPDR0 ;;;KERNAL PAGE 0
1976 MOV R3,KPDR1 ;;; AND 1 (FOR READING)
1977 MOV R3,KPDR7 ;;; AND EXTERNAL PAGE
1978 MOV R3,UPDR0 ;;;USER PAGE 0
1979 MOV R3,UPDR7 ;;; AND USER EXTERNAL PAGE FOR SAVE
1980 CLR KPAR0 ;;;MAP KP 0 TO ABSOLUTE ZERO
1981 MOV (PC)+@(PC)+ ;;;USER PAGE TO WHEREEVER SAVE WAS
1982 RXBUP0: .WORD 0,UPAR0 ;;;SET BY SAVE
1983 MOV #7600,R3 ;;;SET TO MAP EXTERNAL PAGE
1984 MOV R3,KPAR7 ;;; FOR KERNAL
1985 MOV R3,UPAR7 ;;; AND USER
1986 MOV #1,SSR0 ;;;ENABLE SEGMENTAION
1987 .IFTF
1988 ;
1989 ; SETUP STACK AT TOP OF BOOT BLOCK, SAVE BOOT PARAMETER IN LOC 776
1990 ;
1991 007066 012706 001000 MOV #1000,SP ;;;SETUP KERNAL STACK
1992 007072 PUSH R5 ;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
007072 010546 MOV R5,-(SP)
1993 ;
1994 007074 005005 CLR R5 ;;;CLEAR BLOCK POINTER
1995 007076 000402 BR RXBNX1 ;;;FINISH THIS BLOCK AND GET NEXT ONE
1996 ;
1997 ; READ NEXT BLOCK (256. WORDS, 4 SECTORS)
1998 ;
1999 007100 RXBNXT:
2000 .IFT
2001 MOV R5,KPAR1 ;;;SET BLOCK TO MAP TO 20000
2002 MOV #20000,R4 ;;;START AT BEGINNING OF THIS BLOCK
2003 .ENDC
2004 007100 CALL RXBBLK-RXBOOT ;;;READ A BLOCK
007100 004737 000040 JSR PC,RXBBLK-RXBOOT
2005 007104 RXBNX1:
2006 007104 062705 000010 ADD #256.*2/100,R5 ;;;BUMP POINTER BY # 32. WORD BLOCKS IN 4 SECTORS
2007 007110 022705 CMP (PC)+,R5 ;;;REACHED MEMORY SIZE YET?
2008 007112 000000 RXBMSZ: .WORD 0 ;;;FILLED BY SAVE TO SIZE OF MEMORY IN 32. WORD BLOCKS
2009 007114 101371 BHI RXBNXT ;;;NO-- READ NEXT BLOCK
2010 ;
2011 ; BOOTSTRAP COMPLETE-- RETURN TO SAVE IN USER MODE
2012 ;
2013 .IF DF M$$MGE
2014 PUSH #PS.USR!PS.REG!PR7 ;;;SET TO USER MODE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 28-3
RX-11 BOOTSTRAP
2015 .IFF
2016 007116 PUSH #PS.REG!PR7 ;;;SET TO REGISTER SET 1
007116 012746 004340 MOV #PS.REG!PR7,-(SP)
2017 .ENDC
2018 007122 PUSH #RESTORE ;;;USER PC, RESTORE SYSTEM
007122 012746 002760' MOV #RESTORE,-(SP)
2019 007126 000002 RTI ;;;RETURN TO SAVE
2020 .IF G <<.-RXBOOT>-<128.*4>>
2021 .ERROR <.-RXBOOT> ; RX BOOT TOO BIG FOR FIRST BLOCK
2022 .ENDC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 29
RX-11 WRITE ROUTINE
2024 .SBTTL RX-11 WRITE ROUTINE
2025 ;
2026 ; RXWRT -- WRITE MEMORY TO THE RX-11
2027 ;
2028 ; INPUTS:
2029 ; DSKADR+0 -- LOGICAL SECTOR TO START WRITE (0.-76.*26.)
2030 ; DEVUNT -- (BYTE) UNIT # TO WRITE ON
2031 ; MEMSIZ -- NUMBER OF 32. WORD BLOCKS TO WRITE, STARTING AT
2032 ; ABSOLUTE ZERO
2033 ;
2034 007130 RXWRT:
2035 ;
2036 ; SETUP REGISTERS:
2037 ; R0 -- WRITE FUNCTION WITH PROPER UNIT #
2038 ; R1 -- ADDRESS OF RXCS
2039 ; R2 -- LOGICAL SECTOR # TO START WRITE
2040 ;
2041 007130 113700 000044' MOVB DEVUNT,R0 ;;;GET SPECIFIED UNIT #
2042 007134 001402 BEQ 10$ ;;;ZERO-- OK
2043 007136 012700 000020 MOV #RXUNIT,R0 ;;;NOT ZERO-- ASSUME UNIT 1
2044 007142 10$:
2045 007142 052700 000005 BIS #RXWRIT!RXGO,R0 ;;;MAKE IT A WRITE FUNCTION
2046 007146 012701 177170 MOV #RXCS,R1 ;;;ADDRESS CONTROL/STATUS REGISTER
2047 007152 013702 000004' MOV DSKADR+0,R2 ;;;GET START SECTOR #
2048 ;
2049 ; SET UP MAP TO ABSOLUTE ZERO
2050 ;
2051 .IF DF M$$MGE
2052 MOV #77406,UPDR1 ;;;MAP AS MUCH AS POSSIBLE
2053 .IFF
2054 007156 005004 CLR R4 ;;;CLEAR POINTER TO MEMORY
2055 .IFTF
2056 007160 005005 CLR R5 ;;;CLEAR COUNTER OF 32. WORD BLOCKS WRITTEN
2057 ;
2058 ; WRITE NEXT BLOCK (256. WORDS, 4 SECTORS) TO FLOPPY
2059 ;
2060 007162 RXWNXT:
2061 .IFT
2062 MOV R5,UPAR1 ;;;SET MAP TO CURRENT 32. WORD BLOCK
2063 MOV #20000,R4 ;;;MAP IT TO 20000
2064 .ENDC
2065 007162 CALL RXWBLK ;;;WRITE A BLOCK (256. WORDS)
007162 004737 007202' JSR PC,RXWBLK
2066 007166 062705 000010 ADD #256.*2/100,R5 ;;;BUMP TO NEXT 32. WORD BLOCK
2067 007172 023705 000014' CMP MEMSIZ,R5 ;;;FINISHED WITH ALL OF CORE?
2068 007176 101371 BHI RXWNXT ;;;NOT YET-- WRITE NEXT BLOCK
2069 ;
2070 007200 RETURN ;;;YES-- RETURN FROM RXWRT
007200 000207 RTS PC
2071 ;
2072 ; RXWBLK -- ROUTINE TO WRITE ONE BLOCK (256. WORDS) TO MEMORY
2073 ;
2074 ; R0 -- WRITE FUNCTION WITH UNIT #
2075 ; R1 -- ADDRESS OF RXCS
2076 ; R2 -- CURRENT LOGICAL SECTOR # (UPDATED)
2077 ; R3 -- SCRATCH
2078 ; R4 -- CURRENT MEMORY ADDRESS (UPDATED)
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 29-1
RX-11 WRITE ROUTINE
2079 ;
2080 007202 RXWBLK:
2081 007202 CALL (PC) ;;;DO 4 CALLS
007202 004717 JSR PC,(PC)
2082 007204 CALL (PC) ;;; TO WRITE SECTOR ROUTINE
007204 004717 JSR PC,(PC)
2083 ;
2084 ; FILL SECTOR BUFFER BEFORE WRITE
2085 ;
2086 007206 012711 000001 MOV #RXFILL!RXGO,(R1) ;;;DO A FILL FUNCTION
2087 007212 10$:
2088 007212 132711 000240 BITB #RXTREQ!RXDONE,(R1) ;;;READY FOR A BYTE YET?
2089 007216 001775 BEQ 10$ ;;;NO-- WAIT UNTIL IT IS
2090 007220 100003 BPL 15$ ;;;DONE-- GO WRITE
2091 007222 112461 000002 MOVB (R4)+,RXDB-RXCS(R1) ;;;STORE A BYTE FROM MEMORY IN SECTOR BUFFER
2092 007226 000771 BR 10$ ;;;LOOP TO FILL BUFFER
2093 ;
2094 ; WRITE A SECTOR
2095 ;
2096 007230 15$:
2097 007230 PUSH R2 ;;;SAVE CURRENT SECTOR
007230 010246 MOV R2,-(SP)
2098 007232 010011 MOV R0,(R1) ;;;EXECUTE A WRITE SECTOR FUNCTION
2099 ;
2100 ; COMPUTE CURRENT PHYSICAL SECTOR # AND TRACK #
2101 ;
2102 007234 005003 CLR R3 ;;;RESET TRACK #
2103 007236 PUSH #26. ;;;SET DIVISOR ON TOP OF STACK
007236 012746 000032 MOV #26.,-(SP)
2104 007242 20$:
2105 007242 005203 INC R3 ;;;ONE MORE TRACK
2106 007244 161602 SUB (SP),R2 ;;;DIVIDE SECTOR BY 26.
2107 007246 002375 BGE 20$ ;;; TO FIND LOGICAL SECTOR # WITHIN TRACK
2108 007250 061602 ADD (SP),R2 ;;;MAKE SECTOR IN RANGE 0. TO 25.
2109 007252 005303 DEC R3 ;;; TRACK IN RANGE 0. TO 76.
2110 007254 022702 000014 CMP #12.,R2 ;;;SECTOR GREATER THAN 12.?
2111 007260 006102 ROL R2 ;;;IF SO, CC-C SET, INTERLEAVE FACTOR OF 2.
2112 007262 006303 ASL R3 ;;;GET 2*TRACK
2113 007264 060302 ADD R3,R2 ;;;SKEW BY 2*TRACK
2114 007266 060302 ADD R3,R2 ;;; 4*TRACK
2115 007270 060302 ADD R3,R2 ;;; 6*TRACK
2116 007272 30$:
2117 007272 161602 SUB (SP),R2 ;;;GET SECTOR IN RANGE -26. TO -1. AGAIN
2118 007274 002376 BGE 30$ ;;; . .
2119 007276 31$:
2120 007276 062602 ADD (SP)+,R2 ;;;MAKE LOGICAL SECTOR IN RANGE 0. TO 25.
2121 ;
2122 007300 006203 ASR R3 ;;;RESTORE TRACK #
2123 007302 122223 CMPB (R2)+,(R3)+ ;;;PHYSICAL SECTOR 1. TO 26., TRACK 1. TO 77.
2124 ;
2125 ; SET SECTOR AND TRACK IN RX-11 TO START WRITE
2126 ;
2127 007304 40$:
2128 007304 105711 TSTB (R1) ;;;READY FOR SECTOR #?
2129 007306 100376 BPL 40$ ;;;NO-- WAIT UNTIL IT IS
2130 007310 110261 000002 MOVB R2,RXDB-RXCS(R1) ;;;YES-- SET SECTOR #
2131 007314 50$:
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 29-2
RX-11 WRITE ROUTINE
2132 007314 105711 TSTB (R1) ;;;READY FOR TRACK?
2133 007316 100376 BPL 50$ ;;;NO-- WAIT FOR READY
2134 007320 110361 000002 MOVB R3,RXDB-RXCS(R1) ;;;YES-- SET TRACK #
2135 ;
2136 ; WAIT FOR FUNCTION TO COMPLETE
2137 ;
2138 007324 60$:
2139 007324 032711 100040 BIT #RXERR!RXDONE,(R1) ;;;WAIT FOR EROR OR DONE
2140 007330 001775 BEQ 60$ ;;; . .
2141 007332 100560 BMI WRTERR ;;;GIVE UP IF ERROR AND COMPLAIN (AFTER RESTORE)
2142 ;
2143 ; BUMP SECTOR TO NEXT SECTOR AND RETURN
2144 ;
2145 007334 POP R2 ;;;RESTORE LOGICAL SECTOR #
007334 012602 MOV (SP)+,R2
2146 007336 005202 INC R2 ;;;SET TO NEXT SECTOR
2147 007340 RETURN ;;;RETURN TO WRITE ANOTHER SECTOR OR DONE
007340 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 30
RP04/RP06 DISK ROUTINES
2149 .SBTTL RP04/RP06 DISK ROUTINES
2150 ;
2151 ; RPSET -- SET RP DISK ADDRESS
2152 ;
2153 007342 RPSET:
2154 007342 012702 000020 MOV #16.,R2 ;SET LOOP COUNT
2155 007346 20$:
2156 007346 006301 ASL R1 ;MULTIPY ADDRESS
2157 007350 006100 ROL R0 ; BY TWO AND MOVE TRACK & SECTOR TO R0
2158 007352 020027 000574 CMP R0,#19.*20. ;LESS THAN A CYLINDER OF BLOCKS LEFT?
2159 007356 103403 BLO 30$ ;YES-- WE ARE DOWN TO LAST CYLINDER
2160 007360 162700 000574 SUB #19.*20.,R0 ;NO-- TRIM OFF ANOTHER CYLINDER
2161 007364 005201 INC R1 ;COUNT ANOTHER CYLINDER (OR 2**N CYLINDERS)
2162 007366 30$:
2163 007366 077211 SOB R2,20$ ;LOOP FOR ALL SIXTEEN BITS OF ADDRESS
2164 ;
2165 007370 PUSH R1 ;SAVE CYLINDER #
007370 010146 MOV R1,-(SP)
2166 007372 012701 000024 MOV #20.,R1 ;SET TO DIVIDE TRACK/SECTOR IN R0 BY
2167 007376 CALL $DIV ; NUMBER OF SECTORS PER TRACK
007376 004737 000000G JSR PC,$DIV
2168 007402 000300 SWAB R0 ;MOVE TRACK TO HIGH BYTE
2169 007404 050001 BIS R0,R1 ; SECTOR TO LOW BYTE (REMAINDER)
2170 007406 POP R0 ;RESTORE CYLINDER #
007406 012600 MOV (SP)+,R0
2171 007410 RETURN ;RETURN FROM RPSET
007410 000207 RTS PC
2172 ;
2173 ; RPABS -- SET RP DISK ABSOLUTE ADDRESS
2174 ;
2175 .IF DF FTABS
2176 RPABS:
2177 MOV #409.,R0 ;SET MAINTAINENCE CYLINDER **** WON'T WORK FOR RP06 ****
2178 MOV #<13.*BIT8>!<8.*BIT0>,R1 ; AT TRACK 13, SECTOR 8 (VERY END)
2179 RETURN ;RETURN FROM RPABS
2180 .ENDC ; .IF DF FTABS
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 31
RP04/RP06 BOOTSTRAP
2182 .SBTTL RP04/RP06 BOOTSTRAP
2183 ;
2184 ;
2185 ; RP DISK BOOTSTRAP
2186 ;
2187 ; THIS BOOT IS READ IN FROM BLOCK 0 OF THE RP BY THE BM873-YF ROM.
2188 ;
2189 ; THE ROM RETURNS THE FOLLOWING VALUES IN THE REGISTERS:
2190 ; R1 -- ADDRESS OF RPCS1
2191 ; R5 -- BOOTSTRAP PARAMETER (NORMALLY SWITCH REGISTER)
2192 ;
2193 007412 RPBOOT:
2194 007412 000240 NOP ;;;THIS IS A BOOTSTRAP
2195 ;
2196 ; RESET THE RP AND SET UP INITIAL TRACK AND SECTOR ADDRESS
2197 ;
2198 007414 012711 000021 MOV #RPPRST!RPGO,(R1) ;;;DO READ-IN PRESET
2199 007420 005004 CLR R4 ;;;CLEAR COUNTER OF 32. WORD BLOCKS READ
2200 007422 005061 000004 CLR RPBA-RPCS1(R1) ;;;SET BUS ADDR TO ZERO
2201 007430' RPBAD1= .+2
2202 007426 012761 000000 000034 MOV #0,RPDC-RPCS1(R1) ;;;SETUP CYLINDER #
2203 007436' RPBAD2= .+2
2204 007434 012761 000000 000006 MOV #0,RPDA-RPCS1(R1) ;;; AND TRACK AND SECTOR
2205 007442 052761 004000 000032 BIS #RPECCI,RPOF-RPCS1(R1) ;;;SET ECC INHIBIT
2206 007450 112711 000070 MOVB #RPREAD,(R1) ;;;SET READ FUNCTION, NO GO
2207 ;
2208 ; READ 1K FROM THE RP TO MEMORY
2209 ;
2210 007454 RPBNXT:
2211 007454 012761 176000 000002 MOV #<-1024.>,RPWC-RPCS1(R1) ;;;SET 1K WORD COUNT
2212 007462 105211 INCB (R1) ;;;DO NEXT READ
2213 007464 10$:
2214 007464 105711 TSTB (R1) ;;;TRANSFER COMPLETE?
2215 007466 100376 BPL 10$ ;;;NO-- WAIT FOR DONE
2216 ;
2217 ; CHECK TO MAKE SURE NO ERRORS
2218 ;
2219 007470 032711 060000 BIT #RPTRE!RPMCPE,(R1) ;;;CONTROLLER ERROR?
2220 007474 001346 BNE RPBOOT ;;;YES-- RETRY
2221 007476 032761 140000 000012 BIT #RPATA!RPERR,RPDS-RPCS1(R1) ;;;ATTENTION OR DRIVE ERROR?
2222 007504 001342 BNE RPBOOT ;;;YES-- RETRY
2223 ;
2224 ; SEE IF DONE WITH ALL OF MEMORY
2225 ;
2226 007506 062704 000040 ADD #1024.*2/100,R4 ;;;BUMP # 32. WORD BLOCKS WE'VE READ
2227 007512 022704 CMP (PC)+,R4 ;;;FINISHED WITH ALL OF MEMORY YET?
2228 007514 000000 RPBMSZ: .WORD 0 ;;;SET UP BY SAVE TO # 32. WORD BLOCKS OF MEMORY
2229 007516 101356 BHI RPBNXT ;;;NO-- READ SOME MORE
2230 ;
2231 ; BOOTSTRAP COMPLETE-- SETUP KT-11 REGISTERS, IF ANY
2232 ;
2233 007520 012737 000340 177776 MOV #PR7,@#PS ;;;INSURE KERNAL MODE
2234 .IF DF M$$MGE
2235 MOV #77406,R2 ;;;SET TO MAP MAX PAGE SIZE
2236 MOV R2,KPDR0 ;;; FOR KERNAL PAGE 0
2237 MOV R2,KPDR7 ;;; AND KP 7
2238 MOV R2,UPDR0 ;;; AND USER PAGE 7
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 31-1
RP04/RP06 BOOTSTRAP
2239 MOV R2,UPDR7 ;;; EXTERNAL PAGE FOR USER, TOO
2240 CLR KPAR0 ;;;MAP KERNAL PAGE 0 TO ABSOLUTE 0
2241 MOV (PC)+,@(PC)+ ;;;SET UP USER PAGE 0
2242 RPBUP0: .WORD 0,UPAR0 ;;;SPACE FOR ADDR OF PAGE
2243 MOV #7600,R2 ;;;POINT TO EXTERNAL PAGE
2244 MOV R2,KPAR7 ;;; FOR EXEC
2245 MOV R2,UPAR7 ;;; AND USER
2246 MOV #1,SSR0 ;;;ENABLE SEGMENTATION
2247 .ENDC
2248 ;
2249 ; SETUP TEMPORARY KERNAL STACK AT TOP OF BOOT BLOCK, AND SAVE
2250 ; BOOTSTRAP PARAMETER AT LOCATION 776
2251 ;
2252 007526 012706 001000 MOV #1000,SP ;;;START STACK AT TOP OF OUR BLOCK
2253 007532 PUSH R5 ;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
007532 010546 MOV R5,-(SP)
2254 ;
2255 ; RETURN TO SAVE TASK IN USER MODE AT SYSTEM RESTORE ENTRY POINT
2256 ;
2257 .IF DF M$$MGE
2258 PUSH #PS.USR!PS.REG!PR7 ;;;USER MODE, PRIORITY 7
2259 .IFF
2260 007534 PUSH #PS.REG!PR7 ;;;SET REGISTER SET 1, PRI 7
007534 012746 004340 MOV #PS.REG!PR7,-(SP)
2261 .ENDC
2262 007540 PUSH #RESTORE ;;; AND RETURN PC IN USER SPACE
007540 012746 002760' MOV #RESTORE,-(SP)
2263 007544 000002 RTI ;;;BACK TO SAVE.
2264 .IF G <<.-RPBOOT>-<256.*2>>
2265 .ERROR <.-RPBOOT> ; RP BOOT TOO BIG FOR FIRST BLOCK
2266 .ENDC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 32
RP04/RP06 WRITE ROUTINE
2268 .SBTTL RP04/RP06 WRITE ROUTINE
2269 ;
2270 ; RPWRT -- WRITE MEMORY TO THE RP DISK
2271 ;
2272 ; INPUTS:
2273 ; DSKADR+0 -- CYLINDER ADDRESS TO START TRANSFER
2274 ; DSKADR+2 -- (BYTE) SECTOR TO START
2275 ; DSKADR+3 -- (BYTE) TRACK TO START
2276 ; DEVUNT -- (BYTE) UNIT # TO WRITE ON
2277 ; MEMSIZ -- # OF 32. WORD BLOCKS OF MEMORY TO WRITE
2278 ;
2279 007546 RPWRT:
2280 007546 012701 176700 MOV #RPCS1,R1 ;;;GET ADDRESS OF RPCS1
2281 007552 005004 CLR R4 ;;;CLEAR POINTER TO # 32. WORD BLOCKS WRITTEN
2282 007554 113761 000044' 000010 MOVB DEVUNT,RPCS2+0-RPCS1(R1);;;SET UNIT #
2283 ;
2284 ; INITIALIZE DRIVE
2285 ;
2286 007562 032711 004000 BIT #RPDVA,(R1) ;;;IS DRIVE AVAILABLE?
2287 007566 001442 BEQ WRTERR ;;;NO-- GIVE ERROR
2288 007570 012711 000021 MOV #RPPRST!RPGO,(R1) ;;;DO A READ-IN PRESET
2289 007574 005061 000004 CLR RPBA-RPCS1(R1) ;;;CLEAR BUS ADDRESS TO START WRITE AT ZERO
2290 007600 013761 000004' 000034 MOV DSKADR+0,RPDC-RPCS1(R1) ;;;SETUP DESIRED CYLINDER
2291 007606 013761 000006' 000006 MOV DSKADR+2,RPDA-RPCS1(R1) ;;; AND TRACK AND SECTOR
2292 007614 052761 004000 000032 BIS #RPECCI,RPOF-RPCS1(R1) ;;;SET ECC INHIBIT
2293 007622 112711 000060 MOVB #RPWRIT,(R1) ;;;SET WRITE FUNCTION, NO GO
2294 ;
2295 ; WRITE ONE BLOCK OF MEMORY TO THE RP04
2296 ;
2297 007626 RPWNXT:
2298 007626 012761 177400 000002 MOV #<-256.>,RPWC-RPCS1(R1) ;;;SET -VE WORD COUNT
2299 007634 105211 INCB (R1) ;;;WRITE NEXT BLOCK
2300 007636 10$:
2301 007636 105711 TSTB (R1) ;;;DONE SET?
2302 007640 100376 BPL 10$ ;;;NO-- WAIT FOR TRANSFER TO COMPLETE
2303 ;
2304 ; CHECK FOR ERRORS DURING TRANSFER
2305 ;
2306 007642 032711 060000 BIT #RPTRE!RPMCPE,(R1) ;;;CONTROLLER ERROR?
2307 007646 001012 BNE WRTERR ;;;YES-- GIVE UP
2308 007650 032761 140000 000012 BIT #RPATA!RPERR,RPDS-RPCS1(R1) ;;;DRIVE ERROR?
2309 007656 001006 BNE WRTERR ;;;YES-- GIVE UP ALSO
2310 ;
2311 ; SEE IF DONE WITH ALL OF MEMORY
2312 ;
2313 007660 062704 000010 ADD #256.*2/100,R4 ;;;ADD A BLOCK'S WORTH OF 32. WORD BLOCKS
2314 007664 023704 000014' CMP MEMSIZ,R4 ;;;DONE WITH ALL OF MEMORY?
2315 007670 101356 BHI RPWNXT ;;;NO-- WRITE NEXT BLOCK
2316 007672 RETURN ;;;YES-- RETURN FROM RPWRT
007672 000207 RTS PC
2317 ;
2318 ;
2319 ; HERE ON WRITE ERRORS ON EITHER THE RP04 OR THE RX-11
2320 ; JUST RETURN TO RESTORE WITH WEFLAG= 1 TO INDICATE ERROR
2321 ;
2322 007674 WRTERR:
2323 007674 105237 000060' INCB WEFLAG ;;;NOTE ERROR IN FLAG
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 32-1
RP04/RP06 WRITE ROUTINE
2324 007700 000137 002760' JMP RESTORE ;;;RESTORE SYSTEM, THEN GIVE ERROR
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 33
TC-11 DECTAPE ROUTINES
2326 .SBTTL TC-11 DECTAPE ROUTINES
2327 ;
2328 ; TCABS -- SET TC-11 ABSOLUTE BLOCK #
2329 ;
2330 .IF DF FTABS
2331 TCABS:
2332 MOV #^D<578-<28*4>-1>,R1 ;SET TO END OF TAPE
2333 ; BR TCSET ;ONWARD!
2334 .ENDC ; .IF DF FTABS
2335 ;
2336 ; TCSET -- SET TC-11 BLOCK #
2337 ;
2338 007704 TCSET:
2339 007704 010100 MOV R1,R0 ;JUST COPY LOW BLOCK #
2340 007706 RETURN ; . .
007706 000207 RTS PC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 34
TC-11 BOOTSTRAP
2342 .SBTTL TC-11 BOOTSTRAP
2343 ;
2344 ; HERE TO BOOT FROM TC-11
2345 ;
2346 ; REGISTERS LEFT BY BM-873 ROM:
2347 ; R1 -- ADDRESS OF TCCM
2348 ; R5 -- BOOT PARAMETER WORD
2349 ;
2350 007710 TCBOOT:
2351 007710 000240 NOP ;;;THIS IS A BOOTSTRAP
2352 ;
2353 ; SELECT UNIT AND SET UP REGISTERS:
2354 ; R1 -- ADDRESS OF TCCM
2355 ; R2 -- BLOCK #
2356 ; R4 -- COUNT OF 32. WORD BLOCKS READ
2357 ;
2358 007714' TCBAD1=.+2
2359 007714' TCBAD2=.+2
2360 007712 012702 000000 MOV #0,R2 ;;;GET BLOCK #
2361 007716 010203 MOV R2,R3 ;;;COPY THE BLOCK #
2362 007720 162703 000003 SUB #3,R3 ;;;BACK TO THREE BLOCK BEFORE IT
2363 007724 005004 CLR R4 ;;;RESET # BLOCKS READ
2364 007726 005061 000004 CLR TCBA-TCCM(R1) ;;;RESET BUS ADDRESS REGISTER
2365 ;
2366 ; SEARCH FOR CURRENT BLOCK ON TAPE
2367 ;
2368 007732 112711 000002 MOVB #TCRNUM,(R1) ;;;SET READ BLOCK # FUNCTION
2369 007736 5$:
2370 007736 052711 004000 BIS #TCREV,(R1) ;;;SET REVERSE MODE
2371 007742 105211 INCB (R1) ;;;START READ BLOCK FUNCTION
2372 007744 10$:
2373 007744 105711 TSTB (R1) ;;;READY?
2374 007746 100376 BPL 10$ ;;;NO-- WAIT
2375 007750 005711 TST (R1) ;;;ERROR?
2376 007752 100007 BPL 40$ ;;;NO-- CHECK OUT BLOCK #
2377 007754 20$:
2378 007754 005761 177776 TST TCST-TCCM(R1) ;;;ERROR-- IS IT END-ZONE?
2379 007760 100353 BPL TCBOOT ;;;NO-- RETRY
2380 007762 032711 004000 BIT #TCREV,(R1) ;;;GOING REVERSE?
2381 007766 001763 BEQ 5$ ;;;NO-- GO THAT WAY
2382 007770 000403 BR 50$ ;;;YES-- GO FORWARD
2383 ;
2384 007772 40$:
2385 007772 026103 000006 CMP TCDT-TCCM(R1),R3 ;;;PAST BLOCK YET (CURRENT BLOCK LOW)?
2386 007776 003357 BGT 5$ ;;;NO-- KEEP SEARCHING IN REVERSE
2387 010000 50$:
2388 010000 042711 004000 BIC #TCREV,(R1) ;;;GO FORWARD
2389 010004 105211 INCB (R1) ;;;START READ BLOCK # FUNCTION
2390 010006 60$:
2391 010006 105711 TSTB (R1) ;;;READY?
2392 010010 100376 BPL 60$ ;;;NO-- WAIT
2393 010012 005711 TST (R1) ;;;ERROR?
2394 010014 100757 BMI 20$ ;;;YES-- CHECK IT OUT
2395 010016 026102 000006 CMP TCDT-TCCM(R1),R2 ;;;AT PROPER BLOCK?
2396 010022 002766 BLT 50$ ;;;NOT YET-- KEEP GOING
2397 010024 003344 BGT 5$ ;;;OOPS, PAST IT-- GO BACK AGAIN
2398 ;
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 34-1
TC-11 BOOTSTRAP
2399 ; BLOCK FOUND-- START TRANSFER
2400 ;
2401 010026 112711 000004 MOVB #TCREAD,(R1) ;;;SET READ FUNCTION, NO GO
2402 ;
2403 ; START NEXT 1.K TRANSFER
2404 ;
2405 010032 TCBNXT:
2406 010032 012761 176000 000002 MOV #<-1024.>,TCWC-TCCM(R1) ;;;SET WORD COUNT
2407 010040 105211 INCB (R1) ;;;SET GO
2408 010042 10$:
2409 010042 105711 TSTB (R1) ;;;READY?
2410 010044 100376 BPL 10$ ;;;NO-- WAIT FOR TRANSFER TO COMPLETE
2411 010046 005711 TST (R1) ;;;ERRORS?
2412 010050 100717 BMI TCBOOT ;;;YES-- TRY IT ALL AGAIN
2413 ;
2414 ; SEE IF ALL DONE
2415 ;
2416 010052 062704 000040 ADD #1024.*2/100,R4 ;;;BUMP COUNT OF 32. WORD BLOCKS READ
2417 010056 022704 CMP (PC)+,R4 ;;;DONE YET?
2418 010060 000000 TCBMSZ: .WORD 0 ;;;SPACE FOR SIZE
2419 010062 101363 BHI TCBNXT ;;;NO-- GET NEXT BLOCK
2420 010064 112711 000011 MOVB #TCSTOP+TCGO,(R1) ;;;STOP TAPE
2421 ;
2422 ; BOOTSTRAP COMPLETE-- SETUP KT-11 REGISTERS, IF ANY
2423 ;
2424 010070 012737 000340 177776 MOV #PR7,@#PS ;;;INSURE KERNAL MODE
2425 .IF DF M$$MGE
2426 MOV #77406,R2 ;;;SET TO MAP MAX PAGE SIZE
2427 MOV R2,KPDR0 ;;; FOR KERNAL PAGE 0
2428 MOV R2,KPDR7 ;;; AND KP 7
2429 MOV R2,UPDR0 ;;; AND USER PAGE 7
2430 MOV R2,UPDR7 ;;; EXTERNAL PAGE FOR USER, TOO
2431 CLR KPAR0 ;;;MAP KERNAL PAGE 0 TO ABSOLUTE 0
2432 MOV (PC)+,@(PC)+ ;;;SET UP USER PAGE 0
2433 TCBUP0: .WORD 0,UPAR0 ;;;SPACE FOR ADDR OF PAGE
2434 MOV #7600,R2 ;;;POINT TO EXTERNAL PAGE
2435 MOV R2,KPAR7 ;;; FOR EXEC
2436 MOV R2,UPAR7 ;;; AND USER
2437 MOV #1,SSR0 ;;;ENABLE SEGMENTATION
2438 .ENDC
2439 ;
2440 ; SETUP TEMPORARY KERNAL STACK AT TOP OF BOOT BLOCK, AND SAVE
2441 ; BOOTSTRAP PARAMETER AT LOCATION 776
2442 ;
2443 010076 012706 001000 MOV #1000,SP ;;;START STACK AT TOP OF OUR BLOCK
2444 010102 PUSH R5 ;;;SAVE BOOT PARAMETER AT BOTTOM OF STACK
010102 010546 MOV R5,-(SP)
2445 ;
2446 ; RETURN TO SAVE TASK IN USER MODE AT SYSTEM RESTORE ENTRY POINT
2447 ;
2448 .IF DF M$$MGE
2449 PUSH #PS.USR!PS.REG!PR7 ;;;USER MODE, PRIORITY 7
2450 .IFF
2451 010104 PUSH #PS.REG!PR7 ;;;SET REGISTER SET 1, PRI 7
010104 012746 004340 MOV #PS.REG!PR7,-(SP)
2452 .ENDC
2453 010110 PUSH #RESTORE ;;; AND RETURN PC IN USER SPACE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 34-2
TC-11 BOOTSTRAP
010110 012746 002760' MOV #RESTORE,-(SP)
2454 010114 000002 RTI ;;;BACK TO SAVE.
2455 .IF G <<.-TCBOOT>-<256.*2>>
2456 .ERROR <.-TCBOOT> ; TC BOOT TOO BIG FOR FIRST BLOCK
2457 .ENDC
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 35
TC-11 WRITE ROUTINE
2459 .SBTTL TC-11 WRITE ROUTINE
2460 ;
2461 ; TCWRT -- TC-11 DECTAPE WRITE ROUTINE
2462 ;
2463 ; INPUTS:
2464 ; DSKADR+0 -- BLOCK # TO START TRANSFER AT
2465 ; DEVUNT -- UNIT # TO SCRIBBLE ON
2466 ; MEMSIZ -- # OF 32. WORD BLOCKS TO WRITE
2467 ;
2468 ; REGISTERS:
2469 ; R1 -- ADDRESS OF TCCM
2470 ; R2 -- BLOCK #
2471 ; R4 -- COUNT OF 32. WORD BLOCKS WRITTEN
2472 ;
2473 010116 TCWRT:
2474 010116 012701 177342 MOV #TCCM,R1 ;;;ADDRESS COMMAND REGISTER
2475 010122 013702 000004' MOV DSKADR+0,R2 ;;;GET BLOCK #
2476 010126 010203 MOV R2,R3 ;;;COPY THE BLOCK #
2477 010130 162703 000003 SUB #3,R3 ;;;BACK TO THREE BLOCK BEFORE IT
2478 010134 113761 000044' 000001 MOVB DEVUNT,1(R1) ;;;SELECT PROPER UNIT
2479 010142 005004 CLR R4 ;;;RESET # BLOCKS READ
2480 010144 005061 000004 CLR TCBA-TCCM(R1) ;;;RESET BUS ADDRESS REGISTER
2481 ;
2482 ; SEARCH FOR CURRENT BLOCK ON TAPE
2483 ;
2484 010150 112711 000002 MOVB #TCRNUM,(R1) ;;;SET READ BLOCK # FUNCTION
2485 010154 5$:
2486 010154 052711 004000 BIS #TCREV,(R1) ;;;SET REVERSE MODE
2487 010160 105211 INCB (R1) ;;;START READ BLOCK FUNCTION
2488 010162 10$:
2489 010162 105711 TSTB (R1) ;;;READY?
2490 010164 100376 BPL 10$ ;;;NO-- WAIT
2491 010166 005711 TST (R1) ;;;ERROR?
2492 010170 100007 BPL 40$ ;;;NO-- CHECK OUT BLOCK #
2493 010172 20$:
2494 010172 005761 177776 TST TCST-TCCM(R1) ;;;ERROR-- IS IT END-ZONE?
2495 010176 100244 BPL TCBOOT ;;;NO-- RETRY
2496 010200 032711 004000 BIT #TCREV,(R1) ;;;GOING REVERSE?
2497 010204 001763 BEQ 5$ ;;;NO-- GO THAT WAY
2498 010206 000403 BR 50$ ;;;YES-- GO FORWARD
2499 ;
2500 010210 40$:
2501 010210 026103 000006 CMP TCDT-TCCM(R1),R3 ;;;PAST BLOCK YET (CURRENT BLOCK LOW)?
2502 010214 003357 BGT 5$ ;;;NO-- KEEP SEARCHING IN REVERSE
2503 010216 50$:
2504 010216 042711 004000 BIC #TCREV,(R1) ;;;GO FORWARD
2505 010222 105211 INCB (R1) ;;;START READ BLOCK # FUNCTION
2506 010224 60$:
2507 010224 105711 TSTB (R1) ;;;READY?
2508 010226 100376 BPL 60$ ;;;NO-- WAIT
2509 010230 005711 TST (R1) ;;;ERROR?
2510 010232 100757 BMI 20$ ;;;YES-- CHECK IT OUT
2511 010234 026102 000006 CMP TCDT-TCCM(R1),R2 ;;;AT PROPER BLOCK?
2512 010240 002766 BLT 50$ ;;;NOT YET-- KEEP GOING
2513 010242 003344 BGT 5$ ;;;OOPS, PAST IT-- GO BACK AGAIN
2514 ;
2515 ; BLOCK FOUND-- START TRANSFER
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 35-1
TC-11 WRITE ROUTINE
2516 ;
2517 010244 112711 000014 MOVB #TCWRIT,(R1) ;;;SET WRITE FUNCTION, NO GO
2518 ;
2519 ; START NEXT 1.K TRANSFER
2520 ;
2521 010250 TCWNXT:
2522 010250 012761 177400 000002 MOV #<-256.>,TCWC-TCCM(R1) ;;;SET WORD COUNT
2523 010256 105211 INCB (R1) ;;;SET GO
2524 010260 10$:
2525 010260 105711 TSTB (R1) ;;;READY?
2526 010262 100376 BPL 10$ ;;;NO-- WAIT FOR TRANSFER TO COMPLETE
2527 010264 005711 TST (R1) ;;;ERRORS?
2528 010266 100410 BMI TCWERR ;;;YES-- GIVE UP
2529 ;
2530 ; SEE IF ALL DONE
2531 ;
2532 010270 062704 000010 ADD #256.*2/100,R4 ;;;BUMP COUNT OF 32. WORD BLOCKS TRANSFERED
2533 010274 023704 000014' CMP MEMSIZ,R4 ;;;DONE YET?
2534 010300 101363 BHI TCWNXT ;;;NO-- GET NEXT BLOCK
2535 010302 112711 000011 MOVB #TCSTOP+TCGO,(R1) ;;;STOP TAPE
2536 010306 RETURN ;;;FROM TCWRT
010306 000207 RTS PC
2537 ;
2538 ; HERE ON ERROR ON TC-11
2539 ;
2540 010310 TCWERR:
2541 010310 000137 007674' JMP WRTERR ;;;GIVE UP
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 36
END STATEMENT
2543 .SBTTL END STATEMENT
2544 001166' .END SAVE
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 36-1
SYMBOL TABLE
ACFLAG 000057R DEXWD3= 174402 DTCL11= 002000 FILDM3 002462R IE.EOF= 177766
AC.ENA= 000200 DFUNC = 000200 DTECHK 003636R FILDM4 002500R IE.EOT= 177702
ALLRXF 004624R DF.DMG= 000004 DTECMD= 000451 FILFND 002056R IE.EOV= 177765
ALLRX1 004634R DF.DMN= 000007 DTEFLG= 000444 FILMNT 006460R IE.EXP= 177676
ATCBLK 001100R DF.DOR= 000001 DTEF11= 000450 FILOK 002310R IE.FEX= 177717
BC.HDS= ****** GX DF.EHG= 000010 DTEMSG 004136R FILQIO 006474R IE.FHE= 177705
BITTBL= ****** GX DF.EHM= 000011 DTEMTD= 000455 FILSET 002320R IE.FOP= 177713
BIT0 = 000001 DF.EMG= 000005 DTEMTI= 000456 FINDEV 006402R IE.HFU= 177744
BIT1 = 000002 DF.EMN= 000006 DTEXPA= 174400 FNDACP 006440R IE.HWR= 177772
BIT10 = 002000 DF.KLR= 000012 DTEXPZ= 000040 FORPRO= 000020 IE.IDU= 177644
BIT11 = 004000 DF.KLW= 000013 DTINOF= 000010 GETNAM 005512R IE.IEF= 177637
BIT12 = 010000 DF.KLX= 000014 DTINON= 000040 GETNB 005470R IE.IFC= 177776
BIT13 = 020000 DF.OFF= 000002 DTPMSG 004162R GETNUM 005556R IE.IFU= 177747
BIT14 = 040000 DF.ON = 000003 DTPMS1 004200R GTIMBF 000020R IE.ILL= 177726
BIT15 = 100000 DF.PDP= 000016 DTRSMD= 000010 G.TICP= 000016 IE.ILU= 177640
BIT2 = 000004 DF.PEX= 000015 DTSTAT= 000034 G.TICT= 000014 IE.INS= 177776
BIT3 = 000010 DHEXPA= 160020 DTVECA= 000774 G.TIDA= 000004 IE.IPR= 177641
BIT4 = 000020 DHEXPZ= 000020 DT11DB= 004000 G.TIHR= 000006 IE.ISQ= 177703
BIT5 = 000040 DHSTAB 001122R DUPE = 000020 G.TIMI= 000010 IE.ITI= 177643
BIT6 = 000100 DHTBL = ****** GX DURE = 000004 G.TIMO= 000002 IE.ITS= 177770
BIT7 = 000200 DIAG1 = 174430 DV.LOG= ****** GX G.TISC= 000012 IE.LCK= 177745
BIT8 = 000400 DIAG2 = 174432 DXWRD1= 002000 G.TIYR= 000000 IE.LNL= 177646
BIT9 = 001000 DIAG3 = 174436 D.CCTY= ****** GX HBCERR 004534R IE.MBK= 177721
BPARER= 000020 DIKL10= 000010 D.CKLN= ****** GX HIBYTE= 177400 IE.MOD= 177753
BP.CLN= 074000 DLTBL = ****** GX D1011 = 000040 HOMBUF 000062R IE.NBF= 177731
BP.CSP= 000170 DLYCNT= 174400 EBSEL = 000100 HOMFE0= 000061 IE.NBK= 177727
BP.ERR= 100000 DL.CAR= ****** GX EBUSPC= 000020 HOMFE1= 000062 IE.NFI= 177704
BP.LD0= 000002 DMFLAG 000052R EBUSPS= 000004 HOMNAM= 000000 IE.NLN= 177733
BP.LD1= 000004 DMOERR 002452R EDONES= 040000 IE.ABO= 177761 IE.NNC= 177674
BP.RP4= 000200 DMTBLK 001114R EF.PR1= ****** GX IE.ACT= 177771 IE.NOD= 177751
BP.SWR= 000001 DNSERR 001640R EF.PR2= ****** GX IE.ADP= 177636 IE.NSF= 177746
BP.UNT= 003400 DON10C= 040000 EF.QIO= 000001 IE.ALN= 177736 IE.OFL= 177677
CDD = 000020 DON10S= 100000 EF.RKP= ****** GX IE.AST= 177660 IE.ONP= 177773
CHNPNT= 000001 DON11C= 000100 EF.TMO= 000002 IE.BAD= 177777 IE.OVR= 177756
CMDCLN= 000022 DON11S= 000200 EPTR = 000000 IE.BBE= 177710 IE.PRI= 177760
CMDCLR 000040R DPS4 = 040000 ERRMSG 001422R 002 IE.BDI= 177714 IE.RAC= 177724
CMDONE 001572R DRESET= 000100 ERR10C= 010000 IE.BDR= 177716 IE.RAT= 177723
CNUPE = 000002 DRVADR 000002R ERR10S= 020000 IE.BDV= 177711 IE.RBG= 177730
CS.EXP= 177670 DRVAD1= 000012 ERR11C= 000001 IE.BHD= 177700 IE.RCN= 177722
CTYBFL= 000120 DRVAD2= 000014 ERR11S= 000002 IE.BLK= 177754 IE.RER= 177740
CTYBUF 000226R DRVBOT= 000004 EV.PF = ****** GX IE.BNM= 177712 IE.RNM= 177715
CTYLUN= 000001 DRVBTP= 000016 EXFLAG 000050R IE.BTF= 177675 IE.RSU= 177757
CTYPTR= ****** GX DRVMSZ= 000010 EXIT 005460R IE.BTP= 177725 IE.SDP= 177635
CYCLS = 000002 DRVNAM= 000000 EXITA 001524R IE.BVR= 177701 IE.SNC= 177735
DATE = 000004 DRVSET= 000002 EXIT00 005446R IE.BYT= 177755 IE.SPC= 177772
DCOMST= 000001 DRVSIZ= 000020 EX.AC1= 000001 IE.CKP= 177766 IE.SQC= 177734
DEFLAG 000061R DRVTAB 006570R EX.ENA= 000200 IE.CKS= 177742 IE.SRE= 177762
DEP = 010000 DRVTBZ= 000060 EX.FCO= 000004 IE.CLO= 177732 IE.STK= 177706
DEVCHK 001654R DRVWRT= 000006 E.FLOG= 000004 IE.CON= 177752 IE.ULN= 177773
DEVMNT 002000R DR.DTE= 000011 E.FQIO= 000001 IE.DAA= 177770 IE.UPN= 177777
DEVNAM 000042R DSEND = 000004 E.FTMO= 000002 IE.DAO= 177763 IE.VER= 177774
DEVOK 001732R DSKADR 000004R FIDBLK 001074R IE.DFU= 177750 IE.WAC= 177743
DEVUNT 000044R DSKLUN= 000002 FILCHK 002250R IE.DNA= 177771 IE.WAT= 177741
DEX = 000400 DSKSIZ 000010R FILDMO 002330R IE.DNR= 177775 IE.WER= 177737
DEXDON= 000004 DS04 = 004000 FILDMX 002510R IE.DUN= 177767 IE.WLK= 177764
DEXWD1= 174406 DS05 = 002000 FILDM1 002346R IE.DUP= 177707 IE.2DV= 177720
DEXWD2= 174404 DS06 = 001000 FILDM2 002440R IE.EBX= 177776 IFLOP = 100000
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 36-2
SYMBOL TABLE
INTROF= 000010 IO.RHD= 001010 KL.LCA= ****** GX Q.DA = ****** GX RQSKLR 004662R
INTRON= 000040 IO.RLB= 001000 KL.LRM= ****** GX Q.SZ = ****** GX RQSTSK 005334R
INTSON= 000001 IO.RLV= 001100 KL.LVB= ****** GX RADIX 000016R RQSTS1 004336R
INT10S= 000400 IO.RNA= 005400 KL.VBN= ****** GX RAMIS0= 010000 RXBAD1 006716R
INT11C= 002000 IO.RNC= 001004 K.LRBA= ****** GX REDHM1 004402R RXBAD2 006716R
INT11S= 004000 IO.RNE= 001020 LKS = 177546 REDHOM 004350R RXBBLK 006720R
IO.ACE= 007400 IO.RTC= 003400 LOAD11= 000004 REDSY 003232R RXBBLX 007060R
IO.ACR= 006400 IO.RTI= 016400 LOGBUF 001066R RESTOR 002760R RXBMSZ 007112R
IO.ACW= 007000 IO.RTK= 000060 LOWCOR 000062R RFMAD0= 100000 RXBNXT 007100R
IO.ADS= 014000 IO.RVB= 010400 MEMSIZ 000014R RFMAD1= 040000 RXBNX1 007104R
IO.APC= 014000 IO.RWD= 002400 MNTBLK 001106R RFMAD2= 020000 RXBOOT 006660R
IO.APV= 014010 IO.RWU= 002540 MNTSY 004234R RFMAD3= 010000 RXCS = 177170
IO.ATT= 001400 IO.R1C= 002400 MODTBL 001530R RHFLAG 000053R RXDB = 177172
IO.CCI= 014000 IO.SAO= 004000 MODTLN= 000006 RHMERR 004600R RXDONE= 000040
IO.CCT= 002460 IO.SCS= 013000 MOFLAG 000051R RM = 000010 RXEMPT= 000002
IO.CLN= 003400 IO.SDI= 013000 MONTAB 006244R RNFLAG 000054R RXERR = 100000
IO.CON= 015400 IO.SDO= 012400 MOUNTD 002046R RNRERR 004612R RXFILL= 000000
IO.CRC= 001020 IO.SEC= 002520 MPE11 = 001000 RPATA = 100000 RXFUNC= 000016
IO.CRE= 012000 IO.SEM= 002440 NOTRXF 004562R RPBA = 176704 RXGO = 000001
IO.CTI= 015400 IO.SHT= 002410 NULSTP= 000040 RPBAD1= 007430R RXINIT= 040000
IO.CTL= 016400 IO.SLO= 005400 NUPE = 000002 RPBAD2= 007436R RXREAD= 000006
IO.DAC= 010000 IO.SMO= 002560 PERCLR= 001000 RPBMSZ 007514R RXRERR= 000016
IO.DCI= 014400 IO.SNM= 002450 PHYS = 100000 RPBNXT 007454R RXSET 006650R
IO.DCT= 002470 IO.SPB= 002420 PIDENT= 000000 RPBOOT 007412R RXSETX 006654R
IO.DEL= 012400 IO.SPF= 002440 PRI7 = 000340 RPCS1 = 176700 RXTREQ= 000200
IO.DET= 002000 IO.SSO= 004400 PRNRUN 005322R RPCS2 = 176710 RXUNIT= 000020
IO.DIS= 016000 IO.SST= 002430 PROPNT= 000021 RPDA = 176706 RXWBLK 007202R
IO.DTI= 016000 IO.STC= 002500 PRTOFF= 004000 RPDC = 176734 RXWNXT 007162R
IO.ENA= 006000 IO.STP= 016400 PR0 = 000000 RPDPR = 000400 RXWRIT= 000004
IO.EOF= 003000 IO.SYN= 003040 PR1 = 000040 RPDS = 176712 RXWRT 007130R
IO.ESA= 002500 IO.TRM= 002410 PR2 = 000100 RPDT = 176726 R$$11M= 000001
IO.EXT= 011400 IO.UNL= 000042 PR3 = 000140 RPDT04= 000020 R$$20F= 000001
IO.FDX= 003020 IO.WAT= 013400 PR4 = 000200 RPDT06= 000022 SAVE 001166R
IO.FNA= 004400 IO.WLB= 000400 PR5 = 000240 RPDVA = 004000 SAVLMT 001162R
IO.HDX= 003010 IO.WLS= 000410 PR6 = 000300 RPECCI= 004000 SCD = 000040
IO.HIS= 015000 IO.WLV= 000500 PR7 = 000340 RPERR = 040000 SETCTY 003006R
IO.INL= 002400 IO.WVB= 011000 PS = 177776 RPFLAG 000055R SETDH 003174R
IO.ITI= 017000 IO.XMT= 014400 PSWW1 = 000005 RPFM22= 010000 SETDL 003136R
IO.KIL= 000012 IO.XNA= 014410 PSWW10= 000014 RPFUNC= 000076 SETFIL 002056R
IO.LED= 012000 IQ.Q = 000002 PSWW11= 000015 RPGO = 000001 SETRXF 004544R
IO.LOV= 001010 IQ.X = 000001 PSWW12= 000016 RPMCPE= 020000 SF.FX = ****** GX
IO.LTK= 000050 IS.BV = 000005 PSWW13= 000017 RPMOL = 010000 SOMRXF 004656R
IO.MCS= 013400 IS.CLR= 000000 PSWW2 = 000006 RPNOOP= 000000 SPSAVE 000000R
IO.MDA= 016000 IS.CR = 006401 PSWW3 = 000007 RPOF = 176732 STAT = 174434
IO.MDI= 014400 IS.ESC= 015401 PSWW4 = 000010 RPPGM = 001000 STATUS= 000022
IO.MDO= 015400 IS.PND= 000000 PSWW5 = 000011 RPPRST= 000020 STSW0 = ****** GX
IO.MLO= 006000 IS.RDD= 000002 PSWW6 = 000012 RPRDY = 000200 STSW1 = ****** GX
IO.MOD= 003000 IS.SET= 000002 PSWW7 = 000013 RPREAD= 000070 SWR = 177570
IO.MSO= 005000 IS.SUC= 000001 PS.PUS= 030000 RPSET 007342R SWSLLT= 100000
IO.RAL= 001010 KBS0 = ****** GX PS.REG= 004000 RPTRE = 040000 SXBTHM= 105755
IO.RAT= 013000 KBS1 = ****** GX PS.USR= 140000 RPUNIT= 000007 SYMNTD 004340R
IO.RBC= 003000 KLAREM 005216R PUDADR 000040R RPWC = 176702 SYNERR 001560R
IO.RCI= 015000 KLAUSR 005206R PUDIDX 000045R RPWNXT 007626R SYSAVE 002522R
IO.RCV= 015000 KLINIT 001116R PULSE = 000020 RPWRIT= 000060 SYSAV1 002554R
IO.RDB= 001200 KLNPTR= ****** GX QEFLAG 000056R RPWRT 007546R SYSMSG 004220R
IO.RDN= 000022 KLPWRF= 000010 QIOSTS 001062R RP4CHK 003414R SYSTRT 004102R
IO.REL= 013400 KL.CFM= ****** GX QSIZE = 000023 RP6CHK 003460R S.DI = ****** GX
SAVE -- MCR FUNCTION 'SAV' FOR MACRO M1108 16-JAN-78 19:41 PAGE 36-3
SYMBOL TABLE
S.FW = ****** GX TO10DB= 000400 UNASG3= 000034 .CLRMR= 006000 .LDSEL= 044000
TCBA = 177346 TO10DN= 100000 UNASG4= 000035 .CLRUN= 010000 .MEMRS= 076000
TCBAD1= 007714R TO10DT= 174424 UNASG5= 000036 .COMEF= ****** GX .NOERR= ****** GX
TCBAD2= 007714R TO10ER= 020000 UNASG6= 000037 .CONBT= 012000 .PCAB1= 150000
TCBMSZ 010060R TO11 = 000100 U.ACP = ****** GX .CSHRG= 164000 .PCAB2= 151000
TCBNXT 010032R TO11AD= 174422 U.DACP= ****** GX .DATE3= ****** GX .PCAB3= 152000
TCBOOT 007710R TO11BC= 174416 U.DN = ****** GX .DQPBA= ****** GX .PCAB4= 153000
TCCM = 177342 TO11BM= 020000 U.LBH = ****** GX .DRLTC= 015000 .PRDTE= ****** GX
TCDT = 177350 TO11DB= 004000 U.LBN = ****** GX .DSACF= 066000 .PRSTA= ****** GX
TCENDZ= 100000 TO11DN= 000200 U.RP = ****** GX .DSIOJ= 065000 .PUDBA= ****** GX
TCERR = 100000 TO11DT= 174426 U.SZ = ****** GX .EIOJA= 067000 .PUDEA= ****** GX
TCFUNC= 000016 TO11ER= 000002 U.UN = ****** GX .FEMOD= ****** GX .RCRM1= 147000
TCGO = 000001 TTYEND= ****** GX U.VA = ****** GX .GFNR = 102000 .RCRM2= 146000
TCRDY = 000200 TTYEXP= ****** GX WBFLAG 000046R .INICL= 070000 .RCRM3= 145000
TCREAD= 000004 TT.CRW= ****** GX WEFLAG 000060R .IRLTC= 014000 .RCRM4= 144000
TCREV = 004000 TT.CTY= ****** GX WEP = 000010 .KLIWD= ****** GX .RCSPF= 141000
TCRNUM= 000002 TT.OUT= ****** GX WRNMSG 001445R 002 .KLNMD= ****** GX .RDJ14= 134000
TCSATM= 000000 TT.RIP= ****** GX WRTERR 007674R .KLNSW= ****** GX .RDJ71= 135000
TCSET 007704R TYPBUF 000062R WSFLAG 000047R .LCRDL= 052000 .RDMAB= 133000
TCST = 177340 TYPCR 006006R WTSAVE 002714R .LCRDR= 051000 .RPADR= ****** GX
TCSTOP= 000010 TYPDAT 006106R ZSTOP = 040000 .LCRM1= 057000 .SECLK= 003000
TCUNIT= 003400 TYPDEC 006224R $BTMSK= ****** GX .LCRM2= 056000 .SERFG= ****** GX
TCWC = 177344 TYPDEV 006030R $DIV = ****** GX .LCRM3= 055000 .SETMR= 007000
TCWERR 010310R TYPDON 005714R $DSW = ****** GX .LCRM4= 054000 .SETRN= 011000
TCWNXT 010250R TYPERR 006064R $UNIT = ****** GX .LCRM5= 053000 .SSCLK= 002000
TCWRIT= 000014 TYPMAX= 000013 $$ = 000037 .LDAR = 077000 .STDTA= ****** GX
TCWRT 010116R TYPMSG 005622R $$MSG = 000000 .LDBRL= 043000 .STDTZ= ****** GX
TENAD1= 174410 TYPMS1 005642R $$$ = 001367R 002 .LDBRR= 042000 .STPCL= 000000
TENAD2= 174412 TYPNUM 006324R $$$ADR= 006630R .LDCK1= 046000 .STRCL= 001000
TOBM = 000004 TYPSAV 006000R $$$ARG= 000005 .LDCK2= 047000 .VERNO= ****** GX
TOD = 000003 TYPSDV 006024R $$$OST= 000020 .LDDIS= 045000 .WRMBX= 071000
TOIP = 000002 TYPSTR 006076R $$$T1 = 000013 .LDRJD= 064000 ..DTP2= ****** GX
TOIT = 000001 TYPTAB 005666R $$$T2 = 000001 .LDRJV= 063000 ..ENB0= ****** GX
TO10 = 000200 TYPTXT 006012R .BRCLK= 005000 .LDRM1= 060000 ..FSTD= ****** GX
TO10AD= 174420 TYPWRN 006072R .BTPRM= ****** GX .LDRM2= 061000 ..STIN= ****** GX
TO10BC= 174414 UNASG1= 000032 .CECLK= 004000 .LDRM3= 062000 ...GBL= 000000
TO10BM= 000001 UNASG2= 000033
. ABS. 000000 000
010314 001
TEXT 001467 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 9602 WORDS ( 38 PAGES)
DYNAMIC MEMORY: 10496 WORDS ( 40 PAGES)
ELAPSED TIME: 00:03:52
,[52,20]SAVE.LIS/-SP/CRF=[52,30]RSXDC,SAVE
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ACFLAG 000057 R #6-362 9-651 *9-674
AC.ENA = 000200 #4-238 9-626
ALLRXF 004624 R 20-1264 #20-1299
ALLRX1 004634 R 20-1293 #20-1301
ATCBLK 001100 R #7-396 9-622
BC.HDS = ****** GX 21-1391
BITTBL = ****** GX 14-943
BIT0 = 000001 #4-153 4-192 4-213 4-231 5-256 5-271 5-276 5-306 7-425
7-427 7-428 7-429 7-430 7-431 7-432 7-433 7-434 7-435
BIT1 = 000002 #4-153 4-195 4-208 5-250 5-251 5-252 5-253 5-254 5-255
5-266 5-267 5-268 5-269 5-270 5-276 5-300 5-301 5-302
5-303 5-304 5-305 7-425 7-426 7-427 7-428 7-429 7-430
7-431 7-432 7-433 7-434 7-435
BIT10 = 002000 #4-153 4-204 5-298 5-319 7-422 7-423 7-424 7-425 7-426
7-427 7-428 7-429 7-430 7-431 7-432 7-433 7-434 7-435
7-436 7-437
BIT11 = 004000 #4-153 4-203 4-219 5-264 5-288 5-297 5-318
BIT12 = 010000 #4-153 4-203 4-218 5-280 5-287
BIT13 = 020000 #4-153 4-203 4-218 5-263
BIT14 = 040000 #4-153 4-203 4-217 5-246 5-262 5-279
BIT15 = 100000 #4-153 4-202 4-217 5-245 5-278 5-294 5-296
BIT2 = 000004 #4-153 4-198 4-207 4-232 5-250 5-266 5-276 5-300 7-425
7-426 7-427 7-428
BIT3 = 000010 #4-153 4-206 5-250 5-266 5-300 5-321 5-322
BIT4 = 000020 #4-153 4-206 5-249 5-266 15-987
BIT5 = 000040 #4-153 4-206 5-248 5-266 5-320
BIT6 = 000100 #4-153 4-206 7-422 7-423 7-424 7-425 7-426 7-427 7-428
7-429 7-430 7-431 7-432 7-433 7-434 7-435 7-436 7-437
BIT7 = 000200 #4-153 4-205 4-233 4-238 5-247 5-265 5-299
BIT8 = 000400 #4-153 4-204 5-282 5-298
BIT9 = 001000 #4-153 4-204 5-281 5-298
BPARER = 000020 #4-153
BP.CLN = 074000 #4-203 14-937
BP.CSP = 000170 #4-206 14-923
BP.ERR = 100000 #4-202
BP.LD0 = 000002 #4-208 11-792 17-1148 21-1321 22-1415 22-1417
BP.LD1 = 000004 #4-207 17-1148 17-1149 21-1321 21-1331 22-1415 22-1417
BP.RP4 = 000200 #4-205 26-1830
BP.SWR = 000001 #4-213 22-1411
BP.UNT = 003400 #4-204 14-932
CDD = 000020 #4-153
CHNPNT = 000001 #4-153
CMDCLN = 000022 #6-366 8-451
CMDCLR 000040 R #6-344 6-366 8-450
CMDONE 001572 R 8-495 #9-547
CNUPE = 000002 #4-153
CS.EXP = 177670 #4-153
CTYBFL = 000120 #6-378 8-465
CTYBUF 000226 R #6-377 6-378 8-465 *8-473 8-474
CTYLUN = 000001 #4-186 8-462 8-465 24-1572
CTYPTR = ****** GX 14-947 *14-949
CYCLS = 000002 #4-153
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DATE = 000004 #4-153
DCOMST = 000001 #4-153
DEFLAG 000061 R #6-365 *17-1100 *17-1124 18-1181
DEP = 010000 #4-153
DEVCHK 001654 R 9-558 #9-562
DEVMNT 002000 R #9-589
DEVNAM 000042 R #6-346 *8-482 9-549 9-560 *9-564 9-568 9-575 15-994
DEVOK 001732 R 9-569 #9-574
DEVUNT 000044 R #6-347 *8-486 9-548 *9-565 11-789 29-2041 32-2282 35-2478
DEX = 000400 #4-153
DEXDON = 000004 #4-153
DEXWD1 = 174406 #4-153
DEXWD2 = 174404 #4-153
DEXWD3 = 174402 #4-153
DFUNC = 000200 #4-153
DF.DMG = 000004 #4-153
DF.DMN = 000007 #4-153
DF.DOR = 000001 #4-153
DF.EHG = 000010 #4-153
DF.EHM = 000011 #4-153
DF.EMG = 000005 #4-153
DF.EMN = 000006 #4-153
DF.KLR = 000012 #4-153
DF.KLW = 000013 #4-153
DF.KLX = 000014 #4-153
DF.OFF = 000002 #4-153
DF.ON = 000003 #4-153
DF.PDP = 000016 #4-153
DF.PEX = 000015 #4-153
DHEXPA = 160020 #5-326 14-966
DHEXPZ = 000020 #5-327 14-975
DHSTAB 001122 R #7-421 14-928
DHTBL = ****** GX 14-934 14-967
DIAG1 = 174430 #4-153
DIAG2 = 174432 #4-153
DIAG3 = 174436 #4-153
DIKL10 = 000010 #4-153
DLTBL = ****** GX 14-925 *14-957 *14-958 *14-959 *14-960 *14-961
DLYCNT = 174400 #4-153
DL.CAR = ****** GX 21-1323
DMFLAG 000052 R #6-357 *8-458 8-529 10-717
DMOERR 002452 R 10-728 #10-740
DMTBLK 001114 R #7-409 10-719
DNSERR 001640 R 9-556 #9-559
DON10C = 040000 #4-153
DON10S = 100000 #4-153
DON11C = 000100 #4-153
DON11S = 000200 #4-153
DPS4 = 040000 #4-153
DRESET = 000100 #4-153
DRVADR 000002 R #6-338 *9-579 9-685 11-779 11-827 12-874
DRVAD1 = 000012 11-781 #26-1829 #26-1830 #26-1831
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DRVAD2 = 000014 11-782 #26-1829 #26-1830 #26-1831
DRVBOT = 000004 11-828 #26-1829 #26-1830 #26-1831
DRVBTP = 000016 11-791 #26-1829 #26-1830 #26-1831
DRVMSZ = 000010 11-780 #26-1829 #26-1830 #26-1831
DRVNAM = 000000 9-568 #26-1829 #26-1830 #26-1831
DRVSET = 000002 9-686 9-686 #26-1829 #26-1830 #26-1831
DRVSIZ = 000020 9-570 #26-1829 #26-1830 #26-1831
DRVTAB 006570 R 9-566 9-571 #26-1828 26-1832
DRVTBZ = 000060 9-571 #26-1832
DRVWRT = 000006 12-875 12-875 #26-1829 #26-1830 #26-1831
DR.DTE = 000011 #4-153
DSEND = 000004 #4-153
DSKADR 000004 R #6-339 7-398 9-678 9-679 *9-708 *9-709 11-781 11-782 *12-870
*12-871 29-2047 32-2290 32-2291 35-2475
DSKLUN = 000002 #4-187 9-555 10-726 19-1203 25-1778
DSKSIZ 000010 R #6-340 9-647 9-649
DS04 = 004000 #4-153
DS05 = 002000 #4-153
DS06 = 001000 #4-153
DTCL11 = 002000 #5-319 17-1128
DTECHK 003636 R 15-1005 #17-1095
DTECMD = 000451 #4-153
DTEFLG = 000444 #4-153
DTEF11 = 000450 #4-153
DTEMSG 004136 R 18-1168 #18-1173
DTEMTD = 000455 #4-153
DTEMTI = 000456 #4-153
DTEXPA = 174400 #5-314 17-1098
DTEXPZ = 000040 #5-315 17-1134
DTINOF = 000010 #5-321 17-1128
DTINON = 000040 #5-320 17-1122
DTPMSG 004162 R 18-1175 #18-1180
DTPMS1 004200 R 18-1178 #18-1184
DTRSMD = 000010 #5-322 17-1115
DTSTAT = 000034 #5-317 17-1115 *17-1122 *17-1128 17-1141
DTVECA = 000774 #5-313 17-1097
DT11DB = 004000 #5-318 17-1122
DUPE = 000020 #4-153
DURE = 000004 #4-153
DV.LOG = ****** GX 6-385
DXWRD1 = 002000 #4-153
D.CCTY = ****** GX *14-950
D.CKLN = ****** GX 21-1393
D1011 = 000040 #4-153
EBSEL = 000100 #4-153
EBUSPC = 000020 #4-153
EBUSPS = 000004 #4-153
EDONES = 040000 #4-153
EF.PR1 = ****** GX 11-763 21-1333 21-1378
EF.PR2 = ****** GX 11-763 21-1333
EF.QIO = 000001 #4-192
EF.RKP = ****** GX 21-1335 21-1344
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
EF.TMO = 000002 #4-195
EPTR = 000000 #4-153
ERRMSG 001422 R 24-1621 #24-1625
ERR10C = 010000 #4-153
ERR10S = 020000 #4-153
ERR11C = 000001 #4-153
ERR11S = 000002 #4-153
EV.PF = ****** GX 18-1162
EXFLAG 000050 R #6-355 *8-456 8-529 22-1427
EXIT 005460 R 8-520 21-1400 22-1428 #22-1433 22-1435 24-1573
EXITA 001524 R 8-463 8-466 8-468 8-470 #8-519
EXIT00 005446 R 22-1418 22-1423 #22-1426
EX.AC1 = 000001 #4-231 9-658
EX.ENA = 000200 #4-233 9-658
EX.FCO = 000004 #4-232 9-658
E.FLOG = 000004 #4-197 #4-198 21-1392 21-1395
E.FQIO = 000001 #4-191 8-465 24-1572 25-1778
E.FTMO = 000002 #4-194 21-1316 21-1338 21-1339 21-1340
FIDBLK 001074 R #7-392 9-617
FILCHK 002250 R 9-671 #9-673
FILDMO 002330 R #10-716
FILDMX 002510 R 10-723 10-725 #10-748
FILDM1 002346 R #10-721 10-751
FILDM2 002440 R 10-731 10-733 #10-735
FILDM3 002462 R 10-739 #10-742
FILDM4 002500 R 10-744 #10-746
FILFND 002056 R #9-616 9-676
FILMNT 006460 R 9-599 9-599 10-737 10-737 19-1210 19-1210 #25-1757
FILOK 002310 R 9-680 9-682 #9-684
FILQIO 006474 R 9-627 9-627 9-661 9-661 9-670 9-670 20-1240 20-1240 #25-1777
FILSET 002320 R #9-707
FINDEV 006402 R 9-557 9-557 15-995 15-995 15-1004 15-1004 16-1061 16-1061 #25-1729
FNDACP 006440 R 9-595 9-595 19-1207 19-1207 #25-1747
FORPRO = 000020 #4-153
FTABS = ****** 6-352 8-530 9-608 9-687 26-1829 26-1830 26-1831 27-1841 30-2175
33-2330
GETNAM 005512 R 8-480 8-480 8-505 8-505 #23-1471
GETNB 005470 R 8-478 8-478 8-494 8-494 #23-1455 23-1458 23-1460
GETNUM 005556 R 8-484 8-484 #23-1501
GTIMBF 000020 R #6-343 11-759 24-1650 24-1653 24-1660 24-1663 24-1669
G.TICP = 000016 #11-759
G.TICT = 000014 #11-759
G.TIDA = 000004 #11-759 24-1660
G.TIHR = 000006 #11-759 24-1650
G.TIMI = 000010 #11-759 24-1653
G.TIMO = 000002 #11-759 24-1663
G.TISC = 000012 #11-759
G.TIYR = 000000 #11-759 24-1669
HBCERR 004534 R 20-1265 20-1271 #20-1275
HIBYTE = 177400 #4-153
HOMBUF 000062 R #6-375 20-1237 20-1248 20-1267
HOMFE0 = 000061 #4-225 20-1248 20-1267
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
HOMFE1 = 000062 #4-226
HOMNAM = 000000 #4-223
IFLOP = 100000 #4-153
INTROF = 000010 #4-153
INTRON = 000040 #4-153
INTSON = 000001 #4-153
INT10S = 000400 #4-153
INT11C = 002000 #4-153
INT11S = 004000 #4-153
IO.ACE = 007400 9-621
IO.APV = 014010 25-1758
IO.DAC = 010000 9-666
IO.EXT = 011400 9-656
IO.RLB = 001000 8-465 20-1236
IO.WLB = 000400 24-1572
KBS0 = ****** GX 14-957
KBS1 = ****** GX 14-958
KLAREM 005216 R 21-1373 #21-1377
KLAUSR 005206 R 21-1370 #21-1375
KLINIT 001116 R #7-414 22-1408
KLNPTR = ****** GX 21-1317
KLPWRF = 000010 #4-153
KL.CFM = ****** GX 22-1410
KL.LCA = ****** GX 22-1410
KL.LRM = ****** GX 22-1410
KL.LVB = ****** GX 22-1410
KL.VBN = ****** GX 22-1413
K.LRBA = ****** GX 21-1390
LKS = 177546 #5-331 11-775
LOAD11 = 000004 #4-153
LOGBUF 001066 R #6-383 21-1380
LOWCOR 000062 R #6-371 6-381 11-829
MEMSIZ 000014 R #6-341 *9-643 11-780 *12-872 29-2067 32-2314 35-2533
MNTBLK 001106 R #7-403 9-598 19-1209
MNTSY 004234 R #19-1199
MODTBL 001530 R 8-507 #8-524 8-535
MODTLN = 000006 8-508 #8-535
MOFLAG 000051 R #6-356 8-529 9-590
MONTAB 006244 R 24-1666 #24-1682
MOUNTD 002046 R 9-593 #9-602
MPE11 = 001000 #4-153
M$$MGE = ****** 11-783 11-797 13-892 26-1829 26-1830 26-1831 28-1973 28-2013 29-2051
31-2234 31-2257 34-2425 34-2448
NOTRXF 004562 R #20-1283
NULSTP = 000040 #4-153
NUPE = 000002 #4-153
PERCLR = 001000 #4-153
PHYS = 100000 #4-153
PIDENT = 000000 #4-153
PRI7 = 000340 #4-153
PRNRUN 005322 R 21-1334 #21-1398
PROPNT = 000021 #4-153
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
PRTOFF = 004000 #4-153
PR0 = 000000 #4-153
PR1 = 000040 #4-153
PR2 = 000100 #4-153
PR3 = 000140 #4-153
PR4 = 000200 #4-153
PR5 = 000240 #4-153 17-1123
PR6 = 000300 #4-153
PR7 = 000340 #4-153 11-771 17-1126 18-1185 28-1972 28-2016 31-2233 31-2260 34-2424
34-2451
PS = 177776 #4-153 11-771 11-771 11-796 16-1052 16-1057 17-1102 17-1107 17-1112
17-1123 17-1126 17-1130 18-1185 18-1185 18-1187 21-1343 21-1343 21-1368
28-1972 31-2233 34-2424
PSWW1 = 000005 #4-153
PSWW10 = 000014 #4-153
PSWW11 = 000015 #4-153
PSWW12 = 000016 #4-153
PSWW13 = 000017 #4-153
PSWW2 = 000006 #4-153
PSWW3 = 000007 #4-153
PSWW4 = 000010 #4-153
PSWW5 = 000011 #4-153
PSWW6 = 000012 #4-153
PSWW7 = 000013 #4-153
PS.PUS = 030000 #4-218 11-796 16-1052 17-1102 17-1130
PS.REG = 004000 #4-219 28-2016 31-2260 34-2451
PS.USR = 140000 #4-217
PUDADR 000040 R #6-345 *9-580 15-997 *15-1001 *15-1008 19-1200 24-1604
PUDIDX 000045 R #6-348 *9-585 10-732 15-1025
PULSE = 000020 #4-153
QEFLAG 000056 R #6-361 *9-651 25-1779 *25-1786
QIOSTS 001062 R #6-382 8-465 8-467 8-469 8-472 25-1778 25-1783
QSIZE = 000023 #4-153
Q.DA = ****** GX *14-950
Q.SZ = ****** GX *14-950
RADIX 000016 R #6-342 *24-1612 *24-1649 *24-1675 24-1702 24-1704
RAMIS0 = 010000 #4-153
REDHM1 004402 R 20-1230 #20-1232
REDHOM 004350 R 19-1206 #20-1224
REDSY 003232 R #15-984
RESTOR 002760 R 12-869 #13-886 28-2018 31-2262 32-2324 34-2453
RFMAD0 = 100000 #4-153
RFMAD1 = 040000 #4-153
RFMAD2 = 020000 #4-153
RFMAD3 = 010000 #4-153
RHFLAG 000053 R #6-358 *8-457 8-529 *9-577 16-1038 20-1225
RHMERR 004600 R 20-1241 #20-1291
RM = 000010 #4-153
RNFLAG 000054 R #6-359 *16-1043 20-1227
RNRERR 004612 R 20-1228 #20-1295
RPATA = 100000 #5-278 31-2221 32-2308
RPBA = 176704 #5-273 *31-2200 *32-2289
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
RPBAD1 = 007430 R 26-1830 #31-2201
RPBAD2 = 007436 R 26-1830 #31-2203
RPBMSZ 007514 R 26-1830 #31-2228
RPBNXT 007454 R #31-2210 31-2229
RPBOOT 007412 R 26-1830 #31-2193 31-2220 31-2222 31-2264
RPCS1 = 176700 #5-261 16-1070 *16-1072 *31-2200 *31-2202 *31-2204 *31-2205 *31-2211 31-2221
32-2280 *32-2282 *32-2289 *32-2290 *32-2291 *32-2292 *32-2298 32-2308
RPCS2 = 176710 #5-275 *16-1040 *16-1065 *32-2282
RPDA = 176706 #5-274 *31-2204 *32-2291
RPDC = 176734 #5-289 *31-2202 *32-2290
RPDPR = 000400 #5-282 16-1066
RPDS = 176712 #5-277 16-1041 16-1045 16-1066 31-2221 32-2308
RPDT = 176726 #5-283 16-1075
RPDT04 = 000020 #5-284
RPDT06 = 000022 #5-285 16-1075
RPDVA = 004000 #5-264 16-1070 32-2286
RPECCI = 004000 #5-288 31-2205 32-2292
RPERR = 040000 #5-279 31-2221 32-2308
RPFLAG 000055 R #6-360 *16-1047 20-1229
RPFM22 = 010000 #5-287
RPFUNC = 000076 #5-266
RPGO = 000001 #5-271 16-1072 31-2198 32-2288
RPMCPE = 020000 #5-263 31-2219 32-2306
RPMOL = 010000 #5-280 16-1041
RPNOOP = 000000 #5-267 16-1072
RPOF = 176732 #5-286 *31-2205 *32-2292
RPPGM = 001000 #5-281 16-1045 16-1066
RPPRST = 000020 #5-268 31-2198 32-2288
RPRDY = 000200 #5-265
RPREAD = 000070 #5-270 31-2206
RPSET 007342 R 26-1830 #30-2153
RPTRE = 040000 #5-262 31-2219 32-2306
RPUNIT = 000007 #5-276
RPWC = 176702 #5-272 *31-2211 *32-2298
RPWNXT 007626 R #32-2297 32-2315
RPWRIT = 000060 #5-269 32-2293
RPWRT 007546 R 26-1830 #32-2279
RP4CHK 003414 R #16-1037
RP6CHK 003460 R 16-1039 16-1046 #16-1051
RQSKLR 004662 R 19-1204 19-1214 20-1226 20-1289 20-1297 #21-1315
RQSTSK 005334 R 21-1326 21-1379 21-1396 #22-1407
RQSTS1 004336 R 19-1201 #19-1213
RXBAD1 006716 R 26-1829 #28-1884
RXBAD2 006716 R 26-1829 #28-1885
RXBBLK 006720 R #28-1896 28-2004 28-2004
RXBBLX 007060 R 28-1882 #28-1971
RXBMSZ 007112 R 26-1829 #28-2008
RXBNXT 007100 R #28-1999 28-2009
RXBNX1 007104 R 28-1995 #28-2005
RXBOOT 006660 R 26-1829 #28-1866 28-1882 28-1946 28-1965 28-2004 28-2004 28-2020
RXCS = 177170 #5-244 *28-1935 *28-1939 28-1955 29-2046 *29-2091 *29-2130 *29-2134
RXDB = 177172 #5-257 *28-1935 *28-1939 28-1955 *29-2091 *29-2130 *29-2134
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
RXDONE = 000040 #5-248 28-1944 28-1952 29-2088 29-2139
RXEMPT = 000002 #5-252 28-1950
RXERR = 100000 #5-245 28-1944 29-2139
RXFILL = 000000 #5-251 29-2086
RXFUNC = 000016 #5-250
RXGO = 000001 #5-256 28-1875 28-1950 29-2045 29-2086
RXINIT = 040000 #5-246
RXREAD = 000006 #5-254 28-1875
RXRERR = 000016 #5-255
RXSET 006650 R 26-1829 #27-1838
RXSETX 006654 R #27-1849
RXTREQ = 000200 #5-247 28-1952 29-2088
RXUNIT = 000020 #5-249 28-1873 29-2043
RXWBLK 007202 R 29-2065 29-2065 #29-2080
RXWNXT 007162 R #29-2060 29-2068
RXWRIT = 000004 #5-253 29-2045
RXWRT 007130 R 26-1829 #29-2034
R$$11M = 000001 #1-25
R$$20F = 000001 #1-24
SAVE 001166 R #8-446 8-479 22-1429 24-1581 36-2544
SAVLMT 001162 R #7-439 9-633
SCD = 000040 #4-153
SETCTY 003006 R #14-921
SETDH 003174 R #14-965
SETDL 003136 R 14-924 #14-956
SETFIL 002056 R 9-591 9-600 #9-607
SETRXF 004544 R 20-1273 #20-1279
SF.FX = ****** GX 15-1023
SOMRXF 004656 R 20-1281 #20-1307
SPSAVE 000000 R #6-337 *11-858 13-887
STAT = 174434 #4-153
STATUS = 000022 #4-153
STSW0 = ****** GX *14-952
STSW1 = ****** GX *14-948 *14-951 21-1325 *21-1359 *21-1362 *21-1366
SWR = 177570 #4-153
SWSLLT = 100000 #4-153
SXBTHM = 105755 #4-224 20-1243
SYMNTD 004340 R 19-1211 #19-1216
SYNERR 001560 R 8-481 8-485 8-497 8-506 #8-539
SYSAVE 002522 R 10-718 #11-758
SYSAV1 002554 R 11-764 #11-769
SYSMSG 004220 R 18-1182 #18-1191
SYSTRT 004102 R 17-1150 #18-1160
S.DI = ****** GX 10-732 15-1025 *15-1027
S.FW = ****** GX 15-1023
TCBA = 177346 #5-308 *34-2364 *35-2480
TCBAD1 = 007714 R 26-1831 #34-2358
TCBAD2 = 007714 R 26-1831 #34-2359
TCBMSZ 010060 R 26-1831 #34-2418
TCBNXT 010032 R #34-2405 34-2419
TCBOOT 007710 R 26-1831 #34-2350 34-2379 34-2412 34-2455 35-2495
TCCM = 177342 #5-295 *34-2364 34-2378 34-2385 34-2395 *34-2406 35-2474 *35-2480 35-2494
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
35-2501 35-2511 *35-2522
TCDT = 177350 #5-309 34-2385 34-2395 35-2501 35-2511
TCENDZ = 100000 #5-294
TCERR = 100000 #5-296
TCFUNC = 000016 #5-300
TCGO = 000001 #5-306 34-2420 35-2535
TCRDY = 000200 #5-299
TCREAD = 000004 #5-303 34-2401
TCREV = 004000 #5-297 34-2370 34-2380 34-2388 35-2486 35-2496 35-2504
TCRNUM = 000002 #5-302 34-2368 35-2484
TCSATM = 000000 #5-301
TCSET 007704 R 26-1831 #33-2338
TCST = 177340 #5-293 34-2378 35-2494
TCSTOP = 000010 #5-304 34-2420 35-2535
TCUNIT = 003400 #5-298
TCWC = 177344 #5-307 *34-2406 *35-2522
TCWERR 010310 R 35-2528 #35-2540
TCWNXT 010250 R #35-2521 35-2534
TCWRIT = 000014 #5-305 35-2517
TCWRT 010116 R 26-1831 #35-2473
TENAD1 = 174410 #4-153
TENAD2 = 174412 #4-153
TOBM = 000004 #4-153
TOD = 000003 #4-153
TOIP = 000002 #4-153
TOIT = 000001 #4-153
TO10 = 000200 #4-153
TO10AD = 174420 #4-153
TO10BC = 174414 #4-153
TO10BM = 000001 #4-153
TO10DB = 000400 #4-153
TO10DN = 100000 #4-153
TO10DT = 174424 #4-153
TO10ER = 020000 #4-153
TO11 = 000100 #4-153
TO11AD = 174422 #4-153
TO11BC = 174416 #4-153
TO11BM = 020000 #4-153
TO11DB = 004000 #4-153
TO11DN = 000200 #4-153
TO11DT = 174426 #4-153
TO11ER = 000002 #4-153
TTYEND = ****** GX 14-976
TTYEXP = ****** GX *14-957 *14-958 *14-959 *14-960 *14-961 14-967 21-1318
TT.CRW = ****** GX 21-1325
TT.CTY = ****** GX 14-948 14-951 21-1362 21-1366
TT.OUT = ****** GX 21-1359
TT.RIP = ****** GX 21-1325
TYPBUF 000062 R #6-376 24-1545 24-1571 24-1572 25-1748
TYPCR 006006 R 24-1564 #24-1586
TYPDAT 006106 R 24-1564 #24-1648
TYPDEC 006224 R 24-1564 #24-1674
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TYPDEV 006030 R 24-1564 #24-1609
TYPDON 005714 R 24-1564 #24-1569
TYPERR 006064 R 24-1564 #24-1620
TYPMAX = 000013 24-1553 #24-1565
TYPMSG 005622 R 8-464 8-464 8-471 8-471 8-518 8-518 8-541 8-541 9-561
9-561 9-573 9-573 9-601 9-601 9-603 9-603 9-672 9-672
9-683 9-683 10-734 10-734 10-741 10-741 10-745 10-745 10-747
10-747 11-765 11-765 18-1169 18-1169 18-1177 18-1177 18-1183 18-1183
18-1193 18-1193 19-1202 19-1202 19-1212 19-1212 19-1217 19-1217 20-1231
20-1231 20-1276 20-1276 20-1282 20-1282 20-1292 20-1292 20-1296 20-1296
20-1300 20-1300 21-1371 21-1371 21-1372 21-1372 21-1376 21-1376 21-1399
21-1399 22-1425 22-1425 #24-1542
TYPMS1 005642 R #24-1551 24-1554 24-1559
TYPNUM 006324 R 24-1614 24-1614 24-1651 24-1651 24-1658 24-1658 24-1661 24-1661 24-1670
24-1676 24-1676 #24-1694
TYPSAV 006000 R 24-1564 #24-1580
TYPSDV 006024 R 24-1564 #24-1603
TYPSTR 006076 R 24-1564 24-1622 #24-1640 24-1642 24-1667 24-1667
TYPTAB 005666 R 24-1558 24-1558 #24-1563 24-1565
TYPTXT 006012 R 24-1564 #24-1593 24-1611 24-1611
TYPWRN 006072 R 24-1564 #24-1630
UNASG1 = 000032 #4-153
UNASG2 = 000033 #4-153
UNASG3 = 000034 #4-153
UNASG4 = 000035 #4-153
UNASG5 = 000036 #4-153
UNASG6 = 000037 #4-153
U.ACP = ****** GX *9-596 10-730 *19-1208
U.DACP = ****** GX 25-1751
U.DN = ****** GX 9-564 10-726 19-1203 24-1610 25-1732
U.LBH = ****** GX *16-1064 *16-1078
U.LBN = ****** GX *16-1063 *16-1077
U.RP = ****** GX 9-563 10-722 *15-1006
U.SZ = ****** GX 9-583 10-749 15-1015 25-1737
U.UN = ****** GX 9-565 10-726 *15-998 16-1040 19-1203 24-1613 25-1734
U.VA = ****** GX 9-592 10-724 10-743 19-1205
WBFLAG 000046 R #6-349 8-529 *12-868
WEFLAG 000060 R #6-363 18-1167 *32-2323
WEP = 000010 #4-153
WRNMSG 001445 R 24-1631 #24-1635
WRTERR 007674 R 29-2141 32-2287 32-2307 32-2309 #32-2322 35-2541
WSFLAG 000047 R #6-351 *8-455 8-529 *12-866
WTSAVE 002714 R #12-865 12-876
ZSTOP = 040000 #4-153
$BTMSK = ****** GX *14-943
$DIV = ****** GX 9-584 9-584 15-1016 15-1016 30-2167 30-2167
$DSW = ****** GX 10-727 22-1424 25-1781
$UNIT = ****** GX *14-945
$$ = 000037 #8-464 8-464 #8-471 8-471 #8-478 8-478 #8-480 8-480 #8-484
8-484 #8-494 8-494 #8-505 8-505 #8-518 8-518 #8-541 8-541
#9-557 9-557 #9-561 9-561 #9-573 9-573 #9-584 9-584 #9-595
9-595 #9-599 9-599 #9-601 9-601 #9-603 9-603 #9-627 9-627
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
#9-661 9-661 #9-670 9-670 #9-672 9-672 #9-683 9-683 #9-686
9-686 #10-734 10-734 #10-737 10-737 #10-741 10-741 #10-745 10-745
#10-747 10-747 #11-765 11-765 #12-875 12-875 #15-995 15-995 #15-1004
15-1004 #15-1016 15-1016 #16-1061 16-1061 #17-1152 17-1152 #18-1163 18-1163
#18-1169 18-1169 #18-1177 18-1177 #18-1183 18-1183 #18-1193 18-1193 #19-1202
19-1202 #19-1207 19-1207 #19-1210 19-1210 #19-1212 19-1212 #19-1217 19-1217
#20-1231 20-1231 #20-1240 20-1240 #20-1276 20-1276 #20-1282 20-1282 #20-1292
20-1292 #20-1296 20-1296 #20-1300 20-1300 #21-1371 21-1371 #21-1372 21-1372
#21-1376 21-1376 #21-1394 21-1394 #21-1399 21-1399 #22-1425 22-1425 #24-1558
24-1558 #24-1611 24-1611 #24-1614 24-1614 #24-1651 24-1651 #24-1658 24-1658
#24-1661 24-1661 #24-1667 24-1667 #24-1676 24-1676 #24-1712 24-1712 #28-1897
28-1897 #28-1898 28-1898 #28-2004 28-2004 #29-2065 29-2065 #29-2081 29-2081
#29-2082 29-2082 #30-2167 30-2167
$$$ = 001367 R #8-464 8-464 #8-471 8-471 #8-518 8-518 #8-541 8-541 #9-561
9-561 #9-573 9-573 #9-601 9-601 #9-603 9-603 #9-672 9-672
#9-683 9-683 #10-734 10-734 #10-741 10-741 #10-745 10-745 #10-747
10-747 #11-765 11-765 #18-1169 18-1169 #18-1177 18-1177 #18-1183 18-1183
#18-1193 18-1193 #19-1202 19-1202 #19-1212 19-1212 #19-1217 19-1217 #20-1231
20-1231 #20-1276 20-1276 #20-1282 20-1282 #20-1292 20-1292 #20-1296 20-1296
#20-1300 20-1300 #21-1371 21-1371 #21-1372 21-1372 #21-1376 21-1376 #21-1399
21-1399 #22-1425 22-1425
$$$ADR = 006630 R #26-1829 26-1829 26-1829 26-1829 26-1829 26-1829 26-1829 26-1829 26-1829
26-1829 #26-1830 26-1830 26-1830 26-1830 26-1830 26-1830 26-1830 26-1830
26-1830 26-1830 #26-1831 26-1831 26-1831 26-1831 26-1831 26-1831 26-1831
26-1831 26-1831 26-1831
$$$ARG = 000005 #8-462 8-462 #8-462 8-462 #8-462 8-462 #8-462 8-462 8-462
8-462 8-462 8-462 8-462 8-462 8-462 8-462 8-462 #8-465
8-465 8-465 8-465 8-465 8-465 8-465 8-465 8-465 8-465
8-465 8-465 #9-555 9-555 #9-555 9-555 #9-555 9-555 #9-555
9-555 9-555 9-555 9-555 9-555 9-555 9-555 9-555 9-555
9-555 #10-726 10-726 #10-726 10-726 #10-726 10-726 #10-726 10-726
10-726 10-726 10-726 10-726 10-726 10-726 10-726 10-726 10-726
#19-1203 19-1203 #19-1203 19-1203 #19-1203 19-1203 #19-1203 19-1203 19-1203
19-1203 19-1203 19-1203 19-1203 19-1203 19-1203 19-1203 19-1203 #21-1338
21-1338 21-1338 21-1338 21-1338 21-1338 21-1338 21-1338 21-1338 21-1338
21-1338 #24-1572 24-1572 24-1572 24-1572 24-1572 24-1572 24-1572 24-1572
24-1572 24-1572 24-1572 24-1572 #25-1778 25-1778 25-1778 25-1778 25-1778
25-1778 25-1778 25-1778 25-1778 25-1778 25-1778 25-1778
$$$GLB = ****** 11-759 11-759 11-759 11-759 11-759 11-759 11-759 11-759
$$$OST = 000020 #11-759 11-759 11-759 #11-759 11-759 11-759 #11-759 11-759 11-759
#11-759 11-759 11-759 #11-759 11-759 11-759 #11-759 11-759 11-759
#11-759 11-759 11-759 #11-759 11-759 11-759 #11-759
$$$T1 = 000013 #8-465 8-465 #24-1572 24-1572 #25-1778 25-1778
$$$T2 = 000001 #22-1422 22-1422
.BRCLK = 005000 #4-153
.BTPRM = ****** GX *13-914 17-1147 21-1320 22-1409
.CECLK = 004000 #4-153
.CLRMR = 006000 #4-153
.CLRUN = 010000 #4-153
.COMEF = ****** GX 11-763 21-1333 21-1335 21-1344 21-1378
.CONBT = 012000 #4-153
.CSHRG = 164000 #4-153
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.DATE3 = ****** GX *18-1161
.DQPBA = ****** GX *14-950
.DRLTC = 015000 #4-153
.DSACF = 066000 #4-153
.DSIOJ = 065000 #4-153
.EIOJA = 067000 #4-153
.FEMOD = ****** GX *21-1351
.GFNR = 102000 #4-153
.INICL = 070000 #4-153
.IRLTC = 014000 #4-153
.KLIWD = ****** GX *22-1421
.KLNMD = ****** GX 21-1346 21-1349 21-1351 *21-1355 21-1360 21-1369 21-1381 21-1383
.KLNSW = ****** GX *21-1349
.LCRDL = 052000 #4-153
.LCRDR = 051000 #4-153
.LCRM1 = 057000 #4-153
.LCRM2 = 056000 #4-153
.LCRM3 = 055000 #4-153
.LCRM4 = 054000 #4-153
.LCRM5 = 053000 #4-153
.LDAR = 077000 #4-153
.LDBRL = 043000 #4-153
.LDBRR = 042000 #4-153
.LDCK1 = 046000 #4-153
.LDCK2 = 047000 #4-153
.LDDIS = 045000 #4-153
.LDRJD = 064000 #4-153
.LDRJV = 063000 #4-153
.LDRM1 = 060000 #4-153
.LDRM2 = 061000 #4-153
.LDRM3 = 062000 #4-153
.LDSEL = 044000 #4-153
.MEMRS = 076000 #4-153
.NOERR = ****** GX *11-770 *17-1151
.PCAB1 = 150000 #4-153
.PCAB2 = 151000 #4-153
.PCAB3 = 152000 #4-153
.PCAB4 = 153000 #4-153
.PRDTE = ****** GX *17-1139 18-1174
.PRSTA = ****** GX *17-1143 *18-1176
.PUDBA = ****** GX 9-582 10-720 15-1014 25-1730
.PUDEA = ****** GX 10-750 25-1738
.RCRM1 = 147000 #4-153
.RCRM2 = 146000 #4-153
.RCRM3 = 145000 #4-153
.RCRM4 = 144000 #4-153
.RCSPF = 141000 #4-153
.RDJ14 = 134000 #4-153
.RDJ71 = 135000 #4-153
.RDMAB = 133000 #4-153
.RPADR = ****** GX 20-1249 20-1268 20-1280 20-1284 20-1302 *20-1308
.SECLK = 003000 #4-153
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.SERFG = ****** GX *18-1162
.SETMR = 007000 #4-153
.SETRN = 011000 #4-153
.SSCLK = 002000 #4-153
.STDTA = ****** GX 15-1018
.STDTZ = ****** GX 15-1020
.STPCL = 000000 #4-153
.STRCL = 001000 #4-153
.VERNO = ****** GX 18-1192
.WRMBX = 071000 #4-153
..DTP2 = ****** GX 17-1152 17-1152
..ENB0 = ****** GX 18-1163 18-1163
..FSTD = ****** GX 25-1752
..STIN = ****** GX 21-1394 21-1394
SAVE CREATED BY MACRO ON 16-JAN-78 AT 19:43 PAGE 14
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ALUN$S #4-151 #8-462 #9-555 #10-726 #19-1203
CALL #1-23 #4-152 8-464 8-471 8-478 8-480 8-484 8-494 8-505 8-518
8-541 9-557 9-561 9-573 9-584 9-595 9-599 9-601 9-603 9-627
9-661 9-670 9-672 9-683 9-686 10-734 10-737 10-741 10-745 10-747
11-765 12-875 15-995 15-1004 15-1016 16-1061 17-1152 18-1163 18-1169 18-1177
18-1183 18-1193 19-1202 19-1207 19-1210 19-1212 19-1217 20-1231 20-1240 20-1276
20-1282 20-1292 20-1296 20-1300 21-1371 21-1372 21-1376 21-1394 21-1399 22-1425
24-1558 24-1611 24-1614 24-1651 24-1658 24-1661 24-1667 24-1676 24-1712 28-1897
28-1898 28-2004 29-2065 29-2081 29-2082 30-2167
CLEF$S #4-151 21-1316 21-1340
DIR$ #8-462 8-462 #8-465 8-465 #9-555 9-555 #10-726 10-726 #11-759 11-759
#19-1203 19-1203 #21-1316 21-1316 #21-1338 21-1338 #21-1339 21-1339 #21-1340 21-1340
#21-1395 21-1395 #22-1422 22-1422 #22-1434 22-1434 #24-1572 24-1572 #25-1778 25-1778
DRIVER #26-1798 #26-1829 #26-1830 #26-1831
ERROR #4-171 #8-518 #8-541 #9-561 #9-573 #9-601 #9-672 #9-683 #10-734 #10-741
#10-745 #11-765 #18-1169 #21-1399
ERR$ #8-462 #8-465 #9-555 #10-726 #11-759 #19-1203 #21-1316 #21-1338 #21-1339 #21-1340
#21-1395 #22-1422 #22-1434 #24-1572 #25-1778
EXIT$S #4-151 #22-1434
GTIM$S #4-151 #11-759
MFPI #4-152 16-1054 16-1055 17-1104 17-1105 17-1109 17-1110
MFPS #4-152
MOV$ #8-462 #8-462 #8-462 #8-462 #8-462 #8-465 #8-465 #8-465 #8-465 #8-465
#8-465 #8-465 #8-465 #9-555 #9-555 #9-555 #9-555 #9-555 #10-726 #10-726
#10-726 #10-726 #10-726 #11-759 #11-759 #19-1203 #19-1203 #19-1203 #19-1203 #19-1203
#21-1316 #21-1316 #21-1338 #21-1338 #21-1338 #21-1338 #21-1338 #21-1339 #21-1339 #21-1340
#21-1340 #21-1395 #21-1395 #22-1422 #22-1422 #24-1572 #24-1572 #24-1572 #24-1572 #24-1572
#24-1572 #24-1572 #24-1572 #24-1572 #25-1778 #25-1778 #25-1778 #25-1778 #25-1778 #25-1778
#25-1778 #25-1778 #25-1778 #25-1778 #25-1778
MRKT$S #4-151 21-1338
MTPI #4-152 16-1087 16-1088 17-1132 17-1133 17-1145 17-1146
MTPS #4-152 #16-1056 #16-1057 #17-1106 #17-1107 #17-1111 #17-1112
MVB$ #8-465 #8-465 #22-1422 #22-1422 #24-1572 #24-1572 #25-1778 #25-1778
NBL$ #8-462 #8-462 #9-555 #9-555 #10-726 #10-726 #19-1203 #19-1203
OFF$ #11-759 11-759 11-759 11-759 11-759 11-759 11-759 11-759 11-759
POP #4-152 #10-738 #13-891 #24-1574 #24-1575 #24-1714 #28-1961 #29-2145 #30-2170
PUSH #4-152 #8-464 #8-471