Nugget
Bare-metal libraries and examples for the original PlayStation
Loading...
Searching...
No Matches
Functions | Variables
cdlreadn.c File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

 CESTER_TEST (cdlReadN1x, 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_READN;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 readN @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(cdlReadN1xwithDMA
 
 if (!resetDone)
 
 initializeTime ()
 
 while ((DMA_CTRL[DMA_CDROM].CHCR &0x01000000) !=0)
 
 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])
 
 ramsyscall_printf ("Basic single full sector readN @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)
 
 CESTER_TEST (cdlReadN2x, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0x80);if(!setModeDone) { cester_assert_true(setModeDone);return;} int setLocDone=setLoc(0, 2, 0x16);if(!setLocDone) { cester_assert_true(setLocDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_READN;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(readyTime, 500000);cester_assert_uint_ge(completeTime, 32500);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 readN @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);) CESTER_TEST(cdlReadN2xwithDMA
 
 cester_assert_uint_ge (readyTime, 500000)
 
 cester_assert_uint_ge (completeTime, 32500)
 
 ramsyscall_printf ("Basic single full sector readN @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)
 
 CESTER_TEST (cdlReadN2xwithDMAMode02, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setModeDone=setMode(0xa0);if(!setModeDone) { cester_assert_true(setModeDone);return;} int setLocDone=setLoc(0, 2, 0x16);if(!setLocDone) { cester_assert_true(setLocDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_READN;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[2340];CDROM_REG0=0;CDROM_REG3=0x80;uint32_t dicr=DICR;dicr &=0x00ffffff;dicr|=0x00880000;DICR=dicr;DPCR|=0x8000;DMA_CTRL[DMA_CDROM].MADR=(uintptr_t) sector;DMA_CTRL[DMA_CDROM].BCR=(2340 > > 2)|0x10000;DMA_CTRL[DMA_CDROM].CHCR=0x11000000;while((DMA_CTRL[DMA_CDROM].CHCR &0x01000000) !=0);dicr=DICR;dicr &=0x00ffffff;dicr|=0x88000000;DICR=dicr;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(readyTime, 500000);cester_assert_uint_ge(completeTime, 32500);cester_assert_uint_eq(0x00, sector[0]);cester_assert_uint_eq(0x02, sector[1]);cester_assert_uint_eq(0x16, sector[2]);cester_assert_uint_eq(0x02, sector[3]);cester_assert_uint_eq(0x00, sector[4]);cester_assert_uint_eq(0x00, sector[5]);cester_assert_uint_eq(0x08, sector[6]);cester_assert_uint_eq(0x00, sector[7]);cester_assert_uint_eq(0x00, sector[8]);cester_assert_uint_eq(0x00, sector[9]);cester_assert_uint_eq(0x08, sector[10]);cester_assert_uint_eq(0x00, sector[11]);cester_assert_uint_eq(1, sector[12]);cester_assert_uint_eq('C', sector[13]);cester_assert_uint_eq('D', sector[14]);cester_assert_uint_eq('0', sector[15]);cester_assert_uint_eq('0', sector[16]);cester_assert_uint_eq('1', sector[17]);ramsyscall_printf("Basic single full sector readN @2x in 2340 mode 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);) CESTER_TEST(cdlReadN2xRunaway
 
 while ((CDROM_REG0 &0x40)==0)
 
 while (((CDROM_REG0 &0x40) !=0) &&(size< 6))
 
 cester_assert_uint_eq (0x78, ctrl5)
 
 cester_assert_uint_eq (0x58, ctrl6)
 
 cester_assert_uint_eq (0x78, ctrl7)
 
 cester_assert_uint_eq (0x58, ctrl8)
 
 cester_assert_uint_eq (6, size)
 
 ramsyscall_printf ("Basic single 6 bytes readN @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)
 
 CESTER_TEST (cdlReadNInAudio, test_instances, int resetDone=resetCDRom();if(!resetDone) { cester_assert_true(resetDone);return;} int setLocDone=setLoc(0x70, 0x21, 0);if(!setLocDone) { cester_assert_true(setLocDone);return;} initializeTime();CDROM_REG0=0;CDROM_REG1=CDL_READN;uint32_t ackTime=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 errorTime=waitCDRomIRQ() - ackTime;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;cester_assert_uint_eq(3, cause1);cester_assert_uint_eq(0xe0, cause1b);cester_assert_uint_eq(5, cause2);cester_assert_uint_eq(0xe0, cause2b);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(2, response1[0]);cester_assert_uint_eq(1, responseSize1);cester_assert_uint_eq(6, response2[0]);cester_assert_uint_eq(4, response2[1]);cester_assert_uint_eq(2, responseSize2);cester_assert_uint_ge(ackTime, 500);cester_assert_uint_lt(ackTime, 7000);cester_assert_uint_ge(errorTime, 4000000);ramsyscall_printf("Basic readN in audio track, ack in %ius, errored in %ius\n", ackTime, errorTime);) CESTER_TEST(cdlReadNTooFar
 
 cester_assert_uint_eq (5, cause2)
 
 cester_assert_uint_eq (6, response2[0])
 
 cester_assert_uint_eq (0x10, response2[1])
 
 cester_assert_uint_eq (2, responseSize2)
 
 cester_assert_uint_ge (ackTime, 500)
 
 cester_assert_uint_lt (ackTime, 7000)
 
 cester_assert_uint_ge (errorTime, 600000)
 
 ramsyscall_printf ("Basic readN too far, ack in %ius, errored in %ius\n", ackTime, errorTime)
 

Variables

 test_instances
 
int resetDone = resetCDRom()
 
int setLocDone = setLoc(0, 2, 0x16)
 
 CDROM_REG0 = 0
 
 CDROM_REG1 = CDL_READN
 
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
 
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
 
uint8_t cause2b = CDROM_REG3_UC
 
uint8_t sector [2048]
 
 CDROM_REG3 = 0x80
 
uint32_t dicr = DICR
 
 DICR = dicr
 
 DPCR = 0x8000
 
DMA_CTRL[DMA_CDROM] MADR = (uintptr_t)sector
 
DMA_CTRL[DMA_CDROM] BCR = (2048 >> 2) | 0x10000
 
DMA_CTRL[DMA_CDROM] CHCR = 0x11000000
 
uint32_t readTime = updateTime()
 
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
 
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
 
uint8_t cause4b = CDROM_REG3_UC
 
int setModeDone = setMode(0x80)
 
uint32_t size = 0
 
uint32_t ackTime = waitCDRomIRQ()
 
uint32_t errorTime = waitCDRomIRQ() - ackTime
 

Function Documentation

◆ cester_assert_uint_eq() [1/39]

cester_assert_uint_eq ( '0'  ,
sector  [3] 
)

◆ cester_assert_uint_eq() [2/39]

cester_assert_uint_eq ( '0'  ,
sector  [4] 
)

◆ cester_assert_uint_eq() [3/39]

cester_assert_uint_eq ( '1'  ,
sector  [5] 
)

◆ cester_assert_uint_eq() [4/39]

cester_assert_uint_eq ( 'C'  ,
sector  [1] 
)

◆ cester_assert_uint_eq() [5/39]

cester_assert_uint_eq ( 'D'  ,
sector  [2] 
)

◆ cester_assert_uint_eq() [6/39]

cester_assert_uint_eq ( 0x10  ,
response2  [1] 
)

◆ cester_assert_uint_eq() [7/39]

cester_assert_uint_eq ( 0x18  ,
ctrl2   
)

◆ cester_assert_uint_eq() [8/39]

cester_assert_uint_eq ( 0x18  ,
ctrl4   
)

◆ cester_assert_uint_eq() [9/39]

cester_assert_uint_eq ( 0x18  ,
ctrl6   
)

◆ cester_assert_uint_eq() [10/39]

cester_assert_uint_eq ( 0x18  ,
ctrl8   
)

◆ cester_assert_uint_eq() [11/39]

cester_assert_uint_eq ( 0x22  ,
response2  [0] 
)

◆ cester_assert_uint_eq() [12/39]

cester_assert_uint_eq ( 0x22  ,
response3  [0] 
)

◆ cester_assert_uint_eq() [13/39]

cester_assert_uint_eq ( 0x38  ,
ctrl1   
)

◆ cester_assert_uint_eq() [14/39]

cester_assert_uint_eq ( 0x38  ,
ctrl3   
)

◆ cester_assert_uint_eq() [15/39]

cester_assert_uint_eq ( 0x38  ,
ctrl5   
)

◆ cester_assert_uint_eq() [16/39]

cester_assert_uint_eq ( 0x38  ,
ctrl7   
)

◆ cester_assert_uint_eq() [17/39]

cester_assert_uint_eq ( 0x58  ,
ctrl6   
)

◆ cester_assert_uint_eq() [18/39]

cester_assert_uint_eq ( 0x58  ,
ctrl8   
)

◆ cester_assert_uint_eq() [19/39]

cester_assert_uint_eq ( 0x78  ,
ctrl5   
)

◆ cester_assert_uint_eq() [20/39]

cester_assert_uint_eq ( 0x78  ,
ctrl7   
)

◆ cester_assert_uint_eq() [21/39]

cester_assert_uint_eq ( 0xe0  ,
cause1b   
)

◆ cester_assert_uint_eq() [22/39]

cester_assert_uint_eq ( 0xe0  ,
cause2b   
)

◆ cester_assert_uint_eq() [23/39]

cester_assert_uint_eq ( 0xe0  ,
cause3b   
)

◆ cester_assert_uint_eq() [24/39]

cester_assert_uint_eq ( 0xe0  ,
cause4b   
)

◆ cester_assert_uint_eq() [25/39]

cester_assert_uint_eq ( 1  ,
cause2   
)

◆ cester_assert_uint_eq() [26/39]

cester_assert_uint_eq ( 1  ,
responseSize1   
)

◆ cester_assert_uint_eq() [27/39]

cester_assert_uint_eq ( 1  ,
responseSize2   
)

◆ cester_assert_uint_eq() [28/39]

cester_assert_uint_eq ( 1  ,
responseSize3   
)

◆ cester_assert_uint_eq() [29/39]

cester_assert_uint_eq ( 1  ,
responseSize4   
)

◆ cester_assert_uint_eq() [30/39]

cester_assert_uint_eq ( 1  ,
sector  [0] 
)

◆ cester_assert_uint_eq() [31/39]

cester_assert_uint_eq ( 2  ,
cause4   
)

◆ cester_assert_uint_eq() [32/39]

cester_assert_uint_eq ( 2  ,
response1  [0] 
)

◆ cester_assert_uint_eq() [33/39]

cester_assert_uint_eq ( 2  ,
response4  [0] 
)

◆ cester_assert_uint_eq() [34/39]

cester_assert_uint_eq ( 2  ,
responseSize2   
)

◆ cester_assert_uint_eq() [35/39]

cester_assert_uint_eq ( 3  ,
cause1   
)

◆ cester_assert_uint_eq() [36/39]

cester_assert_uint_eq ( 3  ,
cause3   
)

◆ cester_assert_uint_eq() [37/39]

cester_assert_uint_eq ( 5  ,
cause2   
)

◆ cester_assert_uint_eq() [38/39]

cester_assert_uint_eq ( 6  ,
response2  [0] 
)

◆ cester_assert_uint_eq() [39/39]

cester_assert_uint_eq ( 6  ,
size   
)

◆ cester_assert_uint_ge() [1/7]

cester_assert_uint_ge ( ackTime  ,
500   
)

◆ cester_assert_uint_ge() [2/7]

cester_assert_uint_ge ( ackTime1  ,
500   
)

◆ cester_assert_uint_ge() [3/7]

cester_assert_uint_ge ( ackTime2  ,
500   
)

◆ cester_assert_uint_ge() [4/7]

cester_assert_uint_ge ( completeTime  ,
32500   
)

◆ cester_assert_uint_ge() [5/7]

cester_assert_uint_ge ( completeTime  ,
65000   
)

◆ cester_assert_uint_ge() [6/7]

cester_assert_uint_ge ( errorTime  ,
600000   
)

◆ cester_assert_uint_ge() [7/7]

cester_assert_uint_ge ( readyTime  ,
500000   
)

◆ cester_assert_uint_lt() [1/3]

cester_assert_uint_lt ( ackTime  ,
7000   
)

◆ cester_assert_uint_lt() [2/3]

cester_assert_uint_lt ( ackTime1  ,
7000   
)

◆ cester_assert_uint_lt() [3/3]

cester_assert_uint_lt ( ackTime2  ,
7000   
)

◆ CESTER_TEST() [1/4]

CESTER_TEST ( cdlReadN1x  ,
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_READN; 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 readN @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() [2/4]

CESTER_TEST ( cdlReadN2x  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setModeDone = setMode(0x80); if (!setModeDone) { cester_assert_true(setModeDone); return; } int setLocDone = setLoc(0, 2, 0x16); if (!setLocDone) { cester_assert_true(setLocDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; 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(readyTime, 500000);  cester_assert_uint_ge(completeTime, 32500); 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 readN @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); 
)

◆ CESTER_TEST() [3/4]

CESTER_TEST ( cdlReadN2xwithDMAMode02  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setModeDone = setMode(0xa0); if (!setModeDone) { cester_assert_true(setModeDone); return; } int setLocDone = setLoc(0, 2, 0x16); if (!setLocDone) { cester_assert_true(setLocDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; 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[2340]; CDROM_REG0 = 0; CDROM_REG3 = 0x80; uint32_t dicr = DICR; dicr &= 0x00ffffff; dicr |= 0x00880000; DICR = dicr; DPCR |= 0x8000; DMA_CTRL[DMA_CDROM].MADR = (uintptr_t)sector; DMA_CTRL[DMA_CDROM].BCR = (2340 >> 2) | 0x10000; DMA_CTRL[DMA_CDROM].CHCR = 0x11000000; while ((DMA_CTRL[DMA_CDROM].CHCR & 0x01000000) != 0); dicr = DICR; dicr &= 0x00ffffff; dicr |= 0x88000000; DICR = dicr; 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(readyTime, 500000);  cester_assert_uint_ge(completeTime, 32500); cester_assert_uint_eq(0x00, sector[0]); cester_assert_uint_eq(0x02, sector[1]); cester_assert_uint_eq(0x16, sector[2]); cester_assert_uint_eq(0x02, sector[3]); cester_assert_uint_eq(0x00, sector[4]); cester_assert_uint_eq(0x00, sector[5]); cester_assert_uint_eq(0x08, sector[6]); cester_assert_uint_eq(0x00, sector[7]); cester_assert_uint_eq(0x00, sector[8]); cester_assert_uint_eq(0x00, sector[9]); cester_assert_uint_eq(0x08, sector[10]); cester_assert_uint_eq(0x00, sector[11]); cester_assert_uint_eq(1, sector[12]); cester_assert_uint_eq('C', sector[13]); cester_assert_uint_eq('D', sector[14]); cester_assert_uint_eq('0', sector[15]); cester_assert_uint_eq('0', sector[16]); cester_assert_uint_eq('1', sector[17]); ramsyscall_printf("Basic single full sector readN @2x in 2340 mode 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); 
)

◆ CESTER_TEST() [4/4]

CESTER_TEST ( cdlReadNInAudio  ,
test_instances  ,
int  resetDone = resetCDRom(); if (!resetDone) { cester_assert_true(resetDone); return; } int setLocDone = setLoc(0x70, 0x21, 0); if (!setLocDone) { cester_assert_true(setLocDone); return; } initializeTime(); CDROM_REG0 = 0; CDROM_REG1 = CDL_READN; uint32_t ackTime = 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 errorTime = waitCDRomIRQ() - ackTime; 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; cester_assert_uint_eq(3, cause1); cester_assert_uint_eq(0xe0, cause1b); cester_assert_uint_eq(5, cause2); cester_assert_uint_eq(0xe0, cause2b); 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(2, response1[0]); cester_assert_uint_eq(1, responseSize1); cester_assert_uint_eq(6, response2[0]); cester_assert_uint_eq(4, response2[1]); cester_assert_uint_eq(2, responseSize2); cester_assert_uint_ge(ackTime, 500); cester_assert_uint_lt(ackTime, 7000); cester_assert_uint_ge(errorTime, 4000000); ramsyscall_printf("Basic readN in audio track, ack in %ius, errored in %ius\n", ackTime, errorTime); 
)

◆ if()

if ( !  resetDone)

◆ initializeTime()

initializeTime ( )

◆ ramsyscall_printf() [1/4]

ramsyscall_printf ( "Basic readN too  far,
ack in %  ius,
errored in %ius\n"  ,
ackTime  ,
errorTime   
)

◆ ramsyscall_printf() [2/4]

ramsyscall_printf ( "Basic single 6 bytes readN @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   
)

◆ ramsyscall_printf() [3/4]

ramsyscall_printf ( "Basic single full sector readN @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   
)

◆ ramsyscall_printf() [4/4]

ramsyscall_printf ( "Basic single full sector readN @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   
)

◆ while() [1/3]

while ( ((CDROM_REG0 &0x40) !=0) &&(size< 6)  )

◆ while() [2/3]

while ( (CDROM_REG0 &0x40)  = =0)

◆ while() [3/3]

while ( (DMA_CTRL[DMA_CDROM].CHCR &0x01000000) !  = 0)

Variable Documentation

◆ ackTime

uint32_t ackTime = waitCDRomIRQ()

◆ ackTime1

uint32_t ackTime1 = waitCDRomIRQ()

◆ ackTime2

uint32_t ackTime2 = waitCDRomIRQ()

◆ BCR

DMA_CTRL [DMA_CDROM] BCR = (2048 >> 2) | 0x10000

◆ cause1

uint8_t cause1 = ackCDRomCause()

◆ cause1b

uint8_t cause1b = CDROM_REG3_UC

◆ cause2

uint8_t cause2 = ackCDRomCause()

◆ cause2b

uint8_t cause2b = CDROM_REG3_UC

◆ cause3

uint8_t cause3 = ackCDRomCause()

◆ cause3b

uint8_t cause3b = CDROM_REG3_UC

◆ cause4

uint8_t cause4 = ackCDRomCause()

◆ cause4b

uint8_t cause4b = CDROM_REG3_UC

◆ CDROM_REG0

CDROM_REG0 = 0

◆ CDROM_REG1

CDROM_REG1 = CDL_READN

◆ CDROM_REG3

CDROM_REG3 = 0x80

◆ CHCR

DMA_CTRL [DMA_CDROM] CHCR = 0x11000000

◆ completeTime

uint32_t completeTime = waitCDRomIRQ() - ackTime2

◆ ctrl1

uint8_t ctrl1 = CDROM_REG0 & ~3

◆ ctrl2

uint8_t ctrl2 = CDROM_REG0 & ~3

◆ ctrl3

uint8_t ctrl3 = CDROM_REG0 & ~3

◆ ctrl4

uint8_t ctrl4 = CDROM_REG0 & ~3

◆ ctrl5

uint8_t ctrl5 = CDROM_REG0 & ~3

◆ ctrl6

uint8_t ctrl6 = CDROM_REG0 & ~3

◆ ctrl7

uint8_t ctrl7 = CDROM_REG0 & ~3

◆ ctrl8

uint8_t ctrl8 = CDROM_REG0 & ~3

◆ dicr

uint32_t dicr = DICR

◆ DICR

DICR = dicr

◆ DPCR

DPCR = 0x8000

◆ errorTime

uint32_t errorTime = waitCDRomIRQ() - ackTime

◆ MADR

DMA_CTRL [DMA_CDROM] MADR = (uintptr_t)sector

◆ readTime

uint32_t readTime = updateTime()

◆ readyTime

uint32_t readyTime = waitCDRomIRQ() - ackTime1

◆ resetDone

int resetDone = resetCDRom()

◆ response1

uint8_t response1[16]

◆ response2

uint8_t response2[16]

◆ response3

uint8_t response3[16]

◆ response4

uint8_t response4

◆ responseSize1

uint8_t responseSize1 = readResponse(response1)

◆ responseSize2

uint8_t responseSize2 = readResponse(response2)

◆ responseSize3

uint8_t responseSize3 = readResponse(response3)

◆ responseSize4

uint8_t responseSize4 = readResponse(response4)

◆ sector

uint8_t sector[2048]

◆ setLocDone

int setLocDone = setLoc(0, 2, 0x16)

◆ setModeDone

int setModeDone = setMode(0x80)

◆ size

uint32_t size = 0

◆ test_instances

test_instances