]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blame - cbios/config.inc
Remove 'inidone' initialisation bypassing.
[z180-stamp-cpm3.git] / cbios / config.inc
CommitLineData
3c56f4c2 1 .xlist\r
fcf62661
L
2\r
3FALSE equ 0\r
4TRUE equ NOT FALSE\r
5\r
6\r
fcf62661
L
7banked equ true\r
8\r
9;-----------------------------------------------------\r
10; CPU and BANKING types\r
11\r
12\r
13CPU_Z180 equ TRUE\r
14CPU_Z80 equ FALSE\r
15\r
16ROMSYS equ FALSE\r
17\r
18AVRCLK equ 18432 ;[KHz]\r
19\r
20 if CPU_Z180\r
21\r
22;-----------------------------------------------------\r
23;FOSC equ AVRCLK/2 ;Oscillator frequency [KHz]\r
24;PHI equ FOSC*2 ;CPU frequency (clock doubler enabled)\r
25\r
26;----------------------------------------------------------------------\r
27; Baudrate Generator for x16 clock mode:\r
28; TC = (f PHI / (32 * baudrate)) - 2\r
29;\r
30; PHI [MHz]: 9.216 18.432\r
31; baudrate TC TC\r
32; ----------------------\r
33; 115200 - 3\r
34; 57600 3 8\r
35; 38400 - 13\r
36; 19200 13 28\r
37; 9600 28 58\r
38\r
39\r
40;-----------------------------------------------------\r
41; Programmable Reload Timer (PRT)\r
42\r
43PRT_PRE equ 20 ;PRT prescaler\r
44\r
45;-----------------------------------------------------\r
46; MMU\r
47\r
48COMMON_SIZE equ 4*1024 ;Common Area size in bytes\r
49 ;must be multiple of 4K\r
50if (COMMON_SIZE mod 1000h)\r
51 .printx COMMON_SIZE not multiple of 4K!\r
52 end ;stop assembly\r
53endif\r
54CMN_SIZE equ COMMON_SIZE/1000h ;4K units\r
55BNK_SIZE equ 64/4 - CMN_SIZE ;bank size (4K units)\r
56BANKS equ (512/4 - CMN_SIZE)/BNK_SIZE ;max nr. of banks\r
57\r
58; Logical address space, CBAR values\r
59\r
60CA equ 10h - CMN_SIZE ;common area start (64K - common size)\r
61BA equ 0 ;banked area start\r
62\r
63 if 0\r
64\r
65SYS$CBR equ 0\r
66SYS$CBAR equ CA*16 + CA ;CBAR in system mode\r
67USR$CBAR equ CA*16 + BA ;CBAR in user mode (CP/M)\r
68\r
69 endif\r
70 if 1\r
71\r
72SYS$CBR equ BNK_SIZE\r
73SYS$CBAR equ CA*16 + CA ;CBAR in system mode\r
74USR$CBAR equ CA*16 + BA ;CBAR in user mode (CP/M)\r
75\r
76 endif\r
77\r
78\r
79;-----------------------------------------------------\r
80\r
81CREFSH equ 0 ;Refresh rate register (disable refresh)\r
82CWAITIO equ 3 shl IWI0 ;Max I/O Wait States, 0 Memory Wait States\r
83PHI_X2 equ 0 ;set to M_X2CM to enable the clock doubler\r
84\r
85 endif ;CPU_Z180\r
86 if CPU_Z80\r
87\r
88PHI equ AVRCLK/5 ;CPU frequency [KHz]\r
89BAUDCLCK equ AVRCLK/10 ;Baudrate clock [KHz]\r
90;BDCLK16 equ\r
91\r
92SIOAD EQU 0bch\r
93SIOAC EQU 0bdh\r
94SIOBD EQU 0beh\r
95SIOBC EQU 0bfh\r
96\r
97CTC0 EQU 0f4h\r
98CTC1 EQU 0f5h\r
99CTC2 EQU 0f6h\r
100CTC3 EQU 0f7h\r
101\r
102;\r
103; Init Serial I/O for console input and output (SIO-A)\r
104;\r
105; Baudrate clock: 1843200 Hz (Bus connector pin A17)\r
106;\r
107; Baudrate Divider SIO CTC\r
108; ---------------------------------\r
109; 115200 16 16 1\r
110; 57600 32 16 2\r
111; 38400 48 16 3\r
112; 19200 96 16 6\r
113; 9600 192 16 12\r
114; 4800 384 16 24\r
115; 2400 768 16 48\r
116; 1200 1536 16 96\r
117; 600 3072 16 192\r
118; 300 6144 64 92\r
119\r
120 endif ; CPU_Z80\r
121\r
122 if ROMSYS\r
123c$rom equ 0a5h\r
124ROM_EN equ 0C0h\r
125ROM_DIS equ ROMEN+1\r
126 if CPU_Z180\r
127CWAITROM equ 2 shl MWI0\r
128 endif\r
129 endif\r
130\r
131\r
132DDTZRSTVEC equ 030h ;DDTZ Restart vector (breakpoints)\r
133\r
fcf62661
L
134mtx.fifo_len equ 64 ;Message transfer fifos\r
135mtx.fifo_id equ 0 ; This *must* have #0\r
136mrx.fifo_len equ 64\r
137mrx.fifo_id equ 1\r
138\r
139ci.fifo_len equ 32 ;AVRCON (USB0) Character I/O via AVR\r
140ci.fifo_id equ 2\r
141co.fifo_len equ 32\r
142co.fifo_id equ 3\r
143\r
144s0.rx_len equ 128 ;Serial 0 (ASCI0) buffers\r
145s0.rx_id equ 4 ;\r
146s0.tx_len equ 128 ;\r
147s0.tx_id equ 5 ;\r
148\r
149s1.rx_len equ 128 ;Serial 1 (ASCI1) buffers\r
150s1.rx_id equ 6 ;\r
151s1.tx_len equ 128 ;\r
152s1.tx_id equ 7 ;\r
153\r
154AVRINT5 equ 4Fh\r
155AVRINT6 equ 5Fh\r
156;PMSG equ 80h\r
157\r
4fc939ea
L
158IDEBASE equ 60h\r
159\r
fcf62661
L
160;-----------------------------------------------------\r
161; Definition of (logical) top 2 memory pages\r
162\r
163sysram_start equ 0FE00h\r
164bs$stack$size equ 80\r
165\r
166isvsw_loc equ 0FEE0h\r
167\r
168ivtab equ 0ffc0h ;int vector table\r
169iv2tab equ ivtab + 2*9\r
170\r
171\r
172\r
173;-----------------------------------------------------\r
174\r
175o.id equ -4\r
176o.mask equ -3\r
177o.in_idx equ -2\r
178o.out_idx equ -1\r
179\r
6dd88c25 180 ;.lall\r
fcf62661
L
181\r
182mkbuf macro id,name,size\r
183 if ((size AND (size-1)) NE 0) OR (size GT 256)\r
184 .printx Error: buffer ^size must be power of 2 and in range 0..256!\r
185 name&.mask equ ;wrong size error\r
186 else\r
187 db id\r
188 db size-1\r
189 ds 2\r
190 name:: ds size\r
191 name&.mask equ low (size-1)\r
192 if size ne 0\r
193 name&.end equ $-1\r
194 name&.len equ size\r
195 name&.id equ id\r
196 endif\r
197 endif\r
198endm\r
199\r
200;-----------------------------------------------------\r
201\r
202inidat macro\r
203 cseg\r
204??ps.a defl $\r
205 endm\r
206\r
207inidate macro\r
208??ps.len defl $ - ??ps.a\r
209 dseg\r
210 ds ??ps.len\r
211 endm\r
212\r
213;-----------------------------------------------------\r
214\r
215b0call macro address\r
216 call _b0call\r
217 dw address\r
218 endm\r
1c7e3963
L
219\r
220;-----------------------------------------------------\r
221; shift accu right logical n bits\r
222\r
223srlan macro n\r
224 if n > 7 or n < 0\r
225 xor a\r
226 exitm\r
227 endif\r
228\r
229 if n > 4\r
230 rept 8-n\r
231 rlca\r
232 endm\r
233 and (1 << (8-n)) - 1\r
234 exitm\r
235 endif\r
236\r
237 if n > 2\r
238 rept n\r
239 rrca\r
240 endm\r
241 and (1 << (8-n)) - 1\r
242 exitm\r
243 endif\r
244\r
245 rept n\r
246 srl a\r
247 endm\r
248 endm\r
249\r
250;-----------------------------------------------------\r
251; convert bit mask to bit number\r
252\r
253m2b macro name,mask\r
254 local n\r
255 n defl mask\r
256 name defl 0\r
257 rept 8\r
258 n defl n/2\r
259 if n = 0\r
260 exitm\r
261 endif\r
262 name defl name+1\r
263 endm\r
264 endm\r
3c56f4c2
L
265\r
266 .list\r