Явно другой режим ВГ75 - 8 линий на символ. Я думал ты говоришь про монитор, так сказать стандартный режим после сбоса.Shaos wrote:Ну вот например Микроша:
Расширяя горизонты возможностей ВГ75
Moderator: Shaos
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
Роботрону удалосьvital72 wrote:кому-нибудь удалось реализовать экран 80 на 25 символов?
Поставил задачу: при помощи ВГ75 получить 80 знаков в ряду, видеорежим VGA 640x480 60 Гц (типа индастри стэндард), рядов сколько получится исходя из видеорежима. Один из вариантов - 30 рядов при высоте знакоместа 16 линий. Ширина знакоместа без вариантов, 640/80=8 исходя из условий. Начинаю понимать авторов РК86, ужавшихся по числу символов в ряду, но получивших взамен свободу в формировании строчного гашения и строчного синхроимпульса, и при этом малыми затратами.
Кстати, параметры этого режима VGA предполагают длительность кадрового гашения 45 строк и длительность кадрового синхроимпульса всего 2 строки, поэтому трюк с формированием гашения путем программирования видеобуфера на выдачу пустого поля в конце кадра и назначением VRTC на роль кадрового синхроимпульса не проходит. VRTC программируется числом знакорядов, а это 16 строк минимум, что сильно больше требуемых 2 строк.
Кстати, параметры этого режима VGA предполагают длительность кадрового гашения 45 строк и длительность кадрового синхроимпульса всего 2 строки, поэтому трюк с формированием гашения путем программирования видеобуфера на выдачу пустого поля в конце кадра и назначением VRTC на роль кадрового синхроимпульса не проходит. VRTC программируется числом знакорядов, а это 16 строк минимум, что сильно больше требуемых 2 строк.
Похожие рассуждения уже доводилось читать вот здесь:
http://zx-pk.ru/printthread.php?t=9510&pp=40
Схема, согласно которой синхронизация выполняется аппаратно на двух одновибраторах
и программируемом интервальном таймере 580ВИ53, встречалась в каком-то из номеров МПСС,
однако сейчас номер сразу не вспомню.
Но очень похожая схема выложена вот здесь:
http://www.emuverse.ru/downloads/comput ... matics.png
Она, собственно, и обсуждается по ссылке в начале моего поста.
Для справки: Компьютер "Юниор ФВ-6506"
http://zx-pk.ru/printthread.php?t=9510&pp=40
Схема, согласно которой синхронизация выполняется аппаратно на двух одновибраторах
и программируемом интервальном таймере 580ВИ53, встречалась в каком-то из номеров МПСС,
однако сейчас номер сразу не вспомню.
Но очень похожая схема выложена вот здесь:
http://www.emuverse.ru/downloads/comput ... matics.png
Она, собственно, и обсуждается по ссылке в начале моего поста.
Для справки: Компьютер "Юниор ФВ-6506"
Символьный режим
Количество цветов: 8
Количество палитр: 2
Строк: 24
Символов в строке: 80
Вот-вот, и я про то же, элегантность сразу куда-то девается, и решение "тяжелым" выходит. Цепочка одновибраторов, согласитесь, чем-то смахивает на безысходность и крик души. Ну, или, если угодно, на "а иди оно все лесом, и так сойдет". Все-таки, форма у ВГ75 хитрая, и никак не хочет без зазоров втыкаться в то место, куда ее хотят воткнуть. Контраст по сравнению с простейшей как кирпич 6845.Stan wrote:Похожие рассуждения уже доводилось читать вот здесь:
http://zx-pk.ru/printthread.php?t=9510&pp=40
Схема, согласно которой синхронизация выполняется аппаратно на двух одновибраторах
и программируемом интервальном таймере 580ВИ53, встречалась в каком-то из номеров МПСС,
однако сейчас номер сразу не вспомню.
...
Это схемотехническое решение работает так, как спрашивал насMixa64 wrote:...элегантность сразу куда-то девается, и решение "тяжелым" выходит. Цепочка одновибраторов,
согласитесь, чем-то смахивает на безысходность и крик души. Ну, или, если угодно, на "а иди оно
все лесом, и так сойдет".
Он же не спрашивал нас про эстетику квадрата Малевича или про элегантность "кирпича 6845"?vital72 wrote:кому-нибудь удалось реализовать экран 80 на 25 символов?
К сожалению, нет под руками журналов, чтобы уточнить, но подозреваю, что это:Stan wrote:Схема, ..., встречалась в каком-то из номеров МПСС,
однако сейчас номер сразу не вспомню.
Д.И. Панфилов, О.Л. Романенко, В.С. Сафанюк, С.Г. Шаронин
ПРИНЦИПЫ ОРГАНИЗАЦИИ И РАБОТЫ ДИСПЛЕЕВ НА ОСНОВЕ БИС КР580ВГ75
«Микропроцессорные средства и системы» ¹ 3, 1985, с.51
- Paguo-86PK
- Maniac
- Posts: 267
- Joined: 13 Apr 2011 03:43
- Location: Tashkent
- Contact:
Re: ВГ75
Когда-то, прочитав журнал "Радио" со статьёй "Монитор открывает окна",
жутко захотелось увидеть это на практике. Хотя, в статье была теория и
до дампа речи не дошло. Спустя 25 лет мне удалось это! Написал на этой
неделе свой вариант процедуры вывода символа на экран. А любопытно то,
что она меньше оригинальной ровно на 1 байт. Процедура биппинга так же
осталась на своём месте - FD27. Программа понимает также Esc-очередь и
кроме позиционирования курсора Esc+Y+PosX+PosY, понимает другие коды и
имеет внешний их обработчик (или заглушку). Символ табуляции также тут
работает адекватно: сдвигает курсор.
Единственный минус - 29 байтов множителя на 78 записи в ячейку экрана.
Компенсация - текстовое окно любого формата в любой позиции.
Таким образом, как доказательство на практике - оптимизация кода здесь
сыграла огромную роль. И, так сказать, сбылась мечта идиота.
Допустим, визуализируя здесь код Esc за символ "Σ", последовательности
можно представить так:
Σ1;2;3;4V - Viewport set Top = 1; Left = 2; Height = 3; Width = 4.
Σ255;5;6;254B - Bring viewpot Top-=1; Left+= 5; Height+= 6; Width-= 2.
Σ0;7;9;8L - Line draw at Y1 = 0; X1 = 7; Y2 = 9; X2 = 8.
Σ128C - Codepage offset: set to 128 (Draw chars +128: 80..FF).
Σ46C\x1F - Clear viewport screen width 0x2E (viewport dot-paint).
Это не по ANSI-протоколу (Esc+[n), т.к. его реализация в РК не к чему.
Исходный листинг написан не в стиле i8080-ассемблеров, что существенно
упростило отладку. Например, умножалка на 78 выглядит примерно так:
Исходный листинг написан не в стиле i8080-ассемблеров, что существенно
Это, конечно, нарушение правил. Но, это упрощает отладку всех ключевых
фрагментов в среде отладчика Visual Studio. Но, тем, кто привык писать
уже программы под x86, будет значительно легче писать и под сам i8080.
Я убедился, что используя более совершенные и удобные инструменты, под
старенькие процессоры можно писать более компактные алгоритмы.
P.S.: "Пропатчил" программу "Монитор" своим кодом. Буфер команд уменьшил вдвое. Вместо кода "X" директивы - заплатка инициализации (запись в системные переменные адресов обработчиков Esc-кодов, звонка "0x07", начала экранной области). Теперь прикладные программы могут смещать активную область экрана и перехватывать спец-символы.
жутко захотелось увидеть это на практике. Хотя, в статье была теория и
до дампа речи не дошло. Спустя 25 лет мне удалось это! Написал на этой
неделе свой вариант процедуры вывода символа на экран. А любопытно то,
что она меньше оригинальной ровно на 1 байт. Процедура биппинга так же
осталась на своём месте - FD27. Программа понимает также Esc-очередь и
кроме позиционирования курсора Esc+Y+PosX+PosY, понимает другие коды и
имеет внешний их обработчик (или заглушку). Символ табуляции также тут
работает адекватно: сдвигает курсор.
Единственный минус - 29 байтов множителя на 78 записи в ячейку экрана.
Компенсация - текстовое окно любого формата в любой позиции.
Таким образом, как доказательство на практике - оптимизация кода здесь
сыграла огромную роль. И, так сказать, сбылась мечта идиота.
Code: Select all
FCA5: F5 0F 0F|0F 0F CD AE FC F1 E6 0F|Э...Щ...........
FCB0: FE 0A FA B7 FC C6 07 C6|30 4F F5 E5 D5 C5 CD 12|........0O......
FCC0: F8 2A DimXY EB 2A PosXY|79 E6 7F CD 57 FD 22 Po|.*.Ъ.*.ЪЫ.Ъ.W.@.
FCD0:sXY EB 2A OfsXY 19 11 01|C0 EB 36 80 2B 73 72 21|Ъ.*.Ъ.....6.+СР!
FCE0: Seque 70 C1 D1 E1 F1 C9|79 FE 07 CA 24 FD FE 0A|.ЪП.....Ы...$...
FCF0: CA 90 FD FE 0D CA 53 FD|FE 08 CA BD FD FE 19 CA|......S.........
FD00: C1 FD FE 18 CA C6 FD FE|1A CA CB FD FE 0C CA 51|...............Q
FD10: FD FE 1F CA 38 FD FE 09|C2 7E FD 7D E6 78 C6 08|....8....Ч.Щ.Ь..
FD20: 6F C3 8C FD 01 F0 05 78|FB 3D C2 28 FD 78 F3 3D|О......Ь.=.(.Ь.=
FD30: C2 2E FD 0D C2 27 FD C9|AF 6F 67 CD Mul78 3E 4E|.....'...ОГ...>N
FD40: 93 4F 3A Speci 43 77 23|05 C2 46 FD 09 15 C2 45|.O:.ЪCВ#..F....E
FD50: FD AF 67 AF 6F 47 C9 4F|06 03 FE 1B C8 3A Escap|..Г.ОG.O.....:.Ъ
FD60: 47 D6 01 DA E8 FC 47 CA|B8 FD FA D7 FD 1F 79 DA|G.....G.......Ы.
FD70: B4 FD FE 59 C8 AF 32 Speci 06 FE C3 D7 FD E5 C5|...Y..2.Ъ.......
FD80: CD Mul78 C1 3A Speci 81|77 E1 2C 7D 93 D8 AF 6F|....:.Ъ.В.,Щ...О
FD90: 24 7C 92 D8 25 E5 6F CD|Mul78 01 B2 FF D5 E5 3A|$Э..%.О........:
FDA0: FA 7F 5F 7E 73 09 15 C2|A2 FD E1 D1 23 1D C2 9D|.Ъ_ЧС.......#...
FDB0: FD E1 04 C9 D6 20 67 C9|79 D6 20 6F C9 2D F0 6B|..... Г.Ы. О.-.К
FDC0: 2D 25 F0 62 25 C9 2C 7D|93 D8 6F 24 7C 92 D8 67|-%.Б%.,Щ..О$Э..Г
FDD0: C9 CD FA FD 01 30 FF 79|FE 3C D2 D1 FD FE 3A D0|.....0.Ы.<....:.
FDE0: D6 30 DA D4 FD 4F 21 F9|7F 04 78 85 6F 7E 87 87|.0...O!.Ъ.Ь.ОЧ..
FDF0: 86 87 81 77 F1 AF 57 C3|DC FC E5 21 Escap E3 C9|...В..W....!-...
Mul78:3A Ofs_X 84 87 4F AF 47|67 3A Ofs_Y 85 69 29 29|:....O.GГ:.Ъ.И))
....: 29 09 29 09 29 09 4F 09|01 D0 76 09 C9
Escap - Escape-sequency procedure
Ofs_X, Ofs_Y - Viewport offset
можно представить так:
Σ1;2;3;4V - Viewport set Top = 1; Left = 2; Height = 3; Width = 4.
Σ255;5;6;254B - Bring viewpot Top-=1; Left+= 5; Height+= 6; Width-= 2.
Σ0;7;9;8L - Line draw at Y1 = 0; X1 = 7; Y2 = 9; X2 = 8.
Σ128C - Codepage offset: set to 128 (Draw chars +128: 80..FF).
Σ46C\x1F - Clear viewport screen width 0x2E (viewport dot-paint).
Это не по ANSI-протоколу (Esc+[n), т.к. его реализация в РК не к чему.
Исходный листинг написан не в стиле i8080-ассемблеров, что существенно
упростило отладку. Например, умножалка на 78 выглядит примерно так:
Исходный листинг написан не в стиле i8080-ассемблеров, что существенно
Это, конечно, нарушение правил. Но, это упрощает отладку всех ключевых
фрагментов в среде отладчика Visual Studio. Но, тем, кто привык писать
уже программы под x86, будет значительно легче писать и под сам i8080.
Я убедился, что используя более совершенные и удобные инструменты, под
старенькие процессоры можно писать более компактные алгоритмы.
P.S.: "Пропатчил" программу "Монитор" своим кодом. Буфер команд уменьшил вдвое. Вместо кода "X" директивы - заплатка инициализации (запись в системные переменные адресов обработчиков Esc-кодов, звонка "0x07", начала экранной области). Теперь прикладные программы могут смещать активную область экрана и перехватывать спец-символы.
Re: ВГ75
Не имею намерения Вас огорчать 25 лет спустя, но мне почему-то помнится, что код там был.Paguo-86PK wrote:Когда-то, прочитав журнал "Радио" со статьёй "Монитор открывает окна",
жутко захотелось увидеть это на практике. Хотя, в статье была теория и
до дампа речи не дошло. Спустя 25 лет мне удалось это!
Хотя, конечно же, я могу ошибаться, но просто в поиске по вопросам старых Бейсиков я с этим материалом, похоже что столкнулся.
Вот это сама статья про окна:
http://retro.h1.ru/RK86/Windows/WinIntr.html
А вот это - ассемблерный листинг к ней:
http://retro.h1.ru/RK86/Windows/RWinTbl.txt
- Paguo-86PK
- Maniac
- Posts: 267
- Joined: 13 Apr 2011 03:43
- Location: Tashkent
- Contact:
Re: ВГ75
Хм. Странно... Что-то не помню эту статью.Stan wrote:Не имею намерения Вас огорчать 25 лет спустя, но мне почему-то помнится, что код там был.Paguo-86PK wrote:Когда-то, прочитав журнал "Радио" со статьёй "Монитор открывает окна",
жутко захотелось увидеть это на практике. Хотя, в статье была теория и
до дампа речи не дошло. Спустя 25 лет мне удалось это!
Хотя, конечно же, я могу ошибаться, но просто в поиске по вопросам старых Бейсиков я с этим материалом, похоже что столкнулся.
Вот это сама статья про окна:
http://retro.h1.ru/RK86/Windows/WinIntr.html
А вот это - ассемблерный листинг к ней:
http://retro.h1.ru/RK86/Windows/RWinTbl.txt
Тем не менее.
Во-первых, мой "драйвер" укладывается в область самого "Монитора" - FCBA..FDFF;
Во-вторых, обрабатывает Escape-коды и даёт возможность их обрабатывать своим кодом;
В-третьих, нет опасности выхода за пределы окна.
Коды 0x08, 0x0A, 0x0D, 0x18, 0x19, 0x1A, 0x1B, 0x1F драйвер обрабатывает всегда сам. Остальные коды (любые, включая 0x07, 0x09 и т.д.) можно перехватывать подставным драйвером, прописав его по адресу 0x7650...
Я понимаю, что опубликованная "классика" лучше новодела. Но, раз уж на то пошло, я уже написал код, потратив неделю...
Недостатки:
Код 0x1F работает медленно: Очистка экрана - разовая и редкая операция. Следуя принципу, что на редком можно экономить, я сберёг на ней кучу байт;
Буфер ввода директив "Монитора" уменьшился вдвое. Ровно до того, чтобы ввести директиву "T76D1,7FF3,76D0" - 15 символов.
Кстати, если кому любопытно, могу выложить дамп самого "монитора" и демки с "окошками"...
Весит - 957 байт (0000..003BD - на данный момент разработки).
Включено: Диспетчер на 3 окна и рисовалка пикселей/линий в окне Escape'ми. Как в скриншотах.
Весь код - мой: (Не подглядывал в гугл)
1. Умножалка на 78 (для экрана: вывод символа, пиксела, линий. FCEB..FD0A);
2. Делилка на 10;
3. Рисовалка линий.
А вот рисовалку окружности списывал с Брезенхэма. Но, неудачно: Рисует полное уродство.