forum speccy.pl

Komputery z Z80 => SAM COUPE => Wątek zaczęty przez: YERZMYEY/HOOY-PROGRAM w 2012.02.07, 09:46:09

Tytuł: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.07, 09:46:09
Joł.

Więc tak.
Mam już PC program do wrzucania rzeczy na DSK dyskietkę SAMa.
http://www.samcoupe-pro-dos.co.uk/edwin/software/diskmanager/diskmanager.htm
(http://www.samcoupe-pro-dos.co.uk/edwin/software/diskmanager/scrshot.gif)

Miałbym parę pytań.

- po włączeniu, w standardowym trybie, jaką rozdzielczośc ma SAM? Paleta pozostawiona jest oryginalna, jak widzę, ale ciekaw jestem ile tam tkwi pixeli oraz ile kolumn/linii.

- w tym trybie są atrybuty, czy nie ma?

- jest jakiś PC program do przekonwertowania odpowiednio przygotowanego obrazka (z PC na SAMa, żeby potem na obraz dyskietki wrzucić)?

- jaki jest odpowiednik LOAD "nazwa" SCREEN$ ? (Z taśmy to pewnie tak samo ciągnie, ale mam na myśli dyskietkę).

- jaki jest odpowiednik LOAD "nazwa" CODE ? (j.w).

- czy SAM ma na tyle stabilny interpreter BASIC, że byłaby możliwość wpisania paru linii DATA, żeby muzyka leciała stabilnie w przerwaniach (tak, jak to się normalnie robi na Spectrum 48K+AY, a na Atari XL się nie da, bo zwalnia)? Nie twierdzę, że umiałbym coś takiego na SAMa napisać - właściwie to pytanie jest pułapką, bo jeśli się da, to pewnie chciałbym pomęczyć kogoś o taki kawałek kodu, hahaha.

- czy basicowy program na SAMie będzie w ogóle sam startować? A jeśli tak, to jak to czynić?

- jest w ogóle jakaś duża baza pecetowych utilsów dla SAMa (jak to ma miejsce dla Spectrum?).

Na razie więcej mi nic do głowy nie przychodzi, ale pewnie coś później tu dopiszę.

Pozdrrr.
Y
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.07, 10:02:14
Cytuj
Joł.

Więc tak.

Miałbym parę pytań.

- po włączeniu, w standardowym trybie, jaką rozdzielczośc ma SAM? Paleta pozostawiona jest oryginalna, jak widzę, ale ciekaw jestem ile tam tkwi pixeli oraz ile kolumn/linii.

Standardowy ekran Mode 4 to 256x192 piksele, 4 bity na piksel czyli 16 kolorów na piksel z palety 128 kolorów.

Cytuj
- w tym trybie są atrybuty, czy nie ma?

Nie ma. Kolor kodowany jest bezpośrednio na bitmapie (j.w. - 4 bity na piksel) a do tego jest CLUT kodujący paletę.

Cytuj
- jest jakiś PC program do przekonwertowania odpowiednio przygotowanego obrazka (z PC na SAMa, żeby potem na obraz dyskietki wrzucić)?

Pewnie jest. Ja nie używam Windowsa (bo znowu jak rozumiem robisz uproszczenie PC=Windows ;)) więc napisałem sobie własny skrypt konwertujący grafikę do formatu Sama.

Cytuj
- jaki jest odpowiednik LOAD "nazwa" SCREEN$ ? (Z taśmy to pewnie tak samo ciągnie, ale mam na myśli dyskietkę).

A jaki ma być? ;) Po załadowaniu DOSa wszystkie standardowe polecenia zaczynają odwoływać się do pierwszej stacji dyskietek. Jeśli chcesz załądować z drugiej do dajesz LOAD "D2:nazwa" SCREEN$. O ile pamiętam przekierowanie na taśmę to "T:nazwa"

Cytuj
- jaki jest odpowiednik LOAD "nazwa" CODE ? (j.w).

j.w. ;)

Cytuj
- czy SAM ma na tyle stabilny interpreter BASIC, że byłaby możliwość wpisania paru linii DATA, żeby muzyka leciała stabilnie w przerwaniach (tak, jak to się normalnie robi na Spectrum 48K+AY, a na Atari XL się nie da, bo zwalnia)? Nie twierdzę, że umiałbym coś takiego na SAMa napisać - właściwie to pytanie jest pułapką, bo jeśli się da, to pewnie chciałbym pomęczyć kogoś o taki kawałek kodu, hahaha.

A po co kombinować? Z ETrackerem w komplecie był player (a właściwie kawałek kodu podpinający się do właściwego playera) ładowany w heap (gdzieś chyba od 16384) podpinający się pod przerwania i grający muzyczkę w tle.

edit : Jak się okazuje był chyba na oryginalnej drugiej dyskietce ETrackera... Nazywał się INT-PLAY... Jak znajdę to dam namiar ;)

Cytuj
- czy basicowy program na SAMie będzie w ogóle sam startować? A jeśli tak, to jak to czynić?

Dokładnie tak samo jak na Spectrumie - SAVE "nazwa" LINE 10. A jak chcesz mieć taki, który się odpali bo BOOT, to SAVE "auto" LINE 10.

Cytuj
- jest w ogóle jakaś duża baza pecetowych utilsów dla SAMa (jak to ma miejsce dla Spectrum?).

A tu ci nie odpowiem - nie mam, nie potrzebowałem ;) Ale jak przeglądałem ostatnio sieć to jakieś drobiazgi się da wydłubać. Choć w czasach jak ja pisałem na Samie to raczej wszystko robiło się na fizycznej maszynie i toolsy działały/były pisane właśnie tam.

m.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.07, 10:29:06
Nie znalazłem dokładnie tego, co pisałem, ale mam funkcjonalny odpowiednik ;)

http://sam.speccy.cz/coding/et_player_with_mdriver.txt

To jest tekst na temat tego, że player na przerwaniach do odpalania pod BASICem był zwalony bo nie sprawdzał, czy coś wcześniej nie było zawieszone na przerwaniach tylko sam się podpinał co powodowało, że wyłączał sterownik do myszy działający na tym samym mechanizmie. W tekście jest też zmodyfikowany kod playera przerwaniowego, który nie ma tego problemu. Kod wydaje się być prosty i nie powinieneś mieć problemu z jego użyciem - jedyna kwestia jest taka, że musisz kompilując muzyczkę a potem merge'ując player podać - o ile pamiętam - jako adres 16384 (edit: źle pamiętałem - poprawny adres to 32768 ;)) - player ładuje potem kod gdzieś dalej a sama muzyka jest odpalana po przełączeniu strony pamięci.

Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.07, 10:51:41
A dla ułatwienia zrobiłem takie coś jak w załączniku - po zabootowaniu "wkładasz" do napędu dyskietkę z załącznika (F1), dajesz LOAD 1 a potem RUN - programik pakuje kod do pamięci, ładuje moduł na zadaną stronę pamięci (tutaj - 10) i odpala procedurę grającą na przerwaniach i robi STOP. Muzyczka gra a ty możesz sobie robić inne rzeczy w BASICu. CONTINUE odpala kolejnego CALLa i wyłącza muzyczkę. Do własnego użytku podmieniasz plik z muzyką i playerem (MERGE'owanym od adresu 32768 a nie jak wcześniej pisałem 16384), ustawiasz stronę i odpalasz :)

No i oczywiście ten programik ignoruje fakt istnienia sterownika myszy ;)

Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: Sir David w 2012.02.07, 10:55:57
To ja jeszcze uzupełnię odpowiedzi Mata i dodam coś od siebie:

- po włączeniu, w standardowym trybie, jaką rozdzielczośc ma SAM? Paleta pozostawiona jest oryginalna, jak widzę, ale ciekaw jestem ile tam tkwi pixeli oraz ile kolumn/linii.

Dodam, że Sam ma 4 tryby graficzne, zmieniane z Basica poleceniem MODE. Po włączeniu jesteśmy w MODE 4, tryb zgodny z ZX Spectrum to MODE 1.

Cytuj
- jest jakiś PC program do przekonwertowania odpowiednio przygotowanego obrazka (z PC na SAMa, żeby potem na obraz dyskietki wrzucić)?

Tego nie wiem. Ja zapisywałem sobie obrazek na PC jako nieskompresowany .bmp, wrzucałem go na dyskietkę Sama i tam pisałem prosty programik w Basicu, który przerzucał go na ekran. Przy normalnej prędkości Sama działało to bardzo powoli, ale pod SimCoupe, po naciśnięciu F7 (czyli full speed), szło już całkiem szybko.

Cytuj
- jaki jest odpowiednik LOAD "nazwa" SCREEN$ ? (Z taśmy to pewnie tak samo ciągnie, ale mam na myśli dyskietkę).
- jaki jest odpowiednik LOAD "nazwa" CODE ? (j.w).

Oprócz tego, co powiedział Mat (czyli identycznie jak na Spectrum), można ładować pliki przez LOAD nr, gdzie nr jest pozycją pliku w katalogu i można ją zobaczyć przez DIR1 (1 dla pierwszej stacji). Oczywiście nie nadaje się to do umieszczenia w loaderze, ale do szybkiego ręcznego załadowania pliku do pamięci jest wygodniejsze niż wpisywanie nazwy. Np. jak chcesz przejrzeć obrazki na dysku, to piszesz DIR1, a potem np. LOAD6 itd. Jest o wiele szybciej.

Cytuj
- czy basicowy program na SAMie będzie w ogóle sam startować? A jeśli tak, to jak to czynić?

Dodam, że po BOOT ładowany jest pierwszy plik, którego nazwa zaczyna się na "auto". A jeżeli nie chciałbyś, żeby ten plik się automatycznie załadował, to wpisz BOOT1.

Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.07, 13:45:16
MAT:

> Standardowy ekran Mode 4 to 256x192 piksele, 4 bity na piksel czyli 16 kolorów na piksel z palety 128 kolorów.
Kolor kodowany jest bezpośrednio na bitmapie (j.w. - 4 bity na piksel) a do tego jest CLUT kodujący paletę.
-----------------------------
Ło jasny gwint. Właśnie sprawdziłem.
W rzeczy samej są to zwykłe 16-kolorowe pliki BMP. W dodatku "konwertujesz" je do DSK procedurą dla głupków takich, jak ja - czyli "drag & drop" pecetowym programem http://www.samcoupe-pro-dos.co.uk/edwin/software/scrviewer/scrviewer127.zip
Jaja jak balony.


> znowu jak rozumiem robisz uproszczenie PC=Windows ;)
-------------------
Oczywiście. :) :) :) :) :)



> Dokładnie tak samo jak na Spectrumie - SAVE "nazwa" LINE 10. A jak chcesz mieć taki, który się odpali bo BOOT, to SAVE "auto" LINE 10.
----------------
Ooo, fękju elot.



> A dla ułatwienia zrobiłem takie coś jak w załączniku - po zabootowaniu "wkładasz" do napędu dyskietkę z załącznika (F1), dajesz LOAD 1 a potem RUN - programik pakuje kod do pamięci, ładuje moduł na zadaną stronę pamięci (tutaj - 10) i odpala procedurę grającą na przerwaniach i robi STOP. Muzyczka gra a ty możesz sobie robić inne rzeczy w BASICu. CONTINUE odpala kolejnego CALLa i wyłącza muzyczkę. Do własnego użytku podmieniasz plik z muzyką i playerem (MERGE'owanym od adresu 32768 a nie jak wcześniej pisałem 16384), ustawiasz stronę i odpalasz ;)
No i oczywiście ten programik ignoruje fakt istnienia sterownika myszy ;)
------------------------
Pradopodobnie byłoby to właśnie to, o co mi chodziło.
Wieeeeeeelkie dzięki. Będę się temu przyglądać!




SirDavid:

> Dodam, że Sam ma 4 tryby graficzne, zmieniane z Basica poleceniem MODE. Po włączeniu jesteśmy w MODE 4, tryb zgodny z ZX Spectrum to MODE 1.
---------------
Ooo, to teżistotna informacja. Dzięki!



> Dodam, że po BOOT ładowany jest pierwszy plik, którego nazwa zaczyna się na "auto". A jeżeli nie chciałbyś, żeby ten plik się automatycznie załadował, to wpisz BOOT1.
---------------
Aaa. Właśnie się nad tym zastanawiałem, jak wprowadzić system bez odpalania pliku startowego. :)





Dzięki jeszcze raz - będę kombinować i pewnie też pisać, gdy wystąpią trudności (chociaż głównie to pewnie dopiero jak skończymy robić gumiaczane demo na Forever).
Pozdrrrrrrrrr.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.07, 15:28:14
Ooo, no to SAM może bez mrugania wyświetlić spectrumowy tryb RGB (8-color).
(http://yerzmyey.republika.pl/gory.bmp)
Nice. ;)
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.09, 15:41:25
A dla ułatwienia zrobiłem takie coś jak w załączniku - po zabootowaniu "wkładasz" do napędu dyskietkę z załącznika (F1), dajesz LOAD 1 a potem RUN - programik pakuje kod do pamięci, ładuje moduł na zadaną stronę pamięci (tutaj - 10) i odpala procedurę grającą na przerwaniach i robi STOP. Muzyczka gra a ty możesz sobie robić inne rzeczy w BASICu. CONTINUE odpala kolejnego CALLa i wyłącza muzyczkę. Do własnego użytku podmieniasz plik z muzyką i playerem (MERGE'owanym od adresu 32768 a nie jak wcześniej pisałem 16384), ustawiasz stronę i odpalasz :)


Aaa, jeszcze jedno. Czy na początek trzeba dać GOTO 200, żeby sobie DATA'y poczytał?? (Tak mam na gumioku).
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.09, 15:47:03
Nie. Od linii 20 do 50 jest pętla ładująca do pamięci to, co siedzi w DATAch. Po zwykłym RUN kod jest pakowany w bezpieczne miejsce, ładowana jest muzyczka i uruchamiany player (CALL 16384). Kolejny CALL (16387) służy do wyłączania playera.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.13, 09:33:01
Aaa, no widzisz. :)
Wiele jeszcze nie wiem o tym, jak widzę. ;)
Napisanie czegokolwiek może okazać się trudniejsze, niż myślałem. ;) Ale spróbuję i tak. Po Forever.


PS: Spróbuję wpisać jakiś kod z 'małego gumioka' i sprawdzę, czy zadziała. Hehehe.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.13, 10:14:08
Ale kod w czym? W BASICu? Powinien mniej więcej działać ;) Na działanie Asma tak wprost raczej nie licz ;)
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.13, 10:27:49
Tak tak, basicowy. Mam jakieś scrolle itp, jeszcze z początku lat 90s, kiedy Mr Hangman robił dla nas "na zapas", żebyśmy potem używali.
Mam taki duży, "lampkowy", ale ten pewnie nie pójdzie, za to jest jakiś inny, standardowy 8*8 i zakładam, że ten może pójdzie.
No nic, będę się bawić. :) Tylko musimy skończyć demo "grupowe" (jak sex ;) ) na Forever. Na Gumioka.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.13, 10:33:53
Jeśli jedzie używając POKE po atrybutach to możesz zapomnieć - trzeba by przełączyć ekran w MODE 1 i zmodyfikować adres początku pamięci atrybutów. Jeśli robi jakieś PRINTy itp. to wtedy powinien pójść. Tylko jakoś sobie nie wyobrażam kodu w czystym BASICu, który miałby robić scrolla (nawet na atrybutach) chodzącego z sensowną prędkością ;)
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.13, 10:37:18
Trudno mi osądzić.
Mam na myśli ten:
(http://hooyprogram.republika.pl/98demo2.gif)
http://republika.pl/hooyprogram/98demo2.zip
Chciałem go wydziubać.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.13, 10:48:47
Eeee... kod w REMie, jakieś bloki kodu i RANDOMIZE USR - to może wyglądać na BASIC, ale jest wspomagane asmem.
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.13, 11:29:18
W czystym basicu nie da się zrobić płynnego scrolla?
No to kiszka modliszka.
Pewnie na SAMie się da, ale tu znowuż ja nie wiem jak. :)

Są jakieś książki (PDF itp) o BASIC-u na SAMa?
Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: matofesi w 2012.02.13, 11:46:17
Żeby zrobić scrolla na atrybutach musisz w każdej klatce przewalić 248 bajtów i dorzucić 8 następnych i do tego wykonać samą logikę scrolla wliczając rozbijanie na bity znaków. Chyba, że przygotujesz sobie wcześniej odpowiednie tablice, ale wtedy nadal masz do przewalenia 256 bajtów co klatkę. Ze sprytnymi tablicami mogłoby być mniej, ale logika tej "sprytności" i tak zje ci zysk.

Scroll na bitmapie na 8 pikseli to dokładnie tyle samo roboty.

Czy da się to zrobić na Samie? Prawdopodobnie tak - zależnie od tego jak zdefiniujesz "płynny" ;)

BASIC Sama ma funkcje pozwalające definiować sprite'y i potem wyrzucać je w ekran jednym pstryknięciem - tą metodą prawdopodobnie dałoby się zrobić jakieś niezbyt skomplikowane animacje. Można też przygotować sobie potrzebne dane i pakować je do pamięci przez POKE - w wersji SAMowej przyjmuje nie tylko jeden bajt, ale listę bajtów a nawet stringa jako drugi parametr.

Są też funkcje pozwalające scrollować jednym poleceniem fragmen ekranu - pozostaje wtedy tylko dokładanie nowych kawałków na ekran.

Ale to wszystko są kombinacje, które w dają taki sobie efekt całkiem sporym nakładem pracy - to już chyba lepiej nauczyć się jak się to robi w asmie - proste rzeczy daje się zrobić stosunkowo łatwo.

Co do książek - ftp://ftp.nvg.unit.no/pub/sam-coupe/docs/manuals/software/SAM%20Coupe%20Users%20Manual%20V1.pdf - oryginalny manual od Sama z opisem BASICa (nie da się go tu załączyć, bo ma 11 mega a forum pozwala do 2 mega).

Tytuł: Odp: SAM i BASIC - kodowanie prostackich dem
Wiadomość wysłana przez: YERZMYEY/HOOY-PROGRAM w 2012.02.13, 12:39:12
W asseblerze siedzi diabeł. :)

Najwyżej mógłbym ukraść od kogoś prockę asm do scrolla, jeśli ktoś tu ma na zbyciu, która ładowałaby się gdzieś do RAMu, a sam tekst scrolla wpisywałoby sie do linii basicowych (niektóre dema mamy tak zrobione, bo nam Hangman chciał robote ułatwiać).