Last active
December 11, 2015 02:58
-
-
Save saml/4533856 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
var format = /^(.+)<a href=.+<span>(.+)<\/span>$/; | |
var scores = {}; | |
var rates = {}; | |
var secs = 10; | |
jQuery('body').append('<div id="saml-rates"></div>'); | |
var output = jQuery('#saml-rates'); | |
var getProcessor = function(el) { | |
return function() { | |
var html = el.innerHTML; | |
var m = format.exec(html); | |
var name = m[1]; | |
var score = parseInt(m[2]); | |
if (scores[name]) { | |
rates[name] = (score - scores[name]) / 1.0; | |
} else { | |
scores[name] = score; | |
} | |
}; | |
}; | |
var p = window.setInterval(function() { | |
jQuery('#grid_scores li').each(function(i, el) { | |
getProcessor(el)(); | |
}); | |
output.empty(); | |
var arr = []; | |
for (var name in rates) { | |
arr.push([name, rates[name]]); | |
} | |
arr.sort(function(a, b) { return a[1] - b[1]; }); | |
var n = arr.length; | |
for (var i = 0; i < n; i++) { | |
var kv = arr[i]; | |
output.append(kv[0] + ': ' + kv[1] + '<br>'); | |
} | |
}, secs * 1000); | |
}()); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int n; | |
int s; | |
int w; | |
int e; | |
int top; | |
int left; | |
int right; | |
int top_left; | |
int top_right; | |
int bottom; | |
int bottom_left; | |
int bottom_right; | |
int orientation[4]; | |
int cells[100]; | |
int i; | |
int dest_x; | |
int dest_y; | |
int dest_direction; | |
int curr_x; | |
int curr_y; | |
int facing; | |
int follow_rock; | |
int follow_rock_started_towards; | |
int turn_to; | |
int turn_to_after; | |
int immediate() { | |
n = ffi(@look, @north); | |
w = ffi(@look, @west); | |
s = ffi(@look, @south); | |
e = ffi(@look, @east); | |
if (n == @cell_resource) { | |
dest_x = 0; | |
dest_y = 0; | |
return ffi(@pull, @north); | |
} | |
if (w == @cell_resource) { | |
dest_x = 0; | |
dest_y = 0; | |
return ffi(@pull, @west); | |
} | |
if (s == @cell_resource) { | |
dest_x = 0; | |
dest_y = 0; | |
return ffi(@pull, @south); | |
} | |
if (e == @cell_resource) { | |
dest_x = 0; | |
dest_y = 0; | |
return ffi(@pull, @east); | |
} | |
if (n == @cell_robot) { | |
return ffi(@punch, @north); | |
} | |
if (w == @cell_robot) { | |
return ffi(@punch, @west); | |
} | |
if (s == @cell_robot) { | |
return ffi(@punch, @south); | |
} | |
if (e == @cell_robot) { | |
return ffi(@punch, @east); | |
} | |
set_sail(set_dest()); | |
} | |
int orient() { | |
if (facing == @north) { | |
top = cells[3]; | |
left = cells[1]; | |
bottom = cells[5]; | |
right = cells[7]; | |
top_left = cells[0]; | |
top_right = cells[6]; | |
bottom_left = cells[2]; | |
bottom_rigtht = cells[8]; | |
orientation[0] = @north; | |
orientation[1] = @west; | |
orientation[2] = @south; | |
orientation[3] = @east; | |
return; | |
} | |
if (facing == @south) { | |
top = cells[5]; | |
left = cells[7]; | |
bottom = cells[3]; | |
right = cells[1]; | |
top_left = cells[8]; | |
top_right = cells[2]; | |
bottom_left = cells[6]; | |
bottom_rigtht = cells[0]; | |
orientation[0] = @south; | |
orientation[1] = @east; | |
orientation[2] = @north; | |
orientation[3] = @west; | |
return; | |
} | |
if (facing == @west) { | |
top = cells[1]; | |
left = cells[5]; | |
bottom = cells[7]; | |
right = cells[3]; | |
top_left = cells[2]; | |
top_right = cells[0]; | |
bottom_left = cells[8]; | |
bottom_rigtht = cells[6]; | |
orientation[0] = @west; | |
orientation[1] = @south; | |
orientation[2] = @east; | |
orientation[3] = @north; | |
return; | |
} | |
//facing east | |
top = cells[7]; | |
left = cells[3]; | |
bottom = cells[1]; | |
right = cells[5]; | |
top_left = cells[6]; | |
top_right = cells[8]; | |
bottom_left = cells[0]; | |
bottom_rigtht = cells[2]; | |
orientation[0] = @east; | |
orientation[1] = @north; | |
orientation[2] = @west; | |
orientation[3] = @south; | |
} | |
int opposite_of(direction) { | |
if (direction == @north) { | |
return @south; | |
} | |
if (direction == @south) { | |
return @north; | |
} | |
if (direction == @west) { | |
return @east; | |
} | |
return @west; | |
} | |
int find_dest() { | |
start = -1; | |
end = 2; | |
i = 0; | |
found = 0; | |
while (i < 100) { | |
x = start; | |
while (x < end) { | |
y = start; | |
while (y < end) { | |
cells[i] = ffi(@scan, x, y); | |
if (cells[i] == @cell_resource) { | |
dest_x = x; | |
dest_y = y; | |
if (dest_x < 0) { | |
dest_direction = @west; | |
} else if (dest_x > 0) { | |
dest_direction = @east; | |
} else if (dest_y < 0) { | |
dest_direction = @north; | |
} else { | |
dest_direction = @south; | |
} | |
curr_x = 0; | |
curr_y = 0; | |
found = 1; | |
} | |
y = y + 1; | |
i = i + 1; | |
if (found) { | |
if (i > 8) { | |
return 1; | |
} | |
} | |
} | |
x = x + 1; | |
} | |
start = start - 1; | |
end = end + 1; | |
} | |
return 0; | |
} | |
int set_dest() { | |
if (dest_x == 0) { | |
if (dest_y == 0) { | |
return find_dest(); | |
} | |
} | |
cells[0] = ffi(@scan, -1, -1); | |
cells[1] = w; | |
cells[2] = ffi(@scan, -1, 1); | |
cells[3] = n; | |
cells[5] = s; | |
cells[6] = ffi(@scan, 1, -1); | |
cells[7] = e; | |
cells[8] = ffi(@scan, 1, 1); | |
i = 8; | |
return 1; | |
} | |
int do_move(direction) { | |
facing = direction; | |
if (dest_x != 0) { | |
if (dest_y != 0) { | |
//has destination. | |
if (direction == @north) { | |
curr_y = curr_y - 1; | |
} else if (direction == @south) { | |
curr_y = curr_y + 1; | |
} else if (direction == @east) { | |
curr_x = curr_x + 1; | |
} else { | |
curr_x = curr_x - 1; | |
} | |
} | |
} | |
return ffi(@move, direction); | |
} | |
int first_empty(a, b, c) { | |
if (a == @cell_empty) { | |
return a; | |
} | |
if (b == @cell_empty) { | |
return b; | |
} | |
return c; | |
} | |
int calc_direction() { | |
if (follow_rock) { | |
orient(); | |
if (right == @cell_empty) { | |
if (orientation[3] == opposite_of(follow_rock_started_towards)) { | |
follow_rock = 0; | |
} | |
return orientation[3];//right | |
} | |
if (top == @cell_empty) { | |
if (orientation[0] == opposite_of(follow_rock_started_towards)) { | |
follow_rock = 0; | |
} | |
return orientation[0];//top | |
} | |
if (left == @cell_empty) { | |
if (orientation[1] == opposite_of(follow_rock_started_towards)) { | |
follow_rock = 0; | |
} | |
return orientation[1];//left | |
} | |
if (orientation[2] == opposite_of(follow_rock_started_towards)) { | |
follow_rock = 0; | |
} | |
return orientation[2];//bottom | |
} | |
if (curr_x < dest_x) { | |
if (e == @cell_empty) { | |
return @east; | |
} | |
follow_rock = 1; | |
follow_rock_started_towards = @east; | |
return first_empty(n, s, w); | |
} | |
if (curr_x > dest_x) { | |
if (w == @cell_empty) { | |
return @west; | |
} | |
follow_rock = 1; | |
follow_rock_started_towards = @west; | |
return first_empty(n, s, e); | |
} | |
if (curr_y < dest_y) { | |
if (s == @cell_empty) { | |
return @south; | |
} | |
follow_rock = 1; | |
follow_rock_started_towards = @south; | |
return first_empty(w, e, n); | |
} | |
if (curr_y > dest_y) { | |
if (n == @cell_empty) { | |
return @north; | |
} | |
follow_rock = 1; | |
follow_rock_started_towards = @north; | |
return first_empty(w, e, s); | |
} | |
//it should not come here. | |
return first_empty(n, w, s, e); | |
} | |
int set_sail(no_random) { | |
tmp = 0; | |
if (no_random == 0) { | |
tmp = rand(4); | |
if (tmp == 0) { | |
tmp = @east; | |
} | |
return ffi(@move, tmp); | |
} | |
do_move(calc_direction()); | |
} | |
int main() { | |
facing = @south; | |
follow_rock = 0; | |
dest_x = 0; | |
dest_y = 0; | |
curr_x = 0; | |
curr_y = 0; | |
while (1) { | |
immediate(); | |
} | |
} | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
PUSH 0 | |
DUPN << 127 | |
CALL << @main | |
END | |
@immediate | |
PUSH @look | |
PUSH @north | |
CALLFF << 2 | |
POKE << 0 | |
PUSH @look | |
PUSH @west | |
CALLFF << 2 | |
POKE << 2 | |
PUSH @look | |
PUSH @south | |
CALLFF << 2 | |
POKE << 1 | |
PUSH @look | |
PUSH @east | |
CALLFF << 2 | |
POKE << 3 | |
PEEK << 0 | |
PUSH @cell_resource | |
EQUAL | |
IFFGOTO << @L0 | |
PUSH 0 | |
POKE << 117 | |
PUSH 0 | |
POKE << 118 | |
PUSH @pull | |
PUSH @north | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L0 | |
@L1 | |
PEEK << 2 | |
PUSH @cell_resource | |
EQUAL | |
IFFGOTO << @L2 | |
PUSH 0 | |
POKE << 117 | |
PUSH 0 | |
POKE << 118 | |
PUSH @pull | |
PUSH @west | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L2 | |
@L3 | |
PEEK << 1 | |
PUSH @cell_resource | |
EQUAL | |
IFFGOTO << @L4 | |
PUSH 0 | |
POKE << 117 | |
PUSH 0 | |
POKE << 118 | |
PUSH @pull | |
PUSH @south | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L4 | |
@L5 | |
PEEK << 3 | |
PUSH @cell_resource | |
EQUAL | |
IFFGOTO << @L6 | |
PUSH 0 | |
POKE << 117 | |
PUSH 0 | |
POKE << 118 | |
PUSH @pull | |
PUSH @east | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L6 | |
@L7 | |
PEEK << 0 | |
PUSH @cell_robot | |
EQUAL | |
IFFGOTO << @L8 | |
PUSH @punch | |
PUSH @north | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L8 | |
@L9 | |
PEEK << 2 | |
PUSH @cell_robot | |
EQUAL | |
IFFGOTO << @L10 | |
PUSH @punch | |
PUSH @west | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L10 | |
@L11 | |
PEEK << 1 | |
PUSH @cell_robot | |
EQUAL | |
IFFGOTO << @L12 | |
PUSH @punch | |
PUSH @south | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L12 | |
@L13 | |
PEEK << 3 | |
PUSH @cell_robot | |
EQUAL | |
IFFGOTO << @L14 | |
PUSH @punch | |
PUSH @east | |
CALLFF << 2 | |
STORE retval | |
PUSH retval | |
RETURN | |
@L14 | |
@L15 | |
CALL << @set_dest | |
CALL << @set_sail | |
POP | |
PUSH 0 | |
RETURN | |
@orient | |
PEEK << 122 | |
PUSH @north | |
EQUAL | |
IFFGOTO << @L16 | |
PUSH 3 | |
ADD << 16 | |
PEEK | |
POKE << 4 | |
PUSH 1 | |
ADD << 16 | |
PEEK | |
POKE << 5 | |
PUSH 5 | |
ADD << 16 | |
PEEK | |
POKE << 9 | |
PUSH 7 | |
ADD << 16 | |
PEEK | |
POKE << 6 | |
PUSH 0 | |
ADD << 16 | |
PEEK | |
POKE << 7 | |
PUSH 6 | |
ADD << 16 | |
PEEK | |
POKE << 8 | |
PUSH 2 | |
ADD << 16 | |
PEEK | |
POKE << 10 | |
PUSH 8 | |
ADD << 16 | |
PEEK | |
PUSH @north | |
DUP | |
PUSH 0 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @west | |
DUP | |
PUSH 1 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @south | |
DUP | |
PUSH 2 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @east | |
DUP | |
PUSH 3 | |
ADD << 12 | |
POKE | |
POP | |
POP | |
PUSH 0 | |
RETURN | |
@L16 | |
@L17 | |
PEEK << 122 | |
PUSH @south | |
EQUAL | |
IFFGOTO << @L18 | |
PUSH 5 | |
ADD << 16 | |
PEEK | |
POKE << 4 | |
PUSH 7 | |
ADD << 16 | |
PEEK | |
POKE << 5 | |
PUSH 3 | |
ADD << 16 | |
PEEK | |
POKE << 9 | |
PUSH 1 | |
ADD << 16 | |
PEEK | |
POKE << 6 | |
PUSH 8 | |
ADD << 16 | |
PEEK | |
POKE << 7 | |
PUSH 2 | |
ADD << 16 | |
PEEK | |
POKE << 8 | |
PUSH 6 | |
ADD << 16 | |
PEEK | |
POKE << 10 | |
PUSH 0 | |
ADD << 16 | |
PEEK | |
PUSH @south | |
DUP | |
PUSH 0 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @east | |
DUP | |
PUSH 1 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @north | |
DUP | |
PUSH 2 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @west | |
DUP | |
PUSH 3 | |
ADD << 12 | |
POKE | |
POP | |
POP | |
PUSH 0 | |
RETURN | |
@L18 | |
@L19 | |
PEEK << 122 | |
PUSH @west | |
EQUAL | |
IFFGOTO << @L20 | |
PUSH 1 | |
ADD << 16 | |
PEEK | |
POKE << 4 | |
PUSH 5 | |
ADD << 16 | |
PEEK | |
POKE << 5 | |
PUSH 7 | |
ADD << 16 | |
PEEK | |
POKE << 9 | |
PUSH 3 | |
ADD << 16 | |
PEEK | |
POKE << 6 | |
PUSH 2 | |
ADD << 16 | |
PEEK | |
POKE << 7 | |
PUSH 0 | |
ADD << 16 | |
PEEK | |
POKE << 8 | |
PUSH 8 | |
ADD << 16 | |
PEEK | |
POKE << 10 | |
PUSH 6 | |
ADD << 16 | |
PEEK | |
PUSH @west | |
DUP | |
PUSH 0 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @south | |
DUP | |
PUSH 1 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @east | |
DUP | |
PUSH 2 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @north | |
DUP | |
PUSH 3 | |
ADD << 12 | |
POKE | |
POP | |
POP | |
PUSH 0 | |
RETURN | |
@L20 | |
@L21 | |
PUSH 7 | |
ADD << 16 | |
PEEK | |
POKE << 4 | |
PUSH 3 | |
ADD << 16 | |
PEEK | |
POKE << 5 | |
PUSH 1 | |
ADD << 16 | |
PEEK | |
POKE << 9 | |
PUSH 5 | |
ADD << 16 | |
PEEK | |
POKE << 6 | |
PUSH 6 | |
ADD << 16 | |
PEEK | |
POKE << 7 | |
PUSH 8 | |
ADD << 16 | |
PEEK | |
POKE << 8 | |
PUSH 0 | |
ADD << 16 | |
PEEK | |
POKE << 10 | |
PUSH 2 | |
ADD << 16 | |
PEEK | |
PUSH @east | |
DUP | |
PUSH 0 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @north | |
DUP | |
PUSH 1 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @west | |
DUP | |
PUSH 2 | |
ADD << 12 | |
POKE | |
POP | |
PUSH @south | |
DUP | |
PUSH 3 | |
ADD << 12 | |
POKE | |
POP | |
POP | |
PUSH 0 | |
RETURN | |
@opposite_of | |
DUP | |
PUSH @north | |
EQUAL | |
IFFGOTO << @L22 | |
POP | |
PUSH @south | |
RETURN | |
@L22 | |
@L23 | |
DUP | |
PUSH @south | |
EQUAL | |
IFFGOTO << @L24 | |
POP | |
PUSH @north | |
RETURN | |
@L24 | |
@L25 | |
DUP | |
PUSH @west | |
EQUAL | |
IFFGOTO << @L26 | |
POP | |
PUSH @east | |
RETURN | |
@L26 | |
@L27 | |
POP | |
PUSH @west | |
RETURN | |
@find_dest | |
PUSH -1 | |
PUSH 2 | |
PUSH 0 | |
POKE << 116 | |
PUSH 0 | |
@L28 | |
PEEK << 116 | |
PUSH 100 | |
LESS | |
IFFGOTO << @L29 | |
PEEK << -3 | |
@L30 | |
DUP | |
PEEK << -4 | |
LESS | |
IFFGOTO << @L31 | |
PEEK << -4 | |
@L32 | |
DUP | |
PEEK << -5 | |
LESS | |
IFFGOTO << @L33 | |
PUSH @scan | |
PEEK << -3 | |
PEEK << -3 | |
CALLFF << 3 | |
DUP | |
PEEK << 116 | |
ADD << 16 | |
POKE | |
POP | |
PEEK << 116 | |
ADD << 16 | |
PEEK | |
PUSH @cell_resource | |
EQUAL | |
IFFGOTO << @L34 | |
PEEK << -2 | |
POKE << 117 | |
DUP | |
POKE << 118 | |
PEEK << 117 | |
PUSH 0 | |
LESS | |
IFFGOTO << @L36 | |
PUSH @west | |
POKE << 119 | |
GOTO << @L37 | |
@L36 | |
PEEK << 117 | |
PUSH 0 | |
GREATER | |
IFFGOTO << @L38 | |
PUSH @east | |
POKE << 119 | |
GOTO << @L39 | |
@L38 | |
PEEK << 118 | |
PUSH 0 | |
LESS | |
IFFGOTO << @L40 | |
PUSH @north | |
POKE << 119 | |
GOTO << @L41 | |
@L40 | |
PUSH @south | |
POKE << 119 | |
@L41 | |
@L39 | |
@L37 | |
PUSH 0 | |
POKE << 120 | |
PUSH 0 | |
POKE << 121 | |
PUSH 1 | |
POKE << -3 | |
@L34 | |
@L35 | |
DUP | |
PUSH 1 | |
ADD | |
POKE << -1 | |
PEEK << 116 | |
PUSH 1 | |
ADD | |
POKE << 116 | |
PEEK << -3 | |
IFFGOTO << @L42 | |
PEEK << 116 | |
PUSH 8 | |
GREATER | |
IFFGOTO << @L44 | |
POPN << 5 | |
PUSH 1 | |
RETURN | |
@L44 | |
@L45 | |
@L42 | |
@L43 | |
GOTO << @L32 | |
@L33 | |
PEEK << -2 | |
PUSH 1 | |
ADD | |
POKE << -2 | |
POP | |
GOTO << @L30 | |
@L31 | |
PEEK << -4 | |
PUSH 1 | |
SUB | |
POKE << -4 | |
PEEK << -3 | |
PUSH 1 | |
ADD | |
POKE << -3 | |
POP | |
GOTO << @L28 | |
@L29 | |
POPN << 3 | |
PUSH 0 | |
RETURN | |
@set_dest | |
PEEK << 117 | |
PUSH 0 | |
EQUAL | |
IFFGOTO << @L46 | |
PEEK << 118 | |
PUSH 0 | |
EQUAL | |
IFFGOTO << @L48 | |
CALL << @find_dest | |
STORE retval | |
PUSH retval | |
RETURN | |
@L48 | |
@L49 | |
@L46 | |
@L47 | |
PUSH @scan | |
PUSH -1 | |
PUSH -1 | |
CALLFF << 3 | |
DUP | |
PUSH 0 | |
ADD << 16 | |
POKE | |
POP | |
PEEK << 2 | |
DUP | |
PUSH 1 | |
ADD << 16 | |
POKE | |
POP | |
PUSH @scan | |
PUSH -1 | |
PUSH 1 | |
CALLFF << 3 | |
DUP | |
PUSH 2 | |
ADD << 16 | |
POKE | |
POP | |
PEEK << 0 | |
DUP | |
PUSH 3 | |
ADD << 16 | |
POKE | |
POP | |
PEEK << 1 | |
DUP | |
PUSH 5 | |
ADD << 16 | |
POKE | |
POP | |
PUSH @scan | |
PUSH 1 | |
PUSH -1 | |
CALLFF << 3 | |
DUP | |
PUSH 6 | |
ADD << 16 | |
POKE | |
POP | |
PEEK << 3 | |
DUP | |
PUSH 7 | |
ADD << 16 | |
POKE | |
POP | |
PUSH @scan | |
PUSH 1 | |
PUSH 1 | |
CALLFF << 3 | |
DUP | |
PUSH 8 | |
ADD << 16 | |
POKE | |
POP | |
PUSH 8 | |
POKE << 116 | |
PUSH 1 | |
RETURN | |
@do_move | |
DUP | |
POKE << 122 | |
PEEK << 117 | |
PUSH 0 | |
NEQUAL | |
IFFGOTO << @L50 | |
PEEK << 118 | |
PUSH 0 | |
NEQUAL | |
IFFGOTO << @L52 | |
DUP | |
PUSH @north | |
EQUAL | |
IFFGOTO << @L54 | |
PEEK << 121 | |
PUSH 1 | |
SUB | |
POKE << 121 | |
GOTO << @L55 | |
@L54 | |
DUP | |
PUSH @south | |
EQUAL | |
IFFGOTO << @L56 | |
PEEK << 121 | |
PUSH 1 | |
ADD | |
POKE << 121 | |
GOTO << @L57 | |
@L56 | |
DUP | |
PUSH @east | |
EQUAL | |
IFFGOTO << @L58 | |
PEEK << 120 | |
PUSH 1 | |
ADD | |
POKE << 120 | |
GOTO << @L59 | |
@L58 | |
PEEK << 120 | |
PUSH 1 | |
SUB | |
POKE << 120 | |
@L59 | |
@L57 | |
@L55 | |
@L52 | |
@L53 | |
@L50 | |
@L51 | |
PUSH @move | |
PEEK << -2 | |
CALLFF << 2 | |
STORE retval | |
POP | |
PUSH retval | |
RETURN | |
@first_empty | |
PEEK << -3 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L60 | |
PEEK << -3 | |
STORE retval | |
POPN << 3 | |
PUSH retval | |
RETURN | |
@L60 | |
@L61 | |
PEEK << -2 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L62 | |
PEEK << -2 | |
STORE retval | |
POPN << 3 | |
PUSH retval | |
RETURN | |
@L62 | |
@L63 | |
DUP | |
STORE retval | |
POPN << 3 | |
PUSH retval | |
RETURN | |
@calc_direction | |
PEEK << 123 | |
IFFGOTO << @L64 | |
CALL << @orient | |
POP | |
PEEK << 6 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L66 | |
PUSH 3 | |
ADD << 12 | |
PEEK | |
PEEK << 124 | |
CALL << @opposite_of | |
EQUAL | |
IFFGOTO << @L68 | |
PUSH 0 | |
POKE << 123 | |
@L68 | |
@L69 | |
PUSH 3 | |
ADD << 12 | |
PEEK | |
STORE retval | |
PUSH retval | |
RETURN | |
@L66 | |
@L67 | |
PEEK << 4 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L70 | |
PUSH 0 | |
ADD << 12 | |
PEEK | |
PEEK << 124 | |
CALL << @opposite_of | |
EQUAL | |
IFFGOTO << @L72 | |
PUSH 0 | |
POKE << 123 | |
@L72 | |
@L73 | |
PUSH 0 | |
ADD << 12 | |
PEEK | |
STORE retval | |
PUSH retval | |
RETURN | |
@L70 | |
@L71 | |
PEEK << 5 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L74 | |
PUSH 1 | |
ADD << 12 | |
PEEK | |
PEEK << 124 | |
CALL << @opposite_of | |
EQUAL | |
IFFGOTO << @L76 | |
PUSH 0 | |
POKE << 123 | |
@L76 | |
@L77 | |
PUSH 1 | |
ADD << 12 | |
PEEK | |
STORE retval | |
PUSH retval | |
RETURN | |
@L74 | |
@L75 | |
PUSH 2 | |
ADD << 12 | |
PEEK | |
PEEK << 124 | |
CALL << @opposite_of | |
EQUAL | |
IFFGOTO << @L78 | |
PUSH 0 | |
POKE << 123 | |
@L78 | |
@L79 | |
PUSH 2 | |
ADD << 12 | |
PEEK | |
STORE retval | |
PUSH retval | |
RETURN | |
@L64 | |
@L65 | |
PEEK << 120 | |
PEEK << 117 | |
LESS | |
IFFGOTO << @L80 | |
PEEK << 3 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L82 | |
PUSH @east | |
RETURN | |
@L82 | |
@L83 | |
PUSH 1 | |
POKE << 123 | |
PUSH @east | |
POKE << 124 | |
PEEK << 0 | |
PEEK << 1 | |
PEEK << 2 | |
CALL << @first_empty | |
STORE retval | |
PUSH retval | |
RETURN | |
@L80 | |
@L81 | |
PEEK << 120 | |
PEEK << 117 | |
GREATER | |
IFFGOTO << @L84 | |
PEEK << 2 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L86 | |
PUSH @west | |
RETURN | |
@L86 | |
@L87 | |
PUSH 1 | |
POKE << 123 | |
PUSH @west | |
POKE << 124 | |
PEEK << 0 | |
PEEK << 1 | |
PEEK << 3 | |
CALL << @first_empty | |
STORE retval | |
PUSH retval | |
RETURN | |
@L84 | |
@L85 | |
PEEK << 121 | |
PEEK << 118 | |
LESS | |
IFFGOTO << @L88 | |
PEEK << 1 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L90 | |
PUSH @south | |
RETURN | |
@L90 | |
@L91 | |
PUSH 1 | |
POKE << 123 | |
PUSH @south | |
POKE << 124 | |
PEEK << 2 | |
PEEK << 3 | |
PEEK << 0 | |
CALL << @first_empty | |
STORE retval | |
PUSH retval | |
RETURN | |
@L88 | |
@L89 | |
PEEK << 121 | |
PEEK << 118 | |
GREATER | |
IFFGOTO << @L92 | |
PEEK << 0 | |
PUSH @cell_empty | |
EQUAL | |
IFFGOTO << @L94 | |
PUSH @north | |
RETURN | |
@L94 | |
@L95 | |
PUSH 1 | |
POKE << 123 | |
PUSH @north | |
POKE << 124 | |
PEEK << 2 | |
PEEK << 3 | |
PEEK << 1 | |
CALL << @first_empty | |
STORE retval | |
PUSH retval | |
RETURN | |
@L92 | |
@L93 | |
PEEK << 0 | |
PEEK << 2 | |
PEEK << 1 | |
PEEK << 3 | |
CALL << @first_empty | |
STORE retval | |
PUSH retval | |
RETURN | |
@set_sail | |
PUSH 0 | |
PEEK << -2 | |
PUSH 0 | |
EQUAL | |
IFFGOTO << @L96 | |
PUSH 4 | |
RAND | |
POKE << -1 | |
DUP | |
PUSH 0 | |
EQUAL | |
IFFGOTO << @L98 | |
PUSH @east | |
POKE << -1 | |
@L98 | |
@L99 | |
PUSH @move | |
PEEK << -2 | |
CALLFF << 2 | |
STORE retval | |
POPN << 2 | |
PUSH retval | |
RETURN | |
@L96 | |
@L97 | |
CALL << @calc_direction | |
CALL << @do_move | |
POP | |
POPN << 2 | |
PUSH 0 | |
RETURN | |
@main | |
PUSH @south | |
POKE << 122 | |
PUSH 0 | |
POKE << 123 | |
PUSH 0 | |
POKE << 117 | |
PUSH 0 | |
POKE << 118 | |
PUSH 0 | |
POKE << 120 | |
PUSH 0 | |
POKE << 121 | |
@L100 | |
PUSH 1 | |
IFFGOTO << @L101 | |
CALL << @immediate | |
POP | |
GOTO << @L100 | |
@L101 | |
PUSH 0 | |
RETURN | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment