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