From bd003829e81af762eee874494c1de546786a4986 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Tue, 2 Jul 2019 11:14:30 -0400 Subject: [PATCH] recipes/sms: plug shell in! Now this is getting eminently exciting! --- recipes/sms/glue.asm | 53 +++++++++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/recipes/sms/glue.asm b/recipes/sms/glue.asm index e006746..b14f872 100644 --- a/recipes/sms/glue.asm +++ b/recipes/sms/glue.asm @@ -8,58 +8,79 @@ .fill 0x66-$ retn +#include "err.h" +#include "core.asm" +#include "parse.asm" + .equ PAD_RAMSTART RAMSTART #include "sms/pad.asm" .equ VDP_RAMSTART PAD_RAMEND #include "sms/vdp.asm" +.equ STDIO_RAMSTART VDP_RAMEND +#include "stdio.asm" + +.equ SHELL_RAMSTART STDIO_RAMEND +.equ SHELL_EXTRA_CMD_COUNT 0 +#include "shell.asm" + init: di im 1 ld sp, RAMEND + call padInit call vdpInit + ld hl, myGetC + ld de, vdpPutC + call stdioInit + call shellInit + jp shellLoop -mainloop: +myGetC: ; What we do here is simple. We go though all bits of port A controller ; increasing B each time. As soon as we get a hit, we display that ; letter. Pressed buttons go low. call padStatusA - jr z, mainloop ; unchanged since last poll + push bc + jr z, .nothing ; unchanged since last poll ld b, 'A' bit 5, a ; Port A Button C pressed - jr z, updateLetter + jr z, .something inc b ; b bit 4, a ; Port A Button B pressed - jr z, updateLetter + jr z, .something inc b ; c bit 3, a ; Port A Right pressed - jr z, updateLetter + jr z, .something inc b ; d bit 2, a ; Port A Left pressed - jr z, updateLetter + jr z, .something inc b ; e bit 1, a ; Port A Down pressed - jr z, updateLetter + jr z, .something inc b ; f bit 0, a ; Port A Up pressed - jr z, updateLetter + jr z, .something inc b ; g bit 6, a ; Port A Button A pressed - jr z, updateLetter + jr z, .something inc b ; h bit 7, a ; Port A Start pressed - jr z, updateLetter ; when start is pressed, print all letters - jr mainloop - -; Prints letter in B -updateLetter: + jr z, .something + ; nothing +.nothing: + pop bc + xor a + jp unsetZ +.something: ld a, b - call vdpPutC - jr mainloop + pop bc + cp a ; ensure Z + ret .fill 0x7ff0-$ .db "TMR SEGA", 0x00, 0x00, 0xfb, 0x68, 0x00, 0x00, 0x00, 0x4c