In actual hardware, the READY pin is clipped, so it's always active.
This resolves the issue where the disk on drive 2 is not recognized if drive 2 is empty at startup.
Note that, compared to before the change, it takes longer for the "How many files" to be displayed when drive 1 is empty.
This is the same behavior as in actual hardware.
The header of a D88 image file defines the offset address where each track data is stored.
If an offset address exceeding the size of the image file is set, it is stored in the table as offset=0 (unformatted).
The ADPCM-B accumulator is calculated in 16-bit signed format.
Not only the final output PCM value, but also the step value must be capped at 16-bit signed.
Palette mode has been added to the conditions for determining whether palette colors are valid.
Adding a DMA stop with digital palette and B&W graphics mode settings means that the bits on the graphics plane are no longer colored with the palette colors.
This behavior differs from that of analog palette mode.
According to the specification, the "Column address" is 7 bits, and valid values are from 0x00 to 0x4F.
Previously, values 0x50 and above were treated as 0, but now they are ignored as invalid values.
0x80 is still treated the same as 0x00 because "Column address" ignore the 8th bit.
Note:
0x60 means "special control code", but is still not supported.
So it is ignored as an invalid value.
In the uPD8214, "interrupt disable flip-flop" is set at the same time as INT is asserted, and the next INT is not asserted until it is reset.
INTC has been modified to comply with this specification.
This fixes an issue where the CPU was interrupted even though the interrupt handler implementation did not expect multiple interrupts.
In ADPCM-A,
- Change the gain formula to old MAME based
- Remove linear interpolation
Fork and replace jt10_adpcm_gain/acc with jt08_adpcm_gain/acc.
In jt08_acc, the ADPCM-A volume correction is removed.
- Allow JT49 COMP parameter to be set from JT12 wrapper.
- For JT03 and JT08, set JT49_COMP parameter to 0.
According to the YM2608 application manual, the characteristics of the analog output pins are measured with a load resistance (Rload) of 470 ohms.
I think the default setting for JT49_COMP should be 0 (Rload < 1000ohm).
According to the YM2608 application manual, the SSG output level has the following specifications:
- The lowest 4 bits of registers $08-$0a are mapped to the highest 4 bits of the DAC's 5-bit resolution. The DAC's LSB is '1'.
- DAC output levels of 0 and 1 have the same output value.
Actual measurement of the output value showed that when the DAC output level is 0, the output value is 0.
-> https://d4.princess.ne.jp/msx/psg/
Actual PC8801 series "high resolution" 24kHz CRT monitors display images with a maximum of 640x400 square dots, just like the PC9801 series.
The correct aspect ratio is 16:10, and the current 4:3 does not display images correctly in normal mode.
Change the definition of aspect ratio in PC8801.sv.
Note:
In 640x200 mode, the even lines in 400 line mode are simply hidden, so the aspect ratio remains the same.
- When R == EOT, reset R=1 and change C/H depending on MT.
- When R != EOT, add 1 to R.
The software emulator is implemented with these conditions.
I have verified that this condition does not violate the specification.
If an IAM is detected a second time while reading data, the command will terminate incorrectly.
This is an unexpected behavior on the host side, so fix the issue.
As with READ DIAG, the IAM counter is reset before reading the sector data.
The condition for aborting the command is modified to detect the index mark twice.
In the case of the READ DIAG command, the detection of the index mark is waited for first, and the counter is reset after the sector is detected.
- Treat ID AM detection as sector detection (DETSECT=1).
- If sector not found, only sMA=1 is returned.
- In the case of "READ DELETED DATA", sCM returns DAM detection.
- If there is an ID CRC error with the "READ ID" command, search for the next sector.
- Change to skip the GAP2 field instead of overwriting it
- Change the start of writing from GAP2 to SYNC
- After writing, change the GAP3 field to write only one byte.
At the same time, the behavior of the disk emulator will be changed.
- The start of write operations will be unified to SYNC.
The GAP generation function will be removed from mkgapsync.
When TC=1 or OR=1 in READ DATA/WRITE DATA/WRITE ID,
- The current operation of one sector or one track continues until completion.
- No access request INT or DMA is issued.