NEW
  AUTO 3,1
*--------------------------------------
CCLK.START		.PH CLK

CCLK.START1		>SHORTMX				8 bit mode.
				lda IO.GS.STATEREG		state register.
				sta savestate			save for restore after tool call.
				and #$CF	   			clear the read/write aux memory bits.
				sta IO.GS.STATEREG		make it real
				clc		  				set e = 0 to set native mode
				xce
				>LONGMX					16 bit mode.
				lda ##$0000	   			zero out result space.
				pha		  				push 4 words for hex time result
				pha
				pha
				pha
				>IIGS ReadTimeHex
				>SHORTM					back to 8 bit to get results from stack
				lda savestate			restore state register
				sta IO.GS.STATEREG
				pla						pull off seconds and ignore
				pla
				sta GP.TIME	   			minutes
				pla
				sta GP.TIME+1	   		hours
				pla		  				year
.1  			cmp #100				out of range?
				bcc .2					no, go ahead and store
				sbc #$64	   			else put back in range.
				bra .1					try again

.2  			sta GP.DATE+1			year
				pla
				inc						increment day for Prodos 8 format.
				sta GP.DATE	   			day
				pla		  				month
				inc						increment month for Prodos 8 format.
				asl						shift month as it sits in between
				asl						the year and day values.
				asl
				asl
				asl
				ora GP.DATE				put all but the top bit of month
				sta GP.DATE	   			value in the day byte.
				rol GP.DATE+1	   		put hi bit of month in low bit of year
				pla		  				pull of unused byte
				pla		  				pull off day of week. stack now clean.
				sec		  				go back to emulation mode
				xce		  				to continue with Prodos 8
				rts
savestate 		.HS 00					state of the state register
*--------------------------------------
				.EP
*--------------------------------------
*				.LIST ON
CCLK.LEN		.EQ *-CCLK.START
				.LIST OFF
*--------------------------------------
MAN
SAVE usr/src/prodos.fx/prodos.s.cclk
LOAD usr/src/prodos.fx/prodos.s
ASM
