#!/bin/bash # Assemble the 1.44 MB FreeDOS boot floppies. Needs mtools. # build/dosmqtt.img : A.EXE + B.EXE (MQTT demo, two machines) # build/gradio.img : G.EXE (Gradio demo, one machine) set -euo pipefail ROOT="$(cd "$(dirname "$0")/.." && pwd)"; D="${DEPS:-$ROOT/deps}"; OUT="$ROOT/build" make_floppy() { # make_floppy ... local NAME="$1" IMG="$OUT/$1" AUTO="$ROOT/src/dos/$2"; shift 2 cp "$D/fd14/144m/x86BOOT.img" "$IMG" # Drop installer-only files to make room (about 1 MB stays free). mdel -i "$IMG" ::/SETUP.BAT ::/FREEDOS/SETUP.BAT 2>/dev/null || true mdeltree -i "$IMG" ::/FREEDOS/NLS ::/FREEDOS/CONFIGS 2>/dev/null || true for f in FDISK.EXE FDISK.INI FORMAT.EXE SLICEREX.EXE SYS.COM FC.EXE FDAPM.COM COUNTRY.SYS FASTHELP.BAT SETLANG.BAT WELCOME.BAT; do mdel -i "$IMG" "::/FREEDOS/BIN/$f" 2>/dev/null || true; done mdel -i "$IMG" ::/FREEDOS/BIN/V*.COM 2>/dev/null || true sed 's/\r$//; s/$/\r/' "$AUTO" > "$OUT/FDAUTO.BAT.tmp"; mcopy -o -i "$IMG" "$OUT/FDAUTO.BAT.tmp" ::/FDAUTO.BAT for f in FDCONFIG.SYS MTCP.CFG; do sed 's/\r$//; s/$/\r/' "$ROOT/src/dos/$f" > "$OUT/$f"; mcopy -o -i "$IMG" "$OUT/$f" "::/$f"; done mcopy -o -i "$IMG" "$D/ne2k/NE2000.COM" ::/NE2000.COM mcopy -o -i "$IMG" "$D/mtcp-bin/dhcp.exe" ::/DHCP.EXE for exe in "$@"; do mcopy -o -i "$IMG" "$OUT/$exe" "::/$exe"; done echo "== $NAME"; mdir -i "$IMG" :: | tail -12 } make_floppy dosmqtt.img FDAUTO.BAT A.EXE B.EXE make_floppy gradio.img FDAUTO_G.BAT G.EXE