Changeset 3523847 in buchla-emu
- Timestamp:
- 08/06/2017 08:51:38 AM (7 years ago)
- Branches:
- master
- Children:
- 05e6dbe
- Parents:
- 0edef06
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
readme.txt
r0edef06 r3523847 113 113 Then, to cross-build the emulator, invoke 114 114 115 make buchla WIN=1115 make buchla.exe WIN=1 116 116 117 117 from the top-level directory of this repository. Defining the "WIN" … … 119 119 library directory. 120 120 121 In addition to the emulator, we need to build the mkdisk utility, 122 which we'll use to create a 720-KiB floppy disk image that can be read 123 by the Buchla firmware. 124 125 Building mkdisk works pretty much like building the emulator. On Linux 126 and OS X, invoke 127 128 make mkdisk 129 130 from the top-level directory of this repository. To cross-build the 131 Windows version, invoke 132 133 make mkdisk.exe WIN=1 134 135 instead. 136 137 138 Running the emulator 139 -------------------- 140 141 This is where this repository, buchla-emu, meets its companion 142 repository, buchla-68k. We assume that you built the following files 143 according to the instructions in the buchla-68k repository: 144 145 bios.abs 146 midas.abs 147 148 Please copy (or symlink) them into the top-level directory of this 149 repository, buchla-emu. 150 151 bios.abs contains the Buchla 700's BIOS code. The file is loaded by 152 the emulator directly to emulate the BIOS PROM. 153 154 midas.abs is the MIDAS VII software. Unlike the BIOS, which resides in 155 a PROM, it is loaded from a floppy disk. To create this floppy disk, 156 we need the mkdisk utility. 157 158 mkdisk expects to be run from inside the directory that contains 159 midas.abs and produces a disk image file, buchla.disk in the same 160 directory. For example, on Linux: 161 162 ~/buchla-emu$ ls -l midas.abs 163 lrwxrwxrwx 1 emu emu 23 Jul 30 18:07 midas.abs -> ../buchla-68k/midas.abs 164 ~/buchla-emu$ ./mkdisk 165 ~/buchla-emu$ ls -l buchla.disk 166 -rw-r--r-- 1 emu emu 737280 Aug 6 09:44 buchla.disk 167 168 Now we have everything in place to run the emulator. On Linux and OS X 169 you can invoke it directly from the top-level directory of this 170 repository: 171 172 ~/buchla-emu$ ./buchla 173 174 If you prefer to install the emulator elsewhere, be sure to copy the 175 following files: 176 177 buchla | buchla.exe emulator executable (.exe for Windows) 178 ttf/vera-sans-mono.ttf emulator font 179 bios.abs BIOS code 180 buchla.disk disk image 181 182 This also applies to copying the cross-compiled Windows emulator to a 183 Windows machine. 184 185 If you would like to keep the BIOS code, disk image, and font separate 186 from the emulator executable, check out the emulator's -b, -d, and -f 187 command line options. Use -h for an overview of all available options. 188 189 190 Cross-debugging the firmware 191 ---------------------------- 192 193 While the emulator is running, it listens on TCP port 12053 for 194 incoming connections from a GDB cross-debugger. This allows for 195 comfortable source-level debugging of the cross-compiled BIOS and 196 MIDAS VII code, while it runs in the emulator. 197 198 We assume that you have a GCC cross-toolchain in /opt/cross-m68k, as 199 described in the buchla-68k repository. Based on that, we build a 200 GDB cross-debugger: 201 202 # If you haven't yet done so, add the cross-toolchain to your 203 # PATH, so that the GDB build can find it. 204 205 export PATH="/opt/cross-m68k/bin:${PATH}" 206 207 tar zxvf gdb-7.12.tar.gz 208 cd gdb-7.12 209 210 mkdir build 211 cd build 212 213 ../configure --prefix=/opt/cross-m68k --target=m68k-none-elf 214 215 make -j2 216 make install 217 218 The Buchla firmware uses its own (Atari-like) object and executable 219 file format. However, the cross-toolchain and the cross-debugger 220 support the ELF standard. 221 222 When you built the BIOS and MIDAS VII software, you ended up with two 223 files in the Buchla's executable file format, bios.abs and midas.abs. 224 However, the cross-build process also produces matching ELF files, 225 bios.elf and midas.elf, suitable for the cross-debugger. 226 227 Depending on whether you would like to cross-debug the BIOS or MIDAS 228 VII, you'd specify either bios.elf or midas.elf when invoking the 229 cross-debugger. 230 231 To follow along the following example, copy (or symlink) bios.elf and 232 midas.elf from the buchla-68k repository into the top-level directory 233 of this repository. 234 235 In order to open a debug session for the BIOS, run the cross-debugger 236 with bios.abs and connect it to the running emulator using GDB's 237 238 target remote :12053 239 240 command. 12053 is the port on which the emulator listens for incoming 241 GDB connections. 242 243 host:~/buchla-emu$ m68k-none-elf-gdb ./bios.elf 244 GNU gdb (GDB) 7.12 245 Copyright (C) 2016 Free Software Foundation, Inc. 246 [...] 247 (gdb) target remote :12053 248 Remote debugging using :12053 249 trwzsup () at rom/bios.s:832 250 832 move.l 0(a0,d0),d0 | Get routine address 251 (gdb) 252 253 From here on, everything is pretty much standard GDB, for example: 254 255 (gdb) break pscan 256 Breakpoint 1 at 0x105a64: file rom/romp.c, line 3403. 257 (gdb) cont 258 [...] 259 (gdb) bt 260 #0 pscan () at rom/romp.c:3403 261 #1 0x00105e96 in main () at rom/romp.c:3587 262 #2 0x00105fd6 in Croot (cp=0x0) at prolog/croot.c:141 263 #3 0x00105f52 in start1 () at prolog/fsmain.s:59 264 (gdb) 265 266 In order to debug MIDAS VII, run the cross-debugger with midas.elf, 267 instead: 268 269 host:~/buchla-emu$ m68k-none-elf-gdb ./midas.elf 270 GNU gdb (GDB) 7.12 271 Copyright (C) 2016 Free Software Foundation, Inc. 272 [...] 273 121 274 122 275 Emulated hardware … … 132 285 * Motorola MC6840: Timers. 133 286 134 * Motorola MC6850: Serial console and MIDI ports.287 * Rockwell R65C52: Serial console and MIDI ports. 135 288 136 289 * Epson SED1335: LCD controller. … … 180 333 181 334 2. A second chip for the actual sound generation. This is likely 182 a DSP, possibly a Hitachi HD61810, which supports a 16-bit 183 floating-point format that's also found in the firmware 184 source code (12-bit mantissa, 4-bit exponent). 185 186 This chip takes in the current levels of a voice's envelopes 187 and, based on them, performs the FM synthesis for this voice 188 by modulating the user-drawn carrier waves A and B according 189 to the selected FM configuration (algorithm). 335 a DSP. 336 337 XXX - Details to be filled in. 190 338 191 339 We don't know how many of the envelopes not related to FM … … 204 352 would be great to be able to compare the emulation to real hardware. 205 353 206 If it's non-functional, this is also fine. We might be able to gain207 some insights from readingthe FPU microcode PROMs.354 If your Buchla is non-functional, this is also fine. We might be able 355 to gain some insights from reading out the FPU microcode PROMs.
Note:
See TracChangeset
for help on using the changeset viewer.