EN /HU | Belépés

BMAGIC

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 és MSDOS.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/98 MSDOS.SYS indí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.

A Boot Magic egy bootmenü nélküli meghajtón

Telepítés

  • DOSINST-tel: a 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.
  • Kézzel: a BMAGIC.EXE-t bármelyik mappába másold, például a C:\APPS\BMAGIC\-be.
TXT
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.

A bootmenü

TXT
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és és visszaállítás

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:

  1. Új mentéskészlet kerül a 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.
  2. Minden módosított fájl 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.
  3. A csak olvasható, rejtett vagy rendszer attribútumú fájlok visszakapják az attribútumukat.

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.

Fordítás és tesztek

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:

SH
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.

Korlátok

  • Legfeljebb 9 menüpont, ahogy a DOS is mutatja. A további MENUITEM és a SUBMENU sorok megmaradnak, de nem látszanak; a fájlszerkesztővel (F8) elérhetők.
  • Az 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.
  • Egy fájl legfeljebb 16000 bájt és 500 sor lehet.
  • A diff legfeljebb 50 sort néz előre, hogy hol egyeznek újra a fájlok; a nagyobb áthelyezések törölt és új sorokként jelennek meg.