Будни мэсмостроения
2019-03-29 21:19Большая часть машинных команд уже работает, включая магазинный режим и признаки групп. Вот текущее состояние тестового хозяйства:
Потом еще прерывания и экстракоды, и можно будет пробовать запускать на FPGA.
$ ./run-all-tests.shОсталось доделать девять арифметических команд: A+X, A-X, X-A, A*X, A/X, E+N, E-N, E+X, E-X.
Test uj - PASS
Test vtm_vzm_v1m - PASS
Test j+m_utm - PASS
Test vlm - PASS
Test utc_wtc - PASS
Test vjm - PASS
Test mtj - PASS
Test xta_uza_u1a - PASS
Test atx - PASS
Test ati_ita - PASS
Test addr0 - PASS
Test aax_aox_aex - PASS
Test arx - PASS
Test its - PASS
Test sti - PASS
Test xts - PASS
Test stx - PASS
Test asn_asx - PASS
Test acx_anx - PASS
Test apx_aux - PASS
Test stack - PASS
Test ntr_rte - PASS
Test yta - PASS
Test e+n_e-n_e+x_e-x - FAIL
Test a+x_a-x_x-a - FAIL
Test mul_div - FAIL
---
Tests total: 26, passed: 23, failed: 3
Потом еще прерывания и экстракоды, и можно будет пробовать запускать на FPGA.

no subject
Date: 2019-03-30 04:37 (UTC)no subject
Date: 2019-03-30 04:41 (UTC)Я на форуме народ спросил - вроде интерес есть: https://groups.google.com/d/msg/besm6/FyOTnCQZaQE/qVpZSL47FwAJ
no subject
Date: 2019-03-30 05:17 (UTC)no subject
Date: 2019-03-30 07:13 (UTC)no subject
Date: 2019-03-30 20:13 (UTC)no subject
Date: 2019-03-31 07:08 (UTC)no subject
Date: 2019-04-01 21:41 (UTC)Вообще-то современные FPGA имеют дополнительные цепи для ускорения сдвигов. Xilinx, Altera - не уверен про iCE40. Может быть на Альтере не так всё и плохо будет.
Для Yosys исходный код придётся переписать c SystemVerilog обратно на Verilog. Оно нетрудно, в принципе.
no subject
Date: 2019-03-30 07:15 (UTC)no subject
Date: 2019-03-30 18:07 (UTC)no subject
Date: 2019-03-30 20:09 (UTC)Паскаль компилятор
Date: 2019-03-30 20:39 (UTC)Я посмотрел - внутренне для типа set of 0..N в FreePascal используется 64-битное слово. То есть наш тип "bitset = set of 0..47" ложится туда без проблем.
Пусть бы компилятор выдавал объектный файл как есть (стандартный массив?). Мы потом к нему допишем линкер и ассемблер.
На нынешний момент сделать бы простой тест на паскале: элементарные вычисления, if-then-else, циклы. Чтобы заканчивался инструкцией PASS/FAIL, как другие тесты.
Re: Паскаль компилятор
Date: 2019-04-01 19:00 (UTC)Твой скрипт гарантирует, что всё делается в точности так, как на настоящей машине, и удачно избегает нужды в линкере и ассемблере.
no subject
Date: 2019-04-01 19:58 (UTC)Это верно, но в конце концов хотелось бы иметь native Linux based БЭСМ-6 toolchain.
no subject
Date: 2019-03-31 09:33 (UTC)Вот пример теста: https://github.com/besm6/mesm6/blob/master/test/hello/hello.pas
Он превращается в бинарный код: https://github.com/besm6/mesm6/blob/master/test/hello/hello.oct
Листинг и карта памяти: https://github.com/besm6/mesm6/blob/master/test/hello/hello.lst
Трассировка выполнения: https://gist.github.com/sergev/241c060f67c98c3bc1fcaaa4cdda7425
Выполнение доходит до вызова P/CO, где натыкается на нереализованную команду A+X, и процессор встаёт по отсутствию сигнала 'done' от АУ.
Ещё чуть-чуть, и можно будет писать тесты на Паскале.
no subject
Date: 2019-04-02 07:58 (UTC)Тесты команд E+N, E-N, E+X и E-X прошли!
Сложение и вычитание тоже как-то шевелятся, хотя тест и не проходит.
Паскалевский тест hello, похоже, тоже работает. По крайней мере он выдал нечто с помощью *71 экстракода, и после этого стал вычитывать что-то из мониторки по адресу 072. Видимо, пытаясь завершить программу.
no subject
Date: 2019-04-02 08:25 (UTC)no subject
Date: 2019-04-03 07:47 (UTC)Теперь можно печатать прямо из Паскаля:
no subject
Date: 2019-04-04 02:51 (UTC)Теперь остались только умножение и деление. Да, и тесты для AMX/AVX я собирался написать.
Ещё я поправил *71 экстракод, чтобы он перекодировал русские буквы в UTF-8. Если запустить с флагом +tty, то выдача *71 идёт непосредственно на текущий терминал. Проблема была в ограниченности Modelsim: при выводе в stdout он всегда предполагает ISO-8859-1 и делает принудительную перекодировку 8859_1->UTF-8. Поэтому вместо stdout приходится открывать /dev/tty и слать на него.
no subject
Date: 2019-04-04 05:37 (UTC)Умножение доделать несложно; разве что придется добавить еще один бит переполнения в порядок, чтобы отличать положительное переполнение от отрицательного (пока я пользуюсь тем, что при сложении положительное переполнение может быть только при нормализации на один разряд вправо после сложения, а после нормализации влево - только отрицательное). При умножении же переполненный порядок может остаться переполненным даже после нескольких нормализаций влево.
no subject
Date: 2019-04-04 08:23 (UTC)Может быть стоит разделить тест A*X и A/X на два отдельных теста? Вроде реализация этих команд не имеет ничего общего.
no subject
Date: 2019-04-04 22:36 (UTC)no subject
Date: 2019-04-05 03:14 (UTC)`ALU_FSIGN: begin `FULLMANT <= add_val1; inc1 <= need_neg1; tmp <= 42'b0; - tmpexp <= a[47:41]; + inc2 <= 41'b0; + `FULLEXP <= a[47:41]; rmr <= 48'b0; - state <= STATE_NORM_BEFORE; + state <= STATE_ADDING; endТест проходит: https://github.com/besm6/mesm6/blob/master/test/avx/avx.bemsh
И ещё сделал скрипт для проигрывания алгоритма инвертирования знака, наподобие сложения, как у Евгения:
no subject
Date: 2019-04-05 04:41 (UTC)no subject
Date: 2019-04-06 06:00 (UTC)Получается так что уведомления о коммитах на гитхаб приходят только владельцу, а watcher'ам - нет. Только если @mention где-то был. Получается какие-то интересные вещи пропускаю.
Здесь в блоге тоже уведомления приходят автору поста, но не участнику цепочки.
Думал discourse но он платный. Может группу в гугле сделать если там еще можно. Они вроде что-то недавно опять меняли в своей политике. Либо что-то self-hosted придумать. У меня есть возможность крутить небольшие виртаулки на работе, но они будут территориально в РФ со всеми "вытекающими" :)
no subject
Date: 2019-04-06 06:15 (UTC)У нас есть домен besm6.org. Можно там сделать discourse.besm6.org и организовать self-hosted форум (он же и список рассылок).
no subject
Date: 2019-04-06 17:15 (UTC)На гитхабе есть watching notifications и team discussions. Может быть можно как-то приспособить.
Self-hosted не хочется, если честно. Лишнюю сущность администрировать. Давайте просто группу на Дриме создадим?
no subject
Date: 2019-04-06 17:32 (UTC)На гитхабе если не являешься администратором репозитория уведомления о push-ах не приходят. Как workaround подписаться через RSS на страничку с commit'ами.
Team discussions не нашел. Наверное это только если аккаунт имеет статус организации. Наверное, внтури github.com/besm6 у вас такая кнопка есть.
Насчет лишних сущностей согласен. Если все-таки на гитхабе как-то разобраться с team discussions то этого будет достаточно. Да и если на дриме кнопка "отслеживать" заработает для всех комменариев то этого тоже будет достаточно, т.к. комментаторов не так много и сдвиг постов-ответов не сильно будет убегать вправо.
no subject
Date: 2019-04-06 22:16 (UTC)Как перевести team на русский? Команда не годится, слишком многозначное слово. Банда... шайка... хунта... артель... Группа наверное.
И ещё сделал сообщество