  XFree-to-Xinside
  Autor: Marco Melgazzi, marco@techie.com
  v1.2, Maj 1997
  WWeerrssjjaa ppoollsskkaa:: BBaarrttoosszz MMaarruusszzeewwsskkii
  BB..MMaarruusszzeewwsskkii@@zzssmmeeiiee..ttoorruunn..ppll
  v1.0, 13 Wrzenia 1997


  Jak zamieni format opisu trybw video XFree86 na XInside/XiGraphics.
  Dokument ten zosta napisany w standardzie ISO-8859-2. Jego oryginalna
  wersja znajduje si pod adresem ftp.icm.edu.pl
  <ftp://ftp.icm.edu.pl:/pub/Linux/sunsite/docs/HOWTO/mini/>.

  11..  WWpprroowwaaddzzeenniiee..


  Wiosn 1996 widziaem wiele listw w grupie comp.os.linux.x z
  pytaniami o to jak przenie tryby video z XFree86 do jednego z jego
  komercyjnych odpowiednikw: XInside (teraz nazwanym XiGraphics, jednak
  w tym dokumencie uywam starszej nazwy poniewa bd si odwoywa
  gwnie do tamtej wersji).

  Zanim powstaa nowa wersja tego programu grzebaem troch w tej
  starszej i cigle mam t przerobion wersj gdzie na moim dysku:
  poniewa lubi rozwizywa problemy postanowiem sprbowa i po kilku
  godzinach grzebania i obliczania powsta w miar sensowny artyku,
  ktry natychmiast wysaem.

  Dyskusje na temat zamiany nagle znikny a ja otrzymaem 1 (jeden)
  list z podzikowaniami za artyku, wic poniewa moe kto
  potrzebowaby tych informacji w przyszoci postanowiem przeksztaci
  ten artyku w mini-HOWTO.

  Pozwl mi jednak najpierw co powiedzie: NIE pracuj dla XInside i
  miaem dostp tylko do wersji 1.2 dla Linux-a. Wiem, e w dzisiejszych
  czasach (Maj 97) AccelX osign ju wersj 3.1, ale myl, e zawarte
  tutaj informacje, jeli nie dosownie, to i tak si przydadz.

  Poniewa to HOWTO zostao napisane z pomoc do starej wersji
  XInside, moe si tak sta, e cz zawartych tutaj informacji bdzie
  niepena: jak pniej przeczytasz, dziki narodzinom XFree 3.2, nie
  kupiem tego komercyjnego serwera. Tak wic jeli zauwaysz jakie
  niepoprawne informacje w tym dokumencie prosz wylij mi list.

  Jednak zauwa, e manipulowanie czstotliwociami monitora moe by
  cokolwiek niebezpieczne i dlatego nie daj absolutnie adnych
  gwarancji. Jeli bdzie u ciebie dziaa, to dobrze, jeli wysadzisz
  swj komputer, to nie wi mnie za to.

  Jak moe zauwaye po moim nazwisku moim narodowym jzykiem nie jest
  angielski, wic przypuszczalnie zanjdziesz jakie bdy tu i tam.
  Przepraszam za nie z gry i prosz nie zawalajcie mojej skrzynki
  listowej wiadomociami zwizanymi z tymi bdami. Dziki!


  22..  CCzzyy ppoottrrzzeebbuujj tteeggoo??


  Sdze, e taktyka Xinside polegajca na nie doczaniu narzdzia (jak
  xvidtune) do obrbki trybw video czy do przeniesienia tych z XFree do
  wersji rozwojowej (i o ile wiem komercyjnej) jest niezrozumae.
  Spdziem nad tym jakie 3 godziny (wskazwka: porwnaem pozycj
  dotyczc VESy 1024x768@70Hz w tych dwch formatach (i jestem ju
  prawie elektronikiem ;-)) podczas gdy programista Xinside mgby
  napisa artyku porwnawczy...

  Nie cigaem adnej wersji rozwojowej od 1.3 i naprawd mam nadziej,
  e to naprawili. Jeli tak, to ten dokument jest ju bezuyeczny, ale
  jeli go przeczytasz, to dowiesz si troch wicej o tym jak to
  dziaa.


  33..  NNoo ttoo ssttaarrtt..


  Zamy, e masz jaki tryb w XFree86 i chcesz z niego zrobi wersj
  dla Xinside z tymi samymi warunkami: postpuj zgodnie z opisanymi
  poniej krokami, a powinno ci si uda. Uyjemy moich domylnych
  trybw video jako przykadw z ycia wzitych i wyjani co musisz
  zrobi, eby je zamieni.

  Pozycja w XFree86 wyglda tak:


  Modeline "blahblah" DOTCLK  A B C D  a b c d



  Kady z numerw A-D i 1-4 ma swoje znaczenie: jeli chcesz, moesz ich
  poszuka w "The Hitchhiker's Guide to X386/XFree86 Video Timing"
  (/usr/lib/X11/doc/VideoModes.doc), ale nie musisz zna teorii, eby je
  zamieni...

  Moje tryby w /usr/lib/X11/XF86Config to:


  Modeline "1168x876" 105  1168 1256 1544 1640  876 877 891 900
                       |     |    |    |    |    |   |   |   |
                    DOT_CLK  A    B    C    D    a   b   c   d



  W Xinside, musisz doda pozycj w pliku Xtimings, ktry powinien si
  znajdowa w etc/ (od teraz zakadam, e jeste w gwnym katalogu
  Xaccel, ktrym powinien by /usr/X11/lib/X11/AcceleratedX).



























  !    Gdzie w tym pliku, umie nazwy ktre chcesz

  [PREADJUSTED_TIMING]
      PreadjustedTimingName = "1168x876 @ 72Hz";

  !
  !    Te cztery s oczywiste
  !
      HorPixel          = 1168;         // pixels
      VerPixel          = 876;          // lines
      PixelWidthRatio   = 4;
      PixelHeightRatio  = 3;

  !
  !   hsync: DOT_CLK / D * 1000 [KHz]
  !
  !   hsync = 105 / 1640 * 1000 = 64.024 KHz
  !
  !   vsync: ( 1 / (( D / DOT_CLK ) * d) ) * 1,000,000 [Hz]
  !
  !   vsync: ( 1 / (( 1640 / 105 ) * 900) ) * 1,000,000
  !           ( 1 / 14057.1428571 ) * 1,000,000 = 71.138 Hz
  !

      HorFrequency      = 64.180;        // kHz
      VerFrequency      = 71.138;        // Hz

  !   Oczywiste

      ScanType          = NONINTERLACED;

  !
  !   Umie tutaj opcje +/-hsync +/-vsync z XFree86
  !
      HorSyncPolarity   = POSITIVE;
      VerSyncPolarity   = POSITIVE;

  !   Nie powinno si zmienia

      CharacterWidth    = 8;             // pixels

  !   Tutaj jest DOT_CLK

      PixelClock        = 105.000;       // MHz
  !
  !
  !   Sekcja czstotliwoci poziomych: [usec]
  !
      HorTotalTime  = D / DOT_CLK                  = 15.619;
      HorAddrTime   = A / DOT_CLK                  = 11.124;
      HorBlankStart = A / DOT_CLK                  = 11.124;
      HorBlankTime  = HorTotalTime - HorBlankStart =  4.495;
      HorSyncStart  = B / DOT_CLK                  = 11.962;
      HorSyncTime   = C / DOT_CLK - HorSyncStart   =  2.743;

   !
   !  Sekcja czstotliwoci pionowych: [msec]
   !

      VerTotalTime  = ( HorTotalTime * d ) / 1000  = 14.057;
      VerAddrTime   = ( HorTotalTime * a ) / 1000  = 13.682;
      VerBlankStart = ( HorTotalTime * a ) / 1000  = 13.682;
      VerBlankTime  = VerTotalTime - VerBlankStart =  0.375;
      VerSyncStart  = ( HorTotalTime * b ) / 1000  = 13.698;
      VerSyncTime   = ( HorTotalTime * ( c - b ) ) / 1000
                                                   = 0.219
   ! Koniec!



  Teraz tak nowo stworzone tryby musisz umieci w plikach pokazanych
  poniej w odpowiednich miejscach.


  44..  UUssttaawwiiaanniiee..


  W wyjtkach pokazanych poniej znak -> pokazuje co byo zmieniane: nie
  wpisuj go do pliku!

  Pozycja Monitor (moja to monitors/mfreq/mfreq64.vda)


      [ESTABLISHED_TIMINGS]
          "640x480 @ 60Hz",
          "640x480 @ 72Hz",
          "640x480 @ 75Hz",
          "800x600 @ 56Hz",
          "800x600 @ 60Hz",
          "800x600 @ 72Hz",
          "800x600 @ 75Hz",
          "1024x768 Interlaced",
          "1024x768 @ 60Hz",
          "1024x768 @ 70Hz",
          "1024x768 @ 75Hz",
      "1152x900 Interlaced",
          "1152x900 @ 60Hz",
          "1152x900 @ 67Hz",
  ->      "1168x876 @ 72Hz",
          "1280x1024 Interlaced",
          "1280x1024 @ 60Hz",
      "1600x1200 Interlaced";



  Plik informacyjny na temat karty (mj to boards/s3/764-2.xqa,
  Zastanawiam si czemu maj prawie wszystkie karty Hercules, a mojej
  nie: Terminator 64/Dram)
























  [VISUAL]
      BitsPerPixel   = 8;
      MemoryModel    = Packed;
      ColorModel     = Indexed;
      BitsRGB        = 6;
      NumberOfColors = 256;

      [RESOLUTIONS]
      640x480,
      800x600,
      1024x768,
  ->  1168x876,
      1152x900,
      1280x1024

      [DESKTOPS]
      640x480,
      800x600,
      1024x768,
      1152x900,
  ->  1168x876,
      1280x1024,
      1600x1200



  Jeli czstotliwoci zegara (dot clock) jest odpowiednio niski (NIE w
  tym przypadku dla mojej karty) moesz nawet t pozycj umieci w
  sekcji 16bpp i 32bpp.

  Plik /etc/Xaccel.ini bdzie wyglda tak:


  --------------------------------------------------------------
      Board   = "s3/764-2.xqa";
      Monitor = "mfreq/mfreq64.vda";
      Depth   = 8;
  ->  Desktop = 1168x876;

      [RESOLUTIONS]
  ->      1168x876,
          1024x768;



  Waciwa pozycja odnonie trybw w etc/Xtimings




















  --------------------------------------------------------------
  [PREADJUSTED_TIMING]
      PreadjustedTimingName = "1168x876 @ 72Hz";

      HorPixel          = 1168;          // pixels
      VerPixel          = 876;           // lines
      PixelWidthRatio   = 4;
      PixelHeightRatio  = 3;
      HorFrequency      = 64.024;        // kHz
      VerFrequency      = 71.138;        // Hz
      ScanType          = NONINTERLACED;
      HorSyncPolarity   = POSITIVE;
      VerSyncPolarity   = POSITIVE;
      CharacterWidth    = 8;             // pixels
      PixelClock        = 105.000;       // MHz
      HorTotalTime      = 15.619;        // (usec) =  205 chars
      HorAddrTime       = 11.124;        // (usec) =  146 chars
      HorBlankStart     = 11.124;        // (usec) =  146 chars
      HorBlankTime      =  4.495;        // (usec) =   59 chars
      HorSyncStart      = 11.962;        // (usec) =  157 chars
      HorSyncTime       =  2.743;        // (usec) =   36 chars
      VerTotalTime      = 14.057;        // (msec) =  900 lines
      VerAddrTime       = 13.682;        // (msec) =  876 lines
      VerBlankStart     = 13.682;        // (msec) =  876 lines
      VerBlankTime      =  0.375;        // (msec) =   24 lines
      VerSyncStart      = 13.698;        // (msec) =  877 lines
      VerSyncTime       =  0.219;        // (msec) =   14 lines



  Moesz sprawdzi czy wszystko sie udao uruchamiajc program vgaset
  bez parametrw podczas gdy uruchomiony jest serwer Xinside: na ekranie
  bdzie pokazana linia na podobiestwo XFree86 i, jeli wszytko jest
  dobrze, linia ta bdzie taka sama jak ta, od ktrej zacze (za
  wyjatkiem jeli b i c s takie same, nie byem w stanie powtrzy tej
  sytuacji w Xinside: najlepszym przypadkiem byo c=b+1).


  55..  KKoonniieecc......


  To wszystko! Mam nadziej, e przyda ci si to. Nie sdz, ebym kupi
  serwer XiGraphics w bliszej przyszoci z jednego prostego powodu:
  wersja 3.2 XFree86 rozwizaa wszystkie problemy zwizane z prdkoci
  tekstu, jakie miaem na swojej skromnej karcie Trio 64 ;)

  Jednak wyglda na to, e serwer XiGraphics obsuguje o wiele szerszy
  zestaw chip-w i kart graficznych ni XFree, wic moe si zdarzy, e
  komercyjna alternatywa bdzie jedyn dla ciebie. Jeli tak jest i
  kupie serwer XiGrpahics, z chcia usyszabym czy zaprezentowane tu
  informacje przyday ci si czy byy zbyt skomplikowane, czy cokolwiek.


  66..  AAuuttoommaattyyzzaaccjjaa pprroocceessuu..


  Ten may skrypt automatyzuje caa prac. Bd bardzo ostrony z
  ScanType i z dwoma liniami Polarity: skrypt ich nie ustawia i jeli
  jeste zbyt leniwy, eby je poprawi, to szansa na spalenie twojego
  monitora wzrasta znacznie.

  Zauwa, e nie wiem czy parametr "Doublescan" ma jakie znaczenie w
  XInside: jeli sprbujesz zamieni jaki tryb o maej rozdzielczoci
  BD OSTRONY, atwo moesz zaatwi swj monitor poniewa
  czstotliwo odwieania, jak uzyskasz jest podwojona (a naprawd
  moje 400x300@72Hz stao si 400x300@144Hz !).
  #!/bin/sh
  ##########################################################################
  # XF2XInside
  #
  # Skrypt ten zamienia opisy trybw z formatu XF86Config na format XInside
  # tak jak tego wymaga plik etc/Xtimings.
  #
  # To jest tylko taki hacker-ski skrypt wic nie spodziewaj si zbyt
  # zaawansowanego sprawdzania bdw (nie mwic ju o przyjaznoci dla
  # uytkownika).
  #
  # Jeli wywoasz go bez argumentw powinien ci on powiedzie co zrobi.
  #
  #                               ( Lipec 1996, hcz@tazlwurm.bb.bawue.de)
  #
  # Przy okazji: Nowe tryby stworzone tak jak to opisuje to HOWTO dziaaj,
  # ale nie pokazuj si w menu Xsetup-u. Kto wie dlaczego?
  #
  ##########################################################################
  #----------------------------------------------- No to lecimy:
  # Zmie to jeli twj plik konfiguracyjny jest gdzie indziej
  XF=/usr/X11/lib/X11/XF86Config
  if [ $# -ne 1 ] ; then
    echo "usage: ${0##*/} <mode>"
    echo " example: ${0##*/} 1024x764"
    echo -e " function: converts $XF modeline entry into\n Xinside Format (stdout)"
    exit 1
  fi
  egrep -i "^[\t ]*modeline.+\"$1\""  /usr/X11/lib/X11/XF86Config |
  gawk '
  NF < 11  { print "! invalid Modeline:\n! " $0 "\n!"; next }
  {
    print "//", $0  ":"
    name = $2
    DOT_CLK = $3;
    A = $4;
    B = $5;
    C = $6;
    D = $7;
    a = $8;
    b = $9;
    c = $10;
    d = $11;
    VerFrequency =  1000000 / ((D / DOT_CLK) * d)
    print "[PREADJUSTED_TIMING]"
    printf "  PreadjustedTimingName = \"%dx%d @ %.0dHz\";\n", A, a, VerFrequency
    print "  HorPixel\t\t= " A ";"
    print "  VerPixel\t\t= " a ";"
    print "  PixelWidthRatio\t= 4;\n  PixelHeightRatio\t= 3;"
    print "  HorFrequency\t\t= " DOT_CLK / D * 1000 ";\t// kHz"
    print "  VerFrequency\t\t= " VerFrequency  ";\t// Hz"
    print "  ScanType\t\t= NONINTERLACED;\t\t// *CHECK*"
    print "  HorSyncPolarity\t= NEGATIVE;\t\t\t// *CHECK*"
    print "  VerSyncPolarity\t= NEGATIVE;\t\t\t// *CHECK*"
    print "  CharacterWidth\t= 8;"
    print "  PixelClock\t\t= " DOT_CLK ";"
    HorTotalTime = D / DOT_CLK
    print "  HorTotalTime\t\t= " HorTotalTime ";"
    print "  HorAddrTime \t\t= " A / DOT_CLK ";"
    print "  HorBlankStart\t\t= " A / DOT_CLK ";"
    print "  HorBlankTime\t\t= " D / DOT_CLK - A / DOT_CLK ";"
    print "  HorSyncStart\t\t= " B / DOT_CLK ";"
    print "  HorSyncTime\t\t= " C / DOT_CLK - B / DOT_CLK ";"
    VerTotalTime  = ( HorTotalTime * d ) / 1000
    print "  VerTotalTime\t\t= " VerTotalTime ";"
    print "  VerAddrTime\t\t= " ( HorTotalTime * a ) / 1000 ";"
    VerBlankStart = ( HorTotalTime * a ) / 1000
    print "  VerBlankStart\t\t= " VerBlankStart ";"
    print "  VerBlankTime\t\t= " VerTotalTime - VerBlankStart ";"
    print "  VerSyncStart\t\t= " ( HorTotalTime * b ) / 1000 ";"
    print "  VerSyncTime\t\t= " ( HorTotalTime * ( c - b ) ) / 1000
    print ""
  }'




  77..  PPooddzziikkoowwaanniiaa..



    Heike Claudia Zimmerer hcz@tazlwurm.bb.bawue.de za pokazanie pewnej
     niecisoci i za przysanie mi skryptu do automatyzacji.


  88..  PPrraawwaa aauuttoorrsskkiiee//lleeggaallnnoo..


  Prawa autorskie nale do  Marco Melgazzi (marco@techie.com) -
  dokument ten jest rozpowszechniany na podstawie GPL (Gnu Public
  License). Aby otrzyma kopi GPL, napisz do Free Software Foundation,
  Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

  Znaki towarowe nale do ich wacicieli. Nie ma adnych gwarancji co
  do dokadnoci czy przydatnoci informacji zawartych w tym dokumencie.


  88..11..  OOdd ttuummaacczzaa..


  Tumaczenie to jest chronione prawami autorskimi  Bartosza
  Maruszewskiego.  Dozwolone jest rozprowadzanie i dystrybucja na
  prawach takich samych jak dokument oryginalny.

  Jeli znalaze jakie race bdy ortograficzne, gramatyczne,
  skadniowe, techniczne (tych moe troch by, bo co do nazewnictwa w
  sprawach monitorw i kart graficznych jestem ignorantem) to pisz do
  mnie:

  B.Maruszewski@zsmeie.torun.pl

  Oficjaln stron tumacze HOWTO jest http://www.jtz.org.pl/

  Aktualne wersje przetumaczonych dokumentw znajduj si na teje
  stronie. Dostpne s take poprzez anonimowe ftp pod adresem
  ftp.ippt.gov.pl w katalogu /pub/Linux/JTZ/.

  Przetumaczone przeze mnie dokumenty znajduj si take na mojej
  stronie WWW. <http://www.zsmeie.torun.pl/~bart/tlumaczenie.html> S
  tam te odwoania do Polskiej Strony Tumaczeniowej.

  Kontakt z nasz grup, grup tumaczy moesz uzyska poprzez list
  dyskusyjn jtz@ippt.gov.pl. Jeli chcesz sie na ni zapisa, to wylij
  list o treci subscribe jtz Imi Nazwisko na adres
  listproc@ippt.gov.pl







