Module: Forth			Group: DataStack


Word: TheDatastack
Text: TheDatastack 
⥪  ⢥⢥  , ᢮⢥ Forth.
⥪ 蠥 ஡ । ࠬ஢ ᠬ    
ᯮᮡ.  ⥪ ।⠢ ᮡ    ࠬ஢, 
 ᨭ⠪ 䬥᪨ ࠦ १  
 ,  ४  砥  ॠ樨 
筮.


Word: StackNotation
Text: StackNotation 
 ᫮, ᯮ饥 ⥪,  㪠 ᫮  ⨯ ࠬ஢, 
  ॡ  頥.  
 Holon'  ᯮ㥬  (in -- out),  孥  ⥪ (TOS) 
 ᠬ ࠢ 樨,      'in' ,  ⠪      'out'  .


Word: StackTypes
Text: StackTypes 

b 		 (8-bit,    16-bit 祩) 
 		 (8-bit, do.), 
n 		᫮   (15-bit + ), 
u 		᫮   (16-bit), 
adr 		  (16-bit), 
seg off 	 Extended  (2*16-bit) 
"adr 		⮢ (ப)  (adr), 
x 		। 室 筮 祩 (16 ⮢), 
d	 	 ᫮ ( 祩 ⥪, 32-bit), 
ud 		 ᫮   (32-bit).


Word: sp0
\  ᭮ ⥪  (।  ⥬ ).
( -- adr )

Word: sp@
\  騩 㪠⥫ ⥪ .		( -- adr )


Word: sp!
\  ⠭ stackpointer  u.		( adr -- )


Word: !sp
\  뢠 (頥) ⥪ .
Word: depth
\  ᫮ ⮢  ⥪ .		( -- n )


Word: drop
\   x  ⥪.		( x -- )


Word: swap
\     ன 室.	( x1 x2 -- x2 x1 )


Word: dup
\   㡫 x.		( x -- x x )


Word: over
\  頥  x1  孥  ⥪.	
( x1 x2 -- x1 x2 x1 )


Word: 3rd
\  頥  x1    ⥪.
 ( x1 x2 x3 -- x1 x2 x3 x1 ) 


Word: +2nd
\   n  ஬ 室 (஥ ஢ n), n3=n1+n 
\  ( rot + swap, 
\    㬬஢  ६ 믮 横).
		( n2 n1 n -- n3 n1 )


Word: tuck
\  '稢'  x2  x1.		   ( x1 x2 -- x2 x1 x2 )


Word: nip
\  뢠 x1.		  ( x1 x2 -- x2 )


Word: pick
\  롨ࠥ  k-  (0 pick = dup, 1 pick = over) 
( xm .. x1 x0 k  --  xm .. x1 x0 xk )


Word: rot
\  頥  孨 室 ⥪, ⨩  孥 .
		( x1 x2 x3 -- x2 x3 x1 )

Word: -rot
\  頥 ࢮ  쥣.
( x1 x2 x3 -- x3 x1 x2 ) 


Word: ?dup
\  㡫 x, ᫨  㫥.
( x -- 0 | x x ) 


Word: flip
\     孨 .
( x1 -- x2 ) 


Word: split
\  童 x  孨   .
( x -- lo hi ) 


Word: join
\   hi  lo , ⮡ ନ஢ x.
( lo hi -- x ) 



Word: 2drop
\  뢠  x1  x2   ⥪.
( x1 x2 -- ) 


Word: 2dup
\  㡫  x1 x2.
 ( x1 x2 -- x1 x2  x1 x2 ) 


Word: 2swap
\   孨  .
( x1 x2  x3 x4 -- x3 x4  x1 x2 ) 


Word: 2over
\    x1 x2    ⥪.
( x1 x2  x3 x4 -- x1 x2  x3 x4  x1 x2 ) 


Word: 3drop
\  뢠  孨 室  ⥪.
( n1 n2 n3 -- ) 

Group: ReturnStack

Word: TheReturnstack
Text: TheReturnstack 
⥪  ᯮ  ࠭ 㪠⥫ , 
 믮 室  ᫮.  ᫮ ⥪  ⠪ 
 ᯮ짮, ⮡ ࠭  ணࠬ,    
஦, .. ᭮ 㤠  , ० 祬 ᫮ 㤥 
祭.  ⥪  - ࠭஢ ᯮᮡ ࠧ 
⥬. ⥪  ᯮ ⠪, ⮡ ࠭   
横  DO ..LOOP's.


Word: rp0
\  ᭮ ⥪  (।  ⥬ ).
( -- u )


Word: rp@
\  頥 ⥪騩 㪠⥫ ⥪  
\  (ᬥ饭  ᥣ ⥪).
( -- u )


Word: rp!
\  ⠭ 㪠⥫ ⥪ , ⮡ ᬥ u.
( u -- )

Word: r>
\  ६頥 孨  ⥪ ⮢  ⥪ .
( -- x ) 


Word: >r
\  ६頥 x  ⥪ ⮢.
 ( x -- ) 


Word: r@
\  롨ࠥ   孥  ⥪ ⮢.
 ( -- x ) 


Word: r>drop
\  뢠 孨  ⥪ .


Word: dup>r
\  頥  設 ⥪  ⥪ .
( x -- x )
Word: rpick
\   i-  0,..  RStack  DStack.
( i -- x ) 


Word: 2>r
\  ।  x1 x2  ⥪ .
( x1 x2 -- ) 


Word: 2r@
\    x1 x2  ⥪ .
 ( -- x1 x2 ) 


Word: 2r>
\  ।  x1 x2  ⥪ .
( -- x1 x2 ) 


Group: Memory


Word: TheMemory
Text: TheMemory 
⠭ ᫮ ࠡ   @ , !   ..  ࠡ    
datasegment DS: (筮   codesegment CS:).   
䨪ᮬ 'L' 㭪樮  ७ (extended)  (seg:off).
 ᫮ ࠭    codesegment.  祭 
믮 ᫮-, ⥫ ᥣ ES: 㪠뢠  
ᯨ᮪  ᫮ (ᯨ᮪ code 稭  ES:0)


Word: @
\  롨ࠥ ᮤন  adr (in datasegment=codesegment). 
( adr -- x ) 

Word: !
\  ࠭ x    adr.
( x adr -- ) 


Word: +!
\   n  ᮤন adr.
( n adr -- )


Word: c@
\  롨ࠥ     adr.
( adr -- b ) 
Word: c!
\  ࠭  b    adr.		 ( b adr -- )


Word: +c!
\   b    adr.			 ( b adr -- )


Word: cSet
\  'Or's   adr  b.			 ( b adr -- )


Word: cReset
\  頥   adr ᮮ⢥⢥ '1'-bits  b.	     ( b adr -- )


Word: 0!
\  頥  16 ⮢    adr.	    ( adr -- ) 


Word: -1!
\  ⠭      adr. 	    ( adr -- ) 


Word: decr
\  蠥 ᮤন adr  .		   ( adr -- ) 


Word: incr
\  稢 ᮤন adr  .		   ( adr -- ) 


Word: cs:
\  頥 ⥪騩 codesegment.			( -- seg ) 


Word: ds:
\  頥 ⥪騩 datasegment.			( -- seg ) 


Word: ss:
\  Stacksegment.       	( -- seg ) 


Word: es:
\  ⥫ ᥣ.		( -- seg ) 


Word: @l
\  롨ࠥ ᮤন ᮫⭮  seg:off.	( seg off -- x ) 
Word: c@l
\  롨ࠥ   seg:off.		( seg off -- b ) 


Word: c!l
\  ࠭  b  seg:off.		( b seg off -- ) 


Word: !l
\  ࠭ x  seg:off.			 ( x seg off -- ) 


Word: +!l
\   x    seg:off.	( x seg off -- ) 


Word: 2@
\  롨ࠥ  x1 x2 ࠭  adr, x1 ࠭  adr+2  x2  adr.
( adr -- x1 x2 ) 


Word: 2!
\  ࠭  x1 x2, 室  adr,  x1  adr+2  x2  adr.
( x1 x2 adr -- ) 


Word: 2@l
\  롨ࠥ  x1 x2  ᮫⭮  seg:off.
 ( seg off -- x1 x2 ) 


Word: 2!l
\  ࠭  x1 x2  seg:off.	( x1 x2 seg off -- ) 


Word: d+!
\    ᫮ d     adr.	  
( d adr -- ) 


Word: p@
\  ⠥    -뢮 adr.		  ( adr -- b ) 


Word: pw@
\  ⠥ x   i/o-adr.		 ( adr -- x ) 


Word: p!
\  뢠  b  i/o-adr.		  ( b adr -- ) 
Word: pw!
\  뢠 x   i/o-adr.		( x adr -- ) 


Word: move
\   u ⮢  adr1   u ⠬  adr2.	 
( adr1 adr2 u -- ) 


Word: movel
\  ६頥 u ⮢  seg1:off1  seg2:off2.
  ( seg1 off1 seg2 off2 u -- ) 


Word: (fill)
\  ࠭ ᮤন AH  u ᫥⥫  , 
\  稭   adr.	  ( adr u -- ) 


Word: fill
\  ࠭ ᨬ      u ᫥⥫ ⮢ , 
\  稭   adr.	  ( adr u c -- ) 


Word: erase
\  ࠭     u ᫥⥫ ⮢ , 
\  稭  adr.	  ( adr u -- ) 


Word: blank
\  ࠭ ᨬ ஡    u ᫥⥫ ⮢ 
\  , 稭  adr.	  ( adr u -- ) 


Word: filll
\  ࠭ ᨬ     u ᫥⥫ ⮢ , 
\  稭   seg:off.	
  ( seg off u c -- ) 


Word: count
\  頥 ᯥ䨪 ப  ப  稪, 
\  ࠭񭭮  adr1.
\  adr2 -  ࢮ ᨬ, u -  ப.
   ( adr1 -- adr2 u ) 


Word: countl
\  ⠥   seg:off  㢥稢 ᬥ饭.
( seg off -- seg off+1 n ) 
Group: RunCode


Word: TheRunwords
Text: TheRunwords 
    ᫮ Forth ᯮ ᯥ樠 
run-᫮,  ᮡ࠭  ⮩ 㯯. 
 ᫮ ᯮ ஬, ⮡ ନ஢ 
⥫    .  
Runwords ᯮ 묨 (custom) ࠬ. 
⮬ runwords-᫮ -   ᫮,   , 
। c ⪠.



Word: doNext
\  Next  믮塞 , ⠢ 騬 ᫮.



Word: doColon
\  稭 ᫮ , 頥 IP (=ES:SI)  ⥪ .



Word: doSemi
\  稢 ᫮ : 롨ࠥ IP 맢 ᫮  ⥪ 
\  ⮢.



Word: doCon
\  믮   CONSTANT .



Word: doVar
\  믮   ६,  doNext. 
\  ᫨  맢  ணࠬ,  맮 
\  頥  ⥪.  67n 



Word: doDoes
\  믮   DOES>.



Word: doDoer
\  믮   ᯮ塞 ஢ DOER.
Word: doMake
\  믮   Make. 34-14 



Word: Next(ip)
\  頥 [IP]  IP,  .. 室  ᮤন IP.



Word: branch
\  ᫮ 室  [IP].



Word: ?branch
\  室  [IP], ᫨ 䫠 false.



Word: <loop>
\  믮   LOOP.



Word: <+loop>



Word: <do>



Word: <?do>


Word: <of>
\  믮   OF, 
\  ᯮ  CASE OF ENDOF ENDCASE.


Word: "match?
\  ࠢ ப "adr1  "adr2. 
\  AX=-1, ᫨ ப ,  =0.


Word: <"of>
\  믮   "OF ,  室  ENDOF 
\   ⠢ $adr1, ᫨  ᮮ⢥⢨, 
\   த  "OF   ⥪.
Group: Compiler


Word: TheCompiler
Text: TheCompiler 
Holon ॠ  楯 -樨,  । 
 㥬 Forth-᫮  楫 ணࠬ.
 ᫮  Holon  ᢮ ᮡ⢥ 饥 ⢨. 
᭮ 祭 STATE  믮 intp:-  comp:-code. 
  ᯥ稢  -᫮, 
   ।   intp:    comp:  ⢨.


Word: :
\  । definer ᫮ : (稥). 
\  '77'  ஢ઠ  ,   襭 ';' 


Word: ;
\  । ᫮  ; (窠--⮩), 
\  ஥ 稢 । ᫮-. 


Word: Create
\  Intp-०:  । ᫮ <name>. 
\		    頥  ⥪饣 code-. 
\  Comp-०:   run-time ⢨ 
\  		       㥬  饥 ६ ᫮.


Word: >body
\  adr -    , ᮮ⢥騩 xt. 
\  ।񭭮 ᫮ , 
\  ᫨ xt    ᫮, ।񭭮 १ CREATE.
			( xt -- adr )


Word: Does>
\   ⢨ ஦񭭮 ᫮, ஥  । 
\  㥬    ᫮.


Word: Doer
\     믮, 樠஢  doNext 
\  (  祣  ).


Word: Make
\   믮饥 ⢨  믮 doer. 34-14 


Word: Char
\  頥 ascii- ࢮ ᨬ  .
  ( name / -- c ) 


Word: [char]
\   ascii- ࢮ ᨬ    ࠫ.
   ( name / -- ) 


Word: Ascii
\  ᥢ  CHAR  [CHAR], ᨬ--ﭨ, 
\   ANS Forth,  㤮. 


Word: (
\  ய᪠ ⥪,  ᫥ <)>.


Word: \
\  ய᪠ ⥪  ᫥饩 ப.


Word: ]
\  ४砥  ० ஢.


Word: [
\  ४砥  ० . 
\    ⢨  ० .


Word: Literal
\   ࠫ n.


Word: '
\   xt .  
\   ᯨ᮪ 楫 (target) ᫮,  
\  ࠢ   . 
\   ࠧ, '   ⮫쪮  ० , 
\   祭  ࠧࠡ⪨ -- ⮬  the list   㯥 
\   ⮩ 楫 ணࠬ.
( name / -- xt ) 


Word: [']
\   xt   ࠫ.

Group: FlowControl


Word: FlowControl
Text: FlowControl 
 Forth-᫮ ࠢ ⮪  ⠪ ᪮஢ 
  -樨 . 
,  ,  CODE ⠭ () 
᫮, ਫ  CODE:.


Word: if
\  饥 ⢨ IF  砥  ⠭ ?BRANCH , 
\  饭 ᫠ 2  ⥪ ( થ  ஢ન )  
\  믮 >MARK.


Word: else
\  ⠪: ( f -- ) IF <true-⢨> ELSE <false-⢨> THEN


Word: then
\  :   ( f -- ) IF <true-⢨> THEN 


Word: begin
\  稭  横  稪.


Word: again
\  ⠪:  BEGIN ⢨ AGAIN 
\  ⢨ ७ ।񭭮,   믮 EXIT ⢨. 
\   ⮬ 砥 ᫮ , ᮤঠ饥 横, 稢.


Word: until
\  ⠪: BEGIN  ⢨? UNTIL 
\  ⢨?  ⠢ 䫠.
\   ,  䫠  ⨭.
\  믮 ⥬ த  ᫮ ᫥ UNTIL.


Word: while
\  ⠪: BEGIN action1? WHILE action2 REPEAT 
\  横 ,  action1 ⠢ true-䫠. 
\  ⢨ ⥬  த ᫥ REPEAT.


Word: repeat

Word: do
\  稭 横  稪.  ⠪:  (n1 n2 --) DO...
\  ࠭ ࠭⥫ 横 n1  砫  n2  returnstack.


Word: ?do
\  稭 横  稪, ᫨  横  ࠢ.


Word: loop
\  ⠪: (n2 n1 --) DO ⢨ LOOP 
\ 	     横. 
\  ᫨  横 ᫥ ⮣ ࠢ ࠭⥫ 横, 
\  뢠 ࠬ 横  returnstack  த 
\   믮 ᫥ 横. 
\   ⢨ .


Word: +loop
\  ⠪: (n1 n2 --) DO ⢨ n +LOOP  
\ 	  n   横.  
\  ᫨  横  ᥪ ࠭  ࠭⥫ 
\  横    ࠭⥫ 横, 
\   த executing ⢨.  
\   뢠 ࠬ 横  ⥪  
\  த 믮 ।⢥  横.


Word: I
\  롨ࠥ  ᠬ ७ 横.


Word: I'
\  롨ࠥ  ᠬ ७ 横  ᫮, 맢 
\   横 ( ஢ ).	  ( -- n ) 


Word: J
\  롨ࠥ  ண ᠬ ७ 横.


Word: K
\  롨ࠥ  쥣 ᠬ ७ 横.
   ( -- n ) 


Word: unloop
\  뢠 ࠢ騥 ᨬ 横  ⥪饣 ஢ 
\  .    ஢  ॡ UNLOOP 
\  ०, 祬 ।   EXITed.  ANS Forth.
Word: leave
\  ᯮ  ⢨  DO..LOOP,  ⠢ 横  
\  室   LOOP.


Word: ?leave
\  ⠢ DO..LOOP, ᫨ 䫠 㫥.        ( f -- ) 


Word: leave&exit
\  室  DO..LOOP  ⥪饣 ᫮. 祭  ᫮.


Word: bounds
\   ࠭⥫   DO..LOOP.        ( n1 n2 -- n1+n2  n1 ) 


Word: times
\  ⠪: (n -- ), TIMES ... LOOP , ⭮  0 ?DO ... LOOP.


Word: case
\  稭 case , ᨭ⠪: 
\ ( n -- ) CASE n1 OF <action1> ENDOF n2 OF <action2> ENDOF ... ENDCASE.


Word: of
\ ࠢ   孥  ⥪.  ᫨  ࠢ:
\ 뢠  稭  த 믮  ᫥饣 
\ ENDOF, ⥬ jumps  ENDCASE.   뢠 孥 
\ 祭  த  ᫥饣 ENDOF.


Word: "of
ନ case-  strings. 
    ⠪:
 ( "adr -- ) CASE 
 " string1" "OF ... ENDOF 
 " string2" "OF ... ENDOF  (etc.)  2DROP ENDCASE 


Word: endof
\  த 믮  ᫥饣 ENDCASE.


Word: endcase
\    㬮砭 砩  CASE-.
\   㤠 祭 ⥪.
\  筮 । DROP  㣮 ⢨, 
\  ஥ 㤠 祭 ⥪. 
Group: Objects

Word: Objects-1
Text: Objects-1
ꥪ -  祭   ணࠬ஢ 
 묨 묨  ⢨ﬨ  ⨬ 묨 (⮤). 
⮤ 뢠 ।⢮ ᮮ饭  ꥪ. 
Holon ⢫ ୮ ᯮ짮 ꥪ⮢.
⮡  ⫥  ꥪ⭮-ਥ஢-室
( OOP),  ।⠥   ⨯ ꥪ.  ࠦ 
ࢮ砫 (ਣ) 楯 ࠪ⭮ ⨯ .


Word: Objects-2
Text: Objects-2 
Holon ᯮ ᨭ⠪:

ObjectType:    
 Data:   ᫮, ନ騥 ࠭⢮ 
     Methods:   ᯨ᮪ ᫮,    
   Messages:   ᯨ᮪ ᮮ饭  ꥪ

 ⮤  ᮮ饭  ।। Forth ᫮. ⮤  
ᮮ饭  ୮ ᯮ짮  㣨 ꥪ ⨯.


Word: Objects-3
Text: Objects-3 
⮤ -  Forth-᫮,  맢 १   
 孥  ࠭⢠ (TOS). 
 ⮤    㬮砭 ⮤.

  㬮砭 ⮤ 뢠, ᫨ ꥪ ᯮ  
ᮮ饭.   , ᫨  ⮤ ⠢ ⨯筮 
祭 ꥪ. ⮬, ᫨ X  Y - 楫 ᫠,    
⠪:  X 3 + is Y .


Word: ObjectType:
\  稭 ।  ⨯ ꥪ.


Word: Data:
\  稭 ।   (instance variables). 
\  ࠭⢮  ᮧ,  ꥪ ।.


Word: Methods:
\  稢 ।    稭 ᯨ᮪ ⮤.
\  ⮤ -  ଠ Forth-᫮.
Word: Messages:
\  稢 ᯨ᮪ ⮤  稭 ᯨ᮪ ᮮ饭. 
\  饭 -  ।। message: ᫮.


Word: Message:
\    ᮮ饭. 
\  饭 ७  㭨 ᫮.
				( name / -- )



Group: Messages

Word: Messages
Text: Messages 
 ᮡࠫ  ᮮ饭,  筮 ᯮ  ⥬.

Message: get
Message: pop
Message: is
Message: put
Message: push
Message: adr
Message: obj
Message: set
Message: print
Message: clear
Message: init
Message: add
Message: insert
Message: ask
Message: edit
Message: upcase
Message: start
Message: stop
Message: continue
	



Group: Datatypes



Word: TheDatatypes
Text: TheDatatypes 
      ⠭ Forth-⨯ Constant  Variable Holon 
ᯮ ꥪ ⨯ Integer   Double. 襥 ⢮  
 ⨯ 㤥 ᯮ짮  ࢨ .
Word: Constant
\  ।饥 ᫮, ஥ ᮧ ⠭  祭 n.
\ 	 ⠪:  n CONSTANT name.  
\  onstant  頥 祭 n.
					( n -- )


Word: Variable
\  ।饥 ᫮, ஥ ᮧ ६ 
\   砫  ⮬  = .
\  	⠪:  VARIABLE name. 
\   ६ 頥   .


Word: Integer
\  ।饥 ᫮, ஥ ᮧ 16-ࠧ來 楫᫥ 
\  ꥪ, 樠஢  n. 
( n -- )


Word: XX
\  ᯥਬ⠫쭮 楫 ᫮   ਬ ⮣, 
\     ᯮ짮.

33 integer XX

\    get XX          	 ⠢ 祭 XX (33) 
\    XX 		⠢ 祭 XX 
\ 	(᫨  ᮮ饭  ਬ, ᯮ 
\ 			ࢮ ᮮ饭 (get).) 
\    44 is XX 		࠭ 44  祭 XX 
\    55 add XX 	 55  ⥪饬 祭 XX 
\    66 adr XX ! 	࠭ 66  ࠭⢥  XX 
\			⭮  66 is XX
\    set XX 		࠭ true-祭 (-1)  XX 
\    clear XX 		࠭ false-祭 (0)  XX




Word: ClrDouble
:  ClrDouble   ( obj -- )   0.  rot  2!  ;


Word: SetDouble
:  SetDouble   ( obj -- )    -1.  rot  2!   ;


Word: Double
\   32-ࠧ來 楫᫥ ꥪ.		( d -- ) 
Word: @p
\  ⠥ ᮤন adr, 㪠 by obj.
  ( obj -- n )


Word: !p
\  ࠭ n    obj.	( n obj -- )


Word: Pointer
\  । 㪠⥫  , 砫  - adr. 
\     ⠭ by adr,   set. 
\  ন   ⠭  get,   put.
( adr -- ) 



Group: Comparison


Word: =
\   f ⨭, ᫨ x1 ? bit-for-bit ⠪ ,  x2.
   ( x1 x2 -- f ) 


Word: <>
\   f ⨭, ᫨ x1  ?  bit-for-bit ࠢ x2.
  ( x1 x2 -- f ) 


Word: u<
\   f ⨭, ᫨ u1  ?   祬 u2.
( u1 u2 -- f ) 


Word: u>
\   f ⨭, ᫨ u1  祬 u2.
   ( u1 u2 -- f ) 


Word: <
\   f ⨭, ᫨ n1  n2.
( n1 n2 -- f )


Word: <=
\   f ⨭, ᫨ n1  ?    ࠢ n2.
   ( n1 n2 -- f )


Word: >
\   f ⨭, ᫨ n1  n2.
   ( n1 n2 -- f )


Word: >=
\   f ⨭, ᫨ n1  ?    ࠢ n2.
   ( n1 n2 -- f )


Word: between
\   f ⨭ ᫨ n1 <= n <= n2.
( n1 n2 n -- f )


Word: 0=
\   f ⨭, ᫨ x ࠢ .
  ( x -- f ) 


Word: 0<
\   f ⨭, ᫨ n  ?   祬 .
( n -- f ) 


Word: 0>
\   f ⨭, ᫨ n  .
( n -- f ) 


Word: 0<>
\   f ⨭, 
\  ᫨   襥 ⢮ ⮢  x 㫥.
   ( x -- f ) 


Word: "<>
\  ࠢ ப "adr1  "adr2   饩 . 
\  ⠢ 0, ᫨   ப ࠢ. 
\  ⠢ -1, ᫨ string1 ,  1.
\  ᫨   ࠢ, ⠢ -1, ᫨ string1 ,  1.
 ( "adr1 "adr2 -- -1|0|1 ) 


Word: "=
\  ࠢ  ப  ⠢ ⨭, 
\  ᫨ ப ࠢ   ,   ᮤঠ.
   ( "adr1 "adr2 -- f )


Group: Logic_Operat.

Word: and
\  ⠢ x3  bit-by-bit ᪮ AND of x1  x2.	   ( x1 x2 -- x3 )


Word: or
\  ⠢ x3  bit-by-bit (ࠧ來) ᪮ OR  of  x1  x2.
   ( x1 x2 -- x3 )


Word: xor
\  ⠢ x3  bit-by-bit (ࠧ來) ᪮ XOR of  x1  x2.
 		  ( x1 x2 -- x3 )

Word: not
\  믮 ࠧ來  x1,  x2.		( x1 -- x2 ) 


Word: invert
\  믮 ࠧ來  x1,  x2. 		( x1 -- x2 ) 


Word: lShift
\  믮 ᪮ -shift  稭 u , 
\  ⭮-񭭮  x1,  x2. 
\  頥      , ᢮ by the shift.
( x1 u -- x2 ) 


Word: rShift
\  믮 ᪮ ࠢ-shift  稭 u , 
\  ⭮-񭭮  x1,  x2. 
\  頥      , ᢮ by the shift.
 ( x1 u -- x2 ) 


Word: true
\  । 祭 ᪮ ⨭.   祭 䫠, 
\    ࠢ , ਭ  ⨭  ᪨ 襭.
-1 constant true


Word: false
\  ᫥ 祭 ᪮ .
0 constant false


Word: Flag
\  ᪨ 䫠,  true (⠭)  false (襭).
Group: 16Bit_Arithm.


Word: +
\   n1  n2,  㬬 n3 
 (n1 n2 -- n3)


Word: -
\  ⠥ n2  n1,  ࠧ n3 
( n1 n2 -- n3 )


Word: *
\   n1  n2,  ந n3 
  ( n1 n2 -- n3 )


Word: /
\   n1  n2,  ⭮ n3.
   ( n1 n2 -- n3 )


Word: /mod
\   n1 by n2,   童 n3  ⭮ n4.
 ( n1 n2 -- n3=rem n4=quot )


Word: mod
\   n1 by n2,   童 n3.
  ( n1 n2 -- n3=rem ) 


Word: */mod
\   n1  n2, ந  ஬ १ d. 
\   d  n3 ந  童 n4  ⭮ n5.
 ( n1 n2 n3 -- n4=rem n5=quot )


Word: */
\   n1  n2 ந  ஬ १ d. 
\   d  n3 ந ⭮ n4.  
\   ⠡஢.
   ( n1 n2 n3 -- n4 )


Word: 1+
\   1  n1,  㬬 n2.
   ( n1 -- n2 ) 

Word: 1-
\  ⠥ 1  n1,  ࠧ n2 
   ( n1 -- n2 )


Word: 2+
\   2  n1,  㬬 n2.
 ( n1 -- n2 ) 


Word: 2-
\  ⠥ 2  n1,  ࠧ n2.
   ( n1 -- n2 ) 


Word: 2*
\  n2- १ ᬥ饭 n1     襬 , 
\   ᢮  稬  .
   ( n1 -- n2 ) 


Word: 2/
\  n2- १ ᬥ饭 n1      稬 , 
\  ⠢ 訩  .
  ( n1 -- n2 ) 


Word: min
\  n3 襥  n1  n2.
   ( n1 n2 -- n3 )


Word: max
\  n3 襥  n1  n2.
   ( n1 n2 -- n3 )


Word: abs
\  u - ᮫⭠ 稭 n.
  ( n -- u ) 


Word: negate
\  栥 n1,  䬥  n2.
   ( n1 -- n2 ) 


Word: ?negate
\  栥 n1,  n3, ᫨ n2 - ⥫쭮 ᫮.
   ( n1 n2 -- n3 )
Group: 32Bit_Arithm.


Word: d+
\   d1  d2,  㬬 d3.		 ( d1 d2 -- d3 ) 


Word: dabs
\  d2 - ᮫⭠ 稭 d1.		   ( d1 -- d2 ) 


Word: dnegate
\  d2 - 栭 d1.		 ( d1 -- d2 ) 



Word: d
\  ⠥ d2  d1,  ࠧ稥 d3.	   ( d1 d2 -- d3 ) 


Word: d0=
\  Flag f=true , ᫨ ⮫쪮 d ࠢ .	   ( d -- f ) 



Word: d=
\  Flag f=true ⮫쪮 ᫨ ud1 bit--bit ⠪ ,  ud2.	  ( ud1 ud2 -- f )


Word: du<
\  Flag f=true ᫨  ⮫쪮 ᫨ ud1  祬 ud2. 	 ( ud1 ud2 -- f ) 


Word: d<
\  Flag f=true ᫨  ⮫쪮 ᫨ d1  祬 d2. 	  ( d1 d2 -- f )


Word: d>
\  Flag f=true ᫨  ⮫쪮 ᫨ d1  祬 d2.		   ( d1 d2 -- f )


Word: dmin
\  d3 襥  d1  d2.
  ( d1 d2 -- d3 )


Word: dmax
\  d3 襥  d1  d2.
 	  ( d1 d2 -- d3 )

Group: Mixed_Arithm.


Word: s>d
\  ८ࠧ뢠 ᫮ n   ᫮ d  ⥬  ᠬ 
\  ᫮ 祭.
  ( n -- d ) 



Word: d>s
\  n -   ᫠ d, ᫨ .  
\  筮 ᫮ , ᫨ d 室 
\    筮 ᫠   .
 ( d -- n )



Word: m*
\   n1  n2,   ᫮ d.
  	 ( n1 n2 -- d ) 



Word: um*
\   u1  u2,  ᫮     ud.
  	 ( u1 u2 -- ud )



Word: um/mod
\   ud  u1,  ⭮ u3   童 u2.
 ( ud u1 -- u2=rem u3=quot ) 



Word: um/
\   ud  u1,  ⭮ u2.
 	  ( ud u1 -- u2 ) 



Word: mu/mod
\     ud1   ᫮ u1 
\   ⠢     ⭮ ud2 
\       童 u2.
 
  ( ud1 u1 -- u2=rem  ud2=quot )


Group: Characters



Word: pad0
\  ⮥ ࠭⢮   ࠭⢠   ᯮ짮.



Word: pad
\  ᪠ Forth ᪠ 頤  ࠬ  32  । 
\    80 ⮢   (䨪஢ ᯮ,   
\   饩 窮  Here).



Word: 'bl
\  Ascii-祭 Space ('஡').



Word: 'cr
\  Ascii-祭 Enter  Return.



Word: 'bsp
\  Ascii-祭 Backspace (   ᨬ).



Word: #Out
\  ন 稪 ᨬ, 饭 稭  ᫥ cr.



Word: emit
\   ᪠騥 ᫮, 
\  ।   믮, 
\  ⮡  ॠ ⥪⮢ 뢮.
   ( c -- )

 

Word: type
Doer type   ( adr n -- )
 



Word: typel
Doer typel   ( seg off n -- )



Word: cr
\    / ᮡ⢥ cr-ணࠬ.
Doer  cr



Word: cr0
\  ᪠  ⪨  ॢ ப  
\  ⠭ 稪 権.



Word: makeCR
\  ।  cr-ணࠬ.



Word: space
\  ᪠  ஡.



Word: spaces
\  ᪠ n ஡.
   ( n -- )


Word: ?terminal
\  頥 keycode ᫨ 㯭,  0.
   ( -- b )


Word: key?
\  ஢, 㯭    頥 䫠, 
\  ⠢ key  .
 ( -- f )



Word: key
\     頥 ascii-  functioncode  0 
\  (. BiosKey).
 ( -- c | func 0 )
Group: Strings


Word: TheStrings
Text: TheStrings 
ப -  ᫥⥫쭮 ⥪⮢ ⮢  騬 ⮬ 
稪   㫥 ⮬. ப ࠭  ࠡ⠭  
code space.  ப  "adr -    稪.
 ꥪ ⨯ ।: 
String  ( 砫쭮 ப)  
Stringbuf  (  ࠧ஬ ). 
 ਭ ᮮ饭 get put adr print  insert  ask   ப.


Word: "obj
\   ࠭⢠  ⥪饣 ꥪ.


Word: "adr
\   ⥪饩 ப.
   ( -- "adr ) 


Word: "len
\   ⥪饩 ப.
   ( -- n ) 


Word: "feld
\  ᨬ쭠  () ⥪饩 ப.
  ( -- n ) 


Word: "pos
\     ப


Word: "insert
\  ⠢ ᨬ   ப  ⥪饩 樨, 
\  ᫨ ७ ᨬ:  
( c -- )


Word: "close
\  蠥 ਭ ப.


Word: CurOn
\   믮 ணࠬ,    .

Word: CurOff
\  㤥 ᤥ  ணࠬ,  ⪫砥 .


Word: "Accept
\  砥 ப (   । by obj). 
\   蠥 १ Enter. 
\  ⠢ ࠡ ७  .


Word: <,">
\  Runcode    ப, ⠢  ᫥饩 ப.
   ( -- "adr )


Word: "
\  Intp:  ⥪, 祭  "  ६頥 ⥪  data 
\  space  code space. Comp:  ப  ⥪饥 ᫮  
\   㫥   (ᯮ  ࠡ⪨ 䠩).


Word: "type
\  ⠥ ப  "adr.		  ( "adr -- ) 


Word: <<,">>
\  Runcode  ப, 񭭮  뢠饥 ᫮, 
\  ⠢  ப.	   ( -- "adr )


Word: <.">
\  Runcode   ᪠ ᫥饩 ப.


Word: ."
\   ᫥騩 ⥪, 祭  ",
\  ⠥ ⥪  ६ 믮.


Word: "get
\  ⮤, 頥 "adr ப ꥪ.	 ( obj -- "adr )


Word: "blank
:  "blank   ( -- )  "adr  1+  "feld  'bl  fill  0  "adr  c!   ;


Word: "put
\  ࠭ string("adr)  string(obj), ᫨ ࠭⢮ 㯭.
 ( "adr obj -- ) 
Word: "add
\   string("adr)  string(obj), ᫨ ࠭⢮ 㯭.
  ( "adr obj -- ) 


Word: "ins
\  ⠢ string("adr)  string(obj)  ᬥ饭 i, 
\  ᫨  㤮⢮७ .
  ( "adr i obj -- ) 


Word: "print
\  ⠥ ப obj.	   ( obj -- ) 


Word: "ask
\  ਭ  ⥪  ப, ࠭祭 㯭 ࠭⢮.
   ( obj -- ) 


Word: "UC
\  ८ࠧ뢠 ⥪ obj  孨 ॣ   ⥪.
   ( obj -- ) 


Word: "Edit
\  뫠   ணࠬ ।஢.      ( obj -- )


Word: init"Edit
\   ணࠬ ।஢  . 뢠 obj 㪠⥫.


Word: "clear
\  ࠥ string obj.	   ( obj -- ) 


Word: String
\   string-ꥪ, 樠஢  ப  稪 
\   ࠭⢥ .
\  ꥪ ⠪ १ࢨ ࠭⢮  zero-
\   filename 権.
\  ⠪: " text" String <name>


Word: StringBuf
\   ப   ப  n. 
\  ࢨ ⥫   filename-権 (asciiz).
  ( n -- ) 

Word: >asciiz
\  ⠢ adr ascii-ப  DX , ⮢  饭 䠩 DOS. 
\  [   AX].
  ( "adr calladr -- ) 


Word: asciiz
\  ८ࠧ뢠 ப  稪  "adr 
\   - ப  "adr0.
  ( "adr -- "adr0 ) 


Word: aString
\  ਬ ப ꥪ.


Word: bString
\  ਬ stringbuffer.


Word: +"pad
\  ⥭ c  ⥪  pad.
 ( c -- ) 



Group: FormatedOutput


Word: TheBase
\  ᭮  ८ࠧ ᥫ ᤥ 㯭 
\    楫᫥  ꥪ.


Word: hex
\  ⠭ base  ⭠筮.


Word: decimal
10  is  theBase   ;


Word: SetBase
\  樠 the base. 


Word: Hld
\  ࠭ ⥪  () ᫮ ப
\   ६ ଠ஢.

Word: hold
\  ⥭ ᨬ c  ᫮ ப.
  ( c -- )


Word: <#
\  稭 ଠ஢ ᫠.


Word: #>
\  稢 ଠ஢ ᫠, ⠢    ப.
   ( d -- adr u )


Word: "#>
\  稢 ८ࠧ ᥫ  ⠢ ப  稪.
   ( d -- "adr )


Word: sign
\  ⥭ ᨬ "-", ᫨ n ⥫쭮.
   ( n -- )


Word: #
\  ८ࠧ뢠   ᮣ᭮ base 
\   ⥭ ᨬ  ᫮ ப.
   ( ud1 -- ud2 ) 


Word: #s
\  ८ࠧ뢠  (騥)   ᫮ ப.
  ( ud -- 0 0 ) 


Word: (ud.)
\  ८ࠧ뢠  ᫮   ud  ப.
   ( ud -- adr n )


Word: "d
\  ८ࠧ뢠 ᫮ d  ப  "adr.
    ( d -- "adr )


Word: ud.
\  ⠥ ଠ஢ ud  ⥭ ஡.
   ( ud -- )


Word: ud.r
\  ⠥ ud   ਭ u.
   ( ud u -- )


Word: (u.)
\  ८ࠧ뢠 ᫮   u1  ⥪-ப  ⠢  
\  ࢮ ᨬ adr   ப u2.
   ( u1 -- adr u2 )


Word: u.
\  ⠥ ଠ஢ ᫮   u.
   ( u -- )


Word: u.r
\  ⠥ u1   ਭ u2.
   ( u1 u2 -- )


Word: (.)
\  ८ࠧ뢠 ᫮ n  ⥪-ப  ⠢  ࢮ 
\  ᨬ adr   ப u.
   ( n -- adr u ) 


Word: .
\  ⠥ ᫮   n  楫 ᫮, ᮯ஢ ஡.
   ( n -- )


Word: .r
\  ⠥ n   ਭ u. 	  ( n u -- )


Word: (d.)
\  ८ࠧ뢠  ᫮ d  ⥪-ப  頥  
\  ࢮ ᨬ adr   ப u.
   ( d -- adr u ) 


Word: d.
\  ⠥  ᫮ d.
   ( d -- )


Word: d.r
\  ⠥ d   ਭ u.
   ( d u -- )
Word: #dec
\  ᫮  ᥫ.


Word: #fld
\  ਭ .


Word: format
\  । ᫮ ଠ,  㤥   
\  ਭ  u1  u2 묨 ᫠.
   ( u1 u2 -- ) 


Word: +sp
\  蠥  ஡.


Word: "d.fn
\  ८ࠧ뢠  ᫮ d  ப "adr 
\   #dec   ᥫ. 
  ( d -- "adr )


Word: d.fn
\  ⠥  ᫮ d   ਭ #fld  #dec   ᥫ. 
   ( d -- ) 



           Group: Text>Number


Word: "addr
\   ப, ᯮ㥬  "len  "pos 
\   権 ⥬  ப.


Word: "c@
\  롨ࠥ char  "pos  "addr. 	 ( -- c ) 


Word: dpl
\  ন  筮 窨 ᫥ ८ࠧ ⥪   
\  (-1 ᫨   ᫠).


Word: double?
\   ⨭, ᫨  㥬  ᫮.
  ( -- f ) 
Word: Digit
\  頥 筮 祭 ᨬ  ᮣ᭮ base  true, 
\   ᨬ  false, ᫨   .
\  뢠 ஬  , 
\  ८ࠧ  孨 ॣ (᫨  ᫮).
			( c base -- n f )


Word: NumBase
\  쭮 ᫮ ᭮  ८ࠧ.


Word: Neg?
\  ⨭  ⥫쭮 ᫠.


Word: ?Leading
\  ஢  ᨬ      ᭮ ᫠.
\     ஡.


Word: Convert
\  ८ࠧ뢠 ப  "addr  ⥪饩 樨,
\    ud1    ud2  ᮣ᭮ NumBase,
\   "pos  㪠뢠  ஢ ᨬ.
   ( ud1 -- ud2 ) 


Word: Number?
\  ८ࠧ뢠 ப "adr  ᫮, ᫨  (f=true). 
\  ਭ 騩 -, +, $, &, %.  ८ࠧ த  
\  筮 㫥   (  稪). 
\   ᫮ ᨬ,   孥 ॣ.
   ( "adr -- d f ) 


Word: >Number
\  ud2   १ ८ࠧ ᨬ
\   ப, ।񭭮 by adr1, u1  , 
\  ᯮ ᫮  BASE      ud1
\  ᫥ 㬭 ud1  ᫮  BASE.
\
\  ८ࠧ த ᫥ ࠢ, 
\   ᨬ  ⨬  ப  ८ࠧ.
\
\  adr2 - ᯮ ࢮ  ८ࠧ ᨬ 
\   ࢮ ᨬ 諮  ப.
\  u2 - ᫮ ८ࠧ ᨬ.   ANS Forth.

   ( ud1 adr1 u1 -- ud2 adr2 u2 ) 
Group: Standard


Word: ANS_Forth

Text: ANS_Forth 
 ணࠬ஢ Forth  ⠭⨧஢  ANS Forth 
ਪ᪨ 樮 ⮬ ⠭⮢ (ANSI)  1994. 
⠭ 墠뢠  ࠧࠡ Forth-ணࠬ 
 'all-in-one' ⥬,  ਪ ணࠬ ନ஢ 
 孥  ⥬ ࠧࠡ⪨ ணࠬ. 

⠭  뢠 砩 -ࠧࠡ⪨, ⮬ Holon , 
 ਭ樯,  ᬠਢ   ⠭⭠ Forth-⥬.
  , kernel-㫨 Holon' ᫥ ⠭, ᪮쪮  
.   ᫮  ⠪  ,    ANS-Forth',  
⠭⭮ .



Word: GlueWords

Text: GlueWords 
 稭 쭮 ANS Forth ॡ  ᫮,  뢠  
 뢠 ᯥ䨪 䠪᪮ Forth-設. 
 ᮡࠫ  ९騥 ᫮,    
஢ ⠭ Forth-ணࠬ  Holon.



Word: Cell
\   祩  ।⠢ Forth- = 2 ⠬.


Word: Cells
\  n2 -  ࠧ    n1 祥.
   ( n1 -- n2) 


Word: Cell+
\   ࠧ    祩  adr1, 饥 adr2.
   ( adr1 -- adr2 )


Word: Chars
\  n2 -  ࠧ  㥬  n1 ᨬ.
  ( n1 -- n2)


Word: Char+
\   ࠧ  address units ᨬ  adr1,  adr2.
( adr1 -- adr2)


Word: Align



Word: Aligned



Word: Accept

\  ⠭⭮ ᫮ ACCEPT  ॠ. 
\   ᯮ string-⮤ ASK. 
\   塞 ᯮ짮 ப  易 ᮮ饭.



Word: bl
Alias: bl 'bl



Word: Recurse

\   ⠭⭮ ᫮ RECURSE  ॠ. 
\   Holon  ४  ⢥ ᯮᮡ. 
\   ⠪:   :  WORD  ...  WORD  ...  ; 




Word: NoIntpComp

Text: NoIntpComp 
 ணࠬ (the target program) 筮  㦤   
,   .    ஢ 
the target    , ⠪    . 
⮬ Holon  ᯥ稢 ᫥騥 ANS-FORTH ᫮:

       ABORT  ABORT"  QUIT  HERE  FIND  SOURCE  IMMEDIATE  
      POSTPONE  STATE  LITERAL  EVALUATE  ,  C, 

筮,  ᫮     ⥬, ᫨   
ନ஢  Forth-⥬.


