-
- ? gid
- 07.02.2019 19:59
Это вопрос?
тогда вот так неубиваемость по СТОПУ на БК10 делали:
mov #hlt4,@#4
mov #psw,@#6 ;текущий приоритет, такой же какой у программы
...
hlt4: sub (pc),(sp)
rti
¤
Особый шик - такой приём:
mov #161716,@#2 ;по адресу 2 команда sub (pc),(sp)
mov #2,@#4 ;по адресу 4 - команда rti и одновременно адрес вектора - адрес команды sub (pc),(sp)
mfps @#6 ;приоритет вектора
- ? gid
- 06.02.2019 09:41
Да. Злоупотребление кнопкой СТОП творит интересные непотребства в фокале и неинтересные в бейсике и неожиданные в редакторе vortex. В остальных местах не проверял.
- ? gid
- 05.02.2019 19:06
[ну если только кому то ШАГ нужно ввести скриптом...]
Ну вот кому-то СТОП нужно ввести.
Я не буду делать текстовое окно с эмуляцией ввода с клавиатуры. Почти это же самое успешно делает уже готовый функционал. Та правда не эмуляция нажатия клавиш, а тупо засылание в регистр 177662 сканкодов, чтобы БКшка думала, что это ей с клавиатуры данные приходят.
¤
Скачайте свежий релиз. Там в скрипте кнопка СТОП повешена на букву Ё. Этой буквы на БК нету, даже кода её нету. Там и пример есть.
- ? gid
- 05.02.2019 07:47
Нулевой символ - сканкод клавиши шаг, и конец строки в Си
- ? gid
- 04.02.2019 20:08
Драгндропом. Берёшь файл скрипта, и кидаешь его на окно эмулятора. То, что кинут именно скрипт, опознаётся по его расширению .bkscript.
Кнопку стоп нажать нельзя, потому что у неё нету аски символа. Но можно договориться, каким символом считать кнопку стоп.
Или ввести что-то вроде esc последовательностей, для служебной и не текстовой информации
И ещё, сейчас скриптообработчик вроде как поломался. Я пробовал на БК-11М в вортексе, там символы теряются. Хотя по алгоритмам не должны. Пока не нашёл решения кроме как сделать задержку побольше, чтоб символы пореже передавались.
- ? gid
- 04.02.2019 07:39
В эмуляторе с самого начала есть скрипты. Делают абсолютно то же самое, но не из текстового окошка, а просто из текстового файла. Я этой штукой ни разу не пользовался. Только изредка проверяю - не поломалась ли, пока что-то другое улучшал.
Я не помню, можно ли запустить скрипт на исполнение в любое время, поэтому погляжу, как можно расширить функционал ихний.
- ? gid
- 03.02.2019 15:36
Идей я и сам нафонтанировать могу. Вы мне рабочий пример приведите. Напишите эту штуку и прицепите к эмулятору. А я дальше доделаю.
Экранная клавиатура в эмуляторе так и появилась. Один энтузиаст, которому было очень надо, взял и вкрячил, как сумел, клавиатуру. А я посмотрел в исходники, и сделал так же, только лучше. А потом оно само пошло. Улучшалось постепенно, и дошло до того, что есть.
Точно так же появились некоторые элементы интерфейса.
Так что нет ничего невозможного. Всё упирается в отсутствие желания шевелиться и морщить мозг у пользователей. И отсутствие знаний и умений у меня.
- ? gid
- 01.02.2019 14:17
Ничем. Ни у кого такого шрифта нету и наверное не было (или есть такой или что-то подобное, но они сами себе его рисовали, поэтому не поделятся).
Знающие люди посоветовали пользоваться шрифтом ZXSpectrum.ttf, он примерно такой.
¤
Однако, что-то мне кажется, что в этой теме были сообщения по этому поводу. И даже ссылка на спектрумовский шрифт была. А сейчас ничего нету.
- ? gid
- 31.01.2019 14:41
Таки вот. Кому надо, скачивайте новую версию, где один единственный фикс - вернуты пропавшие иконки в ВинХР.
И куча внутренних изменений алгоритмов, которые могут где-то привести к тормозам, где-то наоборот, тут нужны бесплатные бета тестеры со своим многообразием конфигураций железа.
- ? gid
- 28.01.2019 13:25
[В результате частота дискретизации звука получается как раз примерно 44100.]
Ну вот, если процессор работает на частоте 4МГЦ и программа что-то генерирует, то при заданных условиях, звук получится именно такой. Т.е. воспроизводить его надо с настройками частоты дискретизации 44100 Гц.
¤
Если мы поменяем частоту процессора на 6МГц, то при заданной формуле, условия генерации звука останутся прежними, и он по прежнему будет генерироваться на частоте дискретизации 44100 Гц.
- ? gid
- 28.01.2019 13:20
[почему в реализации YM2149 частота взята ... в 2 раза больше, чем реальная?]
Потому что такой алгоритм реализации YM2149. Есть другие алгоритмы, там по другому сделано, напр. см. в BKBTL самых свежих версий на гитхабе.
А период в тактах как-то связан с битностью регистра тона. Внутренним, там получается 24 бита и за один такт частоты чипа меняется на одно значение заданным образом (насколько я разобрался в алгоритме)
¤
[И к чему мы тут привязываемся? К частоте звукового чипа?]
Вы решили привязаться к частоте звукового чипа. Это тоже вариант, но наверно не очень удобный.
¤
Я синхронизировался с частотой CPU. У меня через каждый интервал, равный CPUFreq/SoundSampleRate (4000000/44100) выполняется функция CMotherBoard::NextTick, которая формирует звук в звуковом буфере. В результате частота дискретизации звука получается как раз примерно 44100. А передискретизация звука из частоты генерации YM2149 в текущий SoundSampleRate делается в отдельной функции, реализации YM2149. В BKBTL в реализации YM2149 например сделано наоборот, там звуковой сопр. уже генерирует звук в заданной частоте дискретизации.
¤
Естественно, у меня, выполнение команды процессора, занимающей тактов больше, чем интервалов CPUFreq/SoundSampleRate и выполнение нужного количества CMotherBoard::NextTick выполняется последовательно друг за другом, а не одновременно. Потому что вот нихера не получается сделать малой кровью многопоточную реализацию, которая бы работала быстрее однопоточной. Там надо как-то умудриться сделать независимые потоки, которые бы никак не обращались к одной и той же области памяти одновременно, и как-то передавать им данные. Т.е. надо переписать всё с нуля, а то все ресурсы уходят на переключение контекстов и доступ к общей памяти, которая копируется из контекста в контекст.
¤
И вот, когда мы сгенерируем буфер с заданной частотой дискретизации, мы отправляем его звуковому устройству, а сами заполняем следующий буфер.
Буферы заполняются быстрее, чем звучат, в результате получится так, что все буферы заполнены, и чтобы отправить следующий буфер звучать, нужно ждать, пока отзвучит предыдущий. Вот тут и получается синхронизация с реальным временем звучания звука.
При этом чем больше у нас буферов, или чем больше их размер, тем больше отставание звука от реального положения дел. А если размер буферов маленький - то сильно повышается нагрузка на процессор. Тут надо искать компромисс.
- ? gid
- 25.01.2019 21:14
в большинстве своём, описан там https://github.com/1801BM1/cpu11/blob/master/vm1/doc/1801vm1.pdf
Верилог модели 1801ВМ1 где весь микрокод в бинарном виде описан, брать там https://zx-pk.ru/threads/23978-tsifrovaya-arkheologiya-1801-i-vse-vse-vse.html
- ? gid
- 25.01.2019 19:43
[Описал бы кто кому доступна вся картинка в голове.], [ИР13 - 8 разрядный регистр... Значит видеопамять читается побайтно или там всё же два ИР13]
Для этого есть схемы электрические принципиальные БК10 и БК11(М)
¤
[Сколько процентов времени шина занята формированием картинки. И так далее.]
Диаграмм же сами просили не давать, а это там.
¤
Описывать всё это словами - получится большая и толстая книга. А она уже написана, называется "МИКРО-ЭВМ индивидуального пользования "ЭЛЕКТРОНИКА БК0010" М1.492.000 РД Инструкция по ремонту" в двух частях.
ищите там https://yadi.sk/d/c4FJ4g6YUFB3P файлы bk0010_rd_1_(DjVuPhoto).djvu и bk0010_rd_2_(DjVuPhoto).djvu
- ? gid
- 25.01.2019 12:14
Ну так вся картина целиком и описана в файле.
А он нигде память не вычитывает. И никогда не занимался этим. Он выставляет адрес микросхемам памяти, и команду - читать данные с шины или выдавать данные на шину. А читает и пишет их процессор.
А в цикле видеовывода - читает данные ИР13 и потом побитно формирует точки на экране.
- ? gid
- 25.01.2019 09:46
>>? Лёха Башой - 24.01.2019 20:07
[А кто-нибудь может описать точно как ВП1-037 работает?]
Могу дать почитать описание модели на верилоге. Теперь оно всем доступно на гитхабе https://github.com/1801BM1/k1801/blob/master/037/rtl/va_037.v
¤
>>? Дмитрий - 24.01.2019 21:23
[А для этого нужны все точные растактовки для каждой команды]
Если кто-нибудь сумеет модель на верилоге преобразовать из описания мелкоты на лог.элементов в описание функциональных блоков, то будет быстрая потактовая модель, а пока есть только то, что сделал Patron. Я вроде бы давал ссылку. http://emulator.pdp-11.org.ru/DVK/MPI/distr/MPI_API_v1.1.zip
Там эквивалентная потактовая модель, которая по словам Patronа в точности соответствует верилог модели, но более быстрая.
- ? gid
- 24.01.2019 19:45
и тут мы приходим к пониманию, чем симулятор отличается от эмулятора.
¤
[Сделать главный поток "тактового генератора"][- тупое увеличение переменной на 1 + несколько проверок]
....
[А эмуляция команды может выполняться дольше числа тактов]
А для этого и нужен точный потактовый эмулятор процессора, которому на вход будет подаваться тик тактового генератора, и процессор будет считать, и сам, когда надо будет делать ввод/вывод по шине МПИ с точного потактового эмулятора контроллера памяти ВП1-037, который заодно ещё будет и видео рисовать.
¤
Пока этого нет, придётся обходиться примерной эмуляцией, и делать так, чтобы было хотя бы приблизительно как в реальности.
- ? gid
- 24.01.2019 16:29
Вот там: http://www.bk001x.ru/forum/121-104-1
- ? gid
- 24.01.2019 15:46
>>? Дмитрий - 24.01.2019 14:53
[Каким образом будет синхронизация выполнения команд, если эмуляция выполняется на частоте хост-проца?]
В целом, принцип работы такой же, как и описано в статьях на хабре. Есть коэффициент пересчёта тактов проца в частоту дискретизации звука (или наоборот), т.е. сколько за 1/44100Гц выполняется тактов процессора, чтобы синхронизировать генерируемый звук с реальным временем.Просто у меня есть ещё и фрейм - пережиток прошлого, от которого можно в принципе и отказаться. Раньше он нужен был для синхронизации вывода видеокадров, но сейчас видео тоже синхронизируется с частотой проца через коэффициент пересчёта частоты проца с частотой работы ВП1-037 6МГц. Мне неохота за это браться, там слишком много ломать надо будет.
¤
>>? Лёха Башой - 24.01.2019 14:39
Есть уже такая конфигурация, и даже лучше, называется БК10+СМК.
В зависимости от режима работы СМК можно сделать ОЗУ по адресам 120000-157777, или вообще все 64КБ ОЗУ, с разными нюансами.
- ? gid
- 24.01.2019 13:43
>>? Дмитрий - 24.01.2019 10:22
Я в общем-то так и делаю. Синхронизация делается по звуку. А таймеры и ожидание - на всякий случай, если в системе нет вообще звуковой подсистемы, то начнут работать они, а когда она есть - никто никого не ждёт.
¤
>>? Лёха Башой - 24.01.2019 11:56
Фикс будет. Скоро.
¤
[Конфигурация .01 + 32кб ОЗУ.. попытка записи в 140000+ приводит к классическому СТОПу..]
Так и должно быть. там пусто. туда писать нельзя.
Я как-то забыл отразить эту херню в документации. Потому что подразумевалось, что все и так знают как этот расширитель ОЗУ работает.
Доп ОЗУ подключается по адресам 120000-140000, банком 8кБ. Всего 4 банка. Для подключения нужного банка надо записать его номер в любое место по адресам 100000-117777.
Кто и зачем придумал такое нерациональное решение - без понятия. Вот если бы был ещё блок МСТД, с фокалом по адресу 140000 и тестами по адресу 160000, то было бы понятно. а так - чтобы всего 8кб ОЗУ и 16кб пустоты за ней, зачем надо - неясно.
Это оригинальная конфигурация из эмулятора Калмыкова, как есть. Я её вообще не трогал.
- ? gid
- 24.01.2019 09:58
При более внимательном изучении, оказалось, что всё работает, просто в ВинХР не отображаются иконки. В Вин10, Вин7 отображаются, а в ВинХР - эта же самая иконка не отображается.
Я вообще не понимаю, как так получается, иконки в одном и том же графическом формате, одной и той же битности, в одних случаях отображаются, а в других - нет. Чего им не хватает, хер знает. Поэтому обычно беру уже готовые, нарисованные людьми, которые соображают в них.
- ? gid
- 23.01.2019 19:46
Однако точно, не работает. Но тот же самый код работает в Вин7, значит микрософт где-то в своём апи подгадил.
И наверное там ещё много где чего по мелочи не работает.
Мне проще сказать, что ВинХР больше не поддерживается, чем даунгрейдить код из С++11 в С++99 и собирать его в VS2008 под ХР.
Пусть найдётся энтузиаст, который будет делать это для себя.
- ? gid
- 23.01.2019 09:58
Всё нормально в отладчике. И точки останова никуда не деваются. Работоспособность эмулятора проверяется на Вин10, Вин7 (правда чистые девелоперские, не засранные всяким софтом) и ВинХР (на виртуалке, тоже вообще голая ХР без ничего).
Дважды кликнул мышой на строке в поле точки останова - точка поставилась, дважды кликнул мышой на точке останова - снялась. Лень кликать - то же самое можно делать клавишей F9, но там точка ставится/снимается только на той строке, которая выделена жёлтым курсором.
¤
[На команде RTI сделал пошаговый - потерял управление.]
Если делал это клавишей F10 - всё правильно, управление теряешь и должен вернуть будешь по адресу за командой RTI, что маловероятно. Чтобы не терять управление, нужно делать это клавишей F11.
Все команды, которые изменяют в результате свое работы PC лучше трассировать клавишей F11
¤
[Видимо придется компилить эмулятор самому]
Вот это самое верное решение. Потом результатами поделиться не забудьте, чтоб все могли пользоваться.
- ? gid
- 22.01.2019 13:18
Принципиально - ничего сложного в этом нет. Прицепить можно, но быстроту не обещаю, не знаю, когда заняться смогу. И если таймер имеется в виду 177706-177712, то могу сказать сразу - он будет врать, т.к. эмуляция ничего общего с реальностью не имеет. Тайминги команд неверные, эмуляция процессора приблизительная. Поэтому то, что покажет таймер в эмуляторе и в реальности - две большие разницы.
- ? gid
- 21.01.2019 15:41
Дизассемблировал щас по-быстрому этот Mini-C, чтоб посмотреть, что там внутри. Точно, ему не МСТД надо, ему режим РП надо, поэтому чтоб с дискеты его запускать, нужно сперва пропатчить, чтоб перед началом работы режим РП включался, или файл загрузчик написать, который включит режим РП и загрузит сам этот компилятор.
Такое чувство у меня, что этот Mini-C написан на самом Mini-C, код корявый и неоптимальный, память используется нерационально, одни и те же текстовые строки много раз повторяются.
- ? gid
- 21.01.2019 14:22
Воспользуйтесь экранной клавиатурой. В эмуляторе их два вида - плёночная и кнопочная. Там и кнопки СУ есть, которые кнопкой Ctrl эмулируются. Если экранная клавиатура выключена, включается в меню "Вид"->"Панели инструментов и закрепляемые окна".
Переход в режим РП делается нажатием клавиш Alt+F8, что соответствует нажатию клавиш АР2+СБР
Подсказка: в комплекте с эмулятором идёт документация. там есть файл kbdLayout_BKPC.html в котором можно наглядно посмотреть, какие клавиши ПК соответствуют клавишам БК.
- ? gid
- 20.01.2019 15:45
Ну что, получилось у кого-нибудь?
Вот вам бинарники, сконвертированные из WAV. https://transfiles.ru/w7sg2
Дока сопротивлялась дольше компилятора, но и она сдалась, для её работы требуется блок МСТД БК10, поэтому сам текст прилагается отдельно.
Подозреваю, что и компилятору требуется блок МСТД БК10, т.к. он у меня при вопросе "Изменить параметры" при нажатии на любую клавишу вылетал в андос.
- ? gid
- 18.01.2019 14:50
У меня нет джойстика. Поэтому я не знаю как проверить работоспособность того, что я наэмулирую.
У меня есть гейпад (именно так, т.к. с помощью этого унылого поделия я не смог поиграть ни в одну игру на ПК, т.к. очень неудобно). И изредка я думаю, что надо бы что-то сделать такое, но полежу немного - и проходит.
- ? gid
- 16.01.2019 15:47
Есть эта модель на Си. Но там такой же мрак. Как было в 2016 году нифига не получалось, так и до сих пор всё в таком же состоянии. http://gid.pdp-11.ru/f/vm1cpp.rar
Код только рефакторится время от времени, когда настроение есть. Никаких улучшений не придумывается.
Вот модель 1801ВП1-037 там может работать аж на 6,5МГц, если только одна, сама по себе. Но толку от неё нету никакого.
- ? gid
- 16.01.2019 12:35
Я тоже не знаю. Поэтому сделал так, как сделал.
А настоящее синхронное "тикание" тактов и выполнение инструкций можно сделать только полной потактовой эмуляцией полноценной модели процессора на основе кода в верилоге. У меня такая модель может работать на частоте максимум 500Мгц и ни в какую быстрее не получается. И это без всего остального, только процессор и память с 0-тактовой задержкой.
- ? gid
- 24.12.2018 07:44
да. по каким-то непонятным или исторически забытым причинам только текст в таком виде.
- ? gid
- 21.12.2018 16:36
блин, невнимательно прочитал. Зато, нашёл тут про LBA48.
В исходниках unreal speccy 0.38.4 в hdd.cpp можно поглядеть. Там оказывается, есть два блока регистров 1f0-1f7
и в первом блоке регистры 1f3-1f5 - это младшие 24 бита LBA, а во втором блоке эти же регистры - старшие 24 бита LBA.
Вот как получается якобы 16 битность. И переключается это через бит HOB в регистре 3F6, а не 1F7.
- ? gid
- 21.12.2018 11:04
Хотя нет. У меня код - гибрид из libspectrum и unreal speccy версии 0.35b2. Собственно эмуляция HDD - преимущественно из libspectrum, и что-то возможно из unreal speccy. Я обычно когда есть выбор разных реализаций, беру себе ту, что проще понять, как работает и как мне кажется более правильнее работает. А эмуляция интерфейса ATA взята из unreal speccy.
- ? gid
- 21.12.2018 09:41
Когда я искал исходники эмуляторов HDD, я нашёл три штуки, из них самый простой для понимания оказался исходник libspectrum.
http://fuse-emulator.sourceforge.net/libspectrum.php на тот момент версия была 1.0.0. Вот оттуда я и взял весь код почти без изменений, только из С сделал С++ и в класс это всё обернул.
Умники, которые так написали: Copyright (c) 2003-2004 Garry Lancaster, 2004 Philip Kendall, все вопросы к ним.
Насколько там всё было правильно, меня не волновало, главное - вся эта штука на БК заработала при минимуме усилий с моей стороны.
- ? gid
- 15.12.2018 09:18
Я в этом даже не разбирался, т.к. всё это завязано на ДМА и без ДМА не работает, посему для БК не имеет смысла.
Максимум, что можно - 24 битный ЛБА доступ через ПИО моде.
¤
Там, чем дальше в лес, тем толще партизаны, все эти АТА6 и далее рассчитаны на большие скорости и большие объёмы данных, там уже даже со старыми стандартами нет совместимости. Переключаешься в этот режим, и всё - по тем же адресам совсем другие регистры с другим назначением.
- ? gid
- 13.12.2018 09:21
Вы уже не первый такое спрашиваете. Но я понятия не имею о чём речь. Я никогда не увлекался бейсиком и не было у меня никаких программ на нём.
Что за программа такая на бейсике? Бейсик же сам может и читать и писать с/на магнитофон(а). там есть команды LOAD,CLOAD,BLOAD/SAVE,CSAVE,BSAVE. Не нужны бейсику никакие программы чтобы работать с магнитофоном.
Кто-то в прошлый раз спрашивал про программу на бейсике для РС. Я недавно случайно в архиве Макса Багаева наткнулся на какую-то прогу, может это она http://pdp-11.ru/mybk/PC_Util/bk-mg/
- ? gid
- 03.12.2018 19:16
Так положено по алгоритму расчёта КС, нужно менять знак результата суммы. исходники можно посмотреть в прошивке АльтПро.
к счастью компилятор си не считает себя умнее программиста. Сказано поменять знак, значит будет поменян знак. Даже у беззнакового типа. Это просто ассемблерная команда neg al, а уж как интерпретировать содержимое al, это решать программисту.
- ? gid
- 22.11.2018 12:56
Manwe, не в ту тему флуд.
А у msf теговая структура, дока на неё есть.
Слепок памяти БК хранится в том виде, как описано в *.h файле соответствующей конфигурации.
Слепок памяти СМК немного дебиловат, т.к. СМК делалось на основе А16М, а оно - на основе БК10+КНГМД. Поэтому первые 16Кб ОЗУ СМК прилеплены к памяти БК, остальные - отдельно.
Ковырять это вручную - ненужный героизм. Нужно писать прогу, которая разбирает msf на части и оперирует этими частями.
- ? gid
- 16.11.2018 12:31
Не помню. Запустите образ нехакнутого оверкилла и всё увидите.
Я уже не в том возрасте, когда интересна вся эта возня с защитами. Просто пока руки помнят, снял её и забыл.
- ? gid
- 15.11.2018 15:42
Есть. там всё есть. Я когда его хакал, убрал только защиту от копирования. Всё остальное - абсолютно нетронуто.
- ? gid
- 15.11.2018 12:41
нету идей.
и, честно говоря, мне пофиг.
Я даже в писишные игры не играю (потому что нет денег на новую видеокарту, чтоб современный графоний смотреть, и нет лишних денег на электричество, ибо наше правительство вконец охуело с тарифами, и времени лишнего нету тоже), не то что в это БКшное убожество.
- ? gid
- 09.11.2018 16:17
BD, это не БКшный образ, это микрософтовский образ, в нулевом секторе микрософтовская таблица MBR, в которой одна запись об одном логическом диске. Формат диска: 32 сектора в кластере, 60749 блоков на диске, 6 секторов в ФАТ, и 512 элементов в корневом каталоге, т.е. каталог - 32 блока.
Мне потому и стало интересно, чем они это на БК смотрели, патченым андосом или ещё чем-то? Или вообще ничем, и это не для БК
- ? gid
- 09.11.2018 10:15
Заинтриговали. Этот образ на БКшке кто обрабатывает? Написали свою ОС или андос пропатчили?
- ? gid
- 07.11.2018 09:32
в ANDOS на диск из 1600 блоков помещается всего 397 кластеров. если выделить все файлы и директории, то они покажут используемый размер как раз в 397 кластеров. Ни единого свободного нету.
Однако из-за того, что размер кластера - 4 блока, то последний из них в файле бывает заполнен незначительно. И если считать размеры файлов в байтах, то получается, что дискета заполнена на 2/3 всего. Из-за этого то многие и не любят АНДОС.
И если смотреть размер такой дискеты не в АНДОС, а в МКДОС, то оно будет показывать не правду, а какие-то свои представления о файловой структуре ФАТ.
- ? gid
- 06.11.2018 21:35
там файловая система - андосный Fat12, т.е. кластер 4 сектора, и иногда в конце файла остаётся много пустого места.
Только это слишком грязный и ненадёжный хак - прятать нужные данные в конце кластера.
Я мало интересовался, что там к чему, вот что мне известно:
¤
ENDBLOK - главный файл.
грузится из загрузчика по адресу 40000.
содержит в себе заставку, монитор БК10 и андос, в общем всю 4-ю страницу.
точка входа - 137410. там восстанавливается системная область 0..400
и загружается файл SFOGUS.EXE
¤
обозначения: * - защита, v - вирус, # - проверки
¤
SFOGUS.EXE - стартовый игровой файл. *v
грузится по адресу 500, точа входа 26110.
помещает по адресу 137500 модуль загрузки подгрузок. 137500 - jmp, 137502 - call
загружает и запускает FOGUS, DEMO5.BS, READ.BS
¤
READ.BS - адрес загрузки 500, точка входа 25530 *v
загружает и запускает SFOGUS.EXE
¤
FOGUS - адрес загрузки 500, точка входа 26530, #
загружает и запускает OPROS
¤
OPROS - адрес загрузки 500, точка входа 31670, *
загружает и запускает INSLOT1
¤
INSLOT1 - адрес загрузки 1000, точка входа 7300
загружает INSLOT2 по адресу 40000, а запускает по адресам 100000..137777
загружает и запускает STORY0
¤
¤
DEMO5.BS - адрес загрузки 500, точка входа 32030 *v#
загружает LEVEL5.VN по адресу 40000 в стр 6(?)
загружает LEVEL5.N1 по адресу 40000 в стр 2
загружает LEVEL5.N2 по адресу 40000 в стр 7
загружает и запускает LEVEL5.DEM
¤
LEVEL5.DEM - адрес загрузки 500, точка входа 37000
загружает LEVEL6.V по адресу 40000 в стр 1
загружает LEVEL6 по адресу 1000, точка входа 37000
¤
STORY0 - адрес загрузки 500, точка входа 14300
1. загружает STORY1 по адресу 40000 в стр 1
загружает STORY2 по адресу 40000 в стр 2
загружает STORY3 по адресу 40000 в стр 3
загружает STORY4 по адресу 40000 в стр 7
2. загружает STORY5 по адресу 40000 в стр 1
загружает STORY6 по адресу 40000 в стр 2
загружает STORY7 по адресу 40000 в стр 3
загружает STORY8 по адресу 40000 в стр 7
3. загружает STORY9 по адресу 40000 в стр 1
загружает STORY10 по адресу 40000 в стр 2
загружает STORY11 по адресу 40000 в стр 3
загружает STORY12 по адресу 40000 в стр 7
4. загружает STORY13 по адресу 40000 в стр 1
загружает STORY14 по адресу 40000 в стр 2
загружает STORY15 по адресу 40000 в стр 3
загружает STORY16 по адресу 40000 в стр 7
5. загружает STORY17 по адресу 40000 в стр 1
загружает и запускает SBOR_112 по адресу 1000, точка входа - 1000SBOR_112 - адрес загрузки 1000, точка входа 1000
загружает LEVEL1.V по адресу 40000 в стр 1
загружает MENU2.V по адресу 40000 в стр 2
загружает MENU3.V или MENU3K.V по адресу 40000 в стр 3 в зависимости от ранее выбраных условий
загружает NAGRUZ7.V по адресу 40000 в стр 7
запускает MENU3.V или MENU3K.V по адресу 75640
¤
MENU3.V - адрес загрузки 40000, точка входа 75640
загружает DYNAMIC по адресу 1000
загружает LEVEL1 по адресу 500, запускает с адреса 500
¤
MENU3K.V - адрес загрузки 40000, точка входа 75640
загружает DYNAMIC по адресу 1000
загружает LEVEL1.K по адресу 500, запускает с адреса 500
¤
LEVELn, LEVELn.K - адрес загрузки 500, точка входа 37000
¤
LEVELn.V - адрес загрузки 40000 в стр 1
¤
INFOn и ORDERn - фигня какая-то
¤
¤
т.е. для корректного взлома достаточно вычистить всего 4 файла:
SFOGUS.EXE
READ.BS
OPROS
DEMO5.BS
¤
Если INFOn и ORDERn бесполезный мусор - то можно их удалить и будет место для загрузчика драйвера EIS.
Или придумывать, какой файл запаковать БКпаком и прицепить туда драйвер EIS.
Или модифицировать ENDBLOK. т.е. кусок монитора БК10 там запаковать, в свободное место понапихать нужного, запустить это нужное, потом распаковать монитор БК10, чтоб всё как было стало.
¤
В общем, я простых путей не вижу.
- ? gid
- 01.11.2018 16:57
Вот я, например, драйвер EIS в МБР подключал программой SETMBR, которая вместе с SERVICE2 идёт. Хотя этим вроде бы ещё какая-то прога занималась. Но сейчас уже не помню.
- ? gid
- 01.11.2018 14:37
Там же, в документации к контроллеру (если я ничего не путаю) и написано, что это резидентный драйвер, он, если есть в МБР, загружается в сегмент по адресу 170000, в ту же страницу, где таблица разделов находится. И всегда доступен, пока кто-нибудь его не затрёт своими данными.
И ещё там было написано, как писать свои резидентные драйверы, чтобы туда же запихивать и использовать.
¤
Т.е. если использовать СМК и прописать в MBR драйвер EIS/FIS, он будет доступен прозрачно так же, как и эмулятор EIS/FIS в КНГМД с ПЗУ 326. И ничего никуда грузить не надо, всё делается автоматически, даже вектор 10 устанавливается при загрузке драйвера.
- ? gid
- 01.11.2018 09:49
Почему забыл?
Надо будет - руки вспомнят.
- ? gid
- 23.10.2018 19:36
[к функции «загрузка ленты» будет наверное добавить кнопку останова загрузки или воспроизведения]
Такая кнопка есть с самого начала. Она находится в окошке "Управление чтением/записью лент" (кнопочка с квадратиком) Она становится активной, если выключены опции эмуляции загрузки/сохранения ленты, т.е. если вы можете запустить на воспроизведение Wav файл, то и остановить его в любой момент тоже можете, этой самой кнопкой. Горячих клавиш у неё нет, поэтому только тыкать мышкой в неё.
¤
[Есть ли возможность сделать так что бы эмулятор понимал диски от спектрума]
Это чисто программная задача. Если кто-то напишет или когда-то писал драйвер чтения спектрумовских дисков на БК, то это будет возможно.
А писать специально какой-то транслятор, чтобы диски понимались БКшкой как родные, что-то тяжко. проще использовать сторонние проги. Сперва на РС выковыривать нужные файлы с диска или образа диска Спектрума, а потом заковыривать их на образы дисков БК с помощью BKDE, а потом использовать образ в эмуляторе.
- ? gid
- 23.10.2018 15:48
Объясняю что происходит:
в прошлой версии, при редактировании поля значение проверялось на граничные условия, но не обновлялось, если выходило за границы. Это легко увидеть, если смотреть на частоту в статус баре.
Вы удаляете цифру 4, т.о. рабочая ТЧ стала 0, а нуль - нельзя, оно поправляется ни минимально возможную - текущая частота дискретизации звука * 10, в статус баре показывается - 441000.
Потом вводите цифру 6, т.о. рабочая ТЧ стала 6000000.
¤
А в текущей версии, мало того что значение проверяется на граничные условия, оно ещё при этом и корректируется в поле ввода.
Вы удаляете цифру 4, т.о. рабочая ТЧ стала 0, а нуль - нельзя, оно поправляется ни минимально возможную - текущая частота дискретизации звука * 10. И она корректируется в поле ввода, там стало 441000.
После этого вводите цифру 6, т.к. количество символов не изменилось. было 000000, стало 441000, то курсор остался на месте и цифра 6 ввелась перед числом 441000, и т.о. текущая ТЧ стала 6441000.
¤
В общем-то не очень хорошо получилось. Я уберу коррекцию поля ввода. Есть альтернатива - заканчивать ручное редактирование ТЧ в поле ввода обязательным нажатием Enter, но там кода больше и я поленился делать это.
- ? gid
- 23.10.2018 13:38
У меня ереси не происходит, делается именно то, что нужно, а именно - изменение частоты.
Вот только, если задать частоту меньше 1МГц происходят разные непонятные процессы. Иногда начинается самовольный Trap To 4. Ни отловить причину, ни отладить пока не удалось. Это очень древний косяк, проявивший себя сразу после того, как я сделал эти контролы и стало можно менять частоту на лету. Пока знаю, что это из-за прерываний, а как и почему - не знаю.
-
«
1 | ... | 8 | 9 | 10 | ... | 15 | »
?