mozart_sym35_1feb68.bin stops loading

68 views
Skip to first unread message

Charles Ess

unread,
Apr 12, 2026, 2:52:06 AMApr 12
to [PiDP-1]
I've had no problems with loading and then playing the other *.bin music tapes in the /tapes directory as prescribed, e.g. the trioSonatas. The buxtehude fugue tape in /tapes/old also works as expected.
But the mozart_sym35_1feb68.bin stops loading after the first START press, and I'm unable to figure out what the problem is.
I've tried some of the suggestions in earlier threads for this problem with other tapes:
set all address switches to 0, hit EXAMINE, before continuing with loading the music tape (i.e., after the initial pdp1m13.rim program is loaded);
and just to double check, EXTEND switch is down.
As well as a couple of suggestions from Gemini:
set sense switch 2 up as well ("In many HC variations, this tells the loader to ignore checksum errors and keep reading");
use CONT after the first stall instead of START.
Nope. nada. zip.
(FWIW: I boot using the cfg.77 file - i.e., this mounts the pdp1m13.rim in the tape rader; press READ IN - and proceed from there with mounting the desired music tape; setting sense switch 1 up, address to 0004 (octal = 100 on the rightmost switches); and then START. Works for the others - just not here.)
Next steps? Many thanks in advance - c.

Bill E

unread,
Apr 12, 2026, 10:14:45 AMApr 12
to [PiDP-1]
I took a quick look at it to confirm it isn't a rim binary, it's not. My guess would be that it was prepared for one of the other music player versions, of which there are several, especially given the '68 date.
Bill

Charles Ess

unread,
Apr 12, 2026, 10:56:19 AMApr 12
to [PiDP-1]
Great - thanks for checking. 
FWIW: I also tracked down another version - mozSym35pt1_24mar68.bin / mozSym35pt2_24mar68.bin - that an LLM recommended as possibly more likely to work - nope, but that would be consistent with these files being made for a different music player.
Do you have any idea as to how to track down which music player I/we should try to use with these tapes? 
And/or - perhaps those who included the *1feb68.bin file in the software might have a suggestion?
In all events - many thanks for the help. I'll see if an LLM can get me started in these directions.

Charles Ess

unread,
Apr 12, 2026, 4:24:27 PMApr 12
to [PiDP-1]
What I have found so far.
In contrast with raw code in the Bach tapes
e.g
.=== trio === ?0o214!3h2b1‾41-4jq81q11-11q21o4jq8?0o260! 1q41-41q41o41q41-41‾41b4?0o260! 1f81h41f41b41‾41-41q4?0o260! 1o81-81 8jb8?
The Mozart tape uses a high level language to encode music:
mozart symphony 35· 1 feb 1968, 1a | from "The symphonies of Haydn, Schubert and Mozart in score" | edited by Albert Wier | Harcourt, Brace and Company, 1936 treble key (( tempo 151 VIOLIN I 1 f 0t1/ 2 14...2 0t16/ 3 11bh4 13h, r..4 11b16/ 4 10b4 10b.8 10b16 10bm.4 9bl16 10b,/ 5 9bh4 11h, r2/
reconfirming that it is written for a different music player.
Mounting and reading macro.bin _almost_ works instead: subsequently mounting the mozart tape and pressing START starts the mozart tape moving nicely: but then it stops with "MOZART SYMPHONY 35" partly visible on the lower tape in the reader; the upper tape is clearly stopped in the middle somewhere - the console lights flicker as if the machine is processing further for a few seconds, and the bottom tape progresses a bit further, but then everything stops. Pressing START again makes the Blinkenlights fire, as if the machine is processing - but the tape doesn't advance any further. CONT or READ IN will advance the tape a few notches, but to no further use. that is, I can repeatedly press READ IN, for example, the tape will advance and it appears that the tape is feeding into the machine one step at a time, i.e., the lights change with each press. But not enough to make any difference - i.e., START or CONT will get the program starting for.a few seconds but then stops.
So it feels close - but no cigar, with the LLM guessing that 
"macro.rim can partially parse the Mozart source, but then halts because this is really for a related but different music compiler."
o.k. any other candidates to try?
Many thanks in advance - c.

Charles Ess

unread,
Apr 13, 2026, 10:50:36 AMApr 13
to [PiDP-1]

Following some suggestions from an LLM and the tip from

https://groups.google.com/g/pidp-1/c/PFFXNSEUcSw/m/tSh5488uBQAJ

I tried mounting and READ IN macro_sa0.bin

And then mounting the mozart_sym35_1feb68.bin  tape; pressing READ IN (i.e., bypassing the various music players included here: /bits/DEC/pdp1/papertapeImages/20040106/musicPrograms

This seems to get me considerably further. READ IN successfully loads at least the first elements of the tape, so as to read out the first few lines of the header:

mozart symphony 35· 1 feb 1968, 1a | from "The symphonies of Haydn, Schubert and Mozart in score" | edited by Albert Wier | Harcourt, Brace and Company, 1936 treble key (( tempo 151 VIOLIN I 1 f 0t1/ 2 14...2 0t16/ 3 11bh4 13h, r..4 11b16/ 4 10b4 10b.8 10b16 10bm.4 9bl16 10b,/ 5 9bh4 11h, r2/

3-additional start presses - one tape movement - additional readouts on the typewriter.jpg

 START and then CONTINUE will move the tape forward by small increments and give lines out. Lines start to repeat – either START or READ IN will move the tape forward again.

Lots more CONTINUEs and then a START made much larger progress on the tape – and a new – pass 2 line


4 additional presses - enough to move the tape significantly and result in a new - pass 2 line.jpg

But then nothing – START makes the computer work on something- at least the memory buffer  and address lights are flickering – but nothing else. After some time, however, I’m hearing clicks from the speaker apparently generated by whatever the computer is doing. After that, however, dead stop.

The LLM summarizes it this way

MACRO [macro_sa0.bin] successfully completes pass 1 and prints the header including "pass 2" in red

[But after a certain amount of progress (i.e., with dozens of CONTINUEs and an occasional START), things come to a stop]

The relevant loop in MACRO [macro_sa0.bin] source is szf i 1 / jmp .-1 waiting for tape reader flag 1

It surmises that the the MACRO [macro_sa0.bin] is waiting for the tape reader flag to be set, which on a real PDP-1 would happen automatically when the tape reader was physically started. In the simulator, the READER button should set this flag, but it's not working as expected.

Looking back at the source code we read, there's this in the res routine:

lu1,               clf 1

                       szf i 1

                       jmp .-1    /loop waiting for flag 1

                       tyi         /read character

MACRO  [macro_sa0.bin] is sitting in that tight loop waiting for flag 1 — the tape reader ready flag — to be set. The READER button should set it, but something isn't connecting.

Perhaps this will help someone here recognize / suggest possible further steps to make this work as it should – e.g., setting specific Sensor Switches and/or Memory Address – and/or commands issued through the typewriter?
thanks in advance -

Bill E

unread,
Apr 13, 2026, 11:40:36 AMApr 13
to [PiDP-1]
It's great that you're digging into this. I looked quickly at the emulator core, pdp1.c. I don't see it setting pf1 for any tape reader operation. Is the SEQ BREAK light on? If so, an interrupt routine must set it.  Just to be sure you noticed, when the flag gets set, tyi is going to wait for a character from the typewriter, not the tape reader. Also, SEQ BREAK doesn't mean an interrupt happened, it means that interrupts are enabled.

Bill

sunnyboy010101

unread,
Apr 13, 2026, 6:46:26 PMApr 13
to [PiDP-1]
I am also really glad to see this thread. I also tried the music tapes once my rack system was built and I'd worked out the kinks in the sound (hint: HDMI dummy plugs are NOT your friend).

Like others I was able to get the main demo working, but when I tried this same tape I had the identical problems. I just thought it was operator error (mine) and gave up on it as other things needed attention. So seeing that it may indeed be the tape and not the process is gladly received.

-R

Charles Ess

unread,
Apr 15, 2026, 11:00:50 AMApr 15
to [PiDP-1]
thanks for the tip! Perhaps this is getting me/us closer ...
In the meantime - I realized (sorry, quite new here) that what I was doing with macro_sa0.bin and the mozart_sym35_1feb68.bin  tape was compiling the latter to a new tape, shown as the lower tape in the image above, as well as here

Initial passes using macro_sa0 compiler - CONT - then START.jpg


I also discovered (after trying several other things, including some of the alternative music players mentioned earlier that I discovered can be found at: 
- while none of these worked in the way described for the pdp1m13.rim player as the example in PDP-1: THE EARLIEST REAL-TIME COMPUTER MUSIC
- surprisingly (to me at least), both the "stock" version of the mozart_sym35_1feb68.bin tape and my compiled version (unnecessarily, as it turned out) would load with the "original" Samson pdp1m13.rim player. (I had initially thought that the 1feb68 date might peg the tape to the pldMusicPlayer_1-27-68.bin: guess not, at least not so far.)
But: after the tape finishes loading (with 5 START presses - the first quite short, the rest very long] - there is no SEQ BREAK light on - neither are any program flags on.
Following your tip that "when the flag gets set, tyi is going to wait for a character from the typewriter" - I wondered what would happen if I entered a character at this stage: program flag 1 comes on - but nothing proceeds further.
There is a bit of flickering on the right 6 program counter lights, instruction lights, and the memory lights on the top panel. The stochastic parrot guesses that this is some sort of loop that the machine is caught in, but what does it know ...

I have poked fairly far into the documentation for the macro (MACRO-PDP-1_Macro.pdf in the /opt/pidp1/tapes/doc folder) as well as the two documents linked from the PDP-1 page: Writing music for the compiler and introductory letter. The latter are not much help here, at least to my amateur eyes. The first document promises a section "II Operating the Compiler" (referring to the player, I'm thinking?) - but only the first section is included with the PDF. 
The Introductory Letter is also a bit puzzling to me. It mentions the three INTERMEDIATE tapes for the Bach trio sonatas that are included in /opt/pidp1/tapes - noting that "the intermediate tapes are each in three movements to be batch-compiled." FWIW, these are the tapes that play just as expected on their own. I've seen instructions for how to do such a batch compile, but not pursued them - waiting to see if I/we can get past this stage first.

Feels like some sort of progress - just no music out of the speakers yet.
Many thanks in advance - 

Charles Ess

unread,
Apr 15, 2026, 11:37:37 AMApr 15
to [PiDP-1]
PS. One of the reasons I'm wanting to find more details about the player/compiler is that one set of instructions from Joe B. Lynch's Github site -   music_instr16.pdf - includes the following:

Load program into core bank 0 (if it’s already there, Start at 700 octal). Program will halt. 2. Program Flags 5 and 6 will be off, indicating that no music is in memory. 3. Turn off all Sense Switches, except Sense Switch 1, which is on to mean “read tape”. Put an intermediate tape in the reader. The number of parts should be written on the tape; a suggeted tempo may be written there also. If a tempo is present, put it in the TW. 4. Start at 4 to read the first part (voice) of the tape. After reading it, the program should halt with the number of parts read in the AC, and the memory address (typically in bank 0) that the music read so far occupies up to. Program Flag 5 will be on to indicate some music has been read; Flag 6 will be off to indicate that it has not been compiled. 5. Start at 4 again for each remaining part on the tape. 6. When the last part has been read in, press Continue. This will compile the music into core bank 1 (and 2 if necessary), and turn on Program Flag 6. Then (unless Sense Switch 3 is on) it will play the music. 
This is to say that instead of pressing START at the end of the tape after turning off sensor switch 1 (the instructions for the stock player that is also being used here) - press CONTINUE instead.
The latter doesn't get any further, either, FWIW.

Charles Ess

unread,
Apr 17, 2026, 3:55:43 AM (13 days ago) Apr 17
to [PiDP-1]
The fact that the working Bach trio sonata intermediate tapes are relatively small - e.g., 19.5 KiB - vs. the Mozart 35 (48.2) finally made me wonder if I'm running into a memory limit of some sort with the latter.
This seems to be the case. After mounting the longer Mozart tape, the first START loads very little before stopping; four more STARTs are followed by very long loads and the EOT is reached. Before doing anything else:
the RUN light is on, as OVERFLOW , EXTEND, and I-O HALT. No program flags are showing; instruction lights are 11101. Program counter, memory address, memory buffer, instruction lights are flickering, if almost imperceptibly. No output on the typewriter.
(And somewhere in here the Tape Reader window disappears entirely ...?)
Pressing CONTINUE resulted in the I-O HALT light coming on. The previously flickering lights are now flickering more perceptibly - nothing coming out of the typewriter. Instruction: 11101.
A CR entered via the typewriter resulted in PF1 coming on - but nothing else. 

It also makes no difference by trying all of this with EXTEND turned on before loading the Mozart tape. (And the Tape Reader window still disappears.)

My current stochastic parrot tells me that that the Overflow condition (whether or not EXTEND is attempted)
"suggests the program hit an arithmetic overflow somewhere during compilation, which could mean a memory address calculation exceeded its bounds, consistent with a very large piece pushing against memory limits."
"The fact that CONTINUE turned on the I/O Halt light more definitively, combined with the Overflow condition, suggests the program is now explicitly waiting for typewriter input [either an acknowledgment or a command that would push further] — the I/O Halt on a typewriter wait behaves differently from a tape reader wait, and this looks like the former."
And finally:
"The Overflow condition combined with no program flags and no typewriter output despite accepting input points increasingly toward Symphony 35 simply being too large."

So: do any of the wise and experienced heads here recognize the possibility that 
1) the player / compiler is waiting for some further command from the typewriter to move beyond setting the program flag? 
and/or
2) that given the current memory limits of the build - not sure what they are, nor how to check: but my current stochastic parrot tells me that the PDP-1s came with a considerable range of memory options, and perhaps there's just not enough in this version? -  maybe I'm just SOL as far as trying to play this particular Mozart tape is concerned?

Last but not least: It remains a bit of a nagging problem that I can't find the documentation for the player/compiler - beyond the instructions given for the Samson player at https://obsolescence.dev/pdp1-music.html.
That is, the one document I can find - music_instr16.pdf - is for version 16 of the player/compiler, whereas the "stock" version of the player is pdp1m13.bin.
Many thanks in advance,

Bill E

unread,
Apr 17, 2026, 6:50:03 AM (13 days ago) Apr 17
to [PiDP-1]
The pidp-1 is configured with plenty of memory, a full 16 banks, so you're not running out of memory. Overflow is pretty meaningless, it gets set quite frequently as the result of adds and subtracts. While it does indicate that a math operation exceeded the 18 bit capacity, it's not at all fatal.
As for the extend switch being on during loading, it will just select the bank the rim loader will load into. It does not need to be on for a program that explicitly used extended memory, that's handled under program control.

However, it's quite possible that the program uses extended memory. Is the extend light on? (don't start with the extend switch on, that's rarely the correct thing to do).
The opcode is an iot, most likely iot 3. typewriter input. You can tell by the contents of the MB display.

Finally, as for documentation, welcome to my world. Lots of it has been lost or is very hard to find, especially for many of the programs floating around. The only way to figure this out might well be dissecting the contents of the tape and then doing the same with the various music programs to find a match, a long and tedious undertaking.

Once I finish the fascinating Type 340 display emulation I'm doing, I might get bored enough to dig into this more.
PS and unrelated, the 340 was basically a computer in its own right. It ran asynchronously, executing instructions it pulled from main memory. I've had to implement it as an independent emulator running in its own thread to get the timings right. What fun!

Bill

Charles Ess

unread,
Apr 20, 2026, 1:46:33 AM (10 days ago) Apr 20
to [PiDP-1]
Thanks on all fronts, Bill.
Yes, FWIW, the EXTEND light came on - as it does with the working Bach tapes, for example.

Just for fun, I went back and looked at the YouTube videos showing Samson demonstrating music on the PDP-1. He does a couple of things differently before loading the music tape. 1) In addition to setting sensor switch one up, he sets test word switches up - hard to see which ones in the 2nd video, but in the first, they are 10001000. 2) After the tape loads - 3 STARTs for 3 voices - he turns of s.s. 1 and turns on s.s. 3; START again, and the Blinkenlights show CPU activity - finishing the compiling, I gather. When it stops, he turns s.s.3 off, and then START - and music.
Naturally this doesn't work with the very long Mozart tape - perhaps not a surprise, as the little article says that he had to rewrite the Harmony Compiler, so perhaps the one he's running there is somewhat different from the pdp1m13.rim that works here.

It's also clear, thanks to Claude's analyses of the working Bach tape and the stubborn Mozart tape that the structure of the latter is markedly different - strongly indicating that it needs either a different player and/or a different set of instructions when loading, as perhaps suggested by Samson's examples in the videos.

Not exactly a null result  (and even the null result is a result). In this case, I've learned enough about the structures involved to at least understand what will be involved with trying to move forward to transcribing and playing the music I'm centrally interested in: a version of Kepler's Harmonices Mundi. There's a vast, long history behind all of this, reaching back to the Pythagoreans / through Kepler's discovery of what we now call the three laws of planetary motion as the basis for finally writing the score for the long-presumed "music of the spheres" to / the first computer-based realization of his Harmonices Mundi by  Willie Ruff and John Rodgers in 1979. 
Speaking of documentation, um, issues ... in this case, Ruff and Rodgers documented their approach with enough detail (I hope) to get started (at some point). I'm attaching it just for fun - maybe you'll get bored enough to have a crack at this as well?

Oscar (I believe) says somewhere that the PiDP-1 is the world's first toy computer - meaning for me, at least, that things are still simple enough that we can tinker and see what happens at sufficiently low levels of abstraction so as to understand what's going on - in this case, from transcription through compiling to the music starting to play. In particular: it's an ideal machine for realizing Pythagorean scales as based on ratios of 2s, as a start, i.e., binary - and then at least the four voices of Mercury, Venus, Earth, and Mars from Kepler / Ruff and Rodgers. With any luck.

In any case, a thousand thanks again for helping with getting this far.
Rodgers-KeplersHarmonyWorld-1979.pdf
Reply all
Reply to author
Forward
0 new messages