Был (есть?) ли для БК ассемблер в духе https://github.com/grahambates/68kcounter (умеющий считать такты/время исполнения команд)?
( по мотивам https://zx-pk.ru/threads/14702-rasch...ry-pdp-11.html и подобных тем )
Был (есть?) ли для БК ассемблер в духе https://github.com/grahambates/68kcounter (умеющий считать такты/время исполнения команд)?
( по мотивам https://zx-pk.ru/threads/14702-rasch...ry-pdp-11.html и подобных тем )
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Нет. Такое даже в голову никому не приходило. Считали вручную. Да и такты и время выполнения примерные, по таблице Зальцмана. Помогают только при сравнительном анализе, какой алгоритм лучше применить. Да и реальные такты и время измерить невозможно, особенно на БК11, когда одна и та же команда может выполняться разное время, в зависимости от того, на какой цикл режима работы контроллера памяти попадёт.
В техническом описании. Его пока не нашел, но нужное место процитировано в газете SCRIP #1:
Код:┌───────────────────────────┐ │ 2. Формат хранения текста │ └───────────────────────────┘ ────────┬────────────────────────────────────────────────── Байты │ Их назначение ────────┼────────────────────────────────────────────────── 0 │ код конца строки 1-10 │ эти байты используются для упаковки пробелов по │ следующей формуле: N=A1+10*А2+100*А3+... , где │ N-число пробелов, А1,А2,А3... последовательные │ байты от 1 до 10 11 │ код табуляции (понимается, но не используется) 12 │ код конца абзаца 13-17 │ зарезервированы для дальнейшего использования: │ (символы двойной ширины и высоты, работа с гра- │ фическими спрайтами, упаковка повторов и т.п.) 20-37 │ коды переключения атрибутов (см. ниже) 40-100 │ знаки и цифры 100-137 │ латинские заглавные буквы 140-177 │ латинские строчные буквы 200-237 │ символы шрифта пользователя 240-277 │ символы псевдогафики 300-337 │ русские строчные буквы 340-377 │ русские заглавные буквы Структура байта атрибутов 0 0 ─ обычный шрифт 1 0 ─ подчеркивание 0 1 ─ нижний индекс 1 1 ─ верхний индекс ┌───┬───┬───┬───┬───┬───┬───┬───┐ │Зарезервированы│ 10│ 4 │ 2 │ 1 │ └─7─┴─6─┴─5─┴─4─┴─3─┴─2─┴─1─┴─0─┘ │ └─ жирный └───── курсив Коды переключения атрибутов образуются прибавлением числа #20 к байту атрибутов. Работа с текстовой строкой производится с помощью бу- фера текущей строки. Его реальное расположение в адресном пространстве не постоянно, а зависит от того, в каком месте текста находится кусор. На каждый символ в буфере отводится одно слово, младший байт которого содержит код символа, а старший - байт атрибутов данного символа. Признаком конца буфера текущей строки являются коды <0> или <12>.
gid(27.10.2025)
Газету -- на диске клуба бк 1996-10 -- https://svib.pdp-11.ru/1996/10-96.img
Также она есть в образе диска Воланда (1Gb_CF_dump_2022_11_14.rar) -- находил его здесь: https://forum.pk-fpga.ru/viewtopic.php?f=23&t=1555
реальные такты можно посчитать по верилог-моделям вм1+037.
Более подробно написал в телеграм канале про БК
До сих пор никто не посчитал. Значит это либо никому не нужно, либо очень сложно.
Я считаю, что второе. Длительность выполнения команды зависит от того, на какую фазу работы ВП1-037 придёт цикл ввода вывода в команде. А это зависит от того, сколько циклов ввода-вывода в этой команде, сколько циклов ввода-вывода в предыдущей команде, а это - от предыдущей и т.п. Количество комбинаций конечно, но я их не смог вычислить, у меня получалось не то 12, не то 16, и никакой взаимосвязи я там не нашёл. Просто бессистемный набор длительностей выполнения отдельных команд.
На 3Мгц ВМ1 + 6МГц ВП1-037 всё чётко и синхронно.
А на 4Мгц ВМ1 + 6МГц ВП1-037 творится полная хрень.
А на 6Мгц ВМ1 + 6МГц ВП1-037 казалось бы, тоже должно быть всё красиво и синхронно. Но почему-то даже хуже чем на 4МГц. Думаю, там уже начинают влиять искусственные схемные задержки сигналов DOUT и RPLY.
Последний раз редактировалось gid; 29.10.2025 в 08:38.
CodeMaster(29.10.2025)
более того, прогрев 037-й может влиять на тайминги ряда команд, если 037-я не совсем в идеале. У самого такой экземпляр, после включения тайминги нормальные, но через пару минут начинают постепенно замедляться определенные типа команд, пока 037-я не разогреется и "тормоза" достигнут стабильного максимума. Кстати, есть пара предложений насчет эмулятора (извините, что пишу в одну строку, но сайт почему-то не реагирует на Enter при вводе текста. точнее, вставляет пробелы вместо перевода строки). Первое даже не по эмулятору, а по компилеру, bkturbo8: как оказалось, ему безразличен регистр команд/ключей CO и CL, а вот ключи типа -r воспринимаются только в нижнем регистре. в верхнем выдает ошибку. привести бы к общему знаменателю =) Второе, уже по эмулятору: есть предложение устанавливать регистр PC в окне отладки на текущий адрес под курсором (строка выделена желтым) комбинацией клавиш, скажем, Ctrl+Enter или типа того. Удобно для быстрого пропуска куска кода/возврата назад по коду, либо вообще произвольной установки PC при копании программы. Желательно и в работающем, и в остановленном коде (инструкции же можно вписывать при работающем)
Ctrl+Enter - это комбинация СУ+ВВОД, оно на БК не имеет смысла, но в силу общего алгоритма обработки клавиш работает так. Мне вообще пришлось отказаться от всех привычных горячих клавиш типа Ctrl+Клавиша и Alt+Клавиша в пользу более точной и адекватной эмуляции клавиатуры БК на клавиатуре ПК. Так что если что и будет, то просто кнопка на интерфейсе.
Чем не устраивает возможность устанавливать регистр PC в окне дампа регистров ЦП?
На диске клуба 1995-7 есть
Умеет форматы EDASP8, EDASP10, MICRO10#K, MICRO #S (отличаются кодировкой пробелов, конца строки и пр.)Код:TCONF2.ASM - конвертер и форматер текстов by Е.А.Лицов TCONF2.DOC 5-ти летней (!) давности с исходником на TCONF2 MICRO10K.Есть чему поучиться как начинающим программировать на ассемблере, так и многим новоявленным хакерам.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)