Mercurial > hg > Members > kono > nitros9-code
view level1/modules/clock2_disto4.asm @ 2730:6bd6e348665d
Working on cloned default branch, pulled 2012/11/03
user: gheskett@wdtv.com
branch 'default'
changed ChangeLog
changed ReadMe
changed defs/rbf.d
changed defs/rbsuper.d
changed defs/scsi.d
changed level1/atari/cmds/fuji.asm
changed level1/coco/modules/makefile
changed level1/modules/boot_scsi.asm
changed level1/modules/superdesc.asm
changed level2/coco3/bootfiles/makefile
changed level2/coco3/modules/makefile
changed level2/coco3_6309/bootfiles/makefile
changed level2/modules/joydrv_6551L.asm
changed rules.mak
author | gheskett@wdtv.com |
---|---|
date | Sat, 10 Nov 2012 11:55:48 -0500 |
parents | f389c6bca482 |
children |
line wrap: on
line source
******************************************************************** * Clock2 - Disto 4-N-1 RTC Driver * * $Id$ * * Edt/Rev YYYY/MM/DD Modified by * Comment * ------------------------------------------------------------------ * 1 2004/08/18 Boisy G. Pitre * Separated clock2 modules for source clarity. nam Clock2 ttl Disto 4-N-1 RTC Driver ifp1 use defsfile endc tylg set Sbrtn+Objct atrv set ReEnt+rev rev set $00 edition set 1 RTC.Base equ $FF50 Base address of clock mod eom,name,tylg,atrv,JmpTable,RTC.Base name fcs "Clock2" fcb edition IFNE MPIFlag SlotSlct fcb MPI.Slot-1 Slot constant for MPI select code ENDC JmpTable lbra Init bra GetTime nop lbra SetTime GetTime equ * IFNE MPIFlag pshs cc Save old interrupt status and mask IRQs orcc #IntMasks ldb >MPI.Slct Save currently selected MPak slot on stack pshs b andb #$F0 orb >SlotSlct,pcr Select MPak slot for clock stb >MPI.Slct ENDC ldx M$Mem,pcr ldy #D.Time Start with seconds ldb #11 bsr GetVal Get Year bsr GetVal Get Month bsr GetVal Get Day lda #3 Mask tens digit of hour to remove AM/PM bit bsr GetVal1 Get Hour bsr GetVal Get Minute bsr GetVal Get Second IFNE MPIFlag puls b Restore saved "currently" selected MPak slot stb >MPI.Slct puls cc,pc Restore previous IRQ status ELSE rts No MPI, don't need to mess with slot, CC ENDC GetVal lda #$0f Mask to apply to tens digit GetVal1 stb 1,x decb anda ,x read ones digit from clock pshs b save b ldb #10 mul multiply by 10 to get value stb ,y Add to ones digit puls b stb 1,x decb lda ,x read tens digit from clock and mask it anda #$0f adda ,y sta ,y+ rts SetTime pshs cc orcc #IntMasks IFNE MPIFlag ldb >MPI.Slct Save currently selected MPak slot pshs b andb #$F0 orb >SlotSlct,pcr Get slot to select stb >MPI.Slct Select MPak slot for clock ENDC ldy #D.Time+6 ldx M$Mem,pcr clrb bsr SetVal Set Second bsr SetVal Set Minute bsr SetVal Set Hour bsr SetVal Set Day bsr SetVal Set Month bsr SetVal Set Year IFNE MPIFlag puls b Restore old MPAK slot stb >MPI.Slct ENDC puls cc clrb No error rts SetVal clr ,-s Create variable for tens digit lda ,-y Get current value DvLoop suba #10 Get Tens digit on stack, ones digit in A bcs DvDone inc ,s bra DvLoop DvDone adda #10 stb 1,x Set Clock address incb sta ,x Store ones digit stb 1,x incb puls a sta ,x Store tens digit rts Init * Disto 4-N-1 RTC specific initialization ldx M$Mem,pcr ldd #$010F Set mode for RTC chip stb 1,x sta ,x ldd #$0504 sta ,x stb ,x rts emod eom equ * end