A large commit.
[pdp8.git] / sw / os8 / v3d / sources / devext / dectapes / dectape1 / ccldrv.ma
CommitLineData
81e70d48
PH
1/OVRDRV - OVERLAY DRIVER FOR CCL
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1977,1978 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
22/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
26/
27/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/
36/
37/
38/
39/
40/
41/
42/
43/
44/
45\f
46/OVERLAY DRIVER
47/FOR LINKER PROGRAM MODULES
48/VERSION=V3A
49
50
51/THIS SECT IS TWO LOCATIONS AND CONTAINS THE TRANSFER VECTOR TO SWAPER
52/AND A FLAG THAT INDICATES WHETHER A JMP (1) OR JMS (0) WAS PERFORMED
53/TO THE TRANSFER VECTOR
54
55/ .SECT XFERV,Z
56/ 0 /FLAG, 1=JMP, 0=JMS
57/ SWAPER /TRANSFER VECTOR TO SWAP ROUTINE
58
59/THIS IS THE MAIN DRIVER SECTION
60
61 .SECT SWAPER,R
62 .GLOBAL SWPTAB,TRANVC
63
64 .ZTERNAL XFERV
65 FIELD 1
66
67SWAP, 6102 /VERSION NUMBER
68 DCA AC /SAVE CALLING AC
69 RAL
70 DCA LINK /AND LINK
71 RDF /GET CALLING DF
72 TAD (CDF /FORM CDF
73SWAP0, JMP ONCE /DO ONCE ONLY CODE - REPLACED BY DCA EXIT
74 CDF . /CHANGE TO THIS DATA FIELD
75 TAD I SWAP /GET OVERLAY,LEVEL,FIELD
76 DCA BINDAT /SAVE
77 ISZ SWAP /BUMP POINTER
78 TAD I SWAP /GET SUBROUTINE ADDRESS
79 DCA XITLOC /SAVE
80 TAD BINDAT /FORM CDF TO CALLED SUBROUTINE
81 AND (7
82 RAL CLL
83 RTL
84 TAD (CDF
85 DCA SWAP1A /SAVE
86 TAD SWAP1A /FORM CIF TO CALLED SUBROUTINE
87 IAC
88 DCA EXIT+1 /SAVE FOR EXIT
89\f/LOAD OVERLAY OF CALLED SUBROUTINE
90
91LOAD, TAD BINDAT
92 AND (1600 /EXTRACT LEVEL OF CALLED SUBROUTINE
93 RTR CLL /5 RIGHT
94 RTR
95 RAR
96 DCA PNTR /SAVE
97 TAD PNTR
98 TAD (SWPTAB /COMPUTE ENTRY INTO SWAP TABLE
99 DCA FLD /POINTS TO FIELD OF OVERLAY
100 TAD PNTR /COMPUTE ENTRY INTO CURRENT OVERLAY TABLE
101 RTR CLL
102 TAD (CURTAB
103 DCA PNTR
104 TAD BINDAT /EXTRACT DESIRED OVERLAY NUMBER
105 AND (170
106 RTR CLL /RIGHT 3
107 RAR
108 CIA /NEGATE
109 DCA TEMP
110 TAD TEMP
111 TAD I PNTR /COMPARE WITH CURRENT OVERLAY NUMBER FOR LEVEL
112 SNA CLA /SAME?
113 JMP SWAP1 /YES, NO READING NEEDED
114LOAD1, TAD TEMP /NO, SET TO NEW
115 CIA
116 DCA I PNTR /OVERLAY NUMBER
117 TAD FLD /SET UP POINTERS TO
118 IAC
119 DCA ADDRES /ADDRESS
120 TAD ADDRES
121 IAC
122 DCA RELBLK /RELATIVE BLOCK NUMBER
123 TAD RELBLK
124 IAC
125 DCA LENGTH /LENGTH OF OVERLAY
126 TAD TEMP /TEST OVERLAY NUMBER
127 SNA CLA /0?
128 JMP LOAD2 /YES, NO MULTIPLICATION NEEDED
129 TAD I LENGTH /BLOCK NUMBER = (LENGTH OF OVERLAY)
130 JMP I .+1 /TIMES (THE NUMBER OF THE OVERLAY)
131 PATCH
132LOAD2, TAD I RELBLK /PLUS (RELATIVE BLOCK OF LEVEL)
133 TAD STRBLK /PLUS (STARTING BLOCK OF PROGRAM)
134 DCA REDBLK /SAVE IN CALL LOCATION
135 TAD I ADDRES /GET ADDRESS TO LOAD
136 DCA REDADD /SAVE IN CALL LOCATION
137 TAD I FLD /GET FIELD
138 AND (7 /MASK
139 RTR CLL
140 RAR /POSITION
141\f TAD I LENGTH /GET LENGTH
142 RTL
143 RTL
144 RTL
145 DCA REDCNT /FORM CONTROL WORD
146 CIF 0
147 JMS I (7607 /CALL SYSTEM HANDLER TO READ IN OVERLAY
148REDCNT, 7756 /FUNCTION CONTROL WORD (POINTS TO MREAD-1 FOR "ONCE"
149REDADD, -7607 /BUFFER ADDRESS (CONTAINS SYS: ENTRY POINT FOR "ONCE"
150REDBLK, 0 /STARTING BLOCK NUMBER
151 HLT /ERROR RETURN ADDRESS
152
153SWAP1, TAD XFERV /GET JMP-JMS FLAG
154 SZA CLA /SET?
155 JMP SWAP2 /YES, EXECUTE A JMP
156 CLA CLL CMA RTL /-3
157 TAD SWAP /BACK UP TO CALLER'S PC
158 DCA SWAP
159 TAD I SWAP
160SWAP1A, 0 /CDF TO CALLED SUBROUTINE
161 DCA I XITLOC /SAVE IN CALLED SUBROUTINE
162 ISZ XITLOC /BUMP TRANSFER ADDRESS
163 CDF .
164 TAD (ISZ XFERV
165 DCA I SWAP /SET BACK UP ENTRY IN XFER VECTOR TABLE
166SWAP2, DCA XFERV /CLEAR FLAG
167 TAD LINK /RESTORE LINK AND AC
168 RAR CLL
169 TAD AC
170EXIT, 0 /SET DF TO CALLING FIELD
171 0 /SET IF TO CALLED FIELD
172 JMP I XITLOC /GO TO CALLED SUBROUTINE
173
174\f/VARIABLE LOCATIONS
175/SOME OF THE FOLLOWING LOCATIONS CONTAIN
176/ONCE ONLY CODE TO SET UP STARTING BLOCK
177/AND CHECK THAT FILE CAME FROM SYS:
178CURTAB=. /CURRENT OVERLAY IN LEVEL TABLE (8 ENTRIES)
179STRBLK=. /ENTRY 0 IS USED TO HOLD STARTING BLOCK OF FILE
180ONCE, DCA EXIT /SAVE CALLING FIELD
181 /ALSO ENTRY 0
182 TAD .-1 /SET UP SO WON'T BE EXECUTED AGAIN
183 /ALSO ENTRY 1
184 DCA SWAP0
185 /ALSO ENTRY 2
186 CDF 0
187 /ALSO ENTRY 3
188 TAD I FLD /GET STARTING BLOCK FROM "SOFSET"
189 /ALSO ENTRY 4
190 SNA
191 /ALSO ENTRY 5
192 HLT /ERROR, K.M. PATCHES NOT IN
193 /ALSO ENTRY 6
194 DCA STRBLK /SAVE
195 /ALSO ENTRY 7
196 TAD I REDCNT /CHECK FILE CAME FROM SYS:
197 TAD REDADD
198
199BINDAT, /CONTAINS OVERLAY,LEVEL,FIELD OF DESIRED SUBROUTINE
200 SNA CLA /FROM SYS: ?
201XITLOC, /CONTAINS LOCATION TO GO TO IN DESIRED SUBROUTINE
202 JMP SWAP0+1 /YES, OK
203PNTR, /POINTS INTO CURTAB
204 HLT /NO, ERROR
205TEMP, /TEMP STORAGE
206 JMP .-1 /DON'T ALLOW CONTINUE
207FLD, /POINTS TO FIELD WORD IN SWPTAB
208 7747 /POINTER TO "SOFSET"
209
210ADDRES=REDADD /POINTS TO ADDRESS WORD IN SWPTAB
211RELBLK=REDBLK /POINTS TO RELATIVE BLOCK WORD IN SWPTAB
212LENGTH=REDCNT /POINTS TO LENGTH WORD IN SWPTAB
213
214AC, 0 /SAVED AC
215LINK, 0 /SAVED LINK
216
217 PAGE
218\f
219/PATCH TO FIX BLOCK POSITION CALCULATION
220PATCH, IAC /CONVERT PAGES TO BLOCKS
221 CLL RAR
222 DCA PTEMP
223 TAD PTEMP /MULTIPLY BLOCK LENGTH
224 ISZ I PPNT /BY OVERLAY NUMBER
225 JMP .-2
226 JMP I .+1
227 LOAD2
228PPNT, TEMP
229PTEMP, 0
230
231
232
233/THIS AREA CONTAINS OVERLAY DATA FOR MAIN AND THE 7 LEVELS
234/THE FORMAT OF EACH ENTRY IS:
235/WORD1: FIELD OF LEVEL
236/WORD2: ADDRESS OF LEVEL
237/WORD3: RELATIVE BLOCK OF 1ST OVERLAY IN LEVEL
238/WORD4: LENGTH OF THE LEVEL (ANY AND ALL OVERLAYS-EACH)
239/ (ALL OVERLAYS IN A LEVEL ARE THE SAME LENGTH)
240
241SWPTAB,
242
243 *.+40
244
245/THIS AREA CONTAINS THE TRANSFER VECTORS FOR EACH ENTRY POINT
246/IN ALL THE OVERLAYS IN ALL THE LEVELS
247/ITS SIZE SHOULD BE MODIFIED BY THE USER
248/TO FIT THE MAXIMUM NUMBER OF TRANSFER VECTORS NEEDED
249/EACH TRANSFER VECTOR OCCUPIES 4 LOCATIONS
250/THE TABLE IS INITIALLY SET UP FOR 24(DEC) (30(OCT)) VECTORS
251/THE MAXIMUM SIZE THIS TABLE CAN BE IS 3774 (OCT) LOCATIONS FOR
252/511 (DEC) (777 (OCT)) VECTORS
253/THE FORMAT OF EACH VECTOR ENTRY IS:
254/WORD1: ISZ XFERV
255/WORD2: JMS I XFERV+1
256/WORD3: LEVEL/OVERLAY/FIELD
257/WORD4: ADDRESS
258
259TRANVC,
260
261 SIZE=53. /MODIFY THIS LINE TO CHANGE THE SIZE OF THE TABLE
262 /SET FOR 24(DEC)
263
264 *SIZE^4+.
265
266
267\f