
 Ok , hier der Aufbau von PCX-Dateien:

 HEADER:

 Offset   Lnge     Inhalt
  0        1        Format Kennung 0ah
  1        1        Version (5 fr Version 3.0)
  2        1        RLE-KOmpression verwendet ?? (1=JA,0=NEIN)
  3        1        Bits pro Pixel
  4        4        Koordinaten der linken oberern Ecke als Words (X/Y)
  8        4        Koordinaten der rechten unteren Ecke (X/Y)
  12       2        horizontale Auflsung in DPI (meist Bildbreite)
  14       2        vertikale Auflsung in DPI (meist Bilkdhoehe)
  16       48       Palette (16 Farben, nur fuer 16Farb-Bilder wichtig)
  64       1        ----
  65       1        Planes (bei 256 Farben 1 Plane)
  66       2        Bytes pro Bildzeile, gerade aufgerundet
  68       2        Art der Palette(1=Farbe oder s/w, 2= Graustufen)
  70       58       ??? meist 0

So, das war der Header, 128 Byte lang und irgendwie aufschlussreich !!

DIE DATEN:
=========

 So, danach kommen unmittelbar die Bilddaten a) RLE-Kompression
 b) nur so
 Wieviel Byte du lesen musst zeigt ergibt sich aus Bildhoehe und Byte pro   
 Zeile.

a)
Wenn Byte 3 im Header 1 ist dann machst Du das so:
  1- Byte lesen
  2- Wenn oberen beiden Bits gesetzt (and 192=192) dann 3 sonst 7
  3- Byte -192 = ANZAHL
  4- Byte lesen = Value
  5- Anzahl mal Value in Bildspeicher kopieren
  6- gehe zu 1
  7- Byte in Bildspeicher kopieren
  8- gehe zu 1

b) Daten direkt in den Bildschirmspeicher...

Die Palette:
============

Nach den Bilddaten kommt Palette, allerdings ist vor ihr ein  
Erkennungsbyte ! Also man liest das Byte ist es 0Ch (=12) dann ist ne  
Palette da. Dann folgen 768 Byte Palette , die Du mit der Prozedur 12h des  
Interrupts 10h setzen kannst , ungefaehr so:

  768 in BUFFER lesen
  MOV AX,1012h
  MOV bx,0
  mov CX,256
  MOV DX,SEG BUFFER
  MOV ES,DX
  MOV DX, OFFSET BUFFER
  INT 10h


Wenn Du Dateien im RLE-Verfahren abspeichern willst, dann musst Du bei  
Wiederholungen derselben Zeichen bis Maximal 255-192=63 Wiederholungen  
zaehlen , dann das Byte schreiben. Das Problem dabei ist, dass alle Werte  
ueber 191 unmittelbat codiert werden muessen:

BSP:
    DATA:
 H A A A A A A A L L O   A  

 72 65 65 65 65 65 65 65 76 76 79 219 65 219 219 219

-> 72 199 65 76 76 79 193 219 65 195 219
   72   7*A    76  79  1*219  65 3*219

Naja, das war's
