kategoria: Asembler
[#1] Ładowanie plików w ASM
Witam
Moje ostateni boje i testy z blitzem oraz rozmowa na PM z jednym z forumowiczów ;) zastanowiły mnie jak podejść do ładowania plików w demie.
chciałbym aby podczas grania muzyki, i wyświetlania np tylko prostej grafiki stacja lub HD ładowała kolejne pliki. doczytałem że muszę powłączać spowrotem przerwania w rejestrze INTENA link
mam tylko kłopot ze zrozumieniem które dokładnie oraz czy coś jeszcze powinienem włączyć/wyłączyć. pewnie DMA stacji? ale powiem szczerze że nie bardzo do końca to rozumiem.
Chętnie skorzystam z pomocy koderów na forum ;)
Z góry dzięki.
[#2] Re: Ładowanie plików w ASM

@retronav, post #1

A czy demo koniecznie musi wyłączać system ? ;)
[#3] Re: Ładowanie plików w ASM

@retronav, post #1

dokladnie, jesli plik ma byc odczytany z dyskietki to nalezy wlaczyc kanal DMA:
04 DSKEN Disk DMA enable

jesli z dysku twardego to juz nie :)

system wylaczyc nalezy z roznych powodow, moim zdaniem glowny - szybkosc, i drugi - po co ma cos w tle dzialac skoro i tak uzytkownik do tego nie ma dostepu, dopoki nie wylaczy lub wyjdzie z dema. chyba, ze mowimy juz o rtg, demu w okienku czy innych tworach, ale zakladam ze koledze chodzi o klasyczne amigowe demo :)
[#4] Re: Ładowanie plików w ASM

@juen, post #3

system wylaczyc nalezy z roznych powodow, moim zdaniem glowny - szybkosc, i drugi - po co ma cos w tle dzialac skoro i tak uzytkownik do tego nie ma dostepu, dopoki nie wylaczy lub wyjdzie z dema.


A nie lepiej na poczatku dema zrobic SetTaskPri(FindTask(NULL), 127)? Nie zabijasz systemu, wydajnosc tracisz w minimalnym stopniu bo i tak wszystkie taski w systemie maja nizszy priorytet a czas cpu zabiera ci tylko kilka handlerow przerwan, a jako gratis nie musisz sie glowic nad tym, co zrobic zeby doczytac dane z dysku/dyskietki.

Ot, taki sobie komentarz od nie-scenowca ;)
[#5] Re: Ładowanie plików w ASM

@juen, post #3

@juen
Dzięki. doczytam co trzeba. na razie mi nie działa ale jeszcze krótko nad tym siedze ;)
pytanie. czemu na dysku HD nie trzeba DMA włączać?
C
[#6] Re: Ładowanie plików w ASM

@retronav, post #5

pytanie. czemu na dysku HD nie trzeba DMA włączać?


bo ide.device w A1200, A600, A4000 korzysta z trybu PIO. Jak jest w innych nie wiem.
[#7] Re: Ładowanie plików w ASM

@pisklak, post #2

W niektórych sytuacjach nie trzeba wyłączać systemu. Chodzi o sytuacje, kiedy chcemy by nasz program działał bez problemu na różnych modelach Amigi. Wówczas użycie systemu gwarantuje nam poprawne działanie zarówno na Amidze 500 jak i 1200.

Moim zdaniem nowoczesne programowanie na Amidze polega na zainstalowaniu swojego przerwania np. Coppera z wysokim priorytetem. Nie zamulamy systemu, a możemy pięknie zsynchronizować nasz program.

I nie mamy żadnych problemów w korzystaniu z dobrodziejstw systemu, m.in. dos.library do czytania danych z dysku.

Ostatnia aktualizacja: 20.01.2017 13:28:49 przez Hexmage960
[#8] Re: Ładowanie plików w ASM

@Hexmage960, post #7

jesli chcemy zrobic szybkie demo to ubijamy system i wlaczamy tylko niezbedne dma i przerwania.. przeciez chcemy wydusic z amigi maxa...
a pliki mozemy doczytywac w odpowiednim momencie zwalniajac dma.
[#9] Re: Ładowanie plików w ASM

@juen, post #8

przeciez chcemy wydusic z amigi maxa...

Ja jestem przeciwnikiem takiego podejścia. Trzeba zostawić sobie pewien zapas, przyda się później.

a pliki mozemy doczytywac w odpowiednim momencie zwalniajac dma.

Jeśli ktoś chce, może zrobić to w ten sposób. Mam nadzieję, że Carrion jednak skorzysta z gotowych procedur do czytania danych. Czy BlitzBasic nie ma operacji dyskowych?
[#10] Re: Ładowanie plików w ASM

@Hexmage960, post #9

blitz ma operacje dyskowe i bardzo mnie kusi żeby z niego skorzystać, ale co ja potem powiem innym scenowcom? że napisalem demo w .... Blitz Basicu...???

to będzie bolało ;)

dla tego szukam opcji dla tych funkcji które poznałem i zrozumialem bawiąc się blitz'em.
nie jestem jakimś mega coderem ale cały czas się uczę - ba asm na 68k to na serio przyjemna sprawa - w porównaiu np z 6502 ;)

z prawdziwymi coderami przebywam/gadam (nie chcę pisać że obcuję ;) ) od conajmniej 1992 roku i wydaje mi się że wiem jak podejść do kodowania dem/gier na klasyczne amigi.
wyłączasz system operacyjny i piszesz pod bare metal. nie interesują mnie produkcje nowoczesne bo nigdy nie będę kjerownikiem. demoscenowanie dla mnie to pisanie pod ograniczony fizycznie sprzęt i wyciskanie max możliwości z 512chip + 512slow.

ale wracając do tematu i mając na uwadze że koder ze mnie na razie googlowy (umiem wygooglować i przepisać do asm-one'a):
udało mi się napisać dzisiaj ładowanie pliku za pomocą dos.library (w asmie).
więc pytania:

czy dos library mam mieć otwarte cały czas? czy jak po załadowaniu znów wyłączę dma dysku i poustawiam przerwania tak aby mi tylko irq działało to wystarczy? czy mam za każdym razem zamykać bibliotekę i otwierać ponownie jak będę chciał coś doczytać? czy mogę trzymać uchwyty (handle) do plików otwarte przez całe demo nawet jak wyłączę DMA i przerwania?
wiem że to są ogólne pytania ale wolę uczyć się w ten sposób, aby zrozumiećtemat/problem niż prosić o gotowce :D
pozdrawiam i mam nadzieję że temat rozkręci się jeszcze bardziej ;)

[edit]
przyszło mi do głowy jeszcze jedno pytanie...
czy muszę korzystać z dos.library aby ładować pliki czy może jest jakiś "poa-systemowy" sposób? i nie, nie interesuje mnie ładowanie po trackach.


Ostatnia aktualizacja: 20.01.2017 18:50:12 przez retronav
[#11] Re: Ładowanie plików w ASM

@retronav, post #10

dos.library możesz mieć otwarte cały czas.
Z tym irq nie rozumiem za bardzo.
Nie musisz za każdym razem otwierać bibiloteki i jej zamykać.
Nigdy nie trzymałem uchwytów przez cały czas życia programu, po prostu wczytałem i zamknąłem. A jeśli jest to duży plik, to myśle że nie powinno być problemów z trzymaniem takiego handlera. Wtedy odpada otwieranie pliku w procedurze ładowania a przy końcu byś musiał go zamknąć.
[#12] Re: Ładowanie plików w ASM

@Hexmage960, post #9

Jakis znowu zapas? Na co sie pozniej przyda? Nie rozumiem? To tak jakbys powiedzial, wysle 10kg paczkę jako usluge 15kg, zamiast 10kg - zostawiajac zapas, bo pozniej sie przyda, ale jak go pozniej chcesz wykorzystac?:D
[#13] Re: Ładowanie plików w ASM

@juen, post #12

Są dwie szkoły pisania - i jak mniemam na "małych" Amigach ubijanie systemu to norma, chociaż nie jestem wcale taki pewny czy to rzeczywiście daje aż takie korzyści jak niektórzy twierdzą. Natomiast dema na mocniejsze konfigi to chyba trochę inna sprawa.
Nie wiem w sumie koderem nie jestem ( a raczej jestem bardzo lamerskim koderem, tak naprawdę można powiedzieć że dopiero zaczynam cokolwiek pisać i się po prostu uczę, jak mam czas...). Ironią losu jest że jak tak naprawdę nigdy na poważnie nie uczyłem się kodowania, np. nie znam C chociaż od biedy potrafię coś tam z kodu zrozumieć, a biorę się za naukę ASMa
Musze stwierdzić że 68k ASM jest całkiem "zjadliwy" i pisanie potrafi wciągać.. jak się ma czas. W każdy razie jestem pełen szacunku dla demoscenowych ( i nie tylko) koderów piszących w ASMie. 68k ASM rulez ! (bo rulezowanie musi wrócić !!!! )

PS. Powodzenia dla autora wątku życzę
PS2. A jaka to różnica czy demo jest napisane w ASMie, C, BlitzBAsicu czy w M$Basicu - jeśli jest dobre ?

Ostatnia aktualizacja: 21.01.2017 11:26:22 przez pisklak
[#14] Re: Ładowanie plików w ASM

@mschulz, post #4

@mschulz
To w sumie mało prawdopodobne, ale przyszło mi do głowy takie pytanie.
A jeśli wszystkie taski mają najwyższy priorytet, to co wtedy ?

@pisklak
A wyobraź sobie taką sytuację. Kilka programów podczepiło się pod VBI albo pod inne przerwanie. I teraz Twój program radośnie coś pokazuje a na przykład podczepiona procedura akurat teraz postanowiła zrobić coś większego niż tylko zmiana licznika ilości ramek i widzisz że czasami Twoja produkcja nie chodzi płynnie i za diabła nie wiesz dlaczego, bo nie dzieje się to na Twoim sprzęcię a u innego użytkownika.

@Hexmage960
Ja uważam że albo pisze się pod system albo nie. Nie ma pośredniej drogi bo wychodzą śmieszne rzeczy na innych konfiguracjach niż Twoja.

Ostatnia aktualizacja: 21.01.2017 12:55:46 przez asman
[#15] Re: Ładowanie plików w ASM

@asman, post #14

Ja uważam że albo pisze się pod system albo nie. Nie ma pośredniej drogi bo wychodzą śmieszne rzeczy na innych konfiguracjach niż Twoja.

Ja przedstawiłem sposób na to, żeby nasz program czasu rzeczywistego nie wyłączał multitaskingu, a zarazem był zsynchronizowany z ramką celem uzyskania animacji 50/60fps.

Jeśli użyjemy przerwania Coppera i zainstalujemy go sobie we własnej Copperliście (np. copperliście użytkownika własnego ekranu) to wówczas nasze przerwanie będzie wykonywane tylko, gdy ekran/copperlista jest aktualnie aktywna.

Nie będzie konfliktu z innymi programami.

Mój sposób nie jest sposobem pośrednim, ponieważ nie używa bezpośrednio rejestrów sprzętowych, a zarazem nie wyłącza systemu.

Uważam, że dzięki temu nasz program będzie działać bardziej niezawodnie na różnych platformach (OCS/ECS/AGA) i systemach (1.3/2.0/3.0). Odchodzi bolączka z dostosowaniem ustawień rejestrów w zależności od kości graficznych.

Zarazem nasz program będzie koegzystował w systemie wielozadaniowym nie muląc pozostałych programów aktualnie wykonywanych.

Walenie np. po rejestrach stacji dyskietek itp. to dość dawne rozwiązanie, które zostało aktualnie wyparte przez dużo lepsze, np. korzystanie z twardego dysku.

Poza tym dla mnie nie ma nic bardziej denerwującego niż program, który przejmuje kontrolę nad wszystkim i nie da się wyłączyć.

Amiga została zaprojektowana jako komputer i system wielozadaniowy i oferuje usługi, które umożliwiają tworzenie programów czasu rzeczywistego. Uważam, że nowoczesne programowanie powinno z tych usług korzystać.
[#16] Re: Ładowanie plików w ASM

@juen, post #12

Moim zdaniem nie powinno się wykorzystywać na maxa chipsetu i procesora, bo jak będziemy chcieli rozbudować program to znajdziemy się w sytuacji, że tego czasu sobie nie rozciągniemy. Jak zostawimy zapas - wówczas pole manewru będzie możliwe.
[#17] Re: Ładowanie plików w ASM

@Hexmage960, post #15

Ja inaczej pojmuje pisanie pod OS a Ty inaczej. W moim podejściu nie ma czegoś takiego jak podpięcie się do przerwania Coppera, bo w przyszłych systemach może go nie być. I to jest właśnie piękne, że może go nie być a Twój program mimo to będzie działał.

Wysnucie wniosku jakoby program miał działać niezawodnie, bo używamy przerwania Coppera jest co najmniej niewłaściwe. Użycie bądż nie przerwania Coppera ma się nijak do niezawodności oprogramowania.
[#18] Re: Ładowanie plików w ASM

@Hexmage960, post #16

aha no to nie wiedziałem, że źle zrozumiałeś pytanie autora, który jasno sprecyzował, że będzie pisał demo, a nie jakiś program :)
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem