Просмотр полной версии : Эмулятор УКНЦ - EmuStudio
Ничего (если буфер вывода пуст). Об том и речь - не пишет. До получения второго прерывания подряд. После первого (если буфер вывода пуст) - очищает разрешение прерываний. После второго - проверяет буфер вывода на наличие байтов и если таковые есть - выводит (иначе - опять очищает разрешение прерываний).
Фраза была построена так просто что получалось когда буфер пуст - что-то пишется :)
А что прерываний на 1 больше получается чем выводимых символов - подтверждаю.
---------- Post added at 16:19 ---------- Previous post was at 16:15 ----------
Кстати вопрос - если говоришь на УКНЦ запрет-разрешение не работает - как на нем раюотают обычные непатченные системы?
что прерываний на 1 больше получается чем выводимых символов - подтверждаю.Здесь вся хитрость в том, что при добавлении новых символов в пустой буфер вывода - подпрограмма обработки EMT может уведомить подпрограмму обработки TTPINT о необходимости продолжить выводить символы только одним способом - возбудив "фальшивое" прерывание.
Для этого подпрограмма обработки EMT делает BIS #100,@#TTPS. При этом даже не надо проверять предыдущее состояние буфера вывода. Если буфер вывода содержал символы ( а значит - прерывания были разрешены ) - ничего не изменится, а если буфер вывода был пуст (а значит - прерывания были запрещены) - произойдёт новое прерывание и вывод на экран продолжится.
---------- Post added at 12:27 ---------- Previous post was at 12:26 ----------
Кстати вопрос - если говоришь на УКНЦ запрет-разрешение не работает - как на нем раюотают обычные непатченные системы?Канал 0 со стороны ЦП работает "по-ДВКашному", каналы 1 и 2 с обеих сторон - "по-УКНЦшному".
подпрограмму обработки TTPINT
Только она как-то по другому называется вроде.
---------- Post added at 16:29 ---------- Previous post was at 16:27 ----------
Канал 0 со стороны ЦП работает "по-ДВКашному", каналы 1 и 2 с обеих сторон - "по-УКНЦшному".
понял.
главное, что на этих 1 и 2 работает правило - записал в буфер, разрешил прерывания, поехал дальше, прерывание возникло :)
---------- Post added at 16:31 ---------- Previous post was at 16:29 ----------
Собственно наверное специально так сделано из-за специфики использования каналов этих.
Только она как-то по другому называется вроде.
.SBTTL TERMINAL OUTPUT INTERRUPT SERVICE
.ENABL LSB
.IF EQ TIME$R
TTOINT::MOV R5,-(SP)
MOV (PC)+,R5
PTOBF4:: .WORD TTOBUF+4
JSR R4,TTO2
.ENDC
TABCNT: .WORD 0
FILLC: .WORD 0
CHCNT: .WORD 10
.IF NE TIME$R
TTOINT::JSR R5,$INTEN
.WORD ^C<PR4>&PR7
MOV (PC)+,R5
PTOBF4:: .WORD TTOBUF+4
MOV (PC)+,R4
PTBCNT:: .WORD TABCNT
.ENDC
TTO2: TST (PC)+
SYNC: .WORD 0
BNE 12$
DEC (R4)+
BGT 6$
MOV R4,-(SP)
CLR -(R4)
MOV $ENTRY+TT.NUM,R4
BEQ 1$
JSR R4,TT$$$2(R4)
.WORD TTILCT-.
1$: MOV (SP)+,R4
CMP @R5,2(R5)
BNE 2$
SUB #TTYOUT,@R5
2$: DEC -(R5)
CMP (R5)+,#-1
BEQ 11$
MOVB @(R5)+,@R4
3$: BIC #^C<177>,@R4
CMP (R4)+,#RUBOUT
BEQ 4$
CMP -2(R4),#40
BLT 7$
DEC @R4
BNE 4$
MOV #10,@R4
4$: TST -(R4)
5$: INC -(R5)
6$: MOV @R4,@TTPB
BR 12$
7$: CMP -2(R4),#BS
BNE 14$
INC @R4
BR 10$
14$: CMP -(R4),#TAB
BNE 8$
MOV #40,(R4)+
MOV @R4,-4(R4)
BR 9$
8$: CMP (R4)+,#CR
BNE 10$
CLR -4(R4)
9$: MOV #10,@R4
10$: DEC R4
CMPB -(R4),@#TTFILL
BNE 5$
MOV @R4,@TTPB
CLR @R4
CLR -(R4)
MOVB @#TTNFIL,@R4
INC -(R5)
BR 12$
11$:
.IF EQ PDT$OP
BIC #TPS$MK,@TTPS
.IFF
CLR @TTPS
.ENDC
CLR -(R5)
12$:
.IF EQ TIME$R
BR RTICMN
.IFF
RTS PC
.ENDC
.DSABL LSB
Что за такой регистр 177074 на магистрали ПП?
По адресу похож на рудимент несуществующего источника канала-2.
Что за такой регистр 177074 на магистрали ПП?
По адресу похож на рудимент несуществующего источника канала-2.
177074 Резерв Формируется сигнал "СИП"
177074 Резерв Формируется сигнал "СИП"
Спасибо, документацию я тоже читал)
Про 177704 тоже самое написано, а оказалось, что этот регистр много чего делает. Поэтому и возник подобный вопрос.
Спасибо, документацию я тоже читал)
Про 177704 тоже самое написано, а оказалось, что этот регистр много чего делает. Поэтому и возник подобный вопрос.
Канал 2 однонаправленный, поэтому второе несуществующее направление висит пустышкой, т.е. при чтении читается ноль, а запись уходит в никуда. Вроде так, но надо глянуть на реальной машине. В UKNCBTL во всяком случае так и реализовано, а так как смотрелось на реальной машине, значит так и есть.
Вот меня интересует, неужто в 1801ВП1-120 не хватило места для второго направления для канала 2, да и реализация запроса на прерывания (кроме канала 0 со стороны ЦП) аппаратно легче, чем классическая для ДВК.
Вот меня интересует, неужто в 1801ВП1-120 не хватило места для второго направления для канала 2, да и реализация запроса на прерывания (кроме канала 0 со стороны ЦП) аппаратно легче, чем классическая для ДВК.
Думаю, что вопрос не в том, что не хватило место, а в том, что он при проектировании не планировался.
Кстати, не смотря на обилие высказываний в этой теме о различии каналов 0 (стиль ДВК), и всех остальных, я так внятно и не понял этого различия. Хотя и внимательно вчитывался) Возможно, потому что все говорят вразнобой.
Думаю, что вопрос не в том, что не хватило место, а в том, что он при проектировании не планировался.
А может и не хватило, более сложное сделано в 1515ХМ1.
Кстати, не смотря на обилие высказываний в этой теме о различии каналов 0 (стиль ДВК), и всех остальных, я так внятно и не понял этого различия. Хотя и внимательно вчитывался) Возможно, потому что все говорят вразнобой.
Если будет время на выходных подключу реал и попробую прогнать тесты на прерывания на канале 1. А исходники UKNCBTL смотрели? Там в структуре канала есть переменная rdwr, в зависимости от состояния которой выставляется запрос на прерывание при установке бита РП. Эта переменная для канала 0 со стороны ЦП все время равна 1.
Ваше описание реализации читал, на так все замудренно, что трудно разобраться. При эмуляции аппаратуры надо представлять как это будет в железе, если понимается как реализовано на аппаратном уровне, то и программно в эмуляции потом сделать не представит труда.
Вот меня интересует, неужто в 1801ВП1-120 не хватило места для второго направления для канала 2, да и реализация запроса на прерывания (кроме канала 0 со стороны ЦП) аппаратно легче, чем классическая для ДВК.
У нас даже когда "полные аналоги" делали экономили на том, чтобы проверить сигнал WTBT (а потом советские программеры "исправляли ошибки" в драйверах), а ты говоришь про микросхемы :)
Если будет время на выходных подключу реал и попробую прогнать тесты на прерывания на канале 1. А исходники UKNCBTL смотрели? Там в структуре канала есть переменная rdwr, в зависимости от состояния которой выставляется запрос на прерывание при установке бита РП. Эта переменная для канала 0 со стороны ЦП все время равна 1.
Да я уж сам, поди тест сделаю на железе наверное.
А в исходники UKNCBTL не хочу смотреть на предмет каналов, т.к. там тоже могут быть ошибки, а я хочу выяснить правильный алгоритм.
Да я уж сам, поди тест сделаю на железе наверное.
А в исходники UKNCBTL не хочу смотреть на предмет каналов, т.к. там тоже могут быть ошибки, а я хочу выяснить правильный алгоритм.
Интересно сверить наши результаты на реальном железе.
А по поводу ошибок в UKNCBTL, найдите, скажите. Во всяком случае KUARKO нормально стартует, подвисаний потом нет, да и терминал VT-200 грузится.
Интересно сверить наши результаты на реальном железе.
А по поводу ошибок в UKNCBTL, найдите, скажите. Во всяком случае KUARKO нормально стартует, подвисаний потом нет, да и терминал VT-200 грузится.
Отдельные программы - это не показатель.
Вон, нашел у вас ошибку в командах сдвига. Благодаря жесткому тесту. Хотя, на реальных программах она бы могла и не проявиться, да и парк программ на УКНЦ очень маленький.
Отдельные программы - это не показатель.
Вон, нашел у вас ошибку в командах сдвига. Благодаря жесткому тесту. Хотя, на реальных программах она бы могла и не проявиться, да и парк программ на УКНЦ очень маленький.
Всякие ошибки могут быть, от этого никто не застрахован.
Работа каналов будет проверяться отдельной программой? Если да, то что эта программа будет проверять? Будет ли выводить в чем состоит ошибка, конкретное место?
Всякие ошибки могут быть, от этого никто не застрахован.
Работа каналов будет проверяться отдельной программой? Если да, то что эта программа будет проверять? Будет ли выводить в чем состоит ошибка, конкретное место?
Разумеется, у меня тоже были ошибки в проце, и даже еще больше, т.к. никогда не был УКНЦ'шником, но мне этот комп ностальгически близок)
Не знаю, ЕСЛИ напишу, то что-то будет выводить)
Не знаю, ЕСЛИ напишу, то что-то будет выводить)
А как же проверять работу будете? Это я любитель в пультовом отладчике работать. Поэтому у меня нет таких программ. Единственно я писал программы, когда работал с 1801ВП1-128.
А как же проверять работу будете? Это я любитель в пультовом отладчике работать. Поэтому у меня нет таких программ. Единственно я писал программы, когда работал с 1801ВП1-128.
Какую-нибудь тестовую информацию надо выводить, конечно.
А пультовым терминалом я вообще пользоваться практически не умею)
Тем более, им по шагам ПП'ушную программу не отладить.
А пультовым терминалом я вообще пользоваться практически не умею)
Весьма удобный инструмент, если надо что быстро проверить и довольно короткое.
Тем более, им по шагам ПП'ушную программу не отладить.
Да, есть такой факт. Но в пультовом отладчике ЦП бесполезно проверять по шагам программу, которая исследует прерывания, у которых приоритет ниже, чем у входа HALT. Прерывания в этом случае не произойдут.
Пытался посмотреть в UKNCBTL Road Fighter с диска ITO91, т.к. у меня там в игре присутствует мерцающий байтик, хотел сравнить так же в UKNCBTL или нет. В итоге вообще не смог внятно запустить эту игру. Максимум доходит до заставки, а то и до нее не доходит, повисает. Эмуль от 2.10.2011. Кстати, у меня она тоже через раз запускается, виснет на заставке.
Короче, выяснил такую закономерность. В версии UKNCBTL от 2.10.2011 до заставки вообще не доходит, а в версии от 28 июля 2010 работает как и у меня, через раз запускаясь, и мерцающий байт в самой игре на дороге присутствует.
Запустил Road Fighter на реале.
Мерцающий байтик есть.
На заставке виснет, если пробел нажать раньше, чем перестает крутиться дисковод.
Так что можно считать идентичным эмуляторам.
На заставке виснет, если пробел нажать раньше, чем перестает крутиться дисковод.
О!
То что надо!
Проверь pls с моим драйвером - как раз нужен был тест такого типа :)
А вот турбобейсик с той дискетке, на которой он был, на реале НЕ грузится. При загрузке пишет Error Reading Overlay, как писало у меня, когда у меня был плохо поддержан дисковод (много хождений головкой). На реале, кстати, тоже грузит, шагает по одному шагу, а потом несколько раз назад на пару дорожек, и останавливается с ошибкой.
---------- Post added at 17:08 ---------- Previous post was at 17:07 ----------
О!
То что надо!
Проверь pls с моим драйвером - как раз нужен был тест такого типа :)
Образ давай.
Образ давай.
Делаю.
Так как в форуме хрен найдешь по заведомо существующим ключевым словам :)
Запустил Road Fighter на реале.
Мерцающий байтик есть.
На заставке виснет, если пробел нажать раньше, чем перестает крутиться дисковод.
Так что можно считать идентичным эмуляторам.
О!!!! Значит можно считать, что все сделано правильно. Значит еще надо индикатор вращения двигателя дисководов.
---------- Post added at 17:15 ---------- Previous post was at 17:11 ----------
А вот турбобейсик с той дискетке, на которой он был, на реале НЕ грузится. При загрузке пишет Error Reading Overlay, как писало у меня, когда у меня был плохо поддержан дисковод (много хождений головкой). На реале, кстати, тоже грузит, шагает по одному шагу, а потом несколько раз назад на пару дорожек, и останавливается с ошибкой.
Значит или дискета плохая, или дисковод. Ведь подпрограмма чтения с дискеты в ПЗУ ПП написана так, что она большой объем читает зараз, не получилось - ошибка. А драйвер MZ обычно делает 10 попыток чтения.
Могу сказать, что этот образ на реале у меня нормально грузился.
Можно проверить дискету командой DIR/BAD/FIL.
Значит или дискета плохая, или дисковод. Ведь подпрограмма чтения с дискеты в ПЗУ ПП написана так, что она большой объем читает зараз, не получилось - ошибка. А драйвер MZ обычно делает 10 попыток чтения.
Могу сказать, что этот образ на реале у меня нормально грузился.
Можно проверить дискету командой DIR/BAD/FIL.
Перезаписал несколько раз. Проверял на BAD'ы на PC.
DIR/BAD/FIL - это что?
Записал на эту же дискету турбобейсик, но с другой системой, все загрузилось прекрасно. Кстати, и у меня на эмуле раньше со станартной дискеты писало ошибку, а сдругой системы все было окей.
Теперь на счет глюка с буквой r в слове Circle. Этого глюка на реале... НЕТ) Он перемещен на букву C. Примерно один раз из 10-20, вместо буквы 'C', появляется ','. Один раз мне даже удалось добиться, что вообще вся эта строчка слезла куда-то вбок.
Мало того, на реале выявлен следующий глюк. Если зайти в меню colors, где рисуются цветные квадратики, то при выходе из этого теста в меню, синхронизация у моего монитора пропадает, становится черный экран. Если опять нажать энтер, и войти в этот или любой другой тест, показывать тест будет, но при выходе в меню, опять сбой синхронизации. При нажати 'СТОП', и выходе в турбобейсик, все восстанавливается.
Далее, если запустить все тесты, то на тесте Pages при переключениях так же глючит развертка, а когда все тесты кончаются в меню опять же портится развертка.
---------- Post added at 17:27 ---------- Previous post was at 17:27 ----------
Образ.
Какую программу запустить и что посмотреть?
Какую программу запустить и что посмотреть
Ту которая у тебя виснет если пробел нажать пока дисковод крутится.
---------- Post added at 20:30 ---------- Previous post was at 20:29 ----------
Перезаписал несколько раз. Проверял на BAD'ы на PC.
BADы лучше проверить на месте.
У меня иногда было на PC пишется-читается, а на УКНЦ потом - хрен.
Ту которая у тебя виснет если пробел нажать пока дисковод крутится.
Так эта программа грузится со своего диска, без системы) ITO91)
Так эта программа грузится со своего диска, без системы) ITO91)
А-а. Тогда не интересно.
Но если попадется прога. работающая с ПП и конфликтующая с MZ - попробуй :)
Кое-что потестил еще на реале.
Где-то на форуме обсуждали, успевают выполниться команды между двумя обработчиками прерываний, или же основная программа будет стоять на месте, пока все прерывания не отработают. Выяснил - программа стоит на месте.
Второе, потестил прерывания для каналов ПП, оказалось, что канал 0, как приемник, так и источник работает иначе, чем 1, и 2. А в частности, если во всех каналах установлены биты БГ и РП, но прерывания запрещены, а потом прерывания разрешили, то будут выполнены прерывания лишь для канала 0 источника и приемника.
Где-то на форуме обсуждали, успевают выполниться команды между двумя обработчиками прерываний
Из прерывания возврат был по RTI или по RTT?
---------- Post added at 21:24 ---------- Previous post was at 21:23 ----------
Хотя по докам KDJ11, RTT влияет только на T-bit.
будут выполнены прерывания лишь для канала 0 источника и приемника.Причём, всегда именно в такой последовательности - сначала для источника, потом для приёмника. Верно?
Из прерывания возврат был по RTI или по RTT?
---------- Post added at 21:24 ---------- Previous post was at 21:23 ----------
Хотя по докам KDJ11, RTT влияет только на T-bit.
RTI
---------- Post added at 18:26 ---------- Previous post was at 18:26 ----------
Причём, всегда именно в такой последовательности - сначала для источника, потом для приёмника. Верно?
Сначала приемник, потом источник.
RTI
Проверь RTT для очистки совести - просто, чтобы знать как в данном конкретном случае :)
Хотя по идее разницы быть не должно для данног случая.
Сначала приемник, потом источник.В смысле - сначала ввод с клавиатуры, потом - вывод на экран ?
В смысле - сначала ввод с клавиатуры, потом - вывод на экран ?
Нет, т.к. это со стороны ПП. Сначала прием байта для экрана, потом отдача байта от клавиатуры.
---------- Post added at 18:45 ---------- Previous post was at 18:38 ----------
Так, про другие каналы я скорее всего немножко наврал, у меня там лишний раз запрещается прерывание. Надо перепроверить.
Нет, т.к. это со стороны ПП. Сначала прием байта для экрана, потом отдача байта от клавиатурыДа, конечно.
Главное, что всегда сначала прерывание порта приёмника, потом - прерывание порта передатчика.
...
про другие каналы я скорее всего немножко наврал, у меня там лишний раз запрещается прерывание.Очевидно, что разрешение/запрещение прерываний в процессоре никак не влияет на присутствие запроса IRQ на шине - он там или есть, или его там нет.
А если специальные мероприятия по снятию запроса IRQ не проводились - то если запроса IRQ на шине нет, то это значит, что он и не выставлялся.
Хотя по докам KDJ11, RTT влияет только на T-bit.
На 1801ВМ2 при возврате по RTT и если при возврате устанавливается бит T в PSW, то блок обработки прерываний не запускается, т.е. безусловно выполняется команда нового процесса. Если же при возврате бит T не был установлен, то прерывания не запрещаются.
---------- Post added at 20:12 ---------- Previous post was at 20:11 ----------
Кое-что потестил еще на реале.
Где-то на форуме обсуждали, успевают выполниться команды между двумя обработчиками прерываний, или же основная программа будет стоять на месте, пока все прерывания не отработают. Выяснил - программа стоит на месте.
Я тоже это выяснил. Про это уже где-то и говорил.
Я тоже это выяснил. Про это уже где-то и говорил.
Поведение стандартное скорее всего для всех процов. В доках по процам, поддерживающим PIRQ, про это специально пишут так как через PIRQ можно намертво убить все без шанса вывернуться кроме как через BHALT.
На 1801ВМ2 при возврате по RTT и если при возврате устанавливается бит T в PSW, то блок обработки прерываний не запускается, т.е. безусловно выполняется команда нового процесса. Если же при возврате бит T не был установлен, то прерывания не запрещаются.У 1801ВМ1 всё просто - бит Т запрещает обслуживание IRQ, а команда WAIT на время своего выполнения (которое продолжается, пока на шине есть хоть один запрос IRQ) отменяет этот запрет.
Поскольку во время выполнения единственной команды WAIT обслуживаются ВСЕ "накопившиеся" запросы IRQ - из этого (насколько я понимаю) следует, что приоритет Т-трапа ниже приоритета IRQ.
Часто пишут, что приоритет Т-трапа выше, чем приоритет IRQ, но у 1801ВМ1 это точно не так.
Думаю, что и у ВМ2 - тоже.
Поскольку во время выполнения единственной команды WAIT обслуживаются ВСЕ запросы IRQ - из этого (насколько я понимаю) следует, что приоритет Т-трапа ниже приоритета IRQ.
Приоритет тут неуместен. Это синхронное прерывание, возникающее сразу же при установке T бита по команде RTI без шансов для другого прерывания и без возможности выполнить инструкцию до прерывания по т-биту. RTT дает такой шанс.
Есть правда процы где RTT команды нет, а RTI работает как RTT.
Причем RTI/RTT - единственный способ вызвать прерывание по T-биту.
Приоритет тут неуместен.Когда обслуживания ждут несколько прерываний - первым обслуживается прерывание с большим приоритетом.
Когда обслуживание IRQ не запрещено - все прерывания IRQ подряд обслуживаются раньше, чем возникает очередной Т-трап.
Т.е. после единственной команды WAIT - при выходе из обработчика первого внешнего прерывания по RTI - в PSW восстанавливается бит Т, но если на шине есть ещё запросы IRQ - Т-трап не происходит, а происходит вход в очередное внешнее прерывание. И только когда на шине не остаётся запросов IRQ - "магический эффект команды WAIT" заканчивается и снова вступает в силу блокировка обслуживания IRQ при установленном бите T в PSW.
Когда обслуживания ждут несколько прерываний - первым обслуживается прерывание с большим приоритетом.
Приоритет уместен для асинхронных прерываний. T-бит - синхронное прерывание вроде BPT, IOT, EMT. Команда WAIT вообще не в тему: если возврат по RTI, то прерывание по T-биту сразу и возникнет, если по RTT - прерывание будет отложено и у другого прерывания есть шанс.
Приоритет уместен для асинхронных прерываний. T-бит - синхронное прерывание вроде BPT, IOT, EMT. Команда WAIT вообще не в тему: если возврат по RTI, то прерывание по T-биту сразу и возникнет, если по RTT - прерывание будет отложено и у другого прерывания есть шанс.Это утверждение справедливо лишь абстрактно.
Если говорить конкретно про 1801ВМ1 - то всё обстоит совершенно иначе. После возврата из первого после команды WAIT аппаратного прерывания по RTI - никакого Т-трапа не происходит до тех пор, пока на шине есть хотя бы одно необслуженное прерывание.
И только когда все внешние прерывания обслужены - бит Т снова "начинает работать". Т.е. если возврат из последнего обработчика аппаратного прерывания был по RTI - то Т-трап происходит сразу, а если по RTT - то через одну команду.
---------- Post added at 20:46 ---------- Previous post was at 20:45 ----------
Кроме того - бит Т полностью блокирует внешние прерывания, поэтому после RTT - никаких "шансов" у внешних прерываний не возникает.
Это утверждение справедливо лишь абстрактно.
Если говорить конкретно про 1801ВМ1 - то всё обстоит совершенно иначе. После возврата из первого после команды WAIT аппаратного прерывания по RTI - никакого Т-трапа не происходит до тех пор, пока на шине есть хотя бы одно необслуженное прерывание.
И только когда все внешние прерывания обслужены - бит Т снова "начинает работать". Т.е. если возврат из последнего обработчика аппаратного прерывания был по RTI - то Т-трап происходит сразу, а если по RTT - то через одну команду.
---------- Post added at 20:46 ---------- Previous post was at 20:45 ----------
Кроме того - бит Т полностью блокирует внешние прерывания, поэтому после RTT - никаких "шансов" у внешних прерываний не возникает.
Не берусь в отношении ВМ1 судить - я ничему уже не удивлюсь тут, но в отношении всех остальных Т-бит ничего не блокирует. Это простое синхронное прерывание как любая команда прерываний которая не может быть прервана до ее завершения когда уже началась :)
Не берусь в отношении ВМ1 судить - я ничему уже не удивлюсь тут, но в отношении всех остальных Т-бит ничего не блокирует.Проверить это нетрудно, благо универсальный тест уже мною написан - щас пойду его искать :)
Проверить это нетрудно, благо универсальный тест уже мною написан - щас пойду его искать :)
А я уже проверил :)
Не на ВМ1 правда. BIRQ7 висит на шине (до Т-бита), Т-бит выставился и никакого прерывания по BIRQ7 - лупит одни тбиты :)
У 1801ВМ1 всё просто - бит Т запрещает обслуживание IRQ, а команда WAIT на время своего выполнения (которое продолжается, пока на шине есть хоть один запрос IRQ) отменяет этот запрет.
Бит T не запрещает обслуживание IRQ, прерывание по T выше по приоритету, чем IRQ, поэтому прерывание по IRQ и не возникнет. А команда WAIT при своем выполнении маскирует прерывание по T-разряду и ожидает любого внешнего незамаскированного прерывания (ACLO, EVNT, VIRQ). Если на 1801ВМ2 запретить все внешние прерывания установкой битов 8 и 7 в PSW и дать команду WAIT, то процессор будет долго и упорно ждать прерывания, а т.к. они все замаскированы, то и ждать он их будет вечно, до тех пор пока его не сбросят сигналом DCLO, ну и соответственно не запустят снятием DCLO и ACLO.
Поскольку во время выполнения единственной команды WAIT обслуживаются ВСЕ "накопившиеся" запросы IRQ - из этого (насколько я понимаю) следует, что приоритет Т-трапа ниже приоритета IRQ.
Часто пишут, что приоритет Т-трапа выше, чем приоритет IRQ, но у 1801ВМ1 это точно не так.
Нет не следует, просто во время выполнения WAIT прерывание по T-разряду маскируется. Но об этом я написал выше.
Думаю, что и у ВМ2 - тоже.
Неправильно думаете. Надо иметь реальный процессор и проверять на нем.
Проведенный тест:
START: MOV #10$,@#14
MOV #340,@#16
BPT
10$: RESET
MOV #PIRQ,@#240
MOV #340,@#242
MOV #TBIT,@#14
MOV #340,@#16
BIS #100000,@#177772
MOV #20,-(SP)
MOV #20$,-(SP)
RTI
20$: WAIT
HALT
PIRQ: MOV #TPIRQ,R0
CALL PRINT
DEC #5
BNE 10$
CLR 2(SP)
CLR @#177772
10$: RTI
TBIT: MOV #TTBIT,R0
CALL PRINT
DEC #5
BNE 10$
CLR 2(SP)
10$: RTI
PRINT: TSTB @#177564
BPL .-4
MOVB (R0)+,@#177566
BNE PRINT
RETURN
TTBIT: .ASCIZ /T-BIT/<15><12>
TPIRQ: .ASCIZ /BIRQ7/<15><12>
.END START
Результат:
RTI RTT Все RTT
----- ----- -------
T-BIT BIRQ7 BIRQ7
T-BIT T-BIT BIRQ7
T-BIT T-BIT BIRQ7
T-BIT T-BIT BIRQ7
T-BIT T-BIT BIRQ7
BIRQ7 T-BIT
BIRQ7 BIRQ7
BIRQ7 BIRQ7
BIRQ7 BIRQ7
BIRQ7 BIRQ7
Итого:
Везде RTI: Пока не отработают T-биты у BIRQ7 шансов нет, WAIT будет достигнута только после всех прерываний
Вход по RTT, возвраты из прерываний по RTI: RTT дает шанс BIRQ7, после него верх берет T-BIT
Везде RTT: после отработки всех BIRQ получаем WAIT и T-биты, как и сказал Alex_K, заблокированы
---------- Post added at 01:13 ---------- Previous post was at 01:11 ----------
И ни в одном случае, разумеется, до HALT дела не доходит :)
В приложении тест приоритета Т-трапа для PDP-11 (http://zx.pk.ru/attachment.php?attachmentid=33113)
На процессоре 1801ВМ1 результаты такие:
.RU PDPT1
PDP-11 Interrupts Test #1
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
Program completed.
Легко заметить, что обработчики внешних прерываний после команды WAIT запускаются один за другим, а ведь уже после возврата из обработчика первого внешнего прерывания - команда WAIT осталась "давно в прошлом". Следовательно у 1801ВМ1 приоритет Т-трапа ниже приоритета внешних прерываний.
В приложении тест приоритета Т-трапа для PDP-11 (http://zx.pk.ru/attachment.php?attachmentid=33113)
На процессоре 1801ВМ1 результаты такие:
.RU PDPT1
PDP-11 Interrupts Test #1
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
Program completed.
Легко заметить, что обработчики внешних прерываний после команды WAIT запускаются один за другим, а ведь уже после возврата из обработчика первого внешнего прерывания - команда WAIT осталась "давно в прошлом". Следовательно приоритет Т-трапа ниже, чем внешних прерываний.
Теста самого не видно. Без кода - не имеет смысла. Я вон показал разные варианты одним и тем же тестом с разными командами возврата.
---------- Post added at 01:18 ---------- Previous post was at 01:17 ----------
Обратим также внимание, что после возврата командой RTT никакой WAIT не выполнится пока не отработает IRQ.
---------- Post added at 01:19 ---------- Previous post was at 01:18 ----------
А, прогу не сразу заметил. Посмотрю.
---------- Post added at 01:23 ---------- Previous post was at 01:19 ----------
Не, не стану смотреть - там целая операционная система. Просто лень такую портянку читать. Сделай тест попроще где ничего лишнего :)
---------- Post added at 01:25 ---------- Previous post was at 01:23 ----------
Хотя по выводу который ты нарисовал 1:1 результат моих тестов - то есть T-бит синхронен и ни о каком другом прерывании перед ним речи не идет, а если до WAIT дело дошло - он блокирует T-бит.
Не, не стану смотреть - там целая операционная система. Просто лень такую портянку читать. Сделай тест попроще где ничего лишнего :)Читать и понимать - не обязательно.
Нужно запустить и доложить результаты.
С этим проблемы есть ?
:)
Читать и понимать - не обязательно.
Нужно запустить и доложить результаты.
С этим проблемы есть ?
:)
Могу и запустить, только я как бы уже показал свой тест, а из результатов твоего видно 1:1 то же самое :)
Patron, результаты работы Вашего теста в эмуляторе UKNCBTL полностью совпадают с тем, что Вы привели (ну это Вы можете и сами попробовать). Но я писал выше, что приоритет T-разряда выше, чем приоритет VIRQ, так что может что-то в тесте не так.
Да, тест сложно написан, надо вникнуть, что бы разобраться, как он работает.
.RU PDPT1
PDP-11 Interrupts Test #1
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Interrupt <<< 100
>>> Interrupt <<< 060
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
Program completed.
.
Patron, результаты работы Вашего теста в эмуляторе UKNCBTL полностью совпадают с тем, что Вы привели (ну это Вы можете и сами попробовать). Но я писал выше, что приоритет T-разряда выше, чем приоритет VIRQ, так что может что-то в тесте не так.
Да, тест сложно написан, надо вникнуть, что бы разобраться, как он работает.На самом деле там всё просто - чуть позже подробно объясню что там к чему.
Гдавный же вопрос в другом - как могут обработчики прерываний один за другим запускаться перед Т-трапом, если установлен бит Т ( а с момента выполнения команды WAIT прошло уже несколько десятков команд предыдущих обработчиков прерываний ) если приоритет обслуживаемых прерываний ниже приоритета Т-трапа..
---------- Post added at 21:38 ---------- Previous post was at 21:34 ----------
[CODE]А вот в этом случае - похоже, что RTT действительно "даёт прерываниям шанс". Причём, если перед Т-Трапом "успело пролезть" хотя бы одно прерывание - они Т-трап уже вперёд не пропускают ( похоже что как раз по причине своего более высокого приоритета ).
Причём, если перед Т-Трапом "успело пролезть" хотя бы одно прерывание - они Т-трап уже вперёд не пропускают ( похоже что как раз по причине своего более высокого приоритета ).
Оно не может успеть или не успеть. Оно или есть в очереди и тогда возникнет или его нет в очереди и тогда не возникнет :)
Оно не может успеть или не успеть. Оно или есть в очереди и тогда возникнет или его нет в очереди и тогда не возникнетА вот и нет..
Во всех трёх "заходах" тест начинается с того, что выполняет
MTPS #340
BiS #100, @#TTPS
И требует нажать клавишу (что одновременно гарантирует "накопление" запроса IRQ от таймера).
Таким образом, после выдачи команды RTI/RTT ( очищающей запрет прерываний в PSW ) - у нас каждый раз на шине сидят три запроса IRQ одновременно.
Но в первом случае, когда запрет прерываний в PSW очищается командой RTI - первым происходит Т-трап, а не какое-нибудь из внешних прерываний.
А уже обработчик Т-трапа завершается во всех трёх случаях командой RTT.
Да, тест немного кривой. А кривизна его в том, что при прерывании по вектору 100 (таймер), после обработки в программе не осуществляется выход по RTI, а передается управление операционной системе командой JMP @V100. Если уж ОС разрешит прерывания, то там и 60 и 64 вектора проскочат. У меня RT-11 с поддержкой таймера, т.е. поддержка запросов .CMKT и .MRKT. А вот если тест запустить в системе без поддержки (где две команды ADC на обработке прерывания таймера), то и результат может быть другой.
Но в первом случае, когда запрет прерываний в PSW очищается командой RTI - первым происходит Т-трап, а не какое-нибудь из внешних прерываний.
Что полностью подтверждает сказанное мной: T-бит - синхронное прерывание и воткнуться перед ним не получится. Причем команда WAIT еще не достигнута.
А уже обработчик Т-трапа завершается во всех трёх случаях командой RTT.
И соответственно дает шанс другим прерываниям. Из которых два сидят в очереди и возникают (по прежнему до WAIT), а третье попадает уже на WAIT, после чего у тебя есть NOPы которые честно т-битятся.
То есть видим 1:1 сказанное мной.
---------- Post added at 01:53 ---------- Previous post was at 01:50 ----------
Кстати тест не чистый - у тебя прерываний по 100 отдаются на оригинальный хандлер.
Да, тест немного кривой. А кривизна его в том, что при прерывании по вектору 100 (таймер), после обработки в программе не осуществляется выход по RTI, а передается управление операционной системе командой JMP @V100. Если уж ОС разрешит прерывания, то там и 60 и 64 вектора проскочат. У меня RT-11 с поддержкой таймера, т.е. поддержка запросов .CMKT и .MRKT. А вот если тест запустить в системе без поддержки (где две команды ADC на обработке прерывания таймера), то и результат может быть другой.Дык вставить там RTI и снова запустить тест - дело недолгое. Тут моя помощь вряд ли нужна :)
Что полностью подтверждает сказанное мной: T-бит - синхронное прерывание и воткнуться перед ним не получится.Но тогда при установке бита T командой RTI в любом из обработчиков - должен сразу произойти Т-трап, а он зачем-то и чего-то ждёт, пропуская вперёд обработчики всех внешних прерываний :)
---------- Post added at 21:57 ---------- Previous post was at 21:54 ----------
Кстати тест не чистый - у тебя прерываний по 100 отдаются на оригинальный хандлер.Посыпаю голову пеплом - там надо написать RTI и снова запустить тест.
Но тогда при установке бита T командой RTI в любом из обработчиков - должен сразу произойти Т-трап, а он зачем-то и чего-то ждёт, пропуская вперёд обработчики всех внешних прерываний :)
Предлагаю все-таки сначала написать правильный тест без неизвестных.
У тебя и код тяжелый плохочитаемый да еще и выполняет левый код :)
Предлагаю все-таки сначала написать правильный тест без неизвестных.
У тебя и код тяжелый плохочитаемый да еще и выполняет левый код :)Предлагаю сначала написать "где надо" RTI и снова запустить тест.
Предлагаю сначала написать "где надо" RTI и снова запустить тест.
А может все-таки сначала упростить тест? :)
А может все-таки сначала упростить тест? :)Он и так проще некуда - всего несколько строк.
Вот тест в системе без поддержки запросов к таймеру. Правда не на реальной машине, а в эмуляторе, но разница налицо.
Без таймера.
Первый тест просто навечно застрял пока не спнул его клавиатурой :)
.E 40
001000
.D 20000=5037,177546,137,1000
.ST 20000
PDP-11 Interrupts Test #1
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Trap to 014 <<<
>>> Interrupt <<< 064
>>> Trap to 014 <<<
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 060
>>> Trap to 014 <<<
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Interrupt <<< 060
>>> Trap to 014 <<<
>>> Interrupt <<< 064
>>> Trap to 014 <<<
>>> Trap to 014 <<<
Program completed.
.
---------- Post added at 02:07 ---------- Previous post was at 02:03 ----------
Итого - получили логичный результат. В соответствии с ранее сказанным :)
Вот тест в системе без поддержки запросов к таймеру. Правда не на реальной машине, а в эмуляторе, но разница налицо.Если отсутствие RTI в обработчике V100 могло исказить результаты - это печально.
В приложении - вариант теста с RTI в обработчике V100 (http://zx.pk.ru/attachment.php?attachmentid=33121).
Интересно, какие результаты он показывает..
Тест 1: RTI -> возникает 14, из него RTT - возникает 60, после возникает 14, из него RTT -> позникает 64, после 14, WAIT, висим
Тест 2: RTT -> возникает 60, возникает 14, RTT, WAIT, возникает 64, 14, 14
Тест 3: RTT -> возникает 60, возникает 14, RTT, WAIT, 64, 14, 14
Ничего необычного.
---------- Post added at 02:15 ---------- Previous post was at 02:12 ----------
Новый тест:
.RU PDPT1A
PDP-11 Interrupts Test #1a
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTI | WAIT
>>> Trap to 014 <<<
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064
MTPS #340
...Press Key...
BIS #100,@#TTPS
Set T x3
RTT
WAIT
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064
Program completed.
.
Ничего необычного.
Сказал капитан, когда все пришельцы превратились в зелёные лужицы )))
Ну вот и тесты на реальной машине. Сперва в системе без поддержки запросов к таймеру, и с включенным таймером.
А теперь тесты с выключенным таймером.
У нас уже есть вариант теста с RTI в обработчике V100 (http://zx.pk.ru/attachment.php?attachmentid=33121).
У нас уже есть вариант теста с RTI в обработчике V100 (http://zx.pk.ru/attachment.php?attachmentid=33121).
В системе без обработки запросов к таймеру подпрограмма обработки прерывания состоит из двух команд ADC и одной RTI. Так что я думаю результат не изменится, но ладно, попробую.
У нас уже есть вариант теста с RTI в обработчике V100 (http://zx.pk.ru/attachment.php?attachmentid=33121).
Ну вобщем он показывает то, о чем и говорили - если возврат по RTI - T-BIT однозначно. Если по RTT - прерывание из очереди, а так как из него выход по RTI - следом T-BIT и пока не кончится или не попадет в очередь что-нибудь. До WAIT дело просто не доходит пока T-BITы не кончатся.
---------- Post added at 02:58 ---------- Previous post was at 02:54 ----------
Попутно две идеи для теста:
- сделать тест гарантированно на уровне кернела, чтобы я не перегружался каждый раз
- печатать рядом с месагами 2(SP)
:)
А теперь тесты с выключенным таймером.Выглядит вполне логично.
Пока установлен бит Т - каждая команда WAIT "пропускает" по одному внешнему прерыванию.
Странно, что у formа (в последней "трети" теста) как-то пролезло одно внешнее прерывание:
MTPS #340
BIS #100,@#TTPS
...Press Key...
Set T x3
RTT
>>> Interrupt <<< 100
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Trap to 014 <<<
>>> Interrupt <<< 060
>>> Interrupt <<< 064
Ведь обработчики Т-трапа завершаются точно такими же RTT, как и тот, после которого там произошёл
[ >>> Interrupt <<< 100 ].
Добавь таки два последних пункта для удобства теста.
Ух.
Что-то где-то не то съелось и форум перекосило :)
Испытал новую версию программы. Скриншоты не выкладываю, т.к. результат работы аналогичен ранее выложенным скриншотам. Третий тест показывает, что по RTT запрещаются все прерывания на один шаг, безусловно выполняется команда нового процесса. Но это в 1801ВМ2.
---------- Post added at 00:15 ---------- Previous post was at 00:08 ----------
- печатать рядом с месагами 2(SP)
Абсолютно верная мысль. Можно заодно и проверить возврат по RTT с установленным и сброшенным T. А при выкладывании программы, также выложить и листинг трансляции MACRO, будет видно где прерывалось.
Кстати я @SP имел в виду :)
Но и 2(SP) можно на всякий случай :)
Кстати я @SP имел в виду :)
Но и 2(SP) можно на всякий случай :)
Да, точно. В 2(SP) PSW прерванного процесса.
две идеи для теста:
- сделать тест гарантированно на уровне кернела, чтобы я не перегружался каждый разНа уровне кернела - это как? Надо какой-то бит где-то установить?
проверить возврат по RTT с установленным и сброшенным T. А при выкладывании программы, также выложить и листинг трансляции MACRO, будет видно где прерывалось.Здравые мысли.
Подумав над результататми теста у formа, я склоняюсь к мысли, что на его процессоре Т-трап имеет больший приоритет, чем IRQ (как и у ВМ2), а установка бита Т блокирует младшие линии BR (типа, как команда вроде MTPS #200), поэтому прерывание таймера не блокируется, а команда WAIT не пропускает ни одного прерывания.
Для того, чтобы точно в этом убедиться, я хотел сделать так, чтобы при выполнении команд NOP - их мнемоника выводилась на экран. Поэтому если использовать последовательность команд типа NOP | WAIT | NOP | WAIT | NOP | NOP - то всегда будет примерно ясно, "где мы находимся".
Кстати я @SP имел в видуДа - это гениально, как всё простое. Чем мудрстововать, подсчитывая на экране NOPы - гораздо проще сравнить адрес в стеке с листингом трансляции.
На уровне кернела - это как? Надо какой-то бит где-то установить?
MOV #340,@#16
MOV #10$,@#14
BPT
10$: ;;;KERNEL
[/QUOTE]
MOV #340,@#16
MOV #10$,@#14
BPT
10$: ;;;KERNEL
А устанавливая бит Т командами RTI/RTT мы из KERNEL-моды не вывалимся?
А устанавливая бит Т командами RTI/RTT мы из KERNEL-моды не вывалимся?
Нет. Если бы было возможно уйти с user mode через RTI/RTT в защите бы не было смысла :)
Т.е. вот такая вставка в начале программы переключит нас в KERNEL-моду:
MOV #340, @#16
MOV #10$, @#14
BPT
10$:
MTPS #0
Cmp (SP)+,(SP)+
Так?
Т.е. вот такая вставка в начале программы переключит нас в KERNEL-моду:
MOV #340, @#16
MOV #10$, @#14
BPT
10$:
MTPS #0
Cmp (SP)+,(SP)+
Так?
SP на усмотрение - два слова не особо мешают. Или можно записать #340 в 2(SP) и потом по RTI/RTT вернуться после BPT (два старших бита PSW очищены - kernel mode, поскольку RTI из кернела делается - получится). MTPS лучше не использовать вообще по возможности - команда не портабельная (хотя у меня и есть). Ну и в любом случае если в этом именно мест есть потребности в приоритете 0, то можно сразу было 0 в 16 записать :)
Т.е. в подпрограмме сохранения векторов пишем
MOV #0, @#16
MOV #10$, @#14
BPT
10$:
Cmp (SP)+,(SP)+
Return
И никакие последующие команды RTI/RTT нас уже из KERNEL-моды не выбъют..
Т.е. в подпрограмме сохранения векторов пишем
MOV #0, @#16
MOV #10$, @#14
BPT
10$:
Cmp (SP)+,(SP)+
Return
И никакие последующие команды RTI/RTT нас уже из KERNEL-моды не выбъют..
Тогда уж MOV (SP)+,@SP, а не CMP (SP)+,(SP)+ ;)
Думаю, что модератор последние несколько страничек вполне мог бы перенести в тему 'ДВК и все, что с ними связано')
Думаю, что модератор последние несколько страничек вполне мог бы перенести в тему 'ДВК и все, что с ними связано')
Да наверное надо просто тему про тестирование открыть - так правильнее будет :)
Если "спецтестом" будем тестировать 11/83 - по "спецтесту" продолжить можно там.
А в какой теме выкладывать тесты для УКНЦ и её эмуляторов ?
Думаю, что модератор последние несколько страничек вполне мог бы перенести в тему 'ДВК и все, что с ними связано')
В принципе и да, и нет. Для написания эмулятора весьма полезная информация. Тем более у Вас еще T-разряд не реализован.
Кстати, а как борьба с каналами 0, 1, 2?
Если "спецтестом" будем тестировать 11/83 - по "спецтесту" продолжить можно там.
А в какой теме выкладывать тесты для УКНЦ и её эмуляторов ?
Я не говорил ничего специфичного для 11/83, я наоборот всегда говорю то, что универсально :)
Думаю надо просто открыть тему "Диагностика, тесты, особенности систем" или что-нибудь в этом роде и туда все перекинуть.
---------- Post added at 16:39 ---------- Previous post was at 16:35 ----------
Для написания эмулятора весьма полезная информация.
Ну так и пусть тема будет посвящена в том числе особенностям, а с эмуляции туда можно ссылку делать. Кстати в этом форуме шипки бывают?
ОК. Могу создать тему "Тесты процессоров и устройств архитектуры PDP-11"
ОК. Могу создать тему "Тесты процессоров и устройств архитектуры PDP-11"
Добавь слова про особенности :)
Кстати, а как борьба с каналами 0, 1, 2?
Развертываю западный фронт)
Тема по тестированию УКНЦ, её эмуляторов (и всего остального) создана (http://zx.pk.ru/showthread.php?t=18184).
Тема по тестированию УКНЦ, её эмуляторов (и всего остального) создана (http://zx.pk.ru/showthread.php?t=18184).
Что-то как-то название у темы другое) Да тесты PDP-11 имеют к архитектуре УКНЦ вцелом очень боковое отношение)
Что-то как-то название у темы другое) Да тесты PDP-11 имеют к архитектуре УКНЦ вцелом очень боковое отношение)
Боковое отношение имеет ламотство советское когда что-то пишется исходя из недокументированных особенностей. Правильный тест для PDP-11 будет работать везде :)
Что-то как-то название у темы другое) Да тесты PDP-11 имеют к архитектуре УКНЦ вцелом очень боковое отношение)
А чем магистраль центрального процессора не соответствует архитектуре PDP-11? Вроде все нормально, да и RT-11 SJ/SB/FB грузятся без всяких патчей.
А чем магистраль центрального процессора не соответствует архитектуре PDP-11? Вроде все нормально, да и RT-11 SJ/SB/FB грузятся без всяких патчей.
УКНЦ - нормальный 11/03 если не лезть в особенности ПП. Отличий каких-либо наверное просто нет (с точки зрения софта).
Ну если не считать режимы USER/HALT которые впрочем требуют особого подхода все-равно чтобы как-то проявились :)
УКНЦ - нормальный 11/03 если не лезть в особенности ПП. Отличий каких-либо наверное просто нет (с точки зрения софта).
Ну если не считать режимы USER/HALT которые впрочем требуют особого подхода все-равно чтобы как-то проявились :)
УКНЦ - нормальный 11/03 если не лезть в особенности ПП. - вот это абсолютно точно !!!
УКНЦ - нормальный 11/03 если не лезть в особенности ПП. - вот это абсолютно точно !!!
Ну с учетом того, что на 11/03 (да и вообще в таком виде нигде) никакого ПП нет и никто не пробует, нормальные системы разницы не заметят :)
---------- Post added at 17:19 ---------- Previous post was at 17:18 ----------
Есть правда вариант PDP-11 с ПП на интеле, но про него тоже никто не знает - он сам себе ПП :)
УКНЦ - нормальный 11/03 если не лезть в особенности ПП. Отличий каких-либо наверное просто нет (с точки зрения софта).
Ну если не считать режимы USER/HALT которые впрочем требуют особого подхода все-равно чтобы как-то проявились :)
Люди тоже многие похожи, если смотреть на них со спины)
Но стоит развернуть - сразу видны отличия)
Люди тоже многие похожи, если смотреть на них со спины)
Но стоит развернуть - сразу видны отличия)
В данном случае важно, что на УКНЦ работает тот же софт что и на 11/03 без всякой переделки.
В отличие к примеру от *****го PRO/Э85 :)
В данном случае важно, что на УКНЦ работает тот же софт что и на 11/03 без всякой переделки.
В отличие к примеру от *****го PRO/Э85 :)
Но софт предназначенный для УКНЦ нигде больше не работает, и тесты УКНЦ - это именно тесты УКНЦ.
Но софт предназначенный для УКНЦ нигде больше не работает, и тесты УКНЦ - это именно тесты УКНЦ.
Смотря какой софт.
В любом случае это не больше чем софт, заточенный под конкретное устройство, а даже не под конкретно УКНЦ и то, что кроме УКНЦ таких не делали этого факта не меняет. Доказательство как я понял твой же эмулятор который не эмулит полностью все, а меж тем дает что-то запустить :)
Смотря какой софт.
В любом случае это не больше чем софт, заточенный под конкретное устройство, а даже не под конкретно УКНЦ и то, что кроме УКНЦ таких не делали этого факта не меняет. Доказательство как я понял твой же эмулятор который не эмулит полностью все, а меж тем дает что-то запустить :)
Что он не эмулирует полностью все? Только регистр-ловушку, котрая используется считай в одной программе, да T-прерывания, которые нужны для отладчика. А в остальном всю архитектуру эмулирует, иначе бы не работала бы половина программ.
Что он не эмулирует полностью все? Только регистр-ловушку, котрая используется считай в одной программе, да T-прерывания, которые нужны для отладчика. А в остальном всю архитектуру эмулирует, иначе бы не работала бы половина программ.
Этого я не знаю - я мельком твои объяснения посмотрел в начале темы и могу ошибаться. Сам эмулятор я даже не запускал :)
Этого я не знаю - я мельком твои объяснения посмотрел в начале темы и могу ошибаться. Сам эмулятор я даже не запускал :)
А мог бы и запустить)
Между прочим, там КЦГД есть от ваших любимых ДВК, а в нем терминал VT-100 или как его там.
А мог бы и запустить)
Между прочим, там КЦГД есть от ваших любимых ДВК)
Чьих наших? ;)
Я ДВК видел в советское время только издалека ибо когда они появились - это был каменный век для нас как с точки зрения PC так и с точки зрения PDP-11 :)
Чьих наших? ;)
Я ДВК видел в советское время только издалека ибо когда они появились - это был каменный век для нас как с точки зрения PC так и с точки зрения PDP-11 :)
Ну хорошо, там есть терминал VT-100 от ваших любимых PDP-11)
Ну хорошо, там есть терминал VT-100 от ваших любимых PDP-11)
Это плюс! :)
Запущу еще поди - как буду страничку с эмуляторами переделывать, каждый позапускаю и проверю где что и как :)
Поразбирался на реале с каналами. Пока что только с каналами ПП.
Исправил приемники ПП, и сразу заработал JEK. Причем, судя по картинке Vamos'а, рисует правильно. UKNCBTL застревает после двух заливок. Не знаю почему.
http://img707.imageshack_.us/img707/4945/01jek.png
Картинка с реала от Vamos'а:
http://zx.pk.ru/attachment.php?attachmentid=30143&d=1319057207
Пока обновлений не выкладываю, т.к. другие каналы надо еще поправить.
---------- Post added at 05:38 ---------- Previous post was at 05:31 ----------
Наверное они у меня есть. Это уже где-то обсуждалось, игрушки писались под КЦГД, как и редактор JEK, а потом под УКНЦ.
Жаль что нет эмулятора ДВК-3(4) с КЦГД и КГД, очень много софта на эти машины.
Titus, А на чем их смотреть(проверить)? может они не под КЦГД?
Вот будет эмулятор ДВК с КЦГД и КГД+КСМ тогда и выкладывать можно.
Кто это обещал выложить? Эмулятор есть)
Цитата:
Сообщение от Vamos Посмотреть сообщение
Наверное они у меня есть. Это уже где-то обсуждалось, игрушки писались под КЦГД, как и редактор JEK, а потом под УКНЦ.
Жаль что нет эмулятора ДВК-3(4) с КЦГД и КГД, очень много софта на эти машины.
Цитата:
Сообщение от Vamos Посмотреть сообщение
Titus, А на чем их смотреть(проверить)? может они не под КЦГД?
Вот будет эмулятор ДВК с КЦГД и КГД+КСМ тогда и выкладывать можно.
Кто это обещал выложить? Эмулятор есть)
Хорошо бы и Alex_K свой немного другой JEK выложил бы
для архива и истории в целом ))) Может у него образ нормальный получится
дискеты от тов.Vamos на мой взгляд спорные (((
---------- Post added at 06:20 ---------- Previous post was at 06:19 ----------
Пока обновлений не выкладываю, т.к. другие каналы надо еще поправить.
ждём )))
Хорошо бы и Alex_K свой немного другой JEK выложил бы
для архива и истории в целом ))) Может у него образ нормальный получится
дискеты от тов.Vamos на мой взгляд спорные (((
Тов. Vamos знал (а может и сейчас знает) разработчиков пакета KUARKO. А тов. Alex_K немного другой JEK уже передавал (а может и выкладывал) - это диски U1.DSK и U2.DSK. Там же на дисках есть и документация на JEK.
---------- Post added at 10:42 ---------- Previous post was at 10:38 ----------
Поразбирался на реале с каналами. Пока что только с каналами ПП.
Исправил приемники ПП, и сразу заработал JEK. Причем, судя по картинке Vamos'а, рисует правильно. UKNCBTL застревает после двух заливок. Не знаю почему.
ОТЛИЧНО !!! А тест каналов будет выложен, еще интересно, какие различия Вы нашли, интересно сравнить со своими данными.
А UKNCBTL застревает, т.к. сбрасывается готовность контроллера дисковода, если дискету передернуть, то заливается и третий план, далее стартует JEK.
Небольшие обновления:
1. Исправил приемники ПП. Теперь работает JEK.
2. Добавил полуторный режим УКНЦ, масштабирующий экран в ширину в 1.5 раза с сохранением сканлайнов. Полуторный, чтобы по максимуму сохранить четкость изображения, из-за хорошей кратности 2->3 пикселя. Причем, без использования возможностей видеокарты, чтобы избежать ее самодеятельных эффектов. Переключается по 'NumLock'. Режим удобен для 'узких' игр типа Land, в основном портированных с ДВК. Или просто для того, чтобы изображение было покрупнее. В реальности масштаб изображения на УКНЦ, как я думаю, средний между 1 и 1.5. Может быть 1.2 - 1.3.
3. Добавил автоустановку размеров окошка при запуске эмулятора, т.к. рамки окошек могут отличаться от стандартных, и края изображения будут не видны.
Пример стартового меню в разрешении 1.5 x 1
http://s59.radikal.ru/i166/1202/f9/09410cf3f761.png
Пример экрана из игры LAND в разрешениях 1.5 и 1.0:
http://s017.radikal.ru/i401/1202/9c/1866f7b7e05c.png
http://s018.radikal.ru/i504/1202/86/39e4ca90b3c8.png
1. Исправил приемники ПП. Теперь работает JEK.
Все каналы? А где программа для тестирования?
2. Добавил полуторный режим УКНЦ, масштабирующий экран в ширину в 1.5 раза с сохранением сканлайнов.
Вот это большой плюс. Смотрится в самом деле шикарно.
В реальности масштаб изображения на УКНЦ, как я думаю, средний между 1 и 1.5. Может быть 1.2 - 1.3.
Соотношение сторон 4 к 3. Поэтому при квадратной точке должно быть разрешение 640х480. Реально 640х288 - соотношение 1:1.67. Если брать 576 линий, то 1:0.83 или 1.2:1.
3. Добавил автоустановку размеров окошка при запуске эмулятора, т.к. рамки окошек могут отличаться от стандартных, и края изображения будут не видны.
Вот не видна нижняя служебная строка. Запустил JEK, и пришлось растянуть изображение.
---------- Post added at 23:39 ---------- Previous post was at 23:05 ----------
Положу еще ложку дегтя - не работает программа эмуляции терминала VT200. hobot выкладывал образ диска в этом топике (http://zx.pk.ru/showpost.php?p=447211&postcount=201).
Ну и еще одно изменение.
Думал-думал, и решил попробовать, а что, если попробовать сделать масштаб не 2->3 точки, а 3->4, т.е. 1.333, а не 1.5. Тут вычисления для скоростной реализации на чистом Си значительно посложнее будут, кроме того появляется неприятный эффект при несбалансированной гамме, но об этом чуть ниже.
Итак, поэкспериментировал, и результаты меня вполне порадовали. Теперь добавил новый режим 1.333 в ширину. Очень похоже стало на оригинал, немнооожечко шире.
http://s017.radikal.ru/i430/1202/d9/f6accbb24ade.png
Теперь о гамме. Из-за того, что теперь вторая точка из каждой тройки распадается на две, очень важно, чтобы гамма вашего монитора/видеокарточки была строго линейная. Этот эффект очень мало заметен при масштабировании 1.5, т.к. каждая точка распадается на полторы, и нет муара, есть только уменьшение ширины вертикальных однопиксельных полос, при неправильной гамме. А вот при масштабировании 1.333 муар будет заметен.
Вот примеры:
Это изображение должно выглядеть корректно, если у Вас на мониторе линейная гамма:
http://s017.radikal.ru/i420/1202/cb/ccacb4c53f88.png
Так будет выглядеть, если гамма < 1.0. Как видно, светлые вертикальные полоски на темном фоне теряют яркость в зависимости от позиции.
http://s017.radikal.ru/i414/1202/23/936cda65b600.png
А вот так будет выглядеть, если гамма > 1.0. В данном случае все наоборот - темные полоски на светлом фоне засвечиваются в цвет фона.
http://s017.radikal.ru/i441/1202/db/fb79826c0de5.png
Следует заметить, что такой эффект будет виден только в разрешении 640x288. В более низких разрешениях он проявляться не будет.
Вот не видна нижняя служебная строка. Запустил JEK, и пришлось растянуть изображение
Эта строка у меня не входит в поле оконного режима, т.к. в большинстве случаев там ничего нет, и только портит антураж. Используется она в эмуляторе БК, в редакторе JEK, игре Land (желтый с оверсканом). Так что ради таких случаев можно и растянуть.
---------- Post added at 00:06 ---------- Previous post was at 00:05 ----------
Все каналы? А где программа для тестирования?
Программа еще не дописана, пока лениво. И другие каналы, соответственно тоже пока как прежде)
---------- Post added at 00:07 ---------- Previous post was at 00:06 ----------
Положу еще ложку дегтя - не работает программа эмуляции терминала VT200. hobot выкладывал образ диска в этом топике (http://zx.pk.ru/showpost.php?p=447211&postcount=201).
А фиг знает, чего он не работает. Может каналы другие надо исправить. Может требует ловушку (что скорее всего).
Эта строка у меня не входит в поле оконного режима, т.к. в большинстве случаев там ничего нет, и только портит антураж. Используется она в эмуляторе БК, в редакторе JEK, игре Land (желтый с оверсканом). Так что ради таких случаев можно и растянуть.
Вот антураж весьма портится при растягивании, вверху больно много свободного места появляется. Применяется она и драйвере, который показывает текущее время в RT-11.
Вот антураж весьма портится при растягивании, вверху больно много свободного места появляется. Применяется она и драйвере, который показывает текущее время в RT-11.
Тут уж дело вкуса. Меня раздражает именно ненужная пустая черная строка внизу.
Программа еще не дописана, пока лениво. И другие каналы, соответственно тоже пока как прежде)
Хотелось бы узнать результаты запуска в UKNCBTL.
Со стороны ПП все каналы работают одинаково. Так же работают и каналы 1 и 2 со стороны ЦП. Как уже писали особняком стоит канал 0 со стороны ЦП, но он то как раз правильно и работает.
Хотелось бы узнать результаты запуска в UKNCBTL.
Со стороны ПП все каналы работают одинаково. Так же работают и каналы 1 и 2 со стороны ЦП. Как уже писали особняком стоит канал 0 со стороны ЦП, но он то как раз правильно и работает.
На UKNCBTL каналы ПП туда-сюда, и ЦП приемники работают правильно. А источники ЦП не проверял. К слову сказать, из проверенного отличается в своей работе только приемник-0 ЦП. Все остальные каналы работают одинаково.
На UKNCBTL каналы ПП туда-сюда, и ЦП приемники работают правильно. А источники ЦП не проверял. К слову сказать, из проверенного отличается в своей работе только приемник-0 ЦП. Все остальные каналы работают одинаково.
Т.е. на UKNCBTL пока все совпадает с реалом?
Т.е. на UKNCBTL пока все совпадает с реалом?
Нет, не все) Но каналы совпадают пока)
Не совпадает прерывание от таймера (как и у меня), и, возможно, прерывания от сетевого таймера не совсем такие, как на реале, т.к. на реале они частенько НЕ запрещались как положено, а в эмуле все четко.
Нет, не все) Но каналы совпадают пока)
Не совпадает прерывание от таймера (как и у меня), и, возможно, прерывания от сетевого таймера не совсем такие, как на реале, т.к. на реале они частенько НЕ запрещались как положено, а в эмуле все четко.
Т.е. с каналами пока все в порядке.
А программируемый таймер в UKNCBTL неправильно работает, это я знаю.
А как это сетевой таймер на реале не запрещался, как положено? Интересно.
Т.е. с каналами пока все в порядке.
А программируемый таймер в UKNCBTL неправильно работает, это я знаю.
А как это сетевой таймер на реале не запрещался, как положено? Интересно.
Пока не знаю. Так, предположения.
Запрещаю прерывания, потом запрещаю прерывания от сетевого таймера, потом разрешаю прерывания, а он возьми да, и дай прерывание) Это на реале) Значит, похоже, что снятие разрешения прерывания от таймера прерывание не отменяют, если запрос уже был установлен.
Кстати по поводу VT200.SAV. Программка это с довольно крутой защитой, такие методы адресации применяет, что сходу и не поймешь как это работает.
Советую посмотреть в отладчике UKNCBTL. Вызвать отладочную консоль. Как загрузится RT-11, в консоли переключиться на ЦП командой "p". Потом дать команду "g1070", и запустить в RT-11 VT200. В отладчике остановится по адресу 1070, далее по F8 можно пройти по шагам.
Может найдете ошибку у себя в процессоре.
---------- Post added at 00:41 ---------- Previous post was at 00:38 ----------
Пока не знаю. Так, предположения.
Запрещаю прерывания, потом запрещаю прерывания от сетевого таймера, потом разрешаю прерывания, а он возьми да, и дай прерывание) Это на реале) Значит, похоже, что снятие разрешения прерывания от таймера прерывание не отменяют, если запрос уже был установлен.
По сигналу EVNT в процессоре устанавливается триггер. Если между запретом прерываний по MTPS и запретом через регистр 177054 прошла смена фронта сигнала, то он будет зафиксирован в процессоре. При разрешении прерываний по MTPS естественно проскочит и прерывание по таймеру, хотя по 177054 оно будет запрещено.
По сигналу EVNT в процессоре устанавливается триггер. Если между запретом прерываний по MTPS и запретом через регистр 177054 прошла смена фронта сигнала, то он будет зафиксирован в процессоре. При разрешении прерываний по MTPS естественно проскочит и прерывание по таймеру, хотя по 177054 оно будет запрещено.
Ой, вообще-то у меня сделано так же. Но на эмулях это прерывание в тесте не проскакивает, а на реале иногда да. Может связано с разной скоростью.
Хотя, знаешь, как я делал, разрешал прерывания, чтобы проскочило взведенное от сетевого таймера, а потом делал свои дела. И все равно оно проскакивало в момент измерений иногда.
---------- Post added at 00:47 ---------- Previous post was at 00:45 ----------
Кстати по поводу VT200.SAV. Программка это с довольно крутой защитой, такие методы адресации применяет, что сходу и не поймешь как это работает.
Советую посмотреть в отладчике UKNCBTL. Вызвать отладочную консоль. Как загрузится RT-11, в консоли переключиться на ЦП командой "p". Потом дать команду "g1070", и запустить в RT-11 VT200. В отладчике остановится по адресу 1070, далее по F8 можно пройти по шагам.
Может найдете ошибку у себя в процессоре.
Ошибок вроде не должно быть. Но есть недописанные команды защищенного режима. А так же RTT отрабатывается, как RTI. Бита T тоже нет.
---------- Post added at 00:48 ---------- Previous post was at 00:47 ----------
Ты не прозевал версию 0.5c? Ее никто пока не скачал.
Ошибок вроде не должно быть. Но есть недописанные команды защищенного режима. А так же RTT отрабатывается, как RTI. Бита T тоже нет.
Не употребляется там ни RTT, ни бит T, а есть методы адресации через счетчик команд, используются нечетные адреса, ну всякое другое.
Так что советую глянуть, весьма полезно и поучительно.
есть методы адресации через счетчик команд, используются нечетные адреса, ну всякое другое.
Так что советую глянуть, весьма полезно и поучительно.
У меня должны работать.
А нечетные адреса у меня преобразуются в четные.
А нечетные адреса у меня преобразуются в четные.
Х-м-м-м!? А на каком этапе?
Х-м-м-м!? А на каком этапе?
На этапе доступа к шине. Младший бит при словном доступе отбрасывается.
Вот любопытный тест влияния нечётного PC на результаты выполнения команд:
LSI-11 Traps Tests #3 (http://zx.pk.ru/attachment.php?attachmentid=24808)
На ДВК-1 тест даёт такой результат:
LSI-11 Traps Tests #3
Test 1
------
CALL ADDR+1
ADDR:
PC/001127
Test 2
------
MOVB #1,WORD
MOVB #2,WORD+1
MOVB WORD,R1
R1/000001
INC PC
MOVB WORD,R1
R1/000002
Program completed.
На этапе доступа к шине. Младший бит при словном доступе отбрасывается.
На самом деле 1801ВМ2 выставляет адрес на шину таким каким он есть, а уже конкретное устройство при чтении просто этот бит не учитывает.
Есть в УКНЦ параллельный порт на магистралии ПП, к которому надо обращаться при чтении в том числе и по нечетным адресам.
Но советую посмотреть программу в отладчике UKNCBTL, можно в качестве останова использовать не 1070, а 1000.
Вот любопытный тест влияния нечётного PC на результаты выполнения команд
У меня такой, на UKNCBTL такой:
http://s018.radikal.ru/i502/1202/11/d96fe8dc4ef4.png http://s017.radikal.ru/i442/1202/87/505bd71302a7.png
---------- Post added at 01:17 ---------- Previous post was at 01:12 ----------
Блин, точно. Доступ к данным по нечетным адресам ОЗУ сделал правильно, а про выборку команды забыл)
У меня такой, на UKNCBTL такой:
Ну вот и ошибка в процессоре. Откуда идут прерывания? При словном доступе по нечетному адресу прерывания по 4-му вектору есть у 1801ВМ3, но не у 1801ВМ1 и 1801ВМ2.
---------- Post added at 01:19 ---------- Previous post was at 01:18 ----------
Блин, точно. Доступ к данным по нечетным адресам ОЗУ сделал правильно, а про выборку команды забыл)
А чем выборка команд отличается от чтения данных? Используется один и тот же цикл шины.
А чем выборка команд отличается от чтения данных?Тем, что эмулируется в другом месте программы эмулятора :)
Тем, что эмулируется в другом месте программы эмулятора :)
Это точно. А ведь достаточно всего-то подпрограмме ReadWord передать адрес, а она уже пусть по адресу решает - резать младший бит, читать из ОЗУ, ПЗУ или с внешнего устройства.
А чем выборка команд отличается от чтения данных? Используется один и тот же цикл шины.
Нет у меня используются разные обработчики)
---------- Post added at 01:27 ---------- Previous post was at 01:26 ----------
Это точно. А ведь достаточно всего-то подпрограмме ReadWord передать адрес, а она уже пусть по адресу решает - резать младший бит, читать из ОЗУ, ПЗУ или с внешнего устройства.
Еще бы) Но за универсальность обработчиков платить приходится скоростью эмулятора. Так что у меня разнесено по разным обработчикам для убыстрения.
Нет у меня используются разные обработчики)
Это плохо. Команды для чтения или записи поступают в операционный блок процессора, а он не различает, что это - команда или данные. Ему сказали - прочитать/записать, он и выполнил.
---------- Post added at 01:29 ---------- Previous post was at 01:28 ----------
Еще бы) Но за универсальность обработчиков платить приходится скоростью эмулятора. Так что у меня разнесено по разным обработчикам для убыстрения.
Какое падение скорости? Главное время занимает рендеринг экрана.
Кстати, где алгоритм рендеринга лучше - в UKNCBTL или в EmuStudio?
---------- Post added at 01:31 ---------- Previous post was at 01:29 ----------
И ГЛАВНОЕ!!! ЖДЕМ ВЕРСИЮ 0.05d!!!
Не знаю, как у вас, а у меня главное время занимает эмуляция трех процессоров) А экран рендерится не более 20% от их времени.
И что значит лучше? Быстре - скорее всего у меня, а правильный ли у вас - не знаю. У меня экран рендерится целиком каждый кадр, а должен в идеале в синхронно с работой всей системы, чтобы каждое изменение памяти в процессе хода луча отражалось на изображении.
VT200 вроде заработал, только зависает при входе в Калькулятор. Впрочем, он зависает и на UKNCBTL.
Не знаю, как у вас, а у меня главное время занимает эмуляция трех процессоров) А экран рендерится не более 20% от их времени.
И что значит лучше? Быстре - скорее всего у меня, а правильный ли у вас - не знаю. У меня экран рендерится целиком каждый кадр, а должен в идеале в синхронно с работой всей системы, чтобы каждое изменение памяти в процессе хода луча отражалось на изображении.
УРА !!! Заработало !!!
По процессорам счет 1:1. С вашей стороны счетчик сдвига в ASH/ASHC, с нашей - нечетный счетчик команд.
А по рендерингу хотелось бы сравнить алгоритмы. В UKNCBTL почти правильный, даже учитывает графический курсор, нет только учета интенсивности для одиночной видеостроки, которая устанавливается через регистр отображения (но это покоцали уже и в реальных УКНЦ поздних выпусков).
А синхронно с работой системы сложно - выборка данных происходит каждые 640 нс. Надо одновременно с эмуляцией строить и образ экрана. Быстродействия не хватит.
А по рендерингу хотелось бы сравнить алгоритмы. В UKNCBTL почти правильный, даже учитывает графический курсор, нет только учета интенсивности для одиночной видеостроки, которая устанавливается через регистр отображения (но это покоцали уже и в реальных УКНЦ поздних выпусков).
А синхронно с работой системы сложно - выборка данных происходит каждые 640 нс. Надо одновременно с эмуляцией строить и образ экрана. Быстродействия не хватит.
Что за графический курсор?
У меня тоже нет яркости для конкретной строки, т.к. я не знаю, как она делается.
Можно сделать, и скорости хватит, только много возни.
Кстати, с яркостью UKNCBTL тоже, похоже, не так себя ведет. Замечал на реальной УКНЦ, что при загрузке системы с диска, который я прикладывал к первой версии эмулятора, экран вспыхивал ярким цветом, а на UKNCBTL этого замечено не было.
VT200 вроде заработал, только зависает при входе в Калькулятор. Впрочем, он зависает и на UKNCBTL.
Нормально он работает и там, и там. Просто калькулятор строковой.
---------- Post added at 02:02 ---------- Previous post was at 01:57 ----------
Что за графический курсор?
У меня тоже нет яркости для конкретной строки, т.к. я не знаю, как она делается.
Делается через регистр отображения, в документации все есть.
Кстати, с яркостью UKNCBTL тоже, похоже, не так себя ведет. Замечал на реальной УКНЦ, что при загрузке системы с диска, который я прикладывал к первой версии эмулятора, экран вспыхивал ярким цветом, а на UKNCBTL этого замечено не было.
UKNCBTL выводит изображение 25 раз в секунду, а не 50, как надо. Поэтому может вспышка и не подпадает. А с яркость поддерживается как для основного изображения через регистр управления цветом, так и для курсора через регистр управления отображением.
Делается через регистр отображения, в документации все есть.
UKNCBTL выводит изображение 25 раз в секунду, а не 50, как надо. Поэтому может вспышка и не подпадает. А с яркость поддерживается как для основного изображения через регистр управления цветом, так и для курсора через регистр управления отображением.
А, ну, если в документации все есть, то и у меня должно быть так же.
Вспышка там на секунду, наверное, так что прозевать ее было бы сложно.
А как так получается, что на позндних УКНЦ якрость для конкретной строки не работает, а для всего экрана работает? Что там убрали?
А, ну, если в документации все есть, то и у меня должно быть так же.
Проверим попозже. Хотя графический курсор вроде нигде не употребляется.
Вспышка там на секунду, наверное, так что прозевать ее было бы сложно.
Хотелось бы увидеть.
А как так получается, что на позндних УКНЦ якрость для конкретной строки не работает, а для всего экрана работает? Что там убрали?
Яркость всего экрана управляется выводом Y видеоадаптера, а яркость одной строки через регистр управления отображением регулируется выводами P0, P1, P2. Все дело в том, что для отдельной видеостроки можно было регулировать яркость каждого канала (R, G, B), а с помощью Y - либо все каналы яркие, либо нормальной яркости. А так как регулировка яркости для отдельной видеостроки не применялась, то и ее убрали. В поздних модификациях выводы P0, P1, P2 просто висят в воздухе, а в "КВАНТ"-овской схемотехнике просто не запаивали одну микросхему и кучу резисторов (в качестве примера - второй УКНЦ у hobot-а.).
Проверим попозже. Хотя графический курсор вроде нигде не употребляется.
А что это вообще такое - графический курсор?
А что это вообще такое - графический курсор?
Для экрана пользователя меняется через ячейку 22746. Содержимое этой ячейки копируется младший байт первого слова регистра управления отображением. Т.е. значение этой ячейки можно поменять в пультовом отладчике ПП и выйти потом в экран пользователя. Там все увидите.
Можно проделать и на реальной машине и в UKNCBTL.
Соответственно в УКНЦ стандартно используются только три младших бита, отвечающие за цвет курсора, а остальные биты (тип курсора, адрес граф.курсора, интенсивность цвета) не используются - нулевые.
Соответственно в УКНЦ стандартно используются только три младших бита, отвечающие за цвет курсора, а остальные биты (тип курсора, адрес граф.курсора, интенсивность цвета) не используются - нулевые.
Бррр! Запутался. В общем, проверите в моем эмуле - скажите)
Бррр! Запутался. В общем, проверите в моем эмуле - скажите)
Адрес позиции в октете соблюдается, но курсор символьный (т.е. шириной в 8 точек, а не в 1).
---------- Post added at 02:28 ---------- Previous post was at 02:27 ----------
Правда позицию в октете точно не проверял.
---------- Post added at 02:29 ---------- Previous post was at 02:28 ----------
Бррр! Запутался.
Спать надо. Утро ночи мудренее будет.
Кстати, с яркостью UKNCBTL тоже, похоже, не так себя ведет. Замечал на реальной УКНЦ, что при загрузке системы с диска, который я прикладывал к первой версии эмулятора, экран вспыхивал ярким цветом, а на UKNCBTL этого замечено не было.
Вспышка там на секунду, наверное, так что прозевать ее было бы сложно.
Вспомнил. УКНЦ тоже делались разные насчет управления яркостью. Стандартно экран с повышенной яркостью, а курсор с нормальной, поэтому курсор и видно на белом фоне на цветном мониторе. Но в разных партиях УКНЦ для управления яркостью ставили или прямую логику или инверсную. Поэтому в некоторых партиях экран был нормальной яркости, а курсор повышенной.
При очистке экрана с помощью управляющего кода 12 (УПР+L) п/п обработки сначала засвечивает весь экран цветом фона нормальной яркости через регистр управления цветом, потом очищает видеопамять, а затем ложит в регистр управления цветом нормальные значения. Так вот на нормальных УКНЦ экран становится менее ярким при очистке, а на инверсных УКНЦ он вспыхивает. В UKNCBTL естественно реализована прямая логика, поэтому при очистке экран там тухнет.
Небольшой апдейтик видеорежимов.
Сделал третий масштаб 1.25. Судя по всему это как раз то, что должно быть на реале.
http://s018.radikal.ru/i523/1202/7c/cbc95b7658ce.png
Этот режим столь же чувствителен к линейной гамме, как и режим 1.333. Однако, из-за более узкой точки он даже еще более капризен.
Итак, список режимов масштабирования по X:
1.0 640 точек. Самая высокая четкость.
1.25 800 точек. Очень чувствителен к линейной гамме.
Четкость самая низкая.
Идентичен реальному масштабу.
1.333 853 точки. Чувствителен к линейной гамме.
Четкость средняя.
Требует больше вычислительных затрат
из-за рассчетов некратным степени двойки.
1.5 960 точек. Малочувствителен к линейной гамме.
Четкость высокая.
Настроить гамму можно по изображению типа 'шахматная доска', например, как в игре 'Кот-рыболов'. Необходимо добиться максимального снижения вертикального муара.
http://s018.radikal.ru/i519/1202/cc/533f6f083842.png
Для телевизионного изображения, имеющего в полукадре 288 строк - "квадратным стандартом" считается 720х576 - именно такой размер имеют (в частности) кадры стандартного DVD-видео.
Для телевизионного изображения, имеющего в полукадре 288 строк - "квадратным стандартом" считается 720х576 - именно такой размер имеют (в частности) кадры стандартного DVD-видео.
Квадратный стандарт - 768х576, т.к. соотношение сторон экрана 4:3. Именно в таком стандарте у меня захватываются скриншоты с ТВ-тюнера Beholder. Хотя можно хватать и 720х576. На самом деле для аналогового сигнала никакого кол-ва точек по горизонтали не существует, на сколько разделили, столько и получили. Вот кол-во видимых линий в стандарте PAL/SECAM действительно составляет 576 строк для полного кадра.
"квадратным стандартом" считается 720х576
Не надо путать цифровые пиксельные стандарты, которые задаются в точках, с аналоговыми видеостандартами. Число линий в стандартной PAL-развертке 320, у УКНЦ видимых 288. Так же, горизонтальное разрешение определяется не мифическими 'стандартными' пикселами типа 720 в ширину, а исключительно параметром Pixel Clock, которое у всех машин разное. Это может быть и 256 (NES), и 320 (Spectrum), и 384 (Специалист), и 400/800 (ДВК), и 640 (УКНЦ) видимых пикселей в ширину.
И в конце концов, соотношение сторон зависит и от настроек конкретного монитора.
Лично я привык к изображению приближенному к соотношению 1:1.25.
Квадратный стандарт - 768х576, т.к. соотношение сторон экрана 4:3. Именно в таком стандарте у меня захватываются скриншоты с ТВ-тюнера Beholder. Хотя можно хватать и 720х576. На самом деле для аналогового сигнала никакого кол-ва точек по горизонтали не существует, на сколько разделили, столько и получили.Имелось в виду "при отображении на матрицу с квадратными точками".
Очевидно, что если оцифровать телевизионный кадр с разрешением 1440 точек в строке - то при отображении на матрицу с квадратными точками такой кадр будет растянут по горизонтали с коэффициентом x2.
Кстати, как у УКНЦ выводится изображение - один полукадр в оба поля (50 раз в секунду) или один полукадр в одно поле (25 раз в секунду) ?
В первом случае - чётные строки будут дублировать нечётные, а во втором - чётные строки будут пустыми.
Кстати, как у УКНЦ выводится изображение - один полукадр в оба поля (50 раз в секунду) или один полукадр в одно поле (25 раз в секунду)?
У всех подобных систем изображение выводится 50 раз в секунду без интерливинга.
У всех подобных систем изображение выводится 50 раз в секунду без интерливинга.В таком случае подключение к обычному телевизору было бы невозможно.
Обычный телевизор выводит каждую секунду 25 чётных и 25 нечётных чересстрочных полей по 288 строк со сдвигом на одну строку по вертикали.
В таком случае подключение к обычному телевизору было бы невозможно.
Обычный телевизор выводит каждую секунду 25 чётных и 25 нечётных чересстрочных полей по 288 строк со сдвигом на одну строку по вертикали.
Обычный телевизор, как и PAL-монитор, выводит 50 раз в секунду 50 полей. Причем, у каждое поле может быть, как смещено на 1/2 строчки вниз, тогда это будет нечетное поле, или не смещено. Бытовые компьютеры, работающие в PAL-стандарте без интерливинга, все поля выдают без смещения, таким образом и получается 50 раз в секунду 50 одинаковых полей.
---------- Post added at 17:03 ---------- Previous post was at 17:00 ----------
Вру, какой нафиг интерливинг) Интерлейс)
Обычный телевизор, как и PAL-монитор, выводит 50 раз в секунду 50 полей. Причем, у каждое поле может быть, как смещено на 1/2 строчки вниз, тогда это будет нечетное поле, или не смещено. Бытовые компьютеры, работающие в PAL-стандарте без интерливинга, все поля выдают без смещения, таким образом и получается 50 раз в секунду 50 одинаковых полейГениально! Т.е. смещение поля задаётся в сигнале ( похоже, что я не знал этого даже тогда, когда по проектному заданию проектировал свой первый телевизор :).
Но поскольку "толщина" электронного пучка в сигнале задаваться не может, то при выводе такого изображения на обычный телевизор оно будет чересстрочным с частотой 50 Гц.
похоже, что я не знал этого даже тогда, когда по проектному заданию проектировал свой первый телевизор :).
Возможно так и появляются не документированные возможности разного рода систем?
А какой смысл выводить полукадры без сдвига по вертикали на обычный телевизор, у которого постоянная послесвечения люминфора рассчитана на 25 Гц.
Ведь таким образом мы ничего не приобретаем, кроме "решётчатого" чересстрочного изображения..
Гениально! Т.е. смещение поля задаётся в сигнале ( похоже, что я не знал этого даже тогда, когда по проектному заданию проектировал свой первый телевизор :).
Но поскольку "толщина" электронного пучка в сигнале задаваться не может, то при выводе такого изображения на обычный телевизор оно будет чересстрочным с частотой 50 Гц.
Век живи, век учись)
Изображение можно считать чересстрочным с большой натяжкой. Есть кинескоп, по которому рисует лучик. У луча определенная толщина (а в этот параметр входит и зона свечения люминофора), и к слову сказать, для большинства стандартных телевизоров тех годов, 'толщина луча' толще, чем двойное расстояние между строками. Таким образом, мы и видим так называемые сканлайны - черные полосочки между строк. И они, соответственно, в большинстве случаев тоньше, чем строчки с изображением.
Если бы изображение с бытовых компьютеров выводилось тоже в режиме интерлейса, мы бы наблюдали неприятное мерцание с частотой 25Гц.
---------- Post added at 17:20 ---------- Previous post was at 17:18 ----------
А какой смысл выводить полукадры без сдвига по вертикали на обычный телевизор, у которого постоянная послесвечения люминфора рассчитана на 25 Гц.
Ведь таким образом мы ничего не приобретаем, кроме "решётчатого" чересстрочного изображения..
Мы получаем немерцающее изображение и немного упрощенный формирователь видеосигнала.
Да и послесвечение не такое уж большое, вполне позволяет обновлять экран с частотой 50Гц. Посмотри спектрумовские демки, где это сплошь и рядом. Да что там, плавный рулон на УКНЦ посмотри на телевизоре или PAL-мониторе.
Если бы изображение с бытовых компьютеров выводилось тоже в режиме интерлейса, мы бы наблюдали неприятное мерцание с частотой 25Гц.Отнюдь. Изображение тогда было бы в точности такое, какое надо. Не чересстрочное и не мерцающее.
Отнюдь. Изображение тогда было бы в точности такое, какое надо. Не чересстрочное и не мерцающее.
Что значит, такое, как надо?
Они и есть такое, как надо. Немерцающее чересстрочное.
Число линий в стандартной PAL-развертке 320, у УКНЦ видимых 288.
Число линий в PAL/SECAM в полном кадре равно 625 строк, включая время обратного хода луча. Соответственно в полукадре 312,5 строк. У УКНЦ всего 312, поэтому то сетевой таймер там частотой не 50 Гц, а где-то 50.1 Гц.
Число линий в PAL/SECAM в полном кадре равно 625 строк, включая время обратного хода луча. Соответственно в полукадре 312,5 строк. У УКНЦ всего 312, поэтому то сетевой таймер там частотой не 50 Гц, а где-то 50.1 Гц.
Да, с Pentagon'ом перепутал. Конечно 312. И именно 312, а не 312.5, потому что на УКНЦ, как и на других бытовых подобных компьютерах нет интерлейса, и все поля одинаковые)
Да и послесвечение не такое уж большое, вполне позволяет обновлять экран с частотой 50Гц. Посмотри спектрумовские демки, где это сплошь и рядом. Да что там, плавный рулон на УКНЦ посмотри на телевизоре или PAL-мониторе.Это сейчас все производители кинескопов давно перешли на 50-герцовый (а то и 100-герцовый) люминфор, из-за чего на картинку телевизоров "старого образца" с новыми кинескопами смотреть уже невозможно.
Советские же кинескопы делались с "нормальным советским люминфором", который даже после выключения телевизора сохранял картинку секунды две :)
Это сейчас все производители кинескопов давно перешли на 50-герцовый (а то и 100-герцовый) люминфор, из-за чего на картинку телевизоров "старого образца" с новыми кинескопами смотреть уже невозможно.
Советские же кинескопы делались с "нормальным советским люминфором", который даже после выключения телевизора сохранял картинку секунды две :)
100-герцовые телевизоры - это уже LCD.
Кстати, смотреть 50-герцовое изображение на 100-герцовом телевизоре, у которого нет motion-smooth'инга, т.е. достраивания промежуточных кадров - для глаз напряжно, т.к. при движении остается размытый след на один кадр. Это типичный артефакт обновления изображения с частотой 1/2 от частоты развертки.
100-герцовые телевизоры - это уже LCD.100 герц прогрессив (когда каждая точка экрана обновляется 100 раз в секунду) стал стандартом люминфора компьютерных мониторов уже давным-давно. Даже мой убогий телек 10-летней давности - поддерживает режим 100 Гц прогрессив. Весьма похоже, что сейчас медленный люминфор для 50 герц интерлейс (когда каждая точка экрана обновляется 25 раз в секунду) уже вообще не производят.
100 герц прогрессив (когда каждая точка экрана обновляется 100 раз в секунду) стал стандартом люминфора компьютерных мониторов уже давным-давно. Даже мой убогий телек 10-летней давности - поддерживает режим 100 Гц прогрессив. Весьма похоже, что сейчас медленный люминфор для 50 герц интерлейс (когда каждая точка экрана обновляется 25 раз в секунду) уже вообще не производят.
SVGA-мониторы - это отдельная тема.
Думаю, что производят для видеонаблюдения и других видеодел. Впрочем, и PAL-телевизоров CRT сейчас продается еще полно.
PAL-телевизоров CRT сейчас продается еще полно.Очень поучительно сходить и посмотреть, как сильно мерцают экраны современных 50 Гц-интерлейс телевизоров. Стробоскоп по сравнению с ними отдыхает.
Очень поучительно сходить и посмотреть, как сильно мерцают экраны современных 50 Гц-интерлейс телевизоров. Стробоскоп по сравнению с ними отдыхает.
Где посмотреть? В магазинах?
Где посмотреть? В магазинах?Ну да. Я было пытался найти немерцающий "обычный телевизор", но потерпел неудачу - и "отечественные", и "импортные" модели в режиме 50 Гц интерлейс мерцают так, что аж жуть берёт.
Ну ладно вклинюсь в академический спор уже по теме EmuStudio.
Про графический курсор.
Не сделано, также неправильно сделан текстовый курсор.
В младшем байте первого слова регистра управления отображением программируется тип и цвет курсора. Биты с 7 по 5 задают позицию графического курсора слева в октете, бит 4 - тип курсора (0 - символьный, все восемь точек засвечены цветом курсора, 1 - графический, только одна точка в октете засвечена цветом курсора), биты с 3 по 0 - яркость и цвет курсора.
Так вот, в EmuStudio не поддерживается графический курсор, а если позиция графического курсора отличается от нулевой, то смещается текстовый курсор на заданное кол-во точек, чего не должно быть.
На рисунках пример со смещением 4. Первый рисунок - текстовый курсор в EmuStudio, на втором рисунке - графический курсор в UKNCBTL.
В младшем байте первого слова регистра управления отображением программируется тип и цвет курсора. Биты с 7 по 5 задают позицию графического курсора слева в октете, бит 4 - тип курсора (0 - символьный, все восемь точек засвечены цветом курсора, 1 - графический, только одна точка в октете засвечена цветом курсора), биты с 3 по 0 - яркость и цвет курсора.
Значит в текстовом режиме обнуляются три младши бита координаты курсора.
А как быть с другими режимами? Например 80 точек в ширину? Там обнуляется 5 младших бит? И какова ширина графического курсора там? И обнуляется ли у него сколько-нибудь младших бит?
Значит в текстовом режиме обнуляются три младши бита координаты курсора.
А как быть с другими режимами? Например 80 точек в ширину? Там обнуляется 5 младших бит? И какова ширина графического курсора там? И обнуляется ли у него сколько-нибудь младших бит?
Координаты курсора и позиция графического курсора в октете - это разные вещи.
В режимах 320, 160 и 80 точек текстовый курсор сделан правильно (за исключением смещения в октете). В широких режимах увеличивается ширина и графического курсора (так же как и текстового).
Координаты графического курсора - это номер знакоместа (как и в текстовом), а потом смещение в октете. В широких режимах номер знакоместа делится на ширину, т.е. в режиме 320 точек номер 0 и 1 - это одно и то же.
Что будет, если в широких режимах задать позицию текстового курсора некратной знакоместу? Будет ли он стоять на знакоместе со смещением?
Что будет, если в широких режимах задать позицию текстового курсора некратной знакоместу? Будет ли он стоять на знакоместе со смещением?
Нет не будет. В режиме 320 не учитывается младший бит позиции, в 160 соответственно 2 младших бита, в 80 - три младших бита. При этом начало курсора рассчитывается исходя из ширины 80 знакомест. Ну соответственно ширина курсора также увеличивается.
Titus, в вашем эмуляторе текстовый курсор сделан правильно, за исключением смещения в октете. Для текстового курсора оно не употребляется, только для графического.
Посмотри вот этот вариантик.
Вообще, конечно, энтузиазма что-то доделывать, когда весь известный софт работает, нету)
Вообще, конечно, энтузиазма что-то доделывать, когда весь известный софт работает, нету)
что ???
а эмуляция картриджей есть ?
а кассет ?
а жёсткого диска ?
сети ?
я уж не говорю про интерфейс эмулятора.
так что эмулятор можно ещё и есть куда развивать :)
в общем надеемся на продолжение ;)
что ???
а эмуляция картриджей есть ?
а кассет ?
а жёсткого диска ?
сети ?
я уж не говорю про интерфейс эмулятора.
так что эмулятор можно ещё и есть куда развивать :)
в общем надеемся на продолжение ;)
Вообще-то мне это не нужно)
Для этого есть, например, UKNCBTL.
А мне чисто поиграть и поностальгировать немножко)
Посмотри вот этот вариантик.
С видом курсора все в полном порядке.
Есть небольшие замечания по черно-белому режиму. Он использует только восемь градаций яркости сигналов RGB, бит интенсивности здесь не используется.
---------- Post added at 18:55 ---------- Previous post was at 18:51 ----------
Вообще, конечно, энтузиазма что-то доделывать, когда весь известный софт работает, нету)
Ничего, hobot, как всегда чего-нибудь найдет.
Хоть игры и не используют T-бит и HALT-режим, но неплохо бы их допилить.
Сделать запись на диск, она хоть и есть в процессе работы, но как выходишь из эмулятора, то все теряешь. В играх это важно, не только таблицы рекордов, но и текущее состояние (например DOCKER).
---------- Post added at 19:02 ---------- Previous post was at 18:55 ----------
а эмуляция картриджей есть ?
а кассет ?
А что это столь важно. Кассета ПЗУ только одна - с Бейсиком. Хотя нет, я ошибаюсь, если реализовать поддержку жесткого диска, то да, интерфейс кассеты ПЗУ нужен.
А вот зачем магнитофон в эмуляторе, когда есть поддержка дисковода, ну и винчестера.
а жёсткого диска ?
сети ?
Ну это бы неплохо. Для игрового процесса важно. С винча быстрее грузится, да и игр дофига можно затолкать.
я уж не говорю про интерфейс эмулятора.
Пользуйтесь FAR-ом. Два-три раза <Ctrl+Enter> вместе со стрелками, ну и <Enter> в конце. Все просто.
так что эмулятор можно ещё и есть куда развивать :)
в общем надеемся на продолжение ;)
Абсолютно согласен. Тоже весьма надеюсь.
Запись не сделал намеренно, чтобы не портились диски, если программа чего-то там затрет не то.
А так, все это уже мелочи. И так целый месяц потратил на допилки)
Shadow Maker
29.02.2012, 00:16
Так можно запись сделать немоментальную, а после выхода чтобы спрашивало, куда сохранить диск (типа как в unreal speccy)
Так можно запись сделать немоментальную, а после выхода чтобы спрашивало, куда сохранить диск (типа как в unreal speccy)
Да все можно. Только для этого нужно делать какой-то диалог, интерфейс или что-то подобное. А учитывая весьма сомнительную нужность подобной опции, при уже существующем UKNCBTL, а так же всего 10 человеках активных пользователей :v2_neutr:
Shadow Maker
29.02.2012, 00:39
Смысле есть, я вот например ничем не пользуюсь потому что смысла играть когда нет сохранения - никакого. Сделай сейвстейты хоть ты, а то у ункцтбл не допросишься.
Смысле есть, я вот например ничем не пользуюсь потому что смысла играть когда нет сохранения - никакого. Сделай сейвстейты хоть ты, а то у ункцтбл не допросишься.
Для тебя одного для игрушки 'Замок Гоблинов'? ))) Не выглядит ли это контрпродуктивным? Может просто обессмертить игру?
Shadow Maker
29.02.2012, 00:45
Я сам могу обессмертить, только играть там дольше 20 мрнут, которые у меня есть желание в нее играть :)
На самом деле, ты думаешь никто не будет пользоваться чтоли? Или почему все так негативно воспринимают это предложение? В любом абсолютно эмуляторе есть сейвстейты, это не знаю, правило неписаное чтоли, а у ункц типа не надо?
Я сам могу обессмертить, только играть там дольше 20 мрнут, которые у меня есть желание в нее играть :)
На самом деле, ты думаешь никто не будет пользоваться чтоли? Или почему все так негативно воспринимают это предложение? В любом абсолютно эмуляторе есть сейвстейты, это не знаю, правило неписаное чтоли, а у ункц типа не надо?
Ну, если очень хочется записываться, поставь VMWare, в ней поиграйся 20 минут, запишись. Потом, когда будет желание, опять сможешь загрузиться с того же места.
Обьясню, почему воспринимают в штыки. Из-за сложности архитектуры и неустоявшевости модели эмуляции.
Например, для того же Спектрума (.SNA) нужно сохранять всего лишь дамп памяти, дамп регистров процессора, порт FE, и пожалуй и все. Т.е. модель железа проста и довольно однозначна.
А в УКНЦ такая туча всего. Одних регистров железа, а так же всяких вспомогательных счетчиков и триггеров для них - не совру, исчисляется сотней.
Я сам могу обессмертить, только играть там дольше 20 мрнут, которые у меня есть желание в нее играть :)
Раз сами сможете обессмертить - замечательно. А если надоедает играть, то окно и свернуть можно. А еще в Windows есть hibernate, проверено, в UKNCBTL работает.
---------- Post added at 00:59 ---------- Previous post was at 00:55 ----------
... Из-за сложности архитектуры и неустоявшевости модели эмуляции.
........................................
А в УКНЦ такая туча всего. Одних регистров железа, а так же всяких вспомогательных счетчиков и триггеров для них - не совру, исчисляется сотней.
Во-во !!! Да еще в документации не все описано. Приходится на реальном железе перепроверять сотни раз, чтобы наконец заработало как надо (вот одни каналы связи чего стоят). Так что сэйвстэйт от одной бета-версии уже может не подойти к другой.
Shadow Maker
29.02.2012, 01:02
Ну давайте мне еще расскажите как слону правильно гадить через хобот.
Titus, у тебя же вроде как уже все, устоявшаяся модель, ты не собираешься переделывать. Тебе-то почему сложно?
---------- Post added at 01:02 ---------- Previous post was at 01:00 ----------
Так что сэйвстэйт от одной бета-версии уже может не подойти к другой.
Да и хрен бы с ним. Добавит версию эмуля в сейвстейт и проверять при загрузке, подойдет - окей, нет - ищите нужную версию. Так можно десятилетиями делать и так и не сделать перфектно - и что, поэтому не добавлять сейвы из-за этого?
Ну давайте мне еще расскажите как слону правильно гадить через хобот.
Titus, у тебя же вроде как уже все, устоявшаяся модель, ты не собираешься переделывать. Тебе-то почему сложно?
Да и хрен бы с ним. Добавит версию эмуля в сейвстейт и проверять призагрузке, подойдет - окей, нет - ищите нужную версию.
Она вовсе не устоявшаяся.
Проблемы неустоявшевости - отражаются на несовместимости сейвсетов от версии к версии.
Чтобы сделать сейвсет, нужно прошерстить все железо эмулятора, собрать все, что надо сохранять. А потом еще проблемней правильно это обратно инициализировать.
---------- Post added at 01:08 ---------- Previous post was at 01:06 ----------
Причем. Поменял что-то в эмуляции, нужно прошерстить опять сейвсет на предмет коррекции. Если не сделаешь этого, что через некоторое время придется писать сейвсет заново, т.к. он уже не будет соответствовать модели.
Shadow Maker
29.02.2012, 01:09
Ну то есть просто влом на самом деле, так? Неохота шерстить, тестить и делать, а не потому, что неустоялось. Да... Ну чего тогда, ясно, делать не будешь.
Ты сам сказал на прошлой странице что все, ничего не будешь менять в эмуляции, или я не так понял?
Ну то есть просто влом на самом деле, так? Неохота шерстить, тестить и делать, а не потому, что неустоялось. Да... Ну чего тогда, ясно, делать не будешь.
Ты сам сказал на прошлой странице что все, ничего не будешь менять в эмуляции, или я не так понял?
Не, ну может когда чего и поменяю.
Но вообще, конечно, основная проблема - это лень.
Shadow Maker
29.02.2012, 01:13
Мды, ну всегда так... Ладно, я не теряю надежды, что когда-нибудь сейвстейты появятся...
Мды, ну всегда так... Ладно, я не теряю надежды, что когда-нибудь сейвстейты появятся...
А самому написать сейвсеты к UKNCBTL? Там же открытый исходник)
Shadow Maker
29.02.2012, 01:18
Я не знаю си (он ведь на си?) ну и вообще ты сам тут испугал тыщей портов реистров которые не найти так далее - я тогда даже гипотетически упущу кучу вещей, которые ты или авторы unkctbl прекрасно знают.
Я не знаю си (он ведь на си?) ну и вообще ты сам тут испугал тыщей портов реистров которые не найти так далее - я тогда даже гипотетически упущу кучу вещей, которые ты или авторы unkctbl прекрасно знают.
На каких же языках ты пишешь?
Это да.
Shadow Maker
29.02.2012, 01:22
А кто сказал, что я вообще пишу? На пхп в начальной стадии пишу скрипты, пожалуй это все, больше я языков не знаю.
А кто сказал, что я вообще пишу? На пхп в начальной стадии пишу скрипты, пожалуй это все, больше я языков не знаю.
А, если не секрет, зачем тебе так прям нужно пройти Замок Гоблинов?
Shadow Maker
29.02.2012, 01:26
А зачем вообще люди в игры играют? :) ты слишком философский вопрос задал. Хочется и все, как тут еще объяснить. Примерно как раньше в Электронику играли, веря что там мультик покажут в конце, хотя прекрасно видно было, что ничего такого там нет, вот и я хочу сам все пройти и увидеть что будет ;)
А зачем вообще люди в игры играют? :) ты слишком философский вопрос задал. Хочется и все, как тут еще объяснить. Примерно как раньше в Электронику играли, веря что там мультик покажут в конце, хотя прекрасно видно было, что ничего такого там нет, вот и я хочу сам все пройти и увидеть что будет ;)
Так у тебя хоть есть мечта пройти. А пройдешь и все) Будет грустно)
Говорят, никогда не возвращайтесь туда, где вам было хорошо. Потому что пока вы помните какие-то ностальгические светлые воспоминания о тех местах/временах, они вас греют. А как попадете в ту ситуацию заново, предыдущее воспоминание заместится новым, и все, пропадет или сгладится.
Shadow Maker
29.02.2012, 01:31
:) хорош зубы заговаривать, сейвстейты будут? Меня будут так же греть воспоминания о том, что я ее прошел ;)
:) хорош зубы заговаривать, сейвстейты будут?
Я тебе по-доброму советую)
Shadow Maker
29.02.2012, 01:35
Ну если не будут то можно же найти чит и скипнуть уровни... Или слона через хобот... Так что лучше сейвстейты.
Ну если не будут то можно же найти чит и скипнуть уровни... Или слона через хобот... Так что лучше сейвстейты.
Имей ввиду, что Гоблинов два, с разными уровнями.
---------- Post added at 01:38 ---------- Previous post was at 01:37 ----------
А вообще, я тебя понимаю, так как сам писал эмуль для игры Land)
---------- Post added at 01:42 ---------- Previous post was at 01:38 ----------
А еще, помню, что когда в 97-98 году писал эмулятор Денди на Амиге, сделал себе сейвсеты, и к лету 98 прошел с помощью него все свои детские любимые игрушки. Балует жутко. Чуть что не так, восстановился, и играешь опять с того же места. Шарм игр теряется.
Shadow Maker
29.02.2012, 01:49
Понимаешь, мы уже тоже не те, что были 15 лет назад, ты сейчас вряд ли будешь по 200 раз переигрывать тот же land в попытках пройти еще дальше. Нет ни столько времени, ни столько желания. Так что получается, что или так - или никак.
---------- Post added at 01:49 ---------- Previous post was at 01:47 ----------
Имей ввиду, что Гоблинов два, с разными уровнями
Дайте линков на оба, мне один и тот же попадался.
Понимаешь, мы уже тоже не те, что были 15 лет назад, ты сейчас вряд ли будешь по 200 раз переигрывать тот же land в попытках пройти еще дальше. Нет ни столько времени, ни столько желания. Так что получается, что или так - или никак.
---------- Post added at 01:49 ---------- Previous post was at 01:47 ----------
Дайте линков на оба, мне один и тот же попадался.
Потому что дела, дела. Надо то, надо это. Чем больше живешь, тем больше себе придумываешь дел. Хотя, уверен, большинство из них можно выкинуть в помойку, в связи избыточной ненужностью.
Shadow Maker
29.02.2012, 02:00
Ну в том и дело, что в первую очередь придется выкинуть как раз это геймерство (для 30-40-летних дядек игры в старые ч/б игры - это явно не приоритетная задача)
Ну в том и дело, что в первую очередь придется выкинуть как раз это геймерство (для 30-40-летних дядек игры в старые ч/б игры - это явно не приоритетная задача)
Скорее даже не сами игры, а большие энерговложения для получения этих игр в том виде, в котором хочется. Покупать где-то УКНЦ, изучать, писать, доставать софт, писать дампилки дисков и т.д. И все-то ради игрушки.
А вообще, любимое дело обязательно должно быть, желательно совпадающее с работой. А если не совпадает, то хобби. Например, такое.
Titus, спасибо что выложили.
Как увидел первый скриншот, тоже сразу подумал про uk-nc.narod.ru 8-)
А благодаря чему решились-то, после стольких лет?
Как программисту мне было бы интересно исходники посмотреть.
Titus, спасибо что выложили.
Как увидел первый скриншот, тоже сразу подумал про uk-nc.narod.ru 8-)
А благодаря чему решились-то, после стольких лет?
Как программисту мне было бы интересно исходники посмотреть.
Да так чего-то подумалось, что не хорошо, что только я пользуюсь, тогда как может кому-то еще будет полезно.
Зато теперь есть два независимых эмулятора.
Не, исходники пускай останутся ноу-хау. А то так совсем не интересно)
Titus, планируется дружелюбный архив последнего обновления С подробным описанием раскладки клавиатуры и управляющих кнопок внутри архива и забитой играми systeм дискетой )))
Titus, планируется дружелюбный архив последнего обновления С подробным описанием раскладки клавиатуры и управляющих кнопок внутри архива и забитой играми systeм дискетой )))
Если это вопрос, то нет, если это предложение, то да)
Если это вопрос, то нет, если это предложение, то да)
Это был вопрос )))
Это был вопрос )))
Мною не планируется, а тобой - да)
Дампы ПЗУ-шек от КСМ ДВК.
Так уже и листинги есть (http://zx.pk.ru/showpost.php?p=461033&postcount=1447).
Выберите, плиз, какое заполнение сканлайнов лучше смотрится?
Слева - дублирование линии с пониженной яркостью
Справа - смешение двух соседних линий
http://s019.radikal.ru/i607/1203/bf/3a4c1722763d.png
Mad Killer/PG
17.03.2012, 20:59
Справа вроди веселей,ярче что-ли.
Выберите, плиз, какое заполнение сканлайнов лучше смотрится?
Слева - дублирование линии с пониженной яркостью
Справа - смешение двух соседних линий
А если они у меня все одинаковые ))) Без шуток, и в предыдущем посте
с описанием эффектов у меня картинки не совпадают с описанием, там где
ты пишешь эффект такой-то - у меня идеальная картинка ))) Там где ты пишешь
вот тут эффекта нет - у меня как раз серединка буковок меняет цвет.
А последние два (повторюсь) просто одинаковые )))
ты пишешь эффект такой-то - у меня идеальная картинка )))
И на каком эффекте у тебя идеально?)
И на каком эффекте у тебя идеально?)
не могу этот пост найти.
Там где три картинки с комментариями от тебя.
В общем суть такая что у меня самая плачевная там та, про которую
ты написал - вот это супер картинка, а две выше одинаковые например.
Как-то так.
не могу этот пост найти.
Я тебе помогу)
http://zx.pk.ru/showpost.php?p=472490&postcount=371
картинка 1-ая с таким описанием
Это изображение должно выглядеть корректно, если у Вас на мониторе линейная гамма:
больше похожа на
А вот так будет выглядеть, если гамма > 1.0. В данном случае все наоборот - темные полоски на светлом фоне засвечиваются в цвет фона. но если не придираться то вполне нормальная.
Посередине которая раздражающе "шумная" в смысле да - затемнение, а
вот самая нижняя идеальная ! как-то так.
картинка 1-ая с таким описанием
больше похожа на
но если не придираться то вполне нормальная.
Посередине которая раздражающе "шумная" в смысле да - затемнение, а
вот самая нижняя идеальная ! как-то так.
А на третьей картинке надписи в меню, что на светлом фоне - у них некоторые палочки не пропадают?
А на третьей картинке надписи в меню, что на светлом фоне - у них некоторые палочки не пропадают?
Titus на форуме Добавить отзыв для Titus Пожаловаться на это сообщение
нет! на первых двух - да, причём центральная картинка самая раздражающая,
нижняя идеальная ))) - как выглядит на матрице моего бука , так я и описываю, на
элт выводить интернет картинку муторно.
нет! на первых двух - да, причём центральная картинка самая раздражающая,
нижняя идеальная ))) - как выглядит на матрице моего бука , так я и описываю, на
элт выводить интернет картинку муторно.
Еще раз уточняю - на первой и треьей картинке как выглядит самая верхняя строчка, которая инверсная?
на первой - я бы и не заметил, но да есть затемнение, но вполне себе терпимое.
вторая вообще никуда не годится
третья идеальная.
++++++++++++++++++++++
в посте где MadKiller выбрал правую у меня обе одинаковые )
----------------------------
так! Извини - инверсная )
Инверсная выглядит так - сверху вниз> на первых двух четкий тёмный шрифт (как будто включен
параметр bold), а на нижней как будто bold выключен - буковки тоньше.
так! Извини - инверсная )
Инверсная выглядит так - сверху вниз> на первых двух четкий тёмный шрифт (как будто включен
параметр bold), а на нижней как будто bold выключен - буковки тоньше.
Че мы мучаемся? Фотку)
Хотя, судя по описанию, у тебя на монике гамма < 1.0.
пожалуйста фотки )))
http://savepic.net/2620649.png
это текущие настройки бортового видео и монитора )))
http://savepic.net/2607337.png
http://savepic.net/2608361.png
http://savepic.net/2605289.png
http://savepic.net/2606313.png
http://savepic.net/2611433.png
http://savepic.net/2609385.png
Похоже, гамма у тебя неверная. 1-ая картинка должна выглядеть нормально, примерно как третья. Если добьешься этого, значит гамма линейная более-менее.
Калибровка монитора в Adobe Gamma. (http://lepser.ru/kalibrovka-monitora/kalibrovka-monitora-v-adobe-gamma.html)
Визуальная калибровка монитора с помощью Adobe Gamma. (http://www.milovsky.ru/adobe_gamma/gamma_index.php)
Судя по активности оценки сканлайнов, выявлено 2 пользователя моего эмулятора)
chess0.sav - оказались графическими шахматами для КГД !!!
Я например первый раз их увидел и только благодаря эмулятору EmuStudio.
https://pic.maxiol.com/images2/1582668905.1520060741.chess0.png
Объясню подробнее:
1 - этот файл попадался мне на разных образах.
2 - на UKNCBTL он так же запускается но доску не рисует, а рисует (честно) командную строку для ввода команд управления фигурами и партией в целом.
3 - запустив его в EmuStudio происходит такая вещь: эмулятор автоматом активирует режим КГД, рисует доску, фигурки появятся если вы нажмёте 1-раз "ВВОД".
4 - дальше пожалуйста можно играть - все команды управления стандартны
D=(1..8) - ГЛУБИНА ПРОСЧЁТА КОМБИНАЦИЙ ( НА СКОЛЬКО ХОДОВ)
PW - КОМПЬЮТЕР ЗА БЕЛЫХ, PB - КОМПЬЮТЕР ЗА ЧЁРНЫХ
(в самом начале игра настроена на ЧЕЛОВЕК\ЧЕЛОВЕК)
P - ПЕШКА
R - ЛАДЬЯ
N - КОНЬ
B - СЛОН
Q - фЕРЗЬ
К - КОРОЛЬ
пример хода P-E4 - кто бы сомневался )
взятие фигуры или * или : надо пробовать
если на позицию могут две фигуры пойти надо соотв. указать
какой именно вы хотите пойти, например N/C3-E2
с рокировкой тоже надо уточнять (сейчас не помню) длинная и короткая
в общем всё как обычно описание такого управления есть "смайл"
5 - и вот начинается интересность, если взять в процессе партии
переключится в режим КЦГД (принудительно) доска с фигурками исчезает,
все невидимые на экране КГД ходы (команды) становятся
видны. То же происходит если принудительно вернуть УКНЦшный экран!
Вот я думаю теперь? Двух мониторные (дисплейные) шахматы?
Кто то уже тогда знал что в 2012 созреет идея гибридной разработки?
Или как это в целом объяснить?
Ну и файл с игрой (а играть вполне можно) только команды приходится
вводить в слепую, поскольку нет клавиши (?) или я туплю (?)
которая бы в режим КГД возвращала бы.
Получаем на дисплее КГД - доска и фигурки, на втором системном дисплее
команды управления, причем они располагаются как раз слева от "невидимой доски"
:confused_std:
попробуйте сами
[Вот я думаю теперь? Двух мониторные (дисплейные) шахматы?
Кто то уже тогда знал что в 2012 созреет идея гибридной разработки?
Или как это в целом объяснить?
Да все гораздо проще) Эта игра использует КГД и КСМ одновременно. Таким образом, в левой части экрана должны видны надписи о ходах, а справа доска. Но т.к. КСМ у меня не эмулируется, этого не видно.
У контроллера КГД есть два управляющих битика. Показывать или нет экран КГД, и показывать или нет экран КСМ. Если оба установленны, то два экрана смешиваются.
piotr433
20.03.2012, 23:11
Данная игра chess0.sav является копией игры chess.sav (http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/games/chess.sav) для системы RT-11, добавлена лишь графика. Может оригинальная инструкция (http://www.ibiblio.org/pub/academic/computer-science/history/pdp-11/rt/games/chess.doc) пригодится.
Да все гораздо проще) Эта игра использует КГД и КСМ одновременно. Таким образом, в левой части экрана должны видны надписи о ходах, а справа доска. Но т.к. КСМ у меня не эмулируется, этого не видно.
У контроллера КГД есть два управляющих битика. Показывать или нет экран КГД, и показывать или нет экран КСМ. Если оба установленны, то два экрана смешиваются.
Но они не смешиваются ))) И почему тогда есть текстовый экран на УКНЦ?
Вообще этот файлик (данная копия) дёрнута из игрового пакета для УКНЦ, где подразумевается
использование двух режимов драйвера терминала, и загрузчиком является ADOS.sys.
Так-же там в текстовом файле описаны два варианта тетриса под две прошивки КЦГД, но самих
тетрисов нет ) Один называется TET181.SAV другой TET182.SAV - но на диске их нет (((
Данная игра chess0.sav является копией игры chess.sav для системы RT-11, добавлена лишь графика. Может оригинальная инструкция пригодится.
Благодарю за ссылки ) Пользуюсь этим архивом как только начал пользоваться эмулятором )
Но они не смешиваются ))) И почему тогда есть текстовый экран на УКНЦ?
Вообще этот файлик (данная копия) дёрнута из игрового пакета для УКНЦ, где подразумевается
использование двух режимов драйвера терминала, и загрузчиком является ADOS.sys.
Не смешиваются, потому что эмуляции КСМ нету, есть только КГД, поэтому его не с чем смешивать. Можно смешивать с УКНЦ, но это извращение)
Не согласен! Не извращение - а спец. режим что бы в данную версию шахмат комфортно поиграть ! Раз уж гибридом назвался - гибридь до последнего ! )))
А стоп!!!
На экране КЦГД кстати то же виден текст !!!
Это лишние ненужные и несовместимые режимы.
Виден, потому что в виде текста он попадает на два терминала - УКНЦ и КЦГД.
Это лишние ненужные и несовместимые режимы.
Ты меня не правильно понял, я предлагаю организовать в эмуляторе "корректную" возможность переключения между 3-мя экранами, штука в том, что если КГД стартует автоматом, а я её переключаю, обратно картинку я уже не могу вернуть!
Вот я о чём.
Свободное переключать экраны ! Всегда ! В любой момент!
Поделки игры LAND , вот ещё "несколько" вариантов игры для КГД, среди них есть 22-ух уровневый, там где 1-й уровень пустой.
Источник - дискета. (http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/SOFTDWK_from_grandslandru/games/)
Очень круто!!! WIND - однако ))) Публиковал на форуме Patron.
http://savepic.net/2727034.png
Такой бы мощный Файл-Менеджер да на УКНЦ )))
http://savepic.net/2717818.png
http://savepic.net/2718842.png
Хотя на УКНЦ вроде есть эмулятор VT100?
Надо попробовать? )))
http://i.smiles2k.net/icq_smiles/13.gif (http://smiles2k.net/icq_smiles/index.html)
Очень круто!!! WIND - однако ))) Публиковал на форуме Patron
А ссылка где? Я не знаю форума Патрона)
А ссылка где?
Сервисная операционная оболочка WIND (http://zx.pk.ru/showthread.php?p=440446#post440446) ( WIND.zip (http://zx.pk.ru/attachment.php?attachmentid=31196) ).
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot