Matthew Battles has a nice post about the “Programs at an Exhibition” show, up now on the metaLAB blog.
I am moved by the holiday spirit of MIT’s Independent Activities Period (IAP) to announce a Commodore 64 BASIC programming workshop using original hardware.
[Update: The workshop is now fully subscribed, but I will try to arrange for spectators who would like to join us around 4:30pm to see the results of our work.]
Beginning at 2pm on Wednesday January 29, we will spend about two and half hours working on short BASIC programs. Collaboration will be strongly encouraged; there will be one Commodore 64 provided for each pair of programmers. (If you negotiate with your partner, you may write something individually, however.) It is fine to proceed by modifying programs, and some will be provided for this exact purpose. Programs need not be interactive, but can be. Visual and textual effects will be our focus, but programmers are welcome to work with sound, to develop simple games, or even (gasp!) to write a program that does something useful.
No programming experience (in BASIC, on the Commodore 64, or otherwise) is required. Those who are new to programming can be paired with experienced programmers, if this is suitable to both people. Also, the essentials of BASIC on the Commodore 64 will be described during the workshop. Finally, new programmers can do very interesting work by modifying programs, changing data and parameters and then getting into changing and adding code.
At about 4:30pm we will have a presentation, screening, showcase, or compos of sorts for Commodore 64 BASIC programs in the following three categories:
- (max) 10-line program
- (max) 25-line program
After this workshop, the code developed will be presented and shared on the Web, where it can be run in emulation or by people who have Commodore 64s.
The time for the workshop, again, is:
January 29 (Wednesday)
I can accommodate 8-10 people, programming in pairs. Reserve a place by sending me an email. Because space is limited, please promise to come to the workshop if you write to reserve a space.
Just back from several travels, I’ve found that there’s a video record online of me, Patsy Baudoin, and John Bell presenting 10 PRINT at the University of Maine way back in April of this year. In our presentation, we answer questions and discuss the origin of the 10 PRINT project and the nature of our collaboration. And I do some livecoding. Pretty often, actually.
Please note that 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 is available as a beautiful MIT Press book, designed by our co-author Casey Reas, ans also as a free PDF.
Over on her site Authoring Software, longtime e-lit author and BASIC programmer Judy Malloy has written a news story about the release of 10 PRINT CHR$(205.5+RND(1)); : GOTO 10. I’m quoted, along with co-authors Mark Marino and Jeremy Douglass.
Also, the book has made its way further out into the world – both the Harvard Book Store and the The MIT Press Book store now have it in stock.
Our first event for 10 PRINT is scheduled for:
November 12, 2012
Harvard Book Store
1256 Massachusetts Ave.
This means, of course, that the book will be printed and available for sale by then, which is less than a month from now.
The Harvard Book Store is an independent book store in Harvard Square, founded in 1932.
Of the ten authors of 10 PRINT, we’re planning to have at least me (Nick Montfort), Patsy Baudoin, and Noah Vawter there for some reading from the book, comments on the titular program and the writing of the book, and discussion. The reading is free and takes place at the bookstore itself, as the page on the event explains.
Mark Sample has posted five basic statements, ahem, I mean 5 BASIC statements, on computational literacy.
I must point out that while they are all programs, the third and fifth ones actually include multiple statements. And, the program that number 4 is referring to is:
10 PRINT "GOODBYE CRUEL WORLD"
Very much worth a read – from the standpoint of understanding programming and its cultural intersections generally, not only because Mark is promoting the book that he, I, and eight others wrote, which will be published in November.
Local sound artist/electronic musician Keith Fullerton Whitman released an extraordinary piece on the b-side of his November 2009 cassette hallicrafters, inc. The piece is called 10 poke 54272+int(rnd(1)*25),int(rnd(1)*256) : goto 10 and is 18 minutes of sound produced by a Commodore 64 emulator running the BASIC program that is the title of the piece.
The memory locations beginning at 54272 are mapped on the Commodore 64 to the registers of the SID (Sound Interface Device). By POKEing random values into them, the SID, although it is a musical chip, is stimulated to produce sounds in what probably seems like a non-musical way: based on the effect of register settings and the sequence produced by the system’s random number generator, a polynomial counter.
I’m listening to the piece running on a hardware C64 now, which is soothing, although it seems like it shouldn’t be. Looking at the code, I note that the program
10 poke 54272+rnd(1)*25,rnd(1)*256 : goto 10
will put the same values into the same memory locations (and therefore SID registers) in the same order. The INT function is unnecessary because all arithmetic in C64 BASIC is done in floating point and then cast to integer whenever necessary. It’s possible that removing these functions will cause the piece to speed up, however, and I suspect it will, even though a BASIC interpreter could skip the unnecessary INT calls to begin with. There would be various ways of determining this, but the one I’d like to try involves getting two C64s, each with one version of the program, and seeing if they go out of phase.
By the way, I say that these two programs will put the same values in the same order because RND(1) returns a deterministic sequence. Any time either of these programs is invoked before other calls to RND are made, they will produce the same sequence. Using RND(0) would seed the random number generator on the jiffy clock, so would do different things depending upon how long the computer had been on before startup.
Thanks to sound artist and digital media scholar Kevin Driscoll, a.k.a. Lone Wolf, for letting me know about this.
Update: Hilariously, I overlooked that Whitman is not the author of this program – he credits Noah Vawter, a.k.a. Shifty, who is currently collaborating with me on a project about a one-line Commodore 64 BASIC program. I guess I was too distracted by that picture of an iPhone running a C64 emulator.