Merge remote-tracking branch 'stella-emu/master'

This commit is contained in:
Darrell Spice, Jr 2017-04-23 16:09:31 -05:00
commit 26e9144468
67 changed files with 1950 additions and 1103 deletions

View File

@ -5,7 +5,9 @@
"-I/home/cnspeckn/git/stella/src/common", "-I/home/cnspeckn/git/stella/src/common",
"-I/home/cnspeckn/git/stella/src/emucore", "-I/home/cnspeckn/git/stella/src/emucore",
"-I/home/cnspeckn/git/stella/src/emucore/tia", "-I/home/cnspeckn/git/stella/src/emucore/tia",
"-I/home/cnspeckn/git/stella/src/emucore/debugger" "-I/home/cnspeckn/git/stella/src/debugger",
"-I/home/cnspeckn/git/stella/src/debugger/gui",
"-I/home/cnspeckn/git/stella/src/gui"
], ],
"editor.tabSize": 2, "editor.tabSize": 2,
"files.trimTrailingWhitespace": true, "files.trimTrailingWhitespace": true,

View File

@ -14,6 +14,8 @@
4.7.3 to 5.0: (xxx. xx, 2017) 4.7.3 to 5.0: (xxx. xx, 2017)
* Stella has moved from Sourceforge to Github.
* New TIA core: TODO - gather info on all new functionality: * New TIA core: TODO - gather info on all new functionality:
- RSYNC - RSYNC
- YStart autodetection - YStart autodetection
@ -24,14 +26,31 @@
finding documentation that finally describes in more detail how the finding documentation that finally describes in more detail how the
M6532 chip actually works. M6532 chip actually works.
* Added BUS and CDF bankswitching schemes, thanks to SpiceWare. * Added BUS and CDF bankswitching schemes, and also ARM Timer 1
support; special thanks to SpiceWare for the code.
* Fixed bug with SaveKey and AtariVox not properly closing their memory * Fixed bug with SaveKey and AtariVox not properly closing their memory
files before starting another instance of the same ROM, when the ROM files before starting another instance of the same ROM, when the ROM
was opened in the ROM launcher. was opened in the ROM launcher.
* Fixed trap'm' debugger commands when setting TIA read addresses; it * Various improvements to the debugger and command prompt:
was previously only working for write addresses. - The 'cls' command now only clears the screen, not the history
- The 'help' command now accepts other commands, and gives extra
information about the command (ie, 'help breakif' prints extended
information about the breakif command)
- Added 'palette' command, which shows a color swatch of the
currently active TIA palette
- Added 'debugcolors' command, which shows a legend for 'fixed debug
colors' mode
- The previous trap'm' commands now work when setting TIA read
addresses; previously they only worked for write addresses
- The previous trap'm' commands are now renamed 'trap', 'trapread'
and 'trapwrite'
- Command completion now works with internal functions and pseudo-ops
(basically, anything starting with the '_' character)
- In general, input error checking is much more strictly enforced
- Read-only UI items now have a different background color, to
clearly indicate if an item can be modified.
* Mouse grabbing is now enabled in windowed mode only when the ROM is * Mouse grabbing is now enabled in windowed mode only when the ROM is
using a virtual analog controller (paddles, trakball, etc). using a virtual analog controller (paddles, trakball, etc).
@ -52,7 +71,7 @@
this bug has only ever occurred in Windows XP, but it's been there this bug has only ever occurred in Windows XP, but it's been there
since Stella 4.1. since Stella 4.1.
* When in 'ROM launcher mode', Stella now uses less CPU time. * When in 'ROM launcher mode', Stella now uses slightly less CPU time.
* Added ROM properties for D.K. VCS homebrew ROM, thanks to Andreas * Added ROM properties for D.K. VCS homebrew ROM, thanks to Andreas
Dietrich. Dietrich.
@ -90,7 +109,8 @@
both libraries are now compiled into the app whenever one is selected. both libraries are now compiled into the app whenever one is selected.
This fixes issues with a newer ZLIB not working with an older PNG, etc. This fixes issues with a newer ZLIB not working with an older PNG, etc.
* Updated UNIX configure script to work with the clang 5.x compiler. * Updated UNIX configure script to work with the clang 5+ and gcc 7+
compiler versions.
-Have fun! -Have fun!

930
config.guess vendored

File diff suppressed because it is too large Load Diff

493
config.sub vendored
View File

@ -1,43 +1,40 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # Copyright 1992-2017 Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
timestamp='2005-07-08' timestamp='2017-04-02'
# This file is (in principle) common to ALL GNU software. # This file is free software; you can redistribute it and/or modify it
# The presence of a machine in this file suggests that SOME GNU software # under the terms of the GNU General Public License as published by
# can handle that machine. It does not imply ALL GNU software can. # the Free Software Foundation; either version 3 of the License, or
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful, but
# but WITHOUT ANY WARRANTY; without even the implied warranty of # WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# GNU General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, see <http://www.gnu.org/licenses/>.
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# #
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under # configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program. # the same distribution terms that you use for the rest of that
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
# Please send patches to <config-patches@gnu.org>. Submit a context # Please send patches to <config-patches@gnu.org>.
# diff and a properly formatted ChangeLog entry.
# #
# Configuration subroutine to validate and canonicalize a configuration type. # Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument. # Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1. # If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed. # Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
# This file is supposed to be the same for all GNU packages # This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases # and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software. # that are meaningful with *any* GNU software.
@ -56,8 +53,7 @@ timestamp='2005-07-08'
me=`echo "$0" | sed -e 's,.*/,,'` me=`echo "$0" | sed -e 's,.*/,,'`
usage="\ usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
$0 [OPTION] ALIAS
Canonicalize a configuration name. Canonicalize a configuration name.
@ -71,8 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Copyright 1992-2017 Free Software Foundation, Inc.
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@ -119,11 +114,18 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations. # Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
kopensolaris*-gnu* | cloudabi*-eabi* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;; ;;
android-linux)
os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*) *)
basic_machine=`echo $1 | sed 's/-[^-]*$//'` basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ] if [ $basic_machine != $1 ]
@ -146,10 +148,13 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple | -axis | -knuth | -cray) -apple | -axis | -knuth | -cray | -microblaze*)
os= os=
basic_machine=$1 basic_machine=$1
;; ;;
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond) -sim | -cisco | -oki | -wec | -winbond)
os= os=
basic_machine=$1 basic_machine=$1
@ -164,13 +169,17 @@ case $os in
os=-chorusos os=-chorusos
basic_machine=$1 basic_machine=$1
;; ;;
-chorusrdb) -chorusrdb)
os=-chorusrdb os=-chorusrdb
basic_machine=$1 basic_machine=$1
;; ;;
-hiux*) -hiux*)
os=-hiuxwe2 os=-hiuxwe2
;; ;;
-sco6)
os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5) -sco5)
os=-sco3.2v5 os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@ -187,6 +196,10 @@ case $os in
# Don't forget version if it is 3.2v4 or newer. # Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;; ;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*) -sco*)
os=-sco3.2v2 os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@ -204,6 +217,12 @@ case $os in
-isc*) -isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;; ;;
-lynx*178)
os=-lynxos178
;;
-lynx*5)
os=-lynxos5
;;
-lynx*) -lynx*)
os=-lynxos os=-lynxos
;; ;;
@ -228,64 +247,116 @@ case $basic_machine in
# Some are omitted here because they have special meanings below. # Some are omitted here because they have special meanings below.
1750a | 580 \ 1750a | 580 \
| a29k \ | a29k \
| aarch64 | aarch64_be \
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \ | am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ | arc | arceb \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
| ba \
| be32 | be64 \
| bfin \ | bfin \
| c4x | clipper \ | c4x | c8051 | clipper \
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
| fr30 | frv \ | e2k | epiphany \
| fido | fr30 | frv | ft32 \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \ | hexagon \
| i370 | i860 | i960 | ia16 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \ | k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \
| mips | mipsbe | mipseb | mipsel | mipsle \ | mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \ | mips16 \
| mips64 | mips64el \ | mips64 | mips64el \
| mips64vr | mips64vrel \ | mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \ | mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \
| mips64vr4100 | mips64vr4100el \ | mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \ | mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \ | mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \ | mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \ | mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \ | mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \ | mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \ | mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \ | mipstx39 | mipstx39el \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| ms1 \ | moxie \
| mt \
| msp430 \ | msp430 \
| nds32 | nds32le | nds32be \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \ | ns16k | ns32k \
| or32 \ | open8 | or1k | or1knd | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | powerpc | powerpc64 | powerpc64le | powerpcle \
| pru \
| pyramid \ | pyramid \
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | riscv32 | riscv64 \
| rl78 | rx \
| score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \ | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| strongarm \ | spu \
| tahoe | thumb | tic4x | tic80 | tron \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
| v850 | v850e \ | ubicom32 \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| visium \
| wasm32 \
| we32k \ | we32k \
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ | x86 | xc16x | xstormy16 | xtensa \
| z8k) | z8k | z80)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
m32c) c54x)
basic_machine=$basic_machine-unknown basic_machine=tic54x-unknown
;; ;;
m6811 | m68hc11 | m6812 | m68hc12) c55x)
# Motorola 68HC11/12. basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
leon|leon[3-9])
basic_machine=sparc-$basic_machine
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
os=-none os=-none
;; ;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;; ;;
ms1)
basic_machine=mt-unknown
;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown' # We use `pc' rather than `unknown'
# because (1) that's what they normally are, and # because (1) that's what they normally are, and
@ -301,65 +372,91 @@ case $basic_machine in
# Recognize the basic CPU types with company name. # Recognize the basic CPU types with company name.
580-* \ 580-* \
| a29k-* \ | a29k-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \ | avr-* | avr32-* \
| ba-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \
| clipper-* | craynv-* | cydra-* \ | c8051-* | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \ | d10v-* | d30v-* | dlx-* \
| elxsi-* \ | e2k-* | elxsi-* \
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \ | h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \ | hexagon-* \
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
| ip2k-* | iq2000-* \ | ip2k-* | iq2000-* \
| m32r-* | m32rle-* \ | k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \ | mips16-* \
| mips64-* | mips64el-* \ | mips64-* | mips64el-* \
| mips64vr-* | mips64vrel-* \ | mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \ | mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \
| mips64vr4100-* | mips64vr4100el-* \ | mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \ | mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \ | mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \ | mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \ | mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \ | mipstx39-* | mipstx39el-* \
| mmix-* \ | mmix-* \
| ms1-* \ | mt-* \
| msp430-* \ | msp430-* \
| nds32-* | nds32le-* | nds32be-* \
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \ | none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
| orion-* \ | orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
| pru-* \
| pyramid-* \ | pyramid-* \
| romp-* | rs6000-* \ | riscv32-* | riscv64-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | rl78-* | romp-* | rs6000-* | rx-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \ | sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
| tahoe-* | thumb-* \ | tahoe-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \ | tron-* \
| v850-* | v850e-* | vax-* \ | ubicom32-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| visium-* \
| wasm32-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \
| xstormy16-* | xtensa-* \ | xstormy16-* | xtensa*-* \
| ymp-* \ | ymp-* \
| z8k-*) | z8k-* | z80-*)
;; ;;
m32c-*) # Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
;; ;;
# Recognize the various machine names and aliases which stand # Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS. # for a CPU type and a company and sometimes even an OS.
@ -377,7 +474,7 @@ case $basic_machine in
basic_machine=a29k-amd basic_machine=a29k-amd
os=-udi os=-udi
;; ;;
abacus) abacus)
basic_machine=abacus-unknown basic_machine=abacus-unknown
;; ;;
adobe68k) adobe68k)
@ -423,6 +520,13 @@ case $basic_machine in
basic_machine=m68k-apollo basic_machine=m68k-apollo
os=-bsd os=-bsd
;; ;;
aros)
basic_machine=i386-pc
os=-aros
;;
asmjs)
basic_machine=asmjs-unknown
;;
aux) aux)
basic_machine=m68k-apple basic_machine=m68k-apple
os=-aux os=-aux
@ -431,10 +535,35 @@ case $basic_machine in
basic_machine=ns32k-sequent basic_machine=ns32k-sequent
os=-dynix os=-dynix
;; ;;
blackfin)
basic_machine=bfin-unknown
os=-linux
;;
blackfin-*)
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
bluegene*)
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c90) c90)
basic_machine=c90-cray basic_machine=c90-cray
os=-unicos os=-unicos
;; ;;
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
convex-c1) convex-c1)
basic_machine=c1-convex basic_machine=c1-convex
os=-bsd os=-bsd
@ -463,8 +592,8 @@ case $basic_machine in
basic_machine=craynv-cray basic_machine=craynv-cray
os=-unicosmp os=-unicosmp
;; ;;
cr16c) cr16 | cr16-*)
basic_machine=cr16c-unknown basic_machine=cr16-unknown
os=-elf os=-elf
;; ;;
crds | unos) crds | unos)
@ -502,6 +631,10 @@ case $basic_machine in
basic_machine=m88k-motorola basic_machine=m88k-motorola
os=-sysv3 os=-sysv3
;; ;;
dicos)
basic_machine=i686-pc
os=-dicos
;;
djgpp) djgpp)
basic_machine=i586-pc basic_machine=i586-pc
os=-msdosdjgpp os=-msdosdjgpp
@ -514,6 +647,14 @@ case $basic_machine in
basic_machine=m68k-bull basic_machine=m68k-bull
os=-sysv3 os=-sysv3
;; ;;
e500v[12])
basic_machine=powerpc-unknown
os=$os"spe"
;;
e500v[12]-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
os=$os"spe"
;;
ebmon29k) ebmon29k)
basic_machine=a29k-amd basic_machine=a29k-amd
os=-ebmon os=-ebmon
@ -617,7 +758,6 @@ case $basic_machine in
i370-ibm* | ibm*) i370-ibm* | ibm*)
basic_machine=i370-ibm basic_machine=i370-ibm
;; ;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32) i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32 os=-sysv32
@ -656,6 +796,17 @@ case $basic_machine in
basic_machine=m68k-isi basic_machine=m68k-isi
os=-sysv os=-sysv
;; ;;
leon-*|leon[3-9]-*)
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
m88k-omron*) m88k-omron*)
basic_machine=m88k-omron basic_machine=m88k-omron
;; ;;
@ -667,10 +818,21 @@ case $basic_machine in
basic_machine=ns32k-utek basic_machine=ns32k-utek
os=-sysv os=-sysv
;; ;;
microblaze*)
basic_machine=microblaze-xilinx
;;
mingw64)
basic_machine=x86_64-pc
os=-mingw64
;;
mingw32) mingw32)
basic_machine=i386-pc basic_machine=i686-pc
os=-mingw32 os=-mingw32
;; ;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe) miniframe)
basic_machine=m68000-convergent basic_machine=m68000-convergent
;; ;;
@ -692,14 +854,29 @@ case $basic_machine in
basic_machine=powerpc-unknown basic_machine=powerpc-unknown
os=-morphos os=-morphos
;; ;;
moxiebox)
basic_machine=moxie-unknown
os=-moxiebox
;;
msdos) msdos)
basic_machine=i386-pc basic_machine=i386-pc
os=-msdos os=-msdos
;; ;;
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
msys)
basic_machine=i686-pc
os=-msys
;;
mvs) mvs)
basic_machine=i370-ibm basic_machine=i370-ibm
os=-mvs os=-mvs
;; ;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000) ncr3000)
basic_machine=i486-ncr basic_machine=i486-ncr
os=-sysv4 os=-sysv4
@ -764,9 +941,18 @@ case $basic_machine in
np1) np1)
basic_machine=np1-gould basic_machine=np1-gould
;; ;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem) nsr-tandem)
basic_machine=nsr-tandem basic_machine=nsr-tandem
;; ;;
nsx-tandem)
basic_machine=nsx-tandem
;;
op50n-* | op60c-*) op50n-* | op60c-*)
basic_machine=hppa1.1-oki basic_machine=hppa1.1-oki
os=-proelf os=-proelf
@ -794,6 +980,14 @@ case $basic_machine in
basic_machine=i860-intel basic_machine=i860-intel
os=-osf os=-osf
;; ;;
parisc)
basic_machine=hppa-unknown
os=-linux
;;
parisc-*)
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
pbd) pbd)
basic_machine=sparc-tti basic_machine=sparc-tti
;; ;;
@ -803,6 +997,12 @@ case $basic_machine in
pc532 | pc532-*) pc532 | pc532-*)
basic_machine=ns32k-pc532 basic_machine=ns32k-pc532
;; ;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3) pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc basic_machine=i586-pc
;; ;;
@ -832,11 +1032,12 @@ case $basic_machine in
;; ;;
power) basic_machine=power-ibm power) basic_machine=power-ibm
;; ;;
ppc) basic_machine=powerpc-unknown ppc | ppcbe) basic_machine=powerpc-unknown
;; ;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ppc-* | ppcbe-*)
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;; ;;
ppcle | powerpclittle | ppc-le | powerpc-little) ppcle | powerpclittle)
basic_machine=powerpcle-unknown basic_machine=powerpcle-unknown
;; ;;
ppcle-* | powerpclittle-*) ppcle-* | powerpclittle-*)
@ -846,7 +1047,7 @@ case $basic_machine in
;; ;;
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
;; ;;
ppc64le | powerpc64little | ppc64-le | powerpc64-little) ppc64le | powerpc64little)
basic_machine=powerpc64le-unknown basic_machine=powerpc64le-unknown
;; ;;
ppc64le-* | powerpc64little-*) ppc64le-* | powerpc64little-*)
@ -859,6 +1060,14 @@ case $basic_machine in
basic_machine=i586-unknown basic_machine=i586-unknown
os=-pw32 os=-pw32
;; ;;
rdos | rdos64)
basic_machine=x86_64-pc
os=-rdos
;;
rdos32)
basic_machine=i386-pc
os=-rdos
;;
rom68k) rom68k)
basic_machine=m68k-rom68k basic_machine=m68k-rom68k
os=-coff os=-coff
@ -885,6 +1094,10 @@ case $basic_machine in
sb1el) sb1el)
basic_machine=mipsisa64sb1el-unknown basic_machine=mipsisa64sb1el-unknown
;; ;;
sde)
basic_machine=mipsisa32-sde
os=-elf
;;
sei) sei)
basic_machine=mips-sei basic_machine=mips-sei
os=-seiux os=-seiux
@ -896,6 +1109,9 @@ case $basic_machine in
basic_machine=sh-hitachi basic_machine=sh-hitachi
os=-hms os=-hms
;; ;;
sh5el)
basic_machine=sh5le-unknown
;;
sh64) sh64)
basic_machine=sh64-unknown basic_machine=sh64-unknown
;; ;;
@ -917,6 +1133,9 @@ case $basic_machine in
basic_machine=i860-stratus basic_machine=i860-stratus
os=-sysv4 os=-sysv4
;; ;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2) sun2)
basic_machine=m68000-sun basic_machine=m68000-sun
;; ;;
@ -973,17 +1192,9 @@ case $basic_machine in
basic_machine=t90-cray basic_machine=t90-cray
os=-unicos os=-unicos
;; ;;
tic54x | c54x*) tile*)
basic_machine=tic54x-unknown basic_machine=$basic_machine-unknown
os=-coff os=-linux-gnu
;;
tic55x | c55x*)
basic_machine=tic55x-unknown
os=-coff
;;
tic6x | c6x*)
basic_machine=tic6x-unknown
os=-coff
;; ;;
tx39) tx39)
basic_machine=mipstx39-unknown basic_machine=mipstx39-unknown
@ -1037,6 +1248,9 @@ case $basic_machine in
basic_machine=a29k-wrs basic_machine=a29k-wrs
os=-vxworks os=-vxworks
;; ;;
wasm32)
basic_machine=wasm32-unknown
;;
w65*) w65*)
basic_machine=w65-wdc basic_machine=w65-wdc
os=-none os=-none
@ -1052,6 +1266,9 @@ case $basic_machine in
xps | xps100) xps | xps100)
basic_machine=xps100-honeywell basic_machine=xps100-honeywell
;; ;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp) ymp)
basic_machine=ymp-cray basic_machine=ymp-cray
os=-unicos os=-unicos
@ -1060,6 +1277,10 @@ case $basic_machine in
basic_machine=z8k-unknown basic_machine=z8k-unknown
os=-sim os=-sim
;; ;;
z80-*-coff)
basic_machine=z80-unknown
os=-sim
;;
none) none)
basic_machine=none-none basic_machine=none-none
os=-none os=-none
@ -1098,10 +1319,10 @@ case $basic_machine in
we32k) we32k)
basic_machine=we32k-att basic_machine=we32k-att
;; ;;
sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown basic_machine=sh-unknown
;; ;;
sparc | sparcv8 | sparcv9 | sparcv9b) sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun basic_machine=sparc-sun
;; ;;
cydra) cydra)
@ -1145,9 +1366,12 @@ esac
if [ x"$os" != x"" ] if [ x"$os" != x"" ]
then then
case $os in case $os in
# First match some system type aliases # First match some system type aliases
# that might get confused with valid system types. # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception. # -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
;;
-solaris1 | -solaris1.*) -solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'` os=`echo $os | sed -e 's|solaris1|sunos4|'`
;; ;;
@ -1168,27 +1392,32 @@ case $os in
# Each alternative MUST END IN A *, to match a version number. # Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4. # -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* \ | -aos* | -aros* | -cloudabi* | -sortix* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku*) | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@ -1227,7 +1456,7 @@ case $os in
-opened*) -opened*)
os=-openedition os=-openedition
;; ;;
-os400*) -os400*)
os=-os400 os=-os400
;; ;;
-wince*) -wince*)
@ -1276,7 +1505,7 @@ case $os in
-sinix*) -sinix*)
os=-sysv4 os=-sysv4
;; ;;
-tpf*) -tpf*)
os=-tpf os=-tpf
;; ;;
-triton*) -triton*)
@ -1312,12 +1541,16 @@ case $os in
-aros*) -aros*)
os=-aros os=-aros
;; ;;
-kaos*)
os=-kaos
;;
-zvmoe) -zvmoe)
os=-zvmoe os=-zvmoe
;; ;;
-dicos*)
os=-dicos
;;
-nacl*)
;;
-ios)
;;
-none) -none)
;; ;;
*) *)
@ -1340,6 +1573,12 @@ else
# system, and we'll never get to this point. # system, and we'll never get to this point.
case $basic_machine in case $basic_machine in
score-*)
os=-elf
;;
spu-*)
os=-elf
;;
*-acorn) *-acorn)
os=-riscix1.2 os=-riscix1.2
;; ;;
@ -1349,9 +1588,24 @@ case $basic_machine in
arm*-semi) arm*-semi)
os=-aout os=-aout
;; ;;
c4x-* | tic4x-*) c4x-* | tic4x-*)
os=-coff os=-coff
;; ;;
c8051-*)
os=-elf
;;
hexagon-*)
os=-elf
;;
tic54x-*)
os=-coff
;;
tic55x-*)
os=-coff
;;
tic6x-*)
os=-coff
;;
# This must come before the *-dec entry. # This must come before the *-dec entry.
pdp10-*) pdp10-*)
os=-tops20 os=-tops20
@ -1370,13 +1624,13 @@ case $basic_machine in
;; ;;
m68000-sun) m68000-sun)
os=-sunos3 os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;; ;;
m68*-cisco) m68*-cisco)
os=-aout os=-aout
;; ;;
mep-*)
os=-elf
;;
mips*-cisco) mips*-cisco)
os=-elf os=-elf
;; ;;
@ -1392,6 +1646,9 @@ case $basic_machine in
sparc-* | *-sun) sparc-* | *-sun)
os=-sunos4.1.1 os=-sunos4.1.1
;; ;;
pru-*)
os=-elf
;;
*-be) *-be)
os=-beos os=-beos
;; ;;
@ -1401,7 +1658,7 @@ case $basic_machine in
*-ibm) *-ibm)
os=-aix os=-aix
;; ;;
*-knuth) *-knuth)
os=-mmixware os=-mmixware
;; ;;
*-wec) *-wec)
@ -1506,7 +1763,7 @@ case $basic_machine in
-sunos*) -sunos*)
vendor=sun vendor=sun
;; ;;
-aix*) -cnk*|-aix*)
vendor=ibm vendor=ibm
;; ;;
-beos*) -beos*)

2
configure vendored
View File

@ -417,7 +417,7 @@ elif test "$have_gcc" = yes; then
fi fi
case $cxx_version in case $cxx_version in
4.[7-9]|4.[7-9].[0-9]|4.[7-9].[0-9][-.]*|[5-6].[0-9]|[5-6].[0-9].[0-9]|[5-6].[0-9].[0-9][-.]*) 4.[7-9]|4.[7-9].[0-9]|4.[7-9].[0-9][-.]*|[5-9]|[5-9].[0-9]|[5-9].[0-9].[0-9]|[5-9].[0-9].[0-9][-.]*)
_cxx_major=`echo $cxx_version | cut -d '.' -f 1` _cxx_major=`echo $cxx_version | cut -d '.' -f 1`
_cxx_minor=`echo $cxx_version | cut -d '.' -f 2` _cxx_minor=`echo $cxx_version | cut -d '.' -f 2`
cxx_version="$cxx_version, ok" cxx_version="$cxx_version, ok"

View File

@ -62,7 +62,11 @@ class Base
static void setHexUppercase(bool enable); static void setHexUppercase(bool enable);
static bool hexUppercase() { return myHexflags & std::ios_base::uppercase; } static bool hexUppercase() { return myHexflags & std::ios_base::uppercase; }
/** Output HEX digits in 1/2/4 byte format */ /** Output HEX digits in 0.5/1/2/4 byte format */
static inline std::ostream& HEX1(std::ostream& os) {
os.flags(myHexflags);
return os << std::setw(1);
}
static inline std::ostream& HEX2(std::ostream& os) { static inline std::ostream& HEX2(std::ostream& os) {
os.flags(myHexflags); os.flags(myHexflags);
return os << std::setw(2) << std::setfill('0'); return os << std::setw(2) << std::setfill('0');

View File

@ -18,7 +18,7 @@
#ifndef EVENTHANDLER_SDL2_HXX #ifndef EVENTHANDLER_SDL2_HXX
#define EVENTHANDLER_SDL2_HXX #define EVENTHANDLER_SDL2_HXX
#include <SDL.h> #include "SDL_lib.hxx"
#include "EventHandler.hxx" #include "EventHandler.hxx"
/** /**

View File

@ -15,11 +15,11 @@
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================ //============================================================================
#include <SDL.h>
#include <sstream> #include <sstream>
#include <time.h> #include <time.h>
#include <fstream> #include <fstream>
#include "SDL_lib.hxx"
#include "bspf.hxx" #include "bspf.hxx"
#include "Console.hxx" #include "Console.hxx"

View File

@ -18,7 +18,7 @@
#ifndef FRAMEBUFFER_SDL2_HXX #ifndef FRAMEBUFFER_SDL2_HXX
#define FRAMEBUFFER_SDL2_HXX #define FRAMEBUFFER_SDL2_HXX
#include <SDL.h> #include "SDL_lib.hxx"
class OSystem; class OSystem;
class FBSurfaceSDL2; class FBSurfaceSDL2;

24
src/common/SDL_lib.hxx Normal file
View File

@ -0,0 +1,24 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2017 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef SDL_LIB_HXX
#define SDL_LIB_HXX
#include <SDL.h>
#undef bool // Seems to be needed for ppc64le, doesn't hurt other archs
#endif

View File

@ -20,8 +20,8 @@
#include <sstream> #include <sstream>
#include <cassert> #include <cassert>
#include <cmath> #include <cmath>
#include <SDL.h>
#include "SDL_lib.hxx"
#include "TIASnd.hxx" #include "TIASnd.hxx"
#include "TIATypes.hxx" #include "TIATypes.hxx"
#include "FrameBuffer.hxx" #include "FrameBuffer.hxx"

View File

@ -22,7 +22,7 @@
class OSystem; class OSystem;
#include <SDL.h> #include "SDL_lib.hxx"
#include "bspf.hxx" #include "bspf.hxx"
#include "TIASnd.hxx" #include "TIASnd.hxx"

View File

@ -18,7 +18,7 @@
#ifndef STELLA_KEYS_HXX #ifndef STELLA_KEYS_HXX
#define STELLA_KEYS_HXX #define STELLA_KEYS_HXX
#include <SDL.h> #include "SDL_lib.hxx"
/** /**
This class implements a thin wrapper around the SDL keysym enumerations, This class implements a thin wrapper around the SDL keysym enumerations,

View File

@ -345,58 +345,55 @@ int Debugger::trace()
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Debugger::toggleBreakPoint(int bp) void Debugger::toggleBreakPoint(uInt16 bp)
{ {
breakPoints().initialize(); breakPoints().initialize();
if(bp < 0) bp = myCpuDebug->pc();
breakPoints().toggle(bp); breakPoints().toggle(bp);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Debugger::setBreakPoint(int bp, bool set) void Debugger::setBreakPoint(uInt16 bp, bool set)
{ {
breakPoints().initialize(); breakPoints().initialize();
if(bp < 0) bp = myCpuDebug->pc();
if(set) breakPoints().set(bp); if(set) breakPoints().set(bp);
else breakPoints().clear(bp); else breakPoints().clear(bp);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Debugger::breakPoint(int bp) bool Debugger::breakPoint(uInt16 bp)
{ {
if(bp < 0) bp = myCpuDebug->pc();
return breakPoints().isSet(bp); return breakPoints().isSet(bp);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Debugger::toggleReadTrap(int t) void Debugger::toggleReadTrap(uInt16 t)
{ {
readTraps().initialize(); readTraps().initialize();
readTraps().toggle(t); readTraps().toggle(t);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Debugger::toggleWriteTrap(int t) void Debugger::toggleWriteTrap(uInt16 t)
{ {
writeTraps().initialize(); writeTraps().initialize();
writeTraps().toggle(t); writeTraps().toggle(t);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void Debugger::toggleTrap(int t) void Debugger::toggleTrap(uInt16 t)
{ {
toggleReadTrap(t); toggleReadTrap(t);
toggleWriteTrap(t); toggleWriteTrap(t);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Debugger::readTrap(int t) bool Debugger::readTrap(uInt16 t)
{ {
return readTraps().isInitialized() && readTraps().isSet(t); return readTraps().isInitialized() && readTraps().isSet(t);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Debugger::writeTrap(int t) bool Debugger::writeTrap(uInt16 t)
{ {
return writeTraps().isInitialized() && writeTraps().isSet(t); return writeTraps().isInitialized() && writeTraps().isSet(t);
} }
@ -463,7 +460,7 @@ string Debugger::showWatches()
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool Debugger::patchROM(int addr, int value) bool Debugger::patchROM(uInt16 addr, uInt8 value)
{ {
return myConsole.cartridge().patch(addr, value); return myConsole.cartridge().patch(addr, value);
} }
@ -613,12 +610,12 @@ void Debugger::getCompletions(const char* in, StringList& list) const
for(const auto& iter: myFunctions) for(const auto& iter: myFunctions)
{ {
const char* l = iter.first.c_str(); const char* l = iter.first.c_str();
if(BSPF::equalsIgnoreCase(l, in)) if(BSPF::startsWithIgnoreCase(l, in))
list.push_back(l); list.push_back(l);
} }
for(int i = 0; pseudo_registers[i][0] != 0; ++i) for(int i = 0; pseudo_registers[i][0] != 0; ++i)
if(BSPF::equalsIgnoreCase(pseudo_registers[i][0], in)) if(BSPF::startsWithIgnoreCase(pseudo_registers[i][0], in))
list.push_back(pseudo_registers[i][0]); list.push_back(pseudo_registers[i][0]);
} }

View File

@ -219,9 +219,9 @@ class Debugger : public DialogContainer
void setAccessFlags(uInt16 addr, uInt8 flags) void setAccessFlags(uInt16 addr, uInt8 flags)
{ mySystem.setAccessFlags(addr, flags); } { mySystem.setAccessFlags(addr, flags); }
void setBreakPoint(int bp, bool set); void setBreakPoint(uInt16 bp, bool set);
bool patchROM(int addr, int value); bool patchROM(uInt16 addr, uInt8 value);
/** /**
Normally, accessing RAM or ROM during emulation can possibly trigger Normally, accessing RAM or ROM during emulation can possibly trigger
@ -256,14 +256,14 @@ class Debugger : public DialogContainer
void nextFrame(int frames); void nextFrame(int frames);
bool rewindState(); bool rewindState();
void toggleBreakPoint(int bp); void toggleBreakPoint(uInt16 bp);
bool breakPoint(int bp); bool breakPoint(uInt16 bp);
void toggleReadTrap(int t); void toggleReadTrap(uInt16 t);
void toggleWriteTrap(int t); void toggleWriteTrap(uInt16 t);
void toggleTrap(int t); void toggleTrap(uInt16 t);
bool readTrap(int t); bool readTrap(uInt16 t);
bool writeTrap(int t); bool writeTrap(uInt16 t);
void clearAllTraps(); void clearAllTraps();
// Set a bunch of RAM locations at once // Set a bunch of RAM locations at once

View File

@ -37,7 +37,7 @@ class BinAndExpression : public Expression
{ {
public: public:
BinAndExpression(Expression* left, Expression* right) : Expression(left, right) { } BinAndExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() & myRHS->evaluate(); } { return myLHS->evaluate() & myRHS->evaluate(); }
}; };
@ -46,7 +46,7 @@ class BinNotExpression : public Expression
{ {
public: public:
BinNotExpression(Expression* left) : Expression(left) { } BinNotExpression(Expression* left) : Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return ~(myLHS->evaluate()); } { return ~(myLHS->evaluate()); }
}; };
@ -55,7 +55,7 @@ class BinOrExpression : public Expression
{ {
public: public:
BinOrExpression(Expression* left, Expression* right) : Expression(left, right) { } BinOrExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() | myRHS->evaluate(); } { return myLHS->evaluate() | myRHS->evaluate(); }
}; };
@ -64,7 +64,7 @@ class BinXorExpression : public Expression
{ {
public: public:
BinXorExpression(Expression* left, Expression* right) : Expression(left, right) { } BinXorExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() ^ myRHS->evaluate(); } { return myLHS->evaluate() ^ myRHS->evaluate(); }
}; };
@ -73,7 +73,7 @@ class ByteDerefExpression : public Expression
{ {
public: public:
ByteDerefExpression(Expression* left): Expression(left) { } ByteDerefExpression(Expression* left): Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return Debugger::debugger().peek(myLHS->evaluate()); } { return Debugger::debugger().peek(myLHS->evaluate()); }
}; };
@ -82,7 +82,7 @@ class ByteDerefOffsetExpression : public Expression
{ {
public: public:
ByteDerefOffsetExpression(Expression* left, Expression* right) : Expression(left, right) { } ByteDerefOffsetExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return Debugger::debugger().peek(myLHS->evaluate() + myRHS->evaluate()); } { return Debugger::debugger().peek(myLHS->evaluate() + myRHS->evaluate()); }
}; };
@ -91,7 +91,7 @@ class ConstExpression : public Expression
{ {
public: public:
ConstExpression(const int value) : Expression(), myValue(value) { } ConstExpression(const int value) : Expression(), myValue(value) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myValue; } { return myValue; }
private: private:
@ -103,7 +103,7 @@ class CpuMethodExpression : public Expression
{ {
public: public:
CpuMethodExpression(CpuMethod method) : Expression(), myMethod(std::mem_fn(method)) { } CpuMethodExpression(CpuMethod method) : Expression(), myMethod(std::mem_fn(method)) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myMethod(Debugger::debugger().cpuDebug()); } { return myMethod(Debugger::debugger().cpuDebug()); }
private: private:
@ -115,7 +115,7 @@ class DivExpression : public Expression
{ {
public: public:
DivExpression(Expression* left, Expression* right) : Expression(left, right) { } DivExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ int denom = myRHS->evaluate(); { int denom = myRHS->evaluate();
return denom == 0 ? 0 : myLHS->evaluate() / denom; } return denom == 0 ? 0 : myLHS->evaluate() / denom; }
}; };
@ -125,7 +125,7 @@ class EqualsExpression : public Expression
{ {
public: public:
EqualsExpression(Expression* left, Expression* right) : Expression(left, right) { } EqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() == myRHS->evaluate(); } { return myLHS->evaluate() == myRHS->evaluate(); }
}; };
@ -134,7 +134,7 @@ class EquateExpression : public Expression
{ {
public: public:
EquateExpression(const string& label) : Expression(), myLabel(label) { } EquateExpression(const string& label) : Expression(), myLabel(label) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return Debugger::debugger().cartDebug().getAddress(myLabel); } { return Debugger::debugger().cartDebug().getAddress(myLabel); }
private: private:
@ -146,7 +146,7 @@ class FunctionExpression : public Expression
{ {
public: public:
FunctionExpression(const string& label) : Expression(), myLabel(label) { } FunctionExpression(const string& label) : Expression(), myLabel(label) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return Debugger::debugger().getFunction(myLabel).evaluate(); } { return Debugger::debugger().getFunction(myLabel).evaluate(); }
private: private:
@ -158,7 +158,7 @@ class GreaterEqualsExpression : public Expression
{ {
public: public:
GreaterEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { } GreaterEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() >= myRHS->evaluate(); } { return myLHS->evaluate() >= myRHS->evaluate(); }
}; };
@ -167,7 +167,7 @@ class GreaterExpression : public Expression
{ {
public: public:
GreaterExpression(Expression* left, Expression* right) : Expression(left, right) { } GreaterExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() > myRHS->evaluate(); } { return myLHS->evaluate() > myRHS->evaluate(); }
}; };
@ -176,7 +176,7 @@ class HiByteExpression : public Expression
{ {
public: public:
HiByteExpression(Expression* left) : Expression(left) { } HiByteExpression(Expression* left) : Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return 0xff & (myLHS->evaluate() >> 8); } { return 0xff & (myLHS->evaluate() >> 8); }
}; };
@ -185,7 +185,7 @@ class LessEqualsExpression : public Expression
{ {
public: public:
LessEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { } LessEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() <= myRHS->evaluate(); } { return myLHS->evaluate() <= myRHS->evaluate(); }
}; };
@ -194,7 +194,7 @@ class LessExpression : public Expression
{ {
public: public:
LessExpression(Expression* left, Expression* right) : Expression(left, right) { } LessExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() < myRHS->evaluate(); } { return myLHS->evaluate() < myRHS->evaluate(); }
}; };
@ -203,7 +203,7 @@ class LoByteExpression : public Expression
{ {
public: public:
LoByteExpression(Expression* left) : Expression(left) { } LoByteExpression(Expression* left) : Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return 0xff & myLHS->evaluate(); } { return 0xff & myLHS->evaluate(); }
}; };
@ -212,7 +212,7 @@ class LogAndExpression : public Expression
{ {
public: public:
LogAndExpression(Expression* left, Expression* right) : Expression(left, right) { } LogAndExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() && myRHS->evaluate(); } { return myLHS->evaluate() && myRHS->evaluate(); }
}; };
@ -221,7 +221,7 @@ class LogNotExpression : public Expression
{ {
public: public:
LogNotExpression(Expression* left) : Expression(left) { } LogNotExpression(Expression* left) : Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return !(myLHS->evaluate()); } { return !(myLHS->evaluate()); }
}; };
@ -230,7 +230,7 @@ class LogOrExpression : public Expression
{ {
public: public:
LogOrExpression(Expression* left, Expression* right) : Expression(left, right) { } LogOrExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() || myRHS->evaluate(); } { return myLHS->evaluate() || myRHS->evaluate(); }
}; };
@ -239,7 +239,7 @@ class MinusExpression : public Expression
{ {
public: public:
MinusExpression(Expression* left, Expression* right) : Expression(left, right) { } MinusExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() - myRHS->evaluate(); } { return myLHS->evaluate() - myRHS->evaluate(); }
}; };
@ -248,7 +248,7 @@ class ModExpression : public Expression
{ {
public: public:
ModExpression(Expression* left, Expression* right) : Expression(left, right) { } ModExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ int rhs = myRHS->evaluate(); { int rhs = myRHS->evaluate();
return rhs == 0 ? 0 : myLHS->evaluate() % rhs; } return rhs == 0 ? 0 : myLHS->evaluate() % rhs; }
}; };
@ -258,7 +258,7 @@ class MultExpression : public Expression
{ {
public: public:
MultExpression(Expression* left, Expression* right) : Expression(left, right) { } MultExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() * myRHS->evaluate(); } { return myLHS->evaluate() * myRHS->evaluate(); }
}; };
@ -267,7 +267,7 @@ class NotEqualsExpression : public Expression
{ {
public: public:
NotEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { } NotEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() != myRHS->evaluate(); } { return myLHS->evaluate() != myRHS->evaluate(); }
}; };
@ -276,7 +276,7 @@ class PlusExpression : public Expression
{ {
public: public:
PlusExpression(Expression* left, Expression* right) : Expression(left, right) { } PlusExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() + myRHS->evaluate(); } { return myLHS->evaluate() + myRHS->evaluate(); }
}; };
@ -285,7 +285,7 @@ class CartMethodExpression : public Expression
{ {
public: public:
CartMethodExpression(CartMethod method) : Expression(), myMethod(std::mem_fn(method)) { } CartMethodExpression(CartMethod method) : Expression(), myMethod(std::mem_fn(method)) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myMethod(Debugger::debugger().cartDebug()); } { return myMethod(Debugger::debugger().cartDebug()); }
private: private:
@ -297,7 +297,7 @@ class ShiftLeftExpression : public Expression
{ {
public: public:
ShiftLeftExpression(Expression* left, Expression* right) : Expression(left, right) { } ShiftLeftExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() << myRHS->evaluate(); } { return myLHS->evaluate() << myRHS->evaluate(); }
}; };
@ -306,7 +306,7 @@ class ShiftRightExpression : public Expression
{ {
public: public:
ShiftRightExpression(Expression* left, Expression* right) : Expression(left, right) { } ShiftRightExpression(Expression* left, Expression* right) : Expression(left, right) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myLHS->evaluate() >> myRHS->evaluate(); } { return myLHS->evaluate() >> myRHS->evaluate(); }
}; };
@ -315,7 +315,7 @@ class TiaMethodExpression : public Expression
{ {
public: public:
TiaMethodExpression(TiaMethod method) : Expression(), myMethod(std::mem_fn(method)) { } TiaMethodExpression(TiaMethod method) : Expression(), myMethod(std::mem_fn(method)) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return myMethod(Debugger::debugger().tiaDebug()); } { return myMethod(Debugger::debugger().tiaDebug()); }
private: private:
@ -327,7 +327,7 @@ class UnaryMinusExpression : public Expression
{ {
public: public:
UnaryMinusExpression(Expression* left) : Expression(left) { } UnaryMinusExpression(Expression* left) : Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return -(myLHS->evaluate()); } { return -(myLHS->evaluate()); }
}; };
@ -336,7 +336,7 @@ class WordDerefExpression : public Expression
{ {
public: public:
WordDerefExpression(Expression* left) : Expression(left) { } WordDerefExpression(Expression* left) : Expression(left) { }
uInt16 evaluate() const override uInt32 evaluate() const override
{ return Debugger::debugger().dpeek(myLHS->evaluate()); } { return Debugger::debugger().dpeek(myLHS->evaluate()); }
}; };

File diff suppressed because it is too large Load Diff

View File

@ -68,7 +68,7 @@ class DebuggerParser
bool saveScriptFile(string file); bool saveScriptFile(string file);
private: private:
enum { kNumCommands = 73 }; enum { kNumCommands = 72 };
// Constants for argument processing // Constants for argument processing
enum { enum {
@ -93,6 +93,7 @@ class DebuggerParser
struct Command { struct Command {
string cmdString; string cmdString;
string description; string description;
string extendedDesc;
bool parmsRequired; bool parmsRequired;
bool refreshRequired; bool refreshRequired;
parameters parms[10]; parameters parms[10];
@ -111,7 +112,7 @@ class DebuggerParser
// Arguments in 'int' and 'string' format for the currently running command // Arguments in 'int' and 'string' format for the currently running command
IntArray args; IntArray args;
StringList argStrings; StringList argStrings;
int argCount; uInt32 argCount;
StringList watches; StringList watches;
@ -131,6 +132,7 @@ class DebuggerParser
void executeColortest(); void executeColortest();
void executeD(); void executeD();
void executeData(); void executeData();
void executeDebugColors();
void executeDefine(); void executeDefine();
void executeDelbreakif(); void executeDelbreakif();
void executeDelfunction(); void executeDelfunction();
@ -151,6 +153,7 @@ class DebuggerParser
void executeLoadconfig(); void executeLoadconfig();
void executeLoadstate(); void executeLoadstate();
void executeN(); void executeN();
void executePalette();
void executePc(); void executePc();
void executePGfx(); void executePGfx();
void executePrint(); void executePrint();
@ -178,11 +181,7 @@ class DebuggerParser
void executeTrap(); void executeTrap();
void executeTrapread(); void executeTrapread();
void executeTrapwrite(); void executeTrapwrite();
void executeTrapRW(bool read, bool write); // not exposed by debugger void executeTrapRW(uInt32 addr, bool read, bool write); // not exposed by debugger
void executeTrapM();
void executeTrapreadM();
void executeTrapwriteM();
void executeTrapMRW(bool read, bool write); // not exposed by debugger
void executeType(); void executeType();
void executeUHex(); void executeUHex();
void executeUndef(); void executeUndef();

View File

@ -35,7 +35,7 @@ class Expression
: myLHS(lhs), myRHS(rhs) { } : myLHS(lhs), myRHS(rhs) { }
virtual ~Expression() = default; virtual ~Expression() = default;
virtual uInt16 evaluate() const { return 0; } virtual uInt32 evaluate() const { return 0; }
protected: protected:
unique_ptr<Expression> myLHS, myRHS; unique_ptr<Expression> myLHS, myRHS;

View File

@ -27,12 +27,12 @@ class PackedBitArray
public: public:
PackedBitArray() : myInitialized(false) { } PackedBitArray() : myInitialized(false) { }
bool isSet(uInt32 bit) const { return myBits[bit]; } bool isSet(uInt16 bit) const { return myBits[bit]; }
bool isClear(uInt32 bit) const { return !myBits[bit]; } bool isClear(uInt16 bit) const { return !myBits[bit]; }
void set(uInt32 bit) { myBits[bit] = true; } void set(uInt16 bit) { myBits[bit] = true; }
void clear(uInt32 bit) { myBits[bit] = false; } void clear(uInt16 bit) { myBits[bit] = false; }
void toggle(uInt32 bit) { myBits.flip(bit); } void toggle(uInt16 bit) { myBits.flip(bit); }
void initialize() { myInitialized = true; } void initialize() { myInitialized = true; }
void clearAll() { myInitialized = false; myBits.reset(); } void clearAll() { myInitialized = false; myBits.reset(); }

View File

@ -185,7 +185,7 @@ bool TIADebug::vdelP0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(VDELP0, bool(newVal)); mySystem.poke(VDELP0, bool(newVal));
return myTIA.lastValueWrittenToRegister(VDELP0) & 0x01; return myTIA.registerValue(VDELP0) & 0x01;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -194,7 +194,7 @@ bool TIADebug::vdelP1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(VDELP1, bool(newVal)); mySystem.poke(VDELP1, bool(newVal));
return myTIA.lastValueWrittenToRegister(VDELP1) & 0x01; return myTIA.registerValue(VDELP1) & 0x01;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -203,7 +203,7 @@ bool TIADebug::vdelBL(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(VDELBL, bool(newVal)); mySystem.poke(VDELBL, bool(newVal));
return myTIA.lastValueWrittenToRegister(VDELBL) & 0x01; return myTIA.registerValue(VDELBL) & 0x01;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -212,7 +212,7 @@ bool TIADebug::enaM0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(ENAM0, bool(newVal) << 1); mySystem.poke(ENAM0, bool(newVal) << 1);
return myTIA.lastValueWrittenToRegister(ENAM0) & 0x02; return myTIA.registerValue(ENAM0) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -221,7 +221,7 @@ bool TIADebug::enaM1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(ENAM1, bool(newVal) << 1); mySystem.poke(ENAM1, bool(newVal) << 1);
return myTIA.lastValueWrittenToRegister(ENAM1) & 0x02; return myTIA.registerValue(ENAM1) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -230,7 +230,7 @@ bool TIADebug::enaBL(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(ENABL, bool(newVal) << 1); mySystem.poke(ENABL, bool(newVal) << 1);
return myTIA.lastValueWrittenToRegister(ENABL) & 0x02; return myTIA.registerValue(ENABL) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -239,7 +239,7 @@ bool TIADebug::resMP0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(RESMP0, bool(newVal) << 1); mySystem.poke(RESMP0, bool(newVal) << 1);
return myTIA.lastValueWrittenToRegister(RESMP0) & 0x02; return myTIA.registerValue(RESMP0) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -248,7 +248,7 @@ bool TIADebug::resMP1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(RESMP1, bool(newVal) << 1); mySystem.poke(RESMP1, bool(newVal) << 1);
return myTIA.lastValueWrittenToRegister(RESMP1) & 0x02;; return myTIA.registerValue(RESMP1) & 0x02;;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -257,7 +257,7 @@ bool TIADebug::refP0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(REFP0, bool(newVal) << 3); mySystem.poke(REFP0, bool(newVal) << 3);
return myTIA.lastValueWrittenToRegister(REFP0) & 0x08; return myTIA.registerValue(REFP0) & 0x08;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -266,7 +266,7 @@ bool TIADebug::refP1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(REFP1, bool(newVal) << 3); mySystem.poke(REFP1, bool(newVal) << 3);
return myTIA.lastValueWrittenToRegister(REFP1) & 0x08; return myTIA.registerValue(REFP1) & 0x08;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -274,7 +274,7 @@ bool TIADebug::refPF(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
int tmp = myTIA.lastValueWrittenToRegister(CTRLPF); int tmp = myTIA.registerValue(CTRLPF);
if(newVal) if(newVal)
tmp |= 0x01; tmp |= 0x01;
else else
@ -282,7 +282,7 @@ bool TIADebug::refPF(int newVal)
mySystem.poke(CTRLPF, tmp); mySystem.poke(CTRLPF, tmp);
} }
return myTIA.lastValueWrittenToRegister(CTRLPF) & 0x01; return myTIA.registerValue(CTRLPF) & 0x01;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -290,7 +290,7 @@ bool TIADebug::scorePF(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
int tmp = myTIA.lastValueWrittenToRegister(CTRLPF); int tmp = myTIA.registerValue(CTRLPF);
if(newVal) if(newVal)
tmp |= 0x02; tmp |= 0x02;
else else
@ -298,7 +298,7 @@ bool TIADebug::scorePF(int newVal)
mySystem.poke(CTRLPF, tmp); mySystem.poke(CTRLPF, tmp);
} }
return myTIA.lastValueWrittenToRegister(CTRLPF) & 0x02; return myTIA.registerValue(CTRLPF) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -306,7 +306,7 @@ bool TIADebug::priorityPF(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
int tmp = myTIA.lastValueWrittenToRegister(CTRLPF); int tmp = myTIA.registerValue(CTRLPF);
if(newVal) if(newVal)
tmp |= 0x04; tmp |= 0x04;
else else
@ -314,7 +314,7 @@ bool TIADebug::priorityPF(int newVal)
mySystem.poke(CTRLPF, tmp); mySystem.poke(CTRLPF, tmp);
} }
return myTIA.lastValueWrittenToRegister(CTRLPF) & 0x04; return myTIA.registerValue(CTRLPF) & 0x04;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -347,7 +347,7 @@ uInt8 TIADebug::audC0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(AUDC0, newVal); mySystem.poke(AUDC0, newVal);
return myTIA.lastValueWrittenToRegister(AUDC0) & 0x0f; return myTIA.registerValue(AUDC0) & 0x0f;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -356,7 +356,7 @@ uInt8 TIADebug::audC1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(AUDC1, newVal); mySystem.poke(AUDC1, newVal);
return myTIA.lastValueWrittenToRegister(AUDC1) & 0x0f; return myTIA.registerValue(AUDC1) & 0x0f;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -365,7 +365,7 @@ uInt8 TIADebug::audV0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(AUDV0, newVal); mySystem.poke(AUDV0, newVal);
return myTIA.lastValueWrittenToRegister(AUDV0) & 0x0f; return myTIA.registerValue(AUDV0) & 0x0f;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -374,7 +374,7 @@ uInt8 TIADebug::audV1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(AUDV1, newVal); mySystem.poke(AUDV1, newVal);
return myTIA.lastValueWrittenToRegister(AUDV1) & 0x0f; return myTIA.registerValue(AUDV1) & 0x0f;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -383,7 +383,7 @@ uInt8 TIADebug::audF0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(AUDF0, newVal); mySystem.poke(AUDF0, newVal);
return myTIA.lastValueWrittenToRegister(AUDF0) & 0x1f; return myTIA.registerValue(AUDF0) & 0x1f;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -392,7 +392,7 @@ uInt8 TIADebug::audF1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(AUDF1, newVal); mySystem.poke(AUDF1, newVal);
return myTIA.lastValueWrittenToRegister(AUDF1) & 0x1f; return myTIA.registerValue(AUDF1) & 0x1f;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -401,7 +401,7 @@ uInt8 TIADebug::pf0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(PF0, newVal << 4); mySystem.poke(PF0, newVal << 4);
return myTIA.lastValueWrittenToRegister(PF0) >> 4; return myTIA.registerValue(PF0) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -410,7 +410,7 @@ uInt8 TIADebug::pf1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(PF1, newVal); mySystem.poke(PF1, newVal);
return myTIA.lastValueWrittenToRegister(PF1); return myTIA.registerValue(PF1);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -419,7 +419,7 @@ uInt8 TIADebug::pf2(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(PF2, newVal); mySystem.poke(PF2, newVal);
return myTIA.lastValueWrittenToRegister(PF1); return myTIA.registerValue(PF2);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -428,7 +428,7 @@ uInt8 TIADebug::coluP0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(COLUP0, newVal); mySystem.poke(COLUP0, newVal);
return myTIA.lastValueWrittenToRegister(COLUP0); return myTIA.registerValue(COLUP0);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -437,7 +437,7 @@ uInt8 TIADebug::coluP1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(COLUP1, newVal); mySystem.poke(COLUP1, newVal);
return myTIA.lastValueWrittenToRegister(COLUP1); return myTIA.registerValue(COLUP1);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -446,7 +446,7 @@ uInt8 TIADebug::coluPF(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(COLUPF, newVal); mySystem.poke(COLUPF, newVal);
return myTIA.lastValueWrittenToRegister(COLUPF); return myTIA.registerValue(COLUPF);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -455,7 +455,7 @@ uInt8 TIADebug::coluBK(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(COLUBK, newVal); mySystem.poke(COLUBK, newVal);
return myTIA.lastValueWrittenToRegister(COLUBK); return myTIA.registerValue(COLUBK);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -464,7 +464,7 @@ uInt8 TIADebug::nusiz0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(NUSIZ0, newVal); mySystem.poke(NUSIZ0, newVal);
return myTIA.lastValueWrittenToRegister(NUSIZ0); return myTIA.registerValue(NUSIZ0);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -473,7 +473,7 @@ uInt8 TIADebug::nusiz1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(NUSIZ1, newVal); mySystem.poke(NUSIZ1, newVal);
return myTIA.lastValueWrittenToRegister(NUSIZ1); return myTIA.registerValue(NUSIZ1);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -481,12 +481,12 @@ uInt8 TIADebug::nusizP0(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ0) & ~0x07; uInt8 tmp = myTIA.registerValue(NUSIZ0) & ~0x07;
tmp |= (newVal & 0x07); tmp |= (newVal & 0x07);
mySystem.poke(NUSIZ0, tmp); mySystem.poke(NUSIZ0, tmp);
} }
return myTIA.lastValueWrittenToRegister(NUSIZ0) & 0x07; return myTIA.registerValue(NUSIZ0) & 0x07;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -494,12 +494,12 @@ uInt8 TIADebug::nusizP1(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ1) & ~0x07; uInt8 tmp = myTIA.registerValue(NUSIZ1) & ~0x07;
tmp |= newVal & 0x07; tmp |= newVal & 0x07;
mySystem.poke(NUSIZ1, tmp); mySystem.poke(NUSIZ1, tmp);
} }
return myTIA.lastValueWrittenToRegister(NUSIZ1) & 0x07; return myTIA.registerValue(NUSIZ1) & 0x07;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -507,12 +507,12 @@ uInt8 TIADebug::nusizM0(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ0) & ~0x30; uInt8 tmp = myTIA.registerValue(NUSIZ0) & ~0x30;
tmp |= (newVal & 0x04) << 4; tmp |= (newVal & 0x04) << 4;
mySystem.poke(NUSIZ0, tmp); mySystem.poke(NUSIZ0, tmp);
} }
return (myTIA.lastValueWrittenToRegister(NUSIZ0) & 0x30) >> 4; return (myTIA.registerValue(NUSIZ0) & 0x30) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -520,12 +520,12 @@ uInt8 TIADebug::nusizM1(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ1) & ~0x30; uInt8 tmp = myTIA.registerValue(NUSIZ1) & ~0x30;
tmp |= (newVal & 0x04) << 4; tmp |= (newVal & 0x04) << 4;
mySystem.poke(NUSIZ1, tmp); mySystem.poke(NUSIZ1, tmp);
} }
return (myTIA.lastValueWrittenToRegister(NUSIZ1) & 0x30) >> 4; return (myTIA.registerValue(NUSIZ1) & 0x30) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -534,7 +534,7 @@ uInt8 TIADebug::grP0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(GRP0, newVal); mySystem.poke(GRP0, newVal);
return myTIA.lastValueWrittenToRegister(GRP0); return myTIA.registerValue(GRP0);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -543,7 +543,7 @@ uInt8 TIADebug::grP1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(GRP1, newVal); mySystem.poke(GRP1, newVal);
return myTIA.lastValueWrittenToRegister(GRP1); return myTIA.registerValue(GRP1);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -597,7 +597,7 @@ uInt8 TIADebug::ctrlPF(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(CTRLPF, newVal); mySystem.poke(CTRLPF, newVal);
return myTIA.lastValueWrittenToRegister(CTRLPF); return myTIA.registerValue(CTRLPF);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -605,12 +605,12 @@ uInt8 TIADebug::sizeBL(int newVal)
{ {
if(newVal > -1) if(newVal > -1)
{ {
uInt8 tmp = myTIA.lastValueWrittenToRegister(CTRLPF) & ~0x30; uInt8 tmp = myTIA.registerValue(CTRLPF) & ~0x30;
tmp |= (newVal & 0x04) << 4; tmp |= (newVal & 0x04) << 4;
mySystem.poke(CTRLPF, tmp); mySystem.poke(CTRLPF, tmp);
} }
return (myTIA.lastValueWrittenToRegister(CTRLPF) & 0x30) >> 4; return (myTIA.registerValue(CTRLPF) & 0x30) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -619,7 +619,7 @@ uInt8 TIADebug::hmP0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(HMP0, newVal << 4); mySystem.poke(HMP0, newVal << 4);
return myTIA.lastValueWrittenToRegister(HMP0) >> 4; return myTIA.registerValue(HMP0) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -628,7 +628,7 @@ uInt8 TIADebug::hmP1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(HMP1, newVal << 4); mySystem.poke(HMP1, newVal << 4);
return myTIA.lastValueWrittenToRegister(HMP1) >> 4; return myTIA.registerValue(HMP1) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -637,7 +637,7 @@ uInt8 TIADebug::hmM0(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(HMM0, newVal << 4); mySystem.poke(HMM0, newVal << 4);
return myTIA.lastValueWrittenToRegister(HMM0) >> 4; return myTIA.registerValue(HMM0) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -646,7 +646,7 @@ uInt8 TIADebug::hmM1(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(HMM1, newVal << 4); mySystem.poke(HMM1, newVal << 4);
return myTIA.lastValueWrittenToRegister(HMM1) >> 4; return myTIA.registerValue(HMM1) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -655,7 +655,7 @@ uInt8 TIADebug::hmBL(int newVal)
if(newVal > -1) if(newVal > -1)
mySystem.poke(HMBL, newVal << 4); mySystem.poke(HMBL, newVal << 4);
return myTIA.lastValueWrittenToRegister(HMBL) >> 4; return myTIA.registerValue(HMBL) >> 4;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -679,17 +679,23 @@ int TIADebug::clocksThisLine() const
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool TIADebug::vsync() const bool TIADebug::vsync() const
{ {
return myTIA.lastValueWrittenToRegister(VSYNC) & 0x02; return myTIA.registerValue(VSYNC) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool TIADebug::vblank() const bool TIADebug::vblank() const
{ {
return myTIA.lastValueWrittenToRegister(VBLANK) & 0x02; return myTIA.registerValue(VBLANK) & 0x02;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string TIADebug::colorSwatch(uInt8 c) shared_ptr<DelayQueueIterator> TIADebug::delayQueueIterator() const
{
return shared_ptr<DelayQueueIterator>(new DelayQueueIterator(myTIA.myDelayQueue));
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string TIADebug::colorSwatch(uInt8 c) const
{ {
string ret; string ret;
@ -736,6 +742,54 @@ string TIADebug::booleanWithLabel(string label, bool value)
return "-" + label; return "-" + label;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string TIADebug::debugColors() const
{
ostringstream buf;
if(myTIA.myFrameManager.layout() == FrameLayout::ntsc)
{
buf << " Red " << colorSwatch(myTIA.P0ColorNTSC) << " Player 0\n"
<< " Orange " << colorSwatch(myTIA.M0ColorNTSC) << " Missile 0\n"
<< " Yellow " << colorSwatch(myTIA.P1ColorNTSC) << " Player 1\n"
<< " Green " << colorSwatch(myTIA.M1ColorNTSC) << " Missile 1\n"
<< " Blue " << colorSwatch(myTIA.BLColorNTSC) << " Ball\n"
<< " Purple " << colorSwatch(myTIA.PFColorNTSC) << " Playfield\n"
<< " Grey " << colorSwatch(myTIA.BKColorNTSC) << " Background\n"
<< " White " << colorSwatch(myTIA.HBLANKColor) << " HMOVE\n";
}
else
{
buf << " Red " << colorSwatch(myTIA.P0ColorPAL) << " Player 0\n"
<< " Orange " << colorSwatch(myTIA.M0ColorPAL) << " Missile 0\n"
<< " Yellow " << colorSwatch(myTIA.P1ColorPAL) << " Player 1\n"
<< " Green " << colorSwatch(myTIA.M1ColorPAL) << " Missile 1\n"
<< " Blue " << colorSwatch(myTIA.BLColorPAL) << " Ball\n"
<< " Purple " << colorSwatch(myTIA.PFColorPAL) << " Playfield\n"
<< " Grey " << colorSwatch(myTIA.BKColorPAL) << " Background\n"
<< " White " << colorSwatch(myTIA.HBLANKColor) << " HMOVE\n";
}
return buf.str();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string TIADebug::palette() const
{
ostringstream buf;
buf << " 0 2 4 6 8 A C E\n";
uInt8 c = 0;
for(uInt16 row = 0; row < 16; ++row)
{
buf << " " << Common::Base::HEX1 << row << " ";
for(uInt16 col = 0; col < 8; ++col, c += 2)
buf << colorSwatch(c);
buf << endl;
}
return buf.str();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
string TIADebug::toString() string TIADebug::toString()
{ {
@ -770,11 +824,11 @@ string TIADebug::toString()
<< "COLUxx: " << "COLUxx: "
<< "P0=$" << Common::Base::HEX2 << state.coluRegs[0] << "/" << "P0=$" << Common::Base::HEX2 << state.coluRegs[0] << "/"
<< colorSwatch(state.coluRegs[0]) << colorSwatch(state.coluRegs[0])
<< "P1=$" << Common::Base::HEX2 << state.coluRegs[1] << "/" << " P1=$" << Common::Base::HEX2 << state.coluRegs[1] << "/"
<< colorSwatch(state.coluRegs[1]) << colorSwatch(state.coluRegs[1])
<< "PF=$" << Common::Base::HEX2 << state.coluRegs[2] << "/" << " PF=$" << Common::Base::HEX2 << state.coluRegs[2] << "/"
<< colorSwatch(state.coluRegs[2]) << colorSwatch(state.coluRegs[2])
<< "BK=$" << Common::Base::HEX2 << state.coluRegs[3] << "/" << " BK=$" << Common::Base::HEX2 << state.coluRegs[3] << "/"
<< colorSwatch(state.coluRegs[3]) << colorSwatch(state.coluRegs[3])
<< endl << endl
<< "P0: GR=%" << Common::Base::toString(state.gr[P0], Common::Base::F_2_8) << "P0: GR=%" << Common::Base::toString(state.gr[P0], Common::Base::F_2_8)

View File

@ -23,6 +23,8 @@ class TiaDebug;
class TIA; class TIA;
#include "DebuggerSystem.hxx" #include "DebuggerSystem.hxx"
#include "DelayQueueIterator.hxx"
#include "bspf.hxx"
// Function type for TIADebug instance methods // Function type for TIADebug instance methods
class TIADebug; class TIADebug;
@ -57,6 +59,8 @@ class TIADebug : public DebuggerSystem
void saveOldState() override; void saveOldState() override;
string toString() override; string toString() override;
string debugColors() const;
string palette() const;
// TIA byte (or part of a byte) registers // TIA byte (or part of a byte) registers
uInt8 nusiz0(int newVal = -1); uInt8 nusiz0(int newVal = -1);
@ -137,7 +141,7 @@ class TIADebug : public DebuggerSystem
// TIA strobe registers // TIA strobe registers
void strobeWsync() { mySystem.poke(WSYNC, 0); } void strobeWsync() { mySystem.poke(WSYNC, 0); }
void strobeRsync() { mySystem.poke(RSYNC, 0); } // not emulated! void strobeRsync() { mySystem.poke(RSYNC, 0); }
void strobeResP0() { mySystem.poke(RESP0, 0); } void strobeResP0() { mySystem.poke(RESP0, 0); }
void strobeResP1() { mySystem.poke(RESP1, 0); } void strobeResP1() { mySystem.poke(RESP1, 0); }
void strobeResM0() { mySystem.poke(RESM0, 0); } void strobeResM0() { mySystem.poke(RESM0, 0); }
@ -156,9 +160,11 @@ class TIADebug : public DebuggerSystem
int vsyncAsInt() const { return int(vsync()); } // so we can use _vsync pseudo-register int vsyncAsInt() const { return int(vsync()); } // so we can use _vsync pseudo-register
int vblankAsInt() const { return int(vblank()); } // so we can use _vblank pseudo-register int vblankAsInt() const { return int(vblank()); } // so we can use _vblank pseudo-register
shared_ptr<DelayQueueIterator> delayQueueIterator() const;
private: private:
/** Display a color patch for color at given index in the palette */ /** Display a color patch for color at given index in the palette */
string colorSwatch(uInt8 c); string colorSwatch(uInt8 c) const;
/** Get specific bits in the collision register (used by collXX_XX) */ /** Get specific bits in the collision register (used by collXX_XX) */
bool collision(CollisionBit id) const; bool collision(CollisionBit id) const;

View File

@ -54,7 +54,7 @@ CpuWidget::CpuWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& n
xpos += lwidth + myPCGrid->getWidth() + 10; xpos += lwidth + myPCGrid->getWidth() + 10;
myPCLabel = new EditTextWidget(boss, nfont, xpos, ypos, (max_w - xpos + x) - 10, myPCLabel = new EditTextWidget(boss, nfont, xpos, ypos, (max_w - xpos + x) - 10,
fontHeight+1, ""); fontHeight+1, "");
myPCLabel->setEditable(false); myPCLabel->setEditable(false, true);
// Create a 1x4 grid with labels for the other CPU registers // Create a 1x4 grid with labels for the other CPU registers
xpos = x + lwidth; ypos += myPCGrid->getHeight() + 1; xpos = x + lwidth; ypos += myPCGrid->getHeight() + 1;
@ -89,7 +89,7 @@ CpuWidget::CpuWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& n
{ {
myCpuDataSrc[i] = new EditTextWidget(boss, nfont, xpos, src_y, src_w, myCpuDataSrc[i] = new EditTextWidget(boss, nfont, xpos, src_y, src_w,
fontHeight+1, ""); fontHeight+1, "");
myCpuDataSrc[i]->setEditable(false); myCpuDataSrc[i]->setEditable(false, true);
src_y += fontHeight+2; src_y += fontHeight+2;
} }
int swidth = lfont.getStringWidth("Source Address"); int swidth = lfont.getStringWidth("Source Address");

View File

@ -178,6 +178,13 @@ void DataGridWidget::setList(int a, int v)
setList(alist, vlist, changed); setList(alist, vlist, changed);
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DataGridWidget::setEditable(bool editable, bool hiliteBG)
{
// Override parent method; enable hilite when widget is not editable
EditableWidget::setEditable(editable, hiliteBG);
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DataGridWidget::setHiliteList(const BoolArray& hilitelist) void DataGridWidget::setHiliteList(const BoolArray& hilitelist)
{ {

View File

@ -54,6 +54,8 @@ class DataGridWidget : public EditableWidget
void setList(int a, int v, bool changed); void setList(int a, int v, bool changed);
void setList(int a, int v); // automatically calculate if changed void setList(int a, int v); // automatically calculate if changed
void setEditable(bool editable, bool hiliteBG = true) override;
void setHiliteList(const BoolArray& hilitelist); void setHiliteList(const BoolArray& hilitelist);
void setNumRows(int rows); void setNumRows(int rows);

View File

@ -341,7 +341,7 @@ void DebuggerDialog::addStatusArea()
myMessageBox = new EditTextWidget(this, *myLFont, myMessageBox = new EditTextWidget(this, *myLFont,
xpos, ypos, myTiaZoom->getWidth(), xpos, ypos, myTiaZoom->getWidth(),
myLFont->getLineHeight(), ""); myLFont->getLineHeight(), "");
myMessageBox->setEditable(false); myMessageBox->setEditable(false, false);
myMessageBox->clearFlags(WIDGET_RETAIN_FOCUS); myMessageBox->clearFlags(WIDGET_RETAIN_FOCUS);
myMessageBox->setTextColor(kTextColorEm); myMessageBox->setTextColor(kTextColorEm);
} }

View File

@ -0,0 +1,93 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2017 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#include "DelayQueueWidget.hxx"
#include "DelayQueueIterator.hxx"
#include "OSystem.hxx"
#include "TIATypes.hxx"
#include "Debugger.hxx"
#include "Base.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DelayQueueWidget::DelayQueueWidget(
GuiObject* boss,
const GUI::Font& font,
int x, int y
) : Widget(boss, font, x, y, 0, 0)
{
_textcolor = kTextColor;
_w = 20 * font.getMaxCharWidth() + 6;
_h = 3 * font.getLineHeight() + 6;
myLines[0] = myLines[1] = myLines[2];
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DelayQueueWidget::loadConfig() {
shared_ptr<DelayQueueIterator> delayQueueIterator =
instance().debugger().tiaDebug().delayQueueIterator();
using Common::Base;
for (uInt8 i = 0; i < 3; i++) {
if (delayQueueIterator->isValid() && delayQueueIterator->address() < 64) {
stringstream ss;
ss
<< int(delayQueueIterator->delay())
<< " clk, $"
<< Base::toString(delayQueueIterator->value(), Base::Format::F_16_2)
<< " -> "
<< instance().debugger().cartDebug().getLabel(
delayQueueIterator->address(), false);
myLines[i] = ss.str();
delayQueueIterator->next();
}
else
myLines[i] = "";
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DelayQueueWidget::drawWidget(bool hilite)
{
FBSurface& surface = _boss->dialog().surface();
int y = _y,
x = _x,
w = _w,
lineHeight = _font.getLineHeight();
surface.frameRect(x, y, w, _h, kShadowColor);
y += 1;
x += 1;
w -= 1;
surface.fillRect(x, y, w - 1, _h - 2, kBGColorLo);
y += 2;
x += 2;
w -= 3;
surface.drawString(_font, myLines[0], x, y, w, _textcolor);
y += lineHeight;
surface.drawString(_font, myLines[1], x, y, w, _textcolor);
y += lineHeight;
surface.drawString(_font, myLines[2], x, y, w, _textcolor);
}

View File

@ -0,0 +1,49 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2017 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef DELAY_QUEUE_WIDGET_HXX
#define DELAY_QUEUE_WIDGET_HXX
#include "Widget.hxx"
class DelayQueueWidget : public Widget
{
public:
DelayQueueWidget(
GuiObject* boss,
const GUI::Font& font,
int x, int y
);
virtual ~DelayQueueWidget() = default;
void loadConfig() override;
protected:
void drawWidget(bool hilite) override;
private:
string myLines[3];
private:
DelayQueueWidget() = delete;
DelayQueueWidget(const DelayQueueWidget&) = delete;
DelayQueueWidget(DelayQueueWidget&&) = delete;
DelayQueueWidget& operator=(const DelayQueueWidget&);
DelayQueueWidget& operator=(DelayQueueWidget&&);
};
#endif // DELAY_QUEUE_WIDGET_HXX

View File

@ -240,11 +240,19 @@ bool PromptWidget::handleKeyDown(StellaKey key, StellaMod mod)
} }
else else
{ {
// we got a delimiter, so this must be a label or a function // Special case for 'help' command
const Debugger& dbg = instance().debugger(); if(BSPF::startsWithIgnoreCase(str, "help"))
{
instance().debugger().parser().getCompletions(str + lastDelimPos + 1, list);
}
else
{
// we got a delimiter, so this must be a label or a function
const Debugger& dbg = instance().debugger();
dbg.cartDebug().getCompletions(str + lastDelimPos + 1, list); dbg.cartDebug().getCompletions(str + lastDelimPos + 1, list);
dbg.getCompletions(str + lastDelimPos + 1, list); dbg.getCompletions(str + lastDelimPos + 1, list);
}
if(list.size() < 1) if(list.size() < 1)
break; break;
@ -922,19 +930,13 @@ string PromptWidget::getCompletionPrefix(const StringList& completions, string p
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void PromptWidget::clearScreen() void PromptWidget::clearScreen()
{ {
// Initialize start position and history // Initialize start position
_currentPos = 0; _currentPos = 0;
_scrollLine = _linesPerPage - 1; _scrollLine = _linesPerPage - 1;
_firstLineInBuffer = 0; _firstLineInBuffer = 0;
_promptStartPos = _promptEndPos = -1; _promptStartPos = _promptEndPos = -1;
memset(_buffer, 0, kBufferSize * sizeof(int)); memset(_buffer, 0, kBufferSize * sizeof(int));
_historyIndex = 0;
_historyLine = 0;
_historySize = 0;
for (int i = 0; i < kHistorySize; i++)
_history[i][0] = '\0';
if(!_firstTime) if(!_firstTime)
updateScrollBuffer(); updateScrollBuffer();
} }

View File

@ -77,10 +77,9 @@ class PromptWidget : public Widget, public CommandSender
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
// Account for the extra width of embedded scrollbar // Account for the extra width of embedded scrollbar
virtual int getWidth() const override; int getWidth() const override;
virtual bool wantsFocus() { return true; }
bool wantsFocus() const override { return true; }
void loadConfig() override; void loadConfig() override;
private: private:

View File

@ -142,7 +142,7 @@ RamWidget::RamWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& n
xpos += 6*myFontWidth + 5; xpos += 6*myFontWidth + 5;
myLabel = new EditTextWidget(boss, nfont, xpos, ypos-2, xpos_r-xpos, myLabel = new EditTextWidget(boss, nfont, xpos, ypos-2, xpos_r-xpos,
myLineHeight); myLineHeight);
myLabel->setEditable(false); myLabel->setEditable(false, true);
// Inputbox which will pop up when searching RAM // Inputbox which will pop up when searching RAM
StringList labels = { "Search: " }; StringList labels = { "Search: " };

View File

@ -47,7 +47,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
kTextAlignLeft); kTextAlignLeft);
xpos += lwidth; xpos += lwidth;
myFrameCount = new EditTextWidget(boss, nfont, xpos, ypos-1, fwidth, lineHeight, ""); myFrameCount = new EditTextWidget(boss, nfont, xpos, ypos-1, fwidth, lineHeight, "");
myFrameCount->setEditable(false); myFrameCount->setEditable(false, true);
xpos = x; ypos += lineHeight + 5; xpos = x; ypos += lineHeight + 5;
new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight, new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight,
@ -55,7 +55,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
kTextAlignLeft); kTextAlignLeft);
xpos += lwidth; xpos += lwidth;
myFrameCycles = new EditTextWidget(boss, nfont, xpos, ypos-1, fwidth, lineHeight, ""); myFrameCycles = new EditTextWidget(boss, nfont, xpos, ypos-1, fwidth, lineHeight, "");
myFrameCycles->setEditable(false); myFrameCycles->setEditable(false, true);
xpos = x + 20; ypos += lineHeight + 8; xpos = x + 20; ypos += lineHeight + 8;
myVSync = new CheckboxWidget(boss, lfont, xpos, ypos-3, "VSync", 0); myVSync = new CheckboxWidget(boss, lfont, xpos, ypos-3, "VSync", 0);
@ -73,7 +73,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
myScanlineCount = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth, myScanlineCount = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth,
lineHeight, ""); lineHeight, "");
myScanlineCount->setEditable(false); myScanlineCount->setEditable(false, true);
ypos += lineHeight + 5; ypos += lineHeight + 5;
new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight, new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight,
@ -81,7 +81,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
myScanlineCycles = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth, myScanlineCycles = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth,
lineHeight, ""); lineHeight, "");
myScanlineCycles->setEditable(false); myScanlineCycles->setEditable(false, true);
ypos += lineHeight + 5; ypos += lineHeight + 5;
new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight, new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight,
@ -89,7 +89,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
myPixelPosition = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth, myPixelPosition = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth,
lineHeight, ""); lineHeight, "");
myPixelPosition->setEditable(false); myPixelPosition->setEditable(false, true);
ypos += lineHeight + 5; ypos += lineHeight + 5;
new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight, new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight,
@ -97,7 +97,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
myColorClocks = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth, myColorClocks = new EditTextWidget(boss, nfont, xpos+lwidth, ypos-1, fwidth,
lineHeight, ""); lineHeight, "");
myColorClocks->setEditable(false); myColorClocks->setEditable(false, true);
// Calculate actual dimensions // Calculate actual dimensions
_w = myColorClocks->getAbsX() + myColorClocks->getWidth() - x; _w = myColorClocks->getAbsX() + myColorClocks->getWidth() - x;

View File

@ -42,10 +42,10 @@ class TiaOutputWidget : public Widget, public CommandSender
// For example, clicking an area may cause an action // For example, clicking an area may cause an action
// (fill to this scanline, etc). // (fill to this scanline, etc).
/* /*
virtual void handleMouseUp(int x, int y, int button, int clickCount) override; void handleMouseUp(int x, int y, int button, int clickCount) override;
virtual void handleMouseWheel(int x, int y, int direction) override; void handleMouseWheel(int x, int y, int direction) override;
virtual bool handleKeyDown(StellaKey key, StellaMod mod) override; bool handleKeyDown(StellaKey key, StellaMod mod) override;
virtual bool handleKeyUp(StellaKey key, StellaMod mod) override; bool handleKeyUp(StellaKey key, StellaMod mod) override;
*/ */
private: private:
unique_ptr<ContextMenu> myMenu; unique_ptr<ContextMenu> myMenu;
@ -62,7 +62,7 @@ class TiaOutputWidget : public Widget, public CommandSender
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
void drawWidget(bool hilite) override; void drawWidget(bool hilite) override;
bool wantsFocus() { return false; } bool wantsFocus() const override { return false; }
// Following constructors and assignment operators not supported // Following constructors and assignment operators not supported
TiaOutputWidget() = delete; TiaOutputWidget() = delete;

View File

@ -27,7 +27,7 @@
#include "ToggleBitWidget.hxx" #include "ToggleBitWidget.hxx"
#include "TogglePixelWidget.hxx" #include "TogglePixelWidget.hxx"
#include "Widget.hxx" #include "Widget.hxx"
#include "DelayQueueWidget.hxx"
#include "TiaWidget.hxx" #include "TiaWidget.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -237,7 +237,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
xpos += myNusizP0->getWidth() + 5; xpos += myNusizP0->getWidth() + 5;
myNusizP0Text = new EditTextWidget(boss, nfont, xpos, ypos, 23*fontWidth, myNusizP0Text = new EditTextWidget(boss, nfont, xpos, ypos, 23*fontWidth,
lineHeight, ""); lineHeight, "");
myNusizP0Text->setEditable(false); myNusizP0Text->setEditable(false, true);
//////////////////////////// ////////////////////////////
// P1 register info // P1 register info
@ -304,7 +304,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
xpos += myNusizP1->getWidth() + 5; xpos += myNusizP1->getWidth() + 5;
myNusizP1Text = new EditTextWidget(boss, nfont, xpos, ypos, 23*fontWidth, myNusizP1Text = new EditTextWidget(boss, nfont, xpos, ypos, 23*fontWidth,
lineHeight, ""); lineHeight, "");
myNusizP1Text->setEditable(false); myNusizP1Text->setEditable(false, true);
//////////////////////////// ////////////////////////////
// M0 register info // M0 register info
@ -523,8 +523,16 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
myPriorityPF->setID(kPriorityPFID); myPriorityPF->setID(kPriorityPFID);
addFocusWidget(myPriorityPF); addFocusWidget(myPriorityPF);
xpos = 10;
ypos += 2 * lineHeight;
t = new StaticTextWidget(boss, lfont, xpos, ypos, 14*fontWidth, fontHeight,
"Queued Writes:", kTextAlignLeft);
xpos += t->getWidth() + 10;
myDelayQueueWidget = new DelayQueueWidget(boss, lfont, xpos, ypos);
// How to handle undriven pins // How to handle undriven pins
xpos = 10; ypos += 2*lineHeight; xpos = 10; ypos += (myDelayQueueWidget->getHeight() + lineHeight);
myUndrivenPins = new CheckboxWidget(boss, lfont, xpos, ypos+1, myUndrivenPins = new CheckboxWidget(boss, lfont, xpos, ypos+1,
"Drive unused TIA pins randomly on a read/peek", kPPinCmd); "Drive unused TIA pins randomly on a read/peek", kPPinCmd);
myUndrivenPins->setTarget(this); myUndrivenPins->setTarget(this);
@ -879,20 +887,16 @@ void TiaWidget::loadConfig()
//////////////////////////// ////////////////////////////
// PF register info // PF register info
//////////////////////////// ////////////////////////////
int pfx_bgcolor = !tia.priorityPF() ? state.coluRegs[3] : -1;
// PF0 // PF0
myPF[0]->setColor(state.coluRegs[2]); myPF[0]->setColor(state.coluRegs[2]);
myPF[0]->setBackgroundColor(pfx_bgcolor);
myPF[0]->setIntState(state.pf[0], true); // reverse bit order myPF[0]->setIntState(state.pf[0], true); // reverse bit order
// PF1 // PF1
myPF[1]->setColor(state.coluRegs[2]); myPF[1]->setColor(state.coluRegs[2]);
myPF[1]->setBackgroundColor(pfx_bgcolor);
myPF[1]->setIntState(state.pf[1], false); myPF[1]->setIntState(state.pf[1], false);
// PF2 // PF2
myPF[2]->setColor(state.coluRegs[2]); myPF[2]->setColor(state.coluRegs[2]);
myPF[2]->setBackgroundColor(pfx_bgcolor);
myPF[2]->setIntState(state.pf[2], true); // reverse bit order myPF[2]->setIntState(state.pf[2], true); // reverse bit order
// Reflect // Reflect
@ -906,6 +910,8 @@ void TiaWidget::loadConfig()
// Undriven pins // Undriven pins
myUndrivenPins->setState(tia.tia().driveUnusedPinsRandom()); myUndrivenPins->setState(tia.tia().driveUnusedPinsRandom());
myDelayQueueWidget->loadConfig();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -26,6 +26,7 @@ class ToggleBitWidget;
class TogglePixelWidget; class TogglePixelWidget;
class EditTextWidget; class EditTextWidget;
class ColorWidget; class ColorWidget;
class DelayQueueWidget;
#include "Widget.hxx" #include "Widget.hxx"
#include "Command.hxx" #include "Command.hxx"
@ -91,6 +92,8 @@ class TiaWidget : public Widget, public CommandSender
CheckboxWidget* myUndrivenPins; CheckboxWidget* myUndrivenPins;
DelayQueueWidget* myDelayQueueWidget;
// ID's for the various widgets // ID's for the various widgets
// We need ID's, since there are more than one of several types of widgets // We need ID's, since there are more than one of several types of widgets
enum { enum {

View File

@ -48,7 +48,7 @@ class TiaZoomWidget : public Widget, public CommandSender
void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
void drawWidget(bool hilite) override; void drawWidget(bool hilite) override;
bool wantsFocus() { return true; } bool wantsFocus() const override { return true; }
private: private:
unique_ptr<ContextMenu> myMenu; unique_ptr<ContextMenu> myMenu;

View File

@ -101,14 +101,22 @@ void ToggleBitWidget::drawWidget(bool hilite)
else else
buffer = _offList[pos]; buffer = _offList[pos];
// Highlight changes if(isEditable())
if(_changedList[pos])
{ {
s.fillRect(x - 3, y - 1, _colWidth-1, _rowHeight-1, kDbgChangedColor); // Highlight changes
s.drawString(_font, buffer, x, y, _colWidth, kDbgChangedTextColor); if(_changedList[pos])
{
s.fillRect(x - 3, y - 1, _colWidth-1, _rowHeight-1, kDbgChangedColor);
s.drawString(_font, buffer, x, y, _colWidth, kDbgChangedTextColor);
}
else
s.drawString(_font, buffer, x, y, _colWidth, kTextColor);
} }
else else
{
s.fillRect(x - 3, y - 1, _colWidth-1, _rowHeight-1, kBGColorLo);
s.drawString(_font, buffer, x, y, _colWidth, kTextColor); s.drawString(_font, buffer, x, y, _colWidth, kTextColor);
}
} }
} }
} }

View File

@ -39,10 +39,11 @@ class ToggleWidget : public Widget, public CommandSender
const BoolArray& getState() { return _stateList; } const BoolArray& getState() { return _stateList; }
bool getSelectedState() const { return _stateList[_selectedItem]; } bool getSelectedState() const { return _stateList[_selectedItem]; }
virtual bool wantsFocus() { return true; } bool wantsFocus() const override { return true; }
int colWidth() const { return _colWidth; } int colWidth() const { return _colWidth; }
void setEditable(bool editable) { _editable = editable; } void setEditable(bool editable) { _editable = editable; }
bool isEditable() const { return _editable; }
protected: protected:

View File

@ -71,7 +71,8 @@ MODULE_OBJS := \
src/debugger/gui/KeyboardWidget.o \ src/debugger/gui/KeyboardWidget.o \
src/debugger/gui/GenesisWidget.o \ src/debugger/gui/GenesisWidget.o \
src/debugger/gui/AtariVoxWidget.o \ src/debugger/gui/AtariVoxWidget.o \
src/debugger/gui/SaveKeyWidget.o src/debugger/gui/SaveKeyWidget.o \
src/debugger/gui/DelayQueueWidget.o
MODULE_DIRS += \ MODULE_DIRS += \
src/debugger/gui src/debugger/gui

View File

@ -198,11 +198,6 @@ class Controller : public Serializable
Controller::Type xtype, int xid, Controller::Type ytype, int yid) Controller::Type xtype, int xid, Controller::Type ytype, int yid)
{ return false; } { return false; }
/**
Returns the name of this controller.
*/
virtual string name() const override { return myName; }
/** /**
Returns more detailed information about this controller. Returns more detailed information about this controller.
*/ */
@ -237,6 +232,11 @@ class Controller : public Serializable
*/ */
bool load(Serializer& in) override; bool load(Serializer& in) override;
/**
Returns the name of this controller.
*/
string name() const override { return myName; }
public: public:
/// Constant which represents maximum resistance for analog pins /// Constant which represents maximum resistance for analog pins
static constexpr Int32 maximumResistance = 0x7FFFFFFF; static constexpr Int32 maximumResistance = 0x7FFFFFFF;

View File

@ -283,7 +283,7 @@ class AbstractFSNode
// AbstractFSNode(AbstractFSNode&&) = default; // AbstractFSNode(AbstractFSNode&&) = default;
AbstractFSNode& operator=(const AbstractFSNode&) = default; AbstractFSNode& operator=(const AbstractFSNode&) = default;
// AbstractFSNode& operator=(AbstractFSNode&&) = default; // AbstractFSNode& operator=(AbstractFSNode&&) = default;
virtual ~AbstractFSNode() { } virtual ~AbstractFSNode() = default;
/* /*
* Indicates whether the object referred by this path exists in the * Indicates whether the object referred by this path exists in the

View File

@ -885,6 +885,7 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
// Base colors // Base colors
kColor Normal foreground color (non-text) kColor Normal foreground color (non-text)
kBGColor Normal background color (non-text) kBGColor Normal background color (non-text)
kBGColorLo Disabled background color (non-text)
kShadowColor Item is disabled kShadowColor Item is disabled
kTextColor Normal text color kTextColor Normal text color
kTextColorHi Highlighted text color kTextColorHi Highlighted text color
@ -915,7 +916,7 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
*/ */
uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = { uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = {
// Standard // Standard
{ 0x686868, 0x000000, 0x404040, 0x000000, 0x62a108, 0x9f0000, { 0x686868, 0x000000, 0xdccfa5, 0x404040, 0x000000, 0x62a108, 0x9f0000,
0xc9af7c, 0xf0f0cf, 0xc80000, 0xc9af7c, 0xf0f0cf, 0xc80000,
0xac3410, 0xd55941, 0xffffff, 0xffd652, 0xac3410, 0xd55941, 0xffffff, 0xffd652,
0xac3410, 0xac3410,
@ -925,7 +926,7 @@ uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = {
}, },
// Classic // Classic
{ 0x686868, 0x000000, 0x404040, 0x20a020, 0x00ff00, 0xc80000, { 0x686868, 0x000000, 0x404040, 0x404040, 0x20a020, 0x00ff00, 0xc80000,
0x000000, 0x000000, 0xc80000, 0x000000, 0x000000, 0xc80000,
0x000000, 0x000000, 0x20a020, 0x00ff00, 0x000000, 0x000000, 0x20a020, 0x00ff00,
0x20a020, 0x20a020,

View File

@ -61,6 +61,7 @@ enum MessagePosition {
enum { enum {
kColor = 256, kColor = 256,
kBGColor, kBGColor,
kBGColorLo,
kShadowColor, kShadowColor,
kTextColor, kTextColor,
kTextColorHi, kTextColorHi,

View File

@ -26,7 +26,9 @@ Paddles::Paddles(Jack jack, const Event& event, const System& system,
myMPaddleIDX(-1), myMPaddleIDX(-1),
myMPaddleIDY(-1) myMPaddleIDY(-1)
{ {
myAnalogPinValue[Nine] = myAnalogPinValue[Five] = 0; // We must start with minimum resistance; see commit
// 38b452e1a047a0dca38c5bcce7c271d40f76736e for more information
myAnalogPinValue[Nine] = myAnalogPinValue[Five] = minimumResistance;
// The following logic reflects that mapping paddles to different // The following logic reflects that mapping paddles to different
// devices can be extremely complex // devices can be extremely complex

View File

@ -24,6 +24,9 @@
class DelayQueue : public Serializable class DelayQueue : public Serializable
{ {
public:
friend class DelayQueueIterator;
public: public:
DelayQueue(uInt8 length, uInt8 size); DelayQueue(uInt8 length, uInt8 size);

View File

@ -0,0 +1,94 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2017 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#include "DelayQueueIterator.hxx"
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DelayQueueIterator::DelayQueueIterator(const DelayQueue& delayQueue)
: myDelayQueue(delayQueue),
myDelayCycle(0)
{
while (isValid()) {
const DelayQueueMember& currentMember = myDelayQueue.myMembers.at(currentIndex());
myCurrentIterator = currentMember.begin();
if (myCurrentIterator == currentMember.end())
myDelayCycle++;
else
break;
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool DelayQueueIterator::isValid() const
{
return myDelayCycle < myDelayQueue.myMembers.size();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt8 DelayQueueIterator::delay() const
{
if (!isValid()) {
throw runtime_error("delay called on invalid DelayQueueInterator");
}
return myDelayCycle;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt8 DelayQueueIterator::address() const
{
if (!isValid()) {
throw runtime_error("address called on invalid DelayQueueInterator");
}
return myCurrentIterator->address;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt8 DelayQueueIterator::value() const
{
if (!isValid()) {
throw runtime_error("value called on invalid DelayQueueIterator");
}
return myCurrentIterator->value;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool DelayQueueIterator::next()
{
if (!isValid()) {
return false;
}
if (++myCurrentIterator == myDelayQueue.myMembers.at(currentIndex()).end()) {
myDelayCycle++;
while (isValid()) {
const DelayQueueMember& currentMember = myDelayQueue.myMembers.at(currentIndex());
myCurrentIterator = currentMember.begin();
if (myCurrentIterator == currentMember.end())
myDelayCycle++;
else
break;
}
}
return isValid();
}

View File

@ -0,0 +1,52 @@
//============================================================================
//
// SSSS tt lll lll
// SS SS tt ll ll
// SS tttttt eeee ll ll aaaa
// SSSS tt ee ee ll ll aa
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
// SS SS tt ee ll ll aa aa
// SSSS ttt eeeee llll llll aaaaa
//
// Copyright (c) 1995-2017 by Bradford W. Mott, Stephen Anthony
// and the Stella Team
//
// See the file "License.txt" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
//============================================================================
#ifndef TIA_DELAY_QUEUE_ITERATOR
#define TIA_DELAY_QUEUE_ITERATOR
#include "bspf.hxx"
#include "DelayQueue.hxx"
#include "DelayQueueMember.hxx"
class DelayQueueIterator
{
public:
DelayQueueIterator(const DelayQueue&);
bool isValid() const;
uInt8 delay() const;
uInt8 address() const;
uInt8 value() const;
bool next();
private:
uInt8 currentIndex() const {
return (myDelayQueue.myIndex + myDelayCycle) % myDelayQueue.myMembers.size();
}
private:
const DelayQueue& myDelayQueue;
uInt8 myDelayCycle;
DelayQueueMember::iterator myCurrentIterator;
};
#endif // TIA_DELAY_QUEUE_ITERATOR

View File

@ -35,17 +35,21 @@ class DelayQueueMember : public Serializable
DelayQueueMember(DelayQueueMember&&) = default; DelayQueueMember(DelayQueueMember&&) = default;
DelayQueueMember& operator=(DelayQueueMember&&) = default; DelayQueueMember& operator=(DelayQueueMember&&) = default;
public:
typedef vector<Entry>::const_iterator iterator;
public: public:
void push(uInt8 address, uInt8 value); void push(uInt8 address, uInt8 value);
void remove(uInt8 address); void remove(uInt8 address);
vector<Entry>::const_iterator begin() const { iterator begin() const {
return myEntries.begin(); return myEntries.begin();
} }
vector<Entry>::const_iterator end() const { iterator end() const {
return (mySize < myEntries.size()) ? (myEntries.begin() + mySize) : myEntries.end(); return (mySize < myEntries.size()) ? (myEntries.begin() + mySize) : myEntries.end();
} }

View File

@ -202,7 +202,6 @@ void Missile::tick(uInt8 hclock)
myEffectiveWidth = myWidth; myEffectiveWidth = myWidth;
break; break;
} }
} }
if (++myRenderCounter >= (myIsMoving ? myEffectiveWidth : myWidth)) myIsRendering = false; if (++myRenderCounter >= (myIsMoving ? myEffectiveWidth : myWidth)) myIsRendering = false;

View File

@ -425,7 +425,6 @@ bool TIA::poke(uInt16 address, uInt8 value)
updateEmulation(); updateEmulation();
address &= 0x3F; address &= 0x3F;
myShadowRegisters[address] = value;
switch (address) switch (address)
{ {
@ -440,14 +439,17 @@ bool TIA::poke(uInt16 address, uInt8 value)
mySystem->incrementCycles(mySubClock / 3); mySystem->incrementCycles(mySubClock / 3);
mySubClock %= 3; mySubClock %= 3;
} }
myShadowRegisters[address] = value;
break; break;
case RSYNC: case RSYNC:
applyRsync(); applyRsync();
myShadowRegisters[address] = value;
break; break;
case VSYNC: case VSYNC:
myFrameManager.setVsync(value & 0x02); myFrameManager.setVsync(value & 0x02);
myShadowRegisters[address] = value;
break; break;
case VBLANK: case VBLANK:
@ -465,21 +467,27 @@ bool TIA::poke(uInt16 address, uInt8 value)
// FIXME - rework this when we add the new sound core // FIXME - rework this when we add the new sound core
case AUDV0: case AUDV0:
mySound.set(address, value, mySystem->cycles()); mySound.set(address, value, mySystem->cycles());
myShadowRegisters[address] = value;
break; break;
case AUDV1: case AUDV1:
mySound.set(address, value, mySystem->cycles()); mySound.set(address, value, mySystem->cycles());
myShadowRegisters[address] = value;
break; break;
case AUDF0: case AUDF0:
mySound.set(address, value, mySystem->cycles()); mySound.set(address, value, mySystem->cycles());
myShadowRegisters[address] = value;
break; break;
case AUDF1: case AUDF1:
mySound.set(address, value, mySystem->cycles()); mySound.set(address, value, mySystem->cycles());
myShadowRegisters[address] = value;
break; break;
case AUDC0: case AUDC0:
mySound.set(address, value, mySystem->cycles()); mySound.set(address, value, mySystem->cycles());
myShadowRegisters[address] = value;
break; break;
case AUDC1: case AUDC1:
mySound.set(address, value, mySystem->cycles()); mySound.set(address, value, mySystem->cycles());
myShadowRegisters[address] = value;
break; break;
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -490,6 +498,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
case COLUBK: case COLUBK:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myBackground.setColor(value & 0xFE); myBackground.setColor(value & 0xFE);
myShadowRegisters[address] = value;
break; break;
case COLUP0: case COLUP0:
@ -498,6 +507,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
myPlayfield.setColorP0(value); myPlayfield.setColorP0(value);
myMissile0.setColor(value); myMissile0.setColor(value);
myPlayer0.setColor(value); myPlayer0.setColor(value);
myShadowRegisters[address] = value;
break; break;
case COLUP1: case COLUP1:
@ -506,6 +516,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
myPlayfield.setColorP1(value); myPlayfield.setColorP1(value);
myMissile1.setColor(value); myMissile1.setColor(value);
myPlayer1.setColor(value); myPlayer1.setColor(value);
myShadowRegisters[address] = value;
break; break;
case CTRLPF: case CTRLPF:
@ -514,6 +525,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
(value & 0x02) ? Priority::score : Priority::normal; (value & 0x02) ? Priority::score : Priority::normal;
myPlayfield.ctrlpf(value); myPlayfield.ctrlpf(value);
myBall.ctrlpf(value); myBall.ctrlpf(value);
myShadowRegisters[address] = value;
break; break;
case COLUPF: case COLUPF:
@ -521,6 +533,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
value &= 0xFE; value &= 0xFE;
myPlayfield.setColor(value); myPlayfield.setColor(value);
myBall.setColor(value); myBall.setColor(value);
myShadowRegisters[address] = value;
break; break;
case PF0: case PF0:
@ -567,33 +580,39 @@ bool TIA::poke(uInt16 address, uInt8 value)
case RESM0: case RESM0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile0.resm(resxCounter(), myHstate == HState::blank); myMissile0.resm(resxCounter(), myHstate == HState::blank);
myShadowRegisters[address] = value;
break; break;
case RESM1: case RESM1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile1.resm(resxCounter(), myHstate == HState::blank); myMissile1.resm(resxCounter(), myHstate == HState::blank);
myShadowRegisters[address] = value;
break; break;
case RESMP0: case RESMP0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile0.resmp(value, myPlayer0); myMissile0.resmp(value, myPlayer0);
myShadowRegisters[address] = value;
break; break;
case RESMP1: case RESMP1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile1.resmp(value, myPlayer1); myMissile1.resmp(value, myPlayer1);
myShadowRegisters[address] = value;
break; break;
case NUSIZ0: case NUSIZ0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile0.nusiz(value); myMissile0.nusiz(value);
myPlayer0.nusiz(value, myHstate == HState::blank); myPlayer0.nusiz(value, myHstate == HState::blank);
myShadowRegisters[address] = value;
break; break;
case NUSIZ1: case NUSIZ1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myMissile1.nusiz(value); myMissile1.nusiz(value);
myPlayer1.nusiz(value, myHstate == HState::blank); myPlayer1.nusiz(value, myHstate == HState::blank);
myShadowRegisters[address] = value;
break; break;
case HMM0: case HMM0:
@ -636,11 +655,13 @@ bool TIA::poke(uInt16 address, uInt8 value)
case RESP0: case RESP0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myPlayer0.resp(resxCounter()); myPlayer0.resp(resxCounter());
myShadowRegisters[address] = value;
break; break;
case RESP1: case RESP1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myPlayer1.resp(resxCounter()); myPlayer1.resp(resxCounter());
myShadowRegisters[address] = value;
break; break;
case REFP0: case REFP0:
@ -654,11 +675,13 @@ bool TIA::poke(uInt16 address, uInt8 value)
case VDELP0: case VDELP0:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myPlayer0.vdelp(value); myPlayer0.vdelp(value);
myShadowRegisters[address] = value;
break; break;
case VDELP1: case VDELP1:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myPlayer1.vdelp(value); myPlayer1.vdelp(value);
myShadowRegisters[address] = value;
break; break;
case HMP0: case HMP0:
@ -676,11 +699,13 @@ bool TIA::poke(uInt16 address, uInt8 value)
case RESBL: case RESBL:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myBall.resbl(resxCounter()); myBall.resbl(resxCounter());
myShadowRegisters[address] = value;
break; break;
case VDELBL: case VDELBL:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myBall.vdelbl(value); myBall.vdelbl(value);
myShadowRegisters[address] = value;
break; break;
case HMBL: case HMBL:
@ -690,6 +715,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
case CXCLR: case CXCLR:
myLinesSinceChange = 0; myLinesSinceChange = 0;
myCollisionMask = 0; myCollisionMask = 0;
myShadowRegisters[address] = value;
break; break;
} }
@ -911,7 +937,7 @@ void TIA::updateScanlineByTrace(int target)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
uInt8 TIA::lastValueWrittenToRegister(uInt8 reg) const uInt8 TIA::registerValue(uInt8 reg) const
{ {
return reg < 64 ? myShadowRegisters[reg] : 0; return reg < 64 ? myShadowRegisters[reg] : 0;
} }
@ -1042,10 +1068,21 @@ void TIA::tickHframe()
myPlayfield.tick(x); myPlayfield.tick(x);
if (lineNotCached) // Render sprites
renderSprites(); if (lineNotCached) {
myPlayer0.render();
myPlayer1.render();
myMissile0.render(myHctr);
myMissile1.render(myHctr);
myBall.render();
}
tickSprites(); // Tick sprites
myMissile0.tick(myHctr);
myMissile1.tick(myHctr);
myPlayer0.tick();
myPlayer1.tick();
myBall.tick();
if (myFrameManager.isRendering()) if (myFrameManager.isRendering())
renderPixel(x, y, lineNotCached); renderPixel(x, y, lineNotCached);
@ -1064,26 +1101,6 @@ void TIA::applyRsync()
myHctr = 225; myHctr = 225;
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TIA::renderSprites()
{
myPlayer0.render();
myPlayer1.render();
myMissile0.render(myHctr);
myMissile1.render(myHctr);
myBall.render();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TIA::tickSprites()
{
myMissile0.tick(myHctr);
myMissile1.tick(myHctr);
myPlayer0.tick();
myPlayer1.tick();
myBall.tick();
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TIA::nextLine() void TIA::nextLine()
{ {
@ -1178,6 +1195,9 @@ void TIA::clearHmoveComb()
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void TIA::delayedWrite(uInt8 address, uInt8 value) void TIA::delayedWrite(uInt8 address, uInt8 value)
{ {
if (address < 64)
myShadowRegisters[address] = value;
switch (address) switch (address)
{ {
case VBLANK: case VBLANK:

View File

@ -312,7 +312,7 @@ class TIA : public Device, public PlayfieldPositionProvider
/** /**
Retrieve the last value written to a certain register Retrieve the last value written to a certain register
*/ */
uInt8 lastValueWrittenToRegister(uInt8 reg) const; uInt8 registerValue(uInt8 reg) const;
/** /**
Get the current x value Get the current x value
@ -349,21 +349,23 @@ class TIA : public Device, public PlayfieldPositionProvider
enum Priority {pfp, score, normal}; enum Priority {pfp, score, normal};
enum FixedColors { enum FixedColors {
P0ColorNTSC = 0x30, P0ColorNTSC = 0x30, // red
P1ColorNTSC = 0x16, M0ColorNTSC = 0x38, // orange
M0ColorNTSC = 0x38, P1ColorNTSC = 0x1c, // yellow
M1ColorNTSC = 0x12, M1ColorNTSC = 0xc4, // green
BLColorNTSC = 0x7e, BLColorNTSC = 0x9e, // blue
PFColorNTSC = 0x76, PFColorNTSC = 0x66, // purple
BKColorNTSC = 0x0a, BKColorNTSC = 0x0a, // grey
P0ColorPAL = 0x62,
P1ColorPAL = 0x26, P0ColorPAL = 0x62, // red
M0ColorPAL = 0x68, M0ColorPAL = 0x4a, // orange
M1ColorPAL = 0x2e, P1ColorPAL = 0x2e, // yellow
BLColorPAL = 0xde, M1ColorPAL = 0x34, // green
PFColorPAL = 0xd8, BLColorPAL = 0xbc, // blue
BKColorPAL = 0x1c, PFColorPAL = 0xa6, // purple
HBLANKColor = 0x0e BKColorPAL = 0x0a, // grey
HBLANKColor = 0x0e // white
}; };
private: private:
@ -386,10 +388,6 @@ class TIA : public Device, public PlayfieldPositionProvider
void updateCollision(); void updateCollision();
void renderSprites();
void tickSprites();
void renderPixel(uInt32 x, uInt32 y, bool lineNotCached); void renderPixel(uInt32 x, uInt32 y, bool lineNotCached);
void clearHmoveComb(); void clearHmoveComb();

View File

@ -13,8 +13,8 @@ MODULE_OBJS := \
src/emucore/tia/Background.o \ src/emucore/tia/Background.o \
src/emucore/tia/LatchedInput.o \ src/emucore/tia/LatchedInput.o \
src/emucore/tia/PaddleReader.o \ src/emucore/tia/PaddleReader.o \
src/emucore/tia/VblankManager.o src/emucore/tia/VblankManager.o \
src/emucore/tia/DelayQueueIterator.o
MODULE_DIRS += \ MODULE_DIRS += \
src/emucore/tia src/emucore/tia

View File

@ -40,7 +40,7 @@ class ComboDialog : public Dialog
void saveConfig() override; void saveConfig() override;
void setDefaults() override; void setDefaults() override;
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id) override; void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
private: private:
Event::Type myComboEvent; Event::Type myComboEvent;

View File

@ -61,13 +61,19 @@ void EditableWidget::setText(const string& str, bool)
setDirty(); setDirty();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void EditableWidget::setEditable(bool editable) void EditableWidget::setEditable(bool editable, bool hiliteBG)
{ {
_editable = editable; _editable = editable;
if(_editable) if(_editable)
{
setFlags(WIDGET_WANTS_RAWDATA | WIDGET_RETAIN_FOCUS); setFlags(WIDGET_WANTS_RAWDATA | WIDGET_RETAIN_FOCUS);
_bgcolor = kWidColor;
}
else else
{
clearFlags(WIDGET_WANTS_RAWDATA | WIDGET_RETAIN_FOCUS); clearFlags(WIDGET_WANTS_RAWDATA | WIDGET_RETAIN_FOCUS);
_bgcolor = hiliteBG ? kBGColorLo : kWidColor;
}
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -52,13 +52,13 @@ class EditableWidget : public Widget, public CommandSender
const string& getText() const { return _editString; } const string& getText() const { return _editString; }
bool isEditable() const { return _editable; } bool isEditable() const { return _editable; }
void setEditable(bool editable); virtual void setEditable(bool editable, bool hiliteBG = false);
bool handleText(char text) override; bool handleText(char text) override;
bool handleKeyDown(StellaKey key, StellaMod mod) override; bool handleKeyDown(StellaKey key, StellaMod mod) override;
// We only want to focus this widget when we can edit its contents // We only want to focus this widget when we can edit its contents
virtual bool wantsFocus() const { return _editable; } bool wantsFocus() const override { return _editable; }
// Set filter used to test whether a character can be inserted // Set filter used to test whether a character can be inserted
void setTextFilter(const TextFilter& filter) { _filter = filter; } void setTextFilter(const TextFilter& filter) { _filter = filter; }

View File

@ -189,11 +189,6 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent,
setListFilters(); setListFilters();
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
LauncherDialog::~LauncherDialog()
{
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
const string& LauncherDialog::selectedRomMD5() const string& LauncherDialog::selectedRomMD5()
{ {

View File

@ -55,7 +55,7 @@ class LauncherDialog : public Dialog
public: public:
LauncherDialog(OSystem& osystem, DialogContainer& parent, LauncherDialog(OSystem& osystem, DialogContainer& parent,
int x, int y, int w, int h); int x, int y, int w, int h);
virtual ~LauncherDialog(); virtual ~LauncherDialog() = default;
/** /**
Get MD5sum for the currently selected file Get MD5sum for the currently selected file

View File

@ -58,7 +58,7 @@ class PopUpWidget : public Widget, public CommandSender
const string& getSelectedName() const { return myMenu->getSelectedName(); } const string& getSelectedName() const { return myMenu->getSelectedName(); }
const Variant& getSelectedTag() const { return myMenu->getSelectedTag(); } const Variant& getSelectedTag() const { return myMenu->getSelectedTag(); }
bool wantsFocus() { return true; } bool wantsFocus() const override { return true; }
protected: protected:
void handleMouseDown(int x, int y, int button, int clickCount) override; void handleMouseDown(int x, int y, int button, int clickCount) override;

View File

@ -29,6 +29,7 @@ class StringListWidget : public ListWidget
virtual ~StringListWidget() = default; virtual ~StringListWidget() = default;
void setList(const StringList& list); void setList(const StringList& list);
bool wantsFocus() const override { return true; }
protected: protected:
void drawWidget(bool hilite) override; void drawWidget(bool hilite) override;

View File

@ -486,8 +486,15 @@ void CheckboxWidget::handleMouseUp(int x, int y, int button, int clickCount)
void CheckboxWidget::setEditable(bool editable) void CheckboxWidget::setEditable(bool editable)
{ {
_editable = editable; _editable = editable;
if(!_editable) if(_editable)
{
_bgcolor = kWidColor;
}
else
{
_bgcolor = kBGColorLo;
setFill(CheckboxWidget::Inactive); setFill(CheckboxWidget::Inactive);
}
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -96,7 +96,7 @@ class Widget : public GuiObject
bool isEnabled() const { return _flags & WIDGET_ENABLED; } bool isEnabled() const { return _flags & WIDGET_ENABLED; }
bool isVisible() const override { return !(_flags & WIDGET_INVISIBLE); } bool isVisible() const override { return !(_flags & WIDGET_INVISIBLE); }
bool wantsFocus() const { return _flags & WIDGET_RETAIN_FOCUS; } virtual bool wantsFocus() const { return _flags & WIDGET_RETAIN_FOCUS; }
bool wantsTab() const { return _flags & WIDGET_WANTS_TAB; } bool wantsTab() const { return _flags & WIDGET_WANTS_TAB; }
bool wantsRaw() const { return _flags & WIDGET_WANTS_RAWDATA; } bool wantsRaw() const { return _flags & WIDGET_WANTS_RAWDATA; }

View File

@ -537,6 +537,11 @@
DCE5CDE31BA10024005CD08A /* RiotRamWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCE5CDE11BA10024005CD08A /* RiotRamWidget.cxx */; }; DCE5CDE31BA10024005CD08A /* RiotRamWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCE5CDE11BA10024005CD08A /* RiotRamWidget.cxx */; };
DCE5CDE41BA10024005CD08A /* RiotRamWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE5CDE21BA10024005CD08A /* RiotRamWidget.hxx */; }; DCE5CDE41BA10024005CD08A /* RiotRamWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE5CDE21BA10024005CD08A /* RiotRamWidget.hxx */; };
DCE8B1871E7E03B300189864 /* FrameLayout.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE8B1861E7E03B300189864 /* FrameLayout.hxx */; }; DCE8B1871E7E03B300189864 /* FrameLayout.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE8B1861E7E03B300189864 /* FrameLayout.hxx */; };
DCEC58581E945125002F0246 /* DelayQueueWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCEC58561E945125002F0246 /* DelayQueueWidget.cxx */; };
DCEC58591E945125002F0246 /* DelayQueueWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCEC58571E945125002F0246 /* DelayQueueWidget.hxx */; };
DCEC585D1E945175002F0246 /* DelayQueueIterator.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCEC585A1E945175002F0246 /* DelayQueueIterator.cxx */; };
DCEC585E1E945175002F0246 /* DelayQueueIterator.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCEC585B1E945175002F0246 /* DelayQueueIterator.hxx */; };
DCEC585F1E945175002F0246 /* PlayfieldPositionProvider.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCEC585C1E945175002F0246 /* PlayfieldPositionProvider.hxx */; };
DCEECE560B5E5E540021D754 /* Cart0840.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCEECE540B5E5E540021D754 /* Cart0840.cxx */; }; DCEECE560B5E5E540021D754 /* Cart0840.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCEECE540B5E5E540021D754 /* Cart0840.cxx */; };
DCEECE570B5E5E540021D754 /* Cart0840.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCEECE550B5E5E540021D754 /* Cart0840.hxx */; }; DCEECE570B5E5E540021D754 /* Cart0840.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCEECE550B5E5E540021D754 /* Cart0840.hxx */; };
DCF3A6E71DFC75E3008A8AF3 /* Background.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCF3A6CD1DFC75E3008A8AF3 /* Background.cxx */; }; DCF3A6E71DFC75E3008A8AF3 /* Background.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCF3A6CD1DFC75E3008A8AF3 /* Background.cxx */; };
@ -1163,6 +1168,11 @@
DCE5CDE11BA10024005CD08A /* RiotRamWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RiotRamWidget.cxx; path = ../debugger/gui/RiotRamWidget.cxx; sourceTree = "<group>"; }; DCE5CDE11BA10024005CD08A /* RiotRamWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RiotRamWidget.cxx; path = ../debugger/gui/RiotRamWidget.cxx; sourceTree = "<group>"; };
DCE5CDE21BA10024005CD08A /* RiotRamWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RiotRamWidget.hxx; path = ../debugger/gui/RiotRamWidget.hxx; sourceTree = "<group>"; }; DCE5CDE21BA10024005CD08A /* RiotRamWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = RiotRamWidget.hxx; path = ../debugger/gui/RiotRamWidget.hxx; sourceTree = "<group>"; };
DCE8B1861E7E03B300189864 /* FrameLayout.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = FrameLayout.hxx; path = ../emucore/tia/FrameLayout.hxx; sourceTree = "<group>"; }; DCE8B1861E7E03B300189864 /* FrameLayout.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = FrameLayout.hxx; path = ../emucore/tia/FrameLayout.hxx; sourceTree = "<group>"; };
DCEC58561E945125002F0246 /* DelayQueueWidget.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DelayQueueWidget.cxx; path = ../debugger/gui/DelayQueueWidget.cxx; sourceTree = "<group>"; };
DCEC58571E945125002F0246 /* DelayQueueWidget.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DelayQueueWidget.hxx; path = ../debugger/gui/DelayQueueWidget.hxx; sourceTree = "<group>"; };
DCEC585A1E945175002F0246 /* DelayQueueIterator.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DelayQueueIterator.cxx; path = ../emucore/tia/DelayQueueIterator.cxx; sourceTree = "<group>"; };
DCEC585B1E945175002F0246 /* DelayQueueIterator.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = DelayQueueIterator.hxx; path = ../emucore/tia/DelayQueueIterator.hxx; sourceTree = "<group>"; };
DCEC585C1E945175002F0246 /* PlayfieldPositionProvider.hxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = PlayfieldPositionProvider.hxx; path = ../emucore/tia/PlayfieldPositionProvider.hxx; sourceTree = "<group>"; };
DCEECE540B5E5E540021D754 /* Cart0840.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Cart0840.cxx; path = ../emucore/Cart0840.cxx; sourceTree = SOURCE_ROOT; }; DCEECE540B5E5E540021D754 /* Cart0840.cxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Cart0840.cxx; path = ../emucore/Cart0840.cxx; sourceTree = SOURCE_ROOT; };
DCEECE550B5E5E540021D754 /* Cart0840.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Cart0840.hxx; path = ../emucore/Cart0840.hxx; sourceTree = SOURCE_ROOT; }; DCEECE550B5E5E540021D754 /* Cart0840.hxx */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.h; name = Cart0840.hxx; path = ../emucore/Cart0840.hxx; sourceTree = SOURCE_ROOT; };
DCF3A6CD1DFC75E3008A8AF3 /* Background.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Background.cxx; path = ../emucore/tia/Background.cxx; sourceTree = "<group>"; }; DCF3A6CD1DFC75E3008A8AF3 /* Background.cxx */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Background.cxx; path = ../emucore/tia/Background.cxx; sourceTree = "<group>"; };
@ -1427,6 +1437,8 @@
2D20F9EB08C603EC00A73076 /* DataGridWidget.hxx */, 2D20F9EB08C603EC00A73076 /* DataGridWidget.hxx */,
2D20F9EC08C603EC00A73076 /* DebuggerDialog.cxx */, 2D20F9EC08C603EC00A73076 /* DebuggerDialog.cxx */,
2D20F9ED08C603EC00A73076 /* DebuggerDialog.hxx */, 2D20F9ED08C603EC00A73076 /* DebuggerDialog.hxx */,
DCEC58561E945125002F0246 /* DelayQueueWidget.cxx */,
DCEC58571E945125002F0246 /* DelayQueueWidget.hxx */,
DCCF4AFE14BA27EB00814FAB /* DrivingWidget.cxx */, DCCF4AFE14BA27EB00814FAB /* DrivingWidget.cxx */,
DCCF4AFF14BA27EB00814FAB /* DrivingWidget.hxx */, DCCF4AFF14BA27EB00814FAB /* DrivingWidget.hxx */,
DCCF4ADA14B9433100814FAB /* GenesisWidget.cxx */, DCCF4ADA14B9433100814FAB /* GenesisWidget.cxx */,
@ -1944,6 +1956,8 @@
DCF3A6D01DFC75E3008A8AF3 /* Ball.hxx */, DCF3A6D01DFC75E3008A8AF3 /* Ball.hxx */,
DCF3A6D11DFC75E3008A8AF3 /* DelayQueue.cxx */, DCF3A6D11DFC75E3008A8AF3 /* DelayQueue.cxx */,
DCF3A6D21DFC75E3008A8AF3 /* DelayQueue.hxx */, DCF3A6D21DFC75E3008A8AF3 /* DelayQueue.hxx */,
DCEC585A1E945175002F0246 /* DelayQueueIterator.cxx */,
DCEC585B1E945175002F0246 /* DelayQueueIterator.hxx */,
DCF3A6D31DFC75E3008A8AF3 /* DelayQueueMember.cxx */, DCF3A6D31DFC75E3008A8AF3 /* DelayQueueMember.cxx */,
DCF3A6D41DFC75E3008A8AF3 /* DelayQueueMember.hxx */, DCF3A6D41DFC75E3008A8AF3 /* DelayQueueMember.hxx */,
DCF3A6D51DFC75E3008A8AF3 /* DrawCounterDecodes.cxx */, DCF3A6D51DFC75E3008A8AF3 /* DrawCounterDecodes.cxx */,
@ -1961,6 +1975,7 @@
DCF3A6E11DFC75E3008A8AF3 /* Player.hxx */, DCF3A6E11DFC75E3008A8AF3 /* Player.hxx */,
DCF3A6E21DFC75E3008A8AF3 /* Playfield.cxx */, DCF3A6E21DFC75E3008A8AF3 /* Playfield.cxx */,
DCF3A6E31DFC75E3008A8AF3 /* Playfield.hxx */, DCF3A6E31DFC75E3008A8AF3 /* Playfield.hxx */,
DCEC585C1E945175002F0246 /* PlayfieldPositionProvider.hxx */,
DCF3A6E41DFC75E3008A8AF3 /* TIA.cxx */, DCF3A6E41DFC75E3008A8AF3 /* TIA.cxx */,
DCF3A6E51DFC75E3008A8AF3 /* TIA.hxx */, DCF3A6E51DFC75E3008A8AF3 /* TIA.hxx */,
DC72B2201E356F4F009056D0 /* VblankManager.cxx */, DC72B2201E356F4F009056D0 /* VblankManager.cxx */,
@ -2045,6 +2060,7 @@
2D91740E09BA90380026E9FF /* ListWidget.hxx in Headers */, 2D91740E09BA90380026E9FF /* ListWidget.hxx in Headers */,
2D91740F09BA90380026E9FF /* Menu.hxx in Headers */, 2D91740F09BA90380026E9FF /* Menu.hxx in Headers */,
2D91741009BA90380026E9FF /* OptionsDialog.hxx in Headers */, 2D91741009BA90380026E9FF /* OptionsDialog.hxx in Headers */,
DCEC58591E945125002F0246 /* DelayQueueWidget.hxx in Headers */,
2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */, 2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */,
2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */, 2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */,
2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */, 2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */,
@ -2111,6 +2127,7 @@
DC47455609C34BFA00EDDA3A /* BankRomCheat.hxx in Headers */, DC47455609C34BFA00EDDA3A /* BankRomCheat.hxx in Headers */,
DC47455709C34BFA00EDDA3A /* Cheat.hxx in Headers */, DC47455709C34BFA00EDDA3A /* Cheat.hxx in Headers */,
DC47455909C34BFA00EDDA3A /* CheatCodeDialog.hxx in Headers */, DC47455909C34BFA00EDDA3A /* CheatCodeDialog.hxx in Headers */,
DCEC585F1E945175002F0246 /* PlayfieldPositionProvider.hxx in Headers */,
DC47455B09C34BFA00EDDA3A /* CheatManager.hxx in Headers */, DC47455B09C34BFA00EDDA3A /* CheatManager.hxx in Headers */,
DC47455D09C34BFA00EDDA3A /* CheetahCheat.hxx in Headers */, DC47455D09C34BFA00EDDA3A /* CheetahCheat.hxx in Headers */,
DC47455F09C34BFA00EDDA3A /* RamCheat.hxx in Headers */, DC47455F09C34BFA00EDDA3A /* RamCheat.hxx in Headers */,
@ -2121,6 +2138,7 @@
DCE3BBFA0C95CEDC00A671DF /* RomInfoWidget.hxx in Headers */, DCE3BBFA0C95CEDC00A671DF /* RomInfoWidget.hxx in Headers */,
DC07A3C90CAD738A009B4BC9 /* StateManager.hxx in Headers */, DC07A3C90CAD738A009B4BC9 /* StateManager.hxx in Headers */,
DC0984860D3985160073C852 /* CartSB.hxx in Headers */, DC0984860D3985160073C852 /* CartSB.hxx in Headers */,
DCEC585E1E945175002F0246 /* DelayQueueIterator.hxx in Headers */,
DCA23AEA0D75B22500F77B33 /* CartX07.hxx in Headers */, DCA23AEA0D75B22500F77B33 /* CartX07.hxx in Headers */,
DC4613680D92C03600D8DAB9 /* RomAuditDialog.hxx in Headers */, DC4613680D92C03600D8DAB9 /* RomAuditDialog.hxx in Headers */,
DC487FB70DA5350900E12499 /* AtariVox.hxx in Headers */, DC487FB70DA5350900E12499 /* AtariVox.hxx in Headers */,
@ -2307,7 +2325,7 @@
29B97313FDCFA39411CA2CEA /* Project object */ = { 29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 0700; LastUpgradeCheck = 0830;
ORGANIZATIONNAME = "Stella-emu"; ORGANIZATIONNAME = "Stella-emu";
}; };
buildConfigurationList = 2D91752109BA903B0026E9FF /* Build configuration list for PBXProject "stella" */; buildConfigurationList = 2D91752109BA903B0026E9FF /* Build configuration list for PBXProject "stella" */;
@ -2435,6 +2453,7 @@
DC3EE86E1E2C0E6D00905161 /* zutil.c in Sources */, DC3EE86E1E2C0E6D00905161 /* zutil.c in Sources */,
CFE3F60B1E84A9A200A8204E /* CartBUSWidget.cxx in Sources */, CFE3F60B1E84A9A200A8204E /* CartBUSWidget.cxx in Sources */,
DC1B2EC51E50036100F62837 /* AtariMouse.cxx in Sources */, DC1B2EC51E50036100F62837 /* AtariMouse.cxx in Sources */,
DCEC58581E945125002F0246 /* DelayQueueWidget.cxx in Sources */,
2D9174BF09BA90380026E9FF /* FSNode.cxx in Sources */, 2D9174BF09BA90380026E9FF /* FSNode.cxx in Sources */,
DCF3A6FE1DFC75E3008A8AF3 /* TIA.cxx in Sources */, DCF3A6FE1DFC75E3008A8AF3 /* TIA.cxx in Sources */,
2D9174C009BA90380026E9FF /* OSystem.cxx in Sources */, 2D9174C009BA90380026E9FF /* OSystem.cxx in Sources */,
@ -2522,6 +2541,7 @@
DCF7B0DD10A762FC007A2870 /* CartF0.cxx in Sources */, DCF7B0DD10A762FC007A2870 /* CartF0.cxx in Sources */,
DCF7B0DF10A762FC007A2870 /* CartFA.cxx in Sources */, DCF7B0DF10A762FC007A2870 /* CartFA.cxx in Sources */,
DCC527D210B9DA19005E1287 /* M6502.cxx in Sources */, DCC527D210B9DA19005E1287 /* M6502.cxx in Sources */,
DCEC585D1E945175002F0246 /* DelayQueueIterator.cxx in Sources */,
DC3EE86B1E2C0E6D00905161 /* uncompr.c in Sources */, DC3EE86B1E2C0E6D00905161 /* uncompr.c in Sources */,
DCC527D610B9DA19005E1287 /* System.cxx in Sources */, DCC527D610B9DA19005E1287 /* System.cxx in Sources */,
DC6B2BA411037FF200F199A7 /* CartDebug.cxx in Sources */, DC6B2BA411037FF200F199A7 /* CartDebug.cxx in Sources */,
@ -2798,23 +2818,29 @@
2D91752209BA903B0026E9FF /* Development */ = { 2D91752209BA903B0026E9FF /* Development */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO; CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
., .,
"$(HOME)/Library/Frameworks", "$(HOME)/Library/Frameworks",
); );
GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_CPP_RTTI = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0; GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = ""; GCC_VERSION = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -2828,66 +2854,79 @@
INSTALL_PATH = "@rpath"; INSTALL_PATH = "@rpath";
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7; MACOSX_DEPLOYMENT_TARGET = 10.7;
ONLY_ACTIVE_ARCH = NO;
SDKROOT = macosx;
VALID_ARCHS = x86_64;
WARNING_CFLAGS = "-Wall";
};
name = Development;
};
2D91752309BA903B0026E9FF /* Deployment */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO;
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = (
.,
"$(HOME)/Library/Frameworks",
);
GCC_ENABLE_CPP_RTTI = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 3;
GCC_VERSION = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INSTALL_PATH = "@rpath";
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = macosx; SDKROOT = macosx;
VALID_ARCHS = x86_64; VALID_ARCHS = x86_64;
WARNING_CFLAGS = "-Wall"; WARNING_CFLAGS = "-Wall";
}; };
name = Development;
};
2D91752309BA903B0026E9FF /* Deployment */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = (
.,
"$(HOME)/Library/Frameworks",
);
GCC_ENABLE_CPP_RTTI = NO;
GCC_OPTIMIZATION_LEVEL = 3;
GCC_VERSION = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INSTALL_PATH = "@rpath";
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.7;
SDKROOT = macosx;
VALID_ARCHS = x86_64;
WARNING_CFLAGS = "-Wall";
};
name = Deployment; name = Deployment;
}; };
2D91752409BA903B0026E9FF /* Default */ = { 2D91752409BA903B0026E9FF /* Default */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_CXX_LANGUAGE_STANDARD = "c++0x"; CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO; CLANG_WARN__EXIT_TIME_DESTRUCTORS = NO;
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
FRAMEWORK_SEARCH_PATHS = /Library/Frameworks; FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
GCC_ENABLE_CPP_RTTI = NO; GCC_ENABLE_CPP_RTTI = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_VERSION = ""; GCC_VERSION = "";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES;

View File

@ -22,27 +22,28 @@
<ProjectGuid>{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}</ProjectGuid> <ProjectGuid>{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}</ProjectGuid>
<RootNamespace>Stella</RootNamespace> <RootNamespace>Stella</RootNamespace>
<Keyword>Win32Proj</Keyword> <Keyword>Win32Proj</Keyword>
<WindowsTargetPlatformVersion>7.0</WindowsTargetPlatformVersion>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset> <PlatformToolset>v141_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset> <PlatformToolset>v141_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset> <PlatformToolset>v141_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<CharacterSet>MultiByte</CharacterSet> <CharacterSet>MultiByte</CharacterSet>
<PlatformToolset>v140_xp</PlatformToolset> <PlatformToolset>v141_xp</PlatformToolset>
</PropertyGroup> </PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings"> <ImportGroup Label="ExtensionSettings">
@ -282,6 +283,7 @@
<ClCompile Include="..\debugger\gui\CartUAWidget.cxx" /> <ClCompile Include="..\debugger\gui\CartUAWidget.cxx" />
<ClCompile Include="..\debugger\gui\CartWDWidget.cxx" /> <ClCompile Include="..\debugger\gui\CartWDWidget.cxx" />
<ClCompile Include="..\debugger\gui\CartX07Widget.cxx" /> <ClCompile Include="..\debugger\gui\CartX07Widget.cxx" />
<ClCompile Include="..\debugger\gui\DelayQueueWidget.cxx" />
<ClCompile Include="..\debugger\gui\DrivingWidget.cxx" /> <ClCompile Include="..\debugger\gui\DrivingWidget.cxx" />
<ClCompile Include="..\debugger\gui\GenesisWidget.cxx" /> <ClCompile Include="..\debugger\gui\GenesisWidget.cxx" />
<ClCompile Include="..\debugger\gui\JoystickWidget.cxx" /> <ClCompile Include="..\debugger\gui\JoystickWidget.cxx" />
@ -315,6 +317,7 @@
<ClCompile Include="..\emucore\tia\Background.cxx" /> <ClCompile Include="..\emucore\tia\Background.cxx" />
<ClCompile Include="..\emucore\tia\Ball.cxx" /> <ClCompile Include="..\emucore\tia\Ball.cxx" />
<ClCompile Include="..\emucore\tia\DelayQueue.cxx" /> <ClCompile Include="..\emucore\tia\DelayQueue.cxx" />
<ClCompile Include="..\emucore\tia\DelayQueueIterator.cxx" />
<ClCompile Include="..\emucore\tia\DelayQueueMember.cxx" /> <ClCompile Include="..\emucore\tia\DelayQueueMember.cxx" />
<ClCompile Include="..\emucore\tia\DrawCounterDecodes.cxx" /> <ClCompile Include="..\emucore\tia\DrawCounterDecodes.cxx" />
<ClCompile Include="..\emucore\tia\FrameManager.cxx" /> <ClCompile Include="..\emucore\tia\FrameManager.cxx" />
@ -558,6 +561,7 @@
<ClInclude Include="..\debugger\gui\CartWDWidget.hxx" /> <ClInclude Include="..\debugger\gui\CartWDWidget.hxx" />
<ClInclude Include="..\debugger\gui\CartX07Widget.hxx" /> <ClInclude Include="..\debugger\gui\CartX07Widget.hxx" />
<ClInclude Include="..\debugger\gui\ControllerWidget.hxx" /> <ClInclude Include="..\debugger\gui\ControllerWidget.hxx" />
<ClInclude Include="..\debugger\gui\DelayQueueWidget.hxx" />
<ClInclude Include="..\debugger\gui\DrivingWidget.hxx" /> <ClInclude Include="..\debugger\gui\DrivingWidget.hxx" />
<ClInclude Include="..\debugger\gui\GenesisWidget.hxx" /> <ClInclude Include="..\debugger\gui\GenesisWidget.hxx" />
<ClInclude Include="..\debugger\gui\JoystickWidget.hxx" /> <ClInclude Include="..\debugger\gui\JoystickWidget.hxx" />
@ -592,6 +596,7 @@
<ClInclude Include="..\emucore\tia\Background.hxx" /> <ClInclude Include="..\emucore\tia\Background.hxx" />
<ClInclude Include="..\emucore\tia\Ball.hxx" /> <ClInclude Include="..\emucore\tia\Ball.hxx" />
<ClInclude Include="..\emucore\tia\DelayQueue.hxx" /> <ClInclude Include="..\emucore\tia\DelayQueue.hxx" />
<ClInclude Include="..\emucore\tia\DelayQueueIterator.hxx" />
<ClInclude Include="..\emucore\tia\DelayQueueMember.hxx" /> <ClInclude Include="..\emucore\tia\DelayQueueMember.hxx" />
<ClInclude Include="..\emucore\tia\DrawCounterDecodes.hxx" /> <ClInclude Include="..\emucore\tia\DrawCounterDecodes.hxx" />
<ClInclude Include="..\emucore\tia\FrameLayout.hxx" /> <ClInclude Include="..\emucore\tia\FrameLayout.hxx" />

View File

@ -849,6 +849,12 @@
<ClCompile Include="..\emucore\CartCDF.cxx"> <ClCompile Include="..\emucore\CartCDF.cxx">
<Filter>Source Files\emucore</Filter> <Filter>Source Files\emucore</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\debugger\gui\DelayQueueWidget.cxx">
<Filter>Source Files\debugger</Filter>
</ClCompile>
<ClCompile Include="..\emucore\tia\DelayQueueIterator.cxx">
<Filter>Source Files\emucore\tia</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="..\common\bspf.hxx"> <ClInclude Include="..\common\bspf.hxx">
@ -1715,6 +1721,12 @@
<ClInclude Include="..\debugger\gui\CartCDFWidget.hxx"> <ClInclude Include="..\debugger\gui\CartCDFWidget.hxx">
<Filter>Header Files\debugger</Filter> <Filter>Header Files\debugger</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\debugger\gui\DelayQueueWidget.hxx">
<Filter>Header Files\debugger</Filter>
</ClInclude>
<ClInclude Include="..\emucore\tia\DelayQueueIterator.hxx">
<Filter>Header Files\emucore\tia</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="stella.ico"> <None Include="stella.ico">

View File

@ -93,8 +93,8 @@ expression: expression '+' expression { if(DEBUG_EXP) fprintf(stderr, " +"); $$
| '>' expression { if(DEBUG_EXP) fprintf(stderr, " U>"); $$ = new HiByteExpression($2); lastExp = $$; } | '>' expression { if(DEBUG_EXP) fprintf(stderr, " U>"); $$ = new HiByteExpression($2); lastExp = $$; }
| '(' expression ')' { if(DEBUG_EXP) fprintf(stderr, " ()"); $$ = $2; lastExp = $$; } | '(' expression ')' { if(DEBUG_EXP) fprintf(stderr, " ()"); $$ = $2; lastExp = $$; }
| expression '[' expression ']' { if(DEBUG_EXP) fprintf(stderr, " []"); $$ = new ByteDerefOffsetExpression($1, $3); lastExp = $$; } | expression '[' expression ']' { if(DEBUG_EXP) fprintf(stderr, " []"); $$ = new ByteDerefOffsetExpression($1, $3); lastExp = $$; }
| NUMBER { if(DEBUG_EXP) fprintf(stderr, " %d", $1); $$ = new ConstExpression($1); lastExp = $$; } | NUMBER { if(DEBUG_EXP) fprintf(stderr, "const %d", $1); $$ = new ConstExpression($1); lastExp = $$; }
| EQUATE { if(DEBUG_EXP) fprintf(stderr, " %s", $1); $$ = new EquateExpression($1); lastExp = $$; } | EQUATE { if(DEBUG_EXP) fprintf(stderr, "equate %s", $1); $$ = new EquateExpression($1); lastExp = $$; }
| CPU_METHOD { if(DEBUG_EXP) fprintf(stderr, " (CpuMethod)"); $$ = new CpuMethodExpression($1); lastExp = $$; } | CPU_METHOD { if(DEBUG_EXP) fprintf(stderr, " (CpuMethod)"); $$ = new CpuMethodExpression($1); lastExp = $$; }
| CART_METHOD { if(DEBUG_EXP) fprintf(stderr, " (CartMethod)"); $$ = new CartMethodExpression($1); lastExp = $$; } | CART_METHOD { if(DEBUG_EXP) fprintf(stderr, " (CartMethod)"); $$ = new CartMethodExpression($1); lastExp = $$; }
| TIA_METHOD { if(DEBUG_EXP) fprintf(stderr, " (TiaMethod)"); $$ = new TiaMethodExpression($1); lastExp = $$; } | TIA_METHOD { if(DEBUG_EXP) fprintf(stderr, " (TiaMethod)"); $$ = new TiaMethodExpression($1); lastExp = $$; }

View File

@ -1,8 +1,8 @@
/* A Bison parser, made by GNU Bison 3.0.2. */ /* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison implementation for Yacc-like parsers in C /* Bison implementation for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -44,7 +44,7 @@
#define YYBISON 1 #define YYBISON 1
/* Bison version. */ /* Bison version. */
#define YYBISON_VERSION "3.0.2" #define YYBISON_VERSION "3.0.4"
/* Skeleton name. */ /* Skeleton name. */
#define YYSKELETON_NAME "yacc.c" #define YYSKELETON_NAME "yacc.c"
@ -166,7 +166,7 @@ extern int yydebug;
/* Value type. */ /* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE YYSTYPE;
union YYSTYPE union YYSTYPE
{ {
#line 28 "stella.y" /* yacc.c:355 */ #line 28 "stella.y" /* yacc.c:355 */
@ -181,6 +181,8 @@ union YYSTYPE
#line 183 "y.tab.c" /* yacc.c:355 */ #line 183 "y.tab.c" /* yacc.c:355 */
}; };
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
#endif #endif
@ -194,7 +196,7 @@ int yyparse (void);
/* Copy the second part of user declarations. */ /* Copy the second part of user declarations. */
#line 198 "y.tab.c" /* yacc.c:358 */ #line 200 "y.tab.c" /* yacc.c:358 */
#ifdef short #ifdef short
# undef short # undef short
@ -1338,215 +1340,215 @@ yyreduce:
case 2: case 2:
#line 66 "stella.y" /* yacc.c:1646 */ #line 66 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, "\ndone\n"); result.exp = (yyvsp[0].exp); } { if(DEBUG_EXP) fprintf(stderr, "\ndone\n"); result.exp = (yyvsp[0].exp); }
#line 1342 "y.tab.c" /* yacc.c:1646 */ #line 1344 "y.tab.c" /* yacc.c:1646 */
break; break;
case 3: case 3:
#line 69 "stella.y" /* yacc.c:1646 */ #line 69 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " +"); (yyval.exp) = new PlusExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " +"); (yyval.exp) = new PlusExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1348 "y.tab.c" /* yacc.c:1646 */ #line 1350 "y.tab.c" /* yacc.c:1646 */
break; break;
case 4: case 4:
#line 70 "stella.y" /* yacc.c:1646 */ #line 70 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " -"); (yyval.exp) = new MinusExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " -"); (yyval.exp) = new MinusExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1354 "y.tab.c" /* yacc.c:1646 */ #line 1356 "y.tab.c" /* yacc.c:1646 */
break; break;
case 5: case 5:
#line 71 "stella.y" /* yacc.c:1646 */ #line 71 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " *"); (yyval.exp) = new MultExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " *"); (yyval.exp) = new MultExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1360 "y.tab.c" /* yacc.c:1646 */ #line 1362 "y.tab.c" /* yacc.c:1646 */
break; break;
case 6: case 6:
#line 72 "stella.y" /* yacc.c:1646 */ #line 72 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " /"); (yyval.exp) = new DivExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " /"); (yyval.exp) = new DivExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1366 "y.tab.c" /* yacc.c:1646 */ #line 1368 "y.tab.c" /* yacc.c:1646 */
break; break;
case 7: case 7:
#line 73 "stella.y" /* yacc.c:1646 */ #line 73 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " %%"); (yyval.exp) = new ModExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " %%"); (yyval.exp) = new ModExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1372 "y.tab.c" /* yacc.c:1646 */ #line 1374 "y.tab.c" /* yacc.c:1646 */
break; break;
case 8: case 8:
#line 74 "stella.y" /* yacc.c:1646 */ #line 74 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " &"); (yyval.exp) = new BinAndExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " &"); (yyval.exp) = new BinAndExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1378 "y.tab.c" /* yacc.c:1646 */ #line 1380 "y.tab.c" /* yacc.c:1646 */
break; break;
case 9: case 9:
#line 75 "stella.y" /* yacc.c:1646 */ #line 75 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " |"); (yyval.exp) = new BinOrExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " |"); (yyval.exp) = new BinOrExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1384 "y.tab.c" /* yacc.c:1646 */ #line 1386 "y.tab.c" /* yacc.c:1646 */
break; break;
case 10: case 10:
#line 76 "stella.y" /* yacc.c:1646 */ #line 76 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " ^"); (yyval.exp) = new BinXorExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " ^"); (yyval.exp) = new BinXorExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1390 "y.tab.c" /* yacc.c:1646 */ #line 1392 "y.tab.c" /* yacc.c:1646 */
break; break;
case 11: case 11:
#line 77 "stella.y" /* yacc.c:1646 */ #line 77 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " <"); (yyval.exp) = new LessExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " <"); (yyval.exp) = new LessExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1396 "y.tab.c" /* yacc.c:1646 */ #line 1398 "y.tab.c" /* yacc.c:1646 */
break; break;
case 12: case 12:
#line 78 "stella.y" /* yacc.c:1646 */ #line 78 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " >"); (yyval.exp) = new GreaterExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " >"); (yyval.exp) = new GreaterExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1402 "y.tab.c" /* yacc.c:1646 */ #line 1404 "y.tab.c" /* yacc.c:1646 */
break; break;
case 13: case 13:
#line 79 "stella.y" /* yacc.c:1646 */ #line 79 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " >="); (yyval.exp) = new GreaterEqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " >="); (yyval.exp) = new GreaterEqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1408 "y.tab.c" /* yacc.c:1646 */ #line 1410 "y.tab.c" /* yacc.c:1646 */
break; break;
case 14: case 14:
#line 80 "stella.y" /* yacc.c:1646 */ #line 80 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " <="); (yyval.exp) = new LessEqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " <="); (yyval.exp) = new LessEqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1414 "y.tab.c" /* yacc.c:1646 */ #line 1416 "y.tab.c" /* yacc.c:1646 */
break; break;
case 15: case 15:
#line 81 "stella.y" /* yacc.c:1646 */ #line 81 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " !="); (yyval.exp) = new NotEqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " !="); (yyval.exp) = new NotEqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1420 "y.tab.c" /* yacc.c:1646 */ #line 1422 "y.tab.c" /* yacc.c:1646 */
break; break;
case 16: case 16:
#line 82 "stella.y" /* yacc.c:1646 */ #line 82 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " =="); (yyval.exp) = new EqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " =="); (yyval.exp) = new EqualsExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1426 "y.tab.c" /* yacc.c:1646 */ #line 1428 "y.tab.c" /* yacc.c:1646 */
break; break;
case 17: case 17:
#line 83 "stella.y" /* yacc.c:1646 */ #line 83 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " >>"); (yyval.exp) = new ShiftRightExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " >>"); (yyval.exp) = new ShiftRightExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1432 "y.tab.c" /* yacc.c:1646 */ #line 1434 "y.tab.c" /* yacc.c:1646 */
break; break;
case 18: case 18:
#line 84 "stella.y" /* yacc.c:1646 */ #line 84 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " <<"); (yyval.exp) = new ShiftLeftExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " <<"); (yyval.exp) = new ShiftLeftExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1438 "y.tab.c" /* yacc.c:1646 */ #line 1440 "y.tab.c" /* yacc.c:1646 */
break; break;
case 19: case 19:
#line 85 "stella.y" /* yacc.c:1646 */ #line 85 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " ||"); (yyval.exp) = new LogOrExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " ||"); (yyval.exp) = new LogOrExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1444 "y.tab.c" /* yacc.c:1646 */ #line 1446 "y.tab.c" /* yacc.c:1646 */
break; break;
case 20: case 20:
#line 86 "stella.y" /* yacc.c:1646 */ #line 86 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " &&"); (yyval.exp) = new LogAndExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " &&"); (yyval.exp) = new LogAndExpression((yyvsp[-2].exp), (yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1450 "y.tab.c" /* yacc.c:1646 */ #line 1452 "y.tab.c" /* yacc.c:1646 */
break; break;
case 21: case 21:
#line 87 "stella.y" /* yacc.c:1646 */ #line 87 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " U-"); (yyval.exp) = new UnaryMinusExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " U-"); (yyval.exp) = new UnaryMinusExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1456 "y.tab.c" /* yacc.c:1646 */ #line 1458 "y.tab.c" /* yacc.c:1646 */
break; break;
case 22: case 22:
#line 88 "stella.y" /* yacc.c:1646 */ #line 88 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " ~"); (yyval.exp) = new BinNotExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " ~"); (yyval.exp) = new BinNotExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1462 "y.tab.c" /* yacc.c:1646 */ #line 1464 "y.tab.c" /* yacc.c:1646 */
break; break;
case 23: case 23:
#line 89 "stella.y" /* yacc.c:1646 */ #line 89 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " !"); (yyval.exp) = new LogNotExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " !"); (yyval.exp) = new LogNotExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1468 "y.tab.c" /* yacc.c:1646 */ #line 1470 "y.tab.c" /* yacc.c:1646 */
break; break;
case 24: case 24:
#line 90 "stella.y" /* yacc.c:1646 */ #line 90 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " U*"); (yyval.exp) = new ByteDerefExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " U*"); (yyval.exp) = new ByteDerefExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1474 "y.tab.c" /* yacc.c:1646 */ #line 1476 "y.tab.c" /* yacc.c:1646 */
break; break;
case 25: case 25:
#line 91 "stella.y" /* yacc.c:1646 */ #line 91 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " U@"); (yyval.exp) = new WordDerefExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " U@"); (yyval.exp) = new WordDerefExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1480 "y.tab.c" /* yacc.c:1646 */ #line 1482 "y.tab.c" /* yacc.c:1646 */
break; break;
case 26: case 26:
#line 92 "stella.y" /* yacc.c:1646 */ #line 92 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " U<"); (yyval.exp) = new LoByteExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " U<"); (yyval.exp) = new LoByteExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1486 "y.tab.c" /* yacc.c:1646 */ #line 1488 "y.tab.c" /* yacc.c:1646 */
break; break;
case 27: case 27:
#line 93 "stella.y" /* yacc.c:1646 */ #line 93 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " U>"); (yyval.exp) = new HiByteExpression((yyvsp[0].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " U>"); (yyval.exp) = new HiByteExpression((yyvsp[0].exp)); lastExp = (yyval.exp); }
#line 1492 "y.tab.c" /* yacc.c:1646 */ #line 1494 "y.tab.c" /* yacc.c:1646 */
break; break;
case 28: case 28:
#line 94 "stella.y" /* yacc.c:1646 */ #line 94 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " ()"); (yyval.exp) = (yyvsp[-1].exp); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " ()"); (yyval.exp) = (yyvsp[-1].exp); lastExp = (yyval.exp); }
#line 1498 "y.tab.c" /* yacc.c:1646 */ #line 1500 "y.tab.c" /* yacc.c:1646 */
break; break;
case 29: case 29:
#line 95 "stella.y" /* yacc.c:1646 */ #line 95 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " []"); (yyval.exp) = new ByteDerefOffsetExpression((yyvsp[-3].exp), (yyvsp[-1].exp)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " []"); (yyval.exp) = new ByteDerefOffsetExpression((yyvsp[-3].exp), (yyvsp[-1].exp)); lastExp = (yyval.exp); }
#line 1504 "y.tab.c" /* yacc.c:1646 */ #line 1506 "y.tab.c" /* yacc.c:1646 */
break; break;
case 30: case 30:
#line 96 "stella.y" /* yacc.c:1646 */ #line 96 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " %d", (yyvsp[0].val)); (yyval.exp) = new ConstExpression((yyvsp[0].val)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, "const %d", (yyvsp[0].val)); (yyval.exp) = new ConstExpression((yyvsp[0].val)); lastExp = (yyval.exp); }
#line 1510 "y.tab.c" /* yacc.c:1646 */ #line 1512 "y.tab.c" /* yacc.c:1646 */
break; break;
case 31: case 31:
#line 97 "stella.y" /* yacc.c:1646 */ #line 97 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " %s", (yyvsp[0].Equate)); (yyval.exp) = new EquateExpression((yyvsp[0].Equate)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, "equate %s", (yyvsp[0].Equate)); (yyval.exp) = new EquateExpression((yyvsp[0].Equate)); lastExp = (yyval.exp); }
#line 1516 "y.tab.c" /* yacc.c:1646 */ #line 1518 "y.tab.c" /* yacc.c:1646 */
break; break;
case 32: case 32:
#line 98 "stella.y" /* yacc.c:1646 */ #line 98 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " (CpuMethod)"); (yyval.exp) = new CpuMethodExpression((yyvsp[0].cpuMethod)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " (CpuMethod)"); (yyval.exp) = new CpuMethodExpression((yyvsp[0].cpuMethod)); lastExp = (yyval.exp); }
#line 1522 "y.tab.c" /* yacc.c:1646 */ #line 1524 "y.tab.c" /* yacc.c:1646 */
break; break;
case 33: case 33:
#line 99 "stella.y" /* yacc.c:1646 */ #line 99 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " (CartMethod)"); (yyval.exp) = new CartMethodExpression((yyvsp[0].cartMethod)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " (CartMethod)"); (yyval.exp) = new CartMethodExpression((yyvsp[0].cartMethod)); lastExp = (yyval.exp); }
#line 1528 "y.tab.c" /* yacc.c:1646 */ #line 1530 "y.tab.c" /* yacc.c:1646 */
break; break;
case 34: case 34:
#line 100 "stella.y" /* yacc.c:1646 */ #line 100 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " (TiaMethod)"); (yyval.exp) = new TiaMethodExpression((yyvsp[0].tiaMethod)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " (TiaMethod)"); (yyval.exp) = new TiaMethodExpression((yyvsp[0].tiaMethod)); lastExp = (yyval.exp); }
#line 1534 "y.tab.c" /* yacc.c:1646 */ #line 1536 "y.tab.c" /* yacc.c:1646 */
break; break;
case 35: case 35:
#line 101 "stella.y" /* yacc.c:1646 */ #line 101 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " (DefinedFunction)"); (yyval.exp) = new FunctionExpression((yyvsp[0].DefinedFunction)); lastExp = (yyval.exp); } { if(DEBUG_EXP) fprintf(stderr, " (DefinedFunction)"); (yyval.exp) = new FunctionExpression((yyvsp[0].DefinedFunction)); lastExp = (yyval.exp); }
#line 1540 "y.tab.c" /* yacc.c:1646 */ #line 1542 "y.tab.c" /* yacc.c:1646 */
break; break;
case 36: case 36:
#line 102 "stella.y" /* yacc.c:1646 */ #line 102 "stella.y" /* yacc.c:1646 */
{ if(DEBUG_EXP) fprintf(stderr, " ERR: "); yyerror((char*)"Invalid label or constant"); return 1; } { if(DEBUG_EXP) fprintf(stderr, " ERR: "); yyerror((char*)"Invalid label or constant"); return 1; }
#line 1546 "y.tab.c" /* yacc.c:1646 */ #line 1548 "y.tab.c" /* yacc.c:1646 */
break; break;
#line 1550 "y.tab.c" /* yacc.c:1646 */ #line 1552 "y.tab.c" /* yacc.c:1646 */
default: break; default: break;
} }
/* User semantic actions sometimes alter yychar, and that requires /* User semantic actions sometimes alter yychar, and that requires

View File

@ -1,8 +1,8 @@
/* A Bison parser, made by GNU Bison 3.0.2. */ /* A Bison parser, made by GNU Bison 3.0.4. */
/* Bison interface for Yacc-like parsers in C /* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -87,7 +87,7 @@ extern int yydebug;
/* Value type. */ /* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef union YYSTYPE YYSTYPE;
union YYSTYPE union YYSTYPE
{ {
#line 28 "stella.y" /* yacc.c:1909 */ #line 28 "stella.y" /* yacc.c:1909 */
@ -102,6 +102,8 @@ union YYSTYPE
#line 104 "y.tab.h" /* yacc.c:1909 */ #line 104 "y.tab.h" /* yacc.c:1909 */
}; };
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1 # define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_DECLARED 1
#endif #endif