1
0
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:
Virgil Dupras 2020-05-08 07:56:34 -04:00
parent 114e753b64
commit 58ec54fc97
5 changed files with 23 additions and 20 deletions

16
blk/555
View File

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

View File

@ -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
View File

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

View File

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

View File

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