Browse Source

ti84: working!

pull/102/head
Virgil Dupras 4 years ago
parent
commit
4e1fe916be
3 changed files with 19 additions and 122 deletions
  1. +0
    -116
      recipes/ti84/glue.asm
  2. +0
    -2
      recipes/ti84/user.h
  3. +19
    -4
      recipes/ti84/xcomp.fs

+ 0
- 116
recipes/ti84/glue.asm View File

@@ -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"

+ 0
- 2
recipes/ti84/user.h View File

@@ -1,2 +0,0 @@
; RAMSTART + kernel usage + safety buffer
.equ USER_RAMSTART 0x8040

+ 19
- 4
recipes/ti84/xcomp.fs View File

@@ -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 !


Loading…
Cancel
Save