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