File: NUDATE.PA of Tape: Various/System-Tapes/s5
(Source file text) 

/TWENTIETH CENTURY DATE.
/	W.V.D.MARK
/	HPF-ETHZ
/	8093 ZUERICH

	*200
START,	JMS I	(7607
	0201	/READ TWO PAGES
	1000	/IN LOC 1000
	  55	/FROM SAVE DATE BLOCK
	HLT
	TAD	(1177
	DCA	10
	TAD	(577
	DCA	11
	TAD	(-200
	DCA	20
	TAD I	11
	DCA I	10	/TRANSFER NEW DATE PROG
	ISZ	20	/OVER OLD SAVE DATE BLOCK
	JMP	.-3
	JMS I	(7607
	4200	/WRITE 2 PAGES
	1000
	  55	/BACK ON SAVE DATE BLOCK
	HLT
	JMP I	(7605

	PAGE
	TEMP=	21
	XR4=	14
	INAX=	13
	POINTR=	41
	DRSTRT=	33
	DMESAG=	100
	INDIR=	40
	KEYWRD=	25
	NAME=	34
	K77=	165
	KM240=	175
	K7=	120
	K7605=	53

	*600
DATE,	JMS	ZOCT	/CONVERT DAY OF MONTH
	-40		/.LT. 32
	CLL RTL
	RAL
	DCA	TEMP	/FORMAT: 0--34---89-11
			/      MONTH/ DAY /YEAR
	JMS I	KEYWRD	/USE ROUTINE FOR FILENAMES
	JMP	ERR	/NO ALPHA INPUT
	TAD	(MONTBL-1
	DCA	XR4
	TAD	NAME+1
	AND	K77
	SZA CLA
	JMP	ERR	/ONLY 3 LETTERS ALLOWED
NMON,	TAD I	XR4	/GET ITEM FROM MONTH LIST
	SNA
	JMP	ERR	/0 IS END: MEANS NONE FOUND
	CIA
	TAD	NAME	/COMPARE TO SUM OF 3 LETTERS
	TAD	NAME+1	/FIRST AND THIRD LETTERS NOT UNIQUE
	SZA CLA		/CHECK!
	JMP	NMON	/TRY ANOTHER
	TAD	XR4	/OK: POINTER POSITION IS MONTH
	TAD	(1-MONTBL
	CLL RAR
	RTR
	RTR
	TAD	TEMP
	DCA	TEMP	/ADD INTO DATE-WORD
	DCA	MMINUS	/SEPARATOR=0 IS EOL
	JMS	ZOCT	/GET YEAR
	-144		/.LT. 100
	TAD	(-106	/SUBTRACT 70
	SPA		/.GE. 70?
	JMP	ERR	/NO: BAD YEAR
	DCA	POINTR
	TAD	POINTR
	AND	K7	/FISH OUT MOD.8 PART
	TAD	TEMP	/FINAL DATE WORD
	CDF 10
	DCA I	(7666	/INTO RESIDENT PART
	CDF 0
	TAD	POINTR
	AND	(30	/GET OFFSET PART (2 BIT)
	CLL RTL		/SAVE INTO BATCH WORD
	RTL		/BITS 3 AND 4
	DCA	POINTR
	TAD	(7177
	AND I	(7777	/DON'T TOUCH OTHER BITS
	TAD	POINTR
	DCA I	(7777
	TSF
	JMP	.-1
	JMP I	K7605	/BACK TO KM!

ERR,	CLA CLL
	TAD	K7605
	DCA	DRSTRT
	JMS I	DMESAG
	TEXT "BAD DATE"

ZOCT,	0		/CONVERSION BCD DIGITS TO OCTAL
	DCA	INDIR	/TEMP FOR BUILDING OCTAL
	DCA	ZSWI	/SWITCH FOR 0 INPUT
MORE,	TAD I	INAX	/FROM INPUT BUFFER
	DCA	POINTR
	TAD	POINTR
	TAD	KM240	/IGNORE SPACES
	SNA CLA
	JMP	MORE
	TAD	POINTR
	TAD	MMINUS	/LOOK FOR SEPARATOR
	SNA CLA
	JMP	SEP	/OK: GOT EITHER "-" OR EOL
	TAD	POINTR
	TAD	(-"9-1
	CLL
	TAD	("9+1-"0
	SNL
	JMP	ERR	/NOT IN DIGIT RANGE
	SZA
	ISZ	ZSWI	/INC ZSWI IF NON-ZERO
	DCA	POINTR
	TAD	INDIR
	CLL RTL
	TAD	INDIR
	RAL
	TAD	POINTR	/BCD TO OCT
	DCA	INDIR
	JMP	MORE	/GET MORE DIGITS

MMINUS,	-"-
ZSWI,	0

SEP,	CLA CLL
	TAD	INDIR
	TAD I	ZOCT	/GET LIMIT
	CLA SZL
	JMP	ERR	/NUMBER TO BIG
	TAD	ZSWI
	SNA CLA
	JMP	ERR	/ZERO INPUT
	ISZ	ZOCT
	TAD	INDIR
	JMP I	ZOCT

MONTBL,	3001	/JAN
	1005	/FEB
	3701	/MAR
	2320	/APR
	4601	/MAY   GERMAN:	2601	/MAI
	3025	/JUN
	2625	/JUL
	1025	/AUG
	4305	/SEP
	4303	/OCT   GERMAN:	4313	/OKT
	4417	/NOV
	0705	/DEC   GERMAN:	3605	/DEZ
	0000	/END OF LIST

	PAGE

	$$$