TITLE=BMAGIC ROUTE=/dos/bmagic LOCALE=hu MODIFIED=1792417593 URL=https://wiki.teletypegames.org/hu/dos/bmagic L=1 #17 L=2 #18 L=3 #16 L=4 https://git.teletypegames.org/dos/bmagic L=5 https://git.teletypegames.org/dos/bmagic/releases/download/v0.1.0/BMAGIC-v0.1.0.zip L=6 https://git.teletypegames.org/dos/bmagic/releases/download/v0.1.0/BMAGIC.EXE L=7 https://git.teletypegames.org/dos/bmagic/releases L=8 https://github.com/open-watcom/open-watcom-v2 q│ A Boot Magic (cBMAGIC.EXEq) egy DOS-program (C++, Open Watcom, 16 bites, kb. q│ 64 KB), amely az MS-DOS 6 és újabb bootmenüjét szerkeszti. Beolvassa az q│ indítómeghajtó gyökerében lévő cCONFIG.SYSq-t, cAUTOEXEC.BATq-ot és cMSDOS.SYSq-t, q│ feltérképezi bennük a menüt, és menüpontokat lehet vele felvenni, q│ szerkeszteni, másolni, átnevezni, mozgatni és törölni, a soraikat q│ szerkeszteni, és beállítani az alapértelmezett pontot, a várakozási időt, a q│ színeket és a NumLockot. A Windows 95/98 cMSDOS.SYSq indítási beállításait is q│ kezeli. q│ q│ Csak azokat a sorokat módosítja, amelyeket muszáj. Minden mentés előtt q│ diffben megmutatja a változásokat, és elmenti a fájlokat; bármelyik mentés q│ összevethető a lemezen lévő fájlokkal, vagy visszaállítható. Rétegezve épül q│ a 1DOSLIB-re, mint a 2GMENU és a 3DOSINST. • bRepó:0 4git.teletypegames.org/dos/bmagic • bLetöltés, v0.1.0:0 5BMAGIC-v0.1.0.zip · csak a programfájl: 6BMAGIC.EXE • bKiadások:0 7git.teletypegames.org/dos/bmagic/releases i[Kép: A Boot Magic egy bootmenü nélküli meghajtón] 1Telepítés 1═════════ • bDOSINST-tel:0 a cDOSINST INSTALL BMAGIC0 a 3DOSINST programtárából a legfrissebb kiadást a cC:\APPS\BMAGIC0-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 cDOSINST REMOVE BMAGIC0 a mappát a mentésekkel együtt törli. • bKézzel:0 a cBMAGIC.EXE0-t bármelyik mappába másold, például a cC:\APPS\BMAGIC\0-be. p BMAGIC az indítómeghajtó bootfájljai p BMAGIC D: egy másik meghajtó bootfájljai (például egy előkészített lemez» p é) Az indítómeghajtót a DOS-tól kérdezi (4.0-tól); ha a DOS nem tudja, a cC:0-t használja. DOSBoxban add meg a meghajtót (cBMAGIC C:0), 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. 1A bootmenü 1══════════ p CONFIG.SYS AUTOEXEC.BAT p [MENU] @ECHO OFF p MENUITEM=NORMAL,Normal start PATH C:\DOS <- minden konfigurá» p ció p MENUITEM=GAMES,Games (EMS) GOTO %CONFIG% p MENUDEFAULT=NORMAL,10 :NORMAL p MENUCOLOR=15,1 LH SMARTDRV p NUMLOCK=OFF GOTO END p :GAMES p [COMMON] LH MOUSE p DOS=HIGH,UMB <- minden pont GOTO END p :END p [NORMAL] p DEVICE=C:\DOS\HIMEM.SYS p [GAMES] p DEVICE=C:\DOS\HIMEM.SYS p DEVICE=C:\DOS\EMM386.EXE RAM Egy menüpont a c[MENU]0 egy cMENUITEM0 sora, egy c[NÉV]0 blokk a cCONFIG.SYS0-ben, és az cAUTOEXEC.BAT0 egy szakasza a c:NÉV0 címkétől a következő címkéig. A DOS a cCONFIG0 változóba a választott pont nevét teszi, a cGOTO %CONFIG%0 pedig a címkéjére ugrik. A szakaszok egy közös zárócímkére mutató cGOTO0-val végződnek (c:END0, ha a fájl nem mást használ). t┌───────────┬───────────────────────┬────────────────────────────────────────┐ t│h Művelet t│h Billentyű t│h Mi változik t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 Új pont t│0 Ins t│0 Egy cMENUITEM0 sor az utolsó után, egy t│ t│0 t│0 t│0 c[NÉV]0 blokk az utolsó menüpont-blokk t│ t│0 t│0 t│0 után, egy szakasz a zárócímke előtt t│ t│0 t│0 t│0 cGOTO END0-del. Lehet egy másik pont t│ t│0 t│0 t│0 másolata is. Menü nélküli t│ t│0 t│0 t│0 cCONFIG.SYS0-ben az első pont létrehozza t│ t│0 t│0 t│0 a c[MENU]0-t, a már meglévő sorok pedig t│ t│0 t│0 t│0 a c[COMMON]0 alá kerülnek. t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 Átnevezés t│0 F3 t│0 A cMENUITEM0 sor, a c[NÉV]0 sor, a t│ t│0 t│0 t│0 cMENUDEFAULT0, az cINCLUDE=NÉV0 sorok és a t│ t│0 t│0 t│0 c:NÉV0 címke. t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 Törlés t│0 Del, majd Y t│0 A cMENUITEM0 sor, a blokk, a szakasz, a t│ t│0 t│0 t│0 cMENUDEFAULT0 és az cINCLUDE0 sorok. Az t│ t│0 t│0 t│0 utolsó pont törlése a c[MENU]0-t és a t│ t│0 t│0 t│0 cGOTO %CONFIG%0-ot is eltávolítja. t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 Mozgatás t│0 Ctrl+PgUp / Ctrl+PgDn t│0 Két cMENUITEM0 sort cserél meg, vagyis a t│ t│0 t│0 t│0 menü sorrendjét. t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 Menü t│0 F6, F5 t│0 cMENUDEFAULT0 (pont és 0-90 mp t│ t│0 t│0 t│0 várakozás), cMENUCOLOR0, cNUMLOCK0; az F5 t│ t│0 t│0 t│0 a kijelölt pontot teszi t│ t│0 t│0 t│0 alapértelmezetté. t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 Sorok t│0 Enter, F8 t│0 Egy pont blokkja és szakasza, vagy egy t│ t│0 t│0 t│0 teljes fájl (Tab: a következő fájl). A t│ t│0 t│0 t│0 sorok 200 karakterig szerkeszthetők. t│ t├───────────┼───────────────────────┼────────────────────────────────────────┤ t│0 MSDOS.SYS t│0 F7 t│0 cBootMenu0, cBootMenuDefault0, t│ t│0 t│0 t│0 cBootMenuDelay0, cBootGUI0, cLogo0, cBootKeys0 t│ t│0 t│0 t│0 a Windows 95/98 cMSDOS.SYS0 c[Options]0 t│ t│0 t│0 t│0 blokkjában; az attribútumai t│ t│0 t│0 t│0 megmaradnak. Az MS-DOS 6 bináris t│ t│0 t│0 t│0 cMSDOS.SYS0-éhez nem nyúl. t│ t└───────────┴───────────────────────┴────────────────────────────────────────┘ A név 1-8 betű, számjegy, c_0 vagy c-0, és nem lehet cMENU0 vagy cCOMMON0. 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 cnone0 vagy cno label0 jelzést kap: a hiányzó címke megakasztja a cGOTO c%CONFIG%0-ot. Az F1 minden billentyűt megmutat. 1Mentés és visszaállítás 1═══════════════════════ 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 cBMAGIC.EXE0 melletti cBACKUP\NNN\0-be: minden bootfájl bájtra pontos másolata és egy cSET.INI0 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 cX.$$$0 néven íródik ki; a régi cX.BM$0 nevet kap, az új átveszi a nevét, aztán az cX.BM$0 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. 1Fordítás és tesztek 1═══════════════════ A fordításhoz 8Open Watcom v2 kell (a c~/.local/opt/watcom0-ban, vagy cWATCOM=0), ugyanaz az eszközlánc, mint a többi DOS-programnál: p SOURCE/build.sh # ../BMAGIC.EXE p SOURCE/build.sh test # a tesztváltozat (billentyűk a TESTKEY» p S.TXT-ből) p SOURCE/test/unit/run.sh # unit-tesztek a fejlesztőgépen, előtte» p rétegellenőrzés p python3 SOURCE/test/run.py # képernyőtesztek DOSBoxban, minta-boot» p meghajtókon A rétegek a 1DOSLIB szabályait követik: cmodel0 (a menütérkép, a szerkesztő, a diff, I/O nélkül), crepository0 (a bootfájlok és a mentéskészletek), cservice0, ccontroller0, cview0, cplatform0 (az indítómeghajtó, az attribútumok, az óra) és capp0; a DOSLIB git subtree-ként van a cSOURCE/lib0-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. Egy cvX.Y.Z0 tag (egyeznie kell a cSOURCE/app/version.h0 cVersion0 értékével) Gitea-kiadást készít, és a cBMAGIC0-et a DOSINST programtárába teszi. A teszt lépés a Gitea-registry cdos-ci0 image-ében fut (cgit.teletypegames.org/build/dos-ci:bookworm0), amelyben az eszközlánc előre telepítve van: a cscripts/ci-toolchain.sh0 csak akkor telepít, ha az image verziói eltérnek a rögzítettektől. A képernyőtesztek egyszerre négy esetet futtatnak (cJOBS0, mindegyiket a saját mappájában). A release lépés a cci-tools0 image-ben fut, telepítés nélkül. A store lépés tarként, SSH-n küldi a mappát a szerver cdeploy0 felhasználójának (cdeploy-ssh image, digest szerint), akinek a kulcsa egyetlen rögzített parancshoz, a cci-deploy0-hoz kötött (cinfra/host-config0); a pipeline-nak nem kellenek trusted volume-ok. 1Korlátok 1════════ • Legfeljebb 9 menüpont, ahogy a DOS is mutatja. A további cMENUITEM0 és a cSUBMENU0 sorok megmaradnak, de nem látszanak; a fájlszerkesztővel (F8) elérhetők. • Az cAUTOEXEC.BAT0-ból csak a cGOTO %CONFIG%0 szerkezetet térképezi fel. Az cIF c"%CONFIG%"=="GAMES" ...0 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.