Music Box 128k+3 Compatibility Fix

Music Box 128k

Music Box 128k does not run on the Spectrum +3. It fails with "C Nonsense in BASIC, 9500:3". 36 years later, here's the fix.

Someone updated Music Box 128k in 1992 to support TR-DOS but as far as I can see nobody has updated it to run in a disk image with 128k+3 compatibility.


I don't know why Mark Alexander didn't fix this in 1987 when the +3 came out. It would make saving and loading tunes much easier and faster by using +3 Disks. I think the sound distortion problem on the 128k+3 would make it not a suitable machine for music composers. The limited market may have also made it difficult for Melbourne House to justify a +3 only release.

I have aimed to fix this so the demo tunes could be heard. You could also keep my disk image as a Master disk and copy it to a Work disk so you can compose, load, save, play and compile your tunes on a fast disk instead of tape.

Reasons and Fix

Attempt 1

1. Change 1:

ramdisk usage has changed from SAVE !"chars" to SAVE "m:chars" etc.

9500 SAVE "m:chars" : LOAD "m:chars"
9501 LOAD "t:" : SAVE "t:"

2. Change 2:

1921 GOSUB 9999
9999 IF D$="CASS TAPE" THEN LOAD "t:" : SAVE "t:" : RETURN

This worked but when I tried to load a tune from tape I get the error "Drive not ready, 2811:2"

Running the program from the start again allows the file name input to succeed.

3. Change 3:

rename 2810 to 2811

2810 GOSUB 9999
2811 DIM F$(10) : INPUT "FILENAME :"; LINE F$
remove LINE so this becomes INPUT "FILENAME :"; F$

I tried many things but the problem was the LINE command was causing the error. Why is this?

Attempt 2

I copied the files to a DSK from Tape but when I copied the data block I didn't do a CLEAR 47999 before so it would freeze on the main menu. It is working now.

I have made the following changes:

  1. +3 DISK load/save option (4) (enabled by default) in 3. Syst Menu > 3. Change Save and Load Peripheral,
  2. Catalogue option available (copied from Microdrive code) in load/save when +3 DISK is enabled,
  3. Memory address 49549 contains the selected value so poke 49549,4 in line 9500,
  4. If the tape option is selected then switch by using load "t:":save "t:", if disk option is selected switch by using load "a:" : save "a:",
  5. Loader rewritten. Loader code obtained using snaplist. Pokes to prevent L-Break into program removed.

I have not removed the option for Microdrive even though I think Microdrives don't work with +2A/+3.

Files on disk

    DATA 18K
    GYRO 5K
    LOADER3 1K
    MAIN 14K
    MAIN3DOS 14K
    PIC 7K
    ROCK 5K
    SWEV 5K
    TRAIN 5K
    88K free    

Running screenshots


1) Music Box 128k+3 DSK (Disk Image). Download here.

To run:
Insert disk
Select +3 BASIC
Type load "loader3" and press enter.

2) Music Box Tune Demo DSK (Disk Image). Download here.

Tunes compiled using Music Box and saved to disk. The loader contains a menu to play them.

To run:
Insert disk
Select +3 BASIC
Type load "loader" and press enter.

3) Source Code Listings here.

This is for reference only created using snaplist.exe from snapshots for easy comparison.

Back to index.