Commit Graph

987 Commits

Author SHA1 Message Date
joevt
86d8ae0911 soundserver_cubeb: Verify buffer is not null. 2024-05-05 06:52:59 -07:00
joevt
900e58f0ad swim3: Set write protect by default.
Until write support is added.
2024-05-01 06:52:11 -07:00
joevt
62e80c0c2f superdrive: Add name. 2024-05-01 06:52:01 -07:00
joevt
3483bebdb4 ati: Fix ver_blank calculation. 2024-04-25 06:52:00 -07:00
joevt
11d61359c1 dbdma: Add data callbacks.
Allow the dbdma program to initiate reading/writing by adding in and out callbacks.
Support the DBDMA flush command by adding a flush callback. If the transfer completes, then clear the flush flag, otherwise leave it unchanged.
Clear the flush flag after it is copied to the xferStatus of the DBDMA command.
2024-04-24 07:09:56 -07:00
joevt
721c70166c control: Fix 1280x960 and 1280x1024 15bpp.
Change the fb_ptr. This also affects the hardware cursor.
Tested with 4MB of VRAM.
2024-04-24 06:48:41 -07:00
joevt
861c2d4f04 athens: Allow P2_MUX bit 6 to be 1.
For modes 12 inch RGB 512x384@60 and VGA 800x600@72.
2024-04-24 06:48:27 -07:00
joevt
da203b69c5 escc: One return path for read. 2024-04-24 06:48:02 -07:00
joevt
159fe8d48e escc: Attempt to add DBDMA support.
Move dma channels from EsccController to EsccChannel.
Add DBDMA callbacks.
2024-04-24 06:46:35 -07:00
joevt
6adba32238 atirage: Update VBLANK bit.
It should not remain set.
2024-04-23 21:35:47 -07:00
joevt
d96da6434f atirage: Redraw framebuffer if DAC or fb changes. 2024-04-23 21:35:34 -07:00
joevt
5f37421ceb atirage: Add ability to read from PCI option rom.
Usually there is not PCI option rom if the chip is built-in to the motherboard such as in the Beige G3.
2024-04-23 08:01:54 -07:00
dingusdev
6f64e729c8 Tweak logging value for compiling 2024-04-23 07:59:23 -07:00
joevt
288e088f8a atirage: Fix hardware cursor update.
Switching from Watch to Arrow cursor at vertical position zero (top of the screen) would sometimes cut off the top half of the Arrow cursor. The following changes fix this:

Use the new cursor_dirty flag to signal when the cursor should be updated. This reduces the number of cursor updates and doesn't depend on registers being accessed in a specific order.

Set the cursor_dirty flag for any change that should cause the hardware cursor to be updated:
- CUR_CLR0, CUR_CLR1: Cursor color changes. We don't check if the colors actually changed (all cursors are usually black and white). Rather, writes to these registers usually means the cursor bytes have changed or will change.
- CUR_OFFSET: Offset to cursor bytes.
- CUR_VERT_OFF: First vertical line of cursor to draw.
Other changes that don't require the cursor to be updated:
- CUR_HORZ_OFF: Horizontal offset of cursor position. The cursor is unchanged - just need to adjust the drawing position.
- CUR_HORZ_VERT_POSN: The cursor is unchanged - only the drawing position is changed.
The only thing that could change the cursor that we don't check is a change to the cursor bytes.
2024-04-23 07:58:20 -07:00
joevt
3797fdbf1b atirage: Move fb_pitch calculation. 2024-04-23 07:55:51 -07:00
joevt
3036f4676d Use default window size in constructor.
The window size should be changed later by the mon_id property.
2024-04-23 07:27:52 -07:00
joevt
e14b6677b2 displayid: Fix non-extended sense codes.
Sense codes for displays like the 12 inch RGB display (512x384) weren't working since they had the extended part set to 0xff.
Related to issues #25.
Also added some descriptive information and sizes which may be used for UI purposes such as creating a menu of displays to choose from. The sizes may be used to set the default window size for the display.
2024-04-23 06:52:38 -07:00
joevt
76f966845d viacuda: Use timer ids instead of timer flags. 2024-04-23 06:44:02 -07:00
joevt
288d97f24c atimach64gx: Add missing WRITE_VALUE_AND_LOG.
This commit fixes conflict resolution mistakes in the following commits:
"atimach64gx: Let crtc_update calculate fb_ptr."
"atimach64gx: Redraw only when necessary."

"atimach64gx: Log unhandled overlay registers." was mistakenly included in "atimach64gx: Let crtc_update calculate fb_ptr.". The OVR_ registers were included because they may be needed for 2D acceleration in System 7.5.3 and later.
2024-04-23 06:43:08 -07:00
joevt
755dd7f60a atimach64gx: Redraw only when necessary. 2024-04-22 20:13:37 -07:00
joevt
e6d669d187 atimach64gx: Check end of regs region.
There's only up to 256 regs.
2024-04-22 20:02:38 -07:00
joevt
0d1a2d3010 atimach64gx: Cleanup. 2024-04-22 20:00:54 -07:00
joevt
51af94f12d atimach64gx: Add properties. 2024-04-22 20:00:38 -07:00
joevt
8d7ca7fb03 scsibus: Use bus name in log messages. 2024-04-22 07:50:01 -07:00
joevt
bc691a9d86 scsibus: Check for invalid target_id. 2024-04-22 07:48:37 -07:00
joevt
2c79171be6 atimach64gx: Fix CONFIG_CNTL and MM_REGS_OFFSET.
Init them to defaults.
Make CONFIG_CNTL 8 bytes so unaligned read/write is easier.
Write changes to CONFIG_CNTL even if offset + size is > 4.
Log aperture change only if first byte (LSB) of CONFIG_CNTL is written. The driver might only write to the 2 most significant bytes which won't affect aperture size.
Offset and size are applied to the destination, not to source value, so we shouldn't use extract_bits when logging value.
Use ATI bitfield enums in switch statement.
2024-04-22 07:48:00 -07:00
joevt
e91432f939 atimach64gx: Fix interrupts.
Required for moving the mouse.
2024-04-22 07:33:08 -07:00
joevt
ea7b9db078 atimach64gx: Reset comp_index to 0. 2024-04-22 07:32:51 -07:00
joevt
a22bc34816 viacuda: Fix get/set time and one sec modes.
The first packet the one sec mode should send is a mode 1 real time packet, same as GET_REAL_TIME.
A mode 2 packet is the same but doesn't include the time.
2024-04-22 07:22:49 -07:00
joevt
2b76d8a53a viacuda: Remove parameters from pseudo_command.
They are incomplete or unused (includes cmd and count but not the data and the count isn't used). Might as well get everything from the class fields in_buf and in_count.
2024-04-22 07:11:22 -07:00
joevt
5f6b924004 appleramdac: Cursor lo-byte position delay option. 2024-04-22 14:51:16 +02:00
Maxim Poliakovski
e5282f9852 Initial Taos emulation. 2024-04-22 00:15:29 +02:00
Maxim Poliakovski
b2c342e453 atimach64gx: break long lines. 2024-04-21 23:16:35 +02:00
Maxim Poliakovski
3aad040f28 mesh: improve exception register emulation. 2024-04-21 23:04:12 +02:00
Maxim Poliakovski
e722ef3e8a memctrlbase: add get_region_hostmem_ptr(). 2024-04-21 23:04:12 +02:00
Maxim Poliakovski
e94be9acee scsibus: break long lines, fix indentation. 2024-04-21 23:04:12 +02:00
joevt
ae5a1331b6 atimach64gx: Remove abort for not loaded ROM.
Allows emulating non-ROM variant of a PCI card by just removing the ROM file.
2024-04-21 13:56:42 -07:00
joevt
a0052b7b9a appleramdac: Use local variable during loop. 2024-04-21 13:55:44 -07:00
joevt
503ee92528 appleramdac: Always change cursor position.
Tests in Open Firmware confirm that writing to CURSOR_POS_LO will change the cursor position even if a write to CURSOR_POS_HI doesn't happen.
2024-04-21 13:41:06 -07:00
joevt
382246905b videoctrl: Init palette to black. 2024-04-21 06:06:13 -07:00
joevt
a5241d27c1 viacuda: Cleanup. 2024-04-21 06:03:32 -07:00
joevt
4479ecb1bb viacuda: One exit path for read. 2024-04-21 06:03:17 -07:00
joevt
b454ab45fe viacuda: Spelling. 2024-04-21 06:02:52 -07:00
joevt
d06d80619e viacuda: Add 1 Sec Timer, fix Get/Set Real Time.
GET_REAL_TIME was using the wrong offset and wasn't setting out_count.

May need to add time zone offset which could be different between host and guest.
get-time and set-time can be tested in Open Firmware.
SET_REAL_TIME is used by the Date/Time Control Panel when you change the date.
It is unknown what method Mac OS uses to get the time at boot. Mac OS 8.6 does not use GET_REAL_TIME during boot, so the time is left as 12:00 AM Jan 1, 1904.
2024-04-21 06:01:40 -07:00
Maxim Poliakovski
9a70c3bdb0
Remove bogus atirage128.cpp 2024-04-15 17:17:04 +02:00
dingusdev
103ef6169c Continued expanding zdocs 2024-04-15 07:52:09 -07:00
Maxim Poliakovski
781d9b46da athens: allow setting custom XTAL frequency. 2024-04-15 14:38:46 +02:00
Maxim Poliakovski
ffa221192d athens: use component's name in logging messages. 2024-04-15 14:21:08 +02:00
Maxim Poliakovski
751f964139 athens: clean up initialization. 2024-04-15 14:21:08 +02:00
joevt
14f75d834a macio: Add list of OHare/Heathrow bits. 2024-04-12 19:54:34 -07:00
Maxim Poliakovski
96efc99a00 control: clean up register bit definitions. 2024-04-11 17:50:50 +02:00
Maxim Poliakovski
45d2c8854d Revert "macio: Add fatman bits register."
This reverts commit 8aaf211c5b.
2024-04-11 17:18:20 +02:00
Maxim Poliakovski
c22843f238 appleramdac: vendor ID for AT&T fabbed RAMDACs. 2024-04-11 17:10:44 +02:00
joevt
1c5009fcb0 amic: Add more registers. 2024-04-10 20:59:34 -07:00
joevt
bd63d1dcda platinum: Validity check before enable display. 2024-04-10 20:56:51 -07:00
joevt
8aaf211c5b macio: Add fatman bits register.
This register is used in the control ndrv to detect presence of connected S-Video or composite video display.
2024-04-10 20:48:29 -07:00
joevt
8cc5838efe control: More register bits. 2024-04-10 20:48:12 -07:00
joevt
be27ceed00 machinetnt: Remove sixty6 and mesh properties.
Use the presence of the devices in the MachineDescription to determine these.
2024-04-10 20:19:43 -07:00
joevt
1d75730d44 dbdma: Do interrupt on main thread.
These may be triggered by other threads (such as for audio) so use the timer manager to handle them in the main thread.
2024-04-10 19:17:49 -07:00
joevt
95d74a6940 scsihd: Check Lun for INQUIRY.
INQUIRY now returns 0x7f for device type if LUN doesn't match. INQUIRY can get LUN from CDB or from IDENTIFY message.
2024-04-10 19:02:01 -07:00
joevt
c6ea3a374e control: Fix PAL/NTSC interlaced display. 2024-04-10 07:32:35 -07:00
Maxim Poliakovski
1c8702d67a Add missing credits. 2024-04-09 01:51:51 +02:00
Mihai Parparita
cf4913deb0 bandit: Fix regression in non-Aspen PCI bridge
Refactor from e7da98b6bd accidentally
made the non-Aspen PCI code path for CONFIG_ADDR writes by a no-op.
2024-04-08 15:41:19 -05:00
Maxim Poliakovski
4c9fe06229 Implement Aspen memory controller. 2024-04-08 00:44:24 +02:00
Maxim Poliakovski
e7da98b6bd bandit: implement Aspen style PCI bridge. 2024-04-08 00:44:24 +02:00
Maxim Poliakovski
dcdfaabedf dbdma: skip transfer commands with reqCount=0. 2024-04-07 20:39:24 +02:00
Maxim Poliakovski
073b8fd981 atimach64defs: add ATI_DP_CHAIN_MSK register definition. 2024-04-07 18:48:52 +02:00
Maxim Poliakovski
d7749e0a2c awacs: small cosmetic improvements. 2024-04-07 18:48:52 +02:00
Maxim Poliakovski
7972a0f2a8 hammerhead: use instance name in logging messages. 2024-04-07 18:48:52 +02:00
Maxim Poliakovski
19dcb43658 pcibase.h: remove superfluous spaces. 2024-04-07 18:48:52 +02:00
joevt
d0a5a1e7be Add ability to override built-in GPU. 2024-04-04 19:04:06 -07:00
joevt
077e6ebae5 machineid: Don't decode board register address.
All addresses return the same value. Converted for Board Register 1 and Board Register 66.
2024-04-03 19:53:03 -07:00
joevt
abe0c14301 scsibus: push_data of zero bytes is ok.
It just means the data hasn't been put on the fifo yet.
2024-04-03 19:51:50 -07:00
joevt
61576d4032 sc53c94: Check drq_cb. 2024-04-03 19:35:58 -07:00
joevt
782a8d2c3c sc53c94: CMD_COMPLETE_STEPS includes INTSTAT_SO.
Last step of CMD_COMPLETE_STEPS includes INTSTAT_SO to indicate to CurioSCSIController::fsmCompleting that it returned both a status byte and a message byte in the FIFO.
2024-04-03 19:35:27 -07:00
joevt
e619dd2493 sc53c94: CMD_COMPLETE and XFER_END goes to IDLE.
CMD_COMPLETE and XFER_END goes to the IDLE sequence state so that reentry doesn't cause a second interrupt.
2024-04-03 19:35:13 -07:00
joevt
8a1055ed1b sc53c94: Add DBDMA support.
- For pdm/amic, real_dma_xfer is called when SCSI_DMA_Ctrl has the run bit set.
- For tnt/grandcentral, dma_wait is called when the DBDMA is started (run bit is set). It will call real_dma_xfer when the phase and sequence are DATA_IN/RCV_DATA or DATA_OUT/SEND_DATA.
- dma_wait and real_dma_xfer uses a one shot timer instead of a loop to continue doing DMA while also giving time to the CPU. This and the above changes handles the case where the DBDMA is started before setting up the transfer phase and sequence.
- dma_stop will stop the one shot timer when the DBDMA channel is stopped.
2024-04-03 19:19:42 -07:00
joevt
ff766b10eb sc53c94: Add seq_id to sequence descriptor.
The seq_id can be used for logging the current command and step number.
2024-04-03 18:43:46 -07:00
joevt
ceb2276098 sc53c94: Move chip_id to xfer_count.
Method for reading chip_id needs verification.
2024-04-03 18:43:40 -07:00
joevt
82f4d05f4b sc53c94: Set timer_id to zero.
If a timer is not in progress then set its timer_id to zero. Also, don't start a newer timer if an existing one is still in progress.
2024-04-03 18:36:53 -07:00
joevt
8a81cb4f9c sc53c94: Use enums. 2024-04-03 18:12:00 -07:00
joevt
1504bd2227 sc53c94: Move DATA_FIFO_MAX from header.
Headers shouldn't make defines that are not meant to be used outside the source file.
2024-04-03 18:11:07 -07:00
dingusdev
475f894582 Comment out log message 2024-04-02 19:21:56 -07:00
joevt
7007e002e6 macio: Make interrupt flags atomic.
So they can be modified by other threads.
2024-04-02 19:05:57 -07:00
joevt
9af1b1a720 control: Narrow the scope of local variable. 2024-04-01 22:12:20 -07:00
joevt
ca9657baf1 control: Update little-endian error message. 2024-04-01 22:12:05 -07:00
joevt
3e347746f9 control: Don't abort when setting little endian.
If this gets set accidentally, (such as while playing in Open Firmware), allow the user to change it back.
2024-04-01 22:11:35 -07:00
joevt
b5987afaa6 control: Implement BAR update. 2024-04-01 22:11:30 -07:00
joevt
ea46d08835 appleramdac: Allow read from CLUT part 2. 2024-04-01 21:47:59 -07:00
joevt
789114cc7d control: Save CNT_TST and MON_SENSE.
These are writable registers that should return what was written to them.
2024-04-01 21:34:26 -07:00
joevt
cf292fafcb control: vram changes.
Allow VRAM presence only in optional bank.

control: Implement banks.

The BAR is 64MB.
The little-endian/big-endian ranges repeat every 16MB.
An endian range can be addressed in d128 (wide) mode or d64 mode.
In d128 mode, there is a 4MB range followed by an undefined 4MB range. bytes 0..7 belong to the standard bank and bytes 8..15 belong to the optional bank.
In d64 mode:
- 2MB mirror ranges at 0MB and 2MB (both have the same read/write behavor: write to both banks or read from the standard bank.
- 2MB standard bank rage at 4MB.
- 2MB optional bank range at 6MB.
2024-04-01 21:17:17 -07:00
joevt
08fca7de69 control: Recalc framebuffer after each change. 2024-04-01 20:58:46 -07:00
joevt
b42437c458 control: Mask unmodifiable bits. 2024-04-01 19:01:03 -07:00
joevt
98e1787f93 machines: Remove duplicate gfxmem_size properties. 2024-04-01 18:28:13 -07:00
dingusdev
55b9f8bbe5 bzero -> memset 2024-04-01 08:03:12 -07:00
joevt
2968645f2e scsihd: Allow INQUIRY allocation length != 36.
Truncate for < 36 and zero fill for > 36.
2024-04-01 08:02:17 -07:00
joevt
92dea0e404 scsihd: Include invalid field info.
For CHECK_CONDITION status from READ_CAPACITY_10.
2024-04-01 08:01:09 -07:00
joevt
bfd3077bd0 scsicdrom: Check Lun for INQUIRY.
INQUIRY now returns 0x7f for device type if LUN doesn't match. INQUIRY can get LUN from CDB or from IDENTIFY message.
2024-04-01 08:00:41 -07:00
joevt
2d1616894d appleramdac: Allow read from CLUT. 2024-04-01 07:39:20 -07:00
joevt
7c203b40c8 appleramdac: Reset comp_index on address change. 2024-04-01 07:37:16 -07:00