TIS-100

Уникальная Игра TIS-100 от американского разработчика Закари Барта.


Вы получаете в наследство компьютер который не успел собрать ваш дядюшка Ричи, но чтобы запустить его нужно написать диагностические тесты на несколько специфичном ассемблере.



Архитектура компьютера: сердцем машины является двенадцати поточный процессор, каждый узел которого имеет свою память программ, регистр аккумулятор ACC, вспомогательный регистр BAK, и четыре коммуникационных порта (UP, LEFT, DOWN, RIGHT).
Регистр ACC может хранить числа от -999 до 999. Есть еще псевдо-коммуникационные порты: ANY — любой свободный и LAST — тот порт который использовался последним. так же есть направление NIL — в «никуда».
мнемоники ассемблера включают в себя 13 команд:
  • NOP — пустая операция
  • MOV <источник, значение>, <приёмник> — загрузить, скопировать
  • SWP — поменять местами регистры ACC и BAK
  • SAV — скопировать регистр ACC в регистр BAK
  • ADD <источник, значение> — сложить с ACC
  • SUB <источник, значение> — вычесть из ACC
  • NEG — изменить знак у регистра ACC
  • JMP <метка> — безусловный переход
  • JEZ <метка> — переход если ACC = 0
  • JNZ <метка> — переход если ACC != 0
  • JGZ <метка> — переход если ACC положительное (если ACC=0 не переходит)
  • JLZ <метка> — переход если ACC отрицательное
  • JRO <смещение, ACC, коммуникационные порты> — относительный переход

пример:

       mov 10,down
label: mov up,down
       jmp label
# комментарий

все символы в строке после знака # считаются комментариями.
метка заканчивается двоеточием

Игра состоит из 20 головоломок решить которые можно разными способами, имеется возможность оптимизировать программу по скорости или размеру.
Самым узким местом системы команд является то, что в распоряжении только один регистр ACC и почти все операции делаются через него.Использование регистра BAK ограничено, к нему можно достучатся только с помощью двух команд, SAV и SWP, по сути он служит только для сохранения и восстановления аккумулятора ACC.

второй сегмент № 10981
задача:

>Считать значение из порта IN.A
>Удвоить значение
>Ответ переслать в порт OUT.A
можно решить задачку то что называется «в лоб»

Программа выполняется за 160 программных тактов, использует 4 узла, и занимает 6 ячеек программой памяти.
можно оптимизировать по скорости, если распараллелить процессы.

Программа выполняется за 122 программных такта, использует 5 узлов, и занимает 10 ячеек программой памяти.
в процессе выполнения видно, что многие узлы простаивают более 50% если распределить инструкции более равномерно, можно увеличить скорость выполнения.

Программа выполняется за 84 программных такта, использует 5 узлов, и занимает 10 ячеек программой памяти.

TIS-100 Это игра, с элементами программирования, по сути это 20 головоломок, я б рекомендовал бы её для уроков информатики, всё лучше чем переводить в бинарный код стхи Пушкина…
  • +5
  • 18 августа 2015, 17:59
  • BOBBY

Комментарии (4)

RSS свернуть / развернуть
Да, весьма любопытная игрушка. Того же автора, кстати, что и KOHCTPYKTOP. Я бы сказал, что все игры Zachtronics заслуживают пристального внимания, хотя и не все бесплатны, как KOHCTPYKTOP.
0
  • avatar
  • Vga
  • 18 августа 2015, 18:26
Дихальт писал про такую же головоломку из практики. Когда станок отключили и управляющая программа удалилась. Решал он её по другому ;) но всё равно поучительно.
+1
ссылка?:)
0
Вероятно, это. Хотя, помнится мне, в ПГТ или подобном цикле была еще байка про станок, грузившийся через раз с полуистлевшей дискетки и как это дело заменяли более современными средствами.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.