Generator znaków

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 14:21, 9 wrz 2011
Mono (Dyskusja | wkład)
(linki do kodow)
← Previous diff
Aktualna wersja
Mono (Dyskusja | wkład)
(szerokosci)
Linia 3: Linia 3:
Każdy znak zdefiniowany jest za pomocą 8 następujących po sobie bajtów i definiuje kolejne linie znaku (licząc od góry). Znaki w zestawie uporządkowane są według [[Kody ekranowe|kodów ekranowych]], a nie wg [[ATASCII|kodów ATASCII]]. Każdy znak zdefiniowany jest za pomocą 8 następujących po sobie bajtów i definiuje kolejne linie znaku (licząc od góry). Znaki w zestawie uporządkowane są według [[Kody ekranowe|kodów ekranowych]], a nie wg [[ATASCII|kodów ATASCII]].
-Sposób interpretacji piksela zależy od [[ANTIC Display List#Tryby znakowe|trybu znakowego]], w którym font zostanie użyty (liczby hex 0..F oznaczają indeks koloru piksela): +Sposób interpretacji piksela zależy od [[ANTIC Display List#Tryby znakowe|trybu znakowego]], w którym font zostanie użyty (liczby hex 0..F oznaczają indeks koloru piksela).
-* w trybach [[Graphics 0|0]], [[Graphics 1|1]] i [[Graphics 2|2]] OS oraz [[ANTIC Display List#Tryby znakowe|3 ANTICa]] pojedynczy bit odpowiada pojedynczemu pikselowi znaku,+1. W trybach [[Graphics 0|0]], [[Graphics 1|1]] i [[Graphics 2|2]] OS pojedynczy bit odpowiada pojedynczemu pikselowi znaku.
7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel 7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel
Linia 18: Linia 18:
bajt linia bajt linia
-* w trybach [[Graphics 12|12]] i [[Graphics 13|13]] OS para bitów odpowiada pojedynczemu pikselowi znaku,+2. W trybie [[ANTIC Display List#Tryby znakowe|3 ANTIC]]-a pojedynczy bit, analogicznie jak dla trybów 0, 1 i 2 OS, odpowiada pojedynczemu pikselowi znaku, ale jako że wiersz w tym trybie zajmuje 10 linii skanningowych, a definicja znaku ciągle składa się z 8 bajtów, to ANTIC generując wiersz dostawia dodatkowo 2 puste linie:
- 76 54 32 10 para bitów 0 1 2 3 piksel+* dla znaków $00-$5F na dole wiersza
- 0 .. .. .. .. 0 0 0 0 0 + 
- 1 .. .o o. .. 1 0 1 2 0 + 7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel
- 2 .. oo oo .. 2 0 3 3 0 + 0 . . . . . . . . 0 0 0 0 0 0 0 0 0
- 3 .o o. .o o. 3 1 2 1 2 + 1 . . . o o . . . 1 0 0 0 1 1 0 0 0
- 4 .o o. .o o. 4 1 2 1 2 + 2 . . o o o o . . 2 0 0 1 1 1 1 0 0
- 5 .o oo oo o. 5 1 3 3 2 + 3 . o o . . o o . 3 0 1 1 0 0 1 1 0
- 6 .o o. .o o. 6 1 2 1 2 + 4 . o o . . o o . 4 0 1 1 0 0 1 1 0
- 7 .. .. .. .. 7 0 0 0 0 + 5 . o o o o o o . 5 0 1 1 1 1 1 1 0
 + 6 . o o . . o o . 6 0 1 1 0 0 1 1 0
 + 7 . . . . . . . . 7 0 0 0 0 0 0 0 0
 + 8 0 0 0 0 0 0 0 0
 + 9 0 0 0 0 0 0 0 0
 + bajt linia
 + 
 +* dla znaków $60-$7F na górze wiersza, przy czym znak rysowany jest od drugiego bajtu definicji, a na dole dostawiane są linie według bajtów 0 i 1
 + 
 + 7 6 5 4 3 2 1 0 bit 0 1 2 3 4 5 6 7 piksel
 + 0 0 0 0 0 0 0 0 0
 + 1 0 0 0 0 0 0 0 0
 + 2 . o o . . o o . 2 0 1 1 0 0 1 1 0
 + 3 . o o . . o o . 3 0 1 1 0 0 1 1 0
 + 4 . o o . . o o . 4 0 1 1 0 0 1 1 0
 + 5 . o o . . o o . 5 0 1 1 0 0 1 1 0
 + 6 . o o . . o o . 6 0 1 1 0 0 1 1 0
 + 7 . . o o o o o . 7 0 0 1 1 1 1 1 0
 + 0 . . . . o o . . 8 0 0 0 0 1 1 0 0
 + 1 . o o o o . . . 9 0 1 1 1 1 0 0 0
 + bajt linia
 + 
 +3. W trybach [[Graphics 12|12]] i [[Graphics 13|13]] OS para bitów odpowiada pojedynczemu pikselowi znaku, który jest jednak dwukrotnie szerszy.
 + 
 + 76 54 32 10 para bitów 0 1 2 3 piksel
 + 0 .. .. .. .. 0 00 00 00 00
 + 1 .. .o o. .. 1 00 11 22 00
 + 2 .. oo oo .. 2 00 33 33 00
 + 3 .o o. .o o. 3 11 22 11 22
 + 4 .o o. .o o. 4 11 22 11 22
 + 5 .o oo oo o. 5 11 33 33 22
 + 6 .o o. .o o. 6 11 22 11 22
 + 7 .. .. .. .. 7 00 00 00 00
bajt linia bajt linia
-* po włączeniu trybu GTIA w [[Rejestry GTIA#GTIACTL|rejestrze GTIACTL]] (dane obrazu interpretowane są wtedy analogicznie, jak w trybach graficznych [[Graphics 9|9]], [[Graphics 10|10]] i [[Graphics 11|11]] OS) nibble odpowiada pojedynczemu pikselowi znaku.+4. Po włączeniu trybu GTIA w [[Rejestry GTIA#GTIACTL|rejestrze GTIACTL]] (dane obrazu interpretowane są wtedy analogicznie, jak w trybach graficznych [[Graphics 9|9]], [[Graphics 10|10]] i [[Graphics 11|11]] OS) nibble odpowiada pojedynczemu pikselowi który jest tym razem czterokrotnie szerszy.
- 7654 3210 nibble 0 1 piksel+ 7654 3210 nibble 0 1 piksel
- 0 .... .... 0 0 0 + 0 .... .... 0 0000 0000
- 1 ...o o... 1 1 8 + 1 ...o o... 1 1111 8888
- 2 ..oo oo.. 2 3 C + 2 ..oo oo.. 2 3333 CCCC
- 3 .oo. .oo. 3 6 6 + 3 .oo. .oo. 3 6666 6666
- 4 .oo. .oo. 4 6 6 + 4 .oo. .oo. 4 6666 6666
- 5 .ooo ooo. 5 7 E + 5 .ooo ooo. 5 7777 EEEE
- 6 .oo. .oo. 6 6 6 + 6 .oo. .oo. 6 6666 6666
- 7 .... .... 7 0 0 + 7 .... .... 7 0000 0000
bajt linia bajt linia
-Pełny zestaw znaków dla trybów [[Graphics 0|0]], [[Graphics 12|12]] i [[Graphics 13|13]] OS oraz [[ANTIC Display List#Tryby znakowe|3 ANTICa]] zawiera definicję 128 znaków i liczy sobie 1024 bajty (128 znaków po 8 bajtów), natomiast dla trybów [[Graphics 1|1]] i [[Graphics 2|2]] OS zawiera definicje 64 znaków i zajmuje 512 bajtów (64 znaki po 8 bajtów).+Pełny zestaw znaków zawiera:
 +* definicje 128 znaków i liczy sobie 1024 bajty (128 znaków po 8 bajtów) dla trybów [[Graphics 0|0]], [[Graphics 12|12]] i [[Graphics 13|13]] OS oraz [[ANTIC Display List#Tryby znakowe|3 ANTIC]]-a,
 +* definicje 64 znaków i zajmuje 512 bajtów (64 znaki po 8 bajtów) dla trybów [[Graphics 1|1]] i [[Graphics 2|2]] OS.
 +Starszy bajt adresu zestawu znaków jest ustalany w rejestrze [[Rejestry ANTIC-a#CHBASE|CHBASE ($D409)]] (cień [[Rejestry cienie#CHBAS|CHBAS ($2F4)]] oraz [[Rejestry cienie#CHSPTR|CHSPTR ($26B)]]) z dokładnością do 1 KB (bity 2-7) lub 512 bajtów (bity 1-7).
== Linki == == Linki ==

Aktualna wersja

Zestaw definicji czcionek wyświetlanych przez ANTIC w trybach znakowych.

Każdy znak zdefiniowany jest za pomocą 8 następujących po sobie bajtów i definiuje kolejne linie znaku (licząc od góry). Znaki w zestawie uporządkowane są według kodów ekranowych, a nie wg kodów ATASCII.

Sposób interpretacji piksela zależy od trybu znakowego, w którym font zostanie użyty (liczby hex 0..F oznaczają indeks koloru piksela).

1. W trybach 0, 1 i 2 OS pojedynczy bit odpowiada pojedynczemu pikselowi znaku.

    7 6 5 4 3 2 1 0 bit         0 1 2 3 4 5 6 7 piksel
 0  . . . . . . . .          0  0 0 0 0 0 0 0 0    
 1  . . . o o . . .          1  0 0 0 1 1 0 0 0    
 2  . . o o o o . .          2  0 0 1 1 1 1 0 0    
 3  . o o . . o o .          3  0 1 1 0 0 1 1 0    
 4  . o o . . o o .          4  0 1 1 0 0 1 1 0    
 5  . o o o o o o .          5  0 1 1 1 1 1 1 0    
 6  . o o . . o o .          6  0 1 1 0 0 1 1 0    
 7  . . . . . . . .          7  0 0 0 0 0 0 0 0    
bajt                        linia

2. W trybie 3 ANTIC-a pojedynczy bit, analogicznie jak dla trybów 0, 1 i 2 OS, odpowiada pojedynczemu pikselowi znaku, ale jako że wiersz w tym trybie zajmuje 10 linii skanningowych, a definicja znaku ciągle składa się z 8 bajtów, to ANTIC generując wiersz dostawia dodatkowo 2 puste linie:

  • dla znaków $00-$5F na dole wiersza
    7 6 5 4 3 2 1 0 bit         0 1 2 3 4 5 6 7 piksel
 0  . . . . . . . .          0  0 0 0 0 0 0 0 0    
 1  . . . o o . . .          1  0 0 0 1 1 0 0 0    
 2  . . o o o o . .          2  0 0 1 1 1 1 0 0    
 3  . o o . . o o .          3  0 1 1 0 0 1 1 0    
 4  . o o . . o o .          4  0 1 1 0 0 1 1 0    
 5  . o o o o o o .          5  0 1 1 1 1 1 1 0    
 6  . o o . . o o .          6  0 1 1 0 0 1 1 0    
 7  . . . . . . . .          7  0 0 0 0 0 0 0 0
                             8  0 0 0 0 0 0 0 0
                             9  0 0 0 0 0 0 0 0    
bajt                        linia
  • dla znaków $60-$7F na górze wiersza, przy czym znak rysowany jest od drugiego bajtu definicji, a na dole dostawiane są linie według bajtów 0 i 1
    7 6 5 4 3 2 1 0 bit         0 1 2 3 4 5 6 7 piksel
                             0  0 0 0 0 0 0 0 0    
                             1  0 0 0 0 0 0 0 0    
 2  . o o . . o o .          2  0 1 1 0 0 1 1 0    
 3  . o o . . o o .          3  0 1 1 0 0 1 1 0    
 4  . o o . . o o .          4  0 1 1 0 0 1 1 0    
 5  . o o . . o o .          5  0 1 1 0 0 1 1 0    
 6  . o o . . o o .          6  0 1 1 0 0 1 1 0    
 7  . . o o o o o .          7  0 0 1 1 1 1 1 0
 0  . . . . o o . .          8  0 0 0 0 1 1 0 0    
 1  . o o o o . . .          9  0 1 1 1 1 0 0 0    
bajt                        linia

3. W trybach 12 i 13 OS para bitów odpowiada pojedynczemu pikselowi znaku, który jest jednak dwukrotnie szerszy.

    76 54 32 10 para bitów       0  1  2  3 piksel
 0  .. .. .. ..              0  00 00 00 00
 1  .. .o o. ..              1  00 11 22 00
 2  .. oo oo ..              2  00 33 33 00
 3  .o o. .o o.              3  11 22 11 22
 4  .o o. .o o.              4  11 22 11 22
 5  .o oo oo o.              5  11 33 33 22
 6  .o o. .o o.              6  11 22 11 22
 7  .. .. .. ..              7  00 00 00 00
bajt                        linia                       

4. Po włączeniu trybu GTIA w rejestrze GTIACTL (dane obrazu interpretowane są wtedy analogicznie, jak w trybach graficznych 9, 10 i 11 OS) nibble odpowiada pojedynczemu pikselowi który jest tym razem czterokrotnie szerszy.

    7654 3210 nibble               0    1 piksel
 0  .... ....                0  0000 0000
 1  ...o o...                1  1111 8888
 2  ..oo oo..                2  3333 CCCC
 3  .oo. .oo.                3  6666 6666
 4  .oo. .oo.                4  6666 6666
 5  .ooo ooo.                5  7777 EEEE
 6  .oo. .oo.                6  6666 6666
 7  .... ....                7  0000 0000
bajt                        linia                       

Pełny zestaw znaków zawiera:

  • definicje 128 znaków i liczy sobie 1024 bajty (128 znaków po 8 bajtów) dla trybów 0, 12 i 13 OS oraz 3 ANTIC-a,
  • definicje 64 znaków i zajmuje 512 bajtów (64 znaki po 8 bajtów) dla trybów 1 i 2 OS.

Starszy bajt adresu zestawu znaków jest ustalany w rejestrze CHBASE ($D409) (cień CHBAS ($2F4) oraz CHSPTR ($26B)) z dokładnością do 1 KB (bity 2-7) lub 512 bajtów (bity 1-7).

Linki

Personal tools