File DIRE7A.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/ OS/8 DIRECT V7A
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/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, ADDING THE "/A" OPTION T AND THE "/H"
/OPTION K INFORMATION USED BY DELUDED THE POSSIBILITY OF USING DIFFERENT DEVICE CODES FOR
/THE TERMINAL.                                                4/22/75
/
/DR. THOMAS W. MCINTYRE OF THE WEST VIRGINIA UNIVERSITY MEDICAL CENTER
/MORGANTOWNE COLUMN ORDERING ROUTINUMN OUTPUT IS ORDERED VEZONTALLY.
/                                     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

/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 XR=10 /OTH0 CNT=21 INFPTR=22 LNCNT=25 EPTR=26 DA31 FILEC=32 OSWTCH=3 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=11VC^10+6001 KCC= INDVC^104 KRB= KCC KRS TSF= OVC^10+6002 TPC= OUTDVC^
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 CNTXBT TAD (-"*!7700 SZ TAD CNT SZA TAD (6AD PTR JMS GTSXBT SZ 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 CMNMS 200 1 IFNDEF CRT <DE IFDEF CRT <CRT> /CRT0 AO2, 7201 JMP IDBLV 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 S /CHECK MORE CAREFULLY!ZA CLA /SKIP IF JUST DUEP GOING TO DUMP ONE TONT 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 TABY 5 DCA BLCKN TAD ( BUFAD DCA OCPTR JMP!0&(2 /LOCATE COLUMN COD 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 CDFO CHECK FOR CMA CLL ECTORY SNL TAD D7700DIRECTORY IS BAD TADEGMENT 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 ISUB TAD (5200 DCA I DCA TEMP TAD (5200AD MOIN TAD (4 DCA M 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 RR+40 CLOERR, JMS ERR2
/ THIS IS THE ** S DIRECTORY PATTERN MATCHT 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 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 S A WILD CARD TAD ("*-IP IF NOT JMP WILDQ /YS CHAR TAD ("?&77 /RESE 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 THECHECK WHOLE GROUP MEXN THIS INPUT TAD INFWD TAD PTR /BLOCK COUNT 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 THECK /NUMBERS AND EXPANDIY SORTING. XFORM, 0 JMS MOVE1 /MOVE THE F 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 OPTJMP I GOT1 TAD PFLAGCLA JMP .+5 ISZ ACNT TAD TEMP TAD BCNT /AN 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 PNBLKJMP PNLOOP-2 TAD PTR P ADDITIONAL INFORMATIONCE ISZ PNBLK /COUNT NU-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 NO. (MAYBE) JMP NODATE /F TAD TEMP CIA JMS PRNUM /PRINT LENGTH TAD INFWDS SNA CLA JMP NODATE CDF 0 TAD I PTR JMS PDATE /PRINT DATE NODATE, JMS EOLIN JMP I GOT1 PNBLK, 0 TAD OPT1 /B RTL SNL CLA JMP SKPBLK JMS CONVTP TAD EPTR DCA XR JMS OPRNT SKPBLK, TAD OPT1 /F AND G100 SNA CLA ISZ PNBLK JMP I PNBLK OPRNT, 0 CDF 0 TAD I XR 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 *.!0&(2 /LOCATE COLUMN SPACING
/ PROCESS THE EMPTIE4 /POINT TO NEGATIVE SITR DCA EPTR TAD I EP TAD OPT1 /CHECK /E ANISTEM 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 INFWDSNUMBER OF SPACES=5*(INFWSZA JMS BLANK EMSG, JMS PNBLK /PRINT BLOCK 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 ( TAD (232 CDF 10 J2 PAGE
/THIS CODE AND WHEN IT IS 2 OR MOREIN 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 NT CLL IAC SNA CLA O, SKIP CODE FOR SINGLE PASS INDICATOR FLAG SME 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 CLA IAC /*** NEWLINE IF 1 COL *** AW 19-JUN-79 TAD ALNCNT SNA CLA JMS CRLF /IF ONLY 1 COL TAD ECNT /AND SPACE REMAINING CIA JMS PRNUM 4 /FORJMS MESAG FRBLM+40 J- CONTROLS PAGING C200,ER. 5H SZA CLA /WAS 'M 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 /INIT SKIP FOR EACH RODSK LOOKUP DCA COLCTR COLCTR, 0 COLCNT, 0 JMP I DSK FILESM, TEXT " FILES IN " /SYSTEM TABLE - FIRST 3 ARE NON-STANDARD ZBLOCK 4 BRANDX+40 MULTI8+40 ETOS+40 OS78+40 DS8+40 OS12+40 OS8+40 POINT, PS8+40 PAGE
/THE DATE ROUTIHANUMERIC DATES /OR STRE USER SPECIFIES "/N". , U/W DEPT. OF CHEM. 9/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 C DCA PNTFLG JMS MESAG PWRTEN, -1750;-144;-12 TAD TEMP CLL RAL P 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 DIG DCA CNT ISZ DIGI, STA STL /XX60 AND DPNTFLG SZA JMP .+3 AD PRTDIG JMS CONVTP CMA JMP DIVLPY-2 PRBLNK, JMS CONVTP JMP DIVLPY-2 VOLMES, TEXT " VOLUME--" 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 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 CKDAT JMS SWAP IAC AND STENSION SNA CLA JMP TAD (3 JMS SETUP T 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/IDENTICAL, OR PROPERLY THE PREVIOUS FILE THE LAK THE NEXT ONE TAD PT1OSITION 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 CMA DCA XR /FIRST ENTRY IS AT 0 DCA ACNT /CLEAR ACTIVE COUNTER DCA BCNT /AND BLOCKS USED DCA FCNT /ZERO NUMBER OF FILES DCA ECNT /LIKEWISE THE EMPTY SPACE MAINLP, TAD EPTRDCA XR 1 TAD I EPTR /GFCNT /IN THIS SEGMENT TOTAL TAD I XR 1 DCBLOCK 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 OSW0 DCA CNT CDF 10 GTSXBT ISZ CNT SNA JMP PLOOP JMS CRLF /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 SNL JMS ROTR6 ANDOTR6, 0 RTR RTR RT 0 CLA CDF 10 TAD D (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 V7A" 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, TEXT "ILLEGAL ?" ILLA, TEXT "ILLEGAL *" EMPTYM, TEXT "<EMPTY> " BLOCKM, TEXT " BLOCKS - " FRBLM, TEXT " FREE BLOCKS" SYSMES, TEXT " SYSTEM VERSION" BIGEQ, TEXT "EQUALS OPTION BAD" BADDIR, TEXT "BAD INPUT DIRECTORY" OUERR, TEXT "ERROR WRITING FILE" CLERR, TEXT "ERROR CLOSING FILE" SPRBLM, TEXT "NO ROOM FOR OUTPUT FILE" BADIRD, TEXT "ERROR READING INPUT DIRECTORY" NFLEIN, TEXT "DEVICE DOES NOT HAVE DIRECTORY" NOTTY, TEXT "THERE IS NO HOPE-THERE IS NO TTY:" DATTAB, TEXT "BAD" /PROTECTION AGAINST BAD DATES TEXT "JAN" TEXT " "APR" TEXT "MAY" TETEXT "AUG" TEXT "SEP"" TEXT "DEC"
CKDATE,ONOLOGICALLY 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 ITSOP /CHECK /T AND (20 DCA TEST1 TAD I CK1MS CKYEAR /TRANSFORM THEI 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 $



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search