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.

Background

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


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

Running screenshots

Download

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.