Moved Hunt the Wumpus to more descriptive directory name.
[vvhitespace] / examples / wump / wump_game.pvvs
diff --git a/examples/wump/wump_game.pvvs b/examples/wump/wump_game.pvvs
deleted file mode 100644 (file)
index 7d85f8d..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-#ifndef WUMP_GAME
-#define WUMP_GAME
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ (c) 2019 Aaron Taylor <ataylor at subgeniuskitty dot com>
-@ See LICENSE.txt file for copyright and license details.
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   get_tunnel_destination
-@ Description:
-@   Returns the room number corresponding to the destination of a tunnel
-@   specified by room and slot.
-@ Call Stack:
-@   slot
-@   room_number  <-- TOS
-@ Return Stack:
-@   dst_room_number  <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-NSSVTSSSTSSSN         | MARK: 10001000 (get_tunnel_destination)
-@ The pointer we seek is:
-@ (room_number * room_struct_size) + 2 + slot + ROOM_DATA_BASE
-@ Where the '+2' accounts for the pit and bat booleans.
-NSTTSSSTSTTN          | JSR > 10001011 (get_room_struct_size)
-TSSN                  | MULTIPLY
-SSSTSN                | PUSH +2
-TSSS                  | ADD
-TSSS                  | ADD
-SSSTSSSSSSSSSSSSSN    | PUSH 0x2000 (ROOM_DATA_BASE address)
-TSSS                  | ADD
-TTT                   | LOAD
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   get_room_struct_size
-@ Description:
-@   Returns the size in words of the data structure for a single room.
-@   For example, with 3 links plus bat and pit booleans, the size is 5 words.
-@ Call Stack:
-@   <empty>
-@ Return Stack:
-@   size   <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-NSSVTSSSTSTTN         | MARK: 10001011 (get_room_struct_size)
-SSSTSSSSSSSSSSTTN     | PUSH 0x1003 (GAME_DATA_BASE+3 = links_per_room address)
-TTT                   | LOAD
-SSSTSN                | PUSH +2
-TSSS                  | ADD
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   room_has_bats
-@ Description:
-@   Check if room_number contains bats.
-@   Returns 1 or 0 representing true or false.
-@ Call Stack:
-@   room_number   <-- TOS
-@ Return Stack:
-@   1 or 0   <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-NSSVTSSSTTSSN         | MARK: 10001100 (room_has_bats)
-@ We seek the pointer:
-@   (room_number * room_struct_size) + 1 + ROOM_DATA_BASE
-@ where '+1' accounts for the offset of the bat boolean in the desired room.
-NSTTSSSTSTTN          | JSR > 10001011 (get_room_struct_size)
-TSSN                  | MULTIPLY
-SSSTN                 | PUSH +1
-TSSS                  | ADD
-SSSTSSSSSSSSSSSSSN    | PUSH 0x2000 (GAME_DATA_BASE address)
-TSSS                  | ADD
-TTT                   | LOAD
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   room_has_pits
-@ Description:
-@   Check if room_number contains pits.
-@   Returns 1 or 0 representing true or false.
-@ Call Stack:
-@   room_number   <-- TOS
-@ Return Stack:
-@   1 or 0   <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-NSSVTSSSTTSTN         | MARK: 10001101 (room_has_pits)
-@ We seek the pointer:
-@   (room_number * room_struct_size) + 0 + ROOM_DATA_BASE
-@ where '+0' accounts for the offset of the pit boolean in the desired room.
-NSTTSSSTSTTN          | JSR > 10001011 (get_room_struct_size)
-TSSN                  | MULTIPLY
-SSSTSSSSSSSSSSSSSN    | PUSH 0x2000 (GAME_DATA_BASE address)
-TSSS                  | ADD
-TTT                   | LOAD
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   room_has_wumpus
-@ Description:
-@   Check if room contains wumpus.
-@   Returns 1 or 0 representing true or false.
-@ Call Stack:
-@   room_number   <-- TOS
-@ Return Stack:
-@   1 or 0   <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-NSSVTSTSSSSSN         | MARK: 10100000 (room_has_wumpus)
-SSSTSSSSSSSSSTTTN     | PUSH 0x1007 (wumpus_location address)
-TTT                   | LOAD
-TSST                  | SUBTRACT
-NTSTSTSSSSSSSSSSSSSN  | BRZ > 10100000 00000000 (room_has_wumpus:true)
-SSSSN                 | PUSH 0 (false)
-NTN                   | RTS
-NSSVTSTSSSSSSSSSSSSSN | MARK: 10100000 00000000 (room_has_wumpus:true)
-SSSTN                 | PUSH 1 (true)
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   are_bats_near
-@ Description:
-@   Given a room number, checks rooms within one hop for bats.
-@   Returns 1 if bats are present or 0 if no bats.
-@ Call Stack:
-@   room_number  <-- TOS
-@ Return Stack:
-@   1 or 0  <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#include <stack.pvvs>
-NSSVTSSTTTSSN         | MARK: 10011100 (are_bats_near)
-
-@ Prepare the stack by loading the number of links per room and decrementing.
-@ We will loop until this reaches 0 or we find bats.
-SSSTSSSSSSSSSSTTN     | PUSH 0x1003 (number_of_links_per_room address)
-TTT                   | LOAD
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-
-@ Check one nearby room on each pass through this loop.
-@ TOS> tunnel_index, room_number
-NSSVTSSTTTSSSSSSSSSSN | MARK: 10011100 00000000 (are_bats_near:loop)
-SNS                   | DUP
-SSSTTN                | PUSH 3
-NSTTTSSN              | JSR > 1100 (deepdup)
-NSTTSSSTSSSN          | JSR > 10001000 (get_tunnel_destination)
-NSTTSSSTTSSN          | JSR > 10001100 (room_has_bats)
-NTSTSSTTTSSSSSSSSSTN  | BRZ > 10011100 00000001 (no_bats_in_this_room)
-@ Found bats. Clean up and return.
-SNN                   | DROP
-SNN                   | DROP
-SSSTN                 | PUSH 1
-NTN                   | RTS
-NSSVTSSTTTSSSSSSSSSTN | MARK: 10011100 00000001 (no_bats_in_this_room)
-@ Test for end of loop.
-SNS                   | DUP
-NTSTSSTTTSSSSSSSSTSN  | BRZ > 10011100 00000010 (are_bats_near:loop_end)
-@ No bats found yet, but still need to check some rooms.
-@ Decrement tunnel index and loop again.
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-NSNTSSTTTSSSSSSSSSSN  | JMP > 10011100 00000000 (are_bats_near:loop)
-@ No bats found in nearby rooms. Clean up and return.
-NSSVTSSTTTSSSSSSSSTSN | MARK: 10011100 00000010 (are_bats_near:loop_end)
-SNN                   | DROP
-SNN                   | DROP
-SSSSN                 | PUSH 0
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   are_pits_near
-@ Description:
-@   Given a room number, checks rooms within one hop for pits.
-@   Returns 1 if pits are present or 0 if no pits.
-@ Call Stack:
-@   room_number  <-- TOS
-@ Return Stack:
-@   1 or 0  <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#include <stack.pvvs>
-NSSVTSSTTTSTN         | MARK: 10011101 (are_pits_near)
-
-@ Prepare the stack by loading the number of links per room and decrementing.
-@ We will loop until this reaches 0 or we find pits.
-SSSTSSSSSSSSSSTTN     | PUSH 0x1003 (number_of_links_per_room address)
-TTT                   | LOAD
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-
-@ Check one nearby room on each pass through this loop.
-@ TOS> tunnel_index, room_number
-NSSVTSSTTTSTSSSSSSSSN | MARK: 10011101 00000000 (are_pits_near:loop)
-SNS                   | DUP
-SSSTTN                | PUSH 3
-NSTTTSSN              | JSR > 1100 (deepdup)
-NSTTSSSTSSSN          | JSR > 10001000 (get_tunnel_destination)
-NSTTSSSTTSTN          | JSR > 10001101 (room_has_pits)
-NTSTSSTTTSTSSSSSSSTN  | BRZ > 10011101 00000001 (no_pits_in_this_room)
-@ Found pits. Clean up and return.
-SNN                   | DROP
-SNN                   | DROP
-SSSTN                 | PUSH 1
-NTN                   | RTS
-NSSVTSSTTTSTSSSSSSSTN | MARK: 10011101 00000001 (no_pits_in_this_room)
-@ Test for end of loop.
-SNS                   | DUP
-NTSTSSTTTSTSSSSSSTSN  | BRZ > 10011101 00000010 (are_pits_near:loop_end)
-@ No pits found yet, but still need to check some rooms.
-@ Decrement tunnel index and loop again.
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-NSNTSSTTTSTSSSSSSSSN  | JMP > 10011101 00000000 (are_pits_near:loop)
-@ No pits found in nearby rooms. Clean up and return.
-NSSVTSSTTTSTSSSSSSTSN | MARK: 10011101 00000010 (are_pits_near:loop_end)
-SNN                   | DROP
-SNN                   | DROP
-SSSSN                 | PUSH 0
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   is_wumpus_very_near
-@ Description:
-@   Given a room number, checks rooms within one hop for the wumpus.
-@   Returns 1 if wumpus is present, otherwise 0.
-@ Call Stack:
-@   room_number  <-- TOS
-@ Return Stack:
-@   1 or 0  <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#include <stack.pvvs>
-NSSVTSSTTTTTN         | MARK: 10011111 (is_wumpus_very_near)
-
-@ Prepare the stack by loading the number of links per room and decrementing.
-@ We will loop until this reaches 0 or we find the wumpus.
-SSSTSSSSSSSSSSTTN     | PUSH 0x1003 (number_of_links_per_room address)
-TTT                   | LOAD
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-
-@ Check one nearby room on each pass through this loop.
-@ TOS> tunnel_index, room_number
-NSSVTSSTTTTTSSSSSSSSN | MARK: 10011111 00000000 (is_wumpus_very_near:loop)
-SNS                   | DUP
-SSSTTN                | PUSH 3
-NSTTTSSN              | JSR > 1100 (deepdup)
-NSTTSSSTSSSN          | JSR > 10001000 (get_tunnel_destination)
-NSTTSTSSSSSN          | JSR > 10100000 (room_has_wumpus)
-NTSTSSTTTTTSSSSSSSTN  | BRZ > 10011111 00000001 (no_wumpus_in_this_room)
-@ Found wumpus. Clean up and return.
-SNN                   | DROP
-SNN                   | DROP
-SSSTN                 | PUSH 1
-NTN                   | RTS
-NSSVTSSTTTTTSSSSSSSTN | MARK: 10011111 00000001 (no_wumpus_in_this_room)
-@ Test for end of loop.
-SNS                   | DUP
-NTSTSSTTTTTSSSSSSTSN  | BRZ > 10011111 00000010 (is_wumpus_very_near:loop_end)
-@ No wumpus found yet, but still need to check some rooms.
-@ Decrement tunnel index and loop again.
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-NSNTSSTTTTTSSSSSSSSN  | JMP > 10011111 00000000 (is_wumpus_very_near:loop)
-@ No wumpus found in nearby rooms. Clean up and return.
-NSSVTSSTTTTTSSSSSSTSN | MARK: 10011111 00000010 (is_wumpus_very_near:loop_end)
-SNN                   | DROP
-SNN                   | DROP
-SSSSN                 | PUSH 0
-NTN                   | RTS
-
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-@ Name:
-@   is_wumpus_near
-@ Description:
-@   Given a room number, checks rooms within two hops for the wumpus.
-@   Returns 1 if wumpus is present, otherwise 0.
-@ Call Stack:
-@   room_number  <-- TOS
-@ Return Stack:
-@   1 or 0  <-- TOS
-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-#include <stack.pvvs>
-NSSVTSSTTTTSN         | MARK: 10011110 (is_wumpus_near)
-
-@ Prepare the stack by loading the number of links per room and decrementing.
-@ We will loop until this reaches 0 or we find the wumpus.
-SSSTSSSSSSSSSSTTN     | PUSH 0x1003 (number_of_links_per_room address)
-TTT                   | LOAD
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-
-@ Check one nearby room and its connecting rooms on each pass through this loop.
-@ TOS> tunnel_index, room_number
-NSSVTSSTTTTSSSSSSSSSN | MARK: 10011110 00000000 (is_wumpus_near:loop)
-SNS                   | DUP
-SSSTTN                | PUSH 3
-NSTTTSSN              | JSR > 1100 (deepdup)
-NSTTSSSTSSSN          | JSR > 10001000 (get_tunnel_destination)
-@ TOS> tunnel_endpoint, tunnel_index, room_number
-SNS                   | DUP
-NSTTSTSSSSSN          | JSR > 10100000 (room_has_wumpus)
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-NTSTSSTTTTSSSSSSSTTN  | BRZ > 10011110 00000011 (found_wumpus_one_hop)
-NSTTSSTTTTTN          | JSR > 10011111 (is_wumpus_very_near)
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-NTSTSSTTTTSSSSSSTSSN  | BRZ > 10011110 00000100 (found_wumpus_two_hops)
-@ Test for end of loop.
-SNS                   | DUP
-NTSTSSTTTTSSSSSSSTSN  | BRZ > 10011110 00000010 (is_wumpus_near:loop_end)
-@ No wumpus found yet, but still need to check some rooms.
-@ Decrement tunnel index and loop again.
-SSSTN                 | PUSH 1
-TSST                  | SUBTRACT
-NSNTSSTTTTSSSSSSSSSN  | JMP > 10011110 00000000 (is_wumpus_near:loop)
-
-@ No wumpus found in nearby rooms. Clean up and return.
-NSSVTSSTTTTSSSSSSSTSN | MARK: 10011110 00000010 (is_wumpus_near:loop_end)
-SNN                   | DROP
-SNN                   | DROP
-SSSSN                 | PUSH 0
-NTN                   | RTS
-
-@ Found wumpus. Clean up and return.
-NSSVTSSTTTTSSSSSSSTTN | MARK: 10011110 00000011 (found_wumpus_one_hop)
-SNN                   | DROP
-NSSVTSSTTTTSSSSSSTSSN | MARK: 10011110 00000100 (found_wumpus_two_hops)
-SNN                   | DROP
-SNN                   | DROP
-SSSTN                 | PUSH 1
-NTN                   | RTS
-
-#endif