Saya telah melihat banyak layar pengaturan BIOS mode teks dalam bahasa Jepang dan Cina. Baru-baru ini saya bahkan melihat pengaturan Windows XP dalam bahasa Jepang. MS-DOS juga memiliki versi Jepang. Mode DOS nyata , bukan command prompt Windows!
Satu layar mode teks biasa memiliki ukuran 80x25 . Dengan karakter Jepang yang diambil sebesar lebar karakter Latin normal, jumlah maksimum karakter Jepang yang dapat ditampilkan pada saat yang sama di layar adalah sekitar 1000. Jadi kita perlu 2000 titik kode untuk menampilkan bagian kiri dan kanan karakter.
Karena mode teks standar hanya dapat menampilkan 256 karakter, tetapi 128 karakter pertama digunakan untuk ASCII, sehingga yang dapat digunakan terbatas pada poin kode 128 tinggi. Jika perlu kami dapat memperluasnya ke 512 tetapi ini masih tidak dapat mendukung poin kode yang cukup untuk tampilan. Saya selalu bertanya-tanya bagaimana mereka berhasil menampilkan set karakter besar dengan jumlah karakter yang terbatas.
[ ] 8]
Mode teks di Linux tampaknya menggunakan driver mode grafis karena dapat menampilkan Unicode dan memiliki lebih banyak warna. Tapi saya tidak bisa menjelaskan bagaimana mereka melakukannya di layar pengaturan MS-DOS dan BIOS.
EDIT: Saya bahkan menemukan input teks Jepang untuk DOS
Ada bahasa Korea dalam mode teks juga!
Jawaban:
Mode "80x25 karakter" normal sebenarnya 720x350 piksel (artinya setiap sel karakter berukuran 9 piksel dengan tinggi 14 piksel). Mode karakter lebar-ganda ("40x25") dapat dengan mudah menginterpolasi ini ke lebar yang lebih besar dengan menggandakan setiap kolom untuk menghemat memori konten video (memotong jumlah memori konten video yang diperlukan menjadi dua), atau menggunakan memori mesin terbang tambahan dan identik jumlah memori konten video untuk meningkatkan sel karakter hingga 18 * 14 piksel.
Cukup awal (saya pikir itu dilakukan ketika EGA diperkenalkan), dukungan untuk mesin terbang karakter yang ditentukan pengguna ditambahkan ke mode tampilan teks PC IBM.
Mode teks normal dari IBM PC hanyalah sekuens 4000 byte RAM konten video pada alamat tertentu. Ini dibaca sebagai satu byte atribut karakter (awalnya berkedip, tebal, garis bawah dll.; Kemudian digunakan kembali untuk warna latar depan dan latar belakang dan berkedip / sorot, maka batasan untuk 16 warna dalam mode teks) dan satu byte menggambarkan karakter untuk ditampilkan Mesin terbang aktual yang akan ditampilkan untuk setiap nilai byte karakter disimpan di tempat lain.
Ini berarti bahwa selama Anda dapat melakukannya dengan 256 mesin terbang berbeda pada layar pada satu waktu, dan setiap mesin terbang dapat direpresentasikan sebagai bitmap 9-bit 9x14, Anda dapat dengan mudah mengganti mesin terbang dalam memori untuk membuat karakter tampak berbeda . Sebagian, ini adalah salah satu bagian dari apa yang
mode con codepage select
dilakukan pada DOS. Ini relatif sepele.Jika Anda membutuhkan lebih dari 256 mesin terbang berbeda tetapi dapat hidup dengan berkurangnya jumlah mesin terbang di layar, Anda dapat menggunakan skema 40x25 dengan mesin terbang lebar ganda (lebar 18 piksel). Dengan asumsi bahwa jumlah total konten RAM video telah diperbaiki dan dengan asumsi bahwa Anda dapat meningkatkan memori mesin bitmap, Anda dapat beralih menggunakan dua byte dari setiap empat byte untuk mewakili satu mesin terbang di layar, memberi Anda akses ke 2 ^ 16 = 65.536 mesin terbang berbeda (termasuk mesin terbang kosong). Jika Anda merasa berani, Anda bahkan bisa melewatkan byte atribut kedua yang memberi Anda akses ke 2 ^ 24 ~ 16.7M mesin terbang yang berbeda. Kedua pendekatan ini bergantung pada dukungan perangkat lunak khusus, tetapi bagian perangkat keras dan firmware seharusnya cukup mudah dilakukan. 65.536 mesin terbang pada 18x14 piksel satu-bit bekerja hingga sekitar 2 MiB, jumlah memori yang cukup besar tetapi tidak dapat diatasi pada saat itu.
Bahasa Inggris AS Dasar membutuhkan setidaknya 62 mesin terbang khusus (angka 0-9, huruf AZ dalam huruf besar dan kecil) sehingga Anda memiliki sesuatu seperti 180-190 mesin terbang untuk dimainkan jika Anda juga ingin dapat menampilkan teks bahasa Inggris AS secara bersamaan. waktu dan pergi dengan 8 bit per mesin terbang. Jika Anda dapat hidup tanpa dukungan bahasa Inggris AS secara simultan, yang dapat Anda pilih untuk dilakukan di lingkungan yang terbatas sumber daya seperti arsitektur PC IBM awal, Anda memiliki akses ke mesin terbang penuh.
Dengan beberapa tipu daya, Anda mungkin bisa mencampur dan mencocokkan kedua skema itu juga.
Saya tidak tahu bagaimana itu benar-benar dilakukan tetapi keduanya adalah skema yang layak untuk bagaimana mendapatkan huruf "mewah" yang sangat terbatas karakter-hitung ke layar IBM PC sederhana dalam mode teks yang saya dapat datang dengan hanya duduk di depan Stack Exchange sejenak. Sangat mungkin bahwa ada mode grafis tambahan yang membuatnya lebih mudah dalam praktiknya.
Juga, ingatlah perbedaan antara mode teks dan mode grafis menampilkan teks . Jika Anda berada dalam mode grafis, mungkin melalui VESA yang cukup didukung secara universal, Anda sendirian sejauh menggambar karakter mesin terbang pergi tetapi Anda juga memiliki lebih banyak kebebasan dalam cara menggambar mereka. Sebagai contoh, saya cukup yakin bagian berbasis teks dari Windows NT (yang merupakan keluarga produk Windows XP) menggunakan mode grafis untuk menampilkan teks, termasuk layar boot Windows NT 4.0 dan BSODs.
sumber
Ini menyederhanakan apa yang dikatakan @Michael Kjörling.
Dalam mode teks, Anda memiliki "memori layar" yang memiliki 1 byte per karakter pada layar yang memberi tahu adaptor karakter apa yang muncul di setiap posisi layar. (Ada juga "atribut" byte yang memberi tahu adaptor apa warna dan hal-hal seperti garis bawah, kedip, dll.).
Adaptor menggunakan byte ini untuk mengindeks ke "tabel karakter" lain yang memiliki bitmap 8x12 kecil atau karakter apa pun. DOS menyebut tabel karakter ini halaman kode.
Dimulai dengan CGA, Anda dapat memberi tahu adaptor untuk mendapatkan tabel karakter di tempat tertentu dalam RAM adaptor. Setiap adaptor memiliki ROM karakter yang memiliki "font" default untuk kartu itu (yang merupakan font IBM standar), tetapi Anda dapat memberitahu adaptor untuk beralih ke lokasi dalam RAM dan meletakkan gambar Anda sendiri di sana.
Selama perangkat lunak tahu apa yang terjadi, kode dalam memori layar yang mengarah ke gambar dalam tabel karakter tidak memiliki garis dengan kode ASCII, meskipun lebih mudah jika mereka melakukannya. Anda akan melihat ada kode memori layar (dan bentuk tabel karakter) untuk 1-31 yang merupakan karakter ASCII yang tidak dapat dicetak - tetapi dengan menulis ke memori layar secara langsung (kenangan indah
DEFSEG = &HB800 : POKE 0,1
di GW-BASIC untuk mengubah karakter paling atas menjadi smiley datang ke pikiran) Anda masih dapat menampilkannya.Jadi menampilkan bahasa lain baik-baik saja, jika Anda dapat memasukkan gambar yang tepat ke dalam RAM adaptor dan mendapatkan dukungan perangkat lunak yang diperlukan.
sumber
Saya menemukan sesuatu di halaman "mode teks yang kompatibel dengan VGA" di Wikipedia dan juga di beberapa buku pemrograman VGA:
Baik mode teks EGA dan VGA memungkinkan 512 mesin terbang simultan di layar, atau 2 bank dengan 256 mesin terbang masing-masing. Bit atribut 3 (Foreground Color Intensity) juga dapat memilih antara bank A atau B. Apa yang biasanya terjadi adalah bahwa secara default register Font A dan B menunjuk ke alamat yang sama, sehingga Anda hanya memiliki 256 mesin terbang. Jadi, agar berfungsi, Anda harus mengatur Font Register ke alamat yang benar.
Setiap bank memiliki 8192 byte, dan masing-masing dari 256 mesin terbang di bank memiliki 32 byte (lebar 8 piksel dan tinggi 32 piksel). Anda dapat mengatur register Hitungan Scanline untuk mengetahui ketinggian karakter Anda yang benar. Kartu VGA mencetak 400 garis pemindaian di layar sementara EGA mencetak 350 garis pemindaian, oleh karena itu, untuk memberi Anda 25 baris karakter, mereka mengatur tinggi karakter masing-masing menjadi 16 dan 14 garis pemindaian. Juga, dalam VGA, setiap mesin terbang dapat memiliki lebar 8 atau 9 titik, tetapi kolom ke-9 kosong atau hanya pengulangan kolom ke-8. Semua mesin terbang ini di kedua bank dapat ditentukan oleh pengguna.
Bagaimana Anda bisa mendapatkan lebih dari 256 karakter berbeda di layar dalam beberapa bahasa? Dalam contoh di atas, setiap karakter asing khusus dibuat dari dua mesin terbang (kiri dan kanan), atau lebih. Anda dapat mengatur yang pertama, katakanlah, 128 mesin terbang dari bank A terpisah untuk teks ASCII, dan Anda masih akan memiliki 128 mesin terbang dari bank A + 256 mesin terbang dari bank B = 384 mesin terbang untuk Anda sesuaikan.
Selain itu, Anda dapat menggabungkan sisi kiri dan kanan yang berbeda untuk membuat set karakter besar! Katakanlah, misalnya, bahwa dari 384 glyph yang ditentukan pengguna, Anda ingin memesan 184 untuk sisi kiri dan 200 untuk sisi kanan: Anda dapat memiliki 184 * 200 = 36800 karakter yang berbeda! (tentu saja, sebagian besar dari mereka mungkin akan menjadi karakter yang tidak valid untuk bahasa itu, tetapi Anda masih bisa mendapatkan jumlah kombinasi yang valid).
Dalam contoh bahasa Jepang di atas, Anda memiliki karakter "ha" dan "ba" yang berbagi mesin terbang sisi kiri. Sama untuk charaters "si" dan "zi". Sisi kanan "ko" dan "ni" sangat mirip sehingga mereka dapat berbagi mesin terbang sisi kanan yang sama. Hal yang sama dapat dikatakan tentang karakter "ru" dan "ro". Dengan desain yang bagus, Anda dapat mengembangkan set karakter Anda dengan sangat baik. Mesin terbang sisi kanan karakter "le" muncul di kiri atas layar (abu-abu), dan di bilah gulir vertikal, tombol naik dan turun juga berubah, yang berarti bahwa setidaknya bagian dari bank A juga digunakan untuk mengakomodasi mesin terbang baru.
Kesimpulannya, fungsi string BIOS di era PC awal tidak sadar Unicode, tetapi tidak harus. Yang harus Anda lakukan adalah menyesuaikan 512 glyphs Anda dan mengatur register EGA atau VGA yang benar. Misalnya, Anda dapat mengubahsuaikan "! @" "# $" "% ^" "& *" "Çé" "ñÑ" mesin terbang ke karakter asing Anda (di bank A atau B), dan kemudian buat BIOS cetak "! @ # S% ^ & * çéñÑ "string sekaligus. BIOS tidak akan memeriksa mesin terbang. Anda juga tidak dapat menggunakan fungsi BIOS sama sekali, karena Anda dapat menulis langsung di memori video. Untuk menggunakan mesin terbang dari bank B, cukup setel atribut Foreground Color karakter ke nilai antara 8 dan 15 (warna cerah).
(maaf bahasa Inggris saya yang buruk)
sumber
Saya melakukan riset dan seperti yang saya perkirakan, Anda harus menggunakan mode grafis atau memerlukan dukungan perangkat keras khusus karena tidak ada cara untuk menggunakan lebih dari 512 karakter dalam mode teks VGA
Versi Jepang dari DOS (DOS / V) menggunakan pendekatan pertama dan mensimulasikan mode teks dengan merender karakter dalam mode grafis menggunakan driver khusus. Driver mengikuti standar IBM V-Text yang merupakan mekanisme untuk memperluas kemampuan tampilan teks DOS. Anda dapat memilih berbagai font 16/24/32/48-dot seperti ini
Beberapa sistem mode teks lain juga menggunakan teknik yang sama. Dalam FreeDOS Anda dapat memuat beberapa driver khusus untuk dukungan Jepang
Penyaji akan memotong panggilan int 10j dan int 21j dan menggambar teks secara manual, sehingga akan berfungsi bahkan untuk program bahasa Inggris normal. Tetapi itu tidak akan berfungsi untuk program yang menulis ke memori VGA secara langsung. Untuk mencetak karakter Jepang int 5h dan int 17h juga cocok.
Menurut manual DOS / V nanti IBM BIOS juga menambahkan dukungan untuk V-Text melalui int 15h dengan di bawah 4 fungsi baru
Saya kira ini juga alasan saya melihat dukungan Jepang di BIOS PC lama saya
Namun lambatnya mode grafis dapat menimbulkan gangguan saat menggulir yang memerlukan penanganan khusus
DOS / V sebenarnya adalah solusi perangkat lunak pertama untuk mode teks Jepang
Menurut artikel yang sama, sebelum penemuan DOS / V sistem lain semua membutuhkan ROM Kanji dalam perangkat keras
Misalnya IBM Personal System / 55 yang menggunakan adapter grafis khusus dengan font Jepang, sehingga mereka mendapatkan mode teks nyata
https://en.wikipedia.org/wiki/DOS/V#History
The arsitektur AX menggunakan adaptor Jega khusus bukan EGA standar
Versi selanjutnya juga menambahkan perangkat keras AX-VGA / H khusus dan AX-VGA / S untuk emulasi perangkat lunak pada VGA
Seri NEC PC-98 juga memiliki ROM karakter pada pengontrol tampilan
Saya tidak tahu situasi untuk Cina dan Korea tetapi saya pikir teknik yang sama digunakan. Saya tidak yakin apakah ada cara lain untuk mencapai itu atau tidak
sumber
Anda memerlukan mode grafis alih-alih mode teks kode keras sehingga mesin terbang teks unicode dapat ditampilkan. Kemudian Anda mengatur MS-DOS untuk menggunakan font unicode dan mengubah pemetaan bahasa untuk menggunakannya.
http://www.mobilefish.com/tutorials/windows/windows_quickguide_dos_unicode.html
sumber