PDA

Просмотр полной версии : Текстовый режим 80x40



Nesser
31.05.2025, 21:26
Кто работал с текстовым режимом на АТМ ? насколько он удобный? если у кого есть может ссылочка на подробное описание.
У кого есть мысли как реализовать удобный текстовый режим?
Нормально будет если он будет находится там же где и стандартный экран с 16384 (страницы 5 и 7) шириной соответственно 80 байт и длиной 3200 байт+тоже с цветами или для него отдельную страницу.
Реально ли хватит 1 байта на реализацию русский+латиница+спец или надо позаимствовать ещё 1 бит из байта цветов, или сразу делать 2 байта на знакоместо + 1 байт папер+инк.

ZXMAK
01.06.2025, 00:36
довольно удобный, был какой-то ассемблер с редактором в нем, кажется ALASM.

помню когда текстовый режим в эмуляторе тестировал, запускал, но сама программа где-то потерялась - нужно искать.
Собственно как текстовый режим выглядит можно посмотреть выбрав модель ATM Turbo 2+, она сбрасывается в текстоый режим, если подождать то скринсэйвер в текстовом режиме включается.

https://i.postimg.cc/056Z0THY/20250601-01h05m10s-grim.png

Nesser
01.06.2025, 11:10
Я не разобрался как запустить ZXMAK2 :) должен быть какой то ZXMAK2.exe ?

breeze
01.06.2025, 17:24
Кто работал с текстовым режимом на АТМ ? насколько он удобный?

Как по мне, то сильно так уж и удобный. кодовая станица своя, близка к KOI8 но со своей спецификой, плюс структура видеопамяти адская. Один столбец в одной странице памяти, второй в другой и так всё чередуется.
Из-за этого вывод банального текста ещё так закавыка.

http://svn.zxevo.ru/filedetails.php?repname=pentevo&path=%2Fdocs%2Fatm2_arch.pdf

https://i.postimg.cc/d12wzksZ/image.png (https://postimg.cc/Kk86TYgm)

Nesser
02.06.2025, 00:41
Жесть, к чему такая сложность
За PDF спасибки

CodeMaster
02.06.2025, 09:02
Жесть, к чему такая сложность
А в Спектруме всё так.

Nesser
02.06.2025, 23:23
Кхм, согласен как никогда :)

ZXMAK
03.06.2025, 16:28
Я не разобрался как запустить ZXMAK2 :) должен быть какой то ZXMAK2.exe ?

да, на windows ZXMAK2.exe, на Linux ./zxmak2

- - - Добавлено - - -


Жесть, к чему такая сложность


да вроде ничего сложного, на разных страницах я так понимаю - для экономии адресного пространства под код. Если всю видеопамять в одной странице разместить,то останется намного меньше адресного пространства под код.

UncleDim
03.06.2025, 16:32
в Спектруме всё так

что "всё", там всего-то и нету ничего) и для вывода текста, кстати, всё нормально, поди лучше придумай, получится ли? )

breeze
04.06.2025, 09:52
Если всю видеопамять в одной странице разместить,то останется намного меньше адресного пространства под код.

ээээ… WAT? o_O причём тут это? ты щёлкаешь банками по 16к в нужно место для заливки данных и всё, куда ты ещё подключишь уже твоё личное дело, у тебя в наличии 4 окна.

А вот тупо разместить строку текста уже фигу, придётся сначала чётные символы залить, затем нечётные. Как минимум 2 операции + переключение банок, вместо 1й.


поди лучше придумай, получится ли? )

Уже давно всё придумали и линейный видеорежим и загрузка шрифтов и за долго до атм. Другой вопрос почему авторы в своё время сделали так, а не иначе остаётся открытым. Может знаний не хватило, может слишком дорогая конструкция выходила. В то время уже во всю возили дешманские (286/386) PeeCee и конкурировать было всё сложнее и сложнее. Барыги тупо демпинговали рынок пк.

Ну и не стоит забывать, что внутри компании тоже разлад начался, так что возможно инженерам тупо не интересно всё это стало.

ZXMAK
04.06.2025, 16:18
ээээ… WAT? o_O причём тут это? ты щёлкаешь банками по 16к в нужно место для заливки данных и всё, куда ты ещё подключишь уже твоё личное дело, у тебя в наличии 4 окна.

Да, это я ошибся, проверил код - действительно там все символы в одной банке лежат. В разных банках лежат код символа и код аттрибута.
Вот код расчета адреса внутри банки:


var pageOffsetBw = (x & 1) == 0 ? 0x01C0 : 0x21C0;
var pageOffsetAt = ((x + 1) & 1) == 0 ? 0x01C0 : 0x21C0;
pageOffsetBw += x >> 1;
pageOffsetAt += (x + 1) >> 1;
pageOffsetBw += (y >> 3) * 64;
pageOffsetAt += (y >> 3) * 64;


Страница и видео-режим вычисляются так:


int videoPage = (CMR0 & 0x08) == 0 ? 5 : 7; // CMR0 is the port #7FFD
var pageAt = Memory.RamPages[videoPage == 5 ? 1 : 3];
var pageBw = Memory.RamPages[videoPage];

var mode = (AtmVideoMode)(((AFE >> 6) & 1) | ((AFE >> 4) & 2)); // ATM 4.50
var mode = (AtmVideoMode)(m_pFF77 & 7); // ATM 7.10
switch (mode) {
case AtmVideoMode.Ega320x200: Renderer = Atm320Renderer; break;
case AtmVideoMode.Hwm640x200: Renderer = Atm640Renderer; break;
case AtmVideoMode.Std256x192: Renderer = SpectrumRenderer; break;
case AtmVideoMode.Txt080x025: Renderer = AtmTxtRenderer; break;

case AtmVideoMode.EvoText080: Renderer = EvoTxtRenderer; break;
case AtmVideoMode.Evo256x192: Renderer = EvoHwmRenderer; break;
case AtmVideoMode.EvoAlco16c: Renderer = EvoA16Renderer; break;

default: Renderer = SpectrumRenderer; break;
}

enum AtmVideoMode {
// ATM 1/2:
Ega320x200 = 0,
Hwm640x200 = 2,
Std256x192 = 3,
Txt080x025 = 6,

// PENTEVO:
EvoText080 = 7,
Evo256x192 = 3 | (2 << 3),
EvoAlco16c = 3 | (1 << 3),
}


m_pFF77 для ATM2 - это порт #FF77 при активном ПЗУ TRDOS или SYS=(AFB & 0x80) != 0 && (AFE & 0x80) != 0;

AFE и AFB - это верхний байт адреса при последней записи в #FE или #FB соответственно.

Nesser
04.06.2025, 22:34
Если честно это какой фаршмак, раскидать через один да ещё и атрибуты наоборот, даже LDI/LDDR для переноса не применить.
Файл ZXMAK2.exe в архиве отсутствует, я бы его давно уже запустил :)

Zeizwell
10.06.2025, 13:18
на атме все так сделано, через одно место, ну теперь и на ево тоже соответственно

ZXMAK
10.06.2025, 16:00
Файл ZXMAK2.exe в архиве отсутствует, я бы его давно уже запустил :)

проверил архив по ссылке (https://github.com/user-attachments/files/20006533/ZXMAK2-TestBuild9b-msbuild.zip):
https://i.postimg.cc/XJTL08tQ/20250610-15h59m21s-grim.png

Nesser
12.06.2025, 14:53
В этот архиве да, норм, а у меня какой то архив - ZXMAK2-master

gadm
22.07.2025, 03:25
Обычно <имя_проекта>-<имя_ветки>.zip (например, ZXMAK2-master.zip) -- это скачанный с GitHub архив с исходными текстами проекта. Кагбэ подразумевается умение собирать бинарники из исходников. :)

Kulich
23.07.2025, 21:03
на атме все так сделано, через одно место, ну теперь и на ево тоже соответственно
90е, время волшебных решений и экономии на ЛА3. Вообще насколько помню, именно в Эво как-раз есть планарный текстовый режим, правда тогда вы потеряете часть пользователей с АТМ2