changeset 60:84d2d5a54ed0

level1 clock fixed
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 24 Jul 2018 17:04:46 +0900
parents 7c6dc25c2b05
children 80f4ec9a3420
files src/os9/level1/clock.asm
diffstat 1 files changed, 27 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/os9/level1/clock.asm	Mon Jul 23 20:17:12 2018 +0900
+++ b/src/os9/level1/clock.asm	Tue Jul 24 17:04:46 2018 +0900
@@ -39,22 +39,38 @@
          fcb   $80
 
 
-ClockIRQ clra
-         tfr   a,dp
-         ldx   #TimerPort
+ClockIRQ ldx   #TimerPort
          lda   ,x
          bita  #$10
-         beq   L00B4
+         bne   L00B4
+L00AE    jsr   [>D.Poll]  poll ISRs
+         bcc   L00AE      keep polling until carry set
+         jmp   [>D.AltIRQ] jump into an alternate IRQ if available
+
+L00B4
          ldb   #$8f     start timer
          stb   ,x
-L00B4    
-         jmp   [>D.SvcIRQ]
+
+         dec   <D.Tick 
+         bne   L007F      go around if not zero
+         ldb   <D.Sec     get minutes/seconds
+* Seconds increment
+         incb             increment seconds
+         cmpb  #60        full minute?
+         blo   L007F
+         ldb   <D.TSec
+         stb   <D.Tick
+         bsr   FTime
+L007F    stb   <D.Sec
+
+         jmp   [>D.Clock]
 
 ClkEnt   equ   *
          ldd   #59*256+$01 last second and last tick
          std   <D.Sec     will prompt RTC read at next time slice
-*         ldb   #TkPerSec
-*         stb   <D.TSec    set ticks per second
+         ldb   #TkPerSec
+         stb   <D.TSec    set ticks per second
+         stb   <D.Tick    set ticks per second
          ldb   #TkPerTS   get ticks per time slice
          stb   <D.TSlice  set ticks per time slice
          stb   <D.Slice   set first time slice
@@ -77,12 +93,14 @@
          stb   ,y
          ldd   1,y
          std   ,x
+         std   <D.Year
          ldd   3,y
          std   2,x
+         std   <D.Day
          ldd   5,y
          std   4,x
+         std   <D.Min
          clrb
-
          rts
 
          emod