mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-26 21:38:05 +11:00
Compare commits
No commits in common. "abafd6d67b2cb88bcb3099bf98267f0192985ca8" and "2f1e635b9d361507c9c0b31d61d5ca0e64dc3aae" have entirely different histories.
abafd6d67b
...
2f1e635b9d
1
blk/263
1
blk/263
@ -4,7 +4,6 @@ VARIABLE XCURRENT
|
|||||||
: XCOFF 0x02 RAM+ CURRENT* ! ;
|
: XCOFF 0x02 RAM+ CURRENT* ! ;
|
||||||
|
|
||||||
: (xentry) XCON (entry) XCOFF ;
|
: (xentry) XCON (entry) XCOFF ;
|
||||||
: XCREATE (xentry) 11 C, ;
|
|
||||||
|
|
||||||
: XCODE XCON CODE XCOFF ;
|
: XCODE XCON CODE XCOFF ;
|
||||||
|
|
||||||
|
7
blk/312
7
blk/312
@ -5,11 +5,4 @@ CODE 2DROP
|
|||||||
chkPS,
|
chkPS,
|
||||||
;CODE
|
;CODE
|
||||||
|
|
||||||
( a b -- a b a b )
|
|
||||||
CODE 2DUP
|
|
||||||
HL POPqq, ( b ) DE POPqq, ( a )
|
|
||||||
chkPS,
|
|
||||||
DE PUSHqq, HL PUSHqq,
|
|
||||||
DE PUSHqq, HL PUSHqq,
|
|
||||||
;CODE
|
|
||||||
|
|
||||||
|
1
blk/433
1
blk/433
@ -7,6 +7,7 @@
|
|||||||
SWAP DROP
|
SWAP DROP
|
||||||
;
|
;
|
||||||
|
|
||||||
|
: 2DUP OVER OVER ;
|
||||||
: 2OVER 3 PICK 3 PICK ;
|
: 2OVER 3 PICK 3 PICK ;
|
||||||
: 2SWAP 3 ROLL 3 ROLL ;
|
: 2SWAP 3 ROLL 3 ROLL ;
|
||||||
|
|
||||||
|
2
blk/550
2
blk/550
@ -3,4 +3,4 @@ TI-84+ Recipe
|
|||||||
Support code for the TI-84+ recipe. Contains drivers for the
|
Support code for the TI-84+ recipe. Contains drivers for the
|
||||||
keyboard and LCD.
|
keyboard and LCD.
|
||||||
|
|
||||||
551 LCD 564 Keyboard
|
551 LCD
|
||||||
|
2
blk/558
2
blk/558
@ -10,5 +10,5 @@
|
|||||||
( Changes the current line and go back to leftmost column )
|
( Changes the current line and go back to leftmost column )
|
||||||
: _lf
|
: _lf
|
||||||
LCD_CURY C@ FNTH 1+ + DUP 63 > IF DROP 0 THEN
|
LCD_CURY C@ FNTH 1+ + DUP 63 > IF DROP 0 THEN
|
||||||
DUP _clrln DUP FNTH 1+ + _zoff!
|
DUP _clrln DUP FNTH 1+ _zoff!
|
||||||
LCD_CURY C! 0 LCD_CURX C! ;
|
LCD_CURY C! 0 LCD_CURX C! ;
|
||||||
|
16
blk/564
16
blk/564
@ -1,16 +0,0 @@
|
|||||||
Keyboard driver
|
|
||||||
|
|
||||||
Low layer range: 566-569
|
|
||||||
|
|
||||||
Implement a (key) word that interpret keystrokes from the
|
|
||||||
builtin keyboard. The word waits for a digit to be pressed and
|
|
||||||
returns the corresponding ASCII value.
|
|
||||||
|
|
||||||
This routine waits for a key to be pressed, but before that, it
|
|
||||||
waits for all keys to be de-pressed. It does that to ensure
|
|
||||||
that two calls to _wait only go through after two actual key
|
|
||||||
presses (otherwise, the user doesn't have enough time to
|
|
||||||
de-press the button before the next _wait routine registers the
|
|
||||||
same key press as a second one).
|
|
||||||
|
|
||||||
(cont.)
|
|
6
blk/565
6
blk/565
@ -1,6 +0,0 @@
|
|||||||
Sending 0xff to the port resets the keyboard, and then we have
|
|
||||||
to send groups we want to "listen" to, with a 0 in the group
|
|
||||||
bit. Thus, to know if *any* key is pressed, we send 0xff to
|
|
||||||
reset the keypad, then 0x00 to select all groups, if the result
|
|
||||||
isn't 0xff, at least one key is pressed.
|
|
||||||
|
|
14
blk/566
14
blk/566
@ -1,14 +0,0 @@
|
|||||||
( Requires KBD_MEM, KBD_PORT )
|
|
||||||
( gm -- pm, get pressed keys mask for group mask gm )
|
|
||||||
CODE _get
|
|
||||||
HL POPqq,
|
|
||||||
chkPS,
|
|
||||||
DI,
|
|
||||||
A 0xff LDrn,
|
|
||||||
KBD_PORT OUTnA,
|
|
||||||
A L LDrr,
|
|
||||||
KBD_PORT OUTnA,
|
|
||||||
KBD_PORT INAn,
|
|
||||||
EI,
|
|
||||||
L A LDrr, HL PUSHqq,
|
|
||||||
;CODE
|
|
16
blk/567
16
blk/567
@ -1,16 +0,0 @@
|
|||||||
( wait until all keys are de-pressed. To avoid repeat keys, we
|
|
||||||
require 64 subsequent polls to indicate all depressed keys.
|
|
||||||
all keys are considered depressed when the 0 group returns
|
|
||||||
0xff. )
|
|
||||||
: _wait 64 BEGIN 0 _get 0xff = NOT IF DROP 64 THEN
|
|
||||||
1- DUP NOT UNTIL DROP ;
|
|
||||||
( digits table. seach row represents a group. 0 means
|
|
||||||
unsupported. no group 7 because it has no key. )
|
|
||||||
CREATE _dtbl
|
|
||||||
0 C, 0 C, 0 C, 0 C, 0 C, 0 C, 0 C, 0 C,
|
|
||||||
0xd C, '+' C, '-' C, '*' C, '/' C, '^' C, 0 C, 0 C,
|
|
||||||
0 C, '3' C, '6' C, '9' C, ')' C, 0 C, 0 C, 0 C,
|
|
||||||
'.' C, '2' C, '5' C, '8' C, '(' C, 0 C, 0 C, 0 C,
|
|
||||||
'0' C, '1' C, '4' C, '7' C, ',' C, 0 C, 0 C, 0 C,
|
|
||||||
0 C, 0 C, 0 C, 0 C, 0 C, 0 C, 0 C, 0x80 ( alpha ) C,
|
|
||||||
0 C, 0 C, 0 C, 0 C, 0 C, 0x81 ( 2nd ) C, 0 C, 0x7f C,
|
|
9
blk/568
9
blk/568
@ -1,9 +0,0 @@
|
|||||||
( alpha table. same as _dtbl, for when we're in alpha mode. )
|
|
||||||
CREATE _atbl
|
|
||||||
0 C, 0 C, 0 C, 0 C, 0 C, 0 C, 0 C, 0 C,
|
|
||||||
0xd C, '"' C, 'w' C, 'r' C, 'm' C, 'h' C, 0 C, 0 C,
|
|
||||||
'?' C, 0 C, 'v' C, 'q' C, 'l' C, 'g' C, 0 C, 0 C,
|
|
||||||
':' C, 'z' C, 'u' C, 'p' C, 'k' C, 'f' C, 'c' C, 0 C,
|
|
||||||
0x20 C, 'y' C, 't' C, 'o' C, 'j' C, 'e' C, 'b' C, 0 C,
|
|
||||||
0 C, 'x' C, 's' C, 'n' C, 'i' C, 'd' C, 'a' C, 0x80 C,
|
|
||||||
0 C, 0 C, 0 C, 0 C, 0 C, 0x81 ( 2nd ) C, 0 C, 0x7f C,
|
|
13
blk/569
13
blk/569
@ -1,13 +0,0 @@
|
|||||||
: _
|
|
||||||
0 ( gid ) 0 ( dummy )
|
|
||||||
BEGIN ( loop until a digit is pressed )
|
|
||||||
DROP
|
|
||||||
1+ DUP 7 = IF DROP 0 THEN ( inc gid )
|
|
||||||
1 OVER LSHIFT 0xff -^ ( group dmask ) _get
|
|
||||||
DUP 0xff = NOT UNTIL
|
|
||||||
( gid dmask )
|
|
||||||
0xff XOR ( dpos ) 0 ( dindex )
|
|
||||||
BEGIN 1+ 2DUP RSHIFT NOT UNTIL 1-
|
|
||||||
( gid dpos dindex ) SWAP DROP
|
|
||||||
( gid dindex ) SWAP 8 * + _dtbl + C@ _wait ;
|
|
||||||
: (key) 0 ( dummy ) BEGIN DROP _ DUP UNTIL ;
|
|
BIN
emul/forth.bin
BIN
emul/forth.bin
Binary file not shown.
@ -21,7 +21,7 @@
|
|||||||
#define INTERRUPT_PORT 0x03
|
#define INTERRUPT_PORT 0x03
|
||||||
#define LCD_CMD_PORT 0x10
|
#define LCD_CMD_PORT 0x10
|
||||||
#define LCD_DATA_PORT 0x11
|
#define LCD_DATA_PORT 0x11
|
||||||
#define MAX_ROMSIZE 0x4000
|
#define MAX_ROMSIZE 0x2000
|
||||||
|
|
||||||
static xcb_connection_t *conn;
|
static xcb_connection_t *conn;
|
||||||
static xcb_screen_t *screen;
|
static xcb_screen_t *screen;
|
||||||
|
@ -1,30 +1,27 @@
|
|||||||
0x8000 CONSTANT RAMSTART
|
0x8000 CONSTANT RAMSTART
|
||||||
0xb000 CONSTANT RS_ADDR
|
0xb000 CONSTANT RS_ADDR
|
||||||
RAMSTART 0x70 + CONSTANT LCD_MEM
|
RAMSTART 0x70 + CONSTANT LCD_MEM
|
||||||
0x01 CONSTANT KBD_PORT
|
|
||||||
212 LOAD ( z80 assembler )
|
212 LOAD ( z80 assembler )
|
||||||
262 LOAD ( xcomp )
|
262 LOAD ( xcomp )
|
||||||
522 LOAD ( font compiler )
|
522 LOAD ( font compiler )
|
||||||
: CODE XCODE ;
|
: CODE XCODE ;
|
||||||
: IMMEDIATE XIMM ;
|
: IMMEDIATE XIMM ;
|
||||||
: (entry) (xentry) ;
|
: (entry) (xentry) ;
|
||||||
: CREATE XCREATE ; ( for KBD tbls )
|
|
||||||
: : [ ' X: , ] ;
|
: : [ ' X: , ] ;
|
||||||
|
|
||||||
CURRENT @ XCURRENT !
|
CURRENT @ XCURRENT !
|
||||||
|
|
||||||
282 LOAD ( boot.z80 )
|
282 LOAD ( boot.z80 )
|
||||||
393 LOAD ( icore low )
|
393 LOAD ( icore low )
|
||||||
555 557 LOADR ( LCD low )
|
555 557 LOADR ( ti low )
|
||||||
566 569 LOADR ( KBD low )
|
|
||||||
415 LOAD ( icore high )
|
415 LOAD ( icore high )
|
||||||
(entry) ~FNT CPFNT3x5
|
(entry) ~FNT CPFNT3x5
|
||||||
(entry) _
|
(entry) _
|
||||||
( Update LATEST )
|
( Update LATEST )
|
||||||
PC ORG @ 8 + !
|
PC ORG @ 8 + !
|
||||||
422 437 XPACKR ( core )
|
422 437 XPACKR ( core )
|
||||||
558 560 XPACKR ( LCD high )
|
558 560 XPACKR ( ti high )
|
||||||
438 451 XPACKR ( print fmt readln )
|
438 446 XPACKR ( print fmt )
|
||||||
," : _ LCD$ (ok) RDLN$ ; _ "
|
," : _ LCD$ LIT< Hello (print) LIT< World! (print) 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