Commit | Line | Data |
---|---|---|
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 | ||
67 | SWAP, 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 | |
73 | SWAP0, 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 | ||
91 | LOAD, 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 | |
114 | LOAD1, 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 | |
132 | LOAD2, 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 | |
148 | REDCNT, 7756 /FUNCTION CONTROL WORD (POINTS TO MREAD-1 FOR "ONCE" | |
149 | REDADD, -7607 /BUFFER ADDRESS (CONTAINS SYS: ENTRY POINT FOR "ONCE" | |
150 | REDBLK, 0 /STARTING BLOCK NUMBER | |
151 | HLT /ERROR RETURN ADDRESS | |
152 | ||
153 | SWAP1, 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 | |
160 | SWAP1A, 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 | |
166 | SWAP2, DCA XFERV /CLEAR FLAG | |
167 | TAD LINK /RESTORE LINK AND AC | |
168 | RAR CLL | |
169 | TAD AC | |
170 | EXIT, 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: | |
178 | CURTAB=. /CURRENT OVERLAY IN LEVEL TABLE (8 ENTRIES) | |
179 | STRBLK=. /ENTRY 0 IS USED TO HOLD STARTING BLOCK OF FILE | |
180 | ONCE, 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 | ||
199 | BINDAT, /CONTAINS OVERLAY,LEVEL,FIELD OF DESIRED SUBROUTINE | |
200 | SNA CLA /FROM SYS: ? | |
201 | XITLOC, /CONTAINS LOCATION TO GO TO IN DESIRED SUBROUTINE | |
202 | JMP SWAP0+1 /YES, OK | |
203 | PNTR, /POINTS INTO CURTAB | |
204 | HLT /NO, ERROR | |
205 | TEMP, /TEMP STORAGE | |
206 | JMP .-1 /DON'T ALLOW CONTINUE | |
207 | FLD, /POINTS TO FIELD WORD IN SWPTAB | |
208 | 7747 /POINTER TO "SOFSET" | |
209 | ||
210 | ADDRES=REDADD /POINTS TO ADDRESS WORD IN SWPTAB | |
211 | RELBLK=REDBLK /POINTS TO RELATIVE BLOCK WORD IN SWPTAB | |
212 | LENGTH=REDCNT /POINTS TO LENGTH WORD IN SWPTAB | |
213 | ||
214 | AC, 0 /SAVED AC | |
215 | LINK, 0 /SAVED LINK | |
216 | ||
217 | PAGE | |
218 | \f | |
219 | /PATCH TO FIX BLOCK POSITION CALCULATION | |
220 | PATCH, 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 | |
228 | PPNT, TEMP | |
229 | PTEMP, 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 | ||
241 | SWPTAB, | |
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 | ||
259 | TRANVC, | |
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 |