[22:49][@xanatos387][Hum is coming and going, when you move your head around, I think]
[23:43][Determine to implement basic memory-mapped I/O][:emulation :peripheral :speech]
[24:54][Memory-mapped I/O in emulators][:emulation :peripheral :speech]
[28:19][Abstract out the RAM handling from Hart into a new Bus struct, and propagate this change][:asm :memory]
[36:08][:Run it to see that it still works][:asm :memory]
[36:27][Implement memory-mapped I/O, hard-coded for now, enabling bus_load_word() and bus_store_word() to call getchar() and putchar() respectively][:asm :peripheral]
[40:36][Try to perform a asm_lw_imm(asm, X5, GETCHAR_ADDR)][:asm :peripheral]
[41:11][:Run it to see what it does][:asm :peripheral]
[41:46][Remove the get_char() from main() and introduce pseudo-instructions asm_get_char() and asm_put_char() to exercise our memory-mapped I/O][:asm :"input handling" :peripheral]
[44:18][Add asm_getchar() and asm_putchar() calls in main()][:asm :"input handling" :peripheral]
[44:45][:Run the simulator to see its infinite output][:asm :"input handling" :peripheral]
[45:02][Call get_char() in the main loop][:asm :"input handling" :peripheral]
[45:08][:Run it, press 'x' and see X5 get populated with 120][:asm :"input handling" :peripheral]
[45:33][Remove both getchar() and print_hart_state() from the main loop, and add a repeat label and asm_j() to our assembly][:asm :"input handling" :peripheral]
[46:37][:Run it to try our echo-loop][:asm :"input handling" :peripheral]
[46:48][A few words on our memory-mapped I/O, with a mention of mame[ref
site=GitHub
page="mamedev / mame"
url=https://github.com/mamedev/mame] and the Sega X Board[ref