mirror of https://github.com/stella-emu/stella.git
Merge remote-tracking branch 'stella-emu/master'
This commit is contained in:
commit
26e9144468
|
@ -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,
|
||||||
|
|
30
Changes.txt
30
Changes.txt
|
@ -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!
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -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*)
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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');
|
||||||
|
|
|
@ -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"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
|
@ -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"
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
@ -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();
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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(); }
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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");
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
|
@ -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
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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: " };
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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:
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -61,6 +61,7 @@ enum MessagePosition {
|
||||||
enum {
|
enum {
|
||||||
kColor = 256,
|
kColor = 256,
|
||||||
kBGColor,
|
kBGColor,
|
||||||
|
kBGColorLo,
|
||||||
kShadowColor,
|
kShadowColor,
|
||||||
kTextColor,
|
kTextColor,
|
||||||
kTextColorHi,
|
kTextColorHi,
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
|
@ -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
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
|
@ -189,11 +189,6 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent,
|
||||||
setListFilters();
|
setListFilters();
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
|
||||||
LauncherDialog::~LauncherDialog()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
const string& LauncherDialog::selectedRomMD5()
|
const string& LauncherDialog::selectedRomMD5()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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" />
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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 = $$; }
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue