Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
####### # # E-scripts on Crim. # # Note 1: use the eev command (defined in eev.el) and the # ee alias (in my .zshrc) to execute parts of this file. # Executing this file as a whole makes no sense. # An introduction to eev can be found here: # # (find-eev-quick-intro) # http://angg.twu.net/eev-intros/find-eev-quick-intro.html # # Note 2: be VERY careful and make sure you understand what # you're doing. # # Note 3: If you use a shell other than zsh things like |& # and the for loops may not work. # # Note 4: I always run as root. # # Note 5: some parts are too old and don't work anymore. Some # never worked. # # Note 6: the definitions for the find-xxxfile commands are on my # .emacs. # # Note 7: if you see a strange command check my .zshrc -- it may # be defined there as a function or an alias. # # Note 8: the sections without dates are always older than the # sections with dates. # # This file is at <http://angg.twu.net/e/crim.e> # or at <http://angg.twu.net/e/crim.e.html>. # See also <http://angg.twu.net/emacs.html>, # <http://angg.twu.net/.emacs[.html]>, # <http://angg.twu.net/.zshrc[.html]>, # <http://angg.twu.net/escripts.html>, # and <http://angg.twu.net/>. # ####### # «.compiling» (to "compiling") # «.gprof» (to "gprof") # «.tclstuff2» (to "tclstuff2") # «.crim1a» (to "crim1a") # «.crim1b» (to "crim1b") # «.flua-0.01» (to "flua-0.01") # «.uploading_flua» (to "uploading_flua") # «.flua-0.03» (to "flua-0.03") # (find-es "anatocc" "nasm_crim1") # (find-fline "~/CRIM1/") ##### # # Compiling the various blocks of crim1 # 2000jul15 # ##### # «compiling» (to ".compiling") # (find-fline "~/CRIM1/") # (find-fline "~/CRIM1/demo1.tf1") # (find-fline "~/CRIM1/demo1.tf2") # (find-fline "~/CRIM1/engine0.c") # (find-fline "~/CRIM1/tclstuff") # (find-fline "~/CRIM1/demo1.tf2") # (find-fline "~/CRIM1/tclstuff") # (find-fline "~/CRIM1/engine1.c") # (find-fline "~/CRIM1/engine1.complete.c") # (find-fline "~/CRIM1/demo1.tf2.asm") # (find-es "anatocc" "nasm_crim1") #* cd ~/CRIM1/ make CFLAGS=-1 |& tee om cat > $EEG <<'---' br engine #br 79 #br 118 run --- #* cd ~/CRIM1/ make clean #make make CFLAGS=-g demo1 #* # (find-fline "~/CRIM1/engine1.c") # (gdb "gdb ~/CRIM1/demo") #define H_COL 0xFF #define H_RSR 0xFE #define H_CON 0xFD #define H_TO 0xFC #define H_AT 0xFB #define SF_EXIT 0xFF #define SF_PLUS 0xFE #define SF_2DUP 0xFD #define F_COUNT 0xFA00 #define F_TYPE 0xFA01 #define F_CR 0xFA02 #define F_STO 0xFA03 #define F_TOS 0xFA04 #define FIP_RETURN 0xFFFF #define FIP_RSREXIT 0xFFFE ##### # # gprof # 2000oct09 # ##### # «gprof» (to ".gprof") # (find-node "(gprof)Compiling") # (find-node "(gprof)Compiling" "basic-block") # (find-node "(gprof)Executing" "`gmon.out'") # (find-node "(gprof)How do I?") # (find-node "(gcc)Debugging Options" "`-a'") # (find-node "(gprof)Output Options") #* cd ~/CRIM1/ rm -v gmon.out bb.out make demo1.clean make CFLAGS="-g -pg" LDFLAGS=-pg demo1 demo1 gprof demo1 > ~/o # (find-fline "~/o") #* cd ~/CRIM1/ rm -v gmon.out bb.out make demo1.clean make CFLAGS="-g -pg -a" LDFLAGS=-pg demo1 demo1 gprof -l -C demo1 # gprof with these options gives no output, # but bb.out has all the interesting information, it seems. #* cd ~/CRIM1/ cat bb.out | sort -k 3 -n -r | tee ~/o | l -S # (progn (find-fline "~/o") (wrap 0)) #* ##### # # Notes on the "gobble" words # 2000oct19 # ##### @@ - gobble (read and advance pointer) S@@ - sgobble (read and advance pointer, using SS) F$ - forth string C$ - C string !! - ungobble (like gobble, but for writing) S!! - s-ungobble (like gobble, but for writing; using SS) So, for example, it's : S@@F$ S> COUNT DDUP + >S ; : S@@C$ S> DUP strlen DDUP + 1+ >S ; # (find-node "(gforth)Word Index") # (find-node "(gforth)String Formats" "`count'") What's a good way to write stack diagrams for these words? Maybe this: @@F$ ( ::s adr ::d -- ::s adr+ ::d len ) ##### # # tclstuff2 (with the prims going in the ".th"s) # 2000nov14 # ##### # «tclstuff2» (to ".tclstuff2") # (find-fline "~/CRIM1/tclstuff2") #* cd ~/CRIM1/ chmod 755 tclstuff2 ./tclstuff2 (cd /tmp; nasm -f elf -o x.o -l x.lst x.asm; gcc -c -g -o engine.o engine.c) (cd /tmp; gcc -g engine.o x.o -o crimtest && ./crimtest) # (gdbk-gdb nil "/tmp/crimtest") #* #* expect -c ' set s [exec cat /home/root/CRIM1/engine0.skel.c] regexp {^(.*)/\*-- (.*) --\*/(.*)$} $s -> a b c puts $a puts ----------------------- puts $b puts ----------------------- puts $c ' #* # (find-fline "~/CRIM1/") # (find-fline "~/CRIM1/engine0.skel.c") expect -c ' set Fprims_code Hello set FIPprims_code Hi set Hprims_code Bye set SF_TO_F_code Foof set C_defs Cdf set s [exec cat /home/root/CRIM1/engine0.skel.c] set tail {} while {[regexp {^(.*)/\*-- (.*) --\*/(.*)$} $s -> a b c]} { puts $b set tail "/*--{ $b }--*/[uplevel #0 $b]\n$c$tail" set s $a } puts $s$tail ' #* expect -c ' set a 33 puts [uplevel #0 {concat $a}] puts ha! ' #* ##### # # crim1a # 2001feb14 # ##### # «crim1a» (to ".crim1a") # (find-fline "~/CRIM1/Makefile" "crim1a-demos") # (find-angg "CRIM1/crim1a-lib.tcl") # (find-angg "CRIM1/crim1a-prims.tcl") # (find-angg "CRIM1/crim1a.tcl") #* cd ~/CRIM1/ make crim1a-demos #* ##### # # crim1b (in Lua) # 2001feb14 # ##### # «crim1b» (to ".crim1b") # This was superseded by flua-0.01: (to "flua-0.01") # (find-angg "LUA/inc.lua" "px") # (find-angg "LUA/flua2.lua") # (find-fline "~/tmp/lua-manual.txt") #* cd ~/LUA/ lua flua2.lua #* cd ~/LUA/ lua flua2.lua cd /tmp/ nasm -f elf -o bytecode.o -l bytecode.lst bytecode.asm #gcc -o engine bytecode.o engine.c gcc -lm -ldl -llua -llualib -o engine bytecode.o engine.c ./engine 0 ./engine #* ##### # # flua-0.01 # 2001apr06 # ##### # «flua-0.01» (to ".flua-0.01") # (find-es "lua" "flua") # (find-fline "~/LUA/flua-0.01/") # (find-fline "~/LUA/flua-0.01/inc.lua") # (find-fline "~/LUA/flua-0.01/flua-comp.lua") # (find-fline "~/LUA/flua-0.01/flua-demos.lua") # (find-fline "~/LUA/flua-0.01/flua.lua") #* cd ~/LUA/flua-0.01/ make clean make make v make out.tgz #* ##### # # uploading flua # 2001apr29 # ##### # «uploading_flua» (to ".uploading_flua") #* # (find-fline "~/LUA/flua-0.01/") # (find-fline "~/LUA/flua-0.01/Makefile") cd ~/LUA/flua-0.01/ rm -v *gz make clean make tgz out.tgz mv -v flua-0.01.tar.gz .. mv -v flua-0.01.out.tar.gz .. #* # (find-fline "~/LUA/flua-0.02/") # (find-fline "~/LUA/flua-0.02/Makefile") cd ~/LUA/flua-0.02/ rm -v *gz make clean make tgz out.tgz mv -v flua-0.02.tar.gz .. mv -v flua-0.02.out.tar.gz .. #* cd ~/LUA/ anonftp angg.twu.net \ 'cd ~/slow_html/LUA/' \ 'put flua-0.01.tar.gz' \ 'put flua-0.01.out.tar.gz' \ 'put flua-0.02.tar.gz' \ 'put flua-0.02.out.tar.gz' \ 'quit' #* # (eevt-bounded 'once) # First remove the possible leftovers of previous versions from # ~/public_html, that the "cp" in minimakepage wouldn't overwrite: (cd ~/public_html/LUA/flua-0.01/ && make clean) (cd ~/public_html/LUA/flua-0.02/ && make clean) # (find-angg ".zshrc" "minimakepage") cd ~/slow_html/LUA/ mkdir flua-0.01/ flua-0.02/ rm -v flua-latest.tar.gz ln -s flua-0.02.tar.gz flua-latest.tar.gz tar -xvzf flua-0.01.out.tar.gz -C flua-0.01/ tar -xvzf flua-0.02.out.tar.gz -C flua-0.02/ cd ~/public_html/LUA/ rm -v flua-latest.tar.gz ln -s flua-0.02.tar.gz flua-latest.tar.gz # Then use minimakepage by hand to copy ~/slow_html -> ~/public_html/ ... # (find-angg ".zshrc" "minimakepage") #* # To make the links in my local pages work: tar -xvzf ~/LUA/flua-0.01.out.tar.gz -C ~/TH/L/LUA/flua-0.01/ tar -xvzf ~/LUA/flua-0.02.out.tar.gz -C ~/TH/L/LUA/flua-0.02/ tar -xvzf ~/LUA/flua-0.01.out.tar.gz -C ~/TH/R/LUA/flua-0.01/ tar -xvzf ~/LUA/flua-0.02.out.tar.gz -C ~/TH/R/LUA/flua-0.02/ #* ##### # # flua-0.03 # 2001aug06 # ##### # «flua-0.03» (to ".flua-0.03") # (find-fline "~/LUA/flua-0.03/") # (code-c-d "flua" "~/LUA/flua-0.03/") # (find-flua "") # (find-flua "flua-comp.lua") # (find-flua "flua-demos.lua") # (find-flua "flua-lua.lua") # (find-flua "flua.lua") # (find-flua "inc.lua") ##### # # Notes on my very old notes # 1999mmmdd # ##### rm -Rv ~/CRIMNOTES/ mkdir ~/CRIMNOTES/ cd ~/CRIMNOTES/ cp ~/CRIM/crim1.html index.html A=( 1-autod.4th 1.4th 1.aud 2-autod.4th 2.4th 2.aud ETC announce autodoc.4th crim.c crimcomp.4th letter patchpfe ) for i in $A; do cp ~/CRIM.old/CRIM000/$i $i.txt; done mail -s 'Playing with inner interpreters' MISC@pisa.rockefeller.edu <<'---' This is slightly off-topic but as Jeff was talking about instruction sets (and as I'm not in condition to contribute directly to the F21 project right now -- no money, no time, finishing MsC thesis) I decided to put some old notes on a toy inner interpreter on the web. The address is http://www.mat.puc-rio.br/~edrx/crim/ It was stupid to keep them for myself for so long. Also I was able to run the F21 emulator under Linux using the DOS emulator. It is trivial in some sense but it took me some hours to configure everything, as I never used the DOS emulator before and I don't have access to a DOS/Windows box. I'll try to write an instructions-for-dummies-like-me text and make it available very soon. If someone is anxious, please mail me. [], Eduardo Ochs edrx@inx.com.br edrx@mat.puc-rio.br --- # Local Variables: # coding: utf-8-unix # End: