File: FORMAT.PA of Tape: Sources/Other/new-17
(Source file text)
/*********************************************************************** / / FORMAT ; PROGRAM TO RE-FORMAT ASSEMBLER PROGRAM FILES / A.WINDRAM 28 JAN 75, 15-FEB-79, 22-FEB-79 / / THIS PROGRAM IS DESIGNED TO REPLACE STRINGS OF SPACES BY TABS / IN A MORE INTELLIGENT WAY THAN EDIT / / THE MAIN RULES ARE :- / / 1) ANY INSTRUCTION STARTING IN COLS 2-9 AND PRECEDED BY 1 OR MORE / SPACES IS INDENTED 1 TAB STOP / / 2) ANY INSTRUCTION STARTING TO THE RIGHT OF COL 9 IS PRECEDED / BY ENOUGH TABS & SPACES TO MAINTAIN ITS POSITION / / 3) TEXT STRINGS, QUOTED CHARACTERS, & COMMENTS ARE COPIED UNALTERED / E.G. TEXT "ABCD" ("/ ETC. / THE TEXT PSEUDO-OP *MUST* BE FOLLOWED BY AT LEAST 1 SPACE OR TAB / / 4) COMMENTS START IN COL 1, OR COL 25 PRECEDED BY 1 OR MORE TABS / UNLESS AN INSTRUCTION ON THE SAME LINE REACHES COL 24, / IN WHICH CASE THE COMMENT & THE INSTRUCTION REMAIN SEPARATED / AS IN THE INPUT FILE / / 5) SPACES FOLLOWED IMMEDIATELY BY A TAB ARE ELIMINATED, / OR REPLACED BY ONE OR MORE TABS / / 6) TRAILING SPACES ON LINES NOT CONTAINING A COMMENT ARE OMITTED / / / ONE OUTPUT FILE, & UP TO 9 INPUT FILES CAN BE SPECIFIED / DEFAULT EXTENSION FOR BOTH INPUT & OUTPUT FILES IS "PA" / ALTMODE RETURNS TO MONITOR, CR RETURNS TO COMMAND DECODER / / PROGRAM LAYOUT :- / 00000 - 01377 PROGRAM / 01400 - 01777 INPUT HANDLER ( 2 PAGES ) / 02000 - 02377 OUTPUT HANDLER ( 2 PAGES ) / 02400 - 04777 INPUT BUFFER ( 5 BLOCKS ) / 05000 - 07377 OUTPUT BUFFER ( 5 BLOCKS ) / / TO ASSEMBLE & LOAD THE PROGRAM :- / / .R PAL8 / *FORMAT/L/9/P$ / / .SAVE SYS FORMAT / /*********************************************************************** FIELD 0 *20 SPACES, 0 PLCO, 0 PLSP, 0 LCO, 0 CHAR, 0 OPCH, 0 DCA LCO ISZ PLCO TAD LCO JMS I (OCHAR JMP FATLO / FATAL OUTPUT ERROR JMP I OPCH OPTAB, 0 CLA / FIXES BUG !! (AC MAY NOT BE CLEAR !) TAD (211 JMS OPCH CMA TAD PLCO AND (7770 TAD (10 DCA PLCO JMP I OPTAB OPSPS, 0 TAD SPACES SPA SNA JMP OPSP2 CIA DCA SPACES TAD (" JMS OPCH ISZ SPACES JMP .-3 JMP I OPSPS OPSP2, CLA DCA SPACES JMP I OPSPS GCHAR, 0 JMS I (ICHAR JMP EOF AND (177 SNA JMP GCHAR+1 TAD (200 DCA CHAR JMP I GCHAR EOF, SZA CLA JMP FATLI JMS I (OCLOS JMP FATLO TEST, CDF 10 TAD I (7642 CDF 0 SMA CLA JMP CALLCD JMP I (7600 / IF LAST THING OUTPUT WAS A LABEL, & WE ARE IN COLS 2 TO 9 / THEN OUTPUT A TAB TO SHUFFLE UP TO COL 9 FIX8, 0 TAD SPACES SNA CLA JMP I FIX8 TAD PLCO TAD (-10 SMA CLA JMP FIX83 TAD LCO TAD (-", SZA CLA JMP FIX83 / IF , NOT LAST THING OUTPUT TAD PLCO TAD SPACES DCA PLSP FIX82, JMS OPTAB TAD PLCO TAD (10 CIA TAD PLSP SMA JMP FIX82 TAD (10 DCA SPACES FIX83, JMS OPSPS JMP I FIX8 / ERROR HANDLING FATLO, CLA TAD (OFTLM JMP FATLI1 FATLI, CLA TAD (IFTLM FATLI1, DCA LCO TAD I LCO ISZ LCO SNA JMP CALLCD TLS TSF JMP .-1 CLA JMP FATLI1+1 *200 / START OF PROGRAM START, NOP / IGNORE ANY CHAIN PARAMETERS CIF 10 JMS I (7700 10 / LOCK IN USR CALLCD, JMS I (IOSTRT / CALL CD 2001 / 'PA' FILES ASSUMED CDF 10 TAD I (7600 / CHECK FOR OUTPUT FILE CDF 0 SNA CLA JMP TEST / JUST TEST ALTMODE BIT JMS I (OOPEN 2001 / 'PA' FILES IMPLIED JMP FATLO JMS I (IOPEN JMP FATLI / START OF LINE SLINE, DCA PLCO / POSITION OF LAST CHAR OUTPUT TAD (", / DUMMY FOR FIX8 DCA LCO / LAST CHAR OUTPUT GCC1, DCA SPACES / NO OF SPACES IN STRING GCC, JMS GCHAR / GET NEXT CHAR INTO 'CHAR' CLASS, TAD CHAR TAD (-" SNA JMP SPACE / IF SPACE TAD (" -211 SNA JMP TAB / IF TAB TAD (211-"/ SNA JMP SLASH / IF / TAD ("/-"" SNA JMP QUOTE / IF " TAD (""-"T SNA JMP TEE / IF T (TEXT?) TAD ("T-215 SNA JMP EOL / IF CR (END OF LINE) TAD (215-214 SNA JMP FF / IF FORM FEED TAD (214 DCA CHAR JMS FIX8 ECHO, CLA TAD CHAR JMS OPCH / IF ANYTHING ELSE JMP GCC / END OF LINE EOL, TAD CHAR JMS OPCH JMS GCHAR EOL2, TAD CHAR JMS OPCH JMP SLINE / FORM FEED FF, TAD PLCO SNA CLA JMP EOL2 / IF AT START OF LINE JMP ECHO / SPACE SPACE, ISZ SPACES JMP GCC / TAB CHARACTER TAB, TAD PLCO TAD SPACES AND (7770 TAD (10 DCA PLSP / NEXT TAB POSITION TAB2, JMS OPTAB TAD PLCO CIA TAD PLSP SPA CLA JMP TAB2 JMP GCC1 / SLASH ( START OF COMMENT ) SLASH, TAD PLCO TAD SPACES SNA CLA JMP SLASH2 TAD PLCO TAD (-30 SMA CLA JMP SLASH2 JMS OPTAB DCA SPACES JMP SLASH SLASH2, JMS OPSPS TAD ("/ JMS OPCH SLASH3, JMS GCHAR TAD CHAR JMS OPCH TAD CHAR TAD (-212 SZA CLA JMP SLASH3 JMP SLINE / QUOTED CHARACTER QUOTE, JMS FIX8 TAD ("" JMS OPCH JMS GCHAR TAD CHAR JMS OPCH JMP GCC1 PAGE / T MET ; MAYBE TEXT STRING TEE, JMS FIX8 TAD LCO TAD (-"Z-1 CLL TAD ("Z+1-"A SZL JMP ECHO TAD ("A-"9-1 CLL TAD ("9+1-"0 SZL CLA JMP ECHO / TEXT STRING MORE LIKELY TAD CHAR JMS OPCH JMS GCHAR TAD CHAR TAD (-"E SZA CLA JMP CLASS TAD CHAR JMS OPCH JMS GCHAR TAD CHAR TAD (-"X SZA CLA JMP CLASS TAD CHAR JMS OPCH JMS GCHAR TAD CHAR TAD (-"T SZA CLA JMP CLASS TAD CHAR JMS OPCH JMS GCHAR JMS TSPTB JMP CLASS TSP, ISZ SPACES JMP TTAB3 TTAB, TAD PLCO TAD SPACES AND (7770 TAD (10 CIA DCA PLSP DCA SPACES TTAB2, JMS OPTAB TAD PLCO TAD PLSP SPA CLA JMP TTAB2 TTAB3, JMS GCHAR JMS TSPTB ELSE, TAD CHAR CIA DCA PLSP JMS OPSPS TAD CHAR JMS OPCH ELSE2, JMS GCHAR TAD CHAR JMS OPCH TAD CHAR TAD PLSP SZA CLA JMP ELSE2 JMP GCC1 TSPTB, 0 TAD CHAR TAD (-" SNA JMP TSP TAD (" -211 SNA CLA JMP TTAB JMP I TSPTB OFTLM, "O;"U;"T;"P;"U;"T;" ;"F;"A;"I;"L;"U;"R;"E;215;212;0 IFTLM, "I;"N;"P;"U;"T;" ;"F;"A;"I;"L;"U;"R;"E;215;212;0 PAGE / PS/8 I/O MACROS (8BAL) (DMK) (MODIFIED BY AW TO FIX 3 BUGS) ZZZ=0 /FOR FILL-INS IOSTRT, .-. JMS RETFLD DCA IOST2 TAD I IOSTRT ISZ IOSTRT DCA IOST1 RIF TAD (6201 JMS THISFL JMS THISFL CIF 10 JMS I (200 5 /CD IOST1, ZZZ TAD (7616 DCA CDP /SET UP POINTER FOR IOPEN IOST2, ZZZ JMP I IOSTRT ICNT=IOST2 CDP=IOST1 /ORDER IMPORTANT ICHRP2=. IOPEN, .-. SNA JMP IOPN1 CLL RAL TAD (7614 DCA CDP IOPN1, JMS RETFLD DCA IOPNRT TAD (1401 DCA IHNDAD CDF 10 ISZ CDP TAD I CDP SNA JMP IOPNRT JMS THISFL CIF 10 JMS I (200 1 /FETCH HANDLER IHNDAD, 1401 JMP IOPNE1 ISZ CDP CDF 10 TAD I CDP DCA IBLK TAD (ICHR2 DCA ICHRS1 ISZ IOPEN IOPNRT, ZZZ JMP I IOPEN IOPNE1, STL RAR JMP IOPNRT ICHAR, .-. JMS RETFLD DCA ICHRRT JMP I ICHRS1 ICHR1, JMS THISFL JMS IOPEN JMP ICHRRT ICHR2, JMS THISFL CIF 0 JMS I IHNDAD 5^20+0^10 ICHRP1, 2400 IBLK, ZZZ SMA SKP CLA JMP ICHRRT /RETURN ERROR TAD (-200^5 DCA ICNT TAD ICHRP1 DCA ICHRP2 TAD IBLK TAD (5 DCA IBLK ICHR3, 0^10 CDF TAD I ICHRP2 JMS ICHRS1 0^10 CDF TAD I ICHRP2 JMS ICHRS1 CMA CLL RAL TAD ICHRP2 DCA ICHRP2 JMS ICHRS2 ISZ ICHRP2 JMS ICHRS2 RAL JMS ICHRS1 ISZ ICNT JMP ICHR3 JMP ICHR2 ICHRT1=. ICHRS1, .-. AND (377 TAD (-232 /^Z SNA JMP ICHR1 TAD (232 ISZ ICHRP2 ISZ ICHAR ICHRRT, ZZZ JMP I ICHAR ICHRS2, .-. DCA ICHRT1 0^10 CDF TAD I ICHRP2 AND (7400 TAD ICHRT1 RTL RTL JMP I ICHRS2 PAGE OWRIT, .-. TAD OCHRP1 CIA TAD OCHRP2 TAD (177 AND (7600 CLL RAR DCA OWRTT1 TAD OWRTT1 CLL RTR RTR RTR SNA JMP OWRIT1 IAC RAR TAD OLEN DCA OLEN CLL TAD OLIM TAD OLEN SZL CLA JMP OWRTE1 TAD OWRTT1 TAD (0^10+4000 DCA OWRTT1 CIF 0 JMS I OHNDAD OCHRT1=. OWRTT1, ZZZ OCHRP1, 5000 OBLK, ZZZ JMP OWRTE1 TAD OBLK TAD (5 JMS OSETUP OWRIT1, ISZ OWRIT JMP I OWRIT OWRTE1, CLA STL RAR JMP I OWRIT OHNDAD, 0 OCLOS, .-. JMS RETFLD DCA OCLORT JMS THISFL TAD (232 OCLO1, JMS OCHAR JMP OCLORT TAD OCNT AND (177 SZA CLA JMP OCLO1 JMS OWRIT JMP OCLORT TAD OOPNCW CIF 10 JMS I (200 4 OFLNM OLEN, ZZZ JMP OCLOE1 DCA OOPNI1 ISZ OCLOS OCLORT, ZZZ JMP I OCLOS OCLOE1, STL RAR JMP OCLORT OCNT, 0 OCHAR, .-. AND (377 DCA OCHRT1 JMS RETFLD DCA OCHRRT JMP I OCHRS1 OCHR1, ISZ OCHAR OCHR2, JMS OCHRS1 JMS OCHRS2 JMS OCHRS2 CMA CLL RAL TAD OCHRP2 DCA OCHRP2 JMS OCHRS3 JMS OCHRS3 ISZ OCNT JMP OCHR1 JMS THISFL JMS OWRIT JMP OCHRE1 JMP OCHR1 OCHRS1, .-. OCHRRT, ZZZ JMP I OCHAR OCHRS2, .-. TAD OCHRT1 0^10 CDF DCA I OCHRP2 ISZ OCHRP2 ISZ OCHAR JMS OCHRS1 JMP I OCHRS2 OCHRS3, .-. TAD OCHRT1 CLL RTL RTL DCA OCHRT1 TAD OCHRT1 AND (7400 0^10 CDF TAD I OCHRP2 DCA I OCHRP2 ISZ OCHRP2 JMP I OCHRS3 OCHRP2, 0 PAGE OCHRE1, CLA /ERROR FROM OCHR DCA OOPNI1 STL RAR /RETURN ERROR INDICATION JMP OCHR2 OOPEN, .-. DCA OOPNT1 JMS RETFLD DCA OOPNRT TAD OOPNI1 SZA CLA JMP OOPNE1 /ONLY 1 OUTPUT FILE TAD OOPNT1 CLL RTL TAD OOPNT1 TAD (7600 DCA OOPNP1 TAD I OOPEN DCA OOPNT1 TAD (OOPNCW DCA OOPNP2 JMS OOPNS1 JMS OOPNS1 JMS OOPNS1 JMS OOPNS1 JMS OOPNS1 TAD OOPNEX SNA TAD OOPNT1 DCA OOPNEX TAD (2001 DCA OOPNT1 TAD OOPNCW AND (17 SNA JMP OOPNRT CIF 10 JMS I (200 1 OOPNT1, 2001 JMP OOPNE1 TAD OOPNT1 DCA OHNDAD TAD (OFLNM DCA OOPN1 TAD OOPNCW CIF 10 JMS I (200 3 /ENTER OOPN1, OFLNM OLIM, 0 JMP OOPNE1 ISZ OOPNI1 TAD OOPN1 JMS OSETUP TAD (OCHR2+1 DCA OCHRS1 DCA OLEN ISZ OOPEN SKP OOPNE1, CLA STL RAR OOPNRT, ZZZ ISZ OOPEN JMP I OOPEN OOPNS1, .-. CDF 10 TAD I OOPNP1 JMS THISFL DCA I OOPNP2 ISZ OOPNP1 ISZ OOPNP2 JMP I OOPNS1 OSETUP, .-. DCA OBLK TAD (-200^5 DCA OCNT TAD OCHRP1 DCA OCHRP2 JMP I OSETUP OOPNCW, 0 OFLNM, 0;0;0 OOPNEX, 0 OOPNP1, 0 OOPNP2, 0 OOPNI1, 0 THISFL, .-. DCA . JMP I THISFL RETFLD, .-. CLA RDF TAD (CDF CIF 0 JMP I RETFLD XLIST 0 PAGE /END OF PS/8 I/O MACROS $$$$$$$$