Date : Sun, 04 May 1997 16:27:52 +0100 (BST)
From : Rich <rst20@...>
Subject: Re: BBC Disc Menu
On Sun, 4 May 1997, Mr M F Scholes wrote:
> I have a disk menu program on my BBC, it is a !boot file that is *RUN by
> *opt 4,2 and contains a basic program with machine code header. It uses
> the disc title to have a header eg GAMES and to find out the number of
> the disc and type of drives you have, ie the title could be: GAMES
> <1213> where 1 is the number of drives, 2 means double sided , 1 is
> unused, and 3 means disc 3. The menu data is stored in a BASIC file full
> of DATA statements which the program tacks on the end of itself.
>
> The problem comes whien trying to use it on a 6502 @nd processor of a
> Master. When shift-break is used the menu hangs, but if the !boot file
> is *run by hand it works, has and one any idea why?
Presumably your machine code header is simply executing something
equivalent to:
JSR &FFF7 with YX=> "Key 0 PAGE=&1900|MOLD|MRUN|F|M"
LDA #21:JSR &FFEE ; Disable output
LDA #15:LDX #0:JSR &FFF4 ; Clear keybd buffer
LDA #138:LDX #0:LDY #128:JSR &FFF4 ; Insert fn key 0 into buffer
JMP &FFF7 with YX=> "*BASIC"
Is it generating some sort of error during this (which would not be seen
if you're disabling output as above) or is it literally hanging? Try a
CLI right at the beginning of the m/c - I seem to remember Shift-Break
disabling interrupts, which might be a cause of any crash. It sounds as
if, somehow, Basic isn't being properly initialised before your menu
starts to run.
I don't know much about the 2nd processor, so if it's anything more subtle
(does it work on an ordinary Master?) then I probably can't help.
Regards,
Rich
-==-
+----------------------------------+
| Richard Talbot-Watkins, | "Marriage is one of the
| Room H4, St Catharine's College, | chief causes of divorce..."
| Cambridge. (01223) 500 858 |
+----------------------------------+