  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ikkoowwaanniiaa..



  +o  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 (C) 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tuummaacczzaa..


  Tumaczenie to jest chronione prawami autorskimi (C) 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









