Timer Sync and SIO0 Timing: Difference between revisions
| Revision as of 05:41, 23 October 2026 RemmyLee (Hardware tests: See also links back from 37 existing pages to the new ones) | Revision as of 05:49, 23 October 2026 RemmyLee (Hardware tests: the last 15 test pages (timers, SPU, CPU, GPU, DMA, CD-ROM, GTE), See also links both ways; uncited clock claim removed) | ||
| Line 1: | Line 1: | ||
| + | --- | ||
| + | title: Timer Sync and SIO0 Timing | ||
| + | type: test | ||
| + | summary: Measures timer 0 and timer 1 in their blanking sync modes, single accesses from KSEG1 and the cache, the SIO0 receive interrupt and /ACK timing, and a KSEG1 loop by placement. | ||
| + | category: Hardware tests | ||
| + | info: Machine = SCPH-5501 | ||
| + | info: Program = followup25 | ||
| + | --- | ||
| + | |||
| + | ## Overview | ||
| + | |||
| + | The program runs seven groups, and each group prints the console's answer to one question.[^run] Root counter 2 is the stopwatch, and the times are in system clock cycles.[^ktl] | ||
| + | |||
| + | Table: Groups | ||
| + | |||
| + | | Tag | Group | | ||
| + | | --- | --- | | ||
| + | | DSS | Timer 0 on the 33.8688 MHz clock in sync mode 2, 0 and free, read back to back 2,048 times in the 640 x 240 mode | | ||
| + | | T1V | Timer 1 on the horizontal blank clock, free and in sync modes 0 to 3, each change timed from the vertical blank interrupt (IRQ0) | | ||
| + | | KTL | One pass of an access shape, from a timer 2 mode write to a read of its count, from KSEG1 and from the cache, with 0 to 6 NOPs | | ||
| + | | RXS | The SIO0 receive interrupt by receive interrupt mode, with the select bit, RXEN, both or neither set in JOY_CTRL | | ||
| + | | AKD | A controller in slot 1: the times to the receive byte, to /ACK and the length of /ACK, for each byte, by the time since select | | ||
| + | | UNP | One KSEG1 loop with its code and its two loaded words placed in different parts of RAM | | ||
| + | | KXR | Where SPUSTAT bit 11 rises inside the SPU sample period | | ||
| + | |||
| + | See also: | ||
| + | |||
| + | - [Root Counter Behavior](/tests/timers2/) | ||
| + | - [Root Counter Clocks and Sync Modes](/tests/timers-ps1-tests/) | ||
| + | |||
| + | ## Results | ||
| + | |||
| + | ### Timer 0 in the Horizontal Blank | ||
| + | |||
| + | Read back to back, about one read every 9 cycles, timer 0 in sync mode 2 rose by about 9 each read up to 536 in the first pass and 537 in the second, and the next read gave 0. In sync mode 0 the largest count was 13,884 over the 18,746 cycles of the reads, and free running it reached 18,741.[^dss] | ||
| + | |||
| + | ### Timer 1 Around the Vertical Blank | ||
| + | |||
| + | Free running on the horizontal blank clock, timer 1 read 225 at 1,992 cycles after IRQ0 and 487 at 565,936 cycles, and the next IRQ0 came at 566,072 cycles. It changed every 2,128 to 2,176 cycles. The frame therefore held 263 lines.[^t1v] | ||
| + | |||
| + | In sync mode 0 the count changed to 231 at 2,008 cycles after IRQ0 and did not change again until 55,816 cycles. In sync mode 3 the first change, to 1, also came at 55,816 cycles, and the count reached 238 before the next IRQ0. In sync mode 2 the count was 1 at 4,168 cycles and 23 at 51,488 cycles, and at 52,016 cycles it went to 0 and stayed there until the next IRQ0.[^t1v] | ||
| + | |||
| + | ### Single Access Times | ||
| + | |||
| + | Each shape ran once between a write of timer 2's mode, which zeroes the count, and a read of the count. From KSEG1 each NOP added about 6 cycles. From the cache the first NOP added nothing and each further NOP added 1 cycle.[^ktl] | ||
| + | |||
| + | Table: Cycles for one pass of each shape in the first of four runs | ||
| + | |||
| + | | Shape | KSEG1, 0 NOPs | KSEG1, 6 NOPs | Cache, 0 NOPs | Cache, 6 NOPs | | ||
| + | | --- | --- | --- | --- | --- | | ||
| + | | NOPs only | 4 | 44 | 0 | 5 | | ||
| + | | RAM sw | 15 | 51 | 0 | 6 | | ||
| + | | RAM sw, RAM sw | 23 | 63 | 5 | 7 | | ||
| + | | RAM sw, RAM sw, NOPs, j | 35 | 75 | 5 | 9 | | ||
| + | | RAM lw, RAM sw, NOPs | 26 | 62 | 9 | 13 | | ||
| + | | I_STAT sw | 10 | 50 | 0 | 6 | | ||
| + | | RAM lw, NOPs, addu of it | 22 | 56 | 8 | 10 | | ||
| + | | I_STAT lw, NOPs, addu of it | 19 | 56 | 6 | 9 | | ||
| + | | I_STAT lw, NOPs, RAM lw | 29 | 62 | 13 | 16 | | ||
| + | | I_STAT lw, NOPs, scratchpad lw | 25 | 58 | 7 | 10 | | ||
| + | | RAM lw, NOPs, RAM sw | 26 | 61 | 9 | 11 | | ||
| + | | RAM lw, backward beq, NOPs, RAM lw | 66 | 102 | 17 | 20 | | ||
| + | |||
| + | From the cache a single RAM store with no NOP after it cost nothing. Two RAM stores in a row took 5 cycles with up to 4 NOPs after them. A RAM load and the use of its value cost 8 cycles with no NOP between them and 10 cycles with 2 to 6 NOPs. A load of I_STAT and its use cost 6 cycles with no NOP and 8 with 2 to 5 NOPs. In several later runs the cached shapes with 4 to 6 NOPs took up to 27 cycles longer than in the first.[^ktl] | ||
| + | |||
| + | ### SIO0 Receive Interrupt | ||
| + | |||
| + | Each case sent eight bytes 2,400 cycles apart and read none of them until the end. With the select bit set, I_STAT bit 7 first set after the byte that receive interrupt mode 0, 1, 2 or 3 names: the 1st, 2nd, 4th and 8th. With RXEN set as well as select the interrupt came at the 1st byte in modes 0 to 2 and at the 4th in mode 3. With RXEN alone it came at the 1st byte in modes 0 to 2 and the 3rd in mode 3, and 1, 2, 4 and 8 bytes were read out at the end. With neither bit set no interrupt came, JOY_STAT read 005h and no byte was read out.[^rxs] | ||
| + | |||
| + | Table: The byte after which I_STAT bit 7 first set | ||
| + | |||
| + | | Mode (JOY_CTRL bits 8 and 9) | Select | Select and RXEN | RXEN | Neither | | ||
| + | | --- | --- | --- | --- | --- | | ||
| + | | 0 | 1 | 1 | 1 | none | | ||
| + | | 1 | 2 | 1 | 1 | none | | ||
| + | | 2 | 4 | 1 | 1 | none | | ||
| + | | 3 | 8 | 4 | 3 | none | | ||
| + | |||
| + | ### SIO0 /ACK by Byte | ||
| + | |||
| + | A controller in slot 1 was sent 01h, 42h and three bytes of 00h with JOY_CTRL 1003h. The receive byte arrived 1,351 to 1,461 cycles after the write to JOY_DATA and /ACK went low 1,681 to 1,780 cycles after it, and /ACK stayed low for 91 to 108 cycles. After the fifth byte no /ACK came, and the wait for it ran out at 24,844 to 24,882 cycles. Waiting 0, 200, 1,000, 3,000 or 10,000 cycles after select made no consistent difference.[^akd] | ||
| + | |||
| + | When the byte 01h was sent 3,000 cycles after select plus k steps of 17 cycles, the receive time fell from 1,428 to 1,329 cycles over k 0 to 6 and was 1,450 at k 7. A hundred turns of the loop that polls JOY_STAT bit 7 took 1,238 cycles.[^akd] | ||
| + | |||
| + | ### KSEG1 Loop Placement | ||
| + | |||
| + | A KSEG1 loop of two loads, their uses and 100 turns of a NOP took 2,491 to 2,504 cycles for each of nine placements. The code was moved by 0, 2 KB and 64 KB and the data by the same steps, and no placement changed the time by more than 13 cycles.[^unp] | ||
| + | |||
| + | ## Runs | ||
| + | |||
| + | ### 5 October 2026 | ||
| + | |||
| + | [followup25/00RUN.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/00RUN.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 00 RUN | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | 7 tests | ||
| + | A chain program, linked at 80100000 | ||
| + | Saved on the card in slot 2, from image 1 | ||
| + | COP0 at start: BPC 00000000 BDA 00000000 TAR 8001A9D4 DCIC 00000000 BadVaddr 00000480 BDAM 00000000 | ||
| + | BPCM 00000000 SR 00000000 Cause 00000020 EPC 8001B588 PRId 00000002 | ||
| + | ``` | ||
| + | |||
| + | [followup25/01DSS.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/01DSS.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 01 DSS F25 HBLANK SPAN READ BACK TO BACK | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | Timer0 on the system clock read back to back, 640x240 (row 64): | ||
| + | sync 2 (counts in hblank only): 18832 cycles for 2048 reads; max 536 (3 reads) min 0; from read 221: 460 469 478 491 500 509 518 527 536 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | ||
| + | sync 2 again: 18754 cycles for 2048 reads; max 537 (1 reads) min 0; from read 470: 465 474 483 492 501 510 519 528 537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | ||
| + | sync 0 (paused in hblank): 18746 cycles for 2048 reads; max 13884 (1 reads) min 13; from read 2039: 13812 13821 13830 13839 13848 13857 13866 13875 13884 | ||
| + | free: 18754 cycles for 2048 reads; max 18741 (1 reads) min 13; from read 2039: 18665 18674 18683 18692 18701 18710 18719 18728 18741 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [followup25/02T1V.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/02T1V.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 02 T1V F25 T1 HBLANK TICKS AT VBLANK | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | Timer1 at the hblank clock, each change timed from IRQ0 (row 107): | ||
| + | free (0100h), after IRQ0: 1992:225 4168:226 6296:227 8456:228 10584:229 12752:230 | ||
| + | before the next (at 566072): 555184:482 557344:483 559488:484 561648:485 563792:486 565936:487 | ||
| + | sync 0, paused in vblank (0101h), after IRQ0: 2008:231 55816:232 57984:233 60112:234 62272:235 64440:236 | ||
| + | before the next (at 566096): 555192:464 557336:465 559496:466 561640:467 563800:468 565960:469 | ||
| + | sync 1, reset at vblank (0103h), after IRQ0: 2016:228 4144:229 6312:230 8440:231 10600:232 12768:233 | ||
| + | before the next (at 566072): 555184:232 557328:233 559488:234 561632:235 563792:236 565936:237 | ||
| + | sync 2, counts in vblank (0105h), after IRQ0: 4168:1 6296:2 8456:3 10576:4 12744:5 14912:6 | ||
| + | before the next (at 566088): 42880:19 45024:20 47184:21 49328:22 51488:23 52016:0 | ||
| + | sync 3, held until a vblank (0107h), after IRQ0: 55816:1 57944:2 60104:3 62264:4 64440:5 66560:6 | ||
| + | before the next (at 566088): 555192:233 557336:234 559496:235 561640:236 563800:237 565944:238 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [followup25/03KTL.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/03KTL.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 03 KTL F25 ONE PASS ACCESS TIMES | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | Timer 2 counts from a mode write (sh zero), the shape, then lhu of the count; one pass | ||
| + | each, from KSEG1 then the cache (warm), four runs (rows 16 21 25 26 27 33 41). | ||
| + | nothing, n NOPs: | ||
| + | n 0 KSEG1: 4 4 4 4 | ||
| + | n 0 cached: 0 0 0 0 | ||
| + | n 1 KSEG1: 10 10 10 16 | ||
| + | n 1 cached: 0 0 0 0 | ||
| + | n 2 KSEG1: 16 16 16 16 | ||
| + | n 2 cached: 1 1 1 1 | ||
| + | n 3 KSEG1: 22 22 22 22 | ||
| + | n 3 cached: 2 2 2 2 | ||
| + | n 4 KSEG1: 28 28 28 28 | ||
| + | n 4 cached: 3 3 3 3 | ||
| + | n 5 KSEG1: 38 34 34 34 | ||
| + | n 5 cached: 4 4 4 4 | ||
| + | n 6 KSEG1: 44 40 40 40 | ||
| + | n 6 cached: 5 5 5 5 | ||
| + | RAM sw, n NOPs: | ||
| + | n 0 KSEG1: 15 15 15 20 | ||
| + | n 0 cached: 0 0 0 0 | ||
| + | n 1 KSEG1: 21 21 21 21 | ||
| + | n 1 cached: 3 3 3 3 | ||
| + | n 2 KSEG1: 27 27 27 27 | ||
| + | n 2 cached: 3 3 3 3 | ||
| + | n 3 KSEG1: 33 33 33 33 | ||
| + | n 3 cached: 5 3 3 3 | ||
| + | n 4 KSEG1: 39 39 39 39 | ||
| + | n 4 cached: 4 4 4 4 | ||
| + | n 5 KSEG1: 45 50 45 45 | ||
| + | n 5 cached: 5 5 5 5 | ||
| + | n 6 KSEG1: 51 51 56 51 | ||
| + | n 6 cached: 6 6 6 6 | ||
| + | RAM sw, RAM sw, n NOPs: | ||
| + | n 0 KSEG1: 23 23 23 23 | ||
| + | n 0 cached: 5 5 5 5 | ||
| + | n 1 KSEG1: 29 29 34 29 | ||
| + | n 1 cached: 5 5 5 5 | ||
| + | n 2 KSEG1: 35 35 35 35 | ||
| + | n 2 cached: 5 5 6 5 | ||
| + | n 3 KSEG1: 41 45 41 41 | ||
| + | n 3 cached: 5 5 11 5 | ||
| + | n 4 KSEG1: 47 52 47 47 | ||
| + | n 4 cached: 5 14 5 5 | ||
| + | n 5 KSEG1: 53 53 57 53 | ||
| + | n 5 cached: 6 6 6 6 | ||
| + | n 6 KSEG1: 63 59 59 59 | ||
| + | n 6 cached: 7 15 15 15 | ||
| + | RAM sw, RAM sw, n NOPs, j next: | ||
| + | n 0 KSEG1: 35 35 35 35 | ||
| + | n 0 cached: 5 5 5 5 | ||
| + | n 1 KSEG1: 46 41 41 41 | ||
| + | n 1 cached: 5 5 6 5 | ||
| + | n 2 KSEG1: 47 47 47 51 | ||
| + | n 2 cached: 5 5 5 5 | ||
| + | n 3 KSEG1: 53 53 58 53 | ||
| + | n 3 cached: 6 6 6 6 | ||
| + | n 4 KSEG1: 59 59 59 59 | ||
| + | n 4 cached: 7 15 15 15 | ||
| + | n 5 KSEG1: 65 65 69 65 | ||
| + | n 5 cached: 8 15 15 20 | ||
| + | n 6 KSEG1: 75 75 71 71 | ||
| + | n 6 cached: 9 15 15 15 | ||
| + | RAM lw, RAM sw, n NOPs: | ||
| + | n 0 KSEG1: 26 26 31 26 | ||
| + | n 0 cached: 9 9 15 3 | ||
| + | n 1 KSEG1: 32 32 32 32 | ||
| + | n 1 cached: 9 9 9 9 | ||
| + | n 2 KSEG1: 38 38 38 38 | ||
| + | n 2 cached: 9 9 9 9 | ||
| + | n 3 KSEG1: 44 44 44 44 | ||
| + | n 3 cached: 10 10 10 10 | ||
| + | n 4 KSEG1: 50 50 50 54 | ||
| + | n 4 cached: 11 11 11 11 | ||
| + | n 5 KSEG1: 56 56 60 56 | ||
| + | n 5 cached: 13 12 12 12 | ||
| + | n 6 KSEG1: 62 62 62 62 | ||
| + | n 6 cached: 13 20 20 14 | ||
| + | I_STAT sw, n NOPs: | ||
| + | n 0 KSEG1: 10 10 10 10 | ||
| + | n 0 cached: 0 0 0 0 | ||
| + | n 1 KSEG1: 16 16 16 20 | ||
| + | n 1 cached: 2 2 2 2 | ||
| + | n 2 KSEG1: 22 22 22 22 | ||
| + | n 2 cached: 2 2 2 2 | ||
| + | n 3 KSEG1: 28 28 32 28 | ||
| + | n 3 cached: 3 3 3 3 | ||
| + | n 4 KSEG1: 34 34 34 34 | ||
| + | n 4 cached: 4 4 4 4 | ||
| + | n 5 KSEG1: 40 44 40 40 | ||
| + | n 5 cached: 5 5 5 5 | ||
| + | n 6 KSEG1: 50 46 46 46 | ||
| + | n 6 cached: 6 6 6 6 | ||
| + | RAM lw, n NOPs, addu of it: | ||
| + | n 0 KSEG1: 22 22 22 22 | ||
| + | n 0 cached: 8 8 8 8 | ||
| + | n 1 KSEG1: 28 28 31 28 | ||
| + | n 1 cached: 9 9 9 9 | ||
| + | n 2 KSEG1: 32 32 32 32 | ||
| + | n 2 cached: 10 10 10 4 | ||
| + | n 3 KSEG1: 38 38 38 38 | ||
| + | n 3 cached: 10 10 10 10 | ||
| + | n 4 KSEG1: 49 44 44 44 | ||
| + | n 4 cached: 10 10 10 10 | ||
| + | n 5 KSEG1: 50 50 50 50 | ||
| + | n 5 cached: 10 10 10 10 | ||
| + | n 6 KSEG1: 56 56 56 56 | ||
| + | n 6 cached: 10 17 17 17 | ||
| + | I_STAT lw, n NOPs, addu of it: | ||
| + | n 0 KSEG1: 19 20 19 19 | ||
| + | n 0 cached: 6 6 6 6 | ||
| + | n 1 KSEG1: 25 25 31 25 | ||
| + | n 1 cached: 7 7 7 7 | ||
| + | n 2 KSEG1: 28 28 28 28 | ||
| + | n 2 cached: 8 8 8 8 | ||
| + | n 3 KSEG1: 34 38 34 34 | ||
| + | n 3 cached: 8 8 8 8 | ||
| + | n 4 KSEG1: 40 44 40 40 | ||
| + | n 4 cached: 8 8 8 8 | ||
| + | n 5 KSEG1: 46 46 46 46 | ||
| + | n 5 cached: 8 8 8 8 | ||
| + | n 6 KSEG1: 56 52 52 52 | ||
| + | n 6 cached: 9 16 16 16 | ||
| + | I_STAT lw, n NOPs, RAM lw: | ||
| + | n 0 KSEG1: 29 29 29 35 | ||
| + | n 0 cached: 13 13 13 13 | ||
| + | n 1 KSEG1: 35 35 35 35 | ||
| + | n 1 cached: 14 14 10 14 | ||
| + | n 2 KSEG1: 38 38 38 38 | ||
| + | n 2 cached: 15 15 15 15 | ||
| + | n 3 KSEG1: 49 44 44 44 | ||
| + | n 3 cached: 15 15 15 15 | ||
| + | n 4 KSEG1: 56 50 50 50 | ||
| + | n 4 cached: 15 15 21 15 | ||
| + | n 5 KSEG1: 56 56 60 56 | ||
| + | n 5 cached: 19 22 22 22 | ||
| + | n 6 KSEG1: 62 68 62 62 | ||
| + | n 6 cached: 16 20 20 20 | ||
| + | I_STAT lw, n NOPs, scratchpad lw: | ||
| + | n 0 KSEG1: 25 25 25 25 | ||
| + | n 0 cached: 7 7 7 7 | ||
| + | n 1 KSEG1: 31 31 31 31 | ||
| + | n 1 cached: 8 8 8 8 | ||
| + | n 2 KSEG1: 34 38 34 34 | ||
| + | n 2 cached: 9 9 9 9 | ||
| + | n 3 KSEG1: 40 44 40 40 | ||
| + | n 3 cached: 9 9 9 9 | ||
| + | n 4 KSEG1: 46 46 50 46 | ||
| + | n 4 cached: 9 9 9 9 | ||
| + | n 5 KSEG1: 56 56 52 52 | ||
| + | n 5 cached: 9 16 16 16 | ||
| + | n 6 KSEG1: 58 58 58 62 | ||
| + | n 6 cached: 10 16 16 16 | ||
| + | RAM lw, n NOPs, RAM sw: | ||
| + | n 0 KSEG1: 26 26 26 26 | ||
| + | n 0 cached: 9 9 9 9 | ||
| + | n 1 KSEG1: 31 31 31 31 | ||
| + | n 1 cached: 11 11 11 11 | ||
| + | n 2 KSEG1: 43 37 37 37 | ||
| + | n 2 cached: 11 11 11 11 | ||
| + | n 3 KSEG1: 43 43 43 43 | ||
| + | n 3 cached: 11 11 11 11 | ||
| + | n 4 KSEG1: 49 49 53 49 | ||
| + | n 4 cached: 11 15 11 11 | ||
| + | n 5 KSEG1: 55 55 61 55 | ||
| + | n 5 cached: 11 11 11 11 | ||
| + | n 6 KSEG1: 61 61 61 66 | ||
| + | n 6 cached: 11 21 21 21 | ||
| + | RAM lw, backward beq path, n NOPs, RAM lw: | ||
| + | n 0 KSEG1: 66 66 66 66 | ||
| + | n 0 cached: 17 21 26 21 | ||
| + | n 1 KSEG1: 72 72 76 72 | ||
| + | n 1 cached: 17 21 21 21 | ||
| + | n 2 KSEG1: 83 83 78 78 | ||
| + | n 2 cached: 17 27 27 27 | ||
| + | n 3 KSEG1: 84 84 90 89 | ||
| + | n 3 cached: 17 32 32 38 | ||
| + | n 4 KSEG1: 90 90 90 90 | ||
| + | n 4 cached: 18 40 40 40 | ||
| + | n 5 KSEG1: 96 96 101 101 | ||
| + | n 5 cached: 19 36 36 41 | ||
| + | n 6 KSEG1: 102 102 102 102 | ||
| + | n 6 cached: 20 47 43 43 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [followup25/04RXS.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/04RXS.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 04 RXS F25 SIO0 RX IRQ BY SELECT AND RXEN | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | SIO0 RX IRQ by mode with each of select (CTRL bit 1) and RXEN (bit 2) (row 110): | ||
| + | select, mode 0: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | select, mode 1: 007/0 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | select, mode 2: 007/0 007/0 007/0 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | select, mode 3: 007/0 007/0 007/0 007/0 007/0 007/0 007/0 207/1; 8 read out | ||
| + | select and RXEN, mode 0: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | select and RXEN, mode 1: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | select and RXEN, mode 2: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | select and RXEN, mode 3: 007/0 007/0 007/0 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | RXEN, mode 0: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 1 read out | ||
| + | RXEN, mode 1: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 2 read out | ||
| + | RXEN, mode 2: 207/1 207/1 207/1 207/1 207/1 207/1 207/1 207/1; 4 read out | ||
| + | RXEN, mode 3: 007/0 007/0 207/1 207/1 207/1 207/1 207/1 207/1; 8 read out | ||
| + | neither, mode 0: 005/0 005/0 005/0 005/0 005/0 005/0 005/0 005/0; 0 read out | ||
| + | neither, mode 1: 005/0 005/0 005/0 005/0 005/0 005/0 005/0 005/0; 0 read out | ||
| + | neither, mode 2: 005/0 005/0 005/0 005/0 005/0 005/0 005/0 005/0; 0 read out | ||
| + | neither, mode 3: 005/0 005/0 005/0 005/0 005/0 005/0 005/0 005/0; 0 read out | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [followup25/05AKD.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/05AKD.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 05 AKD F25 SIO0 ACK DELAY BY BYTE | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | SIO0 pad in slot 1, CTRL 1003h: write to RX, write to /ACK, /ACK low, by byte (row 114): | ||
| + | select +0: 1406/1736/102 1428/1747/102 1461/1780/102 1450/1758/106 1450/24882/49 | ||
| + | select +200: 1439/1769/96 1406/1729/91 1428/1741/102 1461/1769/102 1450/24877/51 | ||
| + | select +1000: 1362/1681/95 1417/1736/102 1450/1769/102 1428/1747/102 1450/24877/49 | ||
| + | select +3000: 1395/1726/91 1406/1728/102 1450/1769/102 1450/1769/108 1453/24880/49 | ||
| + | select +10000: 1351/1681/102 1428/1747/102 1450/1780/102 1439/1758/95 1417/24844/49 | ||
| + | 01h after select +3000 and k steps of 17 cycles: 1428/1758 1406/1736 1395/1714 1384/1703 1362/1681 1351/1670 1329/1648 1450/1780 | ||
| + | 100 turns of the bit 7 poll: 1238 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [followup25/06UNP.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/06UNP.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 06 UNP F25 KSEG1 LOOP BY PLACEMENT | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | KSEG1: 2 loads, their uses, 100 turns of a NOP, timed as measure() times it (row 118): | ||
| + | code +00004, data same 2 KB (80110734): 2501 2494 2491 | ||
| + | code +00004, data next 2 KB (80110F34): 2498 2491 2491 | ||
| + | code +00004, data 64 KB on (80120734): 2498 2495 2497 | ||
| + | code +00804, data same 2 KB (80110F34): 2501 2496 2495 | ||
| + | code +00804, data next 2 KB (80111734): 2498 2491 2491 | ||
| + | code +00804, data 64 KB on (80120F34): 2502 2495 2496 | ||
| + | code +10004, data same 2 KB (80120734): 2501 2496 2495 | ||
| + | code +10004, data next 2 KB (80120F34): 2502 2495 2497 | ||
| + | code +10004, data 64 KB on (80110734): 2504 2496 2495 | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | [followup25/07KXR.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/07KXR.txt) | ||
| + | |||
| + | ``` | ||
| + | ===== 07 KXR F25 SPUSTAT BIT 11 IN THE SAMPLE | BIOS 19951204 System ROM Version 3.0 11/18/96 A | ||
| + | BadVaddr as the group starts: 00000480 | ||
| + | Voices 0 and 23 keyed on, attack +7 a sample. After a SPUSTAT bit 11 rise, the cycles to | ||
| + | each of the next four level changes, voice 0 | voice 23 (row 108): | ||
| + | 0: | | ||
| + | 1: | | ||
| + | 2: | | ||
| + | 3: | | ||
| + | 4: | | ||
| + | 5: | | ||
| + | 6: | | ||
| + | 7: | | ||
| + | 8: | | ||
| + | 9: | | ||
| + | 10: | | ||
| + | 11: | | ||
| + | 12: | | ||
| + | 13: | | ||
| + | 14: | | ||
| + | 15: | | ||
| + | 100 turns of the rise poll's body: 2726 cycles | ||
| + | Done. | ||
| + | ``` | ||
| + | |||
| + | ## References | ||
| + | |||
| + | [^run]: SCPH-5501 output: [followup25/00RUN.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/00RUN.txt) | ||
| + | [^dss]: SCPH-5501 output: [followup25/01DSS.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/01DSS.txt) | ||
| + | [^t1v]: SCPH-5501 output: [followup25/02T1V.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/02T1V.txt) | ||
| + | [^ktl]: SCPH-5501 output: [followup25/03KTL.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/03KTL.txt) | ||
| + | [^rxs]: SCPH-5501 output: [followup25/04RXS.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/04RXS.txt) | ||
| + | [^akd]: SCPH-5501 output: [followup25/05AKD.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/05AKD.txt) | ||
| + | [^unp]: SCPH-5501 output: [followup25/06UNP.txt](/tests/raw/20261005T0000Z-5501a-card-q/followup25/06UNP.txt) | ||