NEW
  AUTO 3,1
*--------------------------------------
* Driver For DS1216E
*--------------------------------------
* we can safely use $200 (used by TCLK)
*--------------------------------------
DS1216E.DATA	.EQ $200				Reverted YY MM DD Day HH mm SS CS
*--------------------------------------
NCLK.START		lda RDCXROM
				
				php
				sei						NO IRQ !!!

				sta SETCXROM

				sta $C300
				lda $C00B               Workaround for Ultrawarp bug
				
				lda $C304				Reset DS1216E comparison register with READ A2=1

				ldx #8					Read 8 bytes...

.1				ldy #8					....of 8 bits

				lda DS1216E.PATTERN-1,x

.2				lsr
				bcs .3
				
				bit $C300
				bra .30
				
.3				bit $C301				Write Pattern bit in A0, with A2=0
				
.30				dey
				bne .2

				dex
				bne .1

				ldx #8

.4				ldy #8

.5				pha
				lda $C304				Read Byte...

				lsr
				pla
				ror

				dey
				bne .5

				pha
				lsr
				lsr
				lsr
				lsr
				tay
				pla
				and #$0F

				clc

				.HS	2C					Bit Absolute to skip adc #$0A

.6				adc #$0A
				dey
				bpl .6

				sta DS1216E.DATA-1,x
				dex
				bne .4

				pha						DS1216E.DATA

				lda	DS1216E.DATA+1		Get MM
				asl
				asl
				asl
				asl
				asl
				ora	DS1216E.DATA+2		Get DD
				sta	DATELO

*				lda	DS1216E.DATA		Get YY
				
				pla
				rol
				sta	DATELO+1

				lda	DS1216E.DATA+5		Get mm
				sta	TIMELO

				lda	DS1216E.DATA+4		Get HH
				sta	TIMELO+1

				plp
				bmi .8

				sta CLRCXROM

.8				rts
*--------------------------------------
DS1216E.PATTERN	.HS	5CA33AC55CA33AC5	Reverted 7->0
*--------------------------------------
				.LIST ON
NCLK.LEN		.EQ *-NCLK.START
				.LIST OFF
*--------------------------------------
* CONTROL SECTION :
*--------------------------------------
				.DO NCLK.LEN>125
				ERROR:NCLK Driver too big
				.FIN
*--------------------------------------
MAN
SAVE usr/src/prodos.fx/prodos.s.nclk
LOAD usr/src/prodos.fx/prodos.s
ASM
