;PXVONPP̓߂
;iNRUTA邤NRUUlj
;QOPWNHPrg1
MAIN	START
	LAD GR2,YEAR
	CALL DAYOFFST
	ST GR0,ALLDAYS
	RET
;YEAR 	DC 1971
;MONTH 	DC 2
;DAY	DC 1
YEAR 	DC 2018
MONTH 	DC 10
DAY	DC 20
ALLDAYS	DS 1
	END
;--------------
DAYOFFST START
	RPUSH
	LD GR5,0,GR2 ; gr5: year
	LD GR3,1,GR2 ; gr3: month
	LD GR1,2,GR2 ; gr1: day
	SUBL GR1,=1 ; gr1 is a day counter
	LAD GR4,ACCMDAYS,GR3 ; a C
	ADDL GR1,-1,GR4 ; PP̓iNj߂
	CPA GR3,=3 ; Rȍ~̎邤Nl
	JMI SKIP
	LD GR2,GR5
	CALL LEAPYEAR
	ADDL GR1,GR0
SKIP	LD GR2,=1970 ; PXVONiN[PjN܂ł̊ԁi
LOOP 	CPA GR2,GR5 ; NPXVOjAPN̓Z
	JZE BREAK ; b J
	CALL LEAPYEAR
	ADDL GR0,=365
	ADDL GR1,GR0
	ADDA GR2,=1
	JUMP LOOP
BREAK	 LD GR0,GR1
EXIT	RPOP
	RET
; ACCMDAYŚAN̊ePP̓(PP͂Oځj
ACCMDAYS DC 0, 31,59,90,120,151,181
	DC 212,243,273,304,334
	END
;--------------
LEAPYEAR START
	RPUSH
	SUBA GR0,GR0
	LD GR3,GR2
	AND GR3,=3
	JNZ FIN ; c C
	LD GR3,=100
	CALL DIVISIBL
	XOR GR0, =1; d@J
	JNZ FIN
	LD GR3,=400
	CALL DIVISIBL
FIN 	RPOP
	RET
	END
;-------------
;GR2ɐݒ肳ꂽlAGR3ɐݒ肳ꂽÐl
;؂ꂽꍇ͂PA؂Ȃꍇ͂OA
;GR0ɐݒ肵ČĂяoɂǂB
;\[XR[h͏ȗꂽ̂Ŏ삵B
;Z̘AŊZsB
DIVISIBL 	START
	LD GR4,GR2
	LD GR5,GR3
	LAD GR0,-1
	LAD GR6,0
	;----------------
LOOP	SUBL GR4,GR5
	JZE FIN1
	JMI FIN0
	LAD GR6,1,GR6
	JUMP LOOP
FIN1 	LAD GR0,1
	RET
FIN0	LAD GR0,0
	RET
	END
;-----------------------------
