RUЭВМ
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.
Май 2021
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Календарь Календарь

Последние темы
» ПЗУ F800 для РК86
автор Viktor2312 Сегодня в 16:21

» AHMB-1. Личная тех. тема.
автор Viktor2312 Вс Май 02 2021, 22:26

» Новости цифровых активов, разное...(eng)
автор Viktor2312 Вс Май 02 2021, 13:20

» Новости цифровых активов, разное...(rus)
автор Viktor2312 Вс Май 02 2021, 12:40

» Радио-86РК: По страницам журнала "Радио" и не только...
автор tchv71 Ср Апр 28 2021, 22:05

» км1809вг6 - аналог 6845
автор Viktor2312 Ср Апр 28 2021, 21:30

» Samsung Innovation Campus - AI Lectorium
автор Viktor2312 Вт Апр 27 2021, 22:25

» Языки программирования. Статьи, заметки, очерки, разное...
автор Viktor2312 Пн Апр 26 2021, 10:17

» Контроллер SD и USB клавиатуры на STM32
автор ведущий_специалист Сб Апр 24 2021, 16:19

» Контроллер FDD с DMA на ВГ93
автор tchv71 Сб Апр 24 2021, 15:48

» cpuminer-opt-rplant
автор Viktor2312 Вт Апр 20 2021, 14:45

» Xmrig
автор Viktor2312 Пн Апр 19 2021, 09:35

» T-Rex
автор Viktor2312 Пн Апр 19 2021, 09:33

» SRBMiner
автор Viktor2312 Пн Апр 19 2021, 09:26

» NPlusMiner
автор Viktor2312 Пн Апр 19 2021, 09:24

» NiceHash-miner
автор Viktor2312 Пн Апр 19 2021, 09:22

» NBMiner
автор Viktor2312 Пн Апр 19 2021, 09:20

» MindMiner
автор Viktor2312 Пн Апр 19 2021, 09:17

» Nanominer
автор Viktor2312 Пн Апр 19 2021, 08:49

» lolMiner
автор Viktor2312 Пн Апр 19 2021, 08:46

» KBMiner
автор Viktor2312 Пн Апр 19 2021, 08:43

» Hash Auger
автор Viktor2312 Пн Апр 19 2021, 08:40

» GMiner
автор Viktor2312 Пн Апр 19 2021, 08:37

» cpuminer-opt
автор Viktor2312 Пн Апр 19 2021, 01:37

» bminer
автор Viktor2312 Пн Апр 19 2021, 01:34

Самые активные пользователи за месяц
Viktor2312
Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_l10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Voting10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_r10 
prokushev
Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_l10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Voting10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_r10 
vzuravlo
Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_l10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Voting10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_r10 
kanzler
Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_l10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Voting10Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Vote_r10 

Поиск
 
 

Результаты :
 


Rechercher Расширенный поиск


Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  barsik Ср Дек 02 2020, 23:19

1
Часто из глупых флеймов у меня появляются полезные идеи. Озадачившись недавно проверкой предположения, что для РК86 можно написать динамичную игру на Си используя Си-компилятор выдающий на выходе коды для древнего микропроцессора КР580 и читая какой-то флейм, я вдруг сегодня сообразил одну вещь.

Что используя то, что программа на Си для текстового режима портабельна между всеми компьютерами с текстовым экраном (для которых есть компилятор Си), можно исходно разрабатывать и отлаживать игру для РК86 (или для любой другой текстовой машины) на Си в среде IDE для компилятора Си в MSDOS на IBM PC.

В частности, используя Турбо-Си версий 2.0 или 3.1 для MSDOS. В принципе можно воспользоваться и компиляторами для Windows, но из них насколько мне известно, только Турбо-Си и Турбо-Паскаль для Windows (TCW и TPW) умеют компилировать в консольное приложение (т.е в текстовую программу работающую в окне Windows). А компиляторы для Windows не предназначены для разработки ПО текстового режима и для наших целей не годятся.

Отладив Си-программу на IBM PC, затем её можно перетранслировать даже без изменений компилятором Си, компилирующим в код КР580 (к сожалению кросс-компиляторов Си под КР580 нет, но сойдёт и древний компилятор из 1979 года). Если скоростей в программе с дубль-экраном не хватит, то достаточно выкинуть функции эмуляции экранного буфера в ОЗУ и использовать для чтения символов из экранного буфера РК или п/п-мму F821 или просто внаглую читать байты прямо с экрана.

Если бы до этого додумались в начале 1990-тых, то программисты могли бы изучать Си делая для РК86 РК-игры на Си.

Увидев недавно скриншот IDE из инструментария разработки ПО для какого-то микроконтроллера, я сообразил, что пусть ретро компилятор в коды КР580 и не имеет своего IDE, зато Турбо-Си 2.0 из 1987 года имеет вполне удобный для написания и отладки программ IDE (плохо лишь, что мышь в нём не работает) и даже отладчик в нём есть.

И как раз ценно, что экран в PC текстовый (причём с позиционированием и цветом) с числом строк не только в 25, но и больше. 64 строки, что в максимуме даёт РК, конечно нет, но можно включить режим в 50 строк. 50 строк как раз хватит для отладки игры в самом базовом псевдографическом формате в 64*50 (это с базовым фонтом и в видео режиме, что по сбросу).

Кстати, на моей древней VGA видеокарте в 486-й включается аппаратный текстовый режим #102 в в формате 135*50, но увы, на Пентиумах этого нет. Т.о на 486-й можно писать программу на экран 128*50 даже не перезагружая фонт PC.

С отладкой чисто текстовых программ проблем нет. А если написать простенькую программку загрузки фонта (запуская её перед стартом Tурбо-Cи), которая будет загружать в VGA (в коды > 128) эр-кашный фонт (дающий псевдографику базового РК 128*60), а ещё лучше фонт в 64 графических символа с разложением знакоместа на матрицу 3*2 (и это возможно потому что VGA способен давать фонт шириной не только в 8, но и в 9 пикселей), то можно будет писать и отлаживать программы для РК86, не только в его базовых граф.режимах, но и в максимальном псевдо графическом режиме 192*104 (и Си-исходники даже будут совместимы, если не лезть напрямую в экран, а использовать gotoXY и дубль-экран).

Точно также можно было бы использовать и более приятный для людей язык Турбо Паскаль, но увы, - для РК86 8-ми разрядный Турбо-Паскаль 3.0 не подходит (т.к нужен процессор Z80). Так что любители Паскаля пока "пролетают как фанера над Парижем", если только не догадаются заменить в своём РК86 процессор на Z80 (но это уже будет совсем другая платформа почти в единичном экземпляре).

Сейчас допишу пост и пойду искать на своих резервных CD-дисках Tурбо-Си 3.1, а может быть даже и TC 2.0 на котором я успешно написал пяток программ по 2000 строк в середине 1990-тых. TC 2.0 вполне хватало мне в 1990-тые годы, возможно вполне хватит и сейчас для вышеописанной задачи. Компилятор Си для MSDOS работает с текстовым экраном, что и надо, а компиляторы Си для Windows тут как раз не годятся. Кстати, когда я достал Tурбо Си версии 3.1, то не смог странслировать на нём свои программы (текст.редакторы, нортоны, эмуляторы РК и ОРИОНА) написанные для TC версии 2.0, - так для трансляции эмуляторов до сих пор и пользуюсь Си из 1987 года.


Последний раз редактировалось: barsik (Пн Янв 18 2021, 07:31), всего редактировалось 1 раз(а)
barsik
barsik
Ветеран

Сообщения : 1150
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty решение проблемы прямого доступа в РК-экран в Си-программах

Сообщение  barsik Чт Дек 03 2020, 02:49

2
Те, кто интересовался и дизассемблировал РК-игры из сезона 1986...1992 года, хорошо знают, что подавляющее большинство этих РК-игр почему работают прямо по экрану. Т.е просто внаглую, игнорируя все нормы морали и программистской этики, пишут байты и читают их назад прямо из экранной области. Коварно пользуясь тем, что экранный буфер РК86 располагается в той же банке ОЗУ.

Причём по существу в этом нет особой необходимости (без этого не обойтись, лишь если нужен вывод вне поля отображения 64*25, т.е в области бордюра, хотя даже для этого есть химические методы). В этом нет необходимости потому, что разработчики РК86 специально, чтобы никому было неповадно нагло лазить в экран, ввели в ПЗУ несколько стандартных подпрограмм делающих ненужным прямой доступ в экранный буфер.

Так в подпрограмму консольного вывода в ПЗУ (F809) встроено обслуживание единственного искейп-кода $1B,Y (упр.последовательность: 1BH,59H,Y+20H,X+20H), которым можно переместить курсор в нужную экранную позицию и затем той же подпрограммой F809 можно вывести в данном месте экрана требуемый символ. И для игр, которые отслеживают игровую ситуацию путем считывания символов прямо из экрана, разработчики РК86 ввели стандартную подпрограмму F821, которая возвращает символ находящийся в позиции курсора.

Казалось бы, блин, живи и радуйся, пользуйся тем, что Вам обеспечили авторы РК, штампуй на ассемблере корректные игры в огромном количестве и качестве, используя лишь выше упомянутые п/п-ммы ПЗУ F800. Тогда бы все были бы довольны и счастливы и все игры РК86 без переделок годились бы ко всем клонам, ко всем не только РК-подобным, но ко всем машинам с подобным набором п/п-мм в ПЗУ (и даже к графическим, если в них грамотно вести п/п-мму F821, что в ОРИОНЕ кстати, не сделали, потеряв совместимость с частью РК-игр).

Но нет, почему-то почти все авторы РК-игр предпочли наглоту и коварство, т.е прямой доступ в экран. Это конечно ускоряет (не думаю, что намного), но у текстовой машины, по крайней мере для игр без панорамирования (т.е сдвижек экрана), резерва скорости вполне хватает. Зато от этого теряется совместимость с машинами у которых другой экран. Как довод в пользу такого подхода можно считать некоторый выигрыш скорости, меньшую громоздкость и большее удобство программирования.

И даже если п/п-мма F821 вызывала у кого-то столь паталогическую ненависть, всё-равно без проблем можно было и не используя её сохранить корректность программы и иметь прямой доступ в экранный буфер. Для этого вывод делается с помощью подпрограммы, которой передается экранный адрес (или X,Y координаты), т.е вместо команды LD (HL),A которой обычно и работают с экраном надо поставить команду CALL WR_SCR. Подпрограмма отпозиционирует куда надо курсор, выведет в это место символ, но кроме того запишет этот символ в дублирующий экран.

Этот дубль-экран имеет ту же структуру, что и экран РК (и с тем же программным бордюром), и в нём хранится копия РК-экрана. Потому программа, зная адрес начала этого дубль-экрана может спокойно считывать из него экранные символы (точнее точные дубли содержимого физического экрана). Тогда как реальный физический экран находится неизвестно где и может быть не только в другой банке, но и вообще в другом устройстве (обычно называемом текстовый терминал, куда символы передаются по проводной линии), экранный буфер которого программе никаким способом недоступен (нечитабелен).

Если работа с экраном организована подобным образом, то программа получается корректной, совместимой, т.е переносимой на иные платформы, а главное, - тогда игру для РК87 можно писать в IDE среде Турбо-Си для MSDOS и перенос результата на реальный РК86 не вызовет проблем несовместимости.

Можно обойтись и без дубль-экрана, но это более хлопотно и трудоёмко. В отличие от левых IDE для чуждых систем работающих в Windows, компилятор Турбо-Си для MSDOS работает в текстовом режиме видеоадаптера IBM PC. А про текстовый адаптер (исходно называемый MDA, но входящий и в адаптеры Hercules, EGA... и всех последующих GA) мы всё знаем из описания железа IBM PC, т.е из популярных книг 35-ти летней давности. Мы знаем в каком месте адресного пространства 8086 стоит текстов адаптер, какова структура экрана, т.е как рассчитать адрес в ОЗУ нужной экранной позиции, и как управлять цветом символов.

А т.к у нас всё-же не MDA, а VGA (на самом деле ROM-BIOS просто эмулирует текстовые режимы VGA в графических режимах конкретного адаптера, но по результату - это без разницы), то мы имеем возможность загружать фонты текстовых режимов. Загрузив фонт с 64-мя граф-символами (с знакоместами имеющими пиксельную матрицу 3*2) и включив стандартный текстовый режим 80*50, мы можем отлаживать игру для эр-кашной псевдографики 192*100.

Так вот на реальном РК программа может читать символ из экрана. Но в Си такой процедуры нет и Турбо-Си такую функцию не добавил (насколько я помню, хотя на всякий случай надо будет найти и почитать старые распечатки док-файлов по TC 2.0). Но зная как устроен экранный буфер IBM PC совсем не трудно нацарапать прямо в Inline ассемблере Турбо-Си фрагмент кода, что получает на входе или X,Y экранные координаты или даже просто адрес в эр-кашном экранном буфере и возвращает символ который лежит в имитируемом РК-экране.

Туда (виртуально в экран РК, а реально в текстовый экран PC c B8000) мы будем записывать символы корректно, т.е сначала позиционируя курсор с помощью gotoXY, а затем выводя на экран нужный символ. А вот корректных средств считывать символ из экрана у нас нет. Это и сделает функция содержащая INLINE-вставку на ассемблере (чтобы считывать физический экран). Можно это сделать и на самом Си, но из-за возни с сегментами, на ассемблере это будет проще.

Но, чтобы не вообще связываться с ассемблером 8086-го, а главное, чтобы не работать по железу (что дурной стиль), проще организовать дубль-экран. Тогда с символами можно работать не только координатах (X,Y), но и прямо с адресами РК-экрана (например, когда РК-экран занимает ОЗУ 76D0...7FF4). При этом вместо команды прямой наглой записи в позицию с координатами X,Y или с абсолютным адресом 76D0+оффсет вызывается процедура, которой параметрами передаются X,Y (или адресный оффсет от начала экрана). Эта процедура положит символ в соответствующую позицию экрана PC и в соответствующую ячейку в дубле экранного ОЗУ. Тогда, когда понадобится узнать какой символ стоит в любой из экранных позиций соответствующей Си-процедуре достаточно взять символ из буфера. Такая концепция не привяза к железу, т.е к тому где расположен и как устроен экран и потому такую программу на Си можно странслировать в консольное приложение для Windows или для LINUX.

Спойлер:

Для PC есть также Турбо-бейсик. Возможно эту идею (писать и отлаживать код к РК86 на копиляторе с IDE на PC) можно распространить и на него. Вот сразу мысль, чтобы не забыть - а есть ли INLINE-ассемблер в Турбо-бейсике из 1987 года. Я-то сдуру 25 лет пользуюсь Quick-бейсиком от Microsoft, а может в TB от Borland есть и ассемблер. Это было бы логично - в Турбо-Си INLINE-ASM есть. В Турбо-Паскале INLINE-ASM есть. По логике и в Турбо-бейсике INLINE-ASM тоже должен быть. Вот жаль какая, что у меня никогда не было Турбо-бейсика. С встроенным ассемблером ему бы цены не было (т.к бейсик и ассемблер знают все).



В общем идею про использование PC-шного IDE запомнил. Но пока (в смысле сегодня и м.б. ближайшие дни) не буду заморачиваться с Турбо-Си, сначала попробую писать и транслировать без IDE, т.е тупо пользоваться ретро компилятором из командной строки. Если на реальной 8-ми разрядке компиляции средней программы длится десятки секунд, то на PC это длится полсекунды. Хотя всё-равно из-за кучи манипуляций по старту эмулятора и запуску программы, на каждой итерации (модификация-проверка) теряется как минимум 30 секунд.

Да и Си-отладчик в BDS-Си есть (правда я им никогда не пользовался, т.к это кажется слегка сложно и громоздко). Чтобы смотреть переменные программы мне достаточно было подключать к отлаживаемой Си программе для КР580 процедуры вывода дампа и контроллировать переменные в нужных стоп точках прямо в ОЗУ. Да я ещё и не до конца разобрался с эмуляцией BDOS-входов и установкой стека. В итоге, я естественно перепишу RUN-тайи библиотеку удалив всё CP/M-овское и вставив вместо этого всё эр-кашное.
barsik
barsik
Ветеран

Сообщения : 1150
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  ведущий_специалист Чт Дек 03 2020, 22:28

3
Позвольте прервать Ваш монолог, но я не соглашусь.
Использование подпрограммы монитора 0x0f809 раз в 10 медленнее, нежели прямая запись в экран. это первое.
Второе - кому нравится смотреть отрисовку спрайта с моргающим курсором... Да это ж ужас какой то, пример игры цирк и вулкано. Запустите и убедитесь. Если в первой игре мерцающий курсор просто не дает понимания что происходит в игровом процессе, то во второй игре игрок наблюдает слайд шоу из отрисовывающихся якобы динамически меняющихся процессов курсором.
Из всего выше написанного мораль.
Подпрограмма 0хf809 настолько медленна и убога, что даже при всем желании пользоваться ею практически нереально.
ведущий_специалист
ведущий_специалист
Мастер+

Сообщения : 315
Дата регистрации : 2020-10-16
Откуда : Санкт Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty .

Сообщение  barsik Пт Дек 04 2020, 08:34

4
ведущий_специалист пишет:Позвольте прервать Ваш монолог
Позволение зачем, если Вы по теме?
ведущий_специалист пишет:я не соглашусь. Использование подпрограммы монитора 0xF809 раз в 10 медленнее, нежели прямая запись в экран.
С чего это вдруг п/п F809 будет в 10 раз медленнее? Посмотрите исходник, там не считаются адреса позиций при выводе, т.к в ячейке 7600 хранится абсолютный адрес следующего вывода, потому всё, что остаётся сделать процессору, это LD HL,(7600) : LD (HL),A. Программист игры на ассемблере не сможет это сделать быстрее. Тормозит не F809, а позиционирование курсора в нужное место искейп-кодом 1B,59. Работу этого искейп-кода в ПЗУ можно вероятно ускорить (там это сделано инкрементами), ну например, если объёма ПЗУ хватает, то табличность резко ускорит.
ведущий_специалист пишет:Второе - кому нравится смотреть отрисовку спрайта с моргающим курсором...
Да, признаю, вот этот довод силён ! И, вероятно, именно он заставлял людей лезть в экран в наглую. Ибо информации про работу с ВГ75 у людей не было (ещё один идиотизъм от авторов журнальной публикации не опубликовать такое инфо про ВГ75, впрочем С.Попов, похоже, и сам не знал большинства свойств ВГ75, ибо это именно он написал первые эр-кашные игры Цирк и Вулкан, и именно с них любители программирования в первую очередь брали идеологию программирования игр). Ну а, если человек знаток ВГ75, то что ему помешает перезадать режим ВГ75 и отключить вывод курсора?

Этим Вы просто открыли мне глаза (потому я и кликнул на плюсик), - в моих эмуляторах РК (для ОРИОНА и для PC) ВГ75 не эмулируется потому и мигающий курсор при выводе спрайтов не появляется, а логика его вывода правильная. РК-игры в реале я уже лет 20, как не прогоняю и забыл нюансы. Потому я и считал, что никаких реальных причин, кроме наглости и лени авторов РК-игр на то, чтобы нагло лазить в экран - не было. Иначе, зачем нужна в РК-ПЗУ п/п-мма F821 считывающая экранный байт из позиции курсора.
Ну вот, похоже, мыслим в одну сторону...
ведущий_специалист пишет:пример игры цирк и вулкано. Запустите и убедитесь.
Вот как раз это и есть самые первые игры для РК86. Они были на первой кассете программ РК, что я купил осенью 1987. Из игр в маш.кодах там были, кажется, только эти две игры, ещё какой-то сырой отладчик, бейсик и сколько-то убогих игр на бейсике (типа "Королевство Эйфория", а то и совсем убогих типа "Тест для женщин").
ведущий_специалист пишет:Из всего выше написанного мораль. Подпрограмма 0хF809 настолько медленна и убога, что даже при всем желании пользоваться ею практически нереально.
Это мы сможем проверить на практике. Насчёт медленности, Вы ошибаетесь. Как минимум половина игр РК из 80-тых годов имеет солидный запас скорости. Жаль у меня давно из-за грохноты винтов и ОС не сохранилось РК-игр переделанных так, чтобы они работали в эмуляторе РК86 на ОРИОНЕ с Z80 (где получается эффективный такт КР580 всего в 250 КГЦ и, чтобы на таком тормозном РК игра работала с нормальной скоростью, достаточно лишь сократить константу тормозилки).

Исходники (из под DISZILOG) некоторых игр в оригинале у меня есть, можно попробовать в них разобраться, изменить константы и в РК-эмуляторах установив скорость CPU в 0.25 МГЦ поиграть, чтобы убедиться, что запас есть. А ещё можно сделать конфиг для эмулятора ОРИОНА, чтобы ПЗУ F800 было двухстраничным с окном в 2К (чтобы эмулятор РК86 на ОРИОНЕ с Z80 работал, при эмуляции требуется, чтобы на F800 стоял именно 100% совместимый с эр-кашным ROM-BIOS) и установив в эмуляторе скорость Z80 в ОРИОНЕ всего в 5 МГЦ убедиться, что даже при столь низкой эмулируемой скорости игры играются. Я именно так и играл в эркашный XONIX (т.к другие РК-игры не играбельны дольше, чем 5 минут, т.е сделаны в стиле "посмотрел и забыл").

Думаю, что вскоре Вас убедит в запасе скорости РК то, что динамичным играм написанным на Си хватит сккорости. Это естественно, ведь в РК-играх по экрану бегает всего пяток букв изображающих ГГ и врагов. Много ли процессорного времени надо, чтобы вывести 5 букв в ином месте? Но это уже неважно, как были сделаны РК-игры из сезона 1987 года, сейчас уже вряд-ли кто возгорится желанием их переделывать. А вот полностью переписать хотя бы самые увлекательные из их на ЯВУ это интересно (т.е брать идею и алгоритм ибо, чтобы придумать совсем новую игру нужен мозг).
ведущий_специалист пишет:кому нравится смотреть отрисовку спрайта с моргающим курсором...
А это происходит в РК86 потому-что неверна логика работы подпрограмм и логика вывода курсора. Я могу об этом судить, т.к написал десятки драйверов консоли. Разработчик монитора РК86 сделал так, что курсор зажигается на выходе из п/п-ммы COUT_C F809. А правильно при этом только переставлять POSX и POSY, а курсор после F809 выводить не надо. При входе в п/п-мму F809 курсор должен гаситься (чего авторы не сделали), курсор в старом месте гасится автоматически после перестановки его позиции на выходе из F809 (т.к из-за аппаратности курсора на экране не может находиться сразу два или три курсора, а только один).

В графических машинах курсор программный и с ним нет никаких проблем при выводе на экран. Достигается это тем, что курсор зажигает только п/п-мма CONIN F803 и только она (да и то, только, если ранее на консоль никто не кинул искейп-кода отключающего отображение курсора ESC,3A). При этом курсор присутствует и мигает только тогда, когда он нужен, т.е при вводе с клавиатуры (а при выводе на экран его нет). Курсор гасится подпрограммой CONOUT F809. Вот так я и сделаю, когда у меня дойдут руки странслировать для себя удобный для программирования на ЯВУ ROM-BIOS РК86. И курсор там будет программный, хватит с нас идиотского аппаратного курсора (с которым, чтобы изменить форму курсора показывающего включённый регистр букв, надо перепрограммировать режим ВГ75).
ведущий_специалист пишет:В этом тоже, кстати, полезно доработать ROM-BIOS, нужен флаг, чтобы отключать
Ну вот, похоже, мыслим в одну сторону...

Отключение курсора делается легко, достаточно в процедуре выхода из CONOUT перед стартом команды записи позиции курсора ввести проверку флага разрешающего отображение курсора и в игры Вулкан и Цирк встроить стартовую заплатку, что сбрасывает этот флаг. Тогда Вы сможете наслаждаться этими любимыми РК-играми без блёсток от курсора на экране. Вот кусок кода куда эта проверка флага вставляется. Т.к текущий видеорежим при этом неизвестен, убирать курсор с экрана сменой видеорежима мы не можем, потому убирать курсор придётся позиционируя его в место вне видимой части экрана (например в 0-ю или 77-ю позицию какой-либо строки).

кто выводит курсор в РК:

; >> NO EXECUTION PATH TO HERE <<

TOBACK: LD     (EK_ADR),HL      ; FD85
        EX      DE,HL
        LD      (POSX),HL

<-- вот здесь надо добавить проверку флага разрешения курсора

        LD      A,80H           ; команда задать позицию курсора
        LD      (VG_75+1),A
        LD      A,L
        LD      (VG_75),A       ; H-позиция курсора
        LD      A,H
        LD      (VG_75),A       ; V-позиция курсора
        POP     HL
        POP     DE
        POP     BC
        POP     AF
        RET


barsik
barsik
Ветеран

Сообщения : 1150
Дата регистрации : 2016-11-10
Откуда : С-Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Пт Апр 02 2021, 04:02

5
barsik пишет:Отладив Си-программу на IBM PC, затем её можно перетранслировать даже без изменений компилятором Си, компилирующим в код КР580 (к сожалению кросс-компиляторов Си под КР580 нет, но сойдёт и древний компилятор из 1979 года).
Как нет? А это - z88dk.org? Он может кросскомпилировать в 8080

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  ведущий_специалист Пт Апр 02 2021, 13:43

6
Ну, мне нравится си от vinxru. Я пока что "на полную" его не тестировал, но может этот компилятор многое. Я сейчас закончил с железом, можно и заняться программной частью. Есть мысль прописать его под NetBeans и в путь, а то в нотпад++ как то напрягает работать, хоть и привык уже.
А проверить я его хочу на двумерных массивах и указателях на функцию в структурах. Если это все "прожуется" второй момент - проверить выполнение на железе чтобы понять скорость. При хорошем стечении обстоятельств ну как минимум половина игр ардубоя (сотня игр точно) переедут на ркшку. Я сильно переживаю что проц по скорости не справится, а в остальном я практически уверен что эти игры все возможно портировать.
ведущий_специалист
ведущий_специалист
Мастер+

Сообщения : 315
Дата регистрации : 2020-10-16
Откуда : Санкт Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Пт Апр 02 2021, 15:48

7
barsik пишет:
С чего это вдруг п/п F809 будет в 10 раз медленнее? Посмотрите исходник, там не считаются адреса позиций при выводе, т.к в ячейке 7600 хранится абсолютный адрес следующего вывода, потому всё, что остаётся сделать процессору, это LD HL,(7600) : LD (HL),A. Программист игры на ассемблере не сможет это сделать быстрее.
Простите, что вмешиваюсь, я уже забыл такты для всех команд, но лишние CALL и RET не добавят производительности при выводе символа. Иное дело выводить достаточно длинную строчку целиком, там накладные расходы пренебрежимо малы.

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Пн Апр 05 2021, 15:50

8
ведущий_специалист пишет:Ну, мне нравится си от vinxru.
Это который c8080.exe?
Насчет кодогенерации - в студенческие годы утверждалось, что MSX-C (он же AZTEC-C II) генерит код, не сильно уступающий ассемблерному (в пределах 20%), но думаю, что это байки. Хотя если совсем не использовать стандартную библиотеку С и программировать как на ассемблере, теоретически такое возможно. Ассемблер 8080 очень прост, и генерировать для него субоптимальный код не бог весть какая научная задача, тем более сейчас. Я говорю про средний ассемблерный код, без изысков и хакерской ручной оптимизации.
В качестве подопытной кошки думаю при наличии времени использовать свой редактор  SC80  для РК, переписать его на С, попробовать разные компиляторы и сравнить результаты.
Интересно было бы посмотреть также на рекомпилятор C из ассемблера (там ценны только имена меток и комментарии), наверняка люди делали.

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  ведущий_специалист Пн Апр 05 2021, 16:05

9
Да, так он и называется (с8080.ехе).
Кстати, можно подробнее про Ваш текстовый редактор? Он бы мне не помешал в разработках. Имеется ввиду что умеет сколько памяти занимает, для чего предназначен и тд.
ведущий_специалист
ведущий_специалист
Мастер+

Сообщения : 315
Дата регистрации : 2020-10-16
Откуда : Санкт Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Пн Апр 05 2021, 16:12

10
ведущий_специалист пишет:Да, так он и называется (с8080.ехе).
Кстати, можно подробнее про Ваш текстовый редактор? Он бы мне не помешал в разработках. Имеется ввиду что умеет сколько памяти занимает, для чего предназначен и тд.
Цитата с альтернативного форума:
В 1988 году меня категорически не устроил редактор МИКРОН, и, правильно, я написал свой.
Он поддерживает блоки и 2 независимых окна для одного текста.
Конечно же, вывод текстов через МОНИТОР нещадно тормозил, поэтому вывод текста делался напрямую в видеопамять.
Это нарушает совместимость, но у меня же есть исходный текст, я всегда могу странслировать редактор для нужных адресов экрана и периферии.
Из-за убогости ввода символа в МОНИТОРЕ, тоже встроил свою версию - она позволяет отслеживать нажатие нескольких кнопок, когда это допустимо по матрице, для нескольких нажатых клавиш работает автоповтор, да и в целом поприятнее в работе.
Размер редактора - 6к, правда нашел только версию для CP/M, тексты редактора с вводом/выводом на магнитофон остались на кассетах. Но даже не раскапывая кассеты, заменить ввод/вывод на МОНИТОРНЫЕ подпрограммы - дело часа, не более.
Так что вот - https://github.com/tchv71/ED_SC80

Редактор "задышал" на оригинальной РКшке (в эмуляторе), но местами еще работает некорректно - то ли на дискетах откопался промежуточной вариант при переносе в CP/M, то ли еще что...
Архив с текстами редактора был неполный, но, по счастью был найден старый вариант еще до разделения на модули. Он тоже был "битый", но нужные куски в нем были.
Как бы то ни было, буду добиваться полной работоспособности и заменю запись/чтение с диска на ленточные.

Редактор компактно хранит табы, быстро скроллирует и имеет табличное описание команд в отдельном модуле - можно на уровне исходников настроить "под себя". Еще можно разделить экран на 2 части и в каждой части будет независимое окно для редактируемого текста.

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Ср Апр 14 2021, 13:13

11
tchv71 пишет:Редактор "задышал" на оригинальной РКшке (в эмуляторе), но местами еще работает некорректно - то ли на дискетах откопался промежуточной вариант при переносе в CP/M, то ли еще что...
Ошибки я исправил. Прикрутил ввод-вывод на магнитофон вместо записи на диск. Бинарник на гитхабе https://github.com/tchv71/ED_SC80/blob/OriginalRK/bin/ESC80.RK
Запуск в эмуляторе: https://rk86.ru/index.html?file=https://raw.githubusercontent.com/tchv71/ED_SC80/OriginalRK/bin/ESC80.RK

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  ведущий_специалист Ср Апр 14 2021, 13:38

12
А есть ли описание на программу? так сказать хелп?А то пощелкал кнопками ладно понятно... но собственно само слово редактор.... Как текст редактировать? К примеру то что напечатал удалить. Кнопка забой выдает квадратик, другими кнопками как удалить символ я не нашел. Есть ли мануал какие кнопки жать? А то куча такого на диске... Запускаешь - а как этим пользоваться или забыл или вообще не знаешь.
ведущий_специалист
ведущий_специалист
Мастер+

Сообщения : 315
Дата регистрации : 2020-10-16
Откуда : Санкт Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Ср Апр 14 2021, 13:49

13
ведущий_специалист пишет:А есть ли описание на программу? так сказать хелп?А то пощелкал кнопками ладно понятно... но собственно само слово редактор.... Как текст редактировать? К примеру то что напечатал удалить. Кнопка забой выдает квадратик, другими кнопками как удалить символ я не нашел. Есть ли мануал какие кнопки жать? А то куча такого на диске... Запускаешь - а как этим пользоваться или забыл или вообще не знаешь.
https://github.com/tchv71/ED_SC80/blob/master/sc80_utf8.txt
Для удаления символа слева используется кнопка F2 - я сам удивился, но видимо тогда мне было так удобнее
Как я уже писал, все кнопки закодированы в отдельном файле .ASM - можно подстроить как надо, в том числе переназначить F2 на забой
Когда я писал этот редактор еще никакого стандарта на присвоение кнопок командам не было, поэтому так - как бог на душу положит

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  ведущий_специалист Ср Апр 14 2021, 13:52

14
Во, круто! Спасибо. Теперь понятно.
ведущий_специалист
ведущий_специалист
Мастер+

Сообщения : 315
Дата регистрации : 2020-10-16
Откуда : Санкт Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Ср Апр 14 2021, 15:27

15
ведущий_специалист пишет:Во, круто! Спасибо. Теперь понятно.
Вообще редактор с сегодняшних позиций управляется странно - F2 удаляет символы только до конца строки, перевод строки не удаляет. Для склеивания строк есть отдельная команда, для разбиения по текущему символу - тоже. Курсор не "прыгает" при перемещении, табуляции не отображаются, но учитываются. Но нужно учесть, что это 1988 год - примеров и привычек просто не было. Главный недостаток - выбранный текстовый блок никак не отображается, его надо держать "в уме". Этому была причина - для выделения инверсией нужно было вставить атрибут инверсии, а значит поедут адреса экрана (про коды конца строки я тогда не знал) и надо перепрограммировать ПДП. Решил, видимо, не заморачиваться.

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  ведущий_специалист Ср Апр 14 2021, 15:39

16
Однозначно дорабатывать нужно. Я сейчас немного поигрался, да свои плюсы есть, но под современные требования да, нужно дорабатывать. С выделением инверсией - хорошая идея, да и по другому это не видится никак.
Готов стать тестировщиком. В принцыпе мне никто не мешает взять и доработать это самому. Правда асм у меня сыроват в воспоминаниях, на си бы ))). Проверять буду под своим компом. Уж оч он мне нравится. Собрал второй экземпляр, работает лучше чем первый.
ведущий_специалист
ведущий_специалист
Мастер+

Сообщения : 315
Дата регистрации : 2020-10-16
Откуда : Санкт Петербург

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  tchv71 Ср Апр 14 2021, 16:03

17
ведущий_специалист пишет: В принцыпе мне никто не мешает взять и доработать это самому. Правда асм у меня сыроват в воспоминаниях, на си бы ))). Проверять буду под своим компом. Уж оч он мне нравится. Собрал второй экземпляр, работает лучше чем первый.
Для того и выкладывал на гитхаб под MIT лицензией. Свой редактор - это возможность легко встроить вызов нужных тулов, да и доработать под себя, как нравится.
На си перевести планы были, но это неспешно и нескоро.
В 1992 году в Радио опубликовали описание текстового редактора WEL, но без исходников, естественно. О нем я узнал только недавно, в 92 году у меня были уже другие игрушки. В угоду пресловутой "совместимости" он выводил текст через подпрограммы Монитора, что странно, учитывая, что верхняя строка, кажись, выводится на экран напрямую. Больше всего раздражает "мельтешение" курсора при выводе.
Меня "совместимость" никогда не волновала, надо будет - перетранслирую под другую конфигурацию. А вот блочные перемещения, по возможности, оптимизировал по скорости путем копирования через стек. Можно было поиграться с ускорением скроллинга путем переопределения начала экранной области, но не стал, баловство всё это, а память расходует.
Я кстати, тоже запустил железный РК в конфигурации 60к РАМ, остался от моего однокурсника Антона Кузьмина. Заработала железка через 30 лет, как ни в чем не бывало. Контроллер дисковода, вот только не могу найти, и свою плату РК со своим же контроллером FDD. Зато программатор остался.
P.S. Был бы благодарен, если Вы изложите свое видение необходимых доработок. Можно прямо на гитхаб в Issues

tchv71
новичёк

Сообщения : 20
Дата регистрации : 2021-03-28
Возраст : 49
Откуда : Москва

https://github.com/tchv71

Вернуться к началу Перейти вниз

Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си Empty Re: Использование среды IDE от компиляторов для PC при разработке РК-игр на языке Си

Сообщение  Спонсируемый контент

18

Спонсируемый контент


Вернуться к началу Перейти вниз

Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения