DMA Channel 6 Ordering Table Clear: Difference between revisions
| Revision as of 04:48, 23 October 2026 RemmyLee (Main page: drop the Hardware Tests lede) | Revision as of 05:11, 23 October 2026 RemmyLee (Hardware tests: 72 more test pages, listed on the main page by area; RUN.toml no longer published) | ||
| Line 1: | Line 1: | ||
| + | --- | ||
| + | title: DMA Channel 6 Ordering Table Clear | ||
| + | type: test | ||
| + | summary: Checks how DMA channel 6 clears an ordering table and which of its control bits are fixed. | ||
| + | category: Hardware tests | ||
| + | info: Machine = SCPH-5501 | ||
| + | info: Program = dma/otc-test (ps1-tests) | ||
| + | --- | ||
| + | |||
| + | ## Overview | ||
| + | |||
| + | Channel 6 of the [DMA controller](/hardware/dma/) writes an ordering table into RAM: each entry points to the entry before it, and the last entry holds the end marker. The program starts it with CHCR 11000002h, the value libgpu's ClearOTagR uses, and changes one field per check: the sync mode, the start bit, the direction and the step. It also writes test patterns to CHCR to find the fixed bits, reads CHCR after a transfer with and without chopping, and runs a transfer with the master enable clear.[^src] | ||
| + | |||
| + | ## Results | ||
| + | |||
| + | The SCPH-5501 passed all 15 checks in every run.[^run] | ||
| + | |||
| + | Channel 6 wrote the same table whatever the direction, step and sync mode fields said. With CHCR 11000002h and four entries, each entry held the address of the one before it and the first entry held FFFFFFh. The table came out the same with the direction bit set (from RAM), with the step bit clear (forward) and in sync modes 1, 2 and 3. A block count of 0 cleared 65,536 entries.[^run] | ||
| + | |||
| + | The channel did not start without bit 28 or without bit 24, and it did not start with its enable bit in DPCR clear. In those three cases the memory kept its old contents.[^run] | ||
| + | |||
| + | Only bits 30, 28 and 1 of CHCR kept the value written. A write of 70770703h read 50000002h, a write of 0 read 00000002h, and a write of 8E88F8FCh read 00000002h. Bit 1 therefore reads one at all times.[^run] | ||
| + | |||
| + | CHCR read 00000002h straight after the start of a 32,768-entry clear. It read the same with chopping set (00110100h added), and the table was complete at that read.[^run] | ||
| + | |||
| + | ## Runs | ||
| + | |||
| + | ### 25 September 2026 | ||
| + | |||
| + | [06OTC.txt](/tests/raw/20260925T0000Z-5501a-card-main/main/06OTC.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 OTC DMA OTC | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | |||
| + | dma/otc-test (DMA Channel 6) | ||
| + | pass - testOtcStandard | ||
| + | pass - testOtcBigTransfer | ||
| + | pass - testOtcWontStartOnAutomaticMode | ||
| + | pass - testOtcWontStartWithoutStartFlag | ||
| + | pass - testOtcForward | ||
| + | pass - testOtcFromRam | ||
| + | pass - testOtcSyncModeBlocks | ||
| + | pass - testOtcSyncModeLinkedList | ||
| + | pass - testOtcSyncModeReserved | ||
| + | pass - testOtcWhichBitsAreHardwiredToZero | ||
| + | pass - testOtcWhichBitsAreHardwiredToOne | ||
| + | pass - testOtcUnusedControlBitsAreAlwaysZero | ||
| + | pass - testOtcControlBitsAfterTransfer | ||
| + | pass - testOtcControlBitsAfterTransferWithChopping | ||
| + | pass - testOtcStandardWithMasterDisabled | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ### 27 September 2026 | ||
| + | |||
| + | [06OTC.txt](/tests/raw/20260927T0000Z-5501a-card-2/main/s024/06OTC.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 OTC DMA OTC | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | |||
| + | dma/otc-test (DMA Channel 6) | ||
| + | pass - testOtcStandard | ||
| + | pass - testOtcBigTransfer | ||
| + | pass - testOtcWontStartOnAutomaticMode | ||
| + | pass - testOtcWontStartWithoutStartFlag | ||
| + | pass - testOtcForward | ||
| + | pass - testOtcFromRam | ||
| + | pass - testOtcSyncModeBlocks | ||
| + | pass - testOtcSyncModeLinkedList | ||
| + | pass - testOtcSyncModeReserved | ||
| + | pass - testOtcWhichBitsAreHardwiredToZero | ||
| + | pass - testOtcWhichBitsAreHardwiredToOne | ||
| + | pass - testOtcUnusedControlBitsAreAlwaysZero | ||
| + | pass - testOtcControlBitsAfterTransfer | ||
| + | pass - testOtcControlBitsAfterTransferWithChopping | ||
| + | pass - testOtcStandardWithMasterDisabled | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ### 27 September 2026 run 2 | ||
| + | |||
| + | [06OTC.txt](/tests/raw/20260927T0000Z-5501a-card-b/main/s034/06OTC.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 OTC DMA OTC | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | |||
| + | dma/otc-test (DMA Channel 6) | ||
| + | pass - testOtcStandard | ||
| + | pass - testOtcBigTransfer | ||
| + | pass - testOtcWontStartOnAutomaticMode | ||
| + | pass - testOtcWontStartWithoutStartFlag | ||
| + | pass - testOtcForward | ||
| + | pass - testOtcFromRam | ||
| + | pass - testOtcSyncModeBlocks | ||
| + | pass - testOtcSyncModeLinkedList | ||
| + | pass - testOtcSyncModeReserved | ||
| + | pass - testOtcWhichBitsAreHardwiredToZero | ||
| + | pass - testOtcWhichBitsAreHardwiredToOne | ||
| + | pass - testOtcUnusedControlBitsAreAlwaysZero | ||
| + | pass - testOtcControlBitsAfterTransfer | ||
| + | pass - testOtcControlBitsAfterTransferWithChopping | ||
| + | pass - testOtcStandardWithMasterDisabled | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ### 27 September 2026 run 3 | ||
| + | |||
| + | [06OTC.txt](/tests/raw/20260927T0000Z-5501a-card-g/main/06OTC.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 OTC DMA OTC | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | |||
| + | dma/otc-test (DMA Channel 6) | ||
| + | pass - testOtcStandard | ||
| + | pass - testOtcBigTransfer | ||
| + | pass - testOtcWontStartOnAutomaticMode | ||
| + | pass - testOtcWontStartWithoutStartFlag | ||
| + | pass - testOtcForward | ||
| + | pass - testOtcFromRam | ||
| + | pass - testOtcSyncModeBlocks | ||
| + | pass - testOtcSyncModeLinkedList | ||
| + | pass - testOtcSyncModeReserved | ||
| + | pass - testOtcWhichBitsAreHardwiredToZero | ||
| + | pass - testOtcWhichBitsAreHardwiredToOne | ||
| + | pass - testOtcUnusedControlBitsAreAlwaysZero | ||
| + | pass - testOtcControlBitsAfterTransfer | ||
| + | pass - testOtcControlBitsAfterTransferWithChopping | ||
| + | pass - testOtcStandardWithMasterDisabled | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ### 27 September 2026 run 4 | ||
| + | |||
| + | [06OTC.txt](/tests/raw/20260927T0000Z-5501a-card-g3/main/06OTC.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 OTC DMA OTC | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | |||
| + | dma/otc-test (DMA Channel 6) | ||
| + | pass - testOtcStandard | ||
| + | pass - testOtcBigTransfer | ||
| + | pass - testOtcWontStartOnAutomaticMode | ||
| + | pass - testOtcWontStartWithoutStartFlag | ||
| + | pass - testOtcForward | ||
| + | pass - testOtcFromRam | ||
| + | pass - testOtcSyncModeBlocks | ||
| + | pass - testOtcSyncModeLinkedList | ||
| + | pass - testOtcSyncModeReserved | ||
| + | pass - testOtcWhichBitsAreHardwiredToZero | ||
| + | pass - testOtcWhichBitsAreHardwiredToOne | ||
| + | pass - testOtcUnusedControlBitsAreAlwaysZero | ||
| + | pass - testOtcControlBitsAfterTransfer | ||
| + | pass - testOtcControlBitsAfterTransferWithChopping | ||
| + | pass - testOtcStandardWithMasterDisabled | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ### 28 September 2026 | ||
| + | |||
| + | [06OTC.txt](/tests/raw/20260928T0000Z-5501a-card-h/main/06OTC.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 OTC DMA OTC | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | |||
| + | dma/otc-test (DMA Channel 6) | ||
| + | pass - testOtcStandard | ||
| + | pass - testOtcBigTransfer | ||
| + | pass - testOtcWontStartOnAutomaticMode | ||
| + | pass - testOtcWontStartWithoutStartFlag | ||
| + | pass - testOtcForward | ||
| + | pass - testOtcFromRam | ||
| + | pass - testOtcSyncModeBlocks | ||
| + | pass - testOtcSyncModeLinkedList | ||
| + | pass - testOtcSyncModeReserved | ||
| + | pass - testOtcWhichBitsAreHardwiredToZero | ||
| + | pass - testOtcWhichBitsAreHardwiredToOne | ||
| + | pass - testOtcUnusedControlBitsAreAlwaysZero | ||
| + | pass - testOtcControlBitsAfterTransfer | ||
| + | pass - testOtcControlBitsAfterTransferWithChopping | ||
| + | pass - testOtcStandardWithMasterDisabled | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ## References | ||
| + | |||
| + | [^src]: ps1-tests, dma/otc-test. https://github.com/JaCzekanski/ps1-tests. | ||
| + | [^run]: SCPH-5501 output: [main/06OTC.txt](/tests/raw/20260925T0000Z-5501a-card-main/main/06OTC.txt) and the files beside it, with the other runs listed under Runs. | ||