annotate level1/modules/clock.asm @ 1742:ea3988b5403c

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