Был (есть?) ли для БК ассемблер в духе 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 и подобных тем )
Нет. Такое даже в голову никому не приходило. Считали вручную. Да и такты и время выполнения примерные, по таблице Зальцмана. Помогают только при сравнительном анализе, какой алгоритм лучше применить. Да и реальные такты и время измерить невозможно, особенно на БК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>.
Газету -- на диске клуба бк 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.
более того, прогрев 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.Есть чему поучиться как начинающим
программировать на ассемблере, так и многим
новоявленным хакерам.