Как стать автором
Обновить

Комментарии 26

Я так и не понял, почему «БК ужасная архитектура», но ладно, плюсанул за релиз :) Лучше делать, чем не делать!
за одни цвета надо сослать в лагеря — уж тут хотя бы согласись :-)

кто инвертнул регистры AY? Пушкин? Один диод сэкономили? Но у нас тут нет целей разбираться ZX vs БК — мы констатируем что увидели сами в процессе работы.
Шина QBUS инвертированная, промышленный стандарт.
Цвета у БК 0010 норм – ну а что делать при 2 битах на точку, если не RGB? А вот в БК 0011(м) палитры очень странные, я согласен. Из 16 штук только три-четыре нормальные, при этом не хватает самых важных типа чёрный-синий-жёлтый-белый (ala Norton Commander).
Ну с инвертировнной шиной на БК допустим понятно, но вот кто может внятно объяснить почему на БК повсеместно используется восьмеричная система счисления (OCT) для адресов и пр.?
Я думал, что использовать 3 бита на разряд (0-7), имело бы смысл только при 6 или 8 битном Байте. Т.е. чем хороша шестнадцатеричная система (HEX), тем что на разряд использутеся 4 бита (0-F), и для обозначения байта хватает двух разрядов: 88, AA, FF и пр.
А вот почему во всей документации к БК используется восьмеричная — не понятно, если шина всё равно 16-битная (даже не 15). А адресуемой памяти по прежнему 64Кб т.е. 0xFFFF, что oct'e выглядит убого 0177777.
Да и вот это вот всё выглядит странно и не привычно:
MOV R1,@#177714 
....
ADD #112276,R1
чтобы потенциальный противник при захвате на поле боя оборудования не смог быстро разобраться даже при наличии инструкций
Который потенциальный противник? Это же архитектура ПДП-11!
Вот что меня заставило поматериться, так это вычисление переходов во всех этих бранчах Bxx. У нас на кафедре импортозамещенная PDP-11 управляла промышленным роботом, тоже Электроникой. Ассемблировали мы, по традиции, на бумажке в клеточку, а с терминала в память вводили уже восьмеричные коды программы.
И рядом, для сравения, стояли учебные стенды на К580, ввод программ также с клавиатуры, вывод на семисегментные дисплеи на АЛСках. Тот же ассемблер «в клеточку». Так что сравнить архитектурные прелести было с чем.
НЛО прилетело и опубликовало эту надпись здесь
Спасибо, за развёрнутый ответ. Чего-то подобного я и ожидал, но не думал что настолько всё плохо, насколько далёк этот рудимент от современных реалий, но БКшники почему-то до сих пор живут с ним.
Еще интересно было бы услышать мнение самих инженеров которые приложили руку к созданию БК, я знаю они где-то тут и читают Хабр, почему же всё таки в основе восьмеричная а не шестнадцатеричная системы, может быть просто не знали? Или просто перенесли всё как было, с PDP-11?
НЛО прилетело и опубликовало эту надпись здесь
Все очень просто — у DEC 16 битное поле команды разбивалось на следующие секции
oooommmsssmmmddd, поэтому поля источника и приемника удобно кодировать в восьмеричной 012737 — переслать непосредственный в прямой адрес, ну а код операции заодно с операндами.
А-а, вот оно что, значит набор команд процессора специально разрабатывался таким образом, чтобы человек мог писать и вводить программы вручную с клавиатуры по их опкодам, не используя язык ассемблера. Поэтому в вашем примере — 012737 для комманды oooommmsssmmmddd: 01 — это opcode, 2 — это mode, 7 — source, 3 — dest mode, 7 — destination.
Для ручного ввода команд — понятно, но для адресации памяти и портов, восьмеричная система всё равно не очень-то удобна, или там тоже периферия выровнена по 3м младшим битам, по инерции.
8 регистров, 8 методов адресации – 8-ричная система подходит идеально для отображения кодов инструкций. Ну а числа (аргументы) можно записывать в 10-ной система (для этого после числа ставят точку).
В ПЗУ БК-0011м прошит простенький отладчик, который позволяет смотреть и изменять содержимое памяти. Он отображает всё в 8-ричной системе – в случае с инструкциями процессора сразу понятно за что отвечает каждая цифра числа.
Ну не знаю, я до сих пор помню 177560, это не намного сложнее, чем FF70.
Да и возможность набирать только на цифровой клавиатуре тоже нельзя сбрасывать со счетов.
Восьмеричная система упрощала программирование в кодах на клавишной панели. При отсутствии терминала можно было написать загрузчик или другю короткую программу просто взяв книгу или по памяти воспроизвести коды процессора введя их на панели переключателями.
Так же с ручкой и бумагой проще вычислять в уме именно в восьмеричной системе чем в шестнадцатиричной.
Архитектура PDP-11 (LSI-11) заимствованная для БК-0010 (и программируемого микрокалькулятора МК-85) на первый взгляд кажется неудобной. На самом деле всё продумано и просто. Работа с периферией сводится к обращениям с регистрами, так же как с переменными в памяти. Всё есть память! — девиз PDP-11.

habr.com/ru/post/435292
Так же ознакомьтесь с «Г.В. Вигдорчик — Основы программирования на Ассемблере для СМ ЭВМ.»
8-я или 16-я системы счисления чисто вопрос привычки, поверьте как БК-шнику со стажем. У меня, например, были ломки при переходе на 16-ю систему на PC.
для адресации памяти и портов, восьмеричная система всё равно не очень-то удобна
Все очень удобно. 8-я о1000 — 512 байт, о2000 — 1024 байта. Все микросхемы памяти, сектора диска, все кратно целым значениям.
А-а, вот оно что, значит набор команд процессора специально разрабатывался таким образом, чтобы человек мог писать и вводить программы вручную с клавиатуры по их опкодам, не используя язык ассемблера.
Заметим, кстати, что и 8080/z80 и 8086/80286/80386 тоже разрабатывались с таким подходом. Там, правда, не машинное слово, а байты на части делятся, но то же самое — два поля по три бита, одно — в два бита.

А вот уже когда FMA4 и AVX512 делали — там дополнителный байт делится на две половинки по 4 бита. Видно, что четверть века работали с шестнадцатиричной системой… А вот в ARM, кстати, поля все четырёхбитные (но в ARM64 всё куда сложнее, тут уже под чтение опокодов без дизассемблера вообще никто не закладывался).
НЛО прилетело и опубликовало эту надпись здесь
Процессору конечно все-равно, но человеку не удобно выполнять лишние вычисление в уме: берем какую-нибудь команду в восьмеричном виде, например байтовые операнды, с op-кодом 1 и два аргумента — (R1), (R2), получаем: о111112
Читается прямо также: 1 (байт), 1(op-code), 1(adr1), 1(reg1), 1(adr2), 2(reg2).
в вашем варианте превращается в: х‭909A‬
Плюс вводится совершенно не нужный термин индирекции. Чем это лучше не понятно.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
8-F — это значение в ячейке памяти с адресом в регистре — это не так. В PDP11 все намного круче. Там есть адресации как значение в ячейке памяти с адресом в регистре, так и значение в ячейке памяти с адресом адреса в регистре (двойная косвенность) — типа вот такой @(Rn)+. Т.е. по вашей классификации уже как минимум три типа.
НЛО прилетело и опубликовало эту надпись здесь
Это вряд ли имеет прямое отношение именно к триплетам цифр восьмеричной системы, а просто есть обоснованная необходимость.
Посмотрите на систему команд 6502.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
это можно, но потом…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории