czwartek , 18 kwiecień 2024

Katalog dysku

Większość z Was niezadowolona z mojego poprzedniego arta, dotyczącego spraw BASIC-a ma teraz szansę poczytać coś ciekawszego :).

Sprawa dotyczy Katalogu Dysku, czyli miejsca, w którym koderzy robią, co chcą. Ja nie będę opisywał bajerów z DEL-ami, bo to chyba wszyscy wiedzą, a jeżeli nie, to radzę pobawić się DIR MASTEREM. Mam na myśli inny problem, który łatwo rozwiązałem.

Różne źródła podają, że na 1 str. dysku jest 664 bloków, które możemy zapełnić czym chcemy :))) Uwaga! Proszę mi tu nie przytaczać ILLEGAL FORMATERÓW, gdyż one nie zwiększają nam bezpośrednio liczby wolnych bloków na dysku, tylko tworzą jakby odrębny dysk z własnym katalogiem.

Mi chodzi oto, aby pokazać, jak zwiększyć ilość bloków na dyskietce bez żadnych formaterów. Do tego celu użyjemy ścieżkę 18, gdzie jest zapisywany katalog. Tak naprawdę dysk normalnie zawiera 664+18 bloków, ale te 18 blk jest przeznaczone na katalog i w normalny sposób niemożliwe do zapisu przez użytkownika. Często Wam się zdarza, że na dysku brakuje wam 1, 2, 3 itp. liczby bloków :(. I co wtedy robicie??? Musicie coś przegrać na inny dysk, gdyż to coś nagrało się z gwiazdką (*). I przez ten 1 blok kupa (bez skojarzeń:) niepotrzebnej (?) roboty… TRUDNO, czasami trzeba się pomęczyć. Ale mam sposób na to. Ofkoz nie jest on wygodny, trzeba się pomęczyć, ale w 99% skuteczny. Dlaczego nie w 100%? To się okaże na końcu… Posłużę się tu przykładem – nie wiem czy znanym, ale na pewno bardzo trafnym. Pewnie do Waszych rąk trafiły już MANGA COLLECTION 1 i 2. Kiedy ja to dorwałem, to chciałem wpakować to na 1 stronę. I co??? Brakowało tylko… 5 bloków… Nie chcąc tracić miejsca na dysku, postanowiłem znaną mi już metodą zgrać to na 1 stronę. Aby to uczynić potrzebne są (dostępne jak zwykle:)
– odrobina teorii
– odrobina czasu
– odrobina silnych nerwów 🙂
– program, np. Disk Kreator, lub jego mutacja o wiele lepsza od oryginału: D.I.R. Master+ nie mylić z popularnym DIRMASTEREM!
– odrobina logiki oraz ołówek + kartka

NAJPIERW TEORIA: Należy wiedzieć, że gdy nagrywasz plik na dysk, to pierwszy sektor, który zajmuje nasz program zawiera:
– 2 bajty określające kolejną ścieżkę i sektor
– 2 bajty -//- adres startu programu
– reszta badziewia.
W następnym sektorze nie ma już punktu nr 2. Dla przykładu odpal (może być nawet Kwik Load!) funkcję disk monitor i daj opcję Read. Wgra się ścieżka 18 sektor 00 i co będzie na początku?

12 01 ......

To oznacza, że następny sektor zostanie odczytany ze ścieżki 18 sektora 01 (bo 18=$12). Kiedy pierwsza liczba będzie wynosić 00, to druga określa miejsce, w którym kończy się program od ($01 do $ff), np. w katalogu zawsze jest 00 ff. Po to ja to piszę, aby zrozumieć, do czego służą te cyferki. Przez to można robić różne jaja (jak kura :). OK. Ale co z pierwotnym założeniem??? Otóż do tego użyjemy właśnie ścieżki 18! Powiedzmy: brakuje nam 1 bloku a mamy plik 5 blokowy. Musimy robić tak: wgrywamy katalog z dysku 1, szukamy tytułu i patrzymy. Widnieje tam tak:
np.: 12 04 82 11 00 ble ble ble

To podkreślone jest najważniejsze. Określa, gdzie jest zapisany program, tzn. pod jakim sektorem. Z tego wynika, że zaczyna się on od ścieżki 17 ($11) i sektora 00. Ilość bloków radzę podejrzeć w katalogu. Jeżeli się nie wie, ile ma plik ofkoz! A więc ustawiamy ścieżkę $11 sektor $00 i opcja Read. Zmieniamy dysk oraz numery ścieżki na $12 i sektora na $02 a w samym wczytanym sektorze dajemy opcję Edit i zmieniamy 2 pierwsze bajty na 12 03. Teraz opcja Write i mamy już 1 sektor przeniesiony. I znowu od nowa, tylko że zmieniamy cyferki i to jest ważne! Trzeba również wiedzieć, jakie to są! Dlatego je podaję (dla katalogu o ok. 40 tytułach):

Ścieżka Sektor
12 2 3 5 6 8 9 b c e f 11 12

Dla przykładu: skorzystamy z naszego 11 00
Ale to na nast. stronie 🙂 (Oczywiście chodzi o następną stronę w oryginalnej wersji artykułu zamieszczonego w magazynie dyskowym.)

Więc to będzie wyglądać tak:

Ścieżka Sektor Objaśnienie
12 2 3 5 6 8
11 0 8 d 4 – ”-” to ostatni sektor – nie zawiera tego znacznika nast. sektora!
Te cyfry to przykład Dwa pierwsze bajty ostatniego sektora pliku to 00 xx

Na koniec pozostaje nam wczytanie katalogu na ostatnim pliku i dopisanie nowego (Chodzi o wczytanie ostatniego sektora katalogu dysku na ścieżce 18, na którym są zapisane tytuły plików.):

........ 00 00 82 12 02 tytuł

Nie wygląda to zbyt estetycznie, ale jednak jest to sposób na zyskanie kilku bloków. Jeżeli katalog zawiera do 8 tytułów, to wtedy można uzyskać 16 dodatkowych bloków! Uwzględniamy wtedy:

12/2 3 4 5 6 7 8 9 a b c d e f 10 11 12

I jeszcze mała ciekawostka! Po takiej operacji i po wykonaniu Validate katalog nadal będzie wyświetlał np. 664 bloki! Spróbuj takie coś zrobić na pustej dyskietce! Nagrasz coś, co ma np. 1 blok w katalogu i wtedy komputer nie uwzględni tego w liczbie wolnych bloków! Np. takie coś robi ACTION REPLAY v7.3 w opcji save loader. Tyle, że tu jest użyty rozkaz chyba memory write i dopiero po Validate przywracana jest właściwa liczba. Ja tego sposobu używam zawsze, kiedy nagrywam zaki na dysk, tylko że muszę wybierać zaki 11 blokowe, gdyż katalog zawiera ok. 40 tytułów, a na sektorze 12 nagrywam mój 1 blokowy player do zaków od $0900-$ffff – polecam (sorry za reklamę:).

Jeżeli ktoś z czytelników chciałby przyjrzeć się z bliska tej sprawie, to polecam przestudiowanie pliku „side selection” w demku OPIUM/Samar. Ten plik właśnie jest nagrany tą metodą! Można się również ze mną skontaktować! Mogę wtedy wytłumaczyć krok po kroku, ale jest to bardzo męczące. Jeżeli chcesz mieć MANGA COLL. 1 i 2 na 1 stronie, to pisz! Przy okazji pozdrawiam grupę SLAKECOMP!

H.M.MURDOCK/TROPYX

Jest to mój jeden z pierwszych artykułów napisanych do magazynu Inverse. Dzielę się w nim tajnikami dotyczącymi zapisywania danych na ścieżce nr 18 dyskietki 5’25 do C64, na której oficjalnie przechowywany jest katalog dysku. Ta pożyteczna metoda, aczkolwiek trochę czasochłonna, służyła mi przez długi czas zwłaszcza przy swapie, gdzie nie raz brakowało 1-2 bloków do zapisania np. notki.

Artykuł napisałem w 1999 r. przy użyciu Commodore 64 oraz edytora tekstowego do magazynu dyskowego Inverse. Ukazał się on w marcu 2000 r. w magazynie Inverse #7/Oxygen64 w dziale Inne. Oryginalną treść poddałem obróbce technicznej z uwzględnieniem poprawek interpunkcyjnych.