comparison 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
comparison
equal deleted inserted replaced
52:51b437557f42 53:fe88cea67ef0
20 20
21 tylg set Systm+Objct 21 tylg set Systm+Objct
22 atrv set ReEnt+rev 22 atrv set ReEnt+rev
23 rev set $01 23 rev set $01
24 edition set $06 24 edition set $06
25 TimerPort set $f8b0 25 TimerPort set $ffb0
26 26
27 mod eom,name,tylg,atrv,ClkEnt,size 27 mod eom,name,tylg,atrv,ClkEnt,size
28 28
29 size equ . 29 size equ .
30 30
31 name fcs /Clock/ 31 name fcs /Clock/
32 fcb edition 32 fcb edition
33 33
34 SysTbl fcb F$Time 34 SysTbl fcb F$Time
35 fdb FTime-*-2 35 fdb FTime-*-2
36 fcb F$STime
37 fdb FSTime-*-2
36 fcb $80 38 fcb $80
37 39
38 40
39 ClockIRQ clra 41 ClockIRQ ldx #TimerPort
40 tfr a,dp 42 lda ,x
43 bita #$10
44 beq L00AE
45 lda #$8f
46 sta >TimerPort
41 L00AE jsr [>D.Poll] 47 L00AE jsr [>D.Poll]
42 bcc L00AE 48 bcc L00AE
43 L00B4 jmp [>D.AltIRQ] 49 L00B4 jsr [>D.AltIRQ]
44 rts 50 rti
45 51
46 ClkEnt equ * 52 ClkEnt equ *
47 pshs cc 53 pshs cc
48 orcc #FIRQMask+IRQMask mask ints 54 orcc #FIRQMask+IRQMask mask ints
49 leax >ClockIRQ,pcr 55 leax >ClockIRQ,pcr
55 ldb #$8f start timer 61 ldb #$8f start timer
56 stb ,x 62 stb ,x
57 puls pc,cc 63 puls pc,cc
58 64
59 * F$Time system call code 65 * F$Time system call code
60 FTime ldx R$X,u 66 FTime ldx #TimerPort
61 ldy #TimerPort
62 ldb #$04 67 ldb #$04
63 stb ,y 68 stb ,x
64 ldd 1,y 69 leax 1,x Address of system time packet
65 std ,x 70 RetTime ldy <D.Proc Get pointer to current proc descriptor
66 ldd 3,y 71 ldb P$Task,y Process Task number
67 std 2,x 72 lda <D.SysTsk From System Task
68 ldd 5,y 73 ldu R$X,u
69 std 4,x 74 STime.Mv ldy #6 Move 6 bytes
70 clrb 75 FMove os9 F$Move
76 rts
77
78 FSTime clrb
71 rts 79 rts
72 80
73 emod 81 emod
74 eom equ * 82 eom equ *
75 end 83 end