PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF .OP 65C02 .OR $2000 .TF /A2OSX.BOOT/BIN/NSCUTIL *-------------------------------------- .INB INC/MACROS.I .INB INC/A2OSX.I .INB INC/LIBSTR.I .INB INC/LIBTCPIP.I *-------------------------------------- ZPPTR1 .EQ ZPBIN *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 .DA CS.END-CS.START .DA 0 .DA 0 .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.LIBSTR .DA LIBSTR L.SSCANF.DATE .DA SSCANF.DATE L.MSG.READ.KO .DA MSG.READ.KO L.MSG.READ.OK1 .DA MSG.READ.OK1 L.MSG.READ.OK2 .DA MSG.READ.OK2 L.BUFFER .DA BUFFER .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBSTR >SYSCALL SYS.LoadLibYA sta hLIBSTR ldy #S.PS.hARGS lda (pPs),y bne CS.INIT.SET CS.INIT.READ jsr NSC.Select jsr NSC.Read ldx #7 lda DS1216E.DATA .1 and DS1216E.DATA,x dex bne .1 cmp #$FF bne .2 >PUSHW L.MSG.READ.KO >SYSCALL SYS.PSTROutA bra .8 .2 jsr PrintDateTime .8 lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory rts CS.INIT.SET pha >PUSHW L.BUFFER >PUSHW L.SSCANF.DATE pla >SYSCALL SYS.GetMemPtrA >PUSHYA >LIBCALL hLIBSTR,LIBSTR.SSCANF bcs .9 .9 lda #SYSMGR.ERRSYN sec rts *-------------------------------------- CS.RUN CS.DOEVENT clc rts *-------------------------------------- CS.QUIT lda hLIBSTR >SYSCALL SYS.UnloadLibA clc rts *-------------------------------------- NSC.Select php sei lda $C304 Reset DS1216E comparison register with READ A2=1 ldx #7 Read 8 bytes... .3 lda DS1216E.PATTERN,x phx ldx #8 ....of 8 bits .4 ldy #0 lsr bcc .5 iny .5 sta $C300,y Write Pattern bit in A0, with A2=0 dex bne .4 plx dex bpl .3 plp rts *-------------------------------------- NSC.Read php sei sta $CFFF sta $C00A ldx #7 .1 ldy #8 .2 lda $C304 lsr ror DS1216E.DATA,x dey bne .2 dex bpl .1 plp rts *-------------------------------------- PrintDateTime >PUSHW L.MSG.READ.OK1 >SYSCALL SYS.PSTROutA lda DS1216E.DATA+2 jsr PrintBCD lda #'/' >SYSCALL SYS.COutA lda DS1216E.DATA+1 jsr PrintBCD lda #'/' >SYSCALL SYS.COutA lda DS1216E.DATA jsr PrintBCD lda #13 >SYSCALL SYS.COutA >PUSHW L.MSG.READ.OK2 >SYSCALL SYS.PSTROutA lda DS1216E.DATA+4 bmi .3 and #$1F .3 and #$3F jsr PrintBCD lda #':' >SYSCALL SYS.COutA lda DS1216E.DATA+5 jsr PrintBCD lda #':' >SYSCALL SYS.COutA lda DS1216E.DATA+6 jsr PrintBCD lda #'.' >SYSCALL SYS.COutA lda DS1216E.DATA+7 jsr PrintBCD lda #13 >SYSCALL SYS.COutA rts *-------------------------------------- PrintBCD pha lsr lsr lsr lsr ora #$30 >SYSCALL SYS.COutA bcs .9 pla and #$0f ora #$30 >SYSCALL SYS.COutA .9 rts *-------------------------------------- CS.END LIBSTR >PSTRING "libstr.o" LIBTCPIP >PSTRING "libtcpip.o" MSG.READ.KO >PSTRING "DS1216E Not Detected.\n" MSG.READ.OK1 >PSTRING "DS1216E Detected,\nDate:" MSG.READ.OK2 >PSTRING "Time:" SSCANF.DATE >PSTRING "%d/%d/%d %d:%d:%d" BUFFER .BS 16 DS1216E.PATTERN .HS 5CA33AC55CA33AC5 Reverted 7->0 DS1216E.DATA .HS FFFFFFFFFFFFFFFF Reverted YY MM DD Day HH mm SS CS hLIBSTR .BS 1 hLIBTCPIP .BS 1 *-------------------------------------- DS.START DS.END *-------------------------------------- MAN SAVE BIN/NSCUTIL.S ASM