{"id":929774,"date":"2014-05-25T14:45:34","date_gmt":"2014-05-25T13:45:34","guid":{"rendered":"http:\/\/sindik.at\/?p=929774"},"modified":"2014-05-25T14:49:44","modified_gmt":"2014-05-25T13:49:44","slug":"zx-a-sif","status":"publish","type":"post","link":"https:\/\/sindik.at\/?p=929774","title":{"rendered":"ZX a SIF"},"content":{"rendered":"<p>V poslednej dobe sa tak trosku hram so sifom.<\/p>\n<p>Zacalo to sindikatom, na ktorom Z00m vytiahol temu SIFROM (Cygnusova uprava ISOROM, na pouzitie sifu miesto kazetaka na load\/save programov\/hier). Z00m vtedy upravoval nejaku +3jku a jedna z poziadavok bola, miesto klasickej ROM pouzit ROM s dvojnasobnou kapacitou, kde sa do jednej casti da klasicka ROM a do druhej SIFROM a prepinat sa budu prepinacom.<\/p>\n<p>Mna vsak zaujala myslienka pouzitia sifrom patchu bez nutnosti zasahu do pocitaca.<br \/>\n<!--more--><br \/>\nSamozrejme, do standardnej ROM sa neda zapisovat nejakymi POKE z BASICu a dokonca ani zo strojoveho kodu, avsak vydobytky modernej doby nam to umoznia velmi jednoducho. Mam na mysli DivIDE. Bezne sa DivIDE sice pouziva na pripojenie velkokapacitnych datovych ulozisk ako su harddisky, ci CF karty, cize miesto magnetofonu, ale aj k takemuto pouzitiu divide potrebuje vlastnu pamat v ktorej bude obsluzny program (firmware) a jeho data (aby interface co najmenej zasahoval do pamati zx spectra, a aby tak islo nahrat co najviac programov povodne nahravanych z kazety). No a kedze systemovy konektor, na ktory sa DivIDE pripaja, nema signal \/RAMCS, ktorym by vedelo odpojit zx RAM, tak musi pouzit signal \/ROMCS a svoju pamat tak pouzivat v oblasti, kde ma zx ROM. A prave toto nam hra do karat a tak jedinym problemom, ktory na prevadzkovanie sifrom bez zasahu do pocitaca je, ako dostat upravenu ROM do pamate DivIDE.<\/p>\n<p>Na divide existuje niekolko roznych firmware. Kazdy z nich ma svoje vlastnosti, ktorymi su napriklad pouzity suborovy system, schopnost data na disk aj ukladat ci moznost zobrazovat dlhe nazvy v pripade pouzitia suboroveho systemu FAT. Nam vsak bude stacit jedna vlastnost, ktoru maju vsetky bezne pouzivane firmware (<a title=\"Demfir project page\" href=\"http:\/\/demfir.sourceforge.net\/\" target=\"_blank\">demfir<\/a>, <a title=\"Esxdos project page\" href=\"http:\/\/www.esxdos.org\" target=\"_blank\">esxdos<\/a>, <a title=\"Velesoftova stranka pre download fatware\" href=\"http:\/\/velesoft.speccy.cz\/zx\/divide\/divide-fatware.htm\" target=\"_blank\">fatware<\/a>, <a title=\"MDOS3 download\" href=\"http:\/\/ci5.speccy.cz\/mdos3\/mdos3-download\/\" target=\"_blank\">mdos3<\/a>&#8230;) a tou je nahrat do pamati zx spectra kratky program, ktory upravi ROM a nasledne ju zapise do pamati divide (co nam samozrejme znemozni nadalej pouzivat firmware divide na citanie\/ukladanie dat, ale o to nam teraz nejde, naviac, je to samozrejme docasne znemoznenie, pocitac staci vypnut a zapnut a uz je zasa vsetko ako bolo).<\/p>\n<p>Do urcitej miery jednoduchsie to maju pouzivatelia MDOS3. System MDOS3 sa sklada z dvoch casti, prva cast je bootloader, ktory sa spusti pri zapnuti pocitaca a ma za ulohu nacitat konfiguracny subor, v ktorom su popisane systemy instalovane na bootdiskete a druha cast je uz samotny MDOS3, ktory je rozdeleny na niekolko suborov (po 8kb), ktore bootloader po vybere systemu MDOS3 nahra do pamate divide a nasledne spusti. Takto vie bootloader nahravat aj ine systemy (aj ked samozrejme s obmedzeniami, ale tie nas teraz nebudu trapit, lebo pre nase ucely nie su podstatne), napriklad uz spominany demfir, esxdos ci fatware, alebo aj T-Bios (system, ktory si asi nikto nenapali priamo do eeprom divide ;]). No a my tuto vlastnost pouzijeme na nahratie sifrom.<\/p>\n<p>Najprv si vsak ukazeme univerzalny sposob, ktory bude pouzitelny vo vsetkych beznych firmwaroch (tu samozrejme neratam systemy T-Bios a Azorados ;]).<\/p>\n<p>Prve co potrebujeme je skompilovat instalator sifrom patchu. Ten stiahneme z Cygnusovej stranky z baliku <a title=\"2014-05-05_sif-rom_patch.tar.bz2\" href=\"http:\/\/cygnus.speccy.cz\/download\/utility\/sifrompatch\/2014-05-05_sif-rom_patch.tar.bz2\" target=\"_blank\">http:\/\/cygnus.speccy.cz\/download\/utility\/sifrompatch\/2014-05-05_sif-rom_patch.tar.bz2<\/a> . Tento instalator predpoklada, ze mame v pocitaci ISOROM, do ktorej sa da povolit zapis, co nemame. Mame ale divide, takze upravime install.za, asi takto:<\/p>\n<pre>\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 cpu\u00a0\u00a0 \u00a0z80undoc\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0org\u00a0\u00a0 \u00a032768\r\n\r\nROMINRAM\u00a0\u00a0 \u00a0equ\u00a0\u00a0 \u00a049152\u00a0\u00a0 \u00a0;0xC000\r\n\r\nINSTALL_START\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0;load standard ROM to RAM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,16384\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; write patches to RAM copy of ROM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_SAVE_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1218\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; 0x04c2 = 1218\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0SA-BYTES\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_SAVE_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_INIT_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1294\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; RANDOMIZE USR 1294\u00a0\u00a0 \u00a0INITIALIZE SIF\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_INIT_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_LOAD_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1366\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; 0x0556 = 1366\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0LD-BYTES\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_LOAD_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_CLR_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1494\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; RANDOMIZE USR 1494\u00a0\u00a0 \u00a0CLEAR BUFFERS\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_CLR_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n;teraz budeme robit zlobu, a tak nechceme aby nas pri tom niekto vyrusoval\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0di\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n;pozor, tu uz niet navratu, prepisujeme firmware v divide RAM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0a,128\u00a0\u00a0 \u00a0;conmem+bank0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0out\u00a0\u00a0 \u00a0(227),a\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,ROMINRAM+8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0a,129\u00a0\u00a0 \u00a0;conmem+bank1\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0out\u00a0\u00a0 \u00a0(227),a\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,ROMINRAM+8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0a,130\u00a0\u00a0 \u00a0;conmem+bank2\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0out\u00a0\u00a0 \u00a0(227),a\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,ROMINRAM+8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0a,131\u00a0\u00a0 \u00a0;conmem+bank3\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0out\u00a0\u00a0 \u00a0(227),a\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,ROMINRAM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,8192\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0a,64\u00a0\u00a0 \u00a0;mapram+bank0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0out\u00a0\u00a0 \u00a0(227),a\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0jp\u00a0\u00a0 \u00a00\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ret\r\n\r\nSIF_SAVE_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"save.za\"\r\nSIF_SAVE_PATCH_LN = $ - SIF_SAVE_PATCH\r\n\r\nSIF_INIT_PATCH\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; init po SAVE, proto\u0178e tam na n\u00ecj zbyde m\u00edsto\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"init.za\"\r\nSIF_INIT_PATCH_LN = $ - SIF_INIT_PATCH\r\n\r\nSIF_LOAD_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"load.za\"\r\nSIF_LOAD_PATCH_LN = $ - SIF_LOAD_PATCH\r\n\r\nSIF_CLR_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"clear.za\"\r\nSIF_CLR_PATCH_LN = $ - SIF_CLR_PATCH\r\n\r\n<\/pre>\n<p>Skompilovanim ziskame takuto tapku: <a title=\"sifrom_install.tap\" href=\"http:\/\/sindik.at\/~ub880d\/download\/sifrom_install.tap\" target=\"_blank\">sifrom_install.tap<\/a><\/p>\n<p>A toto je tapka, ktora po nahrati lubovolnym firmwarom nainstaluje sifrom do pamati divide. Takze si ju uz len ulozime na pamatove medium a po jej nahrati a spusteni sa nam &#8222;resetne&#8220; pocitac, avsak uz bude aktivna sifrom, ktorej pouzitie najdete na Cygnusovych strankach: <a title=\"popis sif_zxrom_patch\" href=\"http:\/\/cygnus.speccy.cz\/popis_sif_zxrom_patch.php\" target=\"_blank\">http:\/\/cygnus.speccy.cz\/popis_sif_zxrom_patch.php<\/a><\/p>\n<p>Teraz si ukazeme druhy sposob, ktory je vylucne pre MDOS3 pouzivatelov. Zacneme podobne, akurat install.za upravime tak, ze len vytvori obraz upravenej ROM v pamati a neulozi ho hned do divide. Uprava je jednoduchsia:<\/p>\n<pre>\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0 cpu\u00a0\u00a0 \u00a0z80undoc\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0org\u00a0\u00a0 \u00a032768\r\n\r\nROMINRAM\u00a0\u00a0 \u00a0equ\u00a0\u00a0 \u00a049152\u00a0\u00a0 \u00a0;0xC000\r\n\r\nINSTALL_START\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0;load standard ROM to RAM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,16384\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; write patches to RAM copy of ROM\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_SAVE_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1218\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; 0x04c2 = 1218\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0SA-BYTES\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_SAVE_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_INIT_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1294\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; RANDOMIZE USR 1294\u00a0\u00a0 \u00a0INITIALIZE SIF\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_INIT_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_LOAD_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1366\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; 0x0556 = 1366\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0LD-BYTES\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_LOAD_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0hl,SIF_CLR_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0de,ROMINRAM+1494\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; RANDOMIZE USR 1494\u00a0\u00a0 \u00a0CLEAR BUFFERS\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ld\u00a0\u00a0 \u00a0bc,SIF_CLR_PATCH_LN\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ldir\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ret\r\n\r\nSIF_SAVE_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"save.za\"\r\nSIF_SAVE_PATCH_LN = $ - SIF_SAVE_PATCH\r\n\r\nSIF_INIT_PATCH\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0; init po SAVE, proto\u0178e tam na n\u00ecj zbyde m\u00edsto\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"init.za\"\r\nSIF_INIT_PATCH_LN = $ - SIF_INIT_PATCH\r\n\r\nSIF_LOAD_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"load.za\"\r\nSIF_LOAD_PATCH_LN = $ - SIF_LOAD_PATCH\r\n\r\nSIF_CLR_PATCH\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0include\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\"clear.za\"\r\nSIF_CLR_PATCH_LN = $ - SIF_CLR_PATCH\r\n\r\n\r\n<\/pre>\n<p>Skompilovanim dostaneme tapku: <a title=\"sifrom_create_mdos3.tap\" href=\"http:\/\/sindik.at\/~ub880d\/download\/sifrom_create_mdos3.tap\" target=\"_blank\">sifrom_create_mdos3.tap<\/a><\/p>\n<p>Tuto tapku musime nejakym sposobom nahrat do pocitaca, ked uz mame MDOS3 nabootovany a do virtualnej mechaniky vlozeny bootdisk. To mozme docielit bud nejakou PC utilitou napr. <a title=\"Velesoftova stranka s mdos3 utils\" href=\"http:\/\/velesoft.speccy.cz\/zx\/divide\/divide-mdos3.htm\" target=\"_blank\">mdos3_tool<\/a>, ktora nam umozni import tap suboru do virtualnej diskety, alebo pomocou <a title=\"fuse emulator\" href=\"http:\/\/sourceforge.net\/projects\/fuse-emulator\/\" target=\"_blank\">tape2wav<\/a> (z baliku fuse-utils) tapku prevedieme na wav a &#8222;vypiskame&#8220; do zx napriklad z PC zvukovej karty (na zx spectrum +2 mozno pouzit <a title=\"Kliniec s hudobnym sluchom\" href=\"http:\/\/www.zeroteam.sk\/gfx\/photos\/kliniec.jpg\" target=\"_blank\">Mikeho kliniec<\/a> ;]).<\/p>\n<p>Ked uz instalator mame v pamati zx a po spusteni vytvori sifrom v pamati na adrese 49152, ulozime subory pre bootloader prikazmi:<\/p>\n<pre> SAVE *\"sifrom0\" CODE 49152, 8192\r\n SAVE *\"sifrom1\" CODE 49152+8192, 8192\r\n<\/pre>\n<p>No a nakoniec musime zapisat novy system do bootconf.b . Toto je ta najzlozitejsia vec, ktora nas v pripade MDOS3 caka. Kedze ziaden editor na bootconf nemame, musime sa nejako vynajst. Jedna moznost je, vyexportovat ho do PC (uz spominanym mdos3_toolom), tam ho nejakou utilitou (napriklad hexeditom) zmenit a potom importnut naspat na bootdisk. Uznavam, celkom hardcore sposob, a tak skusime druhu moznost: pozriet sa ako vypada struktura konfiguracneho suboru <a title=\"popois bootconf.b\" href=\"http:\/\/ci5.speccy.cz\/files\/bootconf_cz.txt\" target=\"_blank\">http:\/\/ci5.speccy.cz\/files\/bootconf_cz.txt<\/a> a konfiguracny subor upravit priamo na zx.<\/p>\n<p>Bootconf je strukturovany celkom jednoducho. Cely subor sa sklada zo zaznamov o jednotlivych systemoch a je ukonceny bajtom 0. Kazdy zaznam obsahuje popisny text systemu, ktory sa vypise v menu pri boote a mena suborov, ktore su potrebne na nahratie systemu do pamate divide. Cize, my potrebujeme pripisat na koniec konfiguracneho suboru (pozor, nie na posledny bajt suboru, ale na ukoncovaci znak s kodom 0) popis povedzme text &#8222;SIFROM&#8220; a ako mena suborov zapisat sifrom0 a sifrom1 s prislusnymi cislami divide ram baniek. A kedze clovek je tvor lenivy a pocitace su od toho aby mu robotu ulahcovali, napiseme si na to program v BASICu. Pamatate este doby, ked sa programy do pocitaca prepisovali napriklad z FIFA? Tak si tuto situaciu pripomenieme ;] :<\/p>\n<pre> 10 CLEAR 32767\r\n 20 LOAD *\"bootconf\" CODE 32768\r\n 30 LET addr=32768\r\n 40 IF PEEK addr=0 THEN GO TO 100\r\n 50 LET addr=addr+32: REM preskocime popis systemu\r\n 60 REM teraz este musime preskocit subory\r\n 70 IF PEEK addr&lt;128 THEN LET addr=addr+11: GO TO 70\r\n 80 LET addr=addr+1: REM a nakoniec preskocime ukoncovaci znak\r\n 90 GO TO 40\r\n 100 DIM a$(32)\r\n 105 REM najskor zapiseme popis systemu\r\n 110 LET a$=\"SIFROM\"\r\n 120 FOR i=1 TO 32\r\n 130 POKE addr,CODE a$(i)\r\n 140 LET addr=addr+1\r\n 150 NEXT i\r\n 155 REM a teraz zapiseme mena suborov\r\n 160 LET c$=\"sifrom1\"\r\n 170 FOR i=0 TO 3\r\n 180 POKE addr,i\r\n 190 LET addr=addr+1\r\n 200 IF i=3 THEN LET c$=\"sifrom0\"\r\n 210 FOR j=1 TO LEN(c$)\r\n 220 POKE addr,CODE c$(j)\r\n 230 LET addr=addr+1\r\n 240 NEXT j\r\n 250 FOR j=LEN(c$)+1 TO 10\r\n 260 POKE addr,0\r\n 270 LET addr=addr+1\r\n 280 NEXT j\r\n 290 NEXT i\r\n 300 POKE addr,255: REM ukoncovaci znak systemu\r\n 310 LET addr=addr+1\r\n 320 POKE addr,0: REM ukoncovaci znak configu\r\n 330 REM teraz vypocitame novu dlzku bootconfu\r\n 340 REM dlzku zaokruhlime na sektory smerom nahor\r\n 350 LET size=addr-32768\r\n 360 LET size=size+511: LET size=512*INT(size\/512)\r\n 370 REM config ulozime\r\n 380 SAVE *\"bootconf\" CODE 32768,size\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Po spusteni tohto programu sa nacita bootconf.b do pamate, program najde koniec definicie suborov a na toto miesto zapise novy system. Bootconf nasledne opat ulozi na disk. Ak sme spravili vsetko tak ako sme mali, tak staci vypnut a zapnut pocitac a uz by sa nam mala v menu ukazat polozka &#8222;SIFROM&#8220; a po jej vybere by mal pocitac &#8222;nabootovat&#8220; do sifrom, ktorej pouzitie opat najdete na Cygnusovych strankach: <a title=\"popis sif_zxrom_patch\" href=\"http:\/\/cygnus.speccy.cz\/popis_sif_zxrom_patch.php\" target=\"_blank\">http:\/\/cygnus.speccy.cz\/popis_sif_zxrom_patch.php<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>Pozor<\/strong>, v oboch pripadoch (aj v specialnom pre mdos3, aj v univerzalnom pre lubovolny firmware) <strong>zostava vrchna cast &#8222;rom&#8220; zapisovatelna<\/strong>, tak si davajte pozor co a kam zapisujete ;], nakoniec, je takto mozne overit uspesnost instalacie sifrom do divide. Po nainstalovani sifrom do divide, zadame jednoduchy prikaz:<\/p>\n<pre>POKE 15616,255<\/pre>\n<p>Ak bola sifrom uspesne instalovana, zmeni sa prvy bajt znakoveho fontu (konkretne znaku medzera), co by malo byt vidiet ihned po vypisani &#8222;0 OK, 0:1&#8220;<\/p>\n<p>&nbsp;<\/p>\n<p>Povodne som chcel napisat co to aj o dalsej utilitke pre sif, ale to uz necham na niektory dalsi clanok ;]<\/p>\n<p>-ub<\/p>\n","protected":false},"excerpt":{"rendered":"<p>V poslednej dobe sa tak trosku hram so sifom. Zacalo to sindikatom, na ktorom Z00m vytiahol temu SIFROM (Cygnusova uprava ISOROM, na pouzitie sifu miesto kazetaka na load\/save programov\/hier). Z00m vtedy upravoval nejaku +3jku a jedna z poziadavok bola, miesto &hellip; <a href=\"https:\/\/sindik.at\/?p=929774\">Pokra\u010dova\u0165 v \u010d\u00edtan\u00ed <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[6],"tags":[],"class_list":["post-929774","post","type-post","status-publish","format-standard","hentry","category-tema-3-software-php"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p5aqy8-3TSm","jetpack_likes_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/929774","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=929774"}],"version-history":[{"count":4,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/929774\/revisions"}],"predecessor-version":[{"id":929778,"href":"https:\/\/sindik.at\/index.php?rest_route=\/wp\/v2\/posts\/929774\/revisions\/929778"}],"wp:attachment":[{"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=929774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=929774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sindik.at\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=929774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}