diff level1/modules/clock2_dw.asm @ 2724:05b648103e78 lwtools-port

Renamed dw3.sb to dwio.sb and rbdw3 to rbdw
author Boisy Pitre <boisy.pitre@nuance.com>
date Mon, 30 Jul 2012 19:35:05 -0500
parents level1/modules/clock2_dw3.asm@482a547d5155
children 28ed72477814
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/level1/modules/clock2_dw.asm	Mon Jul 30 19:35:05 2012 -0500
@@ -0,0 +1,123 @@
+********************************************************************
+* Clock2 - DriveWire 3 RTC Driver
+*
+* $Id$
+*
+* Edt/Rev  YYYY/MM/DD  Modified by
+* Comment
+* ------------------------------------------------------------------
+*   1      2004/08/18  Boisy G. Pitre
+* Separated clock2 modules for source clarity.
+*
+*   2      2010/01/02  Boisy G. Pitre
+* Saved some bytes by optimizing
+
+          nam       Clock2
+          ttl       DriveWire 3 RTC Driver
+
+          ifp1            
+          use       defsfile  
+          use       drivewire.d  
+          endc            
+
+tylg      set       Sbrtn+Objct
+atrv      set       ReEnt+rev
+rev       set       $00
+edition   set       2
+
+
+RTC.Base  equ       $0000     
+
+          mod       eom,name,tylg,atrv,JmpTable,RTC.Base
+
+name      fcs       "Clock2"  
+          fcb       edition
+
+subname   fcs       "dwio"
+
+* Three Entry Points:
+*   - Init
+*   - GetTime
+*   - SetTIme
+JmpTable                 
+          bra       Init
+          nop
+          bra       GetTime   	RTC Get Time
+          nop
+
+SetTime   
+          IFGT      Level-1
+          lda       <D.DWSrvID
+          ELSE
+          lda       >D.DWSrvID
+          ENDC
+          cmpa      #128
+          bne       leave
+          pshs      u,y,x,d
+          IFGT      Level-1
+          ldu       <D.DWSubAddr
+          ELSE
+          ldu       >D.DWSubAddr
+          ENDC
+          beq       UpdLeave      in case we failed to link it, just exit
+          lda       #OP_SETTIME
+          pshs      a
+          ldy       #$0001
+          leax      ,s
+          jsr       DW$Write,u
+          puls      a
+          ldx       #D.Year
+          ldy       #$0006
+          jsr       DW$Write,u
+          bra       UpdLeave
+
+GetTime 
+          lda       #OP_TIME        Time packet
+          pshs      u,y,x,d
+          IFGT      Level-1
+          ldu       <D.DWSubAddr
+          ELSE
+          ldu       >D.DWSubAddr
+          ENDC
+          beq       UpdLeave      in case we failed to link it, just exit
+          leax      ,s
+          ldy       #$0001
+          jsr       DW$Write,u
+          ldx       #D.Year
+          ldy       #$0006
+          jsr       DW$Read,u
+UpdLeave  puls      d,x,y,u,pc
+
+
+Init     
+* Check if subroutine already linked
+          IFGT      Level-1
+          ldx       <D.DWSubAddr
+          ELSE
+          ldx       >D.DWSubAddr
+          ENDC
+          bne       leave
+          IFGT      Level-1
+          ldx       <D.Proc
+          pshs      x
+          ldx       <D.SysPrc
+          stx       <D.Proc
+          ENDC
+          leax      subname,pcr
+          clra
+          os9       F$Link
+          IFGT      Level-1
+          puls      x
+          stx       <D.Proc
+          bcs       leave
+          sty       <D.DWSubAddr
+          ELSE
+          bcs       leave
+          sty       >D.DWSubAddr
+          ENDC
+          jmp       ,y			call initialization routine
+leave     rts
+
+          emod          
+eom       equ   *         
+          end