OldComp.cz

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


Právě je 29.03.2024, 02:12

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 55 ]  Přejít na stránku 1, 2, 3, 4  Další
Autor Zpráva
 Předmět příspěvku: Assembler pro střední a pokročilé
PříspěvekNapsal: 18.08.2013, 20:31 
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
Založil jsem toto nové téma, kde by se mohli začátečníci učící se Z80 assembler dotazovat na různé věci.

A hned první dotaz. Jak co nejefektivněji zapsat v assembleru následující dvě složené podmínky testující hodnotu dvou registrů současně:

a) if (A=5) and (B=10) then CALL NN
b) if (A=5) or (B=10) then CALL NN

_________________
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ředmět příspěvku: Re: Assembler
PříspěvekNapsal: 18.08.2013, 20:51 
Offline
Pan Generální
Uživatelský avatar

Registrován: 13.05.2013, 09:15
Příspěvky: 2278
Bydliště: Brno
Has thanked: 842 times
Been thanked: 302 times
No ale pokud se v příkladu b) bude A = 5, tak se již druhý registr? :) netestuje. Nemůžeme tedy tvrdit, že se testují 2 registry současně. Tedy takhle to vnímám jako neassemblerista já. Omluv mne neznalého za to, pokud něco chápu špatně ;) A že se Ti do toho kécám bez odpovědi, protože ji samozřejmě nevím :cry:

Já jsem :lamer: :lol:

_________________
Amiga - PMD 85


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 18.08.2013, 21:52 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
pavero píše:
Založil jsem toto nové téma, kde by se mohli začátečníci učící se Z80 assembler dotazovat na různé věci.

A hned první dotaz. Jak co nejefektivněji zapsat v assembleru následující dvě složené podmínky testující hodnotu dvou registrů současně:

a) if (A=5) and (B=10) then CALL NN
b) if (A=5) or (B=10) then CALL NN


No musis to bude rozlozit ako

a) if (A<>5) then call XX
if (B=10) then call NN
XX: .....


b) if (a=5) then CALL NN
if (B=10) then CALL NN

Do assembleru ti to ale prekladat nebudem netusim ci by som trafil spravne Z80 mnemo

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 18.08.2013, 22:04 
Offline
Pan Štábní
Uživatelský avatar

Registrován: 13.05.2013, 10:52
Příspěvky: 1669
Bydliště: Mliecna draha
Has thanked: 19 times
Been thanked: 124 times
pavero píše:
Založil jsem toto nové téma, kde by se mohli začátečníci učící se Z80 assembler dotazovat na různé věci.

A hned první dotaz. Jak co nejefektivněji zapsat v assembleru následující dvě složené podmínky testující hodnotu dvou registrů současně:

a) if (A=5) and (B=10) then CALL NN
b) if (A=5) or (B=10) then CALL NN



Skoro som zabudol. To prve sa da riesit aj cez 16 bitr aritmetiku a test na nulu

A das ho H registra
B das do L registra
5 das do B registra
10 das do C registra
Vynuluisje CY bit
Potom spravys
SBC HL,BC
CALL NZ,NN

_________________
Amiga 600 + a602, Amiga 600 PCB only, Commodore 64+ZZ-RAM V1.0 512k+C1541(18k RAM)+sd2iec +9.600 Rs232, Commodore 116 + 64k upgrade, ZX 81 ISSUE1 + ZX81XRAM

http://zz-indigo.mavipet.sk/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 18.08.2013, 22:09 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1100
Has thanked: 100 times
Been thanked: 157 times
pavero píše:
Založil jsem toto nové téma, kde by se mohli začátečníci učící se Z80 assembler dotazovat na různé věci.

A hned první dotaz. Jak co nejefektivněji zapsat v assembleru následující dvě složené podmínky testující hodnotu dvou registrů současně:

a) if (A=5) and (B=10) then CALL NN
b) if (A=5) or (B=10) then CALL NN


Ja se vzdycky musim kouknout na http://www.z80.info/z80sflag.htm a overit si jaka instrukce nastavuje ktery priznaky, protoze je a zaroven mam v tom chaos. Nekdy se to hodi, ze nektera instrukce nenastavuje priznaky.
A pak napisi nekolik variant kodu a pocitam ktera je kratsi nebo rychlejsi... Ne vzdy se neco hodi, protoze mas data ulozeny jinak, nebo neco ve smycce a muzes si dovolit ruzne "inicializovat", treba mas nevyuzity registr a v kodu castou konstantu atd. Misto skoku pouzit ret a nebo misto call zase skok. Je rozdil zda si muzes nebo nemuzes ztratit obsah registru ( cp vs sub atd.)

a) if (A=5) and (B=10) then CALL NN
Kód:
; VSTUP: a, b
cp 5                ; 7:2
jr nz,NIC          ; 12/7:2
ld a,b              ; 4:1
cp 10              ; 7:2
call z,nn         ; 17/10:3
NIC:

Kód:
; vstup: a,b
sub 5                 ; 7:2
ld c,a                 ; 4:1
ld a,b                 ; 4:1
sub 10               ; 7:2
or c                   ; 4:1
call z,NN           ; 17/10:3

Nemuzes rici ani o jednom reseni ktere je rychlejsi, kdyz jeste nevis jaka data do toho budes strkat, jaka je pravdepodobnost ze A = 5 atd. Jinak bys zase ruzne prohazoval co budes testovat jako prvni atd.
Kód:
; VSTUP: hl
ld bc,$050A            ; 10:3
; osefuj ze nebude nastaven carry a nebo ze vzdy bude a zmen bc
sbc hl,bc                 ; 15:2 add 16 bit (11:1) mel by nastavovat jen carry, ale je rychlejsi jak sub 16 bit
call z,nn         ; 17/10:3
NIC:



b) if (A=5) or (B=10) then CALL NN
Kód:
; VSTUP: a, b
cp 5                ; 7:2
call z,nn          ; 17/10:3
ld a,b              ; 4:1
cp 10              ; 7:2
call z,nn         ; 17/10:3


Kód:
; vstup: a,b
dec a                 ; 4:1 a = 4?
add a,a              ; 4:1  a = 8?
dec b                 ; 4:1 b = 9?
dec b                 ; 4:1 b = 8?
or b                   ; 4:1
cp 8                  ; 7:2
call z,NN            ; 17/10:3

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 18.08.2013, 23:23 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1100
Has thanked: 100 times
Been thanked: 157 times
_dworkin píše:
Kód:
; vstup: a,b
sub 5                 ; 7:2
ld c,a                 ; 4:1
ld a,b                 ; 4:1
sub 10               ; 7:2
or c                   ; 4:1
call z,NN           ; 17/10:3

Tak tohle by melo byt presne o 1 takt pomalejsi. Pokud A nesedi tak o vic.

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 06:13 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
_dworkin píše:
b) if (A=5) or (B=10) then CALL NN
Kód:
; VSTUP: a, b
cp 5                ; 7:2
call z,nn          ; 17/10:3
ld a,b              ; 4:1
cp 10              ; 7:2
call z,nn         ; 17/10:3
Toto nie je dobre, pretoze ak su obidve rovnosti splnene, NN sa zavola 2x co nemusi byt dobre. Minimalne to algoritmicky nezodpoveda tomu basicovemu zapisu.

Ale, moja otazka je: Test na A=5 and/or B=10 sa sice da napisat krasne rychlo a efektivne, ale otazka znie: Preco ho vlastne chces ? Aky je sirsi kontext v ktorom tento test potrebujes ? Nedal by sa napisat cely tento sirsi kontext jednoduchsie a efektivnejsie ?


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 09:19 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1100
Has thanked: 100 times
Been thanked: 157 times
Busy píše:
_dworkin píše:
b) if (A=5) or (B=10) then CALL NN
Kód:
; VSTUP: a, b
cp 5                ; 7:2
call z,nn          ; 17/10:3
ld a,b              ; 4:1
cp 10              ; 7:2
call z,nn         ; 17/10:3
Toto nie je dobre, pretoze ak su obidve rovnosti splnene, NN sa zavola 2x co nemusi byt dobre. Minimalne to algoritmicky nezodpoveda tomu basicovemu zapisu.

Mas pravdu, toho jsem si nevsimnul. Takze tohle reseni bude jeste pomalejsi.
Kód:
; VSTUP: a, b
cp 5                ; 7:2
jr z,ZERO_FLAG          ; 12/7:2
ld a,b              ; 4:1
cp 10              ; 7:2
ZERO_FLAG:
call z,nn         ; 17/10:3

Blbustka.. ale pokud by tech testu pomoci OR bylo hodne tak by to mohlo byt lepsi reseni. PS: Hmm.. tak ne. To nad tim se da taky pekne rozsirit na rozdil od toho zavisleho na hodnote 5 a 10.
Kód:
; VSTUP: a, b
ld hl,ZA_TESTEM       ; 10:3
push hl                       ; 11:1 misto call & ret
cp 5                           ; 7:2
jr z,NN                        ; 12/7:2
ld a,b                         ; 4:1
cp 10                         ; 7:2
jr z,NN                       ; 12/7:2
pop hl                         ; 10:1 nepouzito
ZA_TESTEM:
...
; --------------------
NN:
....
pop hl                       ; 10:1
jp (hl)                        ; 4:1

Blbustka ver 2. Tak tohle uz ma mene taktu a bude kratsi pri VETSIM poctu testu.
Kód:
; VSTUP: a, b
; VSTUP: a, b
ld hl,ZA_TESTEM       ; 10:3
push hl                       ; 11:1 misto call & ret
ld hl,NN                      ; 10:3
push hl                       ; 11:1

cp 5                           ; 7:2
ret z                          ; 11/5:1 !!!

ld a,b                         ; 4:1
cp 10                         ; 7:2
ret z                          ; 11/5:1
...
pop hl                         ; 10:1 nepouzito, adresa fce (NN)
pop hl                         ; 10:1 nepouzito, navratova adresa (ZA_TESTEM)
ZA_TESTEM:
...
; --------------------
NN:
....
pop hl                       ; 10:1
jp (hl)                        ; 4:1

blbustka ver 3. Fce naruby. Tohle by melo zrychlit tu cast s ukladanim a vybiranim hodnot na a ze zasobniku...
Kód:
call TESTY               ; 17:3
call z,NN                  ; 17/10:3
...
TESTY:
cp 5
ret z                         ; 11/5:1
ld b,a
cp 10
ret z                         ; 11/5:1
... dalsi testy
ret                            ; 10:1

Blbustka ver 4. Reseni if (test1 AND test2 AND test3 atd.) call NN
Kód:
call NN                    ; 17:3 natvrdo
...
NN:
cp 5
ret nz                         ; 11/5:1 jedna spatne vsechno spatne...
ld b,a
cp 10
ret nz                         ; 11/5:1 jedna spatne vsechno spatne...
... dalsi testy
... samotna fce NN
ret                            ; 10:1

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 12:48 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
_dworkin píše:
Kód:
pop hl                       ; 10:1
jp (hl)                        ; 4:1
Ved rovno napis ret ;)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 16:21 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1100
Has thanked: 100 times
Been thanked: 157 times
Starej_Mraf píše:
Prej pro začátečníky :o už teď se v tom ztrácim :bang:

Asi jsem to malo okomentoval. Za tim strednikem mam vzdy pocet cyklu pripadne kdyz je tam lomitko tak to znamena pocet cyklu kdyz je podminka splnena ( takze se provede skok) / pocet cyklu kdyz je podminka nesplnena. Za dvojteckou je pocet bajtu co to zabira. No a RET ma hodne rychly rozhodovani a je navic jednobajtova a tak jsem zkousel jak toho vyuzit a to reseni AND vypada s pomoci RET pouzitelne.

PS: Vlastne mas pravdu, lustit cizi kod je vzdycky hrozne. Zvlast kdyz jsem nepopsal hlavni myslenku.


Přílohy:
Poznámka: Casovani a delky instrukci Z80. Od © 2000-2003 MTs. Timto mu za to dekuji, pro mne nenahraditelne.
z80 mts.xls.tar.gz [69.07 KiB]
709 krát

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 20:29 
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
Jsem rád, že se diskuse zase pořádně rozproudila. :D

to Busy: Popravdě řečeno to měl být ryze obecný dotaz, neexistuje žádné rozpracované řešení, kde bych potřeboval testovat registr A na hodnotu 5 a registr B na hodnotu 10. Možná jsem měl zadání spíše koncipovat takto:

if (A=x) and/or (B=y) then CALL NN

Zde popsané příklady, jak jsem je narychlo prolétl očima, jsou obojího rázu, jak univerzální (nasaditelné pro testování libovolných hodnot), tak použitelné pouze pro hodnoty 5 a 10. Další důležitá věc, jak poznamenal _dworkin, zda si mohu dovolit ztratit obsah testovaných registrů. Dle mého názoru v praxi bude převládat varianta, že si to dovolit nemohu. Z toho mi tedy vycházejí tato dvě řešení:

Kód:
cp 5                ; 7:2
jr nz,NIC          ; 12/7:2
ld a,b              ; 4:1
cp 10              ; 7:2
call z,nn         ; 17/10:3
NIC:


Kód:
; VSTUP: a, b
cp 5                ; 7:2
jr z,ZERO_FLAG          ; 12/7:2
ld a,b              ; 4:1
cp 10              ; 7:2
ZERO_FLAG:
call z,nn         ; 17/10:3


(byť by se musela ještě trochu modifikovat (zpomalit), kdyby bylo potřeba obnovit registr A)

Jinak za všechny ukázky díky, pomáhají mi alespoň o trochu více myslet assemblerově :).

_________________
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ředmět příspěvku: Re: Assembler
PříspěvekNapsal: 19.08.2013, 20:36 
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
Abych nezapomněl, budu mít ještě jednu konkrétní ukázku k optimalizaci, ve které testuji hodnotu registru A a zároveň hodnotu registru IXH. Ale to se týká rutiny pro celeobrazovkový scroll, o kterém je jiné téma tady na fóru.

Sem to nepatří, protože tím bych mohl případné další začátečníky, které jsem zavítají, zbytečně odradit :).

_________________
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ředmět příspěvku: Re: Assembler
PříspěvekNapsal: 21.08.2013, 23:54 
Offline
Pan Štábní

Registrován: 23.06.2013, 23:49
Příspěvky: 1100
Has thanked: 100 times
Been thanked: 157 times
Sakra sakra sakra.. Jak me chybelo neco na zpusob "mov a,[si+bx]" a divat se na ld a,(ix+n) jako na ld a,((ixh+n)+ixl) mne nenapadlo... jak se to pak vubec zapisuje?
Kód:
DATA:
defb 0,1,2,3,4,5,6,7,8,9
CODE:
ld ixh,DATA/256
...
ld ixl,4                             ; 11:3..........
ld a,(ix+DATA%256)         ;
...

To uz mne prijde lepsi pouzit (hl) bude to rychlejsi a kratsi. Ix je dobry na nejakou strukturu. Ale kolikrat je lepsi menit strukturu podle toho jak to ctes.

- Add 16 bitove registry. Vetsinou se teda snazim vyhnout 16 bitove aritmetice. A kolikrat je proste rychlejsi to delat pres akumulator nez hl = adresa, bc = nejaka promena, hl += bc. Usetrim obsah bc.
Kód:
   ld   a,c                                   ; 4:1
   add   a,a                        ; 4:1 2*c protoze radek ma 12 word polozek
   add   a,ixh                         ; 8:2 pridame spravny sloupec
   add   a,ITEM_POZICE % 256   ; 7:2
   ld   l,a                                    ; 4:1
   ld   a,ITEM_POZICE / 256      ;  7:2
   adc   a,0                                  ;  7:2
   ld   h,a                        ;  4:1 hl = adr. v ITEM_POZICE
;                                                           45:12
...
        ld      b,0                                 ; 7:2 prijdeme o prvni registr
        ld      hl,ITEM_POZICE             ; 10:3
        add    hl,bc                               ; 11:1
        add    hl,bc                               ; 11:1
        ld      c,ixh                                ; 8:2 prijdeme o druhy registr
        add    hl,bc                               ; 11:1
;                                                      ; 58:10                   


Nejlepsi je kdyz mas jistotu, ze ti neco neleze pres ten "segment" a staci ti treba "inc l". A uplne idealni kdyz je "offset" nulovy, protoze tam delas nejake
cachry.

- K tem smyckam a omezeni Z80. Kdyz potrebuji testovat jen jednu promenou ( i nekolikrat ) tak ji mam v akumulatoru pokud to jde. Pokud potrebuji testovat vic promenych tak naopak mam v akumulatoru tu hodnotu na kterou se jiny registr testuje. V prubehu smycky pak akumulator neustale nacita ty spravne hodnoty. Taky pouzivam takovy trik na testovani jinych registru na nulu
Kód:
inc c
dec c       ; ano tohle melo byt naopak .)
jr z,nn


- K tomu flamu o rychlostech. Tak Z80 by mela byt rychlejsi ( ne dramaticky ) a drazsi. Zato zbytek hw je minimalisticke pojeti, takze celkove ta cena byla ( vyrazne ) nizsi. Proc taky cpat nejake udelatka do pocitace, ktery neni ( nebyl ) urcen na hrani. .) Ale ten navrh obrazovky s atributama je nakonec genialni.. i to silenstvi s rozlozenim, aby vetsinu slo delat jen pres 8-bit registry. I ten pro ZX charakteristicky a jasne identifikovatelny "vyber" barev, ktery me kdysi desne ...., ze nemam hnedou treba .) Jak mam kreslit strom, hlavne ze mam fialovou.. Ale na co hneda, kdyz je tam cervena, jak to ze jsem to nepochopil, ze je to R(on/off)G(on/off)B(on/off). A vubec stejne jsem mel CBTV. .)

- Na 6502 by melo byt pekne programovat ve Forthu. I kdyz pokud teda ten zasobnik ma jen 256 hodnot..

_________________
Z80 Forth compiler (ZX Spectrum 48kb): https://codeberg.org/DW0RKiN/M4_FORTH


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 22.08.2013, 06:44 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
Maly trik ako si moze program sam zistit, na akych adresach sa nachadza:

Kód:
db #21   <= toto je kod instrukcie LD HL,xxxx
pop hl   <= nizsi bajt operandu instrukcie  LD HL,xxxx
jp (hl)  <= vyssi bajt operandu instrukcie  LD HL,xxxx
ld (#4000),hl
call #4000
...a presne na tomto mieste v beziacom kode je v HL adresa presne tohto miesta,
nieco ako keby tu v zdrojaku bolo napisane  LD HL,$

Inymi slovami, tento kusok programu je de-fakto ako keby instrukcia LD HL,PC (PC=program counter) ;)


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Assembler
PříspěvekNapsal: 22.08.2013, 08:38 
Offline
Óm Nejvyšší

Registrován: 22.05.2013, 21:14
Příspěvky: 3642
Bydliště: Bratislava
Has thanked: 371 times
Been thanked: 788 times
zz_indigo píše:
Busy píše:
Z80 ma programovo dostupnych dokopy 13 sestnastbitovych registrov a dva bity. Resp. jeden a pol bitu, lebo jeden z nich sa neda programovo citat :)
To cislo sa mi nejak nezda. (AF je nepouzitelne, iX a iY su len indexy, PC a SP detto)a nieje mozne pouzivat registe nakros sadamy ;-) Takze realne pouzitelnych mame 2x3 a to trinast urcite nieje ;-)
Netvrdim ze vsetky su pristupne priamo ako jeden celistvy 16-bitovy udaj, ale aspon po 8 bitovych castiach ano.

AF,BC,DE,HL,
AF',BC',DE',HL',
IX,IY,IR,
SP,PC
a este dva bity IFF1 a IFF2 ;)

PS: Preco by IX a IY mali byt len indexy ? Mozno s nimi robit vela veci co aj s HL, 16-bitovych aj 8-bitovych. Napriklad ADD IX,BC; INC IX, LD SP,IX. Osembitove napr. ADD A,XL; LD XL,XH. Jedine co nejde je akurat EX DE,HL a vsetky instrukcie po #ED. A este nejde v jednej instrukcii pouzivat naraz obidva IX aj IY. A ohladom AF, to sa tiez zvykne pouzivat ako jeden celistvy 16-bitovy udaj, hlavne v roznych demoefektoch :)


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ů: 55 ]  Přejít na stránku 1, 2, 3, 4  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 6 návštevní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