C64Power Forum
Ogólne => Forum Ogólnodyskusyjne => Wątek zaczęty przez: Gizmoń w 25 Marca 2008, 19:10
-
Witam.
Mam takie pytanie: jak za pomocą programu na C64 wywołać procedurę ładowania programu z dysku? Gdy wpisuję takie coś (wczyta program TEST po naciśnięciu jakiegoś klawisza):
10 GET A$: IF A$=\'\' THEN 10
20 LOAD \'TEST\',8
Poprawnie wczytuje tylko krótkie programy (do około 20 linii). W dłuższych pojawiają się błędy, zmieniana jest treść linii, dodawane są linie, których nie widać, ale powodują błędy, np.:
RUN
SYNTAX ERROR IN 57874
READY
LIST 57874
READY
Jak spowodować, by programy mogły się wzajemnie wczytywać i działać? Komenda
LOAD \'nazwa\',8,1 też nie działa, te same objawy. Dotyczy to również magnetofonu. A przecież jakoś to się dzieje w grach itp.
Drugim pytaniem jest nie tyle działanie turboloadera (sama nazwa mówi o co chodzi) a listing tego programu. Mam kilka takich programów, każdy zabezpieczony poleceniem SYSxxxx. A ciekawie byłoby zobaczyć i polepszyć taki program, nie tylko w celach edukacyjnych
. Gdzie go zdobyć?
PS. Wiem, że Gógle
są dobrym sposobem, ale nie na wszystko
-
Aby programy mogly sie wzajemnie wczytywac i dzialac musisz uzyc komendy OPEN. Poszukaj w necie o jej ogromnych plusach. Kiedys robilem program w oparciu o odczyt danych zapisanych w drugim pliku. Choc juz troche lat minelo i nie powiem ci dokladnie jak tej komendy uzyc :/ bylo cos takiego jak OPEN 1,8,15 itp.
-
Programy typu turboloader jest pisany ASEMBLEREM musisz uzyc programow typu monitor czy action replay. I musisz znac sie na asemblerku :)
-
no i żródła takich czy innych turbo loaderów są na stronach http://codebase64.org/ na początek wystarczy. Chociaż ja lubie bardziej irq loadery mr.wegi.
ewentualnie podmiana romu na taki z turboloaderem (ex-rom bodaj sie nazywa)
-
No to w takim razie turboloader zostawię sobie na potem. Ale co z tym ładowaniem programu? Szukałem, szukałem i znalazłem - spis komend stacji po raz enty, podręcznik, temat na jakimś forum \'jak sformatować dyskietkę\' itp. No i oczywiście LOAD \'name\',8.
Z dyskietki demo C64 wczytałem program DEMO.BOOT i udało mi się go podpatrzeć komendą LIST. Wypisuje on na ekranie polecenie:
NEW
LOAD \'nazwa\',8
i \'naciska\' return.
Oprócz tego wpisuje mnóstwo liczb do różnych komórek w pamięci, i wczytuje w ten sposób 3 programy naraz... A ja chcieć jeden!
-
Gizmoń, nie bój żaby ;)
Te \'demo.boot\' o którym piszesz, to całkiem sprytna bestia :)
Powinno dać się przerobić na ładowanie tylko jednego pliku.
Rzuć okiem na mapę pamięci C64:
http://www.ludd.luth.se/~watchman/fairlight/c64/c64-memo.html
oraz
http://www.ludd.luth.se/~watchman/fairlight/c64/c64-ram.html
50 POKE198,10
^^^^ każemy C64 myśleć, że ma 10 znaków w buforze klawiatury (= tak jakbyśmy wklepali te 10 znaków z klawiatury)
55 DATA...
60 FORI=1TO10:....
^^^^ dane z linii 55 (te po DATA) w linii 60 są przepisywane do komórek 631...640 - a tam właśnie jest bufor klawiatury (sprawdź w mapie pamięci)
Linia 70:
pierwsze POKE przestawia początek BASICa na $0818 (2072) - normalnie jest $0801 (czyli 2049); drugie POKE wpisuje 0 pod adres $1800 i prawdę mówiąc, nie wiem po co (może potrzebne tym programom które są ładowane przez demo - nie sprawdzałem).
Co wpisane jest do bufora klawiatury ?
Polecam tą stronę: http://en.wikipedia.org/wiki/PETSCII
19 -> HOME
5 x 13 -> 5 razy CR (czyli klawisz return)
82,85,78 -> RUN
13 i znowu klawisz return
Życzę powodzenia w dalszym przerabianiu demo.boot :)
-
Szkoda, że ta strona jest już nieaktywna
-
O... zamknęli. Ale Google jeszcze ma kopię w cache`u ;)
Zresztą map pamięci C64 jest na sieci więcej. Np.:
http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_5/page_311.html