SICPelago is a randomized Scheme environment where you unlock core capabilities by solving carefully selected exercises adapted from Structure and Interpretation of Computer Programs. Starting only with your trusty lambda
and the supporting quote
, climb your way to the top of the textbook, exploring math puzzles, composite data structures, and infinite sequences. Happy April Prototypes Day!
SICPelago
ROSE-8 in customasm
Last week a friend shared the existence of hlorenzi’s customasm, a tool that can serve as the assembler for arbitrary CPU architectures just by defining a mapping of instructions to encodings.
Hey, I made a CPU once! How hard would it be to make a customasm definition for ROSE-8? Turns out…not very! I played around with it for about two hours, and by the end of it I’d translated an entire ROSE-8 program to customasm, with most of the definition file looking basically the same as the text reference for the ISA encoding.
“Pretty Good, Pretty Good”
As a kid, one of my first games was Maelstrom, a slick Asteroids clone for the Mac by Ambrosia Software (who later went on to publish the Escape Velocity series). I have childhood memories of the two-note soundtrack while playing the two simplest strategies (spin in place without accelerating, and zoom upwards in a straight line firing all the way), of the “You EEdiot” when you accidentally shot a power-up canister, and the “Pretty good, pretty good!” for when you score over 10,000 points in a single stage.
Except if I open up Maelstrom now, it says “Hot damn!” instead.
Older Posts
- 2024-12-26 The Shell is a Program
- 2024-07-17 Trunic
- 2024-07-02 AnyObject
- 2024-04-07 XZ Gon' Give It To Ya
- 2024-04-06 Run-time Polymorphism in Swift
- 2024-01-20 Online Communication
- 2024-01-07 The Biggest Smallest PNG
- 2023-12-28 CellLVM
- 2023-12-14 Protobuf Is Almost Streamable
- 2023-12-13 Daylight Saving Is Temporal Time Zones
- 2023-11-26 GitMounter
- 2023-10-23 Type Erasure in Rust
- 2023-10-09 Soft Orders of Magnitude
- 2023-10-04 There's No Such Thing As "Implicitly Atomic"
- 2023-08-12 Multiplayer Slipways
- 2023-07-15 HOW TO REFER TO A MAGIC CONSTANT IN C
- 2023-04-01 sNaNs and qNaNs
- 2023-02-12 Setting up GoToSocial
- 2023-01-22 Rescuing Files From Classic Mac OS...with Swift!
- 2022-12-03 Re: Twitter
- 2022-11-28 The Two Faces of Codable/Serde
- 2022-10-09 Swift was always going to be part of the OS
- 2022-05-14 Relative References in ARM64 Disassembly
- 2022-04-24 Default Arguments and Label-based Overloading
- 2022-03-19 #TalkPay
- 2022-03-02 UnsafeMutableRawBufferPointer
- 2022-02-21 Dynamic Linking Is Bad For Apps And Static Linking Is Also Bad For Apps
- 2021-12-31 Swift Regrets: Wrap-up
- 2021-09-10 Swift Regrets
- 2021-07-05 Keyboard Pants
- 2020-11-15 Negotiate Your Offers!
- 2020-10-20 The Swift Runtime: Enums
- 2020-10-06 The Swift Runtime: Class Metadata Initialization
- 2020-09-29 The Swift Runtime: Class Metadata
- 2020-09-21 The Swift Runtime: Uniquing Caches
- 2020-09-14 The Swift Runtime: Type Metadata
- 2020-09-07 The Swift Runtime: Type Layout
- 2020-08-31 The Swift Runtime: Heap Objects
- 2020-08-26 Objective-Rust
- 2020-07-18 A Letter To My Congressional Representatives on the DHS Abuses of Power in Portland, Oregon
- 2020-07-07 Suffusion: Playing with Filesystems
- 2020-05-24 ROSE-8 on Mac OS 9
- 2020-04-03 Shallow Git Repositories
- 2020-04-01 Swift on Mac OS 9
- 2020-02-06 Flexible Identities in git
- 2020-02-04 Introducing the Game 'by Color
- 2020-01-28 ROSE-8: Console Mode
- 2020-01-22 Setting up gitweb on Shared Hosting
- 2020-01-13 ROSE-8
- 2019-12-24 quasiquarantine
- 2019-11-01 Leaving Apple
- 2019-09-25 Queue, Queeu, Quuee
- 2019-09-13 Presentation on PrintAsObjC
- 2019-08-01 > go east
- 2019-02-21 A Shiny Magic Number
- 2018-04-29 Misleading Metrics and UX Tradeoffs
- 2018-04-03 "FIXME" Doesn't Always Mean "Fix Me"
- 2018-03-22 My Little (String) Optimization, Part 2
- 2018-03-15 My Little Optimization: The Compiler Is Magic
- 2018-02-26 Many-to-Many Protocols
- 2018-01-29 Color Palette #8
- 2017-09-07 The New Kingdom of Nouns
- 2017-09-05 Over-abstraction
- 2016-08-21 Macromancy, Part 2
- 2016-08-07 Macromancy
- 2016-06-19 Pronoun Buttons
- 2016-05-29 Webmailer's Update Bar
- 2016-05-23 So You Want to Be a (Compiler) Wizard
- 2015-12-29 Re: Contempt Culture
- 2015-11-18 Recommendations
- 2015-05-09 Nibblesort: Adventures in Optimization
- 2015-02-22 AlterConf SF/Oakland
- 2015-01-24 “Skip the FFI”
- 2014-12-28 SIGWINCH
- 2012-12-08 How to Write a Checker in 24 Hours
- 2012-10-02 Git Tricks
- 2012-05-16 Big News
- 2012-04-26 Keyboard Adventures
- 2012-04-10 Mail Aliases
- 2011-08-14 Header Anchors: A Safari Extension
- 2011-08-10 "Little Big Details"
- 2011-07-29 Weak Linking
- 2011-07-25 Using Clang from SVN in Xcode
- 2011-07-22 rm vs. Time Machine
- 2011-07-14 Priorities
- 2011-06-30 Quick Look in TextMate
- 2011-06-27 git add
- 2011-06-20 Automatic Reference Counting
- 2011-06-16 Dealing with "Sandwich Code"
- 2011-06-05 gdba
- 2011-06-03 Chrome vs. Safari
- 2011-05-31 User-Side Troubleshooting
- 2011-05-30 Auspicious Continuation
- 2009-07-21 Scripting Bridge
- 2009-07-08 What Happened to Dockyard?
- 2009-06-26 Garbage Collectors and Stack Drawers
- 2009-06-21 Z shell
- 2009-05-22 “Several New Features”
- 2009-05-05 C++ Templates are Turing-Complete
- 2009-04-21 [Meme] How Many HTML Elements Can You Name in 5 Minutes?
- 2009-04-16 Safer Plugin Categories
- 2009-04-02 Hacking Safari 4...for Great Convenience
- 2009-03-27 Const Correctness
- 2009-03-19 Categories and +load
- 2009-03-15 Subversion Checksum Problems
- 2009-03-06 JavaScript Tetris
- 2008-09-04 Objective-J and Objective-C
- 2008-08-28 HTTPS and Name-based Virtual Hosting
- 2008-03-08 Alerts Without Apps (or nibs)
- 2008-01-14 NSNumber, CFNumber, and CFBoolean
- 2007-12-13 GenericToolbar and IB3
- 2007-10-27 Performance Optimization: Why We Can't Use valueForKeyPath:
- 2007-09-01 Short Xcode Tip: Plugins
- 2007-07-15 Port 25 Blocked?
- 2007-06-27 GenericToolbar Icon
- 2007-04-13 The Symbolism of Pretty URLS
- 2007-03-07 Flexible PHP
- 2007-01-12 Inauspicious Beginnings