| 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 |