Попробуй в 0.03b. Там есть маппинг памяти PPU, а так же исправлена ошибка отсутсвия поддержки FPU-инструкций, из-за чего бейсик тоже вешался.
Вид для печати
Попробуй в 0.03b. Там есть маппинг памяти PPU, а так же исправлена ошибка отсутсвия поддержки FPU-инструкций, из-за чего бейсик тоже вешался.
Провел кое-какие исследования на реале. Оказалось, что вы совершенно правы:
Итого мы имеем результат - в нашем процессоре как класс отсутствуют циклы байтовой записи в память. Вместо них идут циклы RMW. Кстати, если вы заметили, цикл RMW PPU для словных и байтовых команд отличается на 4 такта из-за того, что ОЗУ PPU 8-битное, и слова записываются в два приема по 8 бит.Код:Сравнение времени выполнения байтовых и словных команд на CPU и PPU:
Мнемоника-1 CPU PPU Циклы Мнемоника-2 CPU PPU Циклы
------------------------------------------------------------------------------
MOV Rn,(Rn) 33.13 36 W MOVB Rn,(Rn) 40.62 52 RMW
CMP Rn,(Rn) 27.90 40 R CMPB Rn,(Rn) 27.90 40 R
BIT Rn,(Rn) 27.90 40 R BITB Rn,(Rn) 27.90 40 R
BIC Rn,(Rn) 40.62 56 RMW BICB Rn,(Rn) 40.62 52 RMW
BIS Rn,(Rn) 40.62 56 RMW BISB Rn,(Rn) 40.62 52 RMW
XOR Rn,(Rn) 40.62 56 RMW
ADD Rn,(Rn) 40.62 56 RMW
SUB Rn,(Rn) 40.62 56 RMW
CLR (Rn) 33.13 36 W CLRB (Rn) 40.62 52 RMW
COM (Rn) 40.62 56 RMW COMB (Rn) 40.62 52 RMW
INC (Rn) 40.62 56 RMW INCB (Rn) 40.62 52 RMW
DEC (Rn) 40.62 56 RMW DECB (Rn) 40.62 52 RMW
NEG (Rn) 40.62 56 RMW NEGB (Rn) 40.62 52 RMW
TST (Rn) 27.90 40 R TSTB (Rn) 27.90 40 R
ROL (Rn) 40.62 56 RMW ROLB (Rn) 40.62 52 RMW
ROR (Rn) 40.62 56 RMW RORB (Rn) 40.62 52 RMW
ASR (Rn) 40.62 56 RMW ASRB (Rn) 40.62 52 RMW
ASL (Rn) 40.62 56 RMW ASLB (Rn) 40.62 52 RMW
ADC (Rn) 40.62 56 RMW ADCB (Rn) 40.62 52 RMW
MFPS (Rn) 40.62 52 RMW
SWAB (Rn) 40.62 56 RMW
SXT (Rn) 33.13 36 W
Уже значительно лучше, но символ в слове "Circle" также пропадает. Да и во время прохождения теста довольно много ошибок.
Кстати по поводу пропадающего символа. В UKNCBTL он стал пропадать после того, как была причесана обработка прерываний. Раньше фактически было так - обработано прерывание, затем команда. Потом стало так, как должен обрабатывать процессор - сначала все незамаскированные запросы на прерывание, а затем, когда не осталось запросов - уже команда.
В УКНЦ при выводе на экран (канал 0) есть ошибка, связанная с переполнением буфера. Может возникать ситуация, когда производится обработка очереди (полной) и возникает запрос на прерывание канала 0. Я этот момент уже описывал. Ярко он проявился на программе от Patron по подсчету CPS, проявление было как на реальной машине, так и на эмуляторе.
Может у тебя турбобейсик не такой? У меня ниче не пропадает)
Скрытый текст
У реальной обработки прерываний есть ещё один небольшой аспект - запрос прерывания начинает обслуживаться строго через одну команду после его выставления.
Т.е. наличие запроса на прерывание (при разрешённых прерываниях) ещё не означает, что запрос будет обслужен - нужно проверить, сколько команд назад этот запрос был выставлен.
Речь у меня шла немного про другое, про одновременное выставление запросов на прерывание несколькими устройствами, и блок обработки прерываний должен сперва обработать все незамаскированные прерывания, а уж потом исполнять команду.
Но вопрос про задержку поставлен совершенно правильно. В UKNCBTL такой задержки нет. Если по каналу 0 что-то передается для ПП, то после записи со стороны ЦП, со стороны ПП сразу же возникает запрос на прерывание, а не должно, действительно, только при исполнении следующей команды. Аналогично, если байт был прочитан со стороны ПП, то со стороны ЦП требование для записи очередного байта должно возникнуть не сразу.
Тут скорее всего такое дело, что процессор читает регистр запросов на прерывания во время исполнения команды. Поэтому установка бита разрешения прерывания вызовет прерывание не после этой команды, а после следующей. Из-за этого и советуют бит разрешения прерывания очищать при запрещенных прерываниях, чтобы не возникало ситуации ошибки приема адреса вектора прерывания.
Обновил версию до 0.04a.
Изменения такие относительно 0.03a:
Сделан маппинг памяти PPU, поддержка FPU-инструкций, исправлены циклы Write->RMW для байтовых команд (спасибо Alex_K), сделана смена палитры RGB->GRB->Black/White по клавише '~', клавиша АР2 перенесена с '~' на 'ESC'.
Теперь работает Турбобейсик, корректно работает графика в 'спрайтовом режиме' и заливка там, где она не работала.
Однако КЦГД стал ругаться в консоли при нажатии '<--', когда стирать в строке уже нечего. Появилось это после изменения циклов байтовых команд с W на RMW. КЦГД так же работает, но просто ругается.
---------- Post added at 18:41 ---------- Previous post was at 18:31 ----------
Понятно, теперь он читает регистр, в который раньше только писал. Ниче страшного)
Значительно лучше, даже буковка почти перестала пропадать.
Даже могу сказать почему. Ругаться будет и после нажатия неправильной комбинации, которую не поддерживает SL. Просто SL в этом случае выдает звуковой сигнал управляющим кодом 7, а КЦГД сам пищать не умеет, он просто дает клавиатуре МС7004 команду подать звуковой сигнал. Общение с клавиатурой сделано через 1801ВП1-065. У неё регистры данных и читаются и пишутся в обоих направлениях с выдачей RPLY, просто в приемнике запись уходит в никуда, а в передатчике по чтению читается адрес вектора прерывания приемника.
И Так, ES0.04a: заработала ещё одна игра POCKER.SAV - графич. кости со сборника игр для UKNCBTL - раньше вис с чёрным экраном !!!
Titus, предлагаю поправленный вариант дискеты прилагаемой к EmuStudio.
Состав дискеты.
Скрытый текст
Код:Image : ESGames.dsk
Format : DSK
Size : 800 Kb
Volume ID: ES_GAMES
Owner : ES0.04a
File Blocks Date Bytes
---------- ------ ----------- ----------
SWAP .SYS 27 17-Jun-1997 13'824
RT11SJ.SYS 68 17-Jun-1997 34'816
ME .SYS 2 17-Jun-1997 1'024
TT .SYS 2 17-Jun-1997 1'024
MZ .SYS 4 17-Jun-1997 2'048
LD .SYS 8 17-Jun-1997 4'096
LP .SYS 11 17-Jun-1997 5'632
NC .SYS 29 17-Jun-1997 14'848
SL .SYS 10 19-Jan-1988 5'120
STARTS.COM 1 17-Jun-1997 512
SETGEN.SAV 29 17-Jun-1997 14'848
DIR .SAV 19 17-Jun-1997 9'728
LAND .SAV 30 18-Oct-1987 15'360
LANDD .SAV 9 30-Nov-1989 4'608
GMAN .SAV 52 04-Dec-1989 26'624
MEDRIV.SAV 7 17-Jun-1997 3'584
DF .SAV 10 17-Jun-1997 5'120
SKEY .SAV 34 12-Nov-2011 17'408
CLCDEM.SAV 93 27-May-2009 47'616
FGRDEM.SAV 61 27-May-2009 31'232
KEY .SAV 34 12-Nov-2011 17'408
CAT .SAV 52 07-Dec-1988 26'624
SHERIF.SAV 24 14-May-1987 12'288
SHERI2.SAV 24 26-Dec-1988 12'288
LANDE .SAV 49 17-Jun-1997 25'088
RDWR .SAV 2 17-Jun-1997 1'024
SPEED .SAV 3 17-Jun-1997 1'536
TSGD .SAV 5 17-Jun-1997 2'560
DMP .SAV 2 17-Jun-1997 1'024
FONTUK.SAV 5 17-Jun-1997 2'560
SPD .SAV 20 17-Jun-1997 10'240
PIP .SAV 29 10-Mar-1983 14'848
GRAPH .MAK 17 27-May-2009 8'704
FGRDEM.COM 1 27-May-2009 512
SHRIFT.001 1 27-May-2009 512
SHRIFT.MAK 1 27-May-2009 512
CLCDEM.COM 1 27-May-2009 512
GRAFIK.001 1 27-May-2009 512
GRAFIK.002 1 27-May-2009 512
GRAFIK.MAK 1 27-May-2009 512
GMAN .LST 58 20-Mar-1990 29'696
GRES .BIN 9 04-Dec-1989 4'608
BANK .FNT 68 17-Jun-1997 34'816
DUP .SAV 45 29-Feb-1984 23'040
UCL .SAV 2 31-Dec-1999 1'024
< UNUSED > 625 320'000
---------- ------ ----------- ----------
45 Files, 961 Blocks
625 Free blocks
[свернуть]
Список изменений
Скрытый текст
Ничего(из игр и программ) не удалено.
Поправил команды загрузки системы, убрал от туда обращение
к отсутствующему на диске SC.SAV - что-бы в конце загрузки
не ругался. Добавил системные PIP.SAV,DUP.SAV,UCL.SAV ;-)
Заменил версию драйвера SL.SYS и настроил в ней две очень
удобных команды
; = Dir/Fu/Vo/Bl в режиме < auto
? = Run в режиме < auto
Добавил в стартовые команды (самой последней) показать
все .SAV на системном диске.
[свернуть]
-----------------------------------------------------------
!!! Обновил образ дискеты - запрос даты на загрузке выключен !!!
(и почему я его сразу не отключил ?)
:redface:
Скрытый текст
Интересно теперь собрать список программ, которые НЕ работаю или работают глючно. Преимущественно интересуют меня игры, но и вообще программы.
Titus, планируется ли добавление какого-нибудь интерфейса в эмулятор, ну хоть самого простого ?
а то вводить команды через консоль это ужас какой-то.
Нужно три кнопки добавить "запустить ДВКашного Кота", "запустить УКНЦшного Кота" и "Утопить Кота" )))))))))))))))
Titus, а планируется ли добавление ЧБ-режима для УКНЦигр?
Да и ДВКашный Digger - графическая классическая игра,под монохромный или цветной контроллер на двк была? на дискете (которая к эмулятору) место для него точно есть ))))
:redface:
про проблемы с запуском игр и программ в ES для этого и открытое тестирование запущено, так ведь? Будем в этой теме
отписываться ))) Пока вижу что с ИТО-сборниками вопрос так и не решился, зато пара игр УКНЦшных заработало в 4 альфе (NEWTET и POCKER).
Ага увидел, действительно проглядел !
Скрытый текст
Ну это совсем другое дело (вот оно предсказанные чб скриншоты)
http://savepic.net/2458499.png
[свернуть]
А по поводу клавиш на большой машине с полно размерной клавиатурой всё норм(проверил) , дело в том, что на ноуте у меня проблемы с ДКЛ у всех
эмуляторов (модульный эмулятор Patrona, UKNCBTL и вот в список добавился EmuStudio), просто не хотел расстраивать тебя раньше времени )))
Позапускал эмулятор у друзей на LCD мониках и еще раз утвердился во мнении, что все LCD моники портят плавную попиксельную анимацию. А именно, если включить плавный рулон в системе, и сделать, например, DIR, то при движении изображения вверх, буквы будут немного смазываться и терять яркость. Этот вопрос уже поднимался в теме про Dizzy-AGE игры с плавным скроллингом. На CRT мониторах (и телевизорах) все идеально.
p.s.: Если у кого-то из владельцев LCD-моников такого эффекта нет, отпишитесь.
Это особенности технологии матриц TFT. Параметр "время переключения точки". Чем больше это время - тем дольше точка "помнит" своё состояние. Визуально проявляется в снижении контраста динамичных изображений, снижении контраста и резкости движущихся изображений и появлении "шлейфов".
используйте мониторы с IPS матрицей и будет вам щастье.
у меня Dell 2007WFP с S-IPS матрицей картинка идеальная, косяков нет, ЭЛТ и TуFTа-мониторы курят в сторонке.
у меня на 12" матрице на буке этот эффект минимален, поскольку матрица высокой четкости и заточена для HD видео - и актион видео игр, углы обзора для современных TFT стандартны, поэтому предлагаю забить поскольку Patron, абсолютно правильно написал, так-же возможно что моник у ваших знакомых древний.
ZEman, не стоит начинать холи-вары про типы матриц и очевидные вещи писать, лучше цену на свою матрицу напишите )))
Titus, если захочешь матрицу себе бери только IPS и желательно от разработчика технологии (NEC).
Мне кажется, тут несколько иной эффект. Основную роль в потере яркости движущегося изображения играет не послесвечение точки, а недосвечение новой зажженной точки. Т.е., например, точка сместилась с позиции 100 на позицию 101. При этом в позиции 100 она выключается, а в 101 включается. Выключается она быстрее, чем успевает разгореться новая. Отсюда и потеря яркости.
---------- Post added at 14:36 ---------- Previous post was at 14:35 ----------
Я не хочу себе LCD по нескольким причинам, в том числе по описанной выше. Когда кто-то мне покажет матрицу, где при движении так же плавно, как на CRT, тогда одной причиной станет меньше)
Так и есть :)
Время переключения точки = время включения точки + время выключения точки. При этом время включения больше, чем время выключения.
Для борьбы с этим недостатком некоторые матрицы имеют режим "овердрайв", при котором яркость включающейся точки сначала "разгоняется" сильнее чем надо, а затем уменьшается до целевого значения - так (в итоге) получается быстрее, чем асимптотически выходить на требуемую яркость.
Чего-то никто из ДВК'шников не отписался о возможностях работы в режиме КЦГД.:v2_unsur:
Небольшое обновление.
В список палитр УКНЦ добавлена еще одна. Теперь их 4:
Так же добавлена возможность переключать палитры режима КГД ДВК:Код:RGB,
GRB,
Black/White
Black/White TV (засветленный уровень черного, как в старых телевизорах и мониторах)
Кроме того, из консоли убрана лишняя информация о записи в КЦГД-регистры, возникшая из-за изменений в прошлой версии.Код:Blue
Monochrome (цвета срисованы с фотки настоящего монохромного монитора)
Black/White
Black/White TV
Далее, в оконном (не полноэкранном) режиме, окно теперь принимает размеры текущего эмулируемого графического режима (УКНЦ, КГД, КЦГД).
А так же, сделана загрузка по умолчанию диска с именем System.dsk (если не указано иное имя), на тот случай, если кому-то лениво набирать каждый раз в консоли имя диска.
И еще в комплекте теперь подправленный диск от hobot'а, в который я добавил 4 новых игрушки от ДВК - LAND2, MOTO, PIFPAF, FIGHT. Что самое интересное, игрушка FIGHT оказалась под КЦГД ДВК! Теперь это вторая игрушка под этот экзотический режим. Правда, управляться не хочет, но показывает.
Скрытый текст
Похоже, я и hobot - единственные пользователи эмулятора)
я и 11 Titus ))))))
Titus, такой момент, УКНЦшный Digger.sav нормально работает, а ДВКашный
виснет? А хотелось-бы именно ДВКашный стартануть )))
Скрытый текст
http://savepic.net/2447173.png[свернуть]
Зато я примерно понял, почему не загружаются некоторые диски, например, ITO.
Судя по всему, в загрузчике есть некий счечтик неудавшихся попыток поиска маркера заголовка сектора, при каждом промахе он уменьшаяется, уменьшается пока не кончится. Предполагаю так, что если файл длинный, то в течение его загрузки этих промахов больше, и он не догружается до конца, выдавая ошибку 104 (как раз ошибка синхронизации).
Другой вопрос, почему он промахивается... Это надо посмотреть.
Titus, не один ты с hobot, ой не один:)