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