Difference between revisions of "Cd read retry"
Jump to navigation
Jump to search
m (Talcall moved page 00020a64 - 00020c38 to Cd Read Retry) |
m |
||
(2 intermediate revisions by the same user not shown) | |||
Line 6: | Line 6: | ||
00020a70: 00002021 addu r4,r0,r0 | 00020a70: 00002021 addu r4,r0,r0 | ||
00020a74: afbf0020 sw r31,0x0020(r29) | 00020a74: afbf0020 sw r31,0x0020(r29) | ||
− | 00020a78: 0c007ad6 jal 0x0001eb58 | + | 00020a78: 0c007ad6 jal 0x0001eb58 [[CdSyncCallback]] |
00020a7c: afb00018 sw r16,0x0018(r29) | 00020a7c: afb00018 sw r16,0x0018(r29) | ||
− | 00020a80: 0c007adc jal 0x0001eb70 | + | 00020a80: 0c007adc jal 0x0001eb70 [[CdReadyCallback]] |
00020a84: 00002021 addu r4,r0,r0 | 00020a84: 00002021 addu r4,r0,r0 | ||
− | 00020a88: 0c007a73 jal 0x0001e9cc | + | 00020a88: 0c007a73 jal 0x0001e9cc [[CdStatus]] |
00020a8c: 00000000 nop | 00020a8c: 00000000 nop | ||
00020a90: 30420010 andi r2,r2,0x0010 | 00020a90: 30420010 andi r2,r2,0x0010 | ||
− | 00020a94: 10400017 beq r2,r0,0x00020af4 | + | 00020a94: 10400017 beq r2,r0,0x00020af4 branch if shell closed |
00020a98: 00000000 nop | 00020a98: 00000000 nop | ||
− | 00020a9c: 0c0076ea jal 0x0001dba8 | + | 00020a9c: 0c0076ea jal 0x0001dba8 [[VSync]] |
00020aa0: 2404ffff addiu r4,r0,0xffff | 00020aa0: 2404ffff addiu r4,r0,0xffff | ||
00020aa4: 3042003f andi r2,r2,0x003f | 00020aa4: 3042003f andi r2,r2,0x003f | ||
− | 00020aa8: 14400006 bne r2,r0,0x00020ac4 | + | 00020aa8: 14400006 bne r2,r0,0x00020ac4 branch if, vsync is a multiple of 40? |
00020aac: 34040001 ori r4,r0,0x0001 | 00020aac: 34040001 ori r4,r0,0x0001 | ||
00020ab0: 3c048001 lui r4,0x8001 | 00020ab0: 3c048001 lui r4,0x8001 | ||
00020ab4: 24840438 addiu r4,r4,0x0438 | 00020ab4: 24840438 addiu r4,r4,0x0438 | ||
− | 00020ab8: 0c0088a3 jal 0x0002228c | + | 00020ab8: 0c0088a3 jal 0x0002228c [[Write String to Terminal]] "CdRead: Shell open...\n" |
00020abc: 00000000 nop | 00020abc: 00000000 nop | ||
− | 00020ac0: 34040001 ori r4,r0,0x0001 | + | 00020ac0: 34040001 ori r4,r0,0x0001 issue NOP to CDrom |
− | 00020ac4: 0c007b30 jal 0x0001ecc0 | + | 00020ac4: 0c007b30 jal 0x0001ecc0 [[CdControlF]] NOP |
00020ac8: 00002821 addu r5,r0,r0 | 00020ac8: 00002821 addu r5,r0,r0 | ||
− | 00020acc: 0c0076ea jal 0x0001dba8 | + | 00020acc: 0c0076ea jal 0x0001dba8 [[VSync]] |
00020ad0: 2404ffff addiu r4,r0,0xffff | 00020ad0: 2404ffff addiu r4,r0,0xffff | ||
00020ad4: 3c038003 lui r3,0x8003 | 00020ad4: 3c038003 lui r3,0x8003 | ||
− | 00020ad8: 24631ba8 addiu r3,r3,0x1ba8 | + | 00020ad8: 24631ba8 addiu r3,r3,0x1ba8 absolute time after program boot |
00020adc: ac620000 sw r2,0x0000(r3) | 00020adc: ac620000 sw r2,0x0000(r3) | ||
00020ae0: 2402ffff addiu r2,r0,0xffff | 00020ae0: 2402ffff addiu r2,r0,0xffff | ||
00020ae4: 3c018003 lui r1,0x8003 | 00020ae4: 3c018003 lui r1,0x8003 | ||
− | 00020ae8: ac221ba0 sw r2,0x1ba0(r1) | + | 00020ae8: ac221ba0 sw r2,0x1ba0(r1) command failed? |
− | 00020aec: 08008307 j 0x00020c1c | + | 00020aec: 08008307 j 0x00020c1c end |
00020af0: 00000000 nop | 00020af0: 00000000 nop | ||
− | 00020af4: 12200017 beq r17,r0,0x00020b54 | + | closed shell |
+ | 00020af4: 12200017 beq r17,r0,0x00020b54 if input 0, skip | ||
00020af8: 00000000 nop | 00020af8: 00000000 nop | ||
00020afc: 3c048001 lui r4,0x8001 | 00020afc: 3c048001 lui r4,0x8001 | ||
00020b00: 24840450 addiu r4,r4,0x0450 | 00020b00: 24840450 addiu r4,r4,0x0450 | ||
− | 00020b04: 0c0088a3 jal 0x0002228c | + | 00020b04: 0c0088a3 jal 0x0002228c [[Write String to Terminal]] "CdRead: retry...\n" |
00020b08: 00000000 nop | 00020b08: 00000000 nop | ||
− | 00020b0c: 34040009 ori r4,r0,0x0009 | + | 00020b0c: 34040009 ori r4,r0,0x0009 pause CD |
00020b10: 00002821 addu r5,r0,r0 | 00020b10: 00002821 addu r5,r0,r0 | ||
− | 00020b14: 0c007ae2 jal 0x0001eb88 | + | 00020b14: 0c007ae2 jal 0x0001eb88 [[CdControl]] |
00020b18: 00003021 addu r6,r0,r0 | 00020b18: 00003021 addu r6,r0,r0 | ||
− | 00020b1c: 0c007a7f jal 0x0001e9fc | + | 00020b1c: 0c007a7f jal 0x0001e9fc [[CdLastPos]] |
00020b20: 00000000 nop | 00020b20: 00000000 nop | ||
− | 00020b24: 34040002 ori r4,r0,0x0002 | + | 00020b24: 34040002 ori r4,r0,0x0002 set seek target position |
− | 00020b28: 00402821 addu r5,r2,r0 | + | 00020b28: 00402821 addu r5,r2,r0 pointer to last CDpos CDlLoc |
− | 00020b2c: 0c007ae2 jal 0x0001eb88 | + | 00020b2c: 0c007ae2 jal 0x0001eb88 [[CdControl]] |
00020b30: 00003021 addu r6,r0,r0 | 00020b30: 00003021 addu r6,r0,r0 | ||
− | 00020b34: 14400007 bne r2,r0,0x00020b54 | + | 00020b34: 14400007 bne r2,r0,0x00020b54 branch if command issued successfully |
00020b38: 2403ffff addiu r3,r0,0xffff | 00020b38: 2403ffff addiu r3,r0,0xffff | ||
00020b3c: 3c028003 lui r2,0x8003 | 00020b3c: 3c028003 lui r2,0x8003 | ||
− | 00020b40: 24421ba0 addiu r2,r2,0x1ba0 | + | 00020b40: 24421ba0 addiu r2,r2,0x1ba0 command failed? |
− | 00020b44: ac430000 sw r3,0x0000(r2) | + | 00020b44: ac430000 sw r3,0x0000(r2) |
00020b48: 8c420000 lw r2,0x0000(r2) | 00020b48: 8c420000 lw r2,0x0000(r2) | ||
− | 00020b4c: 08008309 j 0x00020c24 | + | 00020b4c: 08008309 j 0x00020c24 return -1 |
00020b50: 00000000 nop | 00020b50: 00000000 nop | ||
− | 00020b54: 0c007a9e jal 0x0001ea78 | + | p1 = 0: |
+ | 00020b54: 0c007a9e jal 0x0001ea78 [[CdFlush]] | ||
00020b58: 00000000 nop | 00020b58: 00000000 nop | ||
00020b5c: 3c028003 lui r2,0x8003 | 00020b5c: 3c028003 lui r2,0x8003 | ||
00020b60: 24421b98 addiu r2,r2,0x1b98 | 00020b60: 24421b98 addiu r2,r2,0x1b98 | ||
− | 00020b64: 8c500000 lw r16,0x0000(r2) | + | 00020b64: 8c500000 lw r16,0x0000(r2) CDRom subsystem mode |
00020b68: 00000000 nop | 00020b68: 00000000 nop | ||
− | 00020b6c: a3b00010 sb r16,0x0010(r29) | + | 00020b6c: a3b00010 sb r16,0x0010(r29) |
− | 00020b70: 0c007a77 jal 0x0001e9dc | + | 00020b70: 0c007a77 jal 0x0001e9dc [[CdMode]] |
00020b74: 321000ff andi r16,r16,0x00ff | 00020b74: 321000ff andi r16,r16,0x00ff | ||
− | 00020b78: 16020003 bne r16,r2,0x00020b88 | + | 00020b78: 16020003 bne r16,r2,0x00020b88 branch if they don't match |
− | 00020b7c: 3404000e ori r4,r0,0x000e | + | 00020b7c: 3404000e ori r4,r0,0x000e set mode |
− | 00020b80: 1220000a beq r17,r0,0x00020bac | + | 00020b80: 1220000a beq r17,r0,0x00020bac branch if 0 |
00020b84: 00000000 nop | 00020b84: 00000000 nop | ||
00020b88: 27a50010 addiu r5,r29,0x0010 | 00020b88: 27a50010 addiu r5,r29,0x0010 | ||
− | 00020b8c: 0c007ae2 jal 0x0001eb88 | + | 00020b8c: 0c007ae2 jal 0x0001eb88 [[CdControl]] manually reset CD mode to intended value? |
00020b90: 00003021 addu r6,r0,r0 | 00020b90: 00003021 addu r6,r0,r0 | ||
− | 00020b94: 14400005 bne r2,r0,0x00020bac | + | 00020b94: 14400005 bne r2,r0,0x00020bac branch if successful |
00020b98: 2402ffff addiu r2,r0,0xffff | 00020b98: 2402ffff addiu r2,r0,0xffff | ||
00020b9c: 3c018003 lui r1,0x8003 | 00020b9c: 3c018003 lui r1,0x8003 | ||
− | 00020ba0: ac221ba0 sw r2,0x1ba0(r1) | + | 00020ba0: ac221ba0 sw r2,0x1ba0(r1) unsuccessful |
− | 00020ba4: 08008307 j 0x00020c1c | + | 00020ba4: 08008307 j 0x00020c1c end |
00020ba8: 00000000 nop | 00020ba8: 00000000 nop | ||
− | 00020bac: 0c007a7f jal 0x0001e9fc | + | |
+ | 00020bac: 0c007a7f jal 0x0001e9fc [[CdLastPos]] | ||
00020bb0: 00000000 nop | 00020bb0: 00000000 nop | ||
− | 00020bb4: 0c007c30 jal 0x0001f0c0 | + | 00020bb4: 0c007c30 jal 0x0001f0c0 [[CdPosToInt]] |
00020bb8: 00402021 addu r4,r2,r0 | 00020bb8: 00402021 addu r4,r2,r0 | ||
00020bbc: 3c048002 lui r4,0x8002 | 00020bbc: 3c048002 lui r4,0x8002 | ||
− | 00020bc0: 24840840 addiu r4,r4,0x0840 | + | 00020bc0: 24840840 addiu r4,r4,0x0840 cb_read |
00020bc4: 3c038003 lui r3,0x8003 | 00020bc4: 3c038003 lui r3,0x8003 | ||
00020bc8: 24631bac addiu r3,r3,0x1bac | 00020bc8: 24631bac addiu r3,r3,0x1bac | ||
− | 00020bcc: ac620000 sw r2,0x0000(r3) | + | 00020bcc: ac620000 sw r2,0x0000(r3) store LBA of last attempt at reading file |
− | 00020bd0: 0c007adc jal 0x0001eb70 | + | 00020bd0: 0c007adc jal 0x0001eb70 [[CdReadyCallback]] initiate with [[cb_read]] on CD load |
00020bd4: 00000000 nop | 00020bd4: 00000000 nop | ||
− | 00020bd8: 34040006 ori r4,r0,0x0006 | + | 00020bd8: 34040006 ori r4,r0,0x0006 start data read |
00020bdc: 3c028003 lui r2,0x8003 | 00020bdc: 3c028003 lui r2,0x8003 | ||
− | 00020be0: 8c421b90 lw r2,0x1b90(r2) | + | 00020be0: 8c421b90 lw r2,0x1b90(r2) load buffer address |
00020be4: 00002821 addu r5,r0,r0 | 00020be4: 00002821 addu r5,r0,r0 | ||
00020be8: 3c018003 lui r1,0x8003 | 00020be8: 3c018003 lui r1,0x8003 | ||
− | 00020bec: ac221b94 sw r2,0x1b94(r1) | + | 00020bec: ac221b94 sw r2,0x1b94(r1) store buffer address |
− | 00020bf0: 0c007b30 jal 0x0001ecc0 | + | 00020bf0: 0c007b30 jal 0x0001ecc0 [[CdControlF]] |
00020bf4: 00000000 nop | 00020bf4: 00000000 nop | ||
00020bf8: 3c028003 lui r2,0x8003 | 00020bf8: 3c028003 lui r2,0x8003 | ||
− | 00020bfc: 8c421b8c lw r2,0x1b8c(r2) | + | 00020bfc: 8c421b8c lw r2,0x1b8c(r2) load sector count |
00020c00: 2404ffff addiu r4,r0,0xffff | 00020c00: 2404ffff addiu r4,r0,0xffff | ||
00020c04: 3c018003 lui r1,0x8003 | 00020c04: 3c018003 lui r1,0x8003 | ||
− | 00020c08: ac221ba0 sw r2,0x1ba0(r1) | + | 00020c08: ac221ba0 sw r2,0x1ba0(r1) store sector count at cdread failstate? |
− | 00020c0c: 0c0076ea jal 0x0001dba8 | + | 00020c0c: 0c0076ea jal 0x0001dba8 [[VSync]] |
00020c10: 00000000 nop | 00020c10: 00000000 nop | ||
00020c14: 3c018003 lui r1,0x8003 | 00020c14: 3c018003 lui r1,0x8003 | ||
− | 00020c18: ac221ba4 sw r2,0x1ba4(r1) | + | 00020c18: ac221ba4 sw r2,0x1ba4(r1) store total vsync count since opening |
+ | End | ||
00020c1c: 3c028003 lui r2,0x8003 | 00020c1c: 3c028003 lui r2,0x8003 | ||
00020c20: 8c421ba0 lw r2,0x1ba0(r2) | 00020c20: 8c421ba0 lw r2,0x1ba0(r2) |
Latest revision as of 10:56, 5 June 2024
00020a64: 27bdffd8 addiu r29,r29,0xffd8 00020a68: afb1001c sw r17,0x001c(r29) 00020a6c: 00808821 addu r17,r4,r0 00020a70: 00002021 addu r4,r0,r0 00020a74: afbf0020 sw r31,0x0020(r29) 00020a78: 0c007ad6 jal 0x0001eb58 CdSyncCallback 00020a7c: afb00018 sw r16,0x0018(r29) 00020a80: 0c007adc jal 0x0001eb70 CdReadyCallback 00020a84: 00002021 addu r4,r0,r0 00020a88: 0c007a73 jal 0x0001e9cc CdStatus 00020a8c: 00000000 nop 00020a90: 30420010 andi r2,r2,0x0010 00020a94: 10400017 beq r2,r0,0x00020af4 branch if shell closed 00020a98: 00000000 nop 00020a9c: 0c0076ea jal 0x0001dba8 VSync 00020aa0: 2404ffff addiu r4,r0,0xffff 00020aa4: 3042003f andi r2,r2,0x003f 00020aa8: 14400006 bne r2,r0,0x00020ac4 branch if, vsync is a multiple of 40? 00020aac: 34040001 ori r4,r0,0x0001 00020ab0: 3c048001 lui r4,0x8001 00020ab4: 24840438 addiu r4,r4,0x0438 00020ab8: 0c0088a3 jal 0x0002228c Write String to Terminal "CdRead: Shell open...\n" 00020abc: 00000000 nop 00020ac0: 34040001 ori r4,r0,0x0001 issue NOP to CDrom 00020ac4: 0c007b30 jal 0x0001ecc0 CdControlF NOP 00020ac8: 00002821 addu r5,r0,r0 00020acc: 0c0076ea jal 0x0001dba8 VSync 00020ad0: 2404ffff addiu r4,r0,0xffff 00020ad4: 3c038003 lui r3,0x8003 00020ad8: 24631ba8 addiu r3,r3,0x1ba8 absolute time after program boot 00020adc: ac620000 sw r2,0x0000(r3) 00020ae0: 2402ffff addiu r2,r0,0xffff 00020ae4: 3c018003 lui r1,0x8003 00020ae8: ac221ba0 sw r2,0x1ba0(r1) command failed? 00020aec: 08008307 j 0x00020c1c end 00020af0: 00000000 nop
closed shell
00020af4: 12200017 beq r17,r0,0x00020b54 if input 0, skip 00020af8: 00000000 nop 00020afc: 3c048001 lui r4,0x8001 00020b00: 24840450 addiu r4,r4,0x0450 00020b04: 0c0088a3 jal 0x0002228c Write String to Terminal "CdRead: retry...\n" 00020b08: 00000000 nop 00020b0c: 34040009 ori r4,r0,0x0009 pause CD 00020b10: 00002821 addu r5,r0,r0 00020b14: 0c007ae2 jal 0x0001eb88 CdControl 00020b18: 00003021 addu r6,r0,r0 00020b1c: 0c007a7f jal 0x0001e9fc CdLastPos 00020b20: 00000000 nop 00020b24: 34040002 ori r4,r0,0x0002 set seek target position 00020b28: 00402821 addu r5,r2,r0 pointer to last CDpos CDlLoc 00020b2c: 0c007ae2 jal 0x0001eb88 CdControl 00020b30: 00003021 addu r6,r0,r0 00020b34: 14400007 bne r2,r0,0x00020b54 branch if command issued successfully 00020b38: 2403ffff addiu r3,r0,0xffff 00020b3c: 3c028003 lui r2,0x8003 00020b40: 24421ba0 addiu r2,r2,0x1ba0 command failed? 00020b44: ac430000 sw r3,0x0000(r2) 00020b48: 8c420000 lw r2,0x0000(r2) 00020b4c: 08008309 j 0x00020c24 return -1 00020b50: 00000000 nop
p1 = 0:
00020b54: 0c007a9e jal 0x0001ea78 CdFlush 00020b58: 00000000 nop 00020b5c: 3c028003 lui r2,0x8003 00020b60: 24421b98 addiu r2,r2,0x1b98 00020b64: 8c500000 lw r16,0x0000(r2) CDRom subsystem mode 00020b68: 00000000 nop 00020b6c: a3b00010 sb r16,0x0010(r29) 00020b70: 0c007a77 jal 0x0001e9dc CdMode 00020b74: 321000ff andi r16,r16,0x00ff 00020b78: 16020003 bne r16,r2,0x00020b88 branch if they don't match 00020b7c: 3404000e ori r4,r0,0x000e set mode 00020b80: 1220000a beq r17,r0,0x00020bac branch if 0 00020b84: 00000000 nop 00020b88: 27a50010 addiu r5,r29,0x0010 00020b8c: 0c007ae2 jal 0x0001eb88 CdControl manually reset CD mode to intended value? 00020b90: 00003021 addu r6,r0,r0 00020b94: 14400005 bne r2,r0,0x00020bac branch if successful 00020b98: 2402ffff addiu r2,r0,0xffff 00020b9c: 3c018003 lui r1,0x8003 00020ba0: ac221ba0 sw r2,0x1ba0(r1) unsuccessful 00020ba4: 08008307 j 0x00020c1c end 00020ba8: 00000000 nop
00020bac: 0c007a7f jal 0x0001e9fc CdLastPos 00020bb0: 00000000 nop 00020bb4: 0c007c30 jal 0x0001f0c0 CdPosToInt 00020bb8: 00402021 addu r4,r2,r0 00020bbc: 3c048002 lui r4,0x8002 00020bc0: 24840840 addiu r4,r4,0x0840 cb_read 00020bc4: 3c038003 lui r3,0x8003 00020bc8: 24631bac addiu r3,r3,0x1bac 00020bcc: ac620000 sw r2,0x0000(r3) store LBA of last attempt at reading file 00020bd0: 0c007adc jal 0x0001eb70 CdReadyCallback initiate with cb_read on CD load 00020bd4: 00000000 nop 00020bd8: 34040006 ori r4,r0,0x0006 start data read 00020bdc: 3c028003 lui r2,0x8003 00020be0: 8c421b90 lw r2,0x1b90(r2) load buffer address 00020be4: 00002821 addu r5,r0,r0 00020be8: 3c018003 lui r1,0x8003 00020bec: ac221b94 sw r2,0x1b94(r1) store buffer address 00020bf0: 0c007b30 jal 0x0001ecc0 CdControlF 00020bf4: 00000000 nop 00020bf8: 3c028003 lui r2,0x8003 00020bfc: 8c421b8c lw r2,0x1b8c(r2) load sector count 00020c00: 2404ffff addiu r4,r0,0xffff 00020c04: 3c018003 lui r1,0x8003 00020c08: ac221ba0 sw r2,0x1ba0(r1) store sector count at cdread failstate? 00020c0c: 0c0076ea jal 0x0001dba8 VSync 00020c10: 00000000 nop 00020c14: 3c018003 lui r1,0x8003 00020c18: ac221ba4 sw r2,0x1ba4(r1) store total vsync count since opening
End
00020c1c: 3c028003 lui r2,0x8003 00020c20: 8c421ba0 lw r2,0x1ba0(r2) 00020c24: 8fbf0020 lw r31,0x0020(r29) 00020c28: 8fb1001c lw r17,0x001c(r29) 00020c2c: 8fb00018 lw r16,0x0018(r29) 00020c30: 27bd0028 addiu r29,r29,0x0028 00020c34: 03e00008 jr r31 00020c38: 00000000 nop