TIS-100 Guide

설명서 간략 한글 for TIS-100

설명서 간략 한글

Overview

혼자 보려고 만들었다가 올립니다.영어 실력이 미천하여 해석이 어렵거나 긴 부분들은 생략했고 간단하게 보려고 만들었습니다.틀린 부분 있을 듯.

설명서 간략 한글

NODE TYPE T21 – 기본 실행 노드
─────────────────────────────────────────────────────────────
1. 시스템 구성
생략..

1-1. ACC
타입: 내장
설명: 기본 실행 노드를 등록하기 위한 기본 저장소. ACC는 내장 소스 또는 연산과 조건문 명령을 포함한 여러 명령어의 방향 피연산자로 사용된다.

1-2. BAK
타입: 내장(주소값 없음)
설명: ACC의 값을 임시 저장. SAV와 SWP 명령으로만 접근 가능. 직접 읽거나 쓸 수 없다.

1-3. NIL
타입: 내장(특수)
설명: NIL을 읽으면 0이 나온다. NIL에 저장하는 것은 아무런 효과가 없다. NIL은 값을 버리기 위한 명령의 방향 피연산자로 사용될 수 있다.

1-4. LEFT, RIGHT, UP, DOWN
타입: 포트
설명: 4방향 통신.

1-5. ANY
타입: 포트(가상 포트)
설명: ANY가 명령의 소스로 사용됐을 때, 명령은 어떤 포트에서든 사용 가능한 첫번째 값을 읽을 것이다.
ANY가 명령에서 방향으로 사용됐을 때, 명령의 결과는 이 값을 읽는 첫번째 포트로 노드를 보낼 것이다.

1-6. LAST
타입: 포트(가상 포트)
설명: LAST에서 읽거나 LAST로 저장하면, 마지막으로 ANY를 사용해서 읽기나 저장하기가 성공한 포트가 대상이 된다.

2. 명령어
<SRC>와 <DST> 명령 파라미터는 포트 또는 내부 레지스터를 지정한다.

2-1. 주석
문법: # COMMENT TEXT
설명: #심볼과 이 뒤의 문장은 무시된다.
노트: ## 뒤에 위치한 문장은 프로그램의 제목이 된다.

2-2. 라벨
문법: <LABEL>:
설명: Label은 점프 명령을 위한 타겟으로 사용된다. 점프 타겟으로 사용됐을 때 라벨의 명령이 실행될 것이다.
예시:
LOOP: [이 라벨은 라벨 자체가 한 줄이다]
L: MOV 8, ACC [이 라벨은 다른 명령과 함께 있다]

2-3. NOP
문법: NOP
같은 문법: ADD NIL
설명: NOP는 노드의 내부 상태나 통신 포트에 아무런 효과가 없는 가상 명령이다.
NOP는 자동적으로 ADD NIL 명령으로 변환된다.

2-4. MOV
문법: MOV <SRC>, <DST>
설명: <SRC>는 읽은 결과값이고 <DST>에 저장된다.
예시:
MOV 8, ACC [리터럴값 8이 ACC 레지스터에 저장된다]
MOV LEFT, RIGHT [LEFT 포트에서 값을 읽고 RIGHT에 저장한다]
MOV UP, NIL [UP 포트에서 값을 읽고 버린다]

2-5. SWP
문법: SWP
설명: ACC와 BAK의 값을 서로 교환한다.

2-6. SAV
문법: SAV
설명: ACC의 값을 BAK에 저장한다.

2-7. ADD
문법: ADD <SRC>
설명: <SRC>의 값이 ACC에 더해지고 그 결과가 ACC에 저장된다.
예시:
ADD 16 [리터럴값 16이 ACC 레지스터에 더해진다]
ADD LEFT [LEFT 포트에서 값을 읽어서 ACC에 더한다]

2-8. SUB
문법: SUB <SRC>
설명: <SRC>의 값을 ACC에서 빼고 그 결과가 ACC에 저장된다.
예시:
SUB 16 [리터럴값 16을 ACC 레지스터에서 뺀다]
SUB LEFT [LEFT 포트에서 값을 읽어서 ACC에서 뺀다]

2-9. NEG
문법: NEG
설명: ACC의 값의 부호가 반전된다. 0은 그대로 있는다.

2-10. JMP
문법: JMP <LABEL>
설명: 강제로 실행 위치를 이동한다. 라벨 <LABEL>의 명령이 실행된다.

2-11. JEZ
문법: JEZ <LABEL>
설명: 조건부로 실행 위치를 이동한다. ACC의 값이 0이라면 라벨 <LABEL>의 명령이 실행된다.

2-12. JNZ
문법: JNZ <LABEL>
설명: 조건부로 실행 위치를 이동한다. ACC의 값이 0이 아니라면 라벨 <LABEL>의 명령이 실행된다.

2-13. JGZ
문법: JGZ <LABEL>
설명: 조건부로 실행 위치를 이동한다. ACC의 값이 0보다 크다면 라벨 <LABEL>의 명령이 실행된다.

2-14. JLZ
문법: JLZ <LABEL>
설명: 조건부로 실행 위치를 이동한다. ACC의 값이 0보다 작다면 라벨 <LABEL>의 명령이 실행된다.

2-15. JRO
문법: JRO <SRC>
설명: 강제로 실행 위치를 이동한다. 현재 명령에서 <SRC>에 명시된 오프셋만큼 떨어져 있는 명령이 실행된다.
예시:
JRO 0 [이 명령이 실행된다. 효과적으로 실행을 중지시킨다]
JRO -1 [이전 명령이 실행된다]
JRO 2 [다음 명령은 건너뛰고 그다음 명령이 실행된다]
JRO ACC [ACC의 값만큼 건너뛴 이후 명령이 실행된다]

3. 예제 프로그램
다음 샘플 프로그램은 LEFT 포트의 값을 순차적으로 읽는다.
첫번째 명령 이후 마지막 명령까지 실행되는 기본 노드의 자동 순환으로 인해, 읽힌 값을 2배 증가시키고 RIGHT 포트에 저장한다.

MOV LEFT, ACC [LEFT 포트에서 읽은 값을 ACC 레지스터에 넣는다]
ADD ACC [ACC에 ACC의 값을 더해서 값이 2배로 증가한다]
MOV ACC, RIGHT [ACC 레지스터에 있는 값을 RIGHT 포트에 저장한다]

다음 샘플 프로그램은 UP 포트의 값을 순차적으로 읽어서 양수 값을 RIGHT 포트에, 음수 값은 LEFT 포트에 저장한다. 0은 버려진다.

START:
MOV UP, ACC [UP 포트에서 읽은 값을 ACC 레지스터에 넣는다]
JGZ POSITIVE [ACC의 값이 0보다 크다면 “POSITIVE”로 점프한다]
JLZ NEGATIVE [ACC의 값이 0보다 작다면 “NEGATIVE”로 점프한다]
JMP START [값이 양수도 음수도 아니라면 “START”로 점프한다]
POSITIVE:
MOV ACC, RIGHT [ACC 레지스터에 있는 값을 RIGHT 포트에 저장한다]
JMP START [“START”로 점프한다]
NEGATIVE:
MOV ACC, LEFT [ACC 레지스터에 있는 값을 LEFT 포트에 저장한다]
JMP START [“START”로 점프한다]

NODE TYPE T30 – 스택 메모리 노드
─────────────────────────────────────────────────────────────
1. 시스템 구성
많은 수의 값을 저장하는 간단한 스택 기반 통신 프로토콜.

2. 통신 프로토콜
스택의 가장 위부터 값이 저장되고, 스택이 가득 차면 공간이 생길 때까지 블록된다.
스택 메모리의 값은 가장 위의 값부터 읽히고 그 값은 제거된다. 스택이 비면 읽을 값이 생길 때까지 블록된다.
이하 생략..

내장형 쌍방향 디버거
─────────────────────────────────────────────────────────────
1. 키보드 단축키
Control Z: Undo
Control Y: Redo
Control X: 자르기
Control C: 복사하기
Control V: 붙여넣기
Control 화살표: 인접 실행 노드로 이동
F1: 설명서 보기
F2: antitamper certification status 보기
F5: 현재 프로그램 실행
F6: 현재 프로그램 포즈 또는 단계별 실행

2. 브레이크 포인트
라인 시작에 느낌표(!)를 넣으면 브레이크 포인트가 된다. 브레이크 포인트가 있으면 프로그램은 그 라인 실행 전에 멈출 것이다.

MOV LEFT, ACC
!ADD ACC [이 라인이 실행되기 전에 프로그램이 멈춘다]
MOV ACC, DOWN

시각화 모듈
─────────────────────────────────────────────────────────────
1. 시각화 모듈 사용
시작 위치를 정하는 X좌표와 Y좌표, 하나 또는 그 이상의 컬러값 그리고 종료를 나타내는 음수값(보통 -1)으로 이미지를 나타낼 수 있다.
좌표계는 디스플레이 영역 좌상단인 (0, 0)에서 시작한다.

시각화 모듈은 다음 색상을 지원한다:

0: 검정
1: 어두운 회색
2: 밝은 회색
3: 하양
4: 빨강

2. 시각화 모듈 해상도
스탠다드 TIS-100모듈은 너비 30 문자 높이 18 문자.
이미지 콘솔 샌드박스는 너비 36문자 높이 22문자.

3. 예제
0,0,3,-1 [모듈 화면 좌상단에 하얀 점 하나를 그린다]
0,0,4,4,4,4,4,-1 [모듈 화면 좌상단에 빨간 수평선을 그린다]

SteamSolo.com