Patron, Можно ли добавить опцию подключения карты знакогенератора (bitmap). Тогда в настройках Terminal.ini кроме оригинальных цветов терминалов, будут оригинальные символы.
Спасибо.
Вид для печати
Patron, Можно ли добавить опцию подключения карты знакогенератора (bitmap). Тогда в настройках Terminal.ini кроме оригинальных цветов терминалов, будут оригинальные символы.
Спасибо.
Похоже, что с терминалом такое никогда не будет возможно. Когда дойдёт дело до графической подсистемы - появится объект "Монитор", выводящий поток графических кадров (битмапов размером с эмулируемый экран). Эмуляторы КСМ и КЦГД будут создавать эти кадры и отправлять через поток кадров в монитор для отрисовки. Такой подход позволит отдельно эмулировать графические адаптеры и отдельно - мониторы.
Как это не возможно когда любой терминал генерирует символы.
Речь идет о символьном терминале.
Зачем такие сложности? Лучше разделить графический режим и символьный, где в символьном режиме идет код символа, а терминал (и те же КСМ, КЦГД) печатает символ с соответствии с картой знакогенератора (выбранного терминала).
В графическом режиме (касается только КГД, КЦГД) идет поток битов где отображается в отдельной консоли с автоматическим переключением туда и обратно.
По сути эмуляция КСМ+КГД пускай будут в отдельных консолях, это облегчит эмуляцию. В КЦГД, там сложнее. Лучше КЦГД использовать только графический режим с эмуляцией символьного.
Но просьба была по терминалам, где терминал не использует шрифт, а создает символы из прошивки знакогенератора.
Как выяснилось - эта опция есть уже сейчас. Карта знакогенератора должна быть оформлена в виде растрового FON-шрифта Windows, поддерживающего набор символов RUSSIAN_CHARSET.
Сейчас разобрался с шрифтом 15IE_FONT.fon - у него две ( или три ) проблемы, не позволяющие этому шрифту нормально работать в эмуляторе терминала:
1. Отсутствует RUSSIAN_CHARSET
2. Порядок русских букв не совпадает со шрифтом Fixedsys
3. Размер символов не позволяет нормально выводить в окно.
Поэтому, если (в тестовой сборке) отключить в эмуляторе терминала задание набора символов RUSSIAN_CHARSET, то при выборе шрифта: Fixedsys - загрузка выглядит так:
http://emulator.pdp-11.org.ru/pics/fixedsys.png
а при выборе шрифта: 15IE_FONT - тот же самый экран выглядит так:
http://emulator.pdp-11.org.ru/pics/15IE_FONT.png
Если раздвинуть окно в ширину - можно увидеть весь экран:
http://emulator.pdp-11.org.ru/pics/15IE_FONT(2).png
Я создавал файл в формате fon из карты знакогенератора программой 8х8 rom pixelfont editor.
- - - Добавлено - - -
Вот например как будет выглядеть шрифт от СМ7209
http://i12.pixs.ru/storage/0/4/4/SM7...4_28519044.jpg
- - - Добавлено - - -
Ясно что не годится. Вот и была просьба чтоб сам эмулятор напрямую с прошивкой работал.
Терминал всегда будет выводить шрифты прошивок только из FON-шрифтов Windows. Надо просто научиться правильно их готовить. Возможно - написать правильную утилиту создания FON-шрифтов для эмулятора из шрифтов в прошивках. Кому интересно выводить на терминал шрифты из битовых карт прошивок - могут этим заняться.
Терминал никогда не сможет показать символы с кодами из диапазона 0-31, потому что они всегда распознаются как управляющие. Символы из диапазона 128-159, при перекодировании из набора символов КОИ-8 в набор символов Windows - в текущей версии преобразуются в пробелы. В принципе - их можно пропускать без перекодирования, тогда при наличии нормального FON-шрифта - эти символы будут выведены соответствующими значками ( только надо ещё изменить порог очистки старшего бита символа: Strip_8Bit_HighLimit = 0177 ).
Для начала пусть кто-нибудь сделает нормальный конвертор шрифтов прошивок в FON-шрифты эмулятора. В следующем релизе - терминал сможет при помощи FON-шрифтов выводить псевдографику в диапазоне кодов символов 0200..0237 ( кроме символа с кодом 0230 ). Пока не появится первый нормальный FON-шрифт для тестов - символ с кодом 0230 будет выводиться пробелом.
- - - Добавлено - - -
С обычными шрифтами Windows выводится обычная "псевдографика" Windows:
- - - Добавлено - - -Код:.BASIC
BASIC-11/RT-11 V02-03Y
OPTIONAL FUNCTIONS (ALL, NONE, OR INDIVIDUAL)?
READY
10 FOR I=128 TO 159
20 PRINT CHR$(I);
30 NEXT I
RUN
NONAME 03-DEC-17 00:03:14
ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–— ™љ›њќћџ
READY
Это после переделки терминала на прямой вывод кодов 0200..0237 и изменения настройки очистки старшего бита выводимого байта на: Strip_8Bit_HighLimit = 0177