mirror of
https://github.com/simon987/Much-Assembly-Required.git
synced 2025-04-19 10:36:43 +00:00
Created Snippet: Keyboard-controlled robot (markdown)
parent
ff33e4b0ad
commit
1c02cbdba5
155
Snippet:-Keyboard-controlled-robot.md
Normal file
155
Snippet:-Keyboard-controlled-robot.md
Normal file
@ -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
|
||||||
|
```
|
Loading…
x
Reference in New Issue
Block a user