   1               / TEXT FORMATTER - RUNOFF
   2                       DOINDX=0
   3               /NO INDEX STUFF
   4               
   5               / BY: CLYDE G. ROBY, JR.
   6               / DEPARTMENT OF PHYSIOLOGY AND BIOPHYSICS
   7               / WEST VIRGINIA UNIVERSITY MEDICAL CENTER
   8               / MORGANTOWN, WEST VIRGINIA
   9               / JANUARY 10, 1974
  10               
  11               / VERSION 0: 1/10/74
  12               / INITIAL TYPE IN OF PROGRAM
  13               / MAJOR REWRITING OF SOME ROUTINES 5/74 AND 6/74
  14               
  15               / VERSION 1: 7/74
  16               / ADDING IN NEW FEATURES
  17               / ADD IN .FLAG COMMANDS
  18               / CAPITALIZE WORDS WITH " AS FLAG CHARACTER
  19               / ALSO ADDED IN .AUTOCAPITALIZE COMMAND
  20               
  21               / VERSION 2: 7/23/74
  22               / STARTED WORK ON .FOOTNOTE
  23               / MAJOR MOVING OF ROUTINES AND REWRITING
  24               
  25               / VERSION 3: 9/4/74
  26               / BETTER LOGIC FOR MULTIPLE COPIES
  27               / BETTER FOOTNOTE PROCESSING AND " PROCESSING
  28               / CAPITALIZE FIRST CHARS OF WORDS WITH ^' AND \'
  29               / CLEANED UP OUTPUT ROUTINES
  30               
  31               / VERSION 4: 9/12/74
  32               / BETTER .HEADER COMMAND IMPLEMENTED
  33               / BETTER COMCHK ROUTINE
  34               / IMPLEMENTED .TABS ABSOLUTE AND .TABS RELATIVE COMMANDS
  35               / ADDED .CHAPTER COMMAND
  36               / CLEANED UP FLAG COMMAND PROCESSING
  37               / ALSO CLEANED UP HEADER AND FOOTER PROCESSING
  38               / PATCH B:      FIXED BUG IN FOOTER ROUTINE IN COMBO WITH .NOHEADER
  39               /               IMPROVED CENTERING AND FIXED BUG THERE
  40               /               CLEANED UP 'GETARG' ROUTINE AND "TITLE" COMMAND
  41               
  42               /SPLITTING CODE FOR 12K/16K VERSION
  43               /CHANGED NAME TO RUNOFF
  44               /IMPROVED ERROR REPORTING
  45               /SHORT COMMANDS MAY BE FREELY USED
  46               /COMMANDS STRICTLY ALPHABETICAL
  47               /DOUBLE CHECK FOR "NO" ALLOWING GENERAL WORDS STARTING WITH NO
  48               /NEGATIVE PARA INDENT ALLOWED
  49               /0 PARA SEPARATION ALLOWED
  50               /FIXED INDENT BUG
  51               /MOVED STACK AND JMP VECTORS TO FLD 1
  52               /PROPERLY PACKS OUT EXTRA SPACES AND TABS
  53               /PUT IN HOOKS FOR ADDITIONAL COMMANDS AND FLAGS
  54               /     .NOTE
  55               /     .FLAG HYPHEN -
  56               /     .TABS QUOTE
  57               /     .HEADER ROMAN
  58               
  59               /INSTALLED FULL OPTION DECODING
  60               /RUNOFF NOW CHAINS TO ITSELF ON A RESTART
  61               /HOOKS IN FIELD 0 FOR INDEX CLASS COMMANDS
  62               /STACK CALLABLE ACROSS FIELDS
  63               /COMMAND CHECKER CALLABLE ACROSS FIELDS
  64               
  65               /AUG 76 CHANGES TO RUN 11 RUNOFF TEST FILES
  66               /CLEANED UP COMMENT HANDLING AND VARIOUS BUGS AS NOTED IN SOURCE
  67               /ADDED \CR FEATURE FOR LONG LINES
  68               /T.W. MCINTYRE THIS VERSION WILL BE VERSION 5
  69               
  70                       VERS1="0        /TEN'S DIGIT OF VERSION NUMBER
  71                       VERS2="6        /ONE'S DIGIT OF VERSION NUMBER
  72                       PATCH="B        /THE PATCH LEVEL
  73               
  74               / DEFINE SPECIAL INSTRUCTIONS TO ASSEMBLER
  75               
  76               FIXMRI  INC=2000        /ISZ WHEN NOT EXPECTED TO SKIP
  77               
  78                       MTWO=CLL STA RAL /GENERATE A -2 IN ACC
  79               
  80               / SOME USEFUL EQUALITIES
  81               
  82                       SMALLA="A!40
  83                       SMALLZ="Z!40
  84               
  85                       YES=0000
  86                       NO=7777
  87               
  88                       SKIPYES=SZA CLA
  89                       SKIPNO=SNA CLA
  90               
  91                       ALBSCH=37       /ALTERNATE BACKSPACE CHAR
  92                       BSCH=10         /NORMAL BACKSPACE
  93                       ULCH2=55        /ALTERNATE UNDERLINE
  94                       ULCH1=137       /STANDARD UNDERLINE
  95                       DECIMAL
  96                       WID1=79         /STANDARD WIDTH
  97                       WID2=60         /ALTERNATE WIDTH
  98                       LONG2=60        /ALTERNATE PAGE LENGTH
  99                       LONG1=66        /STANDARD PAGE LENGTH
 100                       OCTAL
 101               
 102                       FIELD 0
 103               
 104               *4
 105               
 106               / SOME LOCATIONS USED BY THE 'PUSH' AND 'POP' ROUTINES
 107               
 108 000004  0000  PAGSKP, 0               /JUST TO GET THIS DEBUGGED
 109 000005  0000  CHRCNT, 0
 110               
 111 000006  0000  PUSHTM, 0
 112 000007  0000  PPTEMP, 0
 113               
 114               / THE AUTO-INDEX REGISTERS (10-17)
 115               
 116               *10
 117               
 118 000010  0000  AUTOX1, 0               /GENERAL XR'S USED THROUGHOUT PROG.
 119 000011  0000  AUTOX2, 0
 120 000012  0000  AUTOX3, 0
 121               
 122 000013  0000  BRKXR,  0
 123               
 124 000014  0000  SORTXR, 0               /USED BY "SORTC" AND "SORTJ"
 125               
 126 000015  0000  PRTXR,  0               /USED BY SUBROUTINE "PRINT"
 127               
 128 000016  0000  FNXR,   0               /AUTOXR USED BY FOOTNOTE ROUTINES
 129               
 130               / GENERAL SWITCHES USED BY CERTAIN COMMANDS
 131               
 132               *20
 133               
 134               / LOCATIONS THAT ARE INITIALIZED TO SPECIALIZED VALUES
 135               / KEEP THESE LOCATIONS IN THE SPECIFIED ORDER (SEE 'INITS')
 136               
 137                       OTHERS=.
 138               
 139 000020  0000  FNPTR,  FNBUFF          /FOOTNOTE BUFFER POINTER
 140 000021  0000  SUBPGN, 0               /SUBPAGE LETTER
 141 000022  0120  PWIDTH, 120             /LENGTH OF OUTPUT LINE (80)
 142 000023  0000  COPYWD, 0               /THE COPY WIDTH ALLOWED FOR THIS LINE
 143 000024  0102  PLENGTH,102             /LENGTH OF PAGE (66)
 144 000025  6577  STKPTR, STACK           /STACK POINTER FOR PUSH-POP LIST
 145 000026  7777  PARAGV, -1              /LEGAL VALUES ARE 1 TO 5 AND -1
 146                                       /DEFAULT IS (SPACING + 1) / 2
 147 000027  0002  PARAGP, 2               /.TEST PAGE ARG FOR PAGRGRAPH
 148 000030  0640  TABCHR, 640             /QUOTED SPACE IS ASSUMED
 149 000031  0005  HWORD,  0005            /HEADER AT TOP OF PAGE ON RIGHT SIDE ARABIC NUMBERALS
 150                                       /"PAGE" IN UPPER CASE - TA000000RRUU
 151               /T=0 TOP, A=0 ARABIC, RR=0 LEFT, 1 RIGHT, 2 CENTER, 3 ALTER
 152               /UU=0 NUMBER, 1 UPPER, 2 LOWER, 3 MIXED
 153               
 154               / THE TOP AND BOTTOM OF PAGE PARAMETER TABLES
 155               / THE FIRST NUMBER IS NO. OF BLANK LINES FROM "TOP" TO
 156               /   THE FIRST PRINTED LINE.
 157               / THE SECOND NUMBER IS NO. OF BLANK LINES FROM LAST PRINTED
 158               /   LINE TO "BOTTOM" SECTION OF BLANK LINES.
 159               / THE TOTAL NUMBER OF LINES AT TOP OR BOTTOM IS 6.
 160               
 161 000032  0001  TOP,    1; 2            /3 PRINTED LINES AT TOP
     000033  0002  
 162 000034  0003  BOTTOM, 3; 2            /1 PRINTED LINE AT BOTTOM
     000035  0002  
 163               
 164               / SWITCHES THAT USER CAN SET
 165               
 166 000036  7777  TFIRSW, NO              /NO FIRST TITLE ASSUMED
 167               
 168 000037  7777  SWPARA, NO              /0 = .AUTOPARAGRAPH,
 169                                       /7777 = .NOAUTOPARAGRAPH
 170               
 171 000040  0000  SWHEAD, YES             /0 = .HEADER, 7777 = .NOHEADER
 172               
 173 000041  0000  SWPAGE, YES             /0 = .PAGING, 7777 = .NOPAGING
 174               
 175 000042  7777  SWSBPG, NO              /0 = .SUBPAGE, 7777 = .NOSUBPAGE
 176               
 177 000043  7777  SWCC,   NO              /0 = .CONTROL CHARACTERS, 7777 = .NCC
 178               
 179 000044  0000  SWCAP,  YES             /0 = .AUTOCAPITALIZE, 7777 = .NAC
 180               
 181 000045  0000  SWPER,  YES             /0 = .PERIOD, 7777 = .NOPERIOD
 182                                       /0 = OUTPUT 2 SPACES AFTER .!?;:
 183               
 184 000046  0000  SWPNUM, YES             /0 = .NUMBER, 7777 = .NONUMBER
 185               
 186 000047  7777  UNCASE, 7777            /UNDERLINE SWITCH FOR CURRENT CHAR
 187               
 188 000050  7777  CQCASE, 7777            /0000 = SET CAP WORD, 7777 = CLEAR IT
 189               
 190 000051  0001  ALMARG, 1               /ACTUAL LEFT MARGIN FOR CURRENT LINE
 191               /THIS IS HERE FOR THE HSAVE CODE TO SAVE IT WITH MARGS
 192               
 193               /THE FOLLOWING PARAMETERS ARE GROUPED AS THE FOOTNOTE
 194               /PRESERVATION GROUP.  THEY ARE PRESERVED ACROSS FOOTNOTES.
 195                       FNDFLT=.
 196 000052  0001  LMARG,  1               /LEFT MARGIN (COLUMN)
 197 000053  0106  RMARG,  106             /RIGHT MARGIN (70)
 198 000054  0000  SWJUST, YES             /0 = .JUSTIFY, 7777 = .NOJUSTUFY
 199 000055  0000  SWFILL, YES             /0 = .FILL, 7777 = .NOFILL
 200 000056  7777  LSPACE, -1              /ASSUME SINGLE SPACING
 201 000057  0005  PARAGN, 5               /INDENT 5 SPACES ON PARAGRAPH
 202 000060  7777  MODE,   7777            /7777 = \\, SET LOWER CASE MODE
 203                                       /0000 = ^^, SET UPPER CASE MODE
 204               
 205 000061  7777  UNMODE, 7777            /7777 = \&, CLEAR UNDERLINE MODE
 206                                       /0000 = ^&, SET UNDERLINE MODE
 207 000062  7777  CFMODE, 7777            /0000 = \', CLEAR CAPITALIZE FIRST MODE
 208                                       /7777 = ^', SET CAPITALIZE FIRST CHAR MODE
 209               
 210 000063  7777  HFILL,  7777            /7777 = FILL WITH SPACES ON LEFT END
 211                       OTHEREND=.
 212               
 213               / LOCATIONS THAT SHOULD BE INITIALIZED TO ZERO
 214               
 215                       ZEROS=.         /ZERO THESE LOCS ON RE-INITIALIZATION
 216               
 217 000064  0000  ECAPSW, 0               /NON-ZERO FOR CAPITALIZING FIRST CHARS
 218               
 219                       FNDFLE=.
 220               /END OF FOOTNOTE PRESERVATION GROUP
 221               
 222 000065  0000  TITFLG, 0               /NORMALLY RESERVE TITLE SPACING
 223 000066  0000  DEFERN, 0               /NO. OF "FIGURE DEFERRED" LINES
 224               
 225 000067  0000  FNCTR,  0               /NO. OF "FOOTNOTE" LINES OVERFLOW
 226               
 227                                       /7777 = FILL WITH SPACES ON LEFT END
 228               
 229 000070  0000  FNFLAG, 0               /7777 = WE ARE PROCESSING FROM
 230                                       /FOOTNOTE BUFFER
 231               
 232 000071  0000  FNLINE, 0               /NO. OF FOOTNOTE LINES ALLOCATED ON PAGE
 233               
 234 000072  0000  LOWONE, 0               /NONZERO IF TO MAKE SINGLE CHAR LOW CASE
 235               
 236 000073  0000  UPONE,  0               /NONZERO IF TO CAPITALIZE SINGLE CHAR
 237               
 238 000074  0000  TABFLG, 0               /0000 = ABSOLUTE TABS, 7777 = RELATIVE
 239               
 240                       ZEROEND=.       /END OF ZERO INITIALIZATION LOCS
 241               
 242               
 243               / GENERAL LOCATIONS USED THROUGHOUT PROGRAM, NOT INITIALIZED
 244               
 245 000075  0000  COUNT,  0               /GENERAL COUNTER
 246 000076  0000  CTR1,   0               /OTHER COUNTERS
 247 000077  0000  CTR2,   0
 248 000100  0000  PTR1,   0               /TEMPORARY POINTERS
 249 000101  0000  PTR2,   0
 250 000102  0000  CHAR,   0               /HOLDS LAST INPUT CHAR
 251 000103  0000  NUMBER, 0               /HOLDS LAST NUMBER CONVERTED (ALSO TEMP)
 252 000104  0000  SIGN,   0               /SIGN OF LAST NUMBER CONVERTED
 253 000105  0000  CVRTQ,  0               /INDICATES WHETHER LAST NO. WAS CONVERTED
 254 000106  0000  RELFLG, 0               /INDICATES IF RELATIVE
 255 000107  0000  PSWITC, 0               /NON-ZERO IF /P SWITCH GIVEN
 256                                       /PAUSE AT PAGE BREAK TO CHANGE PAPER
 257 000110  0000  FSWITC, 0               /NON-ZERO IF /F SWITCH GIVEN
 258                                       /SIMULATE FORM FEED CHAR
 259 000111  0000  USWITCH,0               /NON-ZERO TO FORCE UPPER CASE ON OUTPUT
 260 000112  0000  CURCOL, 0               /CURRENT COLUMN (ABSOLUTE) IN OUTPUT
 261                                       /LINE THAT NEXT CHAR IS TO BE STORED
 262 000113  0000  FNPTR2, 0               /2ND PTR USED IN FOOTNOTE PROCESSING
 263 000114  0000  NOFLG,  0               /THE "NO" FLAG FOR COMMANDS, 7777 IF "NO"
 264               
 265 000115  0000  LENOL,  0               /LENGTH OF OUTPUT LINE BETWEEN MARGS
 266 000116  0000  OUTPTR, 0               /GET SET TO CURRENT POSITION IN LINE
 267 000117  0000  OUTCTR, 0               /(-) NO. OF CHARS LEFT ON LINE
 268 000120  0000  NLINES, 0               /NO. OF LINES LEFT ON PAGE
 269 000121  0001  PAGENO, 1               /CURRENT PAGE NUMBER - START WITH 1
 270 000122  7777  TOPSW,  7777            /7777 IF AT TOP OF NEW PAGE
 271 000123  0000  SORTCN, 0               /ARGUMENT NO. FOR SORTJ AND COMCHK
 272 000124  0000  INLINE, 0               /CURRENT INPUT LINE
 273 000125  0000  INPAGE, 0               /CURRENT INPUT PAGE
 274 000126  7777  SEQFLG, NO              /NORMALLY NO SEQUENCE NUMBERS
 275 000127  7777  TXTFLG, NO              /NO TEXT ON PAGE YET
 276               
 277               / EFFECTIVE MACRO CALLS
 278               
 279               GET=    JMS I .         /GET A CHAR FROM OS/8 INPUT FILE
 280 000130  1560            GETX
 281               
 282               PUT=    JMS I .         /OUTPUT CHAR TO OS/8 OUTPUT FILE
 283 000131  6000            PUTX
 284               
 285               GETC=   JMS I .         /GET A CHAR FROM INPUT FILE
 286 000132  1400            GETCX
 287               
 288               OSAVE=  JMS I .         /SAVE CHAR IN OUTPUT LINE BUFFER
 289 000133  2533            OSAVEX
 290               
 291               SPNOR=  JMS I .         /IGNORE SPACES ON COMMAND LINE
 292 000134  5400            SPNORX
 293               
 294               SORTJ=  JMS I .         /CHARACTER DISPATCH AND JUMP ROUTINE
 295 000135  1726            SORTJX
 296               
 297               GARBAGE=JMS I .         /IGNORE GARBAGE AT END OF COMMAND LINE
 298 000136  1635           GARBJX
 299               
 300               COMCHK= JMS I .         /COMMAND DISPATCH ROUTINE
 301 000137  0400            CMDCKX
 302               
 303               WORDCK= JMS I .         /CHECK FOR SINGLE COMMAND WORD
 304 000140  0553            WRDCKX
 305               
 306               GETNUM= JMS I .         /GET A NUMBER FROM COMMAND LINE
 307 000141  3200            GETNMX
 308               
 309               NUMCHK= JMS I .         /GET A NUMBER AND CHECK IT
 310 000142  6115             NUMCKX
 311               
 312               NUMPOS= JMS I .         /GET A POSITIVE NON ZERO NUMBER
 313 000143  2146             NUMPOX
 314               
 315               RELQ=   JMS I .         /CHECK LAST CONVERSION FOR RELATIVE
 316 000144  5331            RELQX
 317               
 318               BINPRT= JMS I .         /PRINT A NUMBER IN OUTPUT
 319 000145  5312            BINASC
 320               
 321               DOEJECT=JMS I .         /SKIP TO TOP OF NEW PAGE
 322 000146  4325            EJECTX
 323               
 324               BREAK=  JMS I .         /"BREAK" THE OUTPUT LINE BY FORCING IT
 325 000147  1670            BREAKX
 326               
 327               EOCQ=   JMS I .         /IS THIS CHAR "END OF COMMAND" CHAR?
 328 000150  4333            EOCQX
 329               
 330               TSTALL= JMS I .         /IS CHARACTER LARGE ALPHA?
 331 000151  4313            TSTALX
 332               CRLF=   JMS I .         /OUTPUT A CR/LF COMBO
 333 000152  3315            CRLFX
 334               
 335               ERROR=  JMS I .         /OUTPUT AN ERROR MESSAGE
 336 000153  3541            ERRORX
 337               
 338               ERRORC= JMS I .         /OUTPUT ERROR MESSAGE, GET NEXT CMD
 339 000154  3552            ERRCX
 340               
 341               ERRORF= JMS I .         /OUTPUT A FATAL ERROR MESSAGE
 342 000155  4026            ERRFX
 343               
 344               PUSHA=  JMS I .         /PUSH ACC ONTO STACK
 345 000156  0277            PUSHAX
 346               
 347               POPA=   JMS I .         /POP TOP OF STACK TO ACC
 348 000157  0324            POPAX
 349               
 350               SAVELIST=       JMS I . /SAVE LIST OF ELEMENTS ON STACK
 351 000160  1600            SAVELX
 352               
 353               RESTORE=        JMS I . /RESTORE LIST OF ELEMENTS FROM THE STACK
 354 000161  1622            RESTRX
 355               
 356               PUSHJ=  JMS I .         /RECURSIVE JMS
 357 000162  1163            PUSHJX
 358               
 359               BADCMD= JMP I .         /JMP!! ILLEGAL COMMAND
 360 000163  0274            ILLCMD
 361               
 362               POPJ=   JMP I .         /JMP!! RETURN FROM PUSHJ
 363 000164  5554            POPJX
 364               
 365               RETURN= JMP I .         /JMP!!!  GET A NEW COMMAND LINE
 366 000165  0213  RTNLNK,   NLINE
 367               
 368               EOCGO=  JMP I .         /JMP!!! IGNORE GARBAGE AND GET NEW COMMAND LINE
 369 000166  2352          EOCGOX
 370               
 371               PAGE
 372               
 373                       FIELD 0
 374               / START OF THE PROGRAM "PRINTR"
 375               / IF PROGRAM IS STARTED AT LOCATION 200, THEN COMMAND DECODER
 376               / IS INVOKED AND THE FOLLOWING IS REQUESTED:
 377               /       *OUTPUT<INPUTS(OPTIONS)
 378               / IF PROGRAM IS STARTED AT LOCATION 201 (BY CHAINING), THESE
 379               / FILES ARE ASSUMED TO BE IN CD AREA IN FIELD 1
 380               
 381               *200
 382               
 383               
 384 000200  2202  RUNOFF, INC SLOC        /HOW DID WE GET HERE?
 385 000201  5602          JMP I SLOC      /THIS IS CHAIN
 386 000202  6452  SLOC,   PRINTR          /WE DO INITIAL STUFF IN THE HANDLER SPACE
 387                                       /THIS GETS CHANGED TO 7604 TO PROTECT AGAINST
 388                                       /^C ST
 389               
 390 000203  3121  PRTGO,  DCA PAGENO      /ALL OTHERS, ZAP TO ZERO
 391 000204  6212          CIF 10          /INIT CODE IN FIELD 1
 392 000205  4777          JMS INIT        /INITIALIZE BUFFERS, FLAGS, ETC.
 393 000206  7201          CLA IAC
 394 000207  3120          DCA NLINES
 395               /**PATCH B---PATCH TO NOWICKI'S PATCH
 396               /  CORRECTS PROBLEM WITH FILES WITH NO COMMANDS.
 397 000210  4562          PUSHJ
 398 000211  1142          NPARMS
 399 000212  7000          NOP             /HERE FOR PATCH PURPOSES...
 400               /**END OF PATCH B
 401               
 402               / GET A NEW LINE
 403               / CHECK FIRST CHAR FOR COMMAND OR COMMENT
 404               
 405               
 406 000213  1276  NLINE,  TAD SVECAP      /RESTORE THE ECAP SWITCH MAYBE
 407 000214  3064          DCA ECAPSW
 408 000215  4532          GETC            /GET AN INPUT CHAR
 409 000216  1102          TAD CHAR        /FIRST CHAR OF LINE
 410 000217  7041          CIA
 411 000220  1776          TAD CTLCHR      /IS IT COMMAND CHAR (".") ?
 412 000221  7650          SNA CLA
 413 000222  5253          JMP COMMAND     /YES, GO DO A COMMAND
 414 000223  1055          TAD SWFILL
 415 000224  7640          SKIPYES
 416 000225  5240          JMP NLINE1      /.NOFILL, GO SAVE CHAR
 417 000226  1037          TAD SWPARA      /(.FILL) IS AUTOPARAGRAPH ON?
 418 000227  7640          SKIPYES
 419 000230  5240          JMP NLINE1      /NO, GO SAVE CHAR
 420 000231  1102          TAD CHAR
 421 000232  7440          SZA             /TWO EOLS IS AUTOPAR ALSO
 422 000233  1177          TAD [-" ]
 423 000234  7440          SZA
 424 000235  1375          TAD (" -211)
 425 000236  7650          SNA CLA         /FIRST CHAR OF LINE A SPACE OR TAB?
 426 000237  5774          JMP PARAG       /YES, START A NEW PARAGRAPH.
 427               
 428 000240  1102  NLINE1, TAD CHAR        /GET THE CHAR BACK
 429 000241  4562          PUSHJ           /SAVE THE CHARS IN PRINT BUFFER
 430 000242  0600            SAVECX
 431 000243  1102          TAD CHAR        /IS CHAR END-OF-LINE?
 432 000244  7650          SNA CLA
 433 000245  5250          JMP NLINE2      /YES, MAYBE ANOTHER PARAGRAPH
 434 000246  4532          GETC            /NO, GET ANOTHER CHAR
 435 000247  5240          JMP NLINE1
 436               
 437 000250  1064  NLINE2, TAD ECAPSW
 438 000251  3276          DCA SVECAP      /WATCH OUT FOR ECAP
 439 000252  5213          JMP NLINE
 440               
 441               / GET A COMMAND TO THE COMMAND BUFFER
 442               / CHECK FOR LEGAL COMMAND AND GO DO IT
 443               / .; OR .! IS COMMENT
 444               / . ; OR . ! IS A BREAK COMMAND
 445               
 446 000253  1064  COMMAND,TAD ECAPSW
 447 000254  3276          DCA SVECAP      /PRESERVE THE ECAP SWITCH
 448 000255  3114          DCA NOFLG       /CLEAR THE PREVIOUS NO SETTING 8/76
 449 000256  4532          GETC            /SKIP PAST THE COMMAND CHAR (.)
 450 000257  1102          TAD CHAR
 451 000260  1373          TAD (-"!)
 452 000261  7450          SNA
 453 000262  5772          JMP COMCOM      /.! IS A COMMENT
 454 000263  1371          TAD ("!-";)
 455 000264  7650          SNA CLA
 456 000265  5772          JMP COMCOM      /.; IS A COMMENT, TOO
 457 000266  4537          COMCHK
 458 000267  4365            CMDS-1
 459 000270  4211            CMDJ-1
 460 000271  1576          TAD I [CMDLINE] /NOT A LEGAL COMMAND
 461 000272  7650          SNA CLA         /WAS COMMAND SIMPLY "." ?
 462 000273  5770          JMP BREAKC      /YES, SHORT FOR .BREAK
 463               
 464 000274  4554  ILLCMD, ERRORC          /BAD COMMAND
 465 000275  0203          TEXT \BC\
     000276  0000  
 466                       *.-1
 467               
 468 000276  7777  SVECAP, 7777            /CAPITALIZE FIRST CHAR OF FILE
 469               
 470               
 471               / PUSH CONTENTS OF ACCUMULATOR ONTO TOP OF STACK
 472               
 473               
 474 000277  0000  PUSHAX, 0
 475 000300  3007          DCA PPTEMP      /SAVE ACC
 476 000301  6214          RDF             /WHERE FROM?
 477 000302  1304          TAD CDIF00      /MAKE RETURN
 478 000303  3322          DCA PSHCIF
 479 000304  6203  CDIF00, CDF CIF 00
 480 000305  1025          TAD STKPTR
 481 000306  7141          CLL CIA
 482 000307  1351          TAD KSTKEN      /INIT CHANGES IT
 483 000310  7620          SNL CLA         /STACK OVERFLOW?
 484 000311  5314          JMP PUSHA2      /NO, STILL IN STACK
 485 000312  4555          ERRORF          /ERROR, STACK OVERFLOW
 486 000313  2317          TEXT \SO\
     000314  0000  
 487                       *.-1
 488               
 489 000314  1007  PUSHA2, TAD PPTEMP
 490 000315  4346          JMS STKFLD      /INIT LOCATES IT
 491 000316  3425          DCA I STKPTR    /PUT ACC ONTO STACK
 492 000317  7240          STA
 493 000320  1025          TAD STKPTR
 494 000321  3025          DCA STKPTR      /DECREMENT STACK PTR
 495 000322  7402  PSHCIF, HLT             /GETS RETURN CDIF
 496 000323  5677          JMP I PUSHAX    /RETURN WITH CLEAR ACC
 497               
 498               / POP TOP ITEM OF STACK AND PLACE IN ACC
 499               
 500               
 501 000324  0000  POPAX,  0
 502 000325  7300          CLA CLL         /CLEAR GARBAGE IN ACC
 503 000326  6214          RDF             /WHERE FROM?
 504 000327  1304          TAD CDIF00      /MAKE RETURN
 505 000330  3344          DCA POPCIF
 506 000331  6201          CDF 00          /WE RUN HERE
 507 000332  2025          INC STKPTR
 508 000333  1025          TAD STKPTR
 509 000334  7141          CLL CIA
 510 000335  1352          TAD KSTACK      /INIT CAN CHANGE THIS
 511 000336  7630          SZL CLA         /STACK UNDERFLOW?
 512 000337  5342          JMP POPAX2      /NO, STILL IN STACK
 513 000340  4555          ERRORF          /ERROR, STACK UNDERFLOW
 514 000341  2325          TEXT \SU\
     000342  0000  
 515                       *.-1
 516               
 517 000342  4346  POPAX2, JMS STKFLD      /STACK IN FIELD 1
 518 000343  1425          TAD I STKPTR    /GET ITEM FROM TOP OF STACK
 519 000344  7402  POPCIF, HLT             /GETS CIF INSTRUCTION
 520 000345  5724          JMP I POPAX
 521               
 522 000346  0000  STKFLD, 0
 523 000347  6211          CDF 10          /IT'S HERE FOR NOW
 524 000350  5746          JMP I STKFLD
 525               
 526 000351  5750  KSTKEN, STKEND
 527 000352  6577  KSTACK, STACK
 528               
 529               
 530               /       SPECIAL INTERNAL CHARACTER CODES
 531                       HYPINT="-+1400
 532               
 533 000353  0256  ECHARS, ".;":;";;"!;"?;" ;HYPINT;0
     000354  0272  
     000355  0273  
     000356  0241  
     000357  0277  
     000360  0240  
     000361  1655  
     000362  0000  
 534               
 535               
 536 000370  1766  PAGE
     000371  7746  
     000372  4134  
     000373  7537  
     000374  2273  
     000375  0027  
     000376  6304  
     000377  4000  
 537               
 538               / CHECK FOR LEGAL COMMANDS IN COMMAND LIST
 539               / IF EQUAL, DISPATCH TO ROUTINE IN JUMP LIST
 540               / JUMP LIST MUST BE IN SAME FIELD AS COMMAND LIST
 541               /THIS CODE IS CHANGED IN RUNOFF FROM PRINTR
 542               /ROUTINE NOW CALLABLE ACROSS FIELDS.  ARGS MUST BE IN FIELD 1
 543               /JUMP TARGETS ARE ASSUMED TO BE IN CALLING FIELD
 544               
 545               
 546 000400  0000  CMDCKX, 0
 547 000401  6214          RDF             /WHERE IS THE STRING?
 548 000402  1207          TAD CDFINS
 549 000403  3243          DCA CMDCRT      /RETURN OR DISPATCH CIF
 550 000404  6214          RDF             /NOW FOR ARGS
 551 000405  1250          TAD CDFNLY      /JUST CDF
 552 000406  3246          DCA CFIELD+1
 553 000407  6203  CDFINS, CDF CIF 00      /CHANGE BACK TO US
 554 000410  4777          JMS GETARG      /GET COMMAND WORD TO COMMAND BUFFER
 555 000411  7201          CLA IAC         /ADD ONE TO THE
 556 000412  4245          JMS CFIELD      /COMMAND LIST - 1
 557 000413  2200          INC CMDCKX
 558 000414  3374          DCA CMDPTR      /SAVE THE POINTER
 559 000415  3123          DCA SORTCN      /CHANGED FROM PREVIOUS ***
 560               /FLAGS EXPECTS SORTCN TO HAVE INDEX NUMBER
 561 000416  4252  CMDCK3, JMS CHKCOM      /CHECK COMMAND VERSUS LIST ELEMENT
 562 000417  5231          JMP CMDCK5      /FOUND IT
 563 000420  2123          INC SORTCN      /NOT IT, ONE MORE ARGUMENT BY
 564 000421  1774          TAD I CMDPTR    /END OF ELEMENT LIST?
 565 000422  7640          SZA CLA
 566 000423  5216          JMP CMDCK3      /NO, CHECK NEXT ONE OUT
 567 000424  4245          JMS CFIELD      /YES, PREPARE TO RETURN
 568 000425  7650          SNA CLA         /THRU LIST OR AFTER ARGS?
 569 000426  2200          INC CMDCKX      /FOR OVER THE ARGS
 570 000427  2200  CMZRTN, INC CMDCKX      /AFTER ARGUMENTS
 571 000430  5243          JMP CMDCRT      /RETURN NOT FOUND IN COMMAND LIST
 572               
 573 000431  6201  CMDCK5, CDF 00          /BACK TO OUR FIELD
 574 000432  3576          DCA I [CMDLINE] /SO NEXT GETARG WILL WORK
 575 000433  4245          JMS CFIELD      /HOW TO RETURN?
 576 000434  7450          SNA
 577 000435  5227          JMP CMZRTN      /ZERO, RETURN AFTER ARGS
 578 000436  1123          TAD SORTCN      /CONTAINS NUMBER OF ARG
 579 000437  3012          DCA AUTOX3      /ADDR TO GET JUMP
 580 000440  6211          CDF 10          /JMP TARGETS IN FIELD OF ARGS
 581 000441  1412          TAD I AUTOX3    /GET LOC FOR ROUTINE
 582 000442  3200          DCA CMDCKX
 583 000443  7402  CMDCRT, HLT             /GETS DISPATCH FIELD
 584 000444  5600          JMP I CMDCKX
 585               
 586               CMDNCK,                 /DOUBLES AS FLAG FOR CHKCOM
 587 000445  0000  CFIELD, 0
 588 000446  7402          HLT             /GETS CDF TO CALLING FIELD
 589 000447  1600          TAD I CMDCKX    /GET THE ARG
 590 000450  6201  CDFNLY, CDF 0           /BACK TO THIS FIELD
 591 000451  5645          JMP I CFIELD
 592               
 593               / SUBR TO CHECK IF COMMAND LINE IS EQUAL TO CURRENT CMD IN LIST
 594               / THIS CODE CHANGED TO CONFORM TO THE STANDARD SCAN CONVENTION
 595               / THE FIRST MATCH TO A SHORTENED COMMAND IS ACCEPTED AS VALID
 596               
 597               
 598 000452  0000  CHKCOM, 0
 599 000453  6201          CDF 00
 600 000454  1176          TAD [CMDLINE]   /INIT THE BUFFER POINTER
 601 000455  3375          DCA CMDPT2
 602 000456  1374          TAD CMDPTR
 603 000457  3313          DCA CMDXX2      /SAVE THE COMMAND POINTER
 604 000460  7240          STA             /SET THE FIRST PASS FLAG
 605 000461  3245          DCA CMDNCK      /IN CASE OF "NO"
 606               /       DCA NOFLG       /AND CLEAR THE "NO" FLAG
 607               /ONLY CLEAR THIS AT "." LEVEL TMC 8/76
 608 000462  1775          TAD I CMDPT2    /CHECK FOR NULL COMMAND
 609 000463  7650          SNA CLA         /IS IT NULL?
 610 000464  5343          JMP CHKSCN-1    /YES, NO MATCH
 611 000465  6211  CMDLP,  CDF 10          /CHANGE TO FIELD OF TEXT STRINGS
 612 000466  1774          TAD I CMDPTR    /GET TWO FROM STRING
 613 000467  7012          RTR;RTR;RTR     /LEFT HALF DOWN
     000470  7012  
     000471  7012  
 614 000472  3312          DCA CMDXX1      /SAVE THE BYTE
 615 000473  6201          CDF 00          /COMMAND LINE DOWN HERE
 616 000474  1775          TAD I CMDPT2    /GET ITS TWO BYTES
 617 000475  7012          RTR;RTR;RTR     /AND LEFT HALF
     000476  7012  
     000477  7012  
 618 000500  4314          JMS CHKCHR      /CHECK THE CHAR OUT
 619 000501  6211          CDF 10          /BACK TO FIELD 1
 620 000502  1774          TAD I CMDPTR    /GET TWO CHARS AGAIN
 621 000503  3312          DCA CMDXX1      /COMPARE RIGHT HALVES
 622 000504  6201          CDF 00          /BACK TO ZERO FOR BUFFER
 623 000505  1775          TAD I CMDPT2    /DITTO COMMAND LINE
 624 000506  4314          JMS CHKCHR
 625 000507  2374          ISZ CMDPTR      /CHECK NEXT TWO CHARS
 626 000510  2375          ISZ CMDPT2      /IN BUFFER TOO
 627 000511  5265          JMP CMDLP
 628               
 629 000512  0000  CMDXX1, 0               /THE SECOND TEST BYTE
 630 000513  0000  CMDXX2, 0               /TO SAVE THE CMDPTR
 631               
 632 000514  0000  CHKCHR, 0               /CHECK CHAR IN ACC
 633 000515  0175          AND [77]        /AGAINST THE CHAR IN CMDXX1
 634 000516  7450          SNA             /IF ACC BYTE IS 0, ITS A MATCH
 635 000517  5344          JMP CHKSCN      /GO FOR GOOD MATCH
 636 000520  7041          CIA             /PERHAPS THEY ARE EQUAL
 637 000521  1312          TAD CMDXX1      /THE OTHER BYTE
 638 000522  0175          AND [77]        /ONLY LOWER BYTE
 639 000523  7650          SNA CLA         /WERE THEY EQUAL
 640 000524  5714          JMP I CHKCHR    /YES, CHECK SOME MORE
 641 000525  2245          ISZ CMDNCK      /FIRST TRY?
 642 000526  5343          JMP CHKSCN-1    /NO, GIVE IT UP
 643 000527  1176          TAD [CMDLINE]   /LOOK AT COMMAND BUFFER
 644 000530  3375          DCA CMDPT2
 645 000531  1576          TAD I [CMDLINE] /CHECK FOR "NO" IN COMMAND
 646 000532  1376          TAD (-1617)     /"NO"
 647 000533  7640          SZA CLA
 648 000534  5343          JMP CHKSCN-1    /NOT "NO"
 649 000535  2375          INC CMDPT2      /YES, SKIP OVER IT
 650 000536  7240          STA             /BUT SET THE "NO" FLAG
 651 000537  3114          DCA NOFLG       /7777 IF "NO"
 652 000540  1313          TAD CMDXX2      /RESTORE COMMAND POINTER
 653 000541  3374          DCA CMDPTR
 654 000542  5265          JMP CMDLP       /TRY AGAIN
 655 000543  2252          ISZ CHKCOM      /COME HERE IF NO MATCH AT ALL
 656 000544  6211  CHKSCN, CDF 10          /BUT FIRST SCAN TO END OF COMMAND
 657 000545  1774          TAD I CMDPTR
 658 000546  2374          ISZ CMDPTR
 659 000547  0175          AND [77]        /THE ZERO BYTE?
 660 000550  7640          SZA CLA
 661 000551  5345          JMP CHKSCN+1    /NO, CHECK SOME MORE
 662 000552  5652          JMP I CHKCOM    /YES, RETURN
 663               
 664               /TEST THE SPELLING OF A SINGLE WORD
 665               
 666 000553  0000  WRDCKX, 0
 667 000554  1753          TAD I WRDCKX    /GET ADDRESS OF WORD
 668 000555  2353          INC WRDCKX
 669 000556  3374          DCA CMDPTR      /IT IS THE COMMAND
 670 000557  6214          RDF             /WHERE FROM
 671 000560  1362          TAD CDFINW      /MAKE RETURN CIF CDF
 672 000561  3372          DCA WRDCIF      /FOR RETURN
 673 000562  6203  CDFINW, CDF CIF 00      /DATA FIELD HERE NOW
 674 000563  4777          JMS GETARG      /GET THE VARIABLE
 675 000564  4252          JMS CHKCOM      /CHECK THIS WORD
 676 000565  5370          JMP .+3         /A MATCH
 677 000566  2353          INC WRDCKX      /BAD, RETURN TO .+2
 678 000567  5372          JMP .+3         /IF NO MATCH LEAVE THE ARG ALONE
 679 000570  6201          CDF 0           /CLEAR CMDLINE FOR NEXT GETARG
 680 000571  3576          DCA I [CMDLINE]
 681 000572  7402  WRDCIF, HLT             /BACK TO HIS FIELD
 682 000573  5753          JMP I WRDCKX    /OK, RETURN TO .+1
 683               
 684 000574  0000  CMDPTR, 0
 685 000575  0000  CMDPT2, 0
 686               
 687 000576  6161  PAGE
     000577  4044  
 688               
 689               / SAVE A CHARACTER IN THE OUTPUT BUFFER
 690               / THIS IS THE OUTERMOST ROUTINE
 691               / CONVERTS TABS TO SPACES; CHECKS EOL IN .NOFILL AND PRINTS LINE
 692               
 693               
 694 000600  3245  SAVECX, DCA SAVCHR      /SAVE THE CHAR
 695 000601  1245          TAD SAVCHR
 696 000602  1377          TAD (-211)
 697 000603  7640          SZA CLA         /IS IT A TAB CHAR?
 698 000604  5237          JMP SAVC3       /NOT A TAB, GO SAVE IT
 699 000605  1376          TAD (TABS-1)    /TAB, MUST EXPAND TO SPACES
 700 000606  3244          DCA SAVTPT      /INITIALIZE TAB PTR
 701 000607  2244  SAVC1,  INC SAVTPT      /POINT TO NEXT TAB
 702 000610  7200          CLA
 703 000611  1644          TAD I SAVTPT    /GET A TAB STOP
 704 000612  7650          SNA CLA
 705 000613  5235          JMP SAVC2       /NO MORE STOPS, SAVE A SPACE
 706 000614  1074          TAD TABFLG      /ABSOLUTE OR RELATIVE TAB STOPS?
 707 000615  7650          SNA CLA
 708 000616  5221          JMP .+3         /ABSOLUTE
 709 000617  7240          STA
 710 000620  1051          TAD ALMARG      /RELATIVE, USE ACTUAL LEFT MARGIN - 1
 711 000621  1644          TAD I SAVTPT    /GET THE TAB STOP AGAIN
 712 000622  7041          CIA
 713 000623  1112          TAD CURCOL      /HAVE WE REACHED CURRENT COLUMN YET?
 714 000624  7500          SMA
 715 000625  5207          JMP SAVC1       /NO, GET NEXT TAB STOP
 716 000626  3243          DCA SAVSPC      /SAVE NO. OF SPACES TO EXPAND
 717 000627  1030          TAD TABCHR      /QUOTED OR UNQUOTED SPACE
 718 000630  4562          PUSHJ
 719 000631  0646            SAVECL        /SAVE A SPACE ON LINE
 720 000632  2243          ISZ SAVSPC      /IS TAB EXPANDED?
 721 000633  5227          JMP .-4         /NOPE
 722 000634  5564          POPJ            /RETURN IF TAB EXPANDED
 723               
 724 000635  1174  SAVC2,  TAD [" ]        /JUST SAVE A SPACE IF NO MORE STOPS
 725 000636  7410          SKP
 726               
 727 000637  1245  SAVC3,  TAD SAVCHR      /SAVE CURRENT CHAR
 728 000640  4562          PUSHJ
 729 000641  0646              SAVECL
 730 000642  5564          POPJ
 731               
 732 000643  0000  SAVSPC, 0
 733 000644  0000  SAVTPT, 0
 734 000645  0000  SAVCHR, 0
 735               
 736               / ANOTHER SUBROUTINE A LEVEL DEEPER TO SAVE A CHAR
 737               / CHECKS FOR SPECIAL END-OF-LINE PUNCTUATION COMBINATIONS
 738               
 739               
 740 000646  3245  SAVECL, DCA SAVCHR      /SAVE THE CHARACTER AGAIN
 741 000647  1245          TAD SAVCHR      /FOR EVERYONE ELSE
 742 000650  5651          JMP I SAVECR    /GO TO CORRECT PLACE IN ROUTINE
 743 000651  0654  SAVECR, SAVCL2+1        /NORMAL ENTRY POINT
 744 000652  5564          POPJ            /RETURN TO CALLER
 745               
 746 000653  4251  SAVCL2, JMS SAVECR      /RETURN FOR ANOTHER CHAR
 747 000654  7200          CLA             /LET'S GET A FRESH ONE
 748 000655  1245  SAVCL3, TAD SAVCHR      /NOW CHECK CHAR FOR ENDING CHAR
 749 000656  4535          SORTJ           /IS CHAR ONE OF FOLLOWING?
 750 000657  0352            ECHARS-1      /. ; : ! ?
 751 000660  1013            EJMPS-ECHARS  /CHECK - AND SP TOO
 752 000661  1245  SAVCL4, TAD SAVCHR      /NO, SAVE THE CHAR
 753 000662  4775          JMS SAVEIT
 754 000663  5253          JMP SAVCL2
 755               
 756               / SPECIAL END OF LINE CHARACTER PROCESSING (IF .PERIOD)
 757               / THE SPECIAL CHARS ARE . : ; ! ?
 758               
 759 000664  1045  SAVCL7, TAD SWPER       /SPECIAL CHAR PROCESSING?
 760 000665  7640          SKIPYES
 761 000666  5261          JMP SAVCL4      /NO, JUST SAVE THE CHAR
 762 000667  1245          TAD SAVCHR      /SPECIAL CHARS: . : ; ! ?
 763 000670  4775          JMS SAVEIT      /SAVE IT
 764 000671  4251          JMS SAVECR      /GO GET CHAR AFTER IT
 765 000672  7440          SZA             /CHECK FOR EOL
 766 000673  5277          JMP SAVSPQ
 767 000674  4356          JMS SAVEOQ      /CHECK OUT THE EOL HANDLING
 768 000675  5313          JMP SAVC81      /NO BREAK, SAVE THE SPACES
 769 000676  5316          JMP SAVC82      /WE DID A BREAK, FORGET THE SPACES
 770 000677  1177  SAVSPQ, TAD [-" ]
 771 000700  7640          SZA CLA
 772 000701  5255          JMP SAVCL3      /NOT A SPACE, CHECK FOR GOOD CHARS AGAIN
 773 000702  4251          JMS SAVECR      /ECHAR AND SPACE, TRY AGAIN
 774 000703  7450          SNA             /CHECK EOL HERE TOO
 775 000704  4356          JMS SAVEOQ
 776 000705  7410          SKP             /NO BREAK USE THE SPACE
 777 000706  5316          JMP SAVC82      /WE DID A BREAK FORGET THE SPACES
 778 000707  1177          TAD [-" ]
 779 000710  7640          SZA CLA
 780 000711  5321          JMP SAVCL9      /NOT A SPACE, GO SAVE CHARS
 781 000712  1174  SAVCL8, TAD [" ]        /ECHAR FOLLOWED BY 2 SPACES => 2 SPACES
 782 000713  4775  SAVC81, JMS SAVEIT      /SAVE THE 2 SPACES AFTER ECHAR
 783 000714  1174          TAD [" ]
 784 000715  4775          JMS SAVEIT
 785 000716  7240  SAVC82, STA
 786 000717  3064          DCA ECAPSW      /CAPITALIZE NEXT CHAR (MAYBE)
 787 000720  5326          JMP SAVSP1      /GET ANOTHER CHAR
 788               
 789 000721  1174  SAVCL9, TAD [" ]        /SAVE THE FIRST SPACE AFTER CHAR
 790 000722  4775          JMS SAVEIT
 791 000723  5255          JMP SAVCL3      /THEN GO SAVE CURRENT CHAR
 792               
 793 000724  1245  SAVSP,  TAD SAVCHR      /SAVE THIS FIRST SPACE
 794 000725  4775          JMS SAVEIT
 795 000726  1055  SAVSP1, TAD SWFILL      /BUT IF FILL IS ON IGNORE OTHERS
 796 000727  7640          SKIPYES
 797 000730  5253          JMP SAVCL2      /NO FILL LET IT GO
 798 000731  4251  SAVSP2, JMS SAVECR      /GET NEXT CHAR
 799 000732  7440          SZA
 800 000733  5336          JMP SAVSP3      /NOT AN EOL
 801 000734  4356          JMS SAVEOQ      /HOW DO WE HANDLE IT?
 802 000735  5253          JMP SAVCL2      /WE DID A BREAK LEAVE IT
 803 000736  1177  SAVSP3, TAD [-" ]       /IS IT A SPACE
 804 000737  7650          SNA CLA
 805 000740  5331          JMP SAVSP2      /YES, IGNORE IT
 806 000741  5255          JMP SAVCL3      /AND BACK TO NORMAL
 807               
 808 000742  4251  SAVHYP, JMS SAVECR      /YES, WHAT IS NEXT?
 809 000743  0173          AND [7737]      /DON'T CARE UPPER OR LOWER
 810 000744  4551          TSTALL  /UPPER OR LOWER ALPHA?
 811 000745  5350          JMP SAVHY2      /NO, PASS HYPHEN AND CHAR
 812 000746  7332          STL CLA RTR     /2000 TO ACC
 813 000747  5261          JMP SAVCL4      /SET THE BIT AND GO
 814 000750  1774  SAVHY2, TAD CMDHYP      /GET A HYPHEN OR WHATEVER HE USES
 815 000751  4775          JMS SAVEIT      /AND PRINT IT
 816 000752  5255          JMP SAVCL3      /PROCESS THIS CHAR NORMALLY
 817               
 818 000753  4356  SAVEOL, JMS SAVEOQ      /CHECK OUT HOW
 819 000754  5256          JMP SAVCL3+1    /LIKE A SPACE
 820 000755  5253          JMP SAVCL2      /WE DID A BREAK
 821               
 822 000756  0000  SAVEOQ, 0
 823 000757  1055          TAD SWFILL
 824 000760  7650          SKIPNO
 825 000761  5366          JMP SAV1SP
 826 000762  4562          PUSHJ
 827 000763  1200            JUSTIFY
 828 000764  2356          ISZ SAVEOQ
 829 000765  5756          JMP I SAVEOQ
 830               
 831 000766  1174  SAV1SP, TAD [" ]
 832 000767  3245          DCA SAVCHR
 833 000770  1245          TAD SAVCHR
 834 000771  5756          JMP I SAVEOQ
 835               
 836 000774  6311  PAGE
     000775  1000  
     000776  6332  
     000777  7567  
 837               
 838               
 839               / SAVE A CHARACTER IN OUTPUT LINE BUFFER
 840               / CHECK IF LINE BUFFER FULL (BY WORDS)
 841               / CHECK TO SEE IF WE JUSTIFY LINE, ALSO
 842               
 843               
 844 001000  0000  SAVEIT, 0
 845 001001  3334          DCA SAVETC      /SAVE CHAR TO PUT IN BUFFER
 846 001002  1200          TAD SAVEIT      /SAVE RETURN LOC ON STACK
 847 001003  4556          PUSHA
 848 001004  1117  SAVE1,  TAD OUTCTR      /IS BUFFER FULL?
 849 001005  7650          SNA CLA
 850 001006  5225          JMP SAVE3       /YES, MUST SAVE A "WORD"
 851               
 852 001007  1005  SAVE2,  TAD CHRCNT      /NO, SAVE THE CHAR
 853 001010  7640          SZA CLA         /ANY CHARS ON LINE YET?
 854 001011  5221          JMP SAVE22      /YES, GO SAVE THE CHAR
 855 001012  1334          TAD SAVETC      /NO, IS CHAR A SPACE?
 856 001013  1177          TAD [-" ]
 857 001014  7640          SZA CLA
 858 001015  5221          JMP SAVE22      /CHAR NOT A SPACE, GO SAVE IT
 859 001016  1055          TAD SWFILL      /YES, A SPACE...FILL MODE ON?
 860 001017  7650          SKIPNO
 861 001020  5564          POPJ            /YES, IGNORE THOSE INITIAL SPACES
 862 001021  1334  SAVE22, TAD SAVETC      /GET THE CHAR
 863 001022  4533          OSAVE           /AND SAVE IT
 864 001023  7000          NOP
 865 001024  5564          POPJ            /RETURN
 866               
 867 001025  1334  SAVE3,  TAD SAVETC      /SAVE CURRENT CHAR ON STACK
 868 001026  4556          PUSHA
 869 001027  1334          TAD SAVETC      /WHAT IS IT?
 870 001030  1177          TAD [-" ]       /IF IT IS SPACE WE'RE DONE
 871 001031  7650          SNA CLA
 872 001032  5275          JMP SAV371      /THERE MAY HAVE BEEN MORE THAN ONE SPACE
 873 001033  4777  SAVE33, JMS SAVDEC      /DECREMENT PTR, LENGTH OF LINE
 874 001034  5242          JMP SAV333      /IGNORE POSSIBLE HYPHEN ON 1ST CHAR
 875 001035  4777  SAV331, JMS SAVDEC      /REGULAR LOOP POINT
 876 001036  1516          TAD I OUTPTR    /GET THE CHAR
 877 001037  7006          RTL             /CHECK FOR HYPHEN FLAG BIT
 878 001040  7630          SZL CLA         /IS IT HYPHEN
 879 001041  5266          JMP SAV332      /YES, PROCESS IT
 880 001042  1177  SAV333, TAD [-" ]       /NO, IS IT A SPACE
 881 001043  1516          TAD I OUTPTR
 882 001044  7450          SNA
 883 001045  5276          JMP SAVE37      /YES, WE HAVE A WORD
 884 001046  1174          TAD [" ]        /REGENERATE CHAR
 885 001047  4556          PUSHA           /AND SAVE IT ON STACK
 886 001050  7240          STA
 887 001051  1117          TAD OUTCTR
 888 001052  3117          DCA OUTCTR      /DECREMENT OUTPUT BUFFER CTR
 889 001053  1005          TAD CHRCNT      /HAVE WE MOVED EVERYTHING OUT?
 890 001054  7640          SZA CLA
 891 001055  5235          JMP SAV331      /NO, KEEP LOOKING FOR A SPACE
 892 001056  4557  SAVE35, POPA            /EVERYTHING OUT
 893 001057  4533          OSAVE           /MOVE EVERYTHING BACK TO OUTPUT BUFFER
 894 001060  5256          JMP .-2
 895 001061  4562  SAV351, PUSHJ           /THEN PRINT THE LINE
 896 001062  3400            PRINT
 897 001063  1056          TAD LSPACE      /CURRENT SPACING (-)
 898 001064  4552          CRLF
 899 001065  5327          JMP SAVE62      /GO GET CURRENT CHAR
 900               
 901 001066  1516  SAV332, TAD I OUTPTR    /SAVE THE HYPHEN CHAR
 902 001067  4556          PUSHA           /ON THE STACK
 903 001070  1272          TAD KHYPHN      /GET A HYPHEN
 904 001071  4533          OSAVE           /SAVE IT IN OUTPUT
 905 001072  0255  KHYPHN, "-              /THIS IS FOR OSAVE A NOP
 906 001073  7344          STA CLL RAL     /DECREMENT BY TWO FOR CHAR AND HYPHEN
 907 001074  1117          TAD OUTCTR      /STACKED CHAR
 908 001075  3117  SAV371, DCA OUTCTR      /AND FALL THROUGH TO SAVE37
 909                                       /COME HERE IF FINAL CHAR IS SPACE
 910               
 911 001076  1005  SAVE37, TAD CHRCNT      /HAVE WE MOVED ALL CHARS OUT?
 912 001077  7650          SNA CLA         /IF WE HAVE, IT IS ALL SPACES
 913 001100  5261          JMP SAV351      /YES, RESTORE EVERYTHING, THEN
 914 001101  4777          JMS SAVDEC      /DECREMENT POINTER, LENGTH OF LINE
 915 001102  1516          TAD I OUTPTR    /GET A CHAR
 916 001103  1177          TAD [-" ]
 917 001104  7650          SNA CLA
 918 001105  5276          JMP SAVE37      /ANOTHER SPACE
 919 001106  2115          INC LENOL       /COUNT LAST NON-SPACE CHAR
 920 001107  2005          INC CHRCNT      /NEED IT FOR POINTING TOO
 921 001110  1117          TAD OUTCTR
 922 001111  4556          PUSHA           /SAVE CHAR COUNT ON STACK TOO
 923 001112  4562          PUSHJ
 924 001113  1200           JUSTIFY        /JUSTIFY THE LINE AND PRINT
 925 001114  4557          POPA
 926 001115  3334          DCA SAVETC      /RESTORE CTR FOR MOVE
 927 001116  1334          TAD SAVETC
 928 001117  7650          SNA CLA
 929 001120  5327          JMP SAVE62      /GET CURRENT CHAR
 930 001121  4557  SAVE61, POPA            /RESTORE CHARS THAT WE SAVED
 931 001122  4533          OSAVE
 932 001123  7410          SKP
 933 001124  5332          JMP SAVE9       /BAD ERROR
 934 001125  2334          ISZ SAVETC      /ALL CHARS SAVED YET?
 935 001126  5321          JMP SAVE61
 936 001127  4557  SAVE62, POPA            /EFFECTIVE CURRENT CHAR
 937 001130  3334          DCA SAVETC      /SAVE THE CURRENT CHAR
 938 001131  5204          JMP SAVE1
 939               
 940               
 941 001132  4555  SAVE9,  ERRORF          /FATAL ERROR, BAD PROGRAM
 942 001133  1705          TEXT \OE\
     001134  0000  
 943                       *.-1
 944               
 945 001134  0000  SAVETC, 0
 946               
 947               / SUBROUTINE TO FIX UP PARAMETERS FOR A NEW OUTPUT LINE
 948               / NORMALLY ENTER WITH CLEAR ACC
 949               / OTHERWISE, ENTER WITH LEFT MARGIN MODIFIER IN ACC
 950               
 951 001135  0000  NLPARM, 0
 952 001136  1052          TAD LMARG       /ADD TO CURRENT LEFT MARGIN
 953 001137  3051          DCA ALMARG      /THE ACTUAL LEFT MARGIN
 954 001140  1335          TAD NLPARM
 955 001141  4556          PUSHA           /LIKE WE WERE CALLED VIA PUSHJ
 956 001142  1051  NPARMS, TAD ALMARG      /ACTUAL LEFT MARGIN
 957 001143  7041          CIA
 958 001144  7001          IAC
 959 001145  1053          TAD RMARG       /RIGHT MARGIN
 960 001146  3023          DCA COPYWD      /COPY WIDTH = RMARG-ALMARG+1
 961 001147  1376          TAD (LINE)
 962 001150  3116          DCA OUTPTR      /INITIALIZE POINTER
 963 001151  1023          TAD COPYWD
 964 001152  7041          CIA
 965 001153  3117          DCA OUTCTR      /MAX NO. OF CHARS ON LINE
 966 001154  1375          TAD (-MAXWIDTH  /CAN'T EXCEED PHYSICAL BUFFER EITHER
 967 001155  3774          DCA PLCNT       /OSAVEX KEEPS TRACK OF THIS
 968 001156  3115          DCA LENOL       /LENGTH OF OUTPUT LINE IS 0
 969 001157  3005          DCA CHRCNT      /NO CHARACTERS EITHER
 970 001160  1051          TAD ALMARG
 971 001161  3112          DCA CURCOL      /INITIALIZE CURRENT COLUMN
 972 001162  5564          POPJ            /CALLED VIA "PUSHJ"
 973               
 974               / PUSHJ
 975               / PUSH RETURN LOC TO TOP OF STACK
 976               / JUMP TO ADDRESS GIVEN AS ARGUMENT
 977               
 978 001163  0000  PUSHJX, 0
 979 001164  3006          DCA PUSHTM      /SAVE ACC
 980 001165  7301          CLA CLL IAC
 981 001166  1363          TAD PUSHJX
 982 001167  4556          PUSHA           /SAVE RETURN LOC ON TOP OF STACK
 983 001170  1763          TAD I PUSHJX    /GET LOC TO JUMP TO
 984 001171  3363          DCA PUSHJX
 985 001172  1006          TAD PUSHTM      /RESTORE ACC
 986 001173  5763          JMP I PUSHJX    /JUMP TO THE ROUTINE
 987               
 988 001174  2554          PAGE
     001175  7574  
     001176  6374  
     001177  1651  
 989               
 990               
 991               /JUSTIFY ROUTINE CALLED VIA PUSHJ;JUSTIFY JUSTIFIES AND PRINTS CURRENT LINE
 992               /CHECKS JUSTIFY SWITCH
 993               
 994 001200  1005  JUSTIFY, TAD CHRCNT     /CHECK FOR NOTHING ON LINE
 995 001201  7650          SNA CLA
 996 001202  5237          JMP JUST63      /JUST DO THE SPACING
 997 001203  1054  JUST5,  TAD SWJUST      /DO WE JUSTIFY THE LINE?
 998 001204  7640          SKIPYES
 999 001205  5235          JMP JUST60      /NO, GO PRINT LINE
1000 001206  1216          TAD KCOUNT      /WORTH ABOUT 370
1001 001207  3242          DCA SAVCTR      /TRY TO JUSTIFY LINE 370 TIMES
1002 001210  4223  JUST8,  JMS PLINEQ      /SEE IF WE CAN PRINT LINE
1003 001211  2063          ISZ HFILL       /MUST JUSTIFY LINE, WHICH HALF?
1004 001212  5217          JMP RFILL       /JUSTIFY STARTING ON RIGHT SIDE
1005 001213  7240          STA
1006 001214  3063          DCA HFILL
1007 001215  4243          JMS LEFILL      /JUSTIFY STARTING ON LEFT SIDE
1008 001216  7410  KCOUNT, SKP             /USED AS COUNT VALUE, NOT CRITICAL
1009 001217  4277  RFILL,  JMS RIFILL      /JUSTIFY STARTING AT RIGHT SIDE
1010 001220  2242          ISZ SAVCTR      /TRIED 370 TIMES?
1011 001221  5210          JMP JUST8       /NO, TRY AGAIN
1012 001222  5231          JMP JUST6       /YES, GIVE UP AND PRINT
1013               
1014               / SUBROUTINE TO CHECK TO SEE IF WE CAN PRINT THE OUTPUT LINE
1015               
1016 001223  0000  PLINEQ, 0
1017 001224  1115          TAD LENOL       /IS THE LENGTH OF THE LINE
1018 001225  7041          CIA
1019 001226  1023          TAD COPYWD      /EQUAL TO THE ALLOWABLE LENGTH?
1020 001227  7640          SZA CLA
1021 001230  5623          JMP I PLINEQ    /NO, TRY AGAIN
1022               
1023 001231  1063  JUST6,  TAD HFILL       /MAKE SURE WE START AT OPPOSITE
1024 001232  7700          SMA CLA         / END NEXT TIME
1025 001233  7240          STA
1026 001234  3063          DCA HFILL
1027 001235  4562  JUST60, PUSHJ           /PRINT THE OUTPUT LINE
1028 001236  3400            PRINT
1029 001237  1056  JUST63, TAD LSPACE      /CURRENT SPACING (-)
1030 001240  4552          CRLF
1031 001241  5564          POPJ            /OK, GO ON BACK
1032               
1033 001242  0000  SAVCTR, 0
1034               
1035               / SUBROUTINE TO FILL THE OUTPUT LINE WITH SPACES
1036               / STARTING ON THE LEFT SIDE OF THE LINE
1037               
1038               
1039 001243  0000  LEFILL, 0
1040 001244  1377          TAD (LINE)      /INITIALIZE PTR AND CTR
1041 001245  3100          DCA PTR1
1042 001246  1005          TAD CHRCNT      /ACTUAL LENGTH OF OUTPUT LINE
1043 001247  7041          CIA
1044 001250  3076          DCA CTR1
1045 001251  1500  LEFIL2, TAD I PTR1
1046 001252  2100          INC PTR1
1047 001253  1177          TAD [-" ]
1048 001254  7640          SZA CLA
1049 001255  5266          JMP LEFIL4
1050 001256  2076  LEFIL8, ISZ CTR1
1051 001257  5251          JMP LEFIL2
1052 001260  5643          JMP I LEFILL
1053               
1054 001261  1500  LEFIL3, TAD I PTR1
1055 001262  2100          INC PTR1
1056 001263  1177          TAD [-" ]
1057 001264  7650          SNA CLA
1058 001265  5271          JMP LEFIL6
1059 001266  2076  LEFIL4, ISZ CTR1
1060 001267  5261          JMP LEFIL3
1061 001270  5643          JMP I LEFILL
1062               
1063 001271  4223  LEFIL6, JMS PLINEQ
1064 001272  1076          TAD CTR1
1065 001273  7450          SNA
1066 001274  5643          JMP I LEFILL
1067 001275  4345          JMS SAVFILL
1068 001276  5251          JMP LEFIL2
1069               
1070               / SUBROUTINE TO FILL THE OUTPUT LINE
1071               / BY INSERTING SPACES STARTING AT RIGHT END OF LINE
1072               
1073 001277  0000  RIFILL, 0
1074 001300  1005          TAD CHRCNT
1075 001301  1377          TAD (LINE)
1076 001302  3100          DCA PTR1        /POINTS TO LAST CHAR OF LINE+1
1077 001303  1005          TAD CHRCNT
1078 001304  7041          CIA
1079 001305  3076          DCA CTR1
1080 001306  7240  RIFIL7, STA
1081 001307  1100          TAD PTR1
1082 001310  3100          DCA PTR1
1083 001311  1500          TAD I PTR1
1084 001312  1177          TAD [-" ]
1085 001313  7640          SZA CLA
1086 001314  5327          JMP RIFIL3
1087 001315  2076          ISZ CTR1
1088 001316  5306          JMP RIFIL7
1089 001317  5677          JMP I RIFILL
1090               
1091 001320  7240  RIFIL2, STA
1092 001321  1100          TAD PTR1
1093 001322  3100          DCA PTR1
1094 001323  1500          TAD I PTR1
1095 001324  1177          TAD [-" ]
1096 001325  7650          SNA CLA
1097 001326  5332          JMP RIFIL4
1098 001327  2076  RIFIL3, ISZ CTR1
1099 001330  5320          JMP RIFIL2
1100 001331  5677          JMP I RIFILL
1101               
1102 001332  2076  RIFIL4, ISZ CTR1
1103 001333  7410          SKP
1104 001334  5677          JMP I RIFILL
1105 001335  4223          JMS PLINEQ
1106 001336  1005          TAD CHRCNT      /LENGTH OF OUTPUT LINE
1107 001337  1076          TAD CTR1
1108 001340  7450          SNA
1109 001341  5677          JMP I RIFILL
1110 001342  7041          CIA
1111 001343  4345          JMS SAVFILL
1112 001344  5306          JMP RIFIL7
1113               
1114               / SUBROUTINE TO MOVE THE OUTPUT LINE BUFFER
1115               / 1 CHAR TO RIGHT FOR SPECIFIED COUNT
1116               
1117               
1118 001345  0000  SAVFILL,0
1119 001346  3077          DCA CTR2
1120 001347  1005          TAD CHRCNT
1121 001350  1376          TAD (LINE-1)
1122 001351  3101          DCA PTR2        /INITIALIZE TO LAST CHAR-1 OF LINE
1123 001352  1501  SAVFL2, TAD I PTR2
1124 001353  2101          INC PTR2
1125 001354  3501          DCA I PTR2
1126 001355  7344          MTWO
1127 001356  1101          TAD PTR2
1128 001357  3101          DCA PTR2
1129 001360  2077          ISZ CTR2
1130 001361  5352          JMP SAVFL2
1131 001362  2115          INC LENOL       /WE HAVE ONE MORE CHAR ON THE LINE
1132 001363  2005          INC CHRCNT      /A CHARACTER THAT PRINTS
1133 001364  4223          JMS PLINEQ
1134 001365  5745          JMP I SAVFILL
1135               
1136 001366  0664  EJMPS,  SAVCL7
1137 001367  0664          SAVCL7
1138 001370  0664          SAVCL7
1139 001371  0664          SAVCL7
1140 001372  0664          SAVCL7          /5 REAL ECHARS
1141 001373  0724          SAVSP           /PACK OUT EXTRA SPACES
1142 001374  0742          SAVHYP          /CHECK OUT HYPHEN CHAR
1143 001375  0753          SAVEOL          /SPECIAL FOR EOL
1144               
1145 001376  6373  PAGE
     001377  6374  
1146               
1147               / GENERAL GET-A-CHAR ROUTINE
1148               / DOES SOME CHECKING FOR CASE, AND UNDERLINE
1149               
1150               
1151 001400  0000  GETCX,  0
1152 001401  7300          CLA CLL
1153 001402  1061  GETCX1, TAD UNMODE      /UNDERLINE THE SAME WAY
1154 001403  3047          DCA UNCASE
1155 001404  4530  GETCX2, GET             /GET AN INPUT CHAR
1156 001405  3102          DCA CHAR        /AND SAVE IT
1157 001406  1102  GETCX3, TAD CHAR        /GET THE CURRENT CHAR
1158 001407  4535          SORTJ           /CHECK FOR CERTAIN CTRL/CHARS
1159 001410  6320            CTRLS-1
1160 001411  5240            CTRLJ-CTRLS
1161 001412  1102  GETCX8, TAD CHAR        /NOT A SPECIAL CHAR
1162                                       /OR PROCESS AT SAVE TIME
1163 001413  1177          TAD [-" ]
1164 001414  7650          SNA CLA
1165 001415  5344          JMP GCSP        /A SPACE, SPECIAL DOINGS
1166 001416  1102          TAD CHAR        /GET CHAR BACK AGAIN
1167 001417  0172          AND [377]       /DON'T CARE WHETHER IT'S A
1168 001420  1177          TAD [-" ]       /  QUOTED OR UNQUOTED CTRL/CHAR
1169 001421  7700          SMA CLA         /IS IT A REAL LIVE CTRL/CHAR?
1170 001422  5231          JMP GETCX6      /NO
1171 001423  1043          TAD SWCC        /YES, CTRL/CHARS ALLOWED?
1172 001424  7650          SKIPNO
1173 001425  5276          JMP GETCXR      /YES, KEEP IT QUOTED OR UNQUOTED
1174 001426  4553          ERROR           /NO, GIVE ERROR, ILLEGAL CTRL/CHAR
1175 001427  1103          TEXT \IC\
     001430  0000  
1176                       *.-1
1177 001430  5204          JMP GETCX2      /GET ANOTHER CHAR
1178               
1179 001431  1102  GETCX6, TAD CHAR        /CHECK FOR SPECIAL TEXT CHARS
1180 001432  4535          SORTJ
1181 001433  6305            CMDCHR-1
1182 001434  7676            CMDJMP-CMDCHR
1183 001435  1102  GETCX4, TAD CHAR        /REG. CHAR COMES THRU HERE
1184 001436  4551          TSTALL  /TEST FOR LARGE ALPHABETICS
1185 001437  5267           JMP GETCX5+1   /NOT ALPHABETIC
1186 001440  1073          TAD UPONE       /CAPITALIZE ONE CHAR?
1187 001441  7640          SZA CLA
1188 001442  5266          JMP GETCX5      /YES, LET IT PASS
1189 001443  1072          TAD LOWONE      /LET A SINGLE CHAR GO LITTLE?
1190 001444  7640          SZA CLA
1191 001445  5262          JMP GETCLO      /YES, MAKE IT SMALL
1192 001446  1060          TAD MODE        /UPPER CASE MODE
1193 001447  7650          SNA CLA
1194 001450  5266          JMP GETCX5      /YES, LET CHAR PASS
1195 001451  1050          TAD CQCASE      /CAPITALIZE A WORD?
1196 001452  7650          SNA CLA
1197 001453  5266          JMP GETCX5      /YES, PASS CHAR THRU
1198 001454  1044          TAD SWCAP       /AUTOCAPITALIZE ON?
1199 001455  7640          SKIPYES
1200 001456  5262          JMP GETCLO      /NO, LET IT GO FOR SMALL CHAR
1201 001457  1064          TAD ECAPSW      /YES, DO WE CAPITALIZE THIS CHAR?
1202 001460  7640          SZA CLA
1203 001461  5266          JMP GETCX5      /YES
1204 001462  1102  GETCLO, TAD CHAR        /NO, CONVERT FROM UPPER TO LOWER
1205 001463  0173          AND [7737]
1206 001464  1377          TAD (40)
1207 001465  3102          DCA CHAR        /AND SAVE THE CHAR
1208 001466  3064  GETCX5, DCA ECAPSW      /TURN OFF CAP FIRST CHAR SWITCH
1209 001467  1047          TAD UNCASE      /UNDERLINE THE CHARACTER?
1210 001470  7640          SZA CLA
1211 001471  5276          JMP GETCXR      /NO, GO RETURN
1212 001472  1102          TAD CHAR
1213 001473  7104          CLL RAL         /SET 4000 BIT FOR UNDERLINING
1214 001474  7130          STL RAR
1215 001475  3102          DCA CHAR        /AND SAVE IT
1216               
1217 001476  3073  GETCXR, DCA UPONE       /CLEAR SINGLE CAP
1218 001477  3072  GETCX7, DCA LOWONE      /CLEAR SINGLE LOWER CASE
1219 001500  5600          JMP I GETCX     /RETURN TO CALLER
1220               
1221 001501  1776  GETUN,  TAD UNFLAG
1222 001502  7640          SKIPYES
1223 001503  5235          JMP GETCX4      /NO UNDERLINE FLAG AVAILABLE
1224 001504  3047          DCA UNCASE      /"&", UNDERLINE NEXT CHAR
1225 001505  5204          JMP GETCX2
1226               
1227 001506  1775  GETSP,  TAD SPFLAG
1228 001507  7640          SKIPYES
1229 001510  5235          JMP GETCX4      /NO FORCED SPACE FLAG
1230 001511  1174          TAD [" ]        /#, FORCE A SPACE TO PASS
1231 001512  5317          JMP GETCX9      /IT MIGHT BE UNDERLINE, TOO
1232               
1233 001513  1774  GETCHR, TAD QUFLAG
1234 001514  7640          SKIPYES
1235 001515  5235          JMP GETCX4      /NOT USING QUOTE FLAG
1236 001516  4530          GET             /"_", TAKE NEXT CHAR LITERALLY
1237 001517  1171  GETCX9, TAD [400]       /SET 400 TO PASS PROGRAM
1238 001520  3102          DCA CHAR
1239 001521  5266          JMP GETCX5      /IT MIGHT BE UNDERLINED
1240               
1241 001522  1773  GETCWD, TAD CQFLAG      /CAN WE USE THE CHAR AS FLAG?
1242 001523  7640          SKIPYES
1243 001524  5235          JMP GETCX4      /NO, RETURN AS NORMAL CHAR
1244 001525  1050          TAD CQCASE      /IF ALREADY ON, CLEAR IT
1245 001526  7040          CMA
1246 001527  3050          DCA CQCASE      /YES, SET CAP WORD FOR NEXT WORD
1247 001530  5202          JMP GETCX1      /GET NEXT CHAR
1248               
1249 001531  1772  GETCFL, TAD CFFLAG      /CAN WE USE THE CHAR AS FLAG?
1250 001532  7640          SKIPYES
1251 001533  5235          JMP GETCX4      /NO, USE AS REGULAR CHAR
1252 001534  7240          STA
1253 001535  3073          DCA UPONE       /YES, SET TO CAPITALIZE 1 CHAR
1254 001536  5202          JMP GETCX1      /GET ANOTHER CHAR
1255               
1256 001537  2125  GCFF,   INC INPAGE      /FORM FEED IS END OF PAGE, INC PAGE#
1257 001540  3124          DCA INLINE      /RESET LINE NO.
1258 001541  5204          JMP GETCX2
1259               
1260               GCLF,   
1261 001542  2124  GCVT,   INC INLINE      /END OF LINE, INCREMENT LINE NO.
1262 001543  3102          DCA CHAR
1263               
1264               GCCR,
1265               GCTAB,
1266 001544  7240  GCSP,   STA
1267 001545  3050          DCA CQCASE
1268 001546  1062          TAD CFMODE
1269 001547  7040          CMA             /MAKE IT NON-ZERO TO SET UPONE IF ON
1270 001550  3073          DCA UPONE       /CAPITALIZE ONE CHAR, MAYBE
1271 001551  1102          TAD CHAR
1272 001552  7450          SNA             /WAS IT AN EOL?
1273 001553  2072          ISZ LOWONE      /IF LOWONE IS SET IGNORE EOL (0) CHAR
1274 001554  1170          TAD [-215]
1275 001555  7650          SNA CLA         /WAS CHAR A CARRIAGE RETURN?
1276 001556  5202          JMP GETCX1      /YES, IGNORE IT
1277 001557  5277          JMP GETCX7      /NO, USE GOOD CHAR
1278                                       /IF LOWONE WAS NOT SET OR IT
1279                                       /WASN'T EOL THIS FIXES ALL UP
1280               
1281               / GET A CHAR FROM OS/8 INPUT FILE
1282               
1283 001560  0000  GETX,   0
1284 001561  7300          CLA CLL
1285 001562  1070          TAD FNFLAG      /PROCESSING A FOOTNOTE?
1286 001563  7640          SZA CLA
1287 001564  5771          JMP GETCFN      /YES, GET CHARS FROM FOOTNOTE BUFFER
1288 001565  6212          CIF 10
1289 001566  4770          JMS I (XXGET)   /GET A CHAR FROM I/O PACKAGE
1290 001567  5760  GETXRT, JMP I GETX      /'GETCFN' RETURNS HERE
1291               
1292 001570  3104  PAGE
     001571  3010  
     001572  6266  
     001573  6260  
     001574  6257  
     001575  6256  
     001576  6265  
     001577  0040  
1293               
1294               /SUBROUTINE TO SAVE A LIST OF ELEMENTS ON THE STACK
1295               /CALLING SEQUENCE:
1296               /               TAD (LISTEND
1297               /               SAVELIST
1298               /                 -LISTCNT
1299               
1300 001600  0000  SAVELX, 0
1301 001601  3101          DCA SAVPTR      /SAVE OUT POINTER HERE
1302 001602  1600          TAD I SAVELX    /GET THE COUNT
1303 001603  3077          DCA SAVECT
1304 001604  1501  SAVELP, TAD I SAVPTR    /GET AN ELEMENT
1305 001605  4556          PUSHA           /SAVE IT
1306 001606  7240          STA             /DECREMENT THE POINTER
1307 001607  1101          TAD SAVPTR
1308 001610  3101          DCA SAVPTR
1309 001611  2077          ISZ SAVECT      /CHECK COUNT
1310 001612  5204          JMP SAVELP      /DO MORE SAVING
1311 001613  2101          ISZ SAVPTR      /POINTER IS ONE PAST
1312 001614  1101          TAD SAVPTR      /SAVE IT TOO
1313 001615  4556          PUSHA
1314 001616  1600          TAD I SAVELX    /SAVE THE COUNT TOO
1315 001617  4556          PUSHA
1316 001620  2200          ISZ SAVELX      /PAST THE COUNT
1317 001621  5600          JMP I SAVELX    /AND RETURN
1318               
1319               /SUBROUTINE TO RESTORE THE LIST OF ELEMENTS FOUND ON TOP OF
1320               /THE STACK.
1321               /CALL WITH RESTORE
1322               /TOP IS COUNT
1323               /TOP +1 IS POINTER
1324               /TOP +2 TO TOP +N+2 ARE ELEMENTS
1325               
1326 001622  0000  RESTRX, 0
1327 001623  4557          POPA            /GET THE COUNT
1328 001624  3077          DCA SAVECT      /WE CAN USE HIS TEMPS
1329 001625  4557          POPA
1330 001626  3101          DCA SAVPTR
1331 001627  4557  RESTLP, POPA            /NOW GET AN ELEMENT
1332 001630  3501          DCA I SAVPTR
1333 001631  2101          ISZ SAVPTR      /INCREMENT THE POINTER
1334 001632  2077          ISZ SAVECT      /ARE WE DONE
1335 001633  5227          JMP RESTLP      /NO, RESTORE SOME MORE
1336 001634  5622          JMP I RESTRX    /YES, RETURN
1337               
1338               SAVPTR=PTR2
1339               SAVECT=CTR2
1340               
1341               / SUBROUTINE TO SKIP GARBAGE ON COMMAND LINE
1342               
1343 001635  0000  GARBJX, 0
1344 001636  4534          SPNOR           /IGNORE ANY LEADING SPACES
1345 001637  1102          TAD CHAR
1346 001640  4550          EOCQ            /END OF COMMAND LINE?
1347 001641  5635          JMP I GARBJX    /YES, RETURN
1348               
1349 001642  4553          ERROR           /NOPE
1350 001643  0712          TEXT \GJ\
     001644  0000  
1351                       *.-1
1352               
1353 001644  4532  GARBJ2, GETC            /GET CHARS
1354 001645  1102          TAD CHAR
1355 001646  4550          EOCQ            /MUST GO TO END OF COMMAND
1356 001647  5635          JMP I GARBJX
1357 001650  5244          JMP GARBJ2
1358               
1359               / SUBR TO DECREMENT POINTER AND LENGTH OF LINE
1360               
1361 001651  0000  SAVDEC, 0
1362 001652  7240          STA
1363 001653  1116          TAD OUTPTR
1364 001654  3116          DCA OUTPTR
1365 001655  7240          STA
1366 001656  1005          TAD CHRCNT
1367 001657  3005          DCA CHRCNT      /IT IS IN THE LINE WHATEVER IT IS
1368 001660  1516          TAD I OUTPTR    /CHECK FOR CONTROLS
1369 001661  4777          JMS CCCHK       /CHECK IF CONTROL
1370 001662  2115          INC LENOL       /WE TOOK OUT A BACKSPACE THE LINE IS LONGER
1371 001663  5651          JMP I SAVDEC    /CONTROL CHARS TAKE NO PHYSICAL SPACE
1372 001664  7240          STA
1373 001665  1115          TAD LENOL
1374 001666  3115          DCA LENOL
1375 001667  5651          JMP I SAVDEC
1376               
1377               / SUBROUTINE TO OUTPUT A BREAK
1378               / IF LINE IS ALL SPACES, DO NOT OUTPUT IT
1379               / OTHERWISE, PRINT THE LINE AND END IT
1380               /OLD BUG ... BREAK CALLS ITSELF IF FOOTNOTE IS TRIGGERED BY BREAK
1381               /FIX BY CALLING VIA PUSHJ
1382               
1383 001670  0000  BREAKX, 0
1384 001671  1270          TAD BREAKX      /SET UP TO RETRUN VIA POPJ
1385 001672  4556          PUSHA           /ROUTINE OCCASIONALLY CALLS ITSELF
1386 001673  4562          PUSHJ           /CHECK OUT THE LINES ON THE PAGE
1387 001674  4600            PRTHEAD       /WE NEED THIS BECAUSE FOOTER DOES NOT SET
1388                                       /UP THE LINES ON THE PAGE
1389 001675  1005  BREAK0, TAD CHRCNT
1390 001676  7450          SNA
1391 001677  5317          JMP BREAK2      /NOTHING IN LINE, RETURN
1392 001700  7041          CIA
1393 001701  3323          DCA BRKCNT      /SAVE THE NO. OF CHARS ON LINE
1394 001702  1376          TAD (LINE-1)
1395 001703  3013          DCA BRKXR       /GET READY TO LOOK AT LINE
1396 001704  1413  BREAK1, TAD I BRKXR     /GET A CHAR FROM BUFFER
1397 001705  1177          TAD [-" ]       /IS CHAR A SPACE?
1398 001706  7640          SZA CLA
1399 001707  5313          JMP .+4         /IS NOT A SPACE, GO PRINT LINE
1400 001710  2323          ISZ BRKCNT      /IS A SPACE, ALL CHARS CHECKED?
1401 001711  5304          JMP BREAK1      /NOPE
1402 001712  5317          JMP BREAK2      /RETURN IF LINE FULL OF SPACES
1403               
1404 001713  4562          PUSHJ           /NO, WE HAVE TO PRINT THE LINE
1405 001714  3400            PRINT
1406 001715  1056  BRKMOD, TAD LSPACE      /**IN RESPONSE TO AN SPR
1407 001716  4552          CRLF            /OUTPUT CR/LF, TOO
1408 001717  4775  BREAK2, JMS NLPARM      /SET UP NEW LINE PARMS
1409 001720  1374          TAD (SAVCL2+1)  /RESET OUTPUT COROUTINE
1410 001721  3773          DCA SAVECR
1411 001722  5564          POPJ            /RETURN WAS PUSHED BY BREAKX
1412               
1413 001723  0000  BRKCNT, 0
1414               
1415               /SUBROUTINE TO HANDLE COMMANDS AND FUNCTIONS NOT YET IMPLEMENTED
1416               
1417 001724  4554  NYIMPL, ERRORC          /TREAT IT AS COMMAND ERROR
1418 001725  1631          TEXT \NY\
     001726  0000  
1419                       *.-1
1420               
1421               / DISPATCH SUBROUTINE
1422               / ARG 1 IS CHARLIST - 1, ARG 2 IS JUMPLIST-CHARLIST
1423               / IF TARGET CHAR MATCHES CHAR IN CHAR LIST, THEN
1424               /   APPROPRIATE JUMP IS MADE
1425               / OTHERWISE RETURNS TO CALLER IF CHAR NOT IN LIST
1426               
1427 001726  0000  SORTJX, 0
1428 001727  3365          DCA SORTCC      /SAVE THE TARGET CHARACTER
1429 001730  3123          DCA SORTCN      /CLEAR CHAR NO.
1430 001731  1726          TAD I SORTJX    /GET CHARLIST-1
1431 001732  2326          INC SORTJX
1432 001733  3014          DCA SORTXR      /USE AUTO-XR
1433 001734  7410          SKP
1434 001735  2123  SORTJ1, INC SORTCN      /INCREMENT NO. OF CHAR IN LIST
1435 001736  1414          TAD I SORTXR    /GET CHAR FROM CHAR LIST
1436 001737  7450          SNA
1437 001740  5355          JMP SORTJ3      /ZERO ENDS THE LIST
1438 001741  7041          CIA
1439 001742  1365          TAD SORTCC      /EQUAL TO TARGET CHAR?
1440 001743  7640          SZA CLA
1441 001744  5335          JMP SORTJ1      /NO, CHECK NEXT CHAR IN LIST
1442 001745  1726  SORTJ2, TAD I SORTJX    /GET JLIST-CLIST
1443 001746  7450          SNA
1444 001747  5726          JMP I SORTJX    /IF 0, RETURN IMMEDIATELY
1445 001750  1014          TAD SORTXR      /MAKE PTR TO JUMPLIST
1446 001751  3326          DCA SORTJX
1447 001752  1726          TAD I SORTJX    /GET THE JUMP LOCATION
1448 001753  3326          DCA SORTJX
1449 001754  5726          JMP I SORTJX    /DISPATCH TO ROUTINE
1450               
1451 001755  1365  SORTJ3, TAD SORTCC      /WAS TARGET CHAR 0 ALSO?
1452 001756  7650          SNA CLA
1453 001757  5345          JMP SORTJ2      /YES, SO WE HAVE EQUALITY
1454 001760  1726          TAD I SORTJX    /GET CLIST-JLIST
1455 001761  2326          INC SORTJX      /PREPARE TO RETURN TO CALLER
1456 001762  7650          SNA CLA
1457 001763  2326          INC SORTJX      /IF 0, SKIP TO FAIL RETURN
1458 001764  5726          JMP I SORTJX    /RETURN TO CALLER
1459               
1460 001765  0000  SORTCC, 0
1461               
1462               / THE .BREAK COMMAND (ABBREVIATION .BR OR SIMPLY .)
1463               / SEND THE OUTPUT LINE TO OUTPUT FILE IF THERE IS SOMETHING IN IT
1464               
1465 001766  4547  BREAKC, BREAK
1466 001767  7240          STA
1467 001770  3772          DCA SVECAP      /CAPITALIZE LIKE A PERIOD ACCORDING TO DARRELL
1468 001771  5566          EOCGO
1469               
1470 001772  0276  PAGE
     001773  0651  
     001774  0654  
     001775  1135  
     001776  6373  
     001777  2157  
1471               
1472               / .FIGURE N     SKIP N LINES FOR A FIGURE ON THIS PAGE
1473               /               OR EJECT AND THEN SKIP N LINES
1474               / .FIGURE DEFERRED N    SAVE CTR FOR NEXT PAGE FOR FIGURE
1475               /               IF DOESN'T FIT, BUT CONTINUE WITH TEXT ON
1476               /               THIS PAGE
1477               
1478               
1479 002000  4540  FIGURE, WORDCK          /CHECK FOR "DEFERRED"
1480 002001  5266            FIGWD
1481 002002  5207           JMP FIGDEF     /YES, IS DEFERRED FIGURE
1482 002003  4542          NUMCHK          /GET A NUMBER IF THERE I ONE
1483 002004  5563          BADCMD          /NO, ILLEGAL COMMAND
1484 002005  7240          STA             /NOT DEFERRED FIGURE
1485 002006  5212          JMP FIGDF2      /NEVER USE A RELATIVE JUMP
1486               
1487 002007  3576  FIGDEF, DCA I [CMDLINE] /TO GET ANOTHER ARGUMENT
1488 002010  4542          NUMCHK          /GET A NUMBER IF THERE IS ONE
1489 002011  5777          JMP BADARG      /NO, BAD ARGUMENT
1490 002012  3076  FIGDF2, DCA CTR1        /USED AS TEMP FLAG
1491               
1492 002013  4547          BREAK
1493 002014  4562          PUSHJ           /IN CASE WE'RE AT BOTTOM OF PAGE
1494 002015  4600            PRTHEAD
1495 002016  1103          TAD NUMBER
1496 002017  7041          CIA
1497 002020  1120          TAD NLINES      /NO. OF LINES LEFT ON PAGE
1498 002021  7700          SMA CLA
1499 002022  5226          JMP .+4         /YES, GO SKIP PROPER NO. OF LINES
1500 002023  2076          ISZ CTR1        /NO, DEFER THE FIGURE?
1501 002024  5231          JMP .+5         /YES
1502 002025  4546          DOEJECT         /NO, MUST SKIP TO NEW PAGE
1503 002026  1103          TAD NUMBER
1504 002027  4552          CRLF            /THEN SAVE FIGURE
1505 002030  5234          JMP FIGDF3
1506               
1507 002031  1103          TAD NUMBER      /DEFER TO NEXT PAGE
1508 002032  1066          TAD DEFERN      /BY KEEPING UPDATED CTR
1509 002033  3066          DCA DEFERN
1510 002034  5566  FIGDF3, EOCGO           /I.E. GARBAGE; RETURN
1511               
1512               / .FLAG TYPE C  /SET TYPE FLAG TO CHARACTER C
1513               / .NOFLAG TYPE  /CLEAR TYPE FLAG
1514               
1515               
1516 002035  7240  NOFLGC, STA
1517 002036  3114          DCA NOFLG       /SET "NO" FLAG
1518 002037  4537  FLAGC,  COMCHK          /CHECK THEM OUT
1519 002040  5026            FLGWDS-1
1520 002041  0000            0
1521 002042  5245           JMP GOODFG     /IS A GOOD FLAG WORD
1522 002043  4554  ILLFC,  ERRORC          /ILLEGAL FLAG COMMAND
1523 002044  0607          TEXT \FG\
     002045  0000  
1524                       *.-1
1525               
1526 002045  7240  GOODFG, STA             /BACK UP FOR "ALL"
1527 002046  1123          TAD SORTCN      /WHICH TYPE?
1528 002047  3324          DCA FGNUM       /SAVE THE FLAG NUMBER
1529 002050  1324          TAD FGNUM       /AND GET IT BACK
1530 002051  7510          SPA             /WAS IT "ALL"
1531 002052  5300          JMP FLAGSC
1532 002053  1376          TAD (CMDFLAGS)
1533 002054  3100          DCA PTR1        /POINTS TO APPROPRIATE FLAG SWITCH
1534 002055  1114          TAD NOFLG
1535 002056  3500          DCA I PTR1      /SET OR CLEAR THE FLAG
1536 002057  1114          TAD NOFLG
1537 002060  7640          SKIPYES         /WAS IF .FLAG COMMAND?
1538 002061  5275          JMP FLAGC1      /NO, IT WAS .NOFLAG COMMAND
1539 002062  4534          SPNOR           /IGNORE SPACES AFTER THE TYPE
1540 002063  1102          TAD CHAR
1541 002064  4550          EOCQ
1542 002065  5565          RETURN          /IF NO CHARS ON LINE, RETURN
1543 002066  1324          TAD FGNUM       /WHICH TYPE?
1544 002067  1375          TAD (CMDCHR-2)
1545 002070  3100          DCA PTR1        /POINTS TO FLAG CHARACTER
1546 002071  1102          TAD CHAR
1547 002072  0172          AND [377]       /JUST WANT GOOD ASCII CHAR
1548 002073  3500          DCA I PTR1      /SAVE NEW FLAG CHARACTER
1549 002074  4532          GETC            /GET NEXT CHAR
1550 002075  3776  FLAGC1, DCA CTFLAG      /CONTROL FLAG ALWAYS ON
1551 002076  3774          DCA EFFLAG      /ENDFOOTNOTE FLAG ALWAYS ON, TOO
1552 002077  5566          EOCGO
1553               
1554               
1555               / .FLAGS ALL
1556               / .NOFLAGS ALL
1557               
1558 002100  7200  FLAGSC, CLA
1559 002101  1376          TAD (CMDFLAGS)  /SET UP POINTERS
1560 002102  3100          DCA PTR1
1561 002103  1373          TAD (FLGBKU)
1562 002104  3101          DCA PTR2
1563 002105  1372          TAD (CMDFLAGS-FLGEND)
1564 002106  3075          DCA COUNT
1565 002107  1114          TAD NOFLG       /RESTORE OR CLEAR?
1566 002110  7640          SKIPYES
1567 002111  5316          JMP SAVFLG      /SAVE AND CLEAR
1568 002112  1501          TAD I PTR2      /RESTORE THE FLAGS
1569 002113  3500          DCA I PTR1
1570 002114  4324          JMS FLGDN       /TEST IF FINISHED AND INC PTRS
1571 002115  5312          JMP .-3         /DO SOME MORE
1572               
1573 002116  1500  SAVFLG, TAD I PTR1      /SAVE AND CLEAR FLAGS
1574 002117  3501          DCA I PTR2
1575 002120  7240          STA             /7777 IS NO
1576 002121  3500          DCA I PTR1      /SET FLAG TO NO
1577 002122  4324          JMS FLGDN
1578 002123  5316          JMP .-5         /DO SOME MORE
1579               
1580               FGNUM,
1581 002124  0000  FLGDN,  0               /INCREMENT POINTERS AND TEST CTR
1582 002125  2100          INC PTR1
1583 002126  2101          INC PTR2
1584 002127  2075          ISZ COUNT
1585 002130  5724          JMP I FLGDN
1586 002131  5275          JMP FLAGC1      /CLEAN IT UP AND RETURN
1587               
1588               / .PERIOD       SET PERIOD SWITCH; SET LAST AUTOCAP SWITCH
1589               / .NOPERIOD     SET NOPERIOD SWITCH; SET NOAUTOCAPITALIZE, TOO
1590               
1591 002132  7240  NOPER,  STA
1592 002133  3114          DCA NOFLG
1593 002134  1114  PERIOD, TAD NOFLG
1594 002135  3045          DCA SWPER       /SET THE PERIOD SWITCH
1595 002136  1045          TAD SWPER       /IS IT .PERIOD?
1596 002137  7640          SKIPYES
1597 002140  5343          JMP .+3
1598 002141  1771          TAD CAPSW       /YES, SET LAST AUTOCAPITALIZATION
1599 002142  7410          SKP
1600 002143  7240          STA             /NO, SET "NO AUTOCAPITALIZE"
1601 002144  3044          DCA SWCAP       /SET AUTOCAPITALIZATION SWITCH
1602 002145  5566          EOCGO
1603               
1604               /UTILITY ROUTINE FOR POSITIVE NUMERIC ARGS
1605               
1606 002146  0000  NUMPOX, 0
1607 002147  4542          NUMCHK          /GET A NUMBER MAYBE
1608 002150  5746          JMP I NUMPOX    /NO NUMBER RETURN TO .+1
1609 002151  2346          ISZ NUMPOX      /A NUMBER, MAY BE GOOD
1610 002152  1103          TAD NUMBER      /CHECK IT OUT
1611 002153  7540          SMA SZA         /ONLY WANT POS DEF
1612 002154  5746          JMP I NUMPOX
1613 002155  4554          ERRORC
1614 002156  0216          TEXT \BN\       /IT IS A BAD NUMBER
     002157  0000  
1615                       *.-1
1616               
1617               
1618               /SUBROUTINE TO CHECK CONTROL CHARACTERS
1619               /ROUTINE SKIPS IF CHAR IS NOT A CONTROL AND RETURNS WITH ACC CLEAR
1620               
1621 002157  0000  CCCHK,  0
1622 002160  0172          AND [377        /DON'T CARE ABOUT QUOTE NOW
1623 002161  1177          TAD [-" ]
1624 002162  7500          SMA             /SKIP HERE IF CONTROL
1625 002163  2357          INC CCCHK       /SKIP THERE IF NOT A CONTROL
1626 002164  1370          TAD (30         /SPACE - BACKSPACE
1627 002165  7640          SZA CLA         /IS IT BACKSPACE?
1628 002166  2357          INC CCCHK       /NO, SKIP ONE
1629 002167  5757          JMP I CCCHK
1630               
1631 002170  0030  PAGE
     002171  6114  
     002172  7764  
     002173  6270  
     002174  6255  
     002175  6304  
     002176  6254  
     002177  2243  
1632               
1633               / .SKIP N
1634               / OUTPUT N * LINE SPACING BLANK LINES
1635               
1636               / .BLANK N
1637               / OUTPUT N BLANK LINES
1638               
1639               / IF N<0, THEN SKIP TO N LINES FROM BOTTOM OF PAGE
1640               
1641 002200  7240  SKIP,   STA             /SKIP COMMAND, 7777
1642 002201  3242  BLANK,  DCA SKPSW       /BLANK COMMAND, 0000
1643 002202  4542          NUMCHK          /GET A NUMBER IF THERE IS ONE
1644 002203  7410          SKP             /NO NUMBER
1645 002204  5207          JMP .+3         /GOT A GOOD NUMBER
1646 002205  7201          CLA IAC
1647 002206  3103          DCA NUMBER      /ASSUME 1 IF NOT
1648 002207  4547          BREAK
1649 002210  1103          TAD NUMBER      /IS THE ARGUMENT O.K. ?
1650 002211  7710          SPA CLA
1651 002212  5235          JMP SKIP3       /NEGATIVE, RELATIVE
1652 002213  2242          ISZ SKPSW       /SKIPPING OR BLANKING?
1653 002214  5223          JMP BLANK3      /BLANKING, GO GIVE CR/LF'S
1654 002215  1056          TAD LSPACE      /(-) CURRENT LINE SPACING
1655 002216  3075          DCA COUNT
1656 002217  1103          TAD NUMBER      /GET ACTUAL NO. OF LINES TO SKIP
1657 002220  2075          ISZ COUNT
1658 002221  5217          JMP .-2
1659 002222  3103          DCA NUMBER      /AND SAVE THE NO.
1660 002223  1103  BLANK3, TAD NUMBER      /GET THE NUMBER OF LINES TO SKIP
1661 002224  7550          SPA SNA
1662 002225  5243          JMP BADARG      /<= 0, IS ERROR
1663 002226  4552          CRLF            /SKIP THE LINES
1664 002227  1056          TAD LSPACE      /(-) CURRENT LINE SPACING
1665 002230  1056          TAD LSPACE      / MULTIPLY BY 2
1666 002231  1120          TAD NLINES      /CAN WE FIT ON THIS PAGE?
1667 002232  7710          SPA CLA
1668 002233  4546          DOEJECT         /NO, EJECT TO NEW PAGE
1669 002234  5241          JMP SKIP31      /RETURN
1670               
1671 002235  1103  SKIP3,  TAD NUMBER      /(-) FOR RELATIVE
1672 002236  1120          TAD NLINES      /SKIP TO N LINES FROM BOTTOM
1673 002237  7540          SMA SZA         /CAN WE DO IT ON THIS PAGE?
1674 002240  4552          CRLF            /YES, GO TO N LINES FROM BOTTOM
1675 002241  5566  SKIP31, EOCGO
1676               
1677 002242  0000  SKPSW,  0
1678               
1679 002243  4554  BADARG, ERRORC          /BAD ARGUMENT
1680 002244  0201          TEXT \BA\
     002245  0000  
1681                       *.-1
1682               
1683               / .PARAGRAPH
1684               / OPTIONAL 3 ARGUMENTS
1685               / INDENTION FOR PARAGRAPH, SPACING TO THE PARAGRAPH, AND
1686               / ".TEST PAGE" ARGUMENT
1687               
1688               
1689 002245  4542  PARAGRAPH,NUMCHK        /GET FIRST ARGUMENT
1690 002246  5252          JMP PARAG0      /NO FIRST ARG
1691 002247  4777          JMS INDEN3      /CHECK IT AGAINST MARGINS
1692 002250  1103          TAD NUMBER      /IT IS OK
1693 002251  3057          DCA PARAGN      /INDENTION FOR PARAGRAPH
1694 002252  3576  PARAG0, DCA I [CMDLINE]
1695 002253  4542          NUMCHK          /GET SECOND ARG
1696 002254  5263          JMP PARAG1      /NO SECOND ARG
1697 002255  1103          TAD NUMBER      /USE CONVERTED NO. AS
1698 002256  1376          TAD (-5)
1699 002257  7740          SMA SZA CLA     /IS ARG -, OR 1 TO 5?
1700 002260  5243          JMP BADARG      /NO, ILLEGAL ARGUMENT
1701 002261  1103          TAD NUMBER      /USE CONVERTED NO. AS
1702 002262  3026          DCA PARAGV      /SPACING TO THE PARAGRAPH
1703 002263  3576  PARAG1, DCA I [CMDLINE]
1704 002264  4542          NUMCHK          /GET THIRD ARG
1705 002265  5272          JMP PARAG4      /NO THIRD ARG
1706 002266  1103          TAD NUMBER      /YES
1707 002267  7510          SPA
1708 002270  5243          JMP BADARG      /IT WAS MINUS, TOO BAD!
1709 002271  3027          DCA PARAGP      /USE AS ".TEST PAGE" ARG
1710 002272  7240  PARAG4, STA
1711 002273  3103  PARAG,  DCA NUMBER      /MARK AUTO ENTRY
1712 002274  4547          BREAK           /PARAGRAPH ENTRY IF .AUTOPARAGRAPH SET
1713 002275  1127          TAD TXTFLG      /ARE WE AT TOP OF NEW PAGE?
1714 002276  7640          SKIPYES
1715 002277  5311          JMP PAAARG      /NO PARAGRAPH SPACING ON NEW PAGE
1716 002300  1026          TAD PARAGV
1717 002301  7450          SNA
1718 002302  5311          JMP PAAARG      /ZERO OR NO LINES
1719 002303  7500          SMA
1720 002304  5310          JMP PARAG2      /USER SUPPLIED VERTICAL SPACING
1721 002305  7240          STA             /-1 TO ACC
1722 002306  1056          TAD LSPACE      /(-)
1723 002307  7130          STL RAR         /USE (LINE SPACING + 1) / 2
1724 002310  4552  PARAG2, CRLF
1725 002311  1056  PAAARG, TAD LSPACE      /CAN PART OF PARAGRAPH FIT ON PAGE?
1726 002312  3075          DCA COUNT
1727 002313  1027          TAD PARAGP
1728 002314  2075          ISZ COUNT       /.TEST PAGE ARG * LINE SPACING
1729 002315  5313          JMP .-2
1730 002316  7450          SNA
1731 002317  5324          JMP PARAG3      /WE CAN FIT ON PAGE (NO SPECIAL TEST IF 0)
1732 002320  7041          CIA
1733 002321  1120          TAD NLINES
1734 002322  7710          SPA CLA         /CAN WE FIT?
1735 002323  4546          DOEJECT         /NO, MUST DO EJECT FIRST
1736 002324  1057  PARAG3, TAD PARAGN      /PARAGRAPH INDENTION FOR LMARG MODIFIER
1737 002325  4775          JMS NLPARM      /SET UP NEW LINE PARMS
1738 002326  7240          STA
1739 002327  3064          DCA ECAPSW      /CAPITALIZE NEXT CHAR
1740 002330  7240          STA
1741 002331  3774          DCA SVECAP      /NEED THIS FOR .PARAGRAPH
1742 002332  2103          ISZ NUMBER      /.PARA OR AUTO?
1743 002333  5773          JMP NLINE1      /MULTIPLE LEADING SPACES GET CAUGHT
1744 002334  5566          EOCGO           /RETURN IF .PARA
1745               
1746               / .TEST PAGE N
1747               / IF N LINES CAN FIT ON PAGE, O.K.
1748               / OTHERWISE, EJECT FIRST
1749               
1750 002335  4540  TESTPG, WORDCK
1751 002336  4655            TSTPGL
1752 002337  5341           JMP TSTPG
1753 002340  5563          BADCMD          /ILLEGAL COMMAND
1754               
1755 002341  4547  TSTPG,  BREAK           /PRINT THIS LINE
1756 002342  4543          NUMPOS          /GET A POSITIVE NUMBER
1757 002343  5243          JMP BADARG      /ILLEGAL NUMERIC ARG
1758 002344  7041          CIA
1759 002345  1120          TAD NLINES
1760 002346  7710          SPA CLA
1761 002347  4546          DOEJECT         /NO, MUST DO AN EJECT
1762 002350  5566          EOCGO
1763               
1764               /THE FOLLOWING CODE CHECKS FOR GARBAGE AT THE END OF MOST COMMANDS
1765               /IT ALSO IGNORES SPACES AND FINDS VALID EOL AND COMMAND CHARS
1766               
1767 002351  4532  EOCMOR, GETC            /WHAT IS NEXT CHAR?
1768 002352  1102  EOCGOX, TAD CHAR        /THIS IS THE ENTRY POINT VIA JMP
1769 002353  4535          SORTJ           /CHECK THEM ALL OUT
1770 002354  6216            EOCLST-1      /WE DON'T CHECK COMMA
1771 002355  4142            EOCJMP-EOCLST
1772               
1773 002356  4553          ERROR           /IF WE GET HERE IT IS GARBAGE
1774 002357  0503          TEXT \EC\       /END OF COMMAND ERROR
     002360  0000  
1775                       *.-1
1776 002360  5761          JMP I .+1       /TREAT IT LIKE A COMMENT
1777               
1778 002361  4134  EOCJMP, COMCOM          /! COMMENT ON COMMAND LINE
1779 002362  0213          NLINE           /; IS END OF LINE
1780 002363  0253          COMMAND         /. IS NEW COMMAND
1781 002364  2351          EOCMOR          / SPACE IS IGNORED
1782 002365  2351          EOCMOR          /TAB IS IGNORED
1783 002366  0213          NLINE           / 0 IS END OF LINE
1784               
1785 002373  0240  PAGE
     002374  0276  
     002375  1135  
     002376  7773  
     002377  5420  
1786               
1787               / .JUSTIFY      SET JUSTIFY MODE
1788               / .NOJUSTIFY    SET NO JUSTIFICATION MODE
1789               
1790 002400  7240  NOJUST, STA
1791 002401  3114          DCA NOFLG       /SET "NO" FLAG
1792 002402  1114  JUST,   TAD NOFLG
1793 002403  3054          DCA SWJUST      /SET JUSTIFY-NOJUSTIFY FLAG
1794 002404  1054          TAD SWJUST
1795 002405  3210          DCA JUSTFG      /SAVE THE FLAG, TOO
1796 002406  4547          BREAK
1797 002407  5243          JMP NUMC2       /IGNORE GARBAGE AND RETURN
1798               
1799 002410  0000  JUSTFG, 0
1800               
1801               / .FILL         SET FILL MODE; SET LAST JUSTIFY-NOJUSTIFY MODE
1802               / .NOFILL       SET NOFILL MODE; SET NOJUSTIFICATION MODE
1803               
1804 002411  7240  NOFILL, STA
1805 002412  3114          DCA NOFLG
1806 002413  1114  FILLC,  TAD NOFLG
1807 002414  3055          DCA SWFILL      /SET THE FILL-NOFILL FLAG
1808 002415  1055          TAD SWFILL      /IS IT FILL?
1809 002416  7640          SKIPYES
1810 002417  5222          JMP .+3
1811 002420  1210          TAD JUSTFG      /YES, SET LAST JUSTIFICATION
1812 002421  7410          SKP
1813 002422  7240          STA             /NO, SET NOJUSTIFY, TOO
1814 002423  3054          DCA SWJUST      /SET JUSTIFICATION SWITCH
1815 002424  4547          BREAK
1816 002425  5243          JMP NUMC2       /IGNORE GARBAGE AND RETURN
1817               
1818               / .NUMBER N
1819               / RENUMBER THE PAGE NO. TO N
1820               
1821               / .NONUMBER
1822               
1823               
1824 002426  7240  NONUM,  STA
1825 002427  3114          DCA NOFLG       /SET THE "NO" FLAG
1826 002430  1114  NUMCMD, TAD NOFLG
1827 002431  3046          DCA SWPNUM      /SET THE PAGE NO. FLAG
1828 002432  1046          TAD SWPNUM
1829 002433  7640          SKIPYES
1830 002434  5243          JMP NUMC2       /IF .NONUMBER, GO RETURN
1831 002435  4543          NUMPOS          /GET A POSITIVE NON ZERO NUMBER
1832 002436  5243          JMP NUMC2       /NO NUMBER JUST GO
1833 002437  7200          CLA             /WE DON'T WANT IT YET
1834               
1835 002440  1121  NUMC1,  TAD PAGENO
1836 002441  4544          RELQ
1837 002442  3121          DCA PAGENO      /RESET PAGE NUMBER
1838 002443  5566  NUMC2,  EOCGO
1839               
1840               / .CHAPTER CHAPTER NAME
1841               / TAKE REST OF COMMAND LINE AS NEW CHAPTER NAME
1842               
1843               / .SUBTITLE THIS IS A SUBTITLE
1844               / TAKE REST OF COMMAND AS NEW SUBTITLE
1845               
1846               / .TITLE THIS IS A TITLE
1847               / TAKE REST OF COMMAND LINE AS NEW TITLE
1848               
1849               
1850 002444  1377  CHAPTER,TAD (CHBUFF-1)  /INITIALIZE PTR, CTR FOR CHAPTER
1851 002445  3012          DCA AUTOX3
1852 002446  1376          TAD (-CHLENGTH)
1853 002447  5265          JMP TITLE1
1854               
1855 002450  1375  SBTTLC, TAD (SBTTLB-1)  /INIT PTR FOR SUBTITLE
1856 002451  7410          SKP             /COUNT IS SAME AS TITLE
1857               
1858 002452  1374  EVEN,   TAD (EVBUFF-1)  /INIT FOR EVEN PAGE STUFF
1859 002453  7410          SKP             /DITTO ABOVE
1860               
1861 002454  1373  ODD,    TAD (ODBUFF-1)  /NOW OFR ODD PAGES
1862 002455  5263          JMP TITLDO      /DITTO
1863               
1864 002456  1114  TITLEC, TAD NOFLG       /IS IT .NOTITLE
1865 002457  7640          SKIPYES
1866 002460  5315          JMP NOTITL      /TURN OFF TITLE AND SUBTITLE SPACING
1867 002461  3065          DCA TITFLG      /ON A REAL TITLE TURN IT ON
1868 002462  1372          TAD (TITLEB-1)  /INITIALIZE PTR, CTR FOR TITLE
1869 002463  3012  TITLDO, DCA AUTOX3
1870 002464  1371          TAD (-TLENGTH)
1871 002465  3075  TITLE1, DCA COUNT       /SAVE THE COUNT
1872 002466  1102          TAD CHAR
1873 002467  4550          EOCQ            /END OF COMMAND AFTER THE COMMAND?
1874 002470  5275           JMP TITL51     /YES, EMPTY BUFFER
1875 002471  4534          SPNOR           /IGNORE LEADING SPACES
1876 002472  7410          SKP
1877               
1878 002473  4532  TITLE2, GETC            /GET A CHAR FROM INPUT FILE
1879 002474  1102          TAD CHAR        /CHECK IT OUT
1880 002475  6211  TITL51, CDF 10          /BUFFERS IN FLD 1
1881 002476  7450          SNA
1882 002477  5312          JMP TITLE5      /END OF TITLE OR SUBTITLE
1883 002500  3412          DCA I AUTOX3    /SAVE IN BUFFER
1884 002501  6201          CDF 0           /BACK TO HERE
1885 002502  2075          ISZ COUNT       /BUFFER FULL?
1886 002503  5273          JMP TITLE2
1887 002504  4553          ERROR           /YES, TITLE BUFFER FULL
1888 002505  1014          TEXT \HL\
     002506  0000  
1889                       *.-1
1890 002506  4532  TITLE4, GETC            /NOW GO TO END OF COMMAND
1891 002507  1102          TAD CHAR
1892 002510  7640          SZA CLA
1893 002511  5306          JMP TITLE4
1894 002512  3412  TITLE5, DCA I AUTOX3    /ZERO TO END THE TITLE OR SUBTITLE
1895 002513  6201          CDF 0           /BACK TO FLD 0
1896 002514  5565          RETURN          /THEN RETURN
1897               
1898 002515  7240  NOTITL, STA             /TURN OF TITLE STUFF
1899 002516  3065          DCA TITFLG
1900 002517  5243          JMP NUMC2       /A GOOD WAY TO GO HOME
1901               
1902               / .PAGING
1903               / .NOPAGING
1904               
1905 002520  7240  NOPAGE, STA
1906 002521  3114          DCA NOFLG
1907 002522  1114  PAGING, TAD NOFLG
1908 002523  3041          DCA SWPAGE
1909 002524  5243          JMP NUMC2       /IGNORE GARBAGE AND RETURN
1910               
1911               / .SUBPAGE
1912               / .END SUBPAGE (.ES)
1913               
1914 002525  1370  SUBPG,  TAD ("A)        /INITIALIZE SUBPAGE LETTER
1915 002526  3021          DCA SUBPGN
1916 002527  7410          SKP
1917 002530  7240  ESUBPG, STA
1918 002531  3042          DCA SWSBPG
1919 002532  5243          JMP NUMC2       /IGNORE GARBAGE AND RETURN
1920               
1921               / SUBROUTINE TO SAVE A CHAR IN OUTPUT LINE BUFFER
1922               / IF LINE BUFFER OVERFLOWS, RETURN .+2
1923               / OTHERWISE, RETURN NORMALLY .+1
1924               
1925 002533  0000  OSAVEX, 0
1926 002534  3516          DCA I OUTPTR    /SAVE CHAR IN OUTPUT LINE BUFFER
1927 002535  1516          TAD I OUTPTR    /GET IT BACK NOW
1928 002536  2116          INC OUTPTR      /INCREMENT PTR
1929 002537  4767          JMS CCCHK       /CHECK IF CONTROL
1930 002540  5355          JMP OSAVBS      /BACKSPACE IS A LITTLE HARDER
1931 002541  5347          JMP OSAVCC      /YES SPECIAL DOINGS
1932 002542  2112          INC CURCOL      /INCREMENT CURRENT ABSOLUTE COLUMN
1933 002543  2115          INC LENOL       /LENGTH OF OUTPUT LINE
1934 002544  2117          ISZ OUTCTR      /ANY MORE CHAR POSITIONS LEFT?
1935 002545  7410          SKP
1936 002546  2333          INC OSAVEX      /NO, RETURN .+2
1937 002547  2005  OSAVCC, INC CHRCNT      /ALL CHARS ARE COUNTED HERE
1938 002550  2354          ISZ PLCNT       /CHECK THE BUFFER COUNT
1939 002551  5733          JMP I OSAVEX    /NORMAL RETURN .+1
1940               
1941 002552  4555          ERRORF
1942 002553  1514          TEXT \ML\
     002554  0000  
1943                       *.-1
1944               
1945 002554  7574  PLCNT,  -MAXWIDTH       /THE NUMBER OF POSITIONS IN THE BUFFER
1946               
1947 002555  7240  OSAVBS, STA             /BACKSPACE MAKES THE LINE SHORTER
1948 002556  1115          TAD LENOL
1949 002557  3115          DCA LENOL
1950 002560  7240          STA             /ONE LESS CHARACTER TO FILL IT TOO
1951 002561  1117          TAD OUTCTR
1952 002562  3117          DCA OUTCTR
1953 002563  5347          JMP OSAVCC      /OTHERWISE IT IS A CONTROL
1954 002567  2157  PAGE
     002570  0301  
     002571  7700  
     002572  5423  
     002573  5646  
     002574  5545  
     002575  5322  
     002576  7760  
     002577  5524  
1955               
1956               / .LEFT N
1957               / .RIGHT N
1958               / LEFT ADJUST OR RIGHT ADJUST THE LINE
1959               / IF N APPEARS, MODIFY THE MARGIN
1960               
1961               / .LEFT MARGIN N
1962               / .RIGHT MARGIN N
1963               / CHANGE THE LEFT OR RIGHT MARGIN TO N
1964               
1965               
1966 002600  7240  LEFT,   STA             /SET "LEFT"
1967 002601  3354  RIGHT,  DCA LRFLAG      /SET "RIGHT"
1968 002602  4540          WORDCK          /SEE WHAT WE GOT
1969 002603  4574            MARGWD
1970 002604  5236           JMP MARGS
1971 002605  4547          BREAK
1972 002606  4541          GETNUM
1973 002607  4777          JMS GLINE       /GET THE LINE TO BE ADJUSTED
1974 002610  2354          ISZ LRFLAG      /LEFT OR RIGHT ADJUST
1975 002611  5223          JMP RADJ        /RIGHT ADJUST THE LINE
1976 002612  1052          TAD LMARG
1977 002613  4544          RELQ            /GET NEW LEFT MARGIN
1978 002614  4322          JMS LMCHK       /DON'T LET IT GET AWAY
1979 002615  3051  LADJ1,  DCA ALMARG      /FIX UP FOR ADJUSTING LINE
1980 002616  4562          PUSHJ           /PRINT THE LINE
1981 002617  3400            PRINT
1982 002620  1056          TAD LSPACE
1983 002621  4552          CRLF
1984 002622  5566          EOCGO
1985               
1986 002623  1053  RADJ,   TAD RMARG       /GET THE NEW MARGIN
1987 002624  4544          RELQ
1988 002625  3103          DCA NUMBER      /SAVE IT TEMPORARILY
1989 002626  4333          JMS RMCHK       /KEEP CONTROL OF IT
1990 002627  7240          STA
1991 002630  1115          TAD LENOL
1992 002631  7041          CIA
1993 002632  1103          TAD NUMBER      /NEW RMARG-LENOL+1
1994 002633  5215          JMP LADJ1       /FIX UP FOR RIGHT ADJUSTMENT
1995               
1996 002634  7240  LMARGC, STA             /.LM, SET LEFT MARGIN
1997 002635  3354  RMARGC, DCA LRFLAG      /.RM, SET RIGHT MARGIN
1998 002636  3576  MARGS,  DCA I [CMDLINE] /SO WE CAN GET A NUMERIC ARG
1999 002637  4541          GETNUM          /GET NEW MARGIN SETTING
2000 002640  2354          ISZ LRFLAG      /LEFT OR RIGHT?
2001 002641  5257          JMP RMARGS
2002 002642  1052          TAD LMARG       /LEFT MARGIN RESET
2003 002643  4544          RELQ
2004 002644  4322          JMS LMCHK       /CHECK NEGATIVE LEFT MARGIN
2005 002645  3103          DCA NUMBER      /SAVE TEMPORARILY
2006 002646  1103          TAD NUMBER
2007 002647  7041          CIA
2008 002650  1053          TAD RMARG
2009 002651  7750          SPA SNA CLA     /LEFT MARGIN >= RIGHT MARGIN?
2010 002652  5270          JMP MARGE       /YES, GIVE ERROR
2011 002653  1103          TAD NUMBER
2012 002654  3052          DCA LMARG       /SAVE GOOD LEFT MARGIN
2013 002655  4547  MARGS2, BREAK           /NEW MARGINS ARE SET UP
2014 002656  5566  MARGGR, EOCGO
2015               
2016 002657  1053  RMARGS, TAD RMARG       /RIGHT MARGIN RESET
2017 002660  4544          RELQ
2018 002661  3103          DCA NUMBER      /SAVE A WHILE
2019 002662  4333          JMS RMCHK       /CHECK AGAINST PWIDTH
2020 002663  1103          TAD NUMBER      /CHECK IT NOW
2021 002664  7041          CIA
2022 002665  1052          TAD LMARG
2023 002666  7750          SPA SNA CLA             /RIGHT MARGIN <= LEFT MARGIN?
2024 002667  5272          JMP .+3         /NO, GO SAVE IT
2025 002670  4554  MARGE,  ERRORC          /ILLEGAL MARGIN SETTING
2026 002671  0215          TEXT \BM\
     002672  0000  
2027                       *.-1
2028 002672  1103          TAD NUMBER      /GET GOOD RIGHT MARGIN
2029 002673  3053          DCA RMARG       /AND SAVE IT
2030 002674  5255          JMP MARGS2
2031               
2032               
2033               / .MARGINS N,M
2034               / SET LEFT MARGIN TO N, SET RIGHT MARGIN TO M
2035               
2036               
2037 002675  4541  MARGNS, GETNUM          /GET NO. FOR LEFT MARGIN
2038 002676  1052          TAD LMARG
2039 002677  4544          RELQ
2040 002700  4322          JMS LMCHK
2041 002701  3354          DCA LRFLAG      /SAVE IT TEMPORARILY
2042 002702  3576          DCA I [CMDLINE] /TO GET ANOTHER NUMERIC ARG
2043 002703  4541          GETNUM          /GET NUMBER FOR RIGHT MARGIN
2044 002704  1053          TAD RMARG
2045 002705  4544          RELQ
2046 002706  3103          DCA NUMBER      /SAVE RIGHT MARGIN TEMPORARILY
2047 002707  4333          JMS RMCHK
2048 002710  1103          TAD NUMBER
2049 002711  7041          CIA
2050 002712  1354          TAD LRFLAG
2051 002713  7700          SMA CLA
2052 002714  5270          JMP MARGE       /LEFT MARGIN > RIGHT MARGIN, ERROR
2053 002715  1354          TAD LRFLAG      /GOOD MARGINS
2054 002716  3052          DCA LMARG       /SAVE LEFT MARGIN
2055 002717  1103          TAD NUMBER
2056 002720  3053          DCA RMARG       /SAVE RIGHT MARGIN
2057 002721  5255          JMP MARGS2      /GO SET UP MARGINS AND RETURN
2058               
2059 002722  0000  LMCHK,  0
2060 002723  7540          SMA SZA
2061 002724  5722          JMP I LMCHK
2062 002725  7200          CLA
2063 002726  4553          ERROR
2064 002727  1415          TEXT \LM\
     002730  0000  
2065 002731  7201          CLA IAC         /MAKE IT 1
2066 002732  5722          JMP I LMCHK
2067               
2068 002733  0000  RMCHK,  0
2069 002734  1022          TAD PWIDTH
2070 002735  7041          CIA
2071 002736  1103          TAD NUMBER      /RIGHT MARGIN LEFT HERE
2072 002737  7750          SPA SNA CLA
2073 002740  5733          JMP I RMCHK
2074 002741  4553          ERROR
2075 002742  2215          TEXT \RM\
     002743  0000  
2076 002744  1022          TAD PWIDTH
2077 002745  3103          DCA NUMBER      /USE PWIDTH
2078 002746  5733          JMP I RMCHK
2079               
2080               / .AUTOPARAGRAPH
2081               / .NOAUTOPARAGRAPH
2082               
2083 002747  7240  NAUTOP, STA
2084 002750  3114          DCA NOFLG
2085 002751  1114  AUTOP,  TAD NOFLG
2086 002752  3037          DCA SWPARA
2087 002753  5256          JMP MARGGR      /IGNORE GARBAGE AND RETURN
2088               
2089               
2090               / SUBROUTINE TO RESTORE THE LINE BUFFER
2091               
2092               LRFLAG,                 /WATCH THIS IF MOVED THIS GOES WITH ABOVE CODE
2093 002754  0000  HREST,  0
2094 002755  4561          RESTORE         /RESTORE THE MARGS
2095 002756  4562          PUSHJ           /SET UP NEW LINE PARMS
2096 002757  1142            NPARMS        /"ALMARG" ALREADY SETUP, THOUGH
2097 002760  4557          POPA
2098 002761  7450          SNA
2099 002762  5374          JMP HREST6      /NOTHING TO RESTORE ON LINE
2100 002763  4557          POPA            /GET THE COUNT
2101 002764  3776          DCA HSAVCT      /RESTORE CTR
2102 002765  4557          POPA            /DON'T NEED THE POINTER
2103 002766  4557  HREST4, POPA
2104 002767  4533          OSAVE           /SAVE CHAR CORRECTLY IN BUFFER
2105 002770  7410          SKP             /IN CASE THIS FILLS ???
2106 002771  5374          JMP HREST6      /JUST RETURN
2107 002772  2776          ISZ HSAVCT      /ALL CHARS MOVE?
2108 002773  5366          JMP HREST4      /NO
2109 002774  5754  HREST6, JMP I HREST     /RETURN TO CALLER
2110               
2111 002776  4543  PAGE
     002777  3735  
2112               
2113               / A FOOTNOTE IS TO BE AT THE BOTTOM OF CURRENT PAGE
2114               / DO THE FOOTNOTE PRE-PROCESSING
2115               
2116               
2117 003000  1377  DOFNOTE, TAD (FNDFLE-1  /SAVE STUFF ACROSS FOOTNOTE
2118 003001  4560          SAVELIST
2119 003002  7765            FNDFLT-FNDFLE
2120 003003  7240          STA             /WE ARE CURRENTLY PROCESSING
2121 003004  3070          DCA FNFLAG      / INSIDE A FOOTNOTE
2122 003005  1361          TAD FNSTRT      /INITIALIZE AUTOXR FOR FETCH
2123 003006  3016          DCA FNXR        /FROM FOOTNOTE BUFFER
2124 003007  5776          JMP FIXRET      /FIX UP PARAMETERS AND RETURN TO PROCESS IT
2125               
2126               / CONTINUATION OF "GETCX" ROUTINE
2127               / GET CHARACTERS FROM FOOTNOTE BUFFER
2128               
2129               
2130 003010  1016  GETCFN, TAD FNXR        /AT END OF FOOTNOTE BUFFER?
2131 003011  1362          TAD FNLAST
2132 003012  7640          SZA CLA
2133 003013  5216          JMP GETCF1      /NO, MORE CHECKING TO DO
2134               
2135 003014  4555          ERRORF          /FATAL ERROR
2136 003015  0630          TEXT \FX\               /FOOTNOTE BUFFER EXHAUSTED
     003016  0000  
2137                       *.-1
2138               
2139 003016  1016  GETCF1, TAD FNXR        /END OF FOOTNOTE BUFFER?
2140 003017  7040          CMA             /FNPTR IS 1 MORE THAN LAST CHAR
2141 003020  1020          TAD FNPTR       /LAST LOC USED IN BUFFER + 1
2142 003021  7650          SNA CLA
2143 003022  5236          JMP GETCF2      /YES, PREPARE TO EXIT FOOTNOTE PROCESSING
2144 003023  1113          TAD FNPTR2      /NO
2145 003024  7450          SNA
2146 003025  5232          JMP GETCFR      /NO FOOTNOTES ON NEXT PAGE
2147 003026  7041          CIA
2148 003027  1016          TAD FNXR        /AT START OF NEXT PAGE FOOTNOTE?
2149 003030  7650          SNA CLA
2150 003031  5242          JMP GETCF3      /YES, RESET FOR REGULAR PROCESSING
2151 003032  4363  GETCFR, JMS FNTFLD      /FOOTNOTE BUFFER IN FIELD 1
2152 003033  1416          TAD I FNXR      /NO, GET CURRENT CHAR FROM FOOTNOTE BUFFER
2153 003034  6201          CDF 00
2154 003035  5775          JMP GETXRT      /GO BACK TO "GETX"
2155               
2156 003036  7201  GETCF2, CLA IAC         /RESET FOOTNOTE BUFFER POINTER
2157 003037  1361          TAD FNSTRT      /THIS IS FNBUFF-1
2158 003040  3020          DCA FNPTR       / TO BEGINNING OF THE BUFFER
2159 003041  5256          JMP EXFNOTE     /EXIT FROM FOOTNOTE PROCESSING
2160               
2161 003042  1361  GETCF3, TAD FNSTRT      /END OF FOOTNOTE, THIS PAGE
2162 003043  3016          DCA FNXR        /MOVE BUFFER OF NEXT PAGE DOWN
2163 003044  4363          JMS FNTFLD      /FOOTNOTE BUFFER IN FIELD 1
2164 003045  1513  GETCF4, TAD I FNPTR2
2165 003046  2113          INC FNPTR2
2166 003047  3416          DCA I FNXR      /SAVE CHAR AS WE MOVE
2167 003050  1113          TAD FNPTR2      /ARE WE AT END OF BUFFER
2168 003051  7041          CIA
2169 003052  1020          TAD FNPTR
2170 003053  7640          SZA CLA
2171 003054  5245          JMP GETCF4      /NO, CONTINUE TO MOVE
2172 003055  6201          CDF 00          /YES
2173               
2174 003056  4547  EXFNOTE,BREAK           /OUTPUT LAST LINE OF FOOTNOTE
2175 003057  3070          DCA FNFLAG      /NO LONGER PROCESSING A FOOTNOTE
2176 003060  4561          RESTORE
2177 003061  5774          JMP CRLFX3      /RETURN TO FINISH FOOTER
2178               
2179               / THERE CAN BE FOOTNOTES IN THIS DUMB PROGRAM!!
2180               / .FOOTNOTE N   SAVE N LINES ON PAGE FOR FOOTNOTE
2181               
2182               
2183 003062  1070  FNOTE,  TAD FNFLAG      /ARE WE PROCESSING A FOOTNOTE?
2184 003063  7650          SNA CLA
2185 003064  5267          JMP .+3         /NO, PROCESS IT
2186               
2187 003065  4555          ERRORF          /YES, FATAL ERROR
2188 003066  0606          TEXT \FF\               /FOOTNOTE IN FOOTNOTE
     003067  0000  
2189                       *.-1
2190               
2191 003067  4541          GETNUM          /GET NO. OF LINES TO RESERVE
2192 003070  4536          GARBAGE         /IGNORE OTHER GARBAGE
2193 003071  1056          TAD LSPACE      /NO, GET LINE SPACING (-)
2194 003072  3075          DCA COUNT
2195 003073  1103          TAD NUMBER      /RESERVE N * LINE SPACING
2196 003074  7750          SPA SNA CLA
2197 003075  5773          JMP BADARG      /BAD FOOTNOTE ARGUMENT
2198 003076  1103          TAD NUMBER
2199 003077  2075          ISZ COUNT
2200 003100  5276          JMP .-2
2201 003101  3075          DCA COUNT       /TOTAL NO. OF LINES
2202 003102  1075          TAD COUNT
2203 003103  7041          CIA
2204 003104  1120          TAD NLINES
2205 003105  7550          SPA SNA         /CAN FOOTNOTE FIT ON THIS PAGE?
2206 003106  5350          JMP FNOTE8      /NOPE
2207 003107  3120          DCA NLINES      /YES, NEW LINE COUNTER IS UPDATED
2208 003110  1075          TAD COUNT
2209 003111  1071          TAD FNLINE      /NO. OF LINES OF FOOTNOTE ON PAGE
2210 003112  3071          DCA FNLINE      /UPDATE THE COUNTER
2211               
2212 003113  4530  FNOTE1, GET
2213 003114  3102          DCA CHAR        /GET CHAR FROM OS/8 INPUT
2214 003115  1102          TAD CHAR
2215 003116  7041          CIA
2216 003117  1772          TAD EFCHAR
2217 003120  7640          SZA CLA         /IS IT END OF FOOTNOTE?
2218 003121  5325          JMP FNOTE5      /NO, SAVE THIS LINE
2219 003122  5771          JMP CMDCOM      /REMAINDER OF LINE IS A COMMENT
2220               
2221 003123  4530  FNOTE4, GET             /GET NEXT CHAR ON LINE
2222 003124  3102          DCA CHAR
2223 003125  1102  FNOTE5, TAD CHAR        /CURRENT CHAR
2224 003126  4363          JMS FNTFLD      /FOOTNOTE BUFFER IN FIELD 1
2225 003127  3420          DCA I FNPTR     /SAVE CHAR IN FOOTNOTE BUFFER
2226 003130  6201          CDF 00
2227 003131  2020          INC FNPTR
2228 003132  1020          TAD FNPTR       /AT END OF BUFFER?
2229 003133  1362          TAD FNLAST
2230 003134  7650          SNA CLA
2231 003135  5346          JMP FNOTE6      /YES, ERROR MESSAGE
2232 003136  1102          TAD CHAR        /NOPE
2233 003137  1170          TAD [-215]      /IS IT LINE TERMINATOR?
2234 003140  7540          SMA SZA
2235 003141  5323          JMP FNOTE4      /NO, GET NEXT CHAR
2236 003142  1370          TAD (215-212)
2237 003143  7710          SPA CLA
2238 003144  5323          JMP FNOTE4      /NO, GET MORE CHARS ON LINE
2239 003145  5313          JMP FNOTE1      /YES, GET ANOTHER LINE
2240               
2241 003146  4555  FNOTE6, ERRORF          /FATAL ERROR TO RUN OUT OF ROOM
2242 003147  0617          TEXT \FO\
     003150  0000  
2243                       *.-1
2244               
2245 003150  7200  FNOTE8, CLA
2246 003151  1067          TAD FNCTR       /FOOTNOTE ALREADY ON OTHER PAGE?
2247 003152  7440          SZA
2248 003153  5356          JMP .+3         /YES, ADD TO CURRENT CTR
2249 003154  1020          TAD FNPTR       /NO FOOTNOTE ON NEW PAGE
2250 003155  3113          DCA FNPTR2      /SAVE PTR FOR OTHER PAGE
2251 003156  1075          TAD COUNT       /SAVE THESE LINES
2252 003157  3067          DCA FNCTR       /FOR CORRECT COUNT ON OTHER PAGE
2253 003160  5313          JMP FNOTE1      /GO GET THE FOOTNOTE
2254               
2255 003161  7777  FNSTRT, FNBUFF-1        /THIS COULD BE CHANGED BY INIT CODE
2256 003162  6001  FNLAST, -FNBEND         /THIS CAN CHANGE ALSO
2257 003163  0000  FNTFLD, 0
2258 003164  6211          CDF 10          /WE CAN CHANGE THE FIELD TOO
2259 003165  5763          JMP I FNTFLD
2260               
2261 003170  0003  PAGE
     003171  4133  
     003172  6305  
     003173  2243  
     003174  3354  
     003175  1567  
     003176  5346  
     003177  0064  
2262               
2263               / GET A NUMBER FOR A COMMAND
2264               / NUMERIC CHARS ARE IN COMMAND LINE
2265               
2266 003200  0000  GETNMX, 0
2267 003201  1576          TAD I [CMDLINE] /ANY CHARS IN CMD LINE?
2268 003202  7650          SNA CLA
2269 003203  4777          JMS GETARG      /NO, GO GET AN ARGUMENT
2270 003204  1176          TAD [CMDLINE]   /YES, SET UP PTR & HALF SWITCH
2271 003205  3313          DCA NUMPTR
2272 003206  3312          DCA NUMHLF
2273 003207  3104          DCA SIGN        /ASSUME +
2274 003210  3105          DCA CVRTQ       /NO CONVERSION YET
2275 003211  3106          DCA RELFLG      /NO RELATIVE
2276 003212  3103          DCA NUMBER      /CLEAR NUMBER
2277 003213  4270          JMS NUMGET      /GET A CHAR
2278 003214  3266          DCA GETNCH      /AND SAVE IT
2279 003215  1266          TAD GETNCH
2280 003216  1376          TAD (-"+)
2281 003217  7450          SNA
2282 003220  5225          JMP GETN3       /"+"; SIGN IS + , SET RELATIVE
2283 003221  1375          TAD ("+-"-)
2284 003222  7640          SZA CLA
2285 003223  5231          JMP GETN4
2286 003224  7240          STA             /"-", SIGN IS -, SET RELATIVE
2287 003225  3104  GETN3,  DCA SIGN        /SET SIGN
2288 003226  7240          STA
2289 003227  3106          DCA RELFLG      /SET RELATIVE FLAG, TOO
2290 003230  5233          JMP GETN6
2291 003231  1266  GETN4,  TAD GETNCH      /NOT SIGN, GET CHAR AND CHECK FOR NUM
2292 003232  7410          SKP
2293 003233  4270  GETN6,  JMS NUMGET      /GET ANOTHER CHAR
2294 003234  1374          TAD (-"9)
2295 003235  7540          SMA SZA
2296 003236  5254          JMP GETN7       /NOT A DIGIT
2297 003237  1373          TAD ("9-"0)
2298 003240  7510          SPA
2299 003241  5254          JMP GETN7       /DITTO
2300 003242  3267          DCA GETDIG      /SAVE GOOD DECIMAL DIGIT
2301 003243  1103          TAD NUMBER
2302 003244  7106          CLL RTL
2303 003245  1103          TAD NUMBER
2304 003246  7104          CLL RAL         /MULTIPLY BY 10(10)
2305 003247  1267          TAD GETDIG      /ADD IN NEW DIGIT
2306 003250  3103          DCA NUMBER      /UPDATE THE NUMBER
2307 003251  7240          STA
2308 003252  3105          DCA CVRTQ       /CONVERSION HAS TAKEN PLACE
2309 003253  5233          JMP GETN6
2310               
2311 003254  7300  GETN7,  CLA CLL         /END OF NUMBER
2312 003255  1105          TAD CVRTQ       /DID CONVERSION TAKE PLACE?
2313 003256  7640          SZA CLA
2314 003257  1104          TAD SIGN        /YES, WAS SIGN (-) ?
2315 003260  7650          SNA CLA
2316 003261  5600          JMP I GETNMX    /NO, JUST RETURN
2317 003262  1103          TAD NUMBER      /YES, NEGATE THE NUMBER
2318 003263  7041          CIA
2319 003264  3103          DCA NUMBER
2320 003265  5600          JMP I GETNMX
2321               
2322 003266  0000  GETNCH, 0
2323 003267  0000  GETDIG, 0
2324               
2325               / GET A CHARACTER FROM COMMAND LINE FOR "GETNUM"
2326               
2327 003270  0000  NUMGET, 0
2328 003271  1713          TAD I NUMPTR    /YES, GET 2 CHARS
2329 003272  2312          ISZ NUMHLF      /WHICH HALF TO USE?
2330 003273  5302          JMP NUML
2331 003274  2313          INC NUMPTR      /NEXT 2 CHARS
2332 003275  0175  NUMR,   AND [77]        /USE RIGHT HALF
2333 003276  1174          TAD [" ]        /GENERATE ASCII CHAR
2334 003277  0175          AND [77]
2335 003300  1174          TAD [" ]
2336 003301  5670          JMP I NUMGET    /AND RETURN WITH IT
2337               
2338 003302  7112  NUML,   CLL RTR; RTR; RTR /GET CHAR FROM LEFT HALF
     003303  7012  
     003304  7012  
2339 003305  3314          DCA NUMTMP
2340 003306  7240          STA
2341 003307  3312          DCA NUMHLF
2342 003310  1314          TAD NUMTMP
2343 003311  5275          JMP NUMR        /AND GO CHECK IT OUT
2344               
2345 003312  0000  NUMHLF, 0
2346 003313  0000  NUMPTR, 0
2347 003314  0000  NUMTMP, 0
2348               
2349               / SUBROUTINE TO OUTPUT A CARRIAGE RETURN / LINE FEED COMBO
2350               / ENTER WITH NO. OF CR/LF'S IN ACC (+)
2351               
2352               
2353 003315  0000  CRLFX,  0
2354 003316  7450          SNA
2355 003317  7001          IAC             /IF ZERO, ASSUME 1
2356 003320  7500          SMA             /SKIP IF ALREADY NEG
2357 003321  7041          CIA             /MAKE NEG FOR CTR
2358 003322  3365          DCA CRLFC       /SAVE THE COUNTER
2359 003323  1315          TAD CRLFX       /SAVE RETURN LOC FOR REENTRY
2360 003324  4556          PUSHA           /PRETEND HE CALLED VIA "PUSHJ"
2361 003325  1365  CRLFX2, TAD CRLFC       /SAVE THE COUNTER ON THE STACK
2362 003326  4556          PUSHA
2363 003327  4562          PUSHJ           /PRINT HEADER IF NECESSARY
2364 003330  4600            PRTHEAD
2365 003331  1167          TAD [215]       /OUTPUT THE CARRIAGE RETURN FIRST
2366 003332  4531          PUT
2367 003333  1372          TAD (212)       /OUTPUT THE LINE FEED NOW
2368 003334  4531          PUT
2369 003335  7240          STA
2370 003336  1120          TAD NLINES
2371 003337  3120          DCA NLINES      /DECREMENT NO. OF LINES ON PAGE
2372 003340  1120          TAD NLINES
2373 003341  7640          SZA CLA         /ANY LINES LEFT ON PAGE?
2374 003342  5357          JMP CRLFX5      /YES, MAYBE RETURN
2375 003343  1070          TAD FNFLAG      /NO, ARE WE PROCESSING A FOOTNOTE?
2376 003344  7640          SZA CLA
2377 003345  5771          JMP CRLFX4      /YES, GO DO FOOTER
2378 003346  1071          TAD FNLINE      /NO, IS THERE A FOOTNOTE ON THIS PAGE?
2379 003347  7450          SNA
2380 003350  5771          JMP CRLFX4      /NO, GO DO THE FOOTER
2381 003351  3120          DCA NLINES      /YES, SET UP NO. OF LINES LEFT ON PAGE
2382 003352  3071          DCA FNLINE      /ZAP NO. OF FOOTNOTE LINES TO ZERO
2383 003353  5770          JMP DOFNOTE     /GO DO THE FOOTNOTE
2384 003354  1122  CRLFX3, TAD TOPSW       /RETURN TO HERE AFTER FOOTNOTE PROCESSING
2385 003355  7650          SNA CLA         /DO WE NEED TO GO TO TOP OF PAGE?
2386 003356  4546          DOEJECT         /YES
2387 003357  4767  CRLFX5, JMS NLPARM      /SET UP PARMS FOR NEW LINE
2388 003360  4557          POPA
2389 003361  3365          DCA CRLFC       /RESTORE CURRENT CTR
2390 003362  2365          ISZ CRLFC       /ALL LINES OUT YET?
2391 003363  5325          JMP CRLFX2
2392 003364  5564          POPJ            /YES, RETURN TO CALLER
2393               
2394 003365  0000  CRLFC,  0
2395               
2396 003367  1135  PAGE
     003370  3000  
     003371  4502  
     003372  0212  
     003373  0011  
     003374  7507  
     003375  7776  
     003376  7525  
     003377  4044  
2397               
2398               / PRINT THE OUTPUT LINE
2399               / SEND THE OUTPUT LINE TO THE OUTPUT FILE
2400               
2401               
2402 003400  4562  PRINT,  PUSHJ           /DO WE DO TOP OF PAGE?
2403 003401  4600            PRTHEAD
2404 003402  1377          TAD (LINE-1)    /PREPARE TO PRINT THE LINE
2405 003403  3015          DCA PRTXR       /INITIALIZE PTR AND CTR
2406 003404  1005          TAD CHRCNT      /LENGTH OF OUTPUT LINE
2407 003405  7450          SNA
2408 003406  5277          JMP PRINT6      /NOTHING IN LINE, JUST RETURN
2409 003407  7041          CIA
2410 003410  3306          DCA PRTCTR
2411 003411  3127          DCA TXTFLG      /NOW WE ARE PRINTING
2412 003412  4314          JMS OVERDO      /DO LEFT MARGIN ETC.
2413 003413  3310          DCA PRTCNT      /NO. OF UNDERLINES ON LINE
2414 003414  1415  PRINT2, TAD I PRTXR     /GET A CHAR
2415 003415  3307          DCA PRTCHR      /SAVE CHAR FOR CHECKING
2416 003416  1307          TAD PRTCHR
2417 003417  4531          PUT             /OUTPUT CHAR FIRST
2418 003420  1307          TAD PRTCHR      /IS CHAR TO BE UNDERLINED?
2419 003421  7700          SMA CLA
2420 003422  5234          JMP PRINTC      /NO, JUST COUNT IT
2421 003423  1305          TAD UNSWIT      /YES, CAN WE UNDERLINE IT NOW?
2422 003424  7710          SPA CLA
2423 003425  5230          JMP .+3         /YES
2424 003426  2310          INC PRTCNT      /NO, JUST COUNT IT
2425 003427  5234          JMP PRINTC
2426 003430  1313          TAD BSPCHR      /SEND A BACKSPACE CHARACTER
2427 003431  4531          PUT
2428 003432  1304          TAD ULCHR       /FOLLOWED BY AN UNDERLINE
2429 003433  4531          PUT
2430 003434  2306  PRINTC, ISZ PRTCTR      /BUFFER EMPTY?
2431 003435  5214          JMP PRINT2      /NO, KEEP PRINTING MORE?
2432 003436  1310          TAD PRTCNT      /DO WE NEED TO UNDERLINE THIS LINE?
2433 003437  7650          SNA CLA
2434 003440  5277          JMP PRINT6      /NO, GO RETURN
2435 003441  1305          TAD UNSWIT      /BUFFER IS EMPTY
2436 003442  7750          SPA SNA CLA     /DO WE UNDERLINE ANY CHAR?
2437 003443  5277          JMP PRINT6      /NOPE, PREPARE TO RETURN
2438 003444  1167          TAD [215]       /FIRST OUTPUT CR TO GET TO START OF LINE
2439 003445  4531          PUT
2440 003446  7344          MTWO
2441 003447  1305          TAD UNSWIT
2442 003450  7650          SNA CLA         /UNDERLINES ON SAME LINE (=2) ?
2443 003451  4776          JMS LFPUT       /JUST A LINEFEED DON'T ADJ COUNT
2444 003452  4314          JMS OVERDO      /LEFT MARGIN AND SHIFT
2445 003453  1377          TAD (LINE-1)    /PREPARE TO CHECK BUFFER AGAIN
2446 003454  3015          DCA PRTXR       /INITIALIZE PTR AND CTR
2447 003455  1005          TAD CHRCNT
2448 003456  7041          CIA
2449 003457  3306          DCA PRTCTR
2450 003460  1415  PRINT4, TAD I PRTXR     /GET A CHARACTER
2451 003461  7450          SNA
2452 003462  5277          JMP PRINT6      /END OF BUFFER, PREPARE RETURN
2453 003463  7500          SMA             /UNDERLINE THE CHAR?
2454 003464  5270          JMP PRINT5      /NO, JUST SPACE OVER IF NOT CONTROL
2455 003465  7200          CLA             /YES, GET UNDERLINE
2456 003466  1304          TAD ULCHR       /GET THE UNDERLINE CHAR _ OR -
2457 003467  5274          JMP PRINT8
2458 003470  4775  PRINT5, JMS CCCHK
2459 003471  5301          JMP PRINT9      /A LITTLE EXTRA FOR BACKSPACE
2460 003472  5275          JMP PRINT8+1    /DON'T SPACE FOR CONTROLS
2461 003473  1174          TAD [" ]        /JUST A SPACE
2462 003474  4531  PRINT8, PUT             /OUTPUT THE CHARACTER
2463 003475  2306          ISZ PRTCTR
2464 003476  5260          JMP PRINT4
2465 003477  4774  PRINT6, JMS NLPARM      /RESET PARMS FOR NEW LINE
2466 003500  5564          POPJ            /AND RETURN TO CALLER
2467               
2468 003501  2015  PRINT9, ISZ PRTXR       /SKIP THIS NEXT CHAR
2469                                       /IT MUST BE THERE SINCE BS CAN'T END LINE
2470 003502  2306          ISZ PRTCTR      /THIS CAN'T SKIP DITTO ABOVE
2471 003503  5275          JMP PRINT8+1    /REJOIN THE MAIN CODE
2472 003504  0337  ULCHR,  "_              /NORMALLY UNDERLINE
2473               
2474               / HOW DO WE UNDERLINE A CHAR?
2475               / 0,    NO UNDERLINE ALLOWED
2476               / 4000, FOLLOW CHAR BY BACKSPACE AND UNDERLINE CHARS
2477               / 1,    SPACES AND UNDERLINES ON SAME LINE
2478               / 2,    SPACES AND DASHES ON NEXT LINE
2479               
2480 003505  0001  UNSWIT, 1               /SPACES AND UNDERLINES ON SAME LINE
2481 003506  0000  PRTCTR, 0
2482 003507  0000  PRTCHR, 0
2483 003510  0000  PRTCNT, 0
2484 003511  0000  KOVERE, 0
2485 003512  0000  KOVERO, 0
2486 003513  0210  BSPCHR, 210
2487               
2488 003514  0000  OVERDO, 0               /PRINT SEQUENCE NUMBERS OVER AND LEFT MARGIN SPACES
2489 003515  4773          JMS PUTSEQ      /MAYBE PUT IN SEQUENCE NUMBERS
2490 003516  1121          TAD PAGENO      /GET THE PAGE NUMBER
2491 003517  7110          CLL RAR         /EVEN OR ODD TO LINK
2492 003520  7240          STA
2493 003521  7430          SZL
2494 003522  1312          TAD KOVERO      /DIFFERENCE FOR ODD PAGES
2495 003523  1311          TAD KOVERE      /BINDING MARGIN FOR EVEN PAGES
2496 003524  1051          TAD ALMARG
2497 003525  4327          JMS TSPACE      /OUTPUT LEADING SPACES
2498 003526  5714          JMP I OVERDO    /GO BACK NOW
2499               
2500               / SUBROUTINE TO PRINT SPACES NECESSARY TO EFFECT LEFT MARGIN
2501               
2502 003527  0000  TSPACE, 0
2503 003530  7450          SNA
2504 003531  5727          JMP I TSPACE    /NO LEADING SPACES, RETURN
2505 003532  7041          CIA
2506 003533  3352          DCA TSPCTR      /SAVE CTR
2507 003534  1174          TAD [" ]
2508 003535  4531          PUT
2509 003536  2352          ISZ TSPCTR
2510 003537  5334          JMP .-3
2511 003540  5727          JMP I TSPACE
2512               
2513               / OUTPUT AN ERROR MESSAGE
2514               
2515 003541  0000  ERRORX, 0
2516 003542  6201          CDF 0
2517 003543  1741          TAD I ERRORX    /PICK IT UP
2518 003544  3347          DCA ERRLNK      /PASS IT TO REAL ROUTINE
2519 003545  6212          CIF 10          /WHICH IS IN FIELD 1
2520 003546  4772          JMS ERROUT      /DO PROPER ERROR STUFF
2521 003547  0000  ERRLNK, 0
2522 003550  2341          INC ERRORX      /SKIP OVER ERROR MESSAGE
2523 003551  5741          JMP I ERRORX    /AND RETURN
2524               
2525               
2526               / GIVE ERROR MESSAGE AND GET NEXT COMMAND
2527               
2528               TSPCTR,
2529 003552  0000  ERRCX,  0
2530 003553  7300          CLA CLL
2531 003554  1752          TAD I ERRCX     /PICK UP ERROR MESSAGE
2532 003555  3357          DCA .+2
2533 003556  4553          ERROR           /OUTPUT IT
2534 003557  0000            0
2535 003560  5566  ERCGO,  EOCGO           /IGNORE ANY GARBAGE AND RETURN
2536               
2537 003561  1544  CTRLJ,  GCTAB
2538 003562  1542          GCLF
2539 003563  1542          GCVT
2540 003564  1537          GCFF
2541 003565  1544          GCCR
2542               
2543 003572  3613  PAGE
     003573  5257  
     003574  1135  
     003575  2157  
     003576  4750  
     003577  6373  
2544               
2545               / .HEADER OPTIONS
2546               / PLACES THE HEADER LINE AND TELLS WHERE AND HOW TO PRINT IT
2547               / .NOHEADER
2548               
2549               
2550 003600  7240  NOHEAD, STA             /SET THE "NO" FLAG
2551 003601  3114          DCA NOFLG
2552 003602  1114  HEADER, TAD NOFLG       /SET THE HEADER SWITCH
2553 003603  3040          DCA SWHEAD
2554 003604  1040          TAD SWHEAD      /WAS IT "NOHEADER" ?
2555 003605  7640          SKIPYES
2556 003606  5224          JMP HEAD2       /YES IT IS, JUST RETURN
2557 003607  4534          SPNOR           /IGNORE SPACES AFTER COMMAND
2558 003610  1102          TAD CHAR
2559 003611  4550          EOCQ            /END OF COMMAND?
2560 003612  5224           JMP HEAD2      /YES, JUST RETURN
2561 003613  4537  HEAD1,  COMCHK
2562 003614  5207            HEADWD-1
2563 003615  3177            HEADJ-1
2564 003616  1576          TAD I [CMDLINE] /NOT, AN ARG THERE?
2565 003617  7640          SZA CLA
2566 003620  5225          JMP HEAD3       /YES, ILLEGAL HEADER ARGUMENT
2567 003621  1114          TAD NOFLG       /NO, WAS IT SIMPLY "NO" ?
2568 003622  7440          SZA
2569 003623  3040          DCA SWHEAD      /YES, JUST "NO", EQUIV. TO "NOHEADER"
2570 003624  5566  HEAD2,  EOCGO
2571               
2572 003625  4554  HEAD3,  ERRORC          /ILLEGAL HEADER ARGUMENT
2573 003626  1004          TEXT \HD\
     003627  0000  
2574                       *.-1
2575               
2576 003627  1377  HSTYLE, TAD (7774       /JUST STYLE BITS
2577 003630  0031  HDPUT,  AND HWORD       /COME HERE FROM OTHERS
2578 003631  1123          TAD SORTCN      /HAS THE STYLE CODE
2579 003632  3031          DCA HWORD       /PUT IT AWAY
2580 003633  5213          JMP HEAD1       /MAYBE ANOTHER
2581               
2582 003634  1377  HPOSIT, TAD (-4         /POSITION 4-7
2583 003635  1123          TAD SORTCN      /GET JUST THE 2 BITS
2584 003636  7106          CLL RTL         /INTO POSITION
2585 003637  3123          DCA SORTCN      /AND SAVE
2586 003640  1376          TAD (7763       /MASK FOR POSITION
2587 003641  5230          JMP HDPUT       /PUT IT IN THE HEADER
2588               
2589 003642  7410  HPLACE, SKP             /TOP OF PAGE
2590 003643  7330  HPLACI, STL CLA RAR     /BOTTOM OF PAGE
2591 003644  3123          DCA SORTCN      /SAVE IT
2592 003645  7350          CLL STA RAR     /AC3777 MASK
2593 003646  5230          JMP HDPUT
2594               
2595 003647  7410  HBASE,  SKP             /ARABIC
2596 003650  7332  HBASI,  STL CLA RTR     /AC2000 FOR ROMAN
2597 003651  3123          DCA SORTCN      /SAVE IT
2598 003652  7352          CLL STA RTR     /AC5777 MASK
2599 003653  5230          JMP HDPUT
2600               
2601 003654  1174  HSPLIT, TAD [" ]        /USE A SPACE FOR SPLIT CHAR
2602 003655  3775          DCA HDCHAR      /EITHER SP OR - SEPARATES THEM
2603 003656  1374          TAD (1000       /FLAG BIT FOR SPLIT
2604 003657  5262          JMP .+3
2605 003660  1373  HNSPLT, TAD ("-)        /IF NOT SPLIT THEN HYPHEN
2606 003661  3775          DCA HDCHAR
2607 003662  3123          DCA SORTCN      /FLAG BIT TEMPORARILY HERE
2608 003663  1372          TAD (6777       /GET THE MASK
2609 003664  5230          JMP HDPUT       /AND PUT IT IN
2610               
2611               
2612               / THE CENTERING COMMANDS
2613               / .CENTER (.C)          CENTERS ON 1 AND PAPER WIDTH
2614               / .CENTER N             CENTERS OVER COLUMN N/2
2615               / .CENTER WIDTH (.CW)   CENTERS ON 1 AND PAPER WIDTH
2616               / .CENTER MARGINS (.CM) CENTERS ON CURRENT LEFT AND RIGHT MARGINS
2617               / .CENTER MARGINS N,M   CENTERS ON MARGINS N AND M
2618               
2619               
2620 003665  4537  CENTC,  COMCHK          /CHECK FOR ANYTHING AFTER .CENTER
2621 003666  4177            CENTW-1
2622 003667  4207            CENTJ-1
2623 003670  4542          NUMCHK          /GET A NUMBER
2624 003671  7410          SKP             /NO NUMBER THERE
2625 003672  5316          JMP CENTC9      /YES
2626 003673  1576          TAD I [CMDLINE] /IS THERE ANYTHING AFTER .CENTER?
2627 003674  7640          SZA CLA
2628 003675  5563          BADCMD          /YES, IS ILLEGAL COMMAND
2629 003676  5301  CWDTH,  JMP CENTC8      /ASSUME STANDARD PAGE WIDTH FOR CENTERING
2630               
2631 003677  1333  CENTC3, TAD CENTLM      /SET UP "CWIDTH"
2632 003700  1334          TAD CENTRM      /CWIDTH = CENTRM+CENTLM
2633 003701  3771  CENTC8, DCA CWIDTH      /SET UP CWIDTH FOR CENTERING
2634 003702  4536          GARBAGE         /IGNORE GARBAGE ON COMMAND LINE
2635 003703  4547          BREAK
2636 003704  1165          TAD RTNLNK      /WE GO OUT WITH A POP
2637 003705  4556          PUSHA
2638 003706  4335  CENTNT, JMS GLINE       /GET A LINE TO CENTER
2639 003707  1771          TAD CWIDTH      /GET THE CWIDTH TO ACC
2640 003710  4770          JMS CENTER      /CENTER THE LINE (SET UP ALMARG)
2641 003711  4562          PUSHJ           /PRINT CENTERED LINE
2642 003712  3400            PRINT
2643 003713  1056          TAD LSPACE      /(-) LINE SPACING
2644 003714  4552          CRLF            /RIGHT NO. OF CR/LF'S
2645 003715  5564          POPJ            /WE MAY HAVE BEEN CALLED FROM NOTE
2646               
2647 003716  1022  CENTC9, TAD PWIDTH
2648 003717  4544          RELQ    /SET UP THE CENTERING WIDTH
2649 003720  5301          JMP CENTC8      /GET THE LINE
2650               
2651 003721  4541  CMARG,  GETNUM          /GET THE MARGINS TO CENTER ON
2652 003722  1052          TAD LMARG
2653 003723  4544          RELQ
2654 003724  3333          DCA CENTLM      /SET LEFT MARGIN FOR CENTERING
2655 003725  3576          DCA I [CMDLINE] /SO WE CAN GET ANOTHER NUMBER
2656 003726  4541          GETNUM
2657 003727  1053          TAD RMARG
2658 003730  4544          RELQ
2659 003731  3334          DCA CENTRM      /SET RIGHT MARGIN FOR CENTERING
2660 003732  5277          JMP CENTC3      /GO CENTER NEXT LINE
2661               
2662 003733  0000  CENTLM, 0
2663 003734  0000  CENTRM, 0
2664               
2665               / GET A LINE TO ADJUST OR CENTER
2666               
2667 003735  0000  GLINE,  0
2668 003736  4532  GLINE4, GETC            /GET CHARS TO CENTER
2669 003737  1102          TAD CHAR
2670 003740  7450          SNA
2671 003741  5735          JMP I GLINE     /END OF LINE, PREPARE TO CENTER IT
2672 003742  1367          TAD (-211)      /IS CHAR A TAB?
2673 003743  7650          SNA CLA
2674 003744  1366          TAD (" -211)    /YES, CONVERT IT TO A SPACE
2675 003745  1102          TAD CHAR
2676 003746  4533          OSAVE           /SAVE IT IN OUTPUT LINE
2677 003747  5336          JMP GLINE4
2678 003750  4553          ERROR           /TOO MANY CHARS ON LINE
2679 003751  1414          TEXT \LL\
     003752  0000  
2680                       *.-1
2681               
2682 003752  4532  GLINE5, GETC            /GO FOR END OF LINE
2683 003753  1102          TAD CHAR
2684 003754  7640          SZA CLA
2685 003755  5352          JMP GLINE5
2686 003756  5735          JMP I GLINE     /RETURN WHEN FOUND
2687               
2688               /SMALL SUBROUTINE TO OUTPUT A CHAR TO TTY
2689               
2690 003757  0000  TYPEIT, 0
2691 003760  6046          TLS
2692 003761  6041          TSF
2693 003762  5361          JMP .-1
2694 003763  7300          CLA CLL
2695 003764  5757          JMP I TYPEIT
2696               
2697 003766  0027  PAGE
     003767  7567  
     003770  4000  
     003771  4025  
     003772  6777  
     003773  0255  
     003774  1000  
     003775  5032  
     003776  7763  
     003777  7774  
2698               
2699               / SUBROUTINE TO SET "ALMARG" SO THAT THE OUTPUT LINE IS CENTERED
2700               / IF ACC IS ZERO, USE THE STANDARD PAGE WIDTH
2701               / OTHERWISE, THE ACC CONTAINS CENTER LMARG + CENTER RMARG
2702               
2703 004000  0000  CENTER, 0
2704 004001  7450          SNA
2705 004002  1022          TAD PWIDTH      /IF ZERO, ASSUME CENTER ON PWIDTH
2706 004003  3225          DCA CWIDTH      /USE FOR CENTER WIDTH
2707 004004  1115          TAD LENOL       /ACTUAL LENGTH OF OUTPUT LINE
2708 004005  7041          CIA
2709 004006  7001          IAC
2710 004007  1225          TAD CWIDTH      /CWIDTH = CENTER LMARG + CENTER RMARG
2711 004010  7110          CLL RAR
2712 004011  3051          DCA ALMARG      /ALMARG=INT((CWIDTH-LENOL+1)/2)
2713 004012  1022          TAD PWIDTH
2714 004013  7041          CIA
2715 004014  1115          TAD LENOL
2716 004015  1051          TAD ALMARG
2717 004016  7750          SPA SNA CLA
2718 004017  5600          JMP I CENTER    /THE ENTIRE LINE DOESN'T EXCEED PWIDTH
2719 004020  1115          TAD LENOL       /YES, IT DOES
2720 004021  7041          CIA
2721 004022  1022          TAD PWIDTH
2722 004023  3051          DCA ALMARG      /SO SET ACTUAL LEFT MARGIN SO THAT
2723                                       /THE ENTIRE LINE WILL FIT
2724 004024  5600          JMP I CENTER
2725               
2726 004025  0000  CWIDTH, 0
2727               
2728               / FATAL ERROR HAS OCCURRED
2729               / GIVE ERROR MESSAGE AND RETURN TO SYSTEM
2730               
2731 004026  0000  ERRFX,  0
2732 004027  7600  K7600,  7600            /CLEAR GARBAGE FROM ACC
2733 004030  1626          TAD I ERRFX
2734 004031  3233          DCA .+2
2735 004032  4553          ERROR           /OUTPUT ERROR MESSAGE
2736 004033  0000            0
2737 004034  6212          CIF 10          /MAIN END OF FILE IN FLD 1
2738 004035  5777          JMP EOFIL3      /THEN FALL THRU FOR END OF FILE
2739               
2740               / END OF FILE PROCEDURE
2741               / CHECK TO SEE IF ALL COPIES OUT
2742               / THEN RETURN TO SYSTEM
2743               
2744               
2745 004036  4547  EOFILE, BREAK           /END OF FILE, OUTPUT LAST LINE
2746 004037  1122          TAD TOPSW       /ARE WE AT TOP OF PAGE?
2747 004040  7650          SNA CLA
2748 004041  4546          DOEJECT         /NO, GO TO TOP OF PAGE
2749 004042  6212          CIF 10
2750 004043  5776          JMP EOFCK1      /MOST OF WORK IS UP HERE
2751               
2752               / GET A WORD TO COMMAND BUFFER
2753               
2754               
2755 004044  0000  GETARG, 0
2756 004045  1176          TAD [CMDLINE]   /INITIALIZE COMMAND PTR
2757 004046  3337          DCA ARGPTR
2758 004047  3737          DCA I ARGPTR    /ZERO CHARS
2759 004050  1375          TAD (-20)       /LENGTH OF BUFFER
2760 004051  3340          DCA ARGCTR      /INTIALIZE THE CTR
2761 004052  3341          DCA ARGHLF      /STORE IN LEFT HALF FIRST
2762 004053  4534  GTARG1, SPNOR           /IGNORE SPACES BEFORE ANYTHING
2763 004054  7410          SKP
2764 004055  4532  GTARG3, GETC            /GET ANOTHER CHAR
2765 004056  1102          TAD CHAR
2766 004057  4535          SORTJ           /SPECIAL COMMAND CHAR CHECK
2767 004060  6215            CMDLST-1      /!, ;, COMMA, SPACE, TAB, AND 0 (EOL)
2768 004061  0007            CMDLJ-CMDLST
2769 004062  1340          TAD ARGCTR
2770 004063  7650          SNA CLA
2771 004064  5255          JMP GTARG3      /IGNORE EXCESS CHARS
2772 004065  1102          TAD CHAR        /IS CHAR A SMALL ALPHABETIC?
2773 004066  4774          JMS TSTALS      /TEST FOR LOWER CASE ALPHABETIC
2774 004067  7610           SKP CLA
2775 004070  5274          JMP GTARG4      /YES, MAKE IT UPPER CASE
2776 004071  1102          TAD CHAR        /NOT LOWER CASE ALPHABETIC
2777 004072  0175          AND [77]        /STRIP TO 6 BITS
2778 004073  5276          JMP GTARG4+2    /AND GO STORE IT
2779 004074  1102  GTARG4, TAD CHAR        /NOT A NUMERIC CHAR
2780 004075  0373          AND (37)        /STRIP IT TO 5 BITS TO KEEP UPPER CASE
2781 004076  2341          ISZ ARGHLF
2782 004077  5307          JMP ARGLEFT     /STORE IN LEFT HALF
2783 004100  1737          TAD I ARGPTR
2784 004101  3737          DCA I ARGPTR    /STORE IN RIGHT HALF
2785 004102  2337          INC ARGPTR
2786 004103  3737          DCA I ARGPTR    /MAKE SURE NEXT LOC IS ZERO
2787 004104  2340          ISZ ARGCTR      /ANOTHER 2 CHARS IN
2788 004105  7000          NOP
2789 004106  5255          JMP GTARG3
2790 004107  7106  ARGLEFT,CLL RTL; RTL; RTL /MOVE TO LEFT HALF
     004110  7006  
     004111  7006  
2791 004112  3737          DCA I ARGPTR    /AND SAVE IT
2792 004113  7240          STA
2793 004114  3341          DCA ARGHLF      /RIGHT HALF NEXT TIME
2794 004115  5255          JMP GTARG3
2795               
2796 004116  1576  GETNOQ, TAD I [CMDLINE] /CHECK WHAT WE HAVE
2797 004117  1372          TAD (-1617)     /"NO"
2798 004120  7640          SZA CLA
2799 004121  5325          JMP .+4         /SOMETHING THERE, GO RETURN
2800 004122  1771          TAD I (CMDLINE+1) /IS COMMAND JUST "NO" ?
2801 004123  7650          SNA CLA
2802 004124  5253          JMP GTARG1      /YES, IGNORE SPACES, GET REST OF IT
2803 004125  5644  CMDEND, JMP I GETARG    /RETURN TO CALLER
2804               
2805 004126  4532  GTCOM,  GETC            /GET THE CHAR AFTER THE COMMA
2806 004127  5325          JMP CMDEND      /TO START OFF NEXT TIME
2807               
2808               / COMMENT IN COMMAND LINE
2809               /COMMENT CODE CHANGED TO IGNORE FLAG STUFF IN COMMENTS 8/76
2810               
2811 004130  6212  COMMENT,CIF 10          /ROUTINE IN FLD 1
2812 004131  4770          JMS I (ENDCHK   /IF ACC IS ZERO IT LOOKS FOR COMMAND END
2813 004132  5325          JMP CMDEND      /IT ONLY COMES BACK WHEN DONE
2814               
2815 004133  7240  CMDCOM, STA             /THE .COMMENT COMMAND IS NEARLY THE SAME
2816 004134  6212  COMCOM, CIF 10
2817 004135  4770          JMS I (ENDCHK   /UP THERE NOW
2818 004136  5565          RETURN          /YES, RETURN
2819               
2820 004137  0000  ARGPTR, 0
2821 004140  0000  ARGCTR, 0
2822 004141  0000  ARGHLF, 0
2823               
2824               / .SPACING N (N = 1-5)
2825               
2826               
2827 004142  4547  SPACING,BREAK
2828 004143  4541          GETNUM          /WE WILL ALLOW RELATIVE DARRELL!!
2829 004144  1056          TAD LSPACE      /SPACING IS NEGATIVE
2830 004145  7041          CIA
2831 004146  4544          RELQ            /BUT THE USER DOESN'T KNOW THAT
2832 004147  3103          DCA NUMBER
2833 004150  1103          TAD NUMBER
2834 004151  7550          SPA SNA
2835 004152  5767          JMP BADARG      /NO 0 OR NEGATIVE SPACING HERE
2836 004153  1366          TAD (-5)        /IN RANGE 1 TO 5?
2837 004154  7740          SMA SZA CLA
2838 004155  5767          JMP BADARG      /NO, BAD ARGUMENT
2839 004156  1103          TAD NUMBER      /USE THE ARGUMENT AS
2840 004157  7041          CIA
2841 004160  3056          DCA LSPACE      /THE NEW SPACING NUMBER (-)
2842 004161  5566          EOCGO
2843               
2844 004166  7773  PAGE
     004167  2243  
     004170  2066  
     004171  6235  
     004172  6161  
     004173  0037  
     004174  4341  
     004175  7760  
     004176  3467  
     004177  3503  
2845               
2846               / .PAGE COMMANDS
2847               / .PAGE   OR    .PAGE N
2848               /.PAGE EVEN
2849               /.PAGE ODD - GO TO THE NEXT EVEN OR ODD PAGE
2850               / .PAGE TOP
2851               / .PAGE BOTTOM
2852               / .PAGE SIZE
2853               
2854               
2855 004200  4537  PAGEC,  COMCHK          /CHECK FOR LEGAL "PAGE" COMMANDS
2856 004201  5303            PAGCMD-1
2857 004202  3552            PAGJMP-1
2858 004203  4541  PAGCOM, GETNUM          /NOW THAT FOOTNOTE IS THROUGH GET THE NUMBER
2859 004204  1377          TAD (RELFLG     /SAVE THIS STUFF ACROSS THIS FOOTNOTE MAYBE
2860 004205  4560          SAVELIST
2861 004206  7774          -4
2862 004207  4547          BREAK           /GET LAST LINE OF PAGE PRINTED OUT
2863 004210  1127          TAD TXTFLG      /ARE WE AT TOP OF PAGE ALREADY?
2864 004211  7650          SNA CLA
2865 004212  4546          DOEJECT         /NO, SKIP TO TOP OF NEW PAGE
2866 004213  4561          RESTORE         /GET OUR STUFF BACK NOW
2867 004214  1121          TAD PAGENO
2868 004215  4544          RELQ            /SET UP NEW PAGE NO.
2869 004216  7500          SMA
2870 004217  5222          JMP PAGEC2      /GOOD
2871 004220  4554          ERRORC          /BAD PAGE NO., GIVE MESSAGE
2872 004221  2007          TEXT \PG\
     004222  0000  
2873                       *.-1
2874               
2875 004222  1004  PAGEC2, TAD PAGSKP      /MAYBE SKIP A PAGE
2876 004223  3121          DCA PAGENO      /UPDATE THE PAGE NO.
2877 004224  3004          DCA PAGSKP      /CLEAR THE SKIP
2878 004225  5566          EOCGO           /CLEAN UP ANY GARBAGE AND RETURN
2879               
2880               
2881               /PAGE EVEN OR PAGE ODD
2882               /THESE FUNCTIONS ADVANCE THE PAGE
2883               /IF NECESSARY TO MAKE NEXT PAGE EVEN OR ODD
2884               
2885 004226  7201  PEVEN,  CLA IAC         /MAKE IT ODD
2886 004227  1121  PODD,   TAD PAGENO      /FIND OUT WHAT IT IS
2887 004230  7010          RAR;CLA RAL     /EVEN ODD IN ACC 11
     004231  7204  
2888 004232  3004          DCA PAGSKP      /SHALL WE SKIP A PAGE?
2889 004233  5203          JMP PAGCOM      /THIS IS FLAKY BUT WE ARE SHORT ON SPACE
2890               
2891               / .PAGE SIZE OR .PAPER SIZE COMMANDS
2892               / TWO ARGS, FIRST IS PAGE LENGTH, SECOND IS PAGE WIDTH
2893               
2894 004234  4541  PAGSIZE,GETNUM          /GET THE FIRST ARG
2895 004235  1024          TAD PLENGTH
2896 004236  4544          RELQ
2897 004237  3103          DCA NUMBER      /NEW PAGE LENGTH
2898 004240  1103          TAD NUMBER
2899 004241  1376          TAD (-21)       /MUST BE AT LEAST 6+6+5 LONG
2900 004242  7700          SMA CLA
2901 004243  5246          JMP PAGSZ3      /LEGAL PAGE LENGTH
2902 004244  4554  PSIZER, ERRORC          /PAGE SIZE MUST BE > 17
2903 004245  2023          TEXT \PS\
     004246  0000  
2904                       *.-1
2905               
2906 004246  1103  PAGSZ3, TAD NUMBER      /THE PAGE LENGTH IS GOOD
2907 004247  3024          DCA PLENGTH     /SO GIVE NEW PAGE LENGTH
2908 004250  3576          DCA I [CMDLINE] /TO GET NEW NUMBER
2909 004251  4541          GETNUM          /GET THE PAGE WIDTH
2910 004252  1022          TAD PWIDTH
2911 004253  4544          RELQ
2912 004254  3103          DCA NUMBER      /SAVE TEMPORARILY
2913 004255  1103          TAD NUMBER
2914 004256  1375          TAD (-MAXWIDTH) /MAXIMUM PAGE WIDHT
2915 004257  7740          SMA SZA CLA
2916 004260  5244          JMP PSIZER      /PAGE SIZE IS TOO LARGE
2917 004261  1103          TAD NUMBER
2918 004262  7041          CIA
2919 004263  1052          TAD LMARG
2920 004264  7700          SMA CLA         /PAGE WIDTH > LEFT MARGIN?
2921 004265  5244          JMP PSIZER      /NO, BAD PAGE
2922 004266  1103          TAD NUMBER
2923 004267  3022          DCA PWIDTH      /RESET PAGE WIDTH
2924 004270  1103          TAD NUMBER
2925 004271  3053          DCA RMARG       /ALSO RESET RIGHT MARGIN
2926 004272  4547          BREAK           /RESET FOR NEW WIDTH, NEW PARMS
2927 004273  5566          EOCGO
2928               
2929               / .PAGE TOP N,M
2930               / .PAGE BOTTOM N,M
2931               
2932 004274  1374  PAGTOP, TAD (TOP-BOTTOM) /USE TOP OF PAGE TABLES
2933 004275  1373  PAGBOT, TAD (BOTTOM)    /USE BOTTOM OF PAGE TABLES
2934 004276  3312          DCA PAGPTR      /INITIALIZE THE PTR
2935 004277  4541          GETNUM          /GET NO. OF LINES TO SKIP AT "TOP"
2936 004300  1712          TAD I PAGPTR
2937 004301  4544          RELQ
2938 004302  3712          DCA I PAGPTR    /SAVE IN APPROPRIATE TABLE
2939 004303  2312          INC PAGPTR      /POINT TO 2ND ENTRY IN TABLE
2940 004304  3576          DCA I [CMDLINE] /CLEAR TO GET ANOTHER NUMBER
2941 004305  4541          GETNUM          /GET NO. OF LINE TO SKIP AT "BOTTOM"
2942 004306  1712          TAD I PAGPTR
2943 004307  4544          RELQ
2944 004310  3712          DCA I PAGPTR    /SAVE IN APPROPRIATE TABLE
2945 004311  5566          EOCGO
2946               
2947 004312  0000  PAGPTR, 0
2948               
2949               / TEST CHAR IN ACC FOR LARGE ALPHABETIC
2950               
2951 004313  0000  TSTALX, 0
2952 004314  0172          AND [377]       /JUST WANT GOOD CHAR
2953 004315  1372          TAD (-"Z)
2954 004316  7540          SMA SZA
2955 004317  5323          JMP TSTRTN      /NOT ALPHABETIC
2956 004320  1371          TAD ("Z-"A)
2957 004321  7700          SMA CLA
2958 004322  2313          ISZ TSTALX      /.+2 IF ALPHABETIC
2959 004323  7300  TSTRTN, CLA CLL
2960 004324  5713          JMP I TSTALX    /.+1 IF NOT LARGE ALPHABETICS
2961               
2962               / SUBROUTINE TO SKIP TO TOP OF NEW PAGE
2963               
2964 004325  0000  EJECTX, 0
2965 004326  1325          TAD EJECTX      /PRETEND WE WERE CALLED BY "PUSHJ"
2966 004327  4556          PUSHA
2967 004330  1120          TAD NLINES      /NO. OF LINES TO BOTTOM OF PAGE
2968 004331  4552          CRLF            /GO TO BOTTOM AND DO FOOTER, TOO
2969 004332  5564          POPJ            /WE MUST RETURN THIS WAY
2970               
2971               / SUBROUTINE TO CHECK FOR END-OF-COMMAND CHAR
2972               
2973 004333  0000  EOCQX,  0
2974 004334  7440          SZA             /CHAR IN ACC
2975 004335  1370          TAD (-";)       /NOT ZERO, IS IT SEMI-COLON?
2976 004336  7640          SZA CLA
2977 004337  2333          INC EOCQX       /NOT SEMI OR EOL, RETURN .+2
2978 004340  5733          JMP I EOCQX     /EOL OR SEMI, RETURN .+1
2979               
2980               / SUBROUTINE TO TEST CHAR IN ACC FOR SMALL ALPHABETIC
2981               / RETURN .+1 IF NOT, .+2 IF GOOD SMALL ALPHABETIC
2982               
2983 004341  0000  TSTALS, 0
2984 004342  0172          AND [377]       /GET RID OF EXTRA GARBAGE
2985 004343  1367          TAD (-SMALLZ)
2986 004344  7540          SMA SZA
2987 004345  5351          JMP TSTAL2      /NOT ALPHABETIC
2988 004346  1371          TAD (SMALLZ-SMALLA)
2989 004347  7700          SMA CLA
2990 004350  2341          INC TSTALS      /RETURN .+2 IF GOOD SMALL ALPHABETIC
2991 004351  7300  TSTAL2, CLA CLL
2992 004352  5741          JMP I TSTALS    /RETURN .+1 IF NOT
2993               
2994               / .CONTROL CHARACTERS
2995               / .NOCONTROL CHARACTERS
2996               
2997 004353  7240  NOCCHR, STA
2998 004354  3114          DCA NOFLG       /SET "NO" FLAG
2999 004355  4540  CCHARS, WORDCK          /CHECK SPELLING OF "CHARACTERS"
3000 004356  5276            CCHRS
3001 004357  5361           JMP CHARCC
3002 004360  5563          BADCMD          /ILLEGAL COMMAND
3003               
3004 004361  1114  CHARCC, TAD NOFLG
3005 004362  3043          DCA SWCC        /SET THE SWITCH CORRECTLY
3006 004363  5566          EOCGO
3007               
3008 004367  7406  PAGE
     004370  7505  
     004371  0031  
     004372  7446  
     004373  0034  
     004374  7776  
     004375  7574  
     004376  7757  
     004377  0106  
3009               
3010               / BOTTOM OF PAGE BREAK
3011               
3012               
3013 004400  0000  FOOTER, 0
3014 004401  1041          TAD SWPAGE      /DO WE FORM PAGES?
3015 004402  7640          SKIPYES
3016 004403  5275          JMP BBRK56      /NO
3017 004404  3120          DCA NLINES      /NO LINES ON PAGE YET
3018 004405  4332          JMS HSAVE       /SAVE CURRENT LINE BUFFER
3019 004406  1040          TAD SWHEAD      /ANY FOOTER AT BOTTOM OF PAGE?
3020 004407  7640          SKIPYES
3021 004410  5237          JMP BBRK2       /NO, JUST OUTPUT FORM FEED
3022 004411  1034          TAD BOTTOM      /ANY PRINTOUT AT BOTTOM OF PAGE?
3023 004412  7440          SZA
3024 004413  4552          CRLF            /YES, FIRST OUTPUT "TOP" OF BOTTOM BREAK
3025 004414  1031          TAD HWORD       /HEADER WORD
3026 004415  7104          CLL RAL         /"BOTTOM" BIT TO LINK
3027 004416  4777          JMS OHEAD       /OUTPUT THE HEADER LINE
3028 004417  7200          CLA             /ACC IS -1 IF IT DIDN'T HAPPEN
3029 004420  1110          TAD FSWITC      /SIMULATE A FORM FEED?
3030 004421  7650          SNA CLA
3031 004422  5237          JMP BBRK2       /NO
3032 004423  1035          TAD BOTTOM+1    /TTY, OUTPUT TO A PAGE BREAK
3033 004424  7440          SZA
3034 004425  4552          CRLF
3035 004426  1376          TAD (-6)        /SIMULATE FORM FEED AND PAGE BREAK
3036 004427  3301          DCA BRKCTR
3037 004430  1300  BBRK0,  TAD BRKCHR      /PAGE BREAK IS "------"
3038 004431  4531          PUT
3039 004432  2301          ISZ BRKCTR
3040 004433  5230          JMP BBRK0
3041 004434  1167          TAD [215]       /FOLLOWED BY CARRIAGE RETURN
3042 004435  4531          PUT
3043 004436  5241          JMP BBRK21
3044               
3045 004437  1375  BBRK2,  TAD (214)       /OUTPUT A FORM FEED TO
3046 004440  4531          PUT             /GO TO TOP OF NEW PAGE
3047               
3048 004441  1107  BBRK21, TAD PSWITC      /PAUSE AT PAGE BREAK?
3049 004442  7650          SNA CLA
3050 004443  5256          JMP BBRK5       /NO, GO ON
3051               
3052 004444  6212  BBRK1,  CIF 10          /YES, DUMP THE BUFFER
3053 004445  4774          JMS I (XXDUMP)  /DUMP CURRENT BUFFER IF PAUSE
3054 004446  1373          TAD (207)       /BELL CHARACTER
3055 004447  4772          JMS TYPEIT      /PRINT IT OUT
3056 004450  6031  BBRK11, KSF
3057 004451  5250          JMP .-1         /WAIT AROUND UNTILL OPERATOR IS READY
3058 004452  6036          KRB             /READ THE CHAR
3059 004453  1371          TAD (-220)      /MUST HIT CTRL/P
3060 004454  7640          SZA CLA
3061 004455  5250          JMP BBRK11      /OTHERWISE, WAIT AROUND
3062               
3063               
3064 004456  4770  BBRK5,  JMS HREST       /RESTORE LINE BUFFER
3065 004457  1042          TAD SWSBPG
3066 004460  7640          SKIPYES         /OUTPUT SUBPAGE NO. ?
3067 004461  5273          JMP BBRK55      /NOPE
3068 004462  1021          TAD SUBPGN      /YES
3069 004463  1367          TAD (-"Z)       /ARE WE PAST THE LETTER "Z" ?
3070 004464  7640          SZA CLA
3071 004465  5271          JMP BBRK52      /NO, WE CAN INCREMENT SUBLETTER
3072 004466  4553          ERROR           /YES, GIVE ERROR MESSAGE
3073 004467  0214          TEXT \BL\
     004470  0000  
3074                       *.-1
3075 004470  7410          SKP
3076 004471  2021  BBRK52, INC SUBPGN      /INCREMENT SUBLETTER
3077 004472  7410          SKP
3078 004473  2121  BBRK55, INC PAGENO      /INCREMENT PAGE NUMBER
3079 004474  7000          NOP
3080 004475  7240  BBRK56, STA
3081 004476  3122          DCA TOPSW       /WE NEED A TOP HEADER
3082                                       /WE USED TO SET NLINES HERE BUT THE RESULT
3083                                       /WAS THAT ROUTINES AT THE TOP OF A NEW PAGE
3084                                       /WOULD GET TWO DIFFERENT VALUES FOR NLINES
3085 004477  5600          JMP I FOOTER    /RETURN TO CALLER
3086               
3087 004500  0255  BRKCHR, "-              /MAY BE CHANGED TO SPACE BY OPTION
3088 004501  0000  BRKCTR, 0
3089               
3090               /CONTINUATION OF CRLF FOR BOTTOM OF PAGE
3091               /WE STOP ANY CARRY  OVER OF LINES
3092               
3093 004502  4200  CRLFX4, JMS FOOTER      /PRINT OUT FOOTER SPACING AT LEAST
3094 004503  4766          JMS NLPARM      /NEW LINE STUFF
3095 004504  4557          POPA            /GET CRLF COUNT OFF THE STACK
3096 004505  5564          POPJ            /RETURN NO BLANKS AT TOP OF PAGE
3097               
3098               / PART OF GETC ROUTINE
3099               / COME HERE IF ^, &, ', ", OR \
3100               / PROCESSING SPECIAL CHARS (^^, ^&, ^', ^", \\, \&, \', \")
3101               
3102               
3103 004506  1123  GETMODE,TAD SORTCN
3104 004507  1365          TAD (ULFLAGS)
3105 004510  3100          DCA PTR1        /POINTS TO CORRECT FLAG CHARACTER FLAG
3106 004511  1500          TAD I PTR1      /CAN WE USE THIS FLAG CHARACTER?
3107 004512  7640          SKIPYES
3108 004513  5764          JMP GETCXR      /NO, JUST RETURN
3109 004514  1123          TAD SORTCN      /YES
3110 004515  1363          TAD (MODES)
3111 004516  3100          DCA PTR1
3112 004517  1500          TAD I PTR1
3113 004520  3100          DCA PTR1        /POINTS TO CORRECT MODE WORD
3114 004521  1072          TAD LOWONE
3115 004522  3500          DCA I PTR1      /SET THE MODE (UP/LOW, UNDERLINE, CAP)
3116 004523  3072          DCA LOWONE      /DON'T FORCE NEXT CHAR LOWERCASE
3117 004524  1123          TAD SORTCN
3118 004525  1362          TAD (GETRJM)
3119 004526  3100          DCA PTR1        /FIGURE OUT WHERE TO RETURN
3120 004527  1500          TAD I PTR1
3121 004530  3100          DCA PTR1        /ACTUAL LOC TO RETURN TO
3122 004531  5500          JMP I PTR1      /AND RETURN THERE
3123               
3124               / SAVE THE CURRENT LINE BUFFER
3125               
3126 004532  0000  HSAVE,  0
3127 004533  1005          TAD CHRCNT      /NO. OF CHARS IN OUTPUT LINE
3128 004534  7041          CIA
3129 004535  3343          DCA HSAVCT      /SAVE FOR SAVELIST MAYBE
3130 004536  1005          TAD CHRCNT      /GET IT AGAIN
3131 004537  7450          SNA
3132 004540  5344          JMP HSAVE5      /NOTHING ON LINE, SKIP SAVING
3133 004541  1361          TAD (LINE-1)
3134 004542  4560          SAVELIST        /SAVE THIS STUFF FROM THE LINE
3135 004543  0000  HSAVCT,  0
3136 004544  1005  HSAVE5, TAD CHRCNT      /GET LINE COUNT
3137 004545  4556          PUSHA           /AND SAVE IT
3138 004546  1360          TAD (RMARG      /SAVE THE MARGIN STUFF
3139 004547  4560          SAVELIST
3140 004550  7775           -3             /ALMARG,LMARG,RMARG
3141 004551  7201          CLA IAC         /SET MARGINS TO WIDTH
3142 004552  3052          DCA LMARG
3143 004553  1022          TAD PWIDTH
3144 004554  3053          DCA RMARG
3145 004555  4766          JMS NLPARM
3146 004556  5732          JMP I HSAVE
3147               
3148               
3149 004560  0053  PAGE
     004561  6373  
     004562  6200  
     004563  6327  
     004564  1476  
     004565  6264  
     004566  1135  
     004567  7446  
     004570  2754  
     004571  7560  
     004572  3757  
     004573  0207  
     004574  3035  
     004575  0214  
     004576  7772  
     004577  5000  
3150               
3151               / DO A TOP OF PAGE BREAK
3152               / CALLED BY "PUSHJ;PRTHEAD"
3153               
3154               
3155 004600  1122  PRTHEAD,TAD TOPSW       /ARE WE AT TOP OF PAGE?
3156 004601  7650          SNA CLA
3157 004602  5564          POPJ            /NO, RETURN
3158 004603  3122          DCA TOPSW       /NO LONGER WE AIN'T
3159 004604  7240          STA             /NO TEXT ON PAGE YET
3160 004605  3127          DCA TXTFLG
3161 004606  4777          JMS HSAVE       /SAVE CURRENT LINE BUFFER
3162 004607  1041          TAD SWPAGE      /DO WE FORM PAGES?
3163 004610  7640          SKIPYES
3164 004611  5304          JMP TBRK3       /NO, JUST RETURN
3165 004612  3120          DCA NLINES      /NO LINES ON PAGE NOW
3166 004613  1365          TAD KDOWN       /TOP BINDING MARGIN
3167 004614  7440          SZA             /NO TOP MARGIN?
3168 004615  4350          JMS LFPUT       /PUT THAT MANY LINE FEEDS
3169 004616  1040          TAD SWHEAD      /DO WE DO A HEADING?
3170 004617  7640          SKIPYES
3171 004620  5304          JMP TBRK3       /NO, JUST SET UP LINES ON NEXT PAGE
3172 004621  1032          TAD TOP         /DO "TOP" OF TOP OF PAGE
3173 004622  7440          SZA
3174 004623  4552          CRLF            /SKIP APPROPRIATE NO. OF LINES
3175 004624  1031          TAD HWORD
3176 004625  7104          CLL RAL         /GET "TOP" BIT TO LINK
3177 004626  7020          CML             /IT IS COMPLEMENT
3178 004627  4776          JMS OHEAD       /DO THE TOP OF PAGE HEADER LINE
3179 004630  1065          TAD TITFLG      /DO WE DO TITLE STUFF?
3180 004631  7640          SKIPYES         /OHEAD RETURNS INFO ON FIRST PAGE AS ACC=-1
3181 004632  5266          JMP TBRK23      /NO, FORGET THE SPACING TOO
3182 004633  7330          CLA STL RAR
3183 004634  3117          DCA OUTCTR
3184 004635  1121          TAD PAGENO      /CHECK FOR EVEN OR ODD
3185 004636  7110          CLL RAR         /EVEN ODD TO LINK
3186 004637  7630          SZL CLA         /GET APPROPRIATE BUFFER
3187 004640  1375          TAD (ODBUFF-EVBUFF
3188 004641  1374          TAD (EVBUFF-1
3189 004642  3244          DCA .+2         /FOR THE MOVE COOMMAND
3190 004643  4773          JMS MOVEL       /GET IT MAYBE
3191 004644  5545            EVBUFF-1
3192 004645  5250          JMP TBRK1       /NOTHING THERE
3193 004646  4337          JMS PRJUST      /PRINT IT JUSTIFIED
3194 004647  5256          JMP TBRK2       /THIS REPLACES TITLE
3195 004650  4773  TBRK1,  JMS MOVEL       /YES, MOVE TITLE LINE TO LINE BUFFER
3196 004651  5423            TITLEB-1
3197 004652  5256          JMP TBRK2       /NO TITLE
3198 004653  4772          JMS CENTER      /CENTER THE TITLE
3199 004654  4562          PUSHJ           /PRINT IT
3200 004655  3400            PRINT
3201 004656  4552  TBRK2,  CRLF
3202 004657  4773          JMS MOVEL       /YES, MOVE TO LINE BUFFER
3203 004660  5322            SBTTLB-1
3204 004661  5265          JMP TBRK22      /NO SUBTITLE
3205 004662  4772          JMS CENTER      /CENTER IT, TOO
3206 004663  4562          PUSHJ           /AND PRINT IT
3207 004664  3400            PRINT
3208 004665  4552  TBRK22, CRLF
3209 004666  1033  TBRK23, TAD TOP+1       /THEN NO. OF LINES TO BODY
3210 004667  7440          SZA
3211 004670  4552          CRLF
3212 004671  7240          STA             /THERE IS NO TEXT ON THIS PAGE
3213 004672  3127          DCA TXTFLG      /AT LEAST NOT YET.
3214 004673  1065          TAD TITFLG      /ARE WE DOING TITLES
3215 004674  7650          SKIPNO
3216 004675  7326          CLA STL RTL     /2 LINES FOR TITLE AND SUBTITLE
3217 004676  7001          IAC             /2 AT THE BOTTOM TOO
3218 004677  1032          TAD TOP         /CALCULATE BODY LENGTH
3219 004700  1033          TAD TOP+1
3220 004701  1034          TAD BOTTOM
3221 004702  1035          TAD BOTTOM+1
3222 004703  7041          CIA
3223 004704  1024  TBRK3,  TAD PLENGTH
3224 004705  3120          DCA NLINES      /NO. OF LINES IN MAIN BODY
3225 004706  1070          TAD FNFLAG
3226 004707  7640          SZA CLA         /PROCESSING A FOOTNOTE?
3227 004710  5333          JMP TBRK31      /YES, RETURN IMMEDIATELY
3228 004711  1066          TAD DEFERN      /DEFERRED FIGURE COUNT
3229 004712  7041          CIA
3230 004713  1120          TAD NLINES      /CAN IT FIT
3231 004714  7750          SPA SNA CLA
3232 004715  5335          JMP TBRK4       /NO, ERROR
3233 004716  1066          TAD DEFERN
3234 004717  7440          SZA
3235 004720  4552          CRLF            /SKIP APPROPRIATE NO. OF LINES
3236 004721  3066          DCA DEFERN      /AND CLEAR DEFERRED FIGURE CT.
3237 004722  1067          TAD FNCTR       /FOOTNOTE ON THIS PAGE?
3238 004723  7041          CIA
3239 004724  1120          TAD NLINES
3240 004725  7510          SPA
3241 004726  5335          JMP TBRK5       /CAN'T FIT
3242 004727  3120          DCA NLINES      /YES, RESET LINE CTR
3243 004730  1067          TAD FNCTR       /NO. OF LINES ON NEXT PAGE
3244 004731  3071          DCA FNLINE      /INITIALIZE FOOTNOTE COUNTER
3245 004732  3067          DCA FNCTR       /NO MORE FOOTNOTES YET
3246 004733  4771  TBRK31, JMS HREST       /RESTORE THE LINE BUFFER
3247 004734  5564          POPJ            /GO RETURN
3248               
3249               TBRK5,
3250 004735  4555  TBRK4,  ERRORF          /PAGE OVERFLOW ON DEFERRED FIGURE OR FOOTNOTE
3251 004736  2006          TEXT \PF\
     004737  0000  
3252                       *.-1
3253               
3254               /SUBROUTINE TO PRINT THE CURRENT LINE WITH JUSTIFY ON
3255               
3256 004737  0000  PRJUST, 0
3257 004740  1054          TAD SWJUST      /OK, SAVE JUSTIFY MODE
3258 004741  3350          DCA TBTEMP      /SAVE IT FOR NOW
3259 004742  3054          DCA SWJUST      /WE WILL TRY TO JUSTIFY
3260 004743  4562          PUSHJ
3261 004744  1200            JUSTIFY
3262 004745  1350          TAD TBTEMP
3263 004746  3054          DCA SWJUST      /RESTORE JUSTIFY
3264 004747  5737          JMP I PRJUST
3265               
3266               / SUBROUTINE TO OUTPUT LINEFEEDS TO DEVICE - AT LEAST ONE
3267               
3268               TBTEMP,
3269 004750  0000  LFPUT,  0
3270 004751  7450          SNA
3271 004752  7001          IAC             /IF 0 ASSUME 1
3272 004753  7041          CIA
3273 004754  3076          DCA CTR1        /MAKE COUNT
3274 004755  1370          TAD (212)
3275 004756  4531          PUT
3276 004757  2076          ISZ CTR1
3277 004760  5355          JMP .-3
3278 004761  5750          JMP I LFPUT
3279               
3280               /WE WILL ALLOW A LIMITED USED OF THE DOWN PARAMETER FROM WITHIN THE FILE
3281               
3282 004762  4543  CDOWN,  NUMPOS          /A GOOD NUMBER NEEDED
3283 004763  3365          DCA KDOWN
3284 004764  5566          EOCGO
3285               
3286 004765  0000  KDOWN,  0
3287               
3288 004770  0212  PAGE
     004771  2754  
     004772  4000  
     004773  5722  
     004774  5545  
     004775  0101  
     004776  5000  
     004777  4532  
3289               
3290               / SUBROUTINE TO OUTPUT THE HEADER LINE AT THE APPROPRIATE POSITION
3291               / THE LINK BIT IS SET IF THIS IS TIME TO OUTPUT IT
3292               
3293               
3294 005000  0000  OHEAD,  0
3295 005001  7620          SNL CLA
3296 005002  5311          JMP OHEAD6      /DON'T OUTPUT THE LINE
3297 005003  7240          STA             /DO WE PRINT IT ON THIS PAGE?
3298 005004  1121          TAD PAGENO      /ONLY IF GREATER THAN 0
3299 005005  7510          SPA
3300 005006  5311          JMP OHEAD6      /NO TITLE ON 0
3301 005007  1036          TAD TFIRSW      /-1 IF NO, 0 IF YES
3302 005010  7510          SPA             /RETURN -1 IF WE DON'T PRINT HEADER
3303 005011  5311          JMP OHEAD6      /NO TITLE ON PAGE 1
3304 005012  7200          CLA             /CLEAN IT UP
3305 005013  1046          TAD SWPNUM      /DO WE OUTPUT PAGE NUMBER?
3306 005014  7640          SKIPYES
3307 005015  5311          JMP OHEAD6      /NO
3308 005016  7340          CLL STA         /ACC = -1 LINK = 0
3309 005017  4316          JMS CHAPQ       /MOVE IT IN UNLESS NUMBER COMES FIRST
3310 005020  1031          TAD HWORD
3311 005021  0377          AND (3)         /CHECK OUT "NUMBER, UPPER, LOWER, MIXED"
3312 005022  4312          JMS ACCJMP      /JMP TO OFFSET BELOW
3313 005023  5233            JMP OHEAD3    /"NUMBER" NO WORD
3314 005024  1376            TAD (PAGEU-PAGEL) /"UPPER"
3315 005025  1375            TAD (PAGEL-PAGEM) /"LOWER"
3316 005026  1374            TAD (PAGEM-1) /"MIXED"
3317 005027  3231          DCA .+2         /SAVE CORRECT "PAGE "
3318 005030  4773          JMS MOVEL       /MOVE CORRECT "PAGE " TO LINE
3319 005031  0000  OHTEMP,   0
3320 005032  0255  HDCHAR, "-              /THIS LOCATION ALWAYS SKIPPED
3321 005033  1031  OHEAD3, TAD HWORD       /CHECK ROMAN, ARABIC
3322 005034  7006          RTL             /BIT TO LINK
3323 005035  7200          CLA             /CLEAR FOR NUMBER
3324 005036  1121          TAD PAGENO      /CONVERT THE NUMBER TO ASCII OR ROMAN
3325 005037  7430          SZL
3326 005040  4772          JMS BINROM      /CONVERT TO ROMAN - SKIP TWO ON RETURN
3327 005041  4545          BINPRT
3328 005042  5744            OTSAVE        /SAVE NUMBER THIS WAY
3329 005043  1042          TAD SWSBPG      /HOW ABOUT SUBLETTER?
3330 005044  7640          SKIPYES
3331 005045  5250          JMP .+3         /NONE YET
3332 005046  1021          TAD SUBPGN      /YES,
3333 005047  4771          JMS OTSAVE      /SAVE THE SUBLETTER ON LINE, TOO
3334 005050  1031          TAD HWORD       /WHERE TO PUT IT ON LINE?
3335 005051  7006          RTL             /CHECK SPLIT
3336 005052  7700          SMA CLA         /IS IT?
3337 005053  5262          JMP OHEAD8      /NO, REGULAR CHECK
3338 005054  7201          CLA IAC         /LEFT MARG SETUP
3339 005055  3051          DCA ALMARG
3340 005056  7300          CLA CLL         /PRINT NOW IF NUM - CHAP
3341 005057  4316          JMS CHAPQ       /MAYBE NUMBER THEN CHAPTER
3342 005060  4770          JMS PRJUST      /PRINT IT JUSTIFIED
3343 005061  5311          JMP OHEAD6      /NO CRLF IT'S DONE ALREADY
3344 005062  1031  OHEAD8, TAD HWORD       /CHECK OTHERS
3345 005063  7012          RTR
3346 005064  0377          AND (3)         /"LEFT, RIGHT, CENTER, ALTER"
3347 005065  4312          JMS ACCJMP      /GO TO CORRECT OFFSET
3348 005066  5302            JMP OHEAD5    /"LEFT"
3349 005067  5275            JMP OHEAD4    /"RIGHT"
3350 005070  5305            JMP OHEAD7    /"CENTER"
3351 005071  1121          TAD PAGENO      /"ALTER"
3352 005072  7110          CLL RAR         /CHECK IF PAGE NUMBER IS EVEN OR ODD
3353 005073  7620          SNL CLA
3354 005074  5302          JMP OHEAD5      /"LEFT" FOR EVEN
3355 005075  7240  OHEAD4, STA             /"RIGHT" IF ODD
3356 005076  1115          TAD LENOL
3357 005077  7041          CIA
3358 005100  1022          TAD PWIDTH      /PWIDTH-LENOL+1
3359 005101  7410          SKP             /SET UP FOR CORRECT MARGINS
3360 005102  7201  OHEAD5, CLA IAC         /AGAINST LEFT MARGIN IF "LEFT"
3361 005103  3051          DCA ALMARG      /SET LEFT MARGIN CORRECTLY
3362 005104  7410          SKP
3363 005105  4767  OHEAD7, JMS CENTER      /CENTER THE HEADER LINE - IF CENTER IGNORE SPLIT
3364 005106  4562  OHEAD2, PUSHJ
3365 005107  3400            PRINT
3366 005110  4552          CRLF            /BLANK LINE IF NO HEADER
3367 005111  5600  OHEAD6, JMP I OHEAD     /RETURN TO CALLER
3368                                       /RETURN ACC = -1 IF NO HEADER LINE WAS PRINTED
3369               
3370               /SUBROUTINE TO JUMP TO OFFSET IN THE ACC
3371               
3372               CHATMP,
3373 005112  0000  ACCJMP, 0
3374 005113  1312          TAD ACCJMP
3375 005114  3312          DCA ACCJMP
3376 005115  5712          JMP I ACCJMP
3377               
3378               /MOVE CHAPTER BUFFER TO OUTPUT
3379               /ACC AND LINK SET  IF THIS IS TIME FOR CHAP - NUMBER
3380               /ACC AND LINK CLEAR IF THIS IS TIME FOR NUMBER - CHAPTER
3381               
3382 005116  0000  CHAPQ,  0
3383 005117  3356          DCA CHAPQF      /SAVE ACC FLAG
3384 005120  1031          TAD HWORD       /CHECK OPTIONS
3385 005121  0366          AND (1014       /SPLIT, ALTER ETC
3386 005122  3312          DCA CHATMP      /SAVE IT A MINUTE
3387 005123  7001          IAC             /NOW EVEN, ODD
3388 005124  0121          AND PAGENO
3389 005125  1312          TAD CHATMP      /ALL TOGETHER NOW
3390 005126  7010          RAR             /BRING IN THE LINK, EVEN ODD TO LINK
3391 005127  1365          TAD (-400       /ZERO IF SPLIT AND LEFT
3392 005130  7450          SNA
3393 005131  5335          JMP .+4         /NOT NOW
3394 005132  7010          RAR             /NOW EVEN ODD AND ALTER AND EVEN
3395 005133  1364          TAD (-4003
3396 005134  7650          SNA CLA         /WAS IT ALTER AND EVEN AND NOW
3397 005135  7001          IAC             /NOW FOR SNESE
3398 005136  1356          TAD CHAPQF
3399 005137  7650          SNA CLA
3400 005140  5716          JMP I CHAPQ     /NOT NOW
3401 005141  1356          TAD CHAPQF      /HOW ARE WE DOING THIS?
3402 005142  7640          SZA CLA
3403 005143  5346          JMP .+3
3404 005144  1232          TAD HDCHAR      /HEADER CHARACTER FIRST - NUMBER, CHAPTER
3405 005145  4771          JMS OTSAVE
3406 005146  4773          JMS MOVEL
3407 005147  5524            CHBUFF-1      /OK, MOVE IT IN
3408 005150  5716          JMP I CHAPQ     /HOW ABOUT THAT, NOTHING THERE
3409 005151  2356          ISZ CHAPQF      /CHECK FLAG AGAIN
3410 005152  5716          JMP I CHAPQ     /WE ALREADY DID IT
3411 005153  1232          TAD HDCHAR
3412 005154  4771          JMS OTSAVE      /SAVE THE DIVIDER
3413 005155  5716          JMP I CHAPQ     /AND RETURN
3414               
3415 005156  0000  CHAPQF, 0
3416               
3417 005164  3775  PAGE
     005165  7400  
     005166  1014  
     005167  4000  
     005170  4737  
     005171  5744  
     005172  5437  
     005173  5722  
     005174  3540  
     005175  7764  
     005176  0006  
     005177  0003  
3418               
3419               / .TAB STOPS N1,N2,...,N32
3420               / SETS TAB STOPS IN TAB TABLE (MAX OF 32(10))
3421               
3422               TABGET,
3423 005200  1114  TABSTP, TAD NOFLG
3424 005201  7640          SKIPYES         /NO TABS?
3425 005202  5241          JMP NOTABS      /OK, DO IT
3426 005203  1377          TAD (TABS-1)    /INTIALIZE PTR, CTR, INITIAL CHAR
3427 005204  3243          DCA TABPTR
3428 005205  1376          TAD (-40)
3429 005206  3244          DCA TABCTR
3430 005207  3312          DCA TABCOL      /NOT AT ANY COLUMN NOW
3431 005210  3576  TABG2,  DCA I [CMDLINE] /SO WE CAN GET A NEW NUMBER
3432 005211  4542          NUMCHK          /GET A NUMBER MAYBE
3433 005212  5217          JMP TABG3       /NOTHING TO CONVERT, TRY NEXT NUMBER
3434 005213  1643          TAD I TABPTR    /USE CURRENT TAB STOP SETTING
3435 005214  2243          INC TABPTR
3436 005215  4544          RELQ
3437 005216  3643          DCA I TABPTR    /AND SAVE IT
3438 005217  1643  TABG3,  TAD I TABPTR    /CHECK FOR LEGALITY OF ORDER
3439 005220  7510          SPA
3440 005221  5235          JMP TABG4       /NO TABS CAN BE < 0
3441 005222  7041          CIA
3442 005223  1312          TAD TABCOL      /CURRENT TAB COLUMN
3443 005224  7700          SMA CLA
3444 005225  5235          JMP TABG4       /TABS OUT OF ORDER
3445 005226  1102          TAD CHAR        /GOOD TAB STOP, CHECK ENDING CHAR
3446 005227  4550          EOCQ
3447 005230  5240          JMP TABG5       /END OF COMMAND, RETURN
3448 005231  1643          TAD I TABPTR    /CURRENT TAB STOP
3449 005232  3312          DCA TABCOL
3450 005233  2244          ISZ TABCTR      /ALL TABS CHECKED?
3451 005234  5210          JMP TABG2       /NO, GET ANOTHER ONE
3452 005235  4553  TABG4,  ERROR           /TOO MANY TAB STOPS
3453 005236  2423          TEXT \TS\
     005237  0000  
3454                       *.-1
3455 005237  3643          DCA I TABPTR    /CLEAR LAST ONE OUT
3456 005240  5566  TABG5,  EOCGO
3457               
3458 005241  3775  NOTABS, DCA I (TABS)    /ZERO THE FIRST ONE
3459 005242  5240          JMP TABG5       /AND RETURN
3460 005243  0000  TABPTR, 0
3461 005244  0000  TABCTR, 0
3462               
3463               / .TABS ABSOLUTE OR .TABS RELATIVE OR JUST TABS OR TABS STOPS
3464               
3465 005245  4537  TABSAR, COMCHK          /CHECK FOR ANYTHING AFTER "TABS"
3466 005246  5166            TABSLJ-1
3467 005247  3546            TABSJS-1
3468 005250  1576          TAD I [CMDLINE]
3469 005251  7450          SNA             /ANYTHING AT ALL
3470 005252  5200          JMP TABSTP      /ASSUME TAB STOPS
3471 005253  5563          BADCMD          /NOPE, ILLEGAL COMMAND
3472               
3473 005254  7240  TABREL, STA             /SET FOR RELATIVE TAB STOPS
3474 005255  3074  TABABS, DCA TABFLG      /SET FOR ABSOLUTE TAB STOPS
3475 005256  5240          JMP TABG5       /CONVENIENTLY ON THIS PAGE
3476               
3477               /CODE TO PLACE SEQUENCE NUMBERS IN BINDING MARGIN IF REQUESTED
3478               
3479               SEQMRC,                 /NUMBERS OVERSTRUCK ON UNDERLINED LINES
3480 005257  0000  PUTSEQ, 0
3481 005260  1126          TAD SEQFLG
3482 005261  7640          SKIPYES         /ARE WE DOING THIS?
3483 005262  5657          JMP I PUTSEQ    /NO, JUST RETURN WITH HIS ARG
3484 005263  3077          DCA SEQCTR      /ZERO THE CHAR COUNT
3485 005264  1125          TAD INPAGE      /FIRST THE INPUT PAGE
3486 005265  4545          BINPRT
3487 005266  5305            SEQSAV        /OUR OWN OUTPUT ROUTINE
3488 005267  1374          TAD (".         /TO SEPARATE PAGE FROM LINE
3489 005270  4531          PUT
3490 005271  1124          TAD INLINE      /NOW THE LINE
3491 005272  4545          BINPRT
3492 005273  5305            SEQSAV
3493 005274  1077          TAD SEQCTR      /HOW MANY NUMBERS
3494 005275  7040          CMA             /OFF BY THE "."
3495 005276  1311          TAD SEQMRG      /HOW MUCH SHOULD WE USE
3496 005277  7500          SMA             /ERROR IF PAST IT
3497 005300  5303          JMP SEQSPC
3498 005301  4553          ERROR
3499 005302  2315          TEXT \SM\
     005303  0000  
3500                       *.-1
3501               
3502 005303  4773  SEQSPC, JMS TSPACE
3503 005304  5657          JMP I PUTSEQ
3504               
3505               SEQTMP,
3506 005305  0000  SEQSAV, 0
3507 005306  2077          ISZ SEQCTR
3508 005307  4531          PUT
3509 005310  5705          JMP I SEQSAV
3510               
3511               
3512 005311  0006  SEQMRG, 6               /NORMALLY 2 PAGE 1 DOT 2 LINE
3513               
3514               SEQCTR=CTR2
3515               
3516               / SUBROUTINE TO CONVERT NUMBER IN ACC TO DECIMAL ASCII CHARACTERS
3517               / LEADING ZEROES ARE IGNORED
3518               
3519               
3520               TABCOL,                 /TRY TO CLEAN THIS UP LATER?????
3521 005312  0000  BINASC, 0
3522 005313  6211          CDF 10          /NUMBER FOR ROUTINE IN FLD 1
3523 005314  3772          DCA BINNUM      /SAVE THE NUMBER
3524 005315  6201          CDF 0           /NOW GET OUTPUT ARG
3525 005316  1712          TAD I BINASC    /GET OUTPUT ROUTINE
3526 005317  3330          DCA BINOTR
3527 005320  2312          ISZ BINASC      /SKIP OVER ARG
3528 005321  6201  BINALP, CDF 0           /FOR THE LOOP
3529 005322  6212          CIF 10          /ROUTINE IN FLD 1
3530 005323  4771          JMS BINCHR      /GET A CHAR
3531 005324  7450          SNA             /NULL ENDS NUMBER
3532 005325  5712          JMP I BINASC    /SO RETURN
3533 005326  4730          JMS I BINOTR    /OUTPUT THE NUMBER
3534 005327  5321          JMP BINALP      /GET NEXT CHAR
3535               
3536 005330  5744  BINOTR, OTSAVE          /THIS IF NONE OTHER
3537               
3538               / USE NUMBER IN ACC AS BASE OF LAST CONVERSION
3539               / DEPENDING UPON SETTINGS OF "CVRTQ" AND "RELFLG"
3540               
3541 005331  0000  RELQX,  0
3542 005332  3345          DCA RELQTM      /SAVE ACC AS WE MIGHT USE IT
3543 005333  1105          TAD CVRTQ       /DID CONVERSION TAKE PLACE?
3544 005334  7650          SNA CLA
3545 005335  5343          JMP RELQ2       /NO, JUST USE NUMBER WE CAME IN WITH
3546 005336  1106          TAD RELFLG      /YES, WAS IT RELATIVE?
3547 005337  7640          SZA CLA
3548 005340  1345          TAD RELQTM      /YES, ADD OR SUBTRACT BASE NUM
3549 005341  1103          TAD NUMBER      /NO, ABSOLUTE: USE THE NEW NUMBER
3550 005342  5731          JMP I RELQX
3551               
3552 005343  1345  RELQ2,  TAD RELQTM      /NO CONVERSION
3553 005344  5731          JMP I RELQX     /USE WHAT WE ENTERED WITH
3554               
3555 005345  0000  RELQTM, 0
3556               
3557               
3558               
3559               /CONTINUATION OF FOOTNOTE TO SET UP PARAMETERS AND RETURN TO INPUT
3560               
3561 005346  7201  FIXRET, CLA IAC
3562 005347  3052          DCA LMARG       /SET LEFT MARGIN TO 1
3563 005350  1022          TAD PWIDTH
3564 005351  3053          DCA RMARG       /SET RIGHT MARGIN TO PAGE WIDTH
3565 005352  7240          STA
3566 005353  3056          DCA LSPACE      /SET SINGLE SPACING
3567 005354  3057          DCA PARAGN      /NO PARAGRAPH INDENTION
3568 005355  7240          STA
3569 005356  3060          DCA MODE        /SET LOWER CASE MODE
3570 005357  7240          STA
3571 005360  3062          DCA CFMODE      /NO CAPITALIZATION
3572 005361  7240          STA
3573 005362  3061          DCA UNMODE      /NO UNDERLINING
3574 005363  3054          DCA SWJUST      /JUSTIFY MODE
3575 005364  3055          DCA SWFILL      /FILL MODE
3576 005365  4770          JMS NLPARM      /SET UP NEW PARAMETERS
3577 005366  5565          RETURN          /TO DO THE FOOTNOTE
3578               
3579 005370  1135  PAGE
     005371  3700  
     005372  3750  
     005373  3527  
     005374  0256  
     005375  6333  
     005376  7740  
     005377  6332  
3580               
3581               / IGNORE SPACES OR TABS ON COMMAND LINE
3582               / OR LEADING SPACES OR TABS AT BEGINNING OF PARAGRAPH.
3583               
3584 005400  0000  SPNORX, 0
3585 005401  1102          TAD CHAR
3586 005402  1177          TAD [-" ]
3587 005403  7450          SNA
3588 005404  5210          JMP .+4         /SPACE, IGNORE IT
3589 005405  1377          TAD (" -211)
3590 005406  7640          SZA CLA
3591 005407  5600          JMP I SPNORX    /NON-SPACE OR TAB, RETURN
3592 005410  4532          GETC            /TAB OR SPACE, IGNORE IT
3593 005411  5201          JMP SPNORX+1
3594               
3595               / .INDENT N
3596               / USE AS INDENTION FOR THIS LINE
3597               
3598               
3599 005412  4541  INDENT, GETNUM          /GET NO. TO INDENT LEFT MARG
3600 005413  4547          BREAK
3601 005414  4220          JMS INDEN3      /CHECK FOR MARGIN VIOLATIONS
3602 005415  1103          TAD NUMBER      /OK, DO IT
3603 005416  4776          JMS NLPARM      /SET UP LINE FOR THIS LINE
3604 005417  5566          EOCGO
3605               
3606 005420  0000  INDEN3, 0               /CHECK ROUTINE USED BY PARAG TOO
3607 005421  7240          STA
3608 005422  1103          TAD NUMBER
3609 005423  1052          TAD LMARG
3610 005424  7700          SMA CLA         /ILLEGAL LEFT MARG?
3611 005425  5230          JMP INDEN2      /NO, USE AS LEFT MARG FOR THIS LINE
3612 005426  4554  INDEN1, ERRORC          /BAD MARGIN
3613 005427  0215          TEXT \BM\
     005430  0000  
3614                       *.-1
3615               
3616 005430  1053  INDEN2, TAD RMARG       /CHECK AGAINST RIGHT MARGIN
3617 005431  7041          CIA
3618 005432  1103          TAD NUMBER
3619 005433  1052          TAD LMARG
3620 005434  7700          SMA CLA
3621 005435  5226          JMP INDEN1      /PAST RIGHT MARGIN, ERROR
3622 005436  5620          JMP I INDEN3    /OK, RETURN FOR ACTION
3623               
3624               
3625               /SUBROUTINE TO CONVERT NUMBER TO ROMAN NUMERALS
3626               /NUMBERS WRAP AT 2047
3627               
3628 005437  0000  BINROM, 0
3629 005440  0375          AND (3777       /STRIP OFF SIGN BIT IF SET
3630 005441  3343          DCA ROMNUM      /OUR NUMBER SAVING PLACE
3631 005442  2237          ISZ BINROM      /SKIP THE JMS BINASC ON RETURN
3632 005443  2237          ISZ BINROM
3633 005444  1374          TAD (BNRT       /INIT THE VALUE POINTER
3634 005445  3100          DCA PTR1        /A GENERAL POINTER
3635 005446  1373          TAD (BNRC       /THE CHARACTER LIST
3636 005447  3076          DCA CTR1        /WE USE IT AS A POINTER
3637 005450  1372          TAD (BNRC+2     /SUBTRACTING CHAR
3638 005451  3077          DCA CTR2        /LIKEWISE ABOVE
3639 005452  5277          JMP BNRI        /ENTER ROUTINE IN THE MIDDLE
3640               
3641 005453  1500  BNR0,   TAD I PTR1      /GET A VALUE 0F MINUS FIVER
3642 005454  1343          TAD ROMNUM      /CHECK THE NUMBER
3643 005455  7510          SPA             /LARGER?
3644 005456  5263          JMP BNR1        /NO, CHECK MORE
3645 005457  3343          DCA ROMNUM      /YES, REPLACE IT
3646 005460  1476          TAD I CTR1      /GET THIS CHAR
3647 005461  4771          JMS OTSAVE      /AND SAVE IT
3648 005462  7330          STL CLA RAR     /AC4000 TO SKIP NEXT TEST
3649 005463  2100  BNR1,   ISZ PTR1        /CHECK REGULAR VALUE
3650 005464  1500          TAD I PTR1      /IS IT 1 LESS THAN FIVER
3651 005465  7510          SPA
3652 005466  5274          JMP BNR2        /NO, IT IS LESS THAN THAT
3653 005467  3343          DCA ROMNUM      /YES, SAVE THIS VALUE
3654 005470  1477          TAD I CTR2      /GET REVERSE COUPLE
3655 005471  4771          JMS OTSAVE
3656 005472  1476          TAD I CTR1
3657 005473  4771          JMS OTSAVE      /I.E. "CD" OR "IV"
3658 005474  2076  BNR2,   ISZ CTR1        /MOVE UP THE POINTERS NOW
3659 005475  2077          ISZ CTR2
3660 005476  2077          ISZ CTR2
3661 005477  7200  BNRI,   CLA             /COME HERE FIRST
3662 005500  1500          TAD I PTR1      /CHECK FOR UNIT DROPS
3663 005501  7041          CIA             /MAKE DROP NEGATIVE
3664 005502  1343          TAD ROMNUM
3665 005503  7510          SPA             /LARGER?
3666 005504  5311          JMP BNR3        /NO, CHECK REVERSE
3667 005505  3343          DCA ROMNUM      /YES, SAVE REDUCED NUMBER
3668 005506  1476          TAD I CTR1      /AND OUTPUT THE CHAR
3669 005507  4771          JMS OTSAVE
3670 005510  5277          JMP BNRI        /CHECK THIS SOME MORE
3671 005511  2100  BNR3,   ISZ PTR1        /BUMP TO NEXT UNIT
3672 005512  2100          ISZ PTR1        /OVER THE FIVER
3673 005513  1500          TAD I PTR1      /CHECK FOR SUCH AS "IX"
3674 005514  7510          SPA             /DID IT MAKE IT?
3675 005515  5323          JMP BNR4        /NO, CLEAN UP
3676 005516  3343          DCA ROMNUM      /YES, SAVE ADJUSTED NUMBER
3677 005517  1477          TAD I CTR2      /AND PRINT REVERSE PAIR
3678 005520  4771          JMS OTSAVE
3679 005521  1476          TAD I CTR1
3680 005522  4771          JMS OTSAVE
3681 005523  7200  BNR4,   CLA             /CHECK FOR ALL DONE
3682 005524  1343          TAD ROMNUM      /IS IT ZERO
3683 005525  7750          SNA SPA CLA     /OR NEGATIVE???
3684 005526  5637          JMP I BINROM    /ZERO IS NOT ROMAN
3685 005527  7240          STA             /NO, DECREMENT BACK TO FIVER
3686 005530  1100          TAD PTR1
3687 005531  3100          DCA PTR1        /THE VALUE POINTER
3688 005532  2076          ISZ CTR1        /ADJUST THE OTHER CHAR POINTER
3689 005533  5253          JMP BNR0        /AND DO IT ALL SOME MORE
3690               
3691                       DECIMAL
3692 005534  1750  BNRT,   1000
3693 005535  7014          -500
3694 005536  0144          100
3695 005537  7716          -50
3696 005540  0012          10
3697 005541  7773          -5
3698 005542  0001          1
3699                       OCTAL
3700               
3701 005543  0000  ROMNUM, 0
3702 005544  0000  ROMZRO, 0               /MUST BE HERE FOR CONVERSION
3703 005545  0355  BNRC,   "M+40; "D+40; "C+40; "L+40; "X+40; "V+40; "I+40
     005546  0344  
     005547  0343  
     005550  0354  
     005551  0370  
     005552  0366  
     005553  0351  
3704               
3705               / POPJ  RETURN FROM LAST PUSHJ
3706               
3707 005554  4557  POPJX,  POPA            /GET RETURN FROM TOP OF STACK
3708 005555  3007          DCA PPTEMP      /SAVE IT FOR JUMP
3709 005556  5407          JMP I PPTEMP    /RETURN TO CALLER
3710               
3711               /.FIRST TITLE - PRINT HEADER INFORMATION OF FIRST PAGE
3712               
3713 005557  4540  FSTTL,  WORDCK
3714 005560  5005            TITWRD        /"TITLE"
3715 005561  5363          JMP FSTTL1
3716 005562  5563          BADCMD
3717               
3718 005563  1114  FSTTL1, TAD NOFLG
3719 005564  3036          DCA TFIRSW      /SET OR CLEAR THE FLAG
3720 005565  5566          EOCGO
3721               
3722 005571  5744  PAGE
     005572  5547  
     005573  5545  
     005574  5534  
     005575  3777  
     005576  1135  
     005577  0027  
3723               
3724               /.NOTE, .NT, .LS, .EN, .ELS
3725               /CONVENIENCE COMMANDS FOR NOTE AND TEMPORARY LEFT MARGIN
3726               /CURRENT MARGINS SAVED ON STACK.  THE TWO COMMANDS USE A COMMON COUNT
3727               /AND A COMMON MARGIN RESTORATION ROUTINE
3728               
3729 005600  4224  NOTEDO, JMS NTLSUB      /SET UP AND SAVE CURRENT MARGS
3730 005601  1127          TAD TXTFLG      /ANY TEXT YET?
3731 005602  7650          SKIPNO
3732 005603  4552          CRLF            /ANOTHER BLANK LINE
3733 005604  1103          TAD NUMBER      /EITHER HIS OR THE DEFAULT
3734 005605  7041          CIA
3735 005606  1053          TAD RMARG
3736 005607  3053          DCA RMARG       /NEW RIGHT MARGIN
3737 005610  4255          JMS CKMRGS      /DON'T LET MARGINS INTERSECT
3738 005611  1052          TAD LMARG       /GET PARAMETER FOR CENTERING
3739 005612  1053          TAD RMARG
3740 005613  3777          DCA CWIDTH      /SAVE FOR CENTERING
3741 005614  4562          PUSHJ
3742 005615  3706            CENTNT        /CENTER LINE OR NEXT
3743 005616  4552          CRLF            /LEAVE ANOTHER BLANK LINE
3744 005617  5565          RETURN
3745               
3746 005620  4224  LSDO,   JMS NTLSUB      /LIST COMMAND
3747 005621  4255          JMS CKMRGS
3748               /       JMP NOFILL      /SET NOFILL AND SET UP NEW LINES
3749 005622  4547          BREAK           /PUT IN NEW MARGS
3750 005623  5304          JMP LSGO        /DECSYSTEM-10 LEAVES FILL ALONE
3751               
3752 005624  0000  NTLSUB, 0               /SET UP AND SAVE MARGS FOR NOTE
3753 005625  4547          BREAK           /OUTPUT THE CURRENT LINE
3754 005626  1376          TAD (-5)        /ONLY 5 ALLOWED
3755 005627  1305          TAD NTCNT
3756 005630  7700          SMA CLA
3757 005631  5306          JMP NTERR       /TOO MANY NOTES
3758 005632  1127          TAD TXTFLG      /ANY TEXT ON PAGE?
3759 005633  7650          SKIPNO
3760 005634  4552          CRLF            /LEAVE A BLANK LINE
3761 005635  1375          TAD (LMARG+3    /SAVE THE LEFT MARGIN
3762 005636  4560          SAVELIST        /SAVE THE MARGS
3763 005637  7774            -4            /SAVE JUSTIFY AND FILL ALSO
3764 005640  4542          NUMCHK
3765 005641  7410          SKP             /NO NUMBER THERE
3766 005642  5250          JMP NTL6        /YES, USE HIS NUMBER
3767 005643  1305          TAD NTCNT       /IS THIS THE FIRST NOTE OR LS
3768 005644  7650          SNA CLA
3769 005645  1374          TAD (5)         /10 FOR FIRST, 5 FOR REST
3770 005646  1373          TAD (4)
3771 005647  3103          DCA NUMBER      /SAVE IT WHERE HE WANT'S IT
3772 005650  2305  NTL6,   INC NTCNT       /MOVE UP COUNT
3773 005651  1103          TAD NUMBER
3774 005652  1052          TAD LMARG
3775 005653  3052          DCA LMARG       /NEW LEFT MARGIN
3776 005654  5624          JMP I NTLSUB    /RETURN TO DO IT
3777               
3778 005655  0000  CKMRGS, 0               /CHECK FOR VALID MARGINS
3779 005656  1052          TAD LMARG
3780 005657  7041          CIA
3781 005660  1376          TAD (-5)
3782 005661  1376          TAD (-5)
3783 005662  1053          TAD RMARG       /AT LEAST 10 SPACES ON LINE
3784 005663  7740          SMA SZA CLA
3785 005664  5655          JMP I CKMRGS    /IT IS OK
3786 005665  4553          ERROR
3787 005666  1615            TEXT \NM\
     005667  0000  
3788                       *.-1
3789 005667  4561          RESTORE         /DON'T CHANGE THE MARGS
3790 005670  1375          TAD (LMARG+3
3791 005671  4560          SAVELIST        /SAVE THEM BACK
3792 005672  7774            -4
3793 005673  5655          JMP I CKMRGS    /PRETEND NO ERROR
3794               
3795 005674  7240  ENNOTE, STA             /DECREMENT THE NOTE COUNT
3796 005675  1305          TAD NTCNT
3797 005676  7510          SPA             /ARE WE OK?
3798 005677  5306          JMP NTER1
3799 005700  3305          DCA NTCNT       /SAVE THE NEW COUNT
3800 005701  4561          RESTORE         /PUT THE MARGS BACK
3801 005702  4547          BREAK           /SET UP THE MARGS AND PRINT CURRENT
3802 005703  4552          CRLF            /LEAVE A TRAILING BLANK LINE
3803 005704  5566  LSGO,   EOCGO
3804               
3805 005705  0000  NTCNT,  0
3806               NTERR,
3807 005706  4554  NTER1,  ERRORC
3808 005707  1623           TEXT \NS\
     005710  0000  
3809                       *.-1
3810               
3811               / .END
3812               / CHECK OUT NEXT WORD FOR LEGAL COMMAND
3813               
3814 005710  4537  END,    COMCHK          /CHECK WORD AFTER "END"
3815 005711  5132            ENDWORD-1
3816 005712  5122            ENDWJ-1
3817 005713  1576          TAD I [CMDLINE]
3818 005714  7450          SNA             /NONE AT ALL
3819 005715  5274          JMP ENNOTE      /JUST END IS END NOTE
3820 005716  5563          BADCMD          /BAD SPELLING, ILLEGAL COMMAND
3821               
3822               /RESET COMMAND FOR MULTIPLE DOCUMENTS
3823               
3824 005717  4547  RESET,  BREAK           /DUMP LINE IF ANY
3825 005720  3122          DCA TOPSW       /GO TOP OF PAGE
3826 005721  5772          JMP PRTGO       /SET UP ALMOST EVERYTHING
3827               
3828               / SUBROUTINE TO MOVE A BUFFER TO OUTPUT LINE
3829               /SKIPS IF ANYTHING IS MOVED
3830               
3831 005722  0000  MOVEL,  0
3832 005723  7240          STA
3833 005724  3343          DCA MOVTMP      /MARK THE FLAG
3834 005725  1722          TAD I MOVEL     /ADDR-1 OF BUFF
3835 005726  2322          INC MOVEL
3836 005727  3011          DCA AUTOX2
3837 005730  6211  MOVLP,  CDF 10          /LINES IN FLD 1
3838 005731  1411          TAD I AUTOX2
3839 005732  6201          CDF 0
3840 005733  7450          SNA
3841 005734  5340          JMP MOVLRT      /0 ENDS THE STRING
3842 005735  4344          JMS OTSAVE      /SAVE THE TITLE WAY
3843 005736  3343          DCA MOVTMP      /WE DID IT
3844 005737  5330          JMP MOVLP
3845               
3846 005740  2343  MOVLRT, ISZ MOVTMP      /SKIPS IF NO MOVE
3847 005741  2322          ISZ MOVEL
3848 005742  5722          JMP I MOVEL
3849               
3850 005743  0000  MOVTMP, 0
3851               
3852               / SAVE A CHAR IN OUTPUT BUFFER FROM OTITLE ROUTINES
3853               
3854 005744  0000  OTSAVE, 0
3855 005745  4533          OSAVE           /SAVE IN OUTPUT BUFFER
3856 005746  5744          JMP I OTSAVE    /RETURN IF O.K.
3857 005747  4553          ERROR           /LONG TITLE OR WHATEVER, NO MORE ROOM
3858 005750  1410          TEXT \LH\
     005751  0000  
3859                       *.-1
3860 005751  5771          JMP OHEAD6      /NOW PREPARE TO RETURN
3861               
3862               /.TABS QUOTE, .NTQ, .NO TABS QUOTE
3863               
3864 005752  7240  NTBQOT, STA
3865 005753  3114          DCA NOFLG
3866 005754  1114  TABQOT, TAD NOFLG       /ON OR OFF?
3867 005755  7650          SKIPNO          /OFF
3868 005756  1171          TAD [400]       /SET QUOTE BIT
3869 005757  1174          TAD [" ]        /OR JUST SPACE
3870 005760  3030          DCA TABCHR      /FOR THE TAB CHARACTER
3871 005761  5566          EOCGO
3872               
3873 005771  5111  PAGE
     005772  0203  
     005773  0004  
     005774  0005  
     005775  0055  
     005776  7773  
     005777  4025  
3874               
3875               
3876               / PUT CHAR TO OS/8 OUTPUT FILE
3877               
3878               
3879 006000  0000  PUTX,   0
3880 006001  3220          DCA PUTCHR      /SAVE THE OUTPUT CHAR
3881 006002  1111          TAD USWITC      /FORCE UPPER CASE?
3882 006003  7650          SNA CLA
3883 006004  5213          JMP PUTX2       /NO, JUST PASS CHAR
3884 006005  1220          TAD PUTCHR
3885 006006  4777          JMS TSTALS      /TEST FOR SMALL ALPHABETICS
3886 006007  5213           JMP PUTX2      /NOT SMALL CHAR
3887 006010  1220          TAD PUTCHR      /GET THE CHAR
3888 006011  0173          AND [7737]
3889 006012  3220          DCA PUTCHR      /MAKE THE UPPER CASE CHAR
3890 006013  7300  PUTX2,  CLA CLL
3891 006014  1220          TAD PUTCHR      /GET THE GOOD OUTPUT CHAR
3892 006015  6212          CIF 10
3893 006016  4776          JMS I (XXPUT)   /OUTPUT TO OS/8 FILE
3894 006017  5600          JMP I PUTX
3895               
3896 006020  0000  PUTCHR, 0
3897               
3898               /PART OF GETC STUFF FOR UPPER CASE AND LOWER CASE
3899               
3900 006021  1775  GETUP,  TAD UCFLAG
3901 006022  7640          SKIPYES
3902 006023  5774          JMP GETCX4      /NOT USING UPPER CASE FLAG CHARACTER
3903 006024  5231          JMP GETUP2      /LOCK OR UPPER = 0000
3904               
3905 006025  1773  GETLOW, TAD LCFLAG
3906 006026  7640          SKIPYES
3907 006027  5774          JMP GETCX4      /NOT USING LOWER CASE FLAG CHARACTER
3908 006030  7240          STA             /UNLOCK OR LOWER = 7777
3909 006031  3072  GETUP2, DCA LOWONE      /SAVE UPPER OR LOWE SET
3910 006032  4530          GET
3911 006033  3102          DCA CHAR        /GET CHAR AFTER ^ OR \
3912 006034  1102          TAD CHAR
3913 006035  4535          SORTJ           /CHECK IT OUT AGAINST
3914 006036  6313            UPLOWC-1      / ^, &, ', \
3915 006037  0000            0
3916 006040  5772           JMP GETMODE    /YES IT IS
3917 006041  1072          TAD LOWONE
3918 006042  7040          CMA
3919 006043  3073          DCA UPONE       /SET UPONE AS COMPLEMENT OF LOWONE
3920 006044  5771          JMP GETCX3      /NOT, JUST PLAY WITH CHARACTER
3921               
3922               /ROUTINES TO COMPLETE THE GETC CODING FOR INDEX AND HYPHEN
3923               
3924 006045  1770  GETHYP, TAD HYPFLG      /CHECK IF HYPHENATING
3925 006046  7640          SKIPYES
3926 006047  5774          JMP GETCX4      /NO, A NORMAL CHAR
3927 006050  1367          TAD (HYPINT     /GET INTERNAL HYPHEN CODE
3928 006051  3102  TRANGO, DCA CHAR        /AND USE IT INSTEAD
3929 006052  5766          JMP GETCX7+1    /AND RETURN IT
3930               
3931 006053  1765  GETCSB, TAD SUBFLG      /ARE WE IN A SUBINDEX COMMAND?
3932 006054  7640          SKIPYES
3933 006055  5260          JMP SDXSUB      /NO, CHECK FOR INDEX
3934 006056  3271          DCA SBCFLG      /YES, MAKE FLAG YES
3935 006057  5764          JMP GETCX2      /AND GET NEXT CHAR
3936 006060  1102  SDXSUB, TAD CHAR
3937 006061  4535          SORTJ           /CHECK REST OF CHARS AGAIN
3938 006062  6312            NDXCHR-1
3939 006063  7676            SUBJMP-NDXCHR
3940 006064  5774          JMP GETCX4      /NO, IT'S NOT THE SAME
3941               
3942 006065  1763  GETCDX, TAD NDXFLG      /ARE WE USING INDEX
3943 006066  7640          SKIPYES
3944 006067  5774          JMP GETCX4      /NO, JUST NORMAL
3945               /       TAD ANGINT      /YES TRANSLATE TO INTERNAL
3946               /       JMP TRANGO      /USE OTHER RETURN
3947 006070  5762          JMP GETCX1      /IGNORE FOR NOW
3948               
3949 006071  0000  SBCFLG, 0               /THIS CODE IS NOT EXECUTED IN 8K MACHINES
3950               
3951                       IFNZRO DOINDX <
3952               
3953               /.INDEX, .FLAG INDEX, .SUBINDEX ETC.
3954               /.FLAG INDEX MUST BE STUBBED, THE OTHERS CAN ALL BE NOT YET IMPLEMENTED
3955               /THE CODE WILL NOT BE EXECUTED ALTHOUGH PRESENT
3956               /MAJOR INDEX CODE IS IN FIELD 1
3957               
3958               
3959               /CODE FOR .INDEX COMMAND
3960               
3961               NDXIN,  PUSHA           /PUT A ZERO ON THE STACK
3962               NDXGO,  GETC            /GET NEXT CHAR
3963                       SZA             /IS IT THE EOL
3964                       JMP NDXIN       /NO, KEEP GETTING
3965                       JMS I NDXMKL    /OK, MAKE THE ENTRY
3966                       RETURN          /NEXT LINE
3967               
3968               /CODE FOR SUBINDEX COMMAND
3969               
3970               SUBIDX, PUSHA           /PUT ON A ZERO FOR FIELD 1
3971                       DCA SUBFLG      /LET GETC KNOW WE ARE HERE
3972                       GETC            /GET ANOTHER CHAR
3973               SUBNDX, TAD SBCFLG      /SUB, SUB?
3974                       SKIPNO
3975                       JMP SUBNTY      /GO TO A SUBENTRY
3976                       TAD CHAR        /IS IT AN END OF COMMAND CHAR?
3977                       EOCQ
3978                       JMP ENDNTY      /YES, END IT
3979                       TAD CHAR        /NO, SAVE IT ON STACK
3980                       PUSHA
3981                       JMP SUBNDX-1    /GET ANOTHER CHAR
3982               
3983               SUBNTY, STA
3984                       DCA SBCFLG      /TURN IT OFF NOW
3985                       CIF 10          /GO TO INDEX SEARCH FOR BRANCH
3986                       JMP I NDXLCL    /DON'T PUT IN PAGE BLOCK
3987               
3988               ENDNTY, STA
3989                       DCA SUBFLG      /TURN OFF SUBINDEX FLAG
3990                       CIF 10          /AND MARK THIS ENTRY
3991                       JMS I NDXMKL    /PUT IT IN THE INDEX
3992                       EOCGO
3993               
3994                       SUBLNG=.-SUBIDX
3995               /HOW LONG WAS THAT?
3996               NDXMKL, HLTINS
3997               NDXLCL, HLTINS
3998               
3999               /SIMILAR CODE FOR NDXPUT TO ACTUALLY LOCATE ENTRIES IN THE INDEX
4000               /THE CONSTRUCTION ..FOO..BAR DENOTES A SUBINDEX ELEMENT
4001               /SIMILARLY TO .X FOO..BAR
4002               /THE CONSTRUCTION BOO#BOO CREATES THE INDEX ENTRY BOO BOO
4003               
4004               /THIS CODE WILL BE OVERLAYED IN THE 12K VERSIONS AT RUN TIME
4005               
4006               NDXPUT, 0               /CALLED FROM THE SAVE ROUTINE FOR INDEX
4007                       TAD SAVCHR      /STUB FOR NOW, JUST CHECK THE CHAR
4008                       SNA             /THE END?
4009                       JMP SAVCL2      /YES, BACK TO NORMAL
4010                       JMP I NDXPUT    /NO, MORE CHARS TO THE BIT BUCKET
4011               
4012               ZBLOCK SUBLNG           /RESERVE ENOUGH ROOM
4013                       NDXEND=.
4014               
4015                       NDXOUT=200
4016               NDXPRT, CDF CIF 10      /PRINT OUT INDEX CODING IS IN FIELD 1
4017                       JMP I .+1       /IT WILL LIE IN THE CURRENT FOOTNOTE
4018                       NDXOUT          /AND FUNCTION BY FOOLING THE GET
4019               
4020               >
4021               
4022               / .UPPER CASE (.UC)
4023               / .LOWER CASE (.LC)
4024               
4025 006072  7240  LOWER,  STA             /LOWER = 7777
4026 006073  3103  UPPER,  DCA NUMBER      /UPPER = 0000
4027 006074  4540          WORDCK          /MAKE SURE OF COMMAND
4028 006075  5273            CASEWD
4029 006076  5302           JMP ULCASE     /IS GOOD COMMAND
4030 006077  5563          BADCMD          /ILLEGAL COMMAND
4031               
4032 006100  7240  LCASE,  STA             /LOWER CASE = 7777
4033 006101  3103  UCASE,  DCA NUMBER      /UPPER CASE = 0000
4034 006102  1103  ULCASE, TAD NUMBER      /GET THE APPROPRIATE CASE
4035 006103  3060          DCA MODE        /SET MODE
4036 006104  5566          EOCGO
4037               
4038               
4039               / .AUTOCAPITALIZE
4040               / .NO AUTOCAPITALIZE
4041               
4042 006105  7240  NAUTOC, STA
4043 006106  3114          DCA NOFLG       /SET "NO" FLAG
4044 006107  1114  AUTCAP, TAD NOFLG
4045 006110  3044          DCA SWCAP       /SET AUTOCAP-NOAUTOCAP FLAG
4046 006111  1044          TAD SWCAP
4047 006112  3314          DCA CAPSW       /SAVE THE FLAG, TOO
4048 006113  5566  COVGO,  EOCGO
4049               
4050 006114  0000  CAPSW,  0
4051               
4052               /A LITTLE ROUTINE TO SAVE SOME SPACE BY CHECKING NUMBERS
4053               
4054 006115  0000  NUMCKX, 0
4055 006116  4541          GETNUM          /CONVERT A NUMBER MAYBE
4056 006117  1105          TAD CVRTQ       /DID WE GET ONE?
4057 006120  7640          SZA CLA
4058 006121  2315          ISZ NUMCKX      /SKIP IF YES
4059 006122  5715          JMP I NUMCKX    /OTHERWISE TO REGULAR
4060               
4061               
4062               /THE OVER COMMAND MAY BE INCLUDED IN THE FILE BUT IF IT
4063               /APPEARS ON THE COMMAND LINE, OVER IN THE DOCUMENT IS IGNORED
4064               
4065 006123  1761  COVER,  TAD KOVERE      /DID WE GET ONE IN COMMAND LINE?
4066 006124  7640          SZA CLA         /WE ONLY TAKE THE FIRST
4067 006125  5342          JMP COVNO       /YES, DON'T DO IT
4068 006126  4543          NUMPOS          /GET A GOOD POSITIVE NUMBER
4069 006127  7000          NOP
4070 006130  3761          DCA KOVERE      /EITHER A GOOD ONE OR 0
4071 006131  3576          DCA I [CMDLINE
4072 006132  4543          NUMPOS          /IS THERE ANOTHER?
4073 006133  5313          JMP COVGO       /NO, GO ON BACK
4074 006134  3760          DCA KOVERO      /SAVE IT
4075 006135  1761          TAD KOVERE      /GET LEFT EVEN
4076 006136  7041          CIA
4077 006137  1760          TAD KOVERO
4078 006140  3760          DCA KOVERO      /SAVE THE DIFFERENCE
4079 006141  5313          JMP COVGO
4080               
4081 006142  4543  COVNO,  NUMPOS          /GET THE POSITIVE NUMBER
4082 006143  5313          JMP COVGO       /THERE WASN'T ONE
4083 006144  7200          CLA             /TO GET ANOTHER ARG MAYBE
4084 006145  3576          DCA I [CMDLINE
4085 006146  4543          NUMPOS          /WAS THERE ANOTHER
4086 006147  5313          JMP COVGO
4087 006150  7200          CLA
4088 006151  5313          JMP COVGO       /IGNORE IT ANYWAY
4089               
4090 006160  3512  PAGE
     006161  3511  
     006162  1402  
     006163  6263  
     006164  1404  
     006165  6262  
     006166  1500  
     006167  1655  
     006170  6261  
     006171  1406  
     006172  4506  
     006173  6267  
     006174  1435  
     006175  6264  
     006176  3000  
     006177  4341  
4091               
4092               
4093 006200  1402  GETRJM, GETCX1
4094 006201  1402          GETCX1
4095 006202  1531          GETCFL
4096 006203  1402          GETCX1
4097               
4098 006204  1506  CMDJMP, GETSP
4099 006205  1513          GETCHR
4100 006206  1522          GETCWD
4101 006207  6045          GETHYP
4102 006210  6053          GETCSB
4103 006211  6065  SUBJMP, GETCDX
4104 006212  6021          GETUP
4105 006213  1501          GETUN
4106 006214  1531          GETCFL
4107 006215  6025          GETLOW
4108               
4109               
4110               / CONSTANTS USED THROUGHOUT PROGRAM
4111               
4112 006216  0254  CMDLST, ",
4113 006217  0241  EOCLST, "!
4114 006220  0273          ";
4115 006221  0256          ".
4116 006222  0240          240
4117 006223  0211          211
4118 006224  0000          0               /THE EOL CHAR
4119               
4120               
4121               
4122 006225  4126  CMDLJ,  GTCOM
4123 006226  4130          COMMENT
4124 006227  4125          CMDEND
4125 006230  4125          CMDEND
4126 006231  4116          GETNOQ
4127 006232  4116          GETNOQ
4128 006233  4125          CMDEND          /0 (EOL) = SPACE
4129               
4130               / SOME LEFTOVER SPACE FOR MISCELLANEOUS
4131               
4132 006234  0000  CMDLINE,ZBLOCK  20      /THE COMMAND LINE BUFFER
     006235  0000  
     006236  0000  
     006237  0000  
     006240  0000  
     006241  0000  
     006242  0000  
     006243  0000  
     006244  0000  
     006245  0000  
     006246  0000  
     006247  0000  
     006250  0000  
     006251  0000  
     006252  0000  
     006253  0000  
4133               
4134               
4135               / COMMAND FLAGS
4136               / 0 = CHARACTER USED, 7777 = CHAR FLAG NOT USED
4137               /ALL FLAGS ARE ASSEMBLED OFF FOR THE EXTENDED OPTION CHECKING
4138               /THEIR ACTUAL INITIAL VALUES ARE SET BY THE INIT CODE
4139               /AND MAY BE SEEN IN THE BACKUP TABLE WHICH FOLLOWS
4140               
4141               CMDFLAGS,
4142 006254  0000  CTFLAG, YES             /., COMMAND FLAG (ALWAYS USED)
4143 006255  0000  EFFLAG, YES             /!, END OF FOOTNOTE FLAG (ALWAYS USED)
4144 006256  7777  SPFLAG, NO              /#, FORCED SPACE CHARACTER
4145 006257  7777  QUFLAG, NO              /_, QUOTE CHARACTER PRECEDENT
4146 006260  7777  CQFLAG, NO              /<, CAPITALIZE ENTIRE WORD
4147 006261  7777  HYPFLG, NO              /-, HYPHENATE OPTIONALLY
4148 006262  7777  SUBFLG, NO              />, SUBINDEX INDICATOR
4149 006263  7777  NDXFLG, NO              />, INLINE INDEX INDICATOR
4150               ULFLAGS,                /ONLY LOCKABLE FLAGS BELOW HERE
4151 006264  7777  UCFLAG, NO              /^, UPPER CASE PRECEDENT
4152 006265  7777  UNFLAG, NO              /&, UNDERLINE CHAR PRECEDENT
4153 006266  7777  CFFLAG, NO              /', CAPITALIZE FIRST CHARS
4154               
4155               /THIS MUST BE THE LAST LOCATION IN THE FLAG TABLE
4156               
4157 006267  7777  LCFLAG, NO              /\, LOWER CASE PRECEDENT
4158                       FLGEND=.
4159               
4160               / BACKUP FLAG  TABLE
4161               / 0 = CHARACTER USED, 7777 = CHAR FLAG NOT USED
4162               /TABLE MUST DUPLICATE THE ACTIVE FLAG TABLE
4163               
4164               FLGBKU,
4165 006270  0000          YES             /., COMMAND FLAG (ALWAYS USED)
4166 006271  0000          YES             /!, END OF FOOTNOTE FLAG (ALWAYS USED)
4167 006272  0000          YES             /#, FORCED SPACE CHARACTER
4168 006273  0000          YES             /_, QUOTE CHARACTER PRECEDENT
4169 006274  7777          NO              /", CAPITALIZE ENTIRE WORD
4170 006275  7777          NO              /-, HYPHENATE OPTIONALLY
4171 006276  7777          NO              />, SUBINDEX INDICATOR
4172 006277  7777          NO              />, INLINE INDEX INDICATOR
4173               
4174 006300  0000          YES             /^, UPPER CASE PRECEDENT
4175 006301  0000          YES             /&, UNDERLINE CHAR PRECEDENT
4176 006302  7777          NO              /', CAPITALIZE FIRST CHARS
4177 006303  0000          YES             /\, LOWER CASE PRECEDENT
4178               
4179               /FLAG CHARACTERS
4180               
4181 006304  0256  CTLCHR, ".
4182 006305  0241  EFCHAR, "!
4183               
4184 006306  0243  CMDCHR, "#
4185 006307  0337          "_
4186 006310  0274          "<
4187 006311  0255  CMDHYP, "-
4188 006312  0276  SUBCHR, ">
4189 006313  0276  NDXCHR, ">
4190 006314  0336  UPLOWC, "^              /FROM HERE DOWN, LOCKABLE
4191 006315  0246          "&
4192 006316  0247          "'
4193 006317  0334          "\
4194 006320  0000          0
4195               
4196               /END OF FLAG CHARACTERS
4197               /LOWER CASE PRECEDENT FLAG IS LAST
4198               
4199 006321  0211  CTRLS,  211; 212; 213; 214; 215; 0
     006322  0212  
     006323  0213  
     006324  0214  
     006325  0215  
     006326  0000  
4200               
4201 006327  0060  MODES,  MODE
4202 006330  0061          UNMODE
4203 006331  0062          CFMODE
4204 006332  0060          MODE
4205               
4206               / DO NOT PUT A "PAGE" PSEUDO-OP HERE!!!


4207               EJECT
4208                       MAXWIDTH=204    /132(10) = WIDTH OF LONGEST OUTPUT LINE
4209               
4210                       DOT=.
4211               
4212               TABS=DOT;       DOT=DOT+40+1     /32 TAB STOPS
4213               
4214               LINE=DOT;       DOT=DOT+MAXWIDTH /MAX SIZE IS 132(10)
4215               
4216               IFNZRO 6600-DOT&4000 <
4217               HNDSPC, 0
4218                       ZZZZ
4219               >
4220               *TABS+200&7600
4221               
4222               /SIZE THE CORE SO WE CAN OPTIMIZE SOME BUFFERS AND MAYBE ADD SOME FEATURES
4223               /WE ONLY NEED TO DO THIS ONCE HENCE IT IS IN THE HANDLER SPACE
4224               
4225 006400  0000  GETCOR, 0
4226 006401  7300          CLA CLL         /THIS IS A STRAIGHT LIFT FROM THE BOOK
4227 006402  1777          TAD I (7777     /EXCEPT THIS OF COURSE, CHECK SOFTWARE CORE SIZE
4228 006403  0227          AND COR70       /IS IT SET?
4229 006404  7450          SNA
4230 006405  5212          JMP CORO        /NO, CALCULATE IT
4231 006406  7112          CLL RTR;RAR     /YES, JUST USE IT
     006407  7010  
4232 006410  7001          IAC             /IT IS ONE LARGER THOUGH
4233 006411  5243          JMP COREX+1
4234 006412  6201  CORO,   CDF 0
4235 006413  1251          TAD CORSIZ
4236 006414  7006          RTL;RAL         /GET IT UP IN PLACE
     006415  7004  
4237 006416  0227          AND COR70       /JUST THE FIELD
4238 006417  1242          TAD COREX       /AN INSTRUCTION
4239 006420  3221          DCA .+1         /EXECUTE IT HERE
4240 006421  6201  COR1,   CDF             /THIS GETS THE ONE THAT SAVES THE LOC MAYBE
4241 006422  1647          TAD I CORLOC
4242 006423  7000  COR2,   NOP             /HACK FOR PDP-8 IT MIGHT SKIP
4243 006424  3221          DCA COR1        /SAVE THIS A MINUTE
4244 006425  1223          TAD COR2        /7000 IS A GOOD PATTERN
4245 006426  3647          DCA I CORLOC    /NOW TRY A STORE
4246 006427  0070  COR70,  70              /ANOTHER NOP AND HACK FOR THE 8
4247 006430  1647          TAD I CORLOC    /CAN WE GET IT BACK
4248 006431  7400  CORX,   7400            /ONCE MORE THE POSSIBLE SKIP
4249 006432  1231          TAD CORX        /OK, CHECK IT
4250 006433  1250          TAD CORV
4251 006434  7640          SZA CLA
4252 006435  5242          JMP COREX       /DIDN'T GET THAT ONE
4253 006436  1221          TAD COR1        /GOT IT, RESTORE THE LOCATION
4254 006437  3647          DCA I CORLOC
4255 006440  2251          ISZ CORSIZ      /TRY ANOTHER
4256 006441  5212          JMP CORO
4257               
4258 006442  1251  COREX,  TAD CORSIZ
4259 006443  6211          CDF 10          /THIS IS TO PUT IT IN FLD 1
4260 006444  3776          DCA I (HOWBIG
4261 006445  6213          CDF CIF 10
4262 006446  5600          JMP I GETCOR    /OK, GO ON BACK
4263               
4264 006447  6431  CORLOC, CORX
4265 006450  1400  CORV,   1400
4266 006451  0001  CORSIZ, 1
4267               
4268 006452  5272  PRINTR, JMP CHNRES      /CHECK IF REAL CHAIN OR RESTART
4269 006453  4775          JMS VERPRT      /PRINT OUT WHO WE ARE
4270               
4271 006454  6212  GETCD,  CIF 10
4272 006455  4774          JMS I (7700)    /GET USR TO MEMORY
4273 006456  0010            10
4274 006457  6212          CIF 10
4275 006460  4773          JMS I (200)     /USR STILL IN MEMORY
4276 006461  0005            5             /CALL COMMAND DECODER
4277 006462  2217  TEXT      \RO\          /ASSUMED INPUT EXTENSION
     006463  0000  
4278                       *.-1            /KILL THE 0
4279 006463  6212  NOCD,   CIF 10
4280 006464  4772          JMS I (SETIO)   /SET UP I/O FOR US TO WORK WITH
4281 006465  6212          CIF 10          /OPTIONS IN FLD 1 TOO
4282 006466  4771          JMS OPTION      /GET OPTION SWITCHES
4283 006467  1370          TAD (7604       /DISABLE RESTART
4284 006470  3767          DCA I (SLOC
4285 006471  5766          JMP PRTGO+1     /OK, GO DO IT
4286               
4287 006472  6211  CHNRES, CDF 10
4288 006473  1765          TAD I (MPARAM-1) /CHECK ALTMODE FLAG
4289 006474  6201          CDF 0
4290 006475  7700          SMA CLA         /REAL OR RESTART
4291 006476  5254          JMP GETCD       /RESTART
4292 006477  5263          JMP NOCD        /WE REALLY WERE CHAINED
4293               
4294 006565  7642          PAGE
     006566  0204  
     006567  0202  
     006570  7604  
     006571  6624  
     006572  2000  
     006573  0200  
     006574  7700  
     006575  6600  
     006576  2065  
     006577  7777  
4295               
4296               /WE ONLY PRINT THE VERSION ONCE TOO
4297               
4298 006600  0000  VERPRT, 0               /PRINT OUT VERSION MESSAGE
4299 006601  1377          TAD (VERMESS-1) /PREPARE TO GIVE CURRENT VERSION NO.
4300 006602  3010          DCA AUTOX1
4301 006603  1410  PRTV,   TAD I AUTOX1    /GET AN ASCII CHAR
4302 006604  7450          SNA
4303 006605  5210          JMP VERLNQ      /LONG OR SHORT ID
4304 006606  4776          JMS TYPEIT      /PRINT THE CHAR
4305 006607  5203          JMP PRTV        /KEEP PRINTING CHARS
4306               
4307 006610  6031  VERLNQ, KSF             /PRINT IT?
4308 006611  5600          JMP I VERPRT    /NO, FORGET IT
4309 006612  6032          KCC             /YES, BUT KILL HIS CHAR
4310 006613  5203          JMP PRTV
4311               
4312 006614  0322  VERMESS,        "R;"U;"N;"O;"F;"F;" ;"V
     006615  0325  
     006616  0316  
     006617  0317  
     006620  0306  
     006621  0306  
     006622  0240  
     006623  0326  
4313 006624  0260          VERS1; VERS2; PATCH; 215; 212; 0
     006625  0266  
     006626  0302  
     006627  0215  
     006630  0212  
     006631  0000  
4314 006632  0303          "C;"O;"P;"Y;"R;"I;"G;"H;"T;" ;"1;"9;"7;"5; 215; 212
     006633  0317  
     006634  0320  
     006635  0331  
     006636  0322  
     006637  0311  
     006640  0307  
     006641  0310  
     006642  0324  
     006643  0240  
     006644  0261  
     006645  0271  
     006646  0267  
     006647  0265  
     006650  0215  
     006651  0212  
4315 006652  0327          "W;"E;"S;"T;" ;"V;"I;"R;"G;"I;"N;"I;"A;" 
     006653  0305  
     006654  0323  
     006655  0324  
     006656  0240  
     006657  0326  
     006660  0311  
     006661  0322  
     006662  0307  
     006663  0311  
     006664  0316  
     006665  0311  
     006666  0301  
     006667  0240  
4316 006670  0325          "U;"N;"I;"V;"E;"R;"S;"I;"T;"Y; 215; 212
     006671  0316  
     006672  0311  
     006673  0326  
     006674  0305  
     006675  0322  
     006676  0323  
     006677  0311  
     006700  0324  
     006701  0331  
     006702  0215  
     006703  0212  
4317 006704  0315          "M;"A;"I;"N;"T;"A;"I;"N;"E;"R;":;" 
     006705  0301  
     006706  0311  
     006707  0316  
     006710  0324  
     006711  0301  
     006712  0311  
     006713  0316  
     006714  0305  
     006715  0322  
     006716  0272  
     006717  0240  
4318 006720  0324          "T;".;" ;"W;".;" ;"M;"C;"I;"N;"T;"Y;"R;"E;215;212;0
     006721  0256  
     006722  0240  
     006723  0327  
     006724  0256  
     006725  0240  
     006726  0315  
     006727  0303  
     006730  0311  
     006731  0316  
     006732  0324  
     006733  0331  
     006734  0322  
     006735  0305  
     006736  0215  
     006737  0212  
     006740  0000  
4319               
4320               
4321 006776  3757          PAGE
     006777  6613  
4322               
4323               
4324                       INDEVH=6600     /INPUT DEVICE HANDLER ADDR
4325                       OUDEVH=7200     /OUTPUT DEVICE HANDLER ADDR


4326               EJECT
4327               / THESE ARE THE PAGE ZERO LITERALS FOR FIELD 0
4328               
4329 000167  0215          FIELD 1
     000170  7563  
     000171  0400  
     000172  0377  
     000173  7737  
     000174  0240  
     000175  0077  
     000176  6234  
     000177  7540  
4330               
4331                       FNBUFF=0        /THE FOOTNOTE BUFFER IS IN FIELD 1
4332                       FNBEND=1777     /BELOW THE GENERAL I/O ROUTINES
4333               
4334               / GENERALIZED I/O PACKAGE
4335               
4336               / BY: CLYDE G. ROBY, JR.
4337               / DEPARTMENT OF MEDICINE
4338               / WEST VIRGINIA UNIVERSITY
4339               / MORGANTOWN, WEST VIRGINIA
4340               / MARCH 24, 1972
4341               
4342                       FIELD 1         /EXECUTES IN FIELD 1
4343               
4344               *2000
4345               
4346               / ENTRY POINT IN FIELD 1 CALLED FROM FIELD 0
4347               
4348 012000  0000  SETIO,  0
4349 012001  6211          CDF 10          /WE'RE WORKING IN FIELD 1
4350 012002  3777          DCA USRSTAT     /USR IS IN CORE
4351 012003  1776          TAD I (7604)    /EXT FOR FIRST OUTPUT FILE
4352 012004  7450          SNA
4353 012005  1264          TAD OUFEXT      /ASSUME .WU FOR WRITE-UP
4354 012006  3776          DCA I (7604)
4355 012007  1775          TAD I (7600)
4356 012010  7640          SZA CLA         /IS THERE A MAIN OUTPUT FILE?
4357 012011  5234          JMP SETIO4      /YES, CHECK IF 2ND OUTPUT FILE
4358 012012  3216          DCA LPTDEV+1    /NO, TRY TO GET "LPT"
4359 012013  4774          JMS I (200)
4360 012014  0012            12            /INQUIRE WITHOUT FETCH
4361 012015  4020  LPTDEV,   LP+T0!4000    /COMPRESSED CODE FOR 'LPT'
4362 012016  0000            0             /DEVICE NUMBER GOES HERE
4363 012017  0000            0             /ADDR IF HANDLER IN CORE
4364 012020  5223          JMP TRYTTY      /LPT: NOT AVAILABLE, TRY TTY:
4365 012021  1216          TAD LPTDEV+1    /GET THE DEVICE NUMBER
4366 012022  5233          JMP GOTDEV      /WE HAVE THE DEVICE
4367               
4368 012023  3227  TRYTTY, DCA TTYDEV+1    /TRY TO GET "TTY"
4369 012024  4774          JMS I (200)
4370 012025  0012            12            /INQUIRE WITHOUT FETCH
4371 012026  5524  TTYDEV,   TT+Y0!4000    /COMPRESSED CODE FOR 'TTY'
4372 012027  0000            0
4373 012030  0000            0
4374 012031  7402          HLT             /WHAT!, NO TTY!!!
4375 012032  1227          TAD TTYDEV+1    /GET THE DEVICE NUMBER
4376               
4377 012033  3775  GOTDEV, DCA I (7600)    /SAVE AS OUTPUT DEVICE NO.
4378 012034  1375  SETIO4, TAD (7600)
4379 012035  3263          DCA OFILE2      /USE MAIN OUTPUT FILE
4380 012036  4773  SETIO5, JMS I (OOPEN)   /INITIALIZE OUTPUT ROUTINE
4381 012037  7700          SMA CLA         /DID OUTPUT ENTER FAIL?
4382 012040  5245          JMP SETIO7      /OK
4383 012041  7240          STA             /INHIBIT OUTPUT IF NO OUTPUT
4384 012042  3772          DCA OUTINH
4385 012043  4771          JMS ERRPRT
4386 012044  1717          TEXT \OO\
     012045  0000  
4387                       *.-1
4388 012045  4770  SETIO7, JMS I (IOPEN)   /INITIALIZE INPUT ROUTINE
4389 012046  4767          JMS I (OTYPE)   /GET "TYPE" OF OUTPUT DEVICE
4390 012047  1366          TAD (-PTP)      /IS IT THE PAPER TAPE PUNCH?
4391 012050  7640          SZA CLA
4392 012051  5257          JMP SETIO6      /NO, GO RETURN
4393 012052  1375          TAD (-200)
4394 012053  3262          DCA SETIO9
4395 012054  4765          JMS XXPUT       /OUTPUT SOME NULL CHARS
4396 012055  2262          ISZ SETIO9
4397 012056  5254          JMP .-2
4398 012057  4764  SETIO6, JMS PUTUSR      /OUTPUT THE USR
4399 012060  6203          CDF CIF 00
4400 012061  5600          JMP I SETIO
4401 012062  0000  SETIO9, 0
4402 012063  0000  OFILE2, 0
4403 012064  2725  OUFEXT, WU
4404               
4405                       WU="W-300^100+"U-300
4406               
4407                       TT="T-300^100+"T-300
4408                       Y0="Y-300^100
4409               
4410                       LP="L-300^100+"P-300
4411                       T0="T-300^100
4412               
4413 012065  0000  HOWBIG, 0               /HERE FOR NOW IT GETS THE MEMORY SIZE
4414               
4415               /THE FOLLOWING CODE CHECKS FOR END OF LINE OR COMMAND
4416               /IT IS ALWAYS CALLED FROM FLD ZERO AND RETURNS ON FINDING ITS THING
4417               
4418 012066  0000  ENDCHK, 0
4419               /**PATCH A--FIX PROBLEM WITH COMMENT...NOWICKI
4420 012067  7640          SZA CLA         /NON ZERO LOOK AT LAST CHAR
4421 012070  5301          JMP EOLCHK      /AND ONLY CHECK EOL
4422 012071  6211          CDF 10          /GET THE DF UP HERE NOW FOR XXGET
4423 012072  4763  ENDCKL, JMS XXGET       /GET THE NEXT CHAR
4424 012073  1362          TAD (-";        /IS THIS IT?
4425 012074  7450          SNA
4426 012075  5317          JMP ENDCKR      /YES, GO ON BACK NOW
4427 012076  1361          TAD (";         /RESTORE THE CHAR
4428 012077  4310          JMS EOLQQ       /MAYBE IT ENDED WITH EOL
4429 012100  5272          JMP ENDCKL      /NO, LOOK SOME MORE
4430               
4431 012101  1760  EOLCHK, TAD I (CHAR     /DF IS STILL 0 HERE
4432 012102  6211          CDF 10
4433 012103  7650          SNA CLA         /DID WE ALREADY GET IT?
4434 012104  5317          JMP ENDCKR
4435 012105  4763          JMS XXGET       /GET NEXT CHAR
4436 012106  4310          JMS EOLQQ       /CHECK FOR EOL
4437 012107  5305          JMP .-2         /NOT YET
4438               
4439 012110  0000  EOLQQ,  0               /CHECK FOR EOL CHARS, LF, FF, VT
4440 012111  1357          TAD (-215       /THIS IS ONE BOUNDARY
4441 012112  7500          SMA
4442 012113  5710          JMP I EOLQQ     /THAT WASN'T IT
4443 012114  1356          TAD (4
4444 012115  7710          SPA CLA
4445 012116  5710          JMP I EOLQQ     /THAT WASN'T EITHER
4446 012117  6203  ENDCKR, CDF CIF 00      /WE ALWAYS GO BACK TO 0
4447 012120  3760          DCA I (CHAR)    /CHAR IS NOW AN EFFECTIVE EOL
4448 012121  5666          JMP I ENDCHK
4449               
4450 012156  0004  PAGE
     012157  7563  
     012160  0102  
     012161  0273  
     012162  7505  
     012163  3104  
     012164  2721  
     012165  3000  
     012166  7760  
     012167  2674  
     012170  2201  
     012171  3600  
     012172  2673  
     012173  2400  
     012174  0200  
     012175  7600  
     012176  7604  
     012177  2720  
4451               
4452               / IOPEN:        INITIALIZE INPUT FILES
4453               
4454 012200  7400  IN7400, 7400            /*****MUST BE FIRST LOC OF PAGE*****
4455               
4456 012201  0000  IOPEN,  0
4457 012202  7240          CLA CMA
4458 012203  3333          DCA INCHCT      /SET INCHCT TO FORCE A READ
4459 012204  2363          ISZ INEOF       /SET E-O-F FLAG TO FORCE A NEW FILE
4460 012205  1377          TAD (7617
4461 012206  3362          DCA INFPTR      /RESET FILE POINTER
4462 012207  6214          RDF
4463 012210  1245          TAD INCDIF
4464 012211  3212          DCA .+1
4465 012212  7402  INPTR,  HLT             /RESTORE CALLING FIELDS
4466 012213  5601          JMP I IOPEN
4467               
4468               / ICHAR:        GET A CHAR FROM INPUT FILES
4469               /               RETURN TO .+1 IF ERROR (<0)
4470               /                       OR IF END-OF-FILE (>0)
4471               /               RETURN TO .+2 WITH CHAR IN ACC
4472               
4473 012214  0000  ICHAR,  0
4474 012215  7600  IN7600, 7600
4475 012216  6214          RDF
4476 012217  1245          TAD INCDIF
4477 012220  3331          DCA INRTRN      /SAVE CALLING FIELDS
4478 012221  6211  INCHRX, CDF INFLD
4479 012222  2300          ISZ INJMP       /BUMP THREE-WAY UNPACK SWITCH
4480 012223  2333          ISZ INCHCT
4481 012224  5300  INJMPP, JMP INJMP
4482 012225  1363          TAD INEOF
4483 012226  7650          SNA CLA         /DID LAST READ YIELD END-OF-FILE?
4484 012227  5231          JMP INGBUF      /NO - DO ANOTHER
4485 012230  5334  GETNEW, JMP INNEWF      /OPEN A NEW INPUT FILE
4486 012231  1201  INGBUF, TAD INKTR
4487 012232  7100          CLL
4488 012233  1376          TAD (INRECS
4489 012234  7420          SNL
4490 012235  3201          DCA INKTR       /RESTORE INKTR IF IT HASN'T OVERFLOWED
4491 012236  7430          SZL             /IS THIS THE LAST READ?
4492 012237  2363          ISZ INEOF       /YES - SET END-OF-FILE FLAG
4493 012240  7172          CLL CML CMA RTR /CONSTRUCT A CTRL WORD FOR THE READ
4494 012241  7012          RTR             /FROM THE AMOUNT OF THE OVERFLOW
4495 012242  7012          RTR             /(IF ANY) AND THE STANDARD CTRL WORD
4496 012243  1375          TAD (INCTL+1
4497 012244  3250          DCA INCTLW
4498 012245  6203  INCDIF, CDF CIF 0
4499 012246  6211          CDF 10
4500 012247  4743          JMS I INHNDL    /CALL THE DEVICE HANDLER
4501 012250  0000  INCTLW, 0
4502 012251  7200  INBUFP, INBUF
4503 012252  0000  INREC,  0
4504 012253  5273          JMP INERRX      /INPUT HANDLER ERROR
4505 012254  1252  INBREC, TAD INREC
4506 012255  1376          TAD (INRECS
4507 012256  3252          DCA INREC       /UPDATE THE RECORD NUMBER
4508 012257  1250          TAD INCTLW
4509 012260  0215          AND IN7600
4510 012261  7104          CLL RAL
4511 012262  1250          TAD INCTLW
4512 012263  0215          AND IN7600
4513 012264  7040          CMA
4514 012265  3333          DCA INCHCT      /COMPUTE THE NEW CHARACTER COUNT
4515 012266  1224          TAD INJMPP
4516 012267  3300          DCA INJMP       /RESET THE CHARACTER SWITCH
4517 012270  1251          TAD INBUFP
4518 012271  3212          DCA INPTR       /AND THE WORD POINTER
4519 012272  5221          JMP INCHRX      /GO BACK AND MAKE BELIEVE
4520                                       / THIS NEVER HAPPENED
4521 012273  2363  INERRX, ISZ INEOF       /EITHER AN END-OF-FILE OR A BADDIE
4522 012274  7700          SMA CLA         /WHICH TYPE WAS IT?
4523 012275  5254          JMP INBREC      /END OF FILE - RESUME THY PROCESSING
4524 012276  7330  INERR,  CLA CLL CML RAR /BADDIE - GIVE ERR RETURN WITH NEG AC
4525 012277  5331  EOFERR, JMP INRTRN
4526 012300  7402  INJMP,  HLT             /THIS IS THE 3 - WAY CHARACTER SWITCH
4527 012301  5322          JMP ICHAR1
4528 012302  5316          JMP ICHAR2
4529 012303  1224  ICHAR3, TAD INJMPP
4530 012304  3300          DCA INJMP
4531 012305  1612          TAD I INPTR
4532 012306  0200  IN200,  AND IN7400
4533 012307  7112          CLL RTR
4534 012310  7012          RTR             /COMBINE THE HIGH-ORDER FOUR BITS OF
4535 012311  1250          TAD INCTLW
4536 012312  7012          RTR             /THE TWO WORD TO FORM THE 3RD CHAR
4537 012313  7012          RTR
4538 012314  2212          ISZ INPTR
4539 012315  5323          JMP INCOMN
4540 012316  1612  ICHAR2, TAD I INPTR
4541 012317  0200          AND IN7400
4542 012320  3250          DCA INCTLW      /SAVE HI-ORDER BITS FOR THE 3RD CHAR
4543 012321  2212          ISZ INPTR       /BUMP THE WORD POINTER
4544 012322  1612  ICHAR1, TAD I INPTR
4545 012323  0374  INCOMN, AND (177
4546 012324  1373          TAD (-32
4547 012325  7450          SNA             /IS THE CHARACTER A ^Z?
4548 012326  5230          JMP GETNEW      /YES - GET A NEW FILE
4549 012327  1372          TAD (232        /RESTORE THE CHARACTER TO 8 BITS
4550 012330  2214          ISZ ICHAR       /BUMP RETURN TO NORMAL RETURN
4551 012331  0000  INRTRN, 0               /RESTORE CALLING FIELDS
4552 012332  5614          JMP I ICHAR     /AND RETURN
4553                                       /IOPEN IS UNNECESSARY.
4554               
4555 012333  7777  INCHCT, -1              /INPUT CHARACTER COUNT
4556               
4557 012334  6211  INNEWF, CDF 10          /NEW INPUT FILE
4558 012335  4771          JMS CHKHND      /IS IT THE SAME HANDLER
4559 012336  3343          DCA INHNDL      /INITIALIZE HANDLER ADDRESS
4560 012337  1762          TAD I INFPTR    /GET NEXT CD INPUT FILE ENTRY
4561 012340  7450          SNA             /ANY MORE?
4562 012341  5277          JMP EOFERR      /NO - OUT OF INPUT
4563 012342  4770          JMS FETCHH      /FETCH DEVICE HANDLER
4564 012343  0000  INHNDL, 0               /WILL HOLD RETURN ADDR
4565 012344  4767          JMS PUTUSR      /RESTORE CORE
4566 012345  1762          TAD I INFPTR
4567 012346  0366          AND (7760       /GET LENGTH PART OF WORD
4568 012347  7440          SZA             /LENGTH OF 0 MEANS LENGTH >=256
4569 012350  1365          TAD (17         /ADD HIGH-ORDER BITS
4570 012351  7132          CLL CML RTR
4571 012352  7012          RTR
4572 012353  3201          DCA INKTR       /STORE LENGTH OF FILE
4573 012354  2362          ISZ INFPTR
4574 012355  1762          TAD I INFPTR
4575 012356  3252          DCA INREC       /STORE STARTING RECORD NUMBER OF FILE
4576 012357  2362          ISZ INFPTR
4577 012360  3363          DCA INEOF       /ZERO END-OF-FILE FLAG
4578 012361  5231          JMP INGBUF      /GO READ
4579               
4580                       INKTR=IOPEN
4581               
4582 012362  7617  INFPTR, 7617            /INPUT FILE POINTER
4583 012363  0000  INEOF,  0               /INPUT END-OF-FILE INDICATOR
4584               
4585 012365  0017  PAGE
     012366  7760  
     012367  2721  
     012370  2732  
     012371  3056  
     012372  0232  
     012373  7746  
     012374  0177  
     012375  0211  
     012376  0001  
     012377  7617  
4586               
4587               / OOPEN:        SET UP OUTPUT FILE
4588               
4589 012400  0000  OOPEN,  0
4590 012401  7201          CLA IAC
4591 012402  1777          TAD OFILE2
4592 012403  3350          DCA OFNMC       /POINTS TO OUTPUT FILE NAME
4593 012404  1777          TAD OFILE2
4594 012405  3250          DCA OOFILE      /POINTS TO DEVICE NO. OF OUTPUT SPECS
4595 012406  1350          TAD OFNMC
4596 012407  3224          DCA OUBLK
4597 012410  1376          TAD (OUDEVH+1
4598 012411  3220          DCA OUHNDL
4599 012412  6211          CDF 10
4600 012413  1650          TAD I OOFILE    /GET DEV NUM WORD OF OUTPUT FILE ENTRY
4601 012414  0375          AND (17         /STRIP OFF ANY LENGTH INFO
4602 012415  7450          SNA             /IS THERE AN OUTPUT DEVICE?
4603 012416  5246          JMP ONOFIL      /NO - INHIBIT OUTPUT
4604 012417  4774          JMS FETCHH      /FETCH DEVICE HANDLER
4605 012420  0000  OUHNDL,   0             /OUTPUT DEVICE HANDLER ENTRY
4606 012421  1650  OUENTR, TAD I OOFILE
4607 012422  4773          JMS I (200
4608 012423  0003            3             /ENTER OUTPUT FILE
4609 012424  0000  OUBLK,    0             /REPLACED WITH STARTING BLOCK
4610 012425  0000  OUELEN,   0             /REPLACED WITH LENGTH OF HOLE
4611 012426  5234          JMP OEFAIL      /FAILED - MAYBE WE ASKED TOO MUCH
4612 012427  3351          DCA OUCCNT
4613 012430  3772          DCA I (OUTINH   /ZERO OUTPUT INHIBIT FLAG
4614 012431  4771          JMS I (OUSETP
4615 012432  2200          ISZ OOPEN
4616 012433  5600  OORETN, JMP I OOPEN
4617               
4618 012434  1650  OEFAIL, TAD I OOFILE
4619 012435  0370          AND (7760       /GET REQUESTED LENGTH
4620 012436  7650          SNA CLA         /WAS IT AN INDEFINITE REQUEST
4621 012437  5244          JMP ONTERR      /YES - CANNOT ENTER THE FILE
4622 012440  1650          TAD I OOFILE
4623 012441  0375          AND (17         /MAKE THE REQUESTED LENGTH ZERO
4624 012442  3650          DCA I OOFILE
4625 012443  5221          JMP OUENTR      /TRY, TRY AGAIN
4626               
4627 012444  7330  ONTERR, CLA CLL CML RAR
4628 012445  5233          JMP OORETN      /TAKE THE ERROR RETURN WITH AC<0
4629               
4630 012446  2772  ONOFIL, ISZ I (OUTINH
4631 012447  5233          JMP OORETN      /TAKE THE ERROR RETURN WITH AC=0
4632               
4633 012450  0000  OOFILE, 0
4634               
4635               / OUTPUT A BUFFER LOAD
4636               
4637 012451  0000  OUTDMP, 0
4638 012452  3301          DCA OUCTLW      /STORE THE CONTROL WORD
4639 012453  1772          TAD I (OUTINH
4640 012454  7640          SZA CLA
4641 012455  5305          JMP OUNOWR
4642 012456  1351          TAD OUCCNT
4643 012457  7450          SNA
4644 012460  2301          ISZ OUCTLW
4645 012461  1224          TAD OUBLK
4646 012462  3303          DCA OUREC       /COMPUTE START BN OF THIS TRANSFER
4647 012463  1301          TAD OUCTLW
4648 012464  7106          CLL RTL
4649 012465  7006          RTL
4650 012466  7006          RTL
4651 012467  0375          AND (17         /COMPUTE THE NUMBER OF RECORDS
4652 012470  1351          TAD OUCCNT      /UPDATE NUMBER OF BLOCKS IN THE FILE
4653 012471  3351          DCA OUCCNT
4654 012472  1351          TAD OUCCNT
4655 012473  7120          CLL CML
4656 012474  1225          TAD OUELEN
4657 012475  7660          SNL SZA CLA     /DOES LENGTH EXCEED GIVEN LENGTH
4658 012476  5651          JMP I OUTDMP    /YES - SIGNAL OUTPUT ERROR
4659 012477  6202          CIF 00          /HANDLERS IN FIELD 0
4660 012500  4620          JMS I OUHNDL
4661 012501  0000  OUCTLW,   0
4662 012502  6600            OUBUF
4663 012503  0000  OUREC,    0
4664 012504  5306          JMP OUERRX      /OUTPUT HANDLER ERROR
4665 012505  2251  OUNOWR, ISZ OUTDMP      /BUMP OUTDMP TO NORMAL RETURN
4666 012506  5651  OUERRX, JMP I OUTDMP    /.+1 IF ERROR RTN
4667               
4668               / OCLOSE:       CLOSE THE OUTPUT FILE
4669               /               RETURN TO .+1 IF ERROR
4670               /               RETURN TO .+2 IF A.O.K.
4671               
4672 012507  0000  OCLOSE, 0
4673 012510  1772          TAD I (OUTINH
4674 012511  7640          SZA CLA         /IS OUTPUT INHIBITED?
4675 012512  5353          JMP OCISZ       /YES - CLOSE IS A NOP
4676 012513  4767          JMS I (OTYPE
4677 012514  0366          AND (770
4678 012515  1370          TAD (-PTP       /CHECK FOR PAPER TAPE PUNCH OUTPUT
4679 012516  7640          SZA CLA         /AND SKIP ^Z OUTPUT IF TRUE
4680 012517  1356          TAD EOFCHR      /OUTPUT A ^Z
4681 012520  4765          JMS I (OCHAR
4682 012521  5354          JMP OCRET
4683 012522  4765          JMS I (OCHAR
4684 012523  5354          JMP OCRET
4685 012524  4765  FILLLP, JMS I (OCHAR
4686 012525  5354          JMP OCRET
4687 012526  4767          JMS I (OTYPE    /GET TYPE OF OUTPUT DEVICE
4688 012527  7710          SPA CLA
4689 012530  1364          TAD (100        /IF ITS A DIRECTORY DEV FORCE A RECORD
4690 012531  1363          TAD (77         /BOUNDARY - OTHERWISE A HALF-RECORD
4691 012532  0762          AND I (OUDWCT
4692 012533  7640          SZA CLA         /UP TO THE BOUNDARY YET?
4693 012534  5324          JMP FILLLP      /NO - FILL WITH ZEROS
4694 012535  1762          TAD I (OUDWCT   /GET DOUBLEWORD COUNT LEFT
4695 012536  1373          TAD (OUCTL&3700
4696 012537  7450          SNA             /A FULL WRITE LEFT?
4697 012540  5344          JMP NODUMP      /YES, DON'T DO IT; THE ^Z IS ALREADY OUT
4698 012541  1361          TAD (4000+OUFLD /PUT IN THE FIELD BITS AND THE WRITE BIT
4699 012542  4251          JMS OUTDMP
4700 012543  5354          JMP OCRET       /AN ERROR OCCURRED WHILE DUMPING BUFFER
4701 012544  7000  NODUMP, NOP             /CATCHES SOME PORNO FOR FORCED DMP
4702 012545  1650          TAD I OOFILE    /GET THE DEVICE NUMBER
4703 012546  4760          JMS I (7700     /JUST A ONE-SHOT
4704 012547  0004            4             /CLOSE THE OUTPUT FILE
4705 012550  0000  OFNMC,    0             /POINTER TO THE OUTPUT FILE NAME
4706 012551  0000  OUCCNT,   0
4707 012552  7410          SKP             /ERROR WHILE CLOSING THE FILE - BAD!
4708 012553  2307  OCISZ,  ISZ OCLOSE
4709 012554  6213  OCRET,  CDF CIF 10      /RESTORE CALLING FIELDS
4710 012555  5707          JMP I OCLOSE
4711               
4712 012556  0232  EOFCHR, "Z-100
4713               
4714 012560  7700  PAGE
     012561  4010  
     012562  2672  
     012563  0077  
     012564  0100  
     012565  2611  
     012566  0770  
     012567  2674  
     012570  7760  
     012571  2600  
     012572  2673  
     012573  0200  
     012574  2732  
     012575  0017  
     012576  7201  
     012577  2063  
4715               
4716 012600  0000  OUSETP, 0               /ROUTINE TO INITIALIZE CHAR POINTERS
4717 012601  1377          TAD (OUCTL&3700 /GET SIZE OF BUFFER IN DOUBLEWORDS
4718 012602  7041          CIA             /NEGATE IT (PAL10 BLOWS)
4719 012603  3272          DCA OUDWCT
4720 012604  1376          TAD (OUBUF
4721 012605  3270          DCA OUPTR       /INITIALIZE WORD POINTER
4722 012606  1271          TAD OUJMPE
4723 012607  3224          DCA OUJMP       /INITIALIZE THREE-WAY CHARACTER SWITCH
4724 012610  5600          JMP I OUSETP
4725               
4726               / OCHAR:        OUTPUT A CHAR TO OUTPUT DEVICE
4727               /               RETURN .+1 IF ERROR OR NO ROOM
4728               /               RETURN TO .+2 IF CHAR WENT OUT O.K.
4729               
4730 012611  0000  OCHAR,  0
4731 012612  0375          AND (377
4732 012613  3266          DCA OUTEMP
4733 012614  6214          RDF
4734 012615  1374          TAD (CDF CIF 0
4735 012616  3264          DCA OUCRET
4736 012617  1273          TAD OUTINH
4737 012620  7640          SZA CLA         /IS THERE AN OUTPUT FILE?
4738 012621  5263          JMP OUCOMN      /NO - EXIT
4739 012622  6211  OUCHAR, CDF OUFLD       /SET DATA FIELD TO BUFFER'S FIELD
4740 012623  2224          ISZ OUJMP       /BUMP THE CHARACTER SWITCH
4741 012624  7402  OUJMP,  HLT             /THREE WAY CHARACTER SWITCH
4742 012625  5261          JMP OCHAR1
4743 012626  5256          JMP OCHAR2
4744 012627  1266  OCHAR3, TAD OUTEMP
4745 012630  7106          CLL RTL
4746 012631  7006          RTL
4747 012632  0373          AND (7400
4748 012633  1667          TAD I OUPOLD
4749 012634  3667          DCA I OUPOLD    /UPDATE FIRST WORD OF TWO WITH HIGH
4750                                       /ORDER 4 BITS OF THIRD CHAR
4751 012635  1266          TAD OUTEMP
4752 012636  7112          CLL RTR
4753 012637  7012          RTR
4754 012640  7010          RAR
4755 012641  0373          AND (7400
4756 012642  1670          TAD I OUPTR
4757 012643  3670          DCA I OUPTR     /UPDATE 2ND WORD FROM LOW ORDER 4 BITS
4758 012644  1271          TAD OUJMPE
4759 012645  3224          DCA OUJMP       /RESET SWITCH
4760 012646  2270          ISZ OUPTR
4761 012647  2272          ISZ OUDWCT      /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS
4762 012650  5263          JMP OUCOMN
4763 012651  1372          TAD (OUCTL      /LOAD CONTROL WORD FOR A FULL WRITE
4764 012652  4771          JMS I (OUTDMP   /DUMP THE BUFFER
4765 012653  5264          JMP OUCRET      /OUTPUT ERROR - GIVE ERROR RETURN
4766 012654  4200          JMS OUSETP      /RE-INITIALIZE THE POINTERS
4767 012655  5263          JMP OUCOMN
4768 012656  1270  OCHAR2, TAD OUPTR
4769 012657  3267          DCA OUPOLD      /SAVE POINTER TO FIRST WORD OF TWO
4770 012660  2270          ISZ OUPTR       /BUMP WORD POINTER TO 2ND WORD
4771 012661  1266  OCHAR1, TAD OUTEMP
4772 012662  3670          DCA I OUPTR
4773 012663  2211  OUCOMN, ISZ OCHAR
4774 012664  7402  OUCRET, HLT             /RESTORE CALLING FIELDS
4775 012665  5611          JMP I OCHAR
4776               
4777 012666  0000  OUTEMP, 0
4778 012667  0000  OUPOLD, 0
4779 012670  0000  OUPTR,  0
4780 012671  5224  OUJMPE, JMP OUJMP
4781 012672  0000  OUDWCT, 0
4782 012673  0000  OUTINH, 0
4783               
4784               / OTYPE:        GET DEVICE TYPE OF OUTPUT DEVICE
4785               
4786 012674  0000  OTYPE,  0
4787 012675  6214          RDF
4788 012676  1374          TAD (CDF CIF 0
4789 012677  3306          DCA OTRTN
4790 012700  6211          CDF 10
4791 012701  1770          TAD I (7600
4792 012702  0367          AND (17
4793 012703  1366          TAD (DCB-1
4794 012704  3266          DCA OUTEMP
4795 012705  1666          TAD I OUTEMP
4796 012706  7402  OTRTN,  HLT
4797 012707  5674          JMP I OTYPE
4798               
4799               / GET USR INTO CORE
4800               
4801 012710  0000  GETUSR, 0
4802 012711  1320          TAD USRSTAT     /IS USR ALREADY IN CORE?
4803 012712  7650          SNA CLA
4804 012713  5710          JMP I GETUSR    /YES, JUST RETURN
4805 012714  4765          JMS I (7700     /NO, GET USR INTO CORE
4806 012715  0010            10
4807 012716  3320          DCA USRSTAT     /USR NOW IN CORE
4808 012717  5710          JMP I GETUSR
4809               
4810 012720  7777  USRSTAT, 7777           /7777 NOT IN CORE; 0 IN CORE
4811               
4812               / PUT USR BACK OUT OF CORE
4813               
4814               FETCHD,                 /FETCH HANDLER DEVICE NUMBER
4815 012721  0000  PUTUSR, 0               /SAVES A LOC ON PAGE
4816 012722  1320          TAD USRSTAT     /IS USR ALREADY OUT?
4817 012723  7640          SZA CLA
4818 012724  5721          JMP I PUTUSR    /YES, JUST RETURN
4819 012725  4777          JMS I (200      /NO, PUT USR AWAY
4820 012726  0011            11
4821 012727  7240          STA
4822 012730  3320          DCA USRSTAT     /NOW USR IS NOT IN CORE
4823 012731  5721          JMP I PUTUSR
4824               
4825               / FETCH DEVICE HANDLER
4826               
4827 012732  0000  FETCHH, 0
4828 012733  3321          DCA FETCHD      /SAVE DEVICE NUM TO FETCH
4829 012734  4310          JMS GETUSR      /MAKE SURE USR IS IN CORE
4830 012735  1732          TAD I FETCHH    /GET LOC TO LOAD HANDLER
4831 012736  3342          DCA FETCHA
4832 012737  1321          TAD FETCHD      /GET DEVICE TO LOAD
4833 012740  4777          JMS I (200
4834 012741  0001            1             /FETCH DEVICE HANDLER
4835 012742  0000  FETCHA,   0             /HANDLER ADDR GOES HERE
4836 012743  7402          HLT             /HUH!!
4837 012744  1342          TAD FETCHA
4838 012745  3732          DCA I FETCHH    /SAVE FOR ROUTINE TO USE
4839 012746  2332          ISZ FETCHH
4840 012747  5732          JMP I FETCHH    /RETURN
4841               
4842 012765  7700  PAGE
     012766  7757  
     012767  0017  
     012770  7600  
     012771  2451  
     012772  4210  
     012773  7400  
     012774  6203  
     012775  0377  
     012776  6600  
     012777  0200  
4843               
4844               / PUT AS USER SEES IT
4845               
4846 013000  0000  XXPUT,  0
4847 013001  0377          AND (377)       /JUST WANT ASCII CHAR
4848 013002  3234          DCA XXPUTC      /SAVE OUTPUT CHAR
4849 013003  6214          RDF
4850 013004  1376          TAD (CDF CIF)
4851 013005  3224          DCA XXPUTR      /SAVE CALLING FIELDS
4852 013006  6211          CDF 10          /WE'RE IN FIELD 1
4853 013007  1234          TAD XXPUTC
4854 013010  4775          JMS I (OCHAR    /OUTPUT THE CHAR
4855 013011  5774          JMP XXPUTE      /ERROR ON OUTPUT
4856 013012  1234          TAD XXPUTC
4857 013013  1373          TAD (-214       /SPECIAL CHAR CHECKING
4858 013014  7450          SNA
4859 013015  5226          JMP XXPFF       /FORM FEED
4860 013016  7001          IAC             /213
4861 013017  7450          SNA
4862 013020  5227          JMP XXPVT       /VERTICAL TAB
4863 013021  1372          TAD (213-211
4864 013022  7650          SNA CLA
4865 013023  5230          JMP XXPHT       /HORIZONTAL TAB
4866 013024  7402  XXPUTR, HLT             /RESET USER FIELDS
4867 013025  5600          JMP I XXPUT     /RETURN O.K.
4868               
4869 013026  1371  XXPFF,  TAD (11-5       /FORM FEED, OUTPUT 9ZROS
4870 013027  1370  XXPVT,  TAD (5-2        /VERTICAL TAB, OUTPUT 5 RUBOUTS
4871 013030  1372  XXPHT,  TAD (2          /HORIZONTAL TAB, OUTPUT 2 RUBOUTS
4872 013031  7041          CIA
4873 013032  4767          JMS XXRUB       /OUTPUT RUBOUTS OR ZEROES
4874 013033  5224          JMP XXPUTR
4875               
4876 013034  0000  XXPUTC, 0               /SAVE CHAR HERE
4877               
4878               / SUBROUTINE TO DUMP THE CURRENT BUFFER OUT
4879               / OUTPUT DEVICE SHOULD BE NON-DIRECTORY IF THIS ROUTINE USED
4880               
4881                       PORNO=OCRET&177+5200
4882               
4883 013035  0000  XXDUMP, 0               /ROUTINE TO FORCE BUFFER OUT
4884 013036  7200          CLA             /WITHOUT CLOSING FILE
4885 013037  6214          RDF
4886 013040  1376          TAD (CDF CIF 0
4887 013041  3254          DCA XXDMPR
4888 013042  6211          CDF 10
4889 013043  1366          TAD (PORNO      /SET UP TO NOT CLOSE
4890 013044  3765          DCA NODUMP      /REPLACES OUR NOP
4891 013045  3764          DCA EOFCHR      /DON'T SEND ^Z
4892 013046  4763          JMS OCLOSE      /DOES EVERYTHING ELSE BUT
4893 013047  1362          TAD (NOP        /RESTORE PORNO LOC
4894 013050  3765          DCA NODUMP
4895 013051  1361          TAD ("Z-100     /RESTORE ^Z
4896 013052  3764          DCA EOFCHR
4897 013053  4760          JMS OUSETP      /START OVER AT BEGINNING
4898 013054  7402  XXDMPR, HLT             /IF DIRECTORY DEV. HE'S CRAZY ANYWAY
4899 013055  5635          JMP I XXDUMP    /GO ON BACK
4900               
4901 013056  0000  CHKHND, 0               /CHECK IF NEW HANDLER IS NEEDED.
4902 013057  6201          CDF 0           /LOCS IN FLD 0 TO RESET
4903 013060  3757          DCA I (INPAGE)  /WE ARE GETTING A NEW FILE
4904 013061  3756          DCA I (INLINE)
4905 013062  6211          CDF 10
4906 013063  1755          TAD INFPTR      /WE NEED THE POINTER
4907 013064  3303          DCA CHKPTR      /GET IT HERE
4908 013065  1703          TAD I CHKPTR    /NEXT FILE
4909 013066  7450          SNA             /NO MORE FILES?
4910 013067  5754          JMP EOFERR
4911 013070  0353          AND (17         /JUST THE HANDLER
4912 013071  7041          CIA             /TO COMPARE
4913 013072  1302          TAD OLDHND
4914 013073  7650          SNA CLA         /IF ZERO, NO CHANGE
4915 013074  5752          JMP INHNDL+2    /JUST GET NEW BLK NUM
4916 013075  1703          TAD I CHKPTR    /GET NEW HANDLER
4917 013076  0353          AND (17         /JUST THE HANDLER
4918 013077  3302          DCA OLDHND      /AND SAVE FOR NEXT TIME
4919 013100  1351          TAD (INDEVH+1   /GET HIS HANDLER ADDR.
4920 013101  5656          JMP I CHKHND    /GO ON BACK
4921               
4922 013102  0000  OLDHND, 0
4923 013103  0000  CHKPTR, 0
4924               
4925               / GET ROUTINE AS USER SEES IT
4926               
4927 013104  0000  XXGET,  0
4928 013105  7200          CLA
4929 013106  6214          RDF
4930 013107  1376          TAD (CDF CIF)
4931 013110  3327          DCA XXGETR      /SAVE FIELD FRO M WHENCE WE WERE CALLLED
4932 013111  6211          CDF 10          /WE'RE IN FIELD 1
4933 013112  4750  XXGET1, JMS I (ICHAR)
4934 013113  5331          JMP XXGETX      /ERROR RETURN
4935 013114  3747          DCA SELTMP
4936 013115  1746          TAD SELFLG      /ARE WE IN SELECT MODE?
4937 013116  7650          SKIPNO
4938 013117  5745          JMP SELECT      /YES, CHECK CHAR
4939 013120  1747  XXGGOO, TAD SELTMP      /NO, OR WE HAVE COME BACK
4940 013121  0344          AND (177)       /STRIP TO 7 BIT ASCII
4941 013122  7440          SZA
4942 013123  1343          TAD (-177)
4943 013124  7450          SNA
4944 013125  5312          JMP XXGET1      /IGNORE NULL AND RUBOUT
4945 013126  1377          TAD (377)       /GENERATE 8-BIT ASCII CHAR
4946 013127  7402  XXGETR, HLT             /CHANGE FIELDS BACK TO USER
4947 013130  5704          JMP I XXGET     /O.K., RETURN WITH CHAR IN AC
4948               
4949 013131  7700  XXGETX, SMA CLA         /FINAL END-OF-FILE?
4950 013132  5742          JMP EOFGO       /YES, GO TO USER EXIT ROUTINE
4951 013133  4741  XXGETE, JMS ERRPRT      /NO, IS HARDWARE ERROR
4952 013134  1105          TEXT \IE\
     013135  0000  
4953                       *.-1
4954               
4955 013135  7402  HLTINS, HLT             /DIAGNOSTIC HALT FROM FIELD 0 WILD CODE
4956                                       /IT CANNOT HAPPEN
4957               
4958 013141  3600  PAGE
     013142  3220  
     013143  7601  
     013144  0177  
     013145  3272  
     013146  3251  
     013147  3256  
     013150  2214  
     013151  6601  
     013152  2345  
     013153  0017  
     013154  2277  
     013155  2362  
     013156  0124  
     013157  0125  
     013160  2600  
     013161  0232  
     013162  7000  
     013163  2507  
     013164  2556  
     013165  2544  
     013166  5354  
     013167  3223  
     013170  0003  
     013171  0004  
     013172  0002  
     013173  7564  
     013174  3216  
     013175  2611  
     013176  6203  
     013177  0377  
4959               
4960               
4961               /JUMP TARGETS FOR HEADER WORDS
4962 013200  3627  HEADJ,  HSTYLE
4963 013201  3627          HSTYLE
4964 013202  3627          HSTYLE
4965 013203  3627          HSTYLE
4966 013204  3634          HPOSIT
4967 013205  3634          HPOSIT
4968 013206  3634          HPOSIT
4969 013207  3634          HPOSIT
4970 013210  3642          HPLACE
4971 013211  3643          HPLACI
4972 013212  3647          HBASE
4973 013213  3650          HBASI
4974 013214  3654          HSPLIT
4975 013215  3660          HNSPLT
4976               
4977               / PUT OR CLOSE ERROR ROUTINE
4978               
4979               XXCLSE,
4980 013216  4777  XXPUTE, JMS ERRPRT
4981 013217  1705          TEXT \OE\
     013220  0000  
4982                       *.-1
4983               
4984               / END-OF-FILE ROUTINE
4985               
4986 013220  6203  EOFGO,  CDF CIF 00
4987 013221  5622          JMP I .+1       /THEN EXECUTE E-O-F PROCEDURE
4988 013222  4036  EOFLOC,   EOFILE        /INITIALIZED FOR FIRST TIME
4989               
4990               / OUTPUT NO. OF RUBOUTS OR NULLS IN AC
4991               / UNLESS OUTPUT IS TO A DIRECTORY DEVICE
4992               
4993 013223  0000  XXRUB,  0
4994 013224  3242          DCA XXXTMP      /SAVE COUNT
4995 013225  4776          JMS I (OTYPE    /GET TYPE OF OUTPUT DEV
4996 013226  7710          SPA CLA
4997 013227  5623          JMP I XXRUB     /DIRECTORY DEVICE - DON'T BOTHER
4998 013230  1775  XXRUBL, TAD XXPUTC      /GET THE CHAR
4999 013231  1374          TAD (-214)
5000 013232  7650          SNA CLA         /IS THE CTRL CHAR A FORM-FEED?
5001 013233  7001          IAC             /YES - OUTPUT BLANK TAPE INSTEAD
5002 013234  1373          TAD (377        /OTHERWISE, OUTPUT RUBOUTS
5003 013235  4772          JMS I (OCHAR    /OUTPUT THEM
5004 013236  5216          JMP XXPUTE      /ERROR RETURN
5005 013237  2242          ISZ XXXTMP
5006 013240  5230          JMP XXRUBL      /LOOP FOR THE REQUIRED COUNT
5007 013241  5623          JMP I XXRUB
5008               
5009 013242  0000  XXXTMP, 0               /USED AS COUNTER AND POINTER
5010               
5011 013243  0000  XXXTTY, 0
5012 013244  6046          TLS
5013 013245  6041          TSF
5014 013246  5245          JMP .-1
5015 013247  7600  XXXCLA, 7600            /LOC TO RETURN TO PS/8 SYSTEM
5016 013250  5643          JMP I XXXTTY    /NOT DEVICE INDEPENDENT - TOUGH BLEEP
5017               
5018               /SELECTION CODE - WE TRAP ALL CHARS EXCEPT THOSE PASSED BY CERTAIN
5019               /SWITCH CHARACTERS
5020               
5021 013251  7777  SELFLG, NO              /NOT NOW ANYWAY
5022 013252  3257  SELSTP, SELST1          /SELECT STRING POINTER
5023 013253  3257  SELPBK, SELST1
5024 013254  0000  SELTNG, 0               /FLAG FOR CURRENT LINE
5025 013255  0000  SELBLK, 0               /FLAG FOR BLOCK SELECT
5026 013256  0000  SELTMP, 0               /HOLD THE CHAR FOR ROUTINE
5027 013257  7521  SELST1, -"/; -"&; "&-"+; "+-"-
     013260  7532  
     013261  7773  
     013262  7776  
5028 013263  7537  SELST2, -"!; -"&; "&-"+; "+-"-
     013264  7532  
     013265  7773  
     013266  7776  
5029               
5030 013267  4771  SELGO,  JMS ICHAR       /GET NEXT CHAR
5031 013270  5770          JMP XXGETX      /WHAT KIND OF ERROR?
5032 013271  3256          DCA SELTMP      /SAVE IT FOR NOW
5033 013272  1253  SELECT, TAD SELPBK      /RESTORE SELECT STRING POINTER
5034 013273  3252          DCA SELSTP      /NORMAL ENTRY FROM XXGET
5035 013274  1254          TAD SELTNG      /ARE WE SELECTING NOW?
5036 013275  7650          SKIPNO
5037 013276  5340          JMP SELEOL      /YES, SHOULD WE CONTINUE?
5038 013277  1652          TAD I SELSTP    /NO, SHOULD WE START?
5039 013300  1256          TAD SELTMP      /LOOK AT CHAR
5040 013301  7640          SZA CLA
5041 013302  5267          JMP SELGO       /NO, LOOP A WHILE
5042 013303  4771          JMS ICHAR       /MAYBE, LOOK AT NEXT CHAR
5043 013304  5770          JMP XXGETX
5044 013305  3256          DCA SELTMP
5045 013306  2252          ISZ SELSTP      /BUMP POINTER
5046 013307  1652          TAD I SELSTP    /IS IT &
5047 013310  7450          SNA
5048 013311  5334          JMP SELNOW      /YES, SELECT THIS LINE
5049 013312  2252          ISZ SELSTP      /NO, CHECK BLOCK SELECT CHAR
5050 013313  1652          TAD I SELSTP
5051 013314  7450          SNA
5052 013315  5333          JMP SELBON      /YES, SELECT BLOCK ON
5053 013316  2252          ISZ SELSTP
5054 013317  1652          TAD I SELSTP    /NO, MAYBE TURN IT OFF
5055 013320  7650          SNA CLA
5056 013321  5327          JMP SELBOF      /YES, TURN IT OFF AFTER THIS LINE
5057 013322  1255          TAD SELBLK      /IS SELECT BLOCK ON NOW?
5058 013323  7640          SKIPYES
5059 013324  5267          JMP SELGO       /NO, IGNORE THIS STUFF
5060 013325  3254  SELON,  DCA SELTNG      /YES, START SELECTING
5061 013326  5767          JMP XXGGOO      /RETURN WITH THIS CHAR
5062               
5063 013327  1255  SELBOF, TAD SELBLK      /IF IT IS ON, TURN IT OFF
5064 013330  7640          SKIPYES
5065 013331  5267          JMP SELGO       /IT IS NOT ON
5066 013332  7240          STA             /TURN OFF SELBLK
5067 013333  3255  SELBON, DCA SELBLK      /TURN ON SELBLK
5068 013334  4771  SELNOW, JMS ICHAR       /GET NEXT CHAR
5069 013335  5770          JMP XXGETX      /CHECK THE ERROR
5070 013336  3256          DCA SELTMP
5071 013337  5325          JMP SELON       /DO OTHER STUFF AND RETURN
5072 013340  1256  SELEOL, TAD SELTMP      /IS IT AN EOL CHAR?
5073 013341  1374          TAD (-214       /IS IT FF?
5074 013342  7440          SZA
5075 013343  7001          IAC
5076 013344  7440          SZA             /IS IT VT
5077 013345  7001          IAC             /MAYBE LF
5078 013346  7650          SNA CLA         /IF NOT ONE KEEP SELECTING
5079 013347  7240          STA             /IT YES, TURN IT OFF
5080 013350  5325          JMP SELON       /DO WHICH
5081               
5082               
5083               
5084 013367  3120  PAGE
     013370  3131  
     013371  2214  
     013372  2611  
     013373  0377  
     013374  7564  
     013375  3034  
     013376  2674  
     013377  3600  
5085               
5086 013400  1207  RNOCHN, TAD CHAINB      /ARE WE ON SYS?
5087 013401  7650          SNA CLA
5088 013402  5210          JMP .+6         /NO, RETURN TO MONITOR
5089 013403  6211          CDF 10
5090 013404  4777          JMS GETUSR      /GET THE USR IN CORE
5091 013405  4776          JMS I (200      /NOW, GET US
5092 013406  0006            6             /CHAIN
5093 013407  0000  CHAINB,   0             /GETS RUNOFF BLOCK
5094               
5095 013410  6203          CDF CIF 00
5096 013411  7200          CLA
5097 013412  5775          JMP I (7605
5098               
5099               
5100 013413  0000  XZPUT,  0               /OUTPUT TO FILE OR LOG DEVICE OR BOTH
5101 013414  3230          DCA XZTEMP      /SAVE CHAR
5102 013415  1231          TAD LFLAG       /OUTPUT TO TTY?
5103 013416  7650          SNA CLA         /NON ZERO IF YES
5104 013417  5225          JMP XZPT1       /NO, JUST OUTFILE
5105 013420  1230          TAD XZTEMP      /GET CHAR BACK
5106 013421  4774          JMS XXXTTY      /PRINT IT
5107 013422  1232          TAD KFLAG       /ONLY ON TTY?
5108 013423  7640          SZA CLA
5109 013424  5613          JMP I XZPUT     /YES, NO ERRORS TO FILE
5110 013425  1230  XZPT1,  TAD XZTEMP      /GET IT FOR THE FILE
5111 013426  4773          JMS XXPUT
5112 013427  5613          JMP I XZPUT     /TAKE CARE OF CHAR
5113 013430  0000  XZTEMP, 0
5114 013431  0000  LFLAG,  0
5115 013432  0000  KFLAG,  0
5116               
5117 013433  0000  ERRPTR, 0
5118 013434  0000  ERRSTR, 0               /PRINT ERR STRING
5119 013435  3233          DCA ERRPTR      /SAVE POINTER
5120 013436  1633  ERRSLP, TAD I ERRPTR    /GET FIRST DOUBLET
5121 013437  7012          RTR;RTR;RTR     /GET IT DOWN
     013440  7012  
     013441  7012  
5122 013442  4247          JMS ERRSTP      /PUT CHAR
5123 013443  1633          TAD I ERRPTR
5124 013444  4247          JMS ERRSTP
5125 013445  2233          ISZ ERRPTR
5126 013446  5236          JMP ERRSLP
5127               
5128 013447  0000  ERRSTP, 0
5129 013450  0372          AND (77)        /STRIP TO 6
5130 013451  7450          SNA             /IS IT THE END
5131 013452  5634          JMP I ERRSTR    /RETURN
5132 013453  1371          TAD (" )        /ADD 240
5133 013454  0372          AND (77)        /BACK TO 6
5134 013455  1371          TAD (" )        /SEEMS LIKE MAGIC
5135 013456  4213          JMS XZPUT
5136 013457  5647          JMP I ERRSTP
5137               
5138 013460  2417  SUMMSG, TEXT \TOTAL ERRORS.\
     013461  2401  
     013462  1440  
     013463  0522  
     013464  2217  
     013465  2223  
     013466  5600  
5139               
5140               /COME HERE FROM FIELD 0 EOF CHECKING
5141               
5142 013467  2313  EOFCK1, ISZ NCOPY       /ANY MORE COPIES?
5143 013470  7410          SKP
5144 013471  5303          JMP EOFIL3      /NO
5145 013472  6211          CDF 10
5146 013473  1313          TAD NCOPY       /HOW MANY COPIES LEFT
5147 013474  7041          CIA             /MAKE IT POSITIVE
5148 013475  4314          JMS ERBASC      /PRINT IT FOR DICK
5149 013476  4770          JMS I (IOPEN)   /OPEN INPUT FILES AGAIN
5150 013477  6203          CDF CIF 00
5151 013500  3122          DCA TOPSW
5152 013501  7201          CLA IAC         /INIT PAGE NUMBER
5153 013502  5767          JMP PRTGO
5154               
5155 013503  6211  EOFIL3, CDF 10
5156 013504  4766          JMS I (ERRSUM)  /PRINT SUMMARY
5157 013505  4765          JMS I (OCLOSE)  /CLOSE CURRENT OUTPUT FILE
5158 013506  5764          JMP XXCLSE      /CLOSE ERROR
5159 013507  1763          TAD I (7642)    /CD ENDED WITH CR OR ALTMODE?
5160 013510  7700          SMA CLA
5161 013511  5200          JMP RNOCHN      /CHAIN CODE IN FIELD 1
5162 013512  5210          JMP CHAINB+1    /RETURN TO MONITOR
5163               
5164 013513  0000  NCOPY,  0
5165               
5166 013514  0000  ERBASC, 0               /OUTPUT NUMBER TO ERROR ROUTINE
5167 013515  3762          DCA BINNUM      /SAVE THE NUMBER
5168 013516  1361          TAD (".         /PRINT THE SEPARATOR
5169 013517  4213          JMS XZPUT       /PUT IT WHEREVER
5170 013520  4760          JMS BINCHR      /GET THE ASCII DIGIT
5171 013521  7450          SNA             /NULL ENDS IT
5172 013522  5714          JMP I ERBASC    /DONE, RETURN
5173 013523  4213          JMS XZPUT       /PUT IT WHEREVER ALSO
5174 013524  5320          JMP .-4         /AND LOOP UNTIL DONE
5175 013525  0360  PAGEL,  "P+40; "A+40; "G+40; "E+40; " +400; 0
     013526  0341  
     013527  0347  
     013530  0345  
     013531  0640  
     013532  0000  
5176 013533  0320  PAGEU,  "P;"A;"G;"E;" +400;0
     013534  0301  
     013535  0307  
     013536  0305  
     013537  0640  
     013540  0000  
5177 013541  0320  PAGEM,  "P; "A+40; "G+40; "E+40;" +400;0
     013542  0341  
     013543  0347  
     013544  0345  
     013545  0640  
     013546  0000  
5178               
5179 013547  5254  TABSJS, TABREL
5180 013550  5255          TABABS
5181 013551  5200          TABSTP
5182 013552  5754          TABQOT
5183               
5184               
5185 013553  4274  PAGJMP, PAGTOP
5186 013554  4275          PAGBOT
5187 013555  4234  PAPERJ, PAGSIZE
5188 013556  4226          PEVEN
5189 013557  4227          PODD
5190               
5191               
5192 013560  3700  PAGE
     013561  0256  
     013562  3750  
     013563  7642  
     013564  3216  
     013565  2507  
     013566  3646  
     013567  0203  
     013570  2201  
     013571  0240  
     013572  0077  
     013573  3000  
     013574  3243  
     013575  7605  
     013576  0200  
     013577  2710  
5193               
5194 013600  0000  ERRPRT, 0               /ROUTINE FOR FATAL IOPACK ERRORS
5195 013601  6211          CDF 10          /ARGS UP HERE
5196 013602  1600          TAD I ERRPRT
5197 013603  3212          DCA ERRPRC      /SAVE THE CHARS
5198 013604  7001          IAC
5199 013605  3777          DCA KFLAG       /ONLY LOG THESE FATAL ERRORS
5200 013606  7001          IAC             /ON THE TTY
5201 013607  3776          DCA LFLAG
5202 013610  6202          CIF 0           /FATAL ERROR ROUTINE IN FLD 0
5203 013611  4775          JMS ERRFX       /IT WILL NOT RETURN
5204               
5205 013612  0000  ERRPRC, 0               /GETS THE ERROR CODE
5206               
5207 013613  0000  ERROUT, 0
5208 013614  1613          TAD I ERROUT
5209 013615  3273          DCA ERRCHR
5210 013616  6211          CDF 10
5211 013617  4261          JMS CROUT
5212 013620  1374          TAD (ERHEAD
5213 013621  4773          JMS ERRSTR      /PRINT ERROR INCLUDING SPECIFIC
5214 013622  1772          TAD INFPTR      /GET THE FILE NUMBER
5215 013623  1240          TAD K321        /MAGIC CONVERTER
5216 013624  7110          CLL RAR
5217 013625  4771          JMS XZPUT       /PRINT THE FILE NUMBER
5218 013626  6201          CDF 00          /ARGS IN FLD 0
5219 013627  1770          TAD I (INPAGE)  /INPUT FILE PAGE
5220 013630  6211          CDF 10
5221 013631  4767          JMS ERBASC      /PRINT THE NUMBER
5222 013632  6201          CDF 00
5223 013633  1766          TAD I (INLINE)  /GET THE LINE
5224 013634  6211          CDF 10
5225 013635  4767          JMS ERBASC      /AND OUTPUT THAT NUMBER TOO
5226 013636  4261          JMS CROUT       /ON ITS OWN LINE
5227 013637  2267          INC ERRCTR      /ANOTHER ERROR WE HAVE ENCOUNTERED
5228 013640  0321  K321,   321             /MAGIC NUMBER IS A NOP
5229 013641  7240          STA
5230 013642  3765          DCA NCOPY       /JUST THIS COPY
5231 013643  6203  BINCIF, CDF CIF 0
5232 013644  2213          INC ERROUT      /SKIP THE CHARS
5233 013645  5613          JMP I ERROUT    /AND RETURN
5234               
5235 013646  0000  ERRSUM, 0               /PRINT ERROR SUMMARY
5236 013647  1267          TAD ERRCTR
5237 013650  7650          SNA CLA         /ANY ERRORS?
5238 013651  5260          JMP ERSRTN      /NO, FORGET IT
5239 013652  4261          JMS CROUT       /FRESH LINE
5240 013653  1364          TAD (SUMMSG     /GET OUR MESSAGE
5241 013654  4773          JMS ERRSTR      /PRINT THE STRING
5242 013655  1267          TAD ERRCTR      /GET THE COUNT AGAIN
5243 013656  4767          JMS ERBASC      /AND PRINT THEM
5244 013657  4261          JMS CROUT
5245 013660  5646  ERSRTN, JMP I ERRSUM
5246               
5247 013661  0000  CROUT,  0
5248 013662  1363          TAD (215
5249 013663  4771          JMS XZPUT
5250 013664  1362          TAD (212
5251 013665  4771          JMS XZPUT
5252 013666  5661          JMP I CROUT
5253               
5254 013667  0000  ERRCTR, 0
5255               ERRCHR=.+3
5256               /                   XX IS ERRCHR
5257 013670  7777  ERHEAD, TEXT \??RNO.XX.\
     013671  2216  
     013672  1756  
     013673  3030  
     013674  5600  
5258               
5259               
5260               
5261               / SUBROUTINE TO CONVERT NUMBER IN ACC TO DECIMAL ASCII CHARACTERS
5262               / LEADING ZEROES ARE IGNORED
5263               /ROUTINE IS CALLABLE FROM ANY FIELD
5264               /RETURNS WITH NULL WHEN NUMBER IS EXHAUSTED
5265               
5266 013675  0000  BINCHP, 0
5267 013676  0000  BINCHC, 0
5268 013677  0000  BINCHD, 0
5269               
5270 013700  0000  BINCHR, 0
5271 013701  6214          RDF             /WHERE IS HE?
5272 013702  1243          TAD BINCIF      /MAKE CIF INSTRUCTION
5273 013703  3307          DCA BINRIF      /FOR RETURN
5274 013704  6211          CDF 10          /UP HERE NOW
5275 013705  5706          JMP I BINCHO    /TO APPROPRIATE PLACE
5276 013706  3712  BINCHO, BINCH1          /INIT TO START
5277 013707  7402  BINRIF, HLT             /CDF CIF FOR RETURN VECTOR
5278 013710  5700          JMP I BINCHR    /RETURN TO CALLER
5279               
5280 013711  4306          JMS BINCHO      /RESET POINT
5281 013712  1361  BINCH1, TAD (DTABL      /SET UP POINTERS
5282 013713  3275          DCA BINCHP
5283 013714  7346          CLL STA RTL     /AND COUNTERS
5284 013715  3276          DCA BINCHC
5285 013716  3277  BINCH0, DCA BINCHD      /INIT DIGIT EACH TIME
5286 013717  5322          JMP .+3         /DON'T COUNT FIRST TRY
5287 013720  3350  BINCH2, DCA BINNUM      /SAVE NEW NUMBER
5288 013721  2277          INC BINCHD      /AND COUNT DIVIDE
5289 013722  7100          CLL             /WE GO UP TO 4095
5290 013723  1350          TAD BINNUM      /GET OUT INPUT NUMBER
5291 013724  1675          TAD I BINCHP    /SUBTRACT CURRENT POWER OF 10
5292 013725  7430          SZL             /DID IT OVERFLOW?
5293 013726  5320          JMP BINCH2      /NO, DO IT AGAIN
5294 013727  7200          CLA
5295 013730  2275          INC BINCHP      /NEXT POWER OF 10
5296 013731  1277          TAD BINCHD      /GET THE COUNT
5297 013732  7450          SNA             /DID IT GO AT ALL?
5298 013733  5340          JMP BINCH3      /NO, IGNORE LEADING 0
5299 013734  1360          TAD ("0         /MAKE IT AN ASCII DIGIT
5300 013735  0357          AND (377        /MAYBE STRIP OFF FLAG BIT
5301 013736  4306          JMS BINCHO      /SEND HIM THIS ONE
5302 013737  7330          STL CLA RAR     /SET FLAG FOR 0
5303 013740  2276  BINCH3, ISZ BINCHC      /ARE WE DONE?
5304 013741  5316          JMP BINCH0      /NO, NEXT DIGIT
5305 013742  1350          TAD BINNUM      /YES, OUTPUT LAST DIGIT
5306 013743  1360          TAD ("0         /MAKE IT A DIGIT
5307 013744  0357          AND (377        /NO VERY GOOD REASON
5308 013745  4306          JMS BINCHO      /OUTPUT THE LAST ONE
5309 013746  7200          CLA
5310 013747  5311          JMP BINCH1-1    /SEND NULL AND RESET THIS
5311               
5312 013750  0000  BINNUM, 0
5313               
5314                       DECIMAL
5315 013751  6030  DTABL,  -1000
5316 013752  7634          -100
5317 013753  7766          -10
5318                       OCTAL
5319               
5320 013757  0377          PAGE
     013760  0260  
     013761  3751  
     013762  0212  
     013763  0215  
     013764  3460  
     013765  3513  
     013766  0124  
     013767  3514  
     013770  0125  
     013771  3413  
     013772  2362  
     013773  3434  
     013774  3670  
     013775  4026  
     013776  3431  
     013777  3432  
5321               
5322               / MAJOR INITIALIZATION ROUTINE
5323               
5324               
5325 014000  0000  INIT,   0
5326 014001  4777          JMS PUTUSR      /WE WILL DIDDLE USR LOCS
5327 014002  1376          TAD (ZEROS-1)   /FIRST CLEAR THE ZEROABLE VARIABLES
5328 014003  3010          DCA AUTOX1
5329 014004  1375          TAD (ZEROS-ZEROEND)
5330 014005  3075          DCA COUNT
5331 014006  6201          CDF 0           /TARGETS IN FLD 0
5332 014007  3410          DCA I AUTOX1
5333 014010  2075          ISZ COUNT
5334 014011  5206          JMP .-3
5335 014012  1374          TAD (OTHERS-1)  /THEN INITIALIZE SPECIALIZED VARIABLES
5336 014013  3010          DCA AUTOX1
5337 014014  1373          TAD (INITS-1)
5338 014015  3011          DCA AUTOX2
5339 014016  1372          TAD (OTHERS-OTHEREND)
5340 014017  3075          DCA COUNT
5341 014020  6211          CDF 10          /LIST IN THIS FIELD
5342 014021  1411          TAD I AUTOX2
5343 014022  6201          CDF 0           /TARGETS IN FIELD 0
5344 014023  3410          DCA I AUTOX1
5345 014024  2075          ISZ COUNT
5346 014025  5220          JMP .-5
5347 014026  1371          TAD (CMDFLAGS-1) /INIT THE FLAGS
5348 014027  3010          DCA AUTOX1
5349 014030  1370          TAD (FLGBKU)    /AND THEIR BACKUPS
5350 014031  3100          DCA PTR1
5351 014032  1367          TAD (CMDFLAGS-FLGEND) /RANGE OF FLAGS
5352 014033  3075          DCA COUNT
5353 014034  6211  INITXX, CDF 10          /INITIAL VALUES UP HERE
5354 014035  1411          TAD I AUTOX2    /CONTINUING FROM OTHER INITS
5355 014036  6201          CDF 0
5356 014037  3500          DCA I PTR1      /SAVE THE BACKUP
5357 014040  1500          TAD I PTR1      /AND GET IT BACK FOR ACTIVE
5358 014041  3410          DCA I AUTOX1
5359 014042  2100          INC PTR1        /INC THE POINTER
5360 014043  2075          ISZ COUNT       /CHECK THE COUNT
5361 014044  5234          JMP INITXX
5362               
5363 014045  1366          TAD (TABS)
5364 014046  3100          DCA PTR1        /PREPARE TO INITIALIZE TAB TABLE
5365 014047  1365          TAD (-40)       /32 TABS IN TABLE
5366 014050  3076          DCA CTR1
5367 014051  7201          CLA IAC         /1 IS INITIAL TAB SETTING
5368 014052  3500  INIT3,  DCA I PTR1
5369 014053  1364          TAD (10)        /AND EVERY 8 THEREAFTER
5370 014054  1500          TAD I PTR1
5371 014055  2100          INC PTR1
5372 014056  2076          ISZ CTR1        /ALL TABS IN?
5373 014057  5252          JMP INIT3
5374 014060  7300          CLA CLL         /YES
5375 014061  3500          DCA I PTR1      /0 TO END THE TABLE
5376 014062  6211          CDF 10          /NOW INIT THE INTERNAL BUFFERS
5377 014063  3763          DCA I (TITLEB)
5378 014064  3762          DCA I (SBTTLB)
5379 014065  3761          DCA I (CHBUFF)
5380 014066  3760          DCA I (EVBUFF)
5381 014067  3757          DCA I (ODBUFF)
5382 014070  6203          CDF CIF 0       /BACK TO FIELD 0
5383 014071  7240          STA             /CAPITALIZE FIRST CHAR
5384 014072  3756          DCA I (SVECAP)  /NEEDED FOR RESET COMMAND
5385 014073  5600          JMP I INIT      /THEN RETURN
5386               
5387 014074  0000  INITS,  FNBUFF          /FNPTR
5388 014075  0000          0               /SUBPGN
5389 014076  0120  IPWIDE, 120             /PWIDTH
5390 014077  0000          0               /COPYWD
5391 014100  0102  IPLONG, 102             /PLENGTH
5392 014101  6577          STACK           /STKPTR
5393 014102  7777          -1              /PARAGV
5394 014103  0002          2               /PARAGP
5395 014104  0640  ITABCH, 640             /TABCHR
5396 014105  0005          0005            /HWORD
5397 014106  0001          1;2             /TOP
     014107  0002  
5398 014110  0003          3;2             /BOTTOM
     014111  0002  
5399 014112  7777          NO              /TFIRSW
5400 014113  7777  ISWPAR, NO              /SWPARA
5401 014114  0000          YES             /SWHEAD
5402 014115  0000  ISWPAG, YES             /SWPAGE
5403 014116  7777          NO              /SWSBPG
5404 014117  7777  ICCSW,  NO              /SWCC
5405 014120  0000          YES             /SWCAP
5406 014121  0000          YES             /SWPER
5407 014122  0000          YES             /SWPNUM
5408 014123  7777          7777            /UNCASE
5409 014124  7777          7777            /CQCASE
5410               
5411 014125  0001          1               /ALMARG
5412               
5413               /THE INITIAL VALUES OF THE FOOTNOTE PRESERVATION GROUP
5414 014126  0001          1               /LMARG
5415 014127  0106          106             /RMARG - MARGIN GROUP
5416 014130  0000          YES             /SWJUST
5417 014131  0000          YES             /SWFILL - NOTE LIST GROUP
5418 014132  7777  ILSPAC, -1              /LSPACE
5419 014133  0005          5               /PARAGN
5420 014134  7777  IMODE,  7777            /MODE
5421 014135  7777          7777            /UNMODE
5422 014136  7777          7777            /CFMODE
5423 014137  7777          7777            /HFILL
5424               
5425               /THE FLAGS ARE HANDLED SEPARATELY, BUT FOLLOW AFTER THE OTHERS
5426               /DO NOT SEPARATE
5427               
5428 014140  0000          YES             /CTFLAG
5429 014141  0000          YES             /EFFLAG
5430 014142  0000          YES             /SPFLAG
5431 014143  0000          YES             /QUFLAG
5432 014144  7777          NO              /CQFLAG
5433 014145  7777          NO              /HYPFLG
5434 014146  7777          NO              /SUBFLG
5435 014147  7777          NO              /NDXFLG
5436 014150  0000          YES             /UCFLAG
5437 014151  0000          YES             /UNFLAG
5438 014152  7777          NO              /CFFLAG
5439 014153  0000          YES             /LCFLAG
5440               
5441 014156  0276  PAGE
     014157  5647  
     014160  5546  
     014161  5525  
     014162  5323  
     014163  5424  
     014164  0010  
     014165  7740  
     014166  6333  
     014167  7764  
     014170  6270  
     014171  6253  
     014172  7734  
     014173  4073  
     014174  0017  
     014175  7767  
     014176  0063  
     014177  2721  
5442               
5443 014200  2711  CENTW,  TEXT    "WIDTH"
     014201  0424  
     014202  1000  
5444 014203  1501          TEXT    "MARGINS"
     014204  2207  
     014205  1116  
     014206  2300  
5445 014207  0000          0
5446               
5447 014210  3676  CENTJ,  CWDTH
5448 014211  3721          CMARG
5449               
5450               / THE JUMP LIST FOR THE LEGAL COMMANDS
5451               
5452 014212  6107  CMDJ,   AUTCAP  /       "AC"
5453 014213  2751          AUTOP   /       "AP"
5454 014214  6107          AUTCAP  /       "AUTOCAPITALIZE"
5455 014215  2751          AUTOP   /       "AUTOPARAGRAPH"
5456 014216  2201          BLANK   /       "B"
5457 014217  2201          BLANK   /       "BLANK"
5458 014220  1766          BREAKC  /       "BR"
5459 014221  1766          BREAKC  /       "BREAK"
5460 014222  3665          CENTC   /       "C"
5461 014223  4361          CHARCC  /       "CC"
5462 014224  3665          CENTC   /       "CENTER"
5463 014225  3665          CENTC   /       "CENTRE"
5464 014226  2444          CHAPTER /       "CHAPTER"
5465 014227  3721          CMARG   /       "CM"
5466 014230  4133          CMDCOM  /       "COMMENT"
5467 014231  4355          CCHARS  /       "CONTROL"
5468 014232  3676          CWDTH   /       "CW"
5469 014233  4762          CDOWN   /       "DOWN"
5470 014234  5674          ENNOTE  /       "ELS"
5471 014235  5710          END     /       "END"
5472 014236  2530          ESUBPG  /       "ES"
5473 014237  2452          EVEN    /       "EVEN"
5474 014240  2413          FILLC   /       "F"
5475 014241  2007          FIGDEF  /       "FD"
5476 014242  2000          FIGURE  /       "FG"
5477 014243  2000          FIGURE  /       "FIGURE"
5478 014244  2413          FILLC   /       "FILL"
5479 014245  5557          FSTTL   /       "FIRST"
5480 014246  2037          FLAGC   /       "FLAGS"
5481 014247  3062          FNOTE   /       "FN"
5482 014250  3062          FNOTE   /       "FOOTNOTE"
5483 014251  5563          FSTTL1  /       "FT"
5484 014252  3602          HEADER  /       "HEADER"
5485 014253  3602          HEADER  /       "HD"
5486 014254  5412          INDENT  /       "I"
5487 014255  1724          NYIMPL  /       "IF"  IFCOND
5488 014256  5412          INDENT  /       "INDENT"
5489 014257  1724          NYIMPL  /       "INDEX"
5490 014260  2402          JUST    /       "JUSTIFY"
5491 014261  2600          LEFT    /       "L"
5492 014262  6100          LCASE   /       "LC"
5493 014263  2600          LEFT    /       "LEFT"
5494 014264  5620          LSDO    /       "LIST"
5495 014265  1724          NYIMPL  /       "LITERAL"
5496 014266  2634          LMARGC  /       "LM"
5497 014267  6072          LOWER   /       "LOWER"
5498 014270  5620          LSDO    /       "LS"
5499 014271  2675          MARGNS  /       "MARGINS"
5500 014272  6105          NAUTOC  /       "NAC"
5501 014273  2747          NAUTOP  /       "NAP"
5502 014274  4353          NOCCHR  /       "NCC"
5503 014275  2411          NOFILL  /       "NF"
5504 014276  2035          NOFLGC  /       "NFL"
5505 014277  3600          NOHEAD  /       "NHD"
5506 014300  2400          NOJUST  /       "NJ"
5507 014301  2430          NUMCMD  /       "NM"
5508 014302  2426          NONUM   /       "NNM"
5509 014303  5600          NOTEDO  /       "NOTE"
5510 014304  2520          NOPAGE  /       "NPA"
5511 014305  2132          NOPER   /       "NPR"
5512 014306  1724          NYIMPL  /       "NSL"
5513 014307  5600          NOTEDO  /       "NT"
5514 014310  5752          NTBQOT  /       "NTQ"
5515 014311  5241          NOTABS  /       "NTS"  NOTABS
5516 014312  2430          NUMCMD  /       "NUMBER"
5517 014313  2454          ODD     /       "ODD"
5518 014314  6123          COVER   /       "OVER"
5519 014315  2245          PARAGRAPH       /       "P"
5520 014316  2522          PAGING  /       "PA"
5521 014317  4200          PAGEC   /       "PAGE"
5522 014320  2522          PAGING  /       "PAGING"
5523 014321  4200          PAGEC   /       "PAPER"
5524 014322  2245          PARAGRAPH       /       "PARAGRAPH"
5525 014323  4275          PAGBOT          /"PB"
5526 014324  2134          PERIOD  /       "PERIOD"
5527 014325  4200          PAGEC   /       "PG"
5528 014326  2134          PERIOD  /       "PR"
5529 014327  1724          NYIMPL  /       "PRINT" INDEX
5530 014330  4234          PAGSIZE /       "PS"
5531 014331  4274          PAGTOP  /       "PT"
5532 014332  2601          RIGHT   /       "R"
5533 014333  5717          RESET   /       "RESET" REINITIALIZE
5534 014334  2601          RIGHT   /       "RIGHT"
5535 014335  2635          RMARGC  /       "RM"
5536 014336  2200          SKIP    /       "S"
5537 014337  1724          NYIMPL  /       "SD" SET DEFAULTS
5538 014340  1724          NYIMPL  /       "SELECTION"
5539 014341  2200          SKIP    /       "SKIP"
5540 014342  1724          NYIMPL  /       "SL"
5541 014343  4142          SPACING /       "SPACING"
5542 014344  2525          SUBPG   /       "SPG"
5543 014345  1724          NYIMPL  /       "SUBINDEX"
5544 014346  2525          SUBPG   /       "SUBPAGE"
5545 014347  2450          SBTTLC  /       "ST"
5546 014350  2450          SBTTLC  /       "SUBTTL"
5547 014351  2450          SBTTLC  /       "SUBTITLE"
5548 014352  2456          TITLEC  /       "T"
5549 014353  5255          TABABS  /       "TA"
5550 014354  5245          TABSAR  /       "TABS"
5551 014355  2335          TESTPG  /       "TEST"
5552 014356  2456          TITLEC  /       "TITLE"
5553 014357  2341          TSTPG   /       "TP"
5554 014360  5754          TABQOT  /       "TQ"
5555 014361  5254          TABREL  /       "TR"
5556 014362  5200          TABGET  /       "TS"
5557 014363  6101          UCASE   /       "UC"
5558 014364  6073          UPPER   /       "UPPER"
5559 014365  1724          NYIMPL  /       "X" SUBINDEX
5560               
5561               
5562               / THE COMMANDS THAT ARE CURRENTLY RECOGNIZED IN THIS VERSION
5563               
5564 014366  0103  CMDS,   TEXT    "AC"
     014367  0000  
5565 014370  0120          TEXT    "AP"
     014371  0000  
5566 014372  0125          TEXT    "AUTOCAPITALIZE"
     014373  2417  
     014374  0301  
     014375  2011  
     014376  2401  
     014377  1411  
     014400  3205  
     014401  0000  
5567 014402  0125          TEXT    "AUTOPARAGRAPH"
     014403  2417  
     014404  2001  
     014405  2201  
     014406  0722  
     014407  0120  
     014410  1000  
5568 014411  0200          TEXT    "B"
5569 014412  0214          TEXT    "BLANK"
     014413  0116  
     014414  1300  
5570 014415  0222          TEXT    "BR"
     014416  0000  
5571 014417  0222          TEXT    "BREAK"
     014420  0501  
     014421  1300  
5572 014422  0300          TEXT    "C"
5573 014423  0303          TEXT    "CC"
     014424  0000  
5574 014425  0305          TEXT    "CENTER"
     014426  1624  
     014427  0522  
     014430  0000  
5575 014431  0305          TEXT    "CENTRE"
     014432  1624  
     014433  2205  
     014434  0000  
5576 014435  0310          TEXT    "CHAPTER"
     014436  0120  
     014437  2405  
     014440  2200  
5577 014441  0315          TEXT    "CM"
     014442  0000  
5578 014443  0317          TEXT    "COMMENT"
     014444  1515  
     014445  0516  
     014446  2400  
5579 014447  0317          TEXT    "CONTROL"
     014450  1624  
     014451  2217  
     014452  1400  
5580 014453  0327          TEXT    "CW"
     014454  0000  
5581 014455  0417          TEXT    "DOWN"
     014456  2716  
     014457  0000  
5582 014460  0514          TEXT    "ELS"
     014461  2300  
5583 014462  0516          TEXT    "END"
     014463  0400  
5584 014464  0523          TEXT    "ES"
     014465  0000  
5585 014466  0526          TEXT    "EVEN"
     014467  0516  
     014470  0000  
5586 014471  0600          TEXT    "F"
5587 014472  0604          TEXT    "FD"
     014473  0000  
5588 014474  0607          TEXT    "FG"
     014475  0000  
5589 014476  0611          TEXT    "FIGURE"
     014477  0725  
     014500  2205  
     014501  0000  
5590 014502  0611          TEXT    "FILL"
     014503  1414  
     014504  0000  
5591 014505  0611          TEXT    "FIRST"
     014506  2223  
     014507  2400  
5592 014510  0614          TEXT    "FLAGS"
     014511  0107  
     014512  2300  
5593 014513  0616          TEXT    "FN"
     014514  0000  
5594 014515  0617          TEXT    "FOOTNOTE"
     014516  1724  
     014517  1617  
     014520  2405  
     014521  0000  
5595 014522  0624          TEXT    "FT"
     014523  0000  
5596 014524  1005          TEXT    "HEADER"
     014525  0104  
     014526  0522  
     014527  0000  
5597 014530  1004          TEXT    "HD"
     014531  0000  
5598 014532  1100          TEXT    "I"
5599 014533  1106          TEXT    "IF"
     014534  0000  
5600 014535  1116          TEXT    "INDENT"
     014536  0405  
     014537  1624  
     014540  0000  
5601 014541  1116  NDXWRD, TEXT    "INDEX"
     014542  0405  
     014543  3000  
5602 014544  1225          TEXT    "JUSTIFY"
     014545  2324  
     014546  1106  
     014547  3100  
5603 014550  1400          TEXT    "L"
5604 014551  1403          TEXT    "LC"
     014552  0000  
5605 014553  1405          TEXT    "LEFT"
     014554  0624  
     014555  0000  
5606 014556  1411          TEXT    "LIST"
     014557  2324  
     014560  0000  
5607 014561  1411          TEXT    "LITERAL"
     014562  2405  
     014563  2201  
     014564  1400  
5608 014565  1415          TEXT    "LM"
     014566  0000  
5609 014567  1417          TEXT    "LOWER"
     014570  2705  
     014571  2200  
5610 014572  1423          TEXT    "LS"
     014573  0000  
5611 014574  1501  MARGWD, TEXT    "MARGINS"
     014575  2207  
     014576  1116  
     014577  2300  
5612 014600  1601          TEXT    "NAC"
     014601  0300  
5613 014602  1601          TEXT    "NAP"
     014603  2000  
5614 014604  1603          TEXT    "NCC"
     014605  0300  
5615 014606  1606          TEXT    "NF"
     014607  0000  
5616 014610  1606          TEXT    "NFL"
     014611  1400  
5617 014612  1610          TEXT    "NHD"
     014613  0400  
5618 014614  1612          TEXT    "NJ"
     014615  0000  
5619 014616  1615          TEXT    "NM"
     014617  0000  
5620 014620  1616          TEXT    "NNM"
     014621  1500  
5621 014622  1617          TEXT    "NOTE"
     014623  2405  
     014624  0000  
5622 014625  1620          TEXT    "NPA"
     014626  0100  
5623 014627  1620          TEXT    "NPR"
     014630  2200  
5624 014631  1623          TEXT    "NSL"
     014632  1400  
5625 014633  1624          TEXT    "NT"
     014634  0000  
5626 014635  1624          TEXT    "NTQ"
     014636  2100  
5627 014637  1624          TEXT    "NTS"
     014640  2300  
5628 014641  1625          TEXT    "NUMBER"
     014642  1502  
     014643  0522  
     014644  0000  
5629 014645  1704          TEXT    "ODD"
     014646  0400  
5630 014647  1726          TEXT    "OVER"
     014650  0522  
     014651  0000  
5631 014652  2000          TEXT    "P"
5632 014653  2001          TEXT    "PA"
     014654  0000  
5633 014655  2001  TSTPGL, TEXT    "PAGE"
     014656  0705  
     014657  0000  
5634 014660  2001          TEXT    "PAGING"
     014661  0711  
     014662  1607  
     014663  0000  
5635 014664  2001          TEXT    "PAPER"
     014665  2005  
     014666  2200  
5636 014667  2001          TEXT    "PARAGRAPH"
     014670  2201  
     014671  0722  
     014672  0120  
     014673  1000  
5637 014674  2002          TEXT    "PB"
     014675  0000  
5638 014676  2005          TEXT    "PERIOD"
     014677  2211  
     014700  1704  
     014701  0000  
5639 014702  2007          TEXT    "PG"
     014703  0000  
5640 014704  2022          TEXT    "PR"
     014705  0000  
5641 014706  2022          TEXT    "PRINT"
     014707  1116  
     014710  2400  
5642 014711  2023          TEXT    "PS"
     014712  0000  
5643 014713  2024          TEXT    "PT"
     014714  0000  
5644 014715  2200          TEXT    "R"
5645 014716  2205          TEXT    "RESET"
     014717  2305  
     014720  2400  
5646 014721  2211          TEXT    "RIGHT"
     014722  0710  
     014723  2400  
5647 014724  2215          TEXT    "RM"
     014725  0000  
5648 014726  2300          TEXT    "S"
5649 014727  2304          TEXT    "SD"
     014730  0000  
5650 014731  2305          TEXT    "SELECT"
     014732  1405  
     014733  0324  
     014734  0000  
5651 014735  2313          TEXT    "SKIP"
     014736  1120  
     014737  0000  
5652 014740  2314          TEXT    "SL"
     014741  0000  
5653 014742  2320          TEXT    "SPACING"
     014743  0103  
     014744  1116  
     014745  0700  
5654 014746  2320          TEXT    "SPG"
     014747  0700  
5655 014750  2325          TEXT    "SUBINDEX"
     014751  0211  
     014752  1604  
     014753  0530  
     014754  0000  
5656 014755  2325          TEXT    "SUBPAGE"
     014756  0220  
     014757  0107  
     014760  0500  
5657 014761  2324          TEXT    "ST"
     014762  0000  
5658 014763  2325          TEXT    "SUBTTL"
     014764  0224  
     014765  2414  
     014766  0000  
5659 014767  2325          TEXT    "SUBTITLE"
     014770  0224  
     014771  1124  
     014772  1405  
     014773  0000  
5660 014774  2400          TEXT    "T"
5661 014775  2401          TEXT    "TA"
     014776  0000  
5662 014777  2401          TEXT    "TABS"
     015000  0223  
     015001  0000  
5663 015002  2405          TEXT    "TEST"
     015003  2324  
     015004  0000  
5664 015005  2411  TITWRD, TEXT    "TITLE"
     015006  2414  
     015007  0500  
5665 015010  2420          TEXT    "TP"
     015011  0000  
5666 015012  2421          TEXT    "TQ"
     015013  0000  
5667 015014  2422          TEXT    "TR"
     015015  0000  
5668 015016  2423          TEXT    "TS"
     015017  0000  
5669 015020  2503          TEXT    "UC"
     015021  0000  
5670 015022  2520          TEXT    "UPPER"
     015023  2005  
     015024  2200  
5671 015025  3000          TEXT    "X"
5672 015026  0000          0
5673               
5674               / FLAG WORDS FOR .FLAG COMMANDS
5675               
5676 015027  0114  FLGWDS, TEXT    "ALL"
     015030  1400  
5677 015031  0317          TEXT    "CONTROL"
     015032  1624  
     015033  2217  
     015034  1400  
5678 015035  0516          TEXT    "ENDFOOTNOTE"
     015036  0406  
     015037  1717  
     015040  2416  
     015041  1724  
     015042  0500  
5679 015043  2320          TEXT    "SPACE"
     015044  0103  
     015045  0500  
5680 015046  2125          TEXT    "QUOTE"
     015047  1724  
     015050  0500  
5681 015051  0301          TEXT    "CAPITALIZE"
     015052  2011  
     015053  2401  
     015054  1411  
     015055  3205  
     015056  0000  
5682 015057  1031          TEXT    "HYPHEN"
     015060  2010  
     015061  0516  
     015062  0000  
5683 015063  2325          TEXT    "SUBINDEX"
     015064  0211  
     015065  1604  
     015066  0530  
     015067  0000  
5684 015070  1116          TEXT    "INDEX"
     015071  0405  
     015072  3000  
5685 015073  2520          TEXT    "UPPERCASE"
     015074  2005  
     015075  2203  
     015076  0123  
     015077  0500  
5686 015100  2516          TEXT    "UNDERLINE"
     015101  0405  
     015102  2214  
     015103  1116  
     015104  0500  
5687 015105  0611          TEXT    "FIRSTCAPITALIZE"
     015106  2223  
     015107  2403  
     015110  0120  
     015111  1124  
     015112  0114  
     015113  1132  
     015114  0500  
5688 015115  1417          TEXT    "LOWERCASE"
     015116  2705  
     015117  2203  
     015120  0123  
     015121  0500  
5689 015122  0000          0
5690               
5691               /JUMP TARGETS FOR .END EXTENSIONS
5692               
5693 015123  2530  ENDWJ,  ESUBPG
5694 015124  5674          ENNOTE
5695 015125  5674          ENNOTE          /END LIST = END NOTE
5696 015126  1724          NYIMPL          /NO LITERAL BLOCKS
5697 015127  1724          NYIMPL          /NO CONDITIONALS
5698 015130  1724          NYIMPL          /NO END FOOTNOTE
5699 015131  1724          NYIMPL          /NO END BLOCK
5700 015132  1724          NYIMPL          /NO END MACRO
5701               
5702               /SECOND WORD FOR .END COMMAND
5703               
5704 015133  2325  ENDWORD, TEXT   "SUBPAGE"
     015134  0220  
     015135  0107  
     015136  0500  
5705 015137  1617          TEXT    "NOTE"
     015140  2405  
     015141  0000  
5706 015142  1411          TEXT    "LIST"
     015143  2324  
     015144  0000  
5707 015145  1411          TEXT    "LITERAL"
     015146  2405  
     015147  2201  
     015150  1400  
5708 015151  1106          TEXT    "IF"
     015152  0000  
5709 015153  0617          TEXT    "FOOTNOTE"
     015154  1724  
     015155  1617  
     015156  2405  
     015157  0000  
5710 015160  0214          TEXT    "BLOCK"
     015161  1703  
     015162  1300  
5711 015163  1501          TEXT    "MACRO"
     015164  0322  
     015165  1700  
5712 015166  0000          0
5713               
5714               / SECOND WORD FOR .TABS COMMANDS
5715               
5716 015167  2205  TABSLJ, TEXT    "RELATIVE"
     015170  1401  
     015171  2411  
     015172  2605  
     015173  0000  
5717 015174  0102          TEXT    "ABSOLUTE"
     015175  2317  
     015176  1425  
     015177  2405  
     015200  0000  
5718 015201  2324          TEXT    "STOPS"
     015202  1720  
     015203  2300  
5719 015204  2125          TEXT    "QUOTE"
     015205  1724  
     015206  0500  
5720 015207  0000          0
5721               
5722               / COMMAND WORDS FOR .HEADER COMMAND
5723               
5724 015210  1625  HEADWD, TEXT    "NUMBER"
     015211  1502  
     015212  0522  
     015213  0000  
5725 015214  2520          TEXT    "UPPER"
     015215  2005  
     015216  2200  
5726 015217  1417          TEXT    "LOWER"
     015220  2705  
     015221  2200  
5727 015222  1511          TEXT    "MIXED"
     015223  3005  
     015224  0400  
5728 015225  1405          TEXT    "LEFT"
     015226  0624  
     015227  0000  
5729 015230  2211          TEXT    "RIGHT"
     015231  0710  
     015232  2400  
5730 015233  0305          TEXT    "CENTER"
     015234  1624  
     015235  0522  
     015236  0000  
5731 015237  0114          TEXT    "ALTER"
     015240  2405  
     015241  2200  
5732 015242  2417          TEXT    "TOP"
     015243  2000  
5733 015244  0217          TEXT    "BOTTOM"
     015245  2424  
     015246  1715  
     015247  0000  
5734 015250  0122          TEXT    "ARABIC"
     015251  0102  
     015252  1103  
     015253  0000  
5735 015254  2217          TEXT    "ROMAN"
     015255  1501  
     015256  1600  
5736 015257  2320          TEXT    "SPLIT"
     015260  1411  
     015261  2400  
5737 015262  2317          TEXT    "SOLID"
     015263  1411  
     015264  0400  
5738 015265  0000          0
5739               
5740 015266  0405  FIGWD,  TEXT    "DEFERRED"
     015267  0605  
     015270  2222  
     015271  0504  
     015272  0000  
5741 015273  0301  CASEWD, TEXT    "CASE"
     015274  2305  
     015275  0000  
5742 015276  0310  CCHRS,  TEXT    "CHARACTERS"
     015277  0122  
     015300  0103  
     015301  2405  
     015302  2223  
     015303  0000  
5743               
5744               
5745               / ARGUMENTS FOR "PAGE" COMMAND
5746               
5747 015304  2417  PAGCMD, TEXT    "TOP"
     015305  2000  
5748 015306  0217          TEXT    "BOTTOM"
     015307  2424  
     015310  1715  
     015311  0000  
5749 015312  2311  PAPERL, TEXT    "SIZE"
     015313  3205  
     015314  0000  
5750 015315  0526          TEXT    "EVEN"
     015316  0516  
     015317  0000  
5751 015320  1704          TEXT    "ODD"
     015321  0400  
5752 015322  0000          0
5753               
5754                       DOT=.
5755               
5756                       CHLENGTH=20     /LENGTH OF CHAPTER BUFFER
5757                       STLENGTH=100    /LENGTH OF SUB-TITLE BUFFER
5758                       TLENGTH=100     /LENGTH OF TITLE BUFFER
5759               SBTTLB=DOT;     DOT=DOT+STLENGTH+1 /SUBTITLE BUFFER
5760               TITLEB=DOT;     DOT=DOT+TLENGTH+1 /TITLE BUFFER
5761               CHBUFF=DOT;     DOT=DOT+CHLENGTH+1 /CHAPTER BUFFER
5762               EVBUFF=DOT;     DOT=DOT+TLENGTH+1 /EVEN PAGE TITLE BUFFER
5763               ODBUFF=DOT;     DOT=DOT+TLENGTH+1 /ODD PAGE TITLE BUFFER
5764               
5765               STKEND=DOT
5766               STACK=6577              /THE STACK FOR THIS PROGRAM
5767               
5768               IFNZRO  STACK-STKEND-MAXWIDTH-30&4000 <
5769               SHSTCK, 0               /PROTECT THE STACK
5770                       ZZZZ            /US ON SHORT STACK
5771               >
5772               
5773               
5774                       DOT=STACK+1
5775               
5776               *DOT                    /OPTION CODE IN THE BUFFER AREA
5777               /OPTIONS FETCHING CODE
5778               /SLOPPY BUT WE NEED ROOM IN FIELD 0
5779               
5780               /VALUES FOR ALTERNATE AND DEFAULT CHARS SPACINGS ETC
5781 016600  0027  KBSDIF, ALBSCH-BSCH     /DEFINED AT BEGINNING
5782 016601  0010  KBSCH,  BSCH            /NORMAL BACKSPACE CHAR
5783 016602  7772  KLONGD, LONG2-LONG1     /DIFFERENCE IN ALTERNATE LENGTHS
5784 016603  0102  KLONG1, LONG1           /ALTERNATE LENGTH
5785               
5786               /SUBROUTINE TO STORE ACC IN FLD 0 LOCATION
5787               
5788 016604  0000  STOZRO, 0
5789 016605  3216          DCA STOACC      /SAVE ACC
5790 016606  1604          TAD I STOZRO    /WHERE DO WE PUT IT
5791 016607  3217          DCA STOPTR      /FOR PUTTING IT
5792 016610  2204          ISZ STOZRO      /SKIP OVER ARG
5793 016611  6201          CDF 0           /IT GOES TO ZERO
5794 016612  1216          TAD STOACC      /GET THE VALUE
5795 016613  3617          DCA I STOPTR    /AND STORE IT
5796 016614  6211          CDF 10          /NOW BACK TO HERE
5797 016615  5604          JMP I STOZRO    /AND RETURN
5798               
5799 016616  0000  STOACC, 0
5800 016617  0000  STOPTR, 0
5801               
5802 016620  2225  RNONAM, FILENAME RUNOFF.SV
     016621  1617  
     016622  0606  
     016623  2326  
5803               
5804 016624  0000  OPTION, 0
5805 016625  7201          CLA IAC
5806 016626  6211          CDF 10
5807 016627  4777          JMS I (7700
5808 016630  0002            2             /LOOK UP
5809 016631  6620  RNOARG, RNONAM          /OURSELVES FOR CHAINING
5810 016632  0000            0             /WE DON'T REALLY CARE HOW LONG
5811                                       /BUT WE COULD CHECK TO PREVENT ERRORS
5812 016633  7610          SKP CLA         /IF AN ERROR MAKE BLOCK 0
5813 016634  1231          TAD RNOARG
5814 016635  3776          DCA CHAINB      /WE WILL CHAIN TO HERE LATER
5815               
5816               
5817               /NOW GET THE OPTION SWITCHES
5818               
5819 016636  1775          TAD I (MPARAM)
5820 016637  7700          SMA CLA         /A SWITCH IS SIGN - AUTOPARA
5821 016640  7240          STA             /MAKE FLAG NO IF NOT SET
5822 016641  3774            DCA ISWPAR    /SET UP FOR INIT AND RESET
5823 016642  7332          CLA STL RTR     /AC2000
5824 016643  0775          AND I (MPARAM   /B FOR BACKSPACE CHAR
5825 016644  7640          SZA CLA         /IS IT SET
5826 016645  1200          TAD KBSDIF      /YES, SELECT ALTERNATE
5827 016646  1201          TAD KBSCH       /NO, SELECT NORMAL
5828 016647  4204          JMS STOZRO      /PUT IT IN FIELD 0
5829 016650  3513            BSPCHR
5830 016651  1775          TAD I (MPARAM
5831 016652  0373          AND (1000       /C - INITIAL CASE UPPER
5832 016653  7650          SNA CLA         /IS IT SET
5833 016654  7240          STA             /MAKE MODE NO
5834 016655  3772            DCA IMODE     /INITIALLY AND RESET
5835 016656  1775          TAD I (MPARAM
5836 016657  0371          AND (400        /D FOR DOWN
5837 016660  7650          SNA CLA         /IS IT SET
5838 016661  5271          JMP .+10        /NO, GET NEXT
5839 016662  1770          TAD I (MPARAM-1 /YES, GET NUMERIC ARG
5840 016663  7012          RTR;RTR;RTR     /MOVE IT DOWN
     016664  7012  
     016665  7012  
5841 016666  0367          AND (37         /ONLY DOWN
5842 016667  4204          JMS STOZRO      /SAVE IN FIELD 0
5843 016670  4765            KDOWN
5844               
5845               /E SWITCH IS CHECKED LAST
5846               
5847 016671  1775          TAD I (MPARAM
5848 016672  0366          AND (100)       /LOOK FOR /F OPTION
5849 016673  7640          SZA CLA         /DO WE DISABLE PAGING
5850 016674  7240          STA             /YES
5851 016675  3765            DCA ISWPAG    /OR MAYBE NO
5852               
5853               /G NOT USED
5854               
5855 016676  1775          TAD I (MPARAM   /FOR FARLEY ALLOW OLD STYLE BREAK
5856 016677  0364          AND (20
5857 016700  7650          SNA CLA         /IS IT SET?
5858 016701  1363          TAD (2000+LSPACE        /LOAD FAKE INSTR.
5859 016702  1362          TAD (NOP        /YES, REPLACE WITH NOP
5860 016703  4204          JMS STOZRO
5861 016704  1715            BRKMOD        /NOT CLEAN, BUT EFFECTIVE
5862 016705  1775          TAD I (MPARAM
5863 016706  0361          AND (10         /LOOK FOR I
5864 016707  7650          SNA CLA
5865 016710  7240          STA             /NO, DON'T SEQUENCE
5866 016711  4204          JMS STOZRO      /PUT IT IN FIELD 0
5867 016712  0126            SEQFLG
5868 016713  7307          CLA CLL IAC RTL /AC0004
5869 016714  0775          AND I (MPARAM   /CHECK J
5870 016715  7640          SZA CLA
5871 016716  1360          TAD (" -"-)     /BLANK OUT BREAK CHAR?
5872 016717  1357          TAD ("-)
5873 016720  4204          JMS STOZRO
5874 016721  4500            BRKCHR        /WHICHEVER, PUT IT
5875 016722  7305          CLA IAC CLL RAL /ACC EQ 2
5876 016723  0775          AND I (MPARAM)  /IS K SET
5877 016724  3756            DCA KFLAG     /IF SO FLAG IS NONZERO
5878 016725  7201          CLA IAC
5879 016726  0775          AND I (MPARAM   /L LENGTH
5880 016727  7640          SZA CLA         /IS IT SET
5881 016730  1202          TAD KLONGD      /SELECT ALTERNATE LENGTH
5882 016731  1203          TAD KLONG1      /SELECT STANDARD
5883 016732  3755            DCA IPLONG    /SET FOR INIT
5884 016733  7332          CLA STL RTR     /AC2000
5885 016734  0754          AND I (MPARAM+1 /N SWITCH
5886 016735  3753            DCA LFLAG     /IF SET LFLAG NONZERO
5887 016736  4752          JMS OPTG2       /MORE OPTIONS NEXT PAGE
5888 016737  6203          CDF CIF 00      /DOWN TO FIELD 0 NOW
5889 016740  5624          JMP I OPTION
5890               
5891 016752  7007  PAGE
     016753  3431  
     016754  7644  
     016755  4100  
     016756  3432  
     016757  0255  
     016760  7763  
     016761  0010  
     016762  7000  
     016763  2056  
     016764  0020  
     016765  4115  
     016766  0100  
     016767  0037  
     016770  7642  
     016771  0400  
     016772  4134  
     016773  1000  
     016774  4113  
     016775  7643  
     016776  3407  
     016777  7700  
5892               
5893               
5894 017000  7716  KULCHD, ULCH2-ULCH1
5895 017001  0137  KULCH1, ULCH1
5896 017002  7755  KWIDD,  WID2-WID1
5897 017003  0117  KWID1,  WID1
5898                       EXT12=6162
5899                       EXTPA=2001
5900 017004  2001  INFEXT, EXTPA
5901               /STAR MODE LOOKUPS MAYBE LATER
5902               /THEY WILL STORE THE FIRST EXTENSION HERE
5903               
5904 017005  5777  MKPA,   -EXTPA
5905 017006  3617  MKPA12, EXTPA-EXT12
5906               
5907 017007  0000  OPTG2,  0
5908 017010  1777  OPTEM,  TAD I (MPARAM+1 /SINCE THIS IS ONCE ONLY CODE THIS IS OK
5909 017011  0376          AND (1000       /O SWITCH FOR OVER
5910 017012  7650          SNA CLA
5911 017013  5235          JMP OVERNO      /NO OVER
5912 017014  1775          TAD I (MPARAM-1 /IN TOP HALF
5913 017015  0374          AND (77         /BOTTOM 6 BITS
5914 017016  3210          DCA OPTEM
5915 017017  1210          TAD OPTEM
5916 017020  4773          JMS STOZRO
5917 017021  3511            KOVERE                /PUT IT IN FLD 0
5918 017022  1772          TAD I (MPARAM+3 /SECOND OPTION NUMBER
5919 017023  7012          RTR;RTR;RTR
     017024  7012  
     017025  7012  
5920 017026  0374          AND (77         /IS THERE ANYTHING THERE?
5921 017027  7041          CIA             /WE WANT THE DIFFERENCE
5922 017030  7440          SZA             /OR 0 IF NO ARG
5923 017031  1210          TAD OPTEM       /USE THE OTHER ONE
5924 017032  7041          CIA             /WE WANT ODD - EVEN NOT EVEN - ODD
5925 017033  4773          JMS STOZRO
5926 017034  3512            KOVERO                /THE OVER FOR ODD PAGES
5927 017035  1371  OVERNO, TAD (400)       /LOOK FOR /P
5928 017036  0777          AND I (MPARAM+1)
5929 017037  7650          SNA CLA         /IS IT SET?
5930 017040  5245          JMP NOPSWT
5931 017041  1370          TAD (" )        /GET A SPACE
5932 017042  4773          JMS STOZRO      /STORE IT FOR THE 
5933 017043  4500            BRKCHR        /PAGE BREAK CHAR
5934 017044  7240          STA             /MAKE FLAG NONZERO
5935 017045  4773  NOPSWT, JMS STOZRO      /SET THE PAUSE FLAG
5936 017046  0107            PSWITC
5937 017047  1777          TAD I (MPARAM+1
5938 017050  0367          AND (200        /Q UNDERLINE CHAR
5939 017051  7640          SZA CLA
5940 017052  1200          TAD KULCHD      /SELECT 1ST CHAR
5941 017053  1201          TAD KULCH1      /OR SECOND
5942 017054  4773          JMS STOZRO
5943 017055  3504            ULCHR
5944               /R NOT USED
5945 017056  1777          TAD I (MPARAM+1
5946 017057  0366          AND (40         /S SEL ALTERNATE SPACING
5947 017060  7640          SZA CLA         /IS IT SET?
5948 017061  7240          STA             /YES ACC=-1
5949 017062  1365          TAD (-1         /OR JUST -1
5950 017063  3764            DCA ILSPAC    /FOR INITIAL LINE SPACING
5951 017064  1777          TAD I (MPARAM+1
5952 017065  0363          AND (20         /T CHANGE TO NOTABS QUOTE
5953 017066  7650          SNA CLA         /IS IT?
5954 017067  1371          TAD (400        /NO, SET THE QUOTE
5955 017070  1370          TAD (" )        /SET THE SPACE CHAR
5956 017071  3762            DCA ITABCH    /FOR INIT
5957 017072  1777          TAD I (MPARAM+1
5958 017073  0361          AND (10         /U CHANGE UNDERLINE MODE
5959 017074  7640          SZA CLA
5960 017075  7350          CLL STA RAR     /AC3777
5961 017076  7001          IAC             /EITHER 1 OR 4000
5962 017077  4773          JMS STOZRO      /SAVE IT
5963 017100  3505            UNSWIT
5964 017101  7307          CLA CLL IAC RTL /AC0004
5965 017102  0777          AND I (MPARAM+1
5966 017103  4773          JMS STOZRO
5967 017104  0110            FSWITCH       /SIMULATE FORM FEED SWITCH
5968 017105  7305          CLA CLL IAC RAL /AC0002
5969 017106  0777          AND I (MPARAM+1 /W PAGE WIDTH ALTERNATE
5970 017107  7640          SZA CLA
5971 017110  1202          TAD KWIDD
5972 017111  1203          TAD KWID1
5973 017112  3760            DCA IPWIDE    /STORE FOR INIT CODE
5974 017113  7201          CLA IAC         /AC0001
5975 017114  0777          AND I (MPARAM+1 /X NO LOWER CASE TO OUTPUT
5976 017115  4773          JMS STOZRO
5977 017116  0111            USWITCH       /UPPER CASE ONLY
5978 017117  1757          TAD MPARAM+2
5979 017120  7700          SMA CLA
5980 017121  7240          STA             /NO CONTROL CHARS
5981 017122  3756            DCA ICCSW     /ALLOW CONTROL CHARS?
5982 017123  7332          CLA STL RTR     /AC2000
5983 017124  0757          AND I (MPARAM+2 /Z SELECT STRING
5984 017125  7650          SNA CLA         /IS IT SET
5985 017126  5340          JMP NSLOPT      /NO SELECT OPTION
5986 017127  1204          TAD INFEXT      /GET FIRST INPUT FILE EXTENSION
5987 017130  1205          TAD MKPA        /IS IT .PA
5988 017131  7440          SZA
5989 017132  1206          TAD MKPA12      /OR .12
5990 017133  7650          SNA CLA
5991 017134  1355          TAD (SELST1-SELST2
5992 017135  1354          TAD (SELST2     /IF NOT ASSUME !&+-
5993 017136  3753            DCA SELSTP    /OTHERWISE /&+-
5994 017137  3752            DCA SELFLG    /SET THE FLAG FOR SELECTION
5995 017140  5751  NSLOPT, JMP MOROPT      /MORE OPTIONS ON NEXT PAGE
5996               
5997 017141  5607  OPEXIT, JMP I OPTG2     /RETURN NOW
5998               
5999 017151  7200  PAGE
     017152  3251  
     017153  3252  
     017154  3263  
     017155  7774  
     017156  4117  
     017157  7645  
     017160  4076  
     017161  0010  
     017162  4104  
     017163  0020  
     017164  4132  
     017165  7777  
     017166  0040  
     017167  0200  
     017170  0240  
     017171  0400  
     017172  7646  
     017173  6604  
     017174  0077  
     017175  7642  
     017176  1000  
     017177  7644  
6000               
6001               
6002 017200  1777  MOROPT, TAD I (MPARAM+1 /CHECK MULTI NOW SO WE CAN SET K AND L FLAGS
6003 017201  7700          SMA CLA         /M IS SIGN BIT
6004 017202  5212          JMP MULFIX
6005 017203  7240          STA
6006 017204  3776          DCA KFLAG
6007 017205  7240          STA
6008 017206  3775          DCA LFLAG
6009 017207  1774          TAD I (NPARAM   /GET THE NUMBER
6010 017210  0373          AND (377        /255 IS PLENTY
6011 017211  7450          SNA             /AT LEAST 1
6012 017212  7001  MULFIX, IAC             /OR WE GET 4095
6013 017213  7041          CIA             /MAKE IT NEGATIVE
6014 017214  3772            DCA NCOPY
6015 017215  1771          TAD I (MPARAM
6016 017216  0370          AND (200        /E EXTENDED OPTION DECODING
6017 017217  7640          SZA CLA
6018 017220  5251            JMP EXTOPT
6019               
6020               /NEXT SIZE CORE
6021               
6022 017221  6203          CDF CIF 0
6023 017222  4767          JMS GETCOR      /THIS WILL RETURN SIZE IN HOWBIG
6024 017223  7344         STA CLL RAL     /AC= -2
6025 017224  1766          TAD HOWBIG
6026 017225  7750          SPA SNA CLA     /JUST A LITTLE CHECK CODE FOR NOW
6027 017226  5247          JMP JSTONE      /ONLY 8K
6028 017227  1250          TAD KCDF2       /12K OR MORE, FIX IT UP
6029 017230  4765          JMS STOZRO
6030 017231  3164           FNTFLD+1       /FIX THE CDF INSTRUCTION
6031 017232  1250          TAD KCDF2       /FIX IT FOR THE STACK TOO
6032 017233  4765          JMS STOZRO
6033 017234  0347           STKFLD+1
6034 017235  1364          TAD (7577       /THE UPPER END OF STACK IN FLD 2 FOR NOW
6035 017236  4765          JMS STOZRO
6036 017237  0352           KSTACK
6037 017240  1364          TAD (7577       /NEED IT IN THE POINTER TOO
6038 017241  4765          JMS STOZRO
6039 017242  0025           STKPTR
6040 017243  1363          TAD (2000       /THE BOTTOM OF THE STACK
6041 017244  4765          JMS STOZRO
6042 017245  0351           KSTKEN
6043 017246  5762          JMP OPEXIT      /ALL DONE NOW
6044               
6045 017247  5762  JSTONE, JMP OPEXIT      /HA HA
6046               
6047 017250  6221  KCDF2,  CDF 20
6048               
6049 017251  5762  EXTOPT, JMP OPEXIT      /NOT YET
6050               / DEFINE SOME PARAMETERS FOR GENERAL I/O
6051                       OBUFL=400                /LENGTH OF OUTPUT BUFFER
6052                       AOBUFL=OBUFL^3%2         /NO. OF CHARS IN OUTPUT BUFFER
6053                       IBUFL=400                /INPUT BUFFER LENGTH
6054               
6055                       OUBUF=DOT                /MUST BE LOWER THAN INBUF
6056                       OUCTL=OBUFL%2!4010       /OUTPUT BUFFER CTRL WORD
6057               
6058                       INBUF=OUBUF+OBUFL
6059                       INCTL=IBUFL%2!0010       /INPUT BUFFER CTRL WORD
6060                       INRECS=INCTL%200         /NO. OF INPUT RECORDS
6061               
6062                       INFLD=INCTL&70  /GET FIELD OF INPUT BUFFER
6063                       OUFLD=OUCTL&70  /DITTO OUTPUT BUFFER
6064               
6065               /EQUIVALENCES NECESSARY TO INTERFACE WITH MONITOR
6066               
6067                       DCB=7760
6068                       MPARAM=7643     /CD PARAMETER AREA
6069                       NPARAM=MPARAM+3 /CD =N ARGUMENT
6070                       PTP=20          /INTERNAL TYPE CODE: PAPER TAPE PUNCH
6071               
6072                       DOT=INBUF+IBUFL
6073               
6074               
6075               
6076               
6077               
6078 017362  7141          $ * $ * $ * $
     017363  2000  
     017364  7577  
     017365  6604  
     017366  2065  
     017367  6400  
     017370  0200  
     017371  7643  
     017372  3513  
     017373  0377  
     017374  7646  
     017375  3431  
     017376  3432  
     017377  7644  

ACCJMP  5112
ALBSCH  0037
ALMARG  0051
AOBUFL  0600 unreferenced
ARGCTR  4140
ARGHLF  4141
ARGLEF  4107
ARGPTR  4137
AUTCAP  6107
AUTOP   2751
AUTOX1  0010
AUTOX2  0011
AUTOX3  0012
BADARG  2243
BADCMD  5563
BBRK0   4430
BBRK1   4444 unreferenced
BBRK11  4450
BBRK2   4437
BBRK21  4441
BBRK5   4456
BBRK52  4471
BBRK55  4473
BBRK56  4475
BINALP  5321
BINASC  5312
BINCH0  3716
BINCH1  3712
BINCH2  3720
BINCH3  3740
BINCHC  3676
BINCHD  3677
BINCHO  3706
BINCHP  3675
BINCHR  3700
BINCIF  3643
BINNUM  3750
BINOTR  5330
BINPRT  4545
BINRIF  3707
BINROM  5437
BLANK   2201
BLANK3  2223
BNR0    5453
BNR1    5463
BNR2    5474
BNR3    5511
BNR4    5523
BNRC    5545
BNRI    5477
BNRT    5534
BOTTOM  0034
BREAK   4547
BREAK0  1675 unreferenced
BREAK1  1704
BREAK2  1717
BREAKC  1766
BREAKX  1670
BRKCHR  4500
BRKCNT  1723
BRKCTR  4501
BRKMOD  1715
BRKXR   0013
BSCH    0010
BSPCHR  3513
CAPSW   6114
CASEWD  5273
CCCHK   2157
CCHARS  4355
CCHRS   5276
CDFINS  0407
CDFINW  0562
CDFNLY  0450
CDIF00  0304
CDOWN   4762
CENTC   3665
CENTC3  3677
CENTC8  3701
CENTC9  3716
CENTER  4000
CENTJ   4210
CENTLM  3733
CENTNT  3706
CENTRM  3734
CENTW   4200
CFFLAG  6266
CFIELD  0445
CFMODE  0062
CHAINB  3407
CHAPQ   5116
CHAPQF  5156
CHAPTE  2444
CHAR    0102
CHARCC  4361
CHATMP  5112
CHBUFF  5525
CHKCHR  0514
CHKCOM  0452
CHKHND  3056
CHKPTR  3103
CHKSCN  0544
CHLENG  0020
CHNRES  6472
CHRCNT  0005
CKMRGS  5655
CMARG   3721
CMDCHR  6306
CMDCK3  0416
CMDCK5  0431
CMDCKX  0400
CMDCOM  4133
CMDCRT  0443
CMDEND  4125
CMDFLA  6254
CMDHYP  6311
CMDJ    4212
CMDJMP  6204
CMDLIN  6234
CMDLJ   6225
CMDLP   0465
CMDLST  6216
CMDNCK  0445
CMDPT2  0575
CMDPTR  0574
CMDS    4366
CMDXX1  0512
CMDXX2  0513
CMZRTN  0427
COMCHK  4537
COMCOM  4134
COMMAN  0253
COMMEN  4130
COPYWD  0023
COR1    6421
COR2    6423
COR70   6427
COREX   6442
CORLOC  6447
CORO    6412
CORSIZ  6451
CORV    6450
CORX    6431
COUNT   0075
COVER   6123
COVGO   6113
COVNO   6142
CQCASE  0050
CQFLAG  6260
CRLF    4552
CRLFC   3365
CRLFX   3315
CRLFX2  3325
CRLFX3  3354
CRLFX4  4502
CRLFX5  3357
CROUT   3661
CTFLAG  6254
CTLCHR  6304
CTR1    0076
CTR2    0077
CTRLJ   3561
CTRLS   6321
CURCOL  0112
CVRTQ   0105
CWDTH   3676
CWIDTH  4025
DCB     7760
DEFERN  0066
DOEJEC  4546
DOFNOT  3000
DOINDX  0000
DOT     7600
DTABL   3751
ECAPSW  0064
ECHARS  0353
EFCHAR  6305
EFFLAG  6255
EJECTX  4325
EJMPS   1366
END     5710
ENDCHK  2066
ENDCKL  2072
ENDCKR  2117
ENDWJ   5123
ENDWOR  5133
ENNOTE  5674
EOCGO   5566
EOCGOX  2352
EOCJMP  2361
EOCLST  6217
EOCMOR  2351
EOCQ    4550
EOCQX   4333
EOFCHR  2556
EOFCK1  3467
EOFERR  2277
EOFGO   3220
EOFIL3  3503
EOFILE  4036
EOFLOC  3222 unreferenced
EOLCHK  2101
EOLQQ   2110
ERBASC  3514
ERCGO   3560 unreferenced
ERHEAD  3670
ERRCHR  3673
ERRCTR  3667
ERRCX   3552
ERRFX   4026
ERRLNK  3547
ERROR   4553
ERRORC  4554
ERRORF  4555
ERRORX  3541
ERROUT  3613
ERRPRC  3612
ERRPRT  3600
ERRPTR  3433
ERRSLP  3436
ERRSTP  3447
ERRSTR  3434
ERRSUM  3646
ERSRTN  3660
ESUBPG  2530
EVBUFF  5546
EVEN    2452
EXFNOT  3056
EXT12   6162
EXTOPT  7251
EXTPA   2001
FETCHA  2742
FETCHD  2721
FETCHH  2732
FGNUM   2124
FIGDEF  2007
FIGDF2  2012
FIGDF3  2034
FIGURE  2000
FIGWD   5266
FILLC   2413
FILLLP  2524
FIXRET  5346
FLAGC   2037
FLAGC1  2075
FLAGSC  2100
FLGBKU  6270
FLGDN   2124
FLGEND  6270
FLGWDS  5027
FNBEND  1777
FNBUFF  0000
FNCTR   0067
FNDFLE  0065
FNDFLT  0052
FNFLAG  0070
FNLAST  3162
FNLINE  0071
FNOTE   3062
FNOTE1  3113
FNOTE4  3123
FNOTE5  3125
FNOTE6  3146
FNOTE8  3150
FNPTR   0020
FNPTR2  0113
FNSTRT  3161
FNTFLD  3163
FNXR    0016
FOOTER  4400
FSTTL   5557
FSTTL1  5563
FSWITC  0110
GARBAG  4536
GARBJ2  1644
GARBJX  1635
GCCR    1544
GCFF    1537
GCLF    1542
GCSP    1544
GCTAB   1544
GCVT    1542
GET     4530
GETARG  4044
GETC    4532
GETCD   6454
GETCDX  6065
GETCF1  3016
GETCF2  3036
GETCF3  3042
GETCF4  3045
GETCFL  1531
GETCFN  3010
GETCFR  3032
GETCHR  1513
GETCLO  1462
GETCOR  6400
GETCSB  6053
GETCWD  1522
GETCX   1400
GETCX1  1402
GETCX2  1404
GETCX3  1406
GETCX4  1435
GETCX5  1466
GETCX6  1431
GETCX7  1477
GETCX8  1412 unreferenced
GETCX9  1517
GETCXR  1476
GETDIG  3267
GETHYP  6045
GETLOW  6025
GETMOD  4506
GETN3   3225
GETN4   3231
GETN6   3233
GETN7   3254
GETNCH  3266
GETNEW  2230
GETNMX  3200
GETNOQ  4116
GETNUM  4541
GETRJM  6200
GETSP   1506
GETUN   1501
GETUP   6021
GETUP2  6031
GETUSR  2710
GETX    1560
GETXRT  1567
GLINE   3735
GLINE4  3736
GLINE5  3752
GOODFG  2045
GOTDEV  2033
GTARG1  4053
GTARG3  4055
GTARG4  4074
GTCOM   4126
HBASE   3647
HBASI   3650
HDCHAR  5032
HDPUT   3630
HEAD1   3613
HEAD2   3624
HEAD3   3625
HEADER  3602
HEADJ   3200
HEADWD  5210
HFILL   0063
HLTINS  3135 unreferenced
HNSPLT  3660
HOWBIG  2065
HPLACE  3642
HPLACI  3643
HPOSIT  3634
HREST   2754
HREST4  2766
HREST6  2774
HSAVCT  4543
HSAVE   4532
HSAVE5  4544
HSPLIT  3654
HSTYLE  3627
HWORD   0031
HYPFLG  6261
HYPINT  1655
IBUFL   0400
ICCSW   4117
ICHAR   2214
ICHAR1  2322
ICHAR2  2316
ICHAR3  2303 unreferenced
ILLCMD  0274
ILLFC   2043 unreferenced
ILSPAC  4132
IMODE   4134
IN200   2306 unreferenced
IN7400  2200
IN7600  2215
INBREC  2254
INBUF   7200
INBUFP  2251
INC     2000
INCDIF  2245
INCHCT  2333
INCHRX  2221
INCOMN  2323
INCTL   0210
INCTLW  2250
INDEN1  5426
INDEN2  5430
INDEN3  5420
INDENT  5412
INDEVH  6600
INEOF   2363
INERR   2276 unreferenced
INERRX  2273
INFEXT  7004
INFLD   0010
INFPTR  2362
INGBUF  2231
INHNDL  2343
INIT    4000
INIT3   4052
INITS   4074
INITXX  4034
INJMP   2300
INJMPP  2224
INKTR   2201
INLINE  0124
INNEWF  2334
INPAGE  0125
INPTR   2212
INREC   2252
INRECS  0001
INRTRN  2331
IOPEN   2201
IPLONG  4100
IPWIDE  4076
ISWPAG  4115
ISWPAR  4113
ITABCH  4104
JSTONE  7247
JUST    2402
JUST5   1203 unreferenced
JUST6   1231
JUST60  1235
JUST63  1237
JUST8   1210
JUSTFG  2410
JUSTIF  1200
K321    3640
K7600   4027 unreferenced
KBSCH   6601
KBSDIF  6600
KCDF2   7250
KCOUNT  1216
KDOWN   4765
KFLAG   3432
KHYPHN  1072
KLONG1  6603
KLONGD  6602
KOVERE  3511
KOVERO  3512
KSTACK  0352
KSTKEN  0351
KULCH1  7001
KULCHD  7000
KWID1   7003
KWIDD   7002
LADJ1   2615
LCASE   6100
LCFLAG  6267
LEFIL2  1251
LEFIL3  1261
LEFIL4  1266
LEFIL6  1271
LEFIL8  1256 unreferenced
LEFILL  1243
LEFT    2600
LENOL   0115
LFLAG   3431
LFPUT   4750
LINE    6374
LMARG   0052
LMARGC  2634
LMCHK   2722
LONG1   0102
LONG2   0074
LOWER   6072
LOWONE  0072
LP      1420
LPTDEV  2015
LRFLAG  2754
LSDO    5620
LSGO    5704
LSPACE  0056
MARGE   2670
MARGGR  2656
MARGNS  2675
MARGS   2636
MARGS2  2655
MARGWD  4574
MAXWID  0204
MKPA    7005
MKPA12  7006
MODE    0060
MODES   6327
MOROPT  7200
MOVEL   5722
MOVLP   5730
MOVLRT  5740
MOVTMP  5743
MPARAM  7643
MTWO    7344
MULFIX  7212
NAUTOC  6105
NAUTOP  2747
NCOPY   3513
NDXCHR  6313
NDXFLG  6263
NDXWRD  4541 unreferenced
NLINE   0213
NLINE1  0240
NLINE2  0250
NLINES  0120
NLPARM  1135
NO      7777
NOCCHR  4353
NOCD    6463
NODUMP  2544
NOFILL  2411
NOFLG   0114
NOFLGC  2035
NOHEAD  3600
NOJUST  2400
NONUM   2426
NOPAGE  2520
NOPER   2132
NOPSWT  7045
NOTABS  5241
NOTEDO  5600
NOTITL  2515
NPARAM  7646
NPARMS  1142
NSLOPT  7140
NTBQOT  5752
NTCNT   5705
NTER1   5706
NTERR   5706
NTL6    5650
NTLSUB  5624
NUMBER  0103
NUMC1   2440 unreferenced
NUMC2   2443
NUMCHK  4542
NUMCKX  6115
NUMCMD  2430
NUMGET  3270
NUMHLF  3312
NUML    3302
NUMPOS  4543
NUMPOX  2146
NUMPTR  3313
NUMR    3275
NUMTMP  3314
NYIMPL  1724
OBUFL   0400
OCHAR   2611
OCHAR1  2661
OCHAR2  2656
OCHAR3  2627 unreferenced
OCISZ   2553
OCLOSE  2507
OCRET   2554
ODBUFF  5647
ODD     2454
OEFAIL  2434
OFILE2  2063
OFNMC   2550
OHEAD   5000
OHEAD2  5106 unreferenced
OHEAD3  5033
OHEAD4  5075
OHEAD5  5102
OHEAD6  5111
OHEAD7  5105
OHEAD8  5062
OHTEMP  5031 unreferenced
OLDHND  3102
ONOFIL  2446
ONTERR  2444
OOFILE  2450
OOPEN   2400
OORETN  2433
OPEXIT  7141
OPTEM   7010
OPTG2   7007
OPTION  6624
OSAVBS  2555
OSAVCC  2547
OSAVE   4533
OSAVEX  2533
OTHERE  0064
OTHERS  0020
OTRTN   2706
OTSAVE  5744
OTYPE   2674
OUBLK   2424
OUBUF   6600
OUCCNT  2551
OUCHAR  2622 unreferenced
OUCOMN  2663
OUCRET  2664
OUCTL   4210
OUCTLW  2501
OUDEVH  7200
OUDWCT  2672
OUELEN  2425
OUENTR  2421
OUERRX  2506
OUFEXT  2064
OUFLD   0010
OUHNDL  2420
OUJMP   2624
OUJMPE  2671
OUNOWR  2505
OUPOLD  2667
OUPTR   2670
OUREC   2503
OUSETP  2600
OUTCTR  0117
OUTDMP  2451
OUTEMP  2666
OUTINH  2673
OUTPTR  0116
OVERDO  3514
OVERNO  7035
PAAARG  2311
PAGBOT  4275
PAGCMD  5304
PAGCOM  4203
PAGEC   4200
PAGEC2  4222
PAGEL   3525
PAGEM   3541
PAGENO  0121
PAGEU   3533
PAGING  2522
PAGJMP  3553
PAGPTR  4312
PAGSIZ  4234
PAGSKP  0004
PAGSZ3  4246
PAGTOP  4274
PAPERJ  3555 unreferenced
PAPERL  5312 unreferenced
PARAG   2273
PARAG0  2252
PARAG1  2263
PARAG2  2310
PARAG3  2324
PARAG4  2272
PARAGN  0057
PARAGP  0027
PARAGR  2245
PARAGV  0026
PATCH   0302
PERIOD  2134
PEVEN   4226
PLCNT   2554
PLENGT  0024
PLINEQ  1223
PODD    4227
POPA    4557
POPAX   0324
POPAX2  0342
POPCIF  0344
POPJ    5564
POPJX   5554
PORNO   5354
PPTEMP  0007
PRINT   3400
PRINT2  3414
PRINT4  3460
PRINT5  3470
PRINT6  3477
PRINT8  3474
PRINT9  3501
PRINTC  3434
PRINTR  6452
PRJUST  4737
PRTCHR  3507
PRTCNT  3510
PRTCTR  3506
PRTGO   0203
PRTHEA  4600
PRTV    6603
PRTXR   0015
PSHCIF  0322
PSIZER  4244
PSWITC  0107
PTP     0020
PTR1    0100
PTR2    0101
PUSHA   4556
PUSHA2  0314
PUSHAX  0277
PUSHJ   4562
PUSHJX  1163
PUSHTM  0006
PUT     4531
PUTCHR  6020
PUTSEQ  5257
PUTUSR  2721
PUTX    6000
PUTX2   6013
PWIDTH  0022
QUFLAG  6257
RADJ    2623
RELFLG  0106
RELQ    4544
RELQ2   5343
RELQTM  5345
RELQX   5331
RESET   5717
RESTLP  1627
RESTOR  4561
RESTRX  1622
RETURN  5565
RFILL   1217
RIFIL2  1320
RIFIL3  1327
RIFIL4  1332
RIFIL7  1306
RIFILL  1277
RIGHT   2601
RMARG   0053
RMARGC  2635
RMARGS  2657
RMCHK   2733
RNOARG  6631
RNOCHN  3400
RNONAM  6620
ROMNUM  5543
ROMZRO  5544 unreferenced
RTNLNK  0165
RUNOFF  0200 unreferenced
SAV1SP  0766
SAV331  1035
SAV332  1066
SAV333  1042
SAV351  1061
SAV371  1075
SAVC1   0607
SAVC2   0635
SAVC3   0637
SAVC81  0713
SAVC82  0716
SAVCHR  0645
SAVCL2  0653
SAVCL3  0655
SAVCL4  0661
SAVCL7  0664
SAVCL8  0712 unreferenced
SAVCL9  0721
SAVCTR  1242
SAVDEC  1651
SAVE1   1004
SAVE2   1007 unreferenced
SAVE22  1021
SAVE3   1025
SAVE33  1033 unreferenced
SAVE35  1056 unreferenced
SAVE37  1076
SAVE61  1121
SAVE62  1127
SAVE9   1132
SAVECL  0646
SAVECR  0651
SAVECT  0077
SAVECX  0600
SAVEIT  1000
SAVELI  4560
SAVELP  1604
SAVELX  1600
SAVEOL  0753
SAVEOQ  0756
SAVETC  1134
SAVFIL  1345
SAVFL2  1352
SAVFLG  2116
SAVHY2  0750
SAVHYP  0742
SAVPTR  0101
SAVSP   0724
SAVSP1  0726
SAVSP2  0731
SAVSP3  0736
SAVSPC  0643
SAVSPQ  0677
SAVTPT  0644
SBCFLG  6071
SBTTLB  5323
SBTTLC  2450
SDXSUB  6060
SELBLK  3255
SELBOF  3327
SELBON  3333
SELECT  3272
SELEOL  3340
SELFLG  3251
SELGO   3267
SELNOW  3334
SELON   3325
SELPBK  3253
SELST1  3257
SELST2  3263
SELSTP  3252
SELTMP  3256
SELTNG  3254
SEQCTR  0077
SEQFLG  0126
SEQMRC  5257 unreferenced
SEQMRG  5311
SEQSAV  5305
SEQSPC  5303
SEQTMP  5305 unreferenced
SETIO   2000
SETIO4  2034
SETIO5  2036 unreferenced
SETIO6  2057
SETIO7  2045
SETIO9  2062
SIGN    0104
SKIP    2200
SKIP3   2235
SKIP31  2241
SKIPNO  7650
SKIPYE  7640
SKPSW   2242
SLOC    0202
SMALLA  0341
SMALLZ  0372
SORTCC  1765
SORTCN  0123
SORTJ   4535
SORTJ1  1735
SORTJ2  1745
SORTJ3  1755
SORTJX  1726
SORTXR  0014
SPACIN  4142
SPFLAG  6256
SPNOR   4534
SPNORX  5400
STACK   6577
STKEND  5750
STKFLD  0346
STKPTR  0025
STLENG  0100
STOACC  6616
STOPTR  6617
STOZRO  6604
SUBCHR  6312 unreferenced
SUBFLG  6262
SUBJMP  6211
SUBPG   2525
SUBPGN  0021
SUMMSG  3460
SVECAP  0276
SWCAP   0044
SWCC    0043
SWFILL  0055
SWHEAD  0040
SWJUST  0054
SWPAGE  0041
SWPARA  0037
SWPER   0045
SWPNUM  0046
SWSBPG  0042
T0      2400
TABABS  5255
TABCHR  0030
TABCOL  5312
TABCTR  5244
TABFLG  0074
TABG2   5210
TABG3   5217
TABG4   5235
TABG5   5240
TABGET  5200
TABPTR  5243
TABQOT  5754
TABREL  5254
TABS    6333
TABSAR  5245
TABSJS  3547
TABSLJ  5167
TABSTP  5200
TBRK1   4650
TBRK2   4656
TBRK22  4665
TBRK23  4666
TBRK3   4704
TBRK31  4733
TBRK4   4735
TBRK5   4735
TBTEMP  4750
TESTPG  2335
TFIRSW  0036
TITFLG  0065
TITL51  2475
TITLDO  2463
TITLE1  2465
TITLE2  2473
TITLE4  2506
TITLE5  2512
TITLEB  5424
TITLEC  2456
TITWRD  5005
TLENGT  0100
TOP     0032
TOPSW   0122
TRANGO  6051 unreferenced
TRYTTY  2023
TSPACE  3527
TSPCTR  3552
TSTAL2  4351
TSTALL  4551
TSTALS  4341
TSTALX  4313
TSTPG   2341
TSTPGL  4655
TSTRTN  4323
TT      2424
TTYDEV  2026
TXTFLG  0127
TYPEIT  3757
UCASE   6101
UCFLAG  6264
ULCASE  6102
ULCH1   0137
ULCH2   0055
ULCHR   3504
ULFLAG  6264
UNCASE  0047
UNFLAG  6265
UNMODE  0061
UNSWIT  3505
UPLOWC  6314
UPONE   0073
UPPER   6073
USRSTA  2720
USWITC  0111
VERLNQ  6610
VERMES  6614
VERPRT  6600
VERS1   0260
VERS2   0266
WID1    0117
WID2    0074
WORDCK  4540
WRDCIF  0572
WRDCKX  0553
WU      2725
XXCLSE  3216
XXDMPR  3054
XXDUMP  3035
XXGET   3104
XXGET1  3112
XXGETE  3133 unreferenced
XXGETR  3127
XXGETX  3131
XXGGOO  3120
XXPFF   3026
XXPHT   3030
XXPUT   3000
XXPUTC  3034
XXPUTE  3216
XXPUTR  3024
XXPVT   3027
XXRUB   3223
XXRUBL  3230
XXXCLA  3247 unreferenced
XXXTMP  3242
XXXTTY  3243
XZPT1   3425
XZPUT   3413
XZTEMP  3430
Y0      3100
YES     0000
ZEROEN  0075
ZEROS   0064
