summaryrefslogtreecommitdiff
path: root/emulators/xbeeb
diff options
context:
space:
mode:
authordsainty <dsainty@pkgsrc.org>2006-06-13 13:24:35 +0000
committerdsainty <dsainty@pkgsrc.org>2006-06-13 13:24:35 +0000
commitd0740d4c682660c3064411edbbcf0b3289c7bdc6 (patch)
tree00e2a561236ab48b73f9ae592f8c1537814c9c45 /emulators/xbeeb
parentaaf4b5dc08f81c45fa48fe8966dc708d7259c351 (diff)
downloadpkgsrc-d0740d4c682660c3064411edbbcf0b3289c7bdc6.tar.gz
Update Xbeeb to 0.4.1:
- Support TrueColor displays - Better sound - .inf file attributes - Simplified NetBSD sound support with OSS compatibility - Provided a working MASTER_SITES - Took maintainership
Diffstat (limited to 'emulators/xbeeb')
-rw-r--r--emulators/xbeeb/MESSAGE12
-rw-r--r--emulators/xbeeb/Makefile50
-rw-r--r--emulators/xbeeb/PLIST7
-rw-r--r--emulators/xbeeb/distinfo14
-rw-r--r--emulators/xbeeb/files/xbeeb.14
-rw-r--r--emulators/xbeeb/patches/patch-ab135
-rw-r--r--emulators/xbeeb/patches/patch-ad37
-rw-r--r--emulators/xbeeb/patches/patch-ae32
-rw-r--r--emulators/xbeeb/patches/patch-af39
9 files changed, 171 insertions, 159 deletions
diff --git a/emulators/xbeeb/MESSAGE b/emulators/xbeeb/MESSAGE
index 51bac34a622..685105663e3 100644
--- a/emulators/xbeeb/MESSAGE
+++ b/emulators/xbeeb/MESSAGE
@@ -1,5 +1,5 @@
===========================================================================
-$NetBSD: MESSAGE,v 1.3 2003/05/06 17:41:11 jmmv Exp $
+$NetBSD: MESSAGE,v 1.4 2006/06/13 13:24:35 dsainty Exp $
You must copy the BBC "BASIC2" ROM image to
@@ -9,6 +9,16 @@ and the BBC "OS1.2" ROM image to
${PREFIX}/${XBEEBROOT}/roms/OS1.2.rom
+As an alternative to extracting these ROM images from your own BBC hardware,
+archives of these ROM images may also be found at:
+
+ http://bbc.nvg.org/rom/Acorn/lang/BASIC2.rom
+ http://bbc.nvg.org/rom/Acorn/os/OS-1.2.rom
+
+The emulator expects files in the chosen directory to have matching
+<filename>.inf files containing the BBC file attributes. This is the style
+that many archives found on the Internet use.
+
You also need to ensure that your X session can access the fonts
needed. This can be done with:
diff --git a/emulators/xbeeb/Makefile b/emulators/xbeeb/Makefile
index 99fd12269fa..8cfd454c62c 100644
--- a/emulators/xbeeb/Makefile
+++ b/emulators/xbeeb/Makefile
@@ -1,19 +1,16 @@
-# $NetBSD: Makefile,v 1.17 2006/02/17 19:27:33 wiz Exp $
+# $NetBSD: Makefile,v 1.18 2006/06/13 13:24:35 dsainty Exp $
#
-DISTNAME= xbeeb-0.3.6
-PKGREVISION= 2
+DISTNAME= xbeeb-0.4.1
CATEGORIES= emulators x11
-MASTER_SITES= ftp://ftp.netcom.net.uk/pub/Micros/BBC/Emulators/Xbeeb/
-# for 0.4.1
-#MASTER_SITES= http://www.getafile.com/cgi-bin/merlot/get/james/xbeeb/
+MASTER_SITES= http://bbc.nvg.org/emul/Xbeeb/ \
+ http://www.getafile.com/cgi-bin/merlot/get/james/xbeeb/
EXTRACT_SUFX= .tgz
-MAINTAINER= skrll@NetBSD.org
+MAINTAINER= dsainty@NetBSD.org
HOMEPAGE= http://www.cloud9.co.uk/james/BBCMicro/Xbeeb/
COMMENT= Acorn BBC Micro emulator with an X based interface
-WRKSRC= ${WRKDIR}/xbeeb
USE_IMAKE= yes
MAN_PAGE= ${WRKDIR}/xbeeb.1
@@ -26,14 +23,39 @@ REQD_DIRS= ${PREFIX}/lib/X11/fonts/xbeeb
INSTALLATION_DIRS= bin man/man1
+PKG_OPTIONS_VAR= PKG_OPTIONS.xbeeb
+PKG_SUPPORTED_OPTIONS= mitshm
+PKG_SUGGESTED_OPTIONS=
+
+.include "../../mk/bsd.options.mk"
+
+# The emulator can be compiled either to use MIT-SHM, or to not.
+# Unfortunately it doesn't support both at once.
+.if empty(PKG_OPTIONS:Mmitshm)
+SUBST_CLASSES+= nomitshm
+SUBST_STAGE.nomitshm= post-patch
+SUBST_MESSAGE.nomitshm= Disabling MIT-SHM
+SUBST_FILES.nomitshm= src/Config.h
+SUBST_SED.nomitshm= -e "s|\#define *MITSHM|\#undef MITSHM|"
+.endif
+
+SUBST_CLASSES+= dsp
+SUBST_STAGE.dsp= post-patch
+SUBST_MESSAGE.dsp= Adjusting sound device path.
+SUBST_FILES.dsp= src/SoundOSS.c
+SUBST_SED.dsp= -e "s|\"/dev/dsp\"|\"${DEVOSSAUDIO}\"|"
+
+SUBST_CLASSES+= beebroot
+SUBST_STAGE.beebroot= post-patch
+SUBST_MESSAGE.beebroot= Adjusting XBEEBROOT path.
+SUBST_FILES.beebroot= src/Config.h
+SUBST_SED.beebroot= -e "s|^\(\#define[ ]*XBEEBROOT[ ]*\)[^ ].*$$|\1\"${PREFIX}/${XBEEBROOT}/\"|"
+
# xbeeb build starts in the source directory
do-configure:
- cd ${WRKSRC}/src && ${XMKMF}
+ cd ${WRKSRC}/src && ${XMKMF_CMD}
post-patch:
- (cd ${WRKSRC}/src && \
- ${MV} Config.h Config.h.dist && \
- ${SED} 's+^\(#define[ ]*XBEEBROOT[ ]*\)[^ ].*$$+\1"${PREFIX}/${XBEEBROOT}/"+' Config.h.dist > Config.h)
${SED} -e 's+@XBEEBROOT@+${XBEEBROOT}+g' \
-e 's+@PREFIX@+${PREFIX}+g' \
${FILESDIR}/xbeeb.1 > ${MAN_PAGE}
@@ -53,11 +75,13 @@ do-install:
${INSTALL_DATA_DIR} ${PREFIX}/${XBEEBROOT}/roms
${INSTALL_DATA_DIR} ${PREFIX}/${XBEEBROOT}/docs
${INSTALL_DATA_DIR} ${PREFIX}/lib/X11/fonts/xbeeb
- ${INSTALL_DATA} ${WRKSRC}/roms/xdfs0.70.rom ${PREFIX}/${XBEEBROOT}/roms/xdfs0.70.rom
+ ${INSTALL_DATA} ${WRKSRC}/roms/xdfs0.90.rom ${PREFIX}/${XBEEBROOT}/roms/xdfs0.90.rom
for docfile in ${WRKSRC}/doc/*; do \
${INSTALL_DATA} $$docfile ${PREFIX}/${XBEEBROOT}/docs; \
done
${CP} ${WRKSRC}/fonts/*.pcf ${PREFIX}/lib/X11/fonts/xbeeb
mkfontdir ${PREFIX}/lib/X11/fonts/xbeeb
+.include "../../mk/oss.buildlink3.mk"
+.include "../../mk/x11.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
diff --git a/emulators/xbeeb/PLIST b/emulators/xbeeb/PLIST
index e29098b9bdf..281a106aca1 100644
--- a/emulators/xbeeb/PLIST
+++ b/emulators/xbeeb/PLIST
@@ -1,4 +1,4 @@
-@comment $NetBSD: PLIST,v 1.2 2006/02/17 19:27:33 wiz Exp $
+@comment $NetBSD: PLIST,v 1.3 2006/06/13 13:24:35 dsainty Exp $
bin/xbeeb
lib/X11/fonts/xbeeb/ttext-grc-ldh.pcf
lib/X11/fonts/xbeeb/ttext-std-udh.pcf
@@ -10,8 +10,10 @@ lib/X11/fonts/xbeeb/ttext-grc.pcf
lib/X11/fonts/xbeeb/ttext-grc-udh.pcf
lib/X11/fonts/xbeeb/ttext-std.pcf
man/man1/xbeeb.1
-${XBEEBROOT}/roms/xdfs0.70.rom
+${XBEEBROOT}/roms/xdfs0.90.rom
${XBEEBROOT}/docs/64doc
+${XBEEBROOT}/docs/Changes-v0.3
+${XBEEBROOT}/docs/Changes-v0.4
${XBEEBROOT}/docs/Configuration
${XBEEBROOT}/docs/DataXfer
${XBEEBROOT}/docs/DiskEmulation
@@ -25,7 +27,6 @@ ${XBEEBROOT}/docs/RomPatches
${XBEEBROOT}/docs/SnapshotFormat
${XBEEBROOT}/docs/Thanks
${XBEEBROOT}/docs/WWWSites
-${XBEEBROOT}/docs/WorkingSoftware
@dirrm ${XBEEBROOT}/docs
@dirrm ${XBEEBROOT}/roms
@dirrm ${XBEEBROOT}
diff --git a/emulators/xbeeb/distinfo b/emulators/xbeeb/distinfo
index 998b8df8905..4014e02aceb 100644
--- a/emulators/xbeeb/distinfo
+++ b/emulators/xbeeb/distinfo
@@ -1,9 +1,11 @@
-$NetBSD: distinfo,v 1.3 2005/02/23 18:49:22 agc Exp $
+$NetBSD: distinfo,v 1.4 2006/06/13 13:24:35 dsainty Exp $
-SHA1 (xbeeb-0.3.6.tgz) = 233f9a3bacfdcb4b6e17ee8e22c712a1c05983d6
-RMD160 (xbeeb-0.3.6.tgz) = 8dfe86613f1e678ad257134c4fdf3d17a0e0a378
-Size (xbeeb-0.3.6.tgz) = 270231 bytes
+SHA1 (xbeeb-0.4.1.tgz) = 5e2fccfabd0aa5a656758b2ea0536570a790dabe
+RMD160 (xbeeb-0.4.1.tgz) = 67dba3262f7e5886a86e5656288d807fea540d9b
+Size (xbeeb-0.4.1.tgz) = 351715 bytes
SHA1 (patch-aa) = 68b91908397147aecf1e1644f597802d6380aa96
-SHA1 (patch-ab) = 96ad3aa048ed224757ca51e0abe43baeaaceacdb
+SHA1 (patch-ab) = 7bcdfb9b15e8ef2349325bf2b23a662cba914a5c
SHA1 (patch-ac) = 72622acf9671ac0f72bd9b8271fc17f25d3655f1
-SHA1 (patch-ad) = 120be917d8b0ffa83c537e7a4b9a86f354e46886
+SHA1 (patch-ad) = 733916029e94e65ee7702778ce344468ab3cf658
+SHA1 (patch-ae) = 00906d13e5dd9ec03f011053e7399fac581efc3d
+SHA1 (patch-af) = 62c888cc324742142d7a95c9db55067daba4dacd
diff --git a/emulators/xbeeb/files/xbeeb.1 b/emulators/xbeeb/files/xbeeb.1
index a5baea47a16..b791445f2a6 100644
--- a/emulators/xbeeb/files/xbeeb.1
+++ b/emulators/xbeeb/files/xbeeb.1
@@ -1,4 +1,4 @@
-.\" $NetBSD: xbeeb.1,v 1.3 2004/02/01 00:15:04 snj Exp $
+.\" $NetBSD: xbeeb.1,v 1.4 2006/06/13 13:24:35 dsainty Exp $
.\"
.Dd May 27, 2000
.Dt XBEEB 1
@@ -136,7 +136,7 @@ The sectory number is unused in this emulation - it's
there for the sake of completeness and maybe used in the
future.
.Sh FILES
-.Bl -tag -width @PREFIX@/@XBEEBROOT@/roms/xdfs0.70.rom -compact
+.Bl -tag -width @PREFIX@/@XBEEBROOT@/roms/xdfs0.90.rom -compact
.It Pa @PREFIX@/@XBEEBROOT@/roms/OS1.2.rom
the Operating System rom image
.It Pa @PREFIX@/@XBEEBROOT@/roms/BASIC2.rom
diff --git a/emulators/xbeeb/patches/patch-ab b/emulators/xbeeb/patches/patch-ab
index b4aa7f2e3c9..54802f55617 100644
--- a/emulators/xbeeb/patches/patch-ab
+++ b/emulators/xbeeb/patches/patch-ab
@@ -1,123 +1,16 @@
-$NetBSD: patch-ab,v 1.1.1.1 2000/05/22 22:13:12 skrll Exp $
+$NetBSD: patch-ab,v 1.2 2006/06/13 13:24:36 dsainty Exp $
---- src/VoxWare.c Fri Oct 11 10:53:13 1996
-+++ src/VoxWare.c Sat Apr 29 18:29:53 2000
-@@ -51,6 +51,7 @@
-
- #include <sys/types.h>
- #include <sys/ioctl.h>
-+#include <sys/midiio.h>
- #include <unistd.h>
-
- #include "Config.h"
-@@ -60,7 +61,73 @@
- #include <math.h>
- #include <stdio.h>
- #include <fcntl.h>
--#include <sys/soundcard.h>
-+#include <soundcard.h>
-+
-+/* Pseudo controllers (not midi compatible) */
-+#define CTRL_PITCH_BENDER 255
-+#define CTRL_PITCH_BENDER_RANGE 254
-+#define CTL_PAN 0x0a
-+
-+/* Linux -> NetBSD */
-+#define EV_CHN_COMMON SEQ_CHN_COMMON
-+#define EV_CHN_VOICE SEQ_CHN_VOICE
-+#define SEQ_CONTROLLER SEQOLD_CONTROLLER
-+#define SEQ_EXTENDED SEQOLD_EXTENDED
-+
-+/* Missing soundcard.h definitions */
-+#define SEQ_PGM_CHANGE(dev, chn, patch) \
-+ _CHN_COMMON(dev, MIDI_PGM_CHANGE, chn, patch, 0, 0)
-+#define SEQ_SET_PATCH SEQ_PGM_CHANGE
-+
-+#define _CHN_COMMON(dev, event, chn, p1, p2, w14) \
-+ {_SEQ_NEEDBUF(8);\
-+ _seqbuf[_seqbufptr] = EV_CHN_COMMON;\
-+ _seqbuf[_seqbufptr+1] = (dev);\
-+ _seqbuf[_seqbufptr+2] = (event);\
-+ _seqbuf[_seqbufptr+3] = (chn);\
-+ _seqbuf[_seqbufptr+4] = (p1);\
-+ _seqbuf[_seqbufptr+5] = (p2);\
-+ *(short *)&_seqbuf[_seqbufptr+6] = (w14);\
-+ _SEQ_ADVBUF(8);}
-+#define SEQ_V2_X_CONTROL(dev, voice, controller, value) {_SEQ_NEEDBUF(8);\
-+ _seqbuf[_seqbufptr] = SEQ_EXTENDED;\
-+ _seqbuf[_seqbufptr+1] = SEQ_CONTROLLER;\
-+ _seqbuf[_seqbufptr+2] = (dev);\
-+ _seqbuf[_seqbufptr+3] = (voice);\
-+ _seqbuf[_seqbufptr+4] = (controller);\
-+ _seqbuf[_seqbufptr+5] = ((value)&0xff);\
-+ _seqbuf[_seqbufptr+6] = ((value>>8)&0xff);\
-+ _seqbuf[_seqbufptr+7] = 0;\
-+ _SEQ_ADVBUF(8);}
-+#define _CHN_VOICE(dev, event, chn, note, parm) \
-+ {_SEQ_NEEDBUF(8);\
-+ _seqbuf[_seqbufptr] = EV_CHN_VOICE;\
-+ _seqbuf[_seqbufptr+1] = (dev);\
-+ _seqbuf[_seqbufptr+2] = (event);\
-+ _seqbuf[_seqbufptr+3] = (chn);\
-+ _seqbuf[_seqbufptr+4] = (note);\
-+ _seqbuf[_seqbufptr+5] = (parm);\
-+ _seqbuf[_seqbufptr+6] = (0);\
-+ _seqbuf[_seqbufptr+7] = 0;\
-+ _SEQ_ADVBUF(8);}
-+
-+#define SEQ_START_NOTE(dev, chn, note, vol) \
-+ _CHN_VOICE(dev, MIDI_NOTEON, chn, note, vol)
-+
-+#define SEQ_STOP_NOTE(dev, chn, note, vol) \
-+ _CHN_VOICE(dev, MIDI_NOTEOFF, chn, note, vol)
-+
-+#define SEQ_PITCHBEND(dev, voice, value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER, value)
-+#define SEQ_BENDER_RANGE(dev, voice, value) SEQ_V2_X_CONTROL(dev, voice, CTRL_PITCH_BENDER_RANGE, value)
-+#define SEQ_CONTROL(dev, chn, controller, value) \
-+ _CHN_COMMON(dev, MIDI_CTL_CHANGE, chn, controller, 0, value)
-+#define SEQ_PANNING(dev, voice, pos) SEQ_CONTROL(dev, voice, CTL_PAN, (pos+128) / 2)
-+#define SEQ_DEFINEBUF(len) unsigned char _seqbuf[len]; int _seqbuflen = len;int _seqbufptr = 0
-+#define _SEQ_ADVBUF(len) _seqbufptr += len
-+#define _SEQ_NEEDBUF(len) if ((_seqbufptr+(len)) > _seqbuflen) seqbuf_dump()
-+#define SEQ_DUMPBUF seqbuf_dump
-+
-+void seqbuf_dump();
-
- #include "VoxWare.h"
-
-@@ -152,7 +219,7 @@
- * check to see if any synth devices are available
- */
-
-- ioctl ( SequencerFD, SNDCTL_SEQ_NRSYNTHS, &NoDevs );
-+ ioctl ( SequencerFD, SEQUENCER_NRSYNTHS, &NoDevs );
- if ( !NoDevs )
- {
- fprintf( stderr, "No synth devices available, disabling sound.\n");
-@@ -170,7 +237,7 @@
- for ( i = 0; i < NoDevs; i++ )
- {
- info.device = i;
-- ioctl ( SequencerFD, SNDCTL_SYNTH_INFO, &info );
-+ ioctl ( SequencerFD, SEQUENCER_INFO, &info );
- if ( info.synth_type == SYNTH_TYPE_FM )
- SynthDevNo = i;
- break;
-@@ -185,7 +252,7 @@
- SoundEnabled = 1;
-
- info.device = SynthDevNo;
-- ioctl ( SequencerFD, SNDCTL_SYNTH_INFO, &info );
-+ ioctl ( SequencerFD, SEQUENCER_INFO, &info );
+Make sure ioctl() gets a third dummy argument, for the three argument macro
+defined in the NetBSD OSS emulation soundcard.h.
+
+--- src/SoundOSS.c.orig 2002-01-16 04:46:43.000000000 +1300
++++ src/SoundOSS.c 2006-06-03 18:25:08.000000000 +1200
+@@ -106,7 +106,7 @@
+ return;
+ }
- #ifdef SOUND_DEBUG
- printf ( "Synth device %d info:\n", SynthDevNo );
-@@ -199,7 +266,7 @@
- for ( j = 0; j < 4; j++ )
- {
- Instr.channel = j;
-- Instr.key = FM_PATCH;
-+ Instr.key = SBI_FM_PATCH;
- Instr.device = SynthDevNo;
- for ( i = 0; i < 16; i++ )
- {
+- if ( ioctl ( SoundFD, SNDCTL_DSP_RESET ) < 0 ) {
++ if ( ioctl ( SoundFD, SNDCTL_DSP_RESET, &dummy ) < 0 ) {
+ fprintf ( stderr, "Can't reset sound device\n" );
+ return;
+ }
diff --git a/emulators/xbeeb/patches/patch-ad b/emulators/xbeeb/patches/patch-ad
index 71af80291c8..f6fb5de5ffb 100644
--- a/emulators/xbeeb/patches/patch-ad
+++ b/emulators/xbeeb/patches/patch-ad
@@ -1,17 +1,28 @@
-$NetBSD: patch-ad,v 1.1.1.1 2000/05/22 22:13:12 skrll Exp $
+$NetBSD: patch-ad,v 1.2 2006/06/13 13:24:36 dsainty Exp $
---- src/Config.h.orig Thu Oct 10 00:19:08 1996
-+++ src/Config.h Sun May 21 21:18:55 2000
-@@ -256,7 +256,7 @@
+The R65C02 is a generally more capable processor than the M6502, and a BBC B
+can run almost all software with a R65C02 replacing its standard CPU. In
+addition, the R65C02 allows running some software intended for the Master
+series of microcomputer, making the R65C02 the more interesting CPU to
+emulate.
+
+Since patch-ac modifies the OS1.2.rom on the fly, it is no longer necessary to
+patch the ROM externally for EMUL_FS, so keep OS_ROM the same.
+
+--- src/Config.h.orig 2002-01-16 04:46:43.000000000 +1300
++++ src/Config.h 2006-06-04 12:44:23.000000000 +1200
+@@ -290,8 +290,8 @@
+ * Processor type
*/
- #ifndef XBEEBROOT
--#define XBEEBROOT "/home/james/beeb/"
-+#define XBEEBROOT "/usr/X11R6/share/xbeeb/"
- #endif
- #define XBEEBROMS XBEEBROOT"roms/"
- #define XBEEBSNAPS XBEEBROOT"snaps/"
-@@ -282,11 +282,7 @@
+-#define M6502
+-#undef R65C02
++#undef M6502
++#define R65C02
+ #undef R65C12
+
+ /*
+@@ -344,11 +344,7 @@
* Names of ROMs to load by default
*/
@@ -20,6 +31,6 @@ $NetBSD: patch-ad,v 1.1.1.1 2000/05/22 22:13:12 skrll Exp $
-#else
#define OS_ROM "OS1.2.rom"
-#endif
- #define LANG_ROM "BASIC2.rom"
- #ifdef XDFS
+ #ifdef M6502
+ #define LANG_ROM "BASIC2.rom"
diff --git a/emulators/xbeeb/patches/patch-ae b/emulators/xbeeb/patches/patch-ae
new file mode 100644
index 00000000000..5a9cba86ed1
--- /dev/null
+++ b/emulators/xbeeb/patches/patch-ae
@@ -0,0 +1,32 @@
+$NetBSD: patch-ae,v 1.1 2006/06/13 13:24:36 dsainty Exp $
+
+Don't fail if the display has multiple visuals. Just default to the default
+one and don't concern ourselves with the others.
+
+Check if MIT-SHM is available before trying XShmQueryVersion(), since
+XShmQueryVersion() will abort outright if MIT-SHM isn't available.
+
+--- src/Screen.c.orig 2002-01-16 04:46:43.000000000 +1300
++++ src/Screen.c 2006-06-03 19:08:48.000000000 +1200
+@@ -286,11 +286,6 @@
+ VisualTmpl.depth = DefDepth;
+ MyVisual = XGetVisualInfo ( dpy, VisualScreenMask | VisualDepthMask,
+ &VisualTmpl, &visuals );
+- if ( visuals != 1 ) {
+- fprintf ( stderr, "can't handle default screen with multiple "
+- "visuals\n" );
+- exit ( 1 );
+- }
+ VisualClass = MyVisual->class;
+ XFree ( MyVisual );
+
+@@ -381,7 +376,8 @@
+ * See if we can use shared memory
+ */
+
+- if ( XShmQueryVersion ( dpy, &dummy, &dummy, &SharedPixmapSupport ))
++ if ( XShmQueryExtension ( dpy ) &&
++ XShmQueryVersion ( dpy, &dummy, &dummy, &SharedPixmapSupport ))
+ {
+ if ( SharedPixmapSupport )
+ {
diff --git a/emulators/xbeeb/patches/patch-af b/emulators/xbeeb/patches/patch-af
new file mode 100644
index 00000000000..28876f767bf
--- /dev/null
+++ b/emulators/xbeeb/patches/patch-af
@@ -0,0 +1,39 @@
+$NetBSD: patch-af,v 1.1 2006/06/13 13:24:36 dsainty Exp $
+
+Remove use of non-standard "a" modifier in scanf format. Under non-Linux
+systems it is more likely to just core.
+
+--- src/InfFS.c.orig 2002-01-16 04:46:43.000000000 +1300
++++ src/InfFS.c 2006-06-04 13:36:52.000000000 +1200
+@@ -1516,24 +1516,23 @@
+ if ( !access ( beebfile, R_OK ) &&
+ ( cat_fp = fopen ( entry->d_name, "r" ))) {
+ if ( fgets ( buff, 79, cat_fp ) > 0 ) {
++ char locked[10];
+ /*
+ * FIX ME
+ * Check for errors from malloc and sscanf
+ */
+ p = malloc ( sizeof ( FileInfoL ));
+- sscanf ( buff, "%*s %X %X %as",
+- &(p->info.LoadAddress), &(p->info.ExeAddress), &lock );
++ locked[0] = '\0';
++ sscanf ( buff, "%*s %X %X %9s",
++ &(p->info.LoadAddress), &(p->info.ExeAddress), locked);
+ p->info.StartSector = 0;
+ stat ( beebfile, &sb );
+ p->info.FileLength = sb.st_size;
+- if ( lock ) {
+ #ifdef XDFS
+- if ( !strncmp ( lock, "Locked", 6 )) {
+- p->info.LockFlag = 'L';
+- }
+-#endif
+- free ( lock );
++ if ( !strncmp ( locked, "Locked", 6 )) {
++ p->info.LockFlag = 'L';
+ }
++#endif
+ /*
+ * Filenames are right-padded with spaces initially.
+ */