Delete BitBlt
Deleted BitBlt. Deleted Pen. Deleted DisplayBitmap. Deleted Form.
Not stubs — deleted. Removed from the image entirely. These four classes are the 1980 display layer of Smalltalk-80. Every pixel ever rendered by the original system went through BitBlt. Two hundred methods in the class hierarchy referenced Form. It took six days to remove them cleanly.
The replacement is a Canvas abstraction backed by SkiaSharp. Smalltalk code calls the same message protocol — drawRect:, fillOval:, displayString:at: — but the primitives behind them call SkiaSharp instead of the BitBlt blitter. The 1-bit-per-pixel world is gone. The display is 32bpp RGBA and can handle colour, antialiasing, and arbitrary resolution.
The hard part was Form. In the original system, Form is a subclass of Object that wraps a 1bpp bitmap and provides the data structure BitBlt operates on. It’s not just a display class — it’s used for cursors, for offscreen buffers, for the image snapshot mechanism, for clipboard operations. Removing it meant tracing every dependency.
There was one bad day in the middle: a commit that deleted Form too aggressively broke the snapshot restore. The image would load but crash on the first redraw because several view classes inherited from Form and their display methods were now calling methods that didn’t exist. Had to revert, trace all the subclasses, and do the migration in a stricter order.
The restore is now working. The image saves, the image loads, the display reconnects, the System Browser redraws.
Classes deleted: Form, BitBlt, Pen, DisplayBitmap. Methods migrated: 47. Lines removed from C#: ~1,200.