diff os9/level2/clock.asm @ 53:fe88cea67ef0

clock interrupt get time
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 22 Jul 2018 17:55:06 +0900
parents ce7323f9b937
children fc10b7ae23d0
line wrap: on
line diff
--- a/os9/level2/clock.asm	Sun Jul 22 15:52:39 2018 +0900
+++ b/os9/level2/clock.asm	Sun Jul 22 17:55:06 2018 +0900
@@ -22,7 +22,7 @@
 atrv     set   ReEnt+rev
 rev      set   $01
 edition  set   $06
-TimerPort set  $f8b0
+TimerPort set  $ffb0
 
          mod   eom,name,tylg,atrv,ClkEnt,size
 
@@ -33,15 +33,21 @@
 
 SysTbl   fcb   F$Time
          fdb   FTime-*-2
+         fcb   F$STime
+         fdb   FSTime-*-2
          fcb   $80
 
 
-ClockIRQ clra
-         tfr   a,dp
+ClockIRQ ldx   #TimerPort
+         lda   ,x
+         bita  #$10
+         beq   L00AE
+         lda   #$8f
+         sta   >TimerPort
 L00AE    jsr   [>D.Poll]
          bcc   L00AE
-L00B4    jmp   [>D.AltIRQ]
-         rts
+L00B4    jsr   [>D.AltIRQ]
+         rti
 
 ClkEnt   equ   *
          pshs  cc
@@ -57,17 +63,19 @@
          puls  pc,cc
 
 * F$Time system call code
-FTime    ldx   R$X,u
-         ldy   #TimerPort
+FTime    ldx   #TimerPort
          ldb   #$04
-         stb   ,y
-         ldd   1,y
-         std   ,x
-         ldd   3,y
-         std   2,x
-         ldd   5,y
-         std   4,x
-         clrb
+         stb   ,x
+         leax  1,x        Address of system time packet
+RetTime  ldy   <D.Proc    Get pointer to current proc descriptor
+         ldb   P$Task,y   Process Task number
+         lda   <D.SysTsk  From System Task
+         ldu   R$X,u
+STime.Mv ldy   #6         Move 6 bytes
+FMove    os9   F$Move
+         rts
+
+FSTime   clrb
          rts
 
          emod