1

Od wczoraj wyrywam sobie włosy z głowy bo zachciało mi się przy okazji tworzenia środowiska pod 68k dla amigi z użyciem Vasm'a spróbować coś pod ST.
Nie mam siły otwierać wszystki drzwi pokolei od nowa więc mam parę pytań.
Generalnie assembler 68k znam (przynajmniej sobie zaczynam przypominać), mapę pamięci posiadam z organizacją ekranu się zapoznałem (sic!), muzyka to dla mnie czarna magia była jest i będzię ale od tego są playery.
Na tą chwilę mam scrolla, muze chipową odgrywam do tego jeszcze chciałem jakiś obrazek wstawić poniżej.
Z tego co się zorientowałem to używa się przerwań do przeładowania rejestrów żeby podzielić ekran.
Czy nie ma jakiegoś bardziej "cywilizowanego" sposobu? Rozumiem że nie ma nic na podobieństwo Dlist czy Copperlist?
Oprócz tego czy jest jakiś VCOUNT? Żebym mógł odczytać w jakiej lini się znajduję?
Mam muzę do której skaczę "bsr init" a potem na Vblk$70  "bsr play" ale jak zrobić samemu takie chiptuny z playerką.
Nie mogę znaleźć źródeł do playerek modów tak jak an amidze.
Czy jest wogóle sens pisanie czegokolwiek pod gołe ST czy to olać i trzymać się STE.
Linki z tego forum i wielu innych poprzeglądałem ale DNS.NU nie dział Bus-error zaczął przed chwilą a ogólnie w necie połowa linków z googla nie działa.
Więc za wszelkie linki do toolsów crossowych byłbym bardzo wdzięczny.
Będę pytał na bieżąco... :) uffff

ps. Serio tylko 16kolorów? Zawsze mi się wydawało że jest tego trochę więcej.

Dzielenia ekranu (jesli dobrze rozumiem to co chcesz zrobic) na ST(E) nie zrobisz, bo adres poczatku pamieci ekranu jest pobierany z rejestru raz na ramke na samym poczatku.

Vcounta jako takiego nie ma, ale mozaes go sobie zrobic np. przerwaniem HBL. Z tym ze HBL jest wywolywany 313 razy (w ST-LOW i ST-MID) na ramke, bo jest wywolywany dla wszystkich linii ekranu, a nie tylko 200 z ktorych normalnie mozesz korzystac.

Masz za to co innego niz Vcount. Na ST mozesz sie zsynchronizowac dokladnie z plamka (rejstry sa pod $FF8201 i dalej)

Dhs.nu chwilowo nie dziala (bo im akurat raid padl), powinno dzialac wktrotce. Tam znajdziesz wszystkie playery, toole itp.

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

3

Eagle napisał/a:

[...]Czy jest wogóle sens pisanie czegokolwiek pod gołe ST czy to olać i trzymać się STE.[...]

Z punktu widzenia odbiorcy: sens pisana na gołe ST pewnie jest, na pewno są tacy co (nie licząc emulatora) mają tylko ST(F/FM), ale też wielu chętnie powita produkcje wykorzystujące pełne możliwości STE.
Jakby soft wykrywał na czym go uruchomiono i włączał/wyłączał odpowiednie ficzery byłoby idealnie, ale nie wiem ile z tym roboty.

<-- Kontakt przez "E-mail" gdyż albowiem moja skrzynka "PW" jest pełna i zaprawdę nie mam czego usunąć.

--== Kup Pan/i dyskietkę http://www.atari.org.pl/forum/viewtopic.php?id=18887 ==--

4

Eagle,

skoro używasz VASM to zadanie masz ułatwione b okompiluje on również kod na ST.

Takich paramaetrów używam dla ST/STE:
- vasmm68k_mot.exe -nocase -devpac -m68000 -no-opt -Ftos -o WYNIK.TOS ZRODLO.S

A takich dla TT/Falcon:
- vasmm68k_mot.exe -nocase -devpac -m68030 -m68882 -no-opt -Ftos -o WYNIK.TOS ZRODLO.S


Jeśli chodzi o playery to poczekaj aż wróci DHS.nu, bo są tam źródła i przykłady użycia różnych playerów.
Jakby co to tutaj znajdziesz player MODów - Lance 12.5 / 25 / 50 KHz routine for STE:
http://www.atari-forum.com/viewtopic.ph … mp;t=24718


Tak jak Adam wspomniał ST nie ma licznika VCOUNT, ma za to przerwanie:
- HBL - wywoływane 313 razy na ramkę;
- Timer B (MFP) - które możesz wywołać w dowolnej linii widzialnej (jednej z 200, lub 276 w przypadku overscan);

Tak jak Adam wspomniał w ST nie da się podzielić ekran, za to w STE/TT/Falcon już można przy pomocy rejestrów "Video screen memory position". Podział ekranu na ogół robi się na przerwaniu Timer B.
Poniżej jest fragment mapy pamięci ST dla Video:

-------+-----+-----------------------------------------------------+----------
##############SHIFTER Video Controller                             ###########
-------+-----+-----------------------------------------------------+----------
$FF8201|byte |Video screen memory position (High byte)             |R/W
$FF8203|byte |Video screen memory position (Mid byte)              |R/W
$FF820D|byte |Video screen memory position (Low byte)              |R/W  (STe)
$FF8205|byte |Video address pointer (High byte)                    |R
$FF8207|byte |Video address pointer (Mid byte)                     |R
$FF8209|byte |Video address pointer (Low byte)                     |R
$FF820E|word |Offset to next line                                  |R/W (F030)
$FF820F|byte |Width of a scanline (width in words-1)               |R/W  (STe)
$FF8210|word |Width of a scanline (width in words)                 |R/W (F030)
$FF8265|byte |Horizontal scroll register (0-15)                    |R/W  (STe)
       |     |Note: write address from high toward low byte        |


Co do kolorów, Amiga ma 32 rejestry kolorów, ST 16. Więcej kolorów uzyskuje się tą samą metodą - podmiany zawartości rejestrów kolorów, przy pomocy procesora, Cooper(tylko Amiga) i blitter (tylko Atari).
Na ST jest player filmów w 4096 kolorach: http://forum.8bitchip.info/software-17/ … 5/#msg1171

Warto zapoznać się z Mapą Pamięci:
http://deunstg.free.fr/sct1/hardware.htm

[Programming] --> STE Documentation:
http://atari-ste.anvil-soft.com/html/devdocu1.htm

Atari Wiki
http://www.atari-forum.com/wiki/index.p … and_Falcon




Super źródłem informacji o programowaniu (oprócz oczywiście dhs.nu) jest Atari-Forum, gdzie siedzą naprawdę nieźli koderzy:
http://www.atari-forum.com/viewforum.php?f=68

Oczywiście możesz pytać też tutaj :)

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

5

Dzięki za odpowiedzi.
Vasma właśnie używam w taki sposób jak napisałeś i ładnie mi sie uruchamia potem pod Hatari.
atari-forum już przejrzałem z góry na dół teraz muszę sobie chyba odetchnąć z dwa dni bo za dużo naraz chciałem przyswoić.....
Co do mapy pamięci to mam F30_regs.txt i tam wszystko jest.
Powoli to przyswajam ale opisy rejestrów są bardzo skąpe.
Co do dzielenia ekranu to właśnie spotkałem się z metodą timerB ale nie przepadam za tego typu rozwiązaniami ale cóż.
BTW jest jakiś WSYNC czy coś? Czy muszę się z plamką ścigać? :)

6

ST ma przerwanie VBL pod adresem $70:

$000070|Level 4 Int Autovector (VBL)                                    |SD

Z tym że problem z przerwaniami w 68000 (niezależnie od platformy) jest taki że występuje tzw:
- Jitter - opóźnienie 4-16 cykli - ze względu na charakterystykę zegara E signal;
- Opóźnienie - długie instrukcje mogą opóźnić przerwanie o kilkanaście-kilkaset cykli;

Jeśli więc potrzebujesz dokładnie zsynchronizować procesor z plamką to robi się to poniższym kodem, raz na ramkę:

    lea    $ffff8209.w,a1

sync
    move.b    (a1),d0
    beq.b    sync
    not.b    d0
    lsl.b    d0,d0

swoją drogą to nie ma nic lepszego niż ściganie się z plamką :)

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

Vsync tez sie na przerwaniach robi.

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

8 Ostatnio edytowany przez Cyprian (2013-03-19 15:15:25)

Adam, oczywiście:

Cyprian napisał/a:

ST ma przerwanie VBL pod adresem $70:

$000070|Level 4 Int Autovector (VBL)                                    |SD
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

9

Cyprian napisał/a:

ST ma przerwanie VBL pod adresem $70:

$000070|Level 4 Int Autovector (VBL)                                    |SD

Z tym że problem z przerwaniami w 68000 (niezależnie od platformy) jest taki że występuje tzw:
- Jitter - opóźnienie 4-16 cykli - ze względu na charakterystykę zegara E signal;
- Opóźnienie - długie instrukcje mogą opóźnić przerwanie o kilkanaście-kilkaset cykli;

Jeśli więc potrzebujesz dokładnie zsynchronizować procesor z plamką to robi się to poniższym kodem, raz na ramkę:

    lea    $ffff8209.w,a1

sync
    move.b    (a1),d0
    beq.b    sync
    not.b    d0
    lsl.b    d0,d0

swoją drogą to nie ma nic lepszego niż ściganie się z plamką :)


Skoro to temat co i jak. Mógłby ktoś wyjaśnić ten kawałek kodu ?
Z ST i 68000 nie miałem nigdy nic wspólnego (naprawdę) a z czystej ciekawości chciałbym wiedzieć jak to działa.

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

10

"Na początku do rejestru D0 ładowana jest wartość najmłodszego bajtu adresu ekranu. Bajt ten zawiera dokładnie określoną pozycję promienia elektronów w linii. Program czeka aż rozpocznie się wyświetlanie obrazu. Rejestr D0 jest następnie negowany i wykonuje się rozkaz LSL. Jak wiadomo LSL zajmuje 8+2*n cykli zegarowych procesora, gdzie n jest liczbą zawartą w D0. Oznacza to, że rozkaz ten potrzebuje tym więcej cykli im większa jest wartość rejestru D0. I to jest właśnie to czego na potrzeba ( czyli wszystkie rozkazy następujące po tym kodzie będą wykonywane w tym samym miejscu przerwania )"
Atari Magazyn 1-2 1994 :)

11

Dzięki. W sumie miałem bardzo podobny fragment kodu w swoim programie ale do końca nie kumałem o co w tym chodzi.
Teraz nastała jasność :)
Mam jeszcze pytanko.
Vasm nie toleruje mi takiego zapisu:

lea       $8240.w,a1

Muszę dokładać FFFF. Jeśli chodzi o mój kod to nie mam z tym problemu ale jak próbuję zasemblować jakieś inne źródła to muszę połowe kodu poprawiać.
Da się to jakoś ominąć?

12

Wystarczy, że dodasz FF, zawsze to mniej klikania http://desmond.imageshack.us/Himg35/scaled.php?server=35&amp;filename=22736696.gif&amp;res=landing

13

 error 2033: absolute short address out of range
>                move.w    #$00,$ff8240.w 

Myślisz że nie próbowałem? :D

14

O, to vasm jakiś podły jest :)

15

Dziękuję :)

"tatusiu zobacz, narysowałam tobie takie same coś jak na twojej koszulce" 
https://github.com/willyvmm/mouSTer
jmp $e477

16

jury napisał/a:

O, to vasm jakiś podły jest :)

Nie jest podły tylko poprawny.

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

17

Ręce mi opadają :) ufffff
Ale to chyba tak zawsze musi być na początku, pod górkę.
Jak by się komuś chciało sprawdzić na realu.
Na razie logo mi skacze przy splitowaniu ekranu ale zaczynam chyba chwytać o co chodzi z tym Timerem B ;)
Tylko część kodu będę musiał przerobić.

Post's attachments

eagle.prg 96.43 kb, liczba pobrań: 17 (od 2013-03-20) 

Tylko zalogowani mogą pobierać załączniki.

18

Prawdziwy oldskool. Kto jest autorem treści scrolla ?

STYMulator JIL ST YM2149 mjuz:k @ gnu/linux
SIUP (SIo2Usb2Pc) - SIO2PC USB Edition
PIN ready logo
3M / InD: ... na kasetach były zabezpieczenia w postaci tzw. "mikropierdnięcie" ...

19 Ostatnio edytowany przez Eagle (2013-03-20 20:26:00)

Cyceron?
http://pl.wikipedia.org/wiki/Lorem_ipsum

edit:
Logo moje stare z Amigi ;)
http://hol.abime.net/hol_search.php?&am … eloper=892

20 Ostatnio edytowany przez grzeniu (2013-03-20 20:43:15)

A mjuzik ? Znane lecz nie mogę załapać. Hippel ? Tylko z czego ripnięte ?

Za chwilę odkryjesz wyświetlanie grafiki w lower border, potem zapodasz sync-scroller ... zrobisz stereło na ste no i wystawisz ultra intro na najbliższym party zajmując 1-sze miejsce ;)

STYMulator JIL ST YM2149 mjuz:k @ gnu/linux
SIUP (SIo2Usb2Pc) - SIO2PC USB Edition
PIN ready logo
3M / InD: ... na kasetach były zabezpieczenia w postaci tzw. "mikropierdnięcie" ...

21

To ze źródeł ingrama. Mam muzyczkę z goldrunera ale chodzi jakby 2 razy wolniej.
Moda chciałem odtworzyć ale ten player z atari-forum powoduje że jest to gorszej jakości niż na małym atari.
Pewnie coś źle robię :) Wszystko przyjdzie z czasem.

22

Eagle napisał/a:

Ręce mi opadają :) ufffff
Ale to chyba tak zawsze musi być na początku, pod górkę.
Jak by się komuś chciało sprawdzić na realu.
Na razie logo mi skacze przy splitowaniu ekranu ale zaczynam chyba chwytać o co chodzi z tym Timerem B ;)
Tylko część kodu będę musiał przerobić.

fajnie się to zapowiada, co to będzie?

co do skaczącego logo, z tego co widzę to nie wyłączyłeś przerwania TimerC. System używa tego do obsługi myszy/klawiatury i twardego dysku (TOS >= 2.05). Być może to przerwanie co jakiś czas koliduje z TimerB

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

23

Eagle, tutaj jest bardzo pouczający artek (fullscreen, borders...): http://dss.in.tum.de/files/brandt-resea … screen.txt

STYMulator JIL ST YM2149 mjuz:k @ gnu/linux
SIUP (SIo2Usb2Pc) - SIO2PC USB Edition
PIN ready logo
3M / InD: ... na kasetach były zabezpieczenia w postaci tzw. "mikropierdnięcie" ...

24 Ostatnio edytowany przez jury (2013-03-21 07:56:54)

Ten sam artykuł, tyle, że po polsku, jest właśnie w Atari Magazynie 1-2 z 1994 z którego powyżej jest zacytowany kawałek wyjaśniający działanie "pętli synchronizującej"

25 Ostatnio edytowany przez Eagle (2013-03-22 19:38:53)

Swoje już wiem..... ufffff
Muszę szybko się w debugera uzbroić bo czasami kręciłem się jak g.... w wentylatorze.
Do tego te luki w mojej pamięci co do mnemoników 68k, nie wspominając się ile czasu straciłem z powodu pomieszania byte z word lub long word.
Ale to musi wrócić z czasem, a ile razy pisałem mnemoniki 6502 :D i dziwota że coś nie tak.
Pozdrowienia dla magika od joysticka, 2 godziny z życia wycięte :) przerwań im się cholera zachciało zamiast jakoś po ludzku.
Przeczytałem w mapie pamięci że jest rejestr to go czytam a on nic, jakbym miał flacona to by działało bo to jego rejestr był :D
Nie wiedziałem że rozszerzenie muzyki *.ym jest rozszerzeniem które muszę rozpakowywać winrarem żeby wydobyć z niego już prawidłowy *.ym który mogę już jakoś odtwarzać.
A zresztą nie ma co narzekać na rozgrzewkę skleciłem to na dwa dżoje.
Nie ma score ani żadnych ficzerów bo zaraz jakiś portal by ogłosił że nowa gra na ST.
Ja muszę troszkę odpocząć....

Post's attachments

test.prg 61.1 kb, liczba pobrań: 7 (od 2013-03-22) 

Tylko zalogowani mogą pobierać załączniki.