Polski

Zapamiętywanie pliku z RAM:

Jeśli masz problem z instalacją oprogramowania nie wiesz jak ustawić poprawnie emulator WinUAE - ten dział jest dla Ciebie.
Anthrox Załóżmy, że mam aplikację, która upiera się, aby zapisywać wyniki do RAM:
Chciałbym, aby moje wyniki nie przepadały po resecie Amigi.

Co w takim przypadku powinienem zrobić?

Póki co wpadłem na mało elegancki sposób - startujemy aplikację:

Code: Select all

execute start
run waitx s=5 l=0 execute work >nil:
APLIKACJA


plik start zawiera:

Code: Select all

if exists DH0:Settings
copy DH0:Settings RAM:
Endif


plik work zawiera:

Code: Select all

if exists RAM:Settings
copy RAM:Settings DH0:
Endif


Zasada działania:
Wykonujemy najpierw skrypt, który sprawdza czy istnieje plik settings na dysku DH0:
Jeżeli tak - kopiuje go do pamięci RAM:, następnie uruchamiana jest pętla za pomocą programu waitx, który co 5 sekund będzie sprawdzał czy istnieje plik settings w RAM: - jeżeli tak będzie go kopiował na DH0:

Na Aminecie można dorwać świeżutki tools: Coex, który jest znacznie bardziej zaawansowany od zwykłego Copy:
http://aminet.net/util/cli/coex.lha

Czy moje rozwiązanie jest jedynym możliwym, czy można to zrobić "ładniej"?

Bonusowe pytanie - czy jest różnica między:

Code: Select all

run waitx s=5 l=0 execute work >nil:

a

Code: Select all

run >nil: waitx s=5 l=0 execute work


PS
Dla utrudnienia nie oszukujemy i nie modyfikujemy binarki, aby zapisywała na DH0:
Temat zakładam z czystej ciekawości, bo może istnieje amigowy trick, o którym nie miałem pojęcia ;)
Page 1 of 1 1 https://forum.thecompany.pl/winuae/zapamietywanie-pliku-ram-t2893.html
2013-09-03T18:19:30+01:00
Załóżmy, że mam aplikację, która upiera się, aby zapisywać wyniki do RAM:
Chciałbym, aby moje wyniki nie przepadały po resecie Amigi.

Co w takim przypadku powinienem zrobić?

Póki co wpadłem na mało elegancki sposób - startujemy aplikację:

Code: Select all

execute start
run waitx s=5 l=0 execute work >nil:
APLIKACJA


plik start zawiera:

Code: Select all

if exists DH0:Settings
copy DH0:Settings RAM:
Endif


plik work zawiera:

Code: Select all

if exists RAM:Settings
copy RAM:Settings DH0:
Endif


Zasada działania:
Wykonujemy najpierw skrypt, który sprawdza czy istnieje plik settings na dysku DH0:
Jeżeli tak - kopiuje go do pamięci RAM:, następnie uruchamiana jest pętla za pomocą programu waitx, który co 5 sekund będzie sprawdzał czy istnieje plik settings w RAM: - jeżeli tak będzie go kopiował na DH0:

Na Aminecie można dorwać świeżutki tools: Coex, który jest znacznie bardziej zaawansowany od zwykłego Copy:
http://aminet.net/util/cli/coex.lha

Czy moje rozwiązanie jest jedynym możliwym, czy można to zrobić "ładniej"?

Bonusowe pytanie - czy jest różnica między:

Code: Select all

run waitx s=5 l=0 execute work >nil:

a

Code: Select all

run >nil: waitx s=5 l=0 execute work


PS
Dla utrudnienia nie oszukujemy i nie modyfikujemy binarki, aby zapisywała na DH0:
Temat zakładam z czystej ciekawości, bo może istnieje amigowy trick, o którym nie miałem pojęcia ;)

2013-09-04T10:49:21+01:00

Re: Zapamiętywanie pliku z RAM:

Nie spotkałem jeszcze programu, który zapisywalby ustawienia tylko do ram:
Chyba że to aplikacja w wersji demo lub shareware.

Ps.
dlaczego modyfikacja binarki nie wchodzi w grę ?

2013-09-04T11:02:51+01:00

Re: Zapamiętywanie pliku z RAM:

Było coś takiego jak pamięć RAD:. Mountowało się to jak CD lub dyskietki PC 720kb. Po resecie wszystko co było w pamięci RAD: zostawało. Nie pamiętam dokładnie jak to działało ale często tego używałem.

2013-09-04T14:20:54+01:00

Re: Zapamiętywanie pliku z RAM:

exolon wrote:Było coś takiego jak pamięć RAD:. Mountowało się to jak CD lub dyskietki PC 720kb. Po resecie wszystko co było w pamięci RAD: zostawało. Nie pamiętam dokładnie jak to działało ale często tego używałem.

RAD: to nie RAM:
Oba korzystaja z pamięci ram Amigi, ale RAM: "umieszczony" jest w ROM, a RAD: trzeba dodatkowo montować.
Inna sprawa ze ten program zapisuje ustawienia do RAM: i RAD: tutaj nic nie pomoże.

2013-09-04T18:22:28+01:00

Re: Zapamiętywanie pliku z RAM:

norbi wrote:dlaczego modyfikacja binarki nie wchodzi w grę ?

Interesowało mnie, czy bez naruszalności binarki można to zrobić :hee:

A czy RAD: na bieżąco zrzuca zmodyfikowane / nowe pliki na dysk, czy odbywa się to tylko przy resecie?
Czytam wątek na PPA i widzę:
http://www.ppa.pl/forum/amiga/7235/rad-a-pamiec-fast

że można sobie wybrać, czy RAD ma korzystać z Fast / Chip. Ciekawa rzecz. :-)

2013-09-04T19:59:40+01:00

Re: Zapamiętywanie pliku z RAM:

To że RAM i RAD korzystaja z pamieci ram nie znaczy że z tego samego obszaru.
RAD po zamontowaniu zabiera pamięć ram do której nie ma dostępu ramdysk wiec nie ma możliwosci, aby pliki z ramdysku automagicznie pojawiły sie w RAD:

ps.
jesli to nie tajemnica, to ciekawy jestem co to za program :)

2013-09-04T22:01:48+01:00

Re: Zapamiętywanie pliku z RAM:

norbi wrote:jesli to nie tajemnica, to ciekawy jestem co to za program :)

To nie tajemnica - w BarFly sobie pisałem testową aplikację, która ma się ładować do pamięci FAST, dane zapisywać do RAM: i tak z ciekawości mnie naszło :-)

Z realniejszych przykładów:
czy wrzucenie binarki do RAM: nie przyspieszy aby działania aplikacji?
Jeżeli tak, to wtedy moje pytanie ma sens, gdy aplikacja standardowo zapisuje pliki tam, gdzie znajduje się program.

2013-09-04T22:05:36+01:00

Re: Zapamiętywanie pliku z RAM:

Anthrox wrote:Bonusowe pytanie - czy jest różnica między:
KOD: ZAZNACZ WSZYSTKO
run waitx s=5 l=0 execute work >nil:

a
KOD: ZAZNACZ WSZYSTKO
run >nil: waitx s=5 l=0 execute work


w 1 przypadku uruchomi się program waitx z parametrami, w tle (tz. bez pokazywania czegokolwiek w konsoli), a to co będzie dalej w skrypcie i tak się uruchomi.
w 2 podejrzewam, że wykona się waitx, a dopiero gdy skończy działanie coś następnego w skrycie np."aplikacja" co może nigdy nie nastąpić jeśli "work" się zapętli.

wszystko co napisałem powyżej może być bzdurą, ale tak mi się jakoś kojarzy ;>

2013-09-04T22:19:05+01:00

Re: Zapamiętywanie pliku z RAM:

W mojej opinii jest identycznie, ale może norbi mnie zaskoczy? :tuptup1:

2013-09-04T22:23:47+01:00

Re: Zapamiętywanie pliku z RAM:

uff, czyli jeszcze coś pamiętam. Siedzenie na kibelku z książką do amigadosu coś dało :haha:

Czyli jednak dupa. Chyba daruję sobie skojarzenia, niech fachowcy się lepiej wypowiadają :mur: :-( :niepowiem:

2013-09-05T02:55:14+01:00

Re: Zapamiętywanie pliku z RAM:

Znaczy, "działa identycznie" odnosiło się akurat, że po wpisaniu jednej z tych dwóch linijek wszystko wykona się identycznie - czyli tak jak w Twoim punkcie 1.
W sumie mogłem dać prostszą linijkę, bo ta z waitx może niepotrzebnie utrudniać - nie każdy musi znać ten program.

Uproszczone pytanie:

Code: Select all

run >nil: aplikacja

Code: Select all

run aplikacja >nil:

2013-09-05T16:08:23+01:00

Re: Zapamiętywanie pliku z RAM:

Nie zadziala identycznie !
Jesli aplikacja nie istnieje ,to w pierwszym przypadku nie dostaniemy zadnego komunikatu, w drugim będzie informacja "aplikacja: nieznanym poleceniu"

A jesli chodzi o fast i chip, to Amiga najpierw zużywa pamiec FAST, a gdy jej brakuje, pamięć CHIP.
Umieszczenie programu w RAM: daje przyśpieszenie w jej uruchomieniu (dostęp do plików) w porównaniu z HDD.
Mapowanie kickstartu do FAST 32bitowego daje rowniez "małego kopa" Amidze.

Takie sztuczki najlepiej działają na prawdziwym sprzęcie. Na emulatorze wszystko i tak "fruwa" :)

2013-12-12T17:53:55+01:00

Re: Zapamiętywanie pliku z RAM:

A czy czasem rem:setings nie istnieje czasem jako setings: ?? jeżeli tak to robisz skrypcik: assign dh0:settings settings: i po problemie. Program odpala się z pliku czy skryptem z ikoną? sprawdź, możliwości rozwiązania takich problemów może być mnóstwo.

2013-12-12T18:12:36+01:00

Re: Zapamiętywanie pliku z RAM:

Dlaczego przypuszczasz że do zapisania swoich ustawień program wymaga stworzenia własnego urządzenia logicznego settings:
Standardowo do tego służy ENVARC: lub S:

Return to WinUAE