mirror of
https://github.com/captn3m0/nand2tetris.git
synced 2024-09-28 13:23:01 +00:00
322 lines
5.3 KiB
Plaintext
322 lines
5.3 KiB
Plaintext
|
function Main.main 6
|
||
|
push constant 0
|
||
|
pop local 4
|
||
|
call Board.new 0
|
||
|
pop local 2
|
||
|
call Draw.Grid 0
|
||
|
pop temp 0
|
||
|
label WHILE_EXP0
|
||
|
push local 4
|
||
|
not
|
||
|
not
|
||
|
if-goto WHILE_END0
|
||
|
label WHILE_EXP1
|
||
|
push local 3
|
||
|
push constant 0
|
||
|
eq
|
||
|
not
|
||
|
if-goto WHILE_END1
|
||
|
call Keyboard.keyPressed 0
|
||
|
pop local 3
|
||
|
push constant 5
|
||
|
call Sys.wait 1
|
||
|
pop temp 0
|
||
|
goto WHILE_EXP1
|
||
|
label WHILE_END1
|
||
|
push constant 1
|
||
|
neg
|
||
|
pop local 1
|
||
|
push local 3
|
||
|
push constant 81
|
||
|
eq
|
||
|
if-goto IF_TRUE0
|
||
|
goto IF_FALSE0
|
||
|
label IF_TRUE0
|
||
|
push constant 0
|
||
|
not
|
||
|
pop local 4
|
||
|
label IF_FALSE0
|
||
|
push local 3
|
||
|
push constant 49
|
||
|
eq
|
||
|
if-goto IF_TRUE1
|
||
|
goto IF_FALSE1
|
||
|
label IF_TRUE1
|
||
|
push constant 0
|
||
|
pop local 1
|
||
|
label IF_FALSE1
|
||
|
push local 3
|
||
|
push constant 50
|
||
|
eq
|
||
|
if-goto IF_TRUE2
|
||
|
goto IF_FALSE2
|
||
|
label IF_TRUE2
|
||
|
push constant 1
|
||
|
pop local 1
|
||
|
label IF_FALSE2
|
||
|
push local 3
|
||
|
push constant 51
|
||
|
eq
|
||
|
if-goto IF_TRUE3
|
||
|
goto IF_FALSE3
|
||
|
label IF_TRUE3
|
||
|
push constant 2
|
||
|
pop local 1
|
||
|
label IF_FALSE3
|
||
|
push local 3
|
||
|
push constant 52
|
||
|
eq
|
||
|
if-goto IF_TRUE4
|
||
|
goto IF_FALSE4
|
||
|
label IF_TRUE4
|
||
|
push constant 3
|
||
|
pop local 1
|
||
|
label IF_FALSE4
|
||
|
push local 3
|
||
|
push constant 53
|
||
|
eq
|
||
|
if-goto IF_TRUE5
|
||
|
goto IF_FALSE5
|
||
|
label IF_TRUE5
|
||
|
push constant 4
|
||
|
pop local 1
|
||
|
label IF_FALSE5
|
||
|
push local 3
|
||
|
push constant 54
|
||
|
eq
|
||
|
if-goto IF_TRUE6
|
||
|
goto IF_FALSE6
|
||
|
label IF_TRUE6
|
||
|
push constant 5
|
||
|
pop local 1
|
||
|
label IF_FALSE6
|
||
|
push local 3
|
||
|
push constant 55
|
||
|
eq
|
||
|
if-goto IF_TRUE7
|
||
|
goto IF_FALSE7
|
||
|
label IF_TRUE7
|
||
|
push constant 6
|
||
|
pop local 1
|
||
|
label IF_FALSE7
|
||
|
push local 3
|
||
|
push constant 56
|
||
|
eq
|
||
|
if-goto IF_TRUE8
|
||
|
goto IF_FALSE8
|
||
|
label IF_TRUE8
|
||
|
push constant 7
|
||
|
pop local 1
|
||
|
label IF_FALSE8
|
||
|
push local 3
|
||
|
push constant 57
|
||
|
eq
|
||
|
if-goto IF_TRUE9
|
||
|
goto IF_FALSE9
|
||
|
label IF_TRUE9
|
||
|
push constant 8
|
||
|
pop local 1
|
||
|
label IF_FALSE9
|
||
|
push local 3
|
||
|
push constant 48
|
||
|
gt
|
||
|
push local 3
|
||
|
push constant 58
|
||
|
lt
|
||
|
and
|
||
|
if-goto IF_TRUE10
|
||
|
goto IF_FALSE10
|
||
|
label IF_TRUE10
|
||
|
push local 1
|
||
|
push constant 3
|
||
|
push local 1
|
||
|
push constant 3
|
||
|
call Math.divide 2
|
||
|
call Math.multiply 2
|
||
|
sub
|
||
|
pop local 0
|
||
|
push local 2
|
||
|
push local 1
|
||
|
push constant 3
|
||
|
call Math.divide 2
|
||
|
push local 0
|
||
|
call Board.play 3
|
||
|
pop local 5
|
||
|
push local 5
|
||
|
if-goto IF_TRUE11
|
||
|
goto IF_FALSE11
|
||
|
label IF_TRUE11
|
||
|
call Screen.clearScreen 0
|
||
|
pop temp 0
|
||
|
push local 2
|
||
|
call Board.winner 1
|
||
|
pop local 0
|
||
|
push local 0
|
||
|
push constant 1
|
||
|
eq
|
||
|
if-goto IF_TRUE12
|
||
|
goto IF_FALSE12
|
||
|
label IF_TRUE12
|
||
|
push constant 24
|
||
|
call String.new 1
|
||
|
push constant 67
|
||
|
call String.appendChar 2
|
||
|
push constant 111
|
||
|
call String.appendChar 2
|
||
|
push constant 110
|
||
|
call String.appendChar 2
|
||
|
push constant 103
|
||
|
call String.appendChar 2
|
||
|
push constant 114
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 116
|
||
|
call String.appendChar 2
|
||
|
push constant 117
|
||
|
call String.appendChar 2
|
||
|
push constant 108
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 116
|
||
|
call String.appendChar 2
|
||
|
push constant 105
|
||
|
call String.appendChar 2
|
||
|
push constant 111
|
||
|
call String.appendChar 2
|
||
|
push constant 110
|
||
|
call String.appendChar 2
|
||
|
push constant 115
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 80
|
||
|
call String.appendChar 2
|
||
|
push constant 108
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 121
|
||
|
call String.appendChar 2
|
||
|
push constant 101
|
||
|
call String.appendChar 2
|
||
|
push constant 114
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 49
|
||
|
call String.appendChar 2
|
||
|
call Output.printString 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE12
|
||
|
push local 0
|
||
|
push constant 2
|
||
|
eq
|
||
|
if-goto IF_TRUE13
|
||
|
goto IF_FALSE13
|
||
|
label IF_TRUE13
|
||
|
push constant 24
|
||
|
call String.new 1
|
||
|
push constant 67
|
||
|
call String.appendChar 2
|
||
|
push constant 111
|
||
|
call String.appendChar 2
|
||
|
push constant 110
|
||
|
call String.appendChar 2
|
||
|
push constant 103
|
||
|
call String.appendChar 2
|
||
|
push constant 114
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 116
|
||
|
call String.appendChar 2
|
||
|
push constant 117
|
||
|
call String.appendChar 2
|
||
|
push constant 108
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 116
|
||
|
call String.appendChar 2
|
||
|
push constant 105
|
||
|
call String.appendChar 2
|
||
|
push constant 111
|
||
|
call String.appendChar 2
|
||
|
push constant 110
|
||
|
call String.appendChar 2
|
||
|
push constant 115
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 80
|
||
|
call String.appendChar 2
|
||
|
push constant 108
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 121
|
||
|
call String.appendChar 2
|
||
|
push constant 101
|
||
|
call String.appendChar 2
|
||
|
push constant 114
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 50
|
||
|
call String.appendChar 2
|
||
|
call Output.printString 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE13
|
||
|
push local 0
|
||
|
push constant 0
|
||
|
eq
|
||
|
if-goto IF_TRUE14
|
||
|
goto IF_FALSE14
|
||
|
label IF_TRUE14
|
||
|
push constant 14
|
||
|
call String.new 1
|
||
|
push constant 73
|
||
|
call String.appendChar 2
|
||
|
push constant 116
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 119
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 115
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 32
|
||
|
call String.appendChar 2
|
||
|
push constant 100
|
||
|
call String.appendChar 2
|
||
|
push constant 114
|
||
|
call String.appendChar 2
|
||
|
push constant 97
|
||
|
call String.appendChar 2
|
||
|
push constant 119
|
||
|
call String.appendChar 2
|
||
|
push constant 33
|
||
|
call String.appendChar 2
|
||
|
call Output.printString 1
|
||
|
pop temp 0
|
||
|
label IF_FALSE14
|
||
|
push constant 0
|
||
|
not
|
||
|
pop local 4
|
||
|
label IF_FALSE11
|
||
|
push constant 0
|
||
|
pop local 3
|
||
|
label IF_FALSE10
|
||
|
goto WHILE_EXP0
|
||
|
label WHILE_END0
|
||
|
push constant 0
|
||
|
return
|