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