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 php sei NO IRQ !!! lda RDC3ROM because no IRQ handler at $C3FA... php * sta CLRC8ROM Make cards release $C8xx space sta SETC3ROM ... after this sta $C300 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 CLRC3ROM .8 plp 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