Странно. Может это укоз-овская система дурит.
Хотел как лучше (переделал под их систему), а получилось как обычно...
Вид для печати
Странно. Может это укоз-овская система дурит.
Хотел как лучше (переделал под их систему), а получилось как обычно...
Тут все ок, Хром и ФФ одинаково.
сорри за панику, проблемы на моей стороне
Виноват оказался AdBlock PLUS
похоже убивая рекламу на UCOZ он уносит и оформление.
выключу ка я его нафиг.
еще раз сори за панику.
Привет
b2m, есть просьба,
можно прекрутить дебаг out к сетевым функциям эмуляции корвета ?
а то там что-то сильно не так, и хотелось бы разобрать, и пофиксить
да и в копании с протоколом бы сильно помогло.
лог наверное что-то типа
timestamp in/out HEXdata
в крайнем случае дай описание протокола, а то реверсить его лень ;)
и чтоб два раза не вставать, про эмуляцию сети же
насколько сложно сделать чтобы номер РМУ был
1) в заголовке окна/названии конфигурации (типа Корвет РМУ #01) (возможно опционально включалось в конфиге ??
2) чтоб номер РМУ задавался в конфиге а не "каждый следующий"
или оставить и "каждый следующий" если номер в рму в конфиге = 0
тем более что номер рму должен быть там в порту забит.
Есть такая фича.
Подключается в конфиге примерно так:
Первоначально было сделано для статистики обращений к портам/памяти, число после знака равно - это сколько адресов группировать, например mem[0000-FFFF].ro=400 даст статистику обращений на чтение к 64 областям размером 1Кб.Код:main.CPUClock=2500KHz
main.Caption="Корвет 1.1"
mystat : access-stat {
output="mystat.txt"
mem[FB20-FB21]=1,log
}
CPU : K580wm80a {
stat=mystat
mem=mm
Но если добавить ,log то будет сохранён ещё и протокол обращений, он бывает очень большой, надо быть осторожнее, сначала посмотреть, сколько обращений будет.
В конфиге есть строчка:
Замени на такое:Код:portA[C-F]=lan.netid
Код:portA[C-F]=01
---------- Post added at 02:54 ---------- Previous post was at 02:45 ----------
Незнаю, насколько это удастся пофиксить. Основная проблема вроде была такая: сетевые функции рассчитывают на быстрый ответ, а эмуляция двух компов одновременно разными процессами приводит к тому, что один процесс работает, а другой ждёт, в результате первый никак не может дождаться быстрого ответа от второго.
Решение вроде есть: заставить работать несколько эмулируемых компов в рамках одного процесса (там своя диспетчеризация виртуального времени). Но для этого придётся круто переделывать эмулятор, сейчас он не рассчитан на эмуляцию нескольких компов одновременно.
не, я все время повторяю что этому монстроэмулятору не хватает сущей мелочи - документации ;)
ой, генерит, но формат описание бы пригодился, а то не понял что-там такое
а будет ли оно работать правильно в обратную сторону, если я поставлю 01 то это будет сетевой адрес 01 ??Код:mem r/w FB20-FB21:
FB20-FB20: 43012
FB21-FB21: 1454849
000825BA 0000.214: FF 0384
00000016 0000.214: FF 0384
000583D3 0000.358: FF 0384
...
0000002F 0059.056: 92 03D0
0000002F 0059.056: 92 03D0
0000002F 0059.056: 97 03D0
00000039 0059.056: 00 039F
00000029 0059.056: 92 03D0
0000002F 0059.056: 92 03D0
так это, там же вроде сеть не на время завязана
а везде стоит ожидание готовности уарта
и на прием и на передачу !?!?!?!
---------- Post added at 17:25 ---------- Previous post was at 17:20 ----------
есть для корвеа такая хрень "сендер", передает ком файл на рму
так он работает
но!
он очень немного передает через ПЗУшный функции, там байт 100 всего - приемник
пзу - там есть подтверждения = двунаправленный обмен
так вот, этот сендер нормально передает большие файлы, но передает уже сам, без подтверждений, просто пуляя байты в порт.
в эмуляторе - как раз работает
выглядит как будто двунаправленный обмен сильно страдает ....
---------- Post added at 17:37 ---------- Previous post was at 17:25 ----------
а флага RD/WR нету ??
понятно что последнее число - значении PC после доступа
первые два числа - вообще мрак ...
1. количество тактов с момента предыдущего доступа (hex)
2. время с начала эмуляции - секунды.миллисекунды
3. считанное/записанное значение
4. адрес команды
Не понял вопроса. Что поставишь, то и будет из порта читаться.
Такое ощущение, что там есть таймаут ожидания готовности байта.
Я не помню, может и протоколируется, но в файл не выводится точно.
огромное спасибо!
буду изучать и думать.
похоже я торможу, у тебя все байты доставляются всем машинам ?
а можеш написать как конкретно работает "эмулятор сети"
типа
на RMU записали байт в порт, он доставился в порт на рмуXX ......
вот вообще не встречал ;)
обычно вида
немного усложняет жизнь, но уже можно жить.Код:wait:
ld a,(stat)
and 4
cp 4
jnz wait
хотя флаг запись/чтение был бы очень к месту, а так надо делать привязку к коду ;)
Да. Посылает место преподавателя - принимают все, посылает ученик - принимает только место преподавателя.
После того, как клиент приконнектился к серверу (место преподавателя), сервер посылает ему один байт - номер соединения, именно этот байт выдаётся через lan.netid (сервер выдаст ноль). В конфиге есть фича, т.к. номер должен быть инверсный, то написано не portA[4-7], а portA[C-F], т.е. если номер бита 8 и больше, то он инвертируется.
---------- Post added at 16:17 ---------- Previous post was at 16:15 ----------
По-моему, гораздо проще взять какой-нибудь сниффер, и посмотреть, что передаётся через указанный в конфиге порт.
;)
это я попробовал ДО того как писать сюда ;)
и как-то сразу не полчилось.
у меня как-то странно с wireshark получилось
он вилит траффик только если запустить сервер в одной виртуалке а клиента в другой
в пределах одной виртуалки - не видит он траффика
вопрос
а отправляет он побайтно или пакетами (как показалось на первый взгляд, и что смутило)
Не только, я вешал и на не локалхост, тоже не видел.
Гм, может это и проблема ?
По моему ему критично что после отправки байта может прийти ответ на него
Точнее можем отправить пакет и ждать вменяемого ответа на него
Ничего не понял.
---------- Post added at 02:03 ---------- Previous post was at 02:00 ----------
Ты имеешь ввиду, такое: прога не дождавшись ответа посылает пакет снова, он накапливается в буфере и другая сторона отправляя что-либо на первый пакет тут-же получает вторую копию?
можно прикрутит к эмулятору кнопку magic? чтоб нажал и сбросил в файл полный дамп памяти с озу и пзу без вызова отладчика?
А! Вот! Подскажите, можно добавить на панель эмулятора состояние светодиодиков Суровских. И нигде не могу раскладку клавиатурную найти (спецклавиши) к Суре.
И чё потом с этим дампом делать?
Я как-то пытался сделать светодиоды в строке состояния, но что-то там с MFC пошло не так, и я забросил эту идею. В Векторе пришлось сделать в области экрана. Может когда-нибудь вернусь к этой фиче.
О каких спецклавишах речь? Матрица клавиатуры описана в pk8000.kbd
типа того, получается нет обмена
там же обычно логикак какая
бейсик работает примерно так.
РМП передает пакет в сеть, несколько байт. (с ожиданием порта для каждого байта)
после этого начинает ждать ответ (проверяя статус порта)
РМУ отправляет ответ (тоже несколько байт) (с ожиданием порта для каждого байта).
и так по кругу
правда рму не "ждет порта" а работает по прерываниям
эт конечно усложняет жизнь
хотя если в момент "ожидания отправки байта" убедится что байт доставлне по сети до адресата ?
в общем не всё так просто.
--------------------------------------------
и кстати, вспомнил про корвет еще одну фичу
при записи в LUT (а это 155РУ2) если лучь должен прочитать его, то из него читается 0xF и на экране белые полоски (пока проц пишет?)
это очень классно на реале видно в SOKO.COM (сокобан)
когда на экране в заставке два человечка держат заставку и она мигает
там на экране мельтешение белых полосок.
как всегда была рекомендация писать в LUT только в VBL - но кого это волновало ? ;)
можно такое эмулировать ?
А можно в эмуляцию РК и подобных (Микро-80, ЮТ-88, Апогей) добавить возможность отображения только видимой части видеопамяти. Или рамку просто. Там же видеопамяти 78*30 а отоброжается только 66*27 кажется, непомню точно.
Неудобно при написании программ, приходится на реал ходить и постоянно смотреть, как изображение на нём выглядит, не вылазит ль что-то за экран.
Только делать надо не по знакоместам, а по пикселям. Могу сделать точные замеры, как надо ограничивать.
тогда уж "приглушать" невидимые символы, или сделать переключение
Точно ты скажешь только для СВОЕГО монитора. На других мониторах свои ограничения. И вообще, "...отсечение вылетов не стандартизировано..."
---------- Post added at 12:39 ---------- Previous post was at 12:35 ----------
Маленькое замечание по эмулятору.
Для моделей с ВГ75(i8275) - 86РК, Микроша, Апогей (про другие не скажу) режим курсора «блок» - в реале «инверсный блок». Данный тип курсора формируется сигналом RVV (pin 36).
В исходных схемах 86РК и Микроши этот сигнал не задействован, по этому у них не работает атрибут инверсии и курсор типа «блок». Инверсия появляется при "цветной" доработке.Цитата:
Reverse Video: Output signal used to enable the video signal to the CRT circuity to reverse the video signal. This output is active at the cursor position if a reverse video block cursor is programmed or at the positions specified by the field attribute codes.
извините если уже был вопрос: а как с поддержкой Win x64 ?
Спасибо, у мну на 8.1pro x64 тоже заработало после того как я папку emu в корневой каталог вернул.
У меня папка прямо на рабочем столе, на всякий случай я поставил "запуск от имени...", но это я уже делаю автоматом.
Очень хороший эмулятор, я по нему изучал архитектуры компов, ковырялся в Мониторах... Автор - воистину молодец!
b2m, расскажи как писать плагины к эмулятору (те dll, что в папке Plugins).
Может про это уже написано где-то?
Хочу написать плагин для передачи/приёма данных с интернета.
Будет время - напишу. Для компиляции плагинов нужен будет VC++ 6.0
Имею подтвержденный наукой багрепорт касательно эмуляции ПК-02 "Львов"! ;)
У меня есть адаптация со Спектрума игры "Savage-1", которая не работает даже в последней версии эмулятора. Игры запускается в штатном режиме, отображает меню, звучит биперная музыка, но при попытке перейти к непосредственно игровому процессу игрушка виснет. До сих пор я думал, что проблема в том, что до наших дней дошел исключительно битый образ S1, но вчера уважаемый kapitan-u запустил эту игрушку без проблем на своем ПК-02... И ни одного зависания.
Я сомневаюсь, что kapitan-u что-то коварно подпаял в схеме, чтобы запустить эту игрушку, поэтому предлагаю поискать причину в эмуляторе.
Вот файл с игрой.
а есть вариант прикрутить к эмулятору виртуальный СОМ-порт? как в протеусе?
чтобы можно было с виндовым терминалом связаться, или файлы передавать?
нужен для написания и отладки терминальных программ для старых компов.
ну, или подскажите, как это делать без СОМ-порта?
Есть возможность соеденить эмулируемый ВВ51 с TCP/IP сокетом. Задаётся в конфиге так:
чтобы сам коннектился
чтобы был серверомКод:comport : K580ww51 {
connect="tcp:12345:localhost"
}
Единственная неприятность (или фича) - сервер при соединении посылает номер соединения (1,2,...) в виде текста. Соответственно, клиент сразу после соединения (в теч. 100мс) хавает номер. Данная фича сделана для организации сети компьютеров Башкирия-2м.Код:comport : K580ww51 {
connect="tcp:12345"
}
А кто-нибудь пробовал для Микро-80 на Басике писать? Почему с тем знакогенератором, что идёт в комплекте в Басик листинге все токены имеют последнюю букву маленькую русскую? В других эмулях не так (но там и знакогенераторы другие).
Видимо у меня был недостаток информации по поводу знакогенератора. Вполне возможно, что старший бит видео-памяти не учитывается, и символы из диапазона 00-7F должны повторяться в диапазоне 80-FF, а у меня там вместо латинских - маленькие русские. А Бейсик, выводя служебные слова, не заботится о старшем бите, который там обычно означает конец служебного слова.
для ПК8002 реализован автозапуск картриджей ПЗУ? которые с AB начинаются?
пробовал по образцу ПК8000 прикрутить, не получилось.
судя по описанию - в мониторе эта функция должна быть. а в эмуляторе как внешнее ПЗУ подключать?
Примерно так, как в аттаче (будут работать только картриджи с адреса 4000h). Только что ты будешь запускать? Я нашёл пару файлов с АВ вначале, оно даже запускается, но после старта выключает слот картриджа и благополучно выполняет случайные данные в ОЗУ :)
Я по-моему сам эти файлы и сохранил из отладчика - тупо копия с адреса 4000h непосредственно перед запуском программы (т.е. я ставил точку останова на запускаемый адрес перед загрузкой). Оказалось, это совсем не то, что внутри .cas файла.