429 lines
13 KiB
Plaintext
429 lines
13 KiB
Plaintext
# This Source Code Form is subject to the terms of the Mozilla Public
|
|||
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||
|
|
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
||
|
|
#
|
||
|
|
# VGA metin kipi sürücüsü: 80×25, imleç, kaydırma, sayı yazımı, UTF-8 & Türkçe font.
|
||
|
|
|
||
|
|
VGA = 0xB8000
|
||
|
|
GENISLIK = 80
|
||
|
|
YUKSEKLIK = 25
|
||
|
|
|
||
|
|
fonksiyon font_cizgi(kod, satir, bayt):
|
||
|
|
bellek_yaz8(0xA0000 + kod * 32 + satir, bayt)
|
||
|
|
|
||
|
|
fonksiyon glif_temizle(kod):
|
||
|
|
dongu s icinde 0..31:
|
||
|
|
font_cizgi(kod, s, 0)
|
||
|
|
|
||
|
|
fonksiyon turkce_font_kur():
|
||
|
|
# VGA Plane 2 (yazı tipi belleği) erişimini aç
|
||
|
|
port_yaz8(0x3C4, 0x02)
|
||
|
|
port_yaz8(0x3C5, 0x04)
|
||
|
|
port_yaz8(0x3C4, 0x04)
|
||
|
|
port_yaz8(0x3C5, 0x07)
|
||
|
|
|
||
|
|
port_yaz8(0x3CE, 0x05)
|
||
|
|
port_yaz8(0x3CF, 0x00)
|
||
|
|
port_yaz8(0x3CE, 0x06)
|
||
|
|
port_yaz8(0x3CF, 0x00)
|
||
|
|
|
||
|
|
# 1. ı (0x8D - küçük noktasız ı, otantik IBM CP857)
|
||
|
|
glif_temizle(0x8D)
|
||
|
|
font_cizgi(0x8D, 5, 0x38)
|
||
|
|
font_cizgi(0x8D, 6, 0x18)
|
||
|
|
font_cizgi(0x8D, 7, 0x18)
|
||
|
|
font_cizgi(0x8D, 8, 0x18)
|
||
|
|
font_cizgi(0x8D, 9, 0x18)
|
||
|
|
font_cizgi(0x8D, 10, 0x18)
|
||
|
|
font_cizgi(0x8D, 11, 0x3C)
|
||
|
|
|
||
|
|
# 2. İ (0x98 - büyük noktalı İ, otantik IBM CP857)
|
||
|
|
glif_temizle(0x98)
|
||
|
|
font_cizgi(0x98, 1, 0x18)
|
||
|
|
font_cizgi(0x98, 3, 0x3C)
|
||
|
|
font_cizgi(0x98, 4, 0x18)
|
||
|
|
font_cizgi(0x98, 5, 0x18)
|
||
|
|
font_cizgi(0x98, 6, 0x18)
|
||
|
|
font_cizgi(0x98, 7, 0x18)
|
||
|
|
font_cizgi(0x98, 8, 0x18)
|
||
|
|
font_cizgi(0x98, 9, 0x18)
|
||
|
|
font_cizgi(0x98, 10, 0x18)
|
||
|
|
font_cizgi(0x98, 11, 0x3C)
|
||
|
|
|
||
|
|
# 3. ş (0x9F - küçük ş, otantik IBM CP857)
|
||
|
|
glif_temizle(0x9F)
|
||
|
|
font_cizgi(0x9F, 5, 0x7C)
|
||
|
|
font_cizgi(0x9F, 6, 0xC6)
|
||
|
|
font_cizgi(0x9F, 7, 0x60)
|
||
|
|
font_cizgi(0x9F, 8, 0x38)
|
||
|
|
font_cizgi(0x9F, 9, 0x0C)
|
||
|
|
font_cizgi(0x9F, 10, 0xC6)
|
||
|
|
font_cizgi(0x9F, 11, 0x7C)
|
||
|
|
font_cizgi(0x9F, 12, 0x18)
|
||
|
|
font_cizgi(0x9F, 13, 0x30)
|
||
|
|
|
||
|
|
# 4. Ş (0x9E - büyük Ş, otantik IBM CP857)
|
||
|
|
glif_temizle(0x9E)
|
||
|
|
font_cizgi(0x9E, 2, 0x7C)
|
||
|
|
font_cizgi(0x9E, 3, 0xC6)
|
||
|
|
font_cizgi(0x9E, 4, 0xC6)
|
||
|
|
font_cizgi(0x9E, 5, 0x60)
|
||
|
|
font_cizgi(0x9E, 6, 0x38)
|
||
|
|
font_cizgi(0x9E, 7, 0x0C)
|
||
|
|
font_cizgi(0x9E, 8, 0x06)
|
||
|
|
font_cizgi(0x9E, 9, 0xC6)
|
||
|
|
font_cizgi(0x9E, 10, 0xC6)
|
||
|
|
font_cizgi(0x9E, 11, 0x7C)
|
||
|
|
font_cizgi(0x9E, 12, 0x18)
|
||
|
|
font_cizgi(0x9E, 13, 0x30)
|
||
|
|
|
||
|
|
# 5. ğ (0xA7 - küçük yumuşak ğ, otantik IBM CP857)
|
||
|
|
glif_temizle(0xA7)
|
||
|
|
font_cizgi(0xA7, 2, 0xCC)
|
||
|
|
font_cizgi(0xA7, 3, 0x78)
|
||
|
|
font_cizgi(0xA7, 5, 0x76)
|
||
|
|
font_cizgi(0xA7, 6, 0xCC)
|
||
|
|
font_cizgi(0xA7, 7, 0xCC)
|
||
|
|
font_cizgi(0xA7, 8, 0xCC)
|
||
|
|
font_cizgi(0xA7, 9, 0xCC)
|
||
|
|
font_cizgi(0xA7, 10, 0xCC)
|
||
|
|
font_cizgi(0xA7, 11, 0x7C)
|
||
|
|
font_cizgi(0xA7, 12, 0x0C)
|
||
|
|
font_cizgi(0xA7, 13, 0xCC)
|
||
|
|
font_cizgi(0xA7, 14, 0x78)
|
||
|
|
|
||
|
|
# 6. Ğ (0xA6 - büyük yumuşak Ğ, otantik IBM CP857)
|
||
|
|
glif_temizle(0xA6)
|
||
|
|
font_cizgi(0xA6, 1, 0x66)
|
||
|
|
font_cizgi(0xA6, 2, 0x7E)
|
||
|
|
font_cizgi(0xA6, 3, 0x3C)
|
||
|
|
font_cizgi(0xA6, 4, 0x66)
|
||
|
|
font_cizgi(0xA6, 5, 0xC2)
|
||
|
|
font_cizgi(0xA6, 6, 0xC0)
|
||
|
|
font_cizgi(0xA6, 7, 0xC0)
|
||
|
|
font_cizgi(0xA6, 8, 0xDE)
|
||
|
|
font_cizgi(0xA6, 9, 0xC6)
|
||
|
|
font_cizgi(0xA6, 10, 0x6E)
|
||
|
|
font_cizgi(0xA6, 11, 0x3A)
|
||
|
|
|
||
|
|
# 7. ç (0x87 - küçük ç, otantik IBM CP857)
|
||
|
|
glif_temizle(0x87)
|
||
|
|
font_cizgi(0x87, 5, 0x7C)
|
||
|
|
font_cizgi(0x87, 6, 0xC6)
|
||
|
|
font_cizgi(0x87, 7, 0xC0)
|
||
|
|
font_cizgi(0x87, 8, 0xC0)
|
||
|
|
font_cizgi(0x87, 9, 0xC0)
|
||
|
|
font_cizgi(0x87, 10, 0xC6)
|
||
|
|
font_cizgi(0x87, 11, 0x7C)
|
||
|
|
font_cizgi(0x87, 12, 0x18)
|
||
|
|
font_cizgi(0x87, 13, 0x30)
|
||
|
|
|
||
|
|
# 8. Ç (0x80 - büyük Ç, otantik IBM CP857)
|
||
|
|
glif_temizle(0x80)
|
||
|
|
font_cizgi(0x80, 2, 0x3C)
|
||
|
|
font_cizgi(0x80, 3, 0x66)
|
||
|
|
font_cizgi(0x80, 4, 0xC2)
|
||
|
|
font_cizgi(0x80, 5, 0xC0)
|
||
|
|
font_cizgi(0x80, 6, 0xC0)
|
||
|
|
font_cizgi(0x80, 7, 0xC0)
|
||
|
|
font_cizgi(0x80, 8, 0xC0)
|
||
|
|
font_cizgi(0x80, 9, 0xC2)
|
||
|
|
font_cizgi(0x80, 10, 0x66)
|
||
|
|
font_cizgi(0x80, 11, 0x3C)
|
||
|
|
font_cizgi(0x80, 12, 0x18)
|
||
|
|
font_cizgi(0x80, 13, 0x30)
|
||
|
|
|
||
|
|
# 9. ö (0x94 - küçük ö, otantik IBM CP857)
|
||
|
|
glif_temizle(0x94)
|
||
|
|
font_cizgi(0x94, 2, 0xC6)
|
||
|
|
font_cizgi(0x94, 5, 0x7C)
|
||
|
|
font_cizgi(0x94, 6, 0xC6)
|
||
|
|
font_cizgi(0x94, 7, 0xC6)
|
||
|
|
font_cizgi(0x94, 8, 0xC6)
|
||
|
|
font_cizgi(0x94, 9, 0xC6)
|
||
|
|
font_cizgi(0x94, 10, 0xC6)
|
||
|
|
font_cizgi(0x94, 11, 0x7C)
|
||
|
|
|
||
|
|
# 10. Ö (0x99 - büyük Ö, otantik IBM CP857)
|
||
|
|
glif_temizle(0x99)
|
||
|
|
font_cizgi(0x99, 1, 0xC6)
|
||
|
|
font_cizgi(0x99, 3, 0x7C)
|
||
|
|
font_cizgi(0x99, 4, 0xC6)
|
||
|
|
font_cizgi(0x99, 5, 0xC6)
|
||
|
|
font_cizgi(0x99, 6, 0xC6)
|
||
|
|
font_cizgi(0x99, 7, 0xC6)
|
||
|
|
font_cizgi(0x99, 8, 0xC6)
|
||
|
|
font_cizgi(0x99, 9, 0xC6)
|
||
|
|
font_cizgi(0x99, 10, 0xC6)
|
||
|
|
font_cizgi(0x99, 11, 0x7C)
|
||
|
|
|
||
|
|
# 11. ü (0x81 - küçük ü, otantik IBM CP857)
|
||
|
|
glif_temizle(0x81)
|
||
|
|
font_cizgi(0x81, 2, 0xCC)
|
||
|
|
font_cizgi(0x81, 5, 0xCC)
|
||
|
|
font_cizgi(0x81, 6, 0xCC)
|
||
|
|
font_cizgi(0x81, 7, 0xCC)
|
||
|
|
font_cizgi(0x81, 8, 0xCC)
|
||
|
|
font_cizgi(0x81, 9, 0xCC)
|
||
|
|
font_cizgi(0x81, 10, 0xCC)
|
||
|
|
font_cizgi(0x81, 11, 0x76)
|
||
|
|
|
||
|
|
# 12. Ü (0x9A - büyük Ü, otantik IBM CP857)
|
||
|
|
glif_temizle(0x9A)
|
||
|
|
font_cizgi(0x9A, 1, 0xC6)
|
||
|
|
font_cizgi(0x9A, 3, 0xC6)
|
||
|
|
font_cizgi(0x9A, 4, 0xC6)
|
||
|
|
font_cizgi(0x9A, 5, 0xC6)
|
||
|
|
font_cizgi(0x9A, 6, 0xC6)
|
||
|
|
font_cizgi(0x9A, 7, 0xC6)
|
||
|
|
font_cizgi(0x9A, 8, 0xC6)
|
||
|
|
font_cizgi(0x9A, 9, 0xC6)
|
||
|
|
font_cizgi(0x9A, 10, 0xC6)
|
||
|
|
font_cizgi(0x9A, 11, 0x7C)
|
||
|
|
|
||
|
|
# Standart metin kipine geri dön
|
||
|
|
port_yaz8(0x3C4, 0x02)
|
||
|
|
port_yaz8(0x3C5, 0x03)
|
||
|
|
port_yaz8(0x3C4, 0x04)
|
||
|
|
port_yaz8(0x3C5, 0x03)
|
||
|
|
|
||
|
|
port_yaz8(0x3CE, 0x04)
|
||
|
|
port_yaz8(0x3CF, 0x00)
|
||
|
|
port_yaz8(0x3CE, 0x05)
|
||
|
|
port_yaz8(0x3CF, 0x10)
|
||
|
|
port_yaz8(0x3CE, 0x06)
|
||
|
|
port_yaz8(0x3CF, 0x0E)
|
||
|
|
|
||
|
|
fonksiyon hucre(satir, sutun, karakter, renk):
|
||
|
|
bellek_yaz16(VGA + (satir * GENISLIK + sutun) * 2, renk * 256 + karakter)
|
||
|
|
|
||
|
|
fonksiyon imleci_tasi(satir, sutun):
|
||
|
|
konum = satir * GENISLIK + sutun
|
||
|
|
port_yaz8(0x3D4, 0x0F)
|
||
|
|
port_yaz8(0x3D5, bit_ve(konum, 0xFF))
|
||
|
|
port_yaz8(0x3D4, 0x0E)
|
||
|
|
port_yaz8(0x3D5, bit_ve(saga_kaydir(konum, 8), 0xFF))
|
||
|
|
|
||
|
|
fonksiyon konumlandir(satir, sutun):
|
||
|
|
bellek_yaz64(durum.SATIR, satir)
|
||
|
|
bellek_yaz64(durum.SUTUN, sutun)
|
||
|
|
imleci_tasi(satir, sutun)
|
||
|
|
|
||
|
|
fonksiyon temizle(renk):
|
||
|
|
dongu i icinde 0..GENISLIK * YUKSEKLIK - 1:
|
||
|
|
bellek_yaz16(VGA + i * 2, renk * 256 + 0x20)
|
||
|
|
konumlandir(0, 0)
|
||
|
|
bellek_yaz64(durum.RENK, renk)
|
||
|
|
|
||
|
|
fonksiyon renk(r):
|
||
|
|
bellek_yaz64(durum.RENK, r)
|
||
|
|
|
||
|
|
fonksiyon kaydir():
|
||
|
|
dongu i icinde 0..GENISLIK * (YUKSEKLIK - 1) - 1:
|
||
|
|
bellek_yaz16(VGA + i * 2, bellek_oku16(VGA + (i + GENISLIK) * 2))
|
||
|
|
r = bellek_oku64(durum.RENK)
|
||
|
|
dongu s icinde 0..GENISLIK - 1:
|
||
|
|
hucre(YUKSEKLIK - 1, s, 0x20, r)
|
||
|
|
|
||
|
|
fonksiyon alt_satir():
|
||
|
|
bellek_yaz64(durum.SUTUN, 0)
|
||
|
|
satir = bellek_oku64(durum.SATIR) + 1
|
||
|
|
eger satir >= YUKSEKLIK:
|
||
|
|
kaydir()
|
||
|
|
satir = YUKSEKLIK - 1
|
||
|
|
bellek_yaz64(durum.SATIR, satir)
|
||
|
|
|
||
|
|
fonksiyon karakter(c):
|
||
|
|
eger c == 0x0A:
|
||
|
|
alt_satir()
|
||
|
|
degilse:
|
||
|
|
hucre(bellek_oku64(durum.SATIR), bellek_oku64(durum.SUTUN), c, bellek_oku64(durum.RENK))
|
||
|
|
sutun = bellek_oku64(durum.SUTUN) + 1
|
||
|
|
bellek_yaz64(durum.SUTUN, sutun)
|
||
|
|
eger sutun >= GENISLIK:
|
||
|
|
alt_satir()
|
||
|
|
imleci_tasi(bellek_oku64(durum.SATIR), bellek_oku64(durum.SUTUN))
|
||
|
|
|
||
|
|
fonksiyon geri_sil():
|
||
|
|
sutun = bellek_oku64(durum.SUTUN)
|
||
|
|
eger sutun > 0:
|
||
|
|
bellek_yaz64(durum.SUTUN, sutun - 1)
|
||
|
|
hucre(bellek_oku64(durum.SATIR), sutun - 1, 0x20, bellek_oku64(durum.RENK))
|
||
|
|
imleci_tasi(bellek_oku64(durum.SATIR), sutun - 1)
|
||
|
|
|
||
|
|
fonksiyon turkce_kod(b, b2):
|
||
|
|
eger b == 0xC3:
|
||
|
|
eger b2 == 0xA7: don 0x87 # ç
|
||
|
|
eger b2 == 0x87: don 0x80 # Ç
|
||
|
|
eger b2 == 0xB6: don 0x94 # ö
|
||
|
|
eger b2 == 0x96: don 0x99 # Ö
|
||
|
|
eger b2 == 0xBC: don 0x81 # ü
|
||
|
|
eger b2 == 0x9C: don 0x9A # Ü
|
||
|
|
degilse eger b == 0xC4:
|
||
|
|
eger b2 == 0x9F: don 0xA7 # ğ
|
||
|
|
eger b2 == 0x9E: don 0xA6 # Ğ
|
||
|
|
eger b2 == 0xB1: don 0x8D # ı
|
||
|
|
eger b2 == 0xB0: don 0x98 # İ
|
||
|
|
degilse eger b == 0xC5:
|
||
|
|
eger b2 == 0x9F: don 0x9F # ş
|
||
|
|
eger b2 == 0x9E: don 0x9E # Ş
|
||
|
|
don 0
|
||
|
|
|
||
|
|
fonksiyon utf8_uc_bayt(b1, b2, b3):
|
||
|
|
eger b1 == 0xE2:
|
||
|
|
eger b2 == 0x94:
|
||
|
|
eger b3 == 0x80: don 0xC4 # ─ (tek yatay çizgi)
|
||
|
|
eger b3 == 0x82: don 0xB3 # │ (tek dikey çizgi)
|
||
|
|
eger b3 == 0x8C: don 0xDA # ┌
|
||
|
|
eger b3 == 0x90: don 0xBF # ┐
|
||
|
|
eger b3 == 0x94: don 0xC0 # └
|
||
|
|
eger b3 == 0x98: don 0xD9 # ┘
|
||
|
|
eger b3 == 0x9C: don 0xC3 # ├
|
||
|
|
eger b3 == 0xA4: don 0xB4 # ┤
|
||
|
|
eger b3 == 0xAC: don 0xC2 # ┬
|
||
|
|
eger b3 == 0xB4: don 0xC1 # ┴
|
||
|
|
eger b3 == 0xBC: don 0xC5 # ┼
|
||
|
|
degilse eger b2 == 0x95:
|
||
|
|
eger b3 == 0x90: don 0xCD # ═ (çift yatay çizgi)
|
||
|
|
eger b3 == 0x91: don 0xBA # ║ (çift dikey çizgi)
|
||
|
|
eger b3 == 0x94: don 0xC9 # ╔ (çift sol üst köşe)
|
||
|
|
eger b3 == 0x97: don 0xBB # ╗ (çift sağ üst köşe)
|
||
|
|
eger b3 == 0x9A: don 0xC8 # ╚ (çift sol alt köşe)
|
||
|
|
eger b3 == 0x9D: don 0xBC # ╝ (çift sağ alt köşe)
|
||
|
|
eger b3 == 0xA6: don 0xCB # ╦ (çift üst birleşim)
|
||
|
|
eger b3 == 0xA9: don 0xCA # ╩ (çift alt birleşim)
|
||
|
|
eger b3 == 0xAC: don 0xCE # ╬ (çift artı)
|
||
|
|
degilse eger b2 == 0x96:
|
||
|
|
eger b3 == 0x88: don 0xDB # █ (dolu blok)
|
||
|
|
eger b3 == 0x91: don 0xB0 # ░ (açık gölge)
|
||
|
|
eger b3 == 0x92: don 0xB1 # ▒ (orta gölge)
|
||
|
|
eger b3 == 0x93: don 0xB2 # ▓ (koyu gölge)
|
||
|
|
degilse eger b2 == 0x80:
|
||
|
|
eger b3 == 0x93: don 0x2D # – (en dash)
|
||
|
|
eger b3 == 0x94: don 0xC4 # — (em dash)
|
||
|
|
eger b3 == 0x98 veya b3 == 0x99: don 0x27 # ’ '
|
||
|
|
eger b3 == 0x9C veya b3 == 0x9D: don 0x22 # “ ”
|
||
|
|
eger b3 == 0xA2: don 0x07 # • (madde imi)
|
||
|
|
don 0
|
||
|
|
|
||
|
|
fonksiyon glif(cp):
|
||
|
|
# Unicode kod noktası → VGA glif kodu (ASCII + Türkçe harfler, CP857 yerleşimi).
|
||
|
|
eger cp < 0x80:
|
||
|
|
don cp
|
||
|
|
eger cp == 0xE7: don 0x87 # ç
|
||
|
|
eger cp == 0xC7: don 0x80 # Ç
|
||
|
|
eger cp == 0xF6: don 0x94 # ö
|
||
|
|
eger cp == 0xD6: don 0x99 # Ö
|
||
|
|
eger cp == 0xFC: don 0x81 # ü
|
||
|
|
eger cp == 0xDC: don 0x9A # Ü
|
||
|
|
eger cp == 0x11F: don 0xA7 # ğ
|
||
|
|
eger cp == 0x11E: don 0xA6 # Ğ
|
||
|
|
eger cp == 0x131: don 0x8D # ı
|
||
|
|
eger cp == 0x130: don 0x98 # İ
|
||
|
|
eger cp == 0x15F: don 0x9F # ş
|
||
|
|
eger cp == 0x15E: don 0x9E # Ş
|
||
|
|
don 0x3F # ?
|
||
|
|
|
||
|
|
fonksiyon kod_noktasi(cp):
|
||
|
|
# Klavyeden gelen kod noktasını ekrana yazar.
|
||
|
|
karakter(glif(cp))
|
||
|
|
|
||
|
|
fonksiyon yaz(m):
|
||
|
|
i = 0
|
||
|
|
iken bayt(m, i) != 0:
|
||
|
|
b = bayt(m, i)
|
||
|
|
eger b < 0x80:
|
||
|
|
karakter(b)
|
||
|
|
i = i + 1
|
||
|
|
degilse eger b >= 0xC0 ve b < 0xE0:
|
||
|
|
b2 = bayt(m, i + 1)
|
||
|
|
eger b2 == 0:
|
||
|
|
don 0
|
||
|
|
k = turkce_kod(b, b2)
|
||
|
|
eger k != 0:
|
||
|
|
karakter(k)
|
||
|
|
degilse:
|
||
|
|
karakter(0x3F)
|
||
|
|
i = i + 2
|
||
|
|
degilse eger b >= 0xE0 ve b < 0xF0:
|
||
|
|
b2 = bayt(m, i + 1)
|
||
|
|
eger b2 == 0:
|
||
|
|
don 0
|
||
|
|
b3 = bayt(m, i + 2)
|
||
|
|
eger b3 == 0:
|
||
|
|
don 0
|
||
|
|
k = utf8_uc_bayt(b, b2, b3)
|
||
|
|
eger k != 0:
|
||
|
|
karakter(k)
|
||
|
|
degilse:
|
||
|
|
karakter(0x3F)
|
||
|
|
i = i + 3
|
||
|
|
degilse:
|
||
|
|
# 4 baytlık UTF-8 veya bilinmeyen sekans
|
||
|
|
karakter(0x3F)
|
||
|
|
i = i + 1
|
||
|
|
|
||
|
|
fonksiyon satir(m):
|
||
|
|
yaz(m)
|
||
|
|
karakter(0x0A)
|
||
|
|
|
||
|
|
fonksiyon yaz_konum(satir, sutun, m, r):
|
||
|
|
eski_satir = bellek_oku64(durum.SATIR)
|
||
|
|
eski_sutun = bellek_oku64(durum.SUTUN)
|
||
|
|
eski_renk = bellek_oku64(durum.RENK)
|
||
|
|
konumlandir(satir, sutun)
|
||
|
|
renk(r)
|
||
|
|
yaz(m)
|
||
|
|
konumlandir(eski_satir, eski_sutun)
|
||
|
|
renk(eski_renk)
|
||
|
|
|
||
|
|
fonksiyon satir_doldur(satir, ch, r):
|
||
|
|
dongu col icinde 0..GENISLIK - 1:
|
||
|
|
hucre(satir, col, ch, r)
|
||
|
|
|
||
|
|
fonksiyon yatay_cizgi(satir, sol, gen, r):
|
||
|
|
dongu c icinde sol..sol + gen - 1:
|
||
|
|
hucre(satir, c, 0xC4, r)
|
||
|
|
|
||
|
|
fonksiyon cerceve(ust, sol, gen, yuk, r):
|
||
|
|
# Çift çizgili donanımsal VGA çerçeve (0xC9, 0xCD, 0xBB, 0xBA, 0xC8, 0xBC)
|
||
|
|
hucre(ust, sol, 0xC9, r)
|
||
|
|
hucre(ust, sol + gen - 1, 0xBB, r)
|
||
|
|
hucre(ust + yuk - 1, sol, 0xC8, r)
|
||
|
|
hucre(ust + yuk - 1, sol + gen - 1, 0xBC, r)
|
||
|
|
dongu c icinde sol + 1..sol + gen - 2:
|
||
|
|
hucre(ust, c, 0xCD, r)
|
||
|
|
hucre(ust + yuk - 1, c, 0xCD, r)
|
||
|
|
dongu s icinde ust + 1..ust + yuk - 2:
|
||
|
|
hucre(s, sol, 0xBA, r)
|
||
|
|
hucre(s, sol + gen - 1, 0xBA, r)
|
||
|
|
|
||
|
|
fonksiyon dikey_ayrac(ust, alt, sutun, r):
|
||
|
|
hucre(ust, sutun, 0xCB, r)
|
||
|
|
dongu s icinde ust + 1..alt - 1:
|
||
|
|
hucre(s, sutun, 0xBA, r)
|
||
|
|
hucre(alt, sutun, 0xCA, r)
|
||
|
|
|
||
|
|
fonksiyon sayi(n):
|
||
|
|
eger n < 0:
|
||
|
|
karakter(0x2D)
|
||
|
|
n = 0 - n
|
||
|
|
bolen = 1
|
||
|
|
iken n // bolen >= 10:
|
||
|
|
bolen = bolen * 10
|
||
|
|
iken bolen > 0:
|
||
|
|
karakter(0x30 + (n // bolen) % 10)
|
||
|
|
bolen = bolen // 10
|
||
|
|
|
||
|
|
fonksiyon onaltilik(n):
|
||
|
|
yaz("0x")
|
||
|
|
basladi = yanlis
|
||
|
|
dongu i icinde 0..15:
|
||
|
|
rakam = bit_ve(saga_kaydir(n, (15 - i) * 4), 0xF)
|
||
|
|
eger rakam != 0 veya basladi veya i == 15:
|
||
|
|
basladi = dogru
|
||
|
|
eger rakam < 10:
|
||
|
|
karakter(0x30 + rakam)
|
||
|
|
degilse:
|
||
|
|
karakter(0x61 + rakam - 10)
|