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