aboutsummaryrefslogtreecommitdiff
path: root/projects/09/HelloWorld
diff options
context:
space:
mode:
authorYuchen Pei <me@ypei.me>2018-01-08 12:35:44 +0100
committerYuchen Pei <me@ypei.me>2018-01-08 12:35:44 +0100
commit7e4cd1bac23f7cc02d0f14bcc6ef00357377fc2a (patch)
tree4d843698e8763dcbe0bdefb22712432cd5273605 /projects/09/HelloWorld
parent29a1931f2ee4e72ddd240096bf6fe9a04668f131 (diff)
checkpoint finished first draft of Board.jack
Diffstat (limited to 'projects/09/HelloWorld')
-rw-r--r--projects/09/HelloWorld/HelloWorld.asm923
-rw-r--r--projects/09/HelloWorld/Main.vm33
2 files changed, 956 insertions, 0 deletions
diff --git a/projects/09/HelloWorld/HelloWorld.asm b/projects/09/HelloWorld/HelloWorld.asm
new file mode 100644
index 0000000..550a010
--- /dev/null
+++ b/projects/09/HelloWorld/HelloWorld.asm
@@ -0,0 +1,923 @@
+@256
+D=A
+@SP
+M=D
+@RET0
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@0
+D=D-A
+@ARG
+M=D
+@Sys.init
+0;JMP
+(RET0)
+(Main.main)
+@12
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET2
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@1
+D=D-A
+@ARG
+M=D
+@String.new
+0;JMP
+(RET2)
+@72
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET4
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET4)
+@101
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET6
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET6)
+@108
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET8
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET8)
+@108
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET10
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET10)
+@111
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET12
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET12)
+@32
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET14
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET14)
+@119
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET16
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET16)
+@111
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET18
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET18)
+@114
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET20
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET20)
+@108
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET22
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET22)
+@100
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET24
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET24)
+@33
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@RET26
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@2
+D=D-A
+@ARG
+M=D
+@String.appendChar
+0;JMP
+(RET26)
+@RET27
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@1
+D=D-A
+@ARG
+M=D
+@Output.printString
+0;JMP
+(RET27)
+@SP
+AM=M-1
+D=M
+@5
+M=D
+@RET29
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@ARG
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THIS
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@THAT
+D=M
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@SP
+D=M
+@LCL
+M=D
+@5
+D=D-A
+@0
+D=D-A
+@ARG
+M=D
+@Output.println
+0;JMP
+(RET29)
+@SP
+AM=M-1
+D=M
+@5
+M=D
+@0
+D=A
+@SP
+A=M
+M=D
+@SP
+M=M+1
+@LCL
+D=M
+@R13
+M=D
+@5
+A=D-A
+D=M
+@R14
+M=D
+@SP
+AM=M-1
+D=M
+@ARG
+A=M
+M=D
+@ARG
+D=M+1
+@SP
+M=D
+@R13
+AM=M-1
+D=M
+@THAT
+M=D
+@R13
+AM=M-1
+D=M
+@THIS
+M=D
+@R13
+AM=M-1
+D=M
+@ARG
+M=D
+@R13
+AM=M-1
+D=M
+@LCL
+M=D
+@R14
+A=M
+0;JMP
diff --git a/projects/09/HelloWorld/Main.vm b/projects/09/HelloWorld/Main.vm
new file mode 100644
index 0000000..32eb03f
--- /dev/null
+++ b/projects/09/HelloWorld/Main.vm
@@ -0,0 +1,33 @@
+function Main.main 0
+push constant 12
+call String.new 1
+push constant 72
+call String.appendChar 2
+push constant 101
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 32
+call String.appendChar 2
+push constant 119
+call String.appendChar 2
+push constant 111
+call String.appendChar 2
+push constant 114
+call String.appendChar 2
+push constant 108
+call String.appendChar 2
+push constant 100
+call String.appendChar 2
+push constant 33
+call String.appendChar 2
+call Output.printString 1
+pop temp 0
+call Output.println 0
+pop temp 0
+push constant 0
+return