Autor Wątek: Z taśmy na dyskietkę?  (Przeczytany 7620 razy)

pgru

  • *****
  • Wiadomości: 638
Z taśmy na dyskietkę?
« dnia: 2018.04.27, 19:01:27 »
Czytałem http://speccy.pl/articles.php?article_id=49

Ale niestety mam problem z napisaniem programu ładującego. W przypadku Elwro pliki z dyskietki ładuje się używając:
load *"plik" Gdzie plik to PLIK.PRG, czyli program ładujący w Basicu. Przeglądałem także istniejące przeniesione na obrazy dyskietek Elwro gry i programy w Basicu i tam(w programie PLIK.PRG) jest zazwyczaj fragment linijki ładującej w rodzaju
load *"plik" , gdzie plik to na dyskietce PLIK.COD. Jak rozumiem to plik binarny identyczny z tym który generuje z88dk z rozszerzeniem .bin?

Niestety mój program ładujący po załadowaniu daje tylko biały ekran:
10 CLEAR VAL "32767": LOAD *"a"CODE : RANDOMIZE USR VAL "32768"Mimo, że zmieniłem nazwę a.bin na a.COD

dla taśmy wygenerowany przez z88dk i działający wygląda tak:
10 CLEAR VAL "32767": LOAD ""CODE : RANDOMIZE USR VAL "32768"


tdu

  • *****
  • Wiadomości: 926
  • Miejsce pobytu:
    Gdansk
    • Nasze Wędrowanie
Odp: Z taśmy na dyskietkę?
« Odpowiedź #1 dnia: 2018.04.27, 23:09:56 »
Jesli plik nazywa sie a.cod to powinno byc chyba
LOAD*"a.cod" CODE
Tak by bylo w fdd3000

A Juniora nie znam.
ZX81/ZX 48k/Zx48k+/ZX +2/ZX +2A/+3/TC2048/FDD3000/FDD5000/3"/3,5'/5,25'/Beta 48k Apina/D+/GP50s/DIVIDE CF/Masterface/Polbasic SamCoupe QL CPC6128/N100 MSX-SVI738  MSX2-VG8235

pgru

  • *****
  • Wiadomości: 638
Odp: Z taśmy na dyskietkę?
« Odpowiedź #2 dnia: 2018.04.28, 09:15:51 »
Niestety zwraca, że błędna nazwa pliku jeśli użyje z rozszerzeniem .COD . Bez niego jest biały ekran...

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Z taśmy na dyskietkę?
« Odpowiedź #3 dnia: 2018.04.28, 22:08:54 »
@pgru A spróbuj dać
LOAD *"a"CODE 32768

Może w generowanym nagłówku brakuje ci adresu. A może plik bin w ogóle nie ma nagłówka, którego oczekuje system i który znajduje się w pliku COD? Spróbuj zapisać jakieś dane na dyskietce ze znanymi parametrami. Np.
SAVE *"test" CODE 32768,16384

To powinno ci zrzucić 16384 bajtów - jeśli plik COD z dyskietki przetransferujesz do peceta i będzie dłuższy to będzie znaczyło, że prawdopodobnie na początku jest jakiś nagłówek z informacją o adresie początkowym itp. bloku. Jeśli tak, to trzeba zajrzeć jak wygląda i na początek kodu dokleić te brakujące bajty.

pgru

  • *****
  • Wiadomości: 638
Odp: Z taśmy na dyskietkę?
« Odpowiedź #4 dnia: 2018.05.06, 16:20:15 »
Racja - plik TEST.COD zajmuje chyba więcej. Zapisany bez napisania programu. Pod Linuxem zajmuje 16512 bajtów. Natomiast na obrazie dyskietki od Elwro 18432. Szybkie podejrzenie w edytorze MC pokazuje, że w pliku są same 0 poza pierwszymi 17 hexami . Jest to konkretnie: 03 54 45 53 54 20 20 20 00 40 00 80 00 80. Po 03 jest to odpowiednik nazwy TEST + kilka spacji.

W ten sam sposób zapisaniu pliku o nazwie TES czyli TES.COD daje ten sam rezultat tylko nie ma 54, a w to miejsce jest 20 czyli spacja, a nazwa jest TES.
« Ostatnia zmiana: 2018.05.06, 16:26:49 wysłana przez pgru »

pgru

  • *****
  • Wiadomości: 638
Odp: Z taśmy na dyskietkę?
« Odpowiedź #5 dnia: 2018.05.06, 17:12:36 »
Dodałem ten nagłówek z TESE jako nazwą. Niestety nadal biały ekran, chociaż ładuje plik i wypisuje napis Bajty:teseb (zmieniony nagłówek).

Program startowy o nazwie teseb.prg :
10 CLEAR VAL "32767": LOAD *"tese" CODE 32768: RANDOMIZE USR VAL "32768"

pgru

  • *****
  • Wiadomości: 638
Odp: Z taśmy na dyskietkę?
« Odpowiedź #6 dnia: 2018.05.06, 17:37:40 »
Po obcięciu nagłówka do 03, nazwy TESE i kilku spacji zatrzymuje się na Bajty:tese.

Po zmianie programu ładującego i przedłużeniu startu (randomize USR) o nagłówek:
10 CLEAR VAL "32767": LOAD *"a"CODE : RANDOMIZE USR 32780
jest błąd - "O(lub 0) Zły strumień"
« Ostatnia zmiana: 2018.05.06, 18:08:50 wysłana przez pgru »

pgru

  • *****
  • Wiadomości: 638
Odp: Z taśmy na dyskietkę?
« Odpowiedź #7 dnia: 2018.05.06, 21:31:54 »
Chyba udało się poprawnie przenieść program - załączam obraz dyskietki i opis:

Uruchamianie
na dyskietce załadować program teseb (load czyli klawisz j potem * , "teseb")
potem run
program można zobaczyć poprzez naciśnięcie klawisza k przed run (czyli list)
ładuje TESE.COD

TESE.COD jest to plik binarny dla Elwro na dyskietkę powstały z połączenia
pod Linuxem w terminalu:
cat anagl.bin agl.bin > TESE.COD

agl.bin to program binarny wyciągnięty z obrazu taśmy ZX-Blockeditor
anagl.bin to nagłówek binarny wyciągnięty z obrazu taśmy ZX-Blockeditor (ten krótszy przed blokiem z programem a.bin)

TESE.COD został zmodyfikowany w edytorze hexów mc pod Linuxa.

Zamieniono w nim hexy z nagłówka(anagl.bin) na następujące:

03 54 45 53 45 20 20 20 20 20 20 16 4A 00 00 00
80

-------------
Prawdopodobne znaczenie wartości poszczególnych bajtów programu
03 - to oznaczenie programu
54 45 53 45 20 20 20 20 20 20  - to nazwa pliku .COD (TESE), ze spacjami na końcu
16 4A - gdzie prawdopodobnie 4A to bardziej znaczacy czyli wynik w hexach przetworzony na dziesiętny i mnożony razy 255 + 16 w hexach przetworzone na dziesiętny i dodane - długość zasadniczego programu.
00 00 - początek programu do uruchomienia w pliku binarnym
00 80 - klasyczna wartość dla Elwro, prawdopodobnie początek lub koniec położenia w RAM.

steev

  • *****
  • Wiadomości: 1362
  • Miejsce pobytu:
    inode 42
Machines should work. People should think.