ZX Spectrum karakter seti - ZX Spectrum character set

Sistem yazı tipinde işlendiği gibi ZX Spectrum karakter seti (Kullanıcı Tanımlı Grafik karakterleri dahil değil).

ZX Spectrum karakter kümesi varyantı olan ASCII İngiliz kullanılan Sinclair ZX Spectrum aile bilgisayarlar. ASCII-1967'ye dayanmaktadır ancak ^, ` ve karakterleri DEL↑, £ ve © ile değiştirilmiştir. Ayrıca , ortak ve dışındaki C0 kontrol kodlarını kullanımında farklılık gösterir ve ASCII aralığının ötesinde 128 yüksek bit karakteri kullanır. ZX Spectrum'un ana yazdırılabilir karakter seti ve sistem yazı tipi de Jupiter Ace bilgisayarı tarafından kullanılmaktadır . BSCR

Yazdırılabilir karakterler

BASIC anahtar sözcükleri ve Kullanıcı Tanımlı Grafik karakterleri (varsayılan olarak AU'nun kopyaları olarak tanımlanır) dahil olmak üzere tüm yazdırılabilir kod noktalarını gösteren bir Sinclair BASIC programının ekran görüntüsü .

Standart US-ASCII, 0x20–0x7F, 0x5E kod noktasının şapka (^) yerine yukarı ok (↑) olması, 0x60'ın ciddi vurgu yerine pound işareti (£) olması dışında Spektrum karakter kümesine dahildir (`) ve 0x7F, kontrol karakteri yerine telif hakkı işaretidir (©) . 0x5E'nin ↑ olarak kullanılmasının, ASCII'nin eski 1963 sürümünde de geçerli olduğunu unutmayın. £ işareti, ASCII'nin ( ISO-646-GB ) İngiliz varyantında olduğu gibi 0x23 ile eşlenmedi ve hem pound işaretine hem de sayı işaretine (#) aynı anda izin verdi. ↑ karakteri, Spectrum'un BASIC'indeki üs alma operatörüdür , tıpkı ASCII-1967'ye kıyasla yerini aldığı ^ gibi, BASIC'in diğer birçok lehçesinde ve diğer programlama dillerinde üs alma için kullanılır. DEL

0x7F'nin ötesinde, Spektrum karakter seti, özel amaçlar için 0x80–0xFF yüksek bit aralığını kullanır. 0x80–0x8F , ZX80 karakter seti ve ZX81 karakter seti (diğer konumlarda) ile aynı 2×2 blok grafik karakterlerini içerir , ayrıca Blok Öğeleri Unicode bloğunda da mevcuttur . Ancak ZX Spectrum'un standart karakter seti, ZX80/81 %50 titrek 1×2 blok grafik karakterlerini içermez . 0x90–0xA4 kod noktaları, orijinal olarak 21 Kullanıcı Tanımlı Grafik (UDG) karakteri içerir ve 0xA5–0xFF, tek kod noktaları olarak belirtilmiş BASIC anahtar sözcüklerini içerir. Daha sonra tanıtılan 128 BASIC modunda, bu, 0xA2 ile biten 19 UDG karakteri ve ardından iki yeni belirteç ve . Kod 0xC7-0xC9 iki karakterlik operatörleri işaret , ve benzer şekilde tek bir kod noktalarını içine simgeleþtirilmiþ. Bu belirteçler , 0xF6 oluşturan bir satırın başında (yani komut modunda) tek tuşa basılarak girilmesine benzer bir BASIC komutuna izin verir . Bu, ekranda tam anahtar sözcük olarak görüntülenir, ancak yalnızca tek bir bayt belirteci depolanır, bu nedenle yalnızca tek baytın yorumlayıcı tarafından ayrıştırılması veya teyp gibi harici depolamaya kaydedilmesi/yüklenmesi gerekir. SPECTRUMPLAY<=>=<>PRINTPPRINT

UDG Spectrum olmayan tüm karakterler Unicode ile eşlenebilir . ASCII-1967 olmayan üç karakter ↑, £ ve © U+2191, U+00A3 ve U+00A9'dadır. 2×2 blok grafik karakterleri , U+2580–U+259F'deki Blok Öğeleri bloğundadır, ancak ikincisi için yazı tipi desteği evrensel değildir.

UDG karakterlerinin şekli bir RAM bellek alanına eşlenir ve AU karakterlerinin kopyalarına başlatılır, ancak örneğin BASIC komutu kullanılarak keyfi olarak yeniden tanımlanabilir POKE. Sistem yazı tipindeki tüm karakterler gibi, 8 baytta saklanan 8×8 piksel ızgara kullanırlar. Bunları yeniden tanımlamak sonraki PRINTifadelerdeki görünümlerini değiştirir ancak ekranda önceden çizilmiş olan UDG karakterlerini değiştirmez. Bir UDG karakterinin tanımının konumu USR, argüman olarak karakter ile BASIC işleviyle belirlenebilir , örneğin USR "A"ilki için. Varsayılan olarak bu, 48K Spektrum için 65368 (0xFF58) ila 65535 (0xFFFF) bellek adreslerinde son 168 (21×8) bayt RAM'e işaret eder. Konum, 23675/6 (0x5C7B/C) bellek adresinde bulunabilen ve değiştirilebilen sistem değişkeni UDG tarafından belirtilir. TK90X , ZX Spectrum bir Brezilyalı klonu işlevselliği ile birlikte bu UDG karakterler, Portekizce kullanılan aksanlı harflerle sonra önceden yüklemek için grafiksel düzenlemeye bir ROM uygulama dahil. (Bunun için TK90X, sırasıyla "trace" ve "udg" olmak üzere 0 ve 1 kodlarında iki ekstra Temel komut tanımladı)

32 (boşluk) ila 127 (telif hakkı) arasındaki ana sistem yazı tipinin tanımına, 23606/7 (0x5C36/7) bellek adresinde bulunabilen CHARS sistem değişkeni tarafından başvurulur. Boşluk karakterinin ilk baytından 256 bayt daha düşük olarak tanımlanır ve bir karakteri CHARS+8× kod noktasına yerleştirme formülünü basitleştirir . CHARS değeri varsayılan olarak 15360 (0x3C00) değerine ayarlanır ve sistem yazı tipi Spectrum ROM'unun sonunda 15616 (0x3D00) ila 16383 (0x3FFF) adresindedir. Tüm alternatif yazı tipleri RAM'e yüklenebilir ve CHARS değişkeni buna göre yeniden işaretlenebilir.

Kontrol kodları

Kontrol kodları alanında (C0 aralığı), Spectrum çoğunlukla ön plan ve arka plan rengini kontrol etmek için MÜREKKEP ve KAĞIT gibi tescilli kontrolleri kullanır. Ancak, ortak BSve CRkod noktaları ASCII'deki ile aynıdır. İmleç aşağı (0x0A, ASCII Satır Besleme), OVER 1 (şeffaf üst baskı) ile yazdırılan 32 boşluk ile simüle edilebilir ve imleç yukarı 0x0B (ASCII Dikey Tablo) 32 geri boşluk ile simüle edilebilir. Sistem ROM'unda, 0x09'da (cf ASCII Yatay Tablolama) sağ imlecin çalışmasını engelleyen bir hata var.

Kontrol kodu 0x0E, metin işlemeyi hızlandırmak için bir kayan noktalı sayının ardından geldiğini belirtmek için kullanılır. Bir Sinclair BASIC programında sayısal sabitler, ASCII ve ardından bir 0x0E bayt ve 5 baytlık ikili kayan nokta gösterimi olarak depolanır. Bir BASIC programı listelenirken yalnızca ASCII kısmı kullanılır, ancak çalışma zamanında yalnızca ikili gösterim kullanılır. Bazı Spektrum programları, sayıları gizlemek için bundan yararlanırken, diğerleri bunu bellekten tasarruf etmek için yaptı. Örneğin, görüntülenen bir BASIC satırı, GO TO 101 ve 0 rakamları için ASCII karakterlerini, ardından bir 0x0E baytı ve 10 yerine 100'ün kayan nokta gösterimini içerebilir. Bu programı listeleyen herkes 10 sayısını gördü, ancak program çalıştırıldığında atladı. 100. satıra kadar.

tanımsız kodlar

0x00–0x05, 0x07, 0x0A–0x0C, 0x0F ve 0x17–0x1F aralıkları tanımsızdır. Çoğu durumda, ekrana yazdırılırsa bir soru işareti oluştururlar. Ancak, belirli kontrol kodlarıyla bağlantılı olarak gerçek sayısal değerlerini temsil etmek için kullanılabilirler: örneğin, 0x10 + 0x07, mürekkebin (ön plan metni) rengini 7 numaralı renk (beyaz) olarak ayarlar.

Karakter seti

Spektrum Karakter Seti
0_ tuşa basma 0_ karakter 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ bir_ B_ C_ D_ E_ F_
_0 MÜREKKEP   0 @ P £ p ZXSpectrum80.svg (A) (S) VAL USR BİÇİM LPRINT LİSTE
_1 KAĞIT ! 1 bir S bir q ZXSpectrum81.svg (B) (R) UZUNLUK STR$ HAREKET LİSTE İZİN VERMEK
_2 FLAŞ " 2 B $ b r ZXSpectrum82.svg (C) (S) GÜNAH CHR$ SİL DUR DURAKLAT
_3 PARLAK # 3 C S c s ZXSpectrum83.svg (D) (T) çünkü DEĞİL AÇIK # OKUYUN SONRAKİ
_4 gerçek video TERS $ 4 D T d t ZXSpectrum84.svg (E) (U) TAN ÇÖP KUTUSU KAPAT # VERİ POKE
_5 yeni video BİTMİŞ % 5 E sen e sen ZXSpectrum85.svg (F) RND ASN VEYA BİRLEŞTİRMEK ONARMAK YAZDIR
_6 büyük harf kilidi virgül AT & 6 F V f v ZXSpectrum86.svg (G) İNKEY$ ACS VE DOĞRULAYIN YENİ ARSA
_7 Düzenle SEKME ' 7 G W g w ZXSpectrum87.svg (H) PI ATN <= BİP SINIR ÇALIŞTIRMAK
_8 ayrıldı ayrıldı ( 8 H X h x ZXSpectrum88.svg (BEN) FN LN >= DAİRE DEVAM ET KAYIT ETMEK
_9 sağ sağ ) 9 ben Y ben y ZXSpectrum89.svg (J) NOKTA tecrübe <> MÜREKKEP DİM RANDOMİZE
_A aşağı * : J Z j z ZXSpectrum8a.svg (K) EKRAN$ INT HAT KAĞIT REM EĞER
_B yukarı + ; K [ k { ZXSpectrum8b.svg (L) ATTR kare SONRA FLAŞ İÇİN CLS
_C silmek , < L \ ben | ZXSpectrum8c.svg (M) AT SGN KİME PARLAK GİT ÇİZMEK
_D giriş giriş - = M ] m } ZXSpectrum8d.svg (N) SEKME ABS ADIM TERS ALT GİT AÇIK
_E uzatmak numara . > N n ~ ZXSpectrum8e.svg (Ö) VAL$ DİKİZLEMEK DEF FN BİTMİŞ GİRİŞ DÖNÜŞ
_F grafik / ? Ö _ Ö © ZXSpectrum8f.svg (P) KOD İÇİNDE KEDİ DIŞARI YÜK KOPYALA

Ayrıca bakınız

Notlar

Referanslar

Dış bağlantılar