File: DIR50.PA of Disk: V50/Source/Source-Listing-PAL-1
(Source file text) 

/OS/8 DIRECT V50X FOR KBM V50
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 BY DIGITAL EQUIPMENT CORPORATION
/		 AND 1979 BY DATAPLAN GMBH
/		 AND 2015 W. VAN DER MARK
/
/
/
/
/
/
/
/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-8.
/HE ALSO INCLUDED THE POSSIBILITY OF USING DIFFERENT DEVICE CODES FOR
/THE TERMINAL.                                                4/22/75
/
/DR. THOMAS W. MCINTYRE OF THE WEST VIRGINIA UNIVERSITY MEDICAL CENTER
/MORGANTOWN, WEST VIRGINIA ADDED THE COLUMN ORDERING ROUTINE SO THAT
/MULTIPLE COLUMN OUTPUT IS ORDERED VERTICALLY INSTEAD OF HORIZONTALLY.
/                                                             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
/



















/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

	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>

















DIRECT=3600
/DIRECTORY DESCRIPTION
NOPUNCH
	*DIRECT
DIRBUF,	0		/ZBLOCK 2400
DIRSTR,	0
DIRNXT,	0
	0
DIRADD,	0
	0
DIRFIL,	0
	*DIRECT+2400	/5*400 BLOCKS
DIRHDR,	0427
	1203
HDRFLG,	0
HDRLEN,	0
HDRZEA,	0
HDRSQO,	0
HDRSQM,	0
HDRSYS,	0
HDRSTR,	7
HDRDID,	0
	*DIRECT+2476	
HDRZ6,	0 /ZBLOCK 6
HDRUDV,	0
HDRUSA,	ZBLOCK 4
HDRBLK,	/ZBLOCK 73
HDRVOL,	0
HDRSID,	0
HDRVER,	0
HDRREL,	0
HDR10,	0
HDR11,	0
HDRDAT,	1234
HDRBAT,	0600
	*DIRECT+2600
HDRLBL,	0
ENPUNCH

	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,	DIRBUF
	1
	JMP INDERR

	CDF 0
	TAD I DIRTY	/CODE TO CHECK FOR
	CMA CLL
	TAD I (DIRNXT	/3602 /A LEGAL DIRECTORY
	SNL
	TAD D7700
	SZL CLA
	JMP BIDIR	/DIRECTORY IS BAD

	TAD DIRTY	/POINT TO FIRST SEGMENT
	DCA EPTR
	TAD I (DIRADD	/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
	CDF 0
	TAD I (7777
	JMS I (SETDAT
	TAD DATE
	JMS PDATE	/PRINT THE CURRENT DATE
	JMS CRLF
	JMS CRLF
	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


	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 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
	*.&(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

HEADPT,	0
	CDF 0
	TAD I (HDRVOL	/6304
	DCA TEMP
	DCA I (HDRVOL	/6304
	TAD (HDRUSA-1	/6300-1
	JMS PRINT
	CDF 10
	JMS MESAG
	VOLMES+40
	TAD TEMP
	JMS PRNUM
	JMS CRLF
	TAD (HDRLBL-1	/6400-1
	JMS PRINT
	ISZ I (HDRSYS	/6207 /DOES THE DEVICE HAVE A SYSTEM?
	JMP HDEND	/NOPE
	JMS CRLF
	JMS MESAG
	SYSMES+40
	CDF 0
	TAD I (HDRSID	/CHECKSYSTEM I.D.
	CIA 
	JMS PRNUM
	JMS MESAG
	VERMES+40
	CDF 0
	TAD I (HDRVER
	JMS PRNUM
	CDF 0
	TAD I (HDRREL
	JMS CONVTP
HDEND,	JMS CRLF
	JMS MESAG
	HDRINI+40
	CDF 0
	TAD I (HDRBAT
	JMS I (SETDAT
	CDF 0
	TAD I (HDRDAT
	JMS PDATE
	CDF 0
	TAD I (HDRDID
	SZA
	JMS I (DIRDAT
	JMS CRLF
	JMS CRLF
	JMP I HEADPT


	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

DIRDAT,	0
	DCA DSK
	TAD DSK
	RTL
	RTL
	JMS I (SETDAT
	JMS MESAG
	DIRMSG+40
	TAD DSK
	TAD (3662	/1970
	JMS I (PRNUM
	JMP I DIRDAT
DIRMSG,	TEXT " DIRECTORY DATE: "
	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 TEMP
	JMS PRNUM
	3
	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,	TEXT "  VOLUME-"
SYSMES,	TEXT "SYSTEM TYPE"

	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 CRLF
	TAD I CRLF
	SNL
	BSW
	AND (77
	JMP I GTSXBT

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

WRTERR,	JMS ERROR
	OUERR+40

CLOERR,	JMS ERROR
	CLERR+40

	PAGE












VERNO,	TEXT "DIRECT V50X"
ILLQ,	TEXT "ILLEGAL ?"
ILLA,	TEXT "ILLEGAL *"
EMPTYM,	TEXT "<EMPTY>  "
FRBLM,	TEXT " FREE BLOCKS"
VERMES,	TEXT "  VERSION "
BIGEQ,	TEXT "EQUALS OPTION BAD"
BADDIR,	TEXT "BAD DIRECTORY"
OUERR,	TEXT "ERROR WRITING FILE"
CLERR,	TEXT "ERROR CLOSING FILE"
SPRBLM,	TEXT "NO ROOM FOR OUTPUT"
BADIRD,	TEXT "ERROR READING DIRECTORY"
NFLEIN,	TEXT "NO DIR-DEVICE"
NOTTY,	TEXT "NO TTY HANDLER"
FILESM,	TEXT " FILES IN "
BLOCKM,	TEXT " BLOCKS - "
HDRINI,	TEXT "INITIALIZED: "

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"
	



















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 0
	AND (7
	DCA TEMP
	CDF 10
	TAD DATE	/COMPARE WITH THE SYSTEM DATE
	AND (7
	CIA
	TAD TEMP
	SMA SZA CLA
	TAD (-10	/TOO BIG, DECREASE BY 8
	TAD (106-144	/70-100
	TAD EXTDAT
	TAD TEMP
	SPA SNA
	TAD (144	/100
	CDF 0
	JMP I CKYEAR

SETDAT,	0
	CLL RTR
	RTR
	AND (70		/GET EXTENDED DATE BITS
	DCA EXTDAT
	CDF 10
	JMP I SETDAT
EXTDAT,	0

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

HEADER,	0
	CDF 0
	ISZ I (HDRFLG	/6202
	JMP I HEADER
	CDF 10
	TAD OPT1
	AND (20		/CHECK THE HEADER OPTION
	SZA CLA		/WAS SNA CLA, FOR ALWAYS EXCEPT
	JMS HEADPT
	CDF 0
	TAD I (HDRDID
	SNA
	JMP I HEADER
	AND (70		/GET EXTENDED DATE BITS
	DCA EXTDAT
	JMP I HEADER

	PAGE
	FIELD 1
	*4600
	$$$$$$