/SNOBOL 8.2 JMS I XINIT XIND X0 XVLEN XTOP //LIBRARY SCAN PROGRAM // //WRITTEN BY WILLIAM I. NOWICKI //NORTHWESTERN UNIVERSITY COMPUTER SCIENCE // RESEARCH LABORATORY // //JUNE, 1976 // //UPDATED: DECMEBER 2, 1976 // //+SCAN // THIS PROGRAM WILL PROCESS A SUBROUTINE //LIBRARY FILE AND SELECT THE DESIRED ROUTINES. //ANOTHER OPTION IS TO GENERATE PAGE ZERO LINKS //AND GLOBAL VARIABLE LISTS SUITABLE FOR INPUT //DIRECTLY INTO THE "PAL8" ASSEMBLER. //THE SUBROUTINE LIBRARY FILES WILL USUALLY COMMON //FILES SUPPLIED WITH THE PROGRAM. //HOWEVER, IF THE USER WISHES, A LIBRARY FILE //CAN BE CREATED BY FOLLOWING THE SPECIFICATIONS //FOR WORKING DOCUMENTATION. // //;LOGIC: // SETUP FILES // GET OPTIONS // PASS1 (OUTPUT PAGE ZERO) // PASS2 (OUTPUT THE ROUTINES) // END THE FILE // //: / OUTPUT = "SUBROUTINE LIBRARY PROCESSING PROGRAM" JMS I XPAT 0002 OUTPUT XEQC XL0001 /ASK, OUTHOLD = "INPUT:" ASK,JMS I XPAT 0002 OUTHOL XEQC XL0002 / INFIL = INPUT :F(ASK) JMS I XPAT 0002 INFIL XEQC INPUT TAD XSUCCES SZA CLA JMP ASK / .LOOKUP INFIL :F(ASK) JMS I XLOOKUP INFIL TAD XSUCCES SZA CLA JMP ASK /ASKO, OUTHOLD = "OUTPUT:" ASKO,JMS I XPAT 0002 OUTHOL XEQC XL0003 / .ENTER INPUT :F(ASKO) JMS I XENTER INPUT TAD XSUCCES SZA CLA JMP ASKO //SET SOME CONSTANTS: / CRLF = .A215 .A212 JMS I XPAT 0003 CRLF XEQC XL0004 XL0005 / SP = " " /SPACE JMS I XPAT 0002 SP XEQC XL0006 / C = "," /COMMA JMS I XPAT 0002 C XEQC XL0007 / S = "/" /COMMENT CHARACTER JMS I XPAT 0002 S XEQC XL0010 // //"EDIT" PUTS A RUBOUT AFTER EVERY TAB FOR SOME //OBSCURE REASON, SO THE DEFINITION //MAY HAVE TO CHANGE IF YOU ARE USING AN OlD //EDITER. // / T = .A211 JMS I XPAT 0002 T XEQC XL0011 / AT = "@" / "AT" SIGN JMS I XPAT 0002 AT XEQC XL0012 / FF = .A214 /FORM FEED JMS I XPAT 0002 FF XEQC XL0013 / FP = "+" /START MODULE JMS I XPAT 0002 FP XEQC XL0014 / FM = "-" /END MODULE JMS I XPAT 0002 FM XEQC XL0015 / FU = "$" /LOCATIONS USED JMS I XPAT 0002 FU XEQC XL0016 / FR = "#" /ROUTINES CALLED JMS I XPAT 0002 FR XEQC XL0017 / FG = "*" /GLOBAL VARIABLES JMS I XPAT 0002 FG XEQC XL0020 / FC = ":" /COODE JMS I XPAT 0002 FC XEQC XL0021 //ASK WHAT THE USER REALY WANTS // /ASKM, DESIRE = SP /INITIALIZE ASKM,JMS I XPAT 0002 DESIRE XEQC SP / OUTPUT = "ENTER NAMES OF DESIRED ROUTINES," JMS I XPAT 0002 OUTPUT XEQC XL0022 / OUTPUT = 'TERMINATE WITH "END"' JMS I XPAT 0002 OUTPUT XEQC XL0023 /AMLP, /LOOP UNTIL END IS REACHED AMLP,JMP I (.&7600+200 PAGE XP0001=. / OUTHOLD = "?" /PROMPT JMS I XPAT 0002 OUTHOL XEQC XL0024 / DESIRE = DESIRE INPUT SP :F(ASKM) JMS I XPAT 0004 DESIRE XEQC DESIRE INPUT SP TAD XSUCCES SZA CLA JMP ASKM / DESIRE SP "END" = :S(AMDON) /END YET ? JMS I XPAT 0003 DESIRE SP XL0025 XEQC TAD XSUCCES SNA CLA JMP AMDON / :(AMLP) JMP AMLP /AMDON, /DONE WITH LOOP AMDON,// // // THE USER IS ASKED IF HE WANTS PAGE ZERO LINKS //TO EVERYTHING. /ASKPZ, OUTHOLD = "PAGE ZERO LINKS (Y OR N) ?" ASKPZ,JMS I XPAT 0002 OUTHOL XEQC XL0026 / PZFLG = INPUT :F(ASKPZ) JMS I XPAT 0002 PZFLG XEQC INPUT TAD XSUCCES SZA CLA JMP ASKPZ / PZFLG_ "Y"!"N" :F(ASKPZ) JMS I XPAT 0003-4000 PZFLG XL0027 XORC XL0030 TAD XSUCCES SZA CLA JMP ASKPZ // //+PASS1 // //;LOGIC: // // // WHILE NO EOF(INPUT) DO // BEGIN // READ A LINE // IF BEGINING OF MODULE THEN // BEGIN // GET MODULE NAME // IF DESIRED THEN // BEGIN // IF PAGE ZERO LINKS THEN MAKE ONE // WHILE NO "/-" OR "/:" DO // READ LINE; CASE OF // GLOBAL:ADD TO LIST // LOCATIONS:ADD AFTER MODULE NAME // ROUTINES:ADD TO LIST // ENTRY POINT:GENERATE PAGE ZERO LINK // END // END // END // //:CODE: /PASS1, GLOBE = SP /RESET SOME LISTS PASS1,JMS I XPAT 0002 GLOBE XEQC SP / HAVE = SP JMS I XPAT 0002 HAVE XEQC SP / OTHER = SP JMS I XPAT 0002 OTHER XEQC SP / NEED = DESIRE JMS I XPAT 0002 NEED XEQC DESIRE / OUTPUT = "PASS ONE MODULES:" JMS I XPAT 0002 OUTPUT XEQC XL0031 / PZFLG_ "Y" :F(NOPZ1) /DO WE WANT PAGE ZERO STUFF ? JMS I XPAT 0001-4000 PZFLG XL0027 TAD XSUCCES SZA CLA JMP NOPZ1 / WRITE = "/ PAGE ZERO POINTERS" CRLF "/" JMS I XPAT 0004 WRITE XEQC XL0032 CRLF XL0010 / WRITE = T "*20" CRLF "/" JMS I XPAT 0005 WRITE XEQC T XL0033 CRLF XL0010 /NOPZ1, /END OF INITIALIZATION NOPZ1,// //READ EACH LINE, LOOKING FOR THE START OF A MODULE // /PAS1RD, LINE = READ :F(EOF1) PAS1RD,JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF1 / LINE_ S FP = :F(PAS1RD) /MODULE ? JMS I XPAT 0003-4000 LINE S FP XEQC TAD XSUCCES SZA CLA JMP PAS1RD JMP I (.&7600+200 PAGE XP0002=. /SPZAPL, LINE_ SP!T = :S(SPZAPL) /ZAP SPACES,FFS, & TABS SPZAPL,JMS I XPAT 0004-4000 LINE SP XORC T XEQC TAD XSUCCES SNA CLA JMP SPZAPL / LINE_ *MOD* SP!T = :S(GOOD1M) /GET MODULE NAME JMS I XPAT 0007-4000 LINE XFLC;0;MOD SP XORC T XEQC TAD XSUCCES SNA CLA JMP GOOD1M / MOD = LINE /IF NO DESCRIPTION JMS I XPAT 0002 MOD XEQC LINE / NEED SP MOD SP = SP :F(PAS1RD) /NEED IT ? GOOD1M,JMS I XPAT 0005 NEED SP MOD SP XEQC SP TAD XSUCCES SZA CLA JMP PAS1RD / HAVE = HAVE MOD SP /YES - ADD TO LIST JMS I XPAT 0004 HAVE XEQC HAVE MOD SP / OUTPUT = MOD /PRINT MODULE NAME JMS I XPAT 0002 OUTPUT XEQC MOD / PZFLG_ "Y" :F(NOPZ1A) /PAGE ZERO LINK ? JMS I XPAT 0001-4000 PZFLG XL0027 TAD XSUCCES SZA CLA JMP NOPZ1A / WRITEH = MOD "=" T "JMS I .;X" JMS I XPAT 0005 WRITEH XEQC MOD XL0034 T XL0035 / ROT = MOD JMS I XPAT 0002 ROT XEQC MOD / ROT *ROT/5* /TRIM TO 5 CHARS JMS I XPAT 0003 ROT XFLC;0050;ROT / WRITE = ROT T "/ " LINE JMS I XPAT 0005 WRITE XEQC ROT T XL0036 LINE // NOPZ1A,/P1MOD, LINE = READ :F(EOF1) /READ THE MODULE P1MOD,JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF1 / LINE_ S = :F(P1MOD) /WE ONLY WANT COMMENTS JMS I XPAT 0002-4000 LINE S XEQC TAD XSUCCES SZA CLA JMP P1MOD / LINE_ FC :S(PAS1RD) /CODE ? JMS I XPAT 0001-4000 LINE FC TAD XSUCCES SNA CLA JMP PAS1RD / LINE_ FU :S(LOC1) /LOCATION FLAG ? JMS I XPAT 0001-4000 LINE FU TAD XSUCCES SNA CLA JMP LOC1 JMP I (.&7600+200 PAGE XP0003=. / LINE = LINE SP /PUT A DELIMITER AT THE END OF THE LINE JMS I XPAT 0003 LINE XEQC LINE SP / LINE_ FR :S(ROT1) /ROUTINES USED ? JMS I XPAT 0001-4000 LINE FR TAD XSUCCES SNA CLA JMP ROT1 / LINE_ FG :S(GLOB1) /GLOBAL VARIABLES ? JMS I XPAT 0001-4000 LINE FG TAD XSUCCES SNA CLA JMP GLOB1 / LINE_ FM :S(PAS1RD) /END OF MODULE ? JMS I XPAT 0001-4000 LINE FM TAD XSUCCES SNA CLA JMP PAS1RD / :(P1MOD) /KEEP READING JMP P1MOD // //LOCATIONS USED FLAG WAS DETECTED / LINE ":" *LOC* :F(P1MOD) /STRIP OFF NUMBER LOC1,JMS I XPAT 0004 LINE XL0021 XFLC;0;LOC TAD XSUCCES SZA CLA JMP P1MOD /SPZAPC, LOC SP!T = :S(SPZAPC) /ZAP ALL SPACES SPZAPC,JMS I XPAT 0004 LOC SP XORC T XEQC TAD XSUCCES SNA CLA JMP SPZAPC / HAVE SP MOD SP = SP MOD AT LOC SP /ADD TO LIST JMS I XPAT 0011 HAVE SP MOD SP XEQC SP MOD AT LOC SP / :(P1MOD) /CONTINUE JMP P1MOD // //ROUTINES USED FLAG WAS FOUND / LINE ":" *LINE* :F(P1MOD) /NAMES ARE AFTER THE COLON ROT1,JMS I XPAT 0004 LINE XL0021 XFLC;0;LINE TAD XSUCCES SZA CLA JMP P1MOD /SPZAPR, LINE C!T!" " = SP :S(SPZAPR) /ZAP ALL DELIMITERS INTO SPACES SPZAPR,JMS I XPAT 0007 LINE C XORC T XORC XL0037 XEQC SP TAD XSUCCES SNA CLA JMP SPZAPR / LINE_ SP = JMS I XPAT 0002-4000 LINE SP XEQC /ROT1G, LINE_ *ROT* SP = :F(P1MOD) /GET ONE OF THEM ROT1G,JMS I XPAT 0005-4000 LINE XFLC;0;ROT SP XEQC TAD XSUCCES SZA CLA JMP P1MOD / NEED SP ROT SP :S(ROT1G) /HAVE IT ALREADY ? JMS I XPAT 0003 NEED SP ROT SP TAD XSUCCES SNA CLA JMP ROT1G JMP I (.&7600+200 PAGE XP0004=. / HAVE SP ROT SP!AT :S(ROT1G) /PASSED IT UP ? JMS I XPAT 0005 HAVE SP ROT SP XORC AT TAD XSUCCES SNA CLA JMP ROT1G / NEED = NEED ROT SP /NO - ADD TO LIST JMS I XPAT 0004 NEED XEQC NEED ROT SP / OTHER SP ROT SP :S(ROT1G) /DON'T DUPLICATE JMS I XPAT 0003 OTHER SP ROT SP TAD XSUCCES SNA CLA JMP ROT1G / OTHER = OTHER ROT SP JMS I XPAT 0004 OTHER XEQC OTHER ROT SP / :(ROT1G) /TRY AGAIN JMP ROT1G // //GLOBAL VRIABLES FLAG HERE / LINE ":" *LINE* :F(P1MOD) GLOB1,JMS I XPAT 0004 LINE XL0021 XFLC;0;LINE TAD XSUCCES SZA CLA JMP P1MOD /SPZAPG, LINE T!C!" " = SP :S(SPZAPG) /ZAP SPACES AGAIN SPZAPG,JMS I XPAT 0007 LINE T XORC C XORC XL0037 XEQC SP TAD XSUCCES SNA CLA JMP SPZAPG / LINE_ SP = /ZAP LEADING SPACES JMS I XPAT 0002-4000 LINE SP XEQC /GLO1G, LINE_ *VAR* SP = :F(P1MOD) GLO1G,JMS I XPAT 0005-4000 LINE XFLC;0;VAR SP XEQC TAD XSUCCES SZA CLA JMP P1MOD / GLOBE SP VAR SP :S(GLO1G) /HAVE IT ALREADY ? JMS I XPAT 0003 GLOBE SP VAR SP TAD XSUCCES SNA CLA JMP GLO1G / GLOBE = GLOBE VAR SP /NO - ADD TO THE LIST JMS I XPAT 0004 GLOBE XEQC GLOBE VAR SP / :(GLO1G) /CONTINUE JMP GLO1G // // //END OF PASS ONE / OUTPUT = "END OF PASS ONE" EOF1,JMS I XPAT 0002 OUTPUT XEQC XL0040 / SP NEED :S(P1BAD) /ANY LEFT OVER ? JMS I XPAT 0001 SP NEED TAD XSUCCES SNA CLA JMP P1BAD / OUTPUT = "MISSING MODULES:" JMS I XPAT 0002 OUTPUT XEQC XL0041 / OUTPUT = "**" NEED "**" JMS I XPAT 0004 OUTPUT XEQC XL0042 NEED XL0042 JMP I (.&7600+200 PAGE XP0005=. / OUTPUT = "SECONDARY MODULES:" OTHER P1BAD,JMS I XPAT 0003 OUTPUT XEQC XL0043 OTHER / WRITE = "/END OF POINTERS" CRLF S CRLF S JMS I XPAT 0006 WRITE XEQC XL0044 CRLF S CRLF S / SP GLOBE :S(EOGLP) /ANY GLOBALS ? JMS I XPAT 0001 SP GLOBE TAD XSUCCES SNA CLA JMP EOGLP / OUTPUT = "GLOBAL VARIABLES:" GLOBE JMS I XPAT 0003 OUTPUT XEQC XL0045 GLOBE / WRITE = S CRLF "/GLOBAL VARIABLES" CRLF T "ZERO=0" JMS I XPAT 0007 WRITE XEQC S CRLF XL0046 CRLF T XL0047 /GLBLP, GLOBE_ SP *VAR* SP = SP :F(EOGLP) GLBLP,JMS I XPAT 0007-4000 GLOBE SP XFLC;0;VAR SP XEQC SP TAD XSUCCES SZA CLA JMP EOGLP / WRITE = VAR C T "ZERO" JMS I XPAT 0005 WRITE XEQC VAR C T XL0050 / :(GLBLP) /CONTINUE JMP GLBLP / WRITE = S CRLF "/END OF PAGE ZERO" CRLF EOGLP,JMS I XPAT 0005 WRITE XEQC S CRLF XL0051 CRLF // //-PASS1 //+PASS2 // HERE THE MODULES ARE ACTUALLY PUT OUT TO THE FILE // //;LOGIC: // WHILE NO EOF DO // BEGIN READ A LINE // IF BEGINING OF DESIRED MODULE THEN // BEGIN // PAGINATE IF NEEDED // WHILE NO "/-MODULE" DO // BEGIN // READ A LINE // CASE OF // ENTRY POINT ADD "X" FOR PAGE ZERO // REFERENCE TO ENTRY POINT: CHANGE AS ABOVE // WRITE LINE // END // WRITE THE LAST LINE // END // // END // //:CODE: / .ICLOSE :F(CERROR) /CLOSE FOR PASS 2 JMS I XICLOSE TAD XSUCCES SZA CLA JMP CERROR / .LOOKUP INFIL :F(IOBAD) JMS I XLOOKUP INFIL TAD XSUCCES SZA CLA JMP IOBAD / NOW = "128" /INITIALIZE FOR PASS TWO JMS I XPAT 0002 NOW XEQC XL0052 / NEED SP = HAVE JMS I XPAT 0003 NEED SP XEQC HAVE / OUTPUT = "PASS TWO MODULES:" JMS I XPAT 0002 OUTPUT XEQC XL0053 /PAS2RD, LINE = READ :F(EOF) PAS2RD,JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF / LINE_ S FP = :F(PAS2RD) /MODULE YET ? JMS I XPAT 0003-4000 LINE S FP XEQC TAD XSUCCES SZA CLA JMP PAS2RD JMP I (.&7600+200 PAGE XP0006=. / LINE_ *MOD* SP!T :S(GOOD2M) /GET MODULE NAME JMS I XPAT 0006-4000 LINE XFLC;0;MOD SP XORC T TAD XSUCCES SNA CLA JMP GOOD2M / MOD = LINE /IF NO DESCRIPTION JMS I XPAT 0002 MOD XEQC LINE / NEED SP MOD AT *LOC* SP /WANT IT ? GOOD2M,JMS I XPAT 0007 NEED SP MOD AT XFLC;0;LOC SP / :F(PZNOL) TAD XSUCCES SZA CLA JMP PZNOL / NOW = NOW + LOC :F(NEWPAG) JMS I XASC NOW DCA XL0054 JMS I XASC LOC DCA XL0055 TAD XL0054 TAD XL0055 JMS I XINT NOW JMP .+0003 XL0054, 0 XL0055, 0 TAD XSUCCES SZA CLA JMP NEWPAG // // THERE ARE REALLY MORE THAN 4 PAL LOCATIONS, // BUT SINCE PAGES ARE NEVER TIGHT, THIS GIVES US // SOME FREE LOCATIONS ON THIS PAGE. // /.PAL 4 /***** PAL CODE ******* JMS I XASC /CONVERT TO NUMBER NOW TAD (-200 /PAGE CONSTANT SMA CLA JMP NEWPAG JMP PAGOK /GREAT- KEEP ON PRESENT PAGE /^.SNOBOL /****** BACK TO SNOBOL ******* // /PZNOL, NEED SP MOD SP :F(PAS2RD) /CHECK WITHOUT LOCS PZNOL,JMS I XPAT 0003 NEED SP MOD SP TAD XSUCCES SZA CLA JMP PAS2RD / LOC = "128" /TO ALWAYS PAGINATE JMS I XPAT 0002 LOC XEQC XL0052 /NEWPAG, WRITE = T "PAGE" CRLF FF /PAGINATE NEWPAG,JMS I XPAT 0005 WRITE XEQC T XL0056 CRLF FF / NOW = LOC /RESET LOCATIONS JMS I XPAT 0002 NOW XEQC LOC /PAGOK, OUTPUT = MOD /PRINT THE MODULE NAME PAGOK,JMS I XPAT 0002 OUTPUT XEQC MOD / ROT = MOD /IN CASE WE NEVER SEE THE ENTRY POINT JMS I XPAT 0002 ROT XEQC MOD / LINE = S CRLF S FP LINE /RESTORE LINE JMS I XPAT 0006 LINE XEQC S CRLF S FP LINE // /P2WRT, WRITE = LINE :F(IOBAD) /OUTPUT THE LINE P2WRT,JMS I XPAT 0002 WRITE XEQC LINE TAD XSUCCES SZA CLA JMP IOBAD /P2MOD, LINE = READ :F(EOF) /READ THE NEXT ONE P2MOD,JMS I XPAT 0002 LINE XEQC READ TAD XSUCCES SZA CLA JMP EOF JMP I (.&7600+200 PAGE XP0007=. / LINE_ S :S(COM) /PASS ALL COMMENTS JMS I XPAT 0001-4000 LINE S TAD XSUCCES SNA CLA JMP COM / LINE_ MOD C :S(ENTZ) /ENTRY POINT FOUND JMS I XPAT 0002-4000 LINE MOD C TAD XSUCCES SNA CLA JMP ENTZ / LINE T MOD T!POSR = T ROT T /CHANGE ENTRY POINT REFERENCES JMS I XPAT 0011 LINE T MOD T XORC POSR XEQC T ROT T / LINE SP MOD T!POSR = SP ROT T JMS I XPAT 0011 LINE SP MOD T XORC POSR XEQC SP ROT T / LINE "JMS" T!SP *VAR* T!SP!POSR :S(P2CVT) /CHECK JMS'ES JMS I XPAT 0014 LINE XL0057 T XORC SP XFLC;0;VAR T XORC SP XORC POSR TAD XSUCCES SNA CLA JMP P2CVT / :(P2WRT) JMP P2WRT // /COM, LINE_ S FM :S(EOMOD) /END OF MODULE ! COM,JMS I XPAT 0002-4000 LINE S FM TAD XSUCCES SNA CLA JMP EOMOD / :(P2WRT) JMP P2WRT // //HERE, IF GENERATING PAGE ZERO POINTERS, //WE CHANGE THE NAME OF A SUBROUTINE //CALLED BY A "JMS" IN THE PRESENT MODULE. // /P2CVT, PZFLG_ "Y" :F(P2WRT) /MUST WE CHECK FOR OTHER MODULES ? P2CVT,JMS I XPAT 0001-4000 PZFLG XL0027 TAD XSUCCES SZA CLA JMP P2WRT / HAVE SP VAR SP!AT :F(P2WRT) /CHECK FOR THE MOD NAME JMS I XPAT 0005 HAVE SP VAR SP XORC AT TAD XSUCCES SZA CLA JMP P2WRT / LINE "JMS" T!SP VAR = VAR T /CHANGE REFERENCES TO OTHER MODS JMS I XPAT 0010 LINE XL0057 T XORC SP VAR XEQC VAR T / :(P2WRT) JMP P2WRT // // /ENTZ, PZFLG_ "Y" :F(P2WRT) /NEED WE CHANGE ENTRY POINT ? ENTZ,JMS I XPAT 0001-4000 PZFLG XL0027 TAD XSUCCES SZA CLA JMP P2WRT / ROT = "X" MOD / YES - ADD X TO NAME JMS I XPAT 0003 ROT XEQC XL0060 MOD JMP I (.&7600+200 PAGE XP0010=. / ROT *ROT/6* /TRIM IF NEEDED JMS I XPAT 0003 ROT XFLC;0060;ROT / LINE MOD = ROT :(P2WRT) JMS I XPAT 0003 LINE MOD XEQC ROT JMP P2WRT // //END OF MODULE FOUND // /EOMOD, WRITE = LINE :(PAS2RD) /CONTINUE SEARCH EOMOD,JMS I XPAT 0002 WRITE XEQC LINE JMP PAS2RD // // /EOF, WRITE = "$" CRLF FF /WRITE THE ENDING JUNK EOF,JMS I XPAT 0004 WRITE XEQC XL0016 CRLF FF / .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 XL0061 / .EXIT JMP I (7600 /IOBAD, OUTPUT = "OUTPUT ERROR !" IOBAD,JMS I XPAT 0002 OUTPUT XEQC XL0062 / .END JMP I (7600 //-SCAN PAGE X0, INFIL, 0 CRLF, 0 SP, 0 C, 0 S, 0 T, 0 AT, 0 FF, 0 FP, 0 FM, 0 FU, 0 FR, 0 FG, 0 FC, 0 DESIRE, 0 PZFLG, 0 GLOBE, 0 HAVE, 0 OTHER, 0 NEED, 0 LINE, 0 MOD, 0 ROT, 0 LOC, 0 VAR, 0 NOW, 0 XVLEN=.-X0 XL0006, XX0006 XL0012, XX0012 XL0026, XX0026 XL0031, XX0031 XL0037, XX0037 XL0053, XX0053 XL0056, XX0056 XL0060, XX0060 XL0002, XX0002 XL0011, XX0011 XL0027, XX0027 XL0052, XX0052 XL0005, XX0005 XL0020, XX0020 XL0021, XX0021 XL0033, XX0033 XL0035, XX0035 XL0042, XX0042 XL0047, XX0047 XL0050, XX0050 XL0057, XX0057 XL0001, XX0001 XL0014, XX0014 XL0017, XX0017 XL0043, XX0043 XL0061, XX0061 XL0007, XX0007 XL0013, XX0013 XL0016, XX0016 XL0023, XX0023 XL0004, XX0004 XL0015, XX0015 XL0022, XX0022 XL0025, XX0025 XL0034, XX0034 XL0040, XX0040 XL0041, XX0041 XL0030, XX0030 XL0003, XX0003 XL0010, XX0010 XL0024, XX0024 XL0032, XX0032 XL0036, XX0036 XL0044, XX0044 XL0045, XX0045 XL0046, XX0046 XL0051, XX0051 XL0062, XX0062 FIELD 1 *XFIELD1 XIND=0 XX0006,0240 0000 7777 XX0012,0300 0000 7777 XX0026,6320 3701 6705 5240 6305 7722 6240 4714 6716 1713 6640 4650 6640 1317 5240 4716 0240 0277 7777 XX0031,6720 1701 6323 7640 5316 0305 6315 2317 6325 2714 0323 0272 7777 XX0037,0240 0240 7777 XX0053,6720 1701 6723 2240 5327 0317 6315 2317 6325 2714 0323 0272 7777 XX0056,6320 3701 0305 0000 7777 XX0060,0330 0000 7777 XX0002,6711 0316 5725 5324 0000 0000 7777 XX0011,0211 0000 7777 XX0027,0331 0000 7777 XX0052,5661 4262 0000 0000 7777 XX0005,0212 0000 7777 XX0020,0252 0000 7777 XX0021,0272 0000 7777 XX0033,5652 0262 0000 0000 7777 XX0035,6712 1715 5240 0311 6656 4273 0000 0000 7777 XX0042,0252 0252 7777 XX0047,6732 1305 5717 0275 0000 0000 7777 XX0050,6732 1305 0317 0000 7777 XX0057,6712 1715 0000 0000 7777 XX0001,6323 1325 6722 2717 6324 7311 6305 6240 6711 1302 6701 4722 6640 1320 6317 2703 6323 4723 5316 0307 6320 7722 6307 0722 0315 0000 7777 XX0014,0253 0000 7777 XX0017,0243 0000 7777 XX0043,6323 1705 6317 2316 6701 4722 6240 7715 6304 6325 5705 5323 0000 0000 7777 XX0061,6303 7714 6323 7311 6307 2640 6322 7722 5322 0640 0000 0000 7777 XX0007,0254 0000 7777 XX0013,0214 0000 7777 XX0016,0244 0000 7777 XX0023,6724 1305 6315 7311 6301 2724 6240 4727 5324 0310 6242 7305 0304 0242 7777 XX0004,0215 0000 7777 XX0015,0255 0000 7777 XX0022,6705 2316 5305 0322 6316 6701 5305 0323 5317 0306 6704 1705 6311 2722 6704 1240 6717 2325 6311 2716 0323 0254 7777 XX0025,6305 2316 0000 0000 7777 XX0034,0275 0000 7777 XX0040,6305 2316 6240 3317 6240 0720 5323 0323 6317 2716 0000 0000 7777 XX0041,6715 1711 6323 7311 6307 6640 6717 2704 6714 1705 0272 0000 7777 XX0030,0316 0000 7777 XX0003,6717 2325 6720 2325 0272 0000 7777 XX0010,0257 0000 7777 XX0024,0277 0000 7777 XX0032,6657 0240 6301 2707 6240 2732 5322 0317 6320 4717 6316 2724 0322 0323 7777 XX0036,0257 0240 7777 XX0044,6257 7305 6304 7640 6706 0240 6317 7311 6724 1305 0323 0000 7777 XX0045,6307 7714 6302 6301 6240 0726 6322 0711 6302 2714 0323 0272 7777 XX0046,6257 6307 6317 0702 6714 3240 6301 4722 6301 6302 0305 0323 7777 XX0051,6257 7305 6304 7640 6706 0240 6301 2707 6240 2732 0322 0317 7777 XX0062,6717 2325 6720 2325 6640 1305 6722 1317 0240 0241 7777 XTOP=. $$$