From 1c02cbdba58f2fb8e99b3d8ecac54bd7dd81e461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Michal=C3=ADk?= Date: Thu, 4 Jan 2018 16:07:12 +0100 Subject: [PATCH] Created Snippet: Keyboard-controlled robot (markdown) --- Snippet:-Keyboard-controlled-robot.md | 155 ++++++++++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 Snippet:-Keyboard-controlled-robot.md diff --git a/Snippet:-Keyboard-controlled-robot.md b/Snippet:-Keyboard-controlled-robot.md new file mode 100644 index 0000000..021b652 --- /dev/null +++ b/Snippet:-Keyboard-controlled-robot.md @@ -0,0 +1,155 @@ +This program creates a robot that is controlled directly by [Keyboard](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-Keyboard). + +Key | Action +------|--------- +`WSAD` | Move +`E` | Mine using [Drill](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-Drill) +`F` | Gather [Biomass](https://github.com/simon987/Much-Assembly-Required/wiki/Biomass) using [Laser](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-Laser) +`I` | Show ID of item in [Inventory](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-Inventory) +`C` | Clear [Inventory](https://github.com/simon987/Much-Assembly-Required/wiki/Hardware:-Inventory) + +```assembly +;HEADER - Constants by hackersoup https://github.com/simon987/Much-Assembly-Required/wiki/Assembly-program-examples +;*************************** Hardware IDs +HWID_LEGS equ 0x1 +HWID_LASER equ 0x2 +HWID_LIDAR equ 0x3 +HWID_KEYBOARD equ 0x4 +HWID_DRILL equ 0x5 +HWID_INV equ 0x6 +HWID_RNG equ 0x7 +HWID_CLOCK equ 0x8 +HWID_HOLO equ 0x9 +HWID_BATTERY equ 0xA +HWID_FLOPPY equ 0xB + +;*************************** Drill actions IDs +DRILL_POLL equ 1 +DRILL_GATHER_SLOW equ 2 +DRILL_GATHER_FAST equ 3 +; Drill status +DRILL_STATUS_OK equ 0 +DRILL_STATUS_BUSY equ 1 + +;*************************** Inventory actions IDs +INV_POLL equ 1 +INV_CLEAR equ 2 +INV_EMPTY equ 0 + +;*************************** Laser actions IDs +LASER_WITHDRAW equ 1 +LASER_DEPOSIT equ 2 +; Items that can be used with the Laser +ITEM_BIOMASS equ 0x1 + +;*************************** Legs actions IDs +LEGS_SET_DIRECTION equ 1 +LEGS_SET_DIRECTION_AND_WALK equ 2 +; Legs directions +LEGS_DIR_NORTH equ 0 +LEGS_DIR_EAST equ 1 +LEGS_DIR_SOUTH equ 2 +LEGS_DIR_WEST equ 3 + +;*************************** LiDAR actions IDs +LIDAR_GET_POS equ 1 +LIDAR_GET_PATH equ 2 +LIDAR_GET_MAP equ 3 +LIDAR_GET_WORLD_POS equ 4 + +;*************************** Keyboard actions IDs +KEYBOARD_CLEAR equ 0 +KEYBOARD_FETCH_KEY equ 1 +; Keys to use with Keyboard Hardware +KEY_A equ 0x41 +KEY_C equ 0x43 +KEY_D equ 0x44 +KEY_E equ 0x45 +KEY_F equ 0x46 +KEY_I equ 0x49 +KEY_S equ 0x53 +KEY_W equ 0x57 + +;*************************** Hologram Projector actions IDs +HOLO_CLEAR equ 0 +HOLO_DISPLAY_HEX equ 1 +HOLO_DISPLAY_STRING equ 2 +HOLO_DISPLAY_DEC equ 3 +HOLO_DISPLAY_COLOR equ 4 + +;*************************** Battery actions IDs +BATTERY_POLL equ 1 +BATTERY_GET_MAX_CAPACITY equ 2 + +;*************************** Random Number Generator actions IDs +RNG_POLL equ 0 + +;*************************** Clock actions IDs +CLOCK_POLL equ 0 + +;*************************** Floppy Disk actions IDs +FLOPPY_POLL equ 1 +FLOPPY_READ_SECTOR equ 2 +FLOPPY_WRITE_SECTOR equ 3 +;END OF HEADER + +.text + MOV A, KEYBOARD_FETCH_KEY + HWI HWID_KEYBOARD + MOV A, LEGS_SET_DIRECTION_AND_WALK ; prepare for movement + CMP B, KEY_W + JZ north + CMP B, KEY_S + JZ south + CMP B, KEY_A + JZ west + CMP B, KEY_D + JZ east + CMP B, KEY_E + JZ drill + CMP B, KEY_I + JZ inventory + CMP B, KEY_C + JZ inventory_clear + CMP B, KEY_F + JZ laser_biomass +end: + MOV A, KEYBOARD_CLEAR + HWI HWID_KEYBOARD + brk +north: + MOV B, LEGS_DIR_NORTH + HWI HWID_LEGS + JMP end +south: + MOV B, LEGS_DIR_SOUTH + HWI HWID_LEGS + JMP end +east: + MOV B, LEGS_DIR_EAST + HWI HWID_LEGS + JMP end +west: + MOV B, LEGS_DIR_WEST + HWI HWID_LEGS + JMP end +drill: + MOV A, DRILL_GATHER_SLOW + HWI HWID_DRILL + JMP end +inventory: + MOV A, INV_POLL + HWI HWID_INV + MOV A, HOLO_DISPLAY_HEX + HWI HWID_HOLO + JMP end +inventory_clear: + MOV A, INV_EMPTY + HWI HWID_INV + JMP end +laser_biomass: + MOV B, ITEM_BIOMASS + MOV A, LASER_WITHDRAW + HWI HWID_LASER + JMP end +``` \ No newline at end of file