Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
cdlreads.c
Go to the documentation of this file.
1/*
2
3MIT License
4
5Copyright (c) 2022 PCSX-Redux authors
6
7Permission is hereby granted, free of charge, to any person obtaining a copy
8of this software and associated documentation files (the "Software"), to deal
9in the Software without restriction, including without limitation the rights
10to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11copies of the Software, and to permit persons to whom the Software is
12furnished to do so, subject to the following conditions:
13
14The above copyright notice and this permission notice shall be included in all
15copies or substantial portions of the Software.
16
17THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23SOFTWARE.
24
25*/
26
27// clang-format off
28
30 int resetDone = resetCDRom();
31 if (!resetDone) {
33 return;
34 }
35
36 int setLocDone = setLoc(0, 2, 0x16);
37 if (!setLocDone) {
39 return;
40 }
41
43 CDROM_REG0 = 0;
46 uint8_t cause1 = ackCDRomCause();
47 uint8_t ctrl1 = CDROM_REG0 & ~3;
48 uint8_t response1[16];
50 uint8_t ctrl2 = CDROM_REG0 & ~3;
51 CDROM_REG0 = 1;
52 uint8_t cause1b = CDROM_REG3_UC;
53
55 uint8_t cause2 = ackCDRomCause();
56 uint8_t ctrl3 = CDROM_REG0 & ~3;
57 uint8_t response2[16];
59 uint8_t ctrl4 = CDROM_REG0 & ~3;
60 CDROM_REG0 = 1;
61 uint8_t cause2b = CDROM_REG3_UC;
62
64 uint8_t sector[2048];
65 uint32_t size = 0;
66
67 CDROM_REG0 = 0;
68 CDROM_REG3 = 0x80;
69
70 while ((CDROM_REG0 & 0x40) == 0);
71 while (((CDROM_REG0 & 0x40) != 0) && (size < 6)) {
73 }
74 CDROM_REG3 = 0;
75 uint32_t readTime = updateTime();
76
78 CDROM_REG0 = 0;
81 uint8_t cause3 = ackCDRomCause();
82 uint8_t ctrl5 = CDROM_REG0 & ~3;
83 uint8_t response3[16];
85 uint8_t ctrl6 = CDROM_REG0 & ~3;
86 CDROM_REG0 = 1;
87 uint8_t cause3b = CDROM_REG3_UC;
88
90 uint8_t cause4 = ackCDRomCause();
91 uint8_t ctrl7 = CDROM_REG0 & ~3;
92 uint8_t response4[16];
94 uint8_t ctrl8 = CDROM_REG0 & ~3;
95 CDROM_REG0 = 1;
96 uint8_t cause4b = CDROM_REG3_UC;
97
126 // Pausing at 1x is ~70ms
135 ramsyscall_printf("Basic single 6 bytes readS @1x at 00:02:16, ack1 in %ius, ready in %ius, read in %ius, ack2 in %ius, complete in %ius\n", ackTime1, readyTime, readTime, ackTime2, completeTime);
136)
137
138CESTER_TEST(cdlReadS1xwithDMA, test_instances,
139 int resetDone = resetCDRom();
140 if (!resetDone) {
142 return;
143 }
144
145 int setLocDone = setLoc(0, 2, 0x16);
146 if (!setLocDone) {
148 return;
149 }
150
156 uint8_t ctrl1 = CDROM_REG0 & ~3;
157 uint8_t response1[16];
159 uint8_t ctrl2 = CDROM_REG0 & ~3;
160 CDROM_REG0 = 1;
162
165 uint8_t ctrl3 = CDROM_REG0 & ~3;
166 uint8_t response2[16];
168 uint8_t ctrl4 = CDROM_REG0 & ~3;
169 CDROM_REG0 = 1;
171
173 uint8_t sector[2048];
174
175 CDROM_REG0 = 0;
177
179 dicr &= 0x00ffffff;
180 dicr |= 0x00880000;
182 DPCR |= 0x8000;
183 DMA_CTRL[DMA_CDROM].MADR = (uintptr_t)sector;
184 DMA_CTRL[DMA_CDROM].BCR = (2048 >> 2) | 0x10000;
185 DMA_CTRL[DMA_CDROM].CHCR = 0x11000000;
186
187 while ((DMA_CTRL[DMA_CDROM].CHCR & 0x01000000) != 0);
188 dicr = DICR;
189 dicr &= 0x00ffffff;
190 dicr |= 0x88000000;
191 DICR = dicr;
192 CDROM_REG3 = 0;
193 uint32_t readTime = updateTime();
194
196 CDROM_REG0 = 0;
200 uint8_t ctrl5 = CDROM_REG0 & ~3;
201 uint8_t response3[16];
203 uint8_t ctrl6 = CDROM_REG0 & ~3;
204 CDROM_REG0 = 1;
206
209 uint8_t ctrl7 = CDROM_REG0 & ~3;
210 uint8_t response4[16];
212 uint8_t ctrl8 = CDROM_REG0 & ~3;
213 CDROM_REG0 = 1;
215
244 // Pausing at 1x is ~70ms
252 ramsyscall_printf("Basic single full sector readS @1x with DMA at 00:02:16, ack1 in %ius, ready in %ius, read in %ius, ack2 in %ius, complete in %ius\n", ackTime1, readyTime, readTime, ackTime2, completeTime);
253)
254
256 int resetDone = resetCDRom();
257 if (!resetDone) {
259 return;
260 }
261
262 int setModeDone = setMode(0x80);
263 if (!setModeDone) {
265 return;
266 }
267
268 int setLocDone = setLoc(0, 2, 0x16);
269 if (!setLocDone) {
271 return;
272 }
273
275 CDROM_REG0 = 0;
278 uint8_t cause1 = ackCDRomCause();
279 uint8_t ctrl1 = CDROM_REG0 & ~3;
280 uint8_t response1[16];
282 uint8_t ctrl2 = CDROM_REG0 & ~3;
283 CDROM_REG0 = 1;
284 uint8_t cause1b = CDROM_REG3_UC;
285
287 uint8_t cause2 = ackCDRomCause();
288 uint8_t ctrl3 = CDROM_REG0 & ~3;
289 uint8_t response2[16];
291 uint8_t ctrl4 = CDROM_REG0 & ~3;
292 CDROM_REG0 = 1;
293 uint8_t cause2b = CDROM_REG3_UC;
294
296 uint8_t sector[2048];
297 uint32_t size = 0;
298
299 CDROM_REG0 = 0;
300 CDROM_REG3 = 0x80;
301
302 while ((CDROM_REG0 & 0x40) == 0);
303 while (((CDROM_REG0 & 0x40) != 0) && (size < 6)) {
305 }
306 CDROM_REG3 = 0;
307 uint32_t readTime = updateTime();
308
310 CDROM_REG0 = 0;
313 uint8_t cause3 = ackCDRomCause();
314 uint8_t ctrl5 = CDROM_REG0 & ~3;
315 uint8_t response3[16];
317 uint8_t ctrl6 = CDROM_REG0 & ~3;
318 CDROM_REG0 = 1;
319 uint8_t cause3b = CDROM_REG3_UC;
320
322 uint8_t cause4 = ackCDRomCause();
323 uint8_t ctrl7 = CDROM_REG0 & ~3;
324 uint8_t response4[16];
326 uint8_t ctrl8 = CDROM_REG0 & ~3;
327 CDROM_REG0 = 1;
328 uint8_t cause4b = CDROM_REG3_UC;
329
358 // Switching speed is roughly 650ms for the speed up,
359 // and then this also contains the seeking time, and
360 // the time to read the first sector, which is 6.66ms
362 // Pausing at 2x is ~35ms
371 ramsyscall_printf("Basic single 6 bytes readS @2x at 00:02:16, ack1 in %ius, ready in %ius, read in %ius, ack2 in %ius, complete in %ius\n", ackTime1, readyTime, readTime, ackTime2, completeTime);
372)
373
374CESTER_TEST(cdlReadS2xwithDMA, test_instances,
375 int resetDone = resetCDRom();
376 if (!resetDone) {
378 return;
379 }
380
381 int setModeDone = setMode(0x80);
382 if (!setModeDone) {
384 return;
385 }
386
387 int setLocDone = setLoc(0, 2, 0x16);
388 if (!setLocDone) {
390 return;
391 }
392
394 CDROM_REG0 = 0;
397 uint8_t cause1 = ackCDRomCause();
398 uint8_t ctrl1 = CDROM_REG0 & ~3;
399 uint8_t response1[16];
401 uint8_t ctrl2 = CDROM_REG0 & ~3;
402 CDROM_REG0 = 1;
403 uint8_t cause1b = CDROM_REG3_UC;
404
406 uint8_t cause2 = ackCDRomCause();
407 uint8_t ctrl3 = CDROM_REG0 & ~3;
408 uint8_t response2[16];
410 uint8_t ctrl4 = CDROM_REG0 & ~3;
411 CDROM_REG0 = 1;
412 uint8_t cause2b = CDROM_REG3_UC;
413
415 uint8_t sector[2048];
416
417 CDROM_REG0 = 0;
418 CDROM_REG3 = 0x80;
419
421 dicr &= 0x00ffffff;
422 dicr |= 0x00880000;
423 DICR = dicr;
424 DPCR |= 0x8000;
425 DMA_CTRL[DMA_CDROM].MADR = (uintptr_t)sector;
426 DMA_CTRL[DMA_CDROM].BCR = (2048 >> 2) | 0x10000;
427 DMA_CTRL[DMA_CDROM].CHCR = 0x11000000;
428
429 while ((DMA_CTRL[DMA_CDROM].CHCR & 0x01000000) != 0);
430 dicr = DICR;
431 dicr &= 0x00ffffff;
432 dicr |= 0x88000000;
433 DICR = dicr;
434 CDROM_REG3 = 0;
435 uint32_t readTime = updateTime();
436
438 CDROM_REG0 = 0;
441 uint8_t cause3 = ackCDRomCause();
442 uint8_t ctrl5 = CDROM_REG0 & ~3;
443 uint8_t response3[16];
445 uint8_t ctrl6 = CDROM_REG0 & ~3;
446 CDROM_REG0 = 1;
447 uint8_t cause3b = CDROM_REG3_UC;
448
450 uint8_t cause4 = ackCDRomCause();
451 uint8_t ctrl7 = CDROM_REG0 & ~3;
452 uint8_t response4[16];
454 uint8_t ctrl8 = CDROM_REG0 & ~3;
455 CDROM_REG0 = 1;
456 uint8_t cause4b = CDROM_REG3_UC;
457
486 // Switching speed is roughly 650ms for the speed up,
487 // and then this also contains the seeking time, and
488 // the time to read the first sector, which is 6.66ms
490 // Pausing at 2x is ~35ms
498 ramsyscall_printf("Basic single full sector readS @2x with DMA at 00:02:16, ack1 in %ius, ready in %ius, read in %ius, ack2 in %ius, complete in %ius\n", ackTime1, readyTime, readTime, ackTime2, completeTime);
499)
500
501CESTER_TEST(cdlReadS2xRunaway, test_instances,
502 int resetDone = resetCDRom();
503 if (!resetDone) {
505 return;
506 }
507
508 int setModeDone = setMode(0x80);
509 if (!setModeDone) {
511 return;
512 }
513
514 int setLocDone = setLoc(0, 2, 0x16);
515 if (!setLocDone) {
517 return;
518 }
519
521 CDROM_REG0 = 0;
524 uint8_t cause1 = ackCDRomCause();
525 uint8_t ctrl1 = CDROM_REG0 & ~3;
526 uint8_t response1[16];
528 uint8_t ctrl2 = CDROM_REG0 & ~3;
529 CDROM_REG0 = 1;
530 uint8_t cause1b = CDROM_REG3_UC;
531
533 uint8_t cause2 = ackCDRomCause();
534 uint8_t ctrl3 = CDROM_REG0 & ~3;
535 uint8_t response2[16];
537 uint8_t ctrl4 = CDROM_REG0 & ~3;
538 CDROM_REG0 = 1;
539 uint8_t cause2b = CDROM_REG3_UC;
540
542 uint8_t sector[2048];
543 uint32_t size = 0;
544
545 CDROM_REG0 = 0;
546 CDROM_REG3 = 0x80;
547 while ((CDROM_REG0 & 0x40) == 0);
548 while (((CDROM_REG0 & 0x40) != 0) && (size < 6)) {
550 }
551 uint32_t readTime = updateTime();
552
554 CDROM_REG0 = 0;
557 uint8_t cause3 = ackCDRomCause();
558 uint8_t ctrl5 = CDROM_REG0 & ~3;
559 uint8_t response3[16];
561 uint8_t ctrl6 = CDROM_REG0 & ~3;
562 CDROM_REG0 = 1;
563 uint8_t cause3b = CDROM_REG3_UC;
564
566 uint8_t cause4 = ackCDRomCause();
567 uint8_t ctrl7 = CDROM_REG0 & ~3;
568 uint8_t response4[16];
570 uint8_t ctrl8 = CDROM_REG0 & ~3;
571 CDROM_REG0 = 1;
572 uint8_t cause4b = CDROM_REG3_UC;
573 CDROM_REG0 = 0;
574 CDROM_REG3 = 0;
575
604 // Switching speed is roughly 650ms for the speed up,
605 // and then this also contains the seeking time, and
606 // the time to read the first sector, which is 6.66ms
608 // Pausing at 2x is ~35ms
617 ramsyscall_printf("Basic single 6 bytes readS @2x at 00:02:16, runaway read, ack1 in %ius, ready in %ius, read in %ius, ack2 in %ius, complete in %ius\n", ackTime1, readyTime, readTime, ackTime2, completeTime);
618)
619
620CESTER_TEST(cdlReadSInAudio, test_instances,
621 int resetDone = resetCDRom();
622 if (!resetDone) {
624 return;
625 }
626
627 int setLocDone = setLoc(0x70, 0x21, 0);
628 if (!setLocDone) {
630 return;
631 }
632
634 CDROM_REG0 = 0;
637 uint8_t cause1 = ackCDRomCause();
638 uint8_t ctrl1 = CDROM_REG0 & ~3;
639 uint8_t response1[16];
641 uint8_t ctrl2 = CDROM_REG0 & ~3;
642 CDROM_REG0 = 1;
643 uint8_t cause1b = CDROM_REG3_UC;
644
646 uint8_t cause2 = ackCDRomCause();
647 uint8_t ctrl3 = CDROM_REG0 & ~3;
648 uint8_t response2[16];
650 uint8_t ctrl4 = CDROM_REG0 & ~3;
651 CDROM_REG0 = 1;
652 uint8_t cause2b = CDROM_REG3_UC;
653
670 ramsyscall_printf("Basic readS in audio track, ack in %ius, errored in %ius\n", ackTime, errorTime);
671)
672
674 int resetDone = resetCDRom();
675 if (!resetDone) {
677 return;
678 }
679
680 int setLocDone = setLoc(0x80, 0, 0);
681 if (!setLocDone) {
683 return;
684 }
685
687 CDROM_REG0 = 0;
690 uint8_t cause1 = ackCDRomCause();
691 uint8_t ctrl1 = CDROM_REG0 & ~3;
692 uint8_t response1[16];
694 uint8_t ctrl2 = CDROM_REG0 & ~3;
695 CDROM_REG0 = 1;
696 uint8_t cause1b = CDROM_REG3_UC;
697
699 uint8_t cause2 = ackCDRomCause();
700 uint8_t ctrl3 = CDROM_REG0 & ~3;
701 uint8_t response2[16];
703 uint8_t ctrl4 = CDROM_REG0 & ~3;
704 CDROM_REG0 = 1;
705 uint8_t cause2b = CDROM_REG3_UC;
706
723 ramsyscall_printf("Basic readS too far, ack in %ius, errored in %ius\n", ackTime, errorTime);
724)
725
726CESTER_TEST(cdlReadS2xWithNop, test_instances,
727 int resetDone = resetCDRom();
728 if (!resetDone) {
730 return;
731 }
732
733 int setModeDone = setMode(0x80);
734 if (!setModeDone) {
736 return;
737 }
738
739 int setLocDone = setLoc(0x70, 0, 0);
740 if (!setLocDone) {
742 return;
743 }
744
746 CDROM_REG0 = 0;
749 uint8_t cause1 = ackCDRomCause();
750 uint8_t ctrl1 = CDROM_REG0 & ~3;
751 uint8_t response1[16];
753 uint8_t ctrl2 = CDROM_REG0 & ~3;
754 CDROM_REG0 = 1;
755 uint8_t cause1b = CDROM_REG3_UC;
756
757 CDROM_REG0 = 0;
759
760 uint8_t ctrl2b = CDROM_REG0 & ~3;
761
763 uint8_t cause2 = ackCDRomCause();
764 uint8_t ctrl3 = CDROM_REG0 & ~3;
765 uint8_t response2[16];
767 uint8_t ctrl4 = CDROM_REG0 & ~3;
768 CDROM_REG0 = 1;
769 uint8_t cause2b = CDROM_REG3_UC;
770
773 uint8_t cause3 = ackCDRomCause();
774 uint8_t ctrl5 = CDROM_REG0 & ~3;
775 uint8_t response3[16];
777 uint8_t ctrl6 = CDROM_REG0 & ~3;
778 CDROM_REG0 = 1;
779 uint8_t cause3b = CDROM_REG3_UC;
780
782 CDROM_REG0 = 0;
785 uint8_t cause4 = ackCDRomCause();
786 uint8_t ctrl7 = CDROM_REG0 & ~3;
787 uint8_t response4[16];
789 uint8_t ctrl8 = CDROM_REG0 & ~3;
790 CDROM_REG0 = 1;
791 uint8_t cause4b = CDROM_REG3_UC;
792
795 uint8_t ctrl9 = CDROM_REG0 & ~3;
796 uint8_t response5[16];
798 uint8_t ctrl10 = CDROM_REG0 & ~3;
799 CDROM_REG0 = 1;
801
841 ramsyscall_printf("Basic single full sector readS @2x with DMA at 70:00:00 with nop interleaved, ack1 in %ius, ack2 in %ius, ready in %ius, ack3 in %ius, complete in %ius\n", ackTime1, ackTime2, readyTime, ackTime3, completeTime);
842)
waitCDRomIRQ()
uint8_t ctrl6
Definition cdlreads.c:203
cester_assert_uint_eq(3, cause1)
uint8_t response4[16]
Definition cdlreads.c:210
uint8_t cause4
Definition cdlreads.c:208
CDROM_REG0
Definition cdlreads.c:152
int setModeDone
Definition cdlreads.c:381
uint32_t ackTime
Definition cdlreads.c:636
uint32_t ackTime3
Definition cdlreads.c:784
uint8_t response2[16]
Definition cdlreads.c:166
uint8_t responseSize2
Definition cdlreads.c:167
uint8_t responseSize1
Definition cdlreads.c:158
uint8_t response5[16]
Definition cdlreads.c:796
uint8_t ctrl7
Definition cdlreads.c:209
uint8_t cause5
Definition cdlreads.c:794
int setLocDone
Definition cdlreads.c:145
uint8_t cause4b
Definition cdlreads.c:214
CDROM_REG3
Definition cdlreads.c:176
int resetDone
Definition cdlreads.c:139
uint8_t ctrl4
Definition cdlreads.c:168
uint8_t ctrl2b
Definition cdlreads.c:760
uint8_t response1[16]
Definition cdlreads.c:157
uint8_t sector[2048]
Definition cdlreads.c:173
uint32_t dicr
Definition cdlreads.c:178
uint32_t ackTime1
Definition cdlreads.c:154
test_instances
Definition cdlreads.c:138
uint8_t cause2b
Definition cdlreads.c:170
uint8_t ctrl5
Definition cdlreads.c:200
cester_assert_uint_lt(ackTime1, 7000)
uint8_t ctrl10
Definition cdlreads.c:798
uint32_t readTime
Definition cdlreads.c:193
uint32_t completeTime
Definition cdlreads.c:207
uint8_t cause5b
Definition cdlreads.c:800
uint8_t ctrl8
Definition cdlreads.c:212
uint8_t ctrl2
Definition cdlreads.c:159
uint8_t cause1
Definition cdlreads.c:155
DICR
Definition cdlreads.c:181
uint8_t cause2
Definition cdlreads.c:164
uint32_t ackTime2
Definition cdlreads.c:198
uint32_t errorTime
Definition cdlreads.c:645
DMA_CTRL[DMA_CDROM] CHCR
Definition cdlreads.c:185
uint8_t response3[16]
Definition cdlreads.c:201
uint8_t cause1b
Definition cdlreads.c:161
cester_assert_uint_ge(ackTime1, 500)
uint8_t ctrl1
Definition cdlreads.c:156
uint8_t responseSize3
Definition cdlreads.c:202
uint8_t cause3b
Definition cdlreads.c:205
CESTER_TEST(cdlReadS1x, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setLocDone=setLoc(0, 2, 0x16);if(!setLocDone) { cester_assert_true(setLocDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_READS;uint32_t ackTime1=waitCDRomIRQ();uint8_t cause1=ackCDRomCause();uint8_t ctrl1=CDROM_REG0 &~3;uint8_t response1[16];uint8_t responseSize1=readResponse(response1);uint8_t ctrl2=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause1b=CDROM_REG3_UC;uint32_t readyTime=waitCDRomIRQ() - ackTime1;uint8_t cause2=ackCDRomCause();uint8_t ctrl3=CDROM_REG0 &~3;uint8_t response2[16];uint8_t responseSize2=readResponse(response2);uint8_t ctrl4=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause2b=CDROM_REG3_UC;initializeTime();uint8_t sector[2048];uint32_t size=0;CDROM_REG0=0;CDROM_REG3=0x80;while((CDROM_REG0 &0x40)==0);while(((CDROM_REG0 &0x40) !=0) &&(size< 6)) { sector[size++]=CDROM_REG2;} CDROM_REG3=0;uint32_t readTime=updateTime();initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_PAUSE;uint32_t ackTime2=waitCDRomIRQ();uint8_t cause3=ackCDRomCause();uint8_t ctrl5=CDROM_REG0 &~3;uint8_t response3[16];uint8_t responseSize3=readResponse(response3);uint8_t ctrl6=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause3b=CDROM_REG3_UC;uint32_t completeTime=waitCDRomIRQ() - ackTime2;uint8_t cause4=ackCDRomCause();uint8_t ctrl7=CDROM_REG0 &~3;uint8_t response4[16];uint8_t responseSize4=readResponse(response4);uint8_t ctrl8=CDROM_REG0 &~3;CDROM_REG0=1;uint8_t cause4b=CDROM_REG3_UC;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(1, cause2);cester_assert_uint_eq(0xe0, cause2b);cester_assert_uint_eq(3, cause3);cester_assert_uint_eq(0xe0, cause3b);cester_assert_uint_eq(2, cause4);cester_assert_uint_eq(0xe0, cause4b);cester_assert_uint_eq(0x38, ctrl1);cester_assert_uint_eq(0x18, ctrl2);cester_assert_uint_eq(0x38, ctrl3);cester_assert_uint_eq(0x18, ctrl4);cester_assert_uint_eq(0x38, ctrl5);cester_assert_uint_eq(0x18, ctrl6);cester_assert_uint_eq(0x38, ctrl7);cester_assert_uint_eq(0x18, ctrl8);cester_assert_uint_eq(2, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(0x22, response2[0]);cester_assert_uint_eq(1, responseSize2);cester_assert_uint_eq(0x22, response3[0]);cester_assert_uint_eq(1, responseSize3);cester_assert_uint_eq(2, response4[0]);cester_assert_uint_eq(1, responseSize4);cester_assert_uint_ge(ackTime1, 500);cester_assert_uint_lt(ackTime1, 7000);cester_assert_uint_ge(ackTime2, 500);cester_assert_uint_lt(ackTime2, 7000);cester_assert_uint_ge(completeTime, 65000);cester_assert_uint_eq(1, sector[0]);cester_assert_uint_eq('C', sector[1]);cester_assert_uint_eq('D', sector[2]);cester_assert_uint_eq('0', sector[3]);cester_assert_uint_eq('0', sector[4]);cester_assert_uint_eq('1', sector[5]);cester_assert_uint_eq(6, size);ramsyscall_printf("Basic single 6 bytes readS @1x at 00:02:16, ack1 in %ius, ready in %ius, read in %ius, ack2 in %ius, complete in %ius\n", ackTime1, readyTime, readTime, ackTime2, completeTime);) CESTER_TEST(cdlReadS1xwithDMA
DPCR
Definition cdlreads.c:182
initializeTime()
CDROM_REG1
Definition cdlreads.c:153
uint32_t readyTime
Definition cdlreads.c:163
uint8_t ctrl9
Definition cdlreads.c:795
uint8_t ctrl3
Definition cdlreads.c:165
uint8_t cause3
Definition cdlreads.c:199
uint8_t responseSize5
Definition cdlreads.c:797
uint8_t responseSize4
Definition cdlreads.c:211
@ CDL_READS
Definition cdrom.h:69
@ CDL_NOP
Definition cdrom.h:43
@ CDL_PAUSE
Definition cdrom.h:51
#define CDROM_REG3_UC
Definition cdrom.h:39
#define CDROM_REG2
Definition cdrom.h:33
static int size
Definition string.h:142
ramsyscall_printf("=== e01_kseg1_reads_no_fill ===\n")
#define DMA_CTRL
Definition dma.h:36
@ DMA_CDROM
Definition dma.h:42
ackCDRomCause()
cester_assert_true(seekDone)
readResponse(response)
void uint32_t(classId, spec)