Warning: this is an htmlized version!
The original is across this link,
and the conversion rules are here.
#######
#
# E-scripts on Squeak (not on other SmallTalks)
#
# 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.
#
# 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/squeak.e>
#           or at <http://angg.twu.net/e/squeak.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/>.
#
#######





# «.squeak-3.6»		(to "squeak-3.6")
# «.learn-squeak»	(to "learn-squeak")
# «.squeak-sarge»	(to "squeak-sarge")
# «.squeak-vm»		(to "squeak-vm")
# «.squeak-debian-2006»	(to "squeak-debian-2006")
# «.squeak-on-etch»	(to "squeak-on-etch")
# «.squeak-binfmts»	(to "squeak-binfmts")

# (find-es "smalltalk")



http://minnow.cc.gatech.edu/squeak/uploads/SqueakLanguageRef.3.html
http://minnow.cc.gatech.edu/squeak/uploads/SqueakClassesRef.html




#####
#
# Squeak 3.6
# 2004feb29
#
#####

# «squeak-3.6»  (to ".squeak-3.6")
# <http://www-sor.inria.fr/~piumarta/squeak/>

# (code-c-d "squeakvm"    "~/bigsrc/Squeak-3.6g-2/")
# (code-c-d "squeakvmdoc" "~/bigsrc/Squeak-3.6g-2/platforms/unix/doc/")
# (find-squeakvmfile "")
# (find-squeakvmfile "README")
# (find-squeakvmdocfile "HowToBuildFromSource.txt")
# (find-squeakvmdocfile "3.2-5.RELEASE_NOTES" "libdir")
# (find-squeakvmdocfile "3.2-1.RELEASE_NOTES" "without first installing it")
# (find-squeakvmdocfile "")
#*
rm -Rv ~/bigsrc/Squeak-3.6g-2/
cd $S/http/www-sor.inria.fr/~piumarta/squeak/devel/dist/
tar -xvzf Squeak-3.6g-2.src.tar.gz      -C ~/bigsrc/
tar -xvzf Squeak-3.6g-5420.image.tar.gz -C ~/bigsrc/

cd $S/http/www-sor.inria.fr/~piumarta/squeak/unix/release/
tar -xvzf Squeak-3.sources.tar.gz       -C ~/bigsrc/Squeak-3.6g-2/

cd ~/bigsrc/Squeak-3.6g-2/
mv -v Squeak-3/usr/local/lib/squeak/SqueakV3.sources \
               usr/local/lib/squeak/

#*
cd ~/bigsrc/Squeak-3.6g-2/
mkdir bld
cd bld
../platforms/unix/config/configure |& tee oc
make	|& tee om

#*
# (find-squeakvmfile "bld/omi")
cd ~/bigsrc/Squeak-3.6g-2/bld/
rm -v /usr/local/doc/squeak/*.gz
make install	|& tee omi

cd ~/bigsrc/Squeak-3.6g-2/
./INSTALL	|& tee oI

#*

# (find-fline "/tmp/Squeak-3/INSTALL" "preferred locations")
# (find-fline "/tmp/Squeak-3.6g-2/INSTALL" "preferred locations")
#*
diff /tmp/Squeak-3/INSTALL /tmp/Squeak-3.6g-2/INSTALL
#*
rm -Rv /tmp/Squeak-3*
#*




#####
#
# learning squeak
# 2004mar11
#
#####

# «learn-squeak»  (to ".learn-squeak")
# Squeak FAQ: <http://minnow.cc.gatech.edu/squeak/471>
# (find-w3m "/home/edrx/snarf/http/minnow.cc.gatech.edu/squeak/471")

(defun find-sqsrc (&rest rest)
  (find-fline "~/.squeak/srcs")
  (setq tab-width 2)
  (apply 'ee-goto-position rest))

(defun find-sqchg (&rest rest)
  (find-fline "~/.squeak/chgs")
  (setq tab-width 2)
  (apply 'ee-goto-position rest))

# (find-sqsrc "inspect it (i)")
# (find-sqsrc "TextEditorYellowButtonMenu _ SelectionMenu")
# (find-sqsrc "printIt: characterStream")
# (find-sqsrc "evalString:")
# (find-sqsrc "\nbrowseAllClasses")

# (find-sqchg "A Browser is a tool")
# (find-sqchg 0)


#*
# (find-fline "~/.squeak/")
cd ~/.squeak/
tr \\\r \\\n < squeak.changes   > chgs
tr \\\r \\\n < SqueakV3.sources > srcs
mkdir chg src

#*
# (find-lua50ref "string.find")

cd ~/.squeak/chg/
lua50e '
sources = {}
class = nil
_, __, class_ = string.find(

add = function (class, line)
  
'

# (find-gstnode "A new class")
# (find-gstnode "Defining methods")
# (find-gstnode "The syntax")
# (find-gstnode "The syntax" "#at:put:")

1 to: 62 do: [:j |
	bestIndex = 63 ifTrue: [
		(stepSizeTable at: j) >= diff ifTrue: [bestIndex _ j]]].
	^ bestIndex

# (find-fline "~/.squeak/")




#####
#
# squeak from the debianized sources
# 2004dec15
#
#####

# «squeak-sarge»  (to ".squeak-sarge")
# http://minnow.cc.gatech.edu/squeak/3616
# (find-fline "/etc/apt/sources.list")
# deb ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/debian/ unstable non-US
deb-src ftp://st.cs.uiuc.edu/pub/Smalltalk/Squeak/debian/ unstable non-US
#*
apt-get update

#*
# (find-fline "~/tmp/debsrc/")
rm -Rv ~/bigsrc/squeak/
mkdir  ~/bigsrc/squeak/
cd     ~/bigsrc/squeak/
cp -v $S/ftp/st.cs.uiuc.edu/pub/Smalltalk/Squeak/debian/dists/unstable/non-US/source/non-free/* .

#*
# (find-fline "~/bigsrc/squeak/")
# (find-fline "~/bigsrc/squeak/squeak-3.7b5/")

cd     ~/bigsrc/squeak/
dpkg-source -x squeak_3.7b5-2.dsc
cd     ~/bigsrc/squeak/squeak-3.7b5/
dpkg-buildpackage -rfakeroot	|& tee odbfr

cd     ~/bigsrc/squeak/
dpkg-source -x squeak-image3.7_5868-1.dsc
cd     ~/bigsrc/squeak/squeak-image3.7-5868/
dpkg-buildpackage -rfakeroot	|& tee odbfr

cd     ~/bigsrc/squeak/
dpkg-source -x squeak-sources3_0.0-1.dsc
cd     ~/bigsrc/squeak/squeak-sources3-0.0/
dpkg-buildpackage -rfakeroot	|& tee odbfr

#*
cd ~/bigsrc/squeak/
dpkg -i \
  inisqueak_3.7b5-2_i386.deb     \
  squeak-image3.7_5868-1_all.deb \
  squeak-plugin_3.7b5-2_i386.deb \
  squeak-sources3_0.0-1_all.deb  \
  squeak-vm_3.7b5-2_i386.deb     \
  squeak_3.7b5-2_all.deb

#*





#####
#
# Squeak 3.6
# 2004feb29
#
#####

# «squeak-3.6»  (to ".squeak-3.6")
# <http://www-sor.inria.fr/~piumarta/squeak/>

# (code-c-d "squeakvm"    "~/bigsrc/Squeak-3.6g-2/")
# (code-c-d "squeakvmdoc" "~/bigsrc/Squeak-3.6g-2/platforms/unix/doc/")
# (find-squeakvmfile "")
# (find-squeakvmfile "README")
# (find-squeakvmdocfile "HowToBuildFromSource.txt")
# (find-squeakvmdocfile "3.2-5.RELEASE_NOTES" "libdir")
# (find-squeakvmdocfile "3.2-1.RELEASE_NOTES" "without first installing it")
# (find-squeakvmdocfile "")
#*
rm -Rv ~/bigsrc/Squeak-3.6g-2/
cd $S/http/www-sor.inria.fr/~piumarta/squeak/devel/dist/
tar -xvzf Squeak-3.6g-2.src.tar.gz      -C ~/bigsrc/
tar -xvzf Squeak-3.6g-5420.image.tar.gz -C ~/bigsrc/

cd $S/http/www-sor.inria.fr/~piumarta/squeak/unix/release/
tar -xvzf Squeak-3.sources.tar.gz       -C ~/bigsrc/Squeak-3.6g-2/

cd ~/bigsrc/Squeak-3.6g-2/
mv -v Squeak-3/usr/local/lib/squeak/SqueakV3.sources \
               usr/local/lib/squeak/

#*
cd ~/bigsrc/Squeak-3.6g-2/
mkdir bld
cd bld
../platforms/unix/config/configure |& tee oc
make	|& tee om

#*
# (find-squeakvmfile "bld/omi")
cd ~/bigsrc/Squeak-3.6g-2/bld/
rm -v /usr/local/doc/squeak/*.gz
make install	|& tee omi

cd ~/bigsrc/Squeak-3.6g-2/
./INSTALL	|& tee oI

#*

# (find-fline "/tmp/Squeak-3/INSTALL" "preferred locations")
# (find-fline "/tmp/Squeak-3.6g-2/INSTALL" "preferred locations")
#*
diff /tmp/Squeak-3/INSTALL /tmp/Squeak-3.6g-2/INSTALL
#*
rm -Rv /tmp/Squeak-3*
#*




#####
#
# learning squeak
# 2004mar11
#
#####

# «learn-squeak»  (to ".learn-squeak")
# Squeak FAQ: <http://minnow.cc.gatech.edu/squeak/471>
# (find-w3m "/home/edrx/snarf/http/minnow.cc.gatech.edu/squeak/471")

(defun find-sqsrc (&rest rest)
  (find-fline "~/.squeak/srcs")
  (setq tab-width 2)
  (apply 'ee-goto-position rest))

(defun find-sqchg (&rest rest)
  (find-fline "~/.squeak/chgs")
  (setq tab-width 2)
  (apply 'ee-goto-position rest))

# (find-sqsrc "inspect it (i)")
# (find-sqsrc "TextEditorYellowButtonMenu _ SelectionMenu")
# (find-sqsrc "printIt: characterStream")
# (find-sqsrc "evalString:")
# (find-sqsrc "\nbrowseAllClasses")

# (find-sqchg "A Browser is a tool")
# (find-sqchg 0)


#*
# (find-fline "~/.squeak/")
cd ~/.squeak/
tr \\\r \\\n < squeak.changes   > chgs
tr \\\r \\\n < SqueakV3.sources > srcs
mkdir chg src

#*
# (find-lua50ref "string.find")

cd ~/.squeak/chg/
lua50e '
sources = {}
class = nil
_, __, class_ = string.find(

add = function (class, line)
  
'

# (find-gstnode "A new class")
# (find-gstnode "Defining methods")
# (find-gstnode "The syntax")
# (find-gstnode "The syntax" "#at:put:")

1 to: 62 do: [:j |
	bestIndex = 63 ifTrue: [
		(stepSizeTable at: j) >= diff ifTrue: [bestIndex _ j]]].
	^ bestIndex

# (find-fline "~/.squeak/")





#####
#
# the Squeak VM
# 2005jan06
#
#####

# «squeak-vm»  (to ".squeak-vm")
# (code-c-d "squeakvm"    "~/bigsrc/squeak/squeak-3.7b5/")
# (code-c-d "squeakvmdoc" "~/bigsrc/squeak/squeak-3.7b5/platforms/unix/doc/")
# (find-squeakvmfile "src/vm/")
# (find-squeakvmfile "src/vm/interp.c")
# (find-squeakvmdocfile "README.Keyboard" "Button1 (red)")





#####
#
# squeak for debian, again (2006)
# 2006aug11
#
#####

# «squeak-debian-2006»  (to ".squeak-debian-2006")
# (find-angg ".zshrc" "mysqueak")
# http://wiki.squeak.org/squeak/3616

# http://ftp.squeak.org/debian/squeak-debian-packages.pdf
# http://wudika.de/~marcus/swiki/minnow.cc.gatech.edu/squeak/3616.html
# http://www-sor.inria.fr/~piumarta/squeak/index.html
# http://ftp.squeak.org/debian/dists/unstable/main/source/Sources
# http://ftp.squeak.org/debian/dists/unstable/main/source/devel/
# http://ftp.squeak.org/debian/dists/unstable/main/source/devel/index.html
# http://ftp.squeak.org/debian/dists/unstable/main/binary-all/Packages.gen
# http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/
# http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/index.html
# http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/Packages
# http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/Packages.gen
# http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/
# http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/index.html
# (find-zsh "gethrefs < $S/http/ftp.squeak.org/debian/dists/unstable/main/source/devel/index.html")
# (find-zsh "gethrefs < $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/index.html")
# (find-zsh "gethrefs < $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/index.html")
# http://ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/squeak-vm_3.9.7-9_i386.deb
# http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-image3.9_3.9.7046.1_all.deb
# http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-sources3_3.7_all.deb
# http://ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak_3.9.7-9_all.deb
#*
A=(
  $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-i386/devel/squeak-vm_3.9.7-9_i386.deb
  $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-image3.9_3.9.7046.1_all.deb
  $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak-sources3_3.7_all.deb
  $S/http/ftp.squeak.org/debian/dists/unstable/main/binary-all/devel/squeak_3.9.7-9_all.deb
)
sudo dpkg -i $A

#*
# (find-fline "~/SQUEAK/")
# (find-sh "rm -Rv ~/SQUEAK/")

#*
mkdir -p ~/SQUEAK/
cd       ~/SQUEAK/
squeak &

#*

# (find-status   "squeak-vm")
# (find-vldifile "squeak-vm.list")
# (find-udfile   "squeak-vm/")
# (find-status   "squeak-image3.9")
# (find-vldifile "squeak-image3.9.list")
# (find-udfile   "squeak-image3.9/")
# (find-status   "squeak-sources3")
# (find-vldifile "squeak-sources3.list")
# (find-udfile   "squeak-sources3/")
# (find-status   "squeak")
# (find-vldifile "squeak.list")
# (find-udfile   "squeak/")

# (find-sh "tr \\\\r \\\\n < /usr/share/squeak/SqueakV3.sources")




#####
#
# squeak on etch
# 2007jun30
#
######

# «squeak-on-etch»  (to ".squeak-on-etch")
# http://wiki.squeak.org/squeak/3616
# (find-fline "/etc/apt/sources.list")

deb     http://ftp.squeak.org/debian/ stable main
deb-src http://ftp.squeak.org/debian/ stable main

# (find-status   "squeak")
# (find-vldifile "squeak.list")
# (find-udfile   "squeak/")
# (find-status   "squeak-vm")
# (find-vldifile "squeak-vm.list")
# (find-udfile   "squeak-vm/")
# (find-status   "squeak-image3.9")
# (find-vldifile "squeak-image3.9.list")
# (find-udfile   "squeak-image3.9/")
# (find-status   "squeak-sources3.9")
# (find-vldifile "squeak-sources3.9.list")
# (find-udfile   "squeak-sources3.9/")

# (find-fline "/usr/bin/squeak")
# (find-man "1 squeak")
# (find-fline "/usr/bin/squeakvm")
# (find-man "1 squeakvm")
# (find-fline "/usr/share/squeak/")
# (find-fline "/usr/lib/squeak/4.0.3-2202/")

# (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources")
# (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "authoring tools")
# (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "print it (p)")
# (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "polynomialEval: thisX")
# (find-anggsh "tr '\\r' '\\n' < .squeak/SqueakV39.sources" "a Stream that accesses a FilePage")
#(1 2 3) polynomialEval: 2
readFromFile:
FileStream

	| f |
	f := (FileStream fileNamed: fileName) binary.
	self storeAIFFSamplesOn: f.
	f close.



* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
# squeak /usr/share/squeak/squeak3.9.image.gz &
zcat   /usr/share/squeak/squeak3.9.image.gz   > /tmp/squeak3.9.image
cp -v  /usr/share/squeak/SqueakV39.sources      /tmp/SqueakV39.sources
zcat   /usr/share/squeak/squeak3.9.changes.gz > /tmp/squeak3.9.changes
squeak /tmp/squeak3.9.image
# (find-bgprocess "squeak /tmp/squeak3.9.image")

/usr/share/squeak

# (find-fline "~/.squeak/")
# (find-fline "/usr/share/squeak/")
# (find-sh0 "tr '\\r' '\\n' < ~/.squeak/SqueakV39.sources  > /tmp/sources.txt")
# (find-esgrep "grep -nH -e file: /tmp/sources.txt")
# (find-esgrep "grep -niH -e filedirectory /tmp/sources.txt")
# (find-esgrep "grep -niH -e writeOnFileNamed: /tmp/sources.txt")
# (find-esgrep "grep -niH -e forceNewFileNamed: /tmp/sources.txt")
# (find-fline "/tmp/sources.txt")

(FileDirectory on: 'tmp') newFileNamed: 'foo'





#####
#
# squeak and binfmts
# 2007jul01
#
#####

# «squeak-binfmts»  (to ".squeak-binfmts")
# http://wiki.squeak.org/squeak/3616
# (find-available "binfmt-support")
# (find-status   "binfmt-support")
# (find-vldifile "binfmt-support.list")
# (find-udfile   "binfmt-support/")

update-binfmts --install squeak /usr/bin/squeakvm --magic '\x66\x19\x00\x00'
update-binfmts --install squeak-be /usr/bin/squeakvm --magic '\x00\x00\x19\x66'
echo ':squeak:M::\x66\x19\x00\x00::/usr/bin/squeakvm:' > /proc/sys/fs/binfmt_misc/register
echo ':squeak-be:M::\x00\x00\x19\x66::/usr/bin/squeakvm:' > /proc/sys/fs/binfmt_misc/register







IRC chat, 2006aug11:

<gulik> edrx: Try this in a Squeak workspace: (1 to: 100) collect: [ :each | each * 2 ].
<gulik> Select it and press alt-i.
<gulik> Its a stupid bit of code that returns a list of numbers.
<gulik> Here's a better example that shows how inspectors update:
<gulik> Make a list:    myList := OrderedCollection new.
<gulik> Add stuff to it:          1 to: 100 do: [ :each | myList add: each ].
<gulik> select only "myList" and press alt-i.
<gulik> and then change it:       myList at: 1 put: 'hello'.
<gulik> You should see it change in the inspector.

<gulik> The debugger is pretty cool as well. Some people advocate coding using only the debugger.
<gulik> That is, write some code, run it until it fails, write more code to make it not fail and "continue" the debugger until it fails again.


Browser newOnClass: Workspace.
Workspace browse.



Squeak by Example:
  http://www.iam.unibe.ch/~scg/SBE/

http://vpri.org/html/writings.htm
http://vpri.org/pdf/NSF_prop_RN-2006-002.pdf
http://piumarta.com/cv/






#  Local Variables:
#  coding:               raw-text-unix
#  ee-delimiter-hash:    "\n#*\n"
#  ee-delimiter-percent: "\n%*\n"
#  ee-anchor-format:     "«%s»"
#  End: