software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / VR12.PA
CommitLineData
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
121L26, 26
122SAVE, 0 /BETA REG SAVE LOC - MAY BE BETA REG
123LINKNT, TAD SAVE /COUNT OF # OF LINES
124YCOORD, AND SCDF /DISPLAY ORDIANTE
125BETA, DCA . /8-MODE ADDRESS OF BETA REGISTER 1
126CBASE, TAD SAVE /POINTS TO CHARACTER DISPLAY TABLE
127BUFEND, TAD XCIF /END OF BUFFER
128BPTR, DCA CBASE /POINTS INTO BUFFER
129BUFFER, TAD X /BEGINNING OF BUFFER
130T1, DCA BEGIN /TEMPORARY
131L7410, SKP
132
133 TVERSION="A&77
134\fSCOPE, TVERSION
135BEGIN, 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
143X, 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
158NEW, 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
165ENTRY, 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
171ROTT1, 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
187DISP, 0
188KCDF, CDF 0
189YINIT, 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
198MAGIC, 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
207YINC, 1760 /DSC I
208LEFT, 0 /DISPLAY LEFT HALF
209 1760 /DSC I
210RIGHT, 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
217L7700, SMA CLA /AT RIGHT EDGE OF SCREEN?
218 JMP NEWLIN /YES, GO TO NEXT LINE
219SCDF, 6001 /NO, SET PROPER DF
220 JMP I DISP /RETURN
221\f/DISPLAY ROUTINE CONTINUED
222
223UGH, TAD L26 /CHECK FOR LINE FEED
224LINEND, RTR /OR FORM FEED (LINK=0!)
225L7640, SZA CLA
226 JMP MAGIC /OTHER CONTROL CHARS PRINT BLNK
227NEWLIN, 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
235FULL, 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
243OVERX, CLA STL RAL IAC /ADD 3
244 TAD SCOPE /TO RET ADDRESS
245 DCA SCOPE
246XCIF, CHRTBL-BEGIN-1 /RESTORE INST FIELD & DATA FIELD
247 JMP I SCOPE /LEAVE
248L177, 177
249L100, 100
250NOW, KRB
251/ AND L177
252 TAD M3
253 SZA CLA
254 JMP NEW
255 JMP I .+1
256 7605
257L70, 70
258M3, -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
271CHRTBL, 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