Skip to content

Instantly share code, notes, and snippets.

@ciaranchen
Created June 23, 2021 11:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ciaranchen/4fa198d48745bc27d723a4b3dbc35832 to your computer and use it in GitHub Desktop.
Save ciaranchen/4fa198d48745bc27d723a4b3dbc35832 to your computer and use it in GitHub Desktop.
TIS-100 Code (1)
@0
MOV ANY, DOWN
@1
MOV RIGHT, DOWN
@2
MOV ANY,LEFT
@3
MOV UP, DOWN
@4
MOV UP,DOWN
@5
MOV UP, DOWN
@6
MOV UP,RIGHT
@7
MOV LEFT,DOWN
@0
@1
MOV UP, ACC
ADD ACC
MOV ACC, DOWN
@2
@3
@4
MOV UP, DOWN
@5
@6
@7
MOV UP,RIGHT
@8
MOV LEFT, DOWN
@9
@0
@1
MOV UP, DOWN
MOV UP, ACC
ADD ACC
MOV ACC, DOWN
@2
@3
@4
MOV UP, ACC
ADD ACC
MOV ACC, DOWN
MOV UP, DOWN
@5
@6
@7
MOV UP,RIGHT
@8
MOV LEFT, DOWN
@9
@0
@1
SUB ACC
MOV UP, ACC
SUB RIGHT
MOV ACC, DOWN
@2
MOV UP, LEFT
@3
@4
@5
MOV UP, DOWN
@6
@7
@8
MOV UP, ACC
MOV ACC, DOWN
NEG
MOV ACC, RIGHT
@9
MOV LEFT, DOWN
@10
@0
@1
SUB ACC
MOV UP, ACC
SUB RIGHT
MOV ACC, DOWN
@2
MOV UP, LEFT
@3
@4
@5
MOV UP, DOWN
@6
@7
@8
MOV UP, ACC
MOV ACC, DOWN
NEG
MOV ACC, RIGHT
@9
MOV LEFT, DOWN
@10
@0
MOV UP, DOWN
@1
@2
@3
@4
MOV UP, DOWN
@5
MOV UP,RIGHT
@6
MOV LEFT, ACC
JGZ OUTPUT
MOV 0, DOWN
JMP END
OUTPUT:
MOV 1, DOWN
END:
MOV ACC, RIGHT
@7
MOV LEFT, ACC
JNZ YES
MOV 1, DOWN
JMP END
YES:
MOV 0, DOWN
END:
MOV ACC, RIGHT
@8
MOV LEFT, ACC
JLZ OUTPUT
MOV 0, DOWN
JMP END
OUTPUT:
MOV 1,DOWN
END:
NOP
@0
@1
MOV UP, ACC
MOV ACC, RIGHT
MOV ACC, DOWN
@2
MOV UP, DOWN
MOV LEFT, DOWN
@3
MOV UP, DOWN
@4
@5
MOV UP, DOWN
@6
MOV UP, ACC
MOV ACC, DOWN
JGZ OUTPUT
MOV UP, DOWN
MOV RIGHT, NIL
JMP END
OUTPUT:
MOV UP, NIL
MOV RIGHT, DOWN
END:
@7
MOV UP, ACC
MOV ACC, LEFT
MOV ACC, DOWN
@8
MOV UP, RIGHT
@9
MOV UP, ACC
JNZ COPY
MOV UP, NIL
MOV LEFT, ACC
ADD RIGHT
MOV ACC, DOWN
JMP END
COPY:
MOV UP, DOWN
MOV LEFT, NIL
MOV RIGHT, NIL
END:
@10
MOV UP, LEFT
@0
@1
MOV UP, RIGHT
@2
MOV UP, ACC
JGZ GZ
JLZ LZ
ADD LEFT
ADD RIGHT
JMP ST
LZ: MOV LEFT, ACC
MOV RIGHT, NIL
JMP ST
GZ: MOV RIGHT,ACC
MOV LEFT, NIL
ST: MOV ACC, DOWN
@3
MOV UP, LEFT
@4
@5
@6
MOV UP, DOWN
@7
@8
@9
MOV UP, DOWN
@10
@0
@1
MOV UP, DOWN
MOV UP, DOWN
MOV UP, RIGHT
@2
MOV UP, DOWN
MOV UP, DOWN
MOV UP, ACC
JGZ GZ
JLZ LZ
ADD LEFT
ADD RIGHT
JMP ST
LZ: MOV LEFT, ACC
MOV RIGHT, NIL
JMP ST
GZ: MOV RIGHT,ACC
MOV LEFT, NIL
ST: MOV ACC, DOWN
@3
MOV UP, DOWN
MOV UP, DOWN
MOV UP, LEFT
@4
@5
MOV UP, DOWN
MOV UP, RIGHT
@6
MOV UP, DOWN
MOV UP, ACC
JGZ GZ
JLZ LZ
ADD LEFT
ADD RIGHT
JMP ST
LZ: MOV LEFT, ACC
MOV RIGHT, NIL
JMP ST
GZ: MOV RIGHT,ACC
MOV LEFT, NIL
ST: MOV ACC, DOWN
MOV UP, DOWN
@7
MOV UP, DOWN
MOV UP, LEFT
@8
MOV UP, RIGHT
@9
MOV UP, ACC
JGZ GZ
JLZ LZ
ADD LEFT
ADD RIGHT
JMP ST
LZ: MOV LEFT, ACC
MOV RIGHT, NIL
JMP ST
GZ: MOV RIGHT,ACC
MOV LEFT, NIL
ST: MOV ACC, DOWN
MOV UP, DOWN
MOV UP, DOWN
@10
MOV UP, LEFT
@0
@1
MOV UP, ACC
MOV ACC, RIGHT
MOV ACC, DOWN
@2
MOV UP, ACC
MOV ACC, RIGHT
SUB LEFT
MOV ACC, DOWN
@3
MOV LEFT, DOWN
@4
@5
MOV UP, RIGHT
@6
MOV UP, ACC
JGZ LR
MOV RIGHT, DOWN
MOV LEFT, DOWN
JMP END
LR:
MOV LEFT, DOWN
MOV RIGHT, DOWN
END:
@7
MOV UP, LEFT
@8
@9
MOV UP, DOWN
MOV UP, DOWN
MOV 0, DOWN
@10
@0
@1
MOV UP, ACC
MOV ACC, RIGHT
MOV ACC, DOWN
@2
MOV LEFT, DOWN
@3
MOV RIGHT, RIGHT
@4
MOV UP, ACC
JNZ SEQ
SWP
MOV ACC, DOWN
MOV 0, ACC
JRO 4
SEQ:
MOV ACC, LEFT
SWP
ADD LEFT
SWP
@5
MOV UP, ACC
JNZ SEQ
SWP
MOV ACC, DOWN
MOV 0, ACC
JRO 3
SEQ:
SWP
ADD 1
SWP
@6
@7
@8
MOV UP, DOWN
@9
MOV UP, DOWN
@10
@0
@1
MOV UP, ACC
MOV ACC, RIGHT
MOV ACC, RIGHT
@2
SUB LEFT
MOV ACC, DOWN
MOV LEFT, ACC
@3
@4
@5
@6
MOV UP, ACC
JGZ GZ
NEG
GZ:
MOV ACC, DOWN
@7
@8
@9
MOV UP, ACC
SUB 10
JLZ G10
MOV 1, DOWN
JMP END
G10:
MOV 0, DOWN
END:
@10
@0
MOV UP, ACC
JEZ ELSE1
SWP
JNZ ELSE2
MOV 1, DOWN
JMP EXIT
ELSE1: SWP
ELSE2: MOV 0, DOWN
EXIT:
@1
MOV UP, ACC
JEZ ELSE1
SWP
JNZ ELSE2
MOV 2, DOWN
JMP EXIT
ELSE1: SWP
ELSE2: MOV 0, DOWN
EXIT:
@2
MOV UP, ACC
JEZ ELSE1
SWP
JNZ ELSE2
MOV 3, DOWN
JMP EXIT
ELSE1: SWP
ELSE2: MOV 0, DOWN
EXIT:
@3
MOV UP, ACC
JEZ ELSE1
SWP
JNZ ELSE2
MOV 4, DOWN
JMP EXIT
ELSE1: SWP
ELSE2: MOV 0, DOWN
EXIT:
@4
MOV UP, RIGHT
@5
MOV UP, ACC
ADD LEFT
MOV ACC, RIGHT
@6
MOV UP, ACC
ADD LEFT
ADD RIGHT
MOV ACC, DOWN
@7
MOV UP, LEFT
@8
@9
MOV UP,DOWN
@10
@0
@1
MOV UP, ACC
JNZ NZERO
MOV 1, RIGHT
JMP END
NZERO: MOV 0,RIGHT
END: MOV ACC, DOWN
@2
MOV LEFT, ACC
MOV LEFT, ACC
MOV 0, ACC
START:
MOV LEFT, DOWN
JMP START
@3
@4
MOV UP, ACC
JNZ NZERO
MOV 1, RIGHT
JMP END
NZERO: MOV 0,RIGHT
END: MOV ACC, DOWN
@5
MOV LEFT, ACC
MOV 0, ACC
START: MOV UP, ACC
ADD LEFT
MOV ACC, DOWN
MOV 0, ACC
JMP START
@6
@7
@8
MOV UP, ACC
JNZ NZERO
MOV 1, RIGHT
JMP END
NZERO: MOV 0,RIGHT
END:
@9
MOV 0, DOWN
MOV 0, DOWN
START:
MOV LEFT, ACC
ADD UP
SUB 3
JNZ ELSE
MOV 1, DOWN
JMP END
ELSE:
MOV 0, DOWN
END:
MOV 0, ACC
JMP START
@10
@0
MOV RIGHT, ACC
SAV
AF:MOV RIGHT, ACC
JEZ EZ
SWP
SAV
SUB RIGHT
JLZ LZ # R<A
MOV RIGHT, ACC
JMP AF
LZ: SWP # R>A
SAV
MOV RIGHT, NIL
JMP AF
EZ: MOV ACC, DOWN
@1
@2
MOV LEFT, NIL
MOV LEFT, NIL
@3
@4
MOV UP, ACC
JEZ EZ
MOV ACC, RIGHT
EZ:
@5
MOV LEFT, DOWN
@6
MOV LEFT, NIL
MOV LEFT, NIL
@7
@8
MOV UP, DOWN
@9
@10
@0
ST:MOV DOWN, ACC
SAV
SUB DOWN
JGZ GZ # D1 > D2
SWP
MOV DOWN, NIL
MOV ACC, DOWN
JMP ST
GZ:
MOV DOWN, ACC
MOV ACC, DOWN
@1
MOV UP, DOWN
@2
ST:MOV DOWN, ACC
SAV
SUB DOWN
JLZ GZ # D1 < D2
SWP
MOV DOWN, NIL
MOV ACC, DOWN
JMP ST
GZ:
MOV DOWN, ACC
MOV ACC, DOWN
@3
@4
JNZ AF
AZ: SWP
MOV ACC, DOWN
MOV RIGHT, ACC
SAV
AF:MOV RIGHT, ACC
JEZ AZ
MOV ACC, UP
SWP
MOV ACC, UP
MOV ACC, UP
MOV UP, ACC
SAV
@5
MOV UP, ACC
MOV ACC, LEFT
MOV ACC, RIGHT
@6
JNZ AF
AZ: SWP
MOV ACC, DOWN
MOV LEFT, ACC
SAV
AF:MOV LEFT, ACC
JEZ AZ
MOV ACC, UP
SWP
MOV ACC, UP
MOV ACC, UP
MOV UP, ACC
SAV
@7
ST: MOV UP, ACC
JEZ ST
MOV ACC, RIGHT
@8
MOV LEFT, DOWN
@9
ST: MOV UP, ACC
JEZ ST
MOV ACC, DOWN
@10
@0
ST: MOV RIGHT, ACC
JEZ POP
SAV
JMP ST
POP:
SWP
MOV ACC, RIGHT
@1
EMP: MOV UP, ACC
JEZ POP
MOV ACC, LEFT
MOV UP, ACC
JEZ POP
SAV
FULL: MOV UP, ACC
JEZ POP
MOV ACC, DOWN
JMP FULL
POP: MOV ACC, DOWN
MOV ACC, LEFT
SWP
MOV ACC, DOWN
MOV LEFT, DOWN
@2
@3
ST: MOV RIGHT, ACC
JEZ POP
SAV
JMP ST
POP:
SWP
MOV ACC, RIGHT
@4
EMP: MOV UP, ACC
JEZ POP
MOV ACC, LEFT
FULL: MOV UP, ACC
JEZ POP
MOV ACC, RIGHT
JMP FULL
POP: MOV ACC,RIGHT
MOV ACC, LEFT
MOV LEFT, RIGHT
MOV UP, RIGHT
MOV UP, RIGHT
@5
EMP: MOV LEFT, ACC
JEZ POP
MOV ACC, RIGHT
FULL: MOV LEFT,ACC
JEZ POP
MOV ACC, DOWN
JMP FULL
POP: MOV ACC,DOWN
MOV ACC, RIGHT
MOV RIGHT, DOWN
MOV LEFT, DOWN
MOV LEFT, DOWN
MOV LEFT, DOWN
MOV 0, DOWN
@6
ST: MOV LEFT, ACC
JEZ POP
SAV
JMP ST
POP:
SWP
MOV ACC, LEFT
@7
EMP: MOV UP, ACC
JEZ POP
SAV
POP:
@8
@0
ST: MOV 6,ACC
SAV
R: SWP
JEZ EZ # SAVE NEXT
MOV RIGHT, ACC
JEZ ST
MOV ACC, DOWN
SUB 1
EZ: # SAV SELF
MOV RIGHT, ACC
SAV # WAIT POP
@1
MOV UP, ACC
MOV ACC, LEFT
@2
@3
@4
@5
@6
@7
@8
@0
@1
ST: MOV UP, ACC
MOV ACC, DOWN
JEZ EZ
MOV ACC, RIGHT
JMP ST
EZ:
MOV DOWN, NIL
@2
@3
@4
MOV 0, ACC
SAV
NZ: MOV UP, ACC
SWP
ADD 1
SWP
JNZ NZ
SWP
MOV ACC, RIGHT
MOV RIGHT, UP
@5
MOV LEFT, ACC
SUB 1
JEZ END
POP: MOV UP, DOWN
SUB 1
JNZ POP
END: MOV ACC, LEFT
MOV ACC, DOWN
@6
@7
MOV UP, DOWN
@8
@0
@1
MOV UP, ACC
MOV ACC, RIGHT
MOV ACC, DOWN
@2
MOV UP, ACC
SAV
MOV LEFT, ACC
LP: JEZ EZ
SUB 1
SWP
MOV ACC, DOWN
SWP
JMP LP
EZ:
@3
@4
MOV UP, RIGHT
@5
MOV LEFT, ACC
JEZ EZ
SUB 1
SWP
MOV UP, ACC
SWP
LP: JEZ EZ
SUB 1
SWP
ADD UP
SWP
JMP LP
EZ: SWP
MOV ACC, DOWN
@6
@7
MOV UP, DOWN
@8
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment