svn commit: r339966 - in head/emulators: . x49gp x49gp/files
Shaun Amott
shaun at FreeBSD.org
Thu Jan 16 19:31:06 UTC 2014
Author: shaun
Date: Thu Jan 16 19:31:03 2014
New Revision: 339966
URL: http://svnweb.freebsd.org/changeset/ports/339966
QAT: https://qat.redports.org/buildarchive/r339966/
Log:
Add x49gp - a HP49G+/50G graphics calculator emulator.
Added:
head/emulators/x49gp/
head/emulators/x49gp/Makefile (contents, props changed)
head/emulators/x49gp/distinfo (contents, props changed)
head/emulators/x49gp/files/
head/emulators/x49gp/files/config-hp49g+ (contents, props changed)
head/emulators/x49gp/files/config-hp50g (contents, props changed)
head/emulators/x49gp/files/hp50g.sh.in (contents, props changed)
head/emulators/x49gp/files/patch-Makefile (contents, props changed)
head/emulators/x49gp/files/patch-main.c (contents, props changed)
head/emulators/x49gp/files/patch-module.c (contents, props changed)
head/emulators/x49gp/files/patch-ui.c (contents, props changed)
head/emulators/x49gp/pkg-descr (contents, props changed)
head/emulators/x49gp/pkg-message (contents, props changed)
head/emulators/x49gp/pkg-plist (contents, props changed)
Modified:
head/emulators/Makefile
Modified: head/emulators/Makefile
==============================================================================
--- head/emulators/Makefile Thu Jan 16 19:31:00 2014 (r339965)
+++ head/emulators/Makefile Thu Jan 16 19:31:03 2014 (r339966)
@@ -181,6 +181,7 @@
SUBDIR += wine-mono-devel
SUBDIR += wxmupen64plus
SUBDIR += x48
+ SUBDIR += x49gp
SUBDIR += xbraitenberg
SUBDIR += xcpc
SUBDIR += xhomer
Added: head/emulators/x49gp/Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/Makefile Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,84 @@
+# Created by: Shaun Amott <shaun at FreeBSD.org>
+# $FreeBSD$
+
+# Note: sdcard64.tar.gz contains just an empty 64MB FAT-16 disk image
+
+PORTNAME= x49gp
+PORTVERSION= 20100425
+CATEGORIES= emulators math
+MASTER_SITES= LOCAL/shaun
+DISTFILES= ${DISTNAME}${EXTRACT_SUFX} sdcard64.tar.gz
+
+MAINTAINER= shaun at FreeBSD.org
+COMMENT= HP 49g+/50g graphics calculator emulator
+
+EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
+
+WRKSRC= ${WRKDIR}/x49gp/x49gp-code
+
+USE_GCC= any
+USE_XORG= x11
+USE_GNOME= gtk20
+
+USES= gmake pkgconfig
+
+OPTIONS_SINGLE= FIRMWARE
+OPTIONS_SINGLE_FIRMWARE=FIRMWARE_215 FIRMWARE_209
+#OPTIONS_SINGLE_FIRMWARE=FIRMWARE_215H3 FIRMWARE_215 FIRMWARE_209
+
+#FIRMWARE_215H3_DESC= Calculator ROM firmware version 2.15 plus HPGCC3
+FIRMWARE_215_DESC= Calculator ROM firmware version 2.15
+FIRMWARE_209_DESC= Calculator ROM firmware version 2.09
+
+OPTIONS_DEFAULT=FIRMWARE_215
+
+SUB_FILES= hp50g.sh
+
+.if defined(WITH_DEBUG)
+MAKE_ENV+= DEBUGB=1
+.endif
+
+.include <bsd.port.options.mk>
+
+.if ${PORT_OPTIONS:MFIRMWARE_215H3} || ${PORT_OPTIONS:MFIRMWARE_215}
+MAKE_ARGS+=FIRMWARE=4950_215.bin
+DISTFILES+=hp4950v215.zip
+EXTRACT_ONLY+=hp4950v215.zip
+.else
+MAKE_ARGS+=FIRMWARE=4950_92.bin
+.endif
+
+#.if ${PORT_OPTIONS:MFIRMWARE_215H3}
+#DISTFILES+=rom215_hpgcc3_R004.tar.gz
+#EXTRACT_ONLY+=rom215_hpgcc3_R004.tar.gz
+#.endif
+
+post-patch:
+.if ${PORT_OPTIONS:MFIRMWARE_215H3} || ${PORT_OPTIONS:MFIRMWARE_215}
+ @${CP} ${WRKDIR}/hp4950v215/*.lib ${WRKSRC}/
+ @${CP} ${WRKDIR}/hp4950v215/*.bin ${WRKSRC}/
+ @${CP} ${WRKDIR}/hp4950v215/*.scp ${WRKSRC}/
+.endif
+#.if ${PORT_OPTIONS:MFIRMWARE_215H3}
+# @${CP} ${WRKDIR}/rom215_hpgcc3_R004/hpgccrom.bin ${WRKSRC}/4950_215.bin
+#.endif
+
+do-build:
+ cd ${WRKSRC} && ${GMAKE} ${MAKE_ARGS}
+
+do-install:
+ @${MKDIR} ${STAGEDIR}${DATADIR}
+.for f in flash-50g hp50g.png hp50g-hack.png hp49g+.png flash-49g+ sram s3c2410-sram
+ ${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DATADIR}/
+.endfor
+ ${INSTALL_DATA} ${FILESDIR}/config-hp50g ${STAGEDIR}${DATADIR}/
+ ${INSTALL_DATA} ${FILESDIR}/config-hp49g+ ${STAGEDIR}${DATADIR}/
+ ${INSTALL_PROGRAM} ${WRKSRC}/x49gp ${STAGEDIR}${PREFIX}/bin/x49gp-bin
+
+ ${INSTALL_SCRIPT} ${WRKDIR}/hp50g.sh ${STAGEDIR}${PREFIX}/bin/hp50g
+ ${RM} -f ${STAGEDIR}${PREFIX}/bin/hp49g+
+ ${LN} ${STAGEDIR}${PREFIX}/bin/hp50g ${STAGEDIR}${PREFIX}/bin/hp49g+
+
+ ${INSTALL_DATA} ${DISTDIR}/sdcard64.tar.gz ${STAGEDIR}${DATADIR}/
+
+.include <bsd.port.mk>
Added: head/emulators/x49gp/distinfo
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/distinfo Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,6 @@
+SHA256 (x49gp-20100425.tar.gz) = ae2fd793105cfdd10b1c0c9f36c1bb27828791d4b2250015b700ddef36bf0968
+SIZE (x49gp-20100425.tar.gz) = 13530661
+SHA256 (sdcard64.tar.gz) = 908d0b57831ec2685dc8a8ca5d5d98f47efdf3bd66de310cae330079c096c736
+SIZE (sdcard64.tar.gz) = 65560
+SHA256 (hp4950v215.zip) = 79db72b67de00f648b54bab421279980c23b12c721b1aa33d49759409ddcf611
+SIZE (hp4950v215.zip) = 1742733
Added: head/emulators/x49gp/files/config-hp49g+
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/config-hp49g+ Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,18 @@
+[x49gp]
+basename=
+
+[gui]
+name=hp49g+
+image=hp49g+.png
+
+[flash]
+filename=flash-49g+
+
+[sram]
+filename=sram
+
+[s3c2410-sram]
+filename=s3c2410-sram
+
+[s3c2410-sdi]
+filename=../sdcard
Added: head/emulators/x49gp/files/config-hp50g
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/config-hp50g Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,18 @@
+[x49gp]
+basename=
+
+[gui]
+name=hp50g
+image=hp50g.png
+
+[flash]
+filename=flash-50g
+
+[sram]
+filename=sram
+
+[s3c2410-sram]
+filename=s3c2410-sram
+
+[s3c2410-sdi]
+filename=../sdcard
Added: head/emulators/x49gp/files/hp50g.sh.in
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/hp50g.sh.in Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,58 @@
+#!/bin/sh
+
+calc=`basename $0`
+
+if [ "${calc}" != "hp50g" -a "${calc}" != "hp49g+" ]; then
+ echo "Invalid calculator name"
+ exit 1
+fi
+
+if [ "$1" ]; then
+ cname="$1"
+else
+ cname="${calc}"
+fi
+
+bdir="${HOME}/.x49gp"
+sdir="${bdir}/${cname}"
+
+datadir="%%DATADIR%%"
+
+# Copy datafiles if we don't have any
+
+if [ ! -d "${bdir}" ]; then
+ mkdir "${bdir}" || exit 1
+fi
+
+if [ ! -d "${sdir}" ]; then
+ echo "Creating new calculator..."
+
+ mkdir "${sdir}" || exit 1
+
+ cp "${datadir}/config-${calc}" "${sdir}/config"
+
+ if [ "${calc}" = "hp50g" ]; then
+ cp "${datadir}/flash-50g" "${sdir}/"
+
+ if [ "`uname -p`" = "amd64" ]; then
+ cp "${datadir}/hp50g-hack.png" "${sdir}/"
+ else
+ cp "${datadir}/hp50g.png" "${sdir}/"
+ fi
+ else
+ cp "${datadir}/flash-49g+" "${sdir}/"
+ cp "${datadir}/hp49g+.png" "${sdir}/"
+ fi
+
+ cp "${datadir}/sram" "${sdir}/"
+ cp "${datadir}/s3c2410-sram" "${sdir}/"
+
+ if [ -f "${datadir}/sdcard64.tar.gz" -a ! -f "${bdir}/sdcard" ]; then
+ tar -C "${bdir}" -xzf "${datadir}/sdcard64.tar.gz"
+ fi
+
+ chmod -R u+rw "${sdir}"
+fi
+
+cd "${sdir}" \
+ && x49gp-bin config
Added: head/emulators/x49gp/files/patch-Makefile
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/patch-Makefile Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,32 @@
+--- Makefile.orig 2014-01-09 18:03:02.000000000 +0000
++++ Makefile 2014-01-09 18:04:14.000000000 +0000
+@@ -31,10 +31,14 @@
+ -DDEBUG_X49GP_ENABLE_IRQ \
+ -DDEBUG_X49GP_UI
+
++ifdef DEBUGB
+ DEBUG = -g # -pg
++else
++DEBUG =
++endif
+
+ #2.09
+-FIRMWARE = 4950_92.bin
++#FIRMWARE = 4950_92.bin
+ #2.10-7
+ #FIRMWARE = hp49g-u.bin
+ #HPGCC3 (copy HPGCC3 ROM first)
+@@ -53,9 +57,12 @@
+ -fno-strict-aliasing
+
+ # Use this to debug
+-# DEFINES = $(X49GP_DEBUG) $(QEMU_DEFINES)
++ifdef DEBUGB
++DEFINES = $(X49GP_DEBUG) $(QEMU_DEFINES)
++else
+ # Use this for speed
+ DEFINES = $(QEMU_DEFINES)
++endif
+
+ ifdef QEMU_OLD
+ QEMUSRC = qemu/prepare.sh \
Added: head/emulators/x49gp/files/patch-main.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/patch-main.c Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,17 @@
+--- main.c.orig 2014-01-09 17:47:52.000000000 +0000
++++ main.c 2014-01-09 17:47:38.000000000 +0000
+@@ -25,6 +25,14 @@
+
+ #include "gdbstub.h"
+
++static void *oom_check(void *ptr)
++{
++ if (ptr == NULL) {
++ abort();
++ }
++ return ptr;
++}
++
+ static x49gp_t *x49gp;
+
+ #ifdef QEMU_OLD // LD TEMPO HACK
Added: head/emulators/x49gp/files/patch-module.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/patch-module.c Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,11 @@
+--- module.c.orig 2014-01-09 17:55:30.000000000 +0000
++++ module.c 2014-01-09 17:55:54.000000000 +0000
+@@ -257,7 +257,7 @@
+ return NULL;
+ }
+
+- path = g_build_filename(home, basename, filename, NULL);
++ path = g_build_filename(/*home,*/ basename, filename, NULL);
+ if (NULL == path) {
+ fprintf(stderr, "%s: %s:%u: Out of memory\n",
+ module->name, __FUNCTION__, __LINE__);
Added: head/emulators/x49gp/files/patch-ui.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/files/patch-ui.c Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,31 @@
+--- ui.c.orig 2014-01-09 17:49:18.000000000 +0000
++++ ui.c 2014-01-09 17:54:49.000000000 +0000
+@@ -1729,6 +1729,8 @@
+
+ button->pixmap = gdk_pixmap_new(widget->style->bg_pixmap[0], w, h, -1);
+
++ assert(button->pixmap);
++
+ gdk_draw_drawable(button->pixmap, widget->style->black_gc,
+ widget->style->bg_pixmap[0],
+ xoffset, yoffset,
+@@ -1740,6 +1742,7 @@
+ h -= 4;
+
+ cr = gdk_cairo_create(button->pixmap);
++ assert(cr);
+ cairo_set_line_cap(cr, CAIRO_LINE_CAP_BUTT);
+ cairo_set_line_join(cr, CAIRO_LINE_JOIN_MITER);
+
+@@ -2201,6 +2204,11 @@
+ imagefile = x49gp_module_get_filename(module, keyfile, "image");
+ x49gp_module_get_string(module, keyfile, "name", "hp49g+", &name);
+
++ if (access(imagefile, R_OK) == -1) {
++ fprintf(stderr, "Calculator skin file \"%s\" not accessible.\n", imagefile);
++ return 1;
++ }
++
+ if (!strcmp(name, "hp49g+")) {
+ ui->calculator = UI_CALCULATOR_HP49GP;
+ } else if (!strcmp(name, "hp50g")) {
Added: head/emulators/x49gp/pkg-descr
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/pkg-descr Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,11 @@
+An emulator for the HP 49g+/50g calculator series. This is an ARM-based
+emulator (unlike emu48 / debug4x), so it is possible to run hpgcc
+binaries within the emulator.
+
+Skins for both variants of the calculator are included.
+
+Known limitations:
+ - Cannot write to port 2. Libraries will eat up your RAM.
+ - HPGCC2/3 SD I/O is unstable.
+
+WWW: http://sourceforge.net/projects/x49gp/
Added: head/emulators/x49gp/pkg-message
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/pkg-message Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,40 @@
+-------------------------------------------------------
+ Instructions
+-------------------------------------------------------
+ - Start a HP 50g with "hp50g"
+
+ - Start a HP 49G+ with "hp49g+"
+
+ - You can run each calculator type independently with
+ its own state and settings. Or create more than two
+ by supplying a name:
+
+ hp50g home
+ hp50g work
+
+ - To reset a calculator, remove its subdirectory
+ under ~/.x49gp (or the whole directory).
+
+ - A 64MB SD card is included, and shared between
+ calculators. If you want to run multiple calculators
+ simultaneously, you will probably need a different
+ arrangement. The config file for each calculator can
+ be edited to change the SD card file.
+
+ - Remember to install the ARM Toolbox if you want to
+ use HPGCC2 binaries.
+
+ - Mount the SD card with:
+ mdconfig -a -f ~/.x49gp/sdcard
+ mount_msdosfs /dev/md0 /mnt
+
+ When finished:
+ umount /mnt
+ mdconfig -d -u 0
+-------------------------------------------------------
+ Known limitations
+-------------------------------------------------------
+ - Cannot write to port 2. Libs will eat up your RAM.
+
+ - HPGCC2/3 SD I/O is unstable.
+-------------------------------------------------------
Added: head/emulators/x49gp/pkg-plist
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/emulators/x49gp/pkg-plist Thu Jan 16 19:31:03 2014 (r339966)
@@ -0,0 +1,14 @@
+bin/hp49g+
+bin/hp50g
+bin/x49gp-bin
+%%DATADIR%%/config-hp50g
+%%DATADIR%%/config-hp49g+
+%%DATADIR%%/flash-49g+
+%%DATADIR%%/flash-50g
+%%DATADIR%%/hp49g+.png
+%%DATADIR%%/hp50g.png
+%%DATADIR%%/hp50g-hack.png
+%%DATADIR%%/s3c2410-sram
+%%DATADIR%%/sdcard64.tar.gz
+%%DATADIR%%/sram
+ at dirrm %%DATADIR%%
More information about the svn-ports-all
mailing list