1 /25 OS/12 SCOPE HANDLER
11 /COPYRIGHT (C) 1974,1975 BY DIGITAL EQUIPMENT CORPORATION
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.
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.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
50 / THIS ROUTINE WAS WRITTEN VERY HASTILY.
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:
59 /1. TABS SHOULD BE HANDLED CORRECTLY.
61 /2. FORM FEEDS SHOULD SIGNAL A NEW
62 / SCOPE PAGE. [BRANCH TO LOCATION 'FULL']
64 /3. VERTICAL TABS SHOULD BE TREATED AS
67 /4. THE HANDLER SHOULD RETURN AN ERROR ON READ.
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.
74 /6. CTRL/Z SHOULD BE CHECKED FOR AND SIGNIFY
75 / END OF BUFFER. [BRANCH TO 'FULL' WITH
78 /7. THE DISPLAY ALGORITHM SHOULD BE IMPROVED
79 / SO THAT THERE IS LESS FLICKER.
80 \f/MORE FEATURES TO BE ADDED
82 /8. THE RESTRICTION THAT THE USER'S BUFFER
83 / START AT AN EVEN ADDRESS IS USELESS
84 / AND SHOULD BE REMOVED.
86 /9. THE STATUS OF THE SPECIAL FUNCTIONS
87 / REGISTER SHOULD BE SAVED AND RESTORED
90 /10. WHEN ANOTHER LOCATION IS FOUND, THE HANDLER
91 / SHOULD BE ABLE TO DETECT PARITY ^C
93 /11. SENSE SWITCH 0 SHOULD BE USED TO
94 / SPECIFY SMALL OR LARGE SIZE CHARACTERS.
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
105 DEVICE VR12 /DEVICE NAME
106 DEVICE TV /HANDLER NAME
108 4000+SCOPE-200 /2-PAGE FLAG AND RELATIVE ENTRY PT
111 / TWO PAGE SCOPE DEVICE HANDLER
112 / PAGE INDEPENDENT AND REUSABLE
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
135 BEGIN, JMS SAVE /ADDRESS MUST BE EVEN
136 AND L70 /GET DATA FIELD OF BUFFER
143 X, TAD I SCOPE /GET FUNCTION WORD
145 AND L7700 /GET # OF PAGES
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]
155 DCA SAVE /SAVE CONTENTS OF BETA REGISTER
156 \f/MAIN LOOP - GET CHARACTERS AND CALL DISPLAY ROUTINE
158 NEW, LAS /LINE COUNT FROM SWITCH REGISTER
160 DCA I BETA /GO TO LEFT MARGIN
162 DCA BPTR /POINT TO BEGIN OF BUFFER
164 DCA YCOORD /GO TO TOP OF SCREEN
165 ENTRY, JMS DISP /DISPLAY 3D CHAR ( ALSO SETS DF)
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
181 AND L7410 /GET HIGH ORDER - THE 10 IS HARMLESS
183 TAD T1 /ADD HIGH ORDER TO SHIFT REGISTER.
184 JMP ROTT1 /INVOLUTED CODE.
185 \f/DISPLAY SUBROUTINE - DISPLAYS A CHARACTER
191 JMP SCDF /IGNORE NULLS
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.
198 MAGIC, TAD CBASE /ADD IN BASE ADDR
199 DCA RIGHT /GET DISPLAY BIT PATTERN PTR
201 DCA LEFT /GET LEFT HALF OF DISPLAY BITS
204 DCA RIGHT /GET RIGHT HALF
205 TAD YCOORD /PUT ORDINATE IN AC
208 LEFT, 0 /DISPLAY LEFT HALF
210 RIGHT, 0 /DISPLAY RIGHT HALF
212 ESF /SMALL CHARACTERS!
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
221 \f/DISPLAY ROUTINE CONTINUED
223 UGH, TAD L26 /CHECK FOR LINE FEED
224 LINEND, RTR /OR FORM FEED (LINK=0!)
226 JMP MAGIC /OTHER CONTROL CHARS PRINT BLNK
227 NEWLIN, DCA I BETA /BACK TO LEFT MARGIN
230 DCA YCOORD /MOVE DOWN TO NEXT LINE
231 ISZ LINKNT /AT BOTTOM OF SCREEN?
233 CLL CLA CMA RAL /TAKE QUOT ON DIV BY 2
234 AND BPTR /AND LEAVE IN AC
236 KSF /GO TO NEXT SCOPE PAGE?
238 DCA BUFFER /GET NEW BUFFER 'START'
242 DCA I BETA /RESTORE BETA REGISTER
243 OVERX, CLA STL RAL IAC /ADD 3
244 TAD SCOPE /TO RET ADDRESS
246 XCIF, CHRTBL-BEGIN-1 /RESTORE INST FIELD & DATA FIELD
259 /BETTER STUFF, PRINTS ^C
269 \f/THE TABLE OF PATTERN WORDS BEGINS HERE
271 CHRTBL, 0000; 0000 /SPACE