/SNOBOL 8.2 JMS I XINIT XIND X0 XVLEN XTOP //SNOBOL LISTING PROGRAM // // WRITTEN BY WILLIAM NOWICKI // NORTHWESTERN UNIVERSITY // COMPUTER SCIENCE RESEARCH LABORATORY // // DECEMBER, 1976 // // //+ASK //THE USER IS FIRST ASKED FOR AN INPUT FILE //(ASSUMED TO BE ON "DSK:"). //THIS SOULD BE A "PAL8" LISTING FILE. //IF THE "SNOBOL 8.2" HEADING PUT OUT BY THE COMPILER //IS FOUND, THE TITLE WHICH WILL BE PUT ON THE LISTING //IS PRINTED. THE OUTPUT FILENAME IS THEN REQUESTED. //IT MAY TAKE A LONG TIME TO PROCESS A LARGE "SNOBOL" //PROGRAM - PLEASE BE PATIENT. // // //:CODE: / PG = "1" JMS I XPAT 0002 PG XEQC XL0001 / LN = "0" JMS I XPAT 0002 LN XEQC XL0002 / TP = "0" /TOTAL PAGES JMS I XPAT 0002 TP XEQC XL0002 / FLD = "0" JMS I XPAT 0002 FLD XEQC XL0002 / LP = "54" JMS I XPAT 0002 LP XEQC XL0003 / T = .A211 JMS I XPAT 0002 T XEQC XL0004 / CRLF = .A215 .A212 JMS I XPAT 0003 CRLF XEQC XL0005 XL0006 / PN = "0" JMS I XPAT 0002 PN XEQC XL0002 /ASK, OUTHOLD = "INPUT (PAL8 LISTING):" ASK,JMS I XPAT 0002 OUTHOL XEQC XL0007 / .LOOKUP INPUT :F(ASK) JMS I XLOOKUP INPUT TAD XSUCCES SZA CLA JMP ASK /LP1, LINE = READ :F(EOF) LP1,JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF / LINE "/SNOBOL" :F(LP1) JMS I XPAT 0001 LINE XL0010 TAD XSUCCES SZA CLA JMP LP1 / LINE "/" *TITLE/50* JMS I XPAT 0004 LINE XL0011 XFLC;0620;TITLE / OUTPUT = "" JMS I XPAT 0002 OUTPUT XEQC XL0012 / OUTPUT = "TITLE: " TITLE JMS I XPAT 0003 OUTPUT XEQC XL0013 TITLE / OUTPUT = "" JMS I XPAT 0002 OUTPUT XEQC XL0012 / LINE = READ READ JMS I XPAT 0003 LINE XEQC READ READ / TITLE = .A214 CRLF T T TITLE T "PAGE " JMS I XPAT 0010 TITLE XEQC XL0014 CRLF T T TITLE T XL0015 // /ASKO, OUTHOLD = "OUTPUT (SNOBOL LISTING):" ASKO,JMS I XPAT 0002 OUTHOL XEQC XL0016 / .ENTER INPUT :F(ASKO) JMS I XENTER INPUT TAD XSUCCES SZA CLA JMP ASKO // // //-ASK JMP I (.&7600+200 PAGE XP0001=. / LAST = "00177" JMS I XPAT 0002 LAST XEQC XL0017 // // /LOOP, LINE = READ :F(EOF) /READ INPUT LINE LOOP,JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF / LINE_ "/SNOBOL" :F(NOPG) JMS I XPAT 0001-4000 LINE XL0010 TAD XSUCCES SZA CLA JMP NOPG / LINE = READ :F(EOF) /SKIP A LINE JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF / TP = TP +1 /INCREMENT TOTAL NUMBER OF PAGES JMS I XASC TP DCA XL0020 TAD XL0020 TAD (0001 JMS I XINT TP JMP .+0002 XL0020, 0 // /NOPG, /IT ISN'T A PAGE HEADING NOPG,/ LINE *LOC/5* :F(NOLOC) JMS I XPAT 0003 LINE XFLC;0050;LOC TAD XSUCCES SZA CLA JMP NOLOC / LINE LOC = /DELETE THE LOCATION JMS I XPAT 0002 LINE LOC XEQC / LOC " "!.A211 :S(NOLOC) JMS I XPAT 0003 LOC XL0021 XORC XL0004 TAD XSUCCES SNA CLA JMP NOLOC / LAST = LOC /SAVE LOCATION COUNTER JMS I XPAT 0002 LAST XEQC LOC /NOLOC, /WE HAVE LOC. OF PREVIOUS LINE NOLOC,/ LINE_ ** "/" = :F(LOOP) /GET A SNOBOL SOURCE LINE JMS I XPAT 0005-4000 LINE XFLC;0;0 XL0011 XEQC TAD XSUCCES SZA CLA JMP LOOP / LN = LN + 1 JMS I XASC LN DCA XL0022 TAD XL0022 TAD (0001 JMS I XINT LN JMP .+0002 XL0022, 0 / LP = LP + 1 JMS I XASC LP DCA XL0023 TAD XL0023 TAD (0001 JMS I XINT LP JMP .+0002 XL0023, 0 / LP "55" = :F(JUSTP) /CHECK FOR PAGINATION TIME JMS I XPAT 0002 LP XL0024 XEQC TAD XSUCCES SZA CLA JMP JUSTP / PN = PN + 1 JMS I XASC PN DCA XL0025 TAD XL0025 TAD (0001 JMS I XINT PN JMP .+0002 XL0025, 0 JMP I (.&7600+200 PAGE XP0002=. / OUTPUT = "PAGE " PN JMS I XPAT 0003 OUTPUT XEQC XL0015 PN / WRITE = TITLE PN /PUT OUT THE TITLE JMS I XPAT 0003 WRITE XEQC TITLE PN / WRITE = "" JMS I XPAT 0002 WRITE XEQC XL0012 /JUSTP, LOC = LAST JUSTP,JMS I XPAT 0002 LOC XEQC LAST / LINE_ "/" :F(ULOC) /CHECK FOR COMMENTS JMS I XPAT 0001-4000 LINE XL0011 TAD XSUCCES SZA CLA JMP ULOC / LOC = " " JMS I XPAT 0002 LOC XEQC XL0026 /ULOC, WRITE = LN T " " LOC " " LINE ULOC,JMS I XPAT 0007 WRITE XEQC LN T XL0027 LOC XL0021 LINE / :(LOOP) JMP LOOP // //+EOF // THIS MODULE CLOSES THE INPUT AND OUTPUT FILES //AND TELLS THE USER THE BAD NEWS IF ANY ERROR OCCURED. //:CODE: /EOF, OUTPUT = CRLF EOF,JMS I XPAT 0002 OUTPUT XEQC CRLF / OUTPUT = "TOTAL PAGES IN THE PAL8 LISTING: " TP JMS I XPAT 0003 OUTPUT XEQC XL0030 TP / .OCLOSE :F(CERROR) JMS I XOCLOSE TAD XSUCCES SZA CLA JMP CERROR / .ICLOSE JMS I XICLOSE / .EXIT JMP I (7600 /CERROR, OUTPUT = "CLOSING ERROR !" CERROR,JMS I XPAT 0002 OUTPUT XEQC XL0031 / .EXIT JMP I (7600 /IOBAD, OUTPUT = "OUTPUT ERROR !" IOBAD,JMS I XPAT 0002 OUTPUT XEQC XL0032 / .END JMP I (7600 //-EOF PAGE X0, PG, 0 LN, 0 TP, 0 FLD, 0 LP, 0 T, 0 CRLF, 0 PN, 0 LINE, 0 TITLE, 0 LAST, 0 LOC, 0 XVLEN=.-X0 XL0002, XX0002 XL0012, XX0012 XL0015, XX0015 XL0017, XX0017 XL0021, XX0021 XL0026, XX0026 XL0027, XX0027 XL0001, XX0001 XL0004, XX0004 XL0007, XX0007 XL0006, XX0006 XL0031, XX0031 XL0013, XX0013 XL0014, XX0014 XL0030, XX0030 XL0003, XX0003 XL0005, XX0005 XL0024, XX0024 XL0010, XX0010 XL0011, XX0011 XL0016, XX0016 XL0032, XX0032 FIELD 1 *XFIELD1 XIND=0 XX0002,0260 0000 7777 XX0012,0000 0000 7777 XX0015,6320 3701 0305 0240 7777 XX0017,5660 0660 0267 0267 7777 XX0021,0240 0240 7777 XX0026,5240 0240 0240 0240 7777 XX0027,0240 0000 7777 XX0001,0261 0000 7777 XX0004,0211 0000 7777 XX0007,6711 0316 5325 0324 6250 0720 5314 0270 6714 1711 6324 7311 5707 5251 0000 0000 7777 XX0006,0212 0000 7777 XX0031,6303 7714 6323 7311 6307 2640 6322 7722 5322 0640 0000 0000 7777 XX0013,6724 2311 5714 5305 0240 0240 7777 XX0014,0214 0000 7777 XX0030,6724 2317 5301 0314 6320 3701 5305 0323 5311 0316 6324 2710 6240 0720 5314 0270 6714 1711 6324 7311 5307 0272 0000 0000 7777 XX0003,0265 0264 7777 XX0005,0215 0000 7777 XX0024,0265 0265 7777 XX0010,6257 7323 6317 7702 0314 0000 7777 XX0011,0257 0000 7777 XX0016,6717 2325 6720 2325 6640 1650 6316 1317 5317 0314 6714 1711 6324 7311 5707 5251 0000 0000 7777 XX0032,6717 2325 6720 2325 6640 1305 6722 1317 0240 0241 7777 XTOP=. $$$