Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / openbios / forth / bootstrap / start.fs
diff --git a/qemu/roms/openbios/forth/bootstrap/start.fs b/qemu/roms/openbios/forth/bootstrap/start.fs
new file mode 100644 (file)
index 0000000..9aabfa2
--- /dev/null
@@ -0,0 +1,69 @@
+\ tag: forth bootstrap starter.
+\ 
+\ Copyright (C) 2003 Patrick Mauritz, Stefan Reinauer
+\ 
+\ See the file "COPYING" for further information about
+\ the copyright and warranty status of this work.
+\ 
+
+include bootstrap.fs        \ all base words
+include interpreter.fs      \ interpreter
+include builtin.fs          \ builtin terminal.
+
+: include ( >filename<eol> -- )
+  linefeed parse $include
+;
+
+: encode-file ( >filename< > -- dictptr size )
+  parse-word $encode-file
+;
+
+: bye 
+  s" Farewell!" cr type cr cr 
+  0 rdepth! 
+  ;
+
+\ quit starts the outer interpreter of the forth system.
+\ zech describes quit as being the outer interpreter, but
+\ we split it apart to keep the interpreter elsewhere.
+
+: quit                      ( -- )
+  2 rdepth!
+  outer-interpreter
+;
+
+\ initialize is the first forth word run by the kernel.
+\ this word is automatically executed by the C core on start 
+\ and it's never left unless something goes really wrong or
+\ the user decides to leave the engine.
+
+variable init-chain
+
+\ :noname <definition> ; initializer
+: initializer ( xt -- )
+  here swap , 0 ,            \ xt, next
+  init-chain
+  begin dup @ while @ na1+ repeat
+  !
+;
+
+: initialize-forth          ( startmem endmem -- )
+  over - init-mem
+  init-pockets
+  init-tmp-comp
+  init-builtin-terminal
+
+  init-chain @              \ execute initializers
+  begin dup while
+    dup @ execute
+    na1+ @
+  repeat
+  drop
+;
+
+\ compiler entrypoint
+: initialize                ( startmem endmem -- )
+  initialize-forth
+  s" OpenBIOS kernel started." type cr
+  quit
+;