Compare commits

...

2 Commits

Author SHA1 Message Date
Virgil Dupras
afc2327770 Split icore in 2 parts
The goal is to insert device drivers in between.
2020-05-08 21:47:03 -04:00
Virgil Dupras
baf725aa38 Move a bunch of words from core to inner core
That makes it easier to write drivers that can be xcompiled.
2020-05-08 20:55:50 -04:00
13 changed files with 43 additions and 30 deletions

10
blk/392
View File

@ -4,4 +4,12 @@ and other defining words. So, in other words, when compiling
icore, ":" doesn't means what you think it means, go look in icore, ":" doesn't means what you think it means, go look in
B260. B260.
To load, run "393 LOAD". This is loaded in two "low" and "high" parts. The low part is
the biggest chunk and has the most definitions. The high part
is the "sensitive" chunk and contains "LITN", ":" and ";"
definitions which, once defined, kind of make any more defs
impossible.
The gap between these 2 parts is the ideal place to put device
driver code. Load the low part with "393 LOAD", the high part
with "415 LOAD"

View File

@ -12,4 +12,4 @@
0 0x08 RAM+ ! ( 08 == C<* override ) 0 0x08 RAM+ ! ( 08 == C<* override )
LIT< INTERPRET (find) DROP EXECUTE LIT< INTERPRET (find) DROP EXECUTE
; ;
1 20 LOADR+ 1 19 LOADR+

22
blk/412
View File

@ -1,14 +1,8 @@
( LITN has to be defined after the last immediate usage of : H@ HERE @ ;
it to avoid bootstrapping issues ) : IMMEDIATE
: LITN 32 , , ( 32 == NUMBER ) ; CURRENT @ 1-
DUP C@ 128 OR SWAP C!
: IMMED? 1- C@ 0x80 AND ; ;
: +! SWAP OVER @ + SWAP ! ;
( ';' can't have its name right away because, when created, it : -^ SWAP - ;
is not an IMMEDIATE yet and will not be treated properly by : ALLOT HERE +! ;
xcomp. )
: _
['] EXIT ,
R> DROP ( exit : )
; IMMEDIATE

1
blk/415 Normal file
View File

@ -0,0 +1 @@
1 2 LOADR+

14
blk/416 Normal file
View File

@ -0,0 +1,14 @@
( LITN has to be defined after the last immediate usage of
it to avoid bootstrapping issues )
: LITN 32 , , ( 32 == NUMBER ) ;
: IMMED? 1- C@ 0x80 AND ;
( ';' can't have its name right away because, when created, it
is not an IMMEDIATE yet and will not be treated properly by
xcomp. )
: _
['] EXIT ,
R> DROP ( exit : )
; IMMEDIATE

View File

View File

@ -1,8 +1,3 @@
: H@ HERE @ ;
: IMMEDIATE
CURRENT @ 1-
DUP C@ 128 OR SWAP C!
;
: [ INTERPRET ; IMMEDIATE : [ INTERPRET ; IMMEDIATE
: ] R> DROP ; : ] R> DROP ;
: LITS 34 , SCPY ; : LITS 34 , SCPY ;

View File

@ -1,7 +1,3 @@
: +! SWAP OVER @ + SWAP ! ;
: -^ SWAP - ;
: ALLOT HERE +! ;
: IF ( -- a | a: br cell addr ) : IF ( -- a | a: br cell addr )
COMPILE (?br) COMPILE (?br)
H@ ( push a ) H@ ( push a )

Binary file not shown.

View File

@ -10,12 +10,14 @@
CURRENT @ XCURRENT ! CURRENT @ XCURRENT !
282 LOAD ( boot.z80 ) 282 LOAD ( boot.z80 )
393 LOAD ( icore ) 393 LOAD ( icore low )
: (emit) 0 PC! ;
: (key) 0 PC@ ;
415 LOAD ( icore high )
(entry) _ (entry) _
( Update LATEST ) ( Update LATEST )
PC ORG @ 8 + ! PC ORG @ 8 + !
," CURRENT @ HERE ! " ," CURRENT @ HERE ! "
," : (emit) 0 PC! ; : (key) 0 PC@ ; "
422 459 XPACKR 422 459 XPACKR
," ' (key) 12 RAM+ ! " ," ' (key) 12 RAM+ ! "
ORG @ 256 /MOD 2 PC! 2 PC! ORG @ 256 /MOD 2 PC! 2 PC!

View File

@ -18,7 +18,8 @@ CURRENT @ XCURRENT !
282 LOAD ( boot.z80 ) 282 LOAD ( boot.z80 )
352 LOAD ( acia.z80 ) 352 LOAD ( acia.z80 )
372 LOAD ( sdc.z80 ) 372 LOAD ( sdc.z80 )
393 LOAD ( icore ) 393 LOAD ( icore low )
415 LOAD ( icore high )
(entry) _ (entry) _
( Update LATEST ) ( Update LATEST )
PC ORG @ 8 + ! PC ORG @ 8 + !

View File

@ -13,7 +13,8 @@ CURRENT @ XCURRENT !
282 LOAD ( boot.z80 ) 282 LOAD ( boot.z80 )
555 LOAD ( ti.z80 ) 555 LOAD ( ti.z80 )
393 LOAD ( icore ) 393 LOAD ( icore low )
415 LOAD ( icore high )
(entry) ~FNT CPFNT3x5 (entry) ~FNT CPFNT3x5
(entry) _ (entry) _
( Update LATEST ) ( Update LATEST )

View File

@ -12,7 +12,8 @@ CURRENT @ XCURRENT !
0x3000 BIN( ! 0x3000 BIN( !
282 LOAD ( boot.z80 ) 282 LOAD ( boot.z80 )
492 LOAD ( trs80.z80 ) 492 LOAD ( trs80.z80 )
393 LOAD ( icore ) 393 LOAD ( icore low )
415 LOAD ( icore high )
(entry) _ (entry) _
( Update LATEST ) ( Update LATEST )
PC ORG @ 8 + ! PC ORG @ 8 + !