From 4e1fe916be053e45a04947348787e6d9e0e7ffd0 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Sun, 10 May 2020 14:33:35 -0400 Subject: [PATCH] ti84: working! --- recipes/ti84/glue.asm | 116 -------------------------------------------------- recipes/ti84/user.h | 2 - recipes/ti84/xcomp.fs | 23 ++++++++-- 3 files changed, 19 insertions(+), 122 deletions(-) delete mode 100644 recipes/ti84/glue.asm delete mode 100644 recipes/ti84/user.h diff --git a/recipes/ti84/glue.asm b/recipes/ti84/glue.asm deleted file mode 100644 index f3343d5..0000000 --- a/recipes/ti84/glue.asm +++ /dev/null @@ -1,116 +0,0 @@ -.equ RAMSTART 0x8000 -.equ RAMEND 0xbfff -.equ PORT_INT_MASK 0x03 -.equ INT_MASK_ON 0x00 -.equ PORT_INT_TRIG 0x04 -.equ INT_TRIG_ON 0x00 -.equ PORT_BANKB 0x07 - - jp boot - -.fill 0x18-$ - jp boot ; reboot - -.fill 0x38-$ - jp handleInterrupt - -.fill 0x53-$ - jp boot -; 0x0056 -.db 0xFF, 0xA5, 0xFF - -.fill 0x64-$ - -.inc "err.h" -.inc "ascii.h" -.inc "core.asm" -.inc "str.asm" -.equ FNT_WIDTH 3 -.equ FNT_HEIGHT 5 -.inc "fnt/mgm.asm" -.equ LCD_RAMSTART RAMSTART -.inc "ti/lcd.asm" -.equ KBD_RAMSTART LCD_RAMEND -.inc "ti/kbd.asm" -.equ STDIO_RAMSTART KBD_RAMEND -.equ STDIO_GETC kbdGetC -.equ STDIO_PUTC lcdPutC -.inc "stdio.asm" - -; *** BASIC *** - -; RAM space used in different routines for short term processing. -.equ SCRATCHPAD_SIZE STDIO_BUFSIZE -.equ SCRATCHPAD STDIO_RAMEND -.inc "lib/util.asm" -.inc "lib/ari.asm" -.inc "lib/parse.asm" -.inc "lib/fmt.asm" -.equ EXPR_PARSE parseLiteralOrVar -.inc "lib/expr.asm" -.inc "basic/util.asm" -.inc "basic/parse.asm" -.inc "basic/tok.asm" -.equ VAR_RAMSTART SCRATCHPAD+SCRATCHPAD_SIZE -.inc "basic/var.asm" -.equ BUF_RAMSTART VAR_RAMEND -.inc "basic/buf.asm" -.equ BAS_RAMSTART BUF_RAMEND -.inc "basic/main.asm" - -.out BAS_RAMEND -boot: - di - ld sp, RAMEND - im 1 - - ; enable ON key interrupt - in a, (PORT_INT_MASK) - set INT_MASK_ON, a - out (PORT_INT_MASK), a - ld a, 0x80 - out (PORT_BANKB), a - - ei - - call lcdOff - - ; sleep until we press ON - halt - -main: - ; Fun fact: if I place this line just above basStart like I would - ; normally do, my TI-84+ refuses to validate the binary. But placed - ; here, validation works fine. - call basInit - call kbdInit - call lcdInit - xor a - call lcdSetCol - jp basStart - -handleInterrupt: - di - push af - - ; did we push the ON button? - in a, (PORT_INT_TRIG) - bit INT_TRIG_ON, a - jp z, .done ; no? we're done - - ; yes? acknowledge and boot - in a, (PORT_INT_MASK) - res INT_MASK_ON, a ; acknowledge interrupt - out (PORT_INT_MASK), a - - pop af - ei - jp main - -.done: - pop af - ei - reti - -FNT_DATA: -.bin "fnt/3x5.bin" diff --git a/recipes/ti84/user.h b/recipes/ti84/user.h deleted file mode 100644 index d48c053..0000000 --- a/recipes/ti84/user.h +++ /dev/null @@ -1,2 +0,0 @@ -; RAMSTART + kernel usage + safety buffer -.equ USER_RAMSTART 0x8040 diff --git a/recipes/ti84/xcomp.fs b/recipes/ti84/xcomp.fs index f80eed7..0b0dd8c 100644 --- a/recipes/ti84/xcomp.fs +++ b/recipes/ti84/xcomp.fs @@ -18,8 +18,8 @@ RAMSTART 0x72 + CONSTANT KBD_MEM offset the binary by 0x100, which is our minimum possible increment and fill the TI stuff with the code below. ) -0x100 JPnn, 0x15 ZFILL, ( 0x18 ) -0x100 JPnn, ( reboot ) 0x1d ZFILL, ( 0x38 ) +0x5a JPnn, 0x15 ZFILL, ( 0x18 ) +0x5a JPnn, ( reboot ) 0x1d ZFILL, ( 0x38 ) ( handleInterrupt ) DI, AF PUSHqq, @@ -40,8 +40,23 @@ EI, RETI, 0x03 ZFILL, ( 0x53 ) -0x100 JPnn, ( 0x56 ) 0xff A, 0xa5 A, 0xff A, -0xa7 ZFILL, ( 0x100 ) +0x5a JPnn, ( 0x56 ) 0xff A, 0xa5 A, 0xff A, ( 0x5a ) +( boot ) +DI, + (im1) + ( enable the ON key interrupt ) + 0x03 ( PORT_INT_MASK ) INAn, + 0x00 ( INT_MASK_ON ) A SETbr, + 0x03 ( PORT_INT_MASK ) OUTnA, + A 0x80 LDrn, + 0x07 ( PORT_BANKB ) OUTnA, +EI, +( LCD off ) +A 0x02 ( LCD_CMD_DISABLE ) LDrn, +0x10 ( LCD_PORT_CMD ) OUTnA, +HALT, + +0x95 ZFILL, ( 0x100 ) ( All set, carry on! ) CURRENT @ XCURRENT !