File: DIR40.PA of Tape: Various/Tests/Blank-Tape-Unit1
(Source file text)
/ OS/8 DIRECT V40A FOR KBM V40 / / / / / / /COPYRIGHT (C) 1974 BY DIGITAL EQUIPMENT CORPORATION / AND 1979 BY DATAPLAN GMBH / / / / / / / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. / /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. / /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY /DIGITAL. / / / / / / / / /THIS PROGRAM HAS BEEN MODIFIED BY SEVERAL PEOPLE: LARRY FOWLER OF /THE BOEING COMMERCIAL AIRPLANE COMPANY, SEATTLE, WASHINGTON STARTED /BY ADDING THE "/A" OPTION TO ALPHABETIZE THE OUTPUT AND THE "/H" /OPTION TO PRINT THE HEADER BLOCK INFORMATION USED BY DECSYSTEM 5/21/76 / /JIM VAN ZEE OF THE CHEMISTRY DEPT, UNIV. OF WASHINGTON, SEATTLE, WA. /ADDED THE "/N" OPTION FOR NUMERIC DATES AND THE "/D", "/T", AND "/X" /OPTIONS TO SORT BY DATE OR EXTENSION. HE ALSO ADDED A 'FILE COUNT - /# BLOCKS USED' SUMMARY, FIXED THE DATE FOR THE OS/8 V3D RELEASE, AND /SQUEEZED EVERYTHING INTO THE ORIGINAL FILE SPACE! 9/10/76 /3/21/77, 4/15/77, 7/7/77, 1/1/78, 2/11/78, 4/15/78, 8/15/78, 11/7/78 / /W VAN DER MARK ADDED SOME NICE GERMAN MESSAGES /26-JUN-79 /DIRECTORY LISTING PROGRAM /JANUARY 17, 1974 H.J. /APRIL 22, 1975 L.F. /MAY 21, 1976 TMC /SEPTEMBER 10, OCTOBER 20, 1976 JVZ /MARCH 21, 1977 ADDED /X, FIXED /R/C JVZ /APRIL 15, 1977 ADDED EXTENDED DATE JVZ /MAY 15, 1977 ALLOWED /X BY ITSELF JVZ /JULY 1, 1977 ADDED /D/T, OTHER THINGS JVZ /JULY 7, 1977 MAJOR REWRITE FOR /A/B/E JVZ /JANUARY 1, 1978 ADDED A FEW GOODIES JVZ /FEBRUARY 11, 1978 ADDED A FEW MORE... JVZ /APRIL 15, 1978 FIXED # COLS & /T BUG JVZ /AUGUST 15, 1978 FIXED THE SORT ROUTINE JVZ /NOVEMBER 7, 1978 FIXED SYMBIONT PROB JVZ /JUNE 26, 1979 ALTERNATE GERMAN TEXT WVDM GERMAN=1 XR=10 /OTHERS ARE USED TOO PTR=20 CNT=21 INFPTR=22 OUHAND=23 INHAND=24 LNCNT=25 EPTR=26 DAFLG=27 TEMP=30 MOIN=31 FILEC=32 OSWTCH=33 INFWDS=34 PFLAG=35 INSCNT=36 ALNCNT=37 AC2=CLA CLL CML RTL AC4000=CLA CLL CML RAR ALTOPT=7642 OPT1=7643 OPT2=7644 EQLS=7646 /EQUALS OPTION DATE=7666 / CRT=6722 /ALTERNATE CONSOLE DEVICE IFDEF CRT < INDVC=11 OUTDVC=12 KSF= INDVC^10+6001 KCC= INDVC^10+6002 KRS= INDVC^10+6004 KRB= KCC KRS TSF= OUTDVC^10+6001 TLS= OUTDVC^10+6006> FIELD 1 *4600 /KEEP THE SAME S.A. SKP CLA /NORMAL ENTRY JMP CHAIN /CHAIN ENTRY CDCALL, JMS 200 /SEE WHAT THE PERSON WANTS C5, 5 5200 /IN SPECIAL MODE CHAIN, AC2 /GET OPTION /W AND OPT2 SNA CLA /SKIP FOR VESION NUMBER JMP EQUALT JMS ERROR /PRINT VERSION NUMBER VERNO+40 /AND IGNORE OTHER OPTIONS! /SET UP FOR MULTIPLE ENTRIES ON A LINE EQUALT, TAD (-14 /EQUALS OPTION WORD STL /EXTEND THE SIGN TAD EQLS /CHECK LEGALITY OF OPTION SNL SZA CLA /SKIP IF GOOD JMP BADEQ /SUBSTITUTE .DI IF NULL EXTENSION TAD 7604 /GET EXTENSION SNA /SKIP IF GIVEN TAD (411 /.DI DCA 7604 /PUT EXTENSION BACK / CHECK FOR ? IN OUTPUT SPECIFICATION TAD (-10 DCA CNT /A CNT OF -10 PUTS US AT FIRST CHAR S1C, TAD (7605 JMS GTSXBT /GET A CHAR TAD (-"?!7700 /CHECK FOR ? SNA JMP QINO TAD ("?-"* SNA CLA JMP AINO ISZ CNT JMP S1C / CHECK FOR EMBEDDED * IN ANY SPECIFICATION TAD (7605 S4L, DCA PTR TAD (-10 DCA CNT ACK, TAD PTR JMS GTSXBT TAD (-"*!7700 SZA CLA JMP CNTUP AC2 TAD CNT SZA TAD (6 SNA CLA ISZ CNT TAD PTR JMS GTSXBT SZA CLA JMP AINO CNTUP, ISZ CNT JMP ACK TAD I PTR SNA CLA JMP NULLCK TAD C5 TAD PTR JMP S4L NULLCK, TAD (7201 DCA AO2 TAD (7201 DCA AO1 TAD 7600 SNA JMP TTYHND JMS 200 1 AO1, 7201 HLT TAD AO1 JMP CMN TTYHND, DCA TTY2 JMS 200 1 IFNDEF CRT <5524> /TTY COMPRESSED CODE IFDEF CRT <CRT> /CRT COMPRESSED CODE TTY2, 0 AO2, 7201 JMP IDBLVT TAD TTY2 DCA 7600 TAD AO2 CMN, DCA OUHAND TAD (7601 DCA BLCK TAD 7600 JMS 200 3 BLCK, 7601 LENGTH, 0 JMP NOROOM TAD BLCK JMP PAGE10 BADEQ, JMS ERROR BIGEQ+40 AINO, JMS ERROR ILLA+40 QINO, JMS ERROR ILLQ+40 IDBLVT, JMS ERROR NOTTY+40 NOROOM, JMS ERROR SPRBLM+40 ABORT, TAD ALTOPT /ABORT OPERATION AND GOTO ENDUP SMA CLA JMP CDCALL CIF CDF 0 JMP 7605 PAGE 10 OUWDCT, 0 /PUT THIS AT THE BEGINNING OCPTR, 0 PAGE10, DCA BLCKN TAD BUFAD DCA OCPTR TAD (RPOS-1 DCA RPOS TAD (-1200 /NUMBER OF WORDS IN BUFFER DCA OUWDCT DCA CLEN TAD 7605 SNA JMS DSK DCA 7605 TAD (7605 DOMOIN, DCA INFPTR TAD (6601 DCA AI1 TAD I INFPTR SNA JMP ENDCHK JMS I O200 1 AI1, 6601 HLT TAD AI1 DCA INHAND JMP PAGE11 /THIS IS THE END OF OPERATION CODE /IT CLOSES THE FILE AND HANDLES RETURNS ENDCHK, ISZ ECHO TAD (232 OLOOP, JMS OUTCHR TAD (177 /GET -WORDS LEFT IN BUFFER O200, AND OUWDCT /CHECK AGAINST NEW BUFFER # SNA TAD RPOS /CHECK MORE CAREFULLY! CIA TAD (RPOS-1 SZA CLA /SKIP IF JUST DUMPED ONE JMP OLOOP /KEEP GOING TO DUMP ONE TAD OUWDCT TAD (1200 /DONT DUMP IF AT END SZA CLA JMS DUMP /DUMP BUFFER TAD 7600 JMS I O200 4 7601 CLEN, 0 JMP CLOERR JMP ABORT OUTCHR, 0 JMP I RPOS RPOS1, DCA I OCPTR JMS RPOS RPOS2, DCA HOLD JMS RPOS RPOS3, RTL RTL DCA HOLD2 TAD HOLD2 AND (7400 TAD I OCPTR DCA I OCPTR ISZ OCPTR TAD HOLD2 RTL RTL AND (7400 TAD HOLD DCA I OCPTR ISZ OCPTR ISZ OUWDCT SKP JMS DUMP JMS RPOS JMP RPOS1 RPOS, RPOS1 JMP I OUTCHR HOLD=. DUMP, 0 TAD LENGTH /GET LENGTH AVAILABLE SNA /IF ZERO ITS NON FILE STRUCTURE JMP NOMATR /IF ZERO DOESN'T MATTER STL TAD CLEN /ADD CURRENT SIZE TAD (5 /ADD # OF BLOCKS SNL SZA CLA /WE ARE OK IF SKIPS JMP NOROOM TAD CLEN /UPDATE CLOSING LENGTH TAD (5 /BY NUMBER OF BLOCKS DCA CLEN /SAVE FOR CLOSE NOMATR, TAD OUWDCT TAD (5210 DCA CTLWD CIF 0 JMS I OUHAND HOLD2=. CTLWD, 5210 /OUTPUT BUFFER IN FIELD 1 IS BUFAD, 5200 /5 BLOCKS LONG, ENDS AT 7577 BLCKN, 0 JMP WRTERR TAD (5 TAD BLCKN /UPDATE BLOCK # BY 5 DCA BLCKN TAD (-1200 DCA OUWDCT TAD BUFAD DCA OCPTR JMP I DUMP PAGE 11 *.&(2 /LOCATE COLUMN COUNT (NOW=2) PAGE11, TAD I INFPTR /GET DEVICE NUMBER TAD (7757 DCA TEMP TAD I TEMP /IS IT A DIRECTORY DEVICE? D7700, SMA CLA JMP NFIN /NO CIF 0 JMS I INHAND /YES, READ THE DIRECTORY 1400 DIRTY, 3600 1 JMP INDERR CDF 0 TAD I DIRTY /CODE TO CHECK FOR CMA CLL TAD I (3602 /A LEGAL DIRECTORY SNL TAD D7700 SZL CLA JMP BIDIR /DIRECTORY IS BAD TAD DIRTY /POINT TO FIRST SEGMENT DCA EPTR TAD I (3604 /GET NO. OF INFO WORDS CIA DCA INFWDS JMS REFRMT /CONVERT TO NEW FORMAT DCA I XR /ZERO THE NEXT LOCATION CDF 10 TAD OPT1 AND (4400 /CHECK OPTIONS A & D DCA SORTOP TAD OPT2 AND (21 /CHECK OPTIONS T & X TAD SORTOP DCA SORTOP /SAVE SORT OPTIONS TAD SORTOP SZA CLA JMS SORT /DO AN INPLACE SORT TAD EQLS SNA TAD (2 /OR 'TAD (3', ETC. CIA /SET UP NEGATIVE COUNT DCA ALNCNT /SAVE FOR LATER TAD ALNCNT DCA LNCNT TAD OPT2 /CHECK DATE OPTION RAL /N = 'NUMERIC' SPA CLA /'SMA CLA' = 'NON-NUMERIC' CMA DCA DAFLG TAD (OUTCHR /POINT TO THE HANDLER DCA OSWTCH JMS CRLF TAD DATE JMS PDATE /PRINT THE CURRENT DATE JMS CRLF JMS CRLF TAD OPT1 AND (20 /CHECK THE HEADER OPTION SZA CLA JMS HEADER CMA DCA PFLAG /INITIALIZE COLUMN OUTPUT DCA FILEC / COUNT THE NUMBER OF INPUTS FROM THE SAME DEVICE CDF 10 DCA INSCNT TAD INFPTR DCA MOIN GETCNT, ISZ MOIN TAD I MOIN SZA CLA JMP NOSUB TAD (5200 DCA I MOIN TAD (3 TAD MOIN DCA TEMP TAD (5200 DCA I TEMP NOSUB, TAD MOIN TAD (4 DCA MOIN CMA TAD INSCNT DCA INSCNT TAD OPT2 /U AND (10 SNA CLA TAD I MOIN CIA TAD I INFPTR SNA CLA JMP GETCNT JMP PAGE12 NFIN, JMS ERROR NFLEIN+40 INDERR, JMS ERROR BADIRD+40 BIDIR, JMS ERROR BADDIR+40 WRTERR, JMS ERROR OUERR+40 CLOERR, JMS ERROR CLERR+40 PAGE 12 / THIS IS THE ** SUPERQUASIFACETED ** / DIRECTORY PATTERN MATCHING ROUTINE /THE INPUT DIRECTORY IS SEARCHED HERE, IF /A MATCH IS FOUND USING THE INPUT GROUPING /GOT1 GETS CONTROL WITH -BLOCKS IN THE AC PAGE12, TAD OPT2 /CHECK /M SPA CLA JMP REPROC DCA ACNT /RESET FILE COUNT DCA BCNT / AND FILE LENGTH REPROC, TAD FCNT DCA MOVE1 DCA RFLAG TAD (4 /OFFSET FOR SYMBIONT DCA EPTR /POINT TO FIRST ENTRY BLOOP, CDF 0 TAD I EPTR /GET FILENAME WORD SNA CLA /SKIP IF FILE HERE JMP HEMPTY /NO... ITS REALLY AN EMPTY CDF 10 TAD (4 /CREATE A POINTER TO THE TAD EPTR /END OF ENTRY FOR GTSXBT DCA PTR TAD RFLAG /CHECK /R SZA CLA JMP MATCH /EVERYTHING AFTER MATCHES TAD INSCNT /SET NUMBER OF INPUTS DCA XFORM /TO LOOK AT ALL AT ONCE TAD INFPTR /ADDRESS OF FIRST INPUT SKP NEXTI, TAD XR /ADDRESS OF CURRENT INPUT TAD (5 /GTSXBT SUBR REQUIRES US DCA XR /TO POINT TO END OF FIELD TAD (-10 /NUMBER OF CHARS TO LOOK AT WILDX, DCA CNT MLP, TAD XR /OK - GET A CHARACTER FROM INPUT JMS GTSXBT TAD (-"*!7700 /IS IT A * ? SNA /SKIP IF NOT * JMP WILDA /YEP... ITS A WILD CARD TAD ("*-"? /IS IT A ? SNA /SKIP IF NOT JMP WILDQ /YES... FORCE MATCH ON THIS CHAR TAD ("?&77 /RESTORE VALUE CIA /NEGATE DCA TEMP /AND SAVE CDF 0 TAD PTR /NOW GET CHAR FROM DIRECTORY JMS GTSXBT CDF 10 TAD TEMP /DO CHARS MATCH SNA CLA /SKIP IF THEY DO NOT JMP WILDQ /A MATCH!!!!!!! ISZ XFORM /HAVE WE CHECKED ALL THE INPUTS JMP NEXTI /NO CHECK WHOLE GROUP MEXT, DCA XFORM /NO MATCH ON THIS INPUT TAD INFWDS /SET EPTR TO POINT TO TAD PTR /BLOCK COUNT OF FILE DCA EPTR TAD XFORM /HAVE THERE BEEN ANY MATCHES? TAD OPT2 /CHECK /V AND (4 /ISOLATE THE BIT /SKIPS IF INPUT DIRECTORY ENTRY IS NOT CANDIDATE /THAT IS - IF A MATCH WAS NOT FOUND BETWEEN ANY /OF THE INPUTS AND /V WAS NOT SPECIFIED OR /A MATCH WAS FOUND AND /V WAS SPECIFIED /THIS ALLOWS /V TO MEAN 'EVERYTHING BUT' CDF 0 SZA CLA TAD I EPTR /GET -NUMBER OF BLOCKS CDF 10 SZA /SKIPS IF TENTATIVE OR NOT CANDIDATE JMS GOT1 /LOOKS LIKE AN ENTRY NEMPTY, ISZ EPTR /RETURN FROM HEMPTY ISZ EPTR /POINT TO NEXT ENTRY ISZ MOVE1 /CHECK NUMBER OF ENTRIES JMP BLOOP /NOT DONE WITH SEGMENT JMP PASSND /THE END OF A PASS, MAYBE ALL DONE /HANDLE WILD CARDS WILDQ, ISZ CNT /BUMP POINTER & CHAR COUNT JMP MLP WILDA, TAD CNT /GET CURRENT CHAR POSITION TAD (6 /ADD SIZE OF FILENAME SPA /SKIP IF IN EXTENSION FIELD JMP WILDX /THIS BUMPS TO EXTENSION CLA MATCH, TAD (4 /SET THE MATCH FLAG JMP MEXT /WILL INVERT /V SWITCH /THIS ROUTINE TRANSFORMS THE DIRECTORY BY ADDING BLOCK /NUMBERS AND EXPANDING THE 'EMPTIES' FOR EASY SORTING. XFORM, 0 /TRANSFORM THE DIRECTORY JMS MOVE1 /MOVE THE FIRST WORD TAD (4 TAD INFWDS CIA DCA CNT /SET UP TO MOVE THE REST TAD I PTR SNA CLA /CHECK IF IT WAS AN EMPTY JMP MOVMT /YES JMS MOVE1 /NO ISZ CNT JMP .-2 /MOVE THE REST OF THE ENTRY TAD I PTR /IS IT A TEMPORARY? SZA /DON'T COUNT THOSE ISZ ACNT /KEEP TRACK TAD BCNT DCA BCNT MTRTN, TAD FILEC /NOW INSERT THE BLOCK NUMBER DCA I XR TAD I PTR CIA TAD FILEC /AND SET FOR THE NEXT ENTRY DCA FILEC ISZ I EPTR /DONE WITH THIS SEGMENT? JMP XFORM+1 /NO JMP I XFORM /YES DCA I XR /EXPAND THE EMPTIES MOVMT, ISZ CNT JMP .-2 JMS MOVE1 /NOW MOVE THE LENGTH TAD I PTR TAD ECNT DCA ECNT /AND SUM FOR LATER ON JMP MTRTN MOVE1, 0 ISZ PTR TAD I PTR DCA I XR JMP I MOVE1 RFLAG= INHAND /RE-USE THIS LOCATION PAGE GOT1, 0 DCA TEMP /SAVE THE SIZE TAD OPT2 AND G100 /CHECK /R DCA RFLAG TAD OPT1 JMS MDATE /CHECK /C G100, 100 SZA CLA JMP I GOT1 TAD OPT2 JMS MDATE /CHECK /O XX60, STA STL SNA CLA JMP I GOT1 TAD OPT2 /CHECK /M SPA CLA JMP I GOT1 TAD PFLAG /CHECK PASS FLAG SMA CLA JMP .+5 ISZ ACNT /INCREMENT FILE COUNT TAD TEMP TAD BCNT /AND SUM FILE LENGTHS DCA BCNT JMS CHKR /SEE IF THIS IS TIME JMP I GOT1 /NOT NOW LITTLE BEAVER TAD OPT1 AND (10 /CHECK /I SWITCH SZA CLA TAD INFWDS /GET NUMBER OF ADDITIONAL WORDS CLL CIA IAC /USE -(INFWDS-1) DCA PNBLK SZL /CHECK FOR 0,1 JMP PNLOOP-2 TAD PTR DCA XR JMS OPRNT /DUMP ADDITIONAL INFORMATION WORDS JMS CONVTP /SPACE ISZ PNBLK /COUNT NUMBER JMP .-3 TAD (-10 DCA CNT PNLOOP, CDF 0 /PRINT FILE NAME TAD PTR JMS GTSXBT JMS CONVTP TAD (3 TAD CNT SZA CLA JMP .+3 TAD (". JMS I OSWTCH ISZ CNT JMP PNLOOP JMS PNBLK /PRINT BLOCK DCA MDATE TAD (-4 DCA CNT OPLP, TAD MDATE CLL RAL RTL DCA MDATE TAD MDATE RAL AND (7 TAD XX60 JMS CONVTP ISZ CNT JMP OPLP JMP I OPRNT MDATE, 0 RTL SMA CLA JMP I MDATE ISZ MDATE /SKIP RETURN CDF 0 TAD I PTR /GET DATE WORD CIA CDF 10 TAD DATE /COMPARE WITH MONITORS, 0 IF = JMP I MDATE PAGE *.&(2 /LOCATE COLUMN SPACING / PROCESS THE EMPTIES . . . HEMPTY, TAD (4 /POINT TO NEGATIVE SIZE TAD INFWDS TAD EPTR DCA EPTR TAD I EPTR DCA TEMP CDF 10 TAD OPT1 /CHECK /E AND (200 SZA CLA JMP LISTEM TAD OPT2 /CHECK /M SPA CLA LISTEM, JMS CHKR /DO IT NOW OR JUST COUNT? JMP NEMPTY /LATER ALLIGATOR TAD OPT1 /CHECK /I AND (10 SNA CLA /IF YES PAD BY ADDITIONAL INFO WORDS JMP EMSG TAD INFWDS CLL RTL TAD INFWDS /NUMBER OF SPACES=5*(INFWDS-1) SZA TAD (-5 SZA JMS BLANK EMSG, JMS MESAG EMPTYM+40 JMS PNBLK /PRINT BLOCK ? JMP NOSIZE /NO TAD TEMP CIA JMS PRNUM /PRINT LENGTH TAD INFWDS SZA CLA JMS PDATE /SPACE FOR DATE NOSIZE, JMS EOLIN JMP NEMPTY EOLIN, 0 ISZ LNCNT /IS LINE FILLED? JMP MOLIN /NO JMS CRLF TAD ALNCNT /RESET COUNT DCA LNCNT JMP I EOLIN MOLIN, TAD (2 /OUTPUT 2 BLANKS - WAS 4 JMS BLANK JMP I EOLIN HEADER, 0 CDF 0 ISZ I (6202 JMP I HEADER TAD I (6304 DCA TEMP DCA I (6304 TAD (6300-1 JMS PRINT CDF 10 JMS MESAG VOLMES+40 TAD TEMP JMS PRNUM JMS CRLF TAD (6400-1 JMS PRINT TAD (6304 DCA XR 1 CLL TAD I XR 1 /CHECK RANGE OF SYSTEM I.D. TAD (10 /EIGHT IS THE MAXIMUM SZL /SHOULD HAVE SET THE LINK... ISZ I (6207 /DOES THE DEVICE HAVE A SYSTEM? JMP HDEND /NOPE TAD (POINT-7 DCA PTR JMS CRLF TAD I PTR DCA .+2 JMS MESAG 0 JMS MESAG SYSMES+40 CDF 0 TAD I XR 1 JMS PRNUM CDF 0 TAD I XR 1 JMS CONVTP JMS CRLF HDEND, JMS CRLF JMP I HEADER PRINT, 0 DCA XR CDF 0 TAD I XR SZA TAD (-232 SNA JMP I PRINT TAD (232 CDF 10 JMS I OSWTCH JMP PRINT+2 PAGE /THIS CODE TESTS THE COLUMN COUNT, AND WHEN IT IS 2 OR MORE /GENERATES THE OUTPUT IN COLUMN ORDER RATHER THAN ROW ORDER /BY MAKING SEVERAL PASSES THROUGH THE DIRECTORY. ADDED BY /TOM MCINTYRE, WVU MEDICAL CENTER 5/21/76. REVISED BY JVZ C400, 400 /FIRST THING ON THE PAGE CHKR, 0 TAD ALNCNT /CHECK COLUMN COUNT CLL IAC SNA CLA /IS IT > 1 ISZ CHKR /NO, SKIP CODE FOR SINGLE COLUMN TAD PFLAG /GET PASS INDICATOR FLAG SMA CLA /IF PASS FLAG<0 WE ARE COUNTING JMP PROCF /IF PASS FLAG >=0 WE ARE PROCESSING SNL /SET IF ALNCNT=-1 ISZ FILEC /INCREMENT FILE COUNT COUNTER DCA COLCNT /CLEAR FOR SINGLE COLUMN OUTPUT JMP I CHKR /CONTINUE DIRECTORY SCAN /THIS CODE ACTUALLY COUNTS THE ENTRIES AND CALLS OUTPUT PROCF, ISZ SKPCTR /DO THIS ONE? JMP I CHKR /NO, SKIP TO NEXT ISZ COLCTR /DO WE CHANGE IT YET? SKP /NOT YET ISZ SKPCNT /YES, ONE LESS PER COLUMN TAD SKPCNT /YES, AND INIT COUNT FOR NEXT DCA SKPCTR ISZ CHKR /NOW IS THE TIME TO SKIP ISZ FILEC /ARE WE ALL DONE? JMP I CHKR /NO, GO DO IT ALLDUN, TAD COLCNT /YES, FINISH UP SZA CLA JMS CRLF /ONLY 1 IF IT CAME OUT EVEN JMS CRLF TAD ACNT /PRINT FILE COUNT JMS PRNUM 4 JMS MESAG FILESM+40 TAD BCNT /BLOCKS USED. . . CIA JMS PRNUM 4 JMS MESAG BLOCKM+40 TAD ECNT /AND SPACE REMAINING CIA JMS PRNUM 4 /FORCE A SINGLE 0 IF NONE JMS MESAG FRBLM+40 JMS CRLF TAD OPT2 /P - CONTROLS PAGING C200, AND C400 /INVERTED IN VER. 5H SZA CLA /WAS 'SNA CLA' TAD (14 /FORM FEED JMS I OSWTCH /SAVE PAPER! TAD MOIN JMP DOMOIN /COME HERE AFTER COMPARING ALL THE DIRECTORY ENTRIES PASSND, TAD FILEC /CHECK IF WE'RE DONE SZA CMA /OR ALMOST DONE SNA CLA JMP ALLDUN /YES WE ARE ISZ PFLAG /WHICH PASS? JMP PRCPAS /A PRINTING PASS DCA SKPCNT /DIVIDE THINGS UP TAD FILEC TAD ALNCNT ISZ SKPCNT SMA SZA JMP .-3 /HOW MANY ROWS? SNA /WHEN DO WE BREAK IT? JMP .+3 /WE DON'T, IT CAME OUT EVEN CMA /SINCE IT IS A PREINCREMENT TAD ALNCNT DCA COLCNT /CHANGE COUNT AT THIS COLUMN TAD SKPCNT CIA DCA SKPCTB /BASE COLUMN CTR TAD FILEC CMA DCA FILEC /FILE COUNTER DCA ROWCNT /INIT THE ROW TO 0 PRCPAS, ISZ ROWCNT /SKIP THIS MANY AT FIRST TAD ROWCNT CIA DCA SKPCTR /FOR FIRST ENTRY IN ROW TAD COLCNT /REINIT THE COLUMN COUNT DCA COLCTR TAD SKPCTB DCA SKPCNT /REINIT THE LENGTH ALSO JMP REPROC /BACK FOR ANOTHER PASS! SKPCNT= XR 1 /OFFSET BETWEEN TWO PASSES SKPCTR= XR 2 /ACTIVE COUNTER FOR SKIPS ROWCNT= XR 3 /INIT SKIP FOR EACH ROW SKPCTB=. DSK, 0 /DSK LOOKUP DCA COLCTR JMS I C200 12 5723 COLCTR, 0 COLCNT, 0 JMP IDBLVT TAD COLCTR JMP I DSK FILESM, IFNDEF GERMAN < TEXT " FILES IN "> IFDEF GERMAN < TEXT " DATEIEN IN "> BLOCKM, IFNDEF GERMAN < TEXT " BLOCKS - "> IFDEF GERMAN < TEXT " BLOECKEN, "> /SYSTEM TABLE - FIRST 3 ARE NON-STANDARD BRANDX+40 MULTI8+40 ETOS+40 OS78+40 DS8+40 OS12+40 OS8+40 POINT, PS8+40 PAGE /THE DATE ROUTINE NOW PRINTS EITHER ALPHANUMERIC DATES /OR STRAIGHT NUMERIC ONES IF THE USER SPECIFIES "/N". /MODIFIED BY JIM VAN ZEE, U/W DEPT. OF CHEM. 9/10/76. /ADDED V3D CODE TO PRINT DATES AFTER 1977. 4/15/77. PDATE, 0 CDF 10 SNA JMP FDATE DCA TEMP TAD DATE SNA CLA JMP FDATE DCA PRBLNK /SUPPRESS BLANKS JMS CONVTP /THEN PRINT ONE! TAD DAFLG SZA CLA JMP M0NTHS M0NS, TAD TEMP RTR RAR AND (37 JMS PRNUM 3 TAD DAFLG SNA JMP MONTHS MONS, CMA CLL RAL /0 OR -2 TAD ("/ JMS I OSWTCH TAD TEMP JMS CKYEAR /COMPARE WITH CURRENT YEAR DCA TEMP TAD I DIGIT-1 /=7777 AND (600 /GET EXTENDED DATE BITS CLL RTR RTR TAD TEMP JMS PRNUM TAD PRBLNK-3 /'JMS CONVTP' DCA PRBLNK JMP I PDATE FDATE, TAD LNCNT /SEE IF AT END OF LINE? IAC /AC=0 NOW IF YES SNA CLA /OUTPUT SPACES TO FILL DATE SLOT JMP I PDATE /NO NEED FOR SPACES AT END OF LINE TAD DAFLG /0 OR -1 TAD (12 /10 SPACES IS WHATS NEEDED JMS BLANK JMP I PDATE /LEAVE M0NTHS, JMS MOONS JMS PRNUM 3 TAD ("/ JMS I OSWTCH JMP M0NS MONTHS, TAD ("- JMS I OSWTCH JMS MOONS TAD (-15 SPA CLA JMS MOONS CLL RAL TAD (DATTAB+40 DCA PNTFLG JMS MESAG PNTFLG, 0 JMP MONS PWRTEN, -1750;-144;-12;-1 DIGIT=. MOONS, 0 TAD TEMP CLL RAL RTL RTL AND (37 JMP I MOONS PRNUM, 0 CDF 10 DCA CNT TAD I PRNUM /POSITION TO FORCE PRINTING CIA DCA XR /(OPTIONAL) TAD (TAD PWRTEN DCA DIVLPY DCA PNTFLG DCA DIGIT DIVLPY, TAD PWRTEN SNA JMP I PRNUM CLL TAD CNT SNL JMP PRTDIG DCA CNT ISZ DIGIT JMP DIVLPY PRTDIG, STA STL /XX60 AND DIGIT ISZ DIVLPY ISZ PNTFLG SZA JMP .+3 ISZ XR JMP PRBLNK TAD PRTDIG JMS CONVTP CMA JMP DIVLPY-2 PRBLNK, JMS CONVTP JMP DIVLPY-2 VOLMES, IFNDEF GERMAN < TEXT " VOLUME--"> IFDEF GERMAN < TEXT " BAND --"> PAGE /THIS IS THE (BUBBLE) SORT ROUTINE. ORIGINALLY ADDED BY /LARRY FOWLER, BCAC (4/22/75); REVISED BY JVZ (8/15/78). SORT, 0 CDF 0 TAD (6 /4 FOR NAME, 1 FOR LEN & BLK TAD INFWDS / PLUS ADDITIONAL INFO WORDS DCA XR TAD FCNT DCA CNT1 /SET FILE COUNTER TAD (4 /OFFSET FOR SYMBIONT JMP SORTX /INITIALIZE POINTERS NEXT1, TAD CNT1 /SET FILE SCAN COUNT DCA CNT2 TAD PT1 TAD XR JMP CHECK+1 /INITIALIZE SECOND POINTER /THIS ROUTINE CHECKS IF THE FILES ARE IN THE RIGHT ORDER CHECK, TAD PT2 /ADVANCE TO THE NEXT FILE DCA PT2 TAD I PT1 /CHECK IF WE HAVE AN EMPTY SZA CLA JMP NOTMT /WE DON'T TAD I PT2 SZA CLA JMP MOVE+2 /MOVE EMPTIES TO THE END CMA TAD XR JMS SETUP /KEEPING THE RIGHT SEQUENCE TAD I CK1 STL CIA TAD I CK2 /IF THERE ARE TWO IN A ROW. JMP MOVE NOTMT, TAD (4 JMS SETUP /SORTS BY DATE, NAME, OR EXTENSION CDF 10 JMS CKDATE /CHECK THE DATE FIRST JMS SWAP IAC AND SORTOP /THEN CHECK THE EXTENSION SNA CLA JMP CKNAME /X NOT SPECIFIED TAD (3 JMS SETUP TAD I CK1 STL CIA TAD I CK2 JMS SWAP IAC CKNAME, TAD (-4 /NOW CHECK THE NAME DCA CNT JMS SETUP NXTCHR, TAD I CK1 STL CIA TAD I CK2 JMS SWAP ISZ CK1 /EQUAL, KEEP CHECKING ISZ CK2 ISZ CNT /DONE? JMP NXTCHR /NOT YET NOSWAP, TAD XR /IDENTICAL, OR PROPERLY ORDERED ISZ CNT2 /WAS THE PREVIOUS FILE THE LAST JMP CHECK /NO, CHECK THE NEXT ONE TAD PT1 /ADVANCE TO THE NEXT POSITION SORTX, DCA PT1 ISZ CNT1 /LAST FILE? JMP NEXT1 /NO CDF 10 JMP I SORT /YES /THIS ROUTINE DOES THE ACTUAL SWAPPING SWAP, 0 SNA CLA /ARE THEY THE SAME JMP I SWAP /YES TAD I PT2 /NO SZA CLA /KEEP EMPTIES AT END MOVE, SNL CLA /CHECK THE ORDER JMP NOSWAP /RETURN TO THE LOOP JMS SETUP TAD XR /GET FILE ENTRY SIZE CIA DCA CNT /SET LOOP COUNTER CONT, TAD I CK1 DCA TEMP TAD I CK2 DCA I CK1 TAD TEMP DCA I CK2 ISZ CK1 ISZ CK2 ISZ CNT JMP CONT JMP NOSWAP SETUP, 0 /SET CHECK POINTERS DCA TEMP TAD TEMP /AC = OFFSET TAD PT1 DCA CK1 TAD TEMP TAD PT2 DCA CK2 JMP I SETUP /MOVE AND COMPACT THE DIRECTORY BY MAKING ALL ENTRIES /THE SAME LENGTH AND REMOVING EXTRANEOUS INFORMATION. REFRMT, 0 /THIS IS ONLY DONE ONCE TAD (4-1 DCA XR /FIRST ENTRY IS AT 4 DCA ACNT /CLEAR ACTIVE COUNTER DCA BCNT /AND BLOCKS USED DCA FCNT /ZERO NUMBER OF FILES DCA ECNT /LIKEWISE THE EMPTY SPACE MAINLP, TAD EPTR /SET UP CORE POINTER DCA XR 1 TAD I EPTR /GET NO. OF ENTRIES TAD FCNT /IN THIS SEGMENT DCA FCNT /AND ADD TO THE TOTAL TAD I XR 1 DCA FILEC /INITIALIZE THE BLOCK TAD (4 TAD EPTR /POINT TO NEXT SEGMENT DCA PTR JMS XFORM /MOVE AND TRANSFORM TAD I XR 1 SNA CLA /LAST SEGMENT? JMP I REFRMT /YES DF=0 TAD (400 TAD EPTR /NO, ADVANCE ONE DCA EPTR JMP MAINLP PT1= PTR PT2= EPTR CK1= MOIN CK2= DAFLG SORTOP= FILEC CNT1= XR 1 CNT2= XR 2 ACNT= XR 4 BCNT= XR 5 ECNT= XR 6 FCNT= XR 7 PAGE *4000 TYPE, 0 DCA GTSXBT JMS CTYPE /^O 217 DCA ECHO TAD ECHO SNA CLA JMP I TYPE JMS CTYPE /^C 203 JMP SPURGE JMS CTYPE /^P 220 JMP SPURGE+1 TAD GTSXBT JMS TTY JMP I TYPE SPURGE, CMA DCA ALTOPT JMP ABORT CTYPE, 0 TAD (200 KRS CIA TAD I CTYPE SNA CLA KSF JMP IDLE KCC TAD ("^ JMS TTY TAD I CTYPE TAD (100 JMS TTY TAD (215 JMS TTY TAD (212 JMS TTY SKP IDLE, ISZ CTYPE ISZ CTYPE JMP I CTYPE TTY, 0 TLS TSF JMP .-1 M100, SMA CLA JMP I TTY ECHO, 1 /THIS IS THE ERROR MESSAGE PRINTER ERROR, 0 AC4000 /='TYPE' DCA OSWTCH ISZ ECHO TAD M100 DCA CNT CDF 10 PLOOP, TAD I ERROR JMS GTSXBT ISZ CNT SNA JMP .+3 JMS CONVTP JMP PLOOP JMS CRLF JMP ABORT BLANK, 0 /BLANKS ROUTINE CIA DCA CRLF JMS CONVTP ISZ CRLF JMP .-2 JMP I BLANK CONVTP, 0 SZA TAD (240 AND (77 TAD (240 CDF 10 JMS I OSWTCH JMP I CONVTP GTSXBT, 0 CLL RAL TAD CNT CML RAR DCA ROTR6 TAD I ROTR6 SNL JMS ROTR6 AND (77 JMP I GTSXBT ROTR6, 0 RTR RTR RTR JMP I ROTR6 CRLF, 0 CLA CDF 10 TAD (215 JMS I OSWTCH TAD (212 JMS I OSWTCH JMP I CRLF MESAG, 0 TAD M100 DCA CNT MSGLP, TAD I MESAG JMS GTSXBT ISZ CNT SNA JMP MSGND JMS CONVTP JMP MSGLP MSGND, ISZ MESAG JMP I MESAG PAGE VERNO, TEXT "DIRECT V40B" PS8, TEXT "PS/8" OS8, TEXT "OS/8" OS12, TEXT "OS/12" OS78, TEXT "OS/78" ETOS, TEXT "E*T*O*S" MULTI8, TEXT "MULTI-8" BRANDX, TEXT "BRAND X" DS8, TEXT "DECSYSTEM-8" ILLQ, IFNDEF GERMAN < TEXT "ILLEGAL ?"> IFDEF GERMAN < TEXT "FALSCHES ?"> ILLA, IFNDEF GERMAN < TEXT "ILLEGAL *"> IFDEF GERMAN < TEXT "FALSCHER *"> EMPTYM, IFNDEF GERMAN < TEXT "<EMPTY> "> IFDEF GERMAN < TEXT "<FREI> "> FRBLM, IFNDEF GERMAN < TEXT " FREE BLOCKS"> IFDEF GERMAN < TEXT " FREIE BLOECKE"> SYSMES, TEXT " SYSTEM VERSION" BIGEQ, IFNDEF GERMAN < TEXT "EQUALS OPTION BAD"> IFDEF GERMAN < TEXT "= AUSWAHL FA PLATZ FUER DATEI"> BADIRD, IFNDEF GERMAN < TEXT "ERROR READING INPUT DIRECTORY"> IFDEF GERMAN < TEXT "VERZEICHNIS LESE-FEHLER"> NFLEIN, IFNDEF GERMAN < TEXT "DEVICE DOES NOT HAVE DIRECTORY"> IFDEF GERMAN < TEXT "GERAET HAT KEIN VERZEICHNIS"> NOTTY, IFNDEF GERMAN <TEXT "THERE IS NO HOPE-THERE IS NO TTY HANDLER IN YOUR SYSTEM"> IFDEF GERMAN <TEXT "EIN RECHNER OHNE TTY-GERAET IST MEISTENS NUTZLOS!"> IFNDEF GERMAN < DATTAB, TEXT "BAD" /PROTECTION AGAINST BAD DATES TEXT "JAN" TEXT "FEB" TEXT "MAR" TEXT "APR" TEXT "MAY" TEXT "JUN" TEXT "JUL" TEXT "AUG" TEXT "SEP" TEXT "OCT" TEXT "NOV" TEXT "DEC" > IFDEF GERMAN < DATTAB, TEXT "???" /PROTECTION AGAINST BAD DATES TEXT "JAN" TEXT "FEB" TEXT "MAR" TEXT "APR" TEXT "MAI" TEXT "JUN" TEXT "JUL" TEXT "AUG" TEXT "SEP" TEXT "OKT" TEXT "NOV" TEXT "DEZ" > CKDATE, 0 /ORGANIZE OUTPUT CHRONOLOGICALLY TAD SORTOP /DF=10 AND (420 /CHECK D AND T SZA CLA TAD INFWDS /THERE MUST BE A SYSTEM DATE CLLCIA, CLL CIA AND DATE /AND ENOUGH INFORMATION WORDS CDF 0 SNA CLA JMP I CKDATE /OTHERWISE ITS **NO DEAL** TAD SORTOP /CHECK /T AND (20 /'CML' BIT TAD CLLCIA DCA TEST1 TAD I CK1 /GET THE FIRST DATE JMS CKYEAR /TRANSFORM THE YEAR DCA TEST2 TAD I CK2 /REPEAT JMS CKYEAR TEST1, CLL CIA /COMPARE YEARS TAD TEST2 SZA JMP I CKDATE /UNEQUAL TAD TEST1 DCA TEST2 /EQUAL: CHECK MONTH, DAY TAD I CK2 AND (7770 TEST2, CLL CIA TAD I CK1 AND (7770 /REMOVE THE YEAR BITS JMP I CKDATE CKYEAR, 0 /EXTENDED DATE CHECK FOR OS/8-V3D SNA /T FIX: LEAVE UNDATED FILES ALONE JMP I CKYEAR / THANKS TO DON HARMER, GA. TECH. CDF 10 AND (7 DCA TEMP TAD DATE /COMPARE WITH THE SYSTEM DATE AND (7 CIA TAD TEMP SMA SZA CLA TAD (-10 /TOO BIG, DECREASE BY 8 TAD (106 /1970 TAD TEMP CDF 0 JMP I CKYEAR PAGE FIELD 1 *4600 $$$$$$