# The file address index. # The address of the primary active resource is stored in 0. GVL 100 0 # The address of the OS library is stored in 3. GVL 3 3 CGO 0 [0] 0 # Random buffer space. "00" INFANCY_OS_INDEX 1 2 OS_LIBRARY_INDEX 3 4 OS_INDEX 100 101 OS_FONT_INDEX 200 202 IMAGES_INDEX 150 150 KEYCODES_INDEX 129 129 TEMP_INDEX 250 252 FILE_NAMES_INDEX 50 50 BOOP_INDEX 130 130 OS_TEXT_INDEX 102 102 HEX_INDEX 131 134 HEX_LIB_INDEX 141 141 PONG_INDEX 70 73 LIFE_INDEX 160 161 DRAW_INDEX 170 171 MULTI_INDEX 180 182 MUFFIN_INDEX 190 194 # The infancy OS. ADDRESS 0 1 # The address of the secondary active resource is stored in 1. ADD [0] 1 1 GVL INFANCY_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 INFANCY_CLEAR_SCREEN_RETURN SVM 208 84 10000001 SVM 224 84 10000001 SVM 240 84 10000001 SVM 0 85 10000001 GVL 00000000 31 GVL 00000000 32 GVL 11111111 33 GVL 0 20 GVL 0 21 GTM 0 22 GVL 0 23 GVL INFANCY_GET_KEY_RETURN 29 GVL [0] 30 INFANCY_RESET_CURSOR EQU [33] 00000000 34 GVL 0 35 INFANCY_REDRAW_INTERFACE SVM 112 90 [33] NOR [33] [33] 11 SVM 176 106 [11] GMM [31] [32] 11 GVL 112 12 GVL 86 13 GVL INFANCY_DRAW_BYTE_RETURN_1 19 CGO DRAW_BYTE [1] 0 INFANCY_DRAW_BYTE_RETURN_1 GVL [31] 11 GVL 128 12 GVL 103 13 GVL INFANCY_DRAW_BYTE_RETURN_2 19 CGO DRAW_BYTE [1] 0 INFANCY_DRAW_BYTE_RETURN_2 GVL [32] 11 GVL 112 12 GVL 112 13 GVL INFANCY_DRAW_BYTE_RETURN_3 19 CGO DRAW_BYTE [1] 0 INFANCY_DRAW_BYTE_RETURN_3 INFANCY_LOOP CGO GET_KEY [3] 0 INFANCY_GET_KEY_RETURN EQU [24] 0 15 NOR [15] [15] 15 CGO INFANCY_LOOP [0] [15] EQU [24] 00000110 15 NOR [15] [15] 15 CGO INFANCY_PRESSED_TAB [0] [15] EQU [24] 00010100 15 NOR [15] [15] 15 CGO INFANCY_PRESSED_SPACE [0] [15] EQU [24] 10101101 15 NOR [15] [15] 15 CGO [31] [32] [15] GVL INFANCY_HEX_KEYCODES 11 GVL 0 12 INFANCY_FIND_KEYCODE_LOOP GMM [11] [1] 13 EQU [13] [24] 15 NOR [15] [15] 15 CGO INFANCY_PRESSED_HEX [1] [15] ADD [11] 1 11 ADD [12] 1 12 GRE [12] 15 13 CGO INFANCY_FIND_KEYCODE_LOOP [0] [13] CGO INFANCY_LOOP [0] 0 INFANCY_PRESSED_TAB NOR [33] [33] 33 CGO INFANCY_RESET_CURSOR [0] 0 INFANCY_PRESSED_SPACE GVL 1 4 GVL [31] 5 GVL [32] 6 GVL INFANCY_ADD_RETURN 9 GVL [0] 10 CGO ADD_BYTE_TO_WORD [3] 0 INFANCY_ADD_RETURN GVL [5] 31 GVL [6] 32 # The next block starts around here. CGO INFANCY_RESET_CURSOR [0] 0 INFANCY_PRESSED_HEX GMM [31] [32] 13 GRE [34] 0 15 CGO INFANCY_OVERLAY_NYBBLE [1] [15] GVL [31] 13 GRE [34] 1 15 CGO INFANCY_OVERLAY_NYBBLE [1] [15] GVL [32] 13 INFANCY_OVERLAY_NYBBLE GVL 0 16 GVL [35] 17 INFANCY_OVERLAY_BIT BGT [12] [16] 14 CGO INFANCY_OVERLAY_ZERO [1] [14] BON [13] [17] 13 CGO INFANCY_SKIP_OVERLAY_ONE [1] 0 INFANCY_OVERLAY_ZERO NOR [13] [13] 13 BON [13] [17] 13 NOR [13] [13] 13 INFANCY_SKIP_OVERLAY_ONE ADD [16] 1 16 ADD [17] 1 17 GRE [16] 3 15 CGO INFANCY_OVERLAY_BIT [1] [15] GRE 1 [34] 15 CGO SKIP_INFANCY_WRITE_BYTE_0 [1] [15] SMM [31] [32] [13] CGO INFANCY_MOVE_CURSOR [1] 0 SKIP_INFANCY_WRITE_BYTE_0 GRE 2 [34] 15 CGO SKIP_INFANCY_WRITE_BYTE_1 [1] [15] GVL [13] 31 CGO INFANCY_MOVE_CURSOR [1] 0 SKIP_INFANCY_WRITE_BYTE_1 GVL [13] 32 INFANCY_MOVE_CURSOR ADD [35] 4 35 GRE [35] 7 15 CGO INFANCY_REDRAW_INTERFACE [0] [15] GVL 0 35 GRE [34] 0 15 CGO INFANCY_REDRAW_INTERFACE [0] [15] ADD [34] 1 34 GRE [34] 2 15 CGO INFANCY_REDRAW_INTERFACE [0] [15] GVL 1 34 CGO INFANCY_REDRAW_INTERFACE [0] 0 # Draws the byte stored in 11 at VRAM address in 12 and 13. # Returns to the address in 19 and 0. Uses addresses between 11 and 19. DRAW_BYTE GVL 0 14 GVL 0 15 GVL [1] 10 DRAW_BYTE_LOOP GVL [14] 4 GVL [12] 5 GVL [13] 6 GVL DRAW_BYTE_ADD_RETURN 9 CGO ADD_BYTE_TO_WORD [3] 0 DRAW_BYTE_ADD_RETURN GVL 00000000 16 BGT [11] [15] 17 CGO DRAW_BYTE_SKIP_WHITE [1] [17] GVL 11111111 16 DRAW_BYTE_SKIP_WHITE GVL 0 17 GVL 208 4 GVL DRAW_BYTE_BLOCK_ADD_RETURN 9 DRAW_BYTE_BLOCK_LOOP SVM [5] [6] [16] CGO ADD_BYTE_TO_WORD [3] 0 DRAW_BYTE_BLOCK_ADD_RETURN ADD [17] 1 17 GRE [17] 10 18 CGO DRAW_BYTE_BLOCK_LOOP [1] [18] ADD [14] 8 14 ADD [15] 1 15 GRE [15] 7 16 CGO DRAW_BYTE_LOOP [1] [16] CGO [19] [0] 0 # Stores the keycodes for 0-F in order. INFANCY_HEX_KEYCODES 00100010 00001011 10001111 00010011 00010010 10010111 10011011 00011110 00011111 00100011 00001110 00011001 10010000 00010001 10010010 10010101 # The DUO OS Library. ADDRESS 0 3 # Adds the byte in 4 to the byte in 5 and 6. # Returns to the address in 9 and 10. Uses memory between 4 and 10. ADD_BYTE_TO_WORD ADD [4] [5] 7 GRE [7] [5] 8 GRE [7] [4] 5 NOR [5] [8] 8 GVL [7] 5 CGO [9] [10] [8] ADD [6] 1 6 CGO [9] [10] 0 # Clears the screen. # Returns to address in 11 and 12. CLEAR_SCREEN GVL 8 4 GVL 0 5 GVL 0 6 GVL CLEAR_SCREEN_ADD_RETURN 9 GVL [3] 10 CLEAR_SCREEN_ADD_RETURN SVM [5] [6] 00000000 GRE [6] 200 7 CGO ADD_BYTE_TO_WORD [3] [7] CGO [11] [12] 0 # Uses the previous keycode in 20, the acceptance delay in 21, the last timer byte in 22, and the candidate keycode in 23. If a key press has been registered, the keycode is stored in 24. # Returns to the address in 29 and 30. Uses memory between 20 and 30. GET_KEY GVL 0 24 GIN 1 25 EQU [25] 11110000 26 CGO SKIP_RELEASE [3] [26] GVL 0 20 GVL 0 21 CGO [29] [30] 0 SKIP_RELEASE GIN 0 25 EQU [25] [20] 26 NOR [26] [26] 26 CGO [29] [30] [26] EQU [25] [23] 26 NOR [26] [26] 26 CGO SKIP_RESET_DELAY [3] [26] GVL 0 21 GVL [25] 23 GTM 0 22 SKIP_RESET_DELAY GTM 0 26 GRE 127 [22] 27 GRE [26] 127 28 NOR [27] [28] 28 GRE [26] [22] 27 NOR [27] [28] 28 NOR [28] [28] 28 CGO [29] [30] [28] GVL [26] 22 ADD [21] 1 21 GRE [21] 5 26 CGO [29] [30] [26] GVL [25] 24 GVL [25] 20 GVL 0 21 CGO [29] [30] 0 # Accepts numbers to multiply in 31 and 32. Stores the result in 40 and 41. # Returns to the address in 42 and 43. Uses addresses 31 through 43 MULTIPLY_BYTE ADD [3] 1 39 GVL 00000000 40 GVL 00000000 41 GVL 0 33 MULTIPLY_BYTE_LOOP_1 BGT [31] [33] 34 CGO MULTIPLY_BYTE_SKIP_1 [39] [34] GVL 00000000 34 GVL 00000000 35 GVL 0 36 MULTIPLY_BYTE_LOOP_2 BGT [32] [36] 37 CGO MULTIPLY_BYTE_SKIP_2 [3] [37] ADD [33] [36] 37 GRE [37] 7 38 CGO MULTIPLY_FIRST_BON [3] [38] BON [35] [37] 35 CGO MULTIPLY_BYTE_SKIP_2 [3] 0 MULTIPLY_FIRST_BON BON [34] [37] 34 MULTIPLY_BYTE_SKIP_2 ADD [36] 1 36 GRE [36] 7 37 CGO MULTIPLY_BYTE_LOOP_2 [3] [37] # Block 4 starts here. ADD [41] [35] 41 GRE [34] 0 37 CGO MULTIPLY_BYTE_SKIP_1 [39] [37] GVL [40] 36 ADD [40] [34] 40 GRE [40] [36] 36 GRE [40] [34] 37 NOR [36] [37] 37 CGO MULTIPLY_BYTE_SKIP_1 [39] [37] ADD [41] 1 41 MULTIPLY_BYTE_SKIP_1 ADD [33] 1 33 GRE [33] 7 34 CGO MULTIPLY_BYTE_LOOP_1 [3] [34] CGO [42] [43] 0 # Accepts an ascii number in 44 and a VRAM address in 45 and 46. # Returns to the address in 49 and 50. Uses addresses 44 through 50 DRAW_CHARACTER ADD [44] 224 31 GVL 10 32 GVL DRAW_CHARACTER_MULTIPLY_RETURN 42 ADD [3] 1 43 CGO MULTIPLY_BYTE [3] 0 DRAW_CHARACTER_MULTIPLY_RETURN ADD [1] [41] 41 GVL 0 47 GVL 208 4 GVL [45] 5 GVL [46] 6 GVL DRAW_CHARACTER_ADD_RETURN 9 GVL [43] 10 DRAW_CHARACTER_LOOP GMM [40] [41] 48 SVM [5] [6] [48] CGO ADD_BYTE_TO_WORD [3] 0 DRAW_CHARACTER_ADD_RETURN ADD [40] 1 40 EQU [40] 0 48 CGO DRAW_CHARACTER_CARRY_SKIP [43] [48] ADD [41] 1 41 DRAW_CHARACTER_CARRY_SKIP ADD [47] 1 47 GRE [47] 9 48 CGO DRAW_CHARACTER_LOOP [43] [48] CGO [49] [50] 0 # Accepts the address of the text in 51 and 52. # Returns to address at 59 and 60. Uses addresses 51 through 60. DRAW_TEXT ADD [3] 1 55 ADD [3] 2 58 GVL DRAW_TEXT_SHIFT_RETURN 37 GVL [55] 38 CGO SHIFT_SCREEN [58] 0 DRAW_TEXT_SHIFT_RETURN GVL [254] 53 GVL [255] 54 GVL [55] 10 GVL DRAW_TEXT_CHARACTER_RETURN 49 GVL [55] 50 DRAW_TEXT_LOOP GMM [51] [52] 44 EQU [44] 10 56 EQU [44] 3 57 NOR [56] [57] 56 NOR [56] [56] 56 CGO DRAW_TEXT_SKIP_NEWLINE [55] [56] GVL [254] 56 ADD [254] 48 254 GRE [56] [254] 56 CGO DRAW_TEXT_CARRY_SKIP [55] [56] ADD [255] 1 255 DRAW_TEXT_CARRY_SKIP ADD [255] 12 255 GVL DRAW_TEXT_SHIFT_RETURN_2 37 GVL [55] 38 CGO SHIFT_SCREEN [58] 0 DRAW_TEXT_SHIFT_RETURN_2 GVL [254] 53 GVL [255] 54 CGO DRAW_TEXT_NEXT_CHARACTER [58] 0 DRAW_TEXT_SKIP_NEWLINE GVL [53] 45 GVL [54] 46 CGO DRAW_CHARACTER [55] 0 DRAW_TEXT_CHARACTER_RETURN GVL 8 4 GVL [53] 5 GVL [54] 6 # Block 5 starts here. GVL DRAW_TEXT_ADD_RETURN 9 GVL [58] 10 CGO ADD_BYTE_TO_WORD [3] 0 DRAW_TEXT_ADD_RETURN GVL [5] 53 GVL [6] 54 DRAW_TEXT_NEXT_CHARACTER NOR [57] [57] 57 CGO [59] [60] [57] ADD [51] 1 51 CGO DRAW_TEXT_LOOP [55] 0 # Accepts an image address in 44 and 45, image width in 46, image size in 47, and a VRAM address in 48 and 49. # Returns to the address in 53 and 54. Uses addresses 44 through 54. DRAW_IMAGE GVL 0 50 GVL 0 51 GVL 8 4 GVL [48] 5 GVL [49] 6 GVL DRAW_IMAGE_ADD_RETURN 9 ADD [3] 2 10 DRAW_IMAGE_LOOP GMM [44] [45] 52 SVM [5] [6] [52] CGO ADD_BYTE_TO_WORD [3] 0 DRAW_IMAGE_ADD_RETURN ADD [44] 1 44 ADD [50] 1 50 GRE [46] [50] 52 NOR [52] [52] 52 CGO DRAW_IMAGE_NEWLINE_SKIP [10] [52] GVL 0 50 GVL 208 4 GVL [48] 5 GVL [49] 6 GVL DRAW_IMAGE_ADD_RETURN_2 9 CGO ADD_BYTE_TO_WORD [3] 0 DRAW_IMAGE_ADD_RETURN_2 GVL [5] 48 GVL [6] 49 GVL 8 4 GVL DRAW_IMAGE_ADD_RETURN 9 DRAW_IMAGE_NEWLINE_SKIP ADD [51] 1 51 GRE [51] [47] 52 CGO DRAW_IMAGE_LOOP [10] [52] CGO [53] [54] 0 # Accepts a keycode in 44, stores output in 47 # Returns to the address in 48 and 49. Uses addresses 44 through 49 CONVERT_KEYCODE_INTO_ASCII ADD [3] 2 45 GVL 255 47 CONVERT_KEYCODE_INTO_ASCII_LOOP ADD [47] 1 47 GRE [47] 62 46 CGO CONVERT_KEYCODE_INTO_ASCII_SKIP [45] [46] GVL 0 47 CGO [48] [49] 0 CONVERT_KEYCODE_INTO_ASCII_SKIP GMM [47] [2] 46 EQU [46] [44] 46 CGO CONVERT_KEYCODE_INTO_ASCII_LOOP [45] [46] ADD [47] 32 47 CGO [48] [49] 0 # Moves the screen image up if necessary. # Returns to address at 37 and 38. Uses addresses 31 through 38. SHIFT_SCREEN GRE [255] 150 35 CGO [37] [38] [35] ADD [3] 2 36 GVL 0 31 GVL 0 32 GVL 96 33 GVL 11 34 SHIFT_SCREEN_LOOP GVM [33] [34] 35 SVM [31] [32] [35] ADD [31] 8 31 GRE 1 [31] 35 CGO SHIFT_SCREEN_LOOP_SKIP [36] [35] ADD [32] 1 32 SHIFT_SCREEN_LOOP_SKIP ADD [33] 8 33 GRE 1 [33] 35 CGO SHIFT_SCREEN_LOOP_SKIP_2 [36] [35] ADD [34] 1 34 SHIFT_SCREEN_LOOP_SKIP_2 GRE [34] 180 35 CGO SHIFT_SCREEN_LOOP [36] [35] GVL 136 254 # Block 6 starts here. GVL 145 255 CGO [37] [38] 0 # Accepts the destination address for text input in 51 and 52. # Returns to address at 58 and 59. Uses addresses 51 through 59. ACCEPT_INPUT GVL 0 20 GVL 0 21 GTM 0 22 GVL 0 23 GVL ACCEPT_INPUT_KEY_RETURN 29 ADD [3] 1 53 ADD [3] 2 57 ADD [3] 3 30 GVL ACCEPT_INPUT_SHIFT_RETURN 37 GVL [30] 38 CGO SHIFT_SCREEN [57] 0 ACCEPT_INPUT_SHIFT_RETURN GVL [254] 55 GVL [255] 56 GVL 35 44 GVL [55] 45 GVL [56] 46 GVL ACCEPT_INPUT_CURSOR_RETURN 49 GVL [30] 50 CGO DRAW_CHARACTER [53] 0 ACCEPT_INPUT_CURSOR_RETURN ACCEPT_INPUT_LOOP CGO GET_KEY [3] 0 ACCEPT_INPUT_KEY_RETURN EQU [24] 0 54 NOR [54] [54] 54 CGO ACCEPT_INPUT_LOOP [30] [54] EQU [24] 10101101 54 CGO ACCEPT_INPUT_ENTER_SKIP [30] [54] SMM [51] [52] 3 GVL [254] 54 ADD [254] 48 254 GRE [54] [254] 54 CGO ACCEPT_INPUT_CARRY_SKIP_3 [30] [54] ADD [255] 1 255 ACCEPT_INPUT_CARRY_SKIP_3 ADD [255] 12 255 CGO [58] [59] 0 ACCEPT_INPUT_ENTER_SKIP EQU [24] 10110011 54 CGO ACCEPT_INPUT_DELETE_SKIP [30] [54] GVL 32 44 GVL [55] 45 GVL [56] 46 GVL ACCEPT_INPUT_SPACE_RETURN 49 GVL [30] 50 CGO DRAW_CHARACTER [53] 0 ACCEPT_INPUT_SPACE_RETURN ADD [55] 248 55 GRE [55] 247 54 CGO ACCEPT_INPUT_CARRY_SKIP_2 [30] [54] ADD [56] 255 56 ACCEPT_INPUT_CARRY_SKIP_2 ADD [51] 255 51 CGO ACCEPT_INPUT_CURSOR [30] 0 ACCEPT_INPUT_DELETE_SKIP GVL [24] 44 GVL ACCEPT_INPUT_CONVERT_RETURN 48 GVL [30] 49 CGO CONVERT_KEYCODE_INTO_ASCII [57] 0 ACCEPT_INPUT_CONVERT_RETURN EQU [47] 0 54 NOR [54] [54] 54 CGO ACCEPT_INPUT_LOOP [30] [54] SMM [51] [52] [47] ADD [51] 1 51 GVL [47] 44 GVL [55] 45 GVL [56] 46 GVL ACCEPT_INPUT_CHARACTER_RETURN 49 GVL [30] 50 CGO DRAW_CHARACTER [53] 0 ACCEPT_INPUT_CHARACTER_RETURN ADD [55] 8 55 GRE 1 [55] 54 CGO ACCEPT_INPUT_CARRY_SKIP [30] [54] ADD [56] 1 56 ACCEPT_INPUT_CARRY_SKIP ACCEPT_INPUT_CURSOR GVL 35 44 GVL [55] 45 GVL [56] 46 GVL ACCEPT_INPUT_CURSOR_RETURN_2 49 ADD [3] 4 50 # Block 7 starts here. CGO DRAW_CHARACTER [53] 0 ACCEPT_INPUT_CURSOR_RETURN_2 CGO ACCEPT_INPUT_LOOP [30] 0 # Accepts the address of a first string in 31 and 32, and a second string in 33 and 34. Stores a boolean value in 35 showing whether the strings are equal. # Returns to address at 40 and 41. Uses addresses 31 through 41. COMPARE_STRINGS GVL 0 35 ADD [3] 4 36 COMPARE_STRINGS_LOOP GMM [31] [32] 37 GMM [33] [34] 38 EQU [37] [38] 39 CGO [40] [41] [39] EQU [37] 3 37 EQU [38] 3 38 NOR [37] [37] 37 NOR [38] [38] 38 NOR [37] [38] 39 CGO COMPARE_STRINGS_SKIP [36] [39] GVL 1 35 CGO [40] [41] 0 COMPARE_STRINGS_SKIP ADD [31] 1 31 ADD [33] 1 33 CGO COMPARE_STRINGS_LOOP [36] 0 # Accepts the address of a first string in 31 and 32, and a second string in 33 and 34. Concatenates the contents of the second string to the first string. # Returns to address at 38 and 39. Uses addresses 31 through 39. CONCAT_STRINGS ADD [3] 4 35 CONCAT_STRINGS_LOOP GMM [31] [32] 36 EQU [36] 3 36 ADD [31] 1 31 CGO CONCAT_STRINGS_LOOP [35] [36] ADD [31] 255 31 CONCAT_STRINGS_LOOP_2 GMM [33] [34] 36 SMM [31] [32] [36] EQU [36] 3 36 ADD [31] 1 31 ADD [33] 1 33 CGO CONCAT_STRINGS_LOOP_2 [35] [36] CGO [38] [39] 0 # Accepts the address of a file name in 42 and 43. Returns the location of the file's entry in the file address index in 44. # Returns to address at 47 and 48. Uses addresses 42 through 48. FIND_PROG_BY_NAME GVL 12 44 ADD [3] 4 45 GVL 0 46 GMM FILE_NAMES_INDEX 0 32 GVL [43] 34 FIND_PROG_LOOP GMM [46] [32] 31 EQU [31] 25 31 CGO FIND_PROG_SKIP [45] [31] GVL 0 44 CGO [47] [48] 0 FIND_PROG_SKIP GVL [46] 31 GVL [42] 33 GVL FIND_PROG_COMPARE_RETURN 40 GVL [45] 41 CGO COMPARE_STRINGS [45] 0 FIND_PROG_COMPARE_RETURN ADD [46] 8 46 ADD [44] 2 44 CGO FIND_PROG_LOOP [45] [35] ADD [44] 254 44 CGO [47] [48] 0 # Accepts the address of a string in 31 and 32. Returns the length in 33. # Returns to address at 36 and 37. Uses addresses 31 through 37. STRING_LENGTH GVL 0 33 ADD [3] 4 34 STRING_LENGTH_LOOP GMM [31] [32] 35 EQU [35] 3 35 NOR [35] [35] 35 CGO [36] [37] [35] ADD [31] 1 31 ADD [33] 1 33 CGO STRING_LENGTH_LOOP [34] 0 # Accepts a position in 44 and 45, returns a VRAM address in 46 and 47. # Returns to address in 48 and 49. Uses addresses 44 through 49. CONVERT_POS_TO_ADDR GVL [45] 31 GVL 208 32 GVL CONVERT_POS_MULTIPLY_RETURN 42 ADD [3] 4 43 CGO MULTIPLY_BYTE [3] 0 CONVERT_POS_MULTIPLY_RETURN GVL [44] 4 GVL [40] 5 GVL [41] 6 GVL CONVERT_POS_ADD_RETURN 9 ADD [3] 5 10 CGO ADD_BYTE_TO_WORD [3] 0 # Block 8 starts here. CONVERT_POS_ADD_RETURN GVL [5] 46 GVL [6] 47 CGO [48] [49] 0 # The file name index. ADDRESS 0 50 "INFOS" 3 0 0 "OSLIB" 3 0 0 "OS" 3 0 0 0 0 0 "OSFONT" 3 0 "IMAGES" 3 0 "KEYS" 3 0 0 0 "TEMP" 3 0 0 0 "FNAMES" 3 0 "BOOP" 3 0 0 0 "OSTEXT" 3 0 "HEX" 3 0 0 0 0 "HEXLIB" 3 0 "PONG" 3 0 0 0 "LIFE" 3 0 0 0 "DRAW" 3 0 0 0 "MULTI" 3 0 0 "MUFFIN" 3 0 25 # Pong. ADDRESS 0 70 GMM PONG_INDEX 0 0 GMM OS_FONT_INDEX 0 1 GVL PONG_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 PONG_CLEAR_SCREEN_RETURN ADD [0] 3 201 GMM TEMP_INDEX 0 202 ADD [0] 1 203 GVL 96 180 GVL 63 181 GVL 1 182 GVL 255 183 GVL 0 184 GVL 0 185 SMM 0 [202] 24 SMM 1 [202] 63 SMM 2 [202] 0 SMM 3 [202] 3 SMM 4 [202] 168 SMM 5 [202] 63 SMM 6 [202] 0 SMM 7 [202] 3 GVL PONG_DRAW_SCORE_RETURN 196 GVL [0] 197 CGO PONG_DRAW_SCORE [201] 0 PONG_DRAW_SCORE_RETURN GVL 128 198 GVL 45 199 GVL 80 196 GVL 150 197 GVL 72 194 GVL 51 195 GVL 216 192 GVL 51 193 PONG_DRAW_LOOP SVM [198] [199] 11111111 SVM [196] [197] 11111111 SVM [194] [195] 11111111 SVM [192] [193] 11111111 ADD [198] 8 198 EQU [198] 0 190 CGO PONG_CARRY_SKIP [0] [190] ADD [199] 1 199 PONG_CARRY_SKIP ADD [196] 8 196 EQU [196] 0 190 CGO PONG_CARRY_SKIP_2 [0] [190] ADD [197] 1 197 PONG_CARRY_SKIP_2 ADD [194] 208 191 GRE [194] [191] 190 GVL [191] 194 CGO PONG_CARRY_SKIP_3 [0] [190] ADD [195] 1 195 PONG_CARRY_SKIP_3 ADD [192] 208 191 GRE [192] [191] 190 GVL [191] 192 CGO PONG_CARRY_SKIP_4 [0] [190] ADD [193] 1 193 PONG_CARRY_SKIP_4 EQU [198] 80 190 CGO PONG_DRAW_LOOP [0] [190] GVL 0 20 GVL 0 21 GTM 0 22 GVL 0 23 GVL PONG_KEY_RETURN 29 GVL [0] 30 PONG_LOOP CGO GET_KEY [3] 0 PONG_KEY_RETURN EQU [24] 00001010 199 CGO PONG_SKIP_Q [0] [199] GMM OS_INDEX 0 199 CGO 0 [199] 0 PONG_SKIP_Q EQU [24] 10001101 199 # The next block starts here. CGO PONG_SKIP_S [203] [199] SMM 2 [202] 1 PONG_SKIP_S EQU [24] 10001110 199 CGO PONG_SKIP_W [203] [199] SMM 2 [202] 255 PONG_SKIP_W EQU [24] 00100001 199 CGO PONG_SKIP_I [203] [199] SMM 6 [202] 255 PONG_SKIP_I EQU [24] 10100001 199 CGO PONG_SKIP_K [203] [199] SMM 6 [202] 1 PONG_SKIP_K EQU [24] 00010001 199 CGO PONG_SKIP_D [203] [199] SMM 2 [202] 0 PONG_SKIP_D EQU [24] 00011101 199 CGO PONG_SKIP_J [203] [199] SMM 6 [202] 0 PONG_SKIP_J ADD [0] 2 204 GVL 0 199 ADD [3] 4 200 PONG_LOOP_2 GMM [199] [202] 220 ADD [199] 1 198 GMM [198] [202] 221 ADD [199] 2 197 GMM [197] [202] 222 GVL [220] 44 ADD [221] 26 45 EQU [222] 1 197 CGO PONG_SKIP_ADD [203] [197] GVL [221] 45 PONG_SKIP_ADD GVL PONG_CONVERT_POS_RETURN 48 GVL [203] 49 CGO CONVERT_POS_TO_ADDR [200] 0 PONG_CONVERT_POS_RETURN SVM [46] [47] 00000000 GVL [220] 44 GVL [221] 45 EQU [222] 1 197 CGO PONG_SKIP_ADD_2 [203] [197] ADD [221] 26 45 PONG_SKIP_ADD_2 GVL PONG_CONVERT_POS_RETURN_2 48 CGO CONVERT_POS_TO_ADDR [200] 0 PONG_CONVERT_POS_RETURN_2 SVM [46] [47] 11111111 ADD [221] [222] 221 GRE 58 [221] 197 CGO PONG_SKIP_BOUNDARY [203] [197] GVL 58 221 PONG_SKIP_BOUNDARY GRE [221] 157 197 CGO PONG_SKIP_BOUNDARY_2 [203] [197] GVL 157 221 PONG_SKIP_BOUNDARY_2 ADD [220] 254 197 GRE [180] [197] 197 ADD [220] 9 196 GRE [196] [180] 196 ADD [197] [196] 197 EQU [197] 2 197 CGO PONG_SKIP_BOUNCE_2 [204] [197] ADD [221] 254 197 GRE [181] [197] 197 ADD [221] 26 196 GRE [196] [181] 196 ADD [197] [196] 197 EQU [197] 2 197 CGO PONG_PENALTY [203] [197] NOR [182] [182] 182 ADD [182] 1 182 CGO PONG_SKIP_BOUNCE_2 [204] 0 PONG_PENALTY ADD [199] 3 197 GMM [197] [202] 196 # Next block starts here. ADD [196] 255 196 SMM [197] [202] [196] GVL PONG_DRAW_SCORE_RETURN_2 196 GVL [204] 197 CGO PONG_DRAW_SCORE [201] 0 PONG_DRAW_SCORE_RETURN_2 GVL 96 180 GVL 63 181 PONG_SKIP_BOUNCE_2 SMM [198] [202] [221] ADD [199] 4 199 GRE [199] 4 198 CGO PONG_LOOP_2 [203] [198] SVM [184] [185] 00000000 GRE 59 [181] 199 GRE [181] 181 198 NOR [199] [198] 199 NOR [199] [199] 199 CGO PONG_SKIP_BOUNCE [204] [199] NOR [183] [183] 183 ADD [183] 1 183 PONG_SKIP_BOUNCE ADD [180] [182] 180 ADD [181] [183] 181 GVL [180] 44 GVL [181] 45 GVL PONG_CONVERT_POS_RETURN_3 48 GVL [204] 49 CGO CONVERT_POS_TO_ADDR [200] 0 PONG_CONVERT_POS_RETURN_3 GVL [46] 184 GVL [47] 185 BON 00000000 [184] 199 SVM [184] [185] [199] CGO PONG_LOOP [0] 0 ADDRESS 0 73 # Draws the pong score in 220 and 221. # Returns to the address in 196 and 197. PONG_DRAW_SCORE GMM 3 [202] 195 GRE [195] 0 193 CGO 0 [0] [193] ADD [195] 48 44 GVL 16 45 GVL 35 46 GVL PONG_DRAW_CHARACTER_RETURN 49 GVL [201] 50 ADD [3] 1 194 CGO DRAW_CHARACTER [194] 0 PONG_DRAW_CHARACTER_RETURN GMM 7 [202] 195 GRE [195] 0 193 CGO 0 [0] [193] ADD [195] 48 44 GVL 144 45 GVL 35 46 GVL PONG_DRAW_CHARACTER_RETURN_2 49 CGO DRAW_CHARACTER [194] 0 PONG_DRAW_CHARACTER_RETURN_2 CGO [196] [197] 0 # The operating system. ADDRESS 0 100 GMM OS_INDEX 0 0 # The address of the secondary active resource is stored in 1. GMM OS_FONT_INDEX 0 1 # The address of the tertiary active resource is stored in 2. GMM KEYCODES_INDEX 0 2 # The start of the current text line is stored in 254 and 255. GVL 8 254 GVL 35 255 GMM TEMP_INDEX 0 201 GMM OS_TEXT_INDEX 0 202 GMM FILE_NAMES_INDEX 0 203 GVL OS_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 OS_CLEAR_SCREEN_RETURN GVL INTRO_TEXT 51 GVL [202] 52 GVL OS_DRAW_TEXT_RETURN 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 OS_DRAW_TEXT_RETURN GVL COMPUTER 44 GMM IMAGES_INDEX 0 45 GVL 3 46 GVL 75 47 GVL 136 48 GVL 47 49 GVL OS_DRAW_IMAGE_RETURN 53 GVL [0] 54 ADD [3] 2 200 CGO DRAW_IMAGE [200] 0 OS_DRAW_IMAGE_RETURN OS_LOOP GVL 0 51 GVL [201] 52 GVL OS_ACCEPT_INPUT_RETURN 58 GVL [0] 59 ADD [3] 3 200 CGO ACCEPT_INPUT [200] 0 OS_ACCEPT_INPUT_RETURN GVL UNKNOWN_TEXT 51 GVL [202] 52 GVL 0 199 OS_PARSE_LOOP GMM [199] [201] 198 EQU [198] 32 197 CGO OS_PARSE_SKIP [0] [197] SMM [199] [201] 3 OS_PARSE_SKIP ADD [199] 1 199 EQU [198] 3 197 CGO OS_PARSE_LOOP [0] [197] GVL HELP_COMMAND_TEXT 31 GVL [202] 32 GVL 0 33 GVL [201] 34 GVL OS_COMPARE_STRINGS_RETURN 40 GVL [0] 41 ADD [3] 4 200 CGO COMPARE_STRINGS [200] 0 OS_COMPARE_STRINGS_RETURN CGO OS_SKIP_HELP [0] [35] GVL HELP_TEXT 51 OS_SKIP_HELP GVL VIEW_COMMAND_TEXT 31 GVL 0 33 GVL OS_COMPARE_STRINGS_RETURN_2 40 GVL [0] 41 CGO COMPARE_STRINGS [200] 0 OS_COMPARE_STRINGS_RETURN_2 ADD [0] 1 204 CGO OS_SKIP_VIEW [204] [35] SMM 0 [201] 3 GVL [201] 32 GVL 0 199 GVL [203] 34 GVL OS_CONCAT_STRINGS_RETURN 38 GVL [0] 39 ADD [3] 4 200 GVL 1 197 OS_VIEW_LOOP GVL 0 31 GVL [199] 33 CGO CONCAT_STRINGS [200] 0 OS_CONCAT_STRINGS_RETURN SMM [31] [32] 3 ADD [31] 255 31 SMM [31] [32] 10 # Block 101 starts around here. CGO OS_VIEW_SKIP [204] [197] SMM [31] [32] 32 OS_VIEW_SKIP NOR [197] [197] 197 ADD [199] 8 199 GMM [199] [203] 198 EQU [198] 25 198 CGO OS_VIEW_LOOP [0] [198] SMM [31] [32] 32 GVL 0 51 GVL [201] 52 OS_SKIP_VIEW GVL RUN_COMMAND_TEXT 31 GVL 0 33 GVL OS_COMPARE_STRINGS_RETURN_3 40 GVL [204] 41 CGO COMPARE_STRINGS [200] 0 OS_COMPARE_STRINGS_RETURN_3 CGO OS_SKIP_RUN [204] [35] GVL 4 42 GVL [201] 43 GVL OS_RUN_FIND_PROG_RETURN 47 GVL [204] 48 CGO FIND_PROG_BY_NAME [200] 0 OS_RUN_FIND_PROG_RETURN GRE [44] 0 198 CGO OS_RUN_SKIP [204] [198] GMM [44] 0 199 GVL [199] 0 CGO 0 [199] 0 OS_RUN_SKIP GVL NO_PROG_TEXT 51 OS_SKIP_RUN GVL OS_DRAW_TEXT_RETURN_2 59 GVL [204] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 OS_DRAW_TEXT_RETURN_2 CGO OS_LOOP [0] 0 # OS text. ADDRESS 0 102 INTRO_TEXT "WELCOME TO DUO OS" 10 "VER 1.0" 10 "BY JACK E" 3 UNKNOWN_TEXT "UNKNOWN COMMAND" 10 "PROTIP: TYPE HELP" 3 HELP_TEXT "LIST OF COMMANDS:" 10 "HELP, VIEW" 10 "RUN (NAME)" 3 HELP_COMMAND_TEXT "HELP" 3 VIEW_COMMAND_TEXT "VIEW" 3 RUN_COMMAND_TEXT "RUN" 3 NO_PROG_TEXT "PROGRAM NOT FOUND" 3 QUIT_COMMAND_TEXT "QUIT" 3 # Keycodes. ADDRESS 0 129 # Punctuation. 00010100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # Zero through nine. 00100010 00001011 10001111 00010011 00010010 10010111 10011011 00011110 00011111 00100011 # More punctuation. 0 0 0 0 0 0 0 # A through Z. 00001110 00011001 10010000 00010001 10010010 10010101 00011010 10011001 00100001 00011101 10100001 10100101 10011101 00011000 10100010 10100110 00001010 10010110 10001101 00010110 10011110 00010101 10001110 10010001 10011010 00001101 # Boop. ADDRESS 0 130 GMM BOOP_INDEX 0 0 GMM OS_FONT_INDEX 0 1 GMM KEYCODES_INDEX 0 2 GVL 8 254 GVL 35 255 GVL BOOP_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 BOOP_CLEAR_SCREEN_RETURN GVL BOOP_TEXT 51 GVL [0] 52 GVL BOOP_DRAW_TEXT_RETURN 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 BOOP_DRAW_TEXT_RETURN GVL 0 51 GMM TEMP_INDEX 0 52 GVL BOOP_ACCEPT_INPUT_RETURN 58 GVL [0] 59 ADD [3] 3 200 CGO ACCEPT_INPUT [200] 0 BOOP_ACCEPT_INPUT_RETURN GMM OS_INDEX 0 200 CGO 0 [200] 0 BOOP_TEXT "BOOP BOOP BOOP!" 10 "PRESS ENTER" 3 # Hex editor. ADDRESS 0 131 GMM HEX_INDEX 0 0 GMM OS_FONT_INDEX 0 1 GMM KEYCODES_INDEX 0 2 GVL 8 254 GVL 35 255 ADD [0] 3 201 GMM OS_INDEX 0 202 GMM OS_TEXT_INDEX 0 203 GMM TEMP_INDEX 0 204 ADD [0] 1 205 GMM HEX_LIB_INDEX 0 206 GVL 0 220 GVL 255 221 GVL 0 222 GVL 0 223 GVL HEX_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 HEX_CLEAR_SCREEN_RETURN GVL HEX_INTRO_TEXT 51 GVL [201] 52 HEX_LOOP GVL HEX_DRAW_TEXT_RETURN 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 HEX_DRAW_TEXT_RETURN GVL 0 51 GVL [204] 52 GVL HEX_ACCEPT_INPUT_RETURN 58 GVL [0] 59 ADD [3] 3 200 CGO ACCEPT_INPUT [200] 0 HEX_ACCEPT_INPUT_RETURN GVL UNKNOWN_TEXT 51 GVL [203] 52 GVL QUIT_COMMAND_TEXT 31 GVL [203] 32 GVL 0 33 GVL [204] 34 GVL HEX_COMPARE_STRINGS_RETURN 40 GVL [0] 41 ADD [3] 4 200 CGO COMPARE_STRINGS [200] 0 HEX_COMPARE_STRINGS_RETURN NOR [35] [35] 35 CGO 0 [202] [35] GVL HELP_COMMAND_TEXT 31 GVL 0 33 GVL HEX_COMPARE_STRINGS_RETURN_2 40 CGO COMPARE_STRINGS [200] 0 HEX_COMPARE_STRINGS_RETURN_2 CGO HEX_HELP_SKIP [0] [35] GVL HEX_HELP_TEXT 51 GVL [201] 52 CGO HEX_LOOP [0] 0 HEX_HELP_SKIP GMM 2 [204] 199 EQU [199] 73 199 CGO HEX_EDIT_SKIP [0] [199] GVL 5 42 GVL [204] 43 GVL HEX_FIND_PROG_RETURN 47 GVL [0] 48 CGO FIND_PROG_BY_NAME [200] 0 HEX_FIND_PROG_RETURN GVL 0 220 GVL 255 221 GRE [44] 0 199 CGO HEX_SET_BOUNDS_SKIP [0] [199] GMM [44] 0 220 ADD [44] 1 44 GMM [44] 0 221 HEX_SET_BOUNDS_SKIP GVL 0 222 GVL [220] 223 CGO HEX_DEFAULT_OUTPUT [205] 0 HEX_EDIT_SKIP GVL 0 31 GVL [204] 32 GVL HEX_STRING_LENGTH_RETURN 36 GVL [0] 37 CGO STRING_LENGTH [200] 0 HEX_STRING_LENGTH_RETURN EQU [33] 4 199 CGO HEX_ADDRESS_SKIP [205] [199] # Block 132 starts here. GMM 0 [204] 31 GMM 1 [204] 32 GVL HEX_CONVERT_HEX_RETURN 38 GVL [205] 39 CGO CONVERT_HEX_TO_BYTE [206] 0 HEX_CONVERT_HEX_RETURN GVL [33] 222 GMM 2 [204] 31 GMM 3 [204] 32 GVL HEX_CONVERT_HEX_RETURN_2 38 CGO CONVERT_HEX_TO_BYTE [206] 0 HEX_CONVERT_HEX_RETURN_2 GVL [33] 223 CGO HEX_DEFAULT_OUTPUT [205] 0 HEX_ADDRESS_SKIP EQU [33] 11 199 CGO HEX_DATA_SKIP [205] [199] GVL 0 199 GVL HEX_CONVERT_HEX_RETURN_3 38 GVL [205] 39 HEX_DATA_LOOP GMM [199] [204] 31 ADD [199] 1 199 GMM [199] [204] 32 ADD [199] 2 199 CGO CONVERT_HEX_TO_BYTE [206] 0 HEX_CONVERT_HEX_RETURN_3 SMM [222] [223] [33] ADD [222] 1 222 EQU [222] 0 198 CGO HEX_DATA_CARRY_SKIP [205] [198] ADD [223] 1 223 HEX_DATA_CARRY_SKIP GRE [199] 10 198 CGO HEX_DATA_LOOP [205] [198 CGO HEX_DEFAULT_OUTPUT [205] 0 HEX_DATA_SKIP EQU [33] 0 199 CGO HEX_ADVANCE_SKIP [205] [199] ADD [222] 4 222 EQU [222] 0 199 CGO HEX_ADVANCE_CARRY_SKIP [205] [199] ADD [223] 1 223 HEX_ADVANCE_CARRY_SKIP CGO HEX_DEFAULT_OUTPUT [205] 0 HEX_ADVANCE_SKIP CGO HEX_LOOP [0] 0 HEX_DEFAULT_OUTPUT GRE [220] [223] 199 GRE [223] [221] 198 NOR [198] [199] 199 NOR [199] [199] 199 CGO HEX_BOUND_ERROR_SKIP [205] [199] GVL 0 222 GVL [220] 223 GVL HEX_BOUND_ERROR_TEXT 51 GVL [201] 52 CGO HEX_LOOP [0] 0 HEX_BOUND_ERROR_SKIP GVL [222] 31 GVL HEX_CONVERT_BYTE_RETURN 38 GVL [205] 39 CGO CONVERT_BYTE_TO_HEX [206] 0 HEX_CONVERT_BYTE_RETURN SMM 0 [204] [32] SMM 1 [204] [33] GVL [223] 31 GVL HEX_CONVERT_BYTE_RETURN_2 38 CGO CONVERT_BYTE_TO_HEX [206] 0 HEX_CONVERT_BYTE_RETURN_2 SMM 2 [204] [32] SMM 3 [204] [33] SMM 4 [204] 58 GVL 0 199 GVL 5 198 HEX_DEFAULT_OUTPUT_LOOP ADD [222] [199] 197 GMM [197] [223] 31 GVL HEX_CONVERT_BYTE_RETURN_3 38 CGO CONVERT_BYTE_TO_HEX [206] 0 HEX_CONVERT_BYTE_RETURN_3 SMM [198] [204] 32 ADD [198] 1 198 SMM [198] [204] [32] ADD [198] 1 198 SMM [198] [204] [33] ADD [198] 1 198 ADD [199] 1 199 GRE [199] 3 197 CGO HEX_DEFAULT_OUTPUT_LOOP [205] [197] SMM 17 [204] 3 GVL 0 51 GVL [204] 52 CGO HEX_LOOP [0] 0 # Ends on block 133 ADDRESS 0 134 HEX_INTRO_TEXT "HEX EDITOR" 10 "FOR MAIN MEMORY" 3 HEX_HELP_TEXT "LIST OF COMMANDS:" 10 "HELP, QUIT" 10 "EDIT (NAME)" 10 "XXXX FOR ADDR" 10 "XX XX XX XX FOR DATA" 10 "NOTHING FOR ADVANCE" 3 HEX_BOUND_ERROR_TEXT "OUT OF BOUNDS" 3 # Hex library. ADDRESS 0 141 # Accepts a byte in 31, outputs hex ASCII digits in 32 and 33. # Returns to address in 38 and 39. Uses addresses 31 through 39. CONVERT_BYTE_TO_HEX GMM HEX_LIB_INDEX 0 34 NOR [31] 00001111 32 NOR [32] 00001111 32 GVL 0 33 GVL 4 35 GVL 0 36 CONVERT_BYTE_LOOP BGT [31] [35] 37 CGO CONVERT_BYTE_SKIP [34] [37] BON [33] [36] 33 CONVERT_BYTE_SKIP ADD [35] 1 35 ADD [36] 1 36 GRE [35] 7 37 CGO CONVERT_BYTE_LOOP [34] [37] GRE [32] 9 37 CGO CONVERT_BYTE_SKIP_2 [34] [37] ADD [32] 7 32 CONVERT_BYTE_SKIP_2 GRE [33] 9 37 CGO CONVERT_BYTE_SKIP_3 [34] [37] ADD [33] 7 33 CONVERT_BYTE_SKIP_3 ADD [32] 48 32 ADD [33] 48 33 CGO [38] [39] 0 # Accepts hex ASCII digits in 31 and 32, returns a byte in 33. # Returns to address in 38 and 39. Uses addresses 31 through 39. CONVERT_HEX_TO_BYTE GMM HEX_LIB_INDEX 0 34 ADD [31] 208 33 ADD [32] 208 32 GRE [33] 9 35 CGO CONVERT_HEX_SKIP [34] [35] ADD [33] 249 33 CONVERT_HEX_SKIP GRE [32] 9 35 CGO CONVERT_HEX_SKIP_2 [34] [35] ADD [32] 249 32 CONVERT_HEX_SKIP_2 GVL 0 35 GVL 4 36 CONVERT_HEX_LOOP BGT [32] [35] 37 CGO CONVERT_HEX_SKIP_3 [34] [37] BON [33] [36] 33 CONVERT_HEX_SKIP_3 ADD [35] 1 35 ADD [36] 1 36 GRE [35] 4 37 CGO CONVERT_HEX_LOOP [34] [37] CGO [38] [39] 0 # Images. ADDRESS 0 150 COMPUTER 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11000000 00011111 11111111 11000000 00011111 11111111 11001000 10011110 11101111 11001000 10011110 11101111 11000000 00011111 11111111 11000000 00011111 11111111 11010010 01011100 00000111 11010010 01011110 00001111 11001101 10011111 00011111 11000000 00011111 11111111 11000000 00011111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 00000000 00000000 00100000 11111111 11111000 00100000 10101010 10101110 01000000 11111111 11111001 10000000 10101010 10101000 00000000 11111111 11111000 00000000 10101010 10101000 00000000 11111111 11111000 00000000 # Game of life. ADDRESS 0 160 GMM LIFE_INDEX 0 0 GMM TEMP_INDEX 0 201 ADD [0] 1 202 ADD [201] 1 203 ADD [201] 2 204 GVL LIFE_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 LIFE_CLEAR_SCREEN_RETURN GVL 0 20 GVL 0 21 GTM 0 22 GVL 0 23 GVL 1 220 LIFE_RESTART GVL 24 221 GVL 24 222 GVL 0 223 GVL 1 224 GVL 0 199 ADD [3] 4 200 LIFE_START_LOOP GMM [199] [220] 198 SMM [199] [201] [198] GVL [221] 44 GVL [222] 45 GVL LIFE_CONVERT_POS_RETURN 48 GVL [0] 49 CGO CONVERT_POS_TO_ADDR [200] 0 LIFE_CONVERT_POS_RETURN SMM [199] [203] [46] SMM [199] [204] [47] ADD [221] 8 221 GRE [221] 144 198 CGO LIFE_CARRY_SKIP [0] [198] GVL 24 221 ADD [222] 11 222 LIFE_CARRY_SKIP ADD [199] 1 199 EQU [199] 0 198 CGO LIFE_START_LOOP [0] [198] GVL 1 221 GVL 17 223 GVL LIFE_KEY_RETURN 29 GVL [0] 30 LIFE_LOOP CGO GET_KEY [3] 0 LIFE_KEY_RETURN EQU [24] 00001010 199 CGO LIFE_SKIP_Q [0] [199] GMM OS_INDEX 0 199 CGO 0 [199] 0 LIFE_SKIP_Q EQU [24] 10010110 199 CGO LIFE_SKIP_R [0] [199] ADD [220] 1 220 CGO LIFE_RESTART [0] 0 LIFE_SKIP_R CGO LIFE_SKIP_DRAW_CELL [0] [224] GMM [223] [201] 199 GMM [223] [203] 46 GMM [223] [204] 47 GVL 00000000 198 CGO LIFE_SKIP_IS_ON [0] [199] GVL 11111111 198 LIFE_SKIP_IS_ON GVL 0 199 LIFE_DRAW_CELL_LOOP SVM [46] [47] [198] ADD [46] 208 197 GRE [46] [197] 196 GVL [197] 46 CGO LIFE_SKIP_CARRY_2 [0] [196] ADD [47] 1 47 LIFE_SKIP_CARRY_2 ADD [199] 1 199 GRE [199] 10 197 CGO LIFE_DRAW_CELL_LOOP [0] [197] CGO LIFE_SKIP_EVAL_CELL [202] 0 LIFE_SKIP_DRAW_CELL GVL 239 180 GVL 255 181 GVL 0 182 GVL 0 183 LIFE_GET_NEIGHBORS_LOOP ADD [223] [180] 199 # Next block starts around here. GMM [199] [203] 46 GMM [199] [204] 47 GVM [46] [47] 199 EQU [180] 0 198 CGO SKIP_LIFE_CURRENT_CELL [202] [198] GVL [199] 183 CGO SKIP_LIFE_ADD_NEIGHBOR [202] 0 SKIP_LIFE_CURRENT_CELL CGO SKIP_LIFE_ADD_NEIGHBOR [202] [199] ADD [182] 1 182 SKIP_LIFE_ADD_NEIGHBOR ADD [180] 1 180 ADD [181] 1 181 EQU [181] 2 199 CGO LIFE_SKIP_CARRY_3 [202] [199] ADD [180] 13 180 GVL 255 181 LIFE_SKIP_CARRY_3 EQU [180] 31 199 CGO LIFE_GET_NEIGHBORS_LOOP [0] [199] GVL 0 199 EQU [182] 3 198 CGO SKIP_LIVE_CELL [202] [198] GVL 1 199 SKIP_LIVE_CELL CGO SKIP_LIVE_CELL_2 [202] [183] EQU [182] 2 198 CGO SKIP_LIVE_CELL_2 [202] [198] GVL 1 199 SKIP_LIVE_CELL_2 SMM [223] [201] [199] LIFE_SKIP_EVAL_CELL ADD [221] 1 221 GRE [221] 14 199 CGO SKIP_NEXT_ROW [202] [199] GVL 1 221 ADD [223] 2 223 SKIP_NEXT_ROW ADD [223] 1 223 EQU [223] 241 199 CGO LIFE_LOOP [0] [199] GVL 17 223 NOR [224] [224] 224 CGO LIFE_LOOP [0] 0 # Drawing program. ADDRESS 0 170 GMM DRAW_INDEX 0 0 GMM OS_FONT_INDEX 0 1 GVL 8 254 GVL 35 255 GVL DRAW_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 DRAW_CLEAR_SCREEN_RETURN CGO DRAW_SKIP_TEXT [0] 0 DRAW_INTRO_TEXT "DRAW STUFF D" 3 DRAW_SKIP_TEXT GVL DRAW_INTRO_TEXT 51 GVL [0] 52 GVL DRAW_DRAW_TEXT_RETURN 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 DRAW_DRAW_TEXT_RETURN ADD [0] 1 201 GVL 64 220 GVL 100 221 GVL 128 222 GVL 81 223 GVL 0 224 SVM [222] [223] 10000000 GVL 0 20 GVL 0 21 GTM 0 22 GVL 0 23 GVL DRAW_KEY_RETURN 29 GVL [0] 30 DRAW_LOOP CGO GET_KEY [3] 0 DRAW_KEY_RETURN EQU [24] 00001010 199 CGO DRAW_SKIP_Q [0] [199] GMM OS_INDEX 0 199 CGO 0 [199] 0 DRAW_SKIP_Q EQU [24] 10010110 199 CGO DRAW_SKIP_R [0] [199] CGO 0 [0] 0 DRAW_SKIP_R EQU [24] 10010010 199 CGO DRAW_SKIP_E [0] [199] NOR [224] 01111111 224 ADD [224] 68 44 GVL 112 45 GVL 35 46 GVL DRAW_DRAW_CHARACTER_RETURN 49 GVL [0] 50 ADD [3] 1 200 CGO DRAW_CHARACTER [200] 0 DRAW_DRAW_CHARACTER_RETURN DRAW_SKIP_E GVL 0 198 EQU [24] 10001110 199 CGO DRAW_SKIP_W [0] [199] ADD [221] 255 221 GVL 1 198 DRAW_SKIP_W EQU [24] 10001101 199 CGO DRAW_SKIP_S [0] [199] ADD [221] 1 221 GVL 1 198 DRAW_SKIP_S EQU [24] 00001110 199 CGO DRAW_SKIP_A [0] [199] ADD [220] 255 220 GVL 1 198 DRAW_SKIP_A EQU [24] 00010001 199 CGO DRAW_SKIP_D [0] [199] ADD [220] 1 220 GVL 1 198 DRAW_SKIP_D CGO DRAW_LOOP [0] [198] GVL [220] 44 GVL [221] 45 GVL DRAW_CONVERT_POS_RETURN 48 GVL [201] 49 ADD [3] 4 200 # Next block starts here. CGO CONVERT_POS_TO_ADDR [200] 0 DRAW_CONVERT_POS_RETURN CGO DRAW_SKIP_ERASE [201] [224] GVM [222] [223] 199 BON 00000000 [222] 198 NOR [199] [198] 199 NOR [199] [198] 199 SVM [222] [223] [199] DRAW_SKIP_ERASE GVL [46] 222 GVL [47] 223 GVM [222] [223] 199 BON [199] [222] 199 SVM [222] [223] [199] CGO DRAW_LOOP [0] 0 # Multiplication. ADDRESS 0 180 GMM MULTI_INDEX 0 0 GMM OS_FONT_INDEX 0 1 GMM KEYCODES_INDEX 0 2 GVL 8 254 GVL 35 255 GVL MULTI_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 MULTI_CLEAR_SCREEN_RETURN GMM TEMP_INDEX 0 201 ADD [0] 2 202 GMM OS_TEXT_INDEX 0 203 GMM OS_INDEX 0 204 ADD [201] 1 205 ADD [0] 1 206 GVL 0 220 GVL MULTI_INTRO_TEXT 51 GVL [202] 52 GVL MULTI_DRAW_TEXT_RETURN 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 MULTI_DRAW_TEXT_RETURN MULTI_LOOP GVL MULTI_FIRST_TEXT 51 GVL 0 199 CGO MULTI_SKIP_SECOND_TEXT [0] [220] GVL MULTI_SECOND_TEXT 51 GVL 128 199 MULTI_SKIP_SECOND_TEXT GVL [202] 52 GVL MULTI_DRAW_TEXT_RETURN_2 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 MULTI_DRAW_TEXT_RETURN_2 GVL [199] 51 GVL [201] 52 GVL MULTI_ACCEPT_INPUT_RETURN 58 GVL [0] 59 ADD [3] 3 200 CGO ACCEPT_INPUT [200] 0 MULTI_ACCEPT_INPUT_RETURN GVL QUIT_COMMAND_TEXT 31 GVL [203] 32 GVL 0 33 GVL [201] 34 GVL MULTI_COMPARE_STRINGS_RETURN 40 GVL [0] 41 ADD [3] 4 200 CGO COMPARE_STRINGS [200] 0 MULTI_COMPARE_STRINGS_RETURN NOR [35] [35] 35 CGO 0 [204] [35] GVL [220] 199 NOR [220] [220] 220 CGO MULTI_LOOP [0] [199] GVL MULTI_PRODUCT_TEXT 51 GVL [202] 52 GVL MULTI_DRAW_TEXT_RETURN_3 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 MULTI_DRAW_TEXT_RETURN_3 GVL 0 31 GVL [201] 32 GVL MULTI_STRING_LENGTH_RETURN 36 GVL [0] 37 ADD [3] 4 200 CGO STRING_LENGTH [200] 0 MULTI_STRING_LENGTH_RETURN GVL [33] 180 GVL 128 31 GVL MULTI_STRING_LENGTH_RETURN_2 36 CGO STRING_LENGTH [200] 0 MULTI_STRING_LENGTH_RETURN_2 GVL [33] 181 GVL 0 199 MULTI_PREPARE_LOOP GMM [199] [201] 198 ADD [198] 208 198 SMM [199] [201] [198] SMM [199] [205] 0 ADD [199] 1 199 EQU [199] 0 198 CGO MULTI_PREPARE_LOOP [0] [198] GVL 255 182 # Next block starts here. MULTI_MULTIPLY_LOOP ADD [180] 255 180 ADD [181] 128 183 GVL [182] 185 MULTI_MULTIPLY_LOOP_2 ADD [183] 255 183 GMM [180] [201] 31 GMM [183] [201] 32 GVL MULTI_MULTIPLY_RETURN 42 GVL [206] 43 CGO MULTIPLY_BYTE [3] 0 MULTI_MULTIPLY_RETURN GMM [185] [205] 199 ADD [199] [40] 199 ADD [185] 255 198 MULTI_CARRY_LOOP GRE [199] 9 197 CGO MULTI_CARRY_SKIP [206] [197] GMM [198] [205] 197 ADD [197] 1 197 SMM [198] [205] [197] ADD [199] 246 199 CGO MULTI_CARRY_LOOP [206] 0 MULTI_CARRY_SKIP SMM [185] [205] [199] ADD [185] 255 185 EQU [183] 128 199 CGO MULTI_MULTIPLY_LOOP_2 [206] [199] ADD [182] 255 182 EQU [180] 0 199 CGO MULTI_MULTIPLY_LOOP [206] [199] GVL 0 199 GVL 0 198 MULTI_OUTPUT_LOOP GMM [185] [205] 197 ADD [197] 48 197 SMM [199] [201] [197] ADD [185] 1 185 ADD [199] 1 199 ADD [198] 1 198 EQU [198] 16 197 CGO MULTI_SKIP_NEW_LINE [206] [197] SMM [199] [201] 10 ADD [199] 1 199 GVL 0 198 MULTI_SKIP_NEW_LINE EQU [185] 0 197 CGO MULTI_OUTPUT_LOOP [206] [197] SMM [199] [201] 3 GVL 0 51 GVL [201] 52 GVL MULTI_DRAW_TEXT_RETURN_4 59 GVL [206] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 MULTI_DRAW_TEXT_RETURN_4 CGO MULTI_LOOP [0] 0 ADDRESS 0 182 MULTI_INTRO_TEXT "MULTIPLICATION FUN" 3 MULTI_FIRST_TEXT "FIRST NUMBER:" 3 MULTI_SECOND_TEXT "SECOND NUMBER:" 3 MULTI_PRODUCT_TEXT "PRODUCT:" 3 # Squid wants a muffin. ADDRESS 0 190 GMM MUFFIN_INDEX 0 0 GMM OS_FONT_INDEX 0 1 GMM KEYCODES_INDEX 0 2 GVL 224 254 GVL 26 255 GVL MUFFIN_CLEAR_SCREEN_RETURN 11 GVL [0] 12 CGO CLEAR_SCREEN [3] 0 MUFFIN_CLEAR_SCREEN_RETURN GVL 0 20 GVL 0 21 GTM 0 22 GVL 0 23 GMM TEMP_INDEX 0 201 ADD [0] 3 202 # GMM OS_INDEX 0 203 ADD [0] 4 204 ADD [0] 1 205 ADD [0] 2 206 SMM 81 [204] 33 ADD [0] 5 199 SMM 39 [199] 33 SMM 94 [199] 33 GVL 38 220 GVL 45 221 GVL 1 222 GVL 55 223 GVL 0 224 GVL 30 225 GVL 0 226 GVL 1 227 GVL MUFFIN_INTRO_TEXT 51 GVL [202] 52 GVL MUFFIN_DRAW_TEXT_RETURN 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 MUFFIN_DRAW_TEXT_RETURN GVL MUFFIN_DRAW_SCREEN_RETURN 58 GVL [0] 59 CGO MUFFIN_DRAW_SCREEN [202] 0 MUFFIN_DRAW_SCREEN_RETURN GVL MUFFIN_KEY_RETURN 29 GVL [0] 30 MUFFIN_LOOP GVL [220] 180 GVL [221] 181 GVL [222] 182 CGO GET_KEY [3] 0 MUFFIN_KEY_RETURN EQU [24] 00001010 199 CGO MUFFIN_SKIP_Q [0] [199] GMM OS_INDEX 0 199 CGO 0 [199] 0 MUFFIN_SKIP_Q CGO MUFFIN_LOOP [0] [227] EQU [24] 10001110 199 CGO MUFFIN_SKIP_W [0] [199] ADD [221] 245 181 ADD [222] 240 182 MUFFIN_SKIP_W EQU [24] 10001101 199 CGO MUFFIN_SKIP_S [0] [199] ADD [221] 11 181 ADD [222] 16 182 MUFFIN_SKIP_S EQU [24] 00001110 199 CGO MUFFIN_SKIP_A [0] [199] ADD [220] 248 180 ADD [222] 255 182 GVL 66 223 MUFFIN_SKIP_A EQU [24] 00010001 199 CGO MUFFIN_SKIP_D [0] [199] ADD [220] 8 180 ADD [222] 1 182 # Next block starts here. GVL 55 223 MUFFIN_SKIP_D GTM 1 199 NOR [199] 01111111 199 ADD [199] [226] 199 CGO MUFFIN_SKIP_DECREMENT_TIME [205] [199] ADD [225] 255 225 GVL [225] 198 GVL 0 199 MUFFIN_CARRY_LOOP GRE [198] 9 197 CGO MUFFIN_SKIP_CARRY_LOOP [205] [197] ADD [198] 246 198 ADD [199] 1 199 CGO MUFFIN_CARRY_LOOP [205] 0 MUFFIN_SKIP_CARRY_LOOP ADD [198] 48 198 ADD [199] 48 199 SMM 0 [201] [199] SMM 1 [201] [198] SMM 2 [201] 3 GVL 120 254 GVL 27 255 GVL 0 51 GVL [201] 52 GVL MUFFIN_DRAW_TEXT_RETURN_2 59 GVL [205] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 MUFFIN_DRAW_TEXT_RETURN_2 NOR [226] [226] 226 GRE [225] 0 199 ADD [0] 5 52 CGO MUFFIN_FINISH_TEXT [206] [199] MUFFIN_SKIP_DECREMENT_TIME GMM [222] [204] 199 GRE 11 [199] 199 CGO MUFFIN_SKIP_FALL [205] [199] ADD [222] 16 199 GMM [199] [204] 198 EQU [198] 11 197 EQU [198] 22 198 NOR [197] [198] 198 CGO MUFFIN_SKIP_FALL [205] [198] ADD [221] 11 181 GVL [199] 182 MUFFIN_SKIP_FALL EQU [222] [182] 199 NOR [199] [199] 199 CGO MUFFIN_LOOP [0] [199] GRE [180] 150 199 CGO MUFFIN_SKIP_SCROLL [205] [199] ADD [204] 1 204 ADD [220] 136 220 ADD [222] 241 222 GVL MUFFIN_LOOP 58 GVL [0] 59 CGO MUFFIN_DRAW_SCREEN [202] 0 MUFFIN_SKIP_SCROLL GRE 30 [180] 199 CGO MUFFIN_SKIP_SCROLL_2 [205] [199] ADD [204] 255 204 ADD [220] 120 220 ADD [222] 15 222 GVL MUFFIN_LOOP 58 GVL [0] 59 CGO MUFFIN_DRAW_SCREEN [202] 0 MUFFIN_SKIP_SCROLL_2 GMM [182] [204] 199 EQU [199] 11 198 NOR [198] [198] 198 CGO MUFFIN_LOOP [0] [198] EQU [199] 44 198 NOR [198] [198] 198 ADD [0] 6 52 CGO MUFFIN_FINISH_TEXT [206] [198] EQU [199] 33 198 CGO MUFFIN_SKIP_COLLECTION [206] [198] SMM [182] [204] 0 ADD [224] 1 224 GRE [224] 2 198 # Next block starts here. CGO MUFFIN_SKIP_COLLECTION [206] [198] ADD [0] 4 52 CGO MUFFIN_FINISH_TEXT [206] 0 MUFFIN_SKIP_COLLECTION GVL [220] 44 GVL [221] 45 GMM [222] [204] 50 GVL MUFFIN_DRAW_SPRITE_RETURN 54 GVL [206] 55 CGO MUFFIN_DRAW_SPRITE [202] 0 MUFFIN_DRAW_SPRITE_RETURN GVL [180] 220 GVL [181] 221 GVL [182] 222 GVL [220] 44 GVL [221] 45 GVL [223] 50 GVL MUFFIN_DRAW_SPRITE_RETURN_2 54 GVL [206] 55 CGO MUFFIN_DRAW_SPRITE [202] 0 MUFFIN_DRAW_SPRITE_RETURN_2 CGO MUFFIN_LOOP [0] 0 MUFFIN_FINISH_TEXT GVL 0 227 GVL 224 254 GVL 26 255 GVL 224 51 GVL MUFFIN_LOOP 59 GVL [0] 60 ADD [3] 1 200 CGO DRAW_TEXT [200] 0 ADDRESS 0 193 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 11111111 11010101 10101011 11010101 10101011 11010101 10101011 11010101 10101011 11010101 11111111 10000001 10000001 11111111 10000001 10000001 10000001 10000001 10000001 11111111 10000001 10000001 00000000 00000000 00011000 00100100 01000010 01000010 01111110 00100100 00100100 00111100 00000000 00000000 00101000 01111100 00111000 01111100 00111000 01111100 00111000 01111100 00101000 00000000 00111100 00111100 01111110 01111110 11101101 11101101 11111111 00111100 01111110 11101010 10101010 00111100 00111100 01111110 01111110 10110111 10110111 11111111 00111100 01111110 01010111 01010101 MUFFIN_INTRO_TEXT "GET MUFFINS TIME: " 3 # Accepts X position in 44 and Y position in 45 and a sprite address in 50. # Returns to address in 54 and 55. Uses addresses 44 through 55. MUFFIN_DRAW_SPRITE GVL MUFFIN_CONVERT_POS_RETURN 48 GVL [202] 49 ADD [3] 4 200 CGO CONVERT_POS_TO_ADDR [200] 0 MUFFIN_CONVERT_POS_RETURN GVL 0 51 MUFFIN_DRAW_SPRITE_LOOP GMM [50] [202] 52 SVM [46] [47] [52] ADD [46] 208 52 GRE [46] [52] 53 GVL [52] 46 CGO MUFFIN_DRAW_SPRITE_CARRY_SKIP [202] [53] ADD [47] 1 47 MUFFIN_DRAW_SPRITE_CARRY_SKIP ADD [50] 1 50 ADD [51] 1 51 GRE [51] 10 52 CGO MUFFIN_DRAW_SPRITE_LOOP [202] [52] CGO [54] [55] 0 # Returns to address in 58 and 59. Uses addresses 44 through 59. MUFFIN_DRAW_SCREEN GVL 30 44 GVL 45 45 GVL 0 56 GVL MUFFIN_SCREEN_DRAW_SPRITE_RETURN 54 GVL [202] 55 MUFFIN_DRAW_SCREEN_LOOP GMM [56] [204] 50 CGO MUFFIN_DRAW_SPRITE [202] 0 MUFFIN_SCREEN_DRAW_SPRITE_RETURN ADD [56] 1 56 ADD [44] 8 44 GRE [44] 150 57 CGO MUFFIN_SCREEN_NEXT_ROW_SKIP [202] [57] GVL 30 44 ADD [45] 11 45 MUFFIN_SCREEN_NEXT_ROW_SKIP EQU [56] 224 57 CGO MUFFIN_DRAW_SCREEN_LOOP [202] [57] GVL [220] 44 GVL [221] 45 GVL MUFFIN_SCREEN_DRAW_SPRITE_RETURN_2 54 GVL [223] 50 CGO MUFFIN_DRAW_SPRITE [202] 0 MUFFIN_SCREEN_DRAW_SPRITE_RETURN_2 CGO [58] [59] 0 ADDRESS 0 194 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 44 00 00 00 00 00 00 11 00 00 00 00 00 00 00 00 44 00 00 00 00 00 00 11 11 11 11 11 11 11 22 11 11 11 22 11 11 11 11 11 00 00 00 00 11 11 22 00 00 00 22 11 11 00 00 11 33 00 00 00 00 11 22 00 00 00 22 11 00 00 00 11 11 22 11 11 00 11 11 11 11 11 11 11 00 00 00 11 00 22 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 22 00 00 11 11 11 11 11 11 11 11 11 11 11 11 00 22 00 00 00 00 11 00 00 00 11 00 00 00 00 11 11 11 11 22 00 00 11 00 00 00 11 00 00 00 00 11 44 00 00 22 00 00 00 00 00 00 00 00 00 22 11 11 00 00 44 22 00 00 00 00 00 00 00 00 00 22 00 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 "YOU GOT EVERY MUFFIN " 3 ADDRESS 0 195 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 33 00 00 00 00 00 00 00 00 11 11 11 11 22 11 22 11 22 11 22 11 22 11 11 11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 44 44 33 00 00 00 00 00 44 00 00 00 00 00 00 00 00 22 22 22 00 00 00 00 00 00 00 00 00 00 44 00 00 00 11 22 11 00 00 00 00 00 00 00 44 00 00 00 00 00 00 00 00 00 00 00 00 22 11 11 00 00 00 11 11 11 00 00 00 00 00 00 00 22 22 22 22 22 00 00 00 00 00 00 11 11 11 11 11 11 00 00 00 22 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 11 22 00 00 11 11 11 44 44 44 44 44 44 44 44 44 44 11 11 11 "KILLED BY TIME " 3 ADDRESS 0 196 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 11 00 00 00 00 00 44 44 44 44 44 00 00 00 11 11 11 00 00 00 00 44 22 22 22 44 22 44 00 00 00 00 11 11 11 11 22 22 22 44 22 22 22 22 44 00 00 00 11 00 00 44 22 22 22 44 22 22 22 44 22 44 00 00 11 00 00 44 22 22 22 11 11 11 22 22 22 44 00 00 11 22 00 44 44 22 22 11 11 11 22 22 22 44 00 00 11 22 22 22 22 11 44 22 22 22 44 22 22 44 00 00 11 00 00 44 22 22 22 22 22 22 44 22 22 44 00 00 11 00 00 00 44 22 44 22 22 22 22 22 22 00 00 00 11 00 00 00 00 44 22 22 44 22 22 44 22 00 00 00 11 00 00 00 00 00 44 44 44 44 44 00 22 00 11 11 11 00 00 00 00 00 00 00 00 00 00 00 22 00 00 00 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 "KILLED BY SPIKES " 3 # Default font glyphs. ADDRESS 0 200 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 11000000 11000000 11000000 11000000 11000000 11000000 00000000 00000000 11000000 11000000 01101100 01101100 00100100 00100100 00000000 00000000 00000000 00000000 00000000 00000000 11111110 11111110 11111110 11111110 11111110 11111110 11111110 11111110 11111110 11111110 00110000 01111100 11111100 11000000 11111000 01111100 00001100 11111100 11111000 00110000 11001100 11001100 00011000 00011000 00110000 00110000 01100000 01100000 11001100 11001100 01110000 11111000 11011000 11011000 01111011 01111111 11001110 11000110 11111111 01111111 00110000 00110000 00010000 00010000 00000000 00000000 00000000 00000000 00000000 00000000 00000110 00001110 00011100 00011000 00011000 00011000 00011000 00011100 00001110 00000110 11000000 11100000 01110000 00110000 00110000 00110000 00110000 01110000 11100000 11000000 10101000 01110000 11111000 01110000 10101000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00110000 00110000 11111100 11111100 00110000 00110000 00000000 00000000 00000000 00000000 00000000 00000000 11000000 11000000 01000000 01000000 00000000 00000000 00000000 00000000 00000000 00000000 11111100 11111100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 11000000 11000000 00001100 00001100 00011000 00011000 00110000 00110000 01100000 01100000 11000000 11000000 01111100 11111110 11000110 11001110 11010110 11010110 11100110 11000110 11111110 01111100 00110000 01110000 11110000 11110000 00110000 00110000 00110000 00110000 11111100 11111100 11111100 11111110 00000110 00000110 01111110 11111100 11000000 11000000 11111110 11111110 11111100 11111110 00000110 00000110 00111100 00111100 00000110 00000110 11111110 11111100 11000110 11000110 11000110 11000110 11111110 11111110 00000110 00000110 00000110 00000110 11111110 11111110 11000000 11000000 11111100 11111110 00000110 00000110 11111110 11111100 01111110 11111110 11000000 11000000 11111100 11111110 11000110 11000110 11111110 01111100 11111100 11111100 00001100 00011100 00111000 00110000 00110000 00110000 00110000 00110000 01111100 11111110 11000110 11000110 01111100 01111100 11000110 11000110 11111110 01111100 01111100 11111110 11000110 11000110 11111110 01111110 00000110 00000110 11111110 11111100 00000000 00000000 00000000 11000000 11000000 00000000 00000000 00000000 11000000 11000000 00000000 00000000 11000000 11000000 00000000 00000000 11000000 11000000 01000000 01000000 11000000 11100000 01110000 00111000 00011100 00011100 00111000 01110000 11100000 11000000 00000000 00000000 00000000 00000000 11111100 11111100 00000000 00000000 11111100 11111100 00001100 00011100 00111000 01110000 11100000 11100000 01110000 00111000 00011100 00001100 11111000 11111100 00001100 00011100 00111000 00110000 00000000 00000000 00110000 00110000 01111100 11111110 11000110 11011110 11011110 11011110 11011110 11000000 11111110 01111110 01111100 11111110 11000110 11000110 11111110 11111110 11000110 11000110 11000110 11000110 11111100 11111110 11000110 11000110 11111100 11111100 11000110 11000110 11111110 11111100 01111100 11111110 11000110 11000000 11000000 11000000 11000000 11000110 11111110 01111100 11111000 11111100 11001110 11000110 11000110 11000110 11000110 11001110 11111100 11111000 11111110 11111110 11000000 11000000 11111000 11111000 11000000 11000000 11111110 11111110 11111110 11111110 11000000 11000000 11111000 11111000 11000000 11000000 11000000 11000000 01111110 11111110 11000000 11000000 11011110 11011110 11000110 11000110 11111110 01111100 11000110 11000110 11000110 11000110 11111110 11111110 11000110 11000110 11000110 11000110 11111100 11111100 00110000 00110000 00110000 00110000 00110000 00110000 11111100 11111100 11111110 11111110 00011000 00011000 00011000 00011000 00011000 00011000 11111000 11110000 11000110 11000110 11001110 11011100 11111000 11111000 11011100 11001110 11000110 11000110 11000000 11000000 11000000 11000000 11000000 11000000 11000000 11000000 11111110 11111110 11000110 11101110 11111110 11111110 11111110 11010110 11000110 11000110 11000110 11000110 11000110 11000110 11100110 11110110 11111110 11011110 11001110 11000110 11000110 11000110 01111100 11111110 11000110 11000110 11000110 11000110 11000110 11000110 11111110 01111100 11111100 11111110 11000110 11000110 11111110 11111100 11000000 11000000 11000000 11000000 01111100 11111110 11000110 11000110 11000110 11011110 11011110 11001110 11111110 01111110 11111100 11111110 11000110 11000110 11111100 11111100 11000110 11000110 11000110 11000110 01111110 11111110 11000000 11000000 11111100 01111110 00000110 00000110 11111110 11111100 11111100 11111100 00110000 00110000 00110000 00110000 00110000 00110000 00110000 00110000 11000110 11000110 11000110 11000110 11000110 11000110 11000110 11000110 11111110 01111100 11000110 11000110 11000110 11000110 11100110 01110110 00111110 00011110 00001110 00000110 11000110 11000110 11000110 11000110 11010110 11111110 11111110 11111110 11101110 11000110 11000110 11000110 01101100 01101100 00111000 00111000 01101100 01101100 11000110 11000110 11000110 11000110 11000110 11000110 11111110 01111110 00000110 00000110 11111110 11111100 11111110 11111110 00001110 00011100 00111000 01110000 11100000 11000000 11111110 11111110 # Temporary space used by OS. ADDRESS 0 250 "00"