1626
|
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
2 ; sysglobs
|
|
3 ;
|
|
4 ; $Id$
|
|
5 ;
|
|
6 ; Edt/Rev YYYY/MM/DD Modified by
|
|
7 ; Comment
|
|
8 ; ------------------------------------------------------------------
|
|
9 ; 2004/05/17 Boisy G. Pitre
|
|
10 ; Started.
|
|
11
|
|
12 .title System Globals
|
|
13
|
|
14 .area SYSGLOBS (ABS)
|
|
15
|
|
16
|
|
17 .if Level=1
|
|
18 ; Level 1 DP vars
|
|
19 .org 0
|
|
20 D.WDAddr:: .rmb 2 ; FHL/Isted WD1002-05 interface base address
|
|
21 D.WDBtDr:: .rmb 1 ; FHL/Isted WD1002-05 boot physical device drive num.
|
|
22 .rmb 5
|
|
23 D.COCOXT:: .rmb 1 ; Busy flag for CoCo-XT driver (one drive at a time)
|
|
24
|
|
25 .org 0h20
|
|
26 D.FMBM:: .rmb 4 ; Free memory bit map pointers
|
|
27 D.MLIM:: .rmb 2 ; Memory limit $24
|
|
28 D.ModDir:: .rmb 4 ; Module directory $26
|
|
29 D.Init:: .rmb 2 ; Rom base address $2A
|
|
30 D.SWI3:: .rmb 2 ; Swi3 vector $2C
|
|
31 D.SWI2:: .rmb 2 ; Swi2 vector $2E
|
|
32 D.FIRQ:: .rmb 2 ; Firq vector $30
|
|
33 D.IRQ:: .rmb 2 ; Irq vector $32
|
|
34 D.SWI:: .rmb 2 ; Swi vector $34
|
|
35 D.NMI:: .rmb 2 ; Nmi vector $36
|
|
36 D.SvcIRQ:: .rmb 2 ; Interrupt service entry $38
|
|
37 D.Poll:: .rmb 2 ; Interrupt polling routine $3A
|
|
38 D.UsrIRQ:: .rmb 2 ; User irq routine $3C
|
|
39 D.SysIRQ:: .rmb 2 ; System irq routine $3E
|
|
40 D.UsrSvc:: .rmb 2 ; User service request routine $40
|
|
41 D.SysSvc:: .rmb 2 ; System service request routine $42
|
|
42 D.UsrDis:: .rmb 2 ; User service request dispatch table
|
|
43 D.SysDis:: .rmb 2 ; System service reuest dispatch table
|
|
44 D.Slice:: .rmb 1 ; Process time slice count $48
|
|
45 D.PrcDBT:: .rmb 2 ; Process descriptor block address $49
|
|
46 D.Proc:: .rmb 2 ; Process descriptor address $4B
|
|
47 D.AProcQ:: .rmb 2 ; Active process queue $4D
|
|
48 D.WProcQ:: .rmb 2 ; Waiting process queue $4F
|
|
49 D.SProcQ:: .rmb 2 ; Sleeping process queue $51
|
|
50 D.Time:: .equ . ; Time
|
|
51 D.Year:: .rmb 1 ; $53
|
|
52 D.Month:: .rmb 1 ; $54
|
|
53 D.Day:: .rmb 1 ; $55
|
|
54 D.Hour:: .rmb 1 ; $56
|
|
55 D.Min:: .rmb 1 ; $57
|
|
56 D.Sec:: .rmb 1 ; $58
|
|
57 D.Tick:: .rmb 1 ; $59
|
|
58 D.TSec:: .rmb 1 ; Ticks / second $5A
|
|
59 D.TSlice:: .rmb 1 ; Ticks / time-slice $5B
|
|
60 D.IOML:: .rmb 2 ; I/O mgr free memory low bound $5C
|
|
61 D.IOMH:: .rmb 2 ; I/O mgr free memory hi bound $5E
|
|
62 D.DevTbl:: .rmb 2 ; Device driver table addr $60
|
|
63 D.PolTbl:: .rmb 2 ; Irq polling table addr $62
|
|
64 D.PthDBT:: .rmb 2 ; Path descriptor block table addr $64
|
|
65 D.BTLO:: .rmb 2 ; Bootstrap low address $66
|
|
66 D.BTHI:: .rmb 2 ; Bootstrap hi address $68
|
|
67 D.DMAReq:: .rmb 1 ; DMA in use flag $6A
|
|
68 D.AltIRQ:: .rmb 2 ; Alternate IRQ vector (CC) $6B
|
|
69 D.KbdSta:: .rmb 2 ; Keyboard scanner static storage (CC) $6D
|
|
70 D.DskTmr:: .rmb 2 ; Disk Motor Timer (CC) $6F
|
|
71 D.CBStrt:: .rmb 16 ; reserved for CC warmstart ($71)
|
|
72 D.Clock:: .rmb 2 ; Address of Clock Tick Routine (CC) $81
|
|
73 D.Boot:: .rmb 1 ; Bootstrap attempted flag
|
|
74 D.URtoSs:: .rmb 2 ; address of user to system routine (VIRQ) $84
|
|
75 D.CLTb:: .rmb 2 ; Pointer to clock interrupt table (VIRQ) $86
|
|
76 D.MDREG:: .rmb 1 ; 6309 MD (mode) shadow register $88 (added in V2.01.00)
|
|
77 D.CRC:: .rmb 1 ; CRC checking mode flag $89 (added in V2.01.00)
|
|
78 D.Clock2:: .rmb 2 ; CC Clock2 entry address
|
|
79
|
|
80 .org 0h100
|
|
81 D.XSWI3:: .rmb 3
|
|
82 D.XSWI2:: .rmb 3
|
|
83 D.XSWI:: .rmb 3
|
|
84 D.XNMI:: .rmb 3
|
|
85 D.XIRQ:: .rmb 3
|
|
86 D.XFIRQ:: .rmb 3
|
|
87
|
|
88 ; Table Sizes
|
|
89 BMAPSZ == 32 ; Bitmap table size
|
|
90 SVCTNM == 2 ; Number of service request tables
|
|
91 SVCTSZ == (256-BMAPSZ)/SVCTNM-2 ; Service request table size
|
|
92
|
|
93 .else
|
|
94
|
|
95 ; Level 2 DP vars
|
|
96 .org 0
|
|
97 D.WDAddr:: .rmb 2 ; FHL/Isted WD1002-05 interface base address
|
|
98 D.WDBtDr:: .rmb 1 ; FHL/Isted WD1002-05 boot physical device drive num.
|
|
99 .rmb 5
|
|
100 D.COCOXT:: .rmb 1 ; Busy flag for CoCo-XT driver (one drive at a time)
|
|
101
|
|
102 .org 0h20
|
|
103 D.Tasks:: .rmb 2 ; Task User Table
|
|
104 D.TmpDAT:: .rmb 2 ; Temporary DAT Image stack
|
|
105 D.Init:: .rmb 2 ; Initialization Module ptr
|
|
106 D.Poll:: .rmb 2 ; Interrupt Polling Routine ptr
|
|
107 D.Time == . ; System Time
|
|
108 D.Year:: .rmb 1
|
|
109 D.Month:: .rmb 1
|
|
110 D.Day:: .rmb 1
|
|
111 D.Hour:: .rmb 1
|
|
112 D.Min:: .rmb 1
|
|
113 D.Sec:: .rmb 1
|
|
114 D.Tick:: .rmb 1
|
|
115 D.Slice:: .rmb 1 ; current slice remaining
|
|
116 D.TSlice:: .rmb 1 ; Ticks per Slice
|
|
117 D.Boot:: .rmb 1 ; Bootstrap attempted flag
|
|
118 D.MotOn:: .rmb 1 ; Floppy Disk Motor-On time out
|
|
119 D.ErrCod:: .rmb 1 ; Reset Error Code
|
|
120 D.Daywk:: .rmb 1 ; day of week, com-trol clock
|
|
121 D.TkCnt:: .rmb 1 ; Tick Counter
|
|
122 D.BtPtr:: .rmb 2 ; Address of Boot in System Address space
|
|
123 D.BtSz:: .rmb 2 ; Size of Boot
|
|
124 .ifdef H6309
|
|
125 D.MDREG:: .rmb 1 ; 6309 MD (mode) shadow register
|
|
126 .else
|
|
127 .rmb 1 ; Currently unused in NitrOS-9/6809
|
|
128 .endif
|
|
129 D.CRC:: .rmb 1 ; CRC checking mode flag
|
|
130 D.Tenths:: .rmb 1 ; Tenths and hundredths of second for F$Xtime
|
|
131 D.Task1N:: .rmb 1 ; Map type 1 task number*2 - offset into [D.TskIPt]
|
|
132 D.Quick:: .rmb 1 ; Quick system call return flag - 0 =stack is at $FEE1
|
|
133 D.QIRQ:: .rmb 1 ; Quick IRQ flag - 0 =IRQ wasn't clock, so quick return
|
|
134
|
|
135 .org 0h40
|
|
136 D.BlkMap:: .rmb 4 ; Memory Block Map ptr
|
|
137 D.ModDir:: .rmb 4 ; Module Directory ptrs
|
|
138 D.PrcDBT:: .rmb 2 ; Process Descriptor Block Table ptr
|
|
139 D.SysPrc:: .rmb 2 ; System Process Descriptor ptr
|
|
140 D.SysDAT:: .rmb 2 ; System DAT Image ptr
|
|
141 D.SysMem:: .rmb 2 ; System Memory Map ptr
|
|
142 D.Proc:: .rmb 2 ; Current Process ptr
|
|
143 D.AProcQ:: .rmb 2 ; Active Process Queue
|
|
144 D.WProcQ:: .rmb 2 ; Waiting Process Queue
|
|
145 D.SProcQ:: .rmb 2 ; Sleeping Process Queue
|
|
146 D.ModEnd:: .rmb 2 ; Module Directory end ptr
|
|
147 D.ModDAT:: .rmb 2 ; Module Dir DAT image end ptr
|
|
148 D.CldRes:: .rmb 2 ; Cold Restart vector
|
|
149 D.BtBug:: .rmb 3 ; Boot debug information
|
|
150 D.Pipe:: .rmb 2
|
|
151
|
|
152 .org 0h6B
|
|
153 D.Crash:: .rmb 6 ; Pointer to CC Crash Routine
|
|
154 D.CBStrt:: .rmb 0hB ; Reserved for CC warmstart ($71)
|
|
155 D.QCnt:: .rmb 1 ; Count of number of quick system calls performed
|
|
156
|
|
157 .org 0h80
|
|
158 D.DevTbl:: .rmb 2 ; I/O Device Table
|
|
159 D.PolTbl:: .rmb 2 ; I/O Polling Table
|
|
160 .rmb 4 ; reserved
|
|
161 D.PthDBT:: .rmb 2 ; Path Descriptor Block Table ptr
|
|
162 D.DMAReq:: .rmb 1 ; DMA Request flag
|
|
163
|
|
164 ; CoCo 3 STUFF COMES NEXT
|
|
165 ; This area is used for the CoCo Hardware Registers
|
|
166 ;
|
|
167 .org 0h90
|
|
168 D.HINIT:: .rmb 1 ; GIME INIT0 register (hardware setup $FF90)
|
|
169 D.TINIT:: .rmb 1 ; GIME INIT1 register (timer/task register $FF91)
|
|
170 D.IRQER:: .rmb 1 ; Interrupt enable regsiter ($FF92)
|
|
171 D.FRQER:: .rmb 1 ; Fast Interrupt enable register ($FF93)
|
|
172 D.TIMMS:: .rmb 1 ; Timer most significant nibble ($FF94)
|
|
173 D.TIMLS:: .rmb 1 ; Timer least significant byte ($FF95)
|
|
174 D.RESV1:: .rmb 1 ; reserved register ($FF96)
|
|
175 D.RESV2:: .rmb 1 ; reserved register ($FF97)
|
|
176 D.VIDMD:: .rmb 1 ; video mode register ($FF98)
|
|
177 D.VIDRS:: .rmb 1 ; video resolution register ($FF99)
|
|
178 D.BORDR:: .rmb 1 ; border register ($FF9A)
|
|
179 D.RESV3:: .rmb 1 ; reserved register ($FF9B)
|
|
180 D.VOFF2:: .rmb 1 ; vertical scroll/offset 2 register ($FF9C)
|
|
181 D.VOFF1:: .rmb 1 ; vertical offset 1 register ($FF9D)
|
|
182 D.VOFF0:: .rmb 1 ; vertical offset 0 register ($FF9E)
|
|
183 D.HOFF0:: .rmb 1 ; horizontal offset 0 register ($FF9F)
|
|
184 D.Speed:: .rmb 1 ; Speed of COCO CPU 0=slow,1=fast ($A0)
|
|
185 D.TskIPt:: .rmb 2 ; Task image Pointer table (CC) ($A1)
|
|
186 D.MemSz:: .rmb 1 ; 128/512K memory flag (CC) ($A3)
|
|
187 D.SSTskN:: .rmb 1 ; System State Task Number (COCO) ($A4)
|
|
188 D.CCMem:: .rmb 2 ; Pointer to beginning of CC Memory ($A5)
|
|
189 D.CCStk:: .rmb 2 ; Pointer to top of CC Memory ($A7)
|
|
190 D.Flip0:: .rmb 2 ; Change to Task 0 ($A9)
|
|
191 D.Flip1:: .rmb 2 ; Change to reserved Task 1 ($AB)
|
|
192 D.VIRQ:: .rmb 2 ; VIRQ Polling routine ($AD)
|
|
193 D.IRQS:: .rmb 1 ; IRQ shadow register (CC Temporary) ($AF)
|
|
194 D.CLTb:: .rmb 2 ; VIRQ Table address ($B0)
|
|
195 D.AltIRQ:: .rmb 2 ; Alternate IRQ Vector (CC) ($B2)
|
|
196 D.GPoll:: .rmb 2 ; CC GIME IRQ enable/disable toggle
|
|
197 D.Clock2:: .rmb 2 ; CC Clock2 entry address
|
|
198 .org 0hC0
|
|
199 D.SysSvc:: .rmb 2 ; System Service Routine entry
|
|
200 D.SysDis:: .rmb 2 ; System Service Dispatch Table ptr
|
|
201 D.SysIRQ:: .rmb 2 ; System IRQ Routine entry
|
|
202 D.UsrSvc:: .rmb 2 ; User Service Routine entry
|
|
203 D.UsrDis:: .rmb 2 ; User Service Dispatch Table ptr
|
|
204 D.UsrIRQ:: .rmb 2 ; User IRQ Routine entry
|
|
205 D.SysStk:: .rmb 2 ; System stack
|
|
206 D.SvcIRQ:: .rmb 2 ; In-System IRQ service
|
|
207 D.SysTsk:: .rmb 1 ; System Task number
|
|
208 .org 0hE0
|
|
209 D.Clock:: .rmb 2
|
|
210 D.XSWI3:: .rmb 2
|
|
211 D.XSWI2:: .rmb 2
|
|
212 D.XFIRQ:: .rmb 2
|
|
213 D.XIRQ:: .rmb 2
|
|
214 D.XSWI:: .rmb 2
|
|
215 D.XNMI:: .rmb 2
|
|
216 D.ErrRst:: .rmb 2
|
|
217 D.SysVec:: .rmb 2 ; F$xxx system call vector for NitrOS-9 Level 3
|
|
218 D.SWI3:: .rmb 2
|
|
219 D.SWI2:: .rmb 2
|
|
220 D.FIRQ:: .rmb 2
|
|
221 D.IRQ:: .rmb 2
|
|
222 D.SWI:: .rmb 2
|
|
223 D.NMI:: .rmb 2
|
|
224
|
|
225 ;
|
|
226 ; Level 2 Block Map flags
|
|
227 ;
|
|
228 NotRAM == 0b10000000 ; Block Not RAM flag
|
|
229 VidRAM == 0b00000100 ; Block is being used as Video RAM
|
|
230 ModBlock == 0b00000010 ; Module in Block
|
|
231 RAMinUse == 0b00000001 ; RAM Block in use flag
|
|
232
|
|
233 ;
|
|
234 ; Service Dispatch Table special entries
|
|
235 ;
|
|
236 IOEntry == 254
|
|
237
|
|
238 .endif
|