TIS-100

TIS-100

152 ratings
Инструкция к игре
By MaximNosko
Краткое руководство по игре на русском языке
5
   
Award
Favorite
Favorited
Unfavorite
Введение
В игре нам предстоит решение различных задач с помощью программирования.
Каждый уровень представляет собой несколько компьютеров, соединённых между собой (в некоторых местах связь может отсутствовать или быть односторонней, а также не все компьютеры в рабочем состоянии).
Как видно на рисунке данные входят с одной стороны, после чего должны через несколько компьютеров обработаться и выйти в нужном виде в нужном месте.
Компьютер
Компьютеры - звенья цепи, через которую проходят данные, сортируясь и меняясь.
1-Стрелочками показано, что компьютер может передавать данные в соответствующих направлениях.
2-На экране компьютера нужно написать программу, которая будет выполняться. Размер экрана ограничен, но его всегда хватает для решения уровня.
3-Текущее значение оперативной памяти.
4-Текущее значение дополнительной памяти.
5-Текущее занятие компьютера, то есть чтение, запись, или же просто работа.
Хранилище
В хранилище может быть до 15 чисел.
Хранилище всегда готово принять (если есть свободное место) или отдать данные. Получить можно те данные, которые были записаны последними, то есть получение данных происходит в обратном записи порядке
Программирование: введение
В данной игре все команды пишутся с новой строки, присутствуют метки, условные операторы и комментарии. Обязательных знаков препинания после очередной команды нет, аргументы к функциям ставятся через запятую или пробел, после пробела, без скобок.
Программирование: основное
MOV <ОТКУДА>,<КУДА> - перемещает данные, используется для обмена данными с другими компьютерами и работы с оперативной памятью.
ACC - оперативная память.
BAK - допольнительная память.
#<КОММЕНТАРИЙ> - комментарии могут находиться как на отдельной строке, так и в одной строке с командой, но только после команды.
<МЕТКА>: - метки могут находиться как на отдельнной строке, так и на одной строке с командой, но только до команды.
!<КОМАНДА> - на данном месте выполнение программы остановится, и игра встанет на паузу.
NOP - данная команды ничего не делает.
Программирование: перемещение данных
С помощью команды MOV <ОТКУДА>,<КУДА> можно перемещать данные. Вот список аргументов:
  • RIGHT,LEFT,UP,DOWN - это направления для передачи информации компьютеру находящемуся с соответствующей стороны. Компьютер-адресат должен использовать соответствующую (противоположную) команду для приёма данных.
  • ANY - отправить данные туда, где их примут/получить оттуда, откуда их отдают. В случае, если разные есть несколько вариантов, то приоритеты таковы, сначала левый, потом верхний, затем правый, и, в последнюю очередь, нижний.
  • LAST - использовать то направление, которое было использовано последним.
  • ACC - используется для записи/чтения из оперативной памяти.
  • <ЧИСЛО> - вы можете отправить любое число куда угодно.
  • NIL - это направление в никуда, в пустоту.

Примеры программ:
  • Данные в компьютер приходят сверху, а ему просто нужно передать их вниз:
    MOV UP DOWN
  • Данные в компьютер приходят слева, а ему просто нужно передать туда, где принимают:
    MOV LEFT ANY
  • Компьютер должен принять данные справа, а затем передать их вниз и налево:
    MOV RIGHT ACC MOV ACC DOWN MOV ACC LEFT
Программирование: работа с памятью
У компьютеров в игре есть 2 ячейки памяти, это оперативная память, в которую можно записывать что угодно, и потом оттуда считать инфорацию, а также дополнительная память, в которую нельзя обратиться напрямую.
Вот список команд, которые используются для работы с памятью:
  • ADD <ЧИСЛО или НАПРАВЛЕНИЕ> - добавляет к оперативной памяти соответствующее значение.
  • SWP - меняет местами значения оперативной и дополнительной памяти.
  • SAV - записывает значение оперативной памяти в дополнительную.
  • NEG - меняет знак у числа в оперативной памяти.
  • SUB <ЧИСЛО или НАПРАВЛЕНИЕ> - отнимает у оперативной памяти соответствующее значение.

Примеры программ:
  • Компьютеру сверху приходит число, он должен его удвоить, а затем отправить вниз:
    MOV UP ACC ADD ACC MOV ACC DOWN
  • Компьютеру сверху приходит пара чисел и должен их сложить, а затем отправить вниз:
    MOV UP ACC ADD UP MOV ACC DOWN
  • Компьютер получает среху число, удваивает его, а затем отправляет вниз, при этом в дополнительной памяти подсчитывает количество чисел, которые через него прошли:
    SWP MOV UP ACC ADD ACC MOV ACC DOWN SWP ADD 1
Программирование: метки и условные операторы
Синтаксис меток прост:
<ИМЯ МЕТКИ>:
Метка может быть размещена как на отдельной строке, так и на одной строке с другой командой, но только перед командой.
Вот список команд для работы с метками:
  • JMP <МЕТКА> - программа перепрыгивает к соответствующей метке.
  • JEZ <МЕТКА> - программа перепрыгивает к соответствующей метке, если в оперативной памяти число равно нулю.
  • JNZ <МЕТКА> - программа перепрыгивает к соответствующей метке, если в оперативной памяти число не равно нулю.
  • JGZ <МЕТКА> - программа перепрыгивает к соответствующей метке, если в оперативной памяти число больше нуля.
  • JLZ <МЕТКА> - программа перепрыгивает к соответствующей метке, если в оперативной памяти число меньше нуля.
  • JRO <ЧИСЛО> - программа перепрыгивает на <ЧИСЛО> строк вниз, то есть, если <ЧИСЛО> меньше нуля, то программа перепрыгнет на <ЧИСЛО> строк вверх. Вместо числа можно использовать значение опертивной памяти(ACC).

Примеры программ:
  • С помощью меток можно делать сверху часть программы, которая выполнится 1 раз, а снизу часть программы, которая никогда не выполнится. В данном случае компьютер хранит в себе сумму всех чисел, которые в него приходят, однако никуда их не выводит, а в оперативной памяти сумма будет на 1 больше чем должна быть.
    MOV 1 ACC S:ADD ANY JMP S MOV ACC DOWN
  • Если число, которое пришло в компьютер сверху больше нуля, то оно отправится направо, если равно, то вниз, а если меньше, то налево
    S:MOV ANY ACC JGZ P JEZ R JLZ M P:MOV ACC RIGHT JMP S R:MOV ACC DOWN JMP S M:MOV ACC LEFT
Первый уровень
Первый уровень очень простой. Нам всего лишь надо получить данные сверху и отправить вниз.
28 Comments
Манька 29 Nov, 2017 @ 10:55am 
Отлично! Краткое и доступное руководство по ТИС-100
demonboobs 23 Aug, 2015 @ 5:26pm 
@5 S:MOV UP ACC JGZ 1 MOV ACC DOWN MOV DOWN LEFT JMP S 1:MOV ACC DOWN

@6 S:MOV DOWN ACC JGZ 1 JMP 5 1:SAV MOV DOWN ACC JGZ 2 JMP 3 2:SWP ADD 1 JMP 1 3:SWP 4:SUB 1 MOV 1 DOWN JGZ 4 5:MOV ACC DOWN

@7 S:MOV UP ACC JGZ 1 5:MOV ACC RIGHT MOV LEFT ACC 3:MOV RIGHT ACC JGZ 2 MOV 1 UP 6:MOV 0 DOWN MOV UP ACC JGZ 1 MOV LEFT UP JMP 6 2:MOV LEFT DOWN JMP 3 1:MOV ACC RIGHT

@8 S:MOV LEFT ACC JGZ 1 JMP 2 1:MOV ACC UP JMP S 2:MOV ACC UP 4:MOV UP ACC JGZ 3 MOV ACC LEFT JMP S 3:MOV ACC LEFT JMP 4

Sorokin Igor

http://postimg.org/image/9swlst1br/

http://postimg.org/image/fwbp7ln3t/

Второй вариант

http://postimg.org/image/sgn1nvtn7/

http://postimg.org/image/5avww1l6d/

Третий вариант

http://postimg.org/image/jcmiqpv8f/

http://postimg.org/image/nhtvo24fb/
demonboobs 23 Aug, 2015 @ 5:26pm 
Sequence reverser? (self.tis100)

отправлено 2 дня назад, изменено * автор Gusni

http://www.youtube.com/watch?v=zn77NbIwWgw

@0

@1 S:MOV UP ACC JGZ 1 MOV ACC RIGHT MOV ACC DOWN MOV DOWN ACC JMP S 1:MOV 1 RIGHT MOV ACC DOWN

@2

@3

@4 S:MOV UP ACC JGZ 1 MOV ACC DOWN MOV RIGHT UP JMP S 1:MOV ACC DOWN
demonboobs 23 Aug, 2015 @ 5:25pm 
@6 START:MOV UP ACC JGZ 1 JLZ 2 4:MOV ACC DOWN JMP START 1:SUB 10 JGZ 3 JLZ 4 MOV 1 DOWN JMP START 3:MOV 1 DOWN JMP START 2:MOV ACC DOWN

@7

@8

@9 START:MOV UP ACC JGZ 1 JLZ 2 MOV ACC DOWN JMP START 1:MOV ACC DOWN JMP START 2:ADD 10 JGZ 3 JLZ 4 MOV 1 DOWN JMP START 3:MOV 0 DOWN JMP START 4:MOV 1 DOWN

@10

Sorokin Igor

http://postimg.org/image/dvijd2tpv/

http://postimg.org/image/iioleuh2r/

demonboobs 23 Aug, 2015 @ 5:24pm 
signal edge detector. Крипто. (self.tis100)

отправлено 3 дня назад автор Gusni

http://www.youtube.com/watch?v=zn77NbIwWgw

@0

@1 START:MOV UP ACC MOV ACC RIGHT MOV ACC RIGHT

@2 START:SUB LEFT MOV ACC DOWN MOV LEFT ACC

@3

@4

@5
demonboobs 23 Aug, 2015 @ 5:24pm 
@3 S:MOV LEFT ACC SAV JGZ 1 JMP S 1:MOV LEFT ACC JGZ 3 JLZ 4 MOV ACC LEFT JMP S 3:SWP SAV MOV ACC LEFT JMP 1 4:MOV ACC LEFT

@4 S:MOV LEFT ACC JGZ 1 JLZ 2 MOV ACC RIGHT JMP S 1:MOV ACC RIGHT MOV 1 LEFT JMP S 2:MOV ACC RIGHT

@5 S:MOV LEFT ACC JGZ 1 JLZ 2 MOV ACC UP MOV 0 DOWN JMP S 1:MOV ACC UP MOV UP DOWN JMP S 2:MOV ACC UP MOV ACC DOWN

@6

@7 S:MOV UP ACC JGZ 1 JLZ 2 MOV ACC DOWN JMP S 1:MOV ACC RIGHT JMP S 2:MOV ACC RIGHT MOV RIGHT DOWN

@8 S:MOV LEFT ACC JGZ 1 JLZ 2 1:MOV ACC UP SWP ADD UP SAV JMP S 2:SWP MOV ACC LEFT SUB ACC SAV Sorokin Igor

http://postimg.org/image/4oqhxv23l/

http://postimg.org/image/v5346l75t/
demonboobs 23 Aug, 2015 @ 5:24pm 
Брут (self.tis100)

отправлено 7 дней назад, изменено * автор Gusni

http://www.youtube.com/watch?v=hX_ke3GwLE0

http://www.youtube.com/watch?v=WsufptxQA0w

http://www.youtube.com/watch?v=SLHmuPhOc6Q

http://www.youtube.com/watch?v=zn77NbIwWgw

http://www.youtube.com/watch?v=VkTJC4A_TtM

Signal multiplier брут форс.

@0 S:MOV RIGHT ACC JGZ 3 MOV ACC DOWN JMP S 3:SUB 1 MOV 1 DOWN SAV MOV DOWN ACC SWP JGZ 3 SUB 1 MOV ACC DOWN

@1 S:MOV UP ACC JGZ 1 MOV ACC LEFT MOV RIGHT ACC JMP S 1:SAV MOV RIGHT ACC JGZ 3 MOV ACC LEFT JMP S 3:SWP MOV ACC LEFT

@2 S:MOV UP ACC JGZ 1 MOV ACC LEFT MOV DOWN ACC JMP S 1:MOV ACC LEFT MOV ACC RIGHT 4:MOV DOWN RIGHT MOV RIGHT ACC JLZ 3 JGZ 2 JMP S 2:MOV ACC DOWN JMP 4 3:JMP S
demonboobs 23 Aug, 2015 @ 5:22pm 
Histogramm viewer (self.tis100)

отправлено 15 часов назад автор Gusni

http://www.youtube.com/watch?v=zn77NbIwWgw

@0

@1 MOV UP ACC 3:SUB 1 JGZ 1 JLZ 2 MOV 1 RIGHT JMP 3 1:MOV 1 RIGHT JMP 3 2:MOV ACC RIGHT

@2 MOV LEFT ACC MOV ACC DOWN

@3

@4

@5 S:MOV 0 ACC 3:SAV MOV RIGHT ACC JGZ 1 JLZ 2 1:SWP MOV ACC RIGHT JMP 3 2:SWP ADD 1 JMP 3

@6 S:MOV UP ACC MOV ACC LEFT MOV ACC RIGHT JGZ 1 JLZ 2

1:MOV LEFT DOWN MOV RIGHT DOWN MOV 3 DOWN MOV -1 DOWN JMP S 2:MOV -1 DOWN

@7 S:MOV 17 ACC 3:SAV MOV LEFT ACC JGZ 1 JLZ 2 1:SWP MOV ACC LEFT SUB 1 JMP 3 2:JMP S

@8

@9 MOV UP DOWN

@10

Sorokin Igor

http://postimg.org/image/skbfsrwnh/

http://postimg.org/image/c2bjhw2er/
demonboobs 23 Aug, 2015 @ 5:22pm 
Image test pattern 2 (self.tis100)

отправлено 15 часов назад автор Gusni

http://www.youtube.com/watch?v=zn77NbIwWgw

@0

@1

@2

@3

@4

@5 MOV 3 DOWN MOV 0 DOWN

@6

@7

@8 S:MOV 30 ACC 3:SUB 1 JGZ 1 JLZ 2 MOV 1 RIGHT 1:MOV 1 RIGHT JMP 3 2:MOV ACC RIGHT

@9 S:MOV RIGHT DOWN MOV RIGHT DOWN 3:MOV UP ACC SAV MOV LEFT ACC JGZ 1 JLZ 2 1:SWP MOV 1 RIGHT MOV ACC DOWN JMP 3 2:MOV ACC DOWN MOV ACC RIGHT MOV UP ACC

@10 S:MOV 0 LEFT MOV ACC LEFT 3:MOV LEFT ACC JGZ 1 JLZ 2 1:JMP 3 2:SWP ADD 1 SAV JMP S

Sorokin Igor

http://postimg.org/image/eap2nfa1b/

http://postimg.org/image/wjldfe5cp/