#!/bin/bash # Build the SCSI VOLUME the P4 rigs read, and the blank card ROM MAME needs to # instantiate the card. Sourced-by-calling from tools/bench/scsi_run.sh and # tools/bench/pace_run.sh so there is ONE copy of the layout. # # tools/bench/mkvol.sh [container.dlx] # # ONE COPY, ON PURPOSE. The volume is tmp/stream_disk.bin -- byte for byte the # file the host-file ring rig reads -- laid out as 512 B sectors. If two scripts # each built it, a difference between the SCSI rig and the modelled-transport rig # could be a difference in what they were reading, and the whole value of running # both is that it cannot be. This tree has already paid twice for a transform # with two copies of itself (FINDINGS 49.7.5, and check.sh's dlxload note). # # THE BLANK BOOT ROM is the substitution session 25 argued for and it is # unchanged: MAME refuses to instantiate the CZ-6BS1 without an 8 KB # `scsiexrom.bin` (CRC 7be488de) that the player never executes, so a zero-filled # placeholder goes on a SEPARATE rompath and the user's romset is untouched. # MAME prints WRONG CHECKSUMS, as it should. DO NOT reuse this rompath for # anything that boots from the card or calls SCSI IOCS -- those DO execute it. set -e cd "$(dirname "$0")/../.." DLX=${1:-tmp/rc_fr_singe_scsi_span.dlx} [ -f tmp/stream_disk.bin ] || python3 tools/bench/prep_stream.py "$DLX" > /dev/null if [ ! -f tmp/dlxdisk.chd ] || [ tmp/stream_disk.bin -nt tmp/dlxdisk.chd ]; then python3 - <<'PY' d = open("tmp/stream_disk.bin", "rb").read() n = (len(d) + 511) // 512 open("tmp/dlxdisk.img", "wb").write(d + b"\0" * (n * 512 - len(d))) print(f" disc image: {len(d)} B of records -> {n} sectors") PY rm -f tmp/dlxdisk.chd chdman createhd -i tmp/dlxdisk.img -o tmp/dlxdisk.chd -ss 512 > /dev/null 2>&1 fi mkdir -p tmp/p4roms/x68k_cz6bs1 [ -f tmp/p4roms/x68k_cz6bs1/scsiexrom.bin ] || \ head -c 8192 /dev/zero > tmp/p4roms/x68k_cz6bs1/scsiexrom.bin