For one, you could try my Smalltalk-78 VM. Smalltalk-78 is a leaner version of Smalltalk-76 but very much identical in syntax semantics.
It is also possible to run the full Smalltalk-76 environment, and here is how:
First, you need an emulator for the Alto computer. Ken Shiriff posted a nice piece on how to run ContrAlto on Windows. It is written in C# and I got it to work on my Mac using Mono. So here's a step-by-step:
- Install Mono from http://www.mono-project.com/download/
- Download ContrAlto-mono.zip from https://github.com/livingcomputermuseum/ContrAlto/releases
- Download this Smalltalk-76 disk image: http://www.bitsavers.org/bits/Xerox/Alto/disk_images/chm/xmsmall.zip
- Unzip both ContrAlto-mono.zip and xmsmall.zip in the same folder.
- In a terminal, change to the ContrAlto directory and run mono Contralto.exe. This opens the Alto screen in a new window, and the emulator control in the terminal.
- (if you get an error about a missing SDL library at this point, install that via homebrew using brew install sdl2)
- At the emulator's ">" prompt, type load disk 0 xmsmall.dsk and then start:
$ mono Contralto.exeContrAlto v188.8.131.52 (c) 2015-2017 Living Computers: Museum+Labs.Bug reports to email@example.comYou are at the ContrAlto console. Type 'show commands' to seea list of possible commands, and hit Tab to see possible command completions.>load disk 0 xmsmall.dskDrive 0 loaded.>startAlto started.
In the Alto screen window, type resume xmsmall.boot to start up Smalltalk-76:
- And now you should see Smalltalk-76 running!
- There is no explicit "save" option. The OOZE object swapping system continuously writes objects to the disk. Use "quit" from the main menu to flush all objects back to disk.
You will also need some keyboard shortcuts to access the special characters in Smalltalk-76:
ctrl A ≤ (less or equal)To learn Smalltalk-76, the User Manual is a good starting point:
ctrl B bold
ctrl C user interrupt
ctrl F ≡ (identical)
ctrl G ◦ (index operator)
ctrl I italic
ctrl N ≠ (not equal)
ctrl O ↪ (quote)
ctrl Q ⇑ (return)
ctrl R ≥ (greater or equal)
ctrl S 's (eval operator)
ctrl T ┗ (prompt)
ctrl U ¬ (unary minus)
ctrl X clear emphasis
ctrl / ⇒ (if then)
ctrl = ≡ (identical)
ctrl shift = ≠ (not equal)
ctrl \ ≠ (not equal)
ctrl ] ⌾ (create point)
ctrl [ ◦ (index operator)
ctrl : ⦂ (open colon)
ctrl ' ↪ (literal quote)
ctrl < ≤ (less or equal)
ctrl > ≥ (greater or equal)
shift - ¬ (unary minus)
cursor down doit (in dialog view)