SICPelago

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!

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

  1. 2024-12-26 The Shell is a Program
  2. 2024-07-17 Trunic
  3. 2024-07-02 AnyObject
  4. 2024-04-07 XZ Gon' Give It To Ya
  5. 2024-04-06 Run-time Polymorphism in Swift
  6. 2024-01-20 Online Communication
  7. 2024-01-07 The Biggest Smallest PNG
  8. 2023-12-28 CellLVM
  9. 2023-12-14 Protobuf Is Almost Streamable
  10. 2023-12-13 Daylight Saving Is Temporal Time Zones
  11. 2023-11-26 GitMounter
  12. 2023-10-23 Type Erasure in Rust
  13. 2023-10-09 Soft Orders of Magnitude
  14. 2023-10-04 There's No Such Thing As "Implicitly Atomic"
  15. 2023-08-12 Multiplayer Slipways
  16. 2023-07-15 HOW TO REFER TO A MAGIC CONSTANT IN C
  17. 2023-04-01 sNaNs and qNaNs
  18. 2023-02-12 Setting up GoToSocial
  19. 2023-01-22 Rescuing Files From Classic Mac OS...with Swift!
  20. 2022-12-03 Re: Twitter
  21. 2022-11-28 The Two Faces of Codable/Serde
  22. 2022-10-09 Swift was always going to be part of the OS
  23. 2022-05-14 Relative References in ARM64 Disassembly
  24. 2022-04-24 Default Arguments and Label-based Overloading
  25. 2022-03-19 #TalkPay
  26. 2022-03-02 UnsafeMutableRawBufferPointer
  27. 2022-02-21 Dynamic Linking Is Bad For Apps And Static Linking Is Also Bad For Apps
  28. 2021-12-31 Swift Regrets: Wrap-up
  29. 2021-09-10 Swift Regrets
  30. 2021-07-05 Keyboard Pants
  31. 2020-11-15 Negotiate Your Offers!
  32. 2020-10-20 The Swift Runtime: Enums
  33. 2020-10-06 The Swift Runtime: Class Metadata Initialization
  34. 2020-09-29 The Swift Runtime: Class Metadata
  35. 2020-09-21 The Swift Runtime: Uniquing Caches
  36. 2020-09-14 The Swift Runtime: Type Metadata
  37. 2020-09-07 The Swift Runtime: Type Layout
  38. 2020-08-31 The Swift Runtime: Heap Objects
  39. 2020-08-26 Objective-Rust
  40. 2020-07-18 A Letter To My Congressional Representatives on the DHS Abuses of Power in Portland, Oregon
  41. 2020-07-07 Suffusion: Playing with Filesystems
  42. 2020-05-24 ROSE-8 on Mac OS 9
  43. 2020-04-03 Shallow Git Repositories
  44. 2020-04-01 Swift on Mac OS 9
  45. 2020-02-06 Flexible Identities in git
  46. 2020-02-04 Introducing the Game 'by Color
  47. 2020-01-28 ROSE-8: Console Mode
  48. 2020-01-22 Setting up gitweb on Shared Hosting
  49. 2020-01-13 ROSE-8
  50. 2019-12-24 quasiquarantine
  51. 2019-11-01 Leaving Apple
  52. 2019-09-25 Queue, Queeu, Quuee
  53. 2019-09-13 Presentation on PrintAsObjC
  54. 2019-08-01 > go east
  55. 2019-02-21 A Shiny Magic Number
  56. 2018-04-29 Misleading Metrics and UX Tradeoffs
  57. 2018-04-03 "FIXME" Doesn't Always Mean "Fix Me"
  58. 2018-03-22 My Little (String) Optimization, Part 2
  59. 2018-03-15 My Little Optimization: The Compiler Is Magic
  60. 2018-02-26 Many-to-Many Protocols
  61. 2018-01-29 Color Palette #8
  62. 2017-09-07 The New Kingdom of Nouns
  63. 2017-09-05 Over-abstraction
  64. 2016-08-21 Macromancy, Part 2
  65. 2016-08-07 Macromancy
  66. 2016-06-19 Pronoun Buttons
  67. 2016-05-29 Webmailer's Update Bar
  68. 2016-05-23 So You Want to Be a (Compiler) Wizard
  69. 2015-12-29 Re: Contempt Culture
  70. 2015-11-18 Recommendations
  71. 2015-05-09 Nibblesort: Adventures in Optimization
  72. 2015-02-22 AlterConf SF/Oakland
  73. 2015-01-24 “Skip the FFI”
  74. 2014-12-28 SIGWINCH
  75. 2012-12-08 How to Write a Checker in 24 Hours
  76. 2012-10-02 Git Tricks
  77. 2012-05-16 Big News
  78. 2012-04-26 Keyboard Adventures
  79. 2012-04-10 Mail Aliases
  80. 2011-08-14 Header Anchors: A Safari Extension
  81. 2011-08-10 "Little Big Details"
  82. 2011-07-29 Weak Linking
  83. 2011-07-25 Using Clang from SVN in Xcode
  84. 2011-07-22 rm vs. Time Machine
  85. 2011-07-14 Priorities
  86. 2011-06-30 Quick Look in TextMate
  87. 2011-06-27 git add
  88. 2011-06-20 Automatic Reference Counting
  89. 2011-06-16 Dealing with "Sandwich Code"
  90. 2011-06-05 gdba
  91. 2011-06-03 Chrome vs. Safari
  92. 2011-05-31 User-Side Troubleshooting
  93. 2011-05-30 Auspicious Continuation
  94. 2009-07-21 Scripting Bridge
  95. 2009-07-08 What Happened to Dockyard?
  96. 2009-06-26 Garbage Collectors and Stack Drawers
  97. 2009-06-21 Z shell
  98. 2009-05-22 “Several New Features”
  99. 2009-05-05 C++ Templates are Turing-Complete
  100. 2009-04-21 [Meme] How Many HTML Elements Can You Name in 5 Minutes?
  101. 2009-04-16 Safer Plugin Categories
  102. 2009-04-02 Hacking Safari 4...for Great Convenience
  103. 2009-03-27 Const Correctness
  104. 2009-03-19 Categories and +load
  105. 2009-03-15 Subversion Checksum Problems
  106. 2009-03-06 JavaScript Tetris
  107. 2008-09-04 Objective-J and Objective-C
  108. 2008-08-28 HTTPS and Name-based Virtual Hosting
  109. 2008-03-08 Alerts Without Apps (or nibs)
  110. 2008-01-14 NSNumber, CFNumber, and CFBoolean
  111. 2007-12-13 GenericToolbar and IB3
  112. 2007-10-27 Performance Optimization: Why We Can't Use valueForKeyPath:
  113. 2007-09-01 Short Xcode Tip: Plugins
  114. 2007-07-15 Port 25 Blocked?
  115. 2007-06-27 GenericToolbar Icon
  116. 2007-04-13 The Symbolism of Pretty URLS
  117. 2007-03-07 Flexible PHP
  118. 2007-01-12 Inauspicious Beginnings