Commit Graph

1666 Commits

Author SHA1 Message Date
joevt
df0044a110 dbdma: Make sure interrupt controller is set. 2024-03-24 13:00:58 -07:00
joevt
503556196a dbdma: Add missing flags, fields, comments. 2024-03-24 13:00:33 -07:00
joevt
fd961f9ff9 Fix Analyzer warnings.
In Xcode, type Command-Shift-B to analyze every source file or Command-Shift-Control-B to analyze the current source file.

For pseudo_dma_read report FIFO underrun and init data_word in that case.
2024-03-24 12:56:11 -07:00
joevt
e3411670cb videoctrl: Add cursor_dirty flag.
If the flag is set when it comes time to draw the cursor again, then call setup_hw_cursor to update the cursor before drawing the cursor.
2024-03-24 12:45:52 -07:00
joevt
d134107aba atirage: Draw frame buffer only when it changes. 2024-03-24 12:45:30 -07:00
joevt
5de1c23aba adbbus: Don't abort. 2024-03-24 12:35:11 -07:00
joevt
72b257e5d1 atirage: Improve draw_hw_cursor loops.
- Read 8 bytes at a time instead of just 1.
- Remove multiply operations from loop. We just need increments or additions.
- Change compares with int to compares with zero.
2024-03-24 12:27:44 -07:00
joevt
9d0bae2d03 atirage: Add offset to cursor X position.
CUR_HORZ_OFF becomes non-zero when the cursor needs to be drawn to the left of the left edge of the frame buffer.

CUR_VERT_OFF is handled differently. When CUR_VERT_OFF is non-zero, CUR_OFFSET is changed to point to the first line of the cursor that will be drawn, so CUR_VERT_OFF is the number of lines to remove from the total height of the cursor.
Alternatively, we could handle CUR_VERT_OFF the same way as CUR_HORZ_OFF by leaving the cursor height constant, drawing the cursor starting from the CUR_VERT_OFF line, and adjusting cursor Y position by negative CUR_VERT_OFF.
2024-03-24 12:26:10 -07:00
joevt
ad6d5e9ec9 atimach64gx: Improve draw_hw_cursor loops.
- Read 8 bytes at a time instead of just 1.
- Remove multiply operations from loop. We just need increments or additions.
- Change compares with int to compares with zero.
2024-03-24 12:25:55 -07:00
joevt
6462ceef24 atimach64gx: Add offset to cursor X position.
CUR_HORZ_OFF becomes non-zero when the cursor needs to be drawn to the left of the left edge of the frame buffer.

CUR_VERT_OFF is handled differently. When CUR_VERT_OFF is non-zero, CUR_OFFSET is changed to point to the first line of the cursor that will be drawn, so CUR_VERT_OFF is the number of lines to remove from the total height of the cursor.
Alternatively, we could handle CUR_VERT_OFF the same way as CUR_HORZ_OFF by leaving the cursor height constant, drawing the cursor starting from the CUR_VERT_OFF line, and adjusting cursor Y position by negative CUR_VERT_OFF.
2024-03-24 12:25:35 -07:00
dingusdev
c281b27220 Attempted templating for interpreter 2024-03-24 12:21:19 -07:00
joevt
1d5502dc3c ppcemu: Make flags atomic.
For flags that might be accessed by other threads.
2024-03-22 19:04:51 -07:00
dingusdev
4ef3c792de Refactoring interpreter, pt. 1
Reduce the number of global variables used by interpreter
2024-03-22 08:01:29 -07:00
joevt
a5aac5754c machinetnt: Add Bandit2 option. 2024-03-20 07:38:56 -07:00
joevt
23903a969d Add get_comp_by_name_optional. 2024-03-20 07:38:48 -07:00
joevt
78020c4794 Add Bandit2 and properties for Chaos. 2024-03-20 07:38:39 -07:00
Maxim Poliakovski
682f1900ae zdocs: add PDM RAM documentation. 2024-03-20 12:16:10 +01:00
Maxim Poliakovski
a9cb0cfb2a atahd: report correct CHS parameters & capacity.
This is required for Open Firmware 2.x to boot Mac OS X
and OpenDarwin.
2024-03-20 12:16:10 +01:00
Mihai Parparita
fc6a4872d6 Ensure that NVRAM is persisted when exiting the debugger after an abort
The SIGABRT handler is not invoked by the abort() call in the loguru
fatal handler, but either way it's not necessary (it does its own abort).

Switch to explicitly cleaning up the machine object, which as a side
effect in the destructor chain will persist the NVRAM.
2024-03-20 12:16:10 +01:00
dingusdev
284f58dec4 Continued build fixing 2024-03-16 19:24:40 -07:00
joevt
e51bc0cea5 scsihd: Reorder switch statement.
Order by case value to match scsicdrom.
2024-03-16 17:44:09 -07:00
dingusdev
da9770c99b Attempted build fix 2024-03-16 13:45:28 -07:00
joevt
266d45e13a timermanager: Make immediate timer more immediate. 2024-03-16 11:46:40 -07:00
joevt
703662cb5b timermanager: Add some thread safety. 2024-03-16 11:46:30 -07:00
joevt
833f74dce6 timemanager: Remove unnecessary parameter. 2024-03-16 11:36:41 -07:00
joevt
014aa90462 timemanager: Remove timer minimum timeout. 2024-03-16 11:36:25 -07:00
joevt
f5dcaebbf8 timemanager: 0 is also < a positive integer. 2024-03-16 11:36:10 -07:00
dingusdev
02a9e8d886 Partial fix for writing qwords 2024-03-15 22:00:54 -07:00
joevt
4fe8cf76bb control: Fix framebuffer start for OF and macOS. 2024-03-15 10:27:48 -07:00
joevt
d4ee43179c control: 15bpp mode is big endian. 2024-03-15 10:27:33 -07:00
joevt
5afe1f1a25 control: MISC_ENABLES is a 12 bit register. 2024-03-15 10:27:24 -07:00
joevt
7eb9a66837 atimach64gx: Calculate vert_blank.
So it's not always zero.
2024-03-15 10:16:44 -07:00
joevt
aa33a1644c control: Support unaligned read and size != 4. 2024-03-15 09:29:36 -07:00
joevt
c42e1f28d6 atimach64gx: Fix fb_pitch calculation.
Also, move the calculation to crtc_update where we calculate everything else (including bits per pixel which is needed for the fb_pitch calculation.
2024-03-15 09:20:06 -07:00
joevt
fe21108f08 atimach64gx: Implement hardware cursor. 2024-03-15 08:50:34 -07:00
joevt
81f3b95914 atimach64gx: Add write CRTC_INT_CNTL.
Required for interrupt handling.
2024-03-15 07:57:47 -07:00
joevt
2daad2d223 atimach64gx: Add write ATI_CRTC_VLINE_CRNT_VLINE.
Maybe for interrupts.
2024-03-15 07:03:57 -07:00
joevt
09becbfb04 atimach64gx: Add write ATI_CRTC_H_TOTAL_DISP.
For debugging.
2024-03-15 07:03:46 -07:00
joevt
1f9f2d2cf1 sixty6: Add support for sixty6 video output. 2024-03-14 20:06:55 -07:00
joevt
939d6d42bb machineproperties: More binary property values. 2024-03-14 19:16:54 -07:00
joevt
45a9d45e3f Add SCSI devices.
scsibus has a new method attach_scsi_devices which is used by all machines to populate a SCSI bus with one or more hard drives or CD-ROM drives.

HDDs are specified by the hdd_img property.
CDs are specified by the cdr_img property.
Multiple images are delimited by a colon :

attach_scsi_devices is called by the scsi controller after the scsi controller has attached itself to the scsi bus.
The bus suffix is applied to the property name.
Curio has no suffix so it will use hdd_img and cdr_img properties.
Mesh is expected to have a suffix of 2 so it will use hdd_img2 and cdr_img2 properties.

HDDs will skip SCSI ID 3 unless 7 HDDs are added, in which case, the seventh HDD will use ID 3.
CDs will start at SCSI ID 3, go to 7, then down to 0.
SCSI IDs are skipped if a device is already using that SCSI ID.

ScsiCdrom and ScsiHD no longer use REGISTER_DEVICE or DeviceDescription or PropMap which is normal for devices that can have multiple instances.
2024-03-14 19:12:11 -07:00
Mihai Parparita
cfca42e577 Add basic support for multiple hard disks in the 6100
We treat the hdd_img parameter as a colon-separated list of disk
images and create additional SCSI HD devices as needed.
2024-03-14 19:11:54 -07:00
joevt
4c9b125cc8 amic: Add modem port transmit DMA. 2024-03-14 08:05:42 -07:00
joevt
e1e00c951b sc53c94: Split real_dma_xfer.
Create real_dma_xfer_out and real_dma_xfer_in methods.
2024-03-14 08:01:07 -07:00
joevt
bc5153dd4a ppcmmu: Make sure dummy page is 8 byte aligned. 2024-03-13 21:45:56 -07:00
joevt
aed74479fd ppcmmu: Handle undefined mmu mode. 2024-03-13 21:38:26 -07:00
joevt
c14974d167 sc53c94: Init class fields. 2024-03-13 21:37:08 -07:00
joevt
f07de5401d sc53c94: Add registers and comments. 2024-03-13 21:25:28 -07:00
dingusdev
faf066f2b9 Fixed building 2024-03-13 21:17:04 -07:00
joevt
06640844e9 scsihd: Allow read and write > 4 GB. 2024-03-13 21:09:55 -07:00