Date: Thu, 16 Jan 2014 19:31:03 +0000 (UTC) From: Shaun Amott <shaun@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r339966 - in head/emulators: . x49gp x49gp/files Message-ID: <201401161931.s0GJV3fI061492@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@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@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 +@dirrm %%DATADIR%%
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401161931.s0GJV3fI061492>