1 /PRINT DM-II V2.0 PRINTER RESIDENT CODE 2 / 3 /239 EMcD 24-Sep-85 Dutch and Spanish Xlations (conditional) 4 /238 EMcD 14-SEp-85 Nordic translations 5 /237 MART 2 JUL 85 ALLOW PLWIDE TO WORK IN BOTH DIRECTIONS 6 /236 Mart 28 Jun 85 Get rid of some LQPSE (not supported 3.0) 7 / to make room for Tech Char Required Space 8 /235 Mart 25 June85 change location of OLDHIT to page zero 9 /234 mart 12 jun 85 change cross field call to prchar 10 / and add an escape sequence to reset modes 11 /233 Mart 5 june 85 initialise PLNRCS to 72 12 /232 mart 25 may 85 Change location of PUM mode flag and initialise 13 /231 Mart 15 May 85 Allow cross field access to PRCHAR from SYS 14 /230 MART 3 MAY 85 add PUM mode flag 15 /229 Mart 2 may 85 cross field call to prescs and more esc seqences 16 /228 MART 24 APR 85 OVERLAY STARTUP SECTION IN DSKHND 17 / with 8 bit fallback code for LQPs 18 /227 Mart 26-mar-85 Allow 8 bit output and BLASTR hook 19 /226 rcme 18-MAR-85 Enable differentiation of LA100 and LA100PC 20 / by VTWHO code. Also reserve hole space in 21 / read buffer. 22 / 23 / ------------------------All subsequent mods to V2.0 and earlier 24 / 25 /225 HLP 22-JAN-85 Fix hang caused by re-entering PROV when 26 / comm errors occur during disk reading 27 /224 HLP 10-JAN-85 Reset PRTABF at beginning of each line 28 /223 HLP 08-JAN-85 Fix ap bug induced when combined LSPACE 29 / by reinstating LSPAC2 etc. 30 /222 HLP 03-JAN-85 Combine LSPAC2 and LSPACE 31 / Delete conversion of leading spc to tabspc 32 / Rework PRPCHR again to handle tab spc and 33 / non tab spc separately 34 / Add a space preceding HPA command to 35 / trigger underline! 36 / Pick up attribute of leading spaces(#321) 37 / Add variables for tab fixes 38 / Delete NCONDOR condx & L4 support 39 / Make BLKBOX not output nulls 40 /221 HLP 14-DEC-84 Fix parser so DCS does not write over 41 / everything! 42 /220 HLP 08-DEC-84 192 Fix PCTMRS so no LQPSE 43 /219 HLP 03-DEC-84 191 Reimplement reset printer PCTMRS 44 /218 HLP 26-NOV-84 Fix parser so not confused by DDCHST 45 /217 HLP 06-NOV-84 Add PNRSVL page number reset value 46 / Fix old TW justification bug also WPSV2-361 47 /216 HLP 16-OCT-84 19XZ Fix indent tab bug 276 48 /215 HLP 12-OCT-84 Add PFS (Page Format Select) command to PRESCS 49 / Expand mask to allow for 10 fonts 50 / Move PRJSPC so new text processor can use TTYIN 51 / Add PRFPFS PFS flag 52 /214 HLP 24-SEP-84 19W Fix range check fix 53 / LN03 Driver integration 54 /213 HLP 18-SEP-84 19V Range Limit Error Codes 55 / PLCHBS was not detecting BS correctly 56 /212 HLP 28-AUG-84 Add RULRCM, RULRLM, RULRRM for centering 57 /211 HLP 16-AUG-84 Changes for LN03 driver 58 /209 HLP 02-AUG-84 Fix ppnl tabs LQP02 59 /208 HLP 25-JUL-84 Changes for sixel graphics print controls 60 /207 HLP 24-JUL-84 Fix DD CHST blank line problem 61 /206 HLP 20-JUL-84 Change PLCHBS for tech characters 62 /205 LJJ 13-JUL-84 Fixes for \d\p\s expansion/contraction bug 63 /204 HLP 05-JUL-84 Move PLSPCX and PLREST from resident to overlay 64 /203 HLP 09-JUL-84 Delete PRQPMU 65 /202 HLP 06-JUL-84 Technical character justification fix PLCHBS 66 /201 HLP 02-JUL-84 Change AND P177 to AND (2177 in ESCST 67 / 29-JUN-84 Change IDANSW philosophy 68 /200 HLP 18-JUN-84 Add escape seqs for technical chrs 69 /199 LJJ 14-JUN-84 Delete PRYEAR and PRMTDY (new \d method) 70 /198 HLP 13-JUN-84 Increase multicolumns from 10 to 20 71 /197 HLP 12-JUN-84 Save 10 locations in BLKBOX 72 /196 HLP 10-JUN-84 Make ASCOUT add 4000 bit 73 /195 HLP 08-JUN-84 Add escape seq for absolute col posn PCCOLA 74 / Add PRQPMU variable for print margin units 75 /194 HLP 31-MAY-84 Move PRJL5A to overlay 76 / Fix vertical motion to LQPSE broken on 189 77 /193 HLP 30-MAY-84 Add code for required space 78 / Add escape sequence to set quality mode 79 / Move CSTRNG, reenable L4 for DECmate-I 80 / Bugfix calling OBJUSL on LQPs (critical hang) 81 /192 HLP 29-MAY-84 Recognize LN03 as an LA100 82 /191 HLP 25-MAY-84 Fix problem clearing VSTACK; multiple errors 83 / (cover,pause,ribbon caused program hlt) 84 /190 HLP 15-MAY-84 More changes for DD HOST1 85 /189 HLP 14-MAY-84 Initial Changes for adding DD HOST1 86 /188 HLP 11-MAY-84 F and N rulers, EX in print menu DP changes 87 / ESMVV vertical move routine used by ALL printers 88 /187 HLP 10-MAY-84 Change XXSTGN names to match G0 and G1 properly 89 /186 HLP 30-APR-84 Restructure justificationn overlays 90 / Eliminate thrashing when DD HOST 91 /185 HLP 25-APR-84 Change end of document scheme to 92 / detect LQP02 done with D2XONF 93 / ... delete SNDCHR routine--ADD PCTMID 94 / FOUND BUG near VMALF--MISSING CDF 95 / would clobber 11600,11601 if 96 / LQP02 reported error 21,23, or 29 97 /184 HLP 24-APR-84 Free up HS2IN 98 /183 HLP 20-APR-84 Changes for RDFIO to use PRQRX 99 / Concatenate R2FILP to this module 100 /182 HLP 16-APR-84 Fixups due to common QBLK 101 / Add British-US date flag PRDTFG 102 /181 HLP 13-APR-84 Move document header storage to R2FILP 103 /180 HLP 10-APR-84 Add JEXIT code so print field can be used by other jobs 104 /179 HLP 05-APR-84 Replace RPSTX by STSTTS in all places 105 /178 HLP 28-MAR-84 Do not include overlay areas in binary 106 /177 HLP 27-MAR-84 Fix bold interpretation initialization bug 107 /176 HLP 14-MAR-84 Move justification variables to page zero 108 / Add comments about system initialization code 109 / moved to overlay area (runs at boot time) 110 /175 HLP 09-MAR-84 Move TSTFUL to WPSYS 111 /------------------SDC Submission DECmate-II V1.5---------------------- 112 /174 HLP 29-FEB-84 Change LPIND to function only for LA50 113 / Use GDH's new TSTFUL etc. 114 / Fix extra CSI in table select esc seq 115 /173 HLP 10-FEB-84 Add label MISCT1 for R2FILP 116 / Add table select escape sequence PCTABL 117 / Make PCDPIT and PCTABL work if printing inh'd 118 / Delete L4 functions in FLABUZ for space rsns DM-I 119 /172 HLP 05-FEB-84 Change LPONLN for 13;2 and 13;3 to ASF01 120 /171 WCE 16-JAN-84 Rework FLASH-BUZZ to correct status line bug 121 /170 HLP 16-JAN-84 Rework get character routines for better 122 / processing of controls 123 /169 HLP 11-JAN-84 Generalize ID code logic so use secondary 124 / attributes only where we need more info 125 /168 HLP 04-JAN-84 Fix ASF detection for LQPSE (DECII-156) 126 /167 HLP 27-DEC-83 Call PRSTUP in PRESET (ref DECII-121) 127 / Modify STSTTS not to report duplicate errors 128 / Delete PFLASH and PBUZZ and refs 129 /166 HLP 20-DEC-83 Move overlay area to beginning of printer so can 130 / save 3 blocks on system disk 131 /165 HLP 16-DEC-83 Save some space in PRESCS so can make PROV 132 / detect illegal returns 133 / Modify PRESCS not to send certain escape 134 / sequences to LQPSE 135 /164 HLP 13-DEC-83 Modify ESC02 again so only CHRSET and FONT 136 / esc seqs go out when printing inhibited 137 /163 HLP 08-DEC-83 Detect EOF within Control block indicating 138 / missing end print control 139 /162 HLP 06-DEC-83 Allow ESC02 to work if printing inhibited 140 / Make PROV more general 141 / Add PTSTST to test for user stop 142 /161 HLP 22-NOV-83 Fix DD HOST hang caused in edit 158 143 /160 HLP 21-NOV-83 Allow String Finals for CHRSET 144 /159 HLP 21-NOV-83 Make LPIND work for DD=HOST 145 /158 HLP 17-NOV-83 Move all overlays to WPRTOV module 146 / Send no escape seqs to HOST 147 /157 HLP 14-NOV-83 Move READCH to R2FILP 148 /156 HLP 11-NOV-83 Reorganize FLABUZ 149 /155 HLP 04-NOV-83 Patch PRRSST to disable status report request 150 /154 HLP 01-NOV-83 Bugfix FONT selection in LPBI 151 /153 HLP 29-OCT-83 Bugfixes: 152 / Restore prefetch of next chr at top of page 153 / necessary for proper function of RESET in 154 / To/From 155 / LA34 PM bug 156 / LQP02 OLC overlay loading problem 157 / DP overlay thrashing fixed 158 /152 HLP 22-OCT-83 Installing Bold Interpretation code into 159 / LPLINE code 160 /151 HLP 21-OCT-83 Add escape sequences for G1 and G2 161 /150 HLP 12-OCT-83 Put Overlay Areas on Block Boundaries 162 / so we can soon save 3 blocks on disk 163 / Add PRBIF etc. to page zero 164 /149 HLP 09-OCT-83 Fix Draft Printer Overlay load 165 /148 HLP 04-OCT-83 Fix Adjacent super/sub in justified text bug 166 /147 HLP 29-SEP-83 Fix DECII-7; enable extended reports 167 / after any visit to printer stop code 168 /146 HLP 28-SEP-83 Fix DECII-9 LQPSE not working 169 / LQPSE replacement chr routine not loaded when called 170 / Make another OLC overlay for LQPSE 171 /145 HLP 17-AUG-83 Reword ESC02 routines 172 /144 HLP 11-AUG-83 Changed order of processing so SE stop 173 / processing takes place before reading anything 174 /143 HLP 23-JUN-83 Restructure overlays so there can be 175 / up to 16 overlay areas and 176 / up to 256 overlays which can load into given area 177 / Delete loading of printer handler--serial 178 / handler always resident in WPSYS, loaded 179 / at boot time 180 / General cleanup 181 /142 WCE 17-AUG-83 Delete redefinition of "RXE??" handler commands 182 /141 WCE 17-AUG-83 Reworte FLABUZ for better use of IOA calls 183 /140 HLP 10-AUG-83 Modify PRTRID so if call with AC=0002 we 184 / check doc dest and set quality mode on 185 / LA50/LA100 186 /139 HLP 02-AUG-83 Add ID for LQP02 emulating printer 187 /135 HLP 22-JUN-83 Fix induced bug where pause became sheet feeder error 188 /134 HLP 21-JUN-83 Further fix Bug #140 so won't print on platen 189 /133 HLP 17-JUN-83 Fix bug in FLABUZ TIME routine which 190 / was causing excessive system overhead, 191 / slowing down to/from and possibly having 192 / other effects 193 /132 HLP 10-JUN-83 Make SQPINP ignore pause if there are 194 / other errors in the same report 195 /131 HLP 07-JUN-83 Add IDANSW flag 196 /130 HLP 06-JUN-83 LQPSE ASF error sets PRSTOP 197 /129 HLP 26-MAY-83 Delete old FLABUZ routine, deconditionalize 198 / new FLABUZ routine on NEWFLABUZ 199 /128 HLP 25-MAY-83 Delete MAXMOV and simplify PRMOVE routine 200 /127 HLP 23-MAY-83 Spooler to reset status if comm error 201 / Comm error to stop printer 202 /126 HLP 12-MAY-83 Improve processing of the CANCEL chr (SQPINP) 203 / Change communications error to code 26 in VERRTB 204 /125 HLP 10-MAY-83 Delete superfluous RABORT routine 205 / Fix PRSTUP routine (missing CLA) 206 /124 GDH 03-MAY-83 Corrected TSTFUL HOST INPUT BUFFER size reference 207 /123 HLP 29-APR-83 Fix justification on draft printers 208 /122 HLP 28-APR-83 Make PRRSST resident 209 / PRRSST resets to 1 if something in queue, else 0 210 / Reorganize PRSTTS and PRSTT2, and their 211 / setting and resetting. See comments at PRSTTS 212 / Delete WS102 conditionals 213 /121 HLP 14-APR-83 Move UNDERL to resident so PCBOLD call near 214 / DONCL1 in overlay will work 215 / (if a variable is referenced in more than 216 / one overlay it should not be in an overlay) 217 / Add PCSTAT status report command for LQPSE 218 /120 HLP 08-APR-83 Make NEWFLABUZ routine light L4 on CONDOR, 219 / display printer status messages once/second 220 /119 HLP 04-APR-83 Moved STSTTS to be in parser section 221 / Added AND P177 to SQPINP for LA120, LA34 222 /118 HLP 01-APR-83 Fix new parser LQPSE status reports 223 /117 HLP 26-MAR-83 Fix draft printer dead key seq underline bug 224 /116 HLP 13-MAR-83 Speed up TW printing 225 /115 HLP 04-MAR-83 Rewrite to report all disk errors 226 /114 HLP 25-FEB-83 Rewrite printer parser 227 /113 HLP 15-FEB-83 Rework to incorporate printer parser 228 / and LPONLN (deleting PRASF and IDFLAG) 229 /112 HLP 14-FEB-83 Conditionalize FLABUZ on NEWFLABUZ (was CONDOR) 230 /111 HLP 24-JAN-83 Change LQP02 right margin from 158 to 330 rel units 231 /110 HLP 14-JAN-83 Fix FLABUZ to display once in editor (it used to) 232 /-------------19-JAN-83-------SDC SUBMISSTION DECmate-II V1.0.0 thru rev 109 233 /109 HLP 28-DEC-82 Move IDSTTM near PRTRID, etc. 234 /108 HLP 14-DEC-82 Move PRSTT2 to PRSTTS+1 (see also WPF1.058) 235 /107 HLP 07-DEC-82 Add IDTMC timout compare variable on page 0 236 /106 HLP 28-NOV-82 Change sheet feeder error code to 24 for LQPSE only 237 /105 HLP 18-NOV-82 Fix for AP-no giving extra pages at end of doc 238 /104 HLP 15-NOV-82 Add PRSTT3 to page zero 239 /103 HLP 12-NOV-82 Change to a calculated slack constant 240 / (LQP02 ignores rollbacks beyond top of page) 241 /102 HLP 15-OCT-82 Move DCA PREVST and hold interrupts in FLABUZ 242 / (Occasionally messages not seen or not cleared) 243 /101 HLP 13-OCT-82 Put PRACTS on page zero so can use in mult ovs 244 /100 GDH 11-OCT-82 Changed FLABUZ to display only once per second. 245 /099 HLP 22-SEP-82 Fixed LQP02 super/subsrcipts at end of lines 246 /D169 DELETED PREVIOUS EDIT HISTORY (PRIOR TO HLP) 247 248 /THESE ARE SOME OF THE PRINTER TYPES /A143 249 LA12=DPMSK /A143 undefined ^ 250 LA34=DPMSK+03 /C169 undefined ^ 251 LA50=DPMSK+MCMSK+XRPMSK+MNMSK+1 /m226 /C188 undefined ^ undefined ^ undefined ^ undefined ^ 252 LA100=DPMSK+MCMSK+XRPMSK+2 /m226 undefined ^ undefined ^ undefined ^ 253 LN03=DPMSK+MCMSK+XRPMSK+MNMSK /m226 /A214 undefined ^ undefined ^ undefined ^ undefined ^ 254 LQP03=LQP02+MNMSK /a226 undefined ^ undefined ^ 255 LA120=DPMSK+MCMSK /A188 undefined ^ undefined ^ 256 257 258 /THESE ARE COMMONLY USED CHARACTERS. 259 260 BS=10 /BACKSPACE 261 TAB=11 /TAB 262 LF=12 /LINE FEED 263 HLF=2412 /HYPHENATED LINE FEED 264 SRET=2012 /SOFT RETURN /A143 265 GNL=55 /SIXEL GRAPHICS NEW LINE CODE /A208 266 FF=14 /FORM FEED 267 BPC=1014 /BEGIN PRINT CONTROL 268 EPC=1414 /END PRINT CONTROL 269 PM=2014 /PAGE MARKER 270 CR=15 /CARRIAGE RETURN AND END DEAD KEY SEQUENCE 271 SO=16 /SHIFT OUT ASCII CODE /A152 272 SI=17 /SHIFT IN ASCII CODE /A200 273 RSTRT=16 /RULER START 274 REND=17 /RULER END 275 ESC=33 /ESCAPE 276 277 SPC=40 /SPACE 278 TSPC=2040 /TAB SPACE 279 RQSP=177 /REQUIRED SPACE (USED BY PRINTER ONLY) /A193 280 BSLH=134 /BACK SLASH 281 UNDL=137 /UNDERLINE 282 283 284 /THESE ARE THE TERMINATORS OF THE ESCAPE SEQUENCES USED BY THE PRINTER. 285 286 NLQPSE=4000 /IF THIS CODE IS SET NO OUTPUT WILL OCCUR TO THE LQPSE /A165 287 /FOR THIS SEQUENCE /A165 288 289 PCSTAT="0&177 /LQPSE REQUEST STATUS--OTHERS ENABLE REPORTS & SEND STATUS/A121 290 PCSTG0="1&177+NLQPSE /ENABLE G0 /C165 291 PCSTG1="2&177+NLQPSE /ENABLE G1 /C165 292 PCSTFN="3&177+NLQPSE /ENABLE FONTS (ACTUALLY ANY ATTRIBUTE) /A151 /C165 293 PCDPIT="4&177+NLQPSE /DRAFT PRINTER PITCH /A151 /C165 294 PCTABL="5&177 /LQP02 TABLE SELECT /A173 295 296 / NOTE: THE FOLLOWING 2 CODES ARE IDENTICAL BUT HAVE DIFFERENT /A195 297 / USES AS EXPLAINED IN THE COMMENTS /A195 298 PCREST="6&177 /LQPSE RESTORE 299 PCTMRS="6&177+NLQPSE /RESET PRINTER /C219 300 301 PCTMID="7&177 /REQUEST TERMINAL IDENTIFICATION /A185 302 PCCOLA="8&177 /NOT LQPSE--COLUMN POSITION ABSOLUTE 303 PCMPUP="9&177 /TRANSMIT BUT DO NOT FORCE VERTICAL MOTION 304 PCSQM=":&177+NLQPSE /SET QUALITY MODE (ONLY FROM OVLAY WITH XSTQM) /A193 305 PCMRT=";&177 /TRANSMIT BUT DO NOT FORCE HORIZONTAL MOTION 306 PCSS=74&177+NLQPSE /SEND SS2 OR SS3 /A200 307 PCPROP=75 /ENABLE PROPORTIONAL PRINTING (LQP02 ONLY) /A040 308 PCMFV=">&177 /FORCE ACCUMULATED VERTICAL MOTION 309 PCSUB1="?&177 /USE PRINT POSITION 177--THE FIRST SUBSTITUTE CHARACTER 310 PCSUB2="@&177 /USE PRINT POSITION 40--THE SECOND SUBSTITUTE CHARACTER 311 PCCSIZ="A&177 /SET CHARACTER SIZE 312 PCSPUM="B&177 /SET PUM MODE 313 PCRPUM="C&177 /RESET PUM MODE 314 PCBOLD="D&177 /SET HIT COUNT 315 PCIND="E&177 /SET INDENTATION 316 PCWSIZ="F&177 /SET SPACE SIZE 317 PCPLU="G&177 /HALF LINE REVERSE /A193 318 PCPSIZ="H&177 /SET PAGE SIZE 319 PCPLD="I&177 /HALF LINE FORWARD /A193 320 PCTRAY="J&177 /SELECT TRAY FOR CUT SHEET FEEDER 321 PCTCSI="K&177+NLQPSE /TECHNICAL CHARACTER SET INIT /A200 322 PCGR="L&177+NLQPSE /BEGIN SIXEL GRAPHICS /A208 323 PCGREX="M&177+NLQPSE /EXIT SIXEL GRAPHICS /A208 324 PCSGR="N&177 /SELECT GRAPHICS RENDITION (BOLD, UNDERLINE, FONT)/A211 325 /MUST *** NOT *** HAVE NLQPSE ATTRIBUTE AS IS /A211 326 /SOMETIMES EXECUTED AS A HARMLESS AND INSTRUCTION/A211 327 PCPFS="O&177 /PAGE FORMAT SELECT /A215 328 PCIVPR="P&177 /increment vertical position relative /a230 329 PCDVPR="Q&177 /decrement vertical position relative /a230 330 PCIHPR="R&177 /increment horizontal position relative /a230 331 PCDHPR="S&177 /decrement horizontal position relative /a230 332 PCRSET="T&177 /reset MODES /a234 333 334 /THESE ARE FREQUENTLY USED CONSTANTS 335 336 PRMSLK=60 /THE MAXIMUM AMOUNT TO MOVE WHEN GOING IN A REVERSE DIRECTION TO 337 /CORRECT SLACK IN PAPER. USED IN SUPER SCRIPT AND MULTI COLUMN 338 /D128 DELETE MAXMOV SINCE IT IS A REMNANT FROM THE PARALLEL INTERFACE 339 PRNLSZ=10 /NORMAL LINE SIZE (1/6 INCH) 340 PRNHL=4 /NORMAL HALF LINE SIZE (1/12) INCH 341 342 343 /THESE ARE THE CIF AND CDF INSTRUCTIONS USED IN THE CODE. 344 345 CIFMYF=CIFPRT /CHANGE INSTRUCTION FIELD TO THIS FIELD undefined ^ 346 CDFMYF=CDFPRT /CHANGE DATA FIELD TO THIS FIELD undefined ^ 347 CDFQUE=CDFMNU /QUEUE FIELD IS FIELD 2 /A069 undefined ^ 348 349 FIELD 0 350 351 /THIS IS THE PRINTER JOB CONTROL BLOCK. 352 353 *PRJOB undefined ^ 354 000000 0000 0 355 CDFPRT&70^2 undefined ^ 000001 0000 356 000002 0000 0 357 000003 4600 FLD3R /PRINTER JOB STARTS HERE (ONCE ONLY CODE) 358 000004 0000 0 359 360 361 FIELD CDFPRT&70%10 /CHOOSE THE PROPER FIELD undefined ^ 362 363 /VALUES ON PAGE ZERO ARE INITIALIZED BY ONCE ONLY CODE NEAR FLD3R /A166 364 /THEY ARE *** NOT *** WRITTEN OUT /A166 365 366 /******************************************************************** 367 / 368 / THE FOLLOWING LOCATIONS ARE THE LOCATIONS ON THE LOWER HALF 369 / OF PAGE ZERO THAT THE PRINTER CODE DOES NOT USE. WE NOW 370 / REV176 BEGIN TO USE THEM 371 / 372 * 0 373 000000 0000 GRALNC, 0 / NUMBER OF GRAPHIC NEW LINES ENCOUNTERED 374 * 1 375 000001 0000 PRFPFS, 0 / PFS SELECTION FLAG /A215 376 * 2 377 000002 0000 PNRSVL, 0 / PAGE NUMBER RESET VALUE /A217 378 * 3 379 * 4 380 * 5 381 * 6 382 * 7 383 / TTYIN IS CLOBBERED BY NEW TEXT PROCESSOR /A215 384 * XLTIN&177 undefined ^ 385 000000 0000 PRJPOS, 0 / THE NUMBER OF JUSTIFIABLE INTER POSITION SPACES 386 * HLTFLG&177 undefined ^ 387 000000 0000 PRJSPC, 0 / THE NUMBER OF JUSTIFIABLE SPACES 388 * UDKOPS&177 undefined ^ 389 000000 0000 PRLBCT, 0 / USED TO SAVE PLCNT THROUGH VARIOUS PASSES 390 * DEQUE&177 undefined ^ 391 000000 0000 PRRCH, 0 / THE VALUE IN PRINT UNITS OF THE RIGHT END OF LINE 392 * FRKINT&177 undefined ^ 393 000000 0000 PLPFLG, 0 / ZERO IFF PROPORTIONAL PRINTING IN EFFECT 394 * FRKXIT&177 undefined ^ 395 000000 0000 PLPS, 0 / THE NUMBER OF EXTRA PRINT UNITS TO ADD TO EACH 396 / JUSTIFIABLE SPACE 397 * FRKCHN&177 undefined ^ 398 000000 0000 PLSS, 0 / THE NUMBER OF EXTRA PRINT UNITS TO ADD TO EACH 399 / JUSTIFIABLE INTERPOSITION SPACE 400 * 44 401 000044 0000 PLBOLD, 0 / SET TO 400 IF SP YES AND PROPORTONAL PRINTING LQP02 402 * 45 403 000045 0000 PRJRET, 0 / THE TYPE OF RETURN IN THE LINE--ZERO IF HARD RET, 404 / NON ZERO IF SOFT (WORD WRAPPED) 405 * 46 406 000046 0000 RULRCM, 0 /COLUMN OF A CENTERING MARK IN A RULER /A210 407 * 47 408 000047 0000 RULRLM, 0 /COLUMN OF AN F,L,N, OR D IN RULER (LEFT MARGIN) /A212 409 * PRPUMM 410 000000 0000 PRPUMM, 0 / the PUM mode flag /a230 411 * 51 412 000051 0000 OLDHIT, 0 / oldhit flag for LQP's /a235 413 * 52 414 * 53 415 * 54 416 * 55 417 * 56 418 * 57 419 * 60 420 000060 0000 RULRRM, 0 /COLUMN OF AN R OR J IN RULER (RIGHT MARGIN) /A212 421 * MNUCAL&177 undefined ^ 422 000000 0000 PRMCMG, 0 /COLUMN OF MULTICOLUMN MARGIN /A212 423 * MUBASE&177 undefined ^ 424 000000 0000 PRJENB, 0 / COUNT ENABLE FLAG--IS SET UNTIL THE RIGHTMOST TAB 425 / IS FOUND, WHEREUPON IT IS CLEARED 426 / ALSO DOUBLES AS THE DEFICIENCY VARIABLE USED IN 427 / JUSTIFICATION AND IN THE DIVISION ROUTINE 428 * TIMCAL&177 undefined ^ 429 * OLAYCL&177 undefined ^ 430 * FILEIO&177 undefined ^ 431 / IOACAL IS DONE BY FLABUZ 432 * INACAL undefined ^ 433 * NXACAL undefined ^ 434 * STCCAL undefined ^ 435 * CVDCAL undefined ^ 436 * DIGCAL undefined ^ 437 * PGSWAP&177 undefined ^ 438 439 *PRSTOP 440 000000 0000 PRSTOP, 0 /THE STOP FLAG 441 000001 0000 PRACTN, 0 /THE USER SUPPLIED STOP ACTION 442 000002 0000 PRACTV, 0 /THE ARGUMENT ASSOCIATED WITH THE STOP ACTION 443 444 /***********************************************************************/ 445 / / 446 000003 0000 PRSTTS, 0 /THE CURRENT PRINTER STATUS / 447 / THIS LOCATION IS SET AS FOLLOWS: / 448 / 1. IF 0000 IT MAY BE SET TO 0001 (BUSY)(GETDC) / 449 / 2. IF 0000 OR 0001 IT MAY BE SET TO AN ERROR CODE (PRSTUP) / 450 / 3. IF AN ERROR DECLARED BY THE SPOOLER IT MAY BE RESET / 451 / TO 0000 (IF QUEUE IS EMPTY) ELSE 0001 (PRRSST) / 452 / 4. IF AN ERROR FROM PRINTER THEN IT MAY BE RESET IF THE / 453 / PRINTER REPORTS NO ERROR ANYMORE (PRESET) / 454 / / 455 /***********************************************************************/ 456 / / 457 000004 0000 PRSTT2, 0 /SECOND PRINTER ERROR STATUS CODE / 458 / THIS LOCATION IS SET AND CLEARED AS FOLLOWS: / 459 / 1. IF 0000 IT MAY BE SET TO AN ERROR CODE (STSTTS) / 460 / 2. RESET TO 0000 WHEN ROLLUP OCCURS (PRSTUP) / 461 / 3. RESET TO 0000 OR 0001 IF PRINTER REPORTS NO ERROR / 462 / / 463 /***********************************************************************/ 464 465 000005 0000 PRFNO, 0 /THE FILE NUMBER OF THE PRINTER JOB 466 000006 0000 PRIRFD, 0 /THE FIELD TO READ FROM IN LIST PROCESSING 467 000007 0000 PRIRAD, 0 /THE ROUTINE TO USE IN READING IN LIST PROCESSING 468 000010 0000 PABORT, 0 /THE ABORT FLAG 469 470 000011 0000 LPONLN, 0 / IDENTIFIES TYPE OF PRINTER, FEEDER, ETC /A113 471 000012 0000 PRTID, 0 /PRINTER ID ROUTINE ENTRY POINT /A054 472 /THIS LOCATION IS INITIALIZED BY ONCE ONLY CODE /A166 473 /TO CONTAIN PRTRID /A166 474 475 /THESE ARE COMMONLY USED GLOBAL VARIABLES. 476 477 000013 0000 PREST1, 0 / TEMPORARY USED BY PRESCS / 478 000014 0000 PROVT1, 0 / TEMPORARY USED BY PROV AND PRESCS 479 000015 0000 PROVT2, 0 / TEMPORARY USED BY PROV AND PRESCS 480 481 000016 0000 RDCHAR, 0 /THE LINK TO THE READ ROUTINE WHICH SHOULD BE USED. THE 482 /POSSIBILITIES ARE THE FILE READER (FOR NON-LIST PROCESSING), 483 /THE EDITOR READER (FOR LIST PROCESSING WITHOUT HEADERS OR 484 /FOOTERS), AND THE DISK BUFFER READER (FOR LIST PROCESSING 485 /HEADERS AND FOOTERS). THE VALUE IS ZEROED WHEN THE END OF 486 /THE FILE BEING READ IS FOUND. 487 488 000017 0000 PRRM, 0 /RIGHT MARGIN POSITION SPECIFIED BY RULER IF JUSTIFICATION IS 489 /IN EFFECT; OTHERWISE, IS ZERO 490 491 000020 0000 PRGCBK, 0 /BACKUP LOCATION FOR THE GET CHARACTER ROUTINE 492 493 000021 0000 PRCCH, 0 /POSITION WHERE PRINT HEAD WILL STOP AFTER LINE 494 495 000022 0012 PLNRCS, 12 /NUMBER OF PRINT UNITS PER CHARACTER /a233 496 / initialised by once only code /a233 497 498 000023 0000 PRGSVP, 0 /VERTICAL POSITION ON PAGE RELATIVE TO THE TOP 499 000024 0000 PRGSAP, 0 /ABSOLUTE VERTICAL POSITION ON PAGE RELATIVE TO TOP OF 500 /PHYSICAL PAGE. PRGSVP AND PRGSAP DIFFER ONLY WHEN THE USER 501 /STOPS PRINTING, DOES A NEW PAGE, AND CONTINUES. EVEN THEN, 502 /THEY ONLY DIFFER UNTIL THE NEXT PAGE IS STARTED. 503 000025 0000 PRGSMX, 0 /MAXIMUM VERTICAL POSITION FOR CURRENT TYPE OF PRINTING 504 505 000026 0000 PRRLSZ, 0 /SIZE OF THE LINE AS DEFINED BY THE RULER 506 000027 0000 PRLLSZ, 0 /SIZE OF THE LINE AS DEFINED BY RULER PLUS EXTRA SPACING 507 /SET BY PRINT MENU; TRUNCATED TO NEAREST WHOLE LINE IF 508 /PRINTING TO DRAFT PRINTER. THE EXTRA SPACING IS NOT 509 /ADDED IF A HEADER OR FOOTER IS BEING PRINTED. 510 511 000030 0000 PRSCNM, 0 /SECTION NUMBER 512 000031 0000 PRPGNM, 0 /PAGE NUMBER 513 000032 0000 PRPCNT, 0 /PAGE COUNT--IS NOT SUBJECT TO BEING RESET 514 515 000033 0000 PRRSRT, 0 /THE RESTART PAGE COUNT--USED WHEN INSTRUCTED TO GO BACK N 516 /PAGES AND RESTART 517 518 000034 0000 PRYES, 0 /PRINT INHIBIT (0=PRINT ENABLED, NON-ZERO=PRINT DISABLED) 519 520 000035 0000 PRSTNX, 0 /STOP AFTER NEXT DONE FLAG 521 522 000036 0000 PLPTR, 0 /POINTER INTO THE LINE BUFFER 523 000037 0000 PLCNT, 0 /COUNTER OF CHARACTERS IN THE BUFFER 524 000040 0000 PLDIR, 0 /THE DIRECTION OF PRINTING MOTION 525 000041 0000 PLPOS, 0 /THE SIZE OF THE POSITION CURRENTLY BEING PRINTED 526 527 000042 0000 PRFLAG, 0 /HEADER (POSITIVE)/FOOTER (NEGATIVE)/TEXT (ZERO) FLAG 528 529 000043 0000 PRMCLM, 0 /LEFT MARGIN OF THE COLUMN IN PRINT UNITS 530 000044 0000 PRMCTM, 0 /TOP MARGIN OF THE COLUMN IN VERTICAL PRINT UNITS 531 000045 0000 PRMCBM, 0 /BOTTOM MARGIN OF THE COLUMN IN VERTICAL PRINT UNITS 532 000046 0000 PRMCPC, 0 /NUMBER OF THE COLUMN PRESENTLY PRINTING 533 000047 0000 PRMCLL, 0 /MAXIMUM VALUE WHICH RULRRM ATTAINS IN A GIVEN COLUMN; I.E., 534 /THE LONGEST LINE IN A COLUMN 535 000050 0000 PRMCRF, 0 /THE MULTI-COLUMN REQUEST FLAG 536 537 000051 0000 PRHSIZ, 0 /VERTICAL SPACE OCCUPIED BY HEADER; ZERO IF NO HEADER 538 000052 0000 PRFSIZ, 0 /VERTICAL SPACE OCCUPIED BY FOOTER; ZERO IF NO FOOTER 539 540 000053 0000 LPFLAG, 0 /NON-ZERO IF LIST PROCESSING IS IN PROGRESS, ZERO OTHERWISE 541 542 543 000054 0000 PRPASS, 0 /The pass number 544 000055 0000 PLASPC, 0 / ACCUMULATED HORIZONTAL MOTION /M039 545 000056 0000 PLOLNC, 0 /HORIZONTAL SPACING LAST CHARACTER /M039 546 000057 0000 PRJDEF, 0 / USABLE BY LQPSE AND LQP02 /M067 547 000060 0000 PRACTS, 0 / SAVED STOP ACTION /A101 548 000061 0000 PRSTT3, 0 / SAVED PRSTTS WHEN DISPATCH THROUGH STOP OVERLAY /A104 549 000062 0000 PLWMUL, 0 / proportional printing multinational char flag /a227 550 000063 0000 IDTMC, 0 / VALUE TO COMPARE TIMOUT AGAINST /A107 551 000064 0000 PRTMOV, 0 /THE TOTAL MOTION WHICH HAS BEEN TRANSMITTED TO THE HANDLER 552 /BUT NOT YET FORCED. IT IS CLEARED EACH TIME PRTMOV 553 /IS INVOKED TO FORCE THE MOTION. 554 000065 0000 VPTR, 0 /A POINTER USED BY THE PARSER /A114 555 000066 0000 NUMPTR, 0 /A POINTER USED BY CSISTR 556 000067 0000 PRBIF, 0 /BOLD INTERPRETATION FLAG /A150 557 000070 0000 PRBIFN, 0 /FONT FINAL FOR NONBOLDED TEXT /A150 558 000071 0000 PRBIFB, 0 /FONT FINAL FOR BOLDED TEXT /A150 559 000072 0000 PRDTFG, 0 /US (ZERO) BRITISH (NONZERO) DATE FLAG /A182 560 000073 0000 EXPCNT, 0 / COUNT OF EXPANSION WHEN PROCESSING BACKSLASH STUFF /A205 561 000074 0000 BSLCNT, 0 / COUNT OF BACKSLASHES IN HEADER/FOOTER LINE /A205 562 000075 0000 SOFTPT, 0 / POSITION OF RIGHTMOST SOFT SPACE IN BUFFER /A205 563 000076 0000 XSADX, 0 / POINTER USED BY ESCST ROUTINE 564 000077 0000 MNCFLG, 0 / print a multinational char next if -1 /a227 565 PAGE 566 567 /***********************************************************************/ 568 / / 569 / OVERLAY AREAS / 570 / THE OVERLAY AREAS AND PAGE ZERO ARE DESIGNED SO THAT / 571 / THEY NEED NOT BE WRITTEN OUT, THUS SAVING SOME / 572 / BLOCKS ON THE SYSTEM DISK. SEE DSKHND AND WP2CMF / 573 / IF OVERLAYS ARE EXPANDED / 574 PROVA, 575 *PROVA+1400 /A178 576 577 578 579 580 /***********************************************************************/ 581 / / 582 / /A176 NOTE NOTE NOTE NOTE NOTE NOTE A176 / 583 / / 584 / Some system initialization code resides in field one at boot 585 / time in this overlay area. That code is assembled with WPSYSA, 586 / but resides here. The writeout code in WP2CMF and the read in 587 / table in DSKHND specify that this initialization code get 588 / loaded as though it were contiguous with the WPRINT resident 589 / code. 590 / 591 / See label PRBOTM defined in WPF1 which defines the bottom 592 / of the printer field writeout/read-in code 593 594 X=PRBOTM /PRINTS VALUE OF PRBOTM IN LISTING undefined ^ 595 596 /THIS IS THE RESIDENT ENTRY FOR THE TOP OF PAGE PROCESSING ROUTINE. IT 597 /MUST BE RESIDENT BECAUSE THE CALL TO PRGCHR CAN SOMETIMES REQUIRE THE 598 /USE OF BOTH OVERLAY AREAS. THIS ONE CHARACTER LOOK-AHEAD IS PERFORMED SO 599 /THAT ANY HEADER DEFINITIONS WHICH ARE AT THE BEGINNING OF THE PAGE CAN BE 600 /FOUND. THE CHARACTER IS SAVED, AND THE OVERLAY CODE WHICH HANDLES THE TOP 601 /OF THE PAGE IS PROCESSED. AS WITH ANY FORMATTING ROUTINE, THE EVENTUAL 602 /RETURN IS TO PRGSL1 IN THE SPACING ROUTINE. 603 604 /NOTE THAT THIS POINT IS THE ENTRY INTO THE COPY INITIALIZATION SECTION INTO 605 /THE COPY PRINTING SECTION. THUS, THE BASIC PRINTING LOOP IS ENTERED FROM 606 /THE OUTSIDE VIA THE RETURN FROM THE SPACING ROUTINE--WHICH JUMPS TO PRLOOP. 607 608 /DURING DEVELOPMENT OF PRINTER SEND (SENDING ESCAPE SEQUENCES TO PRINTER) 609 / IT WAS FOUND THAT IT MAY NOT BE DESIREABLE NOT TO DO ALL OF THE THINGS 610 / THAT TAKE PLACE AT THE TOP OF THE PAGE, BEFORE PROCESSING ESCAPE SEQUENCES. 611 / FOR INSTANCE, THE HEADER FUNCTIONS OCCURRED 612 / BEFORE ANY ESCAPE SEQUENCES THAT WERE TO BE TRANSMITTED. THIS IS BECAUSE 613 / THERE IS NO WAY TO BE ABLE TO INSERT CONTROLS BOTH AT THE TOP OF THE 614 / PAGE AND THE TOP OF THE HEADER. THE LOOKAHEAD GUARANTEES THAT THE CONTROLS 615 / WILL BE PROCESSED BEFORE ANY TOP OF PAGE PROCESSING. THIS IS NECESSARY FOR 616 / THE PROPER OPERATION OF RESET. 617 618 PRTOPP, 619 001600 4777 JMS PRGCHR /GET THE NEXT CHARACTER 620 001601 3020 DCA PRGCBK /AND SAVE IT IN THE BACKUP BUFFER 621 TAD (OVTOPP) /INVOKE THE TOP OF PAGE PROCESSING OVERLAY undefined ^ undefined ^ 001602 1376 622 001603 4264 JMS PROV 623 OBTOPP undefined ^ 001604 0000 624 625 001605 0000 PREOF, 0 / SET TO 1 WHEN E-O-F IS SEEN. BOTP LOOKS AT THIS/A096 626 627 /THIS IS THE BASIC LOOP WHICH DOES THE PRINTING. THERE ARE TWO WAYS 628 /TO LEAVE THE LOOP: 1) THE USER STOPS THE PRINTING, AND 2) THE SPACING 629 /ROUTINE FINDS THE END OF THE DOCUMENT. 630 631 /WHEN EVERYTHING IS INITIALIZED FOR A COPY, THE COPY INITIALIZATION 632 /SECTION INVOKES THE TOP OF PAGE FORMATTING ROUTINE, WHICH RETURNS VIA 633 /THE SPACING ROUTINE TO PRLOOP. THIS EFFECTIVELY TRANSFERS CONTROL TO 634 /THE LOOP. 635 636 PRLOOP, 637 638 /IF THE STOP FLAG IS SET, THE STOP OVERLAY IS INVOKED. WHEN THE STOP 639 /OVERLAY COMPLETES, CONTROL RETURNS TO PRLOOP IF PRINTING IS TO CONTINUE. 640 /OTHERWISE, CONTROL REMAINS ELSEWHERE AND THE LOOP IS TERMINATED. 641 642 001606 1000 TAD PRSTOP /TIME TO STOP? 643 001607 7640 SZA CLA 644 001610 5261 JMP PRLOO1 /YES--INVOKE STOP OVERLAY 645 646 001611 1047 TAD PRMCLL / IF NO COLUMN WIDTH YET SET TO CURRENT RULER. /A091 647 001612 7640 SZA CLA / SKIP IF NO MAX COL WIDTH YET. /A091 648 001613 5216 JMP PRLO1A / JMP BECAUSE THERE IS A COLUMN WIDTH. /A091 649 001614 1060 TAD RULRRM / GET CURRENT RULER WIDTH. /A091 650 001615 3047 DCA PRMCLL / AND SET MAX COL WIDTH TO IT. /A091 651 PRLO1A, /A091 652 653 /PRGTLN READS A LINE FROM THE FILE AND PUTS INTO THE PRINT BUFFER. IT 654 /QUITS READING WHEN IT ENCOUNTERS AN EOL CHARACTER. 655 656 001616 3074 DCA BSLCNT / CLEAR COUNTERS FOR HEADER/FOOTER /A205 657 001617 3073 DCA EXPCNT / PROCESSING OF BACKSLASHES /A205 658 001620 3075 DCA SOFTPT /A205 659 660 001621 4321 JMS PRGTLN 661 662 001622 1075 TAD SOFTPT / GET POINTER TO LAST SOFT SPACE /A205 663 001623 7640 SZA CLA / IF THERE ARE NO SOFT SPACES... /A205 664 001624 1074 TAD BSLCNT / GET BACKSLASH CHARACTER COUNTER /A205 665 001625 7450 SNA / IF THERE WERE NONE... /A205 666 001626 5237 JMP PRINHB / ...WE DON'T NEED TO DO ANYTHING /A205 667 001627 7041 CIA / MAKE NEGATIVE FOR COMPARE /A205 668 001630 1073 TAD EXPCNT / ADD IN EXPANSION COUNT /A205 669 001631 7450 SNA / IF NO BIGGER THAN AT FIRST... /A205 670 001632 5237 JMP PRINHB / ...THEN DO NOTHING /A205 671 001633 3073 DCA EXPCNT / ELSE SAVE ADJUSTED VALUE /A205 672 673 001634 4264 JMS PROV / LOAD OVERLAY /A205 674 OBCLUP /A205 undefined ^ 001635 0000 675 676 JMS PRCLUP / GO CLEAN UP /A205 undefined ^ undefined ^ 001636 4000 677 678 /THE PRINT LINE ROUTINE JUSTIFIES (IF NECESSARY) AND PRINTS THE LINE. IT 679 /RETURNS TO ONE OF THE TWO ENTRY POINTS INTO THE SPACING ROUTINE, DEPENDING 680 /ON WHETHER IT HAS PRINTED ANYTHING OR NOT. IF PRYES IS SET TO INHIBIT 681 /PRINTING, THERE IS NO REASON TO INVOKE THE PRINT OVERLAY AND THE SPACING 682 /ROUTINE IS INVOKED DIRECTLY. THE SPACING ROUTINE RETURNS TO PRLOOP TO 683 /CONTINUE THE LOOP, UNLESS THE END OF THE FILE IS FOUND, IN WHICH CASE IT 684 /INVOKES THE END OF COPY OVERLAY. 685 686 001637 1034 PRINHB, TAD PRYES /GET THE PRINT INHIBIT FLAG /C205 687 001640 7640 SZA CLA 688 001641 5775 JMP PRGSL1 /GO DIRECTLY TO SPACING ROUTINE 689 690 / DETERMINE WHETHER WE ARE PRINTING TO AN LQP OR A DP/HOST /C186 691 / CALL THE APPROPRIATE JUSTIFICATION OVERLAY /A186 692 693 001642 4774 JMS SKIPIF / /A186 694 LQPMSK / /A186 undefined ^ 001643 0000 695 001644 5250 JMP PRLLDP / GO SEE IF LN03 OR NOT /A214 696 697 TAD (OVJUSL / LQP, LOAD OVJUSL /A186 undefined ^ undefined ^ 001645 1376 698 001646 4264 JMS PROV / /A186 699 OBJUSL / /C193 undefined ^ 001647 0000 700 701 PRLLDP, / LN03, DP, OR HOST /A214 702 001650 4774 JMS SKIPIF / SEE IF LN03 /A214 703 001651 0000 LN03 / /A214 704 001652 5256 JMP PRLOPD / NO, DP OR HOST /A214 705 706 TAD (OVLN3A / IS LN03, DISPATCH TO OVERLAY /A214 undefined ^ undefined ^ 001653 1376 707 001654 4264 JMS PROV / /A214 708 OBLN3A / /A214 undefined ^ 001655 0000 709 710 PRLOPD, TAD (OVJUSD / DP OR HOST /A186 undefined ^ undefined ^ 001656 1376 711 001657 4264 JMS PROV / /A186 712 OBJUSD / /A186 undefined ^ 001660 0000 713 714 PRLOO1, TAD (OVSTP2) /INVOKE THE STOP OVERLAY undefined ^ undefined ^ 001661 1376 715 001662 4264 JMS PROV 716 OBSTP2 undefined ^ 001663 0000 717 718 /***********************************************************************/ 719 / / 720 / PROV----OVERLAY LOADER / 721 / LOADS OVERLAYS INTO ONE OF THREE OVERLAY AREAS / 722 / EACH OVERLAY IS ONE BLOCK (256 LOCS) IN SIZE / 723 / THE LOCATION FOLLOWING THE JMS PROV / 724 / CONTAINS A VALUE, FOUR BITS OF WHICH DESIGNATE / 725 / WHERE THE OVERLAY IS TO RESIDE, AND 8 BITS OF / 726 / WHICH DESIGNATE THE OVERLAY NUMBER OVNUM / 727 / / 728 / CALLING SEQUENCE: / 729 / TAD (OVENTR /ADDRESS OFFSET / 730 / JMS PROV / 731 / OBENTR /BLOCK OFFSET AND TYPE / 732 / / 733 / IF THE ADDRESS OFFSET IS ZERO (PROV CALLED WITH CLEAR AC)/A162 / 734 / THEN THE OVERLAY IS LOADED BUT CONTROL IS RETURNED /A162 / 735 / INLINE. IN THIS MANNER WE HAVE AN OVERLAY LOAD /A162 / 736 / WITHOUT A CORRESPONDING JUMP TO THAT OVERLAY /A162 / 737 / THIS CAN BE USED TO LOAD AN OVERLAY THAT CONTAINS ONLY TABLES / 738 / OR TO MAKE SURE AN OVERLAY IS LOADED WHEN WE WANT TO CALL / 739 / / 740 / A SUBROUTINE IN A **** DIFFERENT **** !!!! OVTYPE OVERLAY, CF: / 741 / CLA / 742 / JMS PROV / 743 / OBXYZQ /BLOCK # OF OV OF SUB / 744 / JMS SUB / 745 / / 746 / IF THE LOADED OVERLAY IS OF THE SAME TYPE AS THE OVERLAY/A165 / 747 / THAT CALLED PROV, WE HAVE A CONFLICT. PROV CONTAINS CODE TO / 748 / DETECT THIS ERROR CONDITION AND HALT. / 749 / / 750 /***********************************************************************/ 751 752 753 754 PROV, XX undefined ^ 001664 0000 755 001665 3014 DCA PROVT1 /SAVE THE ADDRESS 756 757 001666 1664 TAD I PROV /GET BLOCK OFFSET/TYPE 758 001667 0373 AND (7400 /MASK OFF BLOCK BITS 759 001670 1372 TAD (PROVA) /FORM ADDRESS OF ID LOCATION IN OVERLAY 760 001671 3015 DCA PROVT2 /SAVE THE ADDRESS OF THE FIRST WORD 761 762 001672 1415 TAD I PROVT2 /ADD THE NEGATIVE OF THE ALREADY LOADED OVERLAY 763 /ID NUMBER 764 001673 1664 TAD I PROV /TO THE DESIRED OVERLAY NUMBER 765 AND P377 /LOOK ONLY AT OVERLAY NUMBER BITS undefined ^ undefined ^ 001674 0000 766 001675 7650 SNA CLA 767 001676 5311 JMP PROVL1 /THE RIGHT OVERLAY IS ALREADY LOADED 768 769 001677 1015 TAD PROVT2 /GET THE ADDRESS OF THE FIRST WORD OF THE AREA 770 001700 3307 DCA PROVQ+3 /SAVE ADDRESS TO LOAD THE OVERLAY IN CALL/C183 771 001701 1664 TAD I PROV /GET THE BLOCK/TYPE OFFSET 772 AND P377 /MASK TYPE BITS OFF undefined ^ undefined ^ 001702 0000 773 TAD (DLOPRO /ADD OVERLAY BASE BLOCK undefined ^ undefined ^ 001703 1376 774 001704 4771 PROVQ, JMS PRQRX /LOAD THE OVERLAY 775 RXERD+4000 /READ /A183 undefined ^ 001705 4000 776 001706 0000 0 /SYSTEM DRIVE /A183 777 001707 0000 0 /BUFFER ADDRESS /A183 778 001710 5770 JMP PRQSDE /IF ERROR, REPORT IT /A183 779 780 /AT THIS POINT, THE PROPER OVERLAY IS LOADED. JUMP TO THE REQUESTED ADDRESS. 781 782 PROVL1, 783 001711 1014 TAD PROVT1 /GET THE ARGUMENT 784 001712 7450 SNA /IF ORIGINAL ARGUMENT WAS ZERO /A162 785 001713 5317 JMP PROVL2 /GO VALIDATE RETURN ADDRESS /A162 /C165 786 001714 1015 TAD PROVT2 /ADD THE ADDRESS OF THE FIRST WORD 787 001715 3014 DCA PROVT1 /SAVE TO JUMP THROUGH 788 001716 5414 JMP I PROVT1 /JUMP THERE 789 790 PROVL2, /VALIDATE THE RETURN ADDRESS /A165 791 /IF IT IS TO THE SAME OVERLAY AREA WE LOADED /A165 792 /THEN OUR RETURN IS INVALID /A165 793 IFDEF DEVEL1 < /THIS CODE IS FOR DEVELOPMENT /A214 794 TAD PROVT2 /GET ID WORD ADDRESS /A165 795 CIA /COMPLEMENT IT /A165 796 TAD PROV /COMPARE TO RETURN ADDRESS /A165 797 AND (7400 /LOOK AT 4 TOP BITS /A165 798 SNA CLA /SKIP IF DIFFERENT /A165 799 HLT /THIS IS AN OVERLAY ADDRESS CONFLICT /A165 800 > / END IFDEF DEVEL1 /A214 801 001717 2264 ISZ PROV /BUMP RETURN ADDRESS /A162 802 001720 5664 JMP I PROV /RETURN TO OVERLAY THAT CALLED US /A162 803 804 /***********************************************************************/ 805 / / 806 / PRGTLN--PRINTER GET LINE ROUTINE. GETS A LINE OF TEXT INTO THE / 807 / LINE BUFFER. HANDLES DEAD KEY SEQUENCES, TECHNICAL / 808 / CHARACTERS, AND LEADING SPACES IN SPECIAL WAYS / 809 / / 810 /***********************************************************************/ 811 812 813 PRGTLN, XX undefined ^ 001721 0000 814 815 /THERE ARE SEVERAL VARIABLES ASSOCIATED WITH READING CHARACTERS AND WRITING 816 /THEM INTO THE BUFFER WHICH MUST BE INITIALIZED. 817 818 AC0001 undefined ^ 001722 0000 819 001723 3040 DCA PLDIR /MOVE TO THE RIGHT THROUGH THE LINE BUFFER 820 821 001724 1367 TAD (PRLBUF) /GET ADDRESS OF BEGINNING OF BUFFER 822 001725 3036 DCA PLPTR /INITIALIZE THE BUFFER POINTER 823 824 001726 1366 TAD (-MAXLIN) /GET THE NEGATIVE OF THE SIZE OF THE BUFFER 825 001727 3037 DCA PLCNT /SAVE AS A COUNT OF SPACE REMAINING 826 827 001730 3765 DCA PRTABF /CLEAR TAB FLAG /A224 828 829 /WE NOW ENTER A LOOP WHICH GETS A CHARACTER AND PUTS INTO THE BUFFER. WHEN 830 /AN EOL IS PUT INTO THE BUFFER, THE ROUTINE RETURNS. PRPCHR MAKES A NORMAL 831 /RETURN FOR UNLESS EOL IS FOUND, WHEN IT MAKES A SKIP RETURN. 832 833 PRGLI1, 834 001731 4777 JMS PRGCHR /GET NEXT CHARACTER 835 001732 4764 JMS PRPCHR /STORE IT IN THE BUFFER 836 001733 5331 JMP PRGLI1 /EOL NOT FOUND--CONTINUE THE LOOP 837 838 /THE EOL HAS BEEN FOUND. RECOVER THE EOL TO SAVE IN THE BACKUP BUFFER AND 839 /THEN RETURN. 840 841 001734 1436 TAD I PLPTR /GET THE EOL CHARACTER 842 001735 3020 DCA PRGCBK /SAVE IN THE BACKUP BUFFER LOCATION 843 001736 5721 JMP I PRGTLN /AND RETURN 844 845 /PART OF PRPCHR SUBROUTINE WHICH HAS OVERFLOWED ITS PAGE! /A222 846 /THIS SECTION TREATS BACKSLASHES. IF A HEADER OR FOOTER IS BEING 847 /PROCESSED, AN OVERLAY IS INVOKED TO CHECK FOR A DATE OR PAGE INSERTION 848 /COMMAND. OTHERWISE, THE BACKSLASH IS TREATED AS A NORMAL CHARACTER. 849 850 BSLASH="=&177 /A238 851 852 853 PRGLO7, 854 001737 1363 TAD (40-BSLASH)/IS THE TEXT A BACKSLASH? /mrcm 855 001740 7640 SZA CLA 856 001741 5762 JMP PRGL7A /NO--TREAT AS NORMAL CHARACTER 857 858 001742 1042 TAD PRFLAG /IS A HEADER OR FOOTER BEING PRINTED? 859 001743 7650 SNA CLA 860 001744 5762 JMP PRGL7A /NO--TREAT BACKSLASH AS NORMAL CHARACTER 861 862 001745 3765 DCA PRTABF /CLEAR TAB FLAG /A222 863 TAD (OVBSLH) /TREAT IN AN OVERLAY undefined ^ undefined ^ 001746 1376 864 001747 4264 JMS PROV 865 OBBSLH undefined ^ 001750 0000 866 /------------------- 867 001762 2265 PAGE 001763 7743 001764 2200 001765 2354 001766 7307 001767 4307 001770 3635 001771 3605 001772 0200 001773 7400 001774 6121 001775 2001 001776 0000 001777 2400 868 869 /PRGSPC HANDLES VERTICAL SPACING AND FORMATTING ON THE PAGE. THERE ARE TWO 870 /ENTRY POINTS. THE ENTRY POINT PRGSPC IS USED BY THE LQP LINE PRINTING 871 /ROUTINE IF IT HAS ACTUALLY PRINTED A LINE (AS OPPOSED TO STRIPPING THE 872 /WHOLE THING) IN WHICH CASE IT HAS ALREADY PERFORMED TWO HALF-SPACING 873 /OPERATIONS WHICH ARE COMPENSATED FOR BY INITIALIZING PRGSVS TO NEGATIVE 874 /THE LINE SIZE. PRGSL1 IS THE ENTRY POINT USED IN ALL OTHER CASES (LINE 875 /PRINTER PRINTING, LQP PRINTING BUT ENTIRE LINE STRIPPED, PRINTING SUPPRESSED 876 /DUE TO PRINT INHIBIT FLAG. 877 878 /PRGSL1 IS ALSO THE RETURN POINT FOR THE FORMATTING ROUTINES WHICH ARE INVOKED 879 /DURING THIS ROUTINE. PRGSPC RETURNS TO PRLOOP AT THE TOP OF THE BASIC 880 /PRINTING LOOP. 881 882 PRGSPC, 883 002000 1377 TAD (-PRNLSZ) /SET PRGSVS TO COMPENSATE FOR SPACING ALREADY 884 /PERFORMED IN LQP LINE PRINTIG ROUTINE 885 886 /THIS IS THE POINT TO WHICH ANY FORMATTING ROUTINES PERFORM. NOTE THAT 887 /ANY UNCOMPLETED VERTICAL SPACING IS FORGOTTEN UPON RETURN FROM A FORMATTING 888 /ROUTINE. THIS IS A DESIRABLE SIDE EFFECT SINCE, FOR INSTANCE, SPACE 889 /ACCUMUATED AT THE END OF A PAGE HAS NO BUSINESS SPILLING OVER ONTO THE NEXT 890 /PAGE. 891 892 PRGSL1, 893 002001 3302 DCA PRGSVS /CLEAR ACCUMULATED VERTICAL SPACING 894 895 /WE NOW ENTER A LOOP WHICH DOES SPACING AND DETERMINES WHAT FORMATTING IS 896 /NECESSARY. THE CALL TO PRGCHR CAN RESULT IN ONE OF FIVE POSSIBLE RETURNS, 897 /AS WELL AS IN A FLAG'S BEING SET. THE ACTION OF THE ROUTINE IS BASED ON 898 /THE TYPE OF RETURN. 899 900 PRGSL2, 901 002002 3050 DCA PRMCRF /CLEAR THE MULTI-COLUMN REQUEST FLAG 902 002003 4776 JMS PRGCHR /GET A CHARACTER 903 DCA T1 /AND SAVE IT undefined ^ undefined ^ 002004 3000 904 905 /AS MENTIONED ABOVE, WE ARE INTERESTED IN THE STATE OF THE MULTI-COLUMN 906 /REQUEST FLAG (PRMCRF) AND IN THE RETURN CHARACTER (T1). THERE ARE TWO 907 /CASES BASED ON THE STATE OF THE FLAG. 908 909 /CASE ONE - THE MULTI-COLUMN REQUEST FLAG IS SET 910 /IN THIS CASE, A NEW SET OF COLUMNS MUST BE BEGUN. EXACTLY WHAT HAPPENS 911 /DEPENDS ON WHETHER THE NEW COLUMNS CAN BEGIN ON THIS PAGE OR IF THEY MUST 912 /BE DEFERRED TO THE NEXT PAGE. 913 914 /1. THE NEW COLUMNS MAY BEGIN ON THE CURRENT PAGE ONLY IF WE ARE CURRENTLY 915 / PRINTING THE FIRST COLUMN, AND ONLY IF THE ACCUMLATED VERTICAL SPACING 916 / ADDED TO THE CURRENT VERTICAL POSITION DOES NOT EXCEED THE BOTTOM 917 / MARGIN (THE LATTER POINT A CONCERN ONLY UNDER AUTOMATIC PAGINATION). 918 / IN THIS CASE, THE ACCUMULATED SPACING IS PERFORMED AND THE NEW COLUMN 919 / FORMATTING ROUTINE IS EXECUTED. 920 921 /2. IN ANY OTHER CASE, THE TOP OF FOOTER FORMATTING ROUTINE IS EXECUTED 922 / SO THAT A NEW PAGE ON WHICH TO BEGIN THE COLUMNS WILL BE FORCED. 923 924 925 /CASE TWO - THE MULTI-COLUMN REQUEST FLAG IS NOT SET 926 /IN THIS CASE, WE ARE INTERESTED IN THE TYPE OF RETURNED CHARACTER. THE 927 /POSSIBILITIES ARE: 928 929 /1. LINE FEED - THE VARIABLE PRGSVS IS THE ACCUMULATED VERTICAL SPACING 930 / SINCE THIS ROUTINE WAS ENTERED OR A FORMATTING ROUTINE 931 / WAS EXECUTED. WE MERELY UPDATE PRGSVS BY ADDING IN THE 932 / CURRENT SIZE OF A LINE AND CONTINUE THE LOOP. 933 934 /2. PAGE MARKER - IF AUTOMATIC PAGINATION IS IN EFFECT, THIS CHARACTER IS 935 / IGNORED AND WE CONTINUE THE LOOP. OTHERWISE, THIS 936 / CHARACATER IS TREATED AS A NEW PAGE. 937 938 /3. NEW PAGE - IF PRINTING A HEADER, BOTTOM OF HEADER FORMATTING IS DONE. 939 / IF PRINTING A FOOTER, BOTTOM OF FOOTER FORMATTING IS DONE. 940 / IF PRINTING REGULAR TEXT, NEXT COLUMN FORMATTING IS DONE. 941 942 /4. END OF FILE - IF PRINTING A HEADER, BOTTOM OF HEADER FORMATTING IS DONE. 943 / - IF PRINTING A FOOTER, BOTTOM OF FOOTER FORMATTING IS DONE. 944 / - IF PRINTING REGUALR TEXT, TOP OF FOOTER FORMMTTING IS 945 / DONE. 946 947 / NOTE THAT IN THE CASE OF HEADERS OR FOOTERS, THE END OF FILE FLAG'S 948 / BEING SET MEANS ONLY THE END OF THE HEADER OR FOOTER WAS FOUND. IN 949 / THE CASE OF REGULAR TEXT, IT MEANS THE END OF THE FILE WAS ACTUALLY 950 / FOUND. HENCE, ANOTHER COLUMN IS NOT ATTEMPTED AS IN A NEW PAGE BECAUSE 951 / THERE CAN BE NO MORE TEXT FOR ANOTHER COLUMN. 952 953 /5. NONE OF ABOVE - IF AUTOMATIC PAGINATION IS NOT IN EFFECT, THE ACCUMULATED 954 / VERTICAL SPACING IS PERFORMED AND WE RETURN TO THE BASIC 955 / LOOP. IF AUTOMATIC PAGINATION IS IN EFFECT, THE 956 / ACCUMULATED SPACING IS PERFORMED ONLY IF IT DOES NOT 957 / EXCEED THE LOWER MARGIN. OTHERWISE, THE SITUATION IS 958 / TREATED AS A NEW PAGE. IN ANY CASE, THE RETURNED 959 / CHARACTER IS SAVED IN THE BACKUP BUFFER. 960 961 /WE NOW BRANCH ACCORDING TO WHICH CASE IS IN EFFECT. 962 963 002005 1050 TAD PRMCRF /IS THE MULTI-COLUMN REQUEST FLAG SET? 964 002006 7650 SNA CLA 965 002007 5236 JMP PRGSL3 /NO--CONTINUE BY EXAMINING THE CHARACTER 966 967 /THE MULTI-COLUMN REQUEST FLAG IS SET. 968 969 TAD T1 /GET THE RETURNED CHARACTER undefined ^ undefined ^ 002010 1000 970 002011 3020 DCA PRGCBK /SAVE IN THE BACKUP BUFFER 971 972 /IF THE ACCUMULATED SPACING WILL CAUSE A BOUNDARY OVERFLOW, /A031 973 /LSPACE WILL MAKE A NORMAL RETURN. OTHERWISE, 974 /IT WILL DO THE SPACING AND MAKE A SKIP RETURN. 975 002012 4303 JMS LSPACE /SEE IF THE ACCUMULATED SPACING FITS ON THIS PAGE 976 002013 5233 JMP PRGSLA /NO---JUMP TO FORCE A NEW PAGE 977 978 /BEGIN NEW COLUMNS ON THE CURRENT PAGE, IMMEDIATELY BELOW LONGEST OF 979 /PREVIOUS COLUMNS. 980 981 002014 1023 TAD PRGSVP /YES--START NEW COLUMNS ON CURRENT PAGE 982 002015 7041 CIA /ADVANCE TO FOOT OF LONGEST COLUMN 983 002016 1045 TAD PRMCBM / AMOUNT = PRMCBM-PRGSVP 984 002017 7500 SMA / CURRENT COLUMN IS LONGEST IF MINUS 985 002020 4775 JMS PRMOVE / GO DO IT 986 002021 7200 CLA /IN CASE WE SKIPPED PRMOVE 987 002022 1774 TAD PRQINU /RETURN TO NORMAL INDENTION 988 002023 4773 JMS PRESCS / SEND INDENT TO HANDLER 989 002024 0105 PCIND 990 002025 3043 DCA PRMCLM / RESET LEFT MARGIN VARIABLE 991 002026 1772 TAD PRQIND / GET INDENT FROM PRINT MENU IN COLUMNS /A212 992 002027 3000 DCA PRMCMG / RESET MULTICOLUMN LEFT COLUMN VALUE /A212 993 002030 1371 TAD (CR) / SEND CARRIAGE RETURN TO FORCE INDENT 994 002031 4770 JMS PRCHAR 995 002032 5277 JMP PRGSL8 /THEN START NEW COLUMNS 996 /BEGIN NEW COLUMNS ON NEXT PAGE SINCE NO ROOM ON CURRENT PAGE. 997 PRGSLA, 998 002033 1767 TAD PRMCAY /GET THE NUMBER OF COLUMNS 999 002034 3046 DCA PRMCPC /SET THE CURRENT COLUMN TO THAT VALUE--A NEW PAGE 1000 /WILL NOW BE FORCED 1001 002035 5270 JMP PRGSL6 /JUMP TO TREAT AS A FORM FEED 1002 1003 /THE MULTI-COLUMN REQUEST IS NOT SET, SO CASE TWO HOLDS. SEE WHAT TYPE 1004 /OF CHARACTER WAS RETURNED AND BRANCH ACCORDINGLY. 1005 1006 PRGSL3, 1007 TAD T1 /RECOVER THE CHARACTER undefined ^ undefined ^ 002036 1000 1008 002037 1366 TAD (-PM) /IS IT A PAGE MARKER? 1009 002040 7650 SNA CLA 1010 002041 5265 JMP PRGSL5 /YES--JUMP TO TREAT IT 1011 1012 TAD T1 /RECOVER THE CHARACTER undefined ^ undefined ^ 002042 1000 1013 AND P177 /STRIP THE MODE BITS undefined ^ undefined ^ 002043 0000 1014 002044 7440 SZA /IS IT THE END OF THE FILE? 1015 002045 1365 TAD (-FF) /OR A FORM FEED? 1016 002046 7450 SNA 1017 002047 5270 JMP PRGSL6 /YES--JUMP TO TREAT IT 1018 1019 002050 1364 TAD (FF-LF) /IS IT A LINE FEED? 1020 002051 7650 SNA CLA 1021 002052 5262 JMP PRGSL4 /YES--JUMP TO TREAT IT 1022 1023 /WE HAVE FOUND A NON-SPECIAL CHARACTER. IF THE ACCUMULATED VERTICAL 1024 /SPACING FORCES A TRANSITION, TREAT AS A NEW PAGE. OTHERWISE, DO THE 1025 /SPACING AND RETURN. 1026 1027 TAD T1 /RECOVER THE CHARACTER undefined ^ undefined ^ 002053 1000 1028 002054 3020 DCA PRGCBK /SAVE IN THE BACKUP LOCATION 1029 1030 002055 4303 JMS LSPACE /SEE IF THE SPACING FITS IN THIS COLUMN, 1031 /HEADER, OR FOOTER 1032 002056 5270 JMP PRGSL6 /NO--EXECUTE THE NEXT COLUMN ROUTINE 1033 002057 4323 JMS LSPAC2 /SEE IF NEXT(NEW/CURRENT) LINE FIXS ON THIS PAGE/A097 1034 002060 5270 JMP PRGSL6 /NO--EXECUTE THE NEXT COLUMN ROUTINE. /A097 1035 002061 5763 JMP PRLOOP /YES--THE SPACING IS NOW DONE SO RETURN 1036 PRGSL4, /WE HAVE FOUND THE LINE FEED 1037 1038 PRGSL4, /WE HAVE FOUND THE LINE FEED 1039 002062 1027 TAD PRLLSZ /GET THE SIZE OF THE LINE 1040 002063 1302 TAD PRGSVS /ADD TO THE ACCUMULATED VERTICAL SPACING 1041 002064 5201 JMP PRGSL1 /GO SAVE AS THE NEW ACCUMULATED VERTICAL SPACING 1042 /AND CONTINUE THE LOOP 1043 1044 1045 /WE HAVE FOUND A PAGE MARKER. IF AUTOMATIC PAGINATION IS IN EFFECT, IGNORE 1046 /IT. OTHERWISE, TREAT AS A NEW PAGE. 1047 1048 PRGSL5, 1049 002065 1762 TAD PRQAPG /IS AUTOMATIC PAGINATION IN EFFECT? 1050 002066 7640 SZA CLA 1051 002067 5202 JMP PRGSL2 /YES--IGNORE THE CHARACTER 1052 1053 1054 /WE HAVE FOUND A NEW PAGE, THE END OF THE FILE, A VALID PAGE MARKER, OR AN 1055 /AUTOMATIC PAGINATION END OF COLUMN. IF WE ARE CURRENTLY PRINTING A HEADER, 1056 /WE CONTINUE WITH BOTTOM OF HEADER PROCESSING. IF WE ARE CURRENTLY PRINTING 1057 /A FOOTER, WE CONTINUE WITH BOTTOM OF FOOTER PROCESSING. IF WE ARE CURRENTLY 1058 /PRINTING REGULAR TEXT, WE CONTINUE WITH NEXT COLUMN PROCESSING. IN THE 1059 /OVERLAY, IT IS DETERMINED WHETHER OR NOT THE END OF FILE WAS REACHED. IF 1060 /IT WAS, A TRANSFER IS MADE TO TOP OF FOOTER PROCESSING. 1061 1062 /IN THIS WAY, THE ACTIONS SPECIFIED IN THE COMMENTS ABOVE ARE CARRIED OUT. 1063 1064 PRGSL6, 1065 002070 1042 TAD PRFLAG /GET THE TYPE OF PRINTING GOING ON 1066 002071 7450 SNA 1067 002072 5276 JMP PRGSL7 /REGULAR TEXT--NEXT COLUMN PROCESSING 1068 002073 7710 SPA CLA 1069 1070 TAD (OVBOTF-OVBOTH) /END OF FOOTER PROCESSING undefined ^ undefined ^ undefined ^ undefined ^ 002074 1361 1071 TAD (OVBOTH-OVNXTC) /END OF HEADER PROCESSING undefined ^ undefined ^ undefined ^ undefined ^ 002075 1361 1072 PRGSL7, TAD (OVNXTC-OVNEWC) /NEXT COLUMN PROCESSING undefined ^ undefined ^ undefined ^ undefined ^ 002076 1361 1073 1074 PRGSL8, TAD (OVNEWC) /NEW COLUMN PROCESSING undefined ^ undefined ^ 002077 1361 1075 002100 4760 JMS PROV 1076 OBNEWC /ALL OF THE ABOVE OFFSETS MUST BE IN THE SAME undefined ^ 002101 0000 1077 /OVERLAY ELSE WE WILL HAVE TO CHANGE THIS 1078 1079 002102 0000 PRGSVS, 0 /ACCUMULATED VERTICAL SPACING 1080 1081 1082 1083 /THIS ROUTINE IS A UTILITY ROUTINE FOR THE SPACING ROUTINE. IF THE 1084 /ACCUMULATED VERTICAL SPACING WILL FIT IN THE CURRENT COLUMN WITHOUT 1085 /CAUSING AN AUTOMATIC PAGINATION OVERFLOW, THE MOVE IS MADE AND A SKIP 1086 /RETURN EXECUTED. OTHERWISE, A REGULAR RETURN IS MADE. 1087 1088 /AC=0 1089 /JMS LSPACE 1090 /AC=0, NO ROOM 1091 /AC=0, ROOM 1092 1093 LSPACE, 1094 XX undefined ^ 002103 0000 1095 1096 002104 1042 TAD PRFLAG /ARE WE PRINTING A HEADER OR FOOTER? 1097 002105 7450 SNA 1098 002106 1762 TAD PRQAPG /OR IS AUTOMATIC PAGINATION IN EFFECT? 1099 002107 7650 SNA CLA 1100 002110 5317 JMP LSPAC1 /NO--THE SPACING FITS BY DEFINITION 1101 1102 /AUTOMATIC PAGINATION IS IN EFFECT. SEE IF THE SPACING WILL FIT INTO THE 1103 /MAXIMUM ALLOWABLE. 1104 1105 002111 1302 TAD PRGSVS /GET ACCUMULATED VERTICAL SPACING 1106 002112 1023 TAD PRGSVP /ADD TO THE CURRENT VERTICAL POSITION 1107 002113 7041 CIA 1108 002114 1025 TAD PRGSMX /SUBTRACT FROM THE MAXIMUM VERTICAL POSITION 1109 002115 7750 SPA SNA CLA 1110 002116 5703 JMP I LSPACE /IT DOESN'T FIT--MAKE A REGULAR RETURN 1111 1112 /THE SPACING FITS. DO THE MOVE AND MAKE A SKIP RETURN. 1113 1114 LSPAC1, 1115 002117 1302 TAD PRGSVS /GET ACCUMULATED VERTICAL SPACE 1116 002120 4775 JMS PRMOVE /DO THE MOVE 1117 002121 2303 ISZ LSPACE /INCREMENT THE RETURN 1118 002122 5703 JMP I LSPACE /AND RETURN 1119 1120 1121 /THIS ROUTINE IS A UTILITY ROUTINE FOR THE SPACING ROUTINE. IF THE /A097 1122 /VERTICAL SPACING FOR THE NEW LINE WILL FIT IN THE CURRENT COLUMN /A097 1123 /WITHOUT CAUSING AN AUTOMATIC PAGINATION OVERFLOW, A SKIP RETURN IS /A097 1124 /EXECUTED. OTHERWISE, A REGULAR RETURN IS MADE. /A097 1125 /A097 1126 /AC=0 /A097 1127 /JMS LSPAC2 /A097 1128 /AC=0, NO ROOM /A097 1129 /AC=0, ROOM /A097 1130 /A097 1131 LSPAC2, /A097 1132 XX /A097 undefined ^ 002123 0000 1133 /A097 1134 002124 1042 TAD PRFLAG /ARE WE PRINTING A HEADER OR FOOTER? /A097 1135 002125 7450 SNA /A097 1136 002126 1762 TAD PRQAPG /OR IS AUTOMATIC PAGINATION IN EFFECT? /A097 1137 002127 7650 SNA CLA /A097 1138 002130 5336 JMP LSP2C1 /NO--THE SPACING FITS BY DEFINITION /A097 1139 /A097 1140 /AUTOMATIC PAGINATION IS IN EFFECT. SEE IF THE SPACING WILL FIT INTO /A097 1141 /THE MAXIMUM ALLOWABLE. /A097 1142 /A097 1143 002131 1027 TAD PRLLSZ /GET SIZE OF LINE TO BE PRINTED ON THIS PAGE. /A097 1144 002132 1023 TAD PRGSVP /ADD TO THE CURRENT VERTICAL POSITION /A097 1145 002133 7041 CIA /A097 1146 002134 1025 TAD PRGSMX /SUBTRACT FROM THE MAXIMUM VERTICAL POSITION /A097 1147 002135 7700 SMA CLA /SKIP IF IT DOESN'T FIT. MAKE A REGULAR RETURN. /A097 1148 002136 2323 LSP2C1, ISZ LSPAC2 /THE SPACING FITS. DO A SKIP RETURN. /A097 1149 002137 5723 JMP I LSPAC2 /AND RETURN /A097 1150 1151 002140 0000 PRFBC, 0 / contains fallback characters loaded from panel /a227 1152 002141 0000 0 / contains fallback characters loaded from panel /a227 1153 1154 /------------------ 1155 002160 1664 PAGE 002161 0000 002162 6413 002163 1606 002164 0002 002165 7764 002166 5764 002167 6704 002170 5321 002171 0015 002172 6401 002173 5000 002174 6414 002175 2445 002176 2400 002177 7770 1156 1157 /PRPCHR - INSERTS THE CHARACTER IN THE AC INTO THE LINE BUFFER (PRLBUF) 1158 1159 /AC=CHARACTER TO STORE 1160 /JMS PRPCHR 1161 /REGULAR RETURN 1162 /EOL RETURN 1163 1164 /THIS ROUTINE TREATS SIX DISTINCT TYPES OF CHARACTERS TO INSERT INTO 1165 /THE BUFFER--TEXT CHARACTERS, SPACES, TABS, LINE TERMINATORS, BEGINNINGS 1166 /OF DEAD KEY SEQUENCES, AND ENDS OF DEAD KEY SEQUENCES. EACH IS TREATED 1167 /SEPARATELY. 1168 1169 1170 PRPCHR, XX undefined ^ 002200 0000 1171 002201 3436 DCA I PLPTR /SAVE THE CHARACTER IN THE BUFFER 1172 002202 1436 TAD I PLPTR /AND RECOVER IT 1173 002203 1377 TAD (-2040) /SEE IF TAB SPACE /A222 1174 002204 7450 SNA / /A222 1175 002205 5252 JMP PRPTSP /YES /A222 1176 AND P177 /MASK OUT THE MODE BITS undefined ^ undefined ^ 002206 0000 1177 1178 /WE NOW DETERMINE WHAT TYPE OF CHARACTER IT IS AND JUMP ACCORDINGLY. 1179 /THE AC WILL BE ZERO IF IT IS A SPACE /A222 1180 002207 7650 SNA CLA /C222 1181 002210 5243 JMP PRGLO1 /YES--JUMP TO HANDLE IT 1182 002211 1436 TAD I PLPTR /GET CHR AGAIN /A216 1183 AND P177 /MASK AGAIN /A216 undefined ^ undefined ^ 002212 0000 1184 002213 1376 TAD (-SPC) /SEE IF A CONTROL CHARACTER /A216 1185 002214 7500 SMA /OR A TEXT CHARACTER? 1186 002215 5775 JMP PRGLO7 /TEXT--JUMP TO HANDLE IT 1187 002216 1374 TAD (SPC-15) /IS IT THE END OF A DEAD KEY SEQUENCE? (15) 1188 002217 7450 SNA 1189 002220 5332 JMP PRGLO9 /YES--JUMP TO HANDLE IT 1190 002221 1373 TAD (15-BS) /IS IT THE BEGINNING OF A DEAD KEY SEQUENCE? 1191 002222 7450 SNA 1192 002223 5331 JMP PRGLO8 /YES--JUMP TO HANDLE IT 1193 1194 /THREE THINGS CAN END A LINE--14 (FORM FEED), 12 (LINE FEED), 0 (END OF FILE) 1195 1196 002224 1372 TAD (BS) /IS IT THE END OF THE FILE OR COMMAND BLOCK? 1197 002225 7440 SZA 1198 002226 1371 TAD (-14) /IS IT A FORM FEED? 1199 002227 7440 SZA 1200 002230 1370 TAD (14-12) /IS IT A LINE FEED? 1201 002231 7450 SNA 1202 002232 5334 JMP PRGL10 /YES--JUMP TO HANDLE IT 1203 1204 002233 1367 TAD (12-TAB) /IS IT A TAB? 1205 002234 7640 SZA CLA 1206 002235 5600 JMP I PRPCHR /NO--THE CHARACTER IS NOT RECOGNIZED SO RETURN 1207 1208 /FALL THROUGH TO HANDLE A TAB. 1209 1210 1211 /THIS SECTION TREATS TABS. ALL SPACES WHICH FOLLOW AND ARE PART OF THE TAB 1212 /SPACE (BIT 1 IS SET) MUST HAVE THIS TAB CHARACTER'S MODE BITS ATTACHED. 1213 /HENCE, WE CREATE A TAB SPACE (2040) COMBINED WITH THIS TAB'S MODE BITS. 1214 /ALL TAB SPACES WHICH FOLLOW WILL BE REPLACED BY THIS CHARACTER. 1215 1216 PRPTAB, /ALSO ENTER HERE IF A SPACE AND PRTABF NONZERO /A222 1217 002236 1436 TAD I PLPTR /RECOVER THE TAB OR SPACE 1218 002237 0366 AND (1600) /GET THE MODE BITS 1219 002240 1365 TAD (2040) /ATTACH TO A TAB SPACE 1220 002241 3354 DCA PRTABF /SAVE IT AS THE REPLACEMENT CHARACTER 1221 002242 5252 JMP PRPTSP /CONTINUE BY REPLACING THE TAB ITSELF /C222 1222 1223 PRGLO1, /THIS SECTION TREATS NON TAB SPACES /C193 1224 1225 /SPACES MAY OCCUR IN NORMAL TEXT OR IN DEAD KEY SEQEUCES. SPACES WHICH /A193 1226 /ARE THE FIRST CHARACTER IN A DEAD KEY SEQUENCE HAVE SPECIAL MEANING. /A193 1227 /THERE ARE CURRENTLY TWO TYPE OF SPECIAL DEAD KEY SEQUENCES WHERE THE /A193 1228 /FIRST CHARACTER IS A SPACE: /A193 1229 / 1. REQUIRED SPACE SD-SP-SP-ED /A193 1230 / 2. TECHNICAL CHR SD-SP-DG-TC-ED /A193 1231 / DG IS AN ASCII DIGIT INDICATING THE G SET THE TC IS IN /A193 1232 / TC IS THE ASCII POSITION IN THAT G SET /A193 1233 / 3. TECHNICAL CHR DEADED WITH NORMAL CHR /A193 1234 / SD-SP-DG-TC-CH-CH .. ED /A193 1235 / IN THIS CASE, CH'S ARE NORMAL CHARACTERS WHICH /A193 1236 / HAVE BEEN DEADED IN TO THE TECHNICAL CHARACTER /A193 1237 / CHARACTERS WHICH HAVE BEEN DEADED INTO THE TECH CHR /A193 1238 1239 /FIRST WE MUST SEE WHETHER THIS SPACE IS THE FIRST CHARACTER /A193 1240 /OF A DEAD KEY SEQUENCE /A193 1241 1242 002243 1353 TAD PRDKFG /GET DEAD KEY FLAG /A193 1243 002244 7001 IAC /SEE IF WAS 7777 /C194 1244 002245 7450 SNA / /C194 1245 002246 5316 JMP PRGL20 /YES, SPACE FIRST CHR IN DKS /A193 1246 002247 7710 SPA CLA /IF STILL MINUS MUST HAVE BEEN 7776 /A194 1247 002250 5320 JMP PRGL21 /7776, HANDLE REQUIRED SPACE /A193 1248 002251 5257 JMP PRGL2A /ELSE /A222 1249 1250 /TREAT TAB SPACES ONLY. IF A SPACE /C222 1251 /IS PART OF A TAB, IT IS REPLACED BY THE VALUE STORED IN PRTABF. (PROVIDED 1252 /THERE IS A VALUE THERE. IN THE CASE OF CENTERED LINES AND INDENTED 1253 /WORDWRAP, FLAGGED SPACES ARE NOT PRECEEDED BY A TAB. THESE ARE NOT 1254 /REPLACED SINCE PRTABF WILL BE ZERO. 1255 1256 002252 1036 PRPTSP, TAD PLPTR / GET POINTER FOR THIS SOFT SPACE /A205 1257 002253 3075 DCA SOFTPT / PUT IT IN HERE FOR FUTURE REFERENCE /A205 1258 002254 1354 TAD PRTABF /GET THE TAB OF WHICH THIS SPACE IS A PART 1259 002255 7440 SZA 1260 002256 3436 PRGL2B, DCA I PLPTR /REPLACE IT IN THE BUFFER 1261 002257 1353 PRGL2A, TAD PRDKFG /GET THE OVERSTRIKE FLAG 1262 002260 7540 SMA SZA /IF FLAG IS POSITIVE, WE ARE IN OVERSTRIKE MODE 1263 002261 5277 JMP PRGLO4 /JUMP TO INSERT BACKSPACE INTO BUFFER 1264 1265 /IF THE FLAG IS ZERO, WE WANT IT TO REMAIN ZERO. IF THE FLAG IS NEGATIVE, 1266 /WE SHOULD ENTER OVERSTRIKE MODE WITH THE NEXT CHARACTER, SO THE FLAG SHOULD 1267 /BECOME POSITIVE. 1268 1269 002262 7041 CIA /IF FLAG IS NEGATIVE, IT BECOMES POSITIVE. IF 1270 /FLAG IS ZERO, IT REMAINS ZERO 1271 002263 3353 DCA PRDKFG /UPDATE THE DEAD KEY FLAG 1272 002264 5310 JMP PRGLO5 /SKIP DEAD KEY CODE 1273 1274 1275 /THIS SECTION HANDLES TEXT CHARACTERS, SPACES, AND TABS ALIKE AFTER 1276 /THEY HAVE RECEIVED MORE SPECIFIC TREATMENT. THE BASIC IDEA IS TO INSURE 1277 /A CHARACTER'S POSITION IN THE BUFFER BY CALLING PLNXT TO INCREMENT THE 1278 /BUFFER VARIABLES. HOWEVER, IF WE ARE PROCESSING A DEAD KEY SEQUENCE, 1279 /WE MUST BE SURE TO INSERT A BACKSPACE BEFORE EACH CHARACTER IN THE 1280 /SEQUENCE AFTER THE FIRST. 1281 1282 002265 3354 PRGL7A, DCA PRTABF /CLEAR TAB FLAG /A222 1283 PRGLO3, AC0002 /SEE IF WE ARE PROCESSING THE FIRST /A194 undefined ^ 002266 0000 1284 002267 1353 TAD PRDKFG /(TECHNICAL) CHARACTER /A194 1285 002270 7510 SPA / if so skip /a227 1286 002271 5344 JMP PRGSCH / this must be the special char we have been /a227 1287 / waiting for /a227 1288 002272 7650 SNA CLA / /A194 1289 002273 5324 JMP PRGL22 /YES, GO PROCESS /A194 1290 1291 002274 1436 TAD I PLPTR /RECOVER THE CHARACTER /A018 1292 002275 0364 AND (1777) /MASK OUT THE TWO HIGH BITS--THESE BITS ARE /A018 1293 /USED FOR JUSTIFICATION PURPOSES AND ANY /A018 1294 /GARBAGE WHICH MAY BE THERE MUST BE REMOVED /A018 1295 002276 5256 JMP PRGL2B /GO SAVE BACK IN THE BUFFER /C222 1296 1297 1298 /THIS SECTION INSERTS A BACKSPACE INTO THE BUFFER BEFORE THE CURRENT 1299 /CHARACTER SINCE IT IS IN A DEAD KEY SEQUENCE. 1300 1301 PRGLO4, 1302 002277 7200 CLA 1303 002300 1436 TAD I PLPTR /GET THE CHARACTER FROM THE BUFFER 1304 DCA T1 /SAVE IT undefined ^ undefined ^ 002301 3000 1305 1306 002302 1372 TAD (BS) /GET A BACKSPACE 1307 002303 3436 DCA I PLPTR /AND STORE IT IN THE BUFFER 1308 1309 002304 4763 JMS PLNXT /UPDATE THE BUFFER 1310 002305 7000 NOP /OVERWRITE IF THERE'S NO MORE ROOM 1311 TAD T1 /GET THE CHARACTER BACK undefined ^ undefined ^ 002306 1000 1312 PRGL4A, /A193 1313 002307 3436 DCA I PLPTR /SAVE IT IN THE BUFFER 1314 1315 1316 /THIS SECTION WRITES THE CHARACTER PERMANANTLY INTO THE BUFFER 1317 1318 PRGLO5, 1319 002310 1436 TAD I PLPTR /RECOVER THE CHARACTER 1320 002311 0366 AND (1600) /SAVE THE MODE BITS 1321 002312 3352 DCA PRHMOD /SAVE FOR MODE OF HYPHEN EOL FUTURE COMPARISON 1322 /D018 1323 002313 4763 JMS PLNXT /UPATE THE BUFFER POINTERS 1324 002314 7000 NOP /OVERWRITE IF THERE'S NO MORE ROOM 1325 1326 /THIS IS ALSO THE RETURN POINT FOR THE OVERLAY WHICH HANDLES BACKSLASHES. 1327 1328 PRGLO6, 1329 002315 5600 JMP I PRPCHR /RETURN 1330 1331 1332 PRGL20, /SPACE IS FIRST CHR IN DEAD KEY SEQUENCE /A193 1333 AC7776 /SET THE DEAD KEY FLAG TO -2 /A193 undefined ^ 002316 0000 1334 002317 5332 JMP PRGLO9 /GO SET DEAD KEY FLAG & EXIT /C222 1335 1336 PRGL21, /REQUIRED SPACE /A193 1337 002320 1436 TAD I PLPTR /GET CHR WITH MODE BITS /A193 1338 002321 0366 AND (1600) /ISOLATE MODE BITS /A193 1339 002322 1362 TAD (RQSP) /ADD IN CODE FOR REQUIRED SPACE /A193 1340 002323 5307 JMP PRGL4A /GO SAVE, BUMP, AND EXIT /A193 1341 1342 /****************** NOTE ***********************************************/A194 1343 / /A194 1344 /IF WE ARE PROCESSING THE FIRST NORMAL CHARACTER IN A SEQUENCE /A194 1345 /THAT BEGAN (START DEAD) (SPACE) THEN IT IS A TECHNICAL CHARACTER /A194 1346 /THIS CHARACTER IS AN ASCII DIGIT WHICH IDENTIFIES THE GX SET WHERE /A194 1347 /THE TECHNICAL CHARACTER WILL BE FOUND AS FOLLOWS: /A194 1348 / G1 USASCII /A194 1349 / G2 DEC SUPPLEMENTAL /A194 1350 / G3 DEC TECHNICAL /A194 1351 / /A194 1352 /****************** NOTE ***********************************************/A194 1353 / /A194 1354 / THE ABOVE IMPLIES THAT NOT ALL THE TECHNICAL CHARACTERS ARE /A194 1355 / FOUND IN THE DEC TECHNICAL CHARACTER SET. /A194 1356 / /A194 1357 /****************** NOTE ***********************************************/A194 1358 / /A194 1359 / IN ORDER TO IMPLEMENT TECHNICAL CHARACTERS WE WILL MULTIPLEX THE /A194 1360 / USE OF G1 IN ORDER TO PRESERVE THE BOLD INTERPRETATION FUNCTIONALITY /A194 1361 / INTRODUCED IN VERSION 1.5 OF DECMATE-II /A194 1362 / /A194 1363 /****************** NOTE ***********************************************/A194 1364 1365 PRGL22, /TECHNICAL CHARACTER /A194 1366 /d227 ISZ PRDKFG /ENTER NORMAL DEAD KEY MODE (-2 TO -1) /A194 1367 002324 1436 TAD I PLPTR /GET THE DIGIT /A194 1368 002325 0361 AND (7337) /MASK ITS ATTRIBUTE BITS AND /C211 1369 /MAKE IT A CONTROL CODE IN THE RANGE /A194 1370 /OF 21-23 /A194 1371 /d227 JMP PRGL4A /GO RESAVE IN BUFFER & DO NXT CHR /A194 1372 002326 3351 DCA PRGCCS /save the control code /a227 1373 AC7775 / set up tech/multinat char expected /a227 undefined ^ 002327 0000 1374 002330 5332 JMP PRGLO9 / go wait for the next char /a227 1375 1376 1377 /THIS SECTION TREATS DEAD KEY SEQUENCE DELIMITORS. IF A DEAD KEY SEQUENCE 1378 /IS BEGINNING, SET THE OVERSTRIKE NEGATIVE. IF AT THE END, CLEAR IT. 1379 1380 PRGLO8, /BEGINNING OF DEAD KEY SEQUENCE 1381 AC7777 undefined ^ 002331 0000 1382 PRGLO9, /END OF DEAD KEY SEQUENCE 1383 002332 3353 DCA PRDKFG 1384 002333 5600 JMP I PRPCHR /DON'T STORE BUT MAKE NORMAL RETURN 1385 1386 1387 /THIS SECTION TREATS LINE TERMINATORS. IF THE LINE TERMINATOR IS A WORD- 1388 /WRAPPED (AC1=1) AND HYPHENATED (AC3=1) END OF LINE, A HYPHEN IS INSERTED 1389 /INTO THE BUFFER. IN ANY CASE, THE END OF LINE IS THEN INSERTED INTO THE 1390 /BUFFER. 1391 1392 PRGL10, 1393 002334 2200 ISZ PRPCHR /PREPARE TO MAKE EOL RETURN 1394 1395 002335 1436 TAD I PLPTR /RECOVER THE CHARACTER 1396 002336 1360 TAD (-2412) /SEE IF IT'S A HYPHENATED END OF LINE (AC1=1, AC3=1) 1397 002337 7640 SZA CLA 1398 002340 5600 JMP I PRPCHR /RETURN IF NOT 1399 1400 /WE MUST INSERT A HYPHEN INTO THE BUFFER. THIS IS DONE IN AN OVERLAY. 1401 1402 TAD (OVIHYP) /RETURN IS MADE TO PRGLO6 undefined ^ undefined ^ 002341 1357 1403 002342 4756 JMS PROV 1404 OBIHYP undefined ^ 002343 0000 1405 1406 / Deal with the special char /a227 1407 002344 4755 PRGSCH, JMS BHOOK / call the blaster /a227 1408 SPECEN / table entry /a227 undefined ^ 002345 0000 1409 002346 2353 ISZ PRDKFG / enter normal dead key mode /a227 1410 002347 2353 ISZ PRDKFG / enter normal dead key mode /a227 1411 002350 5315 JMP PRGLO6 / return /a227 1412 1413 002351 0000 PRGCCS, 0 / holds the control code 21,22,23 for tech/multinat/line /a227 1414 002352 0000 PRHMOD, 0 /RECORDS MODE BITS OF LAST CHARACATER INSERTED INTO BUFFER SO 1415 /THAT AN INSERTED HYPHEN CAN TAKE ITS MODE BITS 1416 1417 002353 0000 PRDKFG, 0 /DEAD KEY FLAG. CAN TAKE VALUES: /C194 1418 /7775 -- Tech/multinat/line char expected /a227 1419 /7776 -- START DEAD, SPACE 1420 /7777 -- START DEAD 1421 /0000 -- NO DEAD KEY SEQUENCE IN PROCESS 1422 /0001 -- SUCCESSIVE CHR IN DEAD KEY SEQUENCE 1423 /0002 -- SUCCESSIVE ASCII CHR DEADED ON A TECH CHR 1424 1425 1426 002354 0000 PRTABF, 0 /CONTAINS THE VALUE TO REPLACE TAB SPACES WITH 1427 1428 1429 /------------------------- 1430 002355 5124 PAGE 002356 1664 002357 0000 002360 5366 002361 7337 002362 0177 002363 2535 002364 1777 002365 2040 002366 1600 002367 0001 002370 0002 002371 7764 002372 0010 002373 0005 002374 0023 002375 1737 002376 7740 002377 5740 1431 1432 /PRGCHR - GET A CHARACTER FROM THE INPUT STREAM 1433 / USED WHEN KNOWN TO BE OUTSIDE OF A CONTROL BLOCK... /A170 1434 1435 /THIS ROUTINE RETURNS THE CONTENTS OF THE BACKUP LOCATION IF IT IS NOT 1436 /CLEARED. IT GETS THE NEXT CHARACTER AND TESTS IT FOR START CONTROL. 1437 /IF IT IS A START CONTROL WE INVOKE AN OVERLAY TO PROCESS CONTROL BLOCKS. 1438 /SOONER OR LATER WE RETURN THE FIRST CHARACTER WHICH IS NOT PART OF A 1439 /A PRINT CONTROL BLOCK. 1440 1441 /AC=0 1442 /JMS PRGCHR 1443 /AC=CHARACTER 1444 1445 PRGCHR, 1446 XX undefined ^ 002400 0000 1447 1448 PRGCH1, 1449 002401 1020 TAD PRGCBK /GET THE BACKUP LOCATION CHARACTER 1450 002402 7450 SNA /USE IT IF NOT CLEAR 1451 1452 002403 4231 JMS PRRULE /NO--READ ANOTHER CHARACTER 1453 1454 /A CHARACTER HAS BEEN FOUND. IF THE CHARACTER IS A BEGIN PRINT CONTROL, 1455 /THE PRINT CONTROL IS PROCESSED AND WE TRY FOR ANOTHER CHARACTER. OTHERWISE, 1456 /THE CHARACTER IS RETURNED. 1457 1458 DCA T2 /SAVE THE CHARACTER undefined ^ undefined ^ 002404 3000 1459 002405 3020 DCA PRGCBK /CLEAR THE BACKUP LOCATION 1460 1461 TAD T2 /RESTORE THE CHARACTER undefined ^ undefined ^ 002406 1000 1462 002407 1377 TAD (-1014) /IS IT THE BEGINNING OF A PRINT CONTROL? 1463 002410 7650 SNA CLA 1464 002411 5214 JMP PRGCH2 /YES -- JUMP TO HANDLE IT 1465 1466 /RETURN THE CHARACTER. 1467 1468 TAD T2 /GET CHARACTER AGAIN INTO AC undefined ^ undefined ^ 002412 1000 1469 002413 5600 JMP I PRGCHR /AND RETURN 1470 1471 1472 /THIS SECTION HANDLES PRINT CONTROL BLOCKS. THE PRINT CONTROL CODE IS 1473 /INVOKED. WHEN IT COMPLETES, IT RETURNS TO PRGCH1, PRGCH2, OR PRGCH4. 1474 1475 PRGCH2, 1476 TAD (OVCNTL) /CONTROL BLOCK CODE MUST BE INVOKED undefined ^ undefined ^ 002414 1376 1477 002415 4775 JMS PROV 1478 OBCNTL undefined ^ 002416 0000 1479 1480 /***********************************************************************/ 1481 / / 1482 / PRGCHC--GET A CHARACTER WHILE IN A CONTROL BLOCK / 1483 / THIS ROUTINE IS USED TO GET CHARACTERS WHILE IN CONTROL / 1484 / BLOCKS. IF AN END OF FILE IS FOUND BEFORE AN END / 1485 / CONTROL, WE REPORT MISMATCHED CONTROLS AND STOP / 1486 / PROCESSING. / 1487 / / 1488 / JMS PRGCHC / CALL / 1489 / JMP EOC... / END OF CONTROL / 1490 / ..CONTINUE HERE WITH CHR IN AC IF NOT EOC OR EOF / 1491 / / ROUTINE GOESTO TO MISCTL IF EOF / 1492 1493 PRGCHC, XX /A170 undefined ^ 002417 0000 1494 002420 4231 JMS PRRULE / GET A CHARACTER 1495 002421 7440 SZA / SKIP IF EOC OR EOF 1496 002422 2217 ISZ PRGCHC / BUMP RETURN IF NOT EOF OR EOC 1497 002423 7440 SZA / SKIP IF EOC OR EOF 1498 002424 5617 JMP I PRGCHC / NOT END CONTROL OR END FILE 1499 TAD T1 / SEE WHICH undefined ^ undefined ^ 002425 1000 1500 002426 7640 SZA CLA 1501 002427 5617 JMP I PRGCHC / END OF CONTROL--RETURN SANS INCREMENT 1502 002430 5774 JMP MISCTL / END OF FILE--BAD NEWS 1503 1504 /THIS ROUTINE GETS THE NEXT CHARACTER FROM THE FILE INTERFACE. IF THE 1505 /CHARACTER IS THE BEGINNING OF A RULER, THE RULER IS PROCESSED AND THE 1506 /NEXT CHARACTER IS CONSIDERED. THE FIRST NON-RULER CHARACTER ENCOUNTERED 1507 /IS RETURNED. 1508 1509 PRRULE, 1510 XX undefined ^ 002431 0000 1511 1512 PRRUL1, 1513 002432 4773 JMS READCH /GET ANOTHER CHARACTER 1514 1515 /WHEN RETURN CHR IS IN AC AND T1 EXCEPT IF END 1516 /PRINT CONTROL, IN WHICH CASE AC IS CLEAR BUT 1517 /T1 STILL CONTAINS EPC 1518 002433 7450 SNA /SEE IF EPC OR EOF /A163 1519 002434 5631 JMP I PRRULE /YES, RETURN /A163 1520 1521 002435 1372 TAD (-16) /IS IT A RULER START? 1522 002436 7650 SNA CLA 1523 002437 5242 JMP PRRUL2 /YES--PROCESS THE RULER 1524 1525 /WE MERELY HAVE A NORMAL CHARACTER--RETURN IT 1526 1527 TAD T1 /RECOVER THE CHARACTER undefined ^ undefined ^ 002440 1000 1528 1529 1530 PRRUL3, / IF END OF FILE IS FOUND IN A RULER RETURN HERE 1531 1532 002441 5631 JMP I PRRULE /AND RETURN IT 1533 1534 /THE CHARACTER IS A RULER. CONTINUE ON THE RULER OVERLAY. 1535 1536 PRRUL2, 1537 TAD (OVRULR) /GET THE OVERLAY ADDRESS undefined ^ undefined ^ 002442 1376 1538 002443 4775 JMS PROV /AND CONTINUE--CONTROL RETUNS TO PRRUL1 1539 OBRULR undefined ^ 002444 0000 1540 1541 1542 1543 /THIS ROUTINE MAINTAINS THE VERTICAL POSITION OF THE PRINTER. IT EXPECTS 1544 /AS AN ARGUMENT THE NUMBER OF VERTICAL UNITS TO MOVE. AFTER UPDATING THE 1545 /VERTICAL POSITION, IT DOES THE MOVE. 1546 1547 /TAD MOVE (POSITIVE OR NEGATIVE) 1548 /JMS PRMOVE 1549 /AC=0 1550 1551 PRMOVE, XX undefined ^ 002445 0000 1552 002446 3334 DCA PRMOVT /SAVE THE MOVE 1553 1554 /WE WANT THE MOTION TO TAKE PLACE EVEN IF WE ARE PRINTING TO /A189 1555 /A HOST. WE MUST MAKE LPONLN NONZER ONLY IF IT IS ZERO (HOST) /C194 1556 /SO THAT PRESCS THINKS WE HAVE A PRINTER ONLINE /A189 1557 1558 002447 1011 TAD LPONLN /GET TYPE OF PRINTER ONLINE /A189 1559 002450 7650 SNA CLA /SKIP IF A PRINTER IS ATTACHED /C194 1560 002451 2011 ISZ LPONLN /IF LPONLN 0000 MAKE 0001 /C194 1561 1562 /UPDATE THE VERTICAL POSITION. 1563 1564 002452 1023 TAD PRGSVP /GET THE CURRENT VERTICAL POSITION 1565 002453 4315 JMS CKMOVE /CHECK FOR BOUNDARY OVERFLOW /A105 1566 002454 3023 DCA PRGSVP /SAVE AS THE NEW VERTICAL POSITION 1567 1568 002455 1024 TAD PRGSAP /GET THE ABSOLUTE VERTICAL POSITION 1569 002456 4315 JMS CKMOVE /CHECK FOR BOUNDARY OVERFLOW /A105 1570 002457 3024 DCA PRGSAP /SAVE AS THE NEW ABSOLUTE VERTICAL POSITION 1571 1572 /FORWARD AND BACKWARD MOTION ARE HANDLED DIFFERENTLY. 1573 1574 002460 1334 TAD PRMOVT /GET THE REQUESTED MOVE 1575 002461 7500 SMA 1576 002462 5273 JMP PRMOV3 /JUMP TO HANDLE A FORWARD MOVE 1577 1578 /OTHERWISE, CONTINUE TO HANDLE A BACKWARD MOVE 1579 1580 1581 /WHEN PRINTING TO THE LQP, THE BOTTOMS OF THE HOLES IN THE FORM PAPER 1582 /ARE TIGHT AGAINST THE SPROCKETS. WHEN WE MOVE BACK AND BEGIN PRINTING, 1583 /THOUGH, THE TOPS OF THE HOLES ARE TIGHT AGAINST THE SPROCKETS. AS THE 1584 /PAPER MOVES FORWARD AGAIN, THE PAPER SLIPS UNTIL THE BOTTOMS ARE TIGHT 1585 /AGAIN, CAUSING MISALIGNMENT. 1586 1587 /TO REMEDY THIS, WE FORCE THE PAPER TO MOVE BACK A LITTLE BIT MORE THAN 1588 /IS NECESSARY, AND THEN MOVE FORWARD AGAIN. THE BOTTOMS OF THE HOLES ARE 1589 /THEN TIGHT. 1590 1591 /REMOVED THE BREAKING UP OF THE MOVE INTO CHUNKS /A128 1592 /ACCORDING TO MAXMOV LOGIC /A128 1593 1594 002463 4771 JMS PRCALK /CALCULATE THE SLACK KONSTANT /A103 1595 002464 1304 TAD PRSLCK /LOAD THE SLACK KONSTANT /A103 1596 002465 7041 CIA /NEGATE /A103 1597 002466 1334 TAD PRMOVT /ADD THE NEGATIVE AMOUNT TO MOVE /A103 1598 1599 /WE NOW ENTER A LOOP TO FORCE THE BACKWARD MOTION. 1600 002467 4305 JMS PRFMOV /FORCE THE MOTION 1601 1602 /THE BACKWARD MOTION IS NOW COMPLETED, AND THE PAPER HAS BEEN FORCED BACK 1603 /PRSLCK UNITS PAST THE ULTIMATE DESTINATION. NOW MOVE FORWARD THAT AMOUNT 1604 /AND RETURN. 1605 1606 002470 1304 TAD PRSLCK /GET THE SLACK AMOUNT /A103 1607 002471 3334 DCA PRMOVT /SAVE AS THE AMOUNT TO MOVE 1608 002472 1334 TAD PRMOVT /RECOVER THE NEW MOVE 1609 1610 /THE CODE FOR A REGULAR FORWARD MOVE JOINS HERE. THIS SECTION MOVES FORWARD 1611 /THE AMOUNT IN PRMOVT. 1612 1613 PRMOV3, 1614 1615 002473 4770 JMS PRESCS /SEND BUT DO NOT FORCE THE REQUESTED MOTION 1616 002474 0071 PCMPUP 1617 1618 002475 1064 TAD PRTMOV /ADD TOTAL UNFORCED MOTION TO REQUESTED MOTION 1619 002476 3064 DCA PRTMOV /SAVE AS NEW TOTAL UNFORCED MOTION 1620 1621 PRMOV6, /MAKE LPONLN 0000 IF NOW 0001 (HOST) SEE TOP ROUTINE /C194 1622 1623 AC7777 / /A194 undefined ^ 002477 0000 1624 002500 1011 TAD LPONLN /A194 1625 002501 7650 SNA CLA /A194 1626 002502 3011 DCA LPONLN /MAKE 0000 IF NOW 0001 (HOST) /C194 1627 002503 5645 JMP I PRMOVE /RETURN 1628 1629 1630 002504 0000 PRSLCK, 0 /THE CALCULATED SLACK KONSTANT /A103 1631 1632 /THIS ROUTINE EXPECTS AN AMOUNT TO MOVE IN THE AC. IT TRANSMITS THE 1633 /MOTION AND THEN FORCES IT (AND ANY ACCUMULATED UNFORCED MOTION) TO 1634 /TAKE PLACE. 1635 1636 /THE VALUE PRTMOV CONTAINS THE TOTAL MOTION WHICH HAS BEEN TRANSMITTED 1637 /BUT NOT FORCED TO DATE. IT IS CLEARED BY THIS ROUTINE (WHICH FORCES 1638 /THE MOTION). 1639 1640 /THIS ROUTINE DOES NOT RECORD THE FORCED MOTION IN THE VERTICAL POSITION 1641 /VARIABLES, BECAUSE THIS ROUTINE IS PROVIDED ONLY FOR CALL BY PRMOVE, 1642 /WHICH HAS PREVIOUSLY RECORDED THE MOVEMENT. ALL OTHER CALLERS SHOULD 1643 /USE PRMOVE TO MAKE THE MOTION AND RECORD THE MOVE, AND ONLY THEN CALL 1644 /PRFMOV WITH A ZERO ARGUMENT TO FORCE THE MOTION. 1645 1646 /AC=AMOUNT TO MOVE 1647 /JMS PRFMOV 1648 /AC=0 1649 1650 PRFMOV, 1651 XX undefined ^ 002505 0000 1652 1653 002506 4770 JMS PRESCS /SEND THE REQUESTED MOTION 1654 002507 0071 PCMPUP 1655 002510 7200 CLA 1656 1657 002511 4770 JMS PRESCS /FORCE THE MOTION TO OCCUR 1658 002512 0076 PCMFV 1659 1660 002513 3064 DCA PRTMOV /CLEAR TOTAL UNFORCED MOTION 1661 002514 5705 JMP I PRFMOV /AND RETURN 1662 1663 /***********************************************************************/ 1664 / / 1665 / CKMOVE--CHECK VERTICAL MOVEMENT FOR PAGE OVERFLOW / 1666 / IF AUTO-PAGINATION IS NOT IN EFFECT WRAP IF / 1667 / NECESSARY SO THAT VERTICAL POSITION IS ALWAYS / 1668 / WITHIN CURRENT PAGE / 1669 / ROUTINE ADDED REV105 / 1670 / / 1671 / THE ROUTINE IS CALLED WITH A VALUE IN THE AC. / 1672 / THIS VALUE IS COMPARED TO THE PAGE SIZE / 1673 / IF IT EXCEEDS THE PAGE SIZE, THE PAGE SIZE IS / 1674 / SUBTRACTED FROM IT AND A NEW VALUE IS RETURNED / 1675 / OTHERWISE, THE ORIGINAL VALUE IS RETURNED / 1676 / / 1677 /***********************************************************************/ 1678 1679 CKMOVE, XX undefined ^ 002515 0000 1680 002516 1334 TAD PRMOVT / ADD IN CURRENT LINE SIZE / 1681 002517 3333 DCA CKTEMP / SAVE / 1682 002520 1767 TAD PRQAPG / IS AUTO-PAGINATION IN EFFECT? / 1683 002521 7640 SZA CLA 1684 002522 5331 JMP CKMOV1 / NO, JUMP 1685 1686 002523 1766 TAD PRQPSZ / GET "-PAGE SIZE" 1687 002524 7041 CIA 1688 002525 1333 TAD CKTEMP / SEE IF VERTICAL PSN IS BEYOND PS 1689 002526 7510 SPA / SKIP IF YES. DON'T UN-NORMALIZE 1690 002527 1766 TAD PRQPSZ / NORMALIZE BACK TO CURRENT VERT PSN 1691 002530 3333 DCA CKTEMP / SAVE 1692 002531 1333 CKMOV1, TAD CKTEMP / GET UPDATED RETURN VALUE 1693 002532 5715 JMP I CKMOVE / RETURN 1694 1695 002533 0000 CKTEMP, 0 / A TEMPORARY FOR THIS ROUTINE 1696 002534 0000 PRMOVT, 0 / TEMPORARY FOR PRMOVE ROUTINE /m227 /A105 1697 1698 /***********************************************************************/ 1699 / / 1700 / PLNXT---SUBROUTINE TO GET POINT TO NEXT CHARACTER IN PRLBUF / 1701 / THE POINTER PLPTR MAY BE ADVANCED EITHER FORWARD / 1702 / OR BACKWARD DEPENDING ON PLDIR BEING 0001 OR 7777, / 1703 / WHICH IS SET UP BEFORE CALLING THE ROUTINE / 1704 / / 1705 / PLCNT IS THE NEGATIVE OF THE SPACE REMAINING THE THE BUFFER / 1706 / IF THERE IS MORE ROOM, THE BUFFER POINTER IS MOVED AND / 1707 / THE SKIP RETURN IS MADE, OTHERWISE THE POINT IS UNMOVED / 1708 / AND A NORMAL RETURN IS MADE INDICATING NO MORE CHRS / 1709 / / 1710 /***********************************************************************/ 1711 1712 /AC=0 1713 /JMS PLNXT 1714 /AC=0--NO MORE ROOM IN BUFFER 1715 /AC=0--MORE ROOM IN BUFFER 1716 1717 PLNXT, 1718 XX undefined ^ 002535 0000 1719 1720 002536 2037 ISZ PLCNT /INCREMENT THE COUNTER 1721 002537 7000 NOP /DON'T CARE IF IT SKIPS 1722 002540 1037 TAD PLCNT /GET THE COUNT--IS THERE ROOM LEFT? 1723 002541 7700 SMA CLA 1724 002542 5735 JMP I PLNXT /THE COUNT HAS REACHED ZERO, NO MORE ROOM 1725 1726 002543 1040 TAD PLDIR /THERE IS ROOM FOR NEXT TIME--MOVE THE POINTER 1727 002544 1036 TAD PLPTR 1728 002545 3036 DCA PLPTR 1729 1730 002546 2335 ISZ PLNXT /INCREMENT THE RETURN LOCATION 1731 002547 5735 JMP I PLNXT /AND RETURN 1732 1733 / THESE ARE THE BUFFERS FOR THE CHRSET FINAL STRINGS /A160 1734 / THEY MUST BE RESIDENT. EACH TIME A PRINTER CHRSET BOLD /A160 1735 / OR NONBOLD IS ENCOUNTERED A NEW STRING IS PUT IN THE APPROPRIATE /A160 1736 / BUFFER. THE BUFFERS ARE THEN COMPARED. IF THE STRINGS ARE /A160 1737 / THE SAME THERE IS NO BOLD INTERPRETATION, IF THEY ARE DIFFERENT /A160 1738 / THERE IS BOLD INTERPRETATION /A160 1739 1740 CHRSSZ=4 / SIZE OF EACH BUFFER INCLUDING ZERO TERMINATOR /A160 1741 1742 002550 0000 PCHFBO, ZBLOCK CHRSSZ / THE BOLD FINAL STRING /A160 002551 0000 002552 0000 002553 0000 1743 002554 0000 PCHFNB, ZBLOCK CHRSSZ / THE NONBOLD FINAL STRING /A160 002555 0000 002556 0000 002557 0000 1744 1745 1746 / THE XSXD STRING IS SENT BY THE ESCXD ROUTINE RESIDING IN ESC02 TO 1747 / SET OR RESET PROPORTIONAL MODE 1748 / THE P2PSET IS THE VARIABLE PART WHICH IS DETERMINED BY THE CODE 1749 / IN P2INIT 1750 / 1751 / 1752 002560 0077 XSXD, 77 ; 62 ; 67 / ? 2 7 002561 0062 002562 0067 1753 002563 0000 P2PSET, 0 / either "h or "l 1754 /-------------------- 1755 002566 6405 PAGE 002567 6413 002570 5000 002571 2762 002572 7762 002573 6600 002574 3634 002575 1664 002576 0000 002577 6764 1756 1757 /***********************************************************************/ 1758 / / 1759 / THE FOLLOWING STRINGS ARE ALL SENT AS ESCAPE SEQUENCES BY THE / 1760 / ESC02 MODULE. / 1761 / / 1762 /***********************************************************************/ 1763 1764 002600 0052 XSSGR, 52; 4155 / GENERAL SGR, 1 PARAMETER /A211 002601 4155 1765 002602 0064 XDUNDR, 64 / ESC [ 4 m / SET UNDERLINING 1766 002603 4155 XDRST, 4155 / ESC [ m / RESET ALL MODES 1767 002604 0077 XDSHAD, 77; 62; 4155 / ESC [ ? 2 m / SET SHADOW 002605 0062 002606 4155 1768 002607 0077 XDSEC, 77; 61; 4155 / ESC [ ? 1 m / SET SECONDARY 002610 0061 002611 4155 1769 002612 0061 XDPRIM, 61; 4155 / ESC [ 1 m / SET PRIMARY 002613 4155 1770 002614 0070 XDSBL, "8&177; "m&177+4000 / ESC [ 8 m / DISABLE HAMMAR 002615 4155 1771 002616 0052 XSTRAY, "*&177 ; 41 ; 4166 / ESC [ TRAY SELECT ! v 002617 0041 002620 4166 1772 002621 0052 XSPAGS, "*&177 ; 4164 / ESC [ PAGESIZE t 002622 4164 1773 002623 0052 XSMOVE, "*&177;"a&177+4000 / LQP02 ESCAPE SEQ TO ADVANCE PRINT HEAD/A080 002624 4141 1774 / IN "PRINT UNITS" INCREMENTS. /A080 1775 002625 0052 XSLEFT, "*&177;"!&177;"t&177+4000/ LQP02 ESC SEQ TO ADV LEFT PRINT UNITS/A084 002626 0041 002627 4164 1776 1777 002630 0033 XSPLD, ESC; 4113 / CAPITAL K FOR PLD (FWD) /C207 002631 4113 1778 1779 002632 0033 XSPLU, ESC; 4114 / PARTIAL LINE UP (REV) /C188 002633 4114 1780 002634 0033 XSXE, 33; 43; 4071 / ESC # 9 / FORCE VERTICAL ADVANCE 002635 0043 002636 4071 1781 1782 / THE FOLLOWING SEQUENCE IS USED TO SET G2 TO DEC MULTINATIONAL /A200 1783 / AND G3 TO DEC TECHNICAL CHARACTER SET /A200 1784 002637 0033 XSTCSI, ESC; 2052; "<&177; ESC; 53; ">&177 /a200 002640 2052 002641 0074 002642 0033 002643 0053 002644 0076 1785 002645 0033 ESC; 51; "0&177+4000 /A236 002646 0051 002647 4060 1786 1787 / THE FOLLOWING ARE FOR THE SS2 AND SS3 SEQUENCE GENERATION 1788 002650 0033 XSSS, ESC; 4052 / * IS A STRING POINTER /A200 002651 4052 1789 002652 4116 XSSS2, 4116 / ESC N IS SS2 /A200 1790 002653 4117 4117 / ESC O IS SS3 /A200 1791 / NOTE THAT XST94 AND XST95 HAVE SS3 IMBEDED IN THEM /A200 1792 002654 0033 XST94, 33; 117; 4041 / ESC O ! / SELECT TABLE POSITION 94 002655 0117 002656 4041 1793 002657 0033 XST95, 33; 117; 4042 / ESC O " / SELECT TABLE POSITION 95 002660 0117 002661 4042 1794 1795 / / SET HORIZONTAL CHAR SIZE 1796 / /ESC [ 120 ; *-200 ; Sp G 1797 002662 0061 XSCHRS, 61 ; 62 ; 60 ; 73 ; "*-200 ; 40 ; 4107 002663 0062 002664 0060 002665 0073 002666 0052 002667 0040 002670 4107 1798 1799 / THE RIGHT MARGIN WAS CHANGED FROM 158 TO 330 BECAUSE THE LQP02 /A111 1800 / CALCULATES THE RIGHT MARGIN IN RELATIVE UNITS (NUMBERS OF CHARACTERS) /A111 1801 / WHICH VARIES ACCORDING TO PITCH. SINCE WE CAN HAVE 13.2 INCHES OF /A111 1802 / CHARACTERS AT 25 PITCH, THE RIGHT MARGIN BELONGS AT 330 CHARACTERS /A111 1803 / THIS SITUATION CAN OCCUR EASILY IN MULTICOLUMN APPLICATIONS /A111 1804 / / ESC [ LEFT MARGIN ; RIGHT MARGIN s 1805 002671 0052 XSMARG, "*-200 ; 73; 63 ; 63 ; 60 ; 4163 / LM;330s /A111 002672 0073 002673 0063 002674 0063 002675 0060 002676 4163 1806 1807 002677 0252 XSJSFY, "*; ";; "*; ";; "*; ";; "*; "!; 4163 /DECFIL JUSTIFY /M217 002700 0273 002701 0252 002702 0273 002703 0252 002704 0273 002705 0252 002706 0241 002707 4163 1808 1809 002710 0061 XSSPUM, "1&177;"1&177;"h&177+4000 / set PUM mode ($[11h) /A080 002711 0061 002712 4150 1810 002713 0061 XSRPUM, "1&177;"1&177;"l&177+4000 / reset PUM mode ($[11l) /A080 002714 0061 002715 4154 1811 002716 0252 XSIVPR, "*;"e+4000 / increment vertical position relative /a229 002717 4345 1812 002720 0252 XSDVPR, "*;"k+4000 / decrement vertical position relative /a229 002721 4353 1813 002722 0252 XSIHPR, "*;"a+4000 / increment horizontal position relative/a229 002723 4341 1814 002724 0252 XSDHPR, "*;"j+4000 / decrement horizontal position relative/a229 002725 4352 1815 002726 0077 XSEXRP, 77 ; 52 ; 4156 /ESC [ ? * n ENABLE/DISBLE/SEND STATUS 002727 0052 002730 4156 1816 002731 0052 XSSPAC, "*-200 ; 41 ; 4171 /ESC [ space size ! y 002732 0041 002733 4171 1817 002734 0033 PRSTG0, 33; 50; 4052 / ESC-(-FINAL /A151 002735 0050 002736 4052 1818 002737 0033 PRSTG1, 33; 51; 4052 / ESC-)-FINAL /A151 002740 0051 002741 4052 1819 002742 0052 XDFONT, 52; 4155 / ESC [ * m /A152 002743 4155 1820 002744 0052 XSPITCH,52; 4167 / ESC [ * w /A152 002745 4167 1821 002746 0052 XSTABL, 52; 41; 4170 / ESC [ * ! x LQP02 TABLE SELECT/A173 /C174 002747 0041 002750 4170 1822 002751 0040 XSCOLA, SPC; ESC; 133; 52; 4140 / SPACE ESC [ * @ /C222 002752 0033 002753 0133 002754 0052 002755 4140 1823 002756 0077 XSPFS, 77; 52; 40; 4112 / ESC [ ? * SPC J PAGE FORMAT SELECT /A215 002757 0052 002760 0040 002761 4112 1824 1825 / THE XSXD STRING IS SENT BY THE ESCXD ROUTINE RESIDING IN ESC02 TO 1826 / SET OR RESET PROPORTIONAL MODE 1827 / THE P2PSET IS THE VARIABLE PART WHICH IS DETERMINED BY THE CODE 1828 / IN P2INIT 1829 / 1830 / 1831 / moved to previous page 1832 /d236XSXD, 77 ; 62 ; 67 / ? 2 7 1833 /d236P2PSET, 0 / either "h or "l 1834 1835 1836 /***********************************************************************/ 1837 / / 1838 / PRCALK--CALCULATE SLACK KONSTANT. (ADDED REV103) / 1839 / THE LQP02 DOES NOT LET US ROLLBACK BEYOND THE TOP / 1840 / OF THE PAGE, AS WE WOULD IF THE TOP MARGIN WAS 3 / 1841 / AND THE ROLLBACK CONSTANT WAS 4. IN THIS CASE THE / 1842 / LQP02 IS KNOWN TO THROW AWAY ONE LINE OF ROLLBACK, / 1843 / BUT NOT THROW AWAY ONE LINE OF ROLLAHEAD, CREATING / 1844 / A MULTICOLUMN FORMAT WHERE THE LEFTMOST GROUP IS / 1845 / ONE COLUMN HIGHER THAN THE OTHER GROUPS. / 1846 / / 1847 / THIS ROUTINE CHECKS TO SEE IF THAT IS WHAT WOULD / 1848 / HAPPEN. IT SPECIFIES THAT THE ROLLBACK AMOUNT / 1849 / PRSLCK BE THE SMALLER OF PRMSLK OR THE DISTANCE / 1850 / TO THE TOP OF THE PAGE / 1851 / / 1852 /***********************************************************************/ 1853 1854 PRCALK, XX undefined ^ 002762 0000 1855 002763 1024 TAD PRGSAP / LOAD ABSOLUTE VERTICAL POSITION / 1856 002764 1377 TAD (-PRMSLK) / SEE IF WE WILL ROLLBACK TOO FAR / 1857 002765 7700 SMA CLA 1858 002766 5372 JMP PRCAL2 / NO, EVERYTHING IS OK / 1859 1860 002767 1024 TAD PRGSAP / YES, SO USE ABSOLUTE POSITION / 1861 002770 3776 PRCAL1, DCA PRSLCK / SET SLACK KONSTANT / 1862 002771 5762 JMP I PRCALK / RETURN / 1863 1864 PRCAL2, / NORMAL SLACK / 1865 002772 1375 TAD (PRMSLK) / LOAD NORMAL VALUE / 1866 002773 5370 JMP PRCAL1 / GO STUFF & EXIT / 1867 1868 IFDEF DEVEL1 < /A143 1869 1870 /THIS LITTLE ROUTINE IS FOR DIAGNOSING ESCAPE SEQUENCES SENT TO THE PRINTER 1871 /IF THE COLUMN MARGIN IS SET TO 430 AND THE DEVELOPMENT SWITCH IN WP27F0 1872 /IS ON, WE WILL BE ABLE TO PRINT AN E IN PLACE OF EVERY ESCAPE. 1873 /IN THIS WAY WE WILL BE ABLE TO GET A HARD COPY OF WHAT IS GOING TO THE PRINTER. 1874 1875 /IF WE ENCOUNTER A CARRIAGE RETURN WE WILL ALSO ADD A LINE FEED 1876 /SO WE WILL NOT OVERPRINT 1877 1878 PRCHR5, TAD (-656) / SEE IF COLUMN MARGIN IS 430 DECIMAL 1879 / THIS WONDERFUL MAGIC NUMBER IS 1880 / HARRY PREBLE' BIRTHDAY, IN CASE 1881 / YOU ASTUTE READERS CARED 1882 TAD PRQCM 1883 SZA CLA 1884 JMP PRCHR4 / NO, PROCEED NORMALLY 1885 1886 TAD PRCHAT / GET THE CHARACTER TO BE PRINTED 1887 TAD (-33) / SEE IF ESCAPE 1888 SNA 1889 JMP PRCESC / YES, GO PRINT AN ASCII E 1890 1891 TAD (33-15) / SEE IF CARRIAGE RETURN 1892 SZA CLA 1893 JMP PRCHR4 / NO, PROCEED AS USUAL 1894 1895 TAD (LF) / IS CARRIAGE RETURN, SEND A LINE FEED FIRST 1896 PRCHR6, CIFSYS 1897 LPTOU 1898 SKP CLA / NO ROOM 1899 JMP PRCHR4 / LINE FEED OUT, NOW DO A CR 1900 1901 CIFSYS 1902 JWAIT 1903 JMS SQPINP 1904 TAD (LF) / LOAD LINE FEED AGAIN 1905 JMP PRCHR6 / TRY AGAIN 1906 1907 PRCESC, TAD (105 / LOAD AN ASCII E 1908 DCA PRCHAT / STUFF IT 1909 JMP PRCHR4 / AND PROCEED AS USUAL 1910 1911 > / END IFDEF DEVEL1 1912 1913 /------------------------ 1914 002775 0060 PAGE 002776 2504 002777 7720 1915 1916 /***********************************************************************/ 1917 / / 1918 / ESC02--PART OF PRESCS. CALLED IF PRINTER IS NOT LQPSE / 1919 / 1920 / THE PHILOSOPHY IS THAT ALL OTHER PRINTERS ARE DESIGNED TO 1921 / DEC SPECIFICATIONS AND STANDARDS. IN PARTICULAR, THEY ARE 1922 / COMPATIBLE WITH DEFINITIONS OF STANDARD ESCAPE SEQUENCES 1923 / WHICH HAVE CERTAIN DEFINED INTRODUCERS, INTERMEDIATE, AND 1924 / FINAL CHARACTERS. IF A PARTICULAR PRINT CANNOT PERFORM THE 1925 / FUNCTION SPECIFIED BY A PARTICULAR ESCAPE SEQUENCE AT LEAST 1926 / IT WILL PROPERLY IGNORE THE SEQUENCE AND NOT PRINT EXACTLY 1927 / THOSE CHARACTERS BELONGING TO THE ESCAPE SEQUENCE AND BEGIN 1928 / PRINTING AGAIN EXACTLY WHEN IT SHOULD. 1929 / 1930 / ENTER ACC = BINARY Ps OR Pn VALUE 1931 / EXIT ACC = " " " " " 1932 / 1933 / CALLING SEQUENCE: TAD Ps or Pn VALUE 1934 / JMS PRESCS 1935 / CODE 1936 / THE PARAMETER "CODE" WHICH FOLLOWS THE CALL IS IN GENERAL 1937 / AN ASCII VALUE. THIS IS DONE TO MAINTAIN COMPATIBLITIY 1938 / WITH THE EARLIEST VERSION OF PRESCS WRITTEN TO HANDLE THE LQPSE 1939 / THE ASCII CODES FOR THIS ROUTINE ARE BASED AT 071 OCTAL--ASCII 9 1940 1941 / VARIABLES USED: 1942 / XSADX POINTER TO THE ESCAPE STRING AS IT IS BEING TRANSMITTED. 1943 / ESCNUM A VARIABLE STRING, TO CONTAIN ASCII NUMERIC CHARACTERS. 1944 / THESE STRINGS ARE THE VARIABLE PARTS OF ESCAPE SEQUENCES. 1945 / NUMPTR A POINTER INTO ESCNUM THAT IS USED IN BOTH PUTTING ASCII 1946 / NUMERIC CHARACTERS INTO ESCNUM AND IN TRANSMITTING THEM. 1947 / 1948 / IF AN ESCAPE STRING HAS A VARIABLE COMPONENT, THE STRING CONTAINS 1949 / AN '*' (52 OCTAL). WHEN OUTPUTTING THE STRING, IF AN '*' IS FOUND 1950 / THE OUTPUT SWITCHES TO 'ESCNUM' UNTIL THE NUMBER HAS BEEN SENT. 1951 / THEN XSADX TAKES OVER AGAIN AS THE OUTPUT POINTER. 1952 / 1953 ////////////////////////////////////////////////////////////////////// 1954 / ESC / [ / YYY / * / WWW / 4000 / 1955 ////////////////////////////////////////////////////////////////////// 1956 / ^ | 1957 / | | 1958 / | |---->/////////////////////////////////// 1959 / | ESCNUM / '0-9' / '0-9' / '0-9' / 4000 1960 / | //////////////////////////////// 1961 / | ^ 1962 / |----XSADX | 1963 / | 1964 / |----NUMPTR 1965 / 1966 ///////////////////////////////////////////////////////////////////// 1967 / 1968 / ALL OF THE ROUTINES ACTIVATED BY THIS CASE STRUCTURE SEND ONE 1969 / OR MORE ESCAPE STRINGS. THE ROUTINES ARE CALLED ESC--- AND 1970 / THE STRINGS ARE DESIGNATED XS---. WHERE THE ESCAPE STRING HAS 1971 / A PARAMETER, THE ROUTINE WILL CONVERT THE BINARY VALUE INTO 1972 / ASCII AND STORE THE RESULT IN 'ESCNUM'. THE ESCAPE STRINGS ARE 1973 / STORED WITHOUT THE 'ESC [' AS THESE ARE PRESENT IN ALL ESCAPE 1974 / STRINGS. THE OUTPUT ROUTINE 'CSISTR' AUTOMATICALLY OUTPUTS 1975 / THOSE TWO COMPONENTS. 1976 ESC02, / NO LONGER A SUBROUTINE /C165 1977 1978 / WE SAVE PRYES. CERTAIN ESCAPE SEQUENCES MUST BE OUTPUT /A164 1979 / EVEN IF PRINTING IS INHIBITED AS WE SCROLL THROUGH THE DOCUMENT /A164 1980 / EXAMPLES OF THESE ARE THOSE THAT DO NOT CAUSE PRINTING BUT DO /A173 1981 / AFFECT THE STATE OF THE PRINTER, SUCH AS PITCH, CHRSET, FONT, ETC. /A173 1982 / THOSE ROUTINES THAT MUST OUTPUT EVEN IF PRINTING IS INHIBITED /A173 1983 / CLEAR PRYES SOMEPLACE BEFORE CALLING PRCHAR /A173 1984 1985 003000 1034 TAD PRYES / SAVE PRYES INCASE PRINTING /A162 1986 003001 3227 DCA PRYES1 / IS INHIBITED /A162 1987 003002 1377 TAD (ESCNUM-1 1988 003003 3066 DCA NUMPTR / INITIALIZE THE NUMERIC OUTPUT PTR 1989 003004 1776 TAD PRESCS / GET POINTER TO CASE CODE 1990 003005 3226 DCA ESCT1 / STORE TO INDIRECT THROUGH 1991 003006 1626 TAD I ESCT1 / GET THE CASE CODE 1992 AND P177 / STRIP ANY POSSIBLE NLQPSE BIT /A165 undefined ^ undefined ^ 003007 0000 1993 003010 1375 TAD (-60 / SUBTRACT BASE CODE VALUE ASCII 0 1994 003011 7104 CLL RAL / MULTIPLY BY TWO WORDS PER ENTRY 1995 003012 1374 TAD (ESCCTB / ADD ESCAPE COMMAND TABLE BASE 1996 003013 3226 DCA ESCT1 / PREPARE TO READ THE TABLE PAIR 1997 003014 1626 TAD I ESCT1 / FIRST GET THE STRING ADDRESS 1998 003015 3076 DCA XSADX / SET THE STRING PTR 1999 003016 2226 ISZ ESCT1 / BUMP POINTER 2000 003017 1626 TAD I ESCT1 / GET THE ADDRESS OF THE ROUTINE 2001 003020 3226 DCA ESCT1 / STUFF IT FOR INDIRECT 2002 003021 5626 JMP I ESCT1 / JUMP TO THE CASED ROUTINE 2003 2004 2005 / WHEN WE ARE THROUGH SENDING THE ESCAPE SEQUENCE WE COME BACK HERE 2006 / TO MAKE A NICE CLEAN EXIT OF THIS ROUTINE 2007 2008 003022 7200 PRESXT, CLA / CLEAR THE ACCUMULATOR 2009 003023 1227 TAD PRYES1 / RESTORE PRYES /A162 2010 003024 3034 DCA PRYES / /A162 2011 003025 5773 JMP PRESC4 / GO RETURN FROM PRESCS /C165 2012 2013 003026 0000 ESCT1, 0 2014 003027 0000 PRYES1, 0 / SAVE PRYES HERE FOR ESC02 /A162 2015 2016 ESCCTB, / ESCAPE SEQUENCE TABLE 2017 2018 /STRING ; /ROUTINE 2019 2020 003030 2726 XSEXRP ; ESCXRP / 60 ENABLE/DISABLE EXTENDED REPORTS /A147 003031 3254 2021 003032 2734 PRSTG0 ; PRESF / 61 SET G0 CHRSET /A151 003033 3342 2022 003034 2737 PRSTG1 ; PRESF / 62 SET G1 CHRSET /A151 003035 3342 2023 003036 2742 XDFONT ; PREFNT / 63 FONT SELECT /A152 003037 3600 2024 003040 2744 XSPITCH ; CSIUWV / 64 DRAFT PRINTER PITCH /C173 003041 3262 2025 003042 2746 XSTABL ; CSIUWV / 65 LQP02 TABLE SELECT /A173 003043 3262 2026 XSTMRS ; PRESF / 66 RESET PRINTER (EXCEPT LQPSE) /C219 undefined ^ 003044 0000 003045 3342 2027 XSTMID ; CSIUWV / 67 REQUEST TERMINAL ID /A185 undefined ^ 003046 0000 003047 3262 2028 003050 2751 XSCOLA ; ESCSTV / 70 ABSOLUTE COLUMN POSITION /C222 003051 3347 2029 003052 2630 XSPLD ; ESC9 / 71 ACCUMULATE VERTICAL ADVANCE 003053 3142 2030 XSTQM ; CSIUWV / 72 SET QUALITY MODE (ONLY FROM OVDDCK)/C193 undefined ^ 003054 0000 003055 3262 2031 003056 2623 XSMOVE ; ESCXB / 73 ACCUMULATE HORIZONTAL ADVANCE 003057 3276 2032 003060 2650 XSSS ; PRESF1 / 74 SS2 OR SS3 /C200 003061 3343 2033 003062 2560 XSXD ; ESCXD / 75 ENABLE/DISABLE PROPORTIONAL PRINTING 003063 3325 2034 003064 2634 XSXE ; ESCSTG / 76 FORCE VERTICAL MOVEMENT 003065 3345 2035 003066 2654 XST94 ; ESCSTG / 77 TABLE ENTRY 94 FOR WHEEL POSITION 003067 3345 2036 003070 2657 XST95 ; ESCSTG / 100 TABLE ENTRY 95 FOR WHEEL POSITION 003071 3345 2037 003072 2662 XSCHRS ; ESCA / "A SET CHARACTER SIZE 003073 3256 2038 003074 2710 XSSPUM ; ESCB / "B SET PUM MODE 003075 3325 2039 003076 2713 XSRPUM ; ESCC / "C RESET PUM MODE 003077 3325 2040 003100 2603 XDRST ; ESCD / "D HIT COUNT 003101 3200 2041 003102 2671 XSMARG ; ESCE / "E SET MARGIN (IN HAI) 003103 3307 2042 003104 2731 XSSPAC ; ESCF / "F SET SPACE SIZE 003105 3256 2043 003106 2632 XSPLU ; ESCSTG / "G HALF LINE REVERSE /C193 003107 3345 2044 003110 2621 XSPAGS ; ESCH / "H PAGE SIZE (IN LINES) 003111 3267 2045 003112 2630 XSPLD ; ESCSTG / "I HALF LINE FORWARD /C208 003113 3345 2046 003114 2616 XSTRAY ; ESTGWV / "J SELECT TRAY 003115 3263 2047 003116 2637 XSTCSI ; PRESF / "K SETUP G2 AND G3 FOR TECHNICAL CHR /A200 003117 3342 2048 XSGRAP ; ESCSTG / "L BEGIN SIXEL GRAPHICS /C222 undefined ^ 003120 0000 003121 3345 2049 XSGRET ; ESCSTG / "M END SIXEL GRAPHICS /C222 undefined ^ 003122 0000 003123 3345 2050 003124 2600 XSSGR ; ESTGWV / "N SGR, 1 PARAMETER /A211 003125 3263 2051 003126 2756 XSPFS ; CSIUWV / "O PFS, PAGE FORMAT SELECT /A215 003127 3262 2052 003130 2716 XSIVPR ; ESTGWV / "P increment vertical position rel. /a229 003131 3263 2053 003132 2720 XSDVPR ; ESTGWV / "Q decrement vertical position rel. /a229 003133 3263 2054 003134 2722 XSIHPR ; ESTGWV / "R increment horizontal position rel. /a229 003135 3263 2055 003136 2724 XSDHPR ; ESTGWV / "S decrement horizontal position rel. /a229 003137 3263 2056 003140 2603 XDRST ; ESCDR / "T reset attributes /a234 003141 3325 2057 2058 ESC9, 2059 2060 /***********************************************************************/ 2061 / / 2062 / ESMVV--PART OF PRESCS WHICH HANDLES VERTICAL MOVEMENT / 2063 / DESIGNED TO WORK FOR LQP02, LQP03, AND ALL DP / 2064 / / 2065 / CURRENTLY THE ASSUMPTION IS THAT THE VERICAL PITCH IS / 2066 / ALWAYS 6 LINES PER INCH AND IS NEVER CHANGED / 2067 / A PLU OR PLD IS A 1/2 A LINE OR 1/12 INCH / 2068 / / 2069 / ALL REVERSE MOTION IS DONE WITH PLU / 2070 / / 2071 /***********************************************************************/ 2072 2073 ESMVV, /ESCAPE SEQUENCE--VERTICAL MOTION 2074 003142 1013 TAD PREST1 /GET SIGNED AMOUNT IN 48THS 2075 003143 7450 SNA /SKIP IF MOTION REQUIRED 2076 003144 5222 JMP PRESXT /NO MOTION REQUIRED 2077 003145 7500 SMA /IF POSITIVE NEGATE 2078 003146 7041 CIA 2079 003147 7130 STL RAR 2080 003150 7130 STL RAR /DIVIDE BY 4, NOW WE HAVE 12THS 2081 003151 3226 DCA ESCT1 /SAVE BACK AS A COUNTER 2082 2083 / IF THE MOTION IS REVERSE WE HANDLE BY DOING THE PROPER NUMBER 2084 / OF PLD COMMANDS 2085 2086 003152 1013 TAD PREST1 2087 003153 7700 SMA CLA 2088 003154 5772 JMP ESMVV2 /GO HANDLE FORWARD MOTION 2089 003155 1371 TAD (XSPLU) 2090 003156 3076 DCA XSADX /SET UP STRING ADDRESS 2091 003157 4770 ESMVV1, JMS ESCST /PUT OUT STRING 2092 AC7777 undefined ^ 003160 0000 2093 003161 1076 TAD XSADX 2094 003162 3076 DCA XSADX /BACK UP STRING POINTER 2095 003163 2226 ISZ ESCT1 /SEE IF WE ARE DONE 2096 003164 5357 JMP ESMVV1 /NO 2097 003165 5222 JMP PRESXT /YES 2098 /---------------------- 2099 003170 3677 PAGE 003171 2632 003172 4145 003173 5014 003174 3030 003175 7720 003176 5000 003177 3724 2100 2101 / ESCD IMPLEMENTS THE TEXT ENHANCEMENT FUNCTIONS 2102 / 2103 / 2104 / PREST1 CONTAINS THE VALUE DEPOSITED BY THE SPOOLER WHICH IS THE SUM 2105 / OF THE BOLD BIT AND THE DARKNESS BIT. THIS ROUTINE ADDS IN 2106 / 'DARKNESS' (BIT 11 OF PRQOVP) AGAIN, TO ISOLATE THE BOLD BIT. 2107 / THE RESULT IS THEN EXCLUSIVE OR'ED WITH THE SHADOW BIT 2108 / (BIT 5 OF PRQOVP). THE RESULT OF THIS IS THEN ADDED TO BIT 11 2109 / OF PRQOVP (DARKNESS) TO YIELD THE HIT COUNT. 2110 / 2111 / (BOLD EXOR SHADOW) + (DARKNESS) ==> HIT COUNT 2112 / 2113 / THE EFFECT OF THIS IS THAT 'BOLD' TEXT WITH THE 'SHADOW' ATTRIBUTE 2114 / IS NOT GIVEN AN EXTRA 'HIT'. 2115 / THE 'BOLD' BIT IS THEN AND'ED WITH THE 'SHADOW' BIT, SO THAT 2116 / ONLY 'BOLD' TEXT IS PRINTED AS SHADOW, IF WE ARE IN SHADOW MODE. 2117 / THE HIGHLIGHTING MODES OF THE LQP02 ARE THEN RESET AND THE 2118 / ESCAPE SEQUENCES GENERATED TO A)SET SHADOW PRINTING MODE, B)SET 2119 / SECONDARY MODE IF 2 HITS REQUIRED, C)SET PRIMARY MODE IF 3 HITS 2120 / REQUIRED. 2121 / 2122 ESCD, 2123 2124 / BEFORE CALLING PRESCS(PCBOLD), SPOOLER DID : 2125 / RAL PUTTING 'BOLD' BIT IN ACC 11 2126 / TAD PRQOVP ADDING IN THE DARKNESS BIT 2127 / GIVING A VALUE IN ACC OF 0-2. BY ADDING IN DARKNESS 2128 / AGAIN, ACC BIT 11 WILL REFLECT THE ORIGINAL VALUE OF 'BOLD' 2129 / BOLD + DARK + DARK 2130 / 0 0 0 = 00 2131 / 0 1 1 = 10 2132 / 1 0 0 = 01 * 2133 / 1 1 1 = 11 * 2134 / 2135 003200 4777 JMS CSISTR / OUTPUT 'RESET' ESCAPE STRING 2136 003201 1013 TAD PREST1 / GET HIT COUNT 2137 003202 7510 SPA / IF POSITIVE CONTINUE, /A060 2138 003203 5247 JMP DSABL / ELSE DISABLE HAMMAR FOR TW PASS /A060 2139 003204 1776 TAD PRQOVP / CANCEL DARKNESS COMPONENT 2140 003205 3775 DCA ESCT1 / ESCT1 = BOLD BIT (AC11) 2141 / 2142 AC0001 undefined ^ 003206 0000 2143 003207 0774 AND PRQSP / ISOLATE BIT 11 2144 003210 3253 DCA ESCT2 / ESCT2 = SHADOW BIT (AC11) 2145 / 2146 003211 1253 TAD ESCT2 2147 003212 0775 AND ESCT1 / SHADOW (AND) BOLD => ACC 11 2148 003213 7010 RAR / INTO LINK 2149 003214 7200 CLA 2150 003215 1373 TAD (XDSHAD / SEND SHADOW IF BOLD AND SHADOW 2151 003216 4237 JMS XDSTR 2152 003217 7420 SNL / BOLD BIT IS IN LINK 2153 003220 5224 JMP ESCDRK / ACC IS CLEAR 2154 003221 1253 TAD ESCT2 / BOLD, SO IF NOT SHADOW 2155 003222 7040 CMA 2156 003223 0372 AND (1 / THEN INCREMENT HIT COUNT 2157 ESCDRK, 2158 003224 1776 TAD PRQOVP / ADD DARKNESS 2159 003225 3775 DCA ESCT1 2160 003226 1252 TAD UNDERL / GET UNDERLINE FLAG 2161 003227 7110 CLL RAR 2162 003230 1371 TAD (XDUNDR 2163 003231 4237 JMS XDSTR / (MAYBE) SEND UNDERLINE ENABLE 2164 / 2165 003232 1370 TAD (XDSEC 2166 003233 4237 JMS XDSTR / (MAYBE) SEND SECONDARY ENABLE 2167 003234 1367 TAD (XDPRIM 2168 003235 4237 ECXT, JMS XDSTR / (MAYBE) SEND PRIMARY ENABLE 2169 003236 5766 JMP PRESXT / RETURN 2170 / 2171 XDSTR, XX / undefined ^ 003237 0000 2172 003240 3076 DCA XSADX / FIX UP STRING PTR 2173 003241 7430 SZL / IF TRANSMIT ENABLED 2174 003242 4777 JMS CSISTR / THEN SEND THE ESCAPE STRING 2175 / 2176 003243 1775 TAD ESCT1 2177 003244 7010 RAR 2178 003245 3775 DCA ESCT1 / SET UP TO TEST FOR NEXT STRING 2179 003246 5637 JMP I XDSTR / RETURN 2180 2181 2182 /DISABLE PRINT HAMMAR ROUTINE, USED FOR TWO WHEEL PRINTING 2183 003247 7320 DSABL, CLA CLL CML / CLEAR AC AND SET LINK SO ESCAPE IS SENT 2184 003250 1365 TAD (XDSBL / GET ESCAPE SEQUENCE TO DISABLE HAMMAR 2185 003251 5235 JMP ECXT / SEND TO PRINTER AND EXIT 2186 / 2187 003252 0000 UNDERL, 0 / UNDERLINE FLAG 2188 003253 0000 ESCT2, 0 2189 2190 /***********************************************************************/ 2191 / / 2192 / ESCXRP--ENABLE EXTENDED REPORTS (ALL EXCEPT LQPSE) /A147 / 2193 / / 2194 ESCXRP, AC0003 / CODE TO ENABLE REPORTS AND GET ONE / undefined ^ 003254 0000 2195 003255 5264 JMP XSMXT / GO TRANSMIT. NOTE WE WILL RETURN / 2196 / RETURN WITH CLEAR AC SINCE WE DID / 2197 / DID NOT LOAD PREST1 / 2198 /***********************************************************************/ 2199 2200 ////////////////////////////////////////////////////////////////// 2201 / 2202 / CHARACTER SIZE IS SET BY MULTIPLYING THE 120ths COUNT IN PREST1 2203 / BY 6, AS REQUIRED BY THE LQP02. THE LQP02 DIVIDES THE RECEIVED 2204 / SIZE PARAMTER TO YIELD ITS 'HAI' IN 120ths. 2205 / 2206 / LIKEWISE FOR SETTING SPACE SIZE 2207 / 2208 / 2209 / /D051 2210 ESCF, / SET SPACE SIZE 2211 ESCA, / SET CHARACTER SIZE 2212 003256 1013 TAD PREST1 / MULTIPLY BY 6 2213 003257 7106 CLL RTL / BY MULTIPLYING BY 4 2214 003260 1013 TAD PREST1 / AND ADDING TWICE MORE 2215 003261 5263 JMP ESTGWV / (ONCE MORE AT ESTGWV) 2216 2217 CSIUWV, / UNCONDITIONAL CSI WITH VALUE /A174 2218 003262 3034 DCA PRYES / OUTPUT EVEN IF PRINTING INHIBITED /A173 2219 ESTGWV, / ESCAPE STRING WITH VALUE 2220 003263 1013 TAD PREST1 2221 003264 4327 XSMXT, JMS ESCOUT / CONVERT TO ASCII AND STUFF INTO STRING 2222 003265 4777 JMS CSISTR / AND TRANSMIT /A222 2223 003266 5766 JMP PRESXT / RETURN 2224 / 2225 /////////////////////////////////////////////////////////////////////////// 2226 / 2227 / 2228 / PAGE SIZE IS DELIVERED IN 48THS. DIVIDE BY LINE SIZE TO GET 2229 / THE PAGE SIZE IN LINES, WHICH IS WHAT THE LQP02 LIKES 2230 / 2231 ESCH, / SET PAGE SIZE 2232 003267 1011 TAD LPONLN / INIT DIVIDEND TO 5 FOR ASF OR 0. /M093 2233 AND (ASFMSK) / /A113 undefined ^ undefined ^ 003270 0364 2234 003271 7640 SZA CLA / SKIP IF NOT ASF. SET PAGE SIZE AS SPEC/A095 2235 003272 1363 TAD (5) /IFIED. IF ASF ADD 5 (TOO MAKE PAPER FEED/A095 2236 003273 3253 DCA ESCT2 /INTO FEEDER TRAY. /M095 2237 003274 1362 TAD (PRNLSZ / ALWAYS = 8 FOR 6 LINES/INCH 2238 003275 5312 JMP XSDX / DIVIDE, CONVERT, PUT IN STRING AND TX 2239 2240 / HORIZONTAL ADVANCE COMMAND 2241 2242 003276 1013 ESCXB, TAD PREST1 / TO THE RIGHT OR THE LEFT? 2243 003277 7500 SMA / MINUS MEANS LEFT. 2244 003300 5264 JMP XSMXT / GO DO THE RIGHT THING. 2245 003301 7041 CIA / MAKE POSITIVE. 2246 003302 3253 DCA ESCT2 / SAVE AMOUNT TO MOVE 2247 003303 1761 TAD XSLEFT / SET "LEFT" MOVEMENT COMMAND. 2248 003304 3076 DCA XSADX / SET STRING ADDRESS... 2249 ESCXB1, /A219 2250 003305 1253 TAD ESCT2 / GET AMOUNT TO MOVE 2251 003306 5264 JMP XSMXT / DO THE LEFT THING. 2252 2253 2254 2255 / 2256 ////////////////////////////////////////////////////////////////////////// 2257 / 2258 / SET LEFT MARGIN 2259 / THE LEFT MARGIN IS DELIVERED AS A 120THS COUNT. DIVIDE THIS BY 2260 / THE CHARACTER SIZE TO GET THE LEFT MARGIN IN SPACES, WHICH IS WHAT 2261 / THE LQP02 LIKES 2262 / 2263 ESCE, 2264 AC0001 / INIT DIVIDEND. LM BEGINS AT 1 (NOT 0)./A082 undefined ^ 003307 0000 2265 003310 3253 DCA ESCT2 / ... /A082 2266 003311 1022 TAD PLNRCS / DIVIDE 120THS MARGIN BY CHARACTER SIZE 2267 003312 7041 XSDX, CIA / THE DIVISOR MUST BE IN ACC UPON ENTRY 2268 003313 3775 DCA ESCT1 / IT WILL BE REPEATEDLY SUBTRACTED 2269 / FROM THE DIVIDEND, GIVING QUOTNT 2270 / 2271 003314 1013 TAD PREST1 / GET THE DIVIDEND 2272 003315 1775 DVLP, TAD ESCT1 / SUBTRACT THE DIVISOR 2273 003316 7510 SPA / UNTIL NEGATIVE 2274 003317 5322 JMP DIVX 2275 / 2276 003320 2253 ISZ ESCT2 2277 003321 5315 JMP DVLP 2278 003322 7200 DIVX, CLA / /M082 2279 003323 1253 TAD ESCT2 / NO REMAINDER, SO ACC ALWAYS ZERO 2280 003324 5264 JMP XSMXT / GO STUFF VALUE, OUTPUT A CSI STRING /C222 2281 / 2282 / 2283 ////////////////////////////////////////////////////////////////////////// 2284 / 2285 / 2286 / THE FOLLOWING JUST SEND THE STRING DESIGNATED BY THE ADDRESS 2287 / IN THE CALLING CASE TABLE. 2288 / 2289 ESCXD, / ENABLE/DISABLE PROPORITONAL PRINTING 2290 ESCB, / SET PUM MODE. /A080 2291 ESCC, / RESET PUM MODE. /A080 2292 ESCDR, / reset underline/bold flags /a234 2293 003325 4777 JMS CSISTR 2294 003326 5766 JMP PRESXT / RETURN 2295 2296 /////////////////////////////////////////////////////////////////////// 2297 / 2298 / ESCOUT - CALL THE BINARY TO ASCII BCD CONVERSION ROUTINE 2299 / AND PUT RESULT INTO THE ESCAPE STRING. GET READY TO TX IT 2300 / 2301 ESCOUT, XX undefined ^ 003327 0000 2302 003330 7421 MQL / SAVE THE VALUE /A143 2303 003331 1360 TAD (ESCNUM-1 / SET UP NUMPTR /A143 2304 003332 3066 DCA NUMPTR / /A143 2305 003333 7701 ACL / RESTORE THE VALUE /A143 2306 003334 4757 JMS ASCOUT / MAKE IT ASCII NUMERIC 2307 003335 3741 DCA I XSNX / PUT IT BACK 2308 003336 1356 TAD (ESCNUM / ADDRESS OF BEGINNING OF STRING 2309 003337 3066 DCA NUMPTR / READY FOR OUTPUT 2310 /D222 JMS CSISTR / SEND THE ESCAPE STRING 2311 003340 5727 JMP I ESCOUT / RETURN TO PRESCS 2312 2313 003341 0000 XSNX, 0 2314 2315 PRESF, / ESCAPE SEQUENCE WITH "FINAL" STRING /A151 2316 003342 3034 DCA PRYES / ENABLE OUTPUT EVEN IF PRINTING OFF /A164 2317 003343 1013 PRESF1, TAD PREST1 / GET ADDRESS PASSED TO PRESCS /C200 2318 003344 3066 DCA NUMPTR / SAVE AS THE SUBSTRING /A151 /C160 2319 ESCSTG, /HERE TO OUTPUT STRING WITH NO VALUE /A222 2320 /*** ONLY IF PRINTING ENABLED *** /A188 2321 003345 4755 JMS ESCST / DO STRING WITH SUBSTRING FINAL /A151 2322 003346 5766 JMP PRESXT / GO EXIT /A151 2323 2324 ESCSTV, /ESCAPE STRING WITHOUT CSI PREFIX /A222 2325 003347 1013 TAD PREST1 / GET VALUE /A222 2326 003350 4327 JMS ESCOUT / CONVERT /A222 2327 003351 5345 JMP ESCSTG / GO OUTPUT /A222 2328 /------------------- 2329 003355 3677 PAGE 003356 3725 003357 3513 003360 3724 003361 2625 003362 0010 003363 0005 003364 0000 003365 2614 003366 3022 003367 2612 003370 2607 003371 2602 003372 0001 003373 2604 003374 6412 003375 3026 003376 6420 003377 3670 2330 2331 / FLABUZ will do 1 of 3 things to top middle of menu pages: 2332 / 1. Display "PRINTER STOPPED" when PRSTTS indicates a 2333 / printer stop condition (PRSTTS greater than 1). 2334 / (will buzz on 1st pass). 2335 / 2336 / 2.Display "PRINTER BUSY" when status word PRSTTS 2337 / indicates printing (is 0001). 2338 / 2339 / 3.Blank out previous message when printer 1st changes 2340 / to idle. (PRSTTS=0) 2341 2342 / AND ONLY one thing when called from the editor: /M171 2343 / The FIRST time that a STOPPED condition is detected the PRINTER /M141 2344 / STOPPED message will be displayed and the buzzer shall buzz. /M141 2345 2346 FLABUZ, XX / SUBROUTINE ENTRY POINT /A098 undefined ^ 003400 0000 2347 003401 7200 CLA / MAKE SURE THAT ACCUMULATOR IS CLEAR /M171 2348 TAD CIDF0 / GET CIF CDF INSTRUCTION /M156 undefined ^ undefined ^ 003402 1000 2349 003403 6214 RDF / MAKE IT WORK TO THE CALLERS FIELD /M156 2350 003404 3307 DCA FLEXIT / AND PATCH INTO EXIT ROUTINE /M171 2351 2352 / TIME will exit FLABUZ if at least one second has not elapsed since the last 2353 / time the saved time was tested. TIME is necessary because of the large 2354 / system overhead caused when direct cursor addressing is used in both 2355 / DECmate-I and DECmate-II. TIME serves not so much to reduce the number of 2356 / instructions executed but to eliminate escape sequences which can cause the 2357 / panel code to be executed for a fairly long time (about 1 millisecond in 2358 / DECmate-I), causing possible system problems such as dropped characters. 2359 2360 TIME, CDFSYS / CHANGE DATA FIELD TO SYSTEM FIELD undefined ^ 003405 0000 2361 TAD I (CLOCK+2) / GET THE ONCE PER SECOND COUNTER undefined ^ undefined ^ 003406 1777 2362 003407 7041 CIA / NEGATE THE VALUE 2363 003410 1312 TAD TIMESE / ADD WHAT IT WAS THE LAST TIME WE LOOKED 2364 003411 7650 SNA CLA / HAS IT CHANGED? 2365 003412 5307 JMP FLEXIT / NO, SO EXIT FLABUZ /C120 2366 TAD I (CLOCK+2) / GET THE TIME AGAIN undefined ^ undefined ^ 003413 1777 2367 003414 0000 CDFMYF / RESET DATA FIELD TO THIS FIELD /A133 2368 003415 3312 DCA TIMESE / AND SAVE FOR NEXT TIME 2369 2370 003416 1307 TAD FLEXIT / GET CALLER'S CIF-CDF INSTRUCTION /A171 2371 003417 1376 TAD (-6233) / COMBINE WITH NEGATIVE OF EDIT FIELD /A171 2372 003420 7640 SZA CLA / IS THIS CALL COMMING FROM THE EDITOR /A171 2373 003421 5230 JMP FLABZ1 / NO, CONTINUE WITH NORMAL FLOW /A171 2374 003422 4301 JMS FLTEST / YES, EXIT IF STATUS HAS NOT CHANGED /A171 2375 2376 AC7776 / CHECK FOR PRINTER/SPOOLER STOPPED /A110 undefined ^ 003423 0000 2377 003424 1003 TAD PRSTTS / ... /A110 2378 003425 7710 SPA CLA / DO WE NEED TO FLASH STOPPED MSG? /A110 2379 003426 5307 JMP FLEXIT / NO, EXIT BECAUSE OF CALL FROM EDITOR /A110 2380 003427 5237 JMP FLABZ2 / YES, DISPLAY STOPPED MESSAGE ONLY ONCE/A110 2381 2382 003430 1003 FLABZ1, TAD PRSTTS / GET CURRENT PRINTER STATUS /A171 2383 003431 7041 CIA / NEGATE VALUE /A171 2384 003432 7450 SNA / IS STATUS VALUE EQUAL TO ZERO ? /A171 2385 003433 5256 JMP BLANKP / YES, GO BLANK PREVIOUS STATUS MESSAGE /A171 2386 003434 7001 IAC / INCREMENT STATUS VALUE /A171 2387 003435 7650 SNA CLA / IS STATUS VALUE EQUAL TO ONE ? /A171 2388 003436 5266 JMP PNTING / YES, GO PUT UP "BUSY" MESSAGE /A171 2389 2390 FLABZ2, CIFMNU / NO, PUT UP PRINTER/SPOOLER STOPPED /A171 undefined ^ 003437 0000 2391 JMS I IOACAL / USE IOA TO OUTPUT STRING TO SCREEN /A098 undefined ^ undefined ^ 003440 4400 2392 003441 0000 0 / USE IOA DEFAULT OUTPUT ROUTINE /A098 2393 003442 4252 PRTEXT / CONTROL STRING TO DISPLAY "PRINTER" /M141 2394 003443 4252 TOPMID / SAVE CURSOR, SELECT TOP MIDDLE SCREEN./M141 2395 003444 4271 BLKREV / SET BLINK, REVERSE ATTRIBUTES /M141 2396 003445 4252 STPTXT / TEXT FOR "STOPPED" /A141 2397 003446 4300 LED4ON / TURN LED 4 ON AND RESTORE CURSOR /A141 2398 2399 003447 4301 JMS FLTEST / EXIT IF STATUS HAS NOT CHANGED /A171 2400 SNDBUZ, CIFMNU / SOUND_BUZZER /A098 undefined ^ 003450 0000 2401 JMS I IOACAL / USE IOA TO OUTPUT STRING TO SCREEN /A098 undefined ^ undefined ^ 003451 4400 2402 003452 0000 0 / USE IOA DEFAULT OUTPUT ROUTINE /A098 2403 003453 4246 CSTRNG / ADDRESS OF CONTROL STRING /A098 2404 003454 4250 BELTXT / ADDRESS OF BELL CODE /A098 2405 003455 5276 JMP FLDONE / GO UPDATE STATUS VALUE AND EXIT /A171 2406 2407 003456 4301 BLANKP, JMS FLTEST / EXIT IF STATUS HAS NOT CHANGED /A171 2408 CIFMNU / DON'T ERASE MORE THAN ONCE /A098 undefined ^ 003457 0000 2409 JMS I IOACAL / USE IOA TO OUTPUT STRING TO SCREEN /A098 undefined ^ undefined ^ 003460 4400 2410 003461 0000 0 / USE IOA DEFAULT OUTPUT ROUTINE /A098 2411 003462 4234 BLANKM / SEQUENCE TO ERASE MIDDLE OF SCREEN /M141 2412 003463 4252 TOPMID / SAVE CURSOR, SELECT TOP MIDDLE SCREEN./M141 2413 003464 4304 LEDOFF / TURN LED 4 OFF AND RESTORE CURSOR /A141 2414 003465 5276 JMP FLDONE / GO UPDATE STATUS VALUE AND EXIT /A171 2415 2416 PNTING, CIFMNU / DISPLAY PRINTER BUSY MESSAGE /A098 undefined ^ 003466 0000 2417 JMS I IOACAL / USE IOA TO OUTPUT STRING TO SCREEN /A098 undefined ^ undefined ^ 003467 4400 2418 003470 0000 NULTXT, 0 / USE IOA DEFAULT OUTPUT ROUTINE /A098 2419 003471 4252 PRTEXT / CONTROL STRING TO DISPLAY "PRINTER" /M141 2420 003472 4252 TOPMID / SAVE CURSOR, SELECT TOP MIDDLE SCREEN./M141 2421 003473 3470 NULTXT / NUL TEXT STRING (POINTS TO A ZERO) /A141 2422 003474 4252 BSYTXT / ADDRESS OF "BUSY " TEXT /A098 2423 003475 4304 LEDOFF / TURN LED 4 OFF AND RESTORE CURSOR /A141 2424 / AND FALL THRU TO EXIT /A098 2425 2426 003476 1003 FLDONE, TAD PRSTTS / GET CURRENT PRINTER STATUS /A171 2427 003477 3311 DCA PREVST / SAVE FOR NEXT PASS TO REFERENCE /A171 2428 003500 5307 JMP FLEXIT / DONE, GO RETURN TO CALLER /A171 2429 2430 FLTEST, XX / CHECK FOR PRINTER STATUS CHANGE /A171 undefined ^ 003501 0000 2431 003502 1003 TAD PRSTTS / GET CURRENT PRINTER STATUS /A098 2432 003503 7041 CIA / MAKE IT NEGATIVE /A098 2433 003504 1311 TAD PREVST / GET PREVIOUS STATUS (FROM LAST PASS) /A098 2434 003505 7640 SZA CLA / HAS THERE BEEN A CHANGE ? /A171 2435 003506 5701 JMP I FLTEST / YES, GO HANDLE THE DIFFERENCE /A171 2436 2437 FLEXIT, XX / LOADED WITH A CDF CIF TO CALLERS FIELD/M171 undefined ^ 003507 0000 2438 003510 5600 JMP I FLABUZ / RETURN TO CALLER 2439 2440 003511 0000 PREVST, 0 / FOR STORAGE OF PREVIOUS STATUS /A098 2441 003512 0000 TIMESE, 0 / FOR STORAGE OF CURRENT SECOND COUNT /M171 2442 2443 / ASCOUT CONVERTS A BINARY CODED VALUE IN THE RANGE 2444 / 0000-3777 INTO ITS ASCII ENCODED BCD EQUIVALENT 2445 / LEADING ZEROS ARE SUPPRESSED, BUT AT LEAST ONE CHARACTER 2446 / IS CONVERTED, EVEN IF IT IS A ZERO. THE RESULT IS PLACED IN 2447 / THE BUFFER POINTED TO BY NUMPTR 2448 / 2449 / THE LAST CHR CONVERTED IS MARKED WITH THE 4000 BIT /A196 2450 2451 / ENTER ACC = BINARY VALUE 2452 / NUMPTR = ADDRESS OF OUTPUT STORAGE 2453 / EXIT ACC = 0 2454 / NUMPTR = ADDRESS OF LAST DIGIT PLACED IN OUTPUT 2455 / SIGNIFICANT ASCII OUTPUT 2456 / 2457 003513 0000 ASCOUT, 00 2458 003514 3365 DCA BINVAL / TEMP STORAGE FOR INPUT VALUE 2459 003515 1375 TAD (DECTAB-1 2460 003516 3357 DCA DECPTR / SET POINTER TO WEIGHTED DECIMAL VALUE 2461 003517 3356 DCA ASCFLG / 2462 / 2463 003520 3366 ASCLP1, DCA ASCNT / ZERO THE RESULT COUNT 2464 003521 2357 ISZ DECPTR / GET NEXT DECIMAL WEIGHT 2465 003522 1757 TAD I DECPTR 2466 003523 7450 SNA / IF ITS ZERO, WE'RE DONE 2467 003524 5352 JMP ASCOUX / GO CLEANUP & EXIT /C196 2468 003525 7040 CMA / IF ITS (-1) CMA MAKES IT 0000 2469 003526 7650 SNA CLA / IF ITS (-1), SET FLAG SO AT 2470 003527 2356 ISZ ASCFLG / LEAST ONE DIGIT IS OUTPUT 2471 / 2472 003530 1365 ASCLP2, TAD BINVAL 2473 003531 1757 TAD I DECPTR / SUBTRACT DECIMAL WEIGHT FROM BINARY 2474 003532 7510 SPA 2475 003533 5337 JMP ASCDGT / UNTIL BINARY GOES NEGATIVE 2476 003534 3365 DCA BINVAL 2477 003535 2366 ISZ ASCNT / COUNTING UP THE ASCII WEIGHT 2478 003536 5330 JMP ASCLP2 2479 / 2480 003537 7200 ASCDGT, CLA 2481 003540 1356 TAD ASCFLG / HAS ANYTHING GONE OUT YET ? 2482 003541 1366 TAD ASCNT / GET THE RESULT 2483 003542 7650 SNA CLA 2484 003543 5320 JMP ASCLP1 / THIS DOES NOT OUTPUT LEADING ZEROS 2485 003544 2066 ISZ NUMPTR 2486 003545 1374 TAD (60 / CONVERT COUNT TO ASCII 2487 003546 1366 TAD ASCNT 2488 003547 3466 DCA I NUMPTR / PUT ASCII VALUE INTO OUTPUT /M073 2489 003550 2356 ISZ ASCFLG / NON-LEADING ZEROS MUST BE OUTPUT 2490 003551 5320 JMP ASCLP1 2491 / 2492 ASCOUX, AC4000 / FLAG LAST CHARACTER OUTPUT /A196 undefined ^ 003552 0000 2493 003553 1466 TAD I NUMPTR / /A196 2494 003554 3466 DCA I NUMPTR / /A196 2495 003555 5713 JMP I ASCOUT / EXIT /A196 2496 2497 2498 003556 0000 ASCFLG, 0 / DONT OUTPUT ZEROS UNTIL THIS IS SET 2499 003557 0000 DECPTR, 0 / PTR INTO THE FOLLOWING TABLE 2500 DECIMAL 2501 003560 6030 DECTAB, -1000 2502 003561 7634 -100 2503 003562 7766 -10 2504 003563 7777 -1 2505 003564 0000 0 2506 OCTAL 2507 003565 0000 BINVAL, 0 / THIS GETS DIMINISHED BY ADDING FROM 2508 / / THE ABOVE TABLE 2509 003566 0000 ASCNT, 0 / THIS GETS INCREMENTED UNTIL BINVAL 2510 / / IS NEGATIVE 2511 2512 /---------------------- 2513 003574 0060 PAGE 003575 3557 003576 1545 003577 0002 2514 2515 PREFNT, / ENABLE A PARTICULAR FONT /A152 2516 003600 3034 DCA PRYES / ENABLE OUTPUT EVEN IF PRINTING OFF /A164 2517 003601 1013 TAD PREST1 / GET THE VALUE /A152 2518 003602 0377 AND (17 / ALLOW FONTS 8,9,10 /C215 2519 003603 1376 TAD (11 / FONT 1 MEANS A VALUE OF 10 /A152 2520 003604 5775 JMP XSMXT / GO TRANSMIT A VALUE IN A CSISTR /A152 2521 2522 /***********************************************************************/ 2523 / / 2524 / PRQRX---GENERAL PURPOSE ROUTINE TO READ/WRITE THE DISK / 2525 / / 2526 / CALLING SEQUENCE: / 2527 / TAD BLKNO /LOAD AC WITH BLK NO / 2528 / JMS PRQRX / 2529 / FUNCTION CODE /E.G. RXERD+4000 / 2530 / DRIVE /E.G. 0 FOR SYSTEM DISKK / 2531 / BUFFER ADDRESS / 2532 / JMP ERROR / ERROR RETURN / 2533 / ... / NORMAL RETURN / 2534 / / 2535 /***********************************************************************/ 2536 2537 PRQRX, XX undefined ^ 003605 0000 2538 DCA PRQB+RXQBLK / SET BLOCK NUMBER IN QBLK /A183 undefined ^ 003606 3251 2539 003607 1605 TAD I PRQRX / PICK UP FUNCTION CODE /A183 2540 DCA PRQB+RXQFNC / SET IN QBLK /A183 undefined ^ 003610 3251 2541 003611 2205 ISZ PRQRX / NEXT PARAMETER /A183 2542 003612 1605 TAD I PRQRX / PICK UP DRIVE NUMBER /A183 2543 DCA PRQB+RXQDRV / SET IN QBLK /A183 undefined ^ 003613 3251 2544 003614 2205 ISZ PRQRX / NEXT PARAMETER /A183 2545 003615 1605 TAD I PRQRX / PICK UP THE BUFFER ADDRESS /A183 2546 DCA PRQB+RXQBAD / SET IN QBLK /A183 undefined ^ 003616 3251 2547 003617 2205 ISZ PRQRX / NEXT PARAMETER /A183 2548 2549 PRQRX1, CIFSYS / QUEUE THE REQUEST undefined ^ 003620 0000 2550 ENQUE undefined ^ 003621 0000 2551 003622 3646 PRQBLK 2552 2553 003623 4774 PRQRX2, JMS SQPINP /HANDLE ANY CHRS COMING BACK /A113 2554 CIFSYS /WAIT undefined ^ 003624 0000 2555 JWAIT undefined ^ 003625 0000 2556 TAD PRQB+RXQCOD /GET THE DONE FLAG undefined ^ 003626 1251 2557 003627 7450 SNA /SKIP IF DONE /M059 2558 003630 5223 JMP PRQRX2 /IF ZERO SERVICE NOT DONE /A059 2559 003631 7700 SMA CLA /SKIP BUMP IF ERROR 2560 / WE HAVE HAD A READ ERROR. RETURN TO CALLER WITHOUT BUMPING /A183 2561 / RETURN ADDRESS /A183 2562 003632 2205 ISZ PRQRX /BUMP RETURN IF NO ERROR /A183 2563 003633 5605 JMP I PRQRX 2564 2565 MISCTL, AC0004 / MISSING END CONTROL /A183 undefined ^ 003634 0000 2566 003635 7001 PRQSDE, IAC /SYSTEM DISK READ ERROR HERE /C183 2567 003636 1373 PRQDDE, TAD (22) /DOCUMENT DISK READ ERROR HERE /C183 2568 003637 4772 JMS STSTTS /SET PRINTER STATUS /C122 2569 TAD (OVSTP1 /A059 undefined ^ undefined ^ 003640 1371 2570 003641 4770 JMS PROV /A059 2571 OBSTP1 undefined ^ 003642 0000 2572 2573 RDFIO4, / ENTRY POINT TO CREATE A DOCUMENT READ /A009 2574 / FATAL ERROR FROM OTHER PLACES /A009 2575 / USED IF THE HEADER BLOCK NUMBER IS /A009 2576 / FOUND TO BE 0000 /A009 2577 2578 003643 7200 CLA / CLEAR AC AND /A009 2579 DCA PRQB+RXQCOD / MAKE THIS LOCATION ZERO INCASE /A009 undefined ^ 003644 3251 2580 / USER HITS RESUME AFTER ENTERING /A009 2581 / THE STOP PRINTER MENU TO SERVICE /A009 2582 / THE ERROR. IN THIS WAY THE RESUME /A009 2583 / COMMAND WILL NOT DO ANYTHING AND /A009 2584 / THE USER WILL EVENTUALLY HAVE TO "S" /A009 2585 003645 5236 JMP PRQDDE / GO ENTER ABOVE TO CREATE DOC RD ERR /A009 2586 2587 /THIS IS THE INFORMATION BLOCK FOR DISK BLOCKS REQUESTED BY THE PRINTER. 2588 2589 PRQBLK, DSKQUE;0;0 undefined ^ 003646 0000 003647 0000 003650 0000 2590 PRQB, 2591 003651 0000 0 / RXQCOD FLAGS RETURNED HERE 2592 003652 0000 0 / RXQFNC FUNCTION CODE 2593 003653 0000 0 / RXQDN1 2594 003654 0000 0 / RXQDN2 2595 003655 0000 0 / RXQFNO FILE NUMBER 2596 003656 0000 0 / RXQID1 2597 003657 0000 0 / RXQSPC 2598 003660 0000 0 / RXQCTL 2599 003661 0000 0 / RXQDRV DRIVE NUMBER 2600 003662 0000 0 / RXQBLK BLOCK NUMBER 2601 003663 0000 0 / RXQRS1 2602 003664 0000 0 / RXQBAD BUFFER ADDRESS 2603 003665 0000 CDFMYF / RXQBFD BUFFER FIELD CDF 2604 003666 0000 0 / RXQTRK TRACK 2605 003667 0000 0 / RXQSEC SECTOR 2606 2607 /***********************************************************************/ 2608 / / 2609 / CSISTR--ROUTINE TO OUTPUT ESC [ FOLLOWED BY A STRING / 2610 / THE STRING MAY CONTAIN A PARAMETER, TYPICALLY / 2611 / A STRING OF ASCII DIGITS ALREADY STORED AT "NUMPTR" / 2612 / / 2613 /***********************************************************************/ 2614 2615 CSISTR, XX undefined ^ 003670 0000 2616 003671 1367 TAD (ESC 2617 003672 4766 JMS PRCHAR 2618 003673 1365 TAD (133 2619 003674 4766 JMS PRCHAR / [ 2620 003675 4277 JMS ESCST / OUTPUT THE REST OF THE STRING 2621 003676 5670 JMP I CSISTR / RETURN 2622 2623 /***********************************************************************/ 2624 / / 2625 / ESCST--OUTPUTS STRINGS / 2626 / ENTER ACC = 0 / 2627 / XSADX = POINTER TO STRING / 2628 / NUMPTR = POINTER TO SUBSTRING (NUMERIC PARAMTER) / 2629 / / 2630 / IF AN ASCII '*' IS ENCOUNTERED IN THE STRING AT XSADX / 2631 / CONTROL IS PASSED TO THE SUBSTRING. THE SUBSTRING IS / 2632 / USUALLY A NUMERIC PARAMETER BUT NOT NEED BE / 2633 / / 2634 / THE LAST CHARACTER OF A STRING HAS THE SIGN BIT SET / 2635 / / 2636 /***********************************************************************/ 2637 2638 ESCST, XX / ROUTINE TO JUST OUTPUT STRINGS undefined ^ 003677 0000 2639 003700 1476 ESCST1, TAD I XSADX / GET CHARACTER FROM STRING 2640 003701 0364 AND (2177 / MASK POSSIBLE END BIT /C201 2641 003702 1363 TAD (-52 / IF CHAR = '*' 2642 003703 7650 SNA CLA 2643 003704 5315 JMP TXENUM / THEN TRANSMIT NUMERIC STRING 2644 003705 1476 TAD I XSADX / ELSE GET CHARACTER 2645 AND P177 / REMOVE POSSIBLE END MARK undefined ^ undefined ^ 003706 0000 2646 003707 4766 JMS PRCHAR / SEND THE CHARACTER 2647 003710 1476 ESLP, TAD I XSADX / IF CHAR SENT WAS LAST ONE 2648 003711 7710 SPA CLA 2649 003712 5677 JMP I ESCST / THEN RETURN 2650 003713 2076 ISZ XSADX / ELSE POINT TO NEXT CHAR 2651 003714 5300 JMP ESCST1 / CONTINUE 2652 / 2653 003715 1466 TXENUM, TAD I NUMPTR / GET NUMERIC CHARACTER 2654 AND P177 / REMOVE POSSIBLE END MARK undefined ^ undefined ^ 003716 0000 2655 003717 4766 JMS PRCHAR 2656 003720 1466 TAD I NUMPTR / WAS THAT THE LAST ONE ? 2657 003721 2066 ISZ NUMPTR / BUMP POINT NOW! /C196 2658 003722 7710 SPA CLA 2659 003723 5310 JMP ESLP / YES, BACK TO CHARACTER STRING 2660 003724 5315 JMP TXENUM 2661 2662 003725 0000 ESCNUM, 0 ; 0 ; 0 ; 0 003726 0000 003727 0000 003730 0000 2663 2664 /***********************************************************************/ 2665 / / 2666 / PTSTST--TEST FOR STOP. IF THE USER WANTS TO STOP WE INVOKE / 2667 / THE STOP OVERLAYS. THIS ROUTINE SHOULD ONLY BE CALLED / 2668 / WHEN WE ARE PROCESSING A CONTROL STATEMENT (WHICH BY / 2669 / DEFINITION CAN OCCUR ONLY BETWEEN LINES). THE STOP / 2670 / OVERLAYS ARE OF TYPE OVTYPE=OLC. ALL OTHER TYPE C / 2671 / OVERLAYS MUST BE CAPABLE OF BEING OVERLAYED BY THE / 2672 / STOP CODE WHICH THIS ROUTINE MAY INVOKE / 2673 / / 2674 /***********************************************************************/ 2675 2676 PTSTST, XX /TEST FOR STOP /A162 undefined ^ 003731 0000 2677 2678 003732 1000 TAD PRSTOP / DOES USER WANT TO STOP? 2679 003733 7650 SNA CLA 2680 003734 5731 JMP I PTSTST / NO, RETURN 2681 2682 AC0001 / YES, SET FLAG /A162 undefined ^ 003735 0000 2683 003736 3344 DCA PRSTPF / INDICATING SPECIAL STOP /A162 2684 TAD (OVSTP2 / GO TO STOP OVERLAY undefined ^ undefined ^ 003737 1371 2685 003740 4770 JMS PROV 2686 OBSTP2 undefined ^ 003741 0000 2687 2688 PTSTSX, / COME BACK HERE IF R, P, C RESPONSE /A162 2689 003742 3344 DCA PRSTPF / CLEAR FLAG /A162 2690 003743 5731 JMP I PTSTST / AND RETURN /A162 2691 2692 2693 003744 0000 PRSTPF, 0 / SPECIAL STOP FLAG /A162 2694 2695 IDSTTM, XX / ROUTINE TO SET THE TIMER /A109 undefined ^ 003745 0000 2696 / READ LOCATION TIMOUT IN SYS AND ADD DELAY /A109 2697 / IN SECONDS /A109 2698 DCA T2 / SAVE THE PRTID TIME DELAY /A109 undefined ^ undefined ^ 003746 3000 2699 CDFSYS / /A109 undefined ^ 003747 0000 2700 TAD I (TIMOUT / GET VALUE OF THE SYS TIMER /A109 undefined ^ undefined ^ 003750 1771 2701 003751 0000 CDFMYF /A109 2702 TAD T2 / ADD THE DELAY /A109 undefined ^ undefined ^ 003752 1000 2703 003753 3063 DCA IDTMC / SAVE AS THE VALUE TO COMPARE AGAINST /A109 2704 003754 5745 JMP I IDSTTM / RETURN /A109 2705 /------------------ 2706 003763 7726 PAGE 003764 2177 003765 0133 003766 5321 003767 0033 003770 1664 003771 0000 003772 6266 003773 0022 003774 5400 003775 3264 003776 0011 003777 0017 2707 /CAUTION - THE FOLLOWING TWO PAGES ARE OCCUPIED BY THE BLKBOX ROUTINE /A002 2708 / AND TSTFUL ROUTINE DUE TO LACK OF SPACE IN THE EDITOR AND /A002 2709 / SYSTEM FIELDS RESPECTIVELY. /A002 2710 2711 /CAUTION - THE FOLLOWING TWO PAGES ARE OCCUPIED BY THE BLKBOX ROUTINE /A002 2712 / DUE TO LACK OF SPACE IN THE EDITOR AND WPSYS /C175 2713 / /A021 2714 /++ /A021 2715 /BLACKBOX PROGRAM FOR VIDEO COSMETICS /A021 2716 / /A021 2717 /FUNTIONAL DESCRIPTION: BLKBOX /A021 2718 / BLKBOX points us to the user's video cosmetics routine. It /A021 2719 / sets up parameters needed for exiting video cosmetics as well /A021 2720 / as pointing to the callers TTYOU routine. In the case of a two /A021 2721 / user system (WS82) it determines which user called and sends us /A021 2722 / to that user's video cosmetic routine. /A021 2723 / /A021 2724 / BLACKBOX PSEUDO-CODE: /A021 2725 / /A021 2726 / BLKBOX: hold character /A021 2727 / setup for exit to caller's field /A021 2728 / get pointer to user's TTYOU routine /A021 2729 / if [defined WS82] /A021 2730 / determine which user called. (result in LINK) /A021 2731 / cdf to my field /A021 2732 / if [defined WS82] /A021 2733 / if [user2 called] /A021 2734 / exit to USER2 /A021 2735 / exit to USER1 /A021 2736 / /A021 2737 /CALLING SEQUENCE:EDOCHR, XX /M021 2738 / CDFMYF /A021 2739 / CIFPRT /A021 2740 / JMS I (BLKBOX) /A021 2741 / JMP I EDOCHR /A021 2742 / /A021 2743 / BLKBOX IS CALLED FROM THE EDITOR (WPEDIT) AS ABOVE. /A021 2744 / /A021 2745 /INPUT PARAMETERS: /A021 2746 / AC contains character to be displayed along with attrib. bits. /A021 2747 / /A021 2748 /IMPLICIT INPUTS: TTYPTR, BLKBOX /A021 2749 / /A021 2750 /OUTPUT PARAMETERS: AC = Subroutine return address /A021 2751 / MQ = char. and attribute bits /A021 2752 / /A021 2753 /IMPLICIT OUPUT: HLDFLD, TTYHLD /A021 2754 / /A021 2755 /COMPLETION CODE: none /A021 2756 / /A021 2757 /SIDE EFFECTS: /A002 2758 / 1) Due to lack of room in fld. 3 (and fld.5 if WS82) of the /A021 2759 / WPEDIT, BLACKBOX resides here in field 1 of WPRINT at /A021 2760 / address 4000. If location of BLKBOX is changed be sure to /A021 2761 / change WPF1.PA (BLKBOX = 4000). /A021 2762 / /A021 2763 /-- /A021 2764 2765 /USER1 AND USER2 VIDEO COSMETICS /A021 2766 / /A021 2767 /FUNCTIONAL DESCRIPTION: USER1 and USER2 /A021 2768 / The USER1 and USER2 routines turn on or off the character /A021 2769 / attributes of the video display controller, to enable the user /A021 2770 / to see attributed text (bolded, underlined, bolded & underlined)/A021 2771 / as it will appear in a printed document. /A021 2772 / /A021 2773 / USER1 and USER2 PSEUDO-CODE /A021 2774 / /A021 2775 / The pseudo code described here is applicable for both routines. /A021 2776 / It appears here so as not to be redundant at USER2's listing. /A021 2777 / /A021 2778 / USER1 and USER2: /A021 2779 / save return address /A021 2780 / save character /A021 2781 / get cif cdf instruction /A021 2782 / save it /A021 2783 / get pointer to user's TTYOU routine /A021 2784 / install it /A021 2785 / get character's attribute /A021 2786 / store in current attribute location /A021 2787 / if [current char. attrib. = prev. char. attrib.] /A021 2788 / process char /A021 2789 / else /A021 2790 / if [prev. char. was attributed] /A021 2791 / turn off attributes /A021 2792 / set prev. attribute = -current attribute /A021 2793 / CASE ATTRIBUTE MODE OF /A021 2794 / 0 : NO ATTRIBUTES /A021 2795 / 1 : BOLD /A021 2796 / 2 : UNDERLINE /A021 2797 / 3 : BOLD & UNDERLINE /A021 2798 / 4 : SUPERSCRIPT /A021 2799 / 5 : BOLD (+ SUPERSCRIPT) /A021 2800 / 6 : SUBSCRIPT /A021 2801 / 7 : BOLD (+ SUBSCRIPT) /A021 2802 / process character /A021 2803 / /A021 2804 / ATTRIBUTE ROUTINE(ALL OFF, BOLD, UNDERLINE) /A021 2805 / TYPE 'ESCAPE' (ASCII 33) /A021 2806 / TYPE '[' /A021 2807 / TYPE APPROPRIATE CODE (0, 1, OR 4 RESPECTIVELY) /A021 2808 / TYPE 'm' /A021 2809 / /A021 2810 / /A021 2811 / TYPE CHAR ON SCREEN /A021 2812 / /A021 2813 / REPEAT /A021 2814 / TRY TO PUT CHAR ON SCREEN & IN BUFFER /A021 2815 / UNTIL BUFFER NOT FULL /A021 2816 / /A021 2817 / ATTRIBUTE ROUTINE(BOLD & UNDERLINE) /A021 2818 / DO ATTRIBUTE ROUTINE (BOLD) /A021 2819 / DO AN UNDERLINE /A021 2820 / /A021 2821 / /A021 2822 / PROCESS CHAR /A021 2823 / /A021 2824 / GET CHAR /A021 2825 / MASK OUT MODE BITS /A021 2826 / TYPE IT /A021 2827 / CHANGE INSTR. & DATA FIELD TO CALLER FIELD /A021 2828 / EXIT ROUTINE /A021 2829 / /A021 2830 / THIS ROUTINE ACCEPTS ATTRIBUTED ASCII CHARS FROM THE EDITOR AND /A021 2831 / PROCESSESES THEM ACCORDING TO THE SPECIFICATIONS GIVEN IN /A021 2832 / "VT278 - THE PHASE II PLAN" /A021 2833 / -- SECTION 8.4.16 -- /A021 2834 / "ESC[Xm" TO THE TERMINAL PRODUCES ATTRIBUTED CHARS THEREAFTER, /A021 2835 / WHERE X = 0 ALL ATTRIBUTES OFF /A021 2836 / 1 DISPLAY BOLDED /A021 2837 / 4 DISPLAY UNDERLINED /A021 2838 / /A021 2839 /INPUT PARAMETERS: AC = Subroutine return address /A021 2840 / MQ = character with attribute bits /A021 2841 / /A021 2842 /IMPLICIT INPUTS: HLDFLD, TTYHLD, CHAR, CURATR, PRVATR, ATRBUT /A021 2843 / P177 /A021 2844 / /A021 2845 /OUTPUT PARAMETER: AC = 0 /A021 2846 / /A021 2847 /IMPLICIT OUTPUT: USER1EXIT, CHAR, EXTFLD, TTYOUP, CURATR, /A021 2848 / PRVATR, ATRBUT /A021 2849 / /A021 2850 /COMPLETION CODE: none /A021 2851 / /A021 2852 /SIDE EFFECTS: /A021 2853 / 1) USER1 and USER2 should ONLY be called through the BLKBOX /A021 2854 / routine due to dependence on parameters supplied by BLKBOX. /A021 2855 / 2) Due to lack of room in fld. 3 (and fld.5 if WS82) of the /A021 2856 / WPEDIT, USER1 and USER2 resides here in field 1 of WPRINT. /A021 2857 / /A021 2858 /WPEDIT LOOKS AT CURATR IN THE BOLDING AND UNDERLINING OF TABS /A057 2859 004000 0000 CURATR, 0 / CURRENT ATTRIBUTE /M057 2860 2861 BLKBOX, XX /A021 undefined ^ 004001 0000 2862 004002 3311 DCA CHAR /SAVE CHARACTER /M186 2863 TAD CIDF0 /SETUP FOR EXIT TO PROPER FIELD /A021 undefined ^ undefined ^ 004003 1000 2864 004004 6214 RDF /A021 2865 004005 3242 DCA EXTFLD /PLACE IN EXIT FIELD LOC. /M174 2866 004006 0000 CDFMYF /A021 2867 004007 1311 USER1, TAD CHAR /GET CHARACTER'S ATTRIBUTE /A021 2868 004010 7010 RAR;BSW / BITS 2,3,4 BECOME BITS 9,10,11 /A021 004011 7002 2869 004012 0377 AND (7) / MASK OUT REST /A021 2870 004013 3200 DCA CURATR /STORE NEW CHARACTER'S ATTRIBUTE /A021 2871 004014 1200 TAD CURATR /IF CURRENT CHAR.'S ATTRIB. 2872 004015 1312 TAD PRVATR / = PREV CHARS ATTRIB. 2873 004016 7650 SNA CLA / THEN /A021 2874 004017 5236 JMP PRCCHR / PROCESS CHARACTER /A021 2875 / /A021 2876 /HERE PREV. ATTRIB. SET EQUAL TO -CURRENT ATTRIB. THEN /A021 2877 /ATTRIBUTE MODE IS ADDED TO START OF ATTRIBUTE TABLE, /A021 2878 /AND PROGRAM EXECUTES THE PROPER SUBROUTINE. /A021 2879 / /A021 2880 /ELSE /A021 2881 004020 1312 TAD PRVATR /IF PREV. CHAR. ATTRIBUTED /A021 2882 004021 7650 SNA CLA / /C197 2883 004022 5225 JMP BLKBO1 / /A197 2884 004023 4266 JMS TYPATR /TURN OFF ALL ATTRIBUTES /C197 2885 004024 0060 "0&177 /A021 2886 004025 1200 BLKBO1, TAD CURATR /PREV. ATTRIB. = -CURRENT ATTRIB. /A021 2887 004026 7041 CIA /A021 2888 004027 3312 DCA PRVATR /A021 2889 004030 1200 TAD CURATR /CASE ATTRIBUTE MODE OF /A021 2890 004031 1376 TAD (ATRTBL) /0 /A021 2891 004032 3244 DCA ATRBUT /THRU /A021 2892 004033 1644 TAD I ATRBUT /7 /A021 2893 004034 3244 DCA ATRBUT /A021 2894 004035 5644 JMP I ATRBUT /JMP TO APPROPRIATE ATTRIBUTE ROUTINE /C197 2895 2896 / NOW PROCESS THE CHARACTER ITSELF 2897 2898 004036 1311 PRCCHR, TAD CHAR /GET CHAR /A021 2899 AND P177 /MASK OUT MODE BITS /A021 undefined ^ undefined ^ 004037 0000 2900 004040 7440 SZA /SKIP IF A NULL /A222 2901 004041 4301 JMS T1YPE /TYPE IT /A021 2902 004042 0000 EXTFLD, 0 /CHANGE TO CALLER DATA AND INSTR. FIELD /A021 2903 004043 5601 JMP I BLKBOX / Return to caller. /M174 2904 2905 2906 004044 0000 ATRBUT, 0 /ATTRIBUTE TABLE POINTER /A021 2907 / /A021 2908 / ATTRIBUTE TABLE /A021 2909 / /A021 2910 004045 4036 ATRTBL, PRCCHR /NO ATTRIBUTE /C197 2911 004046 4055 BOLD /DO ATTRIBUTE ROUTINE (BOLD) /A021 2912 004047 4060 UNDRLN / " " " (UNDERLINE) /A021 2913 004050 4063 BLDUND / " " " (BOLD & UNDERLINE)/A021 2914 004051 4036 PRCCHR /SUPERSCRIPT /C197 2915 004052 4055 BOLD /BOLD (+ SUPERSCRIPT) /A021 2916 004053 4036 PRCCHR /SUBSCRIPT /C197 2917 004054 4055 BOLD /BOLD (+ SUBSCRIPT) /A021 2918 / /A021 2919 / ATTRIBUTE ROUTINE(BOLD) /A021 2920 / /A021 2921 004055 4266 BOLD, JMS TYPATR /TYPE ATTRIBUTE USE ASCII '1' PARAMETER /C197 2922 004056 0061 "1&177 /A021 2923 004057 5236 JMP PRCCHR /C197 2924 / /A021 2925 / ATTRIBUTE ROUTINE(UNDRLN) /A021 2926 / /A021 2927 004060 4266 UNDRLN, JMS TYPATR /TYPE ATTRIBUTE USEASCII '4' PARAMETER /C197 2928 004061 0064 "4&177 /A021 2929 004062 5236 JMP PRCCHR /C197 2930 / /A021 2931 / ATTRIBUTE ROUTINE(BOLD & UNDERLINE) /A021 2932 / /A021 2933 004063 4266 BLDUND, JMS TYPATR /FIRST DO THE UNDERLINE /C197 2934 004064 0064 "4&177 / /C197 2935 004065 5255 JMP BOLD /AND FINISH WITH THE BOLD /A197 2936 2937 2938 / TYPE ATTRIBUTE ROUTINE(ALLOFF, BOLD, UNDERLINE) /A021 2939 / /A021 2940 TYPATR, XX /A021 undefined ^ 004066 0000 2941 004067 1375 TAD (ESC) /A021 2942 004070 4301 JMS T1YPE /TYPE "ESCAPE" /A021 2943 004071 1374 TAD ("[&177) /A021 2944 004072 4301 JMS T1YPE /TYPE '[' /A021 2945 004073 1666 TAD I TYPATR /A021 2946 004074 4301 JMS T1YPE /TYPE APPROPRIATE CODE(0, 1, OR 4) /A021 2947 004075 1373 TAD ("m&177 2948 004076 4301 JMS T1YPE /TYPE 'm' /A021 2949 004077 2266 ISZ TYPATR /BUMP POINTER PAST PARAMETER /A021 2950 004100 5666 JMP I TYPATR /A021 2951 / /A021 2952 / /A021 2953 / TYPE CHAR ONTO SCREEN /A021 2954 / /A021 2955 T1YPE, XX /A021 undefined ^ 004101 0000 2956 004102 5305 JMP T1YPE2 /A021 2957 T1YPE1, CIFSYS /REPEAT /A021 undefined ^ 004103 0000 2958 JWAIT /A021 undefined ^ 004104 0000 2959 T1YPE2, CIFSYS /TRY TO PUT CHAR ON SCREEN & IN BUFFER /A021 undefined ^ 004105 0000 2960 TTYOU / output character to terminal. /A174 undefined ^ 004106 0000 2961 004107 5303 JMP T1YPE1 /UNTIL BUFFER NOT FULL /A021 2962 004110 5701 JMP I T1YPE /A021 2963 2964 2965 004111 0000 CHAR, 0 /HOLDS CURRENT CHARACTER /A021 2966 004112 0000 PRVATR, 0 /PREVIOUS ATTRIBUTE /A021 2967 2968 /***********************************************************************/ 2969 / / 2970 / PRTRID-- / 2971 / THIS ROUTINE SERVES AS A SUBROUTINE ENTRY POINT WHICH / 2972 / CAN BE CALLED FROM OTHER FIELDS / 2973 / IT IS CALLED BOTH FROM WITHIN THE PRINTER CODE / 2974 / AND FROM LIST PROCESSING (WPCUT) AND CX (WPCX) / 2975 / / 2976 / AC0002 INDICATES A CALL TO CHECK DOC DEST / 2977 / CDFMYF AND SET QUALITY MODE IF LA50/LA100 / 2978 / CIFPRT / 2979 / JMS PRTRID / 2980 / DOC DESTINATION OK RETURN / 2981 / WRONG DD RETURN / 2982 /-----------------------------------------------------------------------/ 2983 / AC0001 INDICATES A CALL TO IDENTIFY THE PRINTER/ 2984 / CDFMYF AND RETURN TO THE CALLER ON ERROR / 2985 / CIFPRT / 2986 / JMS PRTRID / 2987 / OK RETURN / 2988 / ERROR RETURN / 2989 /-----------------------------------------------------------------------/ 2990 / AC0000 INDICATES A CALL TO IDENTIFY THE PRINTER/ 2991 / CDFMYF AND GO TO STOP OVERLAY ON ERROR / 2992 / CIFPRT (GENERALLY ONLY USED BY PRINTER CODE / 2993 / JMS PRTRID / 2994 / OK RETURN / 2995 / ON ERROR CALLS STOP PRINTER OVERLAY / 2996 / WITH NON-EXISTENT PRINTER MESSAGE / 2997 / OR PAUSED MESSAGE / 2998 / 2999 PRTRID, XX undefined ^ 004113 0000 3000 004114 3336 DCA IDCAL /SAVE AC ON ENTRY 3001 004115 6214 RDF /READ CALLER'S DATA FIELD /A055 3002 TAD CIDF0 /BUILT CDI INSTRUCTION /A055 undefined ^ undefined ^ 004116 1000 3003 004117 0000 CDFMYF /CHANGE DATA FIELD TO MINE /A055 3004 004120 3334 DCA IDRTN /A055 3005 004121 3000 DCA PRPUMM / clear PUM mode flag for all callers /a232 3006 AC7777 /SEE WHAT ROUTINE IS DESIRED /A140 undefined ^ 004122 0000 3007 004123 1336 TAD IDCAL /DETERMINED BY AC UPON CALL /A140 3008 004124 7750 SNA SPA CLA /SKIP IF IDCAL 2 OR GREATER /A140 3009 004125 5331 JMP PRTRI1 /ID PRINTER /A140 3010 3011 /***********************************************************************/A206 3012 / /A206 3013 / NOTE: OBDDCK AND OBPID MAY NOT BE THE SAME TYPE AS OBWAIT /A206 3014 / SINCE PRTRID MAY BE CALLED BY THE USER JOB (LIST PROCESSING) /A206 3015 / /A206 3016 /***********************************************************************/A206 3017 3018 TAD (OVDDCK)/CHECK DOCUMENT DESTINATION /A140 undefined ^ undefined ^ 004126 1372 3019 004127 4771 JMS PROV /A140 3020 OBDDCK /A140 undefined ^ 004130 0000 3021 3022 PRTRI1, TAD (OVPID) /ID PRINTER /A140 undefined ^ undefined ^ 004131 1372 3023 004132 4771 JMS PROV /A140 3024 OBPID /A140 undefined ^ 004133 0000 3025 3026 3027 IDRTN, XX /A055 undefined ^ 004134 0000 3028 004135 5713 JMP I PRTRID /A036 3029 3030 004136 0000 IDCAL, 0 /USED BY PRINTER ID ROUTINE 3031 /0 FOR REGULAR ERROR PROCESSING, NON 0 WHEN 3032 /SKIP RETURN ON ERROR REQUESTED 3033 3034 SKNHST, XX /SKIP IF NOT DD CHST /A207 undefined ^ 004137 0000 3035 004140 1770 TAD PRQPNT /GET DOCUMENT DESTINATION 3036 TAD (-DHOST2) /SEE IF MATCHES CODE FOR CHST undefined ^ undefined ^ 004141 1372 3037 004142 7640 SZA CLA / 3038 004143 2337 ISZ SKNHST /BUMP IF NOT DD CHST 3039 004144 5737 JMP I SKNHST /RETURN 3040 3041 ESMVV2, /FORWARD VERTICAL MOTION IS DONE BY DOING AS MANY 3042 /FULL LINE FEEDS AS POSSIBLE, AND THEN ANY HALF LINE FEED 3043 /LINE FEEDS ARE ASSUMED TO BE 1/6 INCH 3044 /REMEMBER ESCAPE SEQUENCES ARE NOT SENT TO THE HOST 3045 /SO WE MUST USE LINE FEEDS 3046 /EXCEPT IN THE CASE OF DD CHST WHEN WE USE CARRIAGE RETURNS 3047 3048 004145 2767 ISZ ESCT1 /NEXT 1/2 LINE 3049 004146 7410 SKP 3050 004147 5766 JMP ESCSTG /ONE MORE HALF LINE NEEDED /C222 3051 004150 4337 JMS SKNHST /SKIP IF NOT HOST 3052 004151 1365 TAD (CR-LF) /IF HOST PUT OUT CARRIAGE RETURN /A207 3053 004152 1364 TAD (LF) /ELSE PUT OUT LINE FEED /A207 3054 004153 4763 JMS PRCHAR /CALL PRCHAR DIRECTLY /A207 3055 004154 2767 ISZ ESCT1 /SEE IF WE ARE DONE LINE FEEDS 3056 004155 5345 JMP ESMVV2 /NO 3057 004156 5762 JMP PRESXT /YES 3058 /----------------- 3059 004162 3022 PAGE 004163 5321 004164 0012 004165 0003 004166 3345 004167 3026 004170 6422 004171 1664 004172 0000 004173 0155 004174 0133 004175 0033 004176 4045 004177 0007 3060 3061 / THIS CODE CONTAINS THE RESIDENT JEXIT FROM THE PRINTER JOB /A180 3062 / THIS IS DONE WHEN ANOTHER JOB NEEDS THE PRINTER FIELD /A180 3063 / SEE FULL EXPLANATION NEAR OVPRJX IN WPRTOV /A180 3064 3065 /***********************************************************************/ 3066 / / 3067 / THIS CODE CONTAINS NO ASSEMBLER GENERATED LINKS / 3068 / THIS IS BECAUSE THE END OF THIS PAGE IS PART OF LPOBUF / 3069 / / 3070 WAITJX, CIFSYS /A180 undefined ^ 004200 0000 3071 JEXIT /A180 undefined ^ 004201 0000 3072 3073 /WE MUST RELOAD THE CRITICAL VALUES ON PAGE ZERO BEFORE WE LEAVE /A180 3074 /RESIDENT CODE SINCE WE MAY DO A JWAIT OR AN LPTIN WHEN WE GO /A180 3075 /TO LOAD AN OVERLAY! /A180 3076 3077 004202 1227 TAD WAITK1 / INITIALIZE 10020-10076 3078 DCA T1 / UP TO BUT NOT INCLUDING T1! undefined ^ undefined ^ 004203 3000 3079 004204 1230 TAD WAITK2 / ELSE THIS LITTLE SECTION BLOWS AWAY! 3080 DCA X0 undefined ^ undefined ^ 004205 3000 3081 004206 1230 TAD WAITK2 3082 DCA X1 undefined ^ undefined ^ 004207 3000 3083 WAKEU1, CDFSYS undefined ^ 004210 0000 3084 TAD I X0 undefined ^ undefined ^ 004211 1400 3085 004212 0000 CDFMYF 3086 DCA I X1 undefined ^ undefined ^ 004213 3400 3087 ISZ T1 undefined ^ undefined ^ 004214 2000 3088 004215 5210 JMP WAKEU1 3089 3090 / FLUSH IN THE INPUT BUFFER INCASE THERE IS GARBAGE 3091 CIFSYS undefined ^ 004216 0000 3092 LPTIN undefined ^ 004217 0000 3093 004220 7410 SKP / NO MORE CHRS, CONTINUE 3094 004221 5216 JMP .-3 / GO BACK FOR MORE 3095 / CLA 3096 3097 AC4000 /LOAD A CODE TO MAKE SURE /A180 undefined ^ 004222 0000 3098 004223 3631 DCA I WAITP1 /WE LOAD THIS OVERLAY AFRESH /A180 3099 004224 1232 TAD WAITP2 /GO WAKE UP AT OVWKUP /C183 3100 004225 4633 JMS I WAITP3 /JMS PROV /C183 3101 OBWKUP /A180 undefined ^ 004226 0000 3102 WAITK1, 20-T1 /A183 undefined ^ 004227 0020 3103 004230 0017 WAITK2, 20-1 /A183 3104 WAITP1, OBWKUP&7400+PROVA /A183 undefined ^ 004231 0200 3105 WAITP2, OVWKUP /A183 undefined ^ 004232 0000 3106 004233 1664 WAITP3, PROV /A183 3107 3108 / THIS PAGE CONTAINS TEXT STRINGS SENT BY FLABUZ ROUTINE 3109 3110 004234 3601 BLANKM, TEXT '^A ' / BLANK OUT STOPPED OR BUSY MESSAGE /M141 004235 4040 004236 4040 004237 4040 004240 4040 004241 4040 004242 4040 004243 4040 004244 4040 004245 4040 004246 0000 3111 *.-1 / SAVE LOCS BY COMBINING BLANKM & CSTRNG/C193 3112 004246 3601 CSTRNG, TEXT '^A' / THIS SAYS TO IOA "NEXT WORD IS ADDRESS OF 004247 0000 3113 / STRING TO OUTPUT TO SCREEN" 3114 BELTXT, BELL; 0 / ASCII STRING TO RING TERMINAL BELL /A098 undefined ^ 004250 0000 004251 0000 3115 3116 PRTEXT, IFDEF ENGLSH < 3117 TEXT '^A!&PRINTER ^A^S^A' / DISPLAY "PRINTER" & STOPPED OR BUSY /M141 3118 > 3119 IFDEF ITALIAN < 3120 TEXT '^A!&STAMPANTE ^A^S^A' 3121 > 3122 IFDEF V30NOR < 3123 TEXT '^A!&SKRIVER ^A^S^A' /A238 3124 > 3125 IFDEF V30SWE < 3126 TEXT '^A!&SKRIVAREN \DR^A^S^A'> /A238 3127 3128 IFDEF DUTCH < 3129 TEXT '^A!&PRINTER ^A^S^A' / DISPLAY "PRINTER" & STOPPED OR BUSY /M141 3130 > 3131 3132 IFDEF SPANISH < 3133 TEXT '^A!&IMPRESORA ^A^S^A' / DISPLAY "PRINTER" & STOPPED OR BUSY /M141 3134 > 3135 3136 3137 STPTXT, IFDEF ENGLSH < 3138 TEXT '!&STOPPED' / TEXT FOR PRINTER "STOPPED" MESSAGE /M141 3139 > 3140 IFDEF ITALIAN < 3141 TEXT '!&BLOCCATA' 3142 > 3143 IFDEF V30NOR < 3144 TEXT '!&STOPPAD'> /A238 3145 3146 IFDEF V30SWE < 3147 TEXT '!&STOPPET'> /A238 3148 3149 IFDEF DUTCH < 3150 TEXT '!&GESTOPT'> 3151 3152 IFDEF SPANISH < 3153 TEXT '!&DETENIDA'> 3154 3155 3156 3157 3158 BSYTXT, IFDEF ENGLSH < 3159 TEXT '!&BUSY ' / TEXT FOR PRINTER "BUSY" MESSAGE /M141 3160 > 3161 IFDEF ITALIAN < 3162 TEXT '!&OCCUPATA' 3163 > 3164 IFDEF V30NOR < 3165 TEXT '!&AKTIV' > 3166 3167 IFDEF V30SWE < 3168 TEXT '!&UPPTAGEN'> 3169 3170 IFDEF DUTCH < 3171 TEXT '!&BEZIG '> 3172 3173 IFDEF SPANISH < 3174 TEXT '!&OCUPADA '> 3175 3176 3177 3178 / TOPMID SAVES CURSOR POSITION AND ATTRIBUTES AND SELECTS ABSOLUTE MODE /M138 3179 / OF ADDRESSING AND POSITIONS CURSOR TO TOP MIDDLE OF SCREEN (col.33) /M138 3180 3181 004252 0033 TOPMID, ESC; "7&177 / SAVE CURSOR POSITION AND ATTRIBUTES /A138 004253 0067 3182 004254 0033 ESC; "[&177; "?&177; "6&177; "l&177 004255 0133 004256 0077 004257 0066 004260 0154 3183 / SELECT ABSOLUTE CURSOR ADDRESSING /A138 3184 004261 0033 ESC; "[&177; "1&177; ";&177; "3&177; "3&177; "H&177 004262 0133 004263 0061 004264 0073 004265 0063 004266 0063 004267 0110 3185 / POSITION CURSOR TO COLUMN 33 /M138 3186 004270 0000 0 / ASCII STRING TERMINATOR /A120 3187 3188 004271 0033 BLKREV, ESC; "[&177; "5&177; ";&177; "7&177; "m&177 004272 0133 004273 0065 004274 0073 004275 0067 004276 0155 3189 / SET BLINK AND REVERSE ATTRIBUTES /M138 3190 004277 0000 0 / ASCII STRING TERMINATOR /A120 3191 3192 LED4ON, /A138 3193 004300 0033 ESC; "[&177; "m&177; " &177/ RESET CURSOR ATTRIBUTES & PRINT BLANK /M138 004301 0133 004302 0155 004303 0040 3194 LEDOFF, /A138 3195 004304 0033 ESC; "8&177 / RESTORE CURSOR POSITION AND ATTRIBUTE /A138 004305 0070 3196 004306 0000 0 / ASCII STRING TERMINATOR /A120 3197 3198 PRLBUF, XX /THE BEGINNING OF THE LINE BUFFER. undefined ^ 004307 0000 3199 3200 / THERE MUST BE NO LINKS HERE! 3201 /---------------------------------------------- 3202 PAGE / 4400 3203 / 3204 3205 XX undefined ^ 004400 0000 3206 /----------------------- 3207 PAGE / 4600 3208 3209 3210 /THE PART OF THE PRECEEDING PAGE AFTER THE LABEL PRLBUF, AND THIS ENTIRE 3211 /PAGE COMPRISES THE LINE BUFFER FOR THE PRINTER. HOWEVER, SOME BOOT TIME 3212 /INTIIALIZATION CODE RESIDES IN THE BUFFER TEMPORARILY. 3213 3214 /AFTER THE SYSTEM IS LOADED, CONTROL TRANSFERS HERE. SOME INITIALIZATION 3215 /AND COPYING TAKES PLACE, THE ONE (OR TWO) USER JOBS ARE STARTED UP, AND 3216 /THE PRINTER CONTINES WITH ITS OWN INITIALIZATION. 3217 /ALSO FIELD 7 FOR WPFILS 3218 3219 FLD3R, 3220 3221 / INITIALIZE PRINTER PAGE ZERO SINCE IT IS NOT WRITTEN OUT /A166 3222 3223 004600 0000 CDFMYF /A166 3224 3225 004601 3705 FLD2R1, DCA I FLD3T1 /RESET A LOCATION IN LOC 0-17 /A166 3226 004602 2305 ISZ FLD3T1 /BUMP ADDRESS /A166 3227 004603 2307 ISZ FLD3T3 /BUMP COUNTER /A166 3228 004604 5201 JMP FLD2R1 /NOT DONE /A166 3229 3230 /THIS LOOP COPIES SIXTY WORDS BEGINNING AT LOCATION 20 IN FIELD 0 INTO 3231 /FIELD 1, FIELD 2 AND FIELD 7 3232 3233 FLD3L1, 3234 004605 6201 CDF 0 /CHANGE TO FIELD 0 3235 004606 1705 TAD I FLD3T1 /GET A WORD 3236 004607 6211 CDF 10 /CHANGE TO FIELD 1 3237 004610 3705 DCA I FLD3T1 /SAVE THE WORD 3238 3239 004611 1705 TAD I FLD3T1 /RECOVER THE WORD 3240 004612 6221 CDF 20 /CHANGE TO FIELD 2 3241 004613 3705 DCA I FLD3T1 /SAVE THE WORD 3242 3243 004614 1705 TAD I FLD3T1 /COPY FIELD 0 GLOBALS INTO FIELD 7 3244 004615 6271 CDF 70 3245 004616 3705 DCA I FLD3T1 3246 004617 2305 ISZ FLD3T1 /INCREMENT THE POINTER 3247 004620 2306 ISZ FLD3T2 /ARE WE THROUGH? 3248 004621 5205 JMP FLD3L1 /NO--KEEP COPYING 3249 3250 CDFPRT /CHANGE BACK TO THIS FIELD undefined ^ 004622 0000 3251 3252 004623 3705 FLD2R2, DCA I FLD3T1 /RESET A LOCATION IN LOC 100-177 /A166 3253 004624 2305 ISZ FLD3T1 /BUMP ADDRESS /A166 3254 004625 2310 ISZ FLD3T4 /BUMP COUNTER /A166 3255 004626 5223 JMP FLD2R2 /NOT DONE /A166 3256 3257 004627 1377 TAD (PRTRID /INITIALIZE THE LINK ON PAGE ZERO /A166 3258 004630 3012 DCA PRTID /FOR THE WORLD /A166 3259 3260 TAD (U1JOB) /NOW START THE FIRST USER undefined ^ undefined ^ 004631 1376 3261 004632 6202 CIF 0 3262 JSTRT undefined ^ 004633 0000 3263 3264 004634 7200 CLA /C143 3265 3266 / NOW WE MUST INITIALIZE THE WORD AT THE BEGINNING OF EACH PRINTER 3267 / OVERLAY SO THAT WE WILL BE SURE AND LOAD EACH AREA THE FIRST TIME 3268 3269 004635 1375 TAD (7400 /A150 3270 004636 3774 DCA PROVA /A150 3271 004637 1375 TAD (7400 /A150 3272 004640 3773 DCA PROVA+400 /A150 3273 004641 1375 TAD (7400 /A150 3274 004642 3772 DCA PROVA+1000 /A150 3275 3276 3277 /It is boot up time so read in system value block from system floppy 3278 /and get auxiliary baud rate from system diskette and set baud to that 3279 /value 3280 TAD (DLSVAL) /Set to read system value block /A027 undefined ^ undefined ^ 004643 1376 3281 004644 4771 JMS PRQRX /Go read in block /A027 3282 RXERD+4000 / /A183 undefined ^ 004645 4000 3283 004646 0000 0 /SYSTEM DRIVE /A183 3284 004647 7400 RDBUF /BUFFER ADDRESS /A183 3285 004650 5770 JMP PRQSDE /ERROR READING DLSVAL DURING BOOT /A183 3286 TAD I (RDBUF+MNPRTB-MNABRV) /Get auxiliary baud rate /A027 /M030 undefined ^ undefined ^ undefined ^ undefined ^ 004651 1775 3287 004652 0367 AND (17) /A030 3288 004653 6333 TSB2 /Set baud rate /A027 3289 004654 6321 6321;NOP / CLEAR PENDING FLAG. /A056 004655 7000 3290 004656 6326 6326;NOP / READ PENDING CHARACTER. /A056 004657 7000 3291 004660 7200 CLA 3292 3293 / Load the 8 bit fallback code on top of the startup section in DSKHND /a228 3294 / The startup code is saved in panel mem so that it can be called back /a228 3295 / in if there is a problem reading/writing drive 0 /a228 3296 3297 / But first modify the the V25STB startblock so that V25ST will run on /a228 3298 / any warm start /a228 3299 3300 004661 6201 CDF 0 / PUT all this stuff in the DSKHND field/a228 3301 TAD (V25STB-1) / get the table address /a228 undefined ^ undefined ^ 004662 1366 3302 DCA X3 / put in an auto index register /a228 undefined ^ undefined ^ 004663 3000 3303 TAD (DLCMPS) / load the start block /a228 undefined ^ undefined ^ 004664 1376 3304 DCA I X3 / put it in the table /a228 undefined ^ undefined ^ 004665 3400 3305 TAD (CDFSYS) / CDF buffer FLD /a228 undefined ^ undefined ^ 004666 1376 3306 DCA I X3 / put it in the table /a228 undefined ^ undefined ^ 004667 3400 3307 TAD (V25ST) / get the buffer start address /a228 undefined ^ undefined ^ 004670 1376 3308 DCA I X3 / put it in the table /a228 undefined ^ undefined ^ 004671 3400 3309 TAD (-DSCMPS) / negative block count /a228 undefined ^ undefined ^ 004672 1376 3310 DCA I X3 / put it in the table /a228 undefined ^ undefined ^ 004673 3400 3311 004674 0000 CDFMYF / put the data feild back /a228 3312 3313 004675 4765 JMS BHOOK / call the BLASTR that has already been /a228 3314 / loaded /a228 3315 FALBKE / fallback entry code /a228 undefined ^ 004676 0000 3316 004677 7200 CLA / clear the AC just in case BHOOK dusne /a228 3317 3318 / load the PLNRCS with the standard character width for use by cx & print 3319 / screen /a233 3320 3321 004700 1364 TAD (12) / get the standard character width /a233 3322 004701 3022 DCA PLNRCS / save it for use by all /a233 3323 3324 3325 / THE INITIALIZATION CODE IS DONE. GO TO THE DONE OVERLAY 3326 TAD (OVDON1 undefined ^ undefined ^ 004702 1376 3327 004703 4763 JMS PROV 3328 OBDON1 undefined ^ 004704 0000 3329 3330 3331 TSB2=6333 /SET THE BAUD RATE ON SLU3 OR THE VT278 PRINTER PORT 3332 3333 3334 3335 3336 3337 004705 0000 FLD3T1, 0 /THE ADDRESS TO INITIALIZE 3338 004706 7720 FLD3T2, -60 /THE AMOUNT TO COPY FROM FIELD 0 (LOCS 20-77) 3339 004707 7760 FLD3T3, -20 /COUNTER TO INITIALIZE LOCS 0-17 ON PAGE ZERO 3340 004710 7700 FLD3T4, -100 /COUNTER TO INITIALIZE LOCS 100-177 ON PAGE ZERO 3341 /----------------- 3342 004763 1664 PAGE 004764 0012 004765 5124 004766 7777 004767 0017 004770 3635 004771 3605 004772 1200 004773 0600 004774 0200 004775 7400 004776 0000 004777 4113 3343 MAXLIN=.-PRLBUF /THE SIZE OF THE LINE BUFFER 3344 DECIMAL 3345 IFNZRO MAXLIN-288&2048 /A215 3346 OCTAL 3347 3348 /PRESCS - SENDS [ESCAPE] [VALUE] [CHARACTER] TO LQP 3349 3350 /AC=VALUE 3351 /JMS PRESCS 3352 / CHARACTER 3353 /RETURN POINT, AC=VALUE 3354 3355 3356 PRESCS, XX undefined ^ 005000 0000 3357 3358 005001 3013 DCA PREST1 /SAVE THE VALUE 3359 3360 / IF DD=HOST, DON'T SEND ANY ESCAPE SEQUENCES /A158 3361 / IF WE ARE PRINTING TO AN LQPSE, USE ESC01 ROUTINE 3362 / FOR DRAFT PRINTERS AND LQP02 USE ESC02 ROUTINE 3363 3364 005002 1011 TAD LPONLN /A113 3365 005003 7650 SNA CLA /A158 /C165 3366 005004 5214 JMP PRESC4 / GO RETURN WITHOUT SENDING /A165 3367 005005 4777 JMS SKIPIF / SKIP IF LQPSE /A165 3368 LQPSE / /A165 undefined ^ 005006 0000 3369 005007 5776 JMP ESC02 / MAKE ESC02 PART OF THIS ROUTINE /C165 3370 3371 / IS AN LQPSE /A182 3372 005010 1600 TAD I PRESCS / PICK UP THE CODE /A182 3373 005011 5217 JMP ESC01 / PROCESS LQPSE ELSEWHERE 3374 3375 PRESC3, / RETURN HERE TO FINISH LPQSE SECTION 3376 005012 1600 TAD I PRESCS / GET THE CHARACTER 3377 005013 4775 JMS PRCHAR / OUPUT IT 3378 3379 PRESC4, 3380 005014 1013 TAD PREST1 / GET THE VALUE 3381 005015 2200 ISZ PRESCS / ADJUST THE RETURN ADDRESS 3382 005016 5600 JMP I PRESCS / AND RETURN 3383 3384 / ESCAPE SEQUENCE FORMATTING & OUTPUT ROUTINE FOR LQPSE 3385 3386 / IF THE BIT FLAG NLQPSE IS SET THEN NOTHING IS OUTPUT /A165 3387 / AS THIS SEQUENCE IS NOT INTENDED FOR THE LQPSE AND IT DOESN'T /A165 3388 / KNOW HOW TO THROW IT AWAY /A165 3389 3390 /THE VALUE TAKES THE FORM OF UP TO THREE ENCODED DIGITS. THESE DIGITS 3391 /OCCUPY FOUR-BIT SEGMENTS OF THE VALUE (0-3, 4-7, 8-11). THE DIGITS ARE 3392 /TRANSMITTED BEGINNING WITH THE HIGHEST ORDER NON-ZERO DIGIT. IF ALL THE 3393 /DIGITS ARE ZERO, NO VALUE IS TRANSMITTED. 3394 3395 /THE DIGITS ARE OUTPUT ENCODED AS ASCII CHARACTERS--DIGIT 0 BECOMES 40 3396 /(SPACE), DIGIT 1 BECOMES 41, AND SO ON. 3397 3398 /AFTER THE VALUE IS TRANSMITTED, THE CHARACTER IS SENT. 3399 /MODIFIED TO OUTPUT LEADING ZEROS /A165 3400 3401 ESC01, 3402 /AC CONTAINS THE ARGUMENT AFTER THE CALL 3403 005017 0374 AND (NLQPSE) /SEE IF THE NO TRANSMIT BIT IS SET /A165 3404 005020 7640 SZA CLA /A165 3405 005021 5214 JMP PRESC4 /YES, JUST GO EXIT /A165 3406 3407 005022 1013 TAD PREST1 /GET THE VALUE 3408 005023 3014 DCA PROVT1 /SAVE IT IN A TEMPORARY 3409 3410 AC7775 /THERE CAN BE A MAXIMUM OF THREE DIGITS ENCODED undefined ^ 005024 0000 3411 005025 3015 DCA PROVT2 /SAVE INTO A COUNT TEMPORARY 3412 3413 005026 1373 TAD (ESC) 3414 005027 4775 JMS PRCHAR /SEND THE ESCAPE 3415 3416 /THIS LOOP SEARCHES FOR THE FIRST NON-ZERO DIGIT. 3417 3418 ESC01A, 3419 005030 1014 TAD PROVT1 /GET VALUE 3420 005031 0372 AND (7400) /LOOK AT THE HIGH ORDER DIGIT 3421 005032 7440 SZA 3422 005033 5243 JMP ESC01B /THERE IS A DIGIT--BEGIN THE OUTPUT SEQUENCE 3423 3424 /THE DIGIT IS NOT NON-ZERO. WE MUST LOOK IN THE NEXT POSITION. 3425 3426 005034 1014 TAD PROVT1 /RECOVER THE VALUE 3427 005035 7106 CLL RTL 3428 005036 7006 RTL /MOVE THE NEXT DIGIT CANDIDATE TO THE HIGH POSITION 3429 005037 3014 DCA PROVT1 /SAVE THE VALUE 3430 005040 2015 ISZ PROVT2 /BUMP THE COUNT--LEAVE THE LOOP IF WE'VE LOOKED AT 3431 /ALL THREE POSITIONS 3432 005041 5230 JMP ESC01A /CONTINUE THE LOOP 3433 3434 005042 5212 JMP PRESC3 /OUTPUT NO VALUE--THE VALUE WAS ZERO 3435 3436 3437 /A DIGIT HAS BEEN FOUND IN THE HIGH FOUR BITS. OUTPUT THIS DIGIT AND ALL 3438 /THAT FOLLOW UNTIL THE COUNT OF 3 EXPIRES. 3439 3440 ESC01B, 3441 005043 7102 CLL BSW 3442 005044 7012 RTR /MOVE THE DIGIT INTO THE LOW FOUR BITS 3443 005045 1371 TAD (40) /ADD THE SPACE VALUE 3444 005046 4775 JMS PRCHAR /OUTPUT THE DIGIT 3445 3446 005047 1014 TAD PROVT1 /GET THE VALUE BACK 3447 005050 7106 CLL RTL 3448 005051 7006 RTL /GET THE NEXT DIGIT INTO THE HIGH FOUR BITS 3449 005052 3014 DCA PROVT1 /SAVE THE ROTATED VALUE 3450 3451 005053 1014 TAD PROVT1 /RECOVER THE VALUE 3452 005054 0372 AND (7400) /ISOLATE THE DIGIT 3453 005055 2015 ISZ PROVT2 /BUMP THE COUNT--SKIP IF WE'VE EXCEEDED IT 3454 005056 5243 JMP ESC01B /CONTINUE THE OUTPUT SEQUENCE 3455 3456 /A VALUE HAS BEEN TRANSMITTED IF NECESSARY. 3457 005057 7200 CLA 3458 005060 5212 JMP PRESC3 /NOW GO SEND THE FINAL TERMINATING CHARACTER 3459 3460 /CHANGED RETURN LOCATIONS TO INCLUDE A TECH CHARACTER RETURN /A206 3461 /CHANGED RETURN LOCATIONS TO INCLUDE A multinational CHARACTER RETURN /a227 3462 3463 3464 /When this routine is called, the buffer variables point to the last processed 3465 /character. The routine determines which of five possibilities hold: 3466 3467 /1. This is the last character in the line 3468 / Make a normal return 3469 3470 /2. The next character is a multinational character precedence character 3471 / Point to it and make a skip return 3472 3473 /3. The next character is a technical character precedence character 3474 / Point to it and make a skip return 3475 3476 /4. There is another character in the current position 3477 / Move the buffer pointers to indicate it and make a triple skip return 3478 3479 /5. The next character is in the next position 3480 / Move the buffer pointers to indicate it and make a quad skip return 3481 3482 PLCHBS, XX undefined ^ 005061 0000 3483 3484 005062 4770 JMS PLNXT /Is there another character? 3485 005063 5661 JMP I PLCHBS /No--make a normal return 3486 3487 /THERE IS ANOTHER CHARACTER. IF IT IS A DEAD KEY PRECEDENCE CODE /A202 3488 /WE WILL MAKE A SKIP RETURN /C206 3489 /IF IT IS A MULTINATIONAL /a271 3490 3491 005064 2261 ISZ PLCHBS /PREPARE AT LEAST A SKIP RETURN /A206 3492 005065 1436 TAD I PLPTR /GET THE CHARACTER 3493 AND P177 / /A202 undefined ^ undefined ^ 005066 0000 3494 005067 1367 TAD (-23) /IS IT ANY OF THE DEAD KEY PRECEDENCE CHRS? /A202 3495 005070 7450 SNA / test for tech precedence char /a227 3496 005071 5300 JMP PWSTEC / ok was a tech char /a227 3497 005072 7001 IAC / multinational precedence? /a227 3498 005073 7450 SNA / ? /A227 3499 005074 5301 JMP PWSMNC / ok was a M.N.C /a227 3500 005075 7001 IAC / could it have been a line drawing precedence /a227 3501 005076 7440 SZA / was it -- then return /a227 PLCHXX / no try the rest then /a227 3502 005077 5302 JMP PLCHXX / no then keep looking /a227 3503 3504 005100 2261 PWSTEC, ISZ PLCHBS / prepar a double skip return /a227 3505 005101 5661 PWSMNC, JMP I PLCHBS /YES, MAKE A SKIP RETURN /C206 3506 3507 /THERE IS ANOTHER CHARACTER AND IT IS NOT A TECHNICAL PRECEDENCE CHR /A202 3508 /IF IT IS BACKSPACE PLNXT IS GUARANTEED TO SKIP /A202 3509 005102 2261 PLCHXX, ISZ PLCHBS /PREPARE AT LEAST A SKIP ROUTINE /c227 /M202 3510 005103 2261 ISZ PLCHBS /PREPARE AT LEAST A SKIP RETURN /A227 3511 005104 1366 TAD (21-BS) /IS IT BACKSPACE /C202 3512 005105 7650 SNA CLA /Skip if not a backspace 3513 3514 005106 4770 JMS PLNXT /Point to the next character if a backspace 3515 3516 /Although PLNXT makes a normal return if there are no more characters, 3517 /we can assume that it won't since a character always follows a backspace. 3518 /Instead, it will make a skip return. 3519 3520 005107 2261 ISZ PLCHBS /Prepare a double skip return to indicate no backspace 3521 005110 5661 JMP I PLCHBS /And return 3522 /***********************************************************************/ 3523 / / 3524 / THIS BUFFER IS STORAGE FOR THE 4 PARAMETERS IN THE SEQUENCE / 3525 / ESC[*;*;*;*!s 3526 / THIS SEQUENCES IS USED IN JUSTIFICATION 3527 / 3528 005111 0000 JSTIFY, ZBLOCK 13 / 11 DIGITS ASSUMES /C196 005112 0000 005113 0000 005114 0000 005115 0000 005116 0000 005117 0000 005120 0000 005121 0000 005122 0000 005123 0000 3529 / 4 DIGIT FIRST PARAMETER 3530 / 1 DIGIT 2ND PARAMETER 3531 / 4 DIGIT 3RD PARAMETER 3532 / 2 DIGIT 4TH PARAMETER 3533 3534 /******************************************************************** 3535 / BHOOK Hook to panel page blaster 3536 /******************************************************************** /a227 3537 3538 005124 0000 BHOOK, 0 / hook return address /a227 3539 005125 3345 DCA BLACSV / save accumulator /a227 3540 005126 6214 RDF / read the data field /a227 3541 TAD CDF0 / make a cdf instruction /a227 undefined ^ undefined ^ 005127 1000 3542 005130 3342 DCA BHKEXI / save for return /a227 3543 005131 0000 CDFMYF / set to hooks field /a227 3544 005132 1724 TAD I BHOOK / get the table entry /a227 3545 005133 7421 MQL / push into MQ /a227 3546 005134 1345 TAD BLACSV / get the ac /a227 3547 005135 2324 ISZ BHOOK / increment the return address /a227 3548 CIFMNU / blaster is in the menu field /a227 undefined ^ 005136 0000 3549 005137 6002 IOF / turn the interrupts off before.. /a227 3550 005140 4744 JMS I BLASTH / Calling blaster /a227 3551 005141 2324 ISZ BHOOK / skip return exit /a227 3552 005142 0000 BHKEXI, 0 / CDF instruction position important /a227 3553 005143 5724 JMP I BHOOK / return /a227 3554 BLASTH, BLASTR / blastr address (get from WPF1) /a227 undefined ^ 005144 0000 3555 005145 0000 BLACSV, 0 / ac save /a227 3556 3557 3558 3559 X=.-1 3560 /---------------- 3561 005166 0011 PAGE 005167 7755 005170 2535 005171 0040 005172 7400 005173 0033 005174 4000 005175 5321 005176 3000 005177 6121 3562 3563 / DRAFT PRINTER, BOLD INTERPRETATION SUBROUTINE /A152 3564 / THIS SUBROUTINE PUTS OUT ESCAPE SEQUENCES TO SELECT / 3565 / EITHER A FONT OR CHARACTER SET / 3566 / IF PRBIF=1 A CHRSET IS SELECTED / 3567 / IF PRBIF=2 A FONT IS SELECTED / 3568 3569 / IF THE LAST SELECTION WAS THE SAME AS THE CURRENT SELECTION / 3570 / THEN NO ESCAPE SEQUENCE IS SENT / 3571 / HOWEVER, IF PRBICS IS NEGATIVE WE EXECUTE THE ROUTINE /A177 3572 / UNCONDITIONALLY. PRBICS IS SET 7777 AT BEGIN OF DOCUMENT /A177 3573 3574 LPBI, XX / undefined ^ 005200 0000 3575 005201 7501 MQA / SAVE THE MQ AS PRESCS CLOBBERS IT! /A154 3576 005202 3243 DCA LPBIT1 / /A154 3577 005203 1242 TAD PRBICS / GET SAVED VALUE OF BIC / 3578 005204 7500 SMA / SKIP IF AC=7777 TO FORCE EXECUTION /A177 3579 005205 1241 TAD PRBIC / ADD TO CURRENT VALUE / 3580 005206 0377 AND (2000) / SEE IF SAME / 3581 005207 7650 SNA CLA / IF SO JUST EXIT / 3582 005210 5600 JMP I LPBI / SAME BOLD INTERPRETATION AS LAST CHR / 3583 3584 005211 1241 TAD PRBIC / SAVE NEW INTERPRETATION / 3585 005212 3242 DCA PRBICS / FOR NEXT TIME / 3586 3587 / SEE WHETHER WE ARE DOING FONTS OR CHRSETS 3588 3589 AC7776 / undefined ^ 005213 0000 3590 005214 1067 TAD PRBIF / 3591 005215 7650 SNA CLA / 3592 005216 5225 JMP LPBIF / FONTS / 3593 3594 / WE ARE DOING CHRSET INTERPRETATION / 3595 3596 005217 1241 TAD PRBIC / GET BOLD INTERPRETATION / 3597 005220 7650 SNA CLA / SEE IF BOLD OR NONBOLD / 3598 AC0001 / SELECT SI FOR G0 / undefined ^ 005221 0000 3599 005222 1376 TAD (SO) / ELSE SELECT SO FOR G1 / 3600 005223 4321 JMS PRCHAR / SEND IT OUT / 3601 005224 5600 JMP I LPBI / RETURN / 3602 3603 /WE ARE DOING FONT BOLD INTERPRETATION / 3604 3605 LPBIF, / 3606 005225 1241 TAD PRBIC / SEE IF THIS CHR IS BOLD / 3607 005226 7650 SNA CLA / / 3608 005227 5237 JMP LPBIF1 / NO / 3609 005230 1071 TAD PRBIFB / YES, GET BOLD FINAL / 3610 005231 4775 LPBI1, JMS PRESCS / DO ESCAPE SEQUENCE / 3611 005232 4063 PCSTFN / FOR FONT SELECTION / 3612 005233 7200 CLA / CLEAR RETURNED CODE / 3613 005234 1243 TAD LPBIT1 / GET PREVIOUS MQ /A154 3614 005235 7421 MQL / AND PUT IT BACK IN MQ /A154 3615 005236 5600 JMP I LPBI / RETURN / 3616 3617 005237 1070 LPBIF1, TAD PRBIFN / GET NORMAL FINAL / 3618 005240 5231 JMP LPBI1 / AND GO OUTPUT SEQUENCE / 3619 3620 005241 0000 PRBIC, 0 / 3621 005242 0000 PRBICS, 0 / 3622 005243 0000 LPBIT1, 0 / A TEMP TO HOLD MQ /A154 3623 3624 /***********************************************************************/ 3625 / / 3626 / LPIND--ROUTINE TO INDENT. USED ONLY ON DRAFT PRINTERS THAT / 3627 / CANNOT RECOGNIZE THE HORIZONTAL MARGIN ESCAPE SEQUENCE / 3628 / ESC [ Pn s 3629 / CURRENTLY THE LA50 / 3630 / ALSO THE HOST PORT /A159 3631 / ...(WE DON'T SEND ESCAPE SEQS TO HOST / 3632 /D174 DELETED DPMSK TEST WHICH CAUSED THIS ROUTINE TO WORK / 3633 /D174 ALSO ON THE LA120, WHICH DOES RECOGNIZE MARGIN COMMND / 3634 / / 3635 /***********************************************************************/ 3636 3637 LPIND, XX /A143 undefined ^ 005244 0000 3638 005245 3262 DCA LPINDT /SAVE AMOUNT TO INDENT /A188 3639 005246 1011 TAD LPONLN /GET TYPE OF PRINTER 3640 005247 7440 SZA /DD=HOST /A159 3641 005250 1374 TAD (-LA50) /SEE IF LA50 3642 005251 7640 SZA CLA /YES, DO THIS ROUTINE 3643 005252 5644 JMP I LPIND /NO, JUST RETURN 3644 3645 AC0006 /INITIALIZE THE JUSTIFY COUNTER TO HALF A SPACE undefined ^ 005253 0000 3646 005254 3302 DCA LPJCNT 3647 3648 /NOW INDENT THE LINE ACCORDING TO THE VALUE PASSED. /C188 3649 3650 005255 1373 TAD (SPC) /GET A SPACE 3651 005256 7421 MQL /SET THINGS UP FOR LPMOVE 3652 3653 005257 1262 TAD LPINDT /GET THE VALUE /C188 3654 005260 4263 JMS LPMOVE /INDENT THE MARGIN 3655 005261 5644 JMP I LPIND /RETURN 3656 3657 005262 0000 LPINDT, 0 /STORAGE FOR AMOUNT TO INDENT /A188 3658 3659 /THIS ROUTINE DOES HORIZONTAL MOTION FOR THE LINE PRINTER. IT EXPECTS THE 3660 /AMOUNT TO MOVE IN PRINT UNITS IN THE AC UPON CALL. IT ADDS THE REQUEST 3661 /TO THE LEFTOVER UNITS FROM THE LAST CALL. THIS ROUTINE CANNOT ALWAYS 3662 /MOVE THE FULL AMOUNT REQUESTED, SINCE IT CAN ONLY MOVE IN UNITS OF ONE 3663 /CHARACTER. THE ROUTINE FILLS THE SPACE IT MOVES ACROSS WITH THE 3664 /CHARACTER IN THE MQ. 3665 3666 /MQ=CHARACTER TO FILL WITH 3667 /AC=DISTANCE TO MOVE IN UNITS 3668 /JMS LPMOVE 3669 /AC=0 3670 3671 LPMOVE, 3672 XX undefined ^ 005263 0000 3673 3674 005264 1302 TAD LPJCNT /ADD THE UNCOMPLETED SPACING FROM LAST TIME 3675 005265 3302 DCA LPJCNT /SAVE AS THE AMOUNT TO SPACE 3676 3677 /THIS LOOP OUTPUTS AS MANY UNITS OF SPACES AS IT CAN OF THE UNCOMPLETED SPACING. 3678 3679 LPMOV1, 3680 005266 1022 TAD PLNRCS /GET THE SIZE OF A SPACE /A143 3681 005267 7041 CIA /A143 3682 005270 1302 TAD LPJCNT /GET THE AMOUNT OF UNCOMPLETED SPACING 3683 005271 7510 SPA 3684 005272 5300 JMP LPMOV2 /NO WHOLE SPACES REMAIN--LEAVE THE LOOP 3685 005273 3302 DCA LPJCNT /SAVE THE NEW UNCOMPLETED SPACING 3686 3687 005274 7501 MQA /GET THE THING TO PRINT 3688 AND P177 /MASK ANY MODE BITS undefined ^ undefined ^ 005275 0000 3689 005276 4321 JMS PRCHAR /PRINT IT 3690 005277 5266 JMP LPMOV1 /CONTINUE THE LOOP 3691 3692 LPMOV2, 3693 005300 7200 CLA 3694 005301 5663 JMP I LPMOVE /RETURN 3695 3696 005302 0000 LPJCNT, 0 /CONTAINS ANY UNCOMPLETED UNITS OF SPACING 3697 3698 /THIS ROUTINE MULTIPLIES THE NUMBER ADDRESSED AFTER THE SUBROUTINE CALL BY 3699 /THE NUMBER IN THE AC UPON CALL. BOTH SHOULD BE NON-NEGATIVE INTEGERS. 3700 /THE RESULT IS RETURNED IN THE AC. THIS ROUTINE OPERATES MOST EFFICIENTLY 3701 /IF THE FACTOR IN THE AC IS THE SMALLER. 3702 3703 /AC=SMALLER FACTOR 3704 /JMS PRMULT 3705 / ADDRESS OF LARGER FACTOR 3706 /AC=PRODUCT OF TWO FACTORS 3707 3708 PRCHAT, /HARRY PREBLE WILL DO ANYTHING TO SAVE A LOCATION. HERE WE 3709 /USE A LOCATION FROM A ROUTINE THAT DOES NOT CALL PRCHAR 3710 /AND IS RELATIVELY PURE AND SIMPLE AND IS NEARBY PRCHAR... 3711 PRMULT, 3712 XX undefined ^ 005303 0000 3713 3714 005304 7040 CMA 3715 DCA T1 /SAVE THE NEGATIVE LESS ONE OF THE MULTIPLIER undefined ^ undefined ^ 005305 3000 3716 3717 005306 1703 TAD I PRMULT /GET ADDRESS OF MULTIPLICAND 3718 005307 2303 ISZ PRMULT 3719 DCA T2 /SAVE TO INDIRECT THROUGH undefined ^ undefined ^ 005310 3000 3720 3721 /THE MULTIPLIER IS NOW NEGATED (LESS ONE) AND STORED IN T1, WHILE THE 3722 /MULTIPLICAND ISS ADDRESSED THROUGH T2. THIS LOOP REPEATEDLY ADDS THE 3723 /MULTIPLICAND INTO THE AC. 3724 3725 PRMLT1, 3726 ISZ T1 /TEST THE MULTIPLIER undefined ^ undefined ^ 005311 2000 3727 005312 7410 SKP /KEEP MULTIPLYING 3728 005313 5703 JMP I PRMULT /RETURN 3729 3730 TAD I T2 /ADD THE MULTIPLICAND undefined ^ undefined ^ 005314 1400 3731 005315 5311 JMP PRMLT1 /CONTINUE THE LOOP 3732 3733 / This code allows use to call PRCHAR from a routine in SYS that is /a231 3734 / dealing with eight bit chars See WPRTHL /a231 3735 3736 005316 4321 XFPRCH, JMS PRCHAR / call PRCHAR /a231 3737 CDIFIO / return to sys FIELD /m0234 /a231 undefined ^ 005317 0000 3738 JMP P85C / at this address /m0234 /a231 undefined ^ undefined ^ 005320 5000 3739 3740 /THIS ROUTINE OUTPUTS A CHARACTER TO THE PRINTER. THE LOCATION PRCHR3, 3741 /WHICH IS A JMS TO THE PRINTER HANDLER, IS PATCHED ELSEWHERE IN THE 3742 /SPOOLER TO EITHER LPTOU OR HS2OU, DEPENDING ON WHETHER A PRINTER HANDLER 3743 /OR A HOST HANDLER IS TO BE USED. 3744 3745 /AC=CHARACTER 3746 /JMS PRCHAR 3747 /AC=0 3748 3749 PRCHAR, 3750 XX undefined ^ 005321 0000 3751 AND P377 /STRIP THE MODE BITS /allow 8 bits /m227 undefined ^ undefined ^ 005322 0000 3752 005323 3303 DCA PRCHAT /SAVE THE CHARACTER 3753 IFDEF DEVEL1 3754 3755 005324 1034 PRCHR4, TAD PRYES /IS PRINTING DISABLED? 3756 005325 7640 SZA CLA /M010 3757 005326 5721 JMP I PRCHAR /YES--JUST RETURN WITHOUT PRINTING 3758 005327 5337 JMP PRCHR2 /ENTER THE PRINT LOOP 3759 3760 PRCHR1, 3761 005330 3303 DCA PRCHAT /SAVE THE CHARACTER 3762 005331 4772 JMS SQPINP /SEE IF ANY CHARACTERS COMING IN /A113 3763 005332 1010 TAD PABORT /HAS PRINTING BEEN ABORTED? 3764 /D016 3765 005333 7640 SZA CLA / 3766 005334 5721 JMP I PRCHAR / YES- RETURN WITHOUT PRINTING 3767 CIFSYS / WAIT FOR HANDLER TO ACCEPT CHARACTERS undefined ^ 005335 0000 3768 JWAIT undefined ^ 005336 0000 3769 3770 PRCHR2, 3771 005337 1303 TAD PRCHAT /RECOVER THE CHARACTER 3772 005340 6202 CIF 0 /GIVE CHARACTER TO HANDLER 3773 3774 PRCHR3, 3775 LPTOU /THIS LOCATION IS PATCHED WITH EITHER LPTOU OR HS2OU. undefined ^ 005341 0000 3776 /THIS IS A JMS TO THE APPROPRIATE HANDLER. THE 3777 /HANDLER WILL MAKE A NORMAL RETURN WITH AC=CHARACTER 3778 /IF THERE IS NO ROOM IN ITS BUFFER FOR THE CHARACTER. 3779 /OTHERWISE, THE HANDLER WILL MAKE A SKIP RETURN WITH 3780 /AC=0. 3781 3782 /THE LOCATION IS PATCHED WITH LPTOU INITIALLY BECAUSE 3783 /THE INITIALLY LOADED HANDLER IS THE SERIAL HANDLER. 3784 3785 005342 5330 JMP PRCHR1 /NO ROOM--CONTINUE THE WAIT LOOP 3786 3787 IFDEF DEVEL < /A213 3788 / THE FOLLOWING CODE INSERTED TEMPORARILY. IT IS SO THE HOST PORT 3789 / CAN BE USED TO BE A MONITOR. THE HOST IS USED TO RECORD AN IMAGE OF 3790 / THE PRINTER OUTPUT. 3791 3792 TAD PRCHAT /GET CHR 3793 CIFSYS 3794 HS2OU 3795 SKP CLA > 3796 005343 5721 JMP I PRCHAR /RETURN--WE ARE DONE 3797 IFDEF DEVEL < JMS SQPINP 3798 CIFSYS 3799 JWAIT 3800 JMP .-10 > 3801 3802 3803 3804 /PRCHAT NOW SHARED WITH PRMULT, NEARBY ON THE SAME PAGE 3805 /PRCHAT, 0 /A temporary to hold the character being printed 3806 3807 3808 /This routine does division. The dividend is in PRJDEF at the time of 3809 /call, and must be negative. The divisor is in the AC. The quotient is 3810 /the number of times the divisor can be added to the dividend before the 3811 /dividend becomes a non-zero positive number. The remainder is the positive 3812 /number which remains when the dividend becomes positive, negated, minus one, 3813 /added to the divisor. 3814 3815 /This routine is used in justifying the line. We are dividing the amount by 3816 /which the line is too short (PRJDEF) among the number of positions or spaces 3817 /indicated in the AC upon invocation. The quotient is the constant amount to 3818 /add to each position or space; the remainder is an ISZ counter used in 3819 /making positions or spaces for additional justification. 3820 3821 /The remainder is returned in PRJDEF; the quotient is returned in the AC. 3822 3823 3824 PRDVID, 3825 XX undefined ^ 005344 0000 3826 3827 DCA T2 /Save the divisor undefined ^ undefined ^ 005345 3000 3828 DCA T3 /Clear the quotient undefined ^ undefined ^ 005346 3000 3829 005347 1057 TAD PRJDEF /Get the dividend 3830 3831 /We now enter a loop where we successively add the divisor to the dividend 3832 /until the AC goes positive. 3833 3834 PRDVI1, 3835 TAD T2 /Add in the divisor--is it too much? undefined ^ undefined ^ 005350 1000 3836 005351 7540 SMA SZA 3837 005352 5355 JMP PRDVI2 /Yes--leave the loop 3838 ISZ T3 /No--increment the quotient undefined ^ undefined ^ 005353 2000 3839 005354 5350 JMP PRDVI1 /And continue the division loop 3840 3841 /The quotient is in T3, and the AC contains the amount too large the 3842 /dividend is with one extra addition of the divisor. We want to derive the 3843 /remainder--so we negate the AC and subtract one. 3844 3845 PRDVI2, 3846 005355 3057 DCA PRJDEF /Save the remainder 3847 TAD T2 /Recover the divisor undefined ^ undefined ^ 005356 1000 3848 005357 7040 CMA /Negate and subtract one 3849 005360 1057 TAD PRJDEF /From the remainder 3850 005361 3057 DCA PRJDEF /Save the result 3851 3852 TAD T3 /Recover the quotient undefined ^ undefined ^ 005362 1000 3853 005363 5744 JMP I PRDVID /And return 3854 /--------------- 3855 005372 5400 PAGE 005373 0040 005374 7777 005375 5000 005376 0016 005377 2000 3856 3857 /***********************************************************************/ 3858 / / 3859 / SQPINP--PARSING ROUTINE CALLED AS NEEDED FROM WITHIN / 3860 / THE PRINTER CODE. IT HANDLES POLLED PRODUCT IDENTIFICATION / 3861 / RESPONSES AND ASYCHRONOUS ERROR REPORTS (IF ANY) / 3862 / RECEIVED FROM THE PRINTER / 3863 / / 3864 / IF THE DOCUMENT DESTINATION IS CHST THEN LPTIN IS REPLACED / 3865 / BY HS2IN AND WE THROW AWAY ALL CHARACTER SENT BACK BY THE HOST / 3866 / / 3867 /***********************************************************************/ 3868 / 3869 / THIS PARSER HANDLES THE LQPSE AND TWO GENERAL TYPES OF STRINGS: / 3870 / PRODUCT IDENTIFICATION SEQUENCES / 3871 / STATUS REPORTS / 3872 / PRODUCT IDENTIFICATION SEQUENCES MAY BE OF THE FORM: / 3873 / ESC [ ? Pa ; Pb c 3874 / THE ; Pb MAY BE MISSING ON SOME PRODUCTS 3875 / SEE TABLE AT VWHOTB FOR MORE DETAILS / 3876 / THE BRIEF STATUS REPORT / 3877 / ESC [ 0 n INDICATING NO ERRORS 3878 / EXTENDED STATUS REPORTS OF THE FORM / 3879 / ESC [ ? Pa ; Pb ; ... ; n 3880 / THEY MAY CONTAIN UP TO 16 Px NUMERICAL ARGUMENTS 3881 / IF Pa = 0 then there are no errors 3882 / IF Pa < 20 then Pa should =3 and there are errors 3883 / SEE TABLE AT VERRTB FOR MORE DETAILS / 3884 / 3885 / THE FOLLOWING SEQUENCES ARE PARSED / 3886 / FOR THE LQPSE: ESC [ ? 9 c FOR THE "WHO ARE YOU REPORT" 3887 / ESC N3 N2 N1 0 FOR A STATUS REPORT / 3888 CAN=30 / FATAL ERROR 3889 EOT=04 / NON FATAL ERROR 3890 3891 CSI=233 / 8 BIT CODE REPLACES ESC [ 3892 3893 SQPINP, XX / undefined ^ 005400 0000 3894 005401 4777 JMS PRSTUP / SEE IF MUST ROLLUP STATUS / 3895 SQPNXT, CIFSYS / SEE IF THERE IS A CHARACTER / undefined ^ 005402 0000 3896 LPTIN / IN THE BUFFER FROM THE PRINTER / undefined ^ 005403 0000 3897 005404 5600 JMP I SQPINP / ...NOTHING, JUST RETURN / 3898 3899 3900 AND P177 / STRIP TO SEVEN BITS /A119 undefined ^ undefined ^ 005405 0000 3901 / THE LA120 ALWAYS TRANSMITS THE 200 BIT/A119 3902 / SO DOES THE LA34 /A120 3903 005406 7450 SNA 3904 005407 5202 JMP SQPNXT / IGNORE NULLS 3905 005410 3335 DCA INPUT / SAVE THE INCOMING CHR / 3906 3907 3908 / IF WE ARE PRINTING TO CHST THEN DISCARD ALL CHARACTERS. BEFORE THIS /A218 3909 / CODE WAS ADDED THE ECHOS FROM THE HOST COULD LOOK LIKE VERY LONG /A218 3910 / LQPSE STATUS REPORTS, CAUSING HALTS AND FROWNS... /A218 3911 3912 005411 4776 JMS SKNHST / SKIP IF NOT CHST /A218 3913 005412 5202 JMP SQPNXT / YES, JUST FLUSH BUFFER /A218 3914 3915 / THE DOCUMENT DESTINATION IS NOT CHST... /A218 3916 005413 1335 TAD INPUT / CHECK FOR EOT AND CANCEL /A126 3917 005414 1375 TAD (-EOT / IF INPUT = 'EOT' /C118 3918 005415 7450 SNA / 3919 /d236 JMP SQEOT / THEN PROCESS 'EOT' / 3920 005416 5202 JMP SQPNXT / ignore LQPSE errors /a236 3921 005417 1374 TAD (EOT-CAN / IF INPUT = 'CAN' 3922 005420 7650 SNA CLA 3923 /d236 JMP SQCAN / THEN PROCESS 'CAN' 3924 005421 5254 JMP SQSTRT / ignore LQPSE Errors /a236 3925 3926 / ELSE DISPATCH 3927 005422 1334 TAD STATX / GET THE PARSE STATE / 3928 005423 4231 JMS VSTAT / CASE STATEMENT ON VSTAT / 3929 005424 5511 VSTAT0 / 3930 005425 5440 VSTAT1 / 3931 005426 5444 VSTAT2 / 3932 005427 5457 VSTAT3 / 3933 005430 5505 VSTAT4 3934 3935 005431 0000 VSTAT, 0 / 3936 005432 1231 TAD VSTAT / VECTOR ADR = BASE ADR + VSTAT / 3937 005433 3231 DCA VSTAT / 3938 005434 1631 TAD I VSTAT / GET ADDRESS OF STATE HANDLER CODE / 3939 005435 3231 DCA VSTAT / SAVE THE VECTOR / 3940 005436 1335 TAD INPUT / RETRIEVE THE CHAR INPUT / 3941 005437 5631 JMP I VSTAT / JMP TO STATE HANDLER CODE / 3942 / 3943 3944 005440 1373 VSTAT1, TAD (-133 / IS IT A BRACKET ? / 3945 005441 7650 SNA CLA / /C221 3946 005442 5322 JMP VSET2 / YES, GO STATE2 / 3947 /d236 JMS SKIPIF / ONLY IF LQPSE DO MORE /A221 3948 /d236 LQPSE / ELSE DCS WILL FOUL US ALL UP! /A221 3949 005443 5307 JMP SQESCS / NOT LQPSE, DON'T STORE! /A221 3950 /d236 TAD INPUT / GET CHR AGAIN /A221 3951 /d236 TAD (-60 / ZERO ENDING STATUS REPORT (LQP01) / 3952 /d236 SNA CLA / 3953 /d236 JMP REP01 / IF SO, DO REP0T / 3954 /d236 TAD INPUT / ELSE SAVE LQPSE STATUS DATA / 3955 /d236 DCA I VPTR / ON THE STACK / 3956 /d236 ISZ VPTR 3957 /d236 JMP SQESCS / GO CHECK FOR ESC OR CSI 3958 3959 005444 1372 VSTAT2, TAD (-77 / IS IT QUESTION MARK ? 3960 005445 7450 SNA 3961 005446 5321 JMP VSET3 / YES, GO TO STATE 3 3962 005447 1371 TAD (77-60 / IS IT A ZERO DIGIT ? 3963 005450 7640 SZA CLA 3964 005451 5254 JMP SQSTRT / NO, IGNORE AND START OVER 3965 005452 3465 DCA I VPTR / PUT ZERO ON NUMBER STACK 3966 005453 5320 JMP VSET4 / GO TO STATE 4 3967 3968 005454 7200 SQSTRT, CLA 3969 005455 3334 DCA STATX / BACK TO STATE 0 3970 005456 5307 JMP SQESCS / GO CHECK FOR ESC OR CSI 3971 3972 005457 4770 VSTAT3, JMS DIGCHK / INPUT A DIGIT? 3973 005460 5271 JMP VSTA3A / NO 3974 005461 3335 DCA INPUT / SAVE DIGIT VALUE 3975 005462 1465 TAD I VPTR / GET PRESENT VALUE 3976 005463 7106 CLL RTL 3977 005464 1465 TAD I VPTR 3978 005465 7004 RAL / MULTIPLY BY TEN 3979 005466 1335 TAD INPUT / AND ADD IN DIGIT VALUE 3980 005467 3465 VSTA3D, DCA I VPTR / SAVE IT 3981 005470 5202 JMP SQPNXT / GO PROCESS NEXT DIGIT 3982 3983 005471 1367 VSTA3A, TAD (-73 / SEE IF A SEPARATOR ';' 3984 005472 7440 SZA / SKIP IF ";" /C191 3985 005473 5276 JMP VSTA3C / NOT ";" /A191 3986 005474 2065 ISZ VPTR / ";", BUMP POINTER 3987 005475 5267 JMP VSTA3D / GO CLEAR THIS LOCATION & CONTINUE /C191 3988 3989 005476 1366 VSTA3C, TAD (73-143) / SEE IF A PRODUCT ID TERMINATOR 'c' 3990 005477 7450 SNA 3991 005500 5765 JMP VSTWHO / YES, GO PROCESS 3992 3993 005501 1364 TAD (143-156) / SEE IF A STATUS REPORT TERMINATOR 3994 005502 7450 VSTA3B, SNA 3995 005503 5763 JMP VSTERR / YES, GO PROCESS 3996 005504 5307 JMP SQESCS / ELSE WE DON'T KNOW WHAT THIS IS 3997 3998 005505 1362 VSTAT4, TAD (-156) / FINISH BRIEF NO ERROR REPORT 3999 005506 5302 JMP VSTA3B 4000 4001 005507 7200 SQESCS, CLA 4002 005510 1335 TAD INPUT / RECOVER INPUT 4003 005511 1361 VSTAT0, TAD (-CSI / IF INPUT = 'CSI 4004 005512 7450 SNA / 4005 005513 5326 JMP VSET2A / THEN STATE=2 4006 005514 1360 TAD (CSI-ESC / ELSE IF INPUT = 'ESC' / 4007 005515 7650 SNA CLA / 4008 005516 5327 JMP VSET1A / THEN STATE 1 4009 005517 5202 JMP SQPNXT 4010 4011 005520 7001 VSET4, IAC 4012 005521 7001 VSET3, IAC 4013 005522 7001 VSET2, IAC 4014 005523 7001 IAC 4015 005524 3334 DCA STATX 4016 005525 5202 JMP SQPNXT 4017 4018 005526 7001 VSET2A, IAC /A118 4019 005527 7001 VSET1A, IAC /A118 4020 005530 3334 DCA STATX /A118 4021 005531 1357 TAD (VSTACK 4022 005532 3065 DCA VPTR 4023 005533 5267 JMP VSTA3D / GO CLEAR FIRST STACK LOCATION /C191 4024 4025 005534 0000 STATX, 0 4026 005535 0000 INPUT, 0 4027 /-------------------- 4028 005557 5741 PAGE 005560 0200 005561 7545 005562 7622 005563 6027 005564 7765 005565 5600 005566 7730 005567 7705 005570 6014 005571 0017 005572 7701 005573 7645 005574 7754 005575 7774 005576 4137 005577 6277 4029 4030 VSTWHO, 4031 4032 / THIS SECTION REWRITTEN REV169 SO THAT ONLY THE PRIMARY PRODUCT ID CODE 4033 / IS USED IN MOST CASES. IN ONLY THOSE CASES WHERE IT MAKES A DIFFERENCE 4034 / TO DECMATE DO WE USE ANY SECONDARY PRODUCT ID ATTRIBUTES /A169 4035 4036 005600 2065 ISZ VPTR / CLEAR THE NEXT 4037 005601 3465 DCA I VPTR / LOCATION IN THE STACK 4038 005602 1377 TAD (VSTACK) / GET POINTER TO PARAMETERS 4039 005603 3065 DCA VPTR / AND STUFF IT 4040 005604 1376 TAD (VWHOTB / SEARCH PRIMARY TABLE 4041 4042 / PREPARE TO SEARCH THE PRODUCT IDENTIFICATION (WHO) TABLE 4043 / IF THE TABLE ENTRY IS MINUS ONE WE ARE DONE 4044 / IF THE TABLE ENTRY HAS THE MOST SIGNIFICANT BITY SET IT 4045 / INDICATES THAT THE VALUE WITHOUT THAT BIT IS THE VALUE FOR COMPARISON, 4046 / BUT THAT THERE ARE SECONDARY ATTRIBUTES THAT MUST BE CHECKED OUT 4047 4048 005605 1375 VSTWH0, TAD (-1) / BECAUSE WE USE AUTOINDEXING 4049 DCA X3 undefined ^ undefined ^ 005606 3000 4050 VSTWH1, TAD I X3 / READ AN ENTRY undefined ^ undefined ^ 005607 1400 4051 005610 3361 DCA VSTTMP / SAVE IN A TEMP 4052 005611 1361 TAD VSTTMP / RECOVER TEMP 4053 005612 7001 IAC / BUMP TO TEST FOR MINUS ONE 4054 AND P177 / STRIP SECONDARY ATTRIBUTE FLAG undefined ^ undefined ^ 005613 0000 4055 005614 7450 SNA / SKIP IF NOT END OF TABLE 4056 005615 5252 JMP VSTIDF / ENTRY NOT FOUND IN TABLE 4057 005616 1375 TAD (-1) / COMPENSATE FOR -1 TEST 4058 005617 7041 CIA / NEGATE 4059 005620 1465 TAD I VPTR / SEE IF MATCHES 4060 005621 7440 SZA 4061 ISZ X3 / NO, BUMP OVER 2ND HALF OF TABLE PAIR undefined ^ undefined ^ 005622 2000 4062 005623 7640 SZA CLA 4063 005624 5207 JMP VSTWH1 / NO, AND TRY NEXT ENTRY 4064 005625 1361 TAD VSTTMP / GET VALUE THAT MATCHED 4065 005626 7700 SMA CLA / SEE IF SECONDARY ATTRIBUTES SPECIFIED 4066 005627 5233 JMP VSTWH2 / NO, WE HAVE THE ANSWER! 4067 005630 2065 ISZ VPTR / YES, USE NEXT PARAMTER 4068 TAD I X3 / GET ADDRESS OF THIS NEW TABLE undefined ^ undefined ^ 005631 1400 4069 005632 5205 JMP VSTWH0 / AND START USING IT 4070 VSTWH2, TAD I X3 / YES, READ VALUE undefined ^ undefined ^ 005633 1400 4071 005634 3011 DCA LPONLN / SAVE IT FOR POSTERITY 4072 005635 1777 TAD I (VSTACK) / Get the first parameter value /a226 4073 005636 1374 TAD (-30) / Is it an LQP03? /a226 4074 005637 7450 SNA / ?, has multinational capability?/m236 /a226 4075 005640 5244 JMP VSTWHZ / YES has /m236 4076 005641 1373 TAD (-7) / Is it an LQP25? /m236 4077 005642 7640 SZA CLA / YES, has multinational capability?/m236/a226 4078 005643 5247 JMP VSNOMC / No, just set flags /a226 4079 VSTWHZ, TAD (MNMSK) / Get multinational mask /a226 undefined ^ undefined ^ 005644 1372 4080 005645 1011 TAD LPONLN / Add it to rest of printer type /a226 4081 005646 3011 DCA LPONLN / And re-save it /a226 4082 VSNOMC, AC7777 / ANSWERED FLAG=7777 /C201 undefined ^ 005647 0000 4083 DCA IDANSW / ANSWERED FLAG=7777 /C201 undefined ^ undefined ^ 005650 3000 4084 005651 5771 JMP SQSTRT / GO RESET PARSE STATE 4085 4086 VSTIDF, / ID FAILURE /A131 4087 IFDEF DEVEL / IF DEVELOPMENT SWITCH, HALT /A131 4088 005652 5771 JMP SQSTRT / GO RESET PARSE STATE /A131 4089 4090 VWHOTB, / TABLE OF PRODUCT IDENTIFICATION CODES 4091 4092 VWHOSP=2 / SPARE ALLOCATION 4093 4094 DECIMAL 4095 4096 /d232 02; LA120 / LA120 /C188 4097 /d232 03; LA34 / LA34 4098 /d232 09; LQPSE / LQPSE 4099 005653 4012 2048+10; LA1002 / LA100 WITH SECONDARY ATTR /m226 005654 5711 4100 005655 4015 2048+13; LQP022 / LQP02 WITH SECONDARY ATTR 005656 5674 4101 /d232 15; LA12 / LA12 4102 005657 0021 17; LA50 / LA50 005660 0001 4103 005661 4030 2048+24; LQP022 / LQP03 WITH SECONDARY ATTR 005662 5674 4104 005663 0032 26; LN03 / LN03 /C214 005664 0000 4105 005665 0037 31; LQP022 / LQP25 with secondary attribute /a236 005666 5674 4106 4107 005667 0000 ZBLOCK VWHOSP^2 005670 0000 005671 0000 005672 0000 4108 005673 7777 -1 /STOPPER 4109 4110 LQP022, / LQP02 SECONDARY ATTRIBUTES 4111 005674 0000 0; LQP02 undefined ^ 005675 0000 4112 005676 0001 1; LQP02 undefined ^ 005677 0000 4113 005700 0002 2; LQP02+ASF01 / WAS +ASF02 /C172 undefined ^ undefined ^ 005701 0000 4114 005702 0003 3; LQP02+ASF01 / WAS +ASF02 /C172 undefined ^ undefined ^ 005703 0000 4115 005704 0004 4; LQP02+ASF02 undefined ^ undefined ^ 005705 0000 4116 005706 0005 5; LQP02+ASF01 undefined ^ undefined ^ 005707 0000 4117 005710 7777 -1 / STOPPER 4118 4119 LA1002, /LA100 secondary attributes /a226 4120 005711 0000 0; LA100 /a226 005712 0002 4121 005713 0002 2; LA100+MNMSK / LA100-PC /a226 undefined ^ 005714 0002 4122 005715 0003 3; LA100+MNMSK / LA210 or LN03 in LA100 mode /a232 undefined ^ 005716 0002 4123 005717 7777 -1 / stopper /a226 4124 4125 OCTAL 4126 4127 VERRTB, / ERROR CODE CONVERSION TABLE 4128 / BASED AT NUMBER 20 SINCE ERRORS ARE BASED AT 20 DECIMAL 4129 / ENTRIES > 3777 OCTAL ARE DESTINATION ADDRESSES 4130 4131 005720 6055 VSTER2 / 20 -- IGNORE 4132 005721 6104 VMALF / 21 PRINTER HARDWARE MALFUNCTION 4133 005722 6100 VCOMME / 22 COMMUNICATION I/O ERROR /C126 4134 005723 6104 VMALF / 23 INPUT BUFFER OVERFLOW 4135 005724 6117 VPAUSE / 24 PAUSE ACTIVE /C132 4136 005725 6055 VSTER2 / 25 TEXT RECOVERY ACTIVE -- IGNORE 4137 005726 0020 20 / 26 COVER OPEN 4138 005727 0021 21 / 27 PAPER OUT 4139 005730 0016 16 / 28 RIBBON OUT 4140 005731 6104 VMALF / 29 PRINTWHEEL TABLE LOAD ERROR 4141 005732 6055 VSTER2 / 30 NO SHEET FEEDER ERROR -- IGNORE 4142 005733 0017 17 / 31 SHEET FEEDER HARDWARE ERROR 4143 005734 0017 17 / 32 SHEET FEEDER MISFEED 4144 005735 0016 16 / 33 TONER LOW /A213 4145 005736 6104 VMALF / 34 LN03 FATAL HARDWARE ERROR--CALL FIELD SERVICE /A213 4146 005737 6055 VSTER2 / 35 PERFORM USER MAINTENANCE -- IGNORE /A213 4147 VERRTE, / LABEL TO INDICATE VERR TABLE END /A213 4148 005740 0021 21 / 36 LN03 PAPER OUT /A213 4149 4150 / THE FOLLOWING ZBLOCK IS STORAGE FOR THE PARAMETERS WHICH ARE CONTAINED 4151 / IN THE ANSI SEQUENCES SENT BY THE PRINTERS. DEC HAS A HOUSE RULE THAT 4152 / SAYS THAT A MAXIMUM OF SIXTEEN PARAMETERS WILL BE CONTAINED IN ANY 4153 / ANSI SEQUENCE 4154 005741 0000 VSTACK, ZBLOCK 20 005742 0000 005743 0000 005744 0000 005745 0000 005746 0000 005747 0000 005750 0000 005751 0000 005752 0000 005753 0000 005754 0000 005755 0000 005756 0000 005757 0000 005760 0000 4155 4156 005761 0000 VSTTMP, 0 4157 /------------------ 4158 005771 5454 PAGE 005772 0000 005773 7771 005774 7750 005775 7777 005776 5653 005777 5741 4166 CFPRES, XX / return address /a229 undefined ^ 4169 TAD CIDF0 / get th return field an make a CDF CIF /a229 undefined ^ undefined ^ 4191 DIGCHK, XX undefined ^ 4277 AC0001 / SET THE STOP FLAG /A225 undefined ^ 4286 CDFSYS / THIS WAS MISSING !!!! **** UGH !!!! /A185 undefined ^ 4287 AC0001 undefined ^ 4288 DCA I (LPDNFG undefined ^ undefined ^ 4290 AC7777 undefined ^ 4372 SKIPIF, XX /A126 /C165 undefined ^ 4428 PRRSST, XX undefined ^ 4434 TAD I (PQFRST / SEE IF ANYTHING IN QUEUE /A122 undefined ^ undefined ^ 4437 AC0001 / ELSE WE ASSUME THE OPERATOR HAS FIXED /A147 undefined ^ 4441 PRRSRD, XX / READ THE TABLE /A122 undefined ^ 4444 DCA T2 / SAVE IN A TEMP /A122 undefined ^ undefined ^ 4445 TAD I T2 / READ THE TABLE /A122 undefined ^ undefined ^ 4448 AND P77 / MASK /A122 undefined ^ undefined ^ 4475 PRESET, XX / RESET TO NO ERROR STATUS / undefined ^ 4485 PRSTCK, XX / CHECK STATUS /C122 undefined ^ 4490 TAD I (PQFRST / SEE IF ANYTHING IN QUEUE /A122 undefined ^ undefined ^ 4493 AC0001 / /A122 undefined ^ 4506 STSTTS, XX /ENTRY POINT. /A069 undefined ^ 4516 PRSTUP, XX / COPY STATUS UP /A122 undefined ^ 4539 MNGETC, XX / return address /a237 undefined ^ 4567 MNGETA, XX / return address /a227 undefined ^ 4569 AND P177 / strip off the mode bits /a227 undefined ^ undefined ^ 4580 AC7777 / SET THE TECH CHAR FLAG /a237 undefined ^ 4588 AC7777 / set the multinational flag /a227 undefined ^ 4746 XX undefined ^ 4748 DCA T1 / SAVE THE FILE NAME undefined ^ undefined ^ 4749 TAD T1 / RECOVER IT undefined ^ undefined ^ 4750 AND P377 / GET THE FILE NUMBER undefined ^ undefined ^ 4751 DCA PRQB+RXQFNO / WRITE THE FILE NUMBER undefined ^ 4753 TAD T1 / RECOVER THE FILE NAME undefined ^ undefined ^ 4759 RXEDN+4000 / GO DO A SET DENSITY /M008 undefined ^ 4761 RXEGF+4000 undefined ^ 4762 TAD PRQB+RXQBLK / GET THE HEADER BLOCK NUMBER undefined ^ 4766 AC7777 undefined ^ 4769 AC7777 undefined ^ 4780 AC0001 undefined ^ 4793 XX undefined ^ 4801 TAD P77 / ELSE RESTORE THE CHARACTER undefined ^ undefined ^ 4807 TAD P7700 / SHOW IT IS AN ESCAPE CHARACTER undefined ^ undefined ^ 4815 XX undefined ^ 4855 RDFBUF, XX undefined ^ 4864 RXERD+4000 /M008 undefined ^ 4891 XX undefined ^ 4900 DCA T1 /SAVE THE RETURNED VALUE undefined ^ undefined ^ 4906 TAD T1 /RESTORE THE VALUE--IS IT AN END OF FILE? undefined ^ undefined ^ 4924 TAD T1 /GET THE RETURN VALUE undefined ^ undefined ^ 4939 XX /A CIF TO THE EDITOR'S INSTRUCTION FIELD IS undefined ^ 4953 TAD (OVRDBL) /NO--READ THE NEXT BLOCK FIRST undefined ^ undefined ^ 4955 OBRDBL undefined ^ 4958 XX /THIS LOCATION IS PATCHED WITH A CDF TO THE undefined ^ 4973 RDFTAB, XX undefined ^ 4978 AC7777 / UN-DECREMENT THE POINTER. /A002 undefined ^ 5052 XX undefined ^ 5070 RDGTBY, XX undefined ^ 5078 AND P77 undefined ^ undefined ^ 5080 GETBY1=T1 undefined ^ 5082 RDFIO, XX undefined ^ 5114 XX undefined ^ 5129 DCA T1 / SAVE THE BLOCK NUMBER ADDRESS TO INDIRECT THROUGH undefined ^ undefined ^ 5130 TAD I T1 / GET THE BLOCK NUMBER undefined ^ undefined ^ 5141 RXERD+4000 /M008 undefined ^ 5149 SCOFST, XX undefined ^ 5160 AC0001 / ++++ undefined ^ 5185 SCOFS4=T1 /A005 undefined ^ 5192 XX undefined ^ 5226 PRLSCX, PRLSCS undefined ^ 5229 PLHMOX, PLHMOV undefined ^ 5236 XX undefined ^ 5260 DCA T1 undefined ^ undefined ^ 5261 TAD I T1 / ++++ undefined ^ undefined ^ 5303 XX undefined ^ 5306 DCA T1 / ++++ undefined ^ undefined ^ 5315 ISZ T1 / ADJUST T1 IF SHIFT-UNSHIFT CHANGE undefined ^ undefined ^ 5317 DCA T2 / GET PTR undefined ^ undefined ^ 5318 TAD I T2 undefined ^ undefined ^ 5322 AND I T1 undefined ^ undefined ^ 5324 TAD I T2 undefined ^ undefined ^ 5325 DCA I T1 / SET NEW MODE undefined ^ undefined ^ 5327 GETMD1, TAD I T1 / ADD MODE FLAGS undefined ^ undefined ^ 5328 ISZ T1 undefined ^ undefined ^ 5330 TAD I T1 / AND UNSHIFT undefined ^ undefined ^ 5351 XX /A001 undefined ^ 5354 DCA X1 / STORE IT FOR AUTOINDEXING /A001 undefined ^ undefined ^ 5357 DCA I X1 / PUT IT INTO BLOCK LIST /A001 undefined ^ undefined ^ 5361 DCA I X1 / PUT IT INTO RDFIL BLOCK CONTROL AREA /A001 undefined ^ undefined ^ 5378 XX /A001 undefined ^ ASCDGT 3537 ASCFLG 3556 ASCLP1 3520 ASCLP2 3530 ASCNT 3566 ASCOUT 3513 ASCOUX 3552 ATRBUT 4044 ATRTBL 4045 BELTXT 4250 BHKEXI 5142 BHOOK 5124 BINVAL 3565 BLACSV 5145 BLANKM 4234 BLANKP 3456 BLASTH 5144 BLDUND 4063 BLKBO1 4025 BLKBOX 4001 BLKREV 4271 BOFSET 0002 BOLD 4055 BPC 1014 unreferenced BS 0010 BSLASH 0075 BSLCNT 0074 BSLH 0134 unreferenced BSYTXT 4252 CAN 0030 CDFMYF 0000 CDFQUE 0000 CFPP1 6010 CFPP2 6011 CFPRES 6000 CHAR 4111 CHRSSZ 0004 CIFMYF 0000 unreferenced CK3HDR 7354 CKMOV1 2531 CKMOVE 2515 CKTEMP 2533 CR 0015 CSI 0233 CSISTR 3670 CSIUWV 3262 CSTRNG 4246 CURATR 4000 DECPTR 3557 DECTAB 3560 DIGCHK 6014 DIGRTN 6025 DIVX 3322 DSABL 3247 DVLP 3315 ECXT 3235 EOT 0004 EPC 1414 ESC 0033 ESC01 5017 ESC01A 5030 ESC01B 5043 ESC02 3000 ESC9 3142 ESCA 3256 ESCB 3325 ESCC 3325 ESCCTB 3030 ESCD 3200 ESCDR 3325 ESCDRK 3224 ESCE 3307 ESCF 3256 ESCH 3267 ESCNUM 3725 ESCOUT 3327 ESCST 3677 ESCST1 3700 ESCSTG 3345 ESCSTV 3347 ESCT1 3026 ESCT2 3253 ESCTAB 7231 ESCXB 3276 ESCXB1 3305 unreferenced ESCXD 3325 ESCXRP 3254 ESLP 3710 ESMVV 3142 unreferenced ESMVV1 3157 ESMVV2 4145 ESTGWV 3263 EXPCNT 0073 EXTFLD 4042 FF 0014 FLABUZ 3400 FLABZ1 3430 FLABZ2 3437 FLD2R1 4601 FLD2R2 4623 FLD3L1 4605 FLD3R 4600 FLD3T1 4705 FLD3T2 4706 FLD3T3 4707 FLD3T4 4710 FLDONE 3476 FLEXIT 3507 FLTEST 3501 FSSAV 6700 unreferenced GETBY1 0000 GETMD1 7314 GETMOD 7264 GNL 0055 unreferenced GRALNC 0000 unreferenced HLF 2412 unreferenced IDCAL 4136 IDRTN 4134 IDSTTM 3745 IDTMC 0063 INPUT 5535 JSTIFY 5111 unreferenced LA100 0002 LA1002 5711 LA12 0000 unreferenced LA120 0000 unreferenced LA34 0003 unreferenced LA50 0001 LED4ON 4300 LEDOFF 4304 LF 0012 LN03 0000 LPBI 5200 LPBI1 5231 LPBIF 5225 LPBIF1 5237 LPBIT1 5243 LPFLAG 0053 unreferenced LPIND 5244 LPINDT 5262 LPJCNT 5302 LPMOV1 5266 LPMOV2 5300 LPMOVE 5263 LPONLN 0011 LQP022 5674 LQP03 0000 unreferenced LSP2C1 2136 LSPAC1 2117 LSPAC2 2123 LSPACE 2103 MAXESC 0032 MAXLIN 0471 MISCTL 3634 MNCFLG 0077 unreferenced MNCNT 6152 MNGET2 6356 MNGET3 6363 MNGET5 6361 MNGETA 6342 MNGETC 6314 MNGTC1 6334 MNGTC2 6325 MNGTC3 6326 MNGTC4 6323 MNGTC5 6332 MNGTC6 6133 MNPTR 6151 MNSVCH 6340 MODTAB 7327 NLQPSE 4000 NULTXT 3470 NUMPTR 0066 OLDHIT 0051 unreferenced P2PSET 2563 unreferenced PABORT 0010 PCBOLD 0104 unreferenced PCCOLA 0070 unreferenced PCCSIZ 0101 unreferenced PCDHPR 0123 unreferenced PCDPIT 4064 unreferenced PCDVPR 0121 unreferenced PCGR 4114 unreferenced PCGREX 4115 unreferenced PCHFBO 2550 unreferenced PCHFNB 2554 unreferenced PCIHPR 0122 unreferenced PCIND 0105 PCIVPR 0120 unreferenced PCMFV 0076 PCMPUP 0071 PCMRT 0073 unreferenced PCPFS 0117 unreferenced PCPLD 0111 unreferenced PCPLU 0107 unreferenced PCPROP 0075 unreferenced PCPSIZ 0110 unreferenced PCREST 0066 unreferenced PCRPUM 0103 unreferenced PCRSET 0124 unreferenced PCSGR 0116 unreferenced PCSPUM 0102 unreferenced PCSQM 4072 unreferenced PCSS 4074 unreferenced PCSTAT 0060 unreferenced PCSTFN 4063 PCSTG0 4061 unreferenced PCSTG1 4062 unreferenced PCSUB1 0077 unreferenced PCSUB2 0100 unreferenced PCTABL 0065 unreferenced PCTCSI 4113 unreferenced PCTMID 0067 unreferenced PCTMRS 4066 unreferenced PCTRAY 0112 unreferenced PCWSIZ 0106 unreferenced PLASPC 0055 PLBOLD 0044 unreferenced PLCHBS 5061 PLCHXX 5102 PLCNT 0037 PLDIR 0040 PLHMOX 7164 PLNRCS 0022 PLNXT 2535 PLOLNC 0056 unreferenced PLPFLG 0000 unreferenced PLPOS 0041 unreferenced PLPS 0000 unreferenced PLPTR 0036 PLSS 0000 unreferenced PLWMUL 0062 PM 2014 PNRSVL 0002 unreferenced PNTING 3466 PRACTN 0001 unreferenced PRACTS 0060 unreferenced PRACTV 0002 unreferenced PRBIC 5241 PRBICS 5242 PRBIF 0067 PRBIFB 0071 PRBIFN 0070 PRCAL1 2770 PRCAL2 2772 PRCALK 2762 PRCCH 0021 unreferenced PRCCHR 4036 PRCHAR 5321 PRCHAT 5303 PRCHAX 7163 PRCHR1 5330 PRCHR2 5337 PRCHR3 5341 unreferenced PRCHR4 5324 unreferenced PRDKFG 2353 PRDTFG 0072 unreferenced PRDVI1 5350 PRDVI2 5355 PRDVID 5344 PREFNT 3600 PREOF 1605 unreferenced PRESC3 5012 PRESC4 5014 PRESCS 5000 PRESET 6241 PRESF 3342 PRESF1 3343 PREST1 0013 PRESXT 3022 PREVST 3511 PRFBC 2140 unreferenced PRFLAG 0042 PRFMOV 2505 PRFNO 0005 unreferenced PRFPFS 0001 unreferenced PRFSIZ 0052 unreferenced PRGCBK 0020 PRGCCS 2351 PRGCH1 2401 unreferenced PRGCH2 2414 PRGCHC 2417 PRGCHR 2400 PRGL10 2334 PRGL20 2316 PRGL21 2320 PRGL22 2324 PRGL2A 2257 PRGL2B 2256 PRGL4A 2307 PRGL7A 2265 PRGLI1 1731 PRGLO1 2243 PRGLO3 2266 unreferenced PRGLO4 2277 PRGLO5 2310 PRGLO6 2315 PRGLO7 1737 PRGLO8 2331 PRGLO9 2332 PRGSAP 0024 PRGSCH 2344 PRGSL1 2001 PRGSL2 2002 PRGSL3 2036 PRGSL4 2062 PRGSL5 2065 PRGSL6 2070 PRGSL7 2076 PRGSL8 2077 PRGSLA 2033 PRGSMX 0025 PRGSPC 2000 unreferenced PRGSVP 0023 PRGSVS 2102 PRGTLN 1721 PRHMOD 2352 PRHSIZ 0051 unreferenced PRINHB 1637 PRIRAD 0007 PRIRFD 0006 unreferenced PRJDEF 0057 PRJENB 0000 unreferenced PRJPOS 0000 unreferenced PRJRET 0045 unreferenced PRJSPC 0000 unreferenced PRLBCT 0000 unreferenced PRLBUF 4307 PRLLDP 1650 PRLLSZ 0027 PRLO1A 1616 PRLOO1 1661 PRLOOP 1606 PRLOPD 1656 PRLSCX 7161 PRMCAC 0024 PRMCAY 6704 PRMCBM 0045 PRMCLL 0047 PRMCLM 0043 PRMCMG 0000 PRMCPC 0046 PRMCRF 0050 PRMCTM 0044 unreferenced PRMLT1 5311 PRMOV3 2473 PRMOV6 2477 unreferenced PRMOVE 2445 PRMOVT 2534 PRMSLK 0060 PRMULT 5303 PRNHL 0004 unreferenced PRNLSZ 0010 PROV 1664 PROVA 0200 PROVL1 1711 PROVL2 1717 PROVQ 1704 PROVT1 0014 PROVT2 0015 PRPASS 0054 unreferenced PRPCHR 2200 PRPCNT 0032 unreferenced PRPGNM 0031 unreferenced PRPTAB 2236 unreferenced PRPTSP 2252 PRPUMM 0000 PRQ2W 6421 unreferenced PRQAPG 6413 PRQB 3651 PRQBLK 3646 PRQBMG 6404 unreferenced PRQBOT 6407 unreferenced PRQCM 6423 unreferenced PRQCPY 6400 unreferenced PRQDDE 3636 PRQIND 6401 PRQINU 6414 PRQLSZ 6402 unreferenced PRQOVP 6420 PRQPGO 6411 unreferenced PRQPIT 6406 unreferenced PRQPNT 6422 PRQPSZ 6405 PRQRX 3605 PRQRX1 3620 unreferenced PRQRX2 3623 PRQSB1 6424 unreferenced PRQSB2 6425 unreferenced PRQSDE 3635 PRQSP 6412 PRQSSM 6416 unreferenced PRQSSS 6417 unreferenced PRQTMG 6403 unreferenced PRQTMP 6415 unreferenced PRQTOP 6410 unreferenced PRRCH 0000 unreferenced PRRLSZ 0026 unreferenced PRRM 0017 unreferenced PRRSRD 6214 PRRSRT 0033 unreferenced PRRSST 6200 PRRSTB 6225 PRRUL1 2432 unreferenced PRRUL2 2442 PRRUL3 2441 unreferenced PRRULE 2431 PRSAV 6731 unreferenced PRSCNM 0030 unreferenced PRSLCK 2504 PRSTC1 6264 PRSTCK 6252 PRSTG0 2734 PRSTG1 2737 PRSTNX 0035 unreferenced PRSTOP 0000 PRSTPF 3744 PRSTT2 0004 PRSTT3 0061 unreferenced PRSTTS 0003 PRSTUP 6277 PRTABF 2354 PRTEXT 4252 PRTID 0012 PRTMOV 0064 PRTOPP 1600 unreferenced PRTRI1 4131 PRTRID 4113 PRUND0 7141 PRUNDL 7140 PRVALB 6400 unreferenced PRVATR 4112 PRYES 0034 PRYES1 3027 PTSTST 3731 PTSTSX 3742 unreferenced PWSMNC 5101 PWSTEC 5100 RDBFCB 7044 RDBLCK 6641 unreferenced RDBPTR 6640 RDBUF 7400 RDBUF1 6633 RDBUFF 6625 unreferenced RDBUT1 6544 RDCCNT 6637 RDCHAR 0016 RDCHNO 6703 RDEDIT 6622 unreferenced RDFBL1 6542 RDFBUF 6527 RDFDRV 7037 RDFILE 6620 unreferenced RDFIO 7027 RDFIO4 3643 unreferenced RDFIOQ 7034 RDFIOT 7043 RDFTAB 6642 RDFTL1 6652 RDFTL2 6666 RDGETA 7056 RDGETR 7054 RDGTBY 7015 RDGTHS 7340 RDGTXR 7065 RDGTXZ 7073 RDHDBN 7045 RDHDRB 7046 RDINIT 6426 RDLPTR 6676 RDMOD 6701 RDNPTR 0010 RDNXC 6467 RDNXC1 6503 RDNXC3 6520 RDNXCB 6502 RDNXCH 7000 RDNXCX 6476 RDNXH1 7004 RDPTNO 6677 RDPTRB 7330 RDPTRS 6700 RDTEMP 6675 RDTMP1 7354 READC1 6614 READC2 6616 READCH 6600 READRT 6604 REND 0017 unreferenced RQSP 0177 RSTRT 0016 unreferenced RULRCM 0046 unreferenced RULRLM 0047 unreferenced RULRRM 0060 SCBKOF 0052 SCHCNT 0774 SCOFS1 7135 SCOFS2 7136 SCOFS3 7137 SCOFS4 0000 SCOFSA 7124 SCOFSB 7130 SCOFST 7075 SI 0017 unreferenced SKIPIF 6121 SKNHST 4137 SNDBUZ 3450 unreferenced SO 0016 SOFTPT 0075 SPC 0040 SQESCS 5507 SQPINP 5400 SQPNXT 5402 SQSTRT 5454 SRET 2012 unreferenced STATX 5534 STPTXT 4252 STSTTS 6266 T1YPE 4101 T1YPE1 4103 T1YPE2 4105 TAB 0011 TCCHAR 6341 TIME 3405 unreferenced TIMESE 3512 TOPMID 4252 TSB2 6333 TSPC 2040 unreferenced TXENUM 3715 TYPATR 4066 U137 7162 UNDERL 3252 UNDL 0137 unreferenced UNDRLN 4060 USER1 4007 unreferenced VCOMME 6100 VERRTB 5720 VERRTE 5740 VMALF 6104 VMALF1 6113 VPAUSE 6117 VPAUSF 6077 VPTR 0065 VSET1A 5527 VSET2 5522 VSET2A 5526 VSET3 5521 VSET4 5520 VSNOMC 5647 VSTA3A 5471 VSTA3B 5502 VSTA3C 5476 VSTA3D 5467 VSTACK 5741 VSTAT 5431 VSTAT0 5511 VSTAT1 5440 VSTAT2 5444 VSTAT3 5457 VSTAT4 5505 VSTDIS 6073 VSTER1 6040 VSTER2 6055 VSTERR 6027 VSTERT 6076 VSTIDF 5652 VSTTMP 5761 VSTWH0 5605 VSTWH1 5607 VSTWH2 5633 VSTWHO 5600 VSTWHZ 5644 VWHOSP 0002 VWHOTB 5653 WAITJX 4200 unreferenced WAITK1 4227 WAITK2 4230 WAITP1 4231 WAITP2 4232 WAITP3 4233 WAKEU1 4210 X 5145 unreferenced XDFONT 2742 XDPRIM 2612 XDRST 2603 XDSBL 2614 XDSEC 2607 XDSHAD 2604 XDSTR 3237 XDUNDR 2602 XFPRCH 5316 unreferenced XLTAS1 7212 XLTAS2 7224 XLTAS3 7227 XLTAS4 7207 XLTASC 7200 XSADX 0076 XSCHRS 2662 XSCOLA 2751 XSDHPR 2724 XSDVPR 2720 XSDX 3312 XSEXRP 2726 XSIHPR 2722 XSIVPR 2716 XSJSFY 2677 unreferenced XSLEFT 2625 XSMARG 2671 XSMOVE 2623 XSMXT 3264 XSNX 3341 XSPAGS 2621 XSPFS 2756 XSPITC 2744 XSPLD 2630 XSPLU 2632 XSRPUM 2713 XSSGR 2600 XSSPAC 2731 XSSPUM 2710 XSSS 2650 XSSS2 2652 unreferenced XST94 2654 XST95 2657 XSTABL 2746 XSTCSI 2637 XSTRAY 2616 XSXD 2560 XSXE 2634