OldComp.cz

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


Právě je 29.03.2024, 07:46

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




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 65 ]  Přejít na stránku 1, 2, 3, 4, 5  Další
Autor Zpráva
 Předmět příspěvku: Multiplatformní vývoj
PříspěvekNapsal: 05.10.2014, 23:46 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Začnu trochu ze široka, ale jen tak to dodá příspěvku toho správného ducha :-)

V období mezi lety 1969 a 1973 započal v Bellových Laboratořích společnosti AT&T vývoj UNIXu. Z počátku na minipočítači PDP-7 (od Digital Equipmens) a později vývoj pokračoval na novějším stroji PDP-11. Při přechodu z PDP-7 na PDP-11 si vývojáři uvědomili poměrně zásadní slabinu dosavadního vývoje – kód psaný v assembleru musel být de-facto přepsán ze staršího procesoru na nový. Začali tedy přemýšlet od vyšším programovacím jazyku, a začali experimentovat s dnes již zapomenutým jazykem BCPL. Tento jazyk byl ale intepretovaný a na systémové programování se tedy neosvěčil. Denis Ritchie následně vyvinul nový jazyk, který měl být efektivní téměř jako assembler, ale měl zárověň zabezpečit bezproblémovou portaci na nové architektury. V roce 1973 byl UNIX přepsán do jazyka C, což mu později umožnilo masové rozšíření na nespočet platforem.

Dnešní marketingový specialista by to označil jako success story :-) Ale k jádru věci:

Napadl mě takový experment – vytvořit nějakou jednoduchou hru (třeba tetris) pro co nejvíce platforem. Představa je následující:

1) Dát dohromady počítače, pro které existuje kompilátor c a jejich majitele, kteří by se experimentu chtěli zúčastnit.
2) Navrhnout jednoduché api pro přístup k hardware (inicializace grefického režimu, získání rozlišení obrazovky, nastavení barvy pera a pozadí, vykreslení bodu na obrazovce, …)
3) Toto api by majitelé počítačů implementovali pro své platformy.
4) Za použití našeho api a ansi c by se vytvořil jednoduchý tetris.

Co vy na to? Kolik platforem najdeme?

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 06.10.2014, 07:47 
Na Atari 800XE je:
Deep Blue C
Lightspeed C
C/65
CC65

Mozno by som siel do toho.

No nebolo by jednoduchsie ako Tetris nakodit nieco take?:
Obrázek


Nahoru
  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 06.10.2014, 12:12 
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
Na ZX Spektre existuje Hisoft C, ale netusim nakolko bude pouzitelne na nejaky realny projekt.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 06.10.2014, 22:53 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Podržel bych se pro začátek tetrisu, protože je jednoduchý a vystačí si s ovládáním tlačítky.
Myš bych nechal na později :-)

Níže jsem navrhnul jednoduché api pro přístup ke konkrétní platformě. Na zbytek by mělo stačit ANSI C.

Přemýšlím zda do něj nepřidat ještě nativní podporu textů, nebo zda ji implementujeme na straně aplikace.
Nejsem si jistý zda dáme ten delay v milisekundách?
Bude takto stačit nebo někoho ještě něco napadne?

Kód:
#if !defined(__MULTI_H)
#define __MULTI_H


/*
* init_graph() inicializuje grafické rozhraní pokud je to nutné.
* V případě že na dané platformě inicializace není nutná, tak se ponechá
* prázdná implementace.
* Návratová hodnota 0 = vše ok, v opačném případě kód chyby
*
*/
extern int m_init_graph(void);

/*
* close_graph() uvolňuje ruší rozhraní, pokud je to nutné.
* Návratová hodnota 0 = vše ok, v opačném případě kód chyby
*/
extern int m_close_graph(void);

/*
* Vrátí maximální horizontální rozměr obrazovky.
*/
extern int m_get_max_x(void);

/*
* Vrátí maximální vertikální rozměr obrazovky.
*/
extern int m_get_max_y(void);

/*
* Definice barevné palety pro 16 barev
*/
enum M_COLORS {
    BLACK      = 0,
    BLUE      = 1,
    GREEN      = 2,
    CYAN      = 3,
    RED         = 4,
    MAGENTA      = 5,
    BROWN      = 6,
    LIGHTGRAY      = 7,
    DARKGRAY      = 8,
    LIGHTBLUE      = 9,
    LIGHTGREEN      = 10,
    LIGHTCYAN      = 11,
    LIGHTRED      = 12,
    LIGHTMAGENTA    = 13,
    YELLOW      = 14,
    WHITE      = 15
};

/*
* Nastavení barvy pera
*/
extern void m_setcolor(int color);

/*
* Nastavení barvy papíru
*/
extern void m_setbkcolor(int color);

/*
* Vykreslení bodu na obrazovku
*/
extern void m_putpixel(int x, int y, int color);

/*
* Vymazání obrazovky
*/
extern void m_clear_screen(void);

/*
* Test zda byla zmáčknutá klávesa
* 0 = klávesa zmáčknutá nebyla, jinak ASCII kód klávesy
*/
extern int m_kbhit(void);

/*
* Uspání na n milisekund
*/
extern void m_delay(unsigned milliseconds);

#endif

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 14.10.2014, 15:18 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
V příloze posílám zdrojáky k tetrisu:

* MAIN.C - Vstupní bod aplikace a implementace hlavního workflow
* TETRIS.C - Implementace vlastní logiky tetrisu
* SHAPE.C - Výroba náhodných tvarů
* GRAPH.C - Implementace grafiky tetrisu
* GUICNTLS.C - Jednoduché dialogy
* MULTI.C - Naše multiplatformní knihovna
* TETRIS.PRJ - Soubor projektu pro Turbo C

Tetris využívá pouze standardních knihoven ANSI C a naší multiplatformní knihovnu. Přiložená implementace je odladěná pro Turbo C. Pro port na jinou platformu by nyní mělo stačit implementovat knihovnu MULTI.C. Ta je rozdělena do dvou částí. První část obsahuje minimální výčet funkcí potřebných pro Tetris. Druhá část obsahuje funkce, které je možné naimplementovat na základě těch předchozích, ale z důvodu lepšího výkonu je možné použít nativní funkce dané platformy.

Podaří se někomu rozeběhnout hru na dalším počítači?

Následnuje aktuální výpis hlavičkového souboru knihovny MULTI
Kód:
#if   !defined(__MULTI_H)
#define __MULTI_H

/*
*******************************************************************
* Minimalni sada funkci pro implementaci TETRISu                  *
*******************************************************************
*/

/*
* init_graph() inicializuje graficke rozhrani pokud je to nutne.
* V pripade ze na dane platforme inicializace neni nutna, tak se ponecha
* prazdna implementace.
* Navratova hodnota 0 = vse ok, v opacnem pripade kod chyby
*
*/
extern int m_init_graph(void);

/*
* close_graph() uvolnuje a rusi rozhrani, pokud je to nutne.
*/
extern void m_close_graph(void);

/*
* Vrati maximalni horizontalni rozmer obrazovky.
*/
extern int m_get_max_x(void);

/*
* Vrati maximalni vertikalni rozmer obrazovky.
*/
extern int m_get_max_y(void);

/*
* Definice barevne palety pro 16 barev
*/
enum M_COLORS {
    M_BLACK      = 0,
    M_BLUE      = 1,
    M_GREEN      = 2,
    M_CYAN      = 3,
    M_RED      = 4,
    M_MAGENTA      = 5,
    M_BROWN      = 6,
    M_LIGHTGRAY      = 7,
    M_DARKGRAY      = 8,
    M_LIGHTBLUE      = 9,
    M_LIGHTGREEN   = 10,
    M_LIGHTCYAN      = 11,
    M_LIGHTRED      = 12,
    M_LIGHTMAGENTA    = 13,
    M_YELLOW      = 14,
    M_WHITE      = 15
};

/*
* Nastaveni barvy pera
*/
extern void m_setcolor(int color);

/*
* Nastaveni barvy papiru
*/
extern void m_setbkcolor(int color);

/*
* Vykresleni bodu na obrazovku
*/
extern void m_putpixel(int x, int y, int color);

/*
* Ziskani barvy bodu obrazovky
*/
extern int m_getpixel(int x, int y);


/*
* Vymazani obrazovky
*/
extern void m_clear_screen(void);

/*
* Test zda byla zmacknuta klavesa
* 0 = klavesa zmacknuta nebyla, jinak ASCII kod klavesy
*/
extern int m_kbhit(void);

/*
* Uspani na n milisekund
*/
extern void m_delay(unsigned milliseconds);

/*
*******************************************************************
* Nasleduje nekolik funkci, ktere mohou byt implementovany na     *
* zaklade predchozich. Nicmene nekdy muze byt efektivnejsi jejich *
* nativni implementace na hostitelskem prostredi.                 *
*******************************************************************
*/

/*
* Nastaveni velikosti fontu
*/
extern void m_settextsize(int charsize);

/*
* Ziskani velikosti fontu
*/
extern int m_gettextsize(void);

/*
* Vypis textu na obrazovku
*/
extern void m_outtextxy(int x, int y, char *s);

/*
* Vykresleni obdelniku
*/
extern void m_rectangle(int left, int top, int right, int bottom);

/*
* Vybarveni obdelniku
*/
extern void m_fill_rect(int x, int y, int width, int height, int color);

/*
* Ziskani velikosti vystrizku obrazovky
*/
extern unsigned m_imagesize(int left, int top, int right, int bottom);

/*
* Ziskani vystrizku obrazovky
*/
extern void m_getimage(int left, int top, int right, int bottom, void *bitmap);

/*
* Vykresleni vystrizku obrazovku
*/
extern void m_putimage(int left, int top, void *bitmap);

#endif


Přílohy:
TETRIS.zip [21.78 KiB]
674 krát

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 16.10.2014, 14:24 
Offline
Kecálek

Registrován: 21.12.2013, 13:09
Příspěvky: 96
Has thanked: 3 times
Been thanked: 40 times
Tak k tomu Tetrisu - zkusil jsem to implementovat do embedded desky a mám několik poznámek:
1. graph.c - nejde přeložit - upraveno format -> fmt
2. guicntls.c - chybí include <string.h> a je tam zásadní problém s getch (nedefinováno) a m_kbhit - pokud m_kbhit vrací kód klávesy (dle popisu v multi.h), tak nejspíš nemá smysl po něm volat getch... Případné flushování by mělo být implementováno v m_kbhit ne?

Pokud to tak upravíme, tak bych to dokázal přeložit... Překlad je GCC 4.11 pro Cortex-M ARM CPU...
Multi.c vyrobím nové - něco jako multi_STM32_Camera.c ...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 16.10.2014, 21:55 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Díky za připomínky.

* getch() jsem přehlédnul - patří do conio, což samozřejmě není ansi knihovna. Použil jsem tedy m_kbhit(), jak jsi navrhnul.
* format je také opraven

Opravená verze je přiožená. Jsem zvědav zda se podaří :-)

Jarda


Přílohy:
TETRIS.zip [21.03 KiB]
655 krát

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 21.10.2014, 08:55 
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:
Na ZX Spektre existuje Hisoft C, ale netusim nakolko bude pouzitelne na nejaky realny projekt.

Myslím, že jakožto produkt HiSoftu bude velmi dobrý...
Já jsem (po letech) zkoumal před časem HiSoft Pascal, a zjistil jsem, že na svou dobu byl vysoce kvalitní - akorát k němu člověk musí mít manuál, což jsem já v roce 1988, kdy bych ho upotřebil nejvíc, neměl... :( Zkurvený komunisti!!! :x

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

www.zxsparrow.com


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 25.10.2014, 19:14 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Už se nějakou dobu peru s tím Hisoft C-čkem. Ten editor je opravdu peklo :-)

Na stránkách z00ma jsem našel hezký článek - pokud by to ještě něko zajímalo:

http://z00m.speccy.cz/docs/hisoft-c.pdf

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 26.10.2014, 08:34 
Offline
Pan Generální
Uživatelský avatar

Registrován: 11.06.2013, 15:27
Příspěvky: 3025
Has thanked: 2192 times
Been thanked: 894 times
berk píše:
Ten editor je opravdu peklo :-)

Ono by peklo nemuselo byt, pokud by betadiskari nasli a pouzivali verzi od Ing. Adamka - divil bych se moc, pokud by to neupravil jako hisoftacke Packaly, treba i nekolikrat....
Mozna vsak upravil jen prvni verzi http://sam.speccy.cz/olddocs/databaze_obsah.pdf, a urcite ne v.1.3.
Příloha:
1.png
1.png [ 114.6 KiB | Zobrazeno 17871 krát ]
Příloha:
2.png
2.png [ 108.24 KiB | Zobrazeno 17871 krát ]

_________________
// na co myslím, když sedím u oldkompů: Blood Products from Genetic Vaccine Recipients


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 30.12.2014, 11:42 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Po nějaké době experimentování vracím k malému shrnutí.

Cílem experimentu je ověřit, že program napsaný v c může být dobře přenositelný i v rámci starých počítačů. Vzali jsme tedy projekt hry Tetris napsaný pro Turbo C s cílem jeho přenosu na jiný starší počítač. Protože mám zkušenost se ZX Spectrem, tak jsem se zaměřil na něj.

Výběr kompilátoru

HiSoft C - (http://z00m.speccy.cz/docs/hisoft-c.pdf) je hezký malý kompilátor c-čka běžící na Spectru. V dobách, kdy spectrum bylo mladé :-) bych asi neměl problém ani s poněkud zvláštním editorem, a byl by to kompilátor ideální na nějaké malé školní projekty. Pro portaci programů z jiných systémů má HiSoft C několik nevýhod:

1) Používá K&R notaci zápisu funkcí, což komplikuje přenos programů napsaných v ANSI C
2) Má limit co se týče velikosti projektu. Do paměti Spectra se totiž musí vejít samotný kompilátor, zdrojový kód a přeložený kód. Experimentováním jsem došel k tomu, že projekt velikosti našeho Tetrisu už je za čárou.

Z88DK - (http://en.wikipedia.org/wiki/Z88DK) je malý cross-compilátor ANSI C běžící na MS DOS, Linux, Windows, … Cílová platforma jsou počítače s procesory Z80 http://www.z88dk.org/wiki/doku.php?id=targets Výhody jsou následující:

1) Jednoduché použití - zcc +zx -lndos -create-app -o hello hello.c vyrobí rovnou hello.tap soubor pro ZX Spectrum. Pokud chcete kompilovat třeba pro Sharp MZ, zaměňte +zx za +mz
2) Dobrá spolupráce s GNU Make
3) Množství dodávaných standardních knihoven. Nejlepší zkušenost jsem udělal s verzí z posledního nočního buildu (http://nightly.z88dk.org/), kde je vývoj emulační knihovny bgi asi nejdál :-)

Tetris

Projek se mi podařilo s Z88DK portovat na ZX Spectrum docela dobře. Rozdíly v implementaci jsou soustředěny do souborů multi.h a multi.c. Ze stejných zdrojáků můžete tedy kompilovat v Turbo C i v Z88DK. Zajímavé je porovnání velikostí výsledných binárek:

Z Turbo C má výsledný soubor velikost 47 003 bajtů a to nepočítám ovladač egavga.bgi
Ze Z88DK má výsledná binárka velikost 11 358 bajtů.

Na Spectru je hra černobílá. Žádné optimalizace na rychlost jsem nedělal – určitě by třeba pomohla implementace vykreslování kostiček přes barevné atributy. Volání funkcí pro vykreslování prostřednictvím multi.c také není pro rychlost ideální.

Výsledek zkuste posoudit sami. Kdo máte jiný počítač s procesorem Z80 zkuste tetris zkompilovat i pro něj.

Závěrem bych chtěl říci, že kdo chcete pro svůj retro počítač napsat nějaký větší program a nechcete se prát s assemblerem, nebo chcete aby byl výsledný program přenositelný v rámci 8-bitových počítačů, tak Z88DK je určitě velmi dobrá volba.


Přílohy:
Tetris_src.zip [23.02 KiB]
662 krát
tetris.tap [11.17 KiB]
658 krát
Tetris.png
Tetris.png [ 12.45 KiB | Zobrazeno 17584 krát ]

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 22.03.2015, 00:24 
Offline
Radil

Registrován: 27.09.2014, 23:56
Příspěvky: 446
Has thanked: 436 times
Been thanked: 230 times
Přečetl jsem si vynikající knihu Mikropočítačová Revoluce od Pavla Tronnera na kterou upozornil solaris104 v sekci Pokec všeobecný.
Kniha se v závěru věnuje Microsoftu a okolnostem vzniku Windows a rovněž jejich 32-bitových verzí založených na win32 (Windows 95 a NT). To mě inspirovalo podívat se trochu na win32 api, zjistit co je to ta maďarská notace a tak :-)

V tomto ohledu doporučuji knihu Programming Windows Fifth Edition od Charles Petzolda.

Vzhledem k tomu, že win32 api je napsané v ANSI C, tak jsem vyzkoušel portovat náš Tetris rovněž na Windows. Hlavní změna byla v přizpůsobení tetrisu pro událostmi řízené prostředí a použití timeru. Jinak jádro zůstalo více méně stejné. Nejsem fandou MS technologií a tak ani nemám žádné Visual Studio. Použil jsem jednoduše MinGW.

Výsledek včetně zdrojáků naleznete v příloze.

Popravdě nedokážu otestovat, zda je program spustitelný na Windows 95 nebo 98, protože je aktuálně nemám. Binárka má velikost 313 kB z čehož 271 kB zabírá ikona :-)

Je hezké vidět jak se jeden a ten samý algoritmus napsaný původně v Turbo C v DOSu dá zkompilovat a spouštět pro stařičké ZX Spectrum s minimem paměti tak i pro moderní Windows.


Přílohy:
Tetris_src.zip [93.09 KiB]
622 krát
Tetris_exe.zip [99.19 KiB]
635 krát

_________________
ZX Spectrum DELTA, D80, Melodik, XY4150, Aritma 0512
PGP: A6EA 1F93 EF6B D8D1 35AD B6D7 1E79 73E5 1B28 17F9
Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 22.03.2015, 00:48 
Offline
Profík

Registrován: 27.07.2013, 13:24
Příspěvky: 903
Has thanked: 25 times
Been thanked: 125 times
Sice to není Cčko, ale co zkusit Atalan http://atalan.kutululu.org/ , který byl pro multiplatformní vývoj na malých počítačích přímo stvořený?

_________________
Atari 600XL, 800XL/XE, 130XE, ST, STE, MegaST, 7800, JaguarCD, Commodore C64, Amiga 500/Plus, 1200, CDTV, Sinclair QL + GC, Sharp MZ800, Sord M5, CPC 6128, Spectravideo SVI X'Press, Sony HB-750, Philips CDi 370, Ohio Scientific Challenger, Eureka.


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 22.03.2015, 21:43 
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
ctirad píše:
Sice to není Cčko, ale co zkusit Atalan http://atalan.kutululu.org/ , který byl pro multiplatformní vývoj na malých počítačích přímo stvořený?
No, pozrel som ho trosku, ale uprimne - neviem si vobec predstavit ze by som v nom mal pisat 1k intro ... alebo aspon nejake demo ...


Nahoru
 Profil  
 
 Předmět příspěvku: Re: Multiplatformní vývoj
PříspěvekNapsal: 22.03.2015, 23:38 
Offline
Profík

Registrován: 27.07.2013, 13:24
Příspěvky: 903
Has thanked: 25 times
Been thanked: 125 times
Nevím, nikdy jsem to nepoužil, ale obávám se, že v tom Cčku to bude možná ještě horší.

_________________
Atari 600XL, 800XL/XE, 130XE, ST, STE, MegaST, 7800, JaguarCD, Commodore C64, Amiga 500/Plus, 1200, CDTV, Sinclair QL + GC, Sharp MZ800, Sord M5, CPC 6128, Spectravideo SVI X'Press, Sony HB-750, Philips CDi 370, Ohio Scientific Challenger, Eureka.


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ů: 65 ]  Přejít na stránku 1, 2, 3, 4, 5  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 5 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