1

Mam dwa pliki: loader (boot) oraz program (xex). Chciałbym z tych dwóch plików wygenerować jeden .cas w standardowej prędkości. Jak to zrobić i czym (najchętniej jakimś programem, który mogę zastosować w pliku wsadowym a nie okienkami)?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

2 Ostatnio edytowany przez Krótki (2016-06-03 07:10:14)

# Konwersja loadera do Cas w postaci tekstowej, czyli Hex
a8cas-convert -r -fh loader.bin loader.hex # loader.bin to plik z 6-bajtowym boot-nagłówkiem
# Konwersja pliku binarnego do Hex
a8cas-convert -r -fh program.xex program.hex
# Usunąć pierwsze 2 wiersze z pliku program.hex
sed --cośtamcośtam
# Połączenie obu plików
cat loader.hex program-bez-2-wierszy.hex > loader-program.hex
# Konwersja z Hex do Cas
a8cas-convert loader-program.hex loader-program.cas

Z grubsza w ten sposób.

EDIT: Tylko że powyższa metoda nie wstawia długich przerw po blokach Init, więc nie zadziała dla wielu plików :(
Za godzinkę postaram się o metodę, która to uwzględnia.

A8CAS - narzędzie do 100% archiwizacji kaset Atari

3

Teraz działa - potrzebne a8cas-tools i xex2cas >= 2.4.7 od Baktra.

# Konwersja loadera do Cas w postaci tekstowej, czyli Hex
a8cas-convert -r -fh loader.bin loader.hex # loader.bin to plik z 6-bajtowym boot-nagłówkiem
# Konwersja pliku binarnego do Cas; długość przerw po blokach Init regulujemy parametrem -i
xex2cas -e -l0 program.xex program.cas
# Konwersja ww. Casa do postaci tekstowej
a8cas-convert -fh program.cas program.hex
# Usunięcie pierwszych 2 wierszy z pliku program.hex
tail -n+3 program.hex > program-bez-2-wierszy.hex
# Połączenie obu plików
cat loader.hex program-bez-2-wierszy.hex > loader-program.hex
# Konwersja z Hex do Cas
a8cas-convert loader-program.hex loader-program.cas
A8CAS - narzędzie do 100% archiwizacji kaset Atari

4 Ostatnio edytowany przez mono (2016-06-03 11:09:16)

Bardzo dziękuję. Metoda pierwsza działa doskonale i mam swojego .cas'a :) Świetne narzędzia!

Edit: A metoda druga przyda się na później (aktualnie nie mam initów więc i przerw między blokami nie potrzebuję dłuższych).

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

5

Coś takiego miałem dorobić dawno temu, ale motywacji brak...
Od dzisiaj można tak:

a8cas-util.pl conv --title Programik loader.bin program.xex program.cas

Przerwy na wywołania init (jeszcze) nie są wspierane.

6

A czy można skrócić (inaczej niż ręcznie w pliku .hex) przerwę na samym początku pliku (w Twoim przykładzie jest to pilot program.xex)?

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

7

Proszę. Do ściągnięcia jest nieoficjalna wersja 1.02a. Dodana opcja --pilot. Można podawać wielokrotnie. Miejsce występowania nieistotne, kolejność odpowiada kolejności plików wejściowych. Długość w milisekundach:

a8cas-util.pl conv --title Programik loader.bin program.xex data.bin program.cas --pilot 18000 --pilot 2000

Pilot przed loader.bin będzie trwał 18s, przed program.xex 2s, przed data.bin domyślnie 20s.

8

Dziękuję :) To zaspokaja moje potrzeby w zupełności. Robiłem sobie to SED-em do tej pory (format .hex to genialny pomysł!).

hex, code and ror'n'rol
niewiedza buduje, wiedza rujnuje

9

Wersja nieoficjalna usunięta. Sposób użycia opcji "pilot" został zmieniony ze względu na dodaną możliwość ustawiania opcji dla każdego pliku wejściowego oddzielnie. Od wersji 1.03 trzeba tak:

a8cas-util.pl conv --title Programik loader.bin:pilot=18000 program.xex:pilot=2000 data.bin program.cas

10

Krótki napisał/a:

Teraz działa - potrzebne a8cas-tools i xex2cas >= 2.4.7 od Baktra.

# Konwersja loadera do Cas w postaci tekstowej, czyli Hex
a8cas-convert -r -fh loader.bin loader.hex # loader.bin to plik z 6-bajtowym boot-nagłówkiem
# Konwersja pliku binarnego do Cas; długość przerw po blokach Init regulujemy parametrem -i
xex2cas -e -l0 program.xex program.cas
# Konwersja ww. Casa do postaci tekstowej
a8cas-convert -fh program.cas program.hex
# Usunięcie pierwszych 2 wierszy z pliku program.hex
tail -n+3 program.hex > program-bez-2-wierszy.hex
# Połączenie obu plików
cat loader.hex program-bez-2-wierszy.hex > loader-program.hex
# Konwersja z Hex do Cas
a8cas-convert loader-program.hex loader-program.cas

holoł!
A czy ówczesna wersja xex2cas nie potrafiła tak:

xex2cas -binary -efuji loader.bin wynikowy.cas
xex2cas -binary -efuji -a program.xex wynikowy.cas

?
Ew. czy ten sposób jest w czymś gorszy? "-a" oznacza append do istniejącego pliku .cas. Wszytkie opcje:

xex2cas
XEX2CAS 2.6.2 - Convert files to standard tape records
No command line options specified
Usage:
xex2cas [mode] [option1] [option2] ... infile.ext [outfile.cas]
Modes:
 -binary    Conversion of Atari DOS 2 binary file (default)
 -bootbasic Conversion of Atari BASIC file to a form bootable from tape
 -plain     Conversion of a plain file
Common options:
 -r          Overwrite output file
 -a          Append to existing file
 -s          Use a shorter leader (12 s)
 -spd:<n>    Transfer speed (480-1200)
 -efuji      Generate empty FUJI tape image chunk
 -nofuji     Do not generate FUJI tape image chunk
 -h,-help,-? Display usage instructions
Options for the BINARY mode:
 -l<n>       Binary loader selection:
             n=0 No binary loader, n=1 STDBLOAD 2a (default),
             n=2 XL/XE Exclamation mark, n=3 Original Exclamation mark,
             n=4 L.K. Avalon loader, n=5 Fancy loader.
 -i<n>       Elongate IRGs after INIT segments to n seconds (0 to 99)
 -lfn'<name>' Set program name displayed by the binary loader
 -lfc'<name>' Set company name displayed by the binary loader
 -lfbg:<n>    Set loader background (0-255)
 -lfsilent    Silent I/O
Options for the BOOTBASIC mode:
 -bi<n>      BASIC initializer. n=0 LAUNCHBAS (default), n=1 BAS2CAS
Options for the PLAIN mode:
 -long       Long (3000 ms) IRGs
 -et<n>      Trick with last record:
             n=0 None (default), n=1 Data in EOF record, n=2 Last full record

Pytam, bo zabrałem się w końcu za dumpy tej paczki z UK (zdjęcie dla zalogowanych): http://www.atari.org.pl/forum/viewtopic … 99#p296599.
Dumpy większości moich wcześniejszych kaset, zwłaszcza oryginalnych, lub zabezpieczonych przez "wypożyczalnie" i inne "studia nagrań" robili mi "wspólnicy" :-D z Forum, bo sam nigdy nie miałem czasu i ochoty zdoktoryzować się ze zgrywania do wav i konwersji do hex->cas.
W tej paczce jednak nie ma oryginałów, tylko "domowe" kopie, więc pomyślałem że wystarczy w prawdziwym Atari przez FCOPY przekopiować z magnetofonu do .atr-a podmontowanego w RespeQt, wyekstrahować z .atr pliki jako .xex i móc je bezpośrednio odpalić np. w Altira czy Atari800. Założyłem, że to tego samego typu programy jak u nas na giełdach nagrywane z dyskietek na kasety z loaderem typu "!", więc "prezerwacja" do .cas nie ma żadnej wartości.
Niestety, z każdym tak wyprodukowanym plikiem (w sumie kilkadziesiąt) Altirra się wykrzacza. Okazało się że nie są to pliki binarne DOS i dopiero po odkryciu programu xex2cas i jego opcji "-plain" udało mi się wyprodukować działające pliki .cas (jednak). Większość nagrań nie ma żadnego loadera, jest tylko "pisk-pilot" i XXX standardowych bloków z krótkimi przerwami, jednak kilka było "wieloblokowych", np. Bruce Lee złożonych z czterech części, które właśnie powyższym sposobem (z opcją -a) połączyłem w jeden .cas, który działa prawidłowo w Altira.

I tu pytanie czy taki .cas, nie zrobiony z .wav, bez .hex, tylko po skopiowaniu np. FCOPY z kasety do plików na dyskietkę i przekonwertowaniu tych plików przez xex2cas jest jakoś mniej wartościowy z "prezerwacyjnego" punktu widzenia? Oczywiście mówię o kasetach bez żadnych zabezpieczeń ani nietypowych bloków, niemożliwych do wczytania do kopiera kaseta-dysk.

<-- Kontakt przez "E-mail" gdyż albowiem moja skrzynka "PW" jest pełna i zaprawdę nie mam czego usunąć.

--== Kup Pan/i dyskietkę http://www.atari.org.pl/forum/viewtopic.php?id=18887 ==--