mirror of
https://github.com/captn3m0/nand2tetris.git
synced 2024-09-28 13:23:01 +00:00
180 lines
2.5 KiB
Plaintext
180 lines
2.5 KiB
Plaintext
|
function SquareGame.new 0
|
||
|
push constant 2
|
||
|
call Memory.alloc 1
|
||
|
pop pointer 0
|
||
|
push constant 0
|
||
|
push constant 0
|
||
|
push constant 30
|
||
|
call Square.new 3
|
||
|
pop this 0
|
||
|
push constant 0
|
||
|
pop this 1
|
||
|
push pointer 0
|
||
|
return
|
||
|
function SquareGame.dispose 0
|
||
|
push argument 0
|
||
|
pop pointer 0
|
||
|
push this 0
|
||
|
call Square.dispose 1
|
||
|
pop temp 0
|
||
|
push pointer 0
|
||
|
call Memory.deAlloc 1
|
||
|
pop temp 0
|
||
|
push constant 0
|
||
|
return
|
||
|
function SquareGame.moveSquare 0
|
||
|
push argument 0
|
||
|
pop pointer 0
|
||
|
push this 1
|
||
|
push constant 1
|
||
|
eq
|
||
|
if-goto IF_TRUE0
|
||
|
goto IF_FALSE0
|
||
|
label IF_TRUE0
|
||
|
push this 0
|
||
|
call Square.moveUp 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE0
|
||
|
push this 1
|
||
|
push constant 2
|
||
|
eq
|
||
|
if-goto IF_TRUE1
|
||
|
goto IF_FALSE1
|
||
|
label IF_TRUE1
|
||
|
push this 0
|
||
|
call Square.moveDown 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE1
|
||
|
push this 1
|
||
|
push constant 3
|
||
|
eq
|
||
|
if-goto IF_TRUE2
|
||
|
goto IF_FALSE2
|
||
|
label IF_TRUE2
|
||
|
push this 0
|
||
|
call Square.moveLeft 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE2
|
||
|
push this 1
|
||
|
push constant 4
|
||
|
eq
|
||
|
if-goto IF_TRUE3
|
||
|
goto IF_FALSE3
|
||
|
label IF_TRUE3
|
||
|
push this 0
|
||
|
call Square.moveRight 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE3
|
||
|
push constant 5
|
||
|
call Sys.wait 1
|
||
|
pop temp 0
|
||
|
push constant 0
|
||
|
return
|
||
|
function SquareGame.run 2
|
||
|
push argument 0
|
||
|
pop pointer 0
|
||
|
push constant 0
|
||
|
pop local 1
|
||
|
label WHILE_EXP0
|
||
|
push local 1
|
||
|
not
|
||
|
not
|
||
|
if-goto WHILE_END0
|
||
|
label WHILE_EXP1
|
||
|
push local 0
|
||
|
push constant 0
|
||
|
eq
|
||
|
not
|
||
|
if-goto WHILE_END1
|
||
|
call Keyboard.keyPressed 0
|
||
|
pop local 0
|
||
|
push pointer 0
|
||
|
call SquareGame.moveSquare 1
|
||
|
pop temp 0
|
||
|
goto WHILE_EXP1
|
||
|
label WHILE_END1
|
||
|
push local 0
|
||
|
push constant 81
|
||
|
eq
|
||
|
if-goto IF_TRUE0
|
||
|
goto IF_FALSE0
|
||
|
label IF_TRUE0
|
||
|
push constant 0
|
||
|
not
|
||
|
pop local 1
|
||
|
label IF_FALSE0
|
||
|
push local 0
|
||
|
push constant 90
|
||
|
eq
|
||
|
if-goto IF_TRUE1
|
||
|
goto IF_FALSE1
|
||
|
label IF_TRUE1
|
||
|
push this 0
|
||
|
call Square.decSize 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE1
|
||
|
push local 0
|
||
|
push constant 88
|
||
|
eq
|
||
|
if-goto IF_TRUE2
|
||
|
goto IF_FALSE2
|
||
|
label IF_TRUE2
|
||
|
push this 0
|
||
|
call Square.incSize 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE2
|
||
|
push local 0
|
||
|
push constant 131
|
||
|
eq
|
||
|
if-goto IF_TRUE3
|
||
|
goto IF_FALSE3
|
||
|
label IF_TRUE3
|
||
|
push constant 1
|
||
|
pop this 1
|
||
|
label IF_FALSE3
|
||
|
push local 0
|
||
|
push constant 133
|
||
|
eq
|
||
|
if-goto IF_TRUE4
|
||
|
goto IF_FALSE4
|
||
|
label IF_TRUE4
|
||
|
push constant 2
|
||
|
pop this 1
|
||
|
label IF_FALSE4
|
||
|
push local 0
|
||
|
push constant 130
|
||
|
eq
|
||
|
if-goto IF_TRUE5
|
||
|
goto IF_FALSE5
|
||
|
label IF_TRUE5
|
||
|
push constant 3
|
||
|
pop this 1
|
||
|
label IF_FALSE5
|
||
|
push local 0
|
||
|
push constant 132
|
||
|
eq
|
||
|
if-goto IF_TRUE6
|
||
|
goto IF_FALSE6
|
||
|
label IF_TRUE6
|
||
|
push constant 4
|
||
|
pop this 1
|
||
|
label IF_FALSE6
|
||
|
label WHILE_EXP2
|
||
|
push local 0
|
||
|
push constant 0
|
||
|
eq
|
||
|
not
|
||
|
not
|
||
|
if-goto WHILE_END2
|
||
|
call Keyboard.keyPressed 0
|
||
|
pop local 0
|
||
|
push pointer 0
|
||
|
call SquareGame.moveSquare 1
|
||
|
pop temp 0
|
||
|
goto WHILE_EXP2
|
||
|
label WHILE_END2
|
||
|
goto WHILE_EXP0
|
||
|
label WHILE_END0
|
||
|
push constant 0
|
||
|
return
|