A Boot Magic (
BMAGIC.EXE) egy DOS-program (C++, Open Watcom, 16 bites, kb. 64 KB), amely az MS-DOS 6 és újabb bootmenüjét szerkeszti. Beolvassa az indítómeghajtó gyökerében lévőCONFIG.SYS-t,AUTOEXEC.BAT-ot ésMSDOS.SYS-t, feltérképezi bennük a menüt, és menüpontokat lehet vele felvenni, szerkeszteni, másolni, átnevezni, mozgatni és törölni, a soraikat szerkeszteni, és beállítani az alapértelmezett pontot, a várakozási időt, a színeket és a NumLockot. A Windows 95/98MSDOS.SYSindítási beállításait is kezeli.Csak azokat a sorokat módosítja, amelyeket muszáj. Minden mentés előtt diffben megmutatja a változásokat, és elmenti a fájlokat; bármelyik mentés összevethető a lemezen lévő fájlokkal, vagy visszaállítható. Rétegezve épül a DOSLIB-re, mint a GMENU és a DOSINST.

DOSINST INSTALL BMAGIC a DOSINST programtárából a legfrissebb kiadást a C:\APPS\BMAGIC-be telepíti, újra futtatva frissíti. A frissítés megtartja a mentéseket (a DOSINST nem nyúl a nem általa telepített fájlokhoz); a DOSINST REMOVE BMAGIC a mappát a mentésekkel együtt törli.BMAGIC.EXE-t bármelyik mappába másold, például a C:\APPS\BMAGIC\-be.BMAGIC az indítómeghajtó bootfájljai
BMAGIC D: egy másik meghajtó bootfájljai (például egy előkészített lemezé)
Az indítómeghajtót a DOS-tól kérdezi (4.0-tól); ha a DOS nem tudja, a C:-t használja. DOSBoxban add meg a meghajtót (BMAGIC C:), mert a DOSBox nem ezekből a fájlokból indul. A kilépési kód 0, ha írt fájlt, 1, ha nem, és 2 hiba esetén. Mentés után indítsd újra a gépet: a DOS csak induláskor olvassa ezeket a fájlokat.
CONFIG.SYS AUTOEXEC.BAT
[MENU] @ECHO OFF
MENUITEM=NORMAL,Normal start PATH C:\DOS <- minden konfiguráció
MENUITEM=GAMES,Games (EMS) GOTO %CONFIG%
MENUDEFAULT=NORMAL,10 :NORMAL
MENUCOLOR=15,1 LH SMARTDRV
NUMLOCK=OFF GOTO END
:GAMES
[COMMON] LH MOUSE
DOS=HIGH,UMB <- minden pont GOTO END
:END
[NORMAL]
DEVICE=C:\DOS\HIMEM.SYS
[GAMES]
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
Egy menüpont a [MENU] egy MENUITEM sora, egy [NÉV] blokk a CONFIG.SYS-ben, és az AUTOEXEC.BAT egy szakasza a :NÉV címkétől a következő címkéig. A DOS a CONFIG változóba a választott pont nevét teszi, a GOTO %CONFIG% pedig a címkéjére ugrik. A szakaszok egy közös zárócímkére mutató GOTO-val végződnek (:END, ha a fájl nem mást használ).
| Művelet | Billentyű | Mi változik |
|---|---|---|
| Új pont | Ins | Egy MENUITEM sor az utolsó után, egy [NÉV] blokk az utolsó menüpont-blokk után, egy szakasz a zárócímke előtt GOTO END-del. Lehet egy másik pont másolata is. Menü nélküli CONFIG.SYS-ben az első pont létrehozza a [MENU]-t, a már meglévő sorok pedig a [COMMON] alá kerülnek. |
| Átnevezés | F3 | A MENUITEM sor, a [NÉV] sor, a MENUDEFAULT, az INCLUDE=NÉV sorok és a :NÉV címke. |
| Törlés | Del, majd Y | A MENUITEM sor, a blokk, a szakasz, a MENUDEFAULT és az INCLUDE sorok. Az utolsó pont törlése a [MENU]-t és a GOTO %CONFIG%-ot is eltávolítja. |
| Mozgatás | Ctrl+PgUp / Ctrl+PgDn | Két MENUITEM sort cserél meg, vagyis a menü sorrendjét. |
| Menü | F6, F5 | MENUDEFAULT (pont és 0-90 mp várakozás), MENUCOLOR, NUMLOCK; az F5 a kijelölt pontot teszi alapértelmezetté. |
| Sorok | Enter, F8 | Egy pont blokkja és szakasza, vagy egy teljes fájl (Tab: a következő fájl). A sorok 200 karakterig szerkeszthetők. |
| MSDOS.SYS | F7 | BootMenu, BootMenuDefault, BootMenuDelay, BootGUI, Logo, BootKeys a Windows 95/98 MSDOS.SYS [Options] blokkjában; az attribútumai megmaradnak. Az MS-DOS 6 bináris MSDOS.SYS-éhez nem nyúl. |
A név 1-8 betű, számjegy, _ vagy -, és nem lehet MENU vagy COMMON. A batch-címkéknek csak az első 8 karaktere számít, ezért annak különböznie kell a többi pontétól. Az a pont, amelynek hiányzik a blokkja vagy a címkéje, pirosan none vagy no label jelzést kap: a hiányzó címke megakasztja a GOTO %CONFIG%-ot. Az F1 minden billentyűt megmutat.
Mentésig semmi nem íródik ki. Az F4 megmutatja az eddigi változásokat, az F2 előbb ugyanezt az áttekintést: a törölt sorok pirosak, az újak zöldek, körülöttük 3 változatlan sor. Az áttekintésben az F2 ment:
BMAGIC.EXE melletti BACKUP\NNN\-be: minden bootfájl bájtra pontos másolata és egy SET.INI a dátummal, idővel, meghajtóval és egy megjegyzéssel. Ha a mentés nem sikerül, nincs írás.X.$$$ néven íródik ki; a régi X.BM$ nevet kap, az új átveszi a nevét, aztán az X.BM$ törlődik. Ha bármelyik lépés elakad, a régi fájl visszakerül. A sorvégek és az EOF-bájt változatlanok maradnak.Az F9 kilistázza a mentéseket. Az Enter ugyanabban a diff-nézetben veti össze a kijelöltet a lemezen lévő fájlokkal, az Ins most készít mentést, a Del töröl egyet, az R pedig visszaállít egyet — előtte elmenti a fájlokat, amelyeket felülír.
A fordításhoz Open Watcom v2 kell (a ~/.local/opt/watcom-ban, vagy WATCOM=<mappa>), ugyanaz az eszközlánc, mint a többi DOS-programnál:
SOURCE/build.sh # ../BMAGIC.EXE
SOURCE/build.sh test # a tesztváltozat (billentyűk a TESTKEYS.TXT-ből)
SOURCE/test/unit/run.sh # unit-tesztek a fejlesztőgépen, előtte rétegellenőrzés
python3 SOURCE/test/run.py # képernyőtesztek DOSBoxban, minta-bootmeghajtókon
A rétegek a DOSLIB szabályait követik: model (a menütérkép, a szerkesztő, a diff, I/O nélkül), repository (a bootfájlok és a mentéskészletek), service, controller, view, platform (az indítómeghajtó, az attribútumok, az óra) és app; a DOSLIB git subtree-ként van a SOURCE/lib-ben.
A Woodpecker minden pushnál lefuttatja a stílusellenőrzést, a rétegellenőrzést és a unit-teszteket, aztán a fordítást és a DOSBox-teszteket. A metadata.json megemelt version-je (vele együtt a SOURCE/app/version.h Version értéke) a masterre pusholva a pipeline-tól megkapja a vX.Y.Z tagjét, és ez a tag Gitea-kiadást készít, és a katalógusba publikálja a kiadást, ahonnan a BMAGIC a DOSINST programtárába kerül. Minden lépés a dos-tools builder image-ének (git.teletypegames.org/build/dos-builder) egy parancsa, előre telepített eszközlánccal; a repóban csak a platform: dos marker és a metadata.json van, amelynek dos szakasza mondja meg, mi kerül egy kiadásba. A képernyőtesztek egyszerre négy esetet futtatnak (JOBS, mindegyiket a saját mappájában). A Gitea-kiadást a WarpEngine közös release lépése készíti a dos-pack által felsorolt fájlokból. Store lépés nincs: a DOSINST programtára az engine DOS-polca, amelyet minden publikáláskor a katalógusból épít újra, így a pipeline-nak nem kell deploy-kulcs.
MENUITEM és a SUBMENU sorok megmaradnak, de nem látszanak; a fájlszerkesztővel (F8) elérhetők.AUTOEXEC.BAT-ból csak a GOTO %CONFIG% szerkezetet térképezi fel. Az IF "%CONFIG%"=="GAMES" ... sorok megmaradnak, de átnevezéskor nem változnak.