Mercurial > hg > Members > kono > nitros9-code
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 |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
1313 | 2 * Clock - OS-9 System Clock |
3 * | |
4 * CoCo 3 notes: | |
5 * Includes support for several different RTC chips, GIME Toggle | |
6 * IRQ fix, numerous minor changes. | |
0 | 7 * |
8 * $Id$ | |
9 * | |
1287 | 10 * Edt/Rev YYYY/MM/DD Modified by |
11 * Comment | |
0 | 12 * ------------------------------------------------------------------ |
1313 | 13 * ????/??/?? |
14 * NitrOS-9 2.00 distribution. | |
1287 | 15 * |
1313 | 16 * 9r4 2003/01/01 Boisy G. Pitre |
17 * Back-ported to OS-9 Level Two. | |
1287 | 18 * |
1313 | 19 * 9r5 2003/08/18 Boisy G. Pitre |
20 * Separated clock into Clock and Clock2 for modularity. | |
21 * | |
22 * 9r6 2003/09/04 Boisy G. Pitre | |
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 | 39 *------------------------------------------------------------ |
40 * | |
41 * Start of module | |
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 | 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 | 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 | 70 |
71 *------------------------------------------------------------ | |
72 * | |
73 * Handle F$STime system call | |
74 * | |
75 * First, copy time packet from user address space to system time | |
76 * variables, then fall through to code to update RTC. | |
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 | 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 | 99 |
100 | |
101 *-------------------------------------------------- | |
102 * | |
103 * Clock Initialization | |
104 * | |
105 * This vector is called by the kernel to service the first F$STime | |
106 * call. F$STime is usually called by CC3Go (with a dummy argument) | |
107 * in order to initialize the clock. F$STime is re-vectored to the | |
108 * service code above to handle future F$STime calls. | |
109 * | |
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 | 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 | 191 |
192 | |
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 | 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 |