comparison src/os9/level1/clock.asm @ 60:84d2d5a54ed0

level1 clock fixed
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 24 Jul 2018 17:04:46 +0900
parents 2088fd998865
children
comparison
equal deleted inserted replaced
59:7c6dc25c2b05 60:84d2d5a54ed0
37 SysTbl fcb F$Time 37 SysTbl fcb F$Time
38 fdb FTime-*-2 38 fdb FTime-*-2
39 fcb $80 39 fcb $80
40 40
41 41
42 ClockIRQ clra 42 ClockIRQ ldx #TimerPort
43 tfr a,dp
44 ldx #TimerPort
45 lda ,x 43 lda ,x
46 bita #$10 44 bita #$10
47 beq L00B4 45 bne L00B4
46 L00AE jsr [>D.Poll] poll ISRs
47 bcc L00AE keep polling until carry set
48 jmp [>D.AltIRQ] jump into an alternate IRQ if available
49
50 L00B4
48 ldb #$8f start timer 51 ldb #$8f start timer
49 stb ,x 52 stb ,x
50 L00B4 53
51 jmp [>D.SvcIRQ] 54 dec <D.Tick
55 bne L007F go around if not zero
56 ldb <D.Sec get minutes/seconds
57 * Seconds increment
58 incb increment seconds
59 cmpb #60 full minute?
60 blo L007F
61 ldb <D.TSec
62 stb <D.Tick
63 bsr FTime
64 L007F stb <D.Sec
65
66 jmp [>D.Clock]
52 67
53 ClkEnt equ * 68 ClkEnt equ *
54 ldd #59*256+$01 last second and last tick 69 ldd #59*256+$01 last second and last tick
55 std <D.Sec will prompt RTC read at next time slice 70 std <D.Sec will prompt RTC read at next time slice
56 * ldb #TkPerSec 71 ldb #TkPerSec
57 * stb <D.TSec set ticks per second 72 stb <D.TSec set ticks per second
73 stb <D.Tick set ticks per second
58 ldb #TkPerTS get ticks per time slice 74 ldb #TkPerTS get ticks per time slice
59 stb <D.TSlice set ticks per time slice 75 stb <D.TSlice set ticks per time slice
60 stb <D.Slice set first time slice 76 stb <D.Slice set first time slice
61 pshs cc 77 pshs cc
62 orcc #FIRQMask+IRQMask mask ints 78 orcc #FIRQMask+IRQMask mask ints
75 ldy #TimerPort 91 ldy #TimerPort
76 ldb #$04 92 ldb #$04
77 stb ,y 93 stb ,y
78 ldd 1,y 94 ldd 1,y
79 std ,x 95 std ,x
96 std <D.Year
80 ldd 3,y 97 ldd 3,y
81 std 2,x 98 std 2,x
99 std <D.Day
82 ldd 5,y 100 ldd 5,y
83 std 4,x 101 std 4,x
102 std <D.Min
84 clrb 103 clrb
85
86 rts 104 rts
87 105
88 emod 106 emod
89 eom equ * 107 eom equ *
90 end 108 end