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