*************************************************************************
*tzset：環境時間変数から外部時間変数を設定する				*
*	void		tzset(void);					*
*	int		daylight;					*
*	time_t		timezone;					*
*	char		*tzname[2];					*
*************************************************************************
* Copyright 1990 SHARP/Hudson		(1990/05/05)
* Arranged for __main3.o 1993 AIG-SOFT	(1993/04/24)

	xdef	_tzset

	xref	_getenv

	include	time.mac

	.text
_tzset:
	pea	TZMES
	jsr	_getenv
	addq.l	#4,sp
	tst.l	d0
	bne	a0ok
	move.l	#deftz,d0
a0ok:
	move.l	d0,a0
	move.l	#_tzname,a2
	move.l	(a2)+,a1
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+		. タイムゾーン名
	move.b	(a0)+,(a1)+
	clr.b	(a1)+
	bsr	atoix
	move.l	d0,_timezone		. グリニッジ標準時との時差（秒）
	move.l	(a2),a1
	clr.l	_daylight
	tst.b	(a0)			. 夏時間設定？
	beq	tzset_nex1
	move.b	(a0)+,(a1)+
	move.b	(a0)+,(a1)+		. 夏時間名
	move.b	(a0)+,(a1)+
	bsr	atoix
	tst.l	d0
	bne	sumok
	move.l	#1*60*60,d0
sumok:
	move.l	d0,_daylight
tzset_nex1:
	clr.b	(a1)
	rts

*****************************************
*	文字時間を整数秒に変換		*
*****************************************

atoix:
	clr.l	d2			. フラグ
	clr.l	d0
	move.b	(a0)+,d1
	cmpi.b	#'-',d1			. 負号検査
	bne	atoix_nex1
	moveq.l	#1,d2
	move.b	(a0)+,d1

atoix_nex1:
	cmpi.b	#'0',d1			. 数値検査
	bcs	atoix_exit
	cmpi.b	#'9'+1,d1
	bcc	atoix_exit
	andi.w	#$000f,d1
	move.w	d1,d0
	move.b	(a0)+,d1
	cmpi.b	#'0',d1			. 数値検査
	bcs	atoix_exit
	cmpi.b	#'9'+1,d1
	bcc	atoix_exit
	andi.w	#$000f,d1
	mulu	#10,d0
	add.w	d1,d0			. ｄ０＝時差時間絶対値
	tst.b	(a0)+
atoix_exit:
	mulu	#60*60,d0		. 時間＝＝＞秒
	tst.w	d2			. '−' ？
	beq	atoix_nex2
	neg.l	d0

atoix_nex2:
	subq.l	#1,a0
	rts

	.even

	xdef	_daylight
	xdef	_timezone
	xdef	_tzname
	xdef	_tzstn
	xdef	_tzdtn

_tzname:	.dc.l	_tzstn
		.dc.l	_tzdtn
_tzstn:		.dc.b	'JST',0		. パシフィック・タイムゾーン
_tzdtn:		.dc.b	0,0,0,0		. 夏時間調整を行う
_daylight:	.dc.l	0		. 夏時間採用の有無
_timezone:	.dc.l	-9*60*60	. グリニッジ時間との誤差

TZMES:		.dc.b	'TZ',0
deftz:		.dc.b	'JST-9',0

	.even
