Mercurial > hg > Members > kono > os9 > sbc09
comparison os9/level1/clock.asm @ 94:f20bf9874697
fix os9 dir
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 25 Dec 2018 15:57:05 +0900 |
parents | src/os9/level1/clock.asm@84d2d5a54ed0 |
children |
comparison
equal
deleted
inserted
replaced
93:03a26438ab8d | 94:f20bf9874697 |
---|---|
1 ******************************************************************** | |
2 * Clock - OS-9 Level One V2 Clock module | |
3 * | |
4 * $Id: clock.asm,v 1.1.1.1 2001/02/21 23:30:52 boisy Exp $ | |
5 * | |
6 * NOTE: This clock is TOTALLY VALID for ALL DATES between 1900-2155 | |
7 * | |
8 * Ed. Comments Who YY/MM/DD | |
9 * ------------------------------------------------------------------ | |
10 * 5 Tandy/Microware original version | |
11 * 6 Modified to handle leap years properly for BGP 99/05/03 | |
12 * 1900 and 2100 A.D. | |
13 | |
14 nam Clock | |
15 ttl OS-9 Level One V2 Clock module | |
16 | |
17 ifp1 | |
18 use defsfile | |
19 endc | |
20 | |
21 tylg set Systm+Objct | |
22 atrv set ReEnt+rev | |
23 rev set $01 | |
24 edition set $06 | |
25 TimerPort set $e030 | |
26 TkPerSec set 60 | |
27 TkPerTS equ TkPerSec/10 ticks per time slice | |
28 | |
29 | |
30 mod eom,name,tylg,atrv,ClkEnt,size | |
31 | |
32 size equ . | |
33 | |
34 name fcs /Clock/ | |
35 fcb edition | |
36 | |
37 SysTbl fcb F$Time | |
38 fdb FTime-*-2 | |
39 fcb $80 | |
40 | |
41 | |
42 ClockIRQ ldx #TimerPort | |
43 lda ,x | |
44 bita #$10 | |
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 | |
51 ldb #$8f start timer | |
52 stb ,x | |
53 | |
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] | |
67 | |
68 ClkEnt equ * | |
69 ldd #59*256+$01 last second and last tick | |
70 std <D.Sec will prompt RTC read at next time slice | |
71 ldb #TkPerSec | |
72 stb <D.TSec set ticks per second | |
73 stb <D.Tick set ticks per second | |
74 ldb #TkPerTS get ticks per time slice | |
75 stb <D.TSlice set ticks per time slice | |
76 stb <D.Slice set first time slice | |
77 pshs cc | |
78 orcc #FIRQMask+IRQMask mask ints | |
79 leax <ClockIRQ,pcr | |
80 stx <D.IRQ | |
81 * install system calls | |
82 leay <SysTbl,pcr | |
83 os9 F$SSvc | |
84 ldx #TimerPort | |
85 ldb #$8f start timer | |
86 stb ,x | |
87 puls pc,cc | |
88 | |
89 * F$Time system call code | |
90 FTime ldx R$X,u | |
91 ldy #TimerPort | |
92 ldb #$04 | |
93 stb ,y | |
94 ldd 1,y | |
95 std ,x | |
96 std <D.Year | |
97 ldd 3,y | |
98 std 2,x | |
99 std <D.Day | |
100 ldd 5,y | |
101 std 4,x | |
102 std <D.Min | |
103 clrb | |
104 rts | |
105 | |
106 emod | |
107 eom equ * | |
108 end |