26

Odp: STE Scroll

saulot napisał/a:

jury: to spróbuj wwalić tam jakiegoś nop'a, wrzucić słowo even przed VBL

Nie pomogło :(

saulot napisał/a:

odpal zamiast monsta np. adebug. monst daje ciała czasami.

To chyba i tak nie ma sensu, bo skoro mi się zawiesza, to będzie się zawieszać niezależnie od debuggera.  A swoją drogą i tak szukam jakiegoś ciekawszego debuggera więc obadam tego adebug'a :)

Ostatnio edytowany przez jury (2011-06-19 22:19:01)

27

Odp: STE Scroll

jury napisał/a:

To chyba i tak nie ma sensu, bo skoro mi się zawiesza, to będzie się zawieszać niezależnie od debuggera.  A swoją drogą i tak szukam jakiegoś ciekawszego debuggera więc obadam tego adebug'a :)

Tak, źle napisane programy zawieszają się niezależnie od debuggera ;))). A ADEBUG dał radę w miejscach gdzie monst odpadł, więc dlatego o nim napisałem.

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

28

Odp: STE Scroll

A wszedłeś w supervisora ?? Założe się, że nie...

What can be asserted without proof can be dismissed without proof.

29

Odp: STE Scroll

Tak, bo jakbym nie wszedł w supervisora to wybombił ( a nie zawiesił ) by mi się już w trzeciej linijce: movem.l    d0-d7,$ff8240
:P

Ostatnio edytowany przez jury (2011-06-19 22:23:02)

30

Odp: STE Scroll

ale supervisor to jest przecież dla dziewczyn ;)))

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

31

Odp: STE Scroll

ale co sie konkretnie dzieje? Bomby czy freez, konkrenie jakie masz symptomy.

What can be asserted without proof can be dismissed without proof.

Odp: STE Scroll

Aj, a w tryb supervisor wszedł?

(ups nie doczytałem do końca)

Ostatnio edytowany przez Adam Klobukowski (2011-06-19 22:32:12)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

33

Odp: STE Scroll

sqward: zwiecha, jedyny ratunek reset steem'a
adamk: pytanie już padło :)

34

Odp: STE Scroll

A czy aby napewno orbinalny VBL nie jest potrzebny, żeby działała funkcja Crawcin() ? Jeśli masz freeza to założe się, że poprostu nigdy nie wychodzi z trapa. Tak jak ktoś Ci w tym wątku sugerował, debuger pomógł by Ci w dokładnym zlokalizowaniu problemu.

What can be asserted without proof can be dismissed without proof.

35

Odp: STE Scroll

Widziałeś kiedykolwiek kawałek kodu który używając VBLa dopisuje się do listy procedur wywoływanych w "default"owym VBLu? Ja nigdy :) Ale cóż, spróbuję, tylko o matko, nigdy tak nie robiłem. Muszę przewalić trochę literatury jak to się robi.

36

Odp: STE Scroll

tró, chyba zamiast zabijać oryginalnego vbl'a bezpieczniej będzie podczepić się pod kolejkę vblową.. nie?

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

37

Odp: STE Scroll

Ale coś tak przez mgłę kojarzę że z milion lat temu czytałem gdzieś o tym co tam się dzieje w kolejce VBLa, i jakoś tak mi się pamięta, że tam nic absolutnie ciekawego nie było. Do tego, nawet w trylionie tutoriali walających się, nigdy, ale to absolutnie nigdy nie widziałem przykładu podpinania się do kolejki. Wszyscy uwalali oryginalnego, a przywracali przy wyjściu. Cóż, jeszcze powalczę i jak nic nie zadziała, to będę szukał tutoriala jak się podpiąć do kolejki :D

Ostatnio edytowany przez jury (2011-06-19 22:47:56)

38

Odp: STE Scroll

Jury: zahakować to można tak:

old_vbl:            ds.l  1

new_vbl:          ;Twoj vbl
                         jmp      ([old_vbl])



Pozatym problemów może być masa w innych miejscach. Taka zgadywanka jest trochę bezpłodna. Może poprostu zamieść cały kod...

Ostatnio edytowany przez sqward (2011-06-19 22:51:19)

What can be asserted without proof can be dismissed without proof.

39

Odp: STE Scroll

ale co to za filozofia?
masz pod adresem $454 ilość funkcji wykonywanych w VBL (normalnie jest 8). Pod $456 masz wskaźnik do listy funkcji(wskaźników do funkcji).
Na dzień dobry przechodzisz tą listę (sprawdzasz 8 pointerów, który jest z nich 0, jak jest 0 to wwalasz swoją funkcję) i tyle..
Jak wszystkie zajęte to będziesz musiał sobie zarezerwować większą tablicę z pointerami, przekopiować zawartość ze starej do nowej, zupdatować ilość funkcji wykonywanych w VBLu($454) i zaktualizować wskaźnik do listy pod $456, żeby wskazywał na Twoją,a nie oryginalną.
Po zakończeniu operacji, trzeba posprzątać po sobie.

saulot / [nokturnal]
==================================
wiki Atari 16/32 bit: https://bus-error.nokturnal.pl

40

Odp: STE Scroll

sqward napisał/a:

J
Pozatym problemów może być masa w innych miejscach. Taka zgadywanka jest trochę bezpłodna. Może poprostu zamieść cały kod...

To jest właśnie cały kod :) Uszczupliłem go do minimum, tak aby było wyświetlenie obrazka i podmiana vbl'a
Tzn, brakuje jeszcze init'a. Ale jak pisałem wcześniej. Jest z tutoriala perihelion'a + moje ze cztery linijki.
Wygląda tak:

init    
* set supervisor
    clr.l    -(a7)            clear stack
    move.w    #32,-(a7)        prepare for user mode
    trap    #1            call gemdos
    addq.l    #6,a7            clean up stack
    move.l    d0,old_stack        backup old stack pointer
* end set supervisor

* save the old palette; old_palette
    move.l    #old_palette,a0        put backup address in a0
    movem.l    $ffff8240,d0-d7        all palettes in d0-d7
    movem.l    d0-d7,(a0)        move data into old_palette
* end palette save

* saves the old screen adress
    move.w    #2,-(a7)        get physbase
    trap    #14
    addq.l    #2,a7
    move.l    d0,old_screen        save old screen address
* end screen save

* save the old resolution into old_resolution
* and change resolution to low (0)
    move.w    #4,-(a7)        get resolution
    trap    #14
    addq.l    #2,a7
    move.w    d0,old_resolution    save resolution
    
    move.w    #0,-(a7)        low resolution
    move.l    #-1,-(a7)        keep physbase
    move.l    #-1,-(a7)        keep logbase
    move.w    #5,-(a7)        change screen
    trap    #14
    add.l    #12,a7
* end resolution save    
    
    move.l    $70,old_vbl

    rts

init_nores    
* set supervisor
    clr.l    -(a7)            clear stack
    move.w    #32,-(a7)        prepare for user mode
    trap    #1            call gemdos
    addq.l    #6,a7            clean up stack
    move.l    d0,old_stack        backup old stack pointer
* end set supervisor

* save the old palette; old_palette
    move.l    #old_palette,a0        put backup address in a0
    movem.l    $ffff8240,d0-d7        all palettes in d0-d7
    movem.l    d0-d7,(a0)        move data into old_palette
* end palette save

* saves the old screen adress
    move.w    #2,-(a7)        get physbase
    trap    #14
    addq.l    #2,a7
    move.l    d0,old_screen        save old screen address
* end screen save

* save the old resolution into old_resolution
* and change resolution to low (0)
    move.w    #4,-(a7)        get resolution
    trap    #14
    addq.l    #2,a7
    move.w    d0,old_resolution    save resolution
    
;    move.w    #0,-(a7)        low resolution
;    move.l    #-1,-(a7)        keep physbase
;    move.l    #-1,-(a7)        keep logbase
;    move.w    #5,-(a7)        change screen
;    trap    #14
;    add.l    #12,a7
* end resolution save    
    
    move.l    $70,old_vbl

    rts


restore    
* restores the old resolution and screen adress
    move.w    old_resolution,d0    res in d0
    move.w    d0,-(a7)        push resolution
    move.l    old_screen,d0        screen in d0
    move.l    d0,-(a7)        push physbase
    move.l    d0,-(a7)        push logbase
    move.w    #5,-(a7)        change screen
    trap    #14
    add.l    #12,a7
* end resolution and screen adress restore

* restores the old palette
    move.l    #old_palette,a0        palette pointer in a0
    movem.l    (a0),d0-d7        move palette data
    movem.l    d0-d7,$ffff8240        smack palette in
* end palette restore

    move.l    old_vbl,$70

* set user mode again
    move.l    old_stack,-(a7)        restore old stack pointer
    move.w    #32,-(a7)        back to user mode
    trap    #1            call gemdos
    addq.l    #6,a7            clear stack
* end set user
    
    rts
    

old_resolution    dc.w    0

old_stack    dc.l    0

old_screen    dc.l    0

old_vbl    dc.l    0

    section bss

old_palette    ds.l    8
    
saulot napisał/a:

ale co to za filozofia?

Ablolutnie żadna. Ale jak się tego nie robiło, a tylko o tym czytało i to z 15 lat temu, to trzeba znaleźć gdzieś te wszystkie adresy. Ale skoro już podałeś to dzięki :)

Ostatnio edytowany przez jury (2011-06-19 22:59:48)

41

Odp: STE Scroll

z Jurym rozwiązaliśmy problem.
Okazuje się że tutoriala perihelion nie jest do końca cacy i trzeba go poprawić:

orginał

restore    
* restores the old resolution and screen adress
    move.w    old_resolution,d0    res in d0
    move.w    d0,-(a7)        push resolution
[...]

zpaczowany:

restore    
    move.l    old_vbl,$70
* restores the old resolution and screen adress
    move.w    old_resolution,d0    res in d0
    move.w    d0,-(a7)        push resolution
[...]

Teraz powinno być git.

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

42

Odp: STE Scroll

To nie tutorial periheliona :) On jest dobry, akurat backup i odzyskanie ( w złym miejscu ) adresu vbl'a dodałem ja :D
Dziękiiiiiiiii za pomoc miszczu, działaaaa :)
No i oczywiście nie trzeba dodawać swojej procedurę do defaultowej kolejki vbl. Wczoraj w Intern ST wyczytałem co w tej kolejce jest i tak naprawdę przydatne jest wyświetlanie kursora ( reszta to tak jak wcześniej pisałem, "bzdury" ), czyli tak naprawdę przydaje się to jak się pisze coś GEMowego :P

Ostatnio edytowany przez jury (2011-06-21 17:02:04)

Odp: STE Scroll

Trzeba, nie trzeba - kolejka VBLi jest rozwiązaniem 'systemowym'. W demie czy grze które rezerwują całą maszynę, jej użycie jest i tak trochę bez sensu, lepiej podpinać się bezpośrednio pod $70, bo masz wtedy 100% kontroli nad wykonywanym kodem.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

44

Odp: STE Scroll

A jak sterować blitterem z poziomu GFA?

ATARI Falcon 14MB , STE 4MB, STFM 4MB, 800 XL turbo CA12 CA 2001, CPC 6128 mono, THOMSON MO5, SVI 738, Amiga 500+, 600 2MB, CDTV   + , CD32

45

Odp: STE Scroll

o tak
http://www.atari-forum.com/viewtopic.ph … mp;t=21191

Lynx I / Mega ST 1 / 7800 / Portfolio / Lynx II / Jaguar / TT030 / Mega STe / 800 XL / 1040 STe / Falcon030 / 65 XE / 520 STm / SM124 / SC1435
DDD HDD / AT Speed C16 / TF536 / SDrive / PAK68/3 / Lynx Multi Card / LDW Super 2000 / XCA12 / SkunkBoard / CosmosEx / SatanDisk / UltraSatan / USB Floppy Drive Emulator / Eiffel / SIO2PC / Crazy Dots / PAM Net
http://260ste.atari.org

Odp: STE Scroll

Ponoć wbudowana funkcja GFA RC_COPY używa blittera, ale pewności nie mam.

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

47

Odp: STE Scroll

GFA powinno umrzeć. Nigdy nie powstać :)

What can be asserted without proof can be dismissed without proof.

48

Odp: STE Scroll

Tak, już to słyszałem- GFA jest dla kobiet. A sterownie dźwiękiem cyfrowym z poziomu GFA?

ATARI Falcon 14MB , STE 4MB, STFM 4MB, 800 XL turbo CA12 CA 2001, CPC 6128 mono, THOMSON MO5, SVI 738, Amiga 500+, 600 2MB, CDTV   + , CD32

Odp: STE Scroll

To już trzeba ręcznie po rejestrach lecieć (POKE). Da się, robiłem to... nosz k*wa jak dawno temu :(

Sqward, co cię GFA aż tak skrzywdził? ;)

Atari: FireBee, (Falcon030 CT60e SuperVidel SvEthlana CTPCI), TT, (520ST Pak030 Frak PuPla Panther), (520ST 4MB ST RAM 8MB TT RAM CosmosEx SC1435), (1040STFM UltraSatan SM124), (1040STE 4MB ST RAM 8MB TT RAM CosmosEx NetUSBee SM144 SC1224), 260ST, 520 ST+, (MEGA ST SM125), (65XE Rapidus U1MB VBXE SIDE2 SIO2PC), (Jaguar SkunkBoard), Lynx II, 2x Portfolio

50

Odp: STE Scroll

leniuk napisał/a:

Tak, już to słyszałem- GFA jest dla kobiet.

Tak, na tym forum można wiele ważnych i mądrych rzeczy się dowiedzieć :D