Linux, DosBox i /dev/ttyS0

Jak wiadomo - programista nie pracoholik - grać musi. Co należy jednak zrobić gdy jego sprzęt nie daje mu do końca takiej możliwości?

Wbrew pozorom, nie chodzi wcale o granie w super-wypasionego MMORPG’a - chodzi o grę starą i niemalże zapomnianą: The Settlers 2. Jaki więc mam problem skoro bóg zesłał programistów, którzy napisali DosBOX’a nawet na Linuksa?

Problemem jest gra na dwóch graczy. Każdy kto grał w The Settlers 2 wie o co chodzi - trzeba podłączyć 2 myszki, z czego co najmniej jedna musi być na porcie szeregowym (COM). Niby nic, ale co jeśli nie ma takiego portu? ^^ Np. ja w moim laptopie go nie mam i tutaj zaczynają się schody.

Poszperałem trochę w internecie i znalazłem informację, że porty szeregowe w linuksie reprezentowane są przez pliki /dev/ttyS* ( * - numer portu 0-3 [odpowiednio COM1-4] ). Istotne też, aby pamiętać, że ‘S’ ma być duże ;) Znalazłem taki port u siebie w katalogu /dev jednak nie mam pojęcia co mogę z tym zrobić dalej skoro nie mam takiego portu fizycznie? ^^

Napisałem nawet program który czyta dane z portu myszy ( /dev/input/mouse* ) i wysyła je na /dev/ttyS0 ale niestety sam DosBOX nie chce czytać tego portu zwracając przy starcie komunikat o błędzie:

Serial1: Opening /dev/ttyS0
tcgetattr failed with error 5.

Nie mam zielonego pojęcia co oznacza kod 5 bo nie mogłem znaleźć tego w internecie, ale pewnie ma to związek z brakiem fizycznego portu rs232 w moim laptopie.

Nasuwa mi się na myśl tylko jedna rzecz - jakiś wirtualny port szeregowy. Pytanie tylko czy to podziała… Może ktoś ma jakiś pomysł co do tego? Jestem otwarty na pomysły :)

Posted in Ciekawostki, linux. Tagi:, , .

3 Responses to “Linux, DosBox i /dev/ttyS0”

  1. Xion Says:

    Kod 5 to Input/output error. Żeby to sprawdzić wystarczy napisać programik w stylu:

    errno = 5;
    perror (”");

    Najwyraźniej więc masz rację i chodzi o brak portu. Nie mam przy sobie Linuksa akurat, ale zastanawiam się, czy nie możnaby wywalić oryginalnego /dev/ttyS0 i stworzyć nowego jako hardlinka do /dev/input/mouse :)

  2. moriturius Says:

    @Xion: to nie przejdzie. W configu DosBOXa mogę sobie podać jaki port ma czytać i na linuksie jest tak fajnie, że mogę podać mu bezpośrednio ścieżkę do /dev/input/mouse*

    Bo tam jest kilka plików, mi zależy głównie na jednym - który otrzymuje dane od jednej konkretnej myszy. Jest też /dev/input/mice który otrzymuje dane od wszystkich myszy :)

  3. moriturius Says:

    @Xion: tak jak myslalem, wywala error 25: Inappropriate ioctl for device. Wiec tak sie nie da :)

Leave a Reply