C64Power Forum

Software => Software => Wątek zaczęty przez: krolikbest w 23 Lutego 2018, 20:21

Tytuł: potrzebuję rozpiske formatu .PRG
Wiadomość wysłana przez: krolikbest w 23 Lutego 2018, 20:21
Witam,

potrzebuje rozpiskę formatu.PRG, czyli ("ztokenizowana") wersja .BAS. Wiem, że pierwsze dwa bajty to adres załadowania, ale potem jest bajt którego nie rozumiem, bo nie pasuje mi do ani ilości bajtów w danej linii programu, może to adres???
Słowem, po numerze linii poprzedzonej bajtem o wart. 8 i zakończonej bajtem o wart.0  i bajtach danych następuje coś takiego jak bajt "0" (zero), potem bajt niebędący zerem no i ponownie bajt o wartości 8, bajt numeru linii i bajt "0" i potem znowu dane .. i tak aż do końca pliku .prg
Przykład ponieżej
1
8 -- to adres ładowania programu
14 --wtf??!!
8
10 -- numer linii
0
153 - bajty danych
34 - // -
72 - // -
34- // -
0 -- koniec linii
35 -- wtf??!!
8
20 -- kolejny numer linii
0

robię tokenizer, nawet coś już wychodzi, ale nie rozumiem co to są za bajty, adres, jakiś pointer..?
Może ktoś mam opis formatu .prg??
Tytuł: Re: potrzebuję rozpiske formatu .PRG
Wiadomość wysłana przez: V-12/Tropyx w 23 Lutego 2018, 23:17
No tak na szybkiego rozpisać się nie da, ale w skrócie: dwa pierwsze bajty to masz adres startowy programu - te dwa bajty (w Twoim przypadku 1 i 8) oznaczają, że program ma być ładowany pod $0801. Istotne jest to, że te 2 bajty nie ładują się pod $0801, tylko są znacznikiem - wektorem dla operacji load. Dwa następne bajty to lokalizacja w pamięci kolejnej linii w Basicu (w Twoim przypadku $0814). Kolejne 2 bajty to tak jak piszesz - numer linii. Kłania się przede wszystkim znajomość hexa i obsługa monitora języka maszynowego. 8 i 35 to lo/hi adresu trzeciej linii w Basicu.
Tytuł: Re: potrzebuję rozpiske formatu .PRG
Wiadomość wysłana przez: krolikbest w 24 Lutego 2018, 23:13
Ok, poczytałem Frelka, poanalizowałem i wyszło cos takiego:
https://youtu.be/iFm1xjkQb8k (https://youtu.be/iFm1xjkQb8k)
do sciągnięcia tutaj:
https://drive.google.com/drive/folders/1TMUGYqS0QmHTnwDuy9RTT1CoCDKaJeM7 (https://drive.google.com/drive/folders/1TMUGYqS0QmHTnwDuy9RTT1CoCDKaJeM7)