Commit Graph

951 Commits

Author SHA1 Message Date
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
joevt 2f63a2fa17 appleramdac: Add other vendor id. 2024-04-01 07:10:55 -07:00
joevt e3e065a6d7 appleramdac: Register comments. 2024-04-01 06:47:25 -07:00
joevt 4395ce01d7 ohare: Update name of Mesh device. 2024-03-30 17:56:19 -07:00
joevt 2c097da12d grandcentral: Add escc DMA. 2024-03-30 14:55:24 -07:00
joevt 5f316dc7a4 grandcentral: Adjust audio in DMA logging. 2024-03-30 12:49:33 -07:00
joevt 02a475e113 sc53c94: Remove duplicate bus_obj.
sc53c94 is a ScsiDevice which has its own bus_obj which is set by register_device.
2024-03-30 11:56:59 -07:00
joevt 338bbe27a8 scsihd: Implement REQ_SENSE.
Returns error information stored in class fields: sense, asc, ascq, sksv, and field.
2024-03-30 11:56:37 -07:00
joevt 44564065f6 scsihd: Changes for MODE_SENSE_6.
Return CHECK_CONDITION for unsupported page_ctrl or page or subpage.
Handle the all pages code 0x3F.
2024-03-30 11:56:02 -07:00
dingusdev c54ec7be2d Use memset instead of bzero 2024-03-30 11:19:32 -07:00
joevt 274e380b34 scsicdrom: Allow INQUIRY allocation length != 36.
Truncate for < 36 and zero fill for > 36.
2024-03-30 11:16:41 -07:00
joevt e872f08273 scsicdrom: Include invalid field info.
For CHECK_CONDITION status from READ_CAPACITY_10 and READ_TOC.
2024-03-30 11:00:01 -07:00
joevt a6fda3b787 scsicdrom: Handle MODE_SENSE_6 unsupported page.
Return CHECK_CONDITION status instead of abort. To Do: apply change to scshhd.
2024-03-30 10:59:43 -07:00
joevt a48851888f scsihd: Setup data_ptr for STATUS and MESSAGE_IN.
bytes_out is used instead of the removed cur_buf_cnt.
data_ptr is setup by prepare_data instead of process_command.
Not sure why scsicdrom doesn't set bytes_out in prepare_data.
2024-03-30 08:37:10 -07:00
joevt f1abb66f9a atahd: Add STANDBY_IMMEDIATE. 2024-03-30 08:30:37 -07:00
joevt c999c51d77 scsicdrom, scsihd: Check lun.
READ_CAPACITY_10, READ_6, and READ_10 now checks LUN that is included in CDB and returns a CHECK_CONDITION if it doesn't match.
2024-03-29 19:12:06 -07:00
joevt 6bb5227ee1 scsihd: Abort if RelAdr bit of READ_10.
Like scsicdrom does.
2024-03-29 19:01:42 -07:00
joevt cefe8698da scsihd: Add PREVENT_ALLOW_MEDIUM_REMOVAL.
Like scsicdrom has.
2024-03-29 19:01:32 -07:00
joevt 4be6bad526 scsicdrom: Fix compiler warning. 2024-03-29 19:00:38 -07:00
joevt d3c913e384 scsicdrom: Cleanup.
- Use macros for reading 2 byte or 4 byte big endian data. block_size is assumed to be < 64K so WRITE_DWORD_BE_A will write two leading zeros.
- Scalar pass by value parameters don't need to be const.
- Remove some unnecessary locals.
2024-03-29 18:53:13 -07:00
joevt a868f4eee4 scsihd: Cleanup.
Use this qualifier.
Use macros for reading 2 byte or 4 byte big endian data.
2024-03-29 18:53:04 -07:00
joevt 44da89979f scsihd: Use device name in abort message. 2024-03-29 18:52:52 -07:00
joevt a79f07e4dc scsicdrom: Move mode_select_6.
Make it a separate method like scsihd. It also checks the incoming param size. If it's zero then the phase is not switched. Is that wrong? Still probably unfinished.
2024-03-29 18:52:30 -07:00
Maxim Poliakovski e17a96f5ec atirage: break long lines. 2024-03-29 21:21:58 +01:00
joevt 5062508940 scsicdrom: Rename mode_sense_6.
To match scsihd.
2024-03-29 07:56:48 -07:00
joevt 9cf91328c1 scsicdrom: Move inquiry info to class fields.
Like scsihd.
2024-03-29 07:56:44 -07:00
joevt 6a30ef7017 scsicdrom: Fields inited by parent class.
They don't need to be reinitialized.
2024-03-29 07:56:31 -07:00
Maxim Poliakovski 71dabf5334 atahd: break long lines. 2024-03-29 12:46:57 +01:00
joevt 155b8cdad9 atahd: Support inexact CHS.
The total size needs to have 3 factors cylinders, heads, & sectors. Imagine a disk having a total size with 3 prime factors 3 x 5 x 11. 15 cannot be assigned to heads because that would only leave 11 for sectors and cylinders. Therefore, test all heads and sectors combinations. If the third factor for cylinders is not found, then choose 16 heads, then the minimum number of sectors, and finally the maximum number of cylinders. The loop could be changed to skip values of heads that are not a factor, but it doesn't take any time to try them all.
2024-03-28 21:07:12 -07:00
joevt 96dc02b249 atahd: Make sure disk is not too big. 2024-03-28 21:07:08 -07:00
Maxim Poliakovski eaddcab0ba atahd: don't register device for empty images.
Workaround for the case when no hard disk image
was specified. The device instance is still there
but it won't be visible by the guest OS.
2024-03-29 03:54:09 +01:00
joevt 1d9b0f7fa5 macio: Add MIO_AUX_CTRL enum. 2024-03-28 07:10:05 -07:00
joevt 60a4738694 Add stub for pci_unregister_device. 2024-03-27 18:23:27 -07:00
joevt 9ade14e076 memctrlbase: fix possible memory leak. 2024-03-27 14:08:20 +01:00
joevt a26628ed50 bandit: Add delayed aack register. 2024-03-26 07:34:08 -07:00
joevt 0b5a798343 atimach64gx: Fix ATI_CRTC_GEN_CNTL.
Add call to crtc_update.
Maybe consider AK and EN bits (placeholder for now).
2024-03-26 07:31:49 -07:00
Maxim Poliakovski 0a97e4e038 hmc: implement extended memory for PDM. 2024-03-26 00:39:33 +01:00