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/emucore",
|
||||
"-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,
|
||||
"files.trimTrailingWhitespace": true,
|
||||
|
|
30
Changes.txt
30
Changes.txt
|
@ -14,6 +14,8 @@
|
|||
|
||||
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:
|
||||
- RSYNC
|
||||
- YStart autodetection
|
||||
|
@ -24,14 +26,31 @@
|
|||
finding documentation that finally describes in more detail how the
|
||||
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
|
||||
files before starting another instance of the same ROM, when the ROM
|
||||
was opened in the ROM launcher.
|
||||
|
||||
* Fixed trap'm' debugger commands when setting TIA read addresses; it
|
||||
was previously only working for write addresses.
|
||||
* Various improvements to the debugger and command prompt:
|
||||
- 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
|
||||
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
|
||||
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
|
||||
Dietrich.
|
||||
|
@ -90,7 +109,8 @@
|
|||
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.
|
||||
|
||||
* 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!
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,43 +1,40 @@
|
|||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2005-07-08'
|
||||
timestamp='2017-04-02'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
# can handle that machine. It does not imply ALL GNU software can.
|
||||
#
|
||||
# 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
|
||||
# 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 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
# This program is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# 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
|
||||
# diff and a properly formatted ChangeLog entry.
|
||||
# Please send patches to <config-patches@gnu.org>.
|
||||
#
|
||||
# Configuration subroutine to validate and canonicalize a configuration type.
|
||||
# Supply the specified configuration type as an argument.
|
||||
# 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.
|
||||
|
||||
# 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
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
# that are meaningful with *any* GNU software.
|
||||
|
@ -56,8 +53,7 @@ timestamp='2005-07-08'
|
|||
me=`echo "$0" | sed -e 's,.*/,,'`
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS
|
||||
$0 [OPTION] ALIAS
|
||||
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||
|
||||
Canonicalize a configuration name.
|
||||
|
||||
|
@ -71,8 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
|||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
|
||||
Free Software Foundation, Inc.
|
||||
Copyright 1992-2017 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
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.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
|
||||
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||
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
|
||||
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/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
|
@ -146,10 +148,13 @@ case $os in
|
|||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-apple | -axis | -knuth | -cray)
|
||||
-apple | -axis | -knuth | -cray | -microblaze*)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
-bluegene*)
|
||||
os=-cnk
|
||||
;;
|
||||
-sim | -cisco | -oki | -wec | -winbond)
|
||||
os=
|
||||
basic_machine=$1
|
||||
|
@ -164,13 +169,17 @@ case $os in
|
|||
os=-chorusos
|
||||
basic_machine=$1
|
||||
;;
|
||||
-chorusrdb)
|
||||
os=-chorusrdb
|
||||
-chorusrdb)
|
||||
os=-chorusrdb
|
||||
basic_machine=$1
|
||||
;;
|
||||
;;
|
||||
-hiux*)
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
-sco6)
|
||||
os=-sco5v6
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5)
|
||||
os=-sco3.2v5
|
||||
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.
|
||||
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*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
|
@ -204,6 +217,12 @@ case $os in
|
|||
-isc*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-lynx*178)
|
||||
os=-lynxos178
|
||||
;;
|
||||
-lynx*5)
|
||||
os=-lynxos5
|
||||
;;
|
||||
-lynx*)
|
||||
os=-lynxos
|
||||
;;
|
||||
|
@ -228,64 +247,116 @@ case $basic_machine in
|
|||
# Some are omitted here because they have special meanings below.
|
||||
1750a | 580 \
|
||||
| a29k \
|
||||
| aarch64 | aarch64_be \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| 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 \
|
||||
| c4x | clipper \
|
||||
| c4x | c8051 | clipper \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| fr30 | frv \
|
||||
| e2k | epiphany \
|
||||
| fido | fr30 | frv | ft32 \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia16 | ia64 \
|
||||
| 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 \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
| mips64vr | mips64vrel \
|
||||
| mips64octeon | mips64octeonel \
|
||||
| mips64orion | mips64orionel \
|
||||
| mips64r5900 | mips64r5900el \
|
||||
| mips64vr | mips64vrel \
|
||||
| mips64vr4100 | mips64vr4100el \
|
||||
| mips64vr4300 | mips64vr4300el \
|
||||
| mips64vr5000 | mips64vr5000el \
|
||||
| mips64vr5900 | mips64vr5900el \
|
||||
| mipsisa32 | mipsisa32el \
|
||||
| mipsisa32r2 | mipsisa32r2el \
|
||||
| mipsisa32r6 | mipsisa32r6el \
|
||||
| mipsisa64 | mipsisa64el \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64r6 | mipsisa64r6el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipsr5900 | mipsr5900el \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| ms1 \
|
||||
| moxie \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nds32 | nds32le | nds32be \
|
||||
| nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| or32 \
|
||||
| open8 | or1k | or1knd | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pru \
|
||||
| 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 \
|
||||
| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b \
|
||||
| strongarm \
|
||||
| tahoe | thumb | tic4x | tic80 | tron \
|
||||
| v850 | v850e \
|
||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||
| spu \
|
||||
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \
|
||||
| ubicom32 \
|
||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||
| visium \
|
||||
| wasm32 \
|
||||
| we32k \
|
||||
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
|
||||
| z8k)
|
||||
| x86 | xc16x | xstormy16 | xtensa \
|
||||
| z8k | z80)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
m32c)
|
||||
basic_machine=$basic_machine-unknown
|
||||
c54x)
|
||||
basic_machine=tic54x-unknown
|
||||
;;
|
||||
m6811 | m68hc11 | m6812 | m68hc12)
|
||||
# Motorola 68HC11/12.
|
||||
c55x)
|
||||
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
|
||||
os=-none
|
||||
;;
|
||||
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'
|
||||
# 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.
|
||||
580-* \
|
||||
| a29k-* \
|
||||
| aarch64-* | aarch64_be-* \
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* \
|
||||
| avr-* | avr32-* \
|
||||
| ba-* \
|
||||
| be32-* | be64-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* \
|
||||
| c8051-* | clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
|
||||
| e2k-* | elxsi-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| m32r-* | m32rle-* \
|
||||
| k1om-* \
|
||||
| le32-* | le64-* \
|
||||
| lm32-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| m88110-* | m88k-* | maxq-* | mcore-* \
|
||||
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
|
||||
| microblaze-* | microblazeel-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
| mips64vr-* | mips64vrel-* \
|
||||
| mips64octeon-* | mips64octeonel-* \
|
||||
| mips64orion-* | mips64orionel-* \
|
||||
| mips64r5900-* | mips64r5900el-* \
|
||||
| mips64vr-* | mips64vrel-* \
|
||||
| mips64vr4100-* | mips64vr4100el-* \
|
||||
| mips64vr4300-* | mips64vr4300el-* \
|
||||
| mips64vr5000-* | mips64vr5000el-* \
|
||||
| mips64vr5900-* | mips64vr5900el-* \
|
||||
| mipsisa32-* | mipsisa32el-* \
|
||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||
| mipsisa32r6-* | mipsisa32r6el-* \
|
||||
| mipsisa64-* | mipsisa64el-* \
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64r6-* | mipsisa64r6el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipsr5900-* | mipsr5900el-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| ms1-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nds32-* | nds32le-* | nds32be-* \
|
||||
| nios-* | nios2-* | nios2eb-* | nios2el-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| open8-* \
|
||||
| or1k*-* \
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||
| pru-* \
|
||||
| pyramid-* \
|
||||
| romp-* | rs6000-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
|
||||
| riscv32-* | riscv64-* \
|
||||
| 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-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||
| sparclite-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
|
||||
| tahoe-* | thumb-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \
|
||||
| tahoe-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| tile*-* \
|
||||
| tron-* \
|
||||
| v850-* | v850e-* | vax-* \
|
||||
| ubicom32-* \
|
||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||
| vax-* \
|
||||
| visium-* \
|
||||
| wasm32-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||
| xstormy16-* | xtensa-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
| 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
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
|
@ -377,7 +474,7 @@ case $basic_machine in
|
|||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
;;
|
||||
abacus)
|
||||
abacus)
|
||||
basic_machine=abacus-unknown
|
||||
;;
|
||||
adobe68k)
|
||||
|
@ -423,6 +520,13 @@ case $basic_machine in
|
|||
basic_machine=m68k-apollo
|
||||
os=-bsd
|
||||
;;
|
||||
aros)
|
||||
basic_machine=i386-pc
|
||||
os=-aros
|
||||
;;
|
||||
asmjs)
|
||||
basic_machine=asmjs-unknown
|
||||
;;
|
||||
aux)
|
||||
basic_machine=m68k-apple
|
||||
os=-aux
|
||||
|
@ -431,10 +535,35 @@ case $basic_machine in
|
|||
basic_machine=ns32k-sequent
|
||||
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)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
cegcc)
|
||||
basic_machine=arm-unknown
|
||||
os=-cegcc
|
||||
;;
|
||||
convex-c1)
|
||||
basic_machine=c1-convex
|
||||
os=-bsd
|
||||
|
@ -463,8 +592,8 @@ case $basic_machine in
|
|||
basic_machine=craynv-cray
|
||||
os=-unicosmp
|
||||
;;
|
||||
cr16c)
|
||||
basic_machine=cr16c-unknown
|
||||
cr16 | cr16-*)
|
||||
basic_machine=cr16-unknown
|
||||
os=-elf
|
||||
;;
|
||||
crds | unos)
|
||||
|
@ -502,6 +631,10 @@ case $basic_machine in
|
|||
basic_machine=m88k-motorola
|
||||
os=-sysv3
|
||||
;;
|
||||
dicos)
|
||||
basic_machine=i686-pc
|
||||
os=-dicos
|
||||
;;
|
||||
djgpp)
|
||||
basic_machine=i586-pc
|
||||
os=-msdosdjgpp
|
||||
|
@ -514,6 +647,14 @@ case $basic_machine in
|
|||
basic_machine=m68k-bull
|
||||
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)
|
||||
basic_machine=a29k-amd
|
||||
os=-ebmon
|
||||
|
@ -617,7 +758,6 @@ case $basic_machine in
|
|||
i370-ibm* | ibm*)
|
||||
basic_machine=i370-ibm
|
||||
;;
|
||||
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
|
||||
i*86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
|
@ -656,6 +796,17 @@ case $basic_machine in
|
|||
basic_machine=m68k-isi
|
||||
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*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
|
@ -667,10 +818,21 @@ case $basic_machine in
|
|||
basic_machine=ns32k-utek
|
||||
os=-sysv
|
||||
;;
|
||||
microblaze*)
|
||||
basic_machine=microblaze-xilinx
|
||||
;;
|
||||
mingw64)
|
||||
basic_machine=x86_64-pc
|
||||
os=-mingw64
|
||||
;;
|
||||
mingw32)
|
||||
basic_machine=i386-pc
|
||||
basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
basic_machine=arm-unknown
|
||||
os=-mingw32ce
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
|
@ -692,14 +854,29 @@ case $basic_machine in
|
|||
basic_machine=powerpc-unknown
|
||||
os=-morphos
|
||||
;;
|
||||
moxiebox)
|
||||
basic_machine=moxie-unknown
|
||||
os=-moxiebox
|
||||
;;
|
||||
msdos)
|
||||
basic_machine=i386-pc
|
||||
os=-msdos
|
||||
;;
|
||||
ms1-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
msys)
|
||||
basic_machine=i686-pc
|
||||
os=-msys
|
||||
;;
|
||||
mvs)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
;;
|
||||
nacl)
|
||||
basic_machine=le32-unknown
|
||||
os=-nacl
|
||||
;;
|
||||
ncr3000)
|
||||
basic_machine=i486-ncr
|
||||
os=-sysv4
|
||||
|
@ -764,9 +941,18 @@ case $basic_machine in
|
|||
np1)
|
||||
basic_machine=np1-gould
|
||||
;;
|
||||
neo-tandem)
|
||||
basic_machine=neo-tandem
|
||||
;;
|
||||
nse-tandem)
|
||||
basic_machine=nse-tandem
|
||||
;;
|
||||
nsr-tandem)
|
||||
basic_machine=nsr-tandem
|
||||
;;
|
||||
nsx-tandem)
|
||||
basic_machine=nsx-tandem
|
||||
;;
|
||||
op50n-* | op60c-*)
|
||||
basic_machine=hppa1.1-oki
|
||||
os=-proelf
|
||||
|
@ -794,6 +980,14 @@ case $basic_machine in
|
|||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
parisc)
|
||||
basic_machine=hppa-unknown
|
||||
os=-linux
|
||||
;;
|
||||
parisc-*)
|
||||
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
|
@ -803,6 +997,12 @@ case $basic_machine in
|
|||
pc532 | 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)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
|
@ -832,11 +1032,12 @@ case $basic_machine in
|
|||
;;
|
||||
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
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
|
@ -846,7 +1047,7 @@ case $basic_machine in
|
|||
;;
|
||||
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
ppc64le | powerpc64little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
;;
|
||||
ppc64le-* | powerpc64little-*)
|
||||
|
@ -859,6 +1060,14 @@ case $basic_machine in
|
|||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
rdos | rdos64)
|
||||
basic_machine=x86_64-pc
|
||||
os=-rdos
|
||||
;;
|
||||
rdos32)
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
rom68k)
|
||||
basic_machine=m68k-rom68k
|
||||
os=-coff
|
||||
|
@ -885,6 +1094,10 @@ case $basic_machine in
|
|||
sb1el)
|
||||
basic_machine=mipsisa64sb1el-unknown
|
||||
;;
|
||||
sde)
|
||||
basic_machine=mipsisa32-sde
|
||||
os=-elf
|
||||
;;
|
||||
sei)
|
||||
basic_machine=mips-sei
|
||||
os=-seiux
|
||||
|
@ -896,6 +1109,9 @@ case $basic_machine in
|
|||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sh5el)
|
||||
basic_machine=sh5le-unknown
|
||||
;;
|
||||
sh64)
|
||||
basic_machine=sh64-unknown
|
||||
;;
|
||||
|
@ -917,6 +1133,9 @@ case $basic_machine in
|
|||
basic_machine=i860-stratus
|
||||
os=-sysv4
|
||||
;;
|
||||
strongarm-* | thumb-*)
|
||||
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
sun2)
|
||||
basic_machine=m68000-sun
|
||||
;;
|
||||
|
@ -973,17 +1192,9 @@ case $basic_machine in
|
|||
basic_machine=t90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
tic54x | c54x*)
|
||||
basic_machine=tic54x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic55x | c55x*)
|
||||
basic_machine=tic55x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic6x | c6x*)
|
||||
basic_machine=tic6x-unknown
|
||||
os=-coff
|
||||
tile*)
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
|
@ -1037,6 +1248,9 @@ case $basic_machine in
|
|||
basic_machine=a29k-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
wasm32)
|
||||
basic_machine=wasm32-unknown
|
||||
;;
|
||||
w65*)
|
||||
basic_machine=w65-wdc
|
||||
os=-none
|
||||
|
@ -1052,6 +1266,9 @@ case $basic_machine in
|
|||
xps | xps100)
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
xscale-* | xscalee[bl]-*)
|
||||
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
|
||||
;;
|
||||
ymp)
|
||||
basic_machine=ymp-cray
|
||||
os=-unicos
|
||||
|
@ -1060,6 +1277,10 @@ case $basic_machine in
|
|||
basic_machine=z8k-unknown
|
||||
os=-sim
|
||||
;;
|
||||
z80-*-coff)
|
||||
basic_machine=z80-unknown
|
||||
os=-sim
|
||||
;;
|
||||
none)
|
||||
basic_machine=none-none
|
||||
os=-none
|
||||
|
@ -1098,10 +1319,10 @@ case $basic_machine in
|
|||
we32k)
|
||||
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
|
||||
;;
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b)
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
|
@ -1145,9 +1366,12 @@ esac
|
|||
if [ x"$os" != x"" ]
|
||||
then
|
||||
case $os in
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# -solaris* is a basic system type, with this one exception.
|
||||
-auroraux)
|
||||
os=-auroraux
|
||||
;;
|
||||
-solaris1 | -solaris1.*)
|
||||
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.
|
||||
# -sysv* is not here because it comes later, after sysvr4.
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
|
||||
| -sym* | -kopensolaris* | -plan9* \
|
||||
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
|
||||
| -aos* \
|
||||
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -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* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -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.
|
||||
;;
|
||||
-qnx*)
|
||||
|
@ -1227,7 +1456,7 @@ case $os in
|
|||
-opened*)
|
||||
os=-openedition
|
||||
;;
|
||||
-os400*)
|
||||
-os400*)
|
||||
os=-os400
|
||||
;;
|
||||
-wince*)
|
||||
|
@ -1276,7 +1505,7 @@ case $os in
|
|||
-sinix*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-tpf*)
|
||||
-tpf*)
|
||||
os=-tpf
|
||||
;;
|
||||
-triton*)
|
||||
|
@ -1312,12 +1541,16 @@ case $os in
|
|||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-kaos*)
|
||||
os=-kaos
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-dicos*)
|
||||
os=-dicos
|
||||
;;
|
||||
-nacl*)
|
||||
;;
|
||||
-ios)
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
*)
|
||||
|
@ -1340,6 +1573,12 @@ else
|
|||
# system, and we'll never get to this point.
|
||||
|
||||
case $basic_machine in
|
||||
score-*)
|
||||
os=-elf
|
||||
;;
|
||||
spu-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-acorn)
|
||||
os=-riscix1.2
|
||||
;;
|
||||
|
@ -1349,9 +1588,24 @@ case $basic_machine in
|
|||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
c8051-*)
|
||||
os=-elf
|
||||
;;
|
||||
hexagon-*)
|
||||
os=-elf
|
||||
;;
|
||||
tic54x-*)
|
||||
os=-coff
|
||||
;;
|
||||
tic55x-*)
|
||||
os=-coff
|
||||
;;
|
||||
tic6x-*)
|
||||
os=-coff
|
||||
;;
|
||||
# This must come before the *-dec entry.
|
||||
pdp10-*)
|
||||
os=-tops20
|
||||
|
@ -1370,13 +1624,13 @@ case $basic_machine in
|
|||
;;
|
||||
m68000-sun)
|
||||
os=-sunos3
|
||||
# This also exists in the configure program, but was not the
|
||||
# default.
|
||||
# os=-sunos4
|
||||
;;
|
||||
m68*-cisco)
|
||||
os=-aout
|
||||
;;
|
||||
mep-*)
|
||||
os=-elf
|
||||
;;
|
||||
mips*-cisco)
|
||||
os=-elf
|
||||
;;
|
||||
|
@ -1392,6 +1646,9 @@ case $basic_machine in
|
|||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
pru-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
|
@ -1401,7 +1658,7 @@ case $basic_machine in
|
|||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
*-knuth)
|
||||
*-knuth)
|
||||
os=-mmixware
|
||||
;;
|
||||
*-wec)
|
||||
|
@ -1506,7 +1763,7 @@ case $basic_machine in
|
|||
-sunos*)
|
||||
vendor=sun
|
||||
;;
|
||||
-aix*)
|
||||
-cnk*|-aix*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-beos*)
|
||||
|
|
|
@ -417,7 +417,7 @@ elif test "$have_gcc" = yes; then
|
|||
fi
|
||||
|
||||
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_minor=`echo $cxx_version | cut -d '.' -f 2`
|
||||
cxx_version="$cxx_version, ok"
|
||||
|
|
|
@ -62,7 +62,11 @@ class Base
|
|||
static void setHexUppercase(bool enable);
|
||||
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) {
|
||||
os.flags(myHexflags);
|
||||
return os << std::setw(2) << std::setfill('0');
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#ifndef EVENTHANDLER_SDL2_HXX
|
||||
#define EVENTHANDLER_SDL2_HXX
|
||||
|
||||
#include <SDL.h>
|
||||
#include "SDL_lib.hxx"
|
||||
#include "EventHandler.hxx"
|
||||
|
||||
/**
|
||||
|
|
|
@ -15,11 +15,11 @@
|
|||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//============================================================================
|
||||
|
||||
#include <SDL.h>
|
||||
#include <sstream>
|
||||
#include <time.h>
|
||||
#include <fstream>
|
||||
|
||||
#include "SDL_lib.hxx"
|
||||
#include "bspf.hxx"
|
||||
|
||||
#include "Console.hxx"
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#ifndef FRAMEBUFFER_SDL2_HXX
|
||||
#define FRAMEBUFFER_SDL2_HXX
|
||||
|
||||
#include <SDL.h>
|
||||
#include "SDL_lib.hxx"
|
||||
|
||||
class OSystem;
|
||||
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 <cassert>
|
||||
#include <cmath>
|
||||
#include <SDL.h>
|
||||
|
||||
#include "SDL_lib.hxx"
|
||||
#include "TIASnd.hxx"
|
||||
#include "TIATypes.hxx"
|
||||
#include "FrameBuffer.hxx"
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
|
||||
class OSystem;
|
||||
|
||||
#include <SDL.h>
|
||||
#include "SDL_lib.hxx"
|
||||
|
||||
#include "bspf.hxx"
|
||||
#include "TIASnd.hxx"
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#ifndef 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,
|
||||
|
|
|
@ -345,58 +345,55 @@ int Debugger::trace()
|
|||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::toggleBreakPoint(int bp)
|
||||
void Debugger::toggleBreakPoint(uInt16 bp)
|
||||
{
|
||||
breakPoints().initialize();
|
||||
if(bp < 0) bp = myCpuDebug->pc();
|
||||
breakPoints().toggle(bp);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::setBreakPoint(int bp, bool set)
|
||||
void Debugger::setBreakPoint(uInt16 bp, bool set)
|
||||
{
|
||||
breakPoints().initialize();
|
||||
if(bp < 0) bp = myCpuDebug->pc();
|
||||
if(set) breakPoints().set(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);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::toggleReadTrap(int t)
|
||||
void Debugger::toggleReadTrap(uInt16 t)
|
||||
{
|
||||
readTraps().initialize();
|
||||
readTraps().toggle(t);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::toggleWriteTrap(int t)
|
||||
void Debugger::toggleWriteTrap(uInt16 t)
|
||||
{
|
||||
writeTraps().initialize();
|
||||
writeTraps().toggle(t);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void Debugger::toggleTrap(int t)
|
||||
void Debugger::toggleTrap(uInt16 t)
|
||||
{
|
||||
toggleReadTrap(t);
|
||||
toggleWriteTrap(t);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool Debugger::readTrap(int t)
|
||||
bool Debugger::readTrap(uInt16 t)
|
||||
{
|
||||
return readTraps().isInitialized() && readTraps().isSet(t);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
bool Debugger::writeTrap(int t)
|
||||
bool Debugger::writeTrap(uInt16 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);
|
||||
}
|
||||
|
@ -613,12 +610,12 @@ void Debugger::getCompletions(const char* in, StringList& list) const
|
|||
for(const auto& iter: myFunctions)
|
||||
{
|
||||
const char* l = iter.first.c_str();
|
||||
if(BSPF::equalsIgnoreCase(l, in))
|
||||
if(BSPF::startsWithIgnoreCase(l, in))
|
||||
list.push_back(l);
|
||||
}
|
||||
|
||||
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]);
|
||||
}
|
||||
|
||||
|
|
|
@ -219,9 +219,9 @@ class Debugger : public DialogContainer
|
|||
void setAccessFlags(uInt16 addr, uInt8 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
|
||||
|
@ -256,14 +256,14 @@ class Debugger : public DialogContainer
|
|||
void nextFrame(int frames);
|
||||
bool rewindState();
|
||||
|
||||
void toggleBreakPoint(int bp);
|
||||
void toggleBreakPoint(uInt16 bp);
|
||||
|
||||
bool breakPoint(int bp);
|
||||
void toggleReadTrap(int t);
|
||||
void toggleWriteTrap(int t);
|
||||
void toggleTrap(int t);
|
||||
bool readTrap(int t);
|
||||
bool writeTrap(int t);
|
||||
bool breakPoint(uInt16 bp);
|
||||
void toggleReadTrap(uInt16 t);
|
||||
void toggleWriteTrap(uInt16 t);
|
||||
void toggleTrap(uInt16 t);
|
||||
bool readTrap(uInt16 t);
|
||||
bool writeTrap(uInt16 t);
|
||||
void clearAllTraps();
|
||||
|
||||
// Set a bunch of RAM locations at once
|
||||
|
|
|
@ -37,7 +37,7 @@ class BinAndExpression : public Expression
|
|||
{
|
||||
public:
|
||||
BinAndExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() & myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -46,7 +46,7 @@ class BinNotExpression : public Expression
|
|||
{
|
||||
public:
|
||||
BinNotExpression(Expression* left) : Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return ~(myLHS->evaluate()); }
|
||||
};
|
||||
|
||||
|
@ -55,7 +55,7 @@ class BinOrExpression : public Expression
|
|||
{
|
||||
public:
|
||||
BinOrExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() | myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -64,7 +64,7 @@ class BinXorExpression : public Expression
|
|||
{
|
||||
public:
|
||||
BinXorExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() ^ myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -73,7 +73,7 @@ class ByteDerefExpression : public Expression
|
|||
{
|
||||
public:
|
||||
ByteDerefExpression(Expression* left): Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return Debugger::debugger().peek(myLHS->evaluate()); }
|
||||
};
|
||||
|
||||
|
@ -82,7 +82,7 @@ class ByteDerefOffsetExpression : public Expression
|
|||
{
|
||||
public:
|
||||
ByteDerefOffsetExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return Debugger::debugger().peek(myLHS->evaluate() + myRHS->evaluate()); }
|
||||
};
|
||||
|
||||
|
@ -91,7 +91,7 @@ class ConstExpression : public Expression
|
|||
{
|
||||
public:
|
||||
ConstExpression(const int value) : Expression(), myValue(value) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myValue; }
|
||||
|
||||
private:
|
||||
|
@ -103,7 +103,7 @@ class CpuMethodExpression : public Expression
|
|||
{
|
||||
public:
|
||||
CpuMethodExpression(CpuMethod method) : Expression(), myMethod(std::mem_fn(method)) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myMethod(Debugger::debugger().cpuDebug()); }
|
||||
|
||||
private:
|
||||
|
@ -115,7 +115,7 @@ class DivExpression : public Expression
|
|||
{
|
||||
public:
|
||||
DivExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ int denom = myRHS->evaluate();
|
||||
return denom == 0 ? 0 : myLHS->evaluate() / denom; }
|
||||
};
|
||||
|
@ -125,7 +125,7 @@ class EqualsExpression : public Expression
|
|||
{
|
||||
public:
|
||||
EqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() == myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -134,7 +134,7 @@ class EquateExpression : public Expression
|
|||
{
|
||||
public:
|
||||
EquateExpression(const string& label) : Expression(), myLabel(label) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return Debugger::debugger().cartDebug().getAddress(myLabel); }
|
||||
|
||||
private:
|
||||
|
@ -146,7 +146,7 @@ class FunctionExpression : public Expression
|
|||
{
|
||||
public:
|
||||
FunctionExpression(const string& label) : Expression(), myLabel(label) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return Debugger::debugger().getFunction(myLabel).evaluate(); }
|
||||
|
||||
private:
|
||||
|
@ -158,7 +158,7 @@ class GreaterEqualsExpression : public Expression
|
|||
{
|
||||
public:
|
||||
GreaterEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() >= myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -167,7 +167,7 @@ class GreaterExpression : public Expression
|
|||
{
|
||||
public:
|
||||
GreaterExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() > myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -176,7 +176,7 @@ class HiByteExpression : public Expression
|
|||
{
|
||||
public:
|
||||
HiByteExpression(Expression* left) : Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return 0xff & (myLHS->evaluate() >> 8); }
|
||||
};
|
||||
|
||||
|
@ -185,7 +185,7 @@ class LessEqualsExpression : public Expression
|
|||
{
|
||||
public:
|
||||
LessEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() <= myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -194,7 +194,7 @@ class LessExpression : public Expression
|
|||
{
|
||||
public:
|
||||
LessExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() < myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -203,7 +203,7 @@ class LoByteExpression : public Expression
|
|||
{
|
||||
public:
|
||||
LoByteExpression(Expression* left) : Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return 0xff & myLHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -212,7 +212,7 @@ class LogAndExpression : public Expression
|
|||
{
|
||||
public:
|
||||
LogAndExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() && myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -221,7 +221,7 @@ class LogNotExpression : public Expression
|
|||
{
|
||||
public:
|
||||
LogNotExpression(Expression* left) : Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return !(myLHS->evaluate()); }
|
||||
};
|
||||
|
||||
|
@ -230,7 +230,7 @@ class LogOrExpression : public Expression
|
|||
{
|
||||
public:
|
||||
LogOrExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() || myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -239,7 +239,7 @@ class MinusExpression : public Expression
|
|||
{
|
||||
public:
|
||||
MinusExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() - myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -248,7 +248,7 @@ class ModExpression : public Expression
|
|||
{
|
||||
public:
|
||||
ModExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ int rhs = myRHS->evaluate();
|
||||
return rhs == 0 ? 0 : myLHS->evaluate() % rhs; }
|
||||
};
|
||||
|
@ -258,7 +258,7 @@ class MultExpression : public Expression
|
|||
{
|
||||
public:
|
||||
MultExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() * myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -267,7 +267,7 @@ class NotEqualsExpression : public Expression
|
|||
{
|
||||
public:
|
||||
NotEqualsExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() != myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -276,7 +276,7 @@ class PlusExpression : public Expression
|
|||
{
|
||||
public:
|
||||
PlusExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() + myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -285,7 +285,7 @@ class CartMethodExpression : public Expression
|
|||
{
|
||||
public:
|
||||
CartMethodExpression(CartMethod method) : Expression(), myMethod(std::mem_fn(method)) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myMethod(Debugger::debugger().cartDebug()); }
|
||||
|
||||
private:
|
||||
|
@ -297,7 +297,7 @@ class ShiftLeftExpression : public Expression
|
|||
{
|
||||
public:
|
||||
ShiftLeftExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() << myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -306,7 +306,7 @@ class ShiftRightExpression : public Expression
|
|||
{
|
||||
public:
|
||||
ShiftRightExpression(Expression* left, Expression* right) : Expression(left, right) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myLHS->evaluate() >> myRHS->evaluate(); }
|
||||
};
|
||||
|
||||
|
@ -315,7 +315,7 @@ class TiaMethodExpression : public Expression
|
|||
{
|
||||
public:
|
||||
TiaMethodExpression(TiaMethod method) : Expression(), myMethod(std::mem_fn(method)) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return myMethod(Debugger::debugger().tiaDebug()); }
|
||||
|
||||
private:
|
||||
|
@ -327,7 +327,7 @@ class UnaryMinusExpression : public Expression
|
|||
{
|
||||
public:
|
||||
UnaryMinusExpression(Expression* left) : Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ return -(myLHS->evaluate()); }
|
||||
};
|
||||
|
||||
|
@ -336,7 +336,7 @@ class WordDerefExpression : public Expression
|
|||
{
|
||||
public:
|
||||
WordDerefExpression(Expression* left) : Expression(left) { }
|
||||
uInt16 evaluate() const override
|
||||
uInt32 evaluate() const override
|
||||
{ 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);
|
||||
|
||||
private:
|
||||
enum { kNumCommands = 73 };
|
||||
enum { kNumCommands = 72 };
|
||||
|
||||
// Constants for argument processing
|
||||
enum {
|
||||
|
@ -93,6 +93,7 @@ class DebuggerParser
|
|||
struct Command {
|
||||
string cmdString;
|
||||
string description;
|
||||
string extendedDesc;
|
||||
bool parmsRequired;
|
||||
bool refreshRequired;
|
||||
parameters parms[10];
|
||||
|
@ -111,7 +112,7 @@ class DebuggerParser
|
|||
// Arguments in 'int' and 'string' format for the currently running command
|
||||
IntArray args;
|
||||
StringList argStrings;
|
||||
int argCount;
|
||||
uInt32 argCount;
|
||||
|
||||
StringList watches;
|
||||
|
||||
|
@ -131,6 +132,7 @@ class DebuggerParser
|
|||
void executeColortest();
|
||||
void executeD();
|
||||
void executeData();
|
||||
void executeDebugColors();
|
||||
void executeDefine();
|
||||
void executeDelbreakif();
|
||||
void executeDelfunction();
|
||||
|
@ -151,6 +153,7 @@ class DebuggerParser
|
|||
void executeLoadconfig();
|
||||
void executeLoadstate();
|
||||
void executeN();
|
||||
void executePalette();
|
||||
void executePc();
|
||||
void executePGfx();
|
||||
void executePrint();
|
||||
|
@ -178,11 +181,7 @@ class DebuggerParser
|
|||
void executeTrap();
|
||||
void executeTrapread();
|
||||
void executeTrapwrite();
|
||||
void executeTrapRW(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 executeTrapRW(uInt32 addr, bool read, bool write); // not exposed by debugger
|
||||
void executeType();
|
||||
void executeUHex();
|
||||
void executeUndef();
|
||||
|
|
|
@ -35,7 +35,7 @@ class Expression
|
|||
: myLHS(lhs), myRHS(rhs) { }
|
||||
virtual ~Expression() = default;
|
||||
|
||||
virtual uInt16 evaluate() const { return 0; }
|
||||
virtual uInt32 evaluate() const { return 0; }
|
||||
|
||||
protected:
|
||||
unique_ptr<Expression> myLHS, myRHS;
|
||||
|
|
|
@ -27,12 +27,12 @@ class PackedBitArray
|
|||
public:
|
||||
PackedBitArray() : myInitialized(false) { }
|
||||
|
||||
bool isSet(uInt32 bit) const { return myBits[bit]; }
|
||||
bool isClear(uInt32 bit) const { return !myBits[bit]; }
|
||||
bool isSet(uInt16 bit) const { return myBits[bit]; }
|
||||
bool isClear(uInt16 bit) const { return !myBits[bit]; }
|
||||
|
||||
void set(uInt32 bit) { myBits[bit] = true; }
|
||||
void clear(uInt32 bit) { myBits[bit] = false; }
|
||||
void toggle(uInt32 bit) { myBits.flip(bit); }
|
||||
void set(uInt16 bit) { myBits[bit] = true; }
|
||||
void clear(uInt16 bit) { myBits[bit] = false; }
|
||||
void toggle(uInt16 bit) { myBits.flip(bit); }
|
||||
|
||||
void initialize() { myInitialized = true; }
|
||||
void clearAll() { myInitialized = false; myBits.reset(); }
|
||||
|
|
|
@ -185,7 +185,7 @@ bool TIADebug::vdelP0(int newVal)
|
|||
if(newVal > -1)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
{
|
||||
int tmp = myTIA.lastValueWrittenToRegister(CTRLPF);
|
||||
int tmp = myTIA.registerValue(CTRLPF);
|
||||
if(newVal)
|
||||
tmp |= 0x01;
|
||||
else
|
||||
|
@ -282,7 +282,7 @@ bool TIADebug::refPF(int newVal)
|
|||
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)
|
||||
{
|
||||
int tmp = myTIA.lastValueWrittenToRegister(CTRLPF);
|
||||
int tmp = myTIA.registerValue(CTRLPF);
|
||||
if(newVal)
|
||||
tmp |= 0x02;
|
||||
else
|
||||
|
@ -298,7 +298,7 @@ bool TIADebug::scorePF(int newVal)
|
|||
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)
|
||||
{
|
||||
int tmp = myTIA.lastValueWrittenToRegister(CTRLPF);
|
||||
int tmp = myTIA.registerValue(CTRLPF);
|
||||
if(newVal)
|
||||
tmp |= 0x04;
|
||||
else
|
||||
|
@ -314,7 +314,7 @@ bool TIADebug::priorityPF(int newVal)
|
|||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
mySystem.poke(PF1, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(PF1);
|
||||
return myTIA.registerValue(PF1);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -419,7 +419,7 @@ uInt8 TIADebug::pf2(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(PF2, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(PF1);
|
||||
return myTIA.registerValue(PF2);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -428,7 +428,7 @@ uInt8 TIADebug::coluP0(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(COLUP0, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(COLUP0);
|
||||
return myTIA.registerValue(COLUP0);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -437,7 +437,7 @@ uInt8 TIADebug::coluP1(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(COLUP1, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(COLUP1);
|
||||
return myTIA.registerValue(COLUP1);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -446,7 +446,7 @@ uInt8 TIADebug::coluPF(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(COLUPF, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(COLUPF);
|
||||
return myTIA.registerValue(COLUPF);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -455,7 +455,7 @@ uInt8 TIADebug::coluBK(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(COLUBK, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(COLUBK);
|
||||
return myTIA.registerValue(COLUBK);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -464,7 +464,7 @@ uInt8 TIADebug::nusiz0(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(NUSIZ0, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(NUSIZ0);
|
||||
return myTIA.registerValue(NUSIZ0);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -473,7 +473,7 @@ uInt8 TIADebug::nusiz1(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(NUSIZ1, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(NUSIZ1);
|
||||
return myTIA.registerValue(NUSIZ1);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -481,12 +481,12 @@ uInt8 TIADebug::nusizP0(int newVal)
|
|||
{
|
||||
if(newVal > -1)
|
||||
{
|
||||
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ0) & ~0x07;
|
||||
uInt8 tmp = myTIA.registerValue(NUSIZ0) & ~0x07;
|
||||
tmp |= (newVal & 0x07);
|
||||
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)
|
||||
{
|
||||
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ1) & ~0x07;
|
||||
uInt8 tmp = myTIA.registerValue(NUSIZ1) & ~0x07;
|
||||
tmp |= newVal & 0x07;
|
||||
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)
|
||||
{
|
||||
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ0) & ~0x30;
|
||||
uInt8 tmp = myTIA.registerValue(NUSIZ0) & ~0x30;
|
||||
tmp |= (newVal & 0x04) << 4;
|
||||
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)
|
||||
{
|
||||
uInt8 tmp = myTIA.lastValueWrittenToRegister(NUSIZ1) & ~0x30;
|
||||
uInt8 tmp = myTIA.registerValue(NUSIZ1) & ~0x30;
|
||||
tmp |= (newVal & 0x04) << 4;
|
||||
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)
|
||||
mySystem.poke(GRP0, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(GRP0);
|
||||
return myTIA.registerValue(GRP0);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -543,7 +543,7 @@ uInt8 TIADebug::grP1(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(GRP1, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(GRP1);
|
||||
return myTIA.registerValue(GRP1);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -597,7 +597,7 @@ uInt8 TIADebug::ctrlPF(int newVal)
|
|||
if(newVal > -1)
|
||||
mySystem.poke(CTRLPF, newVal);
|
||||
|
||||
return myTIA.lastValueWrittenToRegister(CTRLPF);
|
||||
return myTIA.registerValue(CTRLPF);
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -605,12 +605,12 @@ uInt8 TIADebug::sizeBL(int newVal)
|
|||
{
|
||||
if(newVal > -1)
|
||||
{
|
||||
uInt8 tmp = myTIA.lastValueWrittenToRegister(CTRLPF) & ~0x30;
|
||||
uInt8 tmp = myTIA.registerValue(CTRLPF) & ~0x30;
|
||||
tmp |= (newVal & 0x04) << 4;
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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
|
||||
{
|
||||
return myTIA.lastValueWrittenToRegister(VSYNC) & 0x02;
|
||||
return myTIA.registerValue(VSYNC) & 0x02;
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
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;
|
||||
|
||||
|
@ -736,6 +742,54 @@ string TIADebug::booleanWithLabel(string label, bool value)
|
|||
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()
|
||||
{
|
||||
|
@ -770,11 +824,11 @@ string TIADebug::toString()
|
|||
<< "COLUxx: "
|
||||
<< "P0=$" << Common::Base::HEX2 << 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])
|
||||
<< "PF=$" << Common::Base::HEX2 << state.coluRegs[2] << "/"
|
||||
<< " PF=$" << Common::Base::HEX2 << 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])
|
||||
<< endl
|
||||
<< "P0: GR=%" << Common::Base::toString(state.gr[P0], Common::Base::F_2_8)
|
||||
|
|
|
@ -23,6 +23,8 @@ class TiaDebug;
|
|||
class TIA;
|
||||
|
||||
#include "DebuggerSystem.hxx"
|
||||
#include "DelayQueueIterator.hxx"
|
||||
#include "bspf.hxx"
|
||||
|
||||
// Function type for TIADebug instance methods
|
||||
class TIADebug;
|
||||
|
@ -57,6 +59,8 @@ class TIADebug : public DebuggerSystem
|
|||
|
||||
void saveOldState() override;
|
||||
string toString() override;
|
||||
string debugColors() const;
|
||||
string palette() const;
|
||||
|
||||
// TIA byte (or part of a byte) registers
|
||||
uInt8 nusiz0(int newVal = -1);
|
||||
|
@ -137,7 +141,7 @@ class TIADebug : public DebuggerSystem
|
|||
|
||||
// TIA strobe registers
|
||||
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 strobeResP1() { mySystem.poke(RESP1, 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 vblankAsInt() const { return int(vblank()); } // so we can use _vblank pseudo-register
|
||||
|
||||
shared_ptr<DelayQueueIterator> delayQueueIterator() const;
|
||||
|
||||
private:
|
||||
/** 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) */
|
||||
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;
|
||||
myPCLabel = new EditTextWidget(boss, nfont, xpos, ypos, (max_w - xpos + x) - 10,
|
||||
fontHeight+1, "");
|
||||
myPCLabel->setEditable(false);
|
||||
myPCLabel->setEditable(false, true);
|
||||
|
||||
// Create a 1x4 grid with labels for the other CPU registers
|
||||
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,
|
||||
fontHeight+1, "");
|
||||
myCpuDataSrc[i]->setEditable(false);
|
||||
myCpuDataSrc[i]->setEditable(false, true);
|
||||
src_y += fontHeight+2;
|
||||
}
|
||||
int swidth = lfont.getStringWidth("Source Address");
|
||||
|
|
|
@ -178,6 +178,13 @@ void DataGridWidget::setList(int a, int v)
|
|||
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)
|
||||
{
|
||||
|
|
|
@ -54,6 +54,8 @@ class DataGridWidget : public EditableWidget
|
|||
void setList(int a, int v, bool 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 setNumRows(int rows);
|
||||
|
||||
|
|
|
@ -341,7 +341,7 @@ void DebuggerDialog::addStatusArea()
|
|||
myMessageBox = new EditTextWidget(this, *myLFont,
|
||||
xpos, ypos, myTiaZoom->getWidth(),
|
||||
myLFont->getLineHeight(), "");
|
||||
myMessageBox->setEditable(false);
|
||||
myMessageBox->setEditable(false, false);
|
||||
myMessageBox->clearFlags(WIDGET_RETAIN_FOCUS);
|
||||
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
|
||||
{
|
||||
// we got a delimiter, so this must be a label or a function
|
||||
const Debugger& dbg = instance().debugger();
|
||||
// Special case for 'help' command
|
||||
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.getCompletions(str + lastDelimPos + 1, list);
|
||||
dbg.cartDebug().getCompletions(str + lastDelimPos + 1, list);
|
||||
dbg.getCompletions(str + lastDelimPos + 1, list);
|
||||
}
|
||||
|
||||
if(list.size() < 1)
|
||||
break;
|
||||
|
@ -922,19 +930,13 @@ string PromptWidget::getCompletionPrefix(const StringList& completions, string p
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PromptWidget::clearScreen()
|
||||
{
|
||||
// Initialize start position and history
|
||||
// Initialize start position
|
||||
_currentPos = 0;
|
||||
_scrollLine = _linesPerPage - 1;
|
||||
_firstLineInBuffer = 0;
|
||||
_promptStartPos = _promptEndPos = -1;
|
||||
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)
|
||||
updateScrollBuffer();
|
||||
}
|
||||
|
|
|
@ -77,10 +77,9 @@ class PromptWidget : public Widget, public CommandSender
|
|||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||
|
||||
// Account for the extra width of embedded scrollbar
|
||||
virtual int getWidth() const override;
|
||||
|
||||
virtual bool wantsFocus() { return true; }
|
||||
int getWidth() const override;
|
||||
|
||||
bool wantsFocus() const override { return true; }
|
||||
void loadConfig() override;
|
||||
|
||||
private:
|
||||
|
|
|
@ -142,7 +142,7 @@ RamWidget::RamWidget(GuiObject* boss, const GUI::Font& lfont, const GUI::Font& n
|
|||
xpos += 6*myFontWidth + 5;
|
||||
myLabel = new EditTextWidget(boss, nfont, xpos, ypos-2, xpos_r-xpos,
|
||||
myLineHeight);
|
||||
myLabel->setEditable(false);
|
||||
myLabel->setEditable(false, true);
|
||||
|
||||
// Inputbox which will pop up when searching RAM
|
||||
StringList labels = { "Search: " };
|
||||
|
|
|
@ -47,7 +47,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
|
|||
kTextAlignLeft);
|
||||
xpos += lwidth;
|
||||
myFrameCount = new EditTextWidget(boss, nfont, xpos, ypos-1, fwidth, lineHeight, "");
|
||||
myFrameCount->setEditable(false);
|
||||
myFrameCount->setEditable(false, true);
|
||||
|
||||
xpos = x; ypos += lineHeight + 5;
|
||||
new StaticTextWidget(boss, lfont, xpos, ypos, lwidth, lineHeight,
|
||||
|
@ -55,7 +55,7 @@ TiaInfoWidget::TiaInfoWidget(GuiObject* boss, const GUI::Font& lfont,
|
|||
kTextAlignLeft);
|
||||
xpos += lwidth;
|
||||
myFrameCycles = new EditTextWidget(boss, nfont, xpos, ypos-1, fwidth, lineHeight, "");
|
||||
myFrameCycles->setEditable(false);
|
||||
myFrameCycles->setEditable(false, true);
|
||||
|
||||
xpos = x + 20; ypos += lineHeight + 8;
|
||||
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,
|
||||
lineHeight, "");
|
||||
myScanlineCount->setEditable(false);
|
||||
myScanlineCount->setEditable(false, true);
|
||||
|
||||
ypos += lineHeight + 5;
|
||||
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,
|
||||
lineHeight, "");
|
||||
myScanlineCycles->setEditable(false);
|
||||
myScanlineCycles->setEditable(false, true);
|
||||
|
||||
ypos += lineHeight + 5;
|
||||
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,
|
||||
lineHeight, "");
|
||||
myPixelPosition->setEditable(false);
|
||||
myPixelPosition->setEditable(false, true);
|
||||
|
||||
ypos += lineHeight + 5;
|
||||
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,
|
||||
lineHeight, "");
|
||||
myColorClocks->setEditable(false);
|
||||
myColorClocks->setEditable(false, true);
|
||||
|
||||
// Calculate actual dimensions
|
||||
_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
|
||||
// (fill to this scanline, etc).
|
||||
/*
|
||||
virtual void handleMouseUp(int x, int y, int button, int clickCount) override;
|
||||
virtual void handleMouseWheel(int x, int y, int direction) override;
|
||||
virtual bool handleKeyDown(StellaKey key, StellaMod mod) override;
|
||||
virtual bool handleKeyUp(StellaKey key, StellaMod mod) override;
|
||||
void handleMouseUp(int x, int y, int button, int clickCount) override;
|
||||
void handleMouseWheel(int x, int y, int direction) override;
|
||||
bool handleKeyDown(StellaKey key, StellaMod mod) override;
|
||||
bool handleKeyUp(StellaKey key, StellaMod mod) override;
|
||||
*/
|
||||
private:
|
||||
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 drawWidget(bool hilite) override;
|
||||
bool wantsFocus() { return false; }
|
||||
bool wantsFocus() const override { return false; }
|
||||
|
||||
// Following constructors and assignment operators not supported
|
||||
TiaOutputWidget() = delete;
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#include "ToggleBitWidget.hxx"
|
||||
#include "TogglePixelWidget.hxx"
|
||||
#include "Widget.hxx"
|
||||
|
||||
#include "DelayQueueWidget.hxx"
|
||||
#include "TiaWidget.hxx"
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
@ -237,7 +237,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
|
|||
xpos += myNusizP0->getWidth() + 5;
|
||||
myNusizP0Text = new EditTextWidget(boss, nfont, xpos, ypos, 23*fontWidth,
|
||||
lineHeight, "");
|
||||
myNusizP0Text->setEditable(false);
|
||||
myNusizP0Text->setEditable(false, true);
|
||||
|
||||
////////////////////////////
|
||||
// P1 register info
|
||||
|
@ -304,7 +304,7 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
|
|||
xpos += myNusizP1->getWidth() + 5;
|
||||
myNusizP1Text = new EditTextWidget(boss, nfont, xpos, ypos, 23*fontWidth,
|
||||
lineHeight, "");
|
||||
myNusizP1Text->setEditable(false);
|
||||
myNusizP1Text->setEditable(false, true);
|
||||
|
||||
////////////////////////////
|
||||
// M0 register info
|
||||
|
@ -523,8 +523,16 @@ TiaWidget::TiaWidget(GuiObject* boss, const GUI::Font& lfont,
|
|||
myPriorityPF->setID(kPriorityPFID);
|
||||
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
|
||||
xpos = 10; ypos += 2*lineHeight;
|
||||
xpos = 10; ypos += (myDelayQueueWidget->getHeight() + lineHeight);
|
||||
myUndrivenPins = new CheckboxWidget(boss, lfont, xpos, ypos+1,
|
||||
"Drive unused TIA pins randomly on a read/peek", kPPinCmd);
|
||||
myUndrivenPins->setTarget(this);
|
||||
|
@ -879,20 +887,16 @@ void TiaWidget::loadConfig()
|
|||
////////////////////////////
|
||||
// PF register info
|
||||
////////////////////////////
|
||||
int pfx_bgcolor = !tia.priorityPF() ? state.coluRegs[3] : -1;
|
||||
// PF0
|
||||
myPF[0]->setColor(state.coluRegs[2]);
|
||||
myPF[0]->setBackgroundColor(pfx_bgcolor);
|
||||
myPF[0]->setIntState(state.pf[0], true); // reverse bit order
|
||||
|
||||
// PF1
|
||||
myPF[1]->setColor(state.coluRegs[2]);
|
||||
myPF[1]->setBackgroundColor(pfx_bgcolor);
|
||||
myPF[1]->setIntState(state.pf[1], false);
|
||||
|
||||
// PF2
|
||||
myPF[2]->setColor(state.coluRegs[2]);
|
||||
myPF[2]->setBackgroundColor(pfx_bgcolor);
|
||||
myPF[2]->setIntState(state.pf[2], true); // reverse bit order
|
||||
|
||||
// Reflect
|
||||
|
@ -906,6 +910,8 @@ void TiaWidget::loadConfig()
|
|||
|
||||
// Undriven pins
|
||||
myUndrivenPins->setState(tia.tia().driveUnusedPinsRandom());
|
||||
|
||||
myDelayQueueWidget->loadConfig();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -26,6 +26,7 @@ class ToggleBitWidget;
|
|||
class TogglePixelWidget;
|
||||
class EditTextWidget;
|
||||
class ColorWidget;
|
||||
class DelayQueueWidget;
|
||||
|
||||
#include "Widget.hxx"
|
||||
#include "Command.hxx"
|
||||
|
@ -91,6 +92,8 @@ class TiaWidget : public Widget, public CommandSender
|
|||
|
||||
CheckboxWidget* myUndrivenPins;
|
||||
|
||||
DelayQueueWidget* myDelayQueueWidget;
|
||||
|
||||
// ID's for the various widgets
|
||||
// We need ID's, since there are more than one of several types of widgets
|
||||
enum {
|
||||
|
|
|
@ -48,7 +48,7 @@ class TiaZoomWidget : public Widget, public CommandSender
|
|||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||
|
||||
void drawWidget(bool hilite) override;
|
||||
bool wantsFocus() { return true; }
|
||||
bool wantsFocus() const override { return true; }
|
||||
|
||||
private:
|
||||
unique_ptr<ContextMenu> myMenu;
|
||||
|
|
|
@ -101,14 +101,22 @@ void ToggleBitWidget::drawWidget(bool hilite)
|
|||
else
|
||||
buffer = _offList[pos];
|
||||
|
||||
// Highlight changes
|
||||
if(_changedList[pos])
|
||||
if(isEditable())
|
||||
{
|
||||
s.fillRect(x - 3, y - 1, _colWidth-1, _rowHeight-1, kDbgChangedColor);
|
||||
s.drawString(_font, buffer, x, y, _colWidth, kDbgChangedTextColor);
|
||||
// Highlight changes
|
||||
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
|
||||
{
|
||||
s.fillRect(x - 3, y - 1, _colWidth-1, _rowHeight-1, kBGColorLo);
|
||||
s.drawString(_font, buffer, x, y, _colWidth, kTextColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,10 +39,11 @@ class ToggleWidget : public Widget, public CommandSender
|
|||
const BoolArray& getState() { return _stateList; }
|
||||
bool getSelectedState() const { return _stateList[_selectedItem]; }
|
||||
|
||||
virtual bool wantsFocus() { return true; }
|
||||
bool wantsFocus() const override { return true; }
|
||||
|
||||
int colWidth() const { return _colWidth; }
|
||||
void setEditable(bool editable) { _editable = editable; }
|
||||
bool isEditable() const { return _editable; }
|
||||
|
||||
protected:
|
||||
|
||||
|
|
|
@ -71,7 +71,8 @@ MODULE_OBJS := \
|
|||
src/debugger/gui/KeyboardWidget.o \
|
||||
src/debugger/gui/GenesisWidget.o \
|
||||
src/debugger/gui/AtariVoxWidget.o \
|
||||
src/debugger/gui/SaveKeyWidget.o
|
||||
src/debugger/gui/SaveKeyWidget.o \
|
||||
src/debugger/gui/DelayQueueWidget.o
|
||||
|
||||
MODULE_DIRS += \
|
||||
src/debugger/gui
|
||||
|
|
|
@ -198,11 +198,6 @@ class Controller : public Serializable
|
|||
Controller::Type xtype, int xid, Controller::Type ytype, int yid)
|
||||
{ return false; }
|
||||
|
||||
/**
|
||||
Returns the name of this controller.
|
||||
*/
|
||||
virtual string name() const override { return myName; }
|
||||
|
||||
/**
|
||||
Returns more detailed information about this controller.
|
||||
*/
|
||||
|
@ -237,6 +232,11 @@ class Controller : public Serializable
|
|||
*/
|
||||
bool load(Serializer& in) override;
|
||||
|
||||
/**
|
||||
Returns the name of this controller.
|
||||
*/
|
||||
string name() const override { return myName; }
|
||||
|
||||
public:
|
||||
/// Constant which represents maximum resistance for analog pins
|
||||
static constexpr Int32 maximumResistance = 0x7FFFFFFF;
|
||||
|
|
|
@ -283,7 +283,7 @@ class AbstractFSNode
|
|||
// AbstractFSNode(AbstractFSNode&&) = default;
|
||||
AbstractFSNode& operator=(const AbstractFSNode&) = default;
|
||||
// AbstractFSNode& operator=(AbstractFSNode&&) = default;
|
||||
virtual ~AbstractFSNode() { }
|
||||
virtual ~AbstractFSNode() = default;
|
||||
|
||||
/*
|
||||
* Indicates whether the object referred by this path exists in the
|
||||
|
|
|
@ -885,6 +885,7 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
|
|||
// Base colors
|
||||
kColor Normal foreground color (non-text)
|
||||
kBGColor Normal background color (non-text)
|
||||
kBGColorLo Disabled background color (non-text)
|
||||
kShadowColor Item is disabled
|
||||
kTextColor Normal text color
|
||||
kTextColorHi Highlighted text color
|
||||
|
@ -915,7 +916,7 @@ void FrameBuffer::VideoModeList::setZoom(uInt32 zoom)
|
|||
*/
|
||||
uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = {
|
||||
// Standard
|
||||
{ 0x686868, 0x000000, 0x404040, 0x000000, 0x62a108, 0x9f0000,
|
||||
{ 0x686868, 0x000000, 0xdccfa5, 0x404040, 0x000000, 0x62a108, 0x9f0000,
|
||||
0xc9af7c, 0xf0f0cf, 0xc80000,
|
||||
0xac3410, 0xd55941, 0xffffff, 0xffd652,
|
||||
0xac3410,
|
||||
|
@ -925,7 +926,7 @@ uInt32 FrameBuffer::ourGUIColors[2][kNumColors-256] = {
|
|||
},
|
||||
|
||||
// Classic
|
||||
{ 0x686868, 0x000000, 0x404040, 0x20a020, 0x00ff00, 0xc80000,
|
||||
{ 0x686868, 0x000000, 0x404040, 0x404040, 0x20a020, 0x00ff00, 0xc80000,
|
||||
0x000000, 0x000000, 0xc80000,
|
||||
0x000000, 0x000000, 0x20a020, 0x00ff00,
|
||||
0x20a020,
|
||||
|
|
|
@ -61,6 +61,7 @@ enum MessagePosition {
|
|||
enum {
|
||||
kColor = 256,
|
||||
kBGColor,
|
||||
kBGColorLo,
|
||||
kShadowColor,
|
||||
kTextColor,
|
||||
kTextColorHi,
|
||||
|
|
|
@ -26,7 +26,9 @@ Paddles::Paddles(Jack jack, const Event& event, const System& system,
|
|||
myMPaddleIDX(-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
|
||||
// devices can be extremely complex
|
||||
|
|
|
@ -24,6 +24,9 @@
|
|||
|
||||
class DelayQueue : public Serializable
|
||||
{
|
||||
public:
|
||||
friend class DelayQueueIterator;
|
||||
|
||||
public:
|
||||
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& operator=(DelayQueueMember&&) = default;
|
||||
|
||||
public:
|
||||
|
||||
typedef vector<Entry>::const_iterator iterator;
|
||||
|
||||
public:
|
||||
|
||||
void push(uInt8 address, uInt8 value);
|
||||
|
||||
void remove(uInt8 address);
|
||||
|
||||
vector<Entry>::const_iterator begin() const {
|
||||
iterator begin() const {
|
||||
return myEntries.begin();
|
||||
}
|
||||
|
||||
vector<Entry>::const_iterator end() const {
|
||||
iterator end() const {
|
||||
return (mySize < myEntries.size()) ? (myEntries.begin() + mySize) : myEntries.end();
|
||||
}
|
||||
|
||||
|
|
|
@ -202,7 +202,6 @@ void Missile::tick(uInt8 hclock)
|
|||
myEffectiveWidth = myWidth;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (++myRenderCounter >= (myIsMoving ? myEffectiveWidth : myWidth)) myIsRendering = false;
|
||||
|
|
|
@ -425,7 +425,6 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
updateEmulation();
|
||||
|
||||
address &= 0x3F;
|
||||
myShadowRegisters[address] = value;
|
||||
|
||||
switch (address)
|
||||
{
|
||||
|
@ -440,14 +439,17 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
mySystem->incrementCycles(mySubClock / 3);
|
||||
mySubClock %= 3;
|
||||
}
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case RSYNC:
|
||||
applyRsync();
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case VSYNC:
|
||||
myFrameManager.setVsync(value & 0x02);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case VBLANK:
|
||||
|
@ -465,21 +467,27 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
// FIXME - rework this when we add the new sound core
|
||||
case AUDV0:
|
||||
mySound.set(address, value, mySystem->cycles());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
case AUDV1:
|
||||
mySound.set(address, value, mySystem->cycles());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
case AUDF0:
|
||||
mySound.set(address, value, mySystem->cycles());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
case AUDF1:
|
||||
mySound.set(address, value, mySystem->cycles());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
case AUDC0:
|
||||
mySound.set(address, value, mySystem->cycles());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
case AUDC1:
|
||||
mySound.set(address, value, mySystem->cycles());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -490,6 +498,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
case COLUBK:
|
||||
myLinesSinceChange = 0;
|
||||
myBackground.setColor(value & 0xFE);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case COLUP0:
|
||||
|
@ -498,6 +507,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
myPlayfield.setColorP0(value);
|
||||
myMissile0.setColor(value);
|
||||
myPlayer0.setColor(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case COLUP1:
|
||||
|
@ -506,6 +516,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
myPlayfield.setColorP1(value);
|
||||
myMissile1.setColor(value);
|
||||
myPlayer1.setColor(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case CTRLPF:
|
||||
|
@ -514,6 +525,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
(value & 0x02) ? Priority::score : Priority::normal;
|
||||
myPlayfield.ctrlpf(value);
|
||||
myBall.ctrlpf(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case COLUPF:
|
||||
|
@ -521,6 +533,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
value &= 0xFE;
|
||||
myPlayfield.setColor(value);
|
||||
myBall.setColor(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case PF0:
|
||||
|
@ -567,33 +580,39 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
case RESM0:
|
||||
myLinesSinceChange = 0;
|
||||
myMissile0.resm(resxCounter(), myHstate == HState::blank);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case RESM1:
|
||||
myLinesSinceChange = 0;
|
||||
myMissile1.resm(resxCounter(), myHstate == HState::blank);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case RESMP0:
|
||||
myLinesSinceChange = 0;
|
||||
myMissile0.resmp(value, myPlayer0);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case RESMP1:
|
||||
myLinesSinceChange = 0;
|
||||
myMissile1.resmp(value, myPlayer1);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case NUSIZ0:
|
||||
myLinesSinceChange = 0;
|
||||
myMissile0.nusiz(value);
|
||||
myPlayer0.nusiz(value, myHstate == HState::blank);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case NUSIZ1:
|
||||
myLinesSinceChange = 0;
|
||||
myMissile1.nusiz(value);
|
||||
myPlayer1.nusiz(value, myHstate == HState::blank);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case HMM0:
|
||||
|
@ -636,11 +655,13 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
case RESP0:
|
||||
myLinesSinceChange = 0;
|
||||
myPlayer0.resp(resxCounter());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case RESP1:
|
||||
myLinesSinceChange = 0;
|
||||
myPlayer1.resp(resxCounter());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case REFP0:
|
||||
|
@ -654,11 +675,13 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
case VDELP0:
|
||||
myLinesSinceChange = 0;
|
||||
myPlayer0.vdelp(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case VDELP1:
|
||||
myLinesSinceChange = 0;
|
||||
myPlayer1.vdelp(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case HMP0:
|
||||
|
@ -676,11 +699,13 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
case RESBL:
|
||||
myLinesSinceChange = 0;
|
||||
myBall.resbl(resxCounter());
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case VDELBL:
|
||||
myLinesSinceChange = 0;
|
||||
myBall.vdelbl(value);
|
||||
myShadowRegisters[address] = value;
|
||||
break;
|
||||
|
||||
case HMBL:
|
||||
|
@ -690,6 +715,7 @@ bool TIA::poke(uInt16 address, uInt8 value)
|
|||
case CXCLR:
|
||||
myLinesSinceChange = 0;
|
||||
myCollisionMask = 0;
|
||||
myShadowRegisters[address] = value;
|
||||
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;
|
||||
}
|
||||
|
@ -1042,10 +1068,21 @@ void TIA::tickHframe()
|
|||
|
||||
myPlayfield.tick(x);
|
||||
|
||||
if (lineNotCached)
|
||||
renderSprites();
|
||||
// Render sprites
|
||||
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())
|
||||
renderPixel(x, y, lineNotCached);
|
||||
|
@ -1064,26 +1101,6 @@ void TIA::applyRsync()
|
|||
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()
|
||||
{
|
||||
|
@ -1178,6 +1195,9 @@ void TIA::clearHmoveComb()
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void TIA::delayedWrite(uInt8 address, uInt8 value)
|
||||
{
|
||||
if (address < 64)
|
||||
myShadowRegisters[address] = value;
|
||||
|
||||
switch (address)
|
||||
{
|
||||
case VBLANK:
|
||||
|
|
|
@ -312,7 +312,7 @@ class TIA : public Device, public PlayfieldPositionProvider
|
|||
/**
|
||||
Retrieve the last value written to a certain register
|
||||
*/
|
||||
uInt8 lastValueWrittenToRegister(uInt8 reg) const;
|
||||
uInt8 registerValue(uInt8 reg) const;
|
||||
|
||||
/**
|
||||
Get the current x value
|
||||
|
@ -349,21 +349,23 @@ class TIA : public Device, public PlayfieldPositionProvider
|
|||
enum Priority {pfp, score, normal};
|
||||
|
||||
enum FixedColors {
|
||||
P0ColorNTSC = 0x30,
|
||||
P1ColorNTSC = 0x16,
|
||||
M0ColorNTSC = 0x38,
|
||||
M1ColorNTSC = 0x12,
|
||||
BLColorNTSC = 0x7e,
|
||||
PFColorNTSC = 0x76,
|
||||
BKColorNTSC = 0x0a,
|
||||
P0ColorPAL = 0x62,
|
||||
P1ColorPAL = 0x26,
|
||||
M0ColorPAL = 0x68,
|
||||
M1ColorPAL = 0x2e,
|
||||
BLColorPAL = 0xde,
|
||||
PFColorPAL = 0xd8,
|
||||
BKColorPAL = 0x1c,
|
||||
HBLANKColor = 0x0e
|
||||
P0ColorNTSC = 0x30, // red
|
||||
M0ColorNTSC = 0x38, // orange
|
||||
P1ColorNTSC = 0x1c, // yellow
|
||||
M1ColorNTSC = 0xc4, // green
|
||||
BLColorNTSC = 0x9e, // blue
|
||||
PFColorNTSC = 0x66, // purple
|
||||
BKColorNTSC = 0x0a, // grey
|
||||
|
||||
P0ColorPAL = 0x62, // red
|
||||
M0ColorPAL = 0x4a, // orange
|
||||
P1ColorPAL = 0x2e, // yellow
|
||||
M1ColorPAL = 0x34, // green
|
||||
BLColorPAL = 0xbc, // blue
|
||||
PFColorPAL = 0xa6, // purple
|
||||
BKColorPAL = 0x0a, // grey
|
||||
|
||||
HBLANKColor = 0x0e // white
|
||||
};
|
||||
|
||||
private:
|
||||
|
@ -386,10 +388,6 @@ class TIA : public Device, public PlayfieldPositionProvider
|
|||
|
||||
void updateCollision();
|
||||
|
||||
void renderSprites();
|
||||
|
||||
void tickSprites();
|
||||
|
||||
void renderPixel(uInt32 x, uInt32 y, bool lineNotCached);
|
||||
|
||||
void clearHmoveComb();
|
||||
|
|
|
@ -13,8 +13,8 @@ MODULE_OBJS := \
|
|||
src/emucore/tia/Background.o \
|
||||
src/emucore/tia/LatchedInput.o \
|
||||
src/emucore/tia/PaddleReader.o \
|
||||
src/emucore/tia/VblankManager.o
|
||||
|
||||
src/emucore/tia/VblankManager.o \
|
||||
src/emucore/tia/DelayQueueIterator.o
|
||||
|
||||
MODULE_DIRS += \
|
||||
src/emucore/tia
|
||||
|
|
|
@ -40,7 +40,7 @@ class ComboDialog : public Dialog
|
|||
void saveConfig() 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:
|
||||
Event::Type myComboEvent;
|
||||
|
|
|
@ -61,13 +61,19 @@ void EditableWidget::setText(const string& str, bool)
|
|||
setDirty();
|
||||
}
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void EditableWidget::setEditable(bool editable)
|
||||
void EditableWidget::setEditable(bool editable, bool hiliteBG)
|
||||
{
|
||||
_editable = editable;
|
||||
if(_editable)
|
||||
{
|
||||
setFlags(WIDGET_WANTS_RAWDATA | WIDGET_RETAIN_FOCUS);
|
||||
_bgcolor = kWidColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
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; }
|
||||
|
||||
bool isEditable() const { return _editable; }
|
||||
void setEditable(bool editable);
|
||||
virtual void setEditable(bool editable, bool hiliteBG = false);
|
||||
|
||||
bool handleText(char text) override;
|
||||
bool handleKeyDown(StellaKey key, StellaMod mod) override;
|
||||
|
||||
// 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
|
||||
void setTextFilter(const TextFilter& filter) { _filter = filter; }
|
||||
|
|
|
@ -189,11 +189,6 @@ LauncherDialog::LauncherDialog(OSystem& osystem, DialogContainer& parent,
|
|||
setListFilters();
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
LauncherDialog::~LauncherDialog()
|
||||
{
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
const string& LauncherDialog::selectedRomMD5()
|
||||
{
|
||||
|
|
|
@ -55,7 +55,7 @@ class LauncherDialog : public Dialog
|
|||
public:
|
||||
LauncherDialog(OSystem& osystem, DialogContainer& parent,
|
||||
int x, int y, int w, int h);
|
||||
virtual ~LauncherDialog();
|
||||
virtual ~LauncherDialog() = default;
|
||||
|
||||
/**
|
||||
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 Variant& getSelectedTag() const { return myMenu->getSelectedTag(); }
|
||||
|
||||
bool wantsFocus() { return true; }
|
||||
bool wantsFocus() const override { return true; }
|
||||
|
||||
protected:
|
||||
void handleMouseDown(int x, int y, int button, int clickCount) override;
|
||||
|
|
|
@ -29,6 +29,7 @@ class StringListWidget : public ListWidget
|
|||
virtual ~StringListWidget() = default;
|
||||
|
||||
void setList(const StringList& list);
|
||||
bool wantsFocus() const override { return true; }
|
||||
|
||||
protected:
|
||||
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)
|
||||
{
|
||||
_editable = editable;
|
||||
if(!_editable)
|
||||
if(_editable)
|
||||
{
|
||||
_bgcolor = kWidColor;
|
||||
}
|
||||
else
|
||||
{
|
||||
_bgcolor = kBGColorLo;
|
||||
setFill(CheckboxWidget::Inactive);
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -96,7 +96,7 @@ class Widget : public GuiObject
|
|||
|
||||
bool isEnabled() const { return _flags & WIDGET_ENABLED; }
|
||||
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 wantsRaw() const { return _flags & WIDGET_WANTS_RAWDATA; }
|
||||
|
||||
|
|
|
@ -537,6 +537,11 @@
|
|||
DCE5CDE31BA10024005CD08A /* RiotRamWidget.cxx in Sources */ = {isa = PBXBuildFile; fileRef = DCE5CDE11BA10024005CD08A /* RiotRamWidget.cxx */; };
|
||||
DCE5CDE41BA10024005CD08A /* RiotRamWidget.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCE5CDE21BA10024005CD08A /* RiotRamWidget.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 */; };
|
||||
DCEECE570B5E5E540021D754 /* Cart0840.hxx in Headers */ = {isa = PBXBuildFile; fileRef = DCEECE550B5E5E540021D754 /* Cart0840.hxx */; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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; };
|
||||
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>"; };
|
||||
|
@ -1427,6 +1437,8 @@
|
|||
2D20F9EB08C603EC00A73076 /* DataGridWidget.hxx */,
|
||||
2D20F9EC08C603EC00A73076 /* DebuggerDialog.cxx */,
|
||||
2D20F9ED08C603EC00A73076 /* DebuggerDialog.hxx */,
|
||||
DCEC58561E945125002F0246 /* DelayQueueWidget.cxx */,
|
||||
DCEC58571E945125002F0246 /* DelayQueueWidget.hxx */,
|
||||
DCCF4AFE14BA27EB00814FAB /* DrivingWidget.cxx */,
|
||||
DCCF4AFF14BA27EB00814FAB /* DrivingWidget.hxx */,
|
||||
DCCF4ADA14B9433100814FAB /* GenesisWidget.cxx */,
|
||||
|
@ -1944,6 +1956,8 @@
|
|||
DCF3A6D01DFC75E3008A8AF3 /* Ball.hxx */,
|
||||
DCF3A6D11DFC75E3008A8AF3 /* DelayQueue.cxx */,
|
||||
DCF3A6D21DFC75E3008A8AF3 /* DelayQueue.hxx */,
|
||||
DCEC585A1E945175002F0246 /* DelayQueueIterator.cxx */,
|
||||
DCEC585B1E945175002F0246 /* DelayQueueIterator.hxx */,
|
||||
DCF3A6D31DFC75E3008A8AF3 /* DelayQueueMember.cxx */,
|
||||
DCF3A6D41DFC75E3008A8AF3 /* DelayQueueMember.hxx */,
|
||||
DCF3A6D51DFC75E3008A8AF3 /* DrawCounterDecodes.cxx */,
|
||||
|
@ -1961,6 +1975,7 @@
|
|||
DCF3A6E11DFC75E3008A8AF3 /* Player.hxx */,
|
||||
DCF3A6E21DFC75E3008A8AF3 /* Playfield.cxx */,
|
||||
DCF3A6E31DFC75E3008A8AF3 /* Playfield.hxx */,
|
||||
DCEC585C1E945175002F0246 /* PlayfieldPositionProvider.hxx */,
|
||||
DCF3A6E41DFC75E3008A8AF3 /* TIA.cxx */,
|
||||
DCF3A6E51DFC75E3008A8AF3 /* TIA.hxx */,
|
||||
DC72B2201E356F4F009056D0 /* VblankManager.cxx */,
|
||||
|
@ -2045,6 +2060,7 @@
|
|||
2D91740E09BA90380026E9FF /* ListWidget.hxx in Headers */,
|
||||
2D91740F09BA90380026E9FF /* Menu.hxx in Headers */,
|
||||
2D91741009BA90380026E9FF /* OptionsDialog.hxx in Headers */,
|
||||
DCEC58591E945125002F0246 /* DelayQueueWidget.hxx in Headers */,
|
||||
2D91741109BA90380026E9FF /* PopUpWidget.hxx in Headers */,
|
||||
2D91741209BA90380026E9FF /* ProgressDialog.hxx in Headers */,
|
||||
2D91741309BA90380026E9FF /* ScrollBarWidget.hxx in Headers */,
|
||||
|
@ -2111,6 +2127,7 @@
|
|||
DC47455609C34BFA00EDDA3A /* BankRomCheat.hxx in Headers */,
|
||||
DC47455709C34BFA00EDDA3A /* Cheat.hxx in Headers */,
|
||||
DC47455909C34BFA00EDDA3A /* CheatCodeDialog.hxx in Headers */,
|
||||
DCEC585F1E945175002F0246 /* PlayfieldPositionProvider.hxx in Headers */,
|
||||
DC47455B09C34BFA00EDDA3A /* CheatManager.hxx in Headers */,
|
||||
DC47455D09C34BFA00EDDA3A /* CheetahCheat.hxx in Headers */,
|
||||
DC47455F09C34BFA00EDDA3A /* RamCheat.hxx in Headers */,
|
||||
|
@ -2121,6 +2138,7 @@
|
|||
DCE3BBFA0C95CEDC00A671DF /* RomInfoWidget.hxx in Headers */,
|
||||
DC07A3C90CAD738A009B4BC9 /* StateManager.hxx in Headers */,
|
||||
DC0984860D3985160073C852 /* CartSB.hxx in Headers */,
|
||||
DCEC585E1E945175002F0246 /* DelayQueueIterator.hxx in Headers */,
|
||||
DCA23AEA0D75B22500F77B33 /* CartX07.hxx in Headers */,
|
||||
DC4613680D92C03600D8DAB9 /* RomAuditDialog.hxx in Headers */,
|
||||
DC487FB70DA5350900E12499 /* AtariVox.hxx in Headers */,
|
||||
|
@ -2307,7 +2325,7 @@
|
|||
29B97313FDCFA39411CA2CEA /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0700;
|
||||
LastUpgradeCheck = 0830;
|
||||
ORGANIZATIONNAME = "Stella-emu";
|
||||
};
|
||||
buildConfigurationList = 2D91752109BA903B0026E9FF /* Build configuration list for PBXProject "stella" */;
|
||||
|
@ -2435,6 +2453,7 @@
|
|||
DC3EE86E1E2C0E6D00905161 /* zutil.c in Sources */,
|
||||
CFE3F60B1E84A9A200A8204E /* CartBUSWidget.cxx in Sources */,
|
||||
DC1B2EC51E50036100F62837 /* AtariMouse.cxx in Sources */,
|
||||
DCEC58581E945125002F0246 /* DelayQueueWidget.cxx in Sources */,
|
||||
2D9174BF09BA90380026E9FF /* FSNode.cxx in Sources */,
|
||||
DCF3A6FE1DFC75E3008A8AF3 /* TIA.cxx in Sources */,
|
||||
2D9174C009BA90380026E9FF /* OSystem.cxx in Sources */,
|
||||
|
@ -2522,6 +2541,7 @@
|
|||
DCF7B0DD10A762FC007A2870 /* CartF0.cxx in Sources */,
|
||||
DCF7B0DF10A762FC007A2870 /* CartFA.cxx in Sources */,
|
||||
DCC527D210B9DA19005E1287 /* M6502.cxx in Sources */,
|
||||
DCEC585D1E945175002F0246 /* DelayQueueIterator.cxx in Sources */,
|
||||
DC3EE86B1E2C0E6D00905161 /* uncompr.c in Sources */,
|
||||
DCC527D610B9DA19005E1287 /* System.cxx in Sources */,
|
||||
DC6B2BA411037FF200F199A7 /* CartDebug.cxx in Sources */,
|
||||
|
@ -2798,23 +2818,29 @@
|
|||
2D91752209BA903B0026E9FF /* Development */ = {
|
||||
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;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
.,
|
||||
"$(HOME)/Library/Frameworks",
|
||||
);
|
||||
GCC_ENABLE_CPP_RTTI = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
|
@ -2828,66 +2854,79 @@
|
|||
INSTALL_PATH = "@rpath";
|
||||
LD_RUNPATH_SEARCH_PATHS = "@loader_path/../Frameworks";
|
||||
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;
|
||||
SDKROOT = macosx;
|
||||
VALID_ARCHS = x86_64;
|
||||
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;
|
||||
};
|
||||
2D91752409BA903B0026E9FF /* Default */ = {
|
||||
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;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
|
||||
GCC_ENABLE_CPP_RTTI = NO;
|
||||
GCC_NO_COMMON_BLOCKS = YES;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
|
|
|
@ -22,27 +22,28 @@
|
|||
<ProjectGuid>{D7FCEC7F-33E1-49DD-A4B0-D5FC222250AD}</ProjectGuid>
|
||||
<RootNamespace>Stella</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
<WindowsTargetPlatformVersion>7.0</WindowsTargetPlatformVersion>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>MultiByte</CharacterSet>
|
||||
<PlatformToolset>v140_xp</PlatformToolset>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
|
@ -282,6 +283,7 @@
|
|||
<ClCompile Include="..\debugger\gui\CartUAWidget.cxx" />
|
||||
<ClCompile Include="..\debugger\gui\CartWDWidget.cxx" />
|
||||
<ClCompile Include="..\debugger\gui\CartX07Widget.cxx" />
|
||||
<ClCompile Include="..\debugger\gui\DelayQueueWidget.cxx" />
|
||||
<ClCompile Include="..\debugger\gui\DrivingWidget.cxx" />
|
||||
<ClCompile Include="..\debugger\gui\GenesisWidget.cxx" />
|
||||
<ClCompile Include="..\debugger\gui\JoystickWidget.cxx" />
|
||||
|
@ -315,6 +317,7 @@
|
|||
<ClCompile Include="..\emucore\tia\Background.cxx" />
|
||||
<ClCompile Include="..\emucore\tia\Ball.cxx" />
|
||||
<ClCompile Include="..\emucore\tia\DelayQueue.cxx" />
|
||||
<ClCompile Include="..\emucore\tia\DelayQueueIterator.cxx" />
|
||||
<ClCompile Include="..\emucore\tia\DelayQueueMember.cxx" />
|
||||
<ClCompile Include="..\emucore\tia\DrawCounterDecodes.cxx" />
|
||||
<ClCompile Include="..\emucore\tia\FrameManager.cxx" />
|
||||
|
@ -558,6 +561,7 @@
|
|||
<ClInclude Include="..\debugger\gui\CartWDWidget.hxx" />
|
||||
<ClInclude Include="..\debugger\gui\CartX07Widget.hxx" />
|
||||
<ClInclude Include="..\debugger\gui\ControllerWidget.hxx" />
|
||||
<ClInclude Include="..\debugger\gui\DelayQueueWidget.hxx" />
|
||||
<ClInclude Include="..\debugger\gui\DrivingWidget.hxx" />
|
||||
<ClInclude Include="..\debugger\gui\GenesisWidget.hxx" />
|
||||
<ClInclude Include="..\debugger\gui\JoystickWidget.hxx" />
|
||||
|
@ -592,6 +596,7 @@
|
|||
<ClInclude Include="..\emucore\tia\Background.hxx" />
|
||||
<ClInclude Include="..\emucore\tia\Ball.hxx" />
|
||||
<ClInclude Include="..\emucore\tia\DelayQueue.hxx" />
|
||||
<ClInclude Include="..\emucore\tia\DelayQueueIterator.hxx" />
|
||||
<ClInclude Include="..\emucore\tia\DelayQueueMember.hxx" />
|
||||
<ClInclude Include="..\emucore\tia\DrawCounterDecodes.hxx" />
|
||||
<ClInclude Include="..\emucore\tia\FrameLayout.hxx" />
|
||||
|
|
|
@ -849,6 +849,12 @@
|
|||
<ClCompile Include="..\emucore\CartCDF.cxx">
|
||||
<Filter>Source Files\emucore</Filter>
|
||||
</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>
|
||||
<ClInclude Include="..\common\bspf.hxx">
|
||||
|
@ -1715,6 +1721,12 @@
|
|||
<ClInclude Include="..\debugger\gui\CartCDFWidget.hxx">
|
||||
<Filter>Header Files\debugger</Filter>
|
||||
</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>
|
||||
<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, " ()"); $$ = $2; 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 = $$; }
|
||||
| EQUATE { if(DEBUG_EXP) fprintf(stderr, " %s", $1); $$ = new EquateExpression($1); lastExp = $$; }
|
||||
| NUMBER { if(DEBUG_EXP) fprintf(stderr, "const %d", $1); $$ = new ConstExpression($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 = $$; }
|
||||
| CART_METHOD { if(DEBUG_EXP) fprintf(stderr, " (CartMethod)"); $$ = new CartMethodExpression($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
|
||||
|
||||
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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -44,7 +44,7 @@
|
|||
#define YYBISON 1
|
||||
|
||||
/* Bison version. */
|
||||
#define YYBISON_VERSION "3.0.2"
|
||||
#define YYBISON_VERSION "3.0.4"
|
||||
|
||||
/* Skeleton name. */
|
||||
#define YYSKELETON_NAME "yacc.c"
|
||||
|
@ -166,7 +166,7 @@ extern int yydebug;
|
|||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
|
||||
union YYSTYPE
|
||||
{
|
||||
#line 28 "stella.y" /* yacc.c:355 */
|
||||
|
@ -181,6 +181,8 @@ union YYSTYPE
|
|||
|
||||
#line 183 "y.tab.c" /* yacc.c:355 */
|
||||
};
|
||||
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
@ -194,7 +196,7 @@ int yyparse (void);
|
|||
|
||||
/* 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
|
||||
# undef short
|
||||
|
@ -1338,215 +1340,215 @@ yyreduce:
|
|||
case 2:
|
||||
#line 66 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 3:
|
||||
#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); }
|
||||
#line 1348 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1350 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 4:
|
||||
#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); }
|
||||
#line 1354 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1356 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 5:
|
||||
#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); }
|
||||
#line 1360 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1362 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 6:
|
||||
#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); }
|
||||
#line 1366 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1368 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 7:
|
||||
#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); }
|
||||
#line 1372 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1374 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 8:
|
||||
#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); }
|
||||
#line 1378 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1380 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 9:
|
||||
#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); }
|
||||
#line 1384 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1386 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 10:
|
||||
#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); }
|
||||
#line 1390 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1392 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 11:
|
||||
#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); }
|
||||
#line 1396 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1398 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 12:
|
||||
#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); }
|
||||
#line 1402 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1404 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 13:
|
||||
#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); }
|
||||
#line 1408 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1410 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 14:
|
||||
#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); }
|
||||
#line 1414 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1416 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 15:
|
||||
#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); }
|
||||
#line 1420 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1422 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 16:
|
||||
#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); }
|
||||
#line 1426 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1428 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 17:
|
||||
#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); }
|
||||
#line 1432 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1434 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 18:
|
||||
#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); }
|
||||
#line 1438 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1440 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 19:
|
||||
#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); }
|
||||
#line 1444 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1446 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 20:
|
||||
#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); }
|
||||
#line 1450 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1452 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 21:
|
||||
#line 87 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 22:
|
||||
#line 88 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 23:
|
||||
#line 89 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 24:
|
||||
#line 90 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 25:
|
||||
#line 91 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 26:
|
||||
#line 92 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 27:
|
||||
#line 93 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 28:
|
||||
#line 94 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 29:
|
||||
#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); }
|
||||
#line 1504 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1506 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 30:
|
||||
#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); }
|
||||
#line 1510 "y.tab.c" /* yacc.c:1646 */
|
||||
{ if(DEBUG_EXP) fprintf(stderr, "const %d", (yyvsp[0].val)); (yyval.exp) = new ConstExpression((yyvsp[0].val)); lastExp = (yyval.exp); }
|
||||
#line 1512 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 31:
|
||||
#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); }
|
||||
#line 1516 "y.tab.c" /* yacc.c:1646 */
|
||||
{ if(DEBUG_EXP) fprintf(stderr, "equate %s", (yyvsp[0].Equate)); (yyval.exp) = new EquateExpression((yyvsp[0].Equate)); lastExp = (yyval.exp); }
|
||||
#line 1518 "y.tab.c" /* yacc.c:1646 */
|
||||
break;
|
||||
|
||||
case 32:
|
||||
#line 98 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 33:
|
||||
#line 99 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 34:
|
||||
#line 100 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 35:
|
||||
#line 101 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
case 36:
|
||||
#line 102 "stella.y" /* yacc.c:1646 */
|
||||
{ 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;
|
||||
|
||||
|
||||
#line 1550 "y.tab.c" /* yacc.c:1646 */
|
||||
#line 1552 "y.tab.c" /* yacc.c:1646 */
|
||||
default: break;
|
||||
}
|
||||
/* 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
|
||||
|
||||
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
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -87,7 +87,7 @@ extern int yydebug;
|
|||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
|
||||
union YYSTYPE
|
||||
{
|
||||
#line 28 "stella.y" /* yacc.c:1909 */
|
||||
|
@ -102,6 +102,8 @@ union YYSTYPE
|
|||
|
||||
#line 104 "y.tab.h" /* yacc.c:1909 */
|
||||
};
|
||||
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue