2113 Commits

Author SHA1 Message Date
joevt
7e9bf45f3d scsihd: Fix data_buf size.
This fix will be replaced by having ScsiHardDisk use BlockStorageDevice.
2025-02-08 12:33:47 -07:00
dingusdev
49a97bd487 Added ability to set up keyboard 2025-01-31 17:06:15 -07:00
joevt
2f30395d00 Break long lines.
Make them 130 characters or less.
2025-01-30 06:30:51 -07:00
dingusdev
8de2c9dafc Start i18n 2025-01-29 21:14:36 -07:00
dingusdev
66f2c79605 Avoid MSVC compiler bug.
Use define instead of template for pm7500_settings<>

Co-Authored-By: joevt <950609+joevt@users.noreply.github.com>
2025-01-27 20:53:27 -07:00
dingusdev
1a7ccce774
Merge pull request #136 from mihaip/upstream-nofpu-perf
Mitigate performance impact of respecting FP bit
2025-01-26 05:42:11 -07:00
Mihai Parparita
134339ae9d Mitigate performance impact of respecting FP bit
In #135 we switched from a static OpcodeGrabber table to a
curOpcodeGrabber pointer in ppc_main_opcode. This results in an extra
indirection (as far as generated assembly having an additional load),
which reduces execution speed.

Switch to making the opcode grabber into a parameter to
ppc_main_opcode, and make ppc_exec_inner keep it up to date (via an
EXEF_OPCODE exception flag).

Also fixes FPU instructions in ppctests - we now need to set the FP
MSR bit when initializing the CPU.
2025-01-25 17:58:31 -08:00
dingusdev
7df166a99e
Merge pull request #135 from mihaip/upstream-nofpu
Respect FP bit in MSR when running floating point instructions
2025-01-21 06:53:14 -07:00
Mihai Parparita
acc6e77ec5 Respect FP bit in MSR when running floating point instructions
Rather than running them normally, they should trigger a "no FPU"
exception. This appears to be required to allow correct graphical
rendering under Mac OS X - the FP bit cleared via mtmsr and rfi
instructions and something else appears to be relying on the exception
to be thrown.

Implemented by maintaining a parallel version of the OpcodeGrabber
table (OpcodeGrabberNoFPU) which contains alternate implementations
for all the floating point instructions. We switch the table whenever
the MSR value changes. This should minimize the overhead of doing
these checks.
2025-01-20 23:19:37 -08:00
joevt
38c4f1e4cc memaccess: Fix comments for some 64 bit macros. 2025-01-14 19:06:28 -07:00
dingusdev
a6483fa895
Merge pull request #133 from mihaip/upstream-max-scsi-size
scsi: Check for maximum transfer size
2025-01-08 07:35:07 -07:00
Mihai Parparita
40617692b8 scsi: Check for maximum transfer size
Better to fail immediately than to have a buffer overflow.
2025-01-07 22:52:00 -08:00
Maxim Poliakovski
a5ba986666 debugger: set maximal 68k instruction length to 12. 2025-01-06 14:30:13 +01:00
Maxim Poliakovski
497ab52ff0 nubusutils.cpp: break long lines. 2025-01-04 23:00:11 +01:00
joevt
24baf77dba nubusutils: rom_size fixes.
Support 64-bit file size.
Abort if file size > 16 MiB.
Calculate lane expanded memory size using integer arithmetic only.
Allocated memory is rounded to 4096 bytes. This can be adjusted. The lowest rounding of 4 would be "+ 3) / 4 * 4" instead of "+ 4095) / 4096 * 4096".
Abort if ROM size after lane expansion is > 16 MiB.
Expand lanes starting with the last byte instead of the first since the last byte must align with the last used lane of the memory range.
Include ROM image name in exceptions.
2025-01-04 12:27:46 -07:00
Maxim Poliakovski
ce245f8885 Move SAA7187 emulator to devices/video 2025-01-03 18:11:57 +01:00
Maxim Poliakovski
e508031c98 Move Athens emulator to devices/common/clockgen 2025-01-03 17:47:04 +01:00
Maxim Poliakovski
4ed13cdd04 control: break long lines. 2025-01-02 23:27:23 +01:00
Maxim Poliakovski
f31f13f77b Add nubusutils for handling DeclROMs for Nubus/PDS/VDS cards. 2024-12-30 13:04:47 +01:00
joevt
e63f928a3c ppcexec: Simplify ppc_exec_inner.
One while loop instead of two.
One call to ppc_read_instruction instead of four.
2024-12-17 19:01:34 -07:00
joevt
7b1ea17fb8 ppcmmu: Fix compiler warning. 2024-12-17 18:46:53 -07:00
dingusdev
240ec95a74 bench1: Set power_off_reason. 2024-12-17 18:46:20 -07:00
joevt
ee45291533 superdrive: Make sure track remains in range. 2024-12-17 07:16:13 -07:00
joevt
f813aed1ce superdrive: One exit path for status. 2024-12-17 07:11:01 -07:00
joevt
a62954d1a7 superdrive: Separate function for set_motor_stat. 2024-12-17 07:10:22 -07:00
joevt
30582cfb05 main: Make realtime and debugger flags exclusive.
Put them in a separate option group named "execution mode" and specify that only one of them can be selected.
CLI11 will handle the error message if the user attempts to set both options.
2024-12-16 07:12:26 -07:00
joevt
355738d42b machinefactory: ROM identification changes.
Read ROM file once.
Identify 68K and New World ROMs.
Improve identification of Old World ROMs.
Perform checksum checks.
Identify the ROM even if the user specifies a machine option.
2024-12-15 18:53:48 -07:00
Maxim Poliakovski
749e296796 scsihd: use legacy vendor name
supported by legacy low-level disk initialization SW.
2024-12-14 22:33:22 +01:00
joevt
e4d9cb95b4 ppcexec: Make ppc_exec template functions. 2024-12-14 06:32:07 -07:00
joevt
98c7e224fe ppcmacros: Make rot_sh unsigned. 2024-12-14 06:31:59 -07:00
joevt
ac0faf78fd poweropcodes: Fix more compiler warnings. 2024-12-14 06:31:51 -07:00
dingusdev
f08554758b Fixed working directory code
Should work on both Windows and Unix systems
2024-12-13 18:32:52 -07:00
dingusdev
b302014ee1 Revert "main: Add a working directory option."
This reverts commit 210199db1ce4760b57e6d7f297a5514042f43617.
2024-12-13 08:11:12 -07:00
joevt
210199db1c main: Add a working directory option.
This is an alternative method for specifying the working directory.
Normally, the user would change the directory before executing dingusppc to set the working directory.
The working directory is the default location for files and sockets used by dingusppc (the bootrom file, symbols file, nvram, pram, serial port sockets, logs, etc.)
2024-12-13 08:06:23 -07:00
joevt
d48eefceb0 poweropcodes: Remove undefined behavior.
Shift 32 is undefined.
-2^31 - 1 is undefined.
2024-12-12 08:03:47 -07:00
joevt
394fdd00f0 machinegazelle: Support 160 MB RAM. 2024-12-10 18:22:02 -07:00
joevt
78f62c8db8 ppcfpopcodes: Use macros for ppcstate.
Helps with abstraction.
2024-12-10 18:18:32 -07:00
joevt
a64b000459 ppcfpopcodes: Remove extra space. 2024-12-10 18:18:23 -07:00
joevt
1da7cb1c2f ppcmacros: Remove semicolon from one line macros. 2024-12-10 18:18:12 -07:00
joevt
49b8c4c39f ppcfpopcodes: Fix Revert Tweak.
Fixes lfsu, lfsux, lfdu, lfdux so they correctly update rA as before.
2024-12-11 00:19:06 +01:00
joevt
bf4ee72c0f machinetnt: Chaos is optional.
It's not used for Power Mac 9500/9600.
2024-12-08 12:39:07 -07:00
joevt
3124b10eaa Implement DIMM properties. 2024-12-08 12:26:14 -07:00
dingusdev
47969d9d50 Reverting tweak
Restoring Virtus Player back to 'normal'
2024-12-07 20:49:00 -07:00
dingusdev
c0a06a88c7
Merge pull request #132 from mihaip/upstream-volatile
Suppress Clang warnings about `volatile` being deprecated
2024-12-07 16:40:57 -07:00
Mihai Parparita
ab5f7071ce Suppress Clang warnings about volatile being deprecated 2024-12-07 15:30:24 -08:00
joevt
f42b239713 heathrow: Use mask, not minus, for address decode. 2024-12-07 10:12:01 -07:00
joevt
bfc51b8967 heathrow: Add missing this. 2024-12-07 10:04:15 -07:00
joevt
9c66a56a65 heathrow: Replace res with value. 2024-12-07 09:58:55 -07:00
joevt
cea889bde5 ppcopcodes: Cleanup lzu lzux lhau lhaux. 2024-12-07 06:34:00 -07:00
joevt
78696aa822 chario: Use "this" for class fields. 2024-12-06 07:25:14 -07:00