10391 Commits
Author SHA1 Message Date
Nicolas Pomarède 7dd6a196cd Update WinUAE CPU core version 2026-10-22 19:25:38 +02:00
Nicolas Pomarède 0ad85ddfb2 MMU: honor cache-inhibited pages in fast-cache paths (from WinUAE 6.1.0 beta17+ 2026/10/13)
Merge pull request #529 from reinauer/mmu-cache-state-fixes
2026-10-22 19:19:05 +02:00
Nicolas Pomarède b3770afc35 Fall back to the interpreter for FMOVEM EAs the ARM JIT cannot compile (from WinUAE 6.1.0 beta16+ 2026/10/09)
Merge pull request #524 from midwan/jit-arm-fmovem-unsupported-ea
2026-10-22 19:14:37 +02:00
Nicolas Pomarède 5628f36b4b cpu: mark locals that must survive a TRY with TRY_VOLATILE (from WinUAE 6.1.0 beta19+ 2026/10/22)
Original PR in WinUAE : https://github.com/tonioni/WinUAE/pull/561
"
In plain C (Hatari, Previous) TRY/CATCH is built on setjmp()/longjmp().
A non-volatile automatic variable that is modified after setjmp() and
read after the longjmp() back has an indeterminate value (C11 7.13.2.1):
the compiler may keep it in a register that longjmp() restores to its
value at setjmp() time.

Add TRY_VOLATILE next to the other TRY/CATCH helpers in mmu_common.h.
It expands to volatile in the C build and to nothing in C++, where
try/catch has no such restriction and code generation stays unchanged.

Use it for the locals that are changed inside a TRY block and read
after an exception:

- f in m68k_run_mmu060/040/030: the pre-instruction CCR snapshot the
  CATCH restores for instruction restart.
- first in m68k_run_1_ce, m68k_run_2ce and m68k_run_2p.
- extracycles in m68k_run_3ce.
- descr_num, descr_addr, descr_types, page_addr and cache_inhibit in
  mmu030_table_search, which are used after a bus error during the
  table walk.
"
2026-10-22 19:10:59 +02:00
Eero Tamminen 90949cfa04 docs: update debugger / profiler related documentation
Add section on getting backtraces to debugger manual, and
add recent debugger improvements to the release notes.
2026-10-20 02:39:02 +03:00
Nicolas Pomarède 772cc83d18 In the MIDI's ACIA, use ACIA's common Set_Line_IRQ() instead of calling MFP_GPIP_Set_Line_Input() 2026-10-19 23:01:26 +02:00
Nicolas Pomarède 6eee969442 Refactor ACIA_Set_Line_IRQ_MFP(), use ACIA_IRQ_ON and ACIA_IRQ_OFF instead of 0 and 1 2026-10-19 22:59:26 +02:00
Nicolas Pomarède 7d59188114 Typo : the blitter is connected to GPIP3, not GPIP5 2026-10-19 22:29:06 +02:00
Nicolas Pomarède c7aa11217e On Falcon the blitter has no IRQ line connected to the MFP GPIP3
On the contrary, the DSP's IRQ line is connected to GPIP3
2026-10-19 22:23:21 +02:00
Nicolas Pomarède ae138b94b3 For the Blitter, use a common function to propagate the state of the IRQ line to the MFP 2026-10-19 22:21:23 +02:00
Nicolas Pomarède 28bebefedd Indent code 2026-10-19 19:35:37 +02:00
Eero Tamminen 23bc8971c6 debugger: memdump switch from super/user back to physical mode
Previous commit allows switching memdump from physical to MMU
translated mode, but not back. Fix that.

Also reorganize & document the dumping function a bit.
2026-10-19 17:08:00 +03:00
SlaapliedjeandClaude Fable 5.1 31cdcca2aa debugger: memdump through the MMU (68030/040/060)
`m [s|u] [b|w|l] <address>` reads logical addresses through the MMU as
supervisor (s) or user (u) data instead of physical memory, so a
breakpoint script can inspect a kernel stack or a process's memory. The
address space is independent of the item size; items the MMU can't
translate print as "--"; `m` without arguments continues in the same
address space; and s/u fail unless an MMU is translating. Works with the
68030, 68040 and 68060 MMUs.

The translation uses the core's debugger functions
(debug_mmu030_translate / debug_mmu_translate), which don't write the
descriptors' used/modified bits but do flush the ATC, and whose faults
stay out of the trace.

Tested with a hand-built page table on 68030/040/060 (`m u` returns the
mapped physical pages, across a page boundary; an unmapped page prints
"--"), in user processes under Atari System V (030) and m68k Linux
(040/060), and without an MMU.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 17:08:00 +03:00
SlaapliedjeandClaude Fable 5.1 db4faac5c1 debugger: MMU page faults in the cpu_exception trace
An MMU page fault showed in the cpu_exception trace only as a bus error,
without what caused it. Log the faulting address, direction, function
code and PC, with the SSW (68030, 68040) or FSLW (68060). Faults from
the debugger's own translations (mmu_debugger set) are not logged.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-19 17:08:00 +03:00
Craig Carnell 1262318909 Add basic retropad mappings for retro core 2026-10-18 18:33:28 +02:00
Craig Carnell cb4e6b3cb3 Add retro savestate implementation 2026-10-18 18:27:33 +02:00
Craig Carnell 15f1fa925a Add disk control to retro core / insert disk b 2026-10-18 18:17:57 +02:00
Craig Carnell eed8c201dd Add v2 options to retro core 2026-10-18 18:09:50 +02:00
Eero Tamminen 4ed05638b1 Add new STE + Falcon programs to Hatari compatibility documentation
Add several AI-assisted STE and Falcon programs recenly announced at
Atari-Forum, which seem both actively developed and tested on real HW.

(They are tested both by developer and users, though STE game
developers might have either STE or MegaSTE, not both.)

Updated also notes for few already listed games.
2026-10-18 17:57:49 +03:00
Nicolas Pomarède 6c80daaf18 nvram/mc146818 : after a reset, VRT bit should always be set in reg D
VRT bit was previously reset during a cold boot, which caused TOS to not
used the stored date/time in the RTC part of the chip
2026-10-17 12:49:29 +02:00
Nicolas Pomarède 92e05730a8 Add content of nvram/mc146818 to the memory snapshot 2026-10-16 17:51:16 +02:00
Eero Tamminen 32cf7d1a82 Add EmuTOS compatibility notes for recent games + other programs 2026-10-14 01:42:14 +03:00
Nicolas Pomarède ae4456338c Use some different frequencies for DMA audio in TT mode (thanks to Miro Kropacek for the report)
As the TT uses a 32.215905 MHz master clock divided by 320,640,1280 and 2560 we get
some slightly faster replay frequencies of 50337, 25169, 12584, 6292 Hz on TT
instead of 50066, 25033, 12517, 6258 Hz on STE
2026-10-12 22:23:43 +02:00
Nicolas Pomarède b7d7affacc TT uses a master clock of 32.215905 MHz, there's no PAL/NTSC variant, video is VGA (thanks to Miro Kropacek) 2026-10-12 21:53:45 +02:00
Eero Tamminen 2cddcbf027 Improve profiling script and its manual page slightly 2026-10-10 20:24:26 +03:00
Eero Tamminen 296c6b41ce Add script for profiling Atari programs with Hatari 2026-10-10 18:47:38 +03:00
Nicolas Pomarède c61e3d69f0 nvram/mc146818 : at boot, set RTC mode to binary and not BCD (TOS and EmuTOS don't handle BCD) 2026-10-10 12:12:09 +02:00
Nicolas Pomarède 631801447a Really fix "label followed by a declaration is a C23 extension" (not just for mingw) 2026-10-09 23:48:01 +02:00
Nicolas Pomarède da993ee039 Fix mingw build error "label followed by a declaration is a C23 extension" 2026-10-09 23:42:39 +02:00
Nicolas Pomarède 256ede25c2 Fix 'info nvram' debugger command + cosmetic changes 2026-10-09 23:24:44 +02:00
Nicolas Pomarède 7add31076f nvram/mc146818 : change the functions used to init the RTC with the localtime of the host PC 2026-10-09 23:24:44 +02:00
Nicolas Pomarède 309cfc5ecd nvram/mc146818 : add support for the periodic timer and its interrupt
The periodic timer is used by Atari System V unix version (ASV) and runs at 128 Hz
2026-10-09 23:24:44 +02:00
Nicolas Pomarède 8c3e2904f1 Add clock freq definition for the rtc/nvram MC146818A / DS1287 used in TT / Falcon 2026-10-09 23:24:44 +02:00
Nicolas Pomarède 519570ebad nvram/mc146818 : handle UIP bit and UF interrupt flag when clock is updated every second 2026-10-09 23:24:44 +02:00
Nicolas Pomarède f1c3247c9e nvram/mc146818 : rename / remove some #define's 2026-10-09 23:24:44 +02:00
Nicolas Pomarède 85b7b2148b nvram/mc146818 : improve RTC, allow writing to date/time regs and update clock every second 2026-10-09 23:24:44 +02:00
Nicolas Pomarède 5ae7910fd5 nvram/mc146818 : add support for updating irq state (connected to TT MFP GPIP6) 2026-10-09 23:24:44 +02:00
Nicolas Pomarède ffb784dc4d nvram/mc146818 : minor changes, use hex values for registers' index 2026-10-09 23:24:44 +02:00
Eero Tamminen 86b08d3a28 Note _bootdrv change in release-notes 2026-10-09 21:18:55 +03:00
SlaapliedjeandClaude Fable 5.1 72bb42efdb gemdos: set _bootdev to the GEMDOS HD boot drive once TOS has booted
Hatari sets _bootdev (0x446) to the boot drive before TOS starts, but a
cold start of TOS 1.04, 1.06, 1.62, 2.06 or 4.04 clears low RAM,
including it, and TOS then sets _bootdev only from its own boot (a
floppy or a hard-disk driver's boot sector), which a GEMDOS HD boot has
neither of. So it stays 0 and programs that build paths from it look on
drive A. TOS 3.06 leaves the variable alone and EmuTOS sets it itself;
with --fast-boot TOS skips the RAM clear and the pre-boot value
survives.

Write it once more from GemDOS_Boot(), after TOS has initialised and
before the AUTO folder runs; later changes (MiNT, drivers) are left
alone.

Measured with a probe in the AUTO folder and on the desktop, booting
from a GEMDOS HD with fast boot off: _bootdev is 2 in both places on all
of these TOS versions. Dgetdrv() in the AUTO folder still returns 0 on
them; that is TOS's own state.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-09 20:49:15 +03:00
SlaapliedjeandClaude Opus 5.5 5dc31d4e7e ncr5380: the TT's SCSI interrupt line drops when the interrupt is reset
Reading register 7 cleared scsi->irq but left the TT-MFP GPIP7 line
high (the Falcon path already clears its FDC IRQ source), so after the
first interrupt every later one made no edge on the MFP. Atari System V
waits for these interrupts and loops on "SCSI bus timedout, resetting".

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-07 15:30:50 +02:00
SlaapliedjeandClaude Opus 5.5 08f25e1dbe ncr5380: MODE SELECT takes its parameter list length from the CDB
scsi_emulate_analyze() starts from the previous command's
ScsiBus.data_len, and MODE SELECT had no case of its own, so a MODE
SELECT (6) or (10) with an empty parameter list asked for a DATA OUT
phase of that stale length (18 bytes after a REQUEST SENSE). The bus
then stayed in DATA OUT and the following commands never reached the
target. WinUAE's scsi.cpp has the same two cases.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-07 15:23:09 +02:00
Nicolas Pomarède b166d8c831 ARM JIT: handle shift counts 32-63 in register shifts (not used in Hatari) (from WinUAE 6.1.0 beta16+ 2026/10/05) 2026-10-05 18:54:01 +02:00
Nicolas Pomarède 825e811638 debug_safe_addr(): restore regs.s when the MMU translation faults (PR from slaapliedje) (from WinUAE 6.1.0 beta16 2026/10/05) 2026-10-05 18:50:50 +02:00
SlaapliedjeandClaude Fable 5.1 922ec33cbf hdc: mode page 3, and a page 4 geometry that matches it
MODE SENSE gains the format device page (3): 32 sectors per track, the
block size, hard sectored; it is also in the all-pages reply. Page 4 now
reports the cylinders for the same 128 heads x 32 sectors geometry; it
reported hdSize/128 cylinders, i.e. one sector per track. Page 4's mode
data length is now 27, matching the 28 bytes sent (it said 24).

Co-Authored-By: Claude Fable 5.1 <[email protected]>
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
2026-10-04 10:40:23 +02:00
Nicolas Pomarède 0af3e2f652 Fix typo in DIM_WriteDisk() when libz is not used (reported by Darren Birks) 2026-10-04 10:28:21 +02:00
Uwe Seimet 028dbf7f01 Update response data format for SCSI-2 and newer 2026-10-02 21:34:19 +03:00
Nicolas Pomarède a5a8bfdada Revert part of commit 9f8f02d5 that forces MFP_TT_GPIP_LINE_SCSI_NCR to LOW, as this breaks other part of SCSI emulation
Thanks to Uwe Seimet for testing and reporting this issue
2026-10-02 11:16:12 +02:00
Nicolas Pomarède f4d65f4cec Update CPU core version 2026-09-30 18:19:33 +02:00
Nicolas Pomarède d2a39aa0c0 68040/68060 MMU: debug memory reads select instruction or data space by FC bit 1 (PR from slaapliedje) (from WinUAE 6.1.0 beta16+ 2026/09/30)
Original PR : https://github.com/tonioni/WinUAE/pull/513/changes/0d943e1ee9110e284e5d0dfa7ce37afbb4086152
2026-09-30 18:13:35 +02:00