nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 23 Nov 2020 22:29



Reply to topic  [ 10 posts ] 
Представление шрифтов в троичном компьютере + графика(TerGA) 
Author Message
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
30 сентября 2008 года я пришёл вот к такому варианту кодирования текста:
Shaos wrote:
Image Представленная система кодирования символов предназначена для трёх-тритного троичного компьютера. Один символ представляется тремя тритами, которые могут кодировать только 27 разнообразных комбинаций и поэтому нам нужны специальные коды, которые могли бы менять наборы отображаемых символов. Введём 3 шрифта, каждый из которых имеет 3 раскладки - всего 3^5=243 возможных символа. Первый шрифт покрывает латинские буквы, цифры и некоторые стандартные символы из ASCII. Второй шрифт - русские буквы (за исключением тех, которые похожи по написанию на латинские) и остальные стандартные символы из ASCII. Третий шрифт - псевдографика 2х2 пиксела на знакоместо, греческие буквы (за исключением тех, которые похожи по написанию на латинские и русские), дополнительные символы для поддержки некоторых европейских языков (украинский, белорусский, сербский, финский), а также некоторые математические символы. Также имеются несколько специальных символов: SL - switch layout (переключение раскладки) доступен во всех шрифтах и раскладках, SF - switch font (переключение шрифта) доступен в раскладке N всех шрифтов, NL - new line (новая строка) доступен в раскладке N всех шрифтов, TC - terminal character (терминальный символ) доступен в раскладке N всех шрифтов, а также пробел, который также доступен в раскладке N всех шрифтов. По умолчанию устанавливается шрифт N и раскладка N. Перевод строки сбрасывает текущий шрифт в N. Переключение шрифта сдвигает текущий шрифт вперёд на 1 (N->O->P->N и т.д.), сбрасывая текущую раскладку в N. Переключение раскладки сдвигает текущую раскладку вперёд на 1 (N->O->P->N и т.д.), сохраняя текущий шрифт. Терминальный символ используется как метка конца текста в памяти трёх-тритного троичного компьютера.

В данном случае текст кодируется триадами (3 трита) с переключением раскладок спец-символами.

Однако если у нас есть целый трайт (6 тритов), то наверное логичнее просто представлять символы номерами ASCII начиная с нуля и до 255 (при желании можно расширить далее до +364 и даже завернуться в минус).

Вчера я познакомился с представлением текстов в LINC где любой произвольный символ с прямоугольнике 4x6 может быть закодирован двумя 12-битными словами, и подумал, а что если в троичном компьютере можно попробовать представить символы похожим способом?

P.S. 26 мая 2020 года добавил в название топика аббревиатуру TerGA - Ternary Graphics Adapter ;)

P.P.S. 27 мая 2020 года создал прожэкт на Хакадее: https://hackaday.io/project/171981-terga

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2020 17:27
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Возьмём скажем шрифт nedoText:

Attachment:
Text80x25-font.gif
Text80x25-font.gif [ 3.2 KiB | Viewed 1078 times ]


Attachment:
nedoText-font.jpg
nedoText-font.jpg [ 120.65 KiB | Viewed 1211 times ]

Здесь каждый символ представляется пикселами в прямоугольнике 5x7
 FontNedoText
Code:
/* my_font.c - Alexander A. Shabarshin <ashabarshin@gmail.com>

   RELEASED AS PUBLIC DOMAIN, USE ON YOUR OWN RISK!!!

   06 Aug 2006 - Creation of font image
   26 Dec 2006 - First version of C-code
*/

#include "my_font.h"

unsigned char font5x7[FONT5X7_CHARS][7] = {
 { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
 { 0x20,0x20,0x20,0x20,0x00,0x20,0x00 },
 { 0x50,0x50,0x00,0x00,0x00,0x00,0x00 },
 { 0x50,0xF8,0x50,0x50,0xF8,0x50,0x00 },
 { 0x20,0xF8,0xA0,0xF8,0x28,0xF8,0x20 },
 { 0x00,0xC8,0xD0,0x20,0x58,0x98,0x00 },
 { 0x20,0x50,0x20,0x58,0x88,0x78,0x00 },
 { 0x30,0x10,0x20,0x00,0x00,0x00,0x00 },
 { 0x30,0x60,0x40,0x40,0x60,0x30,0x00 },
 { 0x60,0x30,0x10,0x10,0x30,0x60,0x00 },
 { 0x20,0xA8,0x70,0x70,0xA8,0x20,0x00 },
 { 0x00,0x20,0x20,0xF8,0x20,0x20,0x00 },
 { 0x00,0x00,0x00,0x00,0x30,0x10,0x20 },
 { 0x00,0x00,0x00,0xF8,0x00,0x00,0x00 },
 { 0x00,0x00,0x00,0x00,0x30,0x30,0x00 },
 { 0x00,0x08,0x10,0x20,0x40,0x80,0x00 },
 { 0x70,0x88,0xA8,0xA8,0x88,0x70,0x00 },
 { 0x20,0x60,0x20,0x20,0x20,0x70,0x00 },
 { 0xF8,0x08,0x08,0xF8,0x80,0xF8,0x00 },
 { 0xF8,0x08,0x08,0x30,0x08,0xF8,0x00 },
 { 0x88,0x88,0x88,0xF8,0x08,0x08,0x00 },
 { 0xF8,0x80,0x80,0xF8,0x08,0xF8,0x00 },
 { 0xF8,0x80,0x80,0xF8,0x88,0xF8,0x00 },
 { 0xF8,0x08,0x08,0x08,0x08,0x08,0x00 },
 { 0xF8,0x88,0x88,0xF8,0x88,0xF8,0x00 },
 { 0xF8,0x88,0x88,0xF8,0x08,0xF8,0x00 },
 { 0x00,0x30,0x30,0x00,0x30,0x30,0x00 },
 { 0x00,0x30,0x30,0x00,0x30,0x10,0x20 },
 { 0x00,0x10,0x20,0x40,0x20,0x10,0x00 },
 { 0x00,0x00,0x70,0x00,0x70,0x00,0x00 },
 { 0x00,0x40,0x20,0x10,0x20,0x40,0x00 },
 { 0x70,0x88,0x10,0x20,0x00,0x20,0x00 },
 { 0x78,0x88,0xB8,0xB8,0x80,0x78,0x00 },
 { 0x78,0x88,0x88,0xF8,0x88,0x88,0x00 },
 { 0xE0,0x90,0x90,0xF8,0x88,0xF8,0x00 },
 { 0xF8,0x88,0x80,0x80,0x88,0xF8,0x00 },
 { 0xE0,0x90,0x88,0x88,0x88,0xF8,0x00 },
 { 0xF8,0x88,0x80,0xE0,0x88,0xF8,0x00 },
 { 0xF8,0x88,0x80,0xE0,0x80,0x80,0x00 },
 { 0xF8,0x88,0x80,0x98,0x88,0xF8,0x00 },
 { 0x88,0x88,0x88,0xF8,0x88,0x88,0x00 },
 { 0x70,0x20,0x20,0x20,0x20,0x70,0x00 },
 { 0x38,0x10,0x10,0x10,0x90,0x60,0x00 },
 { 0x88,0x90,0xA0,0xF0,0x88,0x88,0x00 },
 { 0x80,0x80,0x80,0x80,0x88,0xF8,0x00 },
 { 0x88,0xD8,0xA8,0x88,0x88,0x88,0x00 },
 { 0x88,0xC8,0xA8,0x98,0x88,0x88,0x00 },
 { 0xF8,0x88,0x88,0x88,0x88,0xF8,0x00 },
 { 0xF8,0x88,0x88,0xF8,0x80,0x80,0x00 },
 { 0xF8,0x88,0x88,0x88,0x90,0xE8,0x00 },
 { 0xF8,0x88,0x88,0xF8,0x90,0x88,0x00 },
 { 0xF8,0x88,0x80,0xF8,0x08,0xF8,0x00 },
 { 0xF8,0x20,0x20,0x20,0x20,0x20,0x00 },
 { 0x88,0x88,0x88,0x88,0x88,0x70,0x00 },
 { 0x88,0x88,0x88,0x88,0x50,0x20,0x00 },
 { 0x88,0x88,0x88,0xA8,0xA8,0x50,0x00 },
 { 0x88,0x50,0x20,0x50,0x88,0x88,0x00 },
 { 0x88,0x88,0x50,0x20,0x20,0x20,0x00 },
 { 0xF8,0x90,0x20,0x40,0x88,0xF8,0x00 },
 { 0x70,0x40,0x40,0x40,0x40,0x70,0x00 },
 { 0x00,0x80,0x40,0x20,0x10,0x08,0x00 },
 { 0x70,0x10,0x10,0x10,0x10,0x70,0x00 },
 { 0x20,0x50,0x88,0x00,0x00,0x00,0x00 },
 { 0x00,0x00,0x00,0x00,0x00,0x00,0xF8 },
 { 0x10,0x20,0x30,0x00,0x00,0x00,0x00 },
 { 0x00,0x00,0x78,0x88,0x98,0xE8,0x00 },
 { 0x80,0x80,0x80,0xF0,0x88,0xF8,0x00 },
 { 0x00,0x00,0x78,0x88,0x80,0x78,0x00 },
 { 0x08,0x08,0x08,0x78,0x88,0xF8,0x00 },
 { 0x00,0x00,0x70,0xF8,0x80,0x70,0x00 },
 { 0x30,0x20,0x20,0x70,0x20,0x20,0x00 },
 { 0x00,0x00,0x78,0x88,0x78,0x08,0x70 },
 { 0x80,0x80,0x80,0xF0,0x88,0x88,0x00 },
 { 0x20,0x00,0x20,0x20,0x20,0x20,0x00 },
 { 0x10,0x00,0x10,0x10,0x10,0x50,0x20 },
 { 0x80,0x90,0xA0,0xF0,0x88,0x88,0x00 },
 { 0x60,0x20,0x20,0x20,0x20,0x20,0x00 },
 { 0x00,0x00,0xF0,0xA8,0xA8,0xA8,0x00 },
 { 0x00,0x00,0xF0,0x88,0x88,0x88,0x00 },
 { 0x00,0x00,0x70,0x88,0x88,0x70,0x00 },
 { 0x00,0x00,0xF0,0x88,0xF8,0x80,0x80 },
 { 0x00,0x00,0x78,0x88,0xF8,0x08,0x08 },
 { 0x00,0x00,0x28,0x30,0x20,0x20,0x00 },
 { 0x00,0x00,0x70,0x60,0x18,0xF8,0x00 },
 { 0x20,0x70,0x20,0x20,0x20,0x30,0x00 },
 { 0x00,0x00,0x88,0x88,0x88,0x78,0x00 },
 { 0x00,0x00,0x88,0x88,0x48,0x30,0x00 },
 { 0x00,0x00,0xA8,0xA8,0xA8,0x70,0x00 },
 { 0x00,0x00,0x50,0x20,0x50,0x88,0x00 },
 { 0x00,0x00,0x88,0x88,0x78,0x08,0x70 },
 { 0x00,0x00,0xF0,0x20,0x40,0xF8,0x00 },
 { 0x30,0x60,0x40,0xC0,0x40,0x60,0x30 },
 { 0x20,0x20,0x20,0x00,0x20,0x20,0x20 },
 { 0x60,0x30,0x10,0x18,0x10,0x30,0x60 },
 { 0x50,0xA0,0x00,0x00,0x00,0x00,0x00 },
 { 0x00,0x20,0x50,0x88,0x88,0xF8,0x00 },
 { 0x38,0x48,0x88,0xF8,0x88,0x88,0x00 },
 { 0xF0,0x80,0x80,0xF0,0x88,0xF8,0x00 },
 { 0xE0,0x90,0x90,0xF0,0x88,0xF8,0x00 },
 { 0xF0,0x90,0x80,0x80,0x80,0x80,0x00 },
 { 0x30,0x50,0x50,0x50,0x50,0xF8,0x88 },
 { 0xF8,0x88,0x80,0xE0,0x88,0xF8,0x00 },
 { 0x88,0xA8,0xA8,0x70,0xA8,0xA8,0x00 },
 { 0x70,0x88,0x08,0x30,0x88,0x70,0x00 },
 { 0x88,0x88,0x98,0xA8,0xC8,0x88,0x00 },
 { 0xA8,0x88,0x98,0xA8,0xC8,0x88,0x00 },
 { 0x88,0x90,0xA0,0xE0,0x90,0x88,0x00 },
 { 0x38,0x48,0x48,0x48,0x48,0x88,0x00 },
 { 0x88,0xD8,0xA8,0x88,0x88,0x88,0x00 },
 { 0x88,0x88,0x88,0xF8,0x88,0x88,0x00 },
 { 0x70,0x88,0x88,0x88,0x88,0x70,0x00 },
 { 0xF8,0x88,0x88,0x88,0x88,0x88,0x00 },
 { 0xF0,0x88,0x88,0xF0,0x80,0x80,0x00 },
 { 0x70,0x88,0x80,0x80,0x88,0x70,0x00 },
 { 0xF8,0xA8,0x20,0x20,0x20,0x70,0x00 },
 { 0x88,0x88,0x88,0x78,0x08,0x70,0x00 },
 { 0x70,0xA8,0xA8,0xA8,0x70,0x20,0x00 },
 { 0x88,0x50,0x20,0x50,0x88,0x88,0x00 },
 { 0x90,0x90,0x90,0x90,0x90,0xF8,0x08 },
 { 0x88,0x88,0x88,0x78,0x08,0x08,0x00 },
 { 0x88,0x88,0xA8,0xA8,0xA8,0xF8,0x00 },
 { 0x88,0x88,0xA8,0xA8,0xA8,0xF8,0x08 },
 { 0xC0,0x40,0x40,0x78,0x48,0x78,0x00 },
 { 0x88,0x88,0x88,0xE8,0xA8,0xE8,0x00 },
 { 0x40,0x40,0x40,0x78,0x48,0x78,0x00 },
 { 0x70,0x88,0x08,0x38,0x88,0x70,0x00 },
 { 0x90,0xA8,0xA8,0xE8,0xA8,0x90,0x00 },
 { 0x78,0x88,0x88,0x78,0x28,0x48,0x00 },
 { 0x00,0x00,0x78,0x88,0x98,0x68,0x00 },
 { 0x78,0x20,0x10,0x78,0x88,0xF8,0x00 },
 { 0xC0,0xC0,0x80,0xF0,0x88,0xF8,0x00 },
 { 0x00,0x00,0xF0,0x30,0xC0,0xF8,0x00 },
 { 0x00,0x00,0x78,0x88,0x78,0x08,0x70 },
 { 0x00,0x00,0x70,0xF8,0x80,0x70,0x00 },
 { 0x00,0x00,0xA8,0xA8,0x70,0xA8,0x00 },
 { 0x00,0x00,0x78,0x08,0x30,0x88,0x70 },
 { 0x00,0x00,0x88,0x88,0x98,0x68,0x00 },
 { 0x10,0x20,0x88,0x88,0x98,0x68,0x00 },
 { 0x00,0x00,0x90,0xA0,0xF0,0x88,0x00 },
 { 0x00,0x00,0x38,0x48,0x48,0x88,0x00 },
 { 0x00,0x00,0x58,0xA8,0xA8,0xA8,0x00 },
 { 0x00,0x00,0x88,0x88,0xF8,0x88,0x00 },
 { 0x00,0x00,0x70,0x88,0x88,0x70,0x00 },
 { 0x00,0x00,0xB0,0xC8,0x88,0x88,0x00 },
 { 0x00,0xA8,0x00,0xA8,0x00,0xA8,0x00 }, // 0xB0 --> 0xA8,0x00,0xA8,0x00,0xA8,0x00,0xA8
 { 0xA8,0x50,0xA8,0x50,0xA8,0x50,0xA8 },
 { 0x48,0x90,0x48,0x90,0x48,0x90,0x48 }, // 0xB2 --> 0x50,0xF8,0x50,0xF8,0x50,0xF8,0x50
 { 0x20,0x20,0x20,0x20,0x20,0x20,0x20 },
 { 0x20,0x20,0x20,0xE0,0x20,0x20,0x20 },
 { 0x20,0x20,0xE0,0x20,0xE0,0x20,0x20 },
 { 0x50,0x50,0x50,0xD0,0x50,0x50,0x50 },
 { 0x00,0x00,0x00,0xF0,0x50,0x50,0x50 },
 { 0x00,0x00,0xE0,0x20,0xE0,0x20,0x20 },
 { 0x50,0x50,0xD0,0x10,0xD0,0x50,0x50 },
 { 0x50,0x50,0x50,0x50,0x50,0x50,0x50 },
 { 0x00,0x00,0xF0,0x10,0xD0,0x50,0x50 },
 { 0x50,0x50,0xD0,0x10,0xF0,0x00,0x00 },
 { 0x50,0x50,0x50,0xF0,0x00,0x00,0x00 },
 { 0x20,0x20,0xE0,0x20,0xE0,0x00,0x00 },
 { 0x00,0x00,0x00,0xE0,0x20,0x20,0x20 },
 { 0x20,0x20,0x20,0x38,0x00,0x00,0x00 },
 { 0x20,0x20,0x20,0xF8,0x00,0x00,0x00 },
 { 0x00,0x00,0x00,0xF8,0x20,0x20,0x20 },
 { 0x20,0x20,0x20,0x38,0x20,0x20,0x20 },
 { 0x00,0x00,0x00,0xF8,0x00,0x00,0x00 },
 { 0x20,0x20,0x20,0xF8,0x20,0x20,0x20 },
 { 0x20,0x20,0x38,0x20,0x38,0x20,0x20 },
 { 0x50,0x50,0x50,0x58,0x50,0x50,0x50 },
 { 0x50,0x50,0x58,0x40,0x78,0x00,0x00 },
 { 0x00,0x00,0x78,0x40,0x58,0x50,0x50 },
 { 0x50,0x50,0xD8,0x00,0xF8,0x00,0x00 },
 { 0x00,0x00,0xF8,0x00,0xD8,0x50,0x50 },
 { 0x50,0x50,0x58,0x40,0x58,0x50,0x50 },
 { 0x00,0x00,0xF8,0x00,0xF8,0x00,0x00 },
 { 0x50,0x50,0xD8,0x00,0xD8,0x50,0x50 },
 { 0x20,0x20,0xF8,0x00,0xF8,0x00,0x00 },
 { 0x50,0x50,0x50,0xF8,0x00,0x00,0x00 },
 { 0x00,0x00,0xF8,0x00,0xF8,0x20,0x20 },
 { 0x00,0x00,0x00,0xF8,0x50,0x50,0x50 },
 { 0x50,0x50,0x50,0x78,0x00,0x00,0x00 },
 { 0x20,0x20,0x38,0x20,0x38,0x00,0x00 },
 { 0x00,0x00,0x38,0x20,0x38,0x20,0x20 },
 { 0x00,0x00,0x00,0x78,0x50,0x50,0x50 },
 { 0x50,0x50,0x50,0xF8,0x50,0x50,0x50 },
 { 0x20,0x20,0xF8,0x20,0xF8,0x20,0x20 },
 { 0x20,0x20,0x20,0xE0,0x00,0x00,0x00 },
 { 0x00,0x00,0x00,0x38,0x20,0x20,0x20 },
 { 0xD8,0xD8,0xD8,0x00,0xD8,0xD8,0xD8 },
 { 0x00,0x00,0x00,0x00,0xD8,0xD8,0xD8 },
 { 0xC0,0xC0,0xC0,0x00,0xC0,0xC0,0xC0 },
 { 0x18,0x18,0x18,0x00,0x18,0x18,0x18 },
 { 0xD8,0xD8,0xD8,0x00,0x00,0x00,0x00 },
 { 0x00,0x00,0xF0,0x88,0xF8,0x80,0x80 },
 { 0x00,0x00,0x70,0x88,0x80,0x78,0x00 },
 { 0x00,0x00,0xF0,0xA8,0xA8,0xA8,0x00 },
 { 0x00,0x00,0x88,0x88,0x78,0x08,0x70 },
 { 0x00,0x20,0x70,0xA8,0x70,0x20,0x20 },
 { 0x00,0x00,0xD8,0x20,0x20,0xD8,0x00 },
 { 0x00,0x00,0x90,0x90,0x90,0x78,0x08 },
 { 0x00,0x00,0x88,0x88,0x78,0x08,0x00 },
 { 0x00,0x00,0xA8,0xA8,0xA8,0x78,0x00 },
 { 0x00,0x00,0xA8,0xA8,0xA8,0x78,0x08 },
 { 0x00,0x00,0xC0,0x70,0x48,0x78,0x00 },
 { 0x00,0x00,0x88,0xC8,0xA8,0xE8,0x00 },
 { 0x00,0x00,0x40,0x70,0x48,0x78,0x00 },
 { 0x00,0x00,0x70,0x38,0x88,0x70,0x00 },
 { 0x00,0x00,0xB0,0xA8,0xE8,0xB8,0x00 },
 { 0x00,0x00,0x38,0x48,0x38,0x48,0x00 }
};


Если тупо перегнать это в троичность, то чтобы нарисовать произвольный символ потребуется 5x7=35 битов или 22,08 тритов, что несколько много. Для троичного представления двухцветного растра всё равно потребуется некие отображения тритов в биты - попробуем найти повторяющиеся части в отображении символов - разобъём знакоместо на 3 блока 5x2 и 4й блок 5x1 (самый нижний, который у большинства символов будет пустым)

Если брать полный набор в 208 символов шрифта nedoText, то получается, что

блок 1 имеет 65 разных паттернов
блок 2 имеет 102 разных паттернов
блок 3 имеет 87 разных паттернов
блок 4 имеет 14 разных паттернов

Если брать только символы с кодами от 0x20 до 0xFF (стандарт ASCII), то там разнообразие чуть меньше - 45,51,48 и 8 соответственно

Допустим мы соединим все паттерны в один набор блоков 5x2 - это даст 185 разновидностей (110 если брать только ASCII, что нам не сильно поможет), на представление которых достаточно 5 тритов, соответственно для представления целого символа надо иметь 3 набора по 5 тритов плюс сколько то на представление неполного 4го блока (нечастые хвостики букв) - если обращаться к той же "библиотеке" паттернов, но брать только верхнюю строчку, то по идее можно обойтись несколькими тритами (не более трёх), т.е. для представления произвольного символа, составленного из библиотечных компонентов 5x2 дожно хватить трёх трайтов (6 триад).

В наборе блоков можно начать нумерацию с самых распространённых (нулевым блоком может быть пустота - в скобках указано в скольки символах данный блок встречается - для полного набора FULL и для урезанного ASCII):
Code:
Block 0 (89 full, 37 ascii):

 ooooo
 ooooo

Block 1 (45 full, 23 ascii):

 xooox
 xooox

Block 2 (27 full, 20 ascii):

 xooox
 xxxxx

Block 3 (39 full, 17 ascii):

 ooxoo
 ooxoo

Block 4 (14 full, 11 ascii):

 xxxxx
 xooox


и т.д.

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2020 17:50
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Вот - пронумеровал:

 TABLE
Code:
BLOCK     FULL         ASCII
  0 OOOOO 89 0x00,0x00 37 0x00,0x00 <<< 4th (153/84)
  1 OOOOP 39 0x20,0x20 17 0x20,0x20 <<< 4th (19/5)
  2 OOOPN 43 0x88,0x88 23 0x88,0x88 <<< 4th (1/0)
  3 OOOPO 14 0xF8,0x88 11 0xF8,0x88 <<< 4th (1/1)
  4 OOOPP 11 0x80,0x80  7 0x80,0x80 <<< 4th (2/1)
  5 OOPNN  4 0xD8,0xD8              <<< 4th (2/0)
  6 OOPNO 24 0x50,0x50  2 0x50,0x50 <<< 4th (14/0)
  7 OOPNP 12 0xA8,0xA8  3 0xA8,0xA8 <<< 4th (2/0)
  8 OOPON  3 0xC0,0xC0              <<< 4th (1/0)
  9 OOPOO  9 0x70,0x88  3 0x70,0x88 <<< 4th (5/2)
 10 OOPOP  5 0x08,0xF8  5 0x08,0xF8 <<< 4th (5/1)
 11 OOPPN  2 0x18,0x18              <<< 4th (1/0)
 12 OOPPO  3 0x60,0x30  3 0x60,0x30 <<< 4th (1/1)
 13 OOPPP  3 0x30,0x60  3 0x30,0x60 <<< 4th (1/1)
 14 OPNNN 27 0x88,0xF8 20 0x88,0xF8
 15 OPNNO  9 0x88,0x70  3 0x88,0x70
 16 OPNNP  9 0x78,0x88  6 0x78,0x88
 17 OPNON  7 0xF8,0x00
 18 OPNOO  6 0x78,0x08  2 0x78,0x08
 19 OPNOP  5 0xF0,0x88  2 0xF0,0x88
 20 OPNPN  5 0xE0,0x20
 21 OPNPO  5 0x88,0x78  2 0x88,0x78
 22 OPNPP  5 0x50,0xF8  1 0x50,0xF8
 23 OPONN  5 0x38,0x48
 24 OPONO  5 0x38,0x20
 25 OPONP  5 0x20,0x70  4 0x20,0x70
 26 OPOON  5 0x08,0x08  4 0x08,0x08
 27 OPOOO  5 0x00,0x20  4 0x00,0x20
 28 OPOOP  4 0xF8,0x80  3 0xF8,0x80
 29 OPOPN  4 0xF8,0x20  1 0xF8,0x20
 30 OPOPO  4 0xF8,0x08  4 0xF8,0x08
 31 OPOPP  4 0xD8,0x00
 32 OPPNN  4 0xA8,0x50  1 0xA8,0x50
 33 OPPNO  4 0x80,0xF8  4 0x80,0xF8
 34 OPPNP  4 0x80,0xF0  2 0x80,0xF0
 35 OPPON  4 0x48,0x78
 36 OPPOO  4 0x20,0xF8  2 0x20,0xF8
 37 OPPOP  4 0x20,0x50  3 0x20,0x50
 38 OPPPN  4 0x10,0x20  3 0x10,0x20
 39 OPPPO  4 0x10,0x10  4 0x10,0x10
 40 OPPPP  4 0x00,0xF8  1 0x00,0xF8
 41 PNNNN  3 0xE0,0x90  2 0xE0,0x90
 42 PNNNO  3 0xA8,0x88  1 0xA8,0x88
 43 PNNNP  3 0x80,0xE0  2 0x80,0xE0
 44 PNNON  3 0x80,0x78  2 0x80,0x78
 45 PNNOO  3 0x70,0x20  1 0x70,0x20
 46 PNNOP  3 0x50,0x20  3 0x50,0x20
 47 PNNPN  3 0x40,0x40  2 0x40,0x40
 48 PNNPO  3 0x30,0x10  3 0x30,0x10
 49 PNNPP  3 0x30,0x00  3 0x30,0x00
 50 PNONN  3 0x20,0x40  3 0x20,0x40
 51 PNONO  3 0x20,0x00  3 0x20,0x00
 52 PNONP  2 0xF0,0xA8  1 0xF0,0xA8
 53 PNOON  2 0xA8,0x70  1 0xA8,0x70
 54 PNOOO  2 0xA0,0xF0  2 0xA0,0xF0
 55 PNOOP  2 0x90,0xF8  1 0x90,0xF8
 56 PNOPN  2 0x90,0x88  1 0x90,0x88
 57 PNOPO  2 0x88,0xD8  1 0x88,0xD8
 58 PNOPP  2 0x88,0xC8  1 0x88,0xC8
 59 PNPNN  2 0x88,0xA8  1 0x88,0xA8
 60 PNPNO  2 0x88,0x90  1 0x88,0x90
 61 PNPNP  2 0x88,0x50  1 0x88,0x50
 62 PNPON  2 0x80,0x70  1 0x80,0x70
 63 PNPOO  2 0x70,0xF8  1 0x70,0xF8
 64 PNPOP  2 0x70,0x00  2 0x70,0x00
 65 PNPPN  2 0x50,0x88  2 0x50,0x88
 66 PNPPO  2 0x40,0x70  1 0x40,0x70
 67 PNPPP  2 0x30,0x30  2 0x30,0x30
 68 PONNN  2 0x20,0x10  2 0x20,0x10
 69 PONNO  2 0x08,0x30  1 0x08,0x30
 70 PONNP  2 0x00,0x30  2 0x00,0x30
 71 PONON  1 0xF8,0x90  1 0xF8,0x90
 72 PONOO  1 0xF8,0x50  1 0xF8,0x50
 73 PONOP  1 0xF0,0x20  1 0xF0,0x20
 74 PONPN  1 0xD0,0x20  1 0xD0,0x20
 75 PONPO  1 0xB8,0xB8  1 0xB8,0xB8
 76 PONPP  1 0xA8,0x98  1 0xA8,0x98
 77 POONN  1 0xA8,0x20  1 0xA8,0x20
 78 POONO  1 0xA0,0xF8  1 0xA0,0xF8
 79 POONP  1 0x98,0xE8  1 0x98,0xE8
 80 POOON  1 0x90,0xE8  1 0x90,0xE8
 81 POOOO  1 0x90,0x60  1 0x90,0x60
 82 POOOP  1 0x88,0x00  1 0x88,0x00
 83 POOPN  1 0x80,0x98  1 0x80,0x98
 84 POOPO  1 0x80,0x90  1 0x80,0x90
 85 POOPP  1 0x70,0x70  1 0x70,0x70
 86 POPNN  1 0x70,0x60  1 0x70,0x60
 87 POPNO  1 0x70,0x40  1 0x70,0x40
 88 POPNP  1 0x70,0x10  1 0x70,0x10
 89 POPON  1 0x60,0x20  1 0x60,0x20
 90 POPOO  1 0x58,0x98  1 0x58,0x98
 91 POPOP  1 0x50,0xA0  1 0x50,0xA0
 92 POPPN  1 0x48,0x30  1 0x48,0x30
 93 POPPO  1 0x40,0xF8  1 0x40,0xF8
 94 POPPP  1 0x40,0xC0  1 0x40,0xC0
 95 PPNNN  1 0x40,0x80  1 0x40,0x80
 96 PPNNO  1 0x40,0x60  1 0x40,0x60
 97 PPNNP  1 0x40,0x20  1 0x40,0x20
 98 PPNON  1 0x38,0x10  1 0x38,0x10
 99 PPNOO  1 0x30,0x20  1 0x30,0x20
100 PPNOP  1 0x28,0xF8  1 0x28,0xF8
101 PPNPN  1 0x28,0x30  1 0x28,0x30
102 PPNPO  1 0x20,0xA8  1 0x20,0xA8
103 PPNPP  1 0x20,0x60  1 0x20,0x60
104 PPONN  1 0x20,0x58  1 0x20,0x58
105 PPONO  1 0x20,0x30  1 0x20,0x30
106 PPONP  1 0x18,0xF8  1 0x18,0xF8
107 PPOON  1 0x10,0x70  1 0x10,0x70
108 PPOOO  1 0x10,0x50  1 0x10,0x50
109 PPOOP  1 0x10,0x30  1 0x10,0x30
110 PPOPN  1 0x10,0x18  1 0x10,0x18
111 PPOPO  1 0x10,0x08  1 0x10,0x08
112 PPOPP  1 0x10,0x00  1 0x10,0x00
113 PPPNN  1 0x08,0x78  1 0x08,0x78
114 PPPNO  1 0x00,0xC8  1 0x00,0xC8
115 PPPNP  1 0x00,0x80  1 0x00,0x80
116 PPPON  1 0x00,0x40  1 0x00,0x40
117 PPPOO  1 0x00,0x10  1 0x00,0x10
118 PPPOP  1 0x00,0x08  1 0x00,0x08
119 PPPPN  0 0x03,0x03 <<< alarm 3
120 PPPPO  0 0x02,0x02 <<< alarm 2
121 PPPPP  0 0x01,0x01 <<< alarm 1

 -1 OOOON  0 0x08,0x00 (good for 4th block) --> 0x0C,0x0C ?
 -2 OOONP  0 0x20,0x00 (good for 4th block) --> 0x30,0x30 ?
 -3 OOONO  0 0x28,0x00 (good for 4th block) --> 0x3C,0x3C ?
 -4 OOONN  0 0x80,0x00 (good for 4th block) --> 0xC0,0xC0 ???
 -5 OONPP  0 0x88,0x00 (good for 4th block) --> 0xCC,0xCC ?
 -6 OONPO  0 0xA0,0x00 (good for 4th block) --> 0xF0,0xF0 ?
 -7 OONPN  0 0xA8,0x00 (good for 4th block) --> 0xFC,0xFC ?
 -8 OONOP  0 reserved for 4th block
 -9 OONOO  0 reserved for 4th block
-10 OONON  0 reserved for 4th block
-11 OONNP  0 reserved for 4th block
-12 OONNO  0 reserved for 4th block
-13 OONNN  0 reserved for 4th block
-14 ONPPP  3 0xA8,0xE8
-15 ONPPO  3 0x98,0x68
-16 ONPPN  3 0x90,0x90
-17 ONPOP  3 0x70,0xA8
-18 ONPOO  2 0xD8,0x50
-19 ONPON  2 0xD0,0x50
-20 ONPNP  2 0xD0,0x10
-21 ONPNO  2 0xC8,0x88
-22 ONPNN  2 0xA8,0xF8
-23 ONOPP  2 0xA8,0x78
-24 ONOPO  2 0x98,0xA8
-25 ONOPN  2 0x58,0x50
-26 ONOON  2 0x58,0x40
-27 ONOOO  2 0x48,0x90
-28 ONOON  2 0x48,0x88
-29 ONONP  2 0x40,0x78
-30 ONONO  2 0x20,0xE0
-31 ONONN  2 0x20,0x38
-32 ONNPP  2 0x00,0xA8
-33 ONNPO  1 0xF8,0xA8
-34 ONNPN  1 0xF0,0x90
-35 ONNOP  1 0xF0,0x80
-36 ONNOO  1 0xF0,0x30
-37 ONNON  1 0xF0,0x10
-38 ONNNP  1 0xF0,0x00
-39 ONNNO  1 0xE8,0xB8
-40 ONNNN  1 0xE0,0x00
-41 NPPPP  1 0xD8,0x20
-42 NPPPO  1 0xC0,0xF8
-43 NPPPN  1 0xC0,0x70
-44 NPPOP  1 0xC0,0x40
-45 NPPOO  1 0xC0,0x00
-46 NPPON  1 0xB0,0xC8
-47 NPPNP  1 0xB0,0xA8
-48 NPPNO  1 0xA8,0x90
-49 NPPNN  1 0xA8,0x00
-50 NPOPP  1 0xA0,0xE0
-51 NPOPO  1 0x90,0xF0
-52 NPOPN  1 0x90,0xA8
-53 NPOOP  1 0x90,0xA0
-54 NPOOO  1 0x90,0x78
-55 NPOON  1 0x88,0xF0
-56 NPONP  1 0x88,0xE8
-57 NPONO  1 0x78,0x40
-58 NPONN  1 0x78,0x20
-59 NPNPP  1 0x78,0x00
-60 NPNPO  1 0x70,0x38
-61 NPNPN  1 0x58,0xA8
-62 NPNOP  1 0x50,0xF0
-63 NPNOO  1 0x50,0xD0
-64 NPNON  1 0x50,0x78
-65 NPNNP  1 0x50,0x58
-66 NPNNO  1 0x48,0x48
-67 NPNNN  1 0x38,0x00
-68 NOPPP  1 0x30,0x88
-69 NOPPO  1 0x30,0x50
-70 NOPPN  1 0x28,0x48
-71 NOPOP  1 0x20,0xD8
-72 NOPOO  1 0x18,0x00
-73 NOPON  1 0x10,0x78
-74 NOPNP  1 0x08,0x70
-75 NOPNO  1 0x08,0x38
-76 NOPNN  1 0x00,0xF0
-77 NOOPP  1 0x00,0xE0
-78 NOOPO  1 0x00,0x78
-79 NOOPN  1 0x00,0x38
-80 NOOOP  0 0x88,0xE0 <<< big yo middle
-81 NOOOO  0 0x50,0xF8 <<< big yo top
-82 NOOON  0 0x50,0x00 <<< small yo top
...

Причём пронумеровал так, чтобы всё что нужно было для четвёртого (неполного) блока могло бы нумероваться 3 тритами (для большинства символов которые без хвостов эти три трита будут нулевыми), а блоки нужные для построения символов стандартного ASCII с кодами до 127 кодировались бы положительными числами - в таком случае любой символ из этого шрифта можно задать 3 трайтами:

  • первый трайт - старший трит задаёт старший трит триады для нумерации четвёртого блока, а оставшиеся 5 задают код для первого блока
  • второй трайт - старший трит задаёт средний трит триады для нумерации четвёртого блока, а оставшиеся 5 задают код для второго блока
  • третий трайт - старший трит задаёт младший трит триады для нумерации четвёртого блока, а оставшиеся 5 задают код для третьего блока

Кроме символов шрифта nedoText также можно получить любые другие конструкции из этих блоков 5x2 и в таблице нумераций имеются дырки для расширений на будущее (58 дополнительных блоков 5x2 из которых 13 может использоваться для увеличения разнообразия символьных "хвостов" в четвёртом блоке).

P.S. Для физической реализации такого знакогенератора можно взять 2Кб ПЗУ, 10 битов адреса которого будут получаться прямым преобразованием 5 тритов кода блока (P->01,O->00,N->10), а 11й бит (старший) будет указывать какую строчку блока надо отображать на дисплее - чётную или нечётную - 6 битов байта строчки (старший бит 7 - левый край символа, бит 3 - правый край символа, бит 2 - всегда (?) ноль для разделения символов и биты 1 и 0 могут использоваться для организации неких внешних сигналов - см. alarm 1,2,3 в таблице). Если ориентироваться на дисплей VGA с режимом 640x400, то в один экран можно утолкать 106x50 символов т.е. нужна будет троичная память умещающая в себя как минимум пять тысяч кодов. Либо можно слегка притормозить пиксельклок примерно до 19 МГц и уместить в строку более троичное количество символов - 81, тогда нужна будет память на 81x50=4050 кодов или 12150 трайтов (при этом расширенной псевдографикой можно будет рисовать с разрешением 162x100, а если немного смухлевать и утолкать в одно знакоместо 3x4 точки, то это уже будет разрешение 243x200). Кодировать символы можно трайтами, которые будут индексировать элементы таблицы перекодировки, где каждому символу будет соответствовать 3 трайта, как описано выше (т.е. нужно будет ещё 729x3=2187 трайтов памяти).

P.P.S. Вот для сравнения - текстовый экран 106x50 (если сохранять стандартный VGA пиксельклок 25,175 МГц):
Attachment:
Text106x50.jpg
Text106x50.jpg [ 87.9 KiB | Viewed 1182 times ]

текстовый экран 81x50 (более троичное количество символов в строке - легче вычислять местоположение символа в памяти по его координатам):
Attachment:
Text81x50.jpg
Text81x50.jpg [ 70.98 KiB | Viewed 1182 times ]

текстовый экран 81x25 (каждая вторая строчка растра повторяет первую):
Attachment:
Text81x25.jpg
Text81x25.jpg [ 63.02 KiB | Viewed 1182 times ]

стандартная псевдографика 162x50 (половинки знакоместа - стандартная кодовая страница доса):
Attachment:
162x50.jpg
162x50.jpg [ 49.35 KiB | Viewed 1182 times ]

стандартная псевдографика 81x50 (знакоместа заполняются паттернами для имитации 5 градаций серого):
Attachment:
81x50g5.jpg
81x50g5.jpg [ 41.82 KiB | Viewed 1182 times ]

расширенная псевдографика 162x100 (четвертинки знакоместа - надо добавить ещё 10 символов, чтобы покрыть все комбинации с расположением 2x2):
Attachment:
162x100.jpg
162x100.jpg [ 60.68 KiB | Viewed 1182 times ]

суперпсевдографика с мухлежом 243x200 (12 точек на знакоместо с расположением 3x4):
Attachment:
243x200.jpg
243x200.jpg [ 89.29 KiB | Viewed 1182 times ]

(тут все варианты развёрнуты в 640x360 с сохранением правильного соотношения сторон 16:9 для удобоваримости - мониторов 4:3 всё-равно уже несуществует)

_________________
:eugeek: https://twitter.com/Shaos1973


23 May 2020 23:42
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Для триадора да даже и для 3niti alpha такой подход наверное будет тяжеловат, а вот в Tryte-I вполне можно такое приделать ( или к реально построенной троичной ЭВМ Tunguska, если такая когда-нибудь появится ; )

_________________
:eugeek: https://twitter.com/Shaos1973


24 May 2020 17:16
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Shaos wrote:
Либо можно слегка притормозить пиксельклок примерно до 19 МГц и уместить в строку более троичное количество символов - 81...

Если взять пиксельклок 20 МГц (более распространённые кристаллы и осцилляторы), то экран будет чуть уже:
Attachment:
Text81x50_20MHz.jpg
Text81x50_20MHz.jpg [ 71.44 KiB | Viewed 1033 times ]

Теоретически можно ещё 8-цветный режим 162x50 поддержать (когда 3 плана 81x25 раскрашивают каждый свою цветовую составляющую расширенной псевдографикой):
Attachment:
162x50_20MHz_color.jpg
162x50_20MHz_color.jpg [ 99.94 KiB | Viewed 1179 times ]

При использовании символов, имитирующих 4 градации яркости можно получить 64 цвета, но с очень маленьким разрешением 81x25:
Attachment:
81x25_20MHz_color.png
81x25_20MHz_color.png [ 3.99 KiB | Viewed 1177 times ]

А если мухлёж допустить (когда блоки 5x2 программируются независимо друг от друга и напрямую), то 8-цветное разрешение может достичь 243x100 :o
Attachment:
243x100_20MHz_color.jpg
243x100_20MHz_color.jpg [ 140.85 KiB | Viewed 1179 times ]

По-идее можно написать программу, которая перебирая все доступные "библиотечные" блоки 5x2 для всех трёх планов, будет рисовать самое оптимальное приближение к оригинальному цветному изображению - тогда в пределе можно достичь разрешения порядка 486x200, однако поверх изображения будет наложена чёрная сеточка т.к. этот шрифт подразумевает однопиксельные отступы между символами по горизонтали и вертикали (в псевдографических режимах этой сеточки недолжно быть заметно т.к. внутри символов псевдографики также есть однопиксельные дырки - хотя наверное можно отдельный трит завести, который отключал бы эту сеточку специально для графических режимов).

Также для чёрно-белых режимов можно поддержать аппаратный скроллинг текста в пределах 81 строк, замкнутых в кольцо. Выходит у нас 3 режима:

N - чёрно-белый 81x25 с аппаратным скролом в пределах 81 строк (режим по умолчанию);
O - чёрно-белый 81x50 с аппаратным скролом в пределах 81 строк;
P - цветной 81x25 без скрола (так как уже используются 75 строк).

Смещение для скрола можно как параметр режима задавать - это 4 трита (для цветного режима они могут например задавать палитру, хотя это наверное можно отложить на будущее).

P.S. Шестой (старший) трит можно отвести на убирание чёрной сеточки, чтобы знакоместа расширились до 6x8 для бесшовной псевдографики - скажем при N - обычные режими с сеточкой, O - без сеточки (бесшовные знакоместа), а P оставить для расширенных видеорежимов на будущее с уже обычным растром трайт на пиксел...

_________________
:eugeek: https://twitter.com/Shaos1973


25 May 2020 01:15
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Значит так - для того чтобы информация обо всех четырёх блоках читалась одновременно надо иметь 3 паралелльных памяти на 81x81=6561 трайтов, а чтобы ещё и цветовую информацию читать (RGB раздельно друг от друга) надо разделить каждую память ещё на 3, т.е. всего будет 9 отдельных памятей на 81x27=2187 трайтов, однако чтобы работал скроллинг надо иметь возможность прозрачно по ним двигаться в зависимости от вертикального смещения. Знакоместо состоит из 4 блоков (в 3 планах для цвета) - номер первого блока читается из первой памяти, второго из второй, третьего из третьей, а номер четвёртого блока составляется из тритов из всех трёх памятей, поэтому они должны быть доступны параллельно. Теоретически возможно поменять логику для чисто графического режима так, чтобы все пикселы полного знакоместа 6x8=48 брались бы из разных мест этих девяти трайтов что есть 54 трита - пара тритов даёт 9 вариаций, чего достаточно для формирования 8 цветов (9й цвет можно оставить под прозрачность либо сделать его серым), соответственно 54 трита может дать 27 разных цветов, мы можем взять 24 из них (проигнорировав 9й трайт) что поможет нам раскрасить пары пикселов, дав скажем графическое разрешение 3x8 на каждое знакоместо, что выльется в полное разрешение экрана в 243x200 при девяти цветах:

Attachment:
243x200_20MHz_9colors.jpg
243x200_20MHz_9colors.jpg [ 190.19 KiB | Viewed 1142 times ]

Второй графический режим может быть палитровым, когда пара тритов раскрашивают пару пикселов в 3 разных цвета из палитры в полном разрешении 486x200. Палитра для знакоместа может задаваться тем самым 9м трайтом - по 2 трита на каждый индекс палитры - девятый цвет может быть серым:

NN (-4) - MAGENTA
NO (-3) - YELLOW
NP (-2) - WHITE
ON (-1) - GRAY
OO (0) - BLACK
OP (1) - BLUE
PN (2) - GREEN
PO (3) - CYAN
PP (4) - RED

Ещё один графический режим может быть когда мы не знакоместа вовсе раскрашиваем, а ряды из пикселов - по 3*9=27 пикселов на каждые 9 трайтов - 243 сдвоенных пиксела в ряд, итого:

NNxxxx - чёрно-белый текстовый режим 81x25 (режим по умолчанию) со скролом в пределах 81 строк и отступами между символами (может имитировать чёрно-белый графический режим 162x50 с помощью расширенной псевдографики);
NOxxxx - чёрно-белый текстовый режим 81x50 со скролом в пределах 81 строк и отступами между символами (может имитировать чёрно-белый графический режим 162x100 с помощью расширенной псевдографики);
NPxxxx - 8 цветный текстовый режим 81x25 со скролом в пределах 27 строк и с отступами между символами (может имитировать цветной графический режим 162x50 с помощью расширенной псевдографики);
ONxxxx - чёрно-белый текстовый режим 81x25 со скролом в пределах 81 строк и с бесшовными знакоместами (может имитировать чёрно-белый графический режим 243x100 с помощью прямого вывода специальных xxx-блоков);
OOxxxx - чёрно-белый текстовый режим 81x50 со скролом в пределах 81 строк и с бесшовными знакоместами (может имитировать чёрно-белый графический режим 243x200 с помощью прямого вывода специальных xxx-блоков);
OPxxxx - 8 цветный текстовый режим 81x25 со скролом в пределах 27 строк и с бесшовными знакоместами (для имитации цветного графического режима 243x100 с помощью прямого вывода специальных xxx-блоков);
PNxxxx - цветной графический режим 243x216 (9 цветов) без скрола и с раскрашиванием пар пикселов в пределах полного знакоместа 6x8 (девятый трайт игнорируется);
POxxxx - цветной графический режим 486x216 без скрола и с 3-цветной палитрой (из 9) в пределах полного знакоместа 6x8 (палитра в девятом трайте как описано выше);
PPxxxx - цветный графический режим 243x216 (9 цветов) без скрола с раскрашиванием пар пикселов и линейной адресацией в памяти (будущее т.к. режим требует хитрой перестановки адресных тритов для удобства программиста).


P.S. По идее наверное можно и для цветных режимов скролл поддержать, хоть там скроллиться можно только в пределах 27 строк (или не заморачиваться?)

P.P.S. Думаю, что PPxxxx небудет скроллироваться в любом случае, поэтому пусть xxxx означает будущие гипотетические графические режимы, способные выдаваться через аналоговый VGA кабель:
PPOOOO - цветной графический режим 243x216 (9 цветов) как описано выше (всё ещё пиксельклок 20 МГц);
PPOOOP - 297x198 (9 цветов) - максимально возможное разрешение при 9 цветах без расширения видеопамяти (но тут и ниже уже нужна частота 25.175 МГц);
PPOOPN - 320x200@70Hz (ratio 1.6);
PPOOPO - 320x240@60Hz (ratio 1.33);
PPOOPP - 640x350@70Hz (ratio 1.83);
PPOPNN - 640x400@70Hz (ratio 1.6);
PPOPNO - 640x480@60Hz (ratio 1.33);
и т.д. (инфа по разным разрешениям и их времянкам: http://martin.hinner.info/vga/timing.html)
Представление цветов в троичной памяти может быть вовсе не RGB, а очень даже Y'UV (см. https://en.wikipedia.org/wiki/YUV) скажем в стандарте BT.709 где Y' может принимать значения от 0 до 1, а U и V от -0.5 до +0.5 (т.е. они будут представляться настоящим дробным числом с фиксированной точкой от .NNNNNN до .PPPPPP а из Y можно вычесть 0.5, чтобы тоже уложить в тот же диапазон)

P.P.S. 31 мая 2020 года решил слегка переставить текстовые режимы, а также развернул графические режимы во всю высоту памяти - 27 знакомест в высоту вместо 25 (и соответственно запретил скролл) т.е. вертикальное разрешение станет 216 вместо 200, что потребует перейти в развёртку 640x480 (с повторением каждой графической строки растра дважды) причём с бордюром, в который можно выводить цвета загружаемых с магнитофона тритов! :mrgreen:

Attachment:
243x216_20MHz_9colors.jpg
243x216_20MHz_9colors.jpg [ 150.89 KiB | Viewed 1037 times ]


Палитровый режим 486x216 например может быть использован для рисования изображений с 3 градациями серого (такая палитра будет состоять из цветов 0, -1 и -2):

Attachment:
486x216_20MHz_gray3.jpg
486x216_20MHz_gray3.jpg [ 108.32 KiB | Viewed 1028 times ]

_________________
:eugeek: https://twitter.com/Shaos1973


25 May 2020 23:25
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
Меня вот такая мысль частенько посещает: мы знаем, что двоичная логика - подмножество троичной.
И в этом плане схемы на троичных и двоичных логических элементах должны быть совместимы.

Так вот мысль в том, должна ли таблица ASCII как-то коррелировать с кодировкой символов в троичной системе?
Извини заранее, если я что-то подзабыл или пропустил в обсуждении.

_________________
iLavr


26 May 2020 11:53
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Lavr wrote:
Меня вот такая мысль частенько посещает: мы знаем, что двоичная логика - подмножество троичной.
И в этом плане схемы на троичных и двоичных логических элементах должны быть совместимы.

Так вот мысль в том, должна ли таблица ASCII как-то коррелировать с кодировкой символов в троичной системе?
Извини заранее, если я что-то подзабыл или пропустил в обсуждении.
Ну в самом начале я привёл пример того, как я пытался текст утолкать в 3 трита, а сейчас вот думаю, что имея трайты можно просто коды ASCII хранить по одному на трайт как числа от 0 и выше - типа +32 это пробел и т.д. :mrgreen:

Теоретически в будущем 9-тритном компьютере можно хранить ASCII в двоичном виде, представляя 1 трит как 1 бит и между такими символами можно засунуть троичное ASCII-расширение :)

OOOPOOOOO (+243) - представляет двоичный ASCII-код 0x20 что есть ' '
OOOPOOOOP (+244) - представляет двоичный ASCII-код 0x21 что есть '!'
OOOPOOOPN (+245) - не имеет двоичного представления и может представлять новый символ в троичной ASCII-таблице - типа знак фунта-стерлинга ( или рубля ; )
OOOPOOOPO (+246) - представляет двоичный ASCII-код 0x22 что есть '"'
и т.д.

ProMiNick wrote:
Объединение букв разных языков в единый символ, только по тому что у них схожее начертание - дизлайк.
Каждый символ не занимает ровно 1 машинный атом - дизлайк. (под машинным атомом имею в виду байт в случае бинарных, трайт - в случае тернарных машин).

Прошу прощения за критику.
Ну в памяти текст можно всё также хранить как ASCII коды - один код на трайт ( и даже есть место для расширения оставаясь в рамках одного трайта : ) - в 3 трайта оно превратится непосредственно при копировании в видеопамять...

По типам троичных данных я вот к таким наименованиям склоняюсь с 2008 года: http://www.nedopc.org/forum/viewtopic.php?p=636#p636

Остальное от ProMiNick отделил в отдельный топик т.к. это уже будет про ДРУГОЙ троичный компьютер ;)

P.S. Сегодня добавил в название топика аббревиатуру TGA - Ternary Graphics Adapter ;)

P.P.S. Хотя наверное оно путаницу создаёт с TARGA и её графическим форматом TGA? У меня ведь тоже свой графический формат данных предусматривается - 3GA может быть тогда? Или назвать сам адаптер TERGA, а файловый формат .3GA? И пусть он будет текстовый...

_________________
:eugeek: https://twitter.com/Shaos1973


26 May 2020 18:10
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Добавил символы для поддержки рисования схем (по аналогии с Circuits.CC, но без PCB) и кое-чего попереставлял и расширил псевдографику для "бесшовного" рисования:

 table
Code:
BLOCK     FULL         ASCII
  0 OOOOO 89 0x00,0x00 37 0x00,0x00 <<< 4th (153/84)
  1 OOOOP  3 0x20,0x00  3 0x20,0x00 <<< 4th (19/5) 
  2 OOOPN 43 0x88,0x88 23 0x88,0x88 <<< 4th (1/0)   
  3 OOOPO 14 0xF8,0x88 11 0xF8,0x88 <<< 4th (1/1)   
  4 OOOPP 11 0x80,0x80  7 0x80,0x80 <<< 4th (2/1)   
  5 OOPNN  4 0xD8,0xD8              <<< 4th (2/0)   
  6 OOPNO 24 0x50,0x50  2 0x50,0x50 <<< 4th (14/0) 
  7 OOPNP 12 0xA8,0xA8  3 0xA8,0xA8 <<< 4th (2/0)   
  8 OOPON 39 0x20,0x20 17 0x20,0x20 <<< 4th (19/5) 
  9 OOPOO  9 0x70,0x88  3 0x70,0x88 <<< 4th (5/2)   
 10 OOPOP  5 0x08,0xF8  5 0x08,0xF8 <<< 4th (5/1)   
 11 OOPPN  2 0x18,0x18              <<< 4th (1/0)   
 12 OOPPO  3 0x60,0x30  3 0x60,0x30 <<< 4th (1/1)   
 13 OOPPP  3 0x30,0x60  3 0x30,0x60 <<< 4th (1/1)   
 14 OPNNN 27 0x88,0xF8 20 0x88,0xF8
 15 OPNNO  9 0x88,0x70  3 0x88,0x70
 16 OPNNP  9 0x78,0x88  6 0x78,0x88
 17 OPNON  7 0xF8,0x00
 18 OPNOO  6 0x78,0x08  2 0x78,0x08
 19 OPNOP  5 0xF0,0x88  2 0xF0,0x88
 20 OPNPN  5 0xE0,0x20
 21 OPNPO  5 0x88,0x78  2 0x88,0x78
 22 OPNPP  5 0x50,0xF8  1 0x50,0xF8
 23 OPONN  5 0x38,0x48
 24 OPONO  5 0x38,0x20
 25 OPONP  5 0x20,0x70  4 0x20,0x70
 26 OPOON  5 0x08,0x08  4 0x08,0x08
 27 OPOOO  5 0x00,0x20  4 0x00,0x20
 28 OPOOP  4 0xF8,0x80  3 0xF8,0x80
 29 OPOPN  4 0xF8,0x20  1 0xF8,0x20
 30 OPOPO  4 0xF8,0x08  4 0xF8,0x08
 31 OPOPP  4 0xD8,0x00
 32 OPPNN  4 0xA8,0x50  1 0xA8,0x50
 33 OPPNO  4 0x80,0xF8  4 0x80,0xF8
 34 OPPNP  4 0x80,0xF0  2 0x80,0xF0
 35 OPPON  4 0x48,0x78
 36 OPPOO  4 0x20,0xF8  2 0x20,0xF8
 37 OPPOP  4 0x20,0x50  3 0x20,0x50
 38 OPPPN  4 0x10,0x20  3 0x10,0x20
 39 OPPPO  4 0x10,0x10  4 0x10,0x10
 40 OPPPP  4 0x00,0xF8  1 0x00,0xF8
 41 PNNNN  3 0xE0,0x90  2 0xE0,0x90
 42 PNNNO  3 0xA8,0x88  1 0xA8,0x88
 43 PNNNP  3 0x80,0xE0  2 0x80,0xE0
 44 PNNON  3 0x80,0x78  2 0x80,0x78
 45 PNNOO  3 0x70,0x20  1 0x70,0x20
 46 PNNOP  3 0x50,0x20  3 0x50,0x20
 47 PNNPN  3 0x40,0x40  2 0x40,0x40
 48 PNNPO  3 0x30,0x10  3 0x30,0x10
 49 PNNPP  3 0x30,0x00  3 0x30,0x00
 50 PNONN  3 0x20,0x40  3 0x20,0x40
 51 PNONO  2 0xF0,0xA8  1 0xF0,0xA8
 52 PNONP  2 0xA8,0x70  1 0xA8,0x70
 53 PNOON  2 0xA0,0xF0  2 0xA0,0xF0
 54 PNOOO  2 0x90,0xF8  1 0x90,0xF8
 55 PNOOP  2 0x90,0x88  1 0x90,0x88
 56 PNOPN  2 0x88,0xD8  1 0x88,0xD8
 57 PNOPO  2 0x88,0xC8  1 0x88,0xC8
 58 PNOPP  2 0x88,0xA8  1 0x88,0xA8
 59 PNPNN  2 0x88,0x90  1 0x88,0x90
 60 PNPNO  2 0x88,0x50  1 0x88,0x50
 61 PNPNP  2 0x80,0x70  1 0x80,0x70
 62 PNPON  2 0x70,0xF8  1 0x70,0xF8
 63 PNPOO  2 0x70,0x00  2 0x70,0x00
 64 PNPOP  2 0x50,0x88  2 0x50,0x88
 65 PNPPN  2 0x40,0x70  1 0x40,0x70
 66 PNPPO  2 0x30,0x30  2 0x30,0x30
 67 PNPPP  2 0x20,0x10  2 0x20,0x10
 68 PONNN  2 0x08,0x30  1 0x08,0x30
 69 PONNO  2 0x00,0x30  2 0x00,0x30
 70 PONNP  1 0xF8,0x90  1 0xF8,0x90
 71 PONON  1 0xF8,0x50  1 0xF8,0x50
 72 PONOO  1 0xF0,0x20  1 0xF0,0x20
 73 PONOP  1 0xD0,0x20  1 0xD0,0x20
 74 PONPN  1 0xB8,0xB8  1 0xB8,0xB8
 75 PONPO  1 0xA8,0x98  1 0xA8,0x98
 76 PONPP  1 0xA8,0x20  1 0xA8,0x20
 77 POONN  1 0xA0,0xF8  1 0xA0,0xF8
 78 POONO  1 0x98,0xE8  1 0x98,0xE8
 79 POONP  1 0x90,0xE8  1 0x90,0xE8
 80 POOON  1 0x90,0x60  1 0x90,0x60
 81 POOOO  1 0x88,0x00  1 0x88,0x00
 82 POOOP  1 0x80,0x98  1 0x80,0x98
 83 POOPN  1 0x80,0x90  1 0x80,0x90
 84 POOPO  1 0x70,0x70  1 0x70,0x70
 85 POOPP  1 0x70,0x60  1 0x70,0x60
 86 POPNN  1 0x70,0x40  1 0x70,0x40
 87 POPNO  1 0x70,0x10  1 0x70,0x10
 88 POPNP  1 0x60,0x20  1 0x60,0x20
 89 POPON  1 0x58,0x98  1 0x58,0x98
 90 POPOO  1 0x50,0xA0  1 0x50,0xA0
 91 POPOP  1 0x48,0x30  1 0x48,0x30
 92 POPPN  1 0x40,0xF8  1 0x40,0xF8
 93 POPPO  1 0x40,0xC0  1 0x40,0xC0
 94 POPPP  1 0x40,0x80  1 0x40,0x80
 95 PPNNN  1 0x40,0x60  1 0x40,0x60
 96 PPNNO  1 0x40,0x20  1 0x40,0x20
 97 PPNNP  1 0x38,0x10  1 0x38,0x10
 98 PPNON  1 0x30,0x20  1 0x30,0x20
 99 PPNOO  1 0x28,0xF8  1 0x28,0xF8
100 PPNOP  1 0x28,0x30  1 0x28,0x30
101 PPNPN  1 0x20,0xA8  1 0x20,0xA8
102 PPNPO  1 0x20,0x60  1 0x20,0x60
103 PPNPP  1 0x20,0x58  1 0x20,0x58
104 PPONN  1 0x20,0x30  1 0x20,0x30
105 PPONO  1 0x18,0xF8  1 0x18,0xF8
106 PPONP  1 0x10,0x70  1 0x10,0x70
107 PPOON  1 0x10,0x50  1 0x10,0x50
108 PPOOO  1 0x10,0x30  1 0x10,0x30
109 PPOOP  1 0x10,0x18  1 0x10,0x18
110 PPOPN  1 0x10,0x08  1 0x10,0x08
111 PPOPO  1 0x10,0x00  1 0x10,0x00
112 PPOPP  1 0x08,0x78  1 0x08,0x78
113 PPPNN  1 0x00,0xC8  1 0x00,0xC8
114 PPPNO  1 0x00,0x80  1 0x00,0x80
115 PPPNP  1 0x00,0x40  1 0x00,0x40
116 PPPON  1 0x00,0x10  1 0x00,0x10
117 PPPOO  1 0x00,0x08  1 0x00,0x08
118 PPPOP  0 reserved
119 PPPPN  0 reserved
120 PPPPO  0 reserved
121 PPPPP  0 0x01,0x01 <<< alarm 1

  -1 OOOON 0 0x0C,0x0E (good for 4th block and 8th line)
  -2 OOONP 0 0x30,0x32 (good for 4th block and 8th line)
  -3 OOONO 0 0x3C,0x3E (good for 4th block and 8th line)
  -4 OOONN 3 0xC0,0xC2 (good for 4th block and 8th line)
  -5 OONPP 0 0xCC,0xCE (good for 4th block and 8th line)
  -6 OONPO 0 0xF0,0xF2 (good for 4th block and 8th line)
  -7 OONPN 0 0xFC,0xFE (good for 4th block and 8th line)
  -8 OONOP 0 0x20,0x22 (good for 4th block and 8th line)
  -9 OONOO 0 0x50,0x52 (good for 4th block and 8th line)
 -10 OONON 0 0xA8,0x22 (good for 4th block and 8th line)
 -11 OONNP 0 0x54,0xFE (good for 4th block and 8th line)
 -12 OONNO 0 0xA8,0x56 (good for 4th block and 8th line)
 -13 OONNN 0 reserved for 4th block
 -14 ONPPP 3 0xA8,0xE8
 -15 ONPPO 3 0x98,0x68
 -16 ONPPN 3 0x90,0x90
 -17 ONPOP 3 0x70,0xA8
 -18 ONPOO 2 0xD8,0x50
 -19 ONPON 2 0xD0,0x50
 -20 ONPNP 2 0xD0,0x10
 -21 ONPNO 2 0xC8,0x88
 -22 ONPNN 2 0xA8,0xF8
 -23 ONOPP 2 0xA8,0x78
 -24 ONOPO 2 0x98,0xA8
 -25 ONOPN 2 0x58,0x50
 -26 ONOON 2 0x58,0x40
 -27 ONOOO 2 0x48,0x90
 -28 ONOON 2 0x48,0x88
 -29 ONONP 2 0x40,0x78
 -30 ONONO 2 0x20,0xE0
 -31 ONONN 2 0x20,0x38
 -32 ONNPP 2 0x00,0xA8
 -33 ONNPO 1 0xF8,0xA8
 -34 ONNPN 1 0xF0,0x90
 -35 ONNOP 1 0xF0,0x80
 -36 ONNOO 1 0xF0,0x30
 -37 ONNON 1 0xF0,0x10
 -38 ONNNP 1 0xF0,0x00
 -39 ONNNO 1 0xE8,0xB8
 -40 ONNNN 1 0xE0,0x00
 -41 NPPPP 1 0xD8,0x20
 -42 NPPPO 1 0xC0,0xF8
 -43 NPPPN 1 0xC0,0x70
 -44 NPPOP 1 0xC0,0x40
 -45 NPPOO 1 0xC0,0x00
 -46 NPPON 1 0xB0,0xC8
 -47 NPPNP 1 0xB0,0xA8
 -48 NPPNO 1 0xA8,0x90
 -49 NPPNN 1 0xA8,0x00
 -50 NPOPP 1 0xA0,0xE0
 -51 NPOPO 1 0x90,0xF0
 -52 NPOPN 1 0x90,0xA8
 -53 NPOOP 1 0x90,0xA0
 -54 NPOOO 1 0x90,0x78
 -55 NPOON 1 0x88,0xF0
 -56 NPONP 1 0x88,0xE8
 -57 NPONO 1 0x78,0x40
 -58 NPONN 1 0x78,0x20
 -59 NPNPP 1 0x78,0x00
 -60 NPNPO 1 0x70,0x38
 -61 NPNPN 1 0x58,0xA8
 -62 NPNOP 1 0x50,0xF0
 -63 NPNOO 1 0x50,0xD0
 -64 NPNON 1 0x50,0x78
 -65 NPNNP 1 0x50,0x58
 -66 NPNNO 1 0x48,0x48
 -67 NPNNN 1 0x38,0x00
 -68 NOPPP 1 0x30,0x88
 -69 NOPPO 1 0x30,0x50
 -70 NOPPN 1 0x28,0x48
 -71 NOPOP 1 0x20,0xD8
 -72 NOPOO 1 0x18,0x00
 -73 NOPON 1 0x10,0x78
 -74 NOPNP 1 0x08,0x70
 -75 NOPNO 1 0x08,0x38
 -76 NOPNN 1 0x00,0xF0
 -77 NOOPP 1 0x00,0xE0
 -78 NOOPO 1 0x00,0x78
 -79 NOOPN 1 0x00,0x38
 -80 NOOOP 0 0x88,0xE0 <<< middle of big yo (0xF0)
 -81 NOOOO 0 0x50,0xF8 <<< top of big yo (0xF0)
 -82 NOOON 0 0x50,0x00 <<< top of small yo (0xF1)
 -83 NOONP 0 0x70,0xFC <<< middle of node with both wires
 -84 NOONO 0 0x70,0x7C <<< middle of node with right wire
 -85 NOONN 0 0x70,0xF0 <<< middle of node with left wire
 -86 NONPP 0 0x88,0x8C <<< middle of inversion sign
 -87 NONPO 0 0xA0,0x60 <<< middle of top of mux
 -88 NONPN 0 0x18,0x04 <<< lower middle of top of mux
 -89 NONOP 0 0x00,0x04 <<< upper part of bottom of mux
 -90 NONOO 0 0x18,0x60 <<< middle of bottom of mux
 -91 NONON 0 0x80,0x00 <<< lower middle of bottom of mux
 -92 NONNP 0 0x00,0x7C <<< middle of shortened horizontal (0xFE) and 0xD6
 -93 NONNO 0 0xA8,0x08 <<< top of tile (0xFF)
 -94 NONNN 0 0x88,0x08 <<< middle of tile (0xFF)
 -95 NNPPP 0 0x20,0x3C <<< for extended 0xC0 and 0xC3
 -96 NNPPO 0 0x20,0xFC <<< for extended 0xC1 and 0xC5
 -97 NNPPN 0 0x00,0xFC <<< for extended 0xC2,0xC4 and 0xD2
 -98 NNPOP 0 0x50,0xFC <<< for extended 0xD0 and 0xD7
 -99 NNPOO 0 0x50,0x7C <<< for extended 0xD3 and 0xD7
-100 NNPON 0 0x00,0x3C <<< for extended 0xDA
-101 NNPNP 0 0x3C,0x20 <<< for extended 0xC6, 0xD4 and 0xD5
-102 NNPNO 0 0x50,0x5C <<< for extended 0xC7
-103 NNPNN 0 0x5C,0x40 <<< for extended 0xC8 and 0xCC
-104 NNOPP 0 0x5C,0x00 <<< for extended 0xC8
-105 NNOPO 0 0x7C,0x80 <<< for extended 0xC9
-106 NNOPN 0 0x5C,0x50 <<< for extended 0xC9 and 0xCC
-107 NNOOP 0 0xDC,0x00 <<< for extended 0xCA and 0xCE
-108 NNOOO 0 0xFC,0x00 <<< for extended 0xCA,0xCB,0xCD,0xCF and 0xD1
-109 NNOON 0 0xDC,0x50 <<< for extended 0xCB and 0xCE
-110 NNONP 0 0xFC,0x20 <<< for extended 0xD1 and 0xD8
-111 NNONO 0 0x3C,0x00 <<< for extended 0xD4
-112 NNONN 0 0xF8,0xF8 <<< for arrows
-113 NNNPP 0 reserved
-114 NNNPO 0 reserved
-115 NNNPN 0 reserved
-116 NNNOP 0 reserved
-117 NNNOO 0 reserved
-118 NNNON 0 reserved
-119 NNNNP 0 reserved
-120 NNNNO 0 reserved
-121 NNNNN 0 reserved

Кроме того alarm остался один - бит 0 т.к. бит 1 я отвёл на сигнализацию того, что байт пригоден для рисования 8й строчки (если включён соответствующий режим "без сеточки") - это нужно для "бесшовной" псевдографики (если этот бит сброшен, то восьмая строчка будет игнорироваться, точнее она будет использоваться исключительно лишь для рисования курсора)

Осталось место ещё для 13 блоков (помечены как "reserved"), если вдруг чего надумаю добавить или исправить :rotate:

_________________
:eugeek: https://twitter.com/Shaos1973


27 May 2020 00:50
Profile WWW
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 18966
Location: Silicon Valley
Reply with quote
Shaos wrote:
Значит так - для того чтобы информация обо всех четырёх блоках читалась одновременно надо иметь 3 паралелльных памяти на 81x81=6561 трайтов, а чтобы ещё и цветовую информацию читать (RGB раздельно друг от друга) надо разделить каждую память ещё на 3, т.е. всего будет 9 отдельных памятей на 81x27=2187 трайтов, однако чтобы работал скроллинг надо иметь возможность прозрачно по ним двигаться в зависимости от вертикального смещения. Знакоместо состоит из 4 блоков (в 3 планах для цвета) - номер первого блока читается из первой памяти, второго из второй, третьего из третьей, а номер четвёртого блока составляется из тритов из всех трёх памятей, поэтому они должны быть доступны параллельно. Теоретически возможно поменять логику для чисто графического режима так, чтобы все пикселы полного знакоместа 6x8=48 брались бы из разных мест этих девяти трайтов что есть 54 трита - пара тритов даёт 9 вариаций, чего достаточно для формирования 8 цветов (9й цвет можно оставить под прозрачность либо сделать его серым), соответственно 54 трита может дать 27 разных цветов, мы можем взять 24 из них (проигнорировав 9й трайт) что поможет нам раскрасить пары пикселов, дав скажем графическое разрешение 3x8 на каждое знакоместо, что выльется в полное разрешение экрана в 243x200 при девяти цветах. Второй графический режим может быть палитровым, когда пара тритов раскрашивают пару пикселов в 3 разных цвета из палитры в полном разрешении 486x200. Палитра для знакоместа может задаваться тем самым 9м трайтом - по 2 трита на каждый индекс палитры - девятый цвет может быть серым:

NN (-4) - MAGENTA
NO (-3) - YELLOW
NP (-2) - WHITE
ON (-1) - GRAY
OO (0) - BLACK
OP (1) - BLUE
PN (2) - GREEN
PO (3) - CYAN
PP (4) - RED

Ещё один графический режим может быть когда мы не знакоместа вовсе раскрашиваем, а ряды из пикселов - по 3*9=27 пикселов на каждые 9 трайтов - 243 сдвоенных пиксела в ряд, итого:

NNxxxx - чёрно-белый текстовый режим 81x25 (режим по умолчанию) со скролом в пределах 81 строк и отступами между символами (может имитировать чёрно-белый графический режим 162x50 с помощью расширенной псевдографики);
NOxxxx - чёрно-белый текстовый режим 81x50 со скролом в пределах 81 строк и отступами между символами (может имитировать чёрно-белый графический режим 162x100 с помощью расширенной псевдографики);
NPxxxx - 8 цветный текстовый режим 81x25 со скролом в пределах 27 строк и с отступами между символами (может имитировать цветной графический режим 162x50 с помощью расширенной псевдографики);
ONxxxx - чёрно-белый текстовый режим 81x25 со скролом в пределах 81 строк и с бесшовными знакоместами (может имитировать чёрно-белый графический режим 243x100 с помощью прямого вывода специальных xxx-блоков);
OOxxxx - чёрно-белый текстовый режим 81x50 со скролом в пределах 81 строк и с бесшовными знакоместами (может имитировать чёрно-белый графический режим 243x200 с помощью прямого вывода специальных xxx-блоков);
OPxxxx - 8 цветный текстовый режим 81x25 со скролом в пределах 27 строк и с бесшовными знакоместами (для имитации цветного графического режима 243x100 с помощью прямого вывода специальных xxx-блоков);
PNxxxx - цветной графический режим 243x216 (9 цветов) без скрола и с раскрашиванием пар пикселов в пределах полного знакоместа 6x8 (девятый трайт игнорируется);
POxxxx - цветной графический режим 486x216 без скрола и с 3-цветной палитрой (из 9) в пределах полного знакоместа 6x8 (палитра в девятом трайте как описано выше);
PPxxxx - цветный графический режим 243x216 (9 цветов) без скрола с раскрашиванием пар пикселов и линейной адресацией в памяти (будущее т.к. режим требует хитрой перестановки адресных тритов для удобства программиста).

Так как графические режимы будут с бордюром и скрола нету, то мы можем задействовать высвободившиеся триты в коде графического режима под цвет бордюра - если ограничиться теми же 9 цветами, то на это надо только 2 трита - ещё 2 оставшихся трита можно отвести под вывод на магнитофон (чтобы красивую 9-уровневую синусоиду генерировать для Ternary Kansas City и параллельно раскрашивать бордюр при записи и чтении). Кроме того если эти 9 блоков памяти по 2187 трайтов будут просто идти друг за другом в адресном пространстве (скажем в конце памяти c 12-тритной адресацией PPPxxxxxxxxx) можно изобразить эффект загрузки изображения построчно-череззнакоместно как в ZX-спектруме и с мельтешащим 3х-цветным бордюром :mrgreen:


Attachments:
243x216_20MHz_9colors_DOOM.jpg
243x216_20MHz_9colors_DOOM.jpg [ 201.71 KiB | Viewed 1028 times ]

_________________
:eugeek: https://twitter.com/Shaos1973
31 May 2020 18:25
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 10 posts ] 

Who is online

Users browsing this forum: No registered users and 3 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.