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