Terminal.app on a NeXTstation, black on white, one Tuesday evening in March 1991. Nothing gets written here — this is the toolchain working. A spectrogram browser has to be built: seven Objective-C modules through NeXT's cc, a Motorola DSP56001 assembler that turns out not to be on the path, and a link that fails because the Makefile never mentioned libdsp_s.
This is 1991, so it is Object and not NSObject, lowercase framework headers, no -framework flag, and NXCreateHashTable instead of anything with NS in front of it. otool takes the objects apart, nm shows every message send resolving to objc_msgSend, and the Objective-C segment lists the ivars with their offsets. The 56001 FFT is real DSP assembly — parallel moves, a multiply-accumulate, three address spaces in one instruction.
Then it runs, and dies on the third sound file. gdb finds the store landing at an odd address, and the answer is not in the source at all: compile the same file with and without -O, diff the two disassemblies, and gcc 1.93 has hoisted a float store above the bounds test that guards it. Drop the flag, generate real header dependencies with cc -M, rebuild, and all eight sounds go through. Archive to the magneto-optical disk and log out.
An hour of slow, reflective instrumental — music only, no typing sounds. 1 hour, 1920×1080, with sound.
Music from #Uppbeat (free for Creators!):
https://uppbeat.io/music/tracks/adi-g...
License code: XIRB9RUQWINZE3O8
#next #nextstep #nextstation #objectivec #steve #retrocomputing #mach #machO #dsp56001 #motorola #68040 #compiling #1990s #busyworklabs #musiconly #focus #deepwork #programming
Terminal.app on a NeXTstation, black on white, one Tuesday evening in March 1991. Nothing gets written here — this is the toolchain working. A spectrogram browser has to be built: seven Objective-C modules through NeXT's cc, a Motorola DSP56001 assembler that turns out not to be on the path, and a link that fails because the Makefile never mentioned libdsp_s.
This is 1991, so it is Object and not NSObject, lowercase framework headers, no -framework flag, and NXCreateHashTable instead of anything with NS in front of it. otool takes the objects apart, nm shows every message send resolving to objc_msgSend, and the Objective-C segment lists the ivars with their offsets. The 56001 FFT is real DSP assembly — parallel moves, a multiply-accumulate, three address spaces in one instruction.
Then it runs, and dies on the third sound file. gdb finds the store landing at an odd address, and the answer is not in the source at all: compile the same file with and without -O, diff the two disassemblies, and gcc 1.93 has hoisted a float store above the bounds test that guards it. Drop the flag, generate real header dependencies with cc -M, rebuild, and all eight sounds go through. Archive to the magneto-optical disk and log out.
An hour of slow, reflective instrumental — music only, no typing sounds. 1 hour, 1920×1080, with sound.
Music from #Uppbeat (free for Creators!):
https://uppbeat.io/music/tracks/adi-g...
License code: XIRB9RUQWINZE3O8
#next #nextstep #nextstation #objectivec #steve #retrocomputing #mach #machO #dsp56001 #motorola #68040 #compiling #1990s #busyworklabs #musiconly #focus #deepwork #programming