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