Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | /25 OS/12 SCOPE HANDLER |
2 | / | |
3 | / | |
4 | / | |
5 | / | |
6 | / | |
7 | / | |
8 | / | |
9 | / | |
10 | / | |
11 | /COPYRIGHT (C) 1974,1975 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 | ||
46 | / NOVEMBER, 1972 | |
47 | ||
48 | / MARIO DENOBILI, P?S | |
49 | ||
50 | / THIS ROUTINE WAS WRITTEN VERY HASTILY. | |
51 | ||
52 | / THE FOLLOWING FEATURES SHOULD BE PUT | |
53 | / IN, BUT I WAS TOO LAZY TO DO SO. | |
54 | / WITH A FEW HOURS WORK, A COMPETENT | |
55 | / PROGRAMMER SHOULD BE ABLE TO COMPACT | |
56 | / MY HASTY CODE AND EASILY ADD AT LEAST | |
57 | / A FEW OF THE FOLLOWING FEATURES: | |
58 | ||
59 | /1. TABS SHOULD BE HANDLED CORRECTLY. | |
60 | ||
61 | /2. FORM FEEDS SHOULD SIGNAL A NEW | |
62 | / SCOPE PAGE. [BRANCH TO LOCATION 'FULL'] | |
63 | ||
64 | /3. VERTICAL TABS SHOULD BE TREATED AS | |
65 | / 7 LINE FEEDS. | |
66 | ||
67 | /4. THE HANDLER SHOULD RETURN AN ERROR ON READ. | |
68 | ||
69 | /5. IF THE BUFFER OVERLAPS THE BETA REGISTER, | |
70 | / OR WRAPS AROUND 7777. | |
71 | / THIS SHOULD NOT CAUSE A CRAPPY | |
72 | / CHARACTER TO BE DISPLAYED. | |
73 | ||
74 | /6. CTRL/Z SHOULD BE CHECKED FOR AND SIGNIFY | |
75 | / END OF BUFFER. [BRANCH TO 'FULL' WITH | |
76 | / LINK 0] | |
77 | ||
78 | /7. THE DISPLAY ALGORITHM SHOULD BE IMPROVED | |
79 | / SO THAT THERE IS LESS FLICKER. | |
80 | \f/MORE FEATURES TO BE ADDED | |
81 | ||
82 | /8. THE RESTRICTION THAT THE USER'S BUFFER | |
83 | / START AT AN EVEN ADDRESS IS USELESS | |
84 | / AND SHOULD BE REMOVED. | |
85 | ||
86 | /9. THE STATUS OF THE SPECIAL FUNCTIONS | |
87 | / REGISTER SHOULD BE SAVED AND RESTORED | |
88 | / BEFORE EXITING. | |
89 | ||
90 | /10. WHEN ANOTHER LOCATION IS FOUND, THE HANDLER | |
91 | / SHOULD BE ABLE TO DETECT PARITY ^C | |
92 | ||
93 | /11. SENSE SWITCH 0 SHOULD BE USED TO | |
94 | / SPECIFY SMALL OR LARGE SIZE CHARACTERS. | |
95 | ||
96 | /12. OVERFLOW LINES SHOULD BE INDENTED SOME SMALL | |
97 | / AMOUNT TO SHOW THAT THEY ARE A CONTINUATION | |
98 | / OF THE PREVIOUS LINE | |
99 | \f/ OS/8 BUILD HEADER BLOCK | |
100 | ||
101 | FIELD 0 | |
102 | *0 | |
103 | ||
104 | -1 | |
105 | DEVICE VR12 /DEVICE NAME | |
106 | DEVICE TV /HANDLER NAME | |
107 | 1300 /DCB WORD | |
108 | 4000+SCOPE-200 /2-PAGE FLAG AND RELATIVE ENTRY PT | |
109 | ZBLOCK 2 | |
110 | ||
111 | / TWO PAGE SCOPE DEVICE HANDLER | |
112 | / PAGE INDEPENDENT AND REUSABLE | |
113 | ||
114 | LINC=6141 | |
115 | PDP=2 | |
116 | ESF=4 | |
117 | CLR=11 | |
118 | ||
119 | *200 | |
120 | ||
121 | L26, 26 | |
122 | SAVE, 0 /BETA REG SAVE LOC - MAY BE BETA REG | |
123 | LINKNT, TAD SAVE /COUNT OF # OF LINES | |
124 | YCOORD, AND SCDF /DISPLAY ORDIANTE | |
125 | BETA, DCA . /8-MODE ADDRESS OF BETA REGISTER 1 | |
126 | CBASE, TAD SAVE /POINTS TO CHARACTER DISPLAY TABLE | |
127 | BUFEND, TAD XCIF /END OF BUFFER | |
128 | BPTR, DCA CBASE /POINTS INTO BUFFER | |
129 | BUFFER, TAD X /BEGINNING OF BUFFER | |
130 | T1, DCA BEGIN /TEMPORARY | |
131 | L7410, SKP | |
132 | ||
133 | TVERSION="A&77 | |
134 | \fSCOPE, TVERSION | |
135 | BEGIN, JMS SAVE /ADDRESS MUST BE EVEN | |
136 | AND L70 /GET DATA FIELD OF BUFFER | |
137 | TAD KCDF | |
138 | DCA SCDF | |
139 | KCC | |
140 | RDF /GET DATA FIELD | |
141 | TAD FULL | |
142 | DCA XCIF | |
143 | X, TAD I SCOPE /GET FUNCTION WORD | |
144 | CLL RAL | |
145 | AND L7700 /GET # OF PAGES | |
146 | ISZ SCOPE | |
147 | SNA | |
148 | JMP OVERX | |
149 | TAD I SCOPE /ADD IN BUFFER START | |
150 | DCA BUFEND /TO GET END OF BUFFER | |
151 | TAD I SCOPE /GET BUFFER START | |
152 | DCA BUFFER /[RESTRICTION: IT MUST BE EVEN] | |
153 | CDF 0 | |
154 | TAD I BETA | |
155 | DCA SAVE /SAVE CONTENTS OF BETA REGISTER | |
156 | \f/MAIN LOOP - GET CHARACTERS AND CALL DISPLAY ROUTINE | |
157 | ||
158 | NEW, LAS /LINE COUNT FROM SWITCH REGISTER | |
159 | DCA LINKNT | |
160 | DCA I BETA /GO TO LEFT MARGIN | |
161 | TAD BUFFER | |
162 | DCA BPTR /POINT TO BEGIN OF BUFFER | |
163 | TAD YINIT | |
164 | DCA YCOORD /GO TO TOP OF SCREEN | |
165 | ENTRY, JMS DISP /DISPLAY 3D CHAR ( ALSO SETS DF) | |
166 | TAD BPTR | |
167 | CMA CLL | |
168 | TAD BUFEND /COMPARE BUFFER PTR WITH BUFFER END | |
169 | SNL CLA /AT END OF BUFFER? | |
170 | JMP FULL /YES - LINK OFF AT FULL MEANS EXIT | |
171 | ROTT1, RTL /NOTE LINK=1 IF WE FELL INTO HERE! | |
172 | RTL /ROTATE HI ORDER BITS INTO SHIFT REG | |
173 | SPA /TEST FOR SHIFT REGISTER FULL | |
174 | JMP ENTRY /YES - GO DIAPLAY IT | |
175 | DCA T1 /RESAVE SHIFT REGISTER | |
176 | TAD I BPTR /GET NEXT BUFFER WORD | |
177 | JMS DISP /DISPLAY LOW-ORDER | |
178 | TAD I BPTR | |
179 | ISZ BPTR /BUMP PTR | |
180 | / NOP | |
181 | AND L7410 /GET HIGH ORDER - THE 10 IS HARMLESS | |
182 | CLL RAL | |
183 | TAD T1 /ADD HIGH ORDER TO SHIFT REGISTER. | |
184 | JMP ROTT1 /INVOLUTED CODE. | |
185 | \f/DISPLAY SUBROUTINE - DISPLAYS A CHARACTER | |
186 | ||
187 | DISP, 0 | |
188 | KCDF, CDF 0 | |
189 | YINIT, AND L177 | |
190 | SNA | |
191 | JMP SCDF /IGNORE NULLS | |
192 | TAD L7640 | |
193 | CLL CML | |
194 | TAD L100 /CHECK WHETHER THE CHARACTER | |
195 | SZL /IS OUTSIDE OF THE RANGE [40,137] | |
196 | JMP UGH /YES - SUBSTITUTE SPACE OR L.F. | |
197 | CLL RAL | |
198 | MAGIC, TAD CBASE /ADD IN BASE ADDR | |
199 | DCA RIGHT /GET DISPLAY BIT PATTERN PTR | |
200 | TAD I RIGHT | |
201 | DCA LEFT /GET LEFT HALF OF DISPLAY BITS | |
202 | ISZ RIGHT | |
203 | TAD I RIGHT | |
204 | DCA RIGHT /GET RIGHT HALF | |
205 | TAD YCOORD /PUT ORDINATE IN AC | |
206 | LINC | |
207 | YINC, 1760 /DSC I | |
208 | LEFT, 0 /DISPLAY LEFT HALF | |
209 | 1760 /DSC I | |
210 | RIGHT, 0 /DISPLAY RIGHT HALF | |
211 | CLR | |
212 | ESF /SMALL CHARACTERS! | |
213 | PDP | |
214 | ISZ I BETA /LEAVE A BISSEL SPACE | |
215 | TAD I BETA /GET ABSCISSA | |
216 | TAD LINEND /COMPARE WITH RIGHT MARGIN | |
217 | L7700, SMA CLA /AT RIGHT EDGE OF SCREEN? | |
218 | JMP NEWLIN /YES, GO TO NEXT LINE | |
219 | SCDF, 6001 /NO, SET PROPER DF | |
220 | JMP I DISP /RETURN | |
221 | \f/DISPLAY ROUTINE CONTINUED | |
222 | ||
223 | UGH, TAD L26 /CHECK FOR LINE FEED | |
224 | LINEND, RTR /OR FORM FEED (LINK=0!) | |
225 | L7640, SZA CLA | |
226 | JMP MAGIC /OTHER CONTROL CHARS PRINT BLNK | |
227 | NEWLIN, DCA I BETA /BACK TO LEFT MARGIN | |
228 | TAD YCOORD | |
229 | TAD YINC | |
230 | DCA YCOORD /MOVE DOWN TO NEXT LINE | |
231 | ISZ LINKNT /AT BOTTOM OF SCREEN? | |
232 | JMP SCDF /NO | |
233 | CLL CLA CMA RAL /TAKE QUOT ON DIV BY 2 | |
234 | AND BPTR /AND LEAVE IN AC | |
235 | FULL, CIF CDF 0 /YES | |
236 | KSF /GO TO NEXT SCOPE PAGE? | |
237 | JMP NEW /NO, REFRESH | |
238 | DCA BUFFER /GET NEW BUFFER 'START' | |
239 | SZL /END OF BUFFER ? | |
240 | JMP NOW /NO, REFRESH | |
241 | TAD SAVE | |
242 | DCA I BETA /RESTORE BETA REGISTER | |
243 | OVERX, CLA STL RAL IAC /ADD 3 | |
244 | TAD SCOPE /TO RET ADDRESS | |
245 | DCA SCOPE | |
246 | XCIF, CHRTBL-BEGIN-1 /RESTORE INST FIELD & DATA FIELD | |
247 | JMP I SCOPE /LEAVE | |
248 | L177, 177 | |
249 | L100, 100 | |
250 | NOW, KRB | |
251 | / AND L177 | |
252 | TAD M3 | |
253 | SZA CLA | |
254 | JMP NEW | |
255 | JMP I .+1 | |
256 | 7605 | |
257 | L70, 70 | |
258 | M3, -203 /** TEMP | |
259 | /BETTER STUFF, PRINTS ^C | |
260 | /NOW, TAD L7600 | |
261 | / KRS | |
262 | / TAD M7603 | |
263 | / SZA CLA | |
264 | / JMP NEW | |
265 | / JMP I L7600 | |
266 | /L7600, 7600 | |
267 | /M7603, -7603 | |
268 | PAGE | |
269 | \f/THE TABLE OF PATTERN WORDS BEGINS HERE | |
270 | ||
271 | CHRTBL, 0000; 0000 /SPACE | |
272 | 7500; 0000 /! | |
273 | 7000; 0070 /" | |
274 | 7714; 1477 /# | |
275 | 5721; 4671 /$ | |
276 | 6661; 4333 /% | |
277 | 5166; 0526 /& | |
278 | 0000; 0070 /' | |
279 | 3600; 0041 /( | |
280 | 4100; 0036 /) | |
281 | 2050; 0050 /* | |
282 | 0404; 0437 /+ | |
283 | 0500; 0006 /, | |
284 | 0404; 0404 /- | |
285 | 0001; 0000 /. | |
286 | 0601; 4030 // | |
287 | 4536; 3651 /0 | |
288 | 2101; 0177 /1 | |
289 | 4523; 2151 /2 | |
290 | 4122; 2651 /3 | |
291 | 2414; 0477 /4 | |
292 | 5172; 0651 /5 | |
293 | 1506; 4225 /6 | |
294 | 4443; 6050 /7 | |
295 | 5126; 2651 /8 | |
296 | 5122; 3651 /9 | |
297 | 2200; 0000 /: | |
298 | 4601; 0000 /; | |
299 | 2410; 0042 /< | |
300 | 1212; 1212 /= | |
301 | 4200; 1024 /> | |
302 | 4020; 2055 /? | |
303 | 4136; 3656 /@ | |
304 | 4477; 7744 /A | |
305 | 5177; 2651 /B | |
306 | 4136; 2241 /C | |
307 | 4177; 3641 /D | |
308 | 4577; 4145 /E | |
309 | 4477; 4044 /F | |
310 | 4136; 2645 /G | |
311 | 1077; 7710 /H | |
312 | 7741; 0041 /I | |
313 | 4142; 4076 /J | |
314 | 1077; 4324 /K | |
315 | 0177; 0301 /L | |
316 | 3077; 7730 /M | |
317 | 3077; 7706 /N | |
318 | 4177; 7741 /O | |
319 | 4477; 3044 /P | |
320 | 4276; 0376 /Q | |
321 | 4477; 3146 /R | |
322 | 5121; 4651 /S | |
323 | 4040; 4077 /T | |
324 | 0177; 7701 /U | |
325 | 0176; 7402 /V | |
326 | 0677; 7701 /W | |
327 | 1463; 6314 /X | |
328 | 0770; 7007 /Y | |
329 | 4543; 6151 /Z | |
330 | 4177; 0000 /[ | |
331 | 3040; 0106 /\ | |
332 | 0000; 7741 /] | |
333 | 2000; 2076 /^ | |
334 | 1604; 0404 /_ | |
335 | ||
336 | $ | |
337 | \f |