annotate level2/modules/mc09clock.asm @ 3255:d0e8324af298

level3: nitro module: Use KrnBlk instead of hardcoded $3F Helps porting to non-CoCo3 platforms.
author Tormod Volden <debian.tormod@gmail.com>
date Wed, 29 Aug 2018 08:44:37 +0200
parents b79920779783
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
1 ********************************************************************
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
2 * Clock - Clock for OS-9 Level Two/NitrOS-9
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
3 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
4 * Clock module for multicomp09 (mc09l2)
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
5 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
6 * Based on Microware/Tandy Clock Module for CC3/L2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
7 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
8 * $Id$
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
9 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
10 * Edt/Rev YYYY/MM/DD Modified by
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
11 * Comment
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
12 * ------------------------------------------------------------------
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
13 * 2017/01/29 Neal Crook
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
14 * Created from clock.asm version 9r5. This version for 50Hz timer on
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
15 * multicomp09 (mc09l2).
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
16
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
17 nam Clock
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
18 ttl Clock for OS-9 Level Two/NitrOS-9
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
19
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
20 TkPerTS equ 2 ticks per time slice
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
21
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
22 use defsfile
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
23 * Need to NOT be using this!! But it is the source of:
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
24
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
25 use cocovtio.d
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
26
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
27 tylg set Systm+Objct
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
28 atrv set ReEnt+rev
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
29 rev equ 5
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
30 edition equ 9
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
31
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
32 *------------------------------------------------------------
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
33 * For a detailed hardware description of the Multicomp09
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
34 * timer, refer to mc09.d
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
35 *
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
36
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
37 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
38 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
39 * Start of module
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
40 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
41 mod len,name,tylg,atrv,init,0
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
42
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
43 name fcs "Clock"
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
44 fcb edition
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
45
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
46 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
47 * Table to set up Service Calls:
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
48 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
49 NewSvc fcb F$Time
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
50 fdb F.Time-*-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
51 fcb F$VIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
52 fdb F.VIRQ-*-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
53 fcb F$Alarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
54 fdb F.ALARM-*-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
55 fcb F$STime
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
56 fdb F.STime-*-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
57 fcb $80 end of service call installation table
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
58
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
59 *---------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
60 * IRQ Handling starts here.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
61 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
62 * For Multicomp09, called 50 times/s ie once every 20ms
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
63 *
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
64 * Caveat: There may not be a stack at this point, so avoid using one.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
65 * Stack is set up by the kernel between here and SvcVIRQ.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
66 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
67 SvcIRQ
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
68
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
69 * The increment sets N depending upon whether the timer interrupted
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
70 ldx <D.VIRQ Routine to be invoked from the kernel
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
71 clr <D.QIRQ ---x IS clock IRQ
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
72 inc TIMER
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
73 bmi ContIRQ Timer interrupt
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
74
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
75 NoClock leax DoPoll,pcr If not timer IRQ, just poll IRQ source
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
76 lda #$FF
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
77 sta <D.QIRQ
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
78
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
79 ContIRQ stx <D.SvcIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
80 jmp [D.XIRQ] Chain through Kernel to continue IRQ handling
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
81
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
82 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
83 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
84 * IRQ handling re-enters here (from Kernel) on Timer interrupt
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
85 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
86 * - Count down VIRQ timers, mark ones that are done
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
87 * - Call DoPoll/DoToggle to service VIRQs and IRQs and reset GIME
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
88 * - Call Keyboard scan
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
89 * - Update time variables
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
90 * - At end of minute, check alarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
91 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
92 SvcVIRQ clra Flag if we find any VIRQs to service
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
93 pshs a
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
94 ldy <D.CLTb Get address of VIRQ table
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
95 bra virqent
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
96
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
97 virqloop equ *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
98 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
99 ldd 2,y Get Level 3 extended map type
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
100 orcc #IntMasks
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
101 sta >$0643
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
102 stb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
103 std >DAT.Regs+1
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
104 andcc #^IntMasks
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
105 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
106
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
107 ldd Vi.Cnt,x Decrement tick count
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
108 subd #$0001
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
109 bne notzero Is this one done?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
110 lda Vi.Stat,x Should we reset?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
111 bmi doreset
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
112 lbsr DelVIRQ No, delete this entry
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
113 doreset ora #$01 Mark this VIRQ as triggered.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
114 sta Vi.Stat,x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
115 lda #$80 Add VIRQ as interrupt source
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
116 sta ,s
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
117 ldd Vi.Rst,x Reset from Reset count.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
118 notzero std Vi.Cnt,x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
119 virqent ldx ,y++
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
120 bne virqloop
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
121
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
122 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
123 puls d
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
124 orcc #Carry
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
125 stb >$0643
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
126 stb >DAT.Regs+1
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
127 incb
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
128 stb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
129 stb >DAT.Regs+1
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
130 andcc #^IntMasks
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
131 ELSE
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
132 puls a Get VIRQ status flag: high bit set if VIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
133 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
134
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
135 ora <D.IRQS Check to see if other hardware IRQ pending.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
136 bita #%10110111 Any V/IRQ interrupts pending?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
137 beq toggle
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
138 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
139 lbsr DoPoll Yes, go service them.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
140 ELSE
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
141 bsr DoPoll Yes, go service them.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
142 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
143 bra KbdCheck
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
144 toggle equ *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
145 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
146 lbsr DoToggle No, toggle GIME anyway
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
147 ELSE
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
148 bsr DoToggle No, toggle GIME anyway
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
149 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
150
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
151 KbdCheck equ *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
152 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
153 lda >$0643 grab current map type
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
154 ldb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
155 pshs d save it
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
156 orcc #IntMasks IRQs off
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
157 lda >$0660 SCF local memory ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
158 sta >$0643 into DAT image ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
159 sta >DAT.Regs+1 and into RAM ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
160 inca
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
161 sta >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
162 sta >DAT.Regs+2 map in SCF, CC3IO, WindInt, etc.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
163 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
164
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
165 jsr [>D.AltIRQ] go update mouse, gfx cursor, keyboard, etc.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
166
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
167 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
168 puls d restore original map type ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
169 orcc #IntMasks
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
170 sta >$0643 into system DAT image ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
171 stb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
172 std >DAT.Regs+1 and into RAM ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
173 andcc #$AF
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
174 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
175
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
176 dec <D.Tick End of second?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
177 bne VIRQend No, skip time update and alarm check
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
178 lda #TkPerSec Reset tick count
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
179 sta <D.Tick
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
180
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
181 * ATD: Modified to call real time clocks on every minute ONLY.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
182 inc <D.Sec go up one second
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
183 lda <D.Sec grab current second
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
184 cmpa #60 End of minute?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
185 blo VIRQend No, skip time update and alarm check
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
186 clr <D.Sec Reset second count to zero
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
187
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
188 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
189 * Call GetTime entry point in Clock2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
190 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
191 ldx <D.Clock2 get entry point to Clock2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
192 jsr $03,x call GetTime entry point
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
193
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
194 NoGet ldd >WGlobal+G.AlPID
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
195 ble VIRQend Quit if no Alarm set
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
196 ldd >WGlobal+G.AlPckt+3 Does Hour/Minute agree?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
197 cmpd <D.Hour
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
198 bne VIRQend
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
199 ldd >WGlobal+G.AlPckt+1 Does Month/Day agree?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
200 cmpd <D.Month
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
201 bne VIRQend
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
202 ldb >WGlobal+G.AlPckt+0 Does Year agree?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
203 cmpb <D.Year
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
204 bne VIRQend
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
205 ldd >WGlobal+G.AlPID
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
206 cmpd #1
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
207 beq checkbel
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
208 os9 F$Send
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
209 bra endalarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
210 checkbel ldb <D.Sec Sound bell for 15 seconds
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
211 andb #$F0
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
212 beq dobell
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
213 endalarm ldd #$FFFF
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
214 std >WGlobal+G.AlPID
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
215 bra VIRQend
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
216 dobell ldx >WGlobal+G.BelVec
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
217 beq VIRQend
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
218 jsr ,x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
219 VIRQend jmp [>D.Clock] Jump to kernel's timeslice routine
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
220
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
221 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
222 * Interrupt polling and GIME reset code
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
223 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
224
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
225 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
226 * Call [D.Poll] until all interrupts have been handled
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
227 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
228 Dopoll
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
229 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
230 lda >$0643 Level 3: get map type
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
231 ldb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
232 pshs d save for later
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
233 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
234 Dopoll.i
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
235 jsr [>D.Poll] Call poll routine
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
236 bcc DoPoll.i Until error (error -> no interrupt found)
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
237
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
238 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
239 puls d
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
240 orcc #IntMasks
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
241 sta >$0643
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
242 stb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
243 std >DAT.Regs+1
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
244 andcc #^IntMasks
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
245 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
246
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
247 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
248 * Reset GIME to avoid missed IRQs
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
249 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
250 DoToggle clrb
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
251 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
252
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
253
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
254 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
255 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
256 * Handle F$VIRQ system call
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
257 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
258 F.VIRQ pshs cc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
259 orcc #IntMasks Disable interrupts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
260 ldy <D.CLTb Address of VIRQ table
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
261 ldx <D.Init Address of INIT
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
262 ldb PollCnt,x Number of polling table entries from INIT
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
263 ldx R$X,u Zero means delete entry
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
264 beq RemVIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
265 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
266 bra FindVIRQ ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
267
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
268 v.loop leay 4,y ---x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
269 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
270 FindVIRQ ldx ,y++ Is VIRQ entry null?
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
271 beq AddVIRQ If yes, add entry here
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
272 decb
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
273 bne FindVIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
274 puls cc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
275 comb
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
276 ldb #E$Poll
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
277 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
278
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
279 AddVIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
280 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
281 ldx R$Y,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
282 stx ,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
283 lda >$0643
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
284 ldb >$0645
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
285 std 2,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
286 ELSE
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
287 leay -2,y point to first null VIRQ entry
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
288 ldx R$Y,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
289 stx ,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
290 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
291 ldy R$D,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
292 sty ,x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
293 bra virqexit
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
294
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
295 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
296 v.chk leay 4,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
297 RemVIRQ ldx ,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
298 ELSE
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
299 RemVIRQ ldx ,y++
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
300 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
301 beq virqexit
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
302 cmpx R$Y,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
303 bne RemVIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
304 bsr DelVIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
305 virqexit puls cc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
306 clrb
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
307 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
308
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
309 DelVIRQ pshs x,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
310 DelVLup
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
311 IFGT Level-2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
312 ldq ,y++ move entries up in table
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
313 leay 2,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
314 stq -8,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
315 bne DelVLup
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
316 puls x,y,pc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
317 ELSE
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
318 ldx ,y++ move entries up in table
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
319 stx -4,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
320 bne DelVLup
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
321 puls x,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
322 leay -2,y
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
323 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
324 ENDC
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
325
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
326 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
327 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
328 * Handle F$Alarm call
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
329 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
330 F.Alarm ldx #WGlobal+G.AlPckt
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
331 ldd R$D,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
332 bne DoAlarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
333 std G.AlPID-G.AlPckt,x Erase F$Alarm PID, Signal.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
334 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
335
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
336 DoAlarm tsta If PID != 0, set alarm for this process
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
337 bne SetAlarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
338 cmpd #1 1 -> Set system-wide alarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
339 bne GetAlarm
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
340 SetAlarm std G.AlPID-G.AlPckt,x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
341 ldy <D.Proc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
342 lda P$Task,y Move from process task
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
343 ldb <D.SysTsk To system task
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
344 ldx R$X,u From address given in X
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
345 ldu #WGlobal+G.AlPckt
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
346 ldy #5 Move 5 bytes
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
347 bra FMove
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
348
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
349 GetAlarm cmpd #2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
350 bne AlarmErr
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
351 ldd G.AlPID-G.AlPckt,x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
352 std R$D,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
353 bra RetTime
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
354 AlarmErr comb
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
355 ldb #E$IllArg
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
356 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
357
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
358 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
359 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
360 * Handle F$Time System call
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
361 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
362 F.Time equ *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
363 ldx #D.Time Address of system time packet
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
364 RetTime ldy <D.Proc Get pointer to current proc descriptor
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
365 ldb P$Task,y Process Task number
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
366 lda <D.SysTsk From System Task
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
367 ldu R$X,u
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
368 STime.Mv ldy #6 Move 6 bytes
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
369 FMove os9 F$Move
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
370 rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
371
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
372 *------------------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
373 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
374 * Handle F$STime system call
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
375 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
376 * First, copy time packet from user address space to system time
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
377 * variables, then fall through to code to update RTC.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
378 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
379 F.STime equ *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
380 ldx <D.Proc Caller's process descriptor
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
381 lda P$Task,x Source is in user map
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
382 ldx R$X,u Address of caller's time packet
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
383 ldu #D.Time Destination address
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
384 ldb <D.SysTsk Destination is in system map
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
385 bsr STime.Mv Get time packet (ignore errors)
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
386 lda #TkPerSec Reset to start of second
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
387 sta <D.Tick
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
388
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
389 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
390 * Call SetTime entry point in Clock2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
391 ldx <D.Clock2 get entry point to Clock2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
392 jsr $06,x else call GetTime entry point
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
393
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
394 NoSet rts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
395
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
396 Clock2 fcs "Clock2"
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
397
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
398 *--------------------------------------------------
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
399 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
400 * Clock Initialization
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
401 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
402 * This vector is called by the kernel to service the first F$STime
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
403 * call. F$STime is usually called by SysGo (with a dummy argument)
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
404 * in order to initialize the clock. F$STime is re-vectored to the
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
405 * service code above to handle future F$STime calls.
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
406 *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
407 *
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
408 init ldx <D.Proc save user proc
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
409 pshs x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
410 ldx <D.SysPrc make sys for link
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
411 stx <D.Proc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
412
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
413 leax <Clock2,pcr
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
414 lda #Sbrtn+Objct
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
415 os9 F$Link
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
416
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
417 * And here, we restore the original D.Proc value
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
418 puls x
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
419 stx <D.Proc restore user proc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
420
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
421 bcc LinkOk
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
422 lda #E$MNF
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
423 jmp <D.Crash
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
424 LinkOk sty <D.Clock2 save entry point
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
425
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
426 pshs cc save IRQ enable status (and Carry clear)
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
427 orcc #IntMasks stop interrupts
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
428
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
429 * Don't need to explicitly read RTC during initialization
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
430 ldd #59*256+TkPerTS last second and time slice in minute
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
431 std <D.Sec Will prompt RTC read at next time slice
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
432
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
433 stb <D.TSlice set ticks per time slice
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
434 stb <D.Slice set first time slice
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
435 leax SvcIRQ,pcr set IRQ handler
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
436 stx <D.IRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
437 leax SvcVIRQ,pcr set VIRQ handler
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
438 stx <D.VIRQ
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
439 leay NewSvc,pcr insert syscalls
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
440 os9 F$SSvc
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
441
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
442 * Call Clock2 init routine
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
443 ldy <D.Clock2 get entry point to Clock2
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
444 jsr ,y call init entry point of Clock2
3160
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
445
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
446 * Initialize clock hardware
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
447 lda #2 enable timer and its interrupt
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
448 sta TIMER
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
449
b79920779783 mc09 l2: Complete rework of the mc09 clock module (copied from coco)
Neal Crook <foofoobedoo@gmail.com>
parents: 3131
diff changeset
450 puls cc,pc recover IRQ enable status and return
3131
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
451
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
452 emod
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
453 len equ *
e1aadba01e81 Add new Level 2 port for Multicomp09 "mc09l2"
Neal Crook <foofoobedoo@gmail.com>
parents:
diff changeset
454 end