version 1.7, 2002/03/21 13:10:37
|
version 1.8, 2002/03/25 15:35:54
|
Line 1
|
Line 1
|
|
|
|
|
|
0 [IF] |
|
Ideas/Todo |
|
|
|
- x! x@ is only used in key.fs, we could do (emit), (key)... |
|
as primtives and than drop x! and x@ |
|
|
|
[THEN] |
|
|
UNLOCK |
UNLOCK |
>ENVIRON |
>ENVIRON |
\ true SetValue PrimTrace |
\ true SetValue PrimTrace |
|
|
LOCK |
LOCK |
|
|
|
UNLOCK |
|
also assembler definitions |
|
|
|
X has? PrimTrace [IF] |
|
: dout PC+6 X , accu X , |
|
*accu X , txd X , |
|
PC+4 X , jmp X , |
|
X , 0 X , ; |
|
[ELSE] |
|
: dout drop ; |
|
[THEN] |
|
|
|
LOCK |
|
|
\ pie primitives |
\ pie primitives |
|
|
$20 allot |
$20 allot |
Line 123 End-Label
|
Line 145 End-Label
|
[THEN] |
[THEN] |
|
|
|
|
Code: :docol sym docol |
Code: :docol |
\? PrimTrace "0" , tx , |
': dout |
RP , accu , |
RP , accu , |
#1 , sub , |
#1 , sub , |
accu , RP , |
accu , RP , |
Line 135 Code: :docol sym docol
|
Line 157 Code: :docol sym docol
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code: :docon sym docon |
Code: :docon |
\? PrimTrace "1" , tx , |
'1 dout |
#0 , add , |
#0 , add , |
W , shr , |
W , shr , |
#2 , add , |
#2 , add , |
Line 148 Code: :docon sym docon
|
Line 170 Code: :docon sym docon
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code: :dovar sym dovar |
Code: :dovar |
\? PrimTrace "2" , tx , |
'2 dout |
W , accu , |
W , accu , |
#4 , add , |
#4 , add , |
accu , t0 , |
accu , t0 , |
Line 160 Code: :dovar sym dovar
|
Line 182 Code: :dovar sym dovar
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code: :douser sym douser |
Code: :douser |
\? PrimTrace "3" , tx , |
'3 dout |
#0 , add , |
#0 , add , |
W , shr , |
W , shr , |
#2 , add , |
#2 , add , |
Line 175 Code: :douser sym douser
|
Line 197 Code: :douser sym douser
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code: :dodefer sym dodefer |
Code: :dodefer |
\? PrimTrace "4" , tx , |
'4 dout |
#0 , add , |
#0 , add , |
W , shr , |
W , shr , |
#2 , add , |
#2 , add , |
Line 184 Code: :dodefer sym dodefer
|
Line 206 Code: :dodefer sym dodefer
|
"Next1" , jmp , |
"Next1" , jmp , |
end-code |
end-code |
|
|
Code: :dofield sym dofield |
Code: :dofield |
\? PrimTrace "5" , tx , |
'5 dout |
#0 , add , |
#0 , add , |
W , shr , |
W , shr , |
#2 , add , |
#2 , add , |
Line 200 Code: :dofield sym dofield
|
Line 222 Code: :dofield sym dofield
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code: :dodoes sym dodoes |
Code: :dodoes |
\? PrimTrace "6" , tx , |
'6 dout |
RP , accu , |
RP , accu , |
#1 , sub , |
#1 , sub , |
accu , RP , |
accu , RP , |
Line 224 end-code
|
Line 246 end-code
|
Code: :doesjump |
Code: :doesjump |
end-code |
end-code |
|
|
Code ! sym ! |
Code execute |
\? PrimTrace "A" , tx , |
'E dout |
|
SP , accu , |
|
*accu , W , |
|
#1 , add , |
|
accu , SP , |
|
"Next1" , jmp , |
|
end-code |
|
|
|
Code ;s |
|
'; dout |
|
RP , accu , |
|
#1 , add , |
|
accu , RP , |
|
#1 , sub , |
|
*accu , IP , |
|
"Next" , jmp , |
|
end-code |
|
|
|
Code ! |
|
'! dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 237 Code ! sym !
|
Line 278 Code ! sym !
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code @ sym @ |
Code @ |
\? PrimTrace "B" , tx , |
'@ dout |
#0 , add , |
#0 , add , |
SP , accu , |
SP , accu , |
*accu , shr , |
*accu , shr , |
Line 248 Code @ sym @
|
Line 289 Code @ sym @
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code x! sym x! |
Code x! |
\? PrimTrace "C" , tx , |
'X dout |
SP , accu , |
SP , accu , |
*accu , dstx , |
*accu , dstx , |
#1 , add , |
#1 , add , |
Line 259 Code x! sym x!
|
Line 300 Code x! sym x!
|
"xmov" , jmp , |
"xmov" , jmp , |
end-code |
end-code |
|
|
Code x@ sym x@ |
Code x@ |
\? PrimTrace "D" , tx , |
'x dout |
SP , accu , |
SP , accu , |
*accu , srcx , |
*accu , srcx , |
accu , dstx , |
accu , dstx , |
"xmov" , jmp , |
"xmov" , jmp , |
end-code |
end-code |
|
|
Code execute sym execute |
Code ?branch |
\? PrimTrace "E" , tx , |
'? dout |
SP , accu , |
|
*accu , W , |
|
#1 , add , |
|
accu , SP , |
|
"Next1" , jmp , |
|
end-code |
|
|
|
Code ;s sym ;s |
|
\? PrimTrace "F" , tx , |
|
RP , accu , |
|
#1 , add , |
|
accu , RP , |
|
#1 , sub , |
|
*accu , IP , |
|
"Next" , jmp , |
|
end-code |
|
|
|
Code ?branch sym ?branch |
|
\? PrimTrace "?" , tx , |
|
#0 , add , |
#0 , add , |
IP , shr , |
IP , shr , |
accu , t0 , |
accu , t0 , |
#1 , add , |
#1 , add , |
accu , add , |
accu , add , |
accu , IP , |
accu , IP , |
SP , accu , |
SP , accu , |
accu , 1 m , |
*accu , t1 , |
#1 , add , |
#1 , add , |
accu , SP , |
accu , SP , |
1 r , accu , |
t1 , accu , |
pc+4 , jz , |
pc+4 , jz , |
sym no-branch |
|
"Next" , jmp , |
"Next" , jmp , |
\? PrimTrace "+" , tx , |
'~ dout |
t0 , accu , |
t0 , accu , |
*accu , accu , |
*accu , accu , |
Label >branch sym branch-o |
Label >branch |
IP , add , |
IP , add , |
#2 , sub , |
#2 , sub , |
sym branch-to |
|
accu , IP , |
accu , IP , |
"Next" , jmp , |
"Next" , jmp , |
Label "branch" >branch , |
Label "branch" >branch , |
end-code |
end-code |
|
|
Code branch sym branch |
Code branch |
\? PrimTrace "/" , tx , |
'b dout |
#0 , add , |
#0 , add , |
IP , shr , |
IP , shr , |
*accu , accu , |
*accu , accu , |
Line 324 Code branch sym branch
|
Line 344 Code branch sym branch
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code (loop) sym (loop) |
Code (loop) |
|
'l dout |
#0 , add , |
#0 , add , |
IP , shr , |
IP , shr , |
*accu , t0 , |
*accu , t0 , |
Line 347 Code (loop) sym (loop)
|
Line 368 Code (loop) sym (loop)
|
"branch" , jmp , |
"branch" , jmp , |
end-code |
end-code |
|
|
Code xor sym xor |
Code xor |
\? PrimTrace "H" , tx , |
'x dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 361 Code xor sym xor
|
Line 382 Code xor sym xor
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code or sym or |
Code or |
\? PrimTrace "I" , tx , |
'o dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 375 Code or sym or
|
Line 396 Code or sym or
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code and sym and |
Code and |
\? PrimTrace "J" , tx , |
'a dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 389 Code and sym and
|
Line 410 Code and sym and
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code + sym + |
Code + |
\? PrimTrace "K" , tx , |
'+ dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 403 Code + sym +
|
Line 424 Code + sym +
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code - sym - |
Code - |
\? PrimTrace "L" , tx , |
'- dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 417 Code - sym -
|
Line 438 Code - sym -
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code 2/ sym 2/ |
Code 2/ |
\? PrimTrace "M" , tx , |
'/ dout |
#0 , add , |
#0 , add , |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
Line 433 Code 2/ sym 2/
|
Line 454 Code 2/ sym 2/
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code 0= sym 0= |
Code 0= |
|
'° dout |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
ZF , accu , |
ZF , accu , |
Line 445 Code 0= sym 0=
|
Line 467 Code 0= sym 0=
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code 0<> sym 0<> |
Code 0<> |
|
'% dout |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
ZF , accu , |
ZF , accu , |
Line 456 Code 0<> sym 0<>
|
Line 479 Code 0<> sym 0<>
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code = sym = |
Code = |
|
'= dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 472 Code = sym =
|
Line 496 Code = sym =
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code u< sym u< |
Code u< |
|
'< dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 488 Code u< sym u<
|
Line 513 Code u< sym u<
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code 1+ sym 1+ |
Code 1+ |
|
'p dout |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
#1 , add , |
#1 , add , |
Line 498 Code 1+ sym 1+
|
Line 524 Code 1+ sym 1+
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code cell+ sym cell+ |
Code cell+ |
|
'P dout |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
#2 , add , |
#2 , add , |
Line 508 Code cell+ sym cell+
|
Line 535 Code cell+ sym cell+
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code 8<< sym 8<< |
Code 8<< |
\? PrimTrace "T" , tx , |
'{ dout |
#0 , add , |
#0 , add , |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
Line 527 Code 8<< sym 8<<
|
Line 554 Code 8<< sym 8<<
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code 8>> sym 8>> |
Code 8>> |
\? PrimTrace "T" , tx , |
'{ dout |
#0 , add , |
#0 , add , |
SP , accu , |
SP , accu , |
Label c-even@ *accu , shr , |
Label c-even@ *accu , shr , |
Line 547 Label c-even@ *accu , shr ,
|
Line 574 Label c-even@ *accu , shr ,
|
Label "c-even@" c-even@ , |
Label "c-even@" c-even@ , |
end-code |
end-code |
|
|
Code c@ sym c@ |
Code c@ |
|
'c dout |
#0 , add , |
#0 , add , |
SP , accu , |
SP , accu , |
*accu , shr , |
*accu , shr , |
Line 560 Code c@ sym c@
|
Line 588 Code c@ sym c@
|
t0 , *accu , |
t0 , *accu , |
"Next" , jmp , |
"Next" , jmp , |
|
|
Code 2* sym 2* |
Code 2* |
\? PrimTrace "N" , tx , |
'* dout |
SP , accu , |
SP , accu , |
*accu , accu , |
*accu , accu , |
accu , add , |
accu , add , |
Line 571 Code 2* sym 2*
|
Line 599 Code 2* sym 2*
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code >r sym >r |
Code >r |
\? PrimTrace "O" , tx , |
'R dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 584 Code >r sym >r
|
Line 612 Code >r sym >r
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code r> sym r> |
Code r> |
\? PrimTrace "P" , tx , |
'r dout |
RP , accu , |
RP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 597 Code r> sym r>
|
Line 625 Code r> sym r>
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code sp@ sym sp@ |
Code sp@ |
\? PrimTrace "Q" , tx , |
's dout |
SP , accu , |
SP , accu , |
accu , add , |
accu , add , |
accu , t0 , |
accu , t0 , |
Line 609 Code sp@ sym sp@
|
Line 637 Code sp@ sym sp@
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code sp! sym sp! |
Code sp! |
|
'S dout |
#0 , add , |
#0 , add , |
SP , accu , |
SP , accu , |
*accu , shr , |
*accu , shr , |
Line 617 Code sp! sym sp!
|
Line 646 Code sp! sym sp!
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code rp@ sym rp@ |
Code rp@ |
\? PrimTrace "R" , tx , |
|
RP , accu , |
RP , accu , |
accu , add , |
accu , add , |
accu , t0 , |
accu , t0 , |
Line 640 Code rp! sym rp!
|
Line 668 Code rp! sym rp!
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code drop sym drop |
Code drop |
\? PrimTrace "S" , tx , |
'd dout |
SP , accu , |
SP , accu , |
#1 , add , |
#1 , add , |
accu , SP , |
accu , SP , |
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code lit sym lit |
Code lit |
\? PrimTrace "#" , tx , |
'# dout |
IP , shr , |
IP , shr , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 662 Code lit sym lit
|
Line 690 Code lit sym lit
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code dup sym dup |
Code dup |
|
'u dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , sub , |
#1 , sub , |
Line 671 Code dup sym dup
|
Line 700 Code dup sym dup
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code I sym r@ |
Code r@ |
|
'I dout |
RP , accu , |
RP , accu , |
*accu , t0 , |
*accu , t0 , |
SP , accu , |
SP , accu , |
Line 681 Code I sym r@
|
Line 711 Code I sym r@
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code over sym over |
Code over |
|
'v dout |
SP , accu , |
SP , accu , |
#1 , add , |
#1 , add , |
*accu , t0 , |
*accu , t0 , |
Line 691 Code over sym over
|
Line 722 Code over sym over
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code swap sym swap |
Code swap |
|
'w dout |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 702 Code swap sym swap
|
Line 734 Code swap sym swap
|
"Next" , jmp , |
"Next" , jmp , |
end-code |
end-code |
|
|
Code d+ sym d+ |
Code d+ |
SP , accu , |
SP , accu , |
*accu , t0 , |
*accu , t0 , |
#1 , add , |
#1 , add , |
Line 782 Code /modstep ( ud c R: u -- ud-?u 0/1 )
|
Line 814 Code /modstep ( ud c R: u -- ud-?u 0/1 )
|
#1 , sub , |
#1 , sub , |
"d2*+" , jmp , |
"d2*+" , jmp , |
end-code |
end-code |
|
|
|
Code (key) |
|
SP , accu , |
|
#1 , sub , |
|
accu , SP , |
|
rxd , *accu , |
|
"Next" , jmp , |
|
end-code |
|
|
|
Code (key?) |
|
rx? , accu , |
|
ZF , accu , |
|
#1 , sub , |
|
accu , t0 , |
|
SP , accu , |
|
#1 , sub , |
|
accu , SP , |
|
t0 , *accu , |
|
"Next" , jmp , |
|
end-code |
|
|
|
Code (emit) |
|
SP , accu , |
|
*accu , txd , |
|
#1 , add , |
|
accu , SP , |
|
"Next" , jmp , |
|
end-code |
|
|
RP 2* Constant RP |
|
SP 2* Constant SP |
|
UP 2* Constant UP |
UP 2* Constant UP |
IP 2* Constant IP |
|
|
|
\ c: sp! 2/ sp ! ; |
|
\ c: sp@ sp @ 1+ 2* ; |
|
\ c: rp@ rp @ 2* ; |
|
\ c: rp! r> swap 2/ rp ! >r ; |
|
: up@ up @ ; |
: up@ up @ ; |
: up! up ! ; |
: up! up ! ; |
|
|
include ./key.fs |
\ include ./key.fs |
|
include ./optcmove.fs |