annotate level1/modules/clock.asm @ 1729:7bdc60c48533

Additional Dragon changes from Phill Harvey-Smith
author boisy
date Wed, 17 Nov 2004 01:24:21 +0000
parents 043d330e2f0e
children 16a81c903c23
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
2 * Clock - OS-9 System Clock
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
3 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
4 * CoCo 3 notes:
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
5 * Includes support for several different RTC chips, GIME Toggle
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
6 * IRQ fix, numerous minor changes.
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
7 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * $Id$
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9 *
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1213
diff changeset
10 * Edt/Rev YYYY/MM/DD Modified by
10957d54bf16 Made all modules rev 0
boisy
parents: 1213
diff changeset
11 * Comment
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12 * ------------------------------------------------------------------
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
13 * ????/??/??
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
14 * NitrOS-9 2.00 distribution.
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1213
diff changeset
15 *
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
16 * 9r4 2003/01/01 Boisy G. Pitre
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
17 * Back-ported to OS-9 Level Two.
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1213
diff changeset
18 *
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
19 * 9r5 2003/08/18 Boisy G. Pitre
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
20 * Separated clock into Clock and Clock2 for modularity.
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
21 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
22 * 9r6 2003/09/04 Boisy G. Pitre
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
23 * Combined Level One and Level Two sources
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
24
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
25 nam Clock
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
26 ttl OS-9 System Clock
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
27
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
28 ifp1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
29 use defsfile
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
30 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
31 use cc3iodefs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
32 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
33 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
34
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
35 Edtn equ 9
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
36 rev equ 6
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
37
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
38
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
39 *------------------------------------------------------------
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
40 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
41 * Start of module
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
42 *
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
43 mod len,name,Systm+Objct,ReEnt+rev,Init,0
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
44
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
45 name fcs "Clock"
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
46 fcb Edtn
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
47
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
48
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
49 ifeq Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
50 TkPerTS equ TkPerSec/10 ticks per time slice
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
51 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
52 TkPerTS equ 2 ticks per time slice
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
53 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
54
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
55 *
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
56 * Table to set up Service Calls
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
57 *
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
58 NewSvc fcb F$Time
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
59 fdb FTime-*-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
60 fcb F$VIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
61 fdb FVIRQ-*-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
62 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
63 fcb F$Alarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
64 fdb FALARM-*-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
65 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
66 fcb F$STime
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
67 fdb FSTime-*-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
68 fcb $80 end of service call installation table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
69
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
70
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
71 *------------------------------------------------------------
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
72 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
73 * Handle F$STime system call
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
74 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
75 * First, copy time packet from user address space to system time
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
76 * variables, then fall through to code to update RTC.
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
77 *
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
78 FSTime equ *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
79 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
80 ldx <D.Proc caller's process descriptor
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
81 lda P$Task,x source is in user map
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
82 ldx R$X,u address of caller's time packet
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
83 ldu #D.Time destination address
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
84 ldb <D.SysTsk destination is in system map
1729
7bdc60c48533 Additional Dragon changes from Phill Harvey-Smith
boisy
parents: 1726
diff changeset
85 lbsr STime.Mv get time packet (ignore errors)
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
86 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
87 ldx R$X,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
88 ldd ,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
89 std <D.Year
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
90 ldd 2,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
91 std <D.Day
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
92 ldd 4,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
93 std <D.Min
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
94 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
95 lda #TkPerSec reset to start of second
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
96 sta <D.Tick
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
97 ldx <D.Clock2 get entry point to Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
98 jmp $06,x and call GetTime entry point
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
99
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
100
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
101 *--------------------------------------------------
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
102 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
103 * Clock Initialization
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
104 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
105 * This vector is called by the kernel to service the first F$STime
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
106 * call. F$STime is usually called by CC3Go (with a dummy argument)
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
107 * in order to initialize the clock. F$STime is re-vectored to the
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
108 * service code above to handle future F$STime calls.
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
109 *
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
110 *
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
111 Init
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
112 ifeq Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
113 pshs dp,cc save DP and CC
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
114 clra
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
115 tfr a,dp set DP to zero
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
116 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
117 ldx <D.Proc save user proc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
118 pshs x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
119 ldx <D.SysPrc make sys for link
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
120 stx <D.Proc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
121 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
122 leax <Clock2,pcr
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
123 lda #Sbrtn+Objct
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
124 os9 F$Link
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
125 puls x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
126 stx <D.Proc restore user proc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
127 bcc LinkOk
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
128 ifeq Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
129 jmp >$FFFE level 1: jump to reset vector
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
130 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
131 lda #E$MNF
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
132 jmp <D.Crash level 2: jump to CRASH vector
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
133 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
134 LinkOk sty <D.Clock2 save entry point
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
135 InitCont
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
136 ldx #PIA0Base point to PIA0
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
137 clra no error for return...
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
138 pshs cc save IRQ enable status (and Carry clear)
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
139 orcc #IntMasks stop interrupts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
140
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
141 ifgt Level-1
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
142 * Note: this code can go away once we have a rel_50hz
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
143 ifeq TkPerSec-50
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
144 ldb <D.VIDMD get video mode register copy
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
145 orb #$08 set 50 Hz VSYNC bit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
146 stb <D.VIDMD save video mode register copy
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
147 stb >$FF98 set 50 Hz VSYNC
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
148 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
149 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
150
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
151 sta 1,x enable DDRA
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
152 sta ,x set port A all inputs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
153 sta 3,x enable DDRB
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
154 coma
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
155 sta 2,x set port B all outputs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
156 ldd #$343C [A]=PIA0 CRA contents, [B]=PIA0 CRB contents
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
157 sta 1,x CA2 (MUX0) out low, port A, disable HBORD high-to-low IRQs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
158 stb 3,x CB2 (MUX1) out low, port B, disable VBORD low-to-high IRQs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
159 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
160 lda ,x clear possible pending PIA0 HBORD IRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
161 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
162 lda 2,x clear possible pending PIA0 VBORD IRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
163
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
164 * Don't need to explicitly read RTC during initialization
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
165 ldd #59*256+TkPerTS last second and time slice in minute
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
166 std <D.Sec will prompt RTC read at next time slice
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
167 stb <D.TSlice set ticks per time slice
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
168 stb <D.Slice set first time slice
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
169 leax SvcIRQ,pcr set IRQ handler
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
170 stx <D.IRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
171 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
172 leax SvcVIRQ,pcr set VIRQ handler
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
173 stx <D.VIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
174 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
175 leay NewSvc,pcr insert syscalls
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
176 os9 F$SSvc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
177 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
178 ifne H6309
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
179 oim #$08,<D.IRQER
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
180 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
181 lda <D.IRQER get shadow GIME IRQ enable register
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
182 ora #$08 set VBORD bit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
183 sta <D.IRQER save shadow register
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
184 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
185 sta >IRQEnR enable GIME VBORD IRQs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
186 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
187 * Call Clock2 init routine
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
188 ldy <D.Clock2 get entry point to Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
189 jsr ,y call init entry point of Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
190 InitRts puls cc,pc recover IRQ enable status and return
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
191
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
192
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
193
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
194 ifeq Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
195 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
196 * Clock IRQ Entry Point
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
197 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
198 * Called once every 1.66666ms
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
199 SvcIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
200 clra
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
201 tfr a,dp set direct page to zero
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
202 lda PIA0Base+3 get hw byte
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
203 bmi L0032 branch if sync flag on
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
204 jmp [>D.SvcIRQ] else service other possible IRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
205 L0032 lda PIA0Base+2 clear interrupt
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
206 dec <D.Tick decrement tick counter
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
207 bne L007F go around if not zero
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
208 ldb <D.Sec get minutes/seconds
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
209 * Seconds increment
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
210 incb increment seconds
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
211 cmpb #60 full minute?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
212 bcs L0079 nope...
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
213 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
214 * Call GetTime entry point in Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
215 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
216 ldx <D.Clock2 get entry point to Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
217 jsr $03,x call GetTime entry point
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
218 fcb $8C skip next 2 bytes
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
219 L0079 stb <D.Sec update sec
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
220 L007B lda <D.TSec get ticks per second value
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
221 sta <D.Tick and repopulate tick decrement counter
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
222 L007F clra clear A
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
223 pshs a and save it on the stack
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
224 ldy <D.CLTb get pointer to VIRQ Polling Entries
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
225 bra L009E go to the processing portion of the loop
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
226 L0087 ldd Vi.Cnt,x get count down counter
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
227 subd #$0001 subtract tick count
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
228 bne L009C branch if not at terminal count ($0000)
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
229 lda #$01
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
230 sta ,s set flag on stack to 1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
231 lda Vi.Stat,x get status byte
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
232 beq DelEntry branch if zero (one shot, so delete)
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
233 L0096 ora #Vi.IFlag set interrupted flag
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
234 sta Vi.Stat,x save in packet
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
235 ldd Vi.Rst,x get reset count
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
236 L009C std Vi.Cnt,x save tick count back
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
237 L009E ldx ,y++ get two bytes at Y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
238 bne L0087 if not zero, branch
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
239 lda ,s+ else get byte off stack
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
240 beq GoAltIRQ branch if zero
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
241 ldx <D.Proc else get pointer to current process descriptor
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
242 beq L00AE branch if none
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
243 tst P$State,x test process' state
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
244 bpl UsrPoll branch if system state not set
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
245 L00AE jsr [>D.Poll] poll ISRs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
246 bcc L00AE keep polling until carry set
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
247 GoAltIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
248 jmp [>D.AltIRQ] jump into an alternate IRQ if available
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
249 DelEntry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
250 bsr DelVIRQ delete the VIRQ entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
251 bra L0096
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
252
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
253 UsrPoll leay >up@,pcr point to routine to execute
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
254 jmp [>D.URtoSs] User to System
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
255 up@ jsr [>D.Poll] call polling routine
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
256 bcc up@ keep polling until carry set
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
257 ldx <D.Proc get current process descriptor
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
258 ldb P$State,x and its state
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
259 andb #^SysState turn off sysstate bit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
260 stb P$State,x save new state
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
261 ldd <P$SWI2,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
262 std <D.SWI2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
263 ldd <D.UsrIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
264 std <D.SvcIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
265 bra GoAltIRQ
1313
7fdef42e19a0 New clock/clock2 combo
boisy
parents: 1287
diff changeset
266
1726
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
267 DelVIRQ pshs y,x save off Y,X
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
268 dl@ ldx ,y++ get next entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
269 stx -$04,y move up
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
270 bne dl@ continue until all are moved
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
271 puls y,x restore
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
272 leay -2,y move back 2 from Y (points to last entry)
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
273 rts return
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
274
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
275 * Install or Remove VIRQ Entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
276 FVIRQ pshs cc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
277 orcc #IntMasks mask all interrupts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
278 ldy <D.CLTb get pointer to VIRQ polling table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
279 ldx <D.Init get pointer to init module
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
280 ldb PollCnt,x get poll count
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
281 ldx R$X,u get pointer to caller's X
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
282 beq L0118 branch if removing
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
283 tst ,y entry available?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
284 beq L010C
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
285 subb #$02
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
286 lslb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
287 leay b,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
288 tst ,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
289 bne PTblFul polling table full
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
290 L0106 tst ,--y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
291 beq L0106
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
292 leay $02,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
293 L010C ldx R$Y,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
294 stx ,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
295 ldy R$D,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
296 sty ,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
297 bra L0124
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
298 L0118 leax R$Y,u X = caller's Y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
299 L011A tst ,y end of VIRQ table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
300 beq L0124 branch if so
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
301 cmpx ,y++ else compare to current VIRQ entry and inc Y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
302 bne L011A continue searching if not matched
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
303 bsr DelVIRQ else delete entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
304 L0124 puls cc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
305 clrb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
306 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
307 PTblFul puls cc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
308 comb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
309 ldb #E$Poll
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
310 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
311
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
312
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
313
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
314 * F$Time system call code
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
315 FTime ldx R$X,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
316 ldd <D.Year
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
317 std ,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
318 ldd <D.Day
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
319 std 2,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
320 ldd <D.Min
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
321 std 4,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
322 clrb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
323 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
324
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
325
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
326
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
327
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
328 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
329
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
330
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
331
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
332
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
333 * OS-9 Level Two Clock
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
334
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
335 GI.Toggl equ %00000001 GIME CART* IRQ enable bit, for CC3
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
336
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
337 * TC9 needs to reset more interrupt sources
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
338 *GI.Toggl equ %00000111 GIME SERINT*, KEYINT*, CART* IRQ enable bits
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
339
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
340
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
341 *---------------------------------------------------------
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
342 * IRQ Handling starts here.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
343 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
344 * Caveat: There may not be a stack at this point, so avoid using one.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
345 * Stack is set up by the kernel between here and SvcVIRQ.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
346 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
347 SvcIRQ lda >IRQEnR get GIME IRQ Status and save it.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
348 ora <D.IRQS
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
349 sta <D.IRQS
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
350 bita #$08 check for clock interrupt
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
351 beq NoClock
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
352 anda #^$08 drop clock interrupt
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
353 sta <D.IRQS
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
354 ldx <D.VIRQ set VIRQ routine to be executed
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
355 clr <D.QIRQ ---x IS clock IRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
356 bra ContIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
357
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
358 NoClock leax DoPoll,pcr if not clock IRQ, just poll IRQ source
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
359 ifne H6309
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
360 oim #$FF,<D.QIRQ ---x set flag to NOT clock IRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
361 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
362 lda #$FF
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
363 sta <D.QIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
364 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
365 ContIRQ stx <D.SvcIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
366 jmp [D.XIRQ] chain through Kernel to continue IRQ handling
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
367
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
368 *------------------------------------------------------------
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
369 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
370 * IRQ handling re-enters here on VSYNC IRQ.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
371 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
372 * - Count down VIRQ timers, mark ones that are done
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
373 * - Call DoPoll/DoToggle to service VIRQs and IRQs and reset GIME
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
374 * - Call Keyboard scan
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
375 * - Update time variables
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
376 * - At end of minute, check alarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
377 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
378 SvcVIRQ clra flag if we find any VIRQs to service
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
379 pshs a
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
380 ldy <D.CLTb get address of VIRQ table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
381 bra virqent
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
382
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
383 virqloop
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
384 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
385 ldd 2,y get Level 3 extended map type
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
386 orcc #IntMasks
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
387 sta >$0643
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
388 stb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
389 std >$FFA1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
390 andcc #^IntMasks
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
391 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
392
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
393 ldd Vi.Cnt,x decrement tick count
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
394 ifne H6309
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
395 decd --- subd #1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
396 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
397 subd #$0001
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
398 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
399 bne notzero is this one done?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
400 lda Vi.Stat,x should we reset?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
401 bmi doreset
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
402 lbsr DelVIRQ no, delete this entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
403 doreset ora #$01 mark this VIRQ as triggered.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
404 sta Vi.Stat,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
405 lda #$80 add VIRQ as interrupt source
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
406 sta ,s
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
407 ldd Vi.Rst,x reset from Reset count.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
408 notzero std Vi.Cnt,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
409 virqent ldx ,y++
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
410 bne virqloop
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
411
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
412 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
413 puls d
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
414 orcc #Carry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
415 stb >$0643
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
416 stb >$FFA1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
417 incb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
418 stb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
419 stb >$FFA1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
420 andcc #^IntMasks
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
421 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
422 puls a get VIRQ status flag: high bit set if VIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
423 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
424
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
425 ora <D.IRQS Check to see if other hardware IRQ pending.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
426 bita #%10110111 any V/IRQ interrupts pending?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
427 beq toggle
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
428 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
429 lbsr DoPoll yes, go service them.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
430 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
431 bsr DoPoll yes, go service them.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
432 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
433 bra KbdCheck
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
434 toggle equ *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
435 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
436 lbsr DoToggle no, toggle GIME anyway
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
437 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
438 bsr DoToggle no, toggle GIME anyway
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
439 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
440
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
441 KbdCheck
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
442 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
443 lda >$0643 grab current map type
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
444 ldb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
445 pshs d save it
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
446 orcc #IntMasks IRQs off
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
447 lda >$0660 SCF local memory ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
448 sta >$0643 into DAT image ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
449 sta >$FFA1 and into RAM ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
450 inca
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
451 sta >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
452 sta >$FFA2 map in SCF, CC3IO, WindInt, etc.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
453 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
454
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
455 jsr [>D.AltIRQ] go update mouse, gfx cursor, keyboard, etc.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
456
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
457 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
458 puls d restore original map type ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
459 orcc #IntMasks
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
460 sta >$0643 into system DAT image ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
461 stb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
462 std >$FFA1 and into RAM ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
463 andcc #$AF
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
464 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
465
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
466 dec <D.Tick end of second?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
467 bne VIRQend no, skip time update and alarm check
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
468 lda #TkPerSec reset tick count
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
469 sta <D.Tick
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
470
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
471 * ATD: Modified to call real time clocks on every minute ONLY.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
472 inc <D.Sec go up one second
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
473 lda <D.Sec grab current second
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
474 cmpa #60 end of minute?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
475 blo VIRQend no, skip time update and alarm check
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
476 clr <D.Sec reset second count to zero
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
477
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
478 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
479 * Call GetTime entry point in Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
480 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
481 ldx <D.Clock2 get entry point to Clock2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
482 jsr $03,x call GetTime entry point
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
483
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
484 NoGet ldd >WGlobal+G.AlPID
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
485 ble VIRQend Quit if no Alarm set
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
486 ldd >WGlobal+G.AlPckt+3 does Hour/Minute agree?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
487 cmpd <D.Hour
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
488 bne VIRQend
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
489 ldd >WGlobal+G.AlPckt+1 does Month/Day agree?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
490 cmpd <D.Month
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
491 bne VIRQend
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
492 ldb >WGlobal+G.AlPckt+0 does Year agree?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
493 cmpb <D.Year
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
494 bne VIRQend
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
495 ldd >WGlobal+G.AlPID
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
496 cmpd #1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
497 beq checkbel
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
498 os9 F$Send
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
499 bra endalarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
500 checkbel ldb <D.Sec sound bell for 15 seconds
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
501 andb #$F0
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
502 beq dobell
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
503 endalarm ldd #$FFFF
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
504 std >WGlobal+G.AlPID
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
505 bra VIRQend
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
506 dobell ldx >WGlobal+G.BelVec
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
507 beq VIRQend
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
508 jsr ,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
509 VIRQend jmp [>D.Clock] jump to kernel's timeslice routine
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
510
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
511 *------------------------------------------------------------
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
512 * Interrupt polling and GIME reset code
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
513 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
514
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
515 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
516 * Call [D.Poll] until all interrupts have been handled
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
517 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
518 DoPoll
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
519 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
520 lda >$0643 Level 3: get map type
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
521 ldb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
522 pshs d save for later
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
523 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
524 d@ jsr [>D.Poll] call poll routine
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
525 bcc d@ until error (error -> no interrupt found)
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
526
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
527 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
528 puls d
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
529 orcc #IntMasks
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
530 sta >$0643
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
531 stb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
532 std >$FFA1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
533 andcc #^IntMasks
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
534 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
535
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
536 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
537 * Reset GIME to avoid missed IRQs
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
538 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
539 DoToggle
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
540 lda #^GI.Toggl mask off CART* bit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
541 anda <D.IRQS
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
542 sta <D.IRQS
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
543 lda <D.IRQER get current enable register status
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
544 tfr a,b
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
545 anda #^GI.Toggl mask off CART* bit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
546 orb #GI.Toggl --- ensure that 60Hz IRQ's are always enabled
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
547 sta >IRQEnR disable CART
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
548 stb >IRQEnR enable CART
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
549 clrb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
550 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
551
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
552
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
553 *------------------------------------------------------------
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
554 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
555 * Handle F$VIRQ system call
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
556 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
557 FVIRQ pshs cc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
558 orcc #IntMasks disable interrupts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
559 ldy <D.CLTb address of VIRQ table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
560 ldx <D.Init address of INIT
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
561 ldb PollCnt,x number of polling table entries from INIT
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
562 ldx R$X,u zero means delete entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
563 beq RemVIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
564 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
565 bra FindVIRQ ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
566
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
567 v.loop leay 4,y ---x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
568 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
569 FindVIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
570 ldx ,y++ is VIRQ entry null?
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
571 beq AddVIRQ if yes, add entry here
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
572 decb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
573 bne FindVIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
574 puls cc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
575 comb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
576 ldb #E$Poll
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
577 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
578
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
579 AddVIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
580 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
581 ldx R$Y,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
582 stx ,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
583 lda >$0643
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
584 ldb >$0645
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
585 std 2,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
586 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
587 leay -2,y point to first null VIRQ entry
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
588 ldx R$Y,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
589 stx ,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
590 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
591 ldy R$D,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
592 sty ,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
593 bra virqexit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
594
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
595 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
596 v.chk leay 4,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
597 RemVIRQ ldx ,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
598 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
599 RemVIRQ ldx ,y++
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
600 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
601 beq virqexit
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
602 cmpx R$Y,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
603 bne RemVIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
604 bsr DelVIRQ
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
605 virqexit puls cc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
606 clrb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
607 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
608
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
609 DelVIRQ pshs x,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
610 DelVLup
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
611 ifgt Level-2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
612 ldq ,y++ move entries up in table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
613 leay 2,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
614 stq -8,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
615 bne DelVLup
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
616 puls x,y,pc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
617 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
618 ldx ,y++ move entries up in table
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
619 stx -4,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
620 bne DelVLup
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
621 puls x,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
622 leay -2,y
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
623 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
624 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
625
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
626 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
627 *------------------------------------------------------------
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
628 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
629 * Handle F$Alarm call
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
630 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
631 FAlarm ldx #WGlobal+G.AlPckt
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
632 ldd R$D,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
633 bne DoAlarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
634 std G.AlPID-G.AlPckt,x erase F$Alarm PID, Signal.
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
635 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
636
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
637 DoAlarm tsta if PID != 0, set alarm for this process
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
638 bne SetAlarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
639 cmpd #1 1 -> Set system-wide alarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
640 bne GetAlarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
641 SetAlarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
642 std G.AlPID-G.AlPckt,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
643 ldy <D.Proc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
644 lda P$Task,y move from process task
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
645 ldb <D.SysTsk to system task
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
646 ldx R$X,u from address given in X
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
647 ldu #WGlobal+G.AlPckt
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
648 ldy #5 move 5 bytes
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
649 bra FMove
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
650
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
651 GetAlarm
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
652 cmpd #2
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
653 bne AlarmErr
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
654 ldd G.AlPID-G.AlPckt,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
655 std R$D,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
656 bra RetTime
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
657 AlarmErr
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
658 comb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
659 ldb #E$IllArg
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
660 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
661 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
662
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
663 *------------------------------------------------------------
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
664 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
665 * Handle F$Time System call
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
666 *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
667 FTime equ *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
668 ifgt Level-1
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
669 ldx #D.Time address of system time packet
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
670 RetTime ldy <D.Proc get pointer to current proc descriptor
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
671 ldb P$Task,y process Task number
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
672 lda <D.SysTsk from System Task
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
673 ldu R$X,u
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
674 STime.Mv
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
675 ldy #6 move 6 bytes
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
676 FMove os9 F$Move
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
677 else
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
678 ldx R$X,u get pointer to caller's space
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
679 ldd <D.Year get year and month
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
680 std ,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
681 ldd <D.Day get day and hour
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
682 std 2,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
683 ldd <D.Min get minute and second
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
684 std 4,x
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
685 clrb
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
686 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
687 rts
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
688
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
689
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
690 endc
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
691
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
692
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
693 Clock2 fcs "Clock2"
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
694
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
695 emod
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
696 len equ *
043d330e2f0e Recomposed source lines to share more common code between Level 1
boisy
parents: 1658
diff changeset
697 end