mirror of
https://github.com/hsoft/collapseos.git
synced 2024-12-25 16:08:06 +11:00
ti84: wip
Gave more priority to CPU in the emulator because initialization would otherwise be horrendously slow.
This commit is contained in:
parent
114e753b64
commit
58ec54fc97
16
blk/555
16
blk/555
@ -1 +1,15 @@
|
|||||||
1 3 LOADR+
|
( Required config: TI_MEM )
|
||||||
|
: TI_MEM+ [ TI_MEM LITN ] @ + ;
|
||||||
|
: LCD_PORT_CMD 0x10 ; : LCD_PORT_DATA 0x11 ;
|
||||||
|
: FNTW 3 ; : FNTH 5 ;
|
||||||
|
( Wait until the lcd is ready to receive a command. It's a bit
|
||||||
|
weird to implement a waiting routine in asm, but the forth
|
||||||
|
version is a bit heavy and we don't want to wait longer than
|
||||||
|
we have to. )
|
||||||
|
: LCDWAIT
|
||||||
|
BEGIN,
|
||||||
|
LCD_PORT_CMD INAn,
|
||||||
|
RLA, ( When 7th bit is clr, we can send a new cmd )
|
||||||
|
JRC, AGAIN,
|
||||||
|
;CODE
|
||||||
|
: LCD$ H@ TI_MEM ! FNTH 2 * 2+ ALLOT ;
|
||||||
|
6
blk/556
6
blk/556
@ -1,9 +1,3 @@
|
|||||||
( Required config: TI_MEM )
|
|
||||||
: TI_MEM+ [ TI_MEM LITN ] @ + ;
|
|
||||||
: LCD_PORT_CMD 0x10 ;
|
|
||||||
: LCD_PORT_DATA 0x11 ;
|
|
||||||
: FNTW 3 ;
|
|
||||||
: FNTH 5 ;
|
|
||||||
( Current Y position on the LCD, that is, where we're going to
|
( Current Y position on the LCD, that is, where we're going to
|
||||||
spit our next glyph. )
|
spit our next glyph. )
|
||||||
: LCD_CURY 0 TI_MEM+ ;
|
: LCD_CURY 0 TI_MEM+ ;
|
||||||
|
11
blk/557
11
blk/557
@ -1,13 +1,8 @@
|
|||||||
|
: _cmd LCD_PORT_CMD PC! LCDWAIT ;
|
||||||
: _wait ( Wait until the lcd is ready to receive a command )
|
: _data! LCD_PORT_DATA PC! LCDWAIT ;
|
||||||
( When 7th bit is cleared, we can send a new command )
|
: _data@ LCD_PORT_DATA PC@ LCDWAIT ;
|
||||||
BEGIN LCD_PORT_CMD PC@ 0x80 AND NOT UNTIL ;
|
|
||||||
: _cmd LCD_PORT_CMD PC! _wait ;
|
|
||||||
: _data! LCD_PORT_DATA PC! _wait ;
|
|
||||||
: _data@ LCD_PORT_DATA PC@ _wait ;
|
|
||||||
: LCDOFF 0x02 ( CMD_DISABLE ) _cmd ;
|
: LCDOFF 0x02 ( CMD_DISABLE ) _cmd ;
|
||||||
: _col! ( col -- )
|
: _col! ( col -- )
|
||||||
0x20 ( CMD_COL ) + _cmd ;
|
0x20 ( CMD_COL ) + _cmd ;
|
||||||
: _row! ( row -- )
|
: _row! ( row -- )
|
||||||
0x80 ( CMD_ROW ) + _cmd ;
|
0x80 ( CMD_ROW ) + _cmd ;
|
||||||
: LCD$ H@ TI_MEM ! FNTH 2 * 2+ ALLOT ;
|
|
||||||
|
@ -225,11 +225,8 @@ void draw_pixels()
|
|||||||
void event_loop()
|
void event_loop()
|
||||||
{
|
{
|
||||||
while (1) {
|
while (1) {
|
||||||
emul_step();
|
emul_steps(100);
|
||||||
if (lcd_changed) {
|
if (lcd_changed) {
|
||||||
// To avoid overdrawing, we'll let the CPU run a bit to finish its
|
|
||||||
// drawing operation.
|
|
||||||
emul_steps(100);
|
|
||||||
draw_pixels();
|
draw_pixels();
|
||||||
}
|
}
|
||||||
// A low tech way of checking when the window was closed. The proper way
|
// A low tech way of checking when the window was closed. The proper way
|
||||||
|
@ -11,10 +11,13 @@ RAMSTART 0x70 + CONSTANT TI_MEM
|
|||||||
CURRENT @ XCURRENT !
|
CURRENT @ XCURRENT !
|
||||||
|
|
||||||
282 LOAD ( boot.z80 )
|
282 LOAD ( boot.z80 )
|
||||||
|
555 LOAD ( ti.z80 )
|
||||||
393 LOAD ( icore )
|
393 LOAD ( icore )
|
||||||
(entry) _
|
(entry) _
|
||||||
( Update LATEST )
|
( Update LATEST )
|
||||||
PC ORG @ 8 + !
|
PC ORG @ 8 + !
|
||||||
," 42 42 PC! BYE "
|
422 437 XPACKR ( core )
|
||||||
|
556 558 XPACKR ( ti )
|
||||||
|
," 42 42 PC! LCD$ 43 43 PC! BYE "
|
||||||
ORG @ 256 /MOD 2 PC! 2 PC!
|
ORG @ 256 /MOD 2 PC! 2 PC!
|
||||||
H@ 256 /MOD 2 PC! 2 PC!
|
H@ 256 /MOD 2 PC! 2 PC!
|
||||||
|
Loading…
Reference in New Issue
Block a user