OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 19.03.2024, 08:19

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 43 ]  Přejít na stránku Předchozí  1, 2, 3  Další
Autor Zpráva
PříspěvekNapsal: 10.11.2013, 20:08 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3636
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
A pokial potrebujes otestovat typ ZX Spektra aby si vedel vybrat ten spravne nacasovany multicolor, vhodne je otestovat frekvenciu hodin a spomalenie videoramky - pretoze to su prave hodnoty, na ktorych zavisi casovanie multicoloru. Dobre riesenie je vyuzit na to prerusenie - ked po halte spustis kratucku slucka typu loop: inc bc ; jr loop a nasledujucim prerusenim (im2) zistis aka hodnota sa napocitala do BC. Pokial tuto slucku spustis v rychlej pameti, odlisis od seba ZX 48k a vsetky 128. Pokial ale tuto slucku spustis v spomalenej videoramke, odlisis od seba nielen 48k, ale aj 128/+2 voci +2A/+3.


Nahoru
 Profil  
 
PříspěvekNapsal: 10.11.2013, 21:36 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1504
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Program pro testování rychlosti konkrétního modelu Spectra byl zveřejněn v ZX Magazínu ještě za dob Proximy.

Stránkování ZX 128 bylo zase celkem dobře (i s obrázkem) popsáno ve Fifu.

Test přítomnosti rozšířené paměti ZX 128 by ale mohl v ZX Magazínu taky být.


Nahoru
 Profil  
 
PříspěvekNapsal: 10.11.2013, 22:08 
Offline
Kecálek
Uživatelský avatar

Registrován: 18.05.2013, 11:46
Příspěvky: 180
Bydliště: Ústí nad Orlicí
Has thanked: 10 times
Been thanked: 62 times
Zatím mám pouze takové ambice, abych vytvořil loader, který na Spectru 48 K vypíše hlášku This game is 128K only a nebude pokračovat v nahrávání. Na to ten zápis dvou bajtů pokaždé do jiné stránky bude stačit.

ZX magazíny jsem procházel, o stránkování jsem pár článků našel, ale pak jsem se stejně na pár věcí musel zeptat tady, protože ty informace nebyly zrovna vyčerpávající. Ještě projdu ta FIFA, třeba objevím něco zajímavého.

_________________
https://zx-spectrum.cz
https://maps.speccy.cz
https://www.zx-spectrum.cz/collection/
https://cs.speccy.cz
https://spectrumcomputing.co.uk/


Nahoru
 Profil  
 
PříspěvekNapsal: 25.11.2013, 22:15 
Offline
Kecálek
Uživatelský avatar

Registrován: 18.05.2013, 11:46
Příspěvky: 180
Bydliště: Ústí nad Orlicí
Has thanked: 10 times
Been thanked: 62 times
Nyní se peru s AY hudbou, respektive rutinou na její obsluhu. Chápu to dobře, že AY data nejsou nic jiného než jednoduchá posloupnost, kde se neustále opakuje hodnota portu $fffd s hodnotou portu $bffd, takže mi stačí smyčka, kde budu neustále zapisovat hodnoty na tyto dva porty (třeba jako něco níže uvedeného)? A nebo je to všechno krapet složitější, pokud chci z AY čipu vyloudit něco "poslouchatelného a na úrovni"?

Kód:
play      ld hl,(play_byte)
      ld a,(hl)

      cp 18
      jr nz,play2
      ld hl,(play_start)
      ld (play_byte),hl      
      jr play

play2    ld bc,$fffd
      out (c),a
      inc hl
      ld a,(hl)
      ld bc,$bffd
      out (c),a
      inc hl
      ld (play_byte),hl
      jr play


play_start   defw $8d00
play_byte    defw $8d00
   
org $8D00
defb 06,00,07,07,08,16,09,16,10,16,12,50,13,01,18


_________________
https://zx-spectrum.cz
https://maps.speccy.cz
https://www.zx-spectrum.cz/collection/
https://cs.speccy.cz
https://spectrumcomputing.co.uk/


Nahoru
 Profil  
 
PříspěvekNapsal: 25.11.2013, 23:21 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3636
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
pavero píše:
Nyní se peru s AY hudbou, respektive rutinou na její obsluhu. Chápu to dobře, že AY data nejsou nic jiného než jednoduchá posloupnost, kde se neustále opakuje hodnota portu $fffd s hodnotou portu $bffd, takže mi stačí smyčka, kde budu neustále zapisovat hodnoty na tyto dva porty (třeba jako něco níže uvedeného)? A nebo je to všechno krapet složitější, pokud chci z AY čipu vyloudit něco "poslouchatelného a na úrovni"?
Uf, no, pisat hudbu priamo v datach posielanych na tie dva porty, to by som prirovnal k snahe napisat nejaky rozsiahlejsi program v strojaku tym ze budem jednotlive bity v pameti nastavovat na jednicky a nuly :shrug:

Pokial chces napisat nejaku hudbu pre AY, mas niekolko moznosti:

A) pouzit nejaky hudobny editor pre pisanie hudieb. V takom editore sa da pisat hudba velmi komfortne, mozes si "za behu" vypocut co si prave napisal, a ked je vsetko hotove, editor ti priamo skompiluje hudobnu rutinku s datami, ktoru len staci nahrat do pameti a volat pod prerusenim. Za velmi dobry hudobny editor (a asi aj najlepsi pre hudbu z prerusenia) povazujem SQ-Tracker s mborik-ovou upravou: http://blog.borik.net/2011/06/sq-tracker-editor-v111.html

B) pouzit niektore s mnohych hradiel (Fukove, Norove, moje...) a dopisat k nemu priamo hudbu v asembleri. Nie je to take pohodlne ako (A) a data, ktore pises, maju sice uz filozofiu programovacieho jazyka, ale stale su blizke rozmyslaniu hudobnika (noty, efekty...). Tato moznost vyzaduje znalost formatu dat pre dane hudobne hradlo.

C) napisat si nejake uplne vlastne hradlo od piky. Tato moznost je zdanlivo najtazsia, pretoze musis vediet ako sa AY programuje (vid nizsie).

D) napisat si hudbu v 128 basicovom prikaze PLAY a pouzit moj konvertor PLAYto50Hz ktory ti takto napisanu hudbu prevedie do podoby ktoru mozes prilinkovat do svojho programu a prehravat ju "na pozadi" (z prerusenia).

E) dohodnut sa s niektorym z miestnych hudobnikov, ze ti hudbu napisu oni (a tym padom budu spoluautormi tvojho programu) :)

Ale aby som odpovedal na tvoju otazku: Mas pravdu, AY sa ovlada pomocou dvoch portov - #FFFD a #BFFD. AY si mozes predstavit ako sadu 16-tich osembitovych registrov. Na port #FFFD najprv musis poslat cislo 0-15 s ktorym registrom chces pracovat, a nasledne na port #BFFD posles bajt ktory sa do takto vybrateho registra zapise. Takze typicka rutinka, hrajuca nejaku hudbu z prerusenia, vyzera tak, ze pri kazdom zavolani (z prerusenia) nastavi registre AY na pozadovane hodnoty, t.j. v slucke najprv na #FFFD posle cislo registra, nasledne na to na #BFFD posle data pre tento register, a toto zopakuje pre vsetky nastavovane registre. Pokial to takto chces robit nejakou vlastnou rutinkou - vid bod (C) - potrebujes vediet programatorsky model AY, ktory najdes napr. tu: http://cs.wikipedia.org/wiki/AY-3-8912.


Nahoru
 Profil  
 
PříspěvekNapsal: 25.11.2013, 23:22 
Offline
Pan Štábní

Registrován: 12.05.2013, 22:24
Příspěvky: 1504
Bydliště: u Prahy
Has thanked: 44 times
Been thanked: 380 times
Teoreticky tak nějak - zapíše se registr a pak jeho hodnota.
V praxi -
1) AY zní "furt", pokud mix (registr 7) nebo obálka zvuk nevypnou. Proto se do ní nezapisuje furtum furt, ale
2) pod přerušením (jednou za padesátinu) se zapíšou změny tónů.
3) Inicializace, aby byly známy hodnoty registrů (nulování), se provede na začátku.

Doporučuju prohlédnout si disassembling Fukova Amadea
http://bulba.untergrund.net/FXMPlayer.7z
nebo playeru ze SQ-Trackeru
http://bulba.untergrund.net/SQTPlayer.rar
(Zdroják Busyho inter s Norovou hudbou jsem nahonem nenašel.)


Nahoru
 Profil  
 
PříspěvekNapsal: 26.11.2013, 10:27 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.06.2013, 20:26
Příspěvky: 2487
Has thanked: 115 times
Been thanked: 424 times
Busy píše:
AY sa ovlada pomocou dvoch portov - #FFFD a #BFFD. AY si mozes predstavit ako sadu 16-tich osembitovych registrov. Na port #FFFD najprv musis poslat cislo 0-15 s ktorym registrom chces pracovat, a nasledne na port #BFFD posles bajt ktory sa do takto vybrateho registra zapise. Takze typicka rutinka, hrajuca nejaku hudbu z prerusenia, vyzera tak, ze pri kazdom zavolani (z prerusenia) nastavi registre AY na pozadovane hodnoty, t.j. v slucke najprv na #FFFD posle cislo registra, nasledne na to na #BFFD posle data pre tento register, a toto zopakuje pre vsetky nastavovane registre.

Předpokládám, že "všetky nastavované registre" znamená "pouze ty, jejichž nastavení je rozdílné od předchozího" - tedy pouze ty, jejichž nastavení se mění, je to tak?

Busy píše:
D) napisat si hudbu v 128 basicovom prikaze PLAY a pouzit moj konvertor PLAYto50Hz ktory ti takto napisanu hudbu prevedie do podoby ktoru mozes prilinkovat do svojho programu a prehravat ju "na pozadi" (z prerusenia).

Výstup z toho konvertoru je tenhle typ dat? Tedy změny po 1/50 sec. ?

_________________
"Je lepší rozsvítit byť jen malou svíčku, než jen proklínat temnotu." (Konfucius)

www.zxsparrow.com


Nahoru
 Profil  
 
PříspěvekNapsal: 26.11.2013, 11:21 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3636
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Jiiira píše:
Busy píše:
AY sa ovlada pomocou dvoch portov - #FFFD a #BFFD. AY si mozes predstavit ako sadu 16-tich osembitovych registrov. Na port #FFFD najprv musis poslat cislo 0-15 s ktorym registrom chces pracovat, a nasledne na port #BFFD posles bajt ktory sa do takto vybrateho registra zapise. Takze typicka rutinka, hrajuca nejaku hudbu z prerusenia, vyzera tak, ze pri kazdom zavolani (z prerusenia) nastavi registre AY na pozadovane hodnoty, t.j. v slucke najprv na #FFFD posle cislo registra, nasledne na to na #BFFD posle data pre tento register, a toto zopakuje pre vsetky nastavovane registre.
Předpokládám, že "všetky nastavované registre" znamená "pouze ty, jejichž nastavení je rozdílné od předchozího" - tedy pouze ty, jejichž nastavení se mění, je to tak?
Neznamena :) Vecsina hudobnych rutiniek ma v sebe slucku, ktora proste defaultne nastavi vsetky registre (alebo aspon prvych 13) - nejake pole v pameti vzdy cele skopiruje do AY - je to jednoduchsie na implementaciu. Ale inak mas pravdu, vo vseobecnosti staci nastavit len tie registre, ktore treba zmenit, pretoze AY si hodnotu raz zapisanu do registra pameta.

Pre ilustraciu, takto nejak vyzera rutinka, posielajuca data do AY v mojom intre x3d1k:
Kód:
0648   831D 21 3F 83    senday  ld      hl,obal+1    ;; Odoslanie udajov do AY-3-8912
0649   8320 1E 0E               ld      e,#0E
0650   8322 1D          snd11   dec     e
0651   8323 2B                  dec     hl
0652   8324 01 FD FF            ld      bc,#fffd
0653   8327 ED 59               out     (c),e
0654   8329 06 BF               ld      b,#bf
0655   832B 7E                  ld      a,(hl)
0656   832C ED 79               out     (c),a
0657   832E 20 F2               jr      nz,snd11
0658   8330 C9                  ret
0659   8331             
0660   8331             ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0661   8331             
0662   8331 00 00       freka   dw      0       ;; 0 Delicka pre kanal A   >> Buffer pre AY-3-8912 <<
0663   8333 00 00       frekb   dw      0       ;; 2 Delicka pre kanal B
0664   8335 00 00       frekc   dw      0       ;; 4 Delicka pre kanal C
0665   8337 00          sumx    db      0       ;; 6 Delicka pre sum
0666   8338 00          mixx    db      0       ;; 7 Mix register
0667   8339 10          vola    db      #10     ;; 8 Hlasitost kanalu A
0668   833A 10          volb    db      #10     ;; 9 Hlasitost kanalu B
0669   833B 10          volc    db      #10     ;; A Hlasitost kanalu C
0670   833C 00 00       freko   dw      0       ;; B Delicka pre obalku
0671   833E 08          obal    db      #08     ;; D Obalka: 0\__ ;; 8\\\ ;; A\/\/ ;; C/// ;; E/\/\
0672   833F
Funguje to tak, ze hudobne hradlo pocas svojej cinnosti zapisuje iba do pameti - buffera pre AY, a na zaver, ked su vsetky data pripravene, sa zavola rutinka senday ktora vsetko naraz odosle do AY.

Jiiira píše:
Busy píše:
D) napisat si hudbu v 128 basicovom prikaze PLAY a pouzit moj konvertor PLAYto50Hz ktory ti takto napisanu hudbu prevedie do podoby ktoru mozes prilinkovat do svojho programu a prehravat ju "na pozadi" (z prerusenia).
Výstup z toho konvertoru je tenhle typ dat? Tedy změny po 1/50 sec. ?
Ano, presne takto sa to da predstavit.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 29.11.2020, 19:41 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3636
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
themrkocour píše:
Rád bych začal něco dělat na ZXku. Koukal jsem na pár věcí ale nevím kde pořádně začít, ale teď nedávno mě napadl něco co bych rád v ASM udělal, tedy něco pěkně "craknul" :D Zajímá mě, jak například přidat AY hudbu do programu. Nevím jestli to však není na začátek moc těžké. Co jíneho případně tedy v ASM zkoušet? Rád bych taky pracoval s Prometem a sestavou D80/AY/48k
Zabudni na Prometea a realne ZX. Pokial nepotrebujes realne pracovat s nejakymi specialnymi periferiami, ovela pohodlnejsi a flexibilnejsi je cross-development, t.j. pisat programy na nejakom mnohobite (PeCedle) a vyuzivat jedno z mnohych pohodlnych vyvojovych prostredi pre Z80 asemblerove programy, ktore dokaze poskytnut ovela lepsi komfort pri pisani programov. Navyse, zabudovane debuggery v emulatoroch su z hladiska debugovaneho softu transparetne, cize nezavadzaju v pameti, netreba sa o nich bat ked program zlbne (zamrzne). A hlavne nehrozi, ze by nejakou nestastnou chybou v pisanom programe clovek prisiel o rozpracovany zdrojak :)

Velmi dobre je napriklad VS-Code a k nemu rozsirenie od mborika ktore robi programovanie Z80 asembleri skutocnym potesenim :) Ako kompiler doporucujem SjASMPlus ktory vie skompilovat temer vsetko na co si spomenies a ma vela Speccy-like featur. Ale jeho hlavnou vyhodou je ze pracujeme na jeho vyvoji, takze doplnit pripadne nove napady alebo rozsirenia, ci oprava chyb nie je problem.

Pokial s asemblerom a vrtanim sa v programoch nemas moc skusenosti, pridavat hudbu pre AY do programu by som asi hned zo zaciatku moc nedoporucoval. Pokial ale mas prestudovane tabulky instrukcii a (aspon teoreticky) su ti vsetky instrukcie jasne, idealne je pokracovat skumanim nejakych jednoduchych okomentovanych rutiniek, kde ziskas urcitu predstavu, ako z tych instrukcii vyskladat funkcny program.

Kedysi som pisal do casopisov taky serial nazvany Strojovy kod pre pokrocilych kde sa prave niecim takym zaoberam - rozoberam niektore jednoduche elementarne programatorske problemy a pisem pre ne rutinky. Mozno ze by aj toto mohlo byt pre teba uzitocne :)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 30.11.2020, 10:01 
Offline
Radil
Uživatelský avatar

Registrován: 19.07.2013, 14:21
Příspěvky: 258
Bydliště: Košice
Has thanked: 142 times
Been thanked: 380 times
Ja osobne som sa assembler v 12-13 rokoch naucil z dvojdielnej knihy Assembler a ZX Spectrum Tomasa Vilima (a.k.a Universum), ktoreho Prometheus spominas.
Ako pise Busy, osobne by som dnes uz na zivom ZX v Prometheovi neprogramoval, ked su na Mac/PC tak pohodlne sposoby. Hlavne si pamatam seba ako zaciatocnika, aky som mal zo zaciatku problem sa orientovat v pamati (kde je Prometheus? / kde je moj kod? / preco sa adresa kompilatu stale posuva? / atd...), ale zas ta to vela nauci, lebo nic ti neda viac, ako chyby, ktore cestou urobis. ;)

http://softhouse.speccy.cz/documents/do ... SMaZX1.pdf
http://softhouse.speccy.cz/documents/do ... SMaZX2.pdf


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 30.11.2020, 10:04 
Offline
Kecka

Registrován: 17.02.2014, 14:46
Příspěvky: 58
Bydliště: Brno
Has thanked: 10 times
Been thanked: 7 times
Bity do bytu od Ladislava Zajíčka - to byla pro mě klíčová literatura v pochopení "vo co go". Tedy pokud jsi fakt úplný začátečník.

_________________
Klony, hybridy, kopie a jiná udělátka v duchu PMI-80, SAPI-1, ZX Sparrow, SAVIA-84 a pokusy o vlastní konstrukce úplně nových historických počítačů


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 01.12.2020, 07:12 
Offline
Radil
Uživatelský avatar

Registrován: 05.12.2013, 09:01
Příspěvky: 289
Bydliště: Praha
Has thanked: 1148 times
Been thanked: 83 times
https://mts.speccy.cz/doc/bity_do_bytu.pdf

_________________
//// eLeMeNt_v1; ZX Nucleon512_v2A; ZX Spectrum; ZX Spectrum+; ZX Spectrum 128k; ZX Spectrum 2B; SDI-1; Sparrow 48K; Didaktik D80; D80min; Didaktik Melodik; Betadisk; Divide; Aritma 517; ZX Diskface Plus B; BDI; NewBetaDisk-css; DigitalTapeRecorder_v2; ZX-VGA-JOY; ///A500mini;


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 04.12.2020, 14:32 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3022
Has thanked: 2185 times
Been thanked: 892 times
Busy píše:
Velmi dobre je napriklad VS-Code a k nemu rozsirenie od mborika ktore robi programovanie Z80 asembleri skutocnym potesenim :) Ako kompiler doporucujem

Jestli vy borci nejdete na zacatecnika s kanonem, aby si nastudoval a konfiguroval dalsi prostredi...

Spouste lidi postaci integrovane prostredi s assemblerem a debuggerem v emulatoru.
Existuje jedno v cestine, se srozumitelnym navodem, pro narodni modely specter a spoustou vymozenosti (napr. pro mne je cenne #IfUsed).
Je to pohodlne pro zacatecnika ale pouzitelne pro znalce, resp. toho, kdo se bude ucit vice (direktivy, makra,...),
aby to, co si napise a prelozi, mohl hned spustit a overit, ulozit, trasovat... v jednom prostredi.

Doporucuju LnxSpectrum
https://wiki.ilnx.cz/doku.php/lnxspectrum:assembler
https://www.ilnx.cz/downl/
https://wiki.ilnx.cz/doku.php/lnxspectrum:asm_direktivy

_________________
// na co myslím, když sedím u oldkompů: dysfunctional foreign policy


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 04.12.2020, 14:41 
Offline
Pan Generální
Uživatelský avatar

Registrován: 18.05.2013, 14:56
Příspěvky: 2326
Has thanked: 302 times
Been thanked: 636 times
Prometheus je super na zkoušení malých věcí. Pro první programy do řádově stovek řádků bych se nebál ho doporučit.

Assembler a ZX Spectrum I a II jsou taky dobré knihy pro začátek. Narozdíl od mnoha jiných učebnic v nich jsou velmi praktické příklady snadno použitelné jinde.

Větší věci je samozřejmě lepší dělat na PC přinejmenším kvůli tomu, že se dají lépe a obsáhleji komentovat a že se dá zobrazit větší kus kódu, protože větší rozlišení obrazovky a že zdroják nesdílí malou paměť ZX Spectra s kompilerem i výsledným programem. Ale to je na jinou diskuzi - počínaje tím, na jakém OS budeš programovat?

_________________
https://cygnus.speccy.cz ZX Spectrum 128k, Betadisk, DivIDE, ESXDOS


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler a úplný začátečník
PříspěvekNapsal: 04.12.2020, 16:31 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3022
Has thanked: 2185 times
Been thanked: 892 times
themrkocour píše:
Zajímá mě, jak například přidat AY hudbu do programu.

https://wiki.ilnx.cz/doku.php/lnxtracker:export
:)

_________________
// na co myslím, když sedím u oldkompů: dysfunctional foreign policy


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 43 ]  Přejít na stránku Předchozí  1, 2, 3  Další

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz