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