Важная информация

User Tag List

Страница 1 из 36 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 353

Тема: Секреты и трюки программирования (в том числе и игр) для РК-86

  1. #1
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Секреты и трюки программирования (в том числе и игр) для РК-86

    Цитата Сообщение от mvg
    буду благодарен за кусок кода убирающий курсор
    Сначала, про убирание курсора в стандартном режиме. В графическом режиме (если не переносить линию подчёркивания с 10-й линии на 8-ю), курсор исчезает сам, т.к остаётся на 10-й неотображаемой линии. Поэтому специально выключать курсор надо только, если у Вас фонт 8*10 (фонт 2 кб) и для НОРТОНА, не меняя режима (т.е высоты знакоместа в 10), Вам необходимо лишь убрать курсор.

    Для того, чтобы курсор не был виден, я обычно перепрограммировал ВГ75 так, чтобы линия подчёркивания устанавливалась ниже 10-й линии растра. А, т.к в строке в стандартном режиме выводится всего 10 линий растра, то если установить значение для линии подчёркивания на 11...16, то мигающей линии подчеркивания видно не будет. Для этого достаточно изменить два бита в байте 99H

    Вот кусок из ПЗУ F800 (это в том месте где п/п-ма PUSK_VG, т.е куда идет JMP из F82D).

    LD (HL),99H ; 1001.1001 9 +1 линия подчерк.

    Первые 4 бита задают позицию линии подчёркивания. Если вместо 10-ти, Вы поставите 11, то курсор исчезнет. Вот две подрограммы. Одна выключает курсор, вторая включает курсор. Но не так как в ПЗУ F800, а большим мигающим прямоугольником, что намногого приятнее, чем мизерная чёрточка. Во всех моих мониторах и драйверах ОРИОНА и ПЗУ РК86 курсор всегда большой. По тому же принципу Вы получите курсор и в графическом режиме, но удобнее там его получать программно, - периодически выводя и гася символ псевдографики. Если же в стандартном режиме надо включить старый курсор (не сплошной прямоугольник, а тонкая линия подчёркивания), то делаете CALL 0F82DH.

    Код:
    .
    CUROFF:	LD	A,0A9H		; 1001.1001 10 +1 линия подчерк. 
    	LD	B,93H		; 1.0.01.0011 - курсор мигающая линия подчёркивания
    	JP	JJJ_01
    	
    CUR_ON:	LD	A,59H		; 0101.1001 5 +1 линия подчерк. 
    	LD	B,0C3H		; 1.1.00.0011 - курсор мигающее знакоместо
    				; отчего будет большой курсор
    
    JJJ_01:	PUSH	HL
    	LD	HL,VG_75+1
    	LD	(HL),0 		; команда RESET
    	DEC	HL  		; адрес VG_75
    	LD	(HL),04DH	; 0.1001101 77+1 знакомест
    	LD	(HL),01DH	; 00.011101 29+1 строк
           	
    	LD	(HL),A		; 0101.1001 10 +1 линия подчерк.выше
    	LD	(HL),B		; 1.1.00.0011 - МОЕ ИЗМЕНЕНИЕ:
    				; КУРСОР - МИГАЮЩЕЕ ЗНАКОМЕСТО
    				; атрибуты не отображать
    
    	INC	HL		; адрес VG_75+1
    	LD	(HL),27H	; команда START DISPLAY 001.001.11
    	
    	LD	A,(HL)		; читаем STATUS ???
    AFAE1:	LD	A,(HL)		; читаем STATUS
    	AND	20H		; маска 'Interrupt request flag'
    	JP	Z,AFAE1   	; ждем конца строки
    
    	LD	HL,VT_57+8	; далее заёмёмся ВТ57
    	LD	(HL),80H
    	LD	L,4    		; VT_57+04 !! НЕ_КОРРЕКТНО
    	LD	(HL),low SСRN	; 0D0H
    	LD	(HL),high SCRN	; 076H
    	INC	L    		; адрес VT_57+5
    	LD	(HL),23H
    	LD	(HL),49H
    	LD	L,8    		; VT_57+8 !! НЕ_КОРРЕКТНО
    	LD	(HL),0A4H
    	POP	HL
    	RET

    Что касается, того, чтобы убрать 2 линии растра разделяющие строки, что позволит использовать псевдографику (и рисовать сплошные вертикальные линии в рамочках), то для этого меняют вторую четверку битов в том же числе 99H. Если будет не 9, а 7, то это значит, что в строке, не 10, а 8 линий растра.

    Недостаточно этого, т.к на 20% увеличится частота кадров и на многих телевизорах синхронизация сорвётся. Я видел, что некоторые так и делают. Это неверно. Не у всех профессиональные мониторы AUTOSYNC с хорошей синхронизацией. Поэтому надо изменить число строк с 30 до 38.

    Или же надо, изменить число строк отводимое на обратный ход кадровой развертки. Считаем: убрались две линии растра в 30-ти строках. Это 60 строк растра. При 8 линиях растра на строку - это 60:8= 8 строк. Т.е число строк на обратный ход по кадрам надо увеличить с 1 до 9. Что невозможно, т.к максимум строк на обратный ход по кадрам 4. Поэтому можно сделать режим 35+4 строки, что тоже будет соответствовать TV-стандарту, но с'экономит 3*78=234 байта.

    Если неохота разбираться в ВГ75, то можно взять любую игру с псевдографикой, прогнать её через IDA и самому посмотреть, как включается графический режим. Получить полноценный листинг сложно, а получить просто вид программы в мнемониках - это дело считанных минут. Найти место, где идёт программирование ВГ75 - не проблема. Тут всё, как в шахматах, - лучший способ совершенствоваться, - это изучать партии мастеров. К сожалению, сами мастера, т.е программисты из 80-тых, уже вымерли, как класс. У меня есть несколько дизассемблированных графических игр, если будут проблемы, то вытащу оттуда и выложу соответствующий кусок листинга. С ВГ75 нельзя полагаться на эмулятор, надо всё проверять в реале.

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

    Этот "ход" позволяет уместить в области стандартного экрана не только 30, а даже 36 строк. Но старые игры, по крайней мере из тех, что я "ковырял", так не делают. Т.к экран увеличивается и затирает служебные ячейки ПЗУ, отчего стандартные подпрограммы перестают работать, то разбухший экран просто переносят ниже (обычно на 36D0, чтобы было проще считать позиции пользуясь стандартными таблицами для стандартного экрана 76D0).

    Но мне больше симпатичен вариант, когда разбухший экран оставляем в вершине ОЗУ, затирая естественно служебные ячейки ПЗУ, а работаем не подпрограммами ПЗУ, а подпрограммами его копии перетранслированной в ОЗУ, сразу ниже экрана. Это даёт максимально большой сплошной кусок памяти.
    Последний раз редактировалось barsik; 21.03.2017 в 10:48.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,801
    Спасибо Благодарностей отдано 
    307
    Спасибо Благодарностей получено 
    302
    Поблагодарили
    227 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    barsik, 1. про доп коды написано здесь
    Специальные коды

    Специальные коды применяются для уменьшения затрат на память программ или на управление процессом ПДП.
    Ст.б. Мл.б.
    1 1 1 1 0 0 S S


    S S Функция
    0 0 Конец строки
    0 1 Конец строки, стоп ПДП
    1 0 Конец экрана
    1 1 Конец экрана, стоп ПДП
    я так подозреваю из спецификации на i8275

    2. если аккуратно порезать экранную область то никаких проблем с отображением экрана не возникнет.

    3. про хороших программистов РК86. Покажите что нибудь достойное на дизассемблирование
    С уважением,
    Jerri / Red Triangle.

  4. #3
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    659
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    0 0 Конец строки
    0 1 Конец строки, стоп ПДП
    а в чем будет отличие?

  5. #4
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Jerri, узнать игры с псевдографикой очень легко, достаточно их запустить в эмуляторе. Навскидку я скидываю коды некоторых игр, что используют псевдографику. Но проверьте в эмуляторе, там могут попасть и чисто текстовые игры. А вообще, в основном графическими стали игры только из последних сезонов, из 1990-92 годов, программисты из 1987-88, в свой массе, это ещё не умели.

    ВГ75 запрашивает данные и получает их от ВТ57 пачками по 8 байт (судя по его режиму). Возможно, это даёт возможность иметь 80 видимых символов и совершенно любое число атрибутов в строке. Ранее предполагалось, что т.к и символы и атрибуты размещаются в буфере размером в 80 байт, то при ширине строки в 80 символов для атрибутов вообще не остаётся места.

    Логично предположить, что при 80-ти символах в строке можно использовать атрибуты, иначе зачем их вводить? Чтобы использовать только в режиме 64 символа в строке? Тут нужны эксперименты на реале. Ранее я исходил из того, что для вставки атрибутов в строку остаётся всего 7 байтов (от позиции 71 до 78). Но скорее всего, если режим с неотображаемыми атрибутами, то ВГ75 будет читать символы и выводить в строке (пропуская неотображаемые атрибуты), пока отображаемых символов не наберётся ровно в длину строки (в РК86 это 78). Но если сумма числа атрибутов и символов (код <80) превысит 78, то начало следующей строки сдвинется и уже не будет четкого соответствия адресов начала строк по формуле (76D0 + N_строки *78).
    Вложения Вложения
    Последний раз редактировалось barsik; 02.01.2018 в 04:37.

  6. #5
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,801
    Спасибо Благодарностей отдано 
    307
    Спасибо Благодарностей получено 
    302
    Поблагодарили
    227 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а в чем будет отличие?

    Да ктож знает РК86 в 86 году мне был недоступен, но если ставили #f1 значит был смысл

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

    barsik, ORD что за формат?
    РК86 вообще цвет не планировался.
    С уважением,
    Jerri / Red Triangle.

  7. #6
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    396
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    64 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а в чем будет отличие?
    В первом случае ПДП загрузит в ВГ75 пакетами всю строку символов. Дойдя при отображении строки до спецкода F0, ВГ75 включит сигнал VSP и дальнейшие символы в строке не будут отображаться.
    Во втором случае ПДП так же начнёт пакетную загрузку в ВГ75, но тот прекратит её, прочухав на этапе загрузки спецкод F1. Потом при отображении строки ВГ75 будет действовать аналогично F0.

    В первом случае видеообласть в памяти остаётся прежних размеров. Во втором видеообласть уменьшается, экономя память, плюс меньше тормозится процессор. И то и другое можно применять в программах для разных целей. Зачем это вообще придумали в Интел - отдельный вопрос = ))

  8. #7
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Насколько я понял из темы "Режимы ВГ75" этот трюк с кодом F1 обнаружил и проверил на практике vinxru, который недавно ушёл с сайта и теперь уточнить детали нЕ у кого.

    Использование кода F1 позволяет немного сократить размер экранной области, причём, если ставить F1 во всех строках чётко в позицию 72 (это 8+64; 8 это бордёр слева), то, если я правильно понимаю, бордёр справа получается не программным, а аппаратным, т.е ВГ75 сама будет гасить луч, формируя правый бордёр. И при этом программирование даже не усложняется, как будет в случае, если код F1 ставить не в чёткие позиции, а сразу за последним печатаемым символом.

    Вообще-то надо увеличивать число строк с 31 до 38, а не до 36, т.к 38*8=304 линии растра, что надо для сохранения частоты кадров (по стандарту надо выводить в кадре 312 линий), а при 36-ти строках получается 36*8=288 линий растра, а частота кадров растёт до (312/288)*50= 54 Герц, что срывает синхронизацию в телевизоре.

    В стандартном режиме (что программируется по сбросу) начало любой строки можно посчитать по формуле (76D0 + N_строки * 78), что позволяет четко позиционировать в экране. Если F1 стоит в позиции 72, то мы экономим по 5 символов в 38-ми строках, т.е экономия в 190 байт. Тогда позиция считается так: (76D0 + 73*Y +X). А при использовании кода F1 для максимальной экономии, ставя его за последним печатаемым символом в строке, размер затрачиваемый на каждую строку непредсказуем (в зависимости от числа атрибутов и реальной длины строки).

    190 выигранных байт при длине строки в 73 символа дают раздвижку экрана всего на 2 строки, а надо 7 строк. Потому толку от такого трюка при стандартной длине строки в 64 - немного, а если используются атрибуты, то ещё меньше. Только, если сократить отображаемый размер экрана с 64 позиций до 50, на 14 знакомест, что с центровкой сдвинет экран на 7 знакомест вправо, выигрыш в каждой строке составит 7+5= 12 байтов и всего 38*12=456 байтов или 456/(8+50)= ~8 строк. Т.е будем иметь требуемые 38 строк, но уже мизерного экранчика, а остаток линий растра по кадрам можно выиграть увеличив число строк на обратный ход луча по кадрам, что не только сплющит экран, но и визуально поднимет его вверх на 1 строку. Т.е использование трюка с F1 даёт увеличение вертикального размера экрана за счёт сокращения горизонтального размера экрана.

    В этом случае экран для использования псевдографики, т.е с шириной строк не в 10, а 8 линий растра влезет в стандартную экранную область 76D0...FFFF.

    Однако я считаю, что вместо таких извращений в программировании, проще кинуть 1 проводок от ВГ75 к ПЗУ фонта, прошить фонт извращённым фонтом и получить знакоместо 6*10 (а лучше 8*10, заменив ИЕ4 на ИЕ5), что даёт возможность рисовать сплошные вертикальные линии, т.е сплошные рамки в стандартном режиме дисплея. Однако при этом фонт придётся не до-прошить, а пере-зашить, т.к надо в псевдографике сделать элементарный пиксель высотой не 4 линии, а 5 линий растра. Для текстового вывода строки высотой в 10 линий растра лучше, чем в 8 линий. И главное, фонт красивее и псевдографика "сплошнее" без возни с перепрограммированием режимов ВГ75.

    Фонт обычно прошивают извращённым образом для того, чтобы не сдвигать адреса A3...A9 на ПЗУ фонта с целью, чтобы линия LC3 от ВГ75 шла на адрес A3, отчего пригоден обычный фонт с шагом 16. Для сдвижки надо перепаивать проводники на входах ПЗУ фонта - A3 на А4, А4 на А5, А5 на А6... а на А3 сигнал LC3 от ВГ75.

    Так вот, те ленивые, что не хотят этого делать, прошивают извращенный фонт 8*10, где линии растра 9 и 10 прошиваются не с отступом 9 и 10 от начала знакоместа, а во второй килобайт, т.е первые 8 линий знакоместа в первом килобайте, а две последние во втором. Шаг в фонте остаётся 8. Но такие извраты не годятся для большого ПЗУ фонта, содержащего кучу спрайтов для игр. Лучше иметь фонты в нормальном виде, с шагом 16, чем извращаться перед прошивкой ПЗУ, да и посмотреть правильный фонт удобно на экране ОРИОНА или СПЕЦИАЛИСТА, а извращённый фонт не посмотришь. Так что надо перепаивать 8 проводников на входе ПЗУ фонта.

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

    Цитата Сообщение от jerri
    Что такое формат ORD?
    Формат ORD это формат в котором файлы ORDOS компьютера ОРИОН хранятся в его квазидисках. Квазидиском, в свою очередь называется банка ОЗУ целиком отданная для хранения файлов в формате ORDOS. Кроме квазидисков в ОРИОНЕ бывают и электронные диски, это диски в формате нормальных ДОС (т.е ДОС в которых есть каталог, фрагментация файлов и размер диска не ограничен в 60К). ORDOS это исторически первая ОС для ОРИОНА использующая в качестве носителя ОЗУ из излишней банки ОРИОНА. Хотя ORDOS туфта и давно вышла из употребления, но формат файлов примененный в ней оказался удобным для хранения файлов на дискетах. По моим данным первым такой формат применили в 1991 или Мистахов в своём PMBB или Мастер Бридж в своём LORD для CP/M.

    Формат ORD состоит из метки файла длиной в 16 байтов (иногда это неверно называют ORDOS-заголовком) и собственно самого файла, в котором нет информации о длине и адресах загрузки.

    Формат ORD позволяет хранить в метке адрес загрузки, длину файла (хотя и не точную, лишь с кратностью на параграф), а если не зацикливаться на ORDOS, то также КС и дату файла. Недостатком формата является слишком короткое имя всего 8 символов. Для исправления этого недостатка в 90-е годы использовали кодирование 3-х символов расширения одним байтом токеном, который ставится в метке файла в байте с офсетом 0DH. Прилагаю текст, описывающий формат для компьютера ИРИША, использующий формат ORD. У меня файлы для СПЕЦИАЛИСТА, ОРИОНА, РК86 и ИРИШИ хранятся в формате ORD.

    Могу конвертировать файлы из формата ORD в формат GAM.
    Вложения Вложения
    Последний раз редактировалось barsik; 02.01.2018 в 05:06.

  9. #8
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    396
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    64 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    ...
    150 выигранных байт при длине строки в 73 символа дают раздвижку экрана всего на 2 строки, а надо 8 строк.
    ...
    Так верхние три неиспользуемые строки можно сократить до двух байт, поставив 1F в самом их начале. Итого сэкономить 3*76 байт.
    А так же две нижние, поставив команду "Конец экрана, стоп ПДП". Ещё плюс 76+78 байт.
    Ну и если прибавлять дополнительные неиспользуемые строки, то поступать с ними так же.
    Неотображаемые строки не имеет смысла считать за полноценные и отсчёт строк можно начинать сразу с видимых.

    Vinxru эту технику подробно описал (даже где-то тут на форуме сохранилось). Его экран 78*36 (при видимых 64*25 без промежутков между строками символов) занимает область в памяти меньше чем родной 78*30 (те же 64*25, но с промежутками).

  10. #9
    Activist Аватар для SegaBoy
    Регистрация
    12.11.2009
    Адрес
    Москва
    Сообщений
    396
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    86
    Поблагодарили
    64 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, эти все "извращённые" режимы нужны в основном для игр. Использовать после этого стандартные процедуры работы с экраном бессмысленно. А некоторые игры так и работают. После старта проводят свою инициализацию ВГ75 и ПДП и никого уже не беспокоит ни расчёт адреса, ни стандартные процедуры. От пользователя требуется лишь одно - играть. Выход из такой игры происходит по рестарту или на процедуру инициализации Монитора. И перед пользователем снова "привычный" режим экрана.
    Главное чтобы в такой игре примерно соблюдался телевизионный стандарт 50Гц (~312 строк) или 60ГЦ (~262 строки) и правильные гасящие импульсы. Если конечный результат будет похож на PAL50 или PAL60 то современный телевизор покажет такую картинку без всяких срывов.

    Со спецкомандами F0, F1 и тд. есть такой нюанс - они не могут идти подряд (как и прочие атрибуты). Если идёт два атрибута подряд, то ВГ75 принимает второй за символ (игнорируя старший бит). Поэтому нужно отделить их хотя бы нулями.

  11. #10
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SegaBoy
    поставив 1F в самом их начале. Итого сэкономить 3*76 байт
    Насчёт 1F, сначала не понял, но после догадался, что это опечатка и имелcя ввиду код F1.

    Идею понял. На 5 невидимых строк можно потратить всего 5 байтов, ставя в начале этих строк код F1. А расчёт адресов начал строк тоже не усложнится, если считать (76D0+3 + N_строки * 73). 77 байтов экономим в 5-ти невлезающих по вертикали строках, что даёт дополнительные 385 байтов. Всего экономия составит 5*25 + 5*77= 510 байтов, что даёт 510:73= 6 строк, что и требовалось vinxru, чтобы иметь 36 строк. Но непонятно почему 36, ведь, чтобы частота кадров не менялась надо добавить 8 строк. Возможно он считал строки высотой в 10 линий, хотя в этом режиме они высотой всего в 8 линий растра. Так что 2-х строк всё-равно не хватает. Но можно эти две строки заглушить кодом F1 и тогда байтов хватает.

    Цитата Сообщение от SegaBoy
    Ну и если прибавлять дополнительные неиспользуемые строки, то поступать с ними так же
    Эту идею тоже понял. Но "глушить" имеет смысл только в самом низу экрана, т.е видимую строку 25, иначе, если заглушить строки 1...24, то позиции остальных строк, находящихся ниже заглушенной, сдвинутся и ориентироваться в позициях станет неудобно. Можно также заглушить байтом F1 первую отображаемую строку, увеличив при этом расчётный адрес первой видимой строки на 1.

    Например, глушим кодом F1 видимую строку 25, отчего выигрываем ещё 77 байтов. Итого выигрыш от кода F1 составит: 5*24 + 6*77= 582 байта, что всё-равно не даёт 8 полных строк, а только 7.

    Недостаток этого метода такой-же, как и при переносе экрана ниже 7500, - пропадает возможность вызывать подпрограммы ПЗУ для вывода на экран и с экраном приходится работать внаглую.

    Метод vinxru может быть ценен тем, что даёт ускорение, сокращая число циклов ПДП на 5-ти невидимых строках (с 10-ти пакетов на строку до 1). Теоретически нельзя рассчитать какое это даст ускорение. Возможно ~10%, что тоже неплохо. Можно ускорить прогон еще больше, если заглушить каждую нечётную строку. Заглушить более 2 строк подряд нельзя, нарушится регенерация ОЗУ.

    Эту идею можно заимствовать в ПЗУ F800, устанавливая адрес начала экрана не на 76D0, а на 77С2-3. И заглушая первые 3 строки кодом F1, а последние 2 строки кодом конец экрана. При этом адреса начал строк не изменятся и совместимость с корректными программами сохранится, но в играх, что выводят тексты вне экрана 64*25, т.е на бордёре этих текстов видно не будет. А при запуске тех игр, что пишут на 26 строке и ниже, вообще будет затёрт атрибут конец экрана... что возможно и не приведёт к трагедии, но надо посмотреть в реале.

    Метод vinxru имеет смысл и даёт видимых 30 или 31 строку в текстовых программах, где есть символы.

    Важная цель вывода в графическом режиме получить лучшее разрешение, что составляет со стандартным фонтом (с графической матрицей знакоместа 2*2) - 128*60 (режим 36 строк, 30 видимых), а при альтернативном фонте с графической матрицей знакоместа 3*2 и перепрограммированием ВГ75 на строки высотой в 2 линии растра - аж 192*104 (режим 60 строк, 51 видимая). Возможно запрограммировать ВГ75 на 64 строки, сделав ещё больше видимых строк, но тут надо экспериментировать и проверять всё в реале, чтобы частоты строк и кадров не изменились.

    Однако, у меня есть сомнения против такого режима ВГ75. Во-первых, для регенерации ОЗУ надо чтобы перебирались все адреса. И если мы заглушим ПДП на позиции 73, то ячейки соответствующие позиции 73...78 никогда не регенерируются. В целиком заглушенных строках вообще не производится регенерация динамической памяти. Период регенерации РУ5-тых 2 МСЕК, это значит, что регенерация должна происходить каждые 3 строки. 2000 МКСЕК : 64 * 10 = 3 строки. Перебор всех 128 адресов занимает 2 строки. Так что если мы заглушаем регенерацию на 5 строк (3 сверху, 2 снизу), у нас будет перерыв регенерации на 64*8*7= ~3.9 МСЕК, что намного больше периода регенерации РУ5-тых и содержимое ОЗУ разрушится. Поэтому трюки от vinxru можно применять только при статической памяти.
    Последний раз редактировалось barsik; 09.03.2017 в 20:51.

Страница 1 из 36 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 210
    Последнее: 26.07.2019, 11:45
  2. Ответов: 6
    Последнее: 07.02.2016, 11:55
  3. Трюки с контроллером FDD 82077
    от Titus в разделе Утилиты
    Ответов: 4
    Последнее: 10.06.2011, 19:17

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •