Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 801C6E80 0x0 redirect to 801CE120: V0 = True if IPL valid else False
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C073848 JAL 801CE120 # V0 = True if IPL valid else False
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C6EA0 0x20 NERFed
- AFA40000 SW A0,0000 (SP)
- 03E00008 JR RA
- 00000000 NOP
- 801C6EAC 0x2C if not 80121214[0], call 800C78FC()
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C0E8012 LUI T6,8012
- 25CE1214 ADDIU T6,T6,1214
- 91CF0000 LBU T7,0000 (T6)
- 55E00008 BNEL T7,R0,+8 # if not 80121214[0], call 800C78FC()
- 8FBF0014 LW RA,0014 (SP)
- 0C031E3F JAL 800C78FC
- 00000000 NOP
- 3C198012 LUI T9,8012
- 27391214 ADDIU T9,T9,1214
- 24180001 ADDIU T8,R0,0001
- A3380000 SB T8,0000 (T9) # 80121214[0] = True
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C6EF0 0x70 V0 = True if 80121214[0]
- 3C0E8012 LUI T6,8012
- 25CE1214 ADDIU T6,T6,1214
- 91C20000 LBU V0,0000 (T6)
- 0002102B SLTU V0,R0,V0
- 03E00008 JR RA
- 00000000 NOP
- 801C6F08 0x88 NERFed; V0 = True
- 3C0E8012 LUI T6,8012
- 25CE1214 ADDIU T6,T6,1214
- 91CF0000 LBU T7,0000 (T6)
- 24020001 ADDIU V0,R0,0001
- 11E00003 BEQ T7,R0,+3 # if not 80121214[0], still returns True
- 00000000 NOP
- 03E00008 JR RA
- 24020001 ADDIU V0,R0,0001
- 03E00008 JR RA
- 00000000 NOP
- 801C6F30 0xB0
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C071BAB JAL 801C6EAC
- 00000000 NOP
- 0C071BC2 JAL 801C6F08 # NERFed; V0 = True
- 00000000 NOP
- 54400008 BNEL V0,R0,+8
- 8FBF0014 LW RA,0014 (SP)
- 0C00071F JAL 80001C7C # run timer for ((A0 * 3000) // 64)
- 2404411A ADDIU A0,R0,411A
- 0C071BC2 JAL 801C6F08 # NERFed; V0 = True
- 00000000 NOP
- 1040FFFB BEQ V0,R0,-5
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C6F78 0xF8
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C028012 LUI V0,8012
- 24421214 ADDIU V0,V0,1214
- AFBF0014 SW RA,0014 (SP)
- 904E0000 LBU T6,0000 (V0)
- 51C00004 BEQL T6,R0,+4 # if not 80121214[0], return
- 8FBF0014 LW RA,0014 (SP)
- 0C031E17 JAL 800C785C # call 800C9DA0(2, 0, 0xFF, 5)
- A0400000 SB R0,0000 (V0) # 80121214[0] = 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C6FAC 0x12C V0 = True if 80121213[0] else False; sets 80121213[0] = 0
- 3C038012 LUI V1,8012
- 24631213 ADDIU V1,V1,1213
- 906E0000 LBU T6,0000 (V1)
- 24020001 ADDIU V0,R0,0001
- 55C00004 BNEL T6,R0,+4 # if 80121213[0], 80121213[0] = 0
- A0600000 SB R0,0000 (V1)
- 03E00008 JR RA
- 00001025 OR V0,R0,R0
- A0600000 SB R0,0000 (V1)
- 03E00008 JR RA
- 00000000 NOP
- 801C6FD8 0x158
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C071BEB JAL 801C6FAC # V0 = True if 80121213[0] else False; sets 80121213[0] = 0
- 00000000 NOP
- 54400008 BNEL V0,R0,+8
- 8FBF0014 LW RA,0014 (SP)
- 0C00071F JAL 80001C7C # run timer for ((A0 * 3000) // 64)
- 2404411A ADDIU A0,R0,411A
- 0C071BEB JAL 801C6FAC # V0 = True if 80121213[0] else False; sets 80121213[0] = 0
- 00000000 NOP
- 1040FFFB BEQ V0,R0,-5
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C7018 0x198 if 80121213[0]: 80121213[0] = 1 and print error message "HungUp ../z_n64dd.c:503"
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C0E8012 LUI T6,8012
- 25CE1213 ADDIU T6,T6,1213
- 91CF0000 LBU T7,0000 (T6)
- 3C04801E LUI A0,801E
- 24848E00 ADDIU A0,A0,8E00 # A0 = 801D8E00: p->"../z_n64dd.c"
- 11E00003 BEQ T7,R0,+3 # if 80121213[0], call 800AF734("../z_n64dd.c", 0x1F7)
- 00000000 NOP
- 0C02BDCD JAL 800AF734 # print error message "HungUp %s:%d" % A0, A1
- 240501F7 ADDIU A1,R0,01F7 # line#
- @801C7044
- 3C198012 LUI T9,8012
- 27391213 ADDIU T9,T9,1213
- 24180001 ADDIU T8,R0,0001
- A3380000 SB T8,0000 (T9) # 80121213[0] = 1
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C7064 0x1E4 V0 = result of test unit ready; call 801C8000(801D9D50) w/ option 5
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C04801E LUI A0,801E
- 24849D50 ADDIU A0,A0,9D50
- AFBF0014 SW RA,0014 (SP)
- 3C19801D LUI T9,801D
- 240E0005 ADDIU T6,R0,0005
- 27398000 ADDIU T9,T9,8000 # call 801C8000(801D9D50)
- 0320F809 JALR RA,T9
- A08E0000 SB T6,0000 (A0) # 801D9D50[0] = 5: option
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 3C19801D LUI T9,801D
- 24849D50 ADDIU A0,A0,9D50
- 240E000A ADDIU T6,R0,000A
- 27398000 ADDIU T9,T9,8000
- 0320F809 JALR RA,T9
- A08E0000 SB T6,0000 (A0)
- 04410004 BGEZ V0,+4
- 00401825 OR V1,V0,R0
- 0C02B398 JAL 800ACE60 # run timer for one full clock
- AFA2001C SW V0,001C (SP)
- 8FA3001C LW V1,001C (SP)
- 00601025 OR V0,V1,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801C70E4 0x264 True if 801D9DC8 == 1
- 3C02801E LUI V0,801E
- 8C429DC8 LW V0,9DC8 (V0)
- 38420001 XORI V0,V0,0001
- 2C420001 SLTIU V0,V0,0001
- 03E00008 JR RA
- 00000000 NOP
- 801C70FC 0x27C redirect to 801C70E4: True if 801D9DC8 == 1
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C071C39 JAL 801C70E4 # True if 801D9DC8 == 1
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C711C 0x29C Thread: ddmsg
- accepts: A0=target {801D9B90}
- 27BDFFA0 ADDIU SP,SP,FFA0
- AFB1001C SW S1,001C (SP)
- 00808825 OR S1,A0,R0
- AFBF003C SW RA,003C (SP)
- AFBE0038 SW S8,0038 (SP)
- AFB70034 SW S7,0034 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB00018 SW S0,0018 (SP)
- 3C0E8012 LUI T6,8012
- AFA00058 SW R0,0058 (SP)
- 25CED968 ADDIU T6,T6,D968
- 26320078 ADDIU S2,S1,0078
- AE2E0098 SW T6,0098 (S1) # S1+98 = 8011D968
- 02402025 OR A0,S2,R0 # queue = S1+78
- 02202825 OR A1,S1,R0 # msg = S1+0
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 2406001E ADDIU A2,R0,001E # msgs = 30
- 8E240098 LW A0,0098 (S1) # A0 = 8011D968
- 26250090 ADDIU A1,S1,0090 # A1 = S1+90
- AFA50044 SW A1,0044 (SP)
- 0C02B3A4 JAL 800ACE90
- 02403025 OR A2,S2,R0 # queue = S1+78
- 3C17801E LUI S7,801E
- 00008025 OR S0,R0,R0
- 26F79DB8 ADDIU S7,S7,9DB8
- 241E0001 ADDIU S8,R0,0001
- 24160004 ADDIU S6,R0,0004
- 24150003 ADDIU S5,R0,0003
- 24140001 ADDIU S4,R0,0001
- 27B30058 ADDIU S3,SP,0058
- @801C71A4
- 02402025 OR A0,S2,R0 # queue = S1+78
- 02602825 OR A1,S3,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 02803025 OR A2,S4,R0 # wait
- 8FAF0058 LW T7,0058 (SP) # msg = @SP+58
- 85E30000 LH V1,0000 (T7)
- 10740007 BEQ V1,S4,+7
- 00000000 NOP
- 50750017 BEQL V1,S5,+23
- 02808025 OR S0,S4,R0
- 10760010 BEQ V1,S6,+16
- 00000000 NOP
- 10000013 BEQ R0,R0,+19
- 00000000 NOP
- @801C71DC: == 1
- 0C000D30 JAL 800034C0
- 00000000 NOP
- 3C18801E LUI T8,801E
- 8F18BFC8 LW T8,BFC8 (T8)
- 3C01801E LUI AT,801E
- 13020003 BEQ T8,V0,+3
- 00000000 NOP
- AC22BFC8 SW V0,BFC8 (AT)
- A2FE0000 SB S8,0000 (S7) # 801D9DB8 = 1
- @801C7200
- 0C0722AA JAL 801C8AA8
- 00000000 NOP
- 10000006 BEQ R0,R0,+6
- 00000000 NOP
- @801C7210
- 0C072AC1 JAL 801CAB04
- 00000000 NOP
- 10000002 BEQ R0,R0,+2
- 00000000 NOP
- @801C7220
- 02808025 OR S0,S4,R0 # break on fatal error
- 5200FFE0 BEQL S0,R0,-32
- 02402025 OR A0,S2,R0
- @801C722C
- 8E240098 LW A0,0098 (S1) # 8011D968
- 0C02B3C7 JAL 800ACF1C
- 8FA50044 LW A1,0044 (SP) # @S1+90
- 8FBF003C LW RA,003C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FBE0038 LW S8,0038 (SP)
- 03E00008 JR RA
- 27BD0060 ADDIU SP,SP,0060
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF0014 SW RA,0014 (SP)
- 0C071BBC JAL 801C6EF0 # V0 = True if 80121214[0]
- 00000000 NOP
- 14400003 BNE V0,R0,+3
- AFA20020 SW V0,0020 (SP)
- 0C071BCC JAL 801C6F30
- 00000000 NOP
- 3C0F801E LUI T7,801E
- 25EF9DB8 ADDIU T7,T7,9DB8
- 240E0001 ADDIU T6,R0,0001
- 3C08801E LUI T0,801E
- A1EE0000 SB T6,0000 (T7)
- 25089DC0 ADDIU T0,T0,9DC0
- 24180000 ADDIU T8,R0,0000
- AD180000 SW T8,0000 (T0)
- 24190000 ADDIU T9,R0,0000
- 0C071C19 JAL 801C7064 # V0 = result of test unit ready; call 801C8000(801D9D50) w/ option 5
- AD190004 SW T9,0004 (T0)
- 24010001 ADDIU AT,R0,0001
- 14410005 BNE V0,AT,+5
- 00000000 NOP
- 0C071C26 JAL 801C7098
- 00000000 NOP
- 10000007 BEQ R0,R0,+7
- 00000000 NOP
- 3C02801E LUI V0,801E
- 24429DC8 ADDIU V0,V0,9DC8
- 8C490000 LW T1,0000 (V0)
- 11200002 BEQ T1,R0,+2
- 00000000 NOP
- AC400000 SW R0,0000 (V0)
- 3C0A801E LUI T2,801E
- 254A9DC0 ADDIU T2,T2,9DC0
- 8D4C0000 LW T4,0000 (T2)
- 8D4D0004 LW T5,0004 (T2)
- 15800003 BNE T4,R0,+3
- 00000000 NOP
- 51A00045 BEQL T5,R0,+69
- 8FB80020 LW T8,0020 (SP)
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- 00000000 NOP
- 3C0B801E LUI T3,801E
- 256B9DC0 ADDIU T3,T3,9DC0
- 8D6E0000 LW T6,0000 (T3)
- 8D6F0004 LW T7,0004 (T3)
- 24060000 ADDIU A2,R0,0000
- 004E2023 SUBU A0,V0,T6
- 006F082B SLTU AT,V1,T7
- 00812023 SUBU A0,A0,AT
- 24070040 ADDIU A3,R0,0040
- 0C0008B6 JAL 800022D8 # V0, V1 = DMULTU (A0, A1) (A2, A3)
- 006F2823 SUBU A1,V1,T7
- 00402025 OR A0,V0,R0
- 00602825 OR A1,V1,R0
- 24060000 ADDIU A2,R0,0000
- 0C000876 JAL 800021D8 # V0, V1 = quotient f/ DDIVU (A0, A1) (A2, A3)
- 24070BB8 ADDIU A3,R0,0BB8
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- AFA3001C SW V1,001C (SP)
- 3C19801E LUI T9,801E
- 27399DC0 ADDIU T9,T9,9DC0
- 8F200000 LW R0,0000 (T9)
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- 8F210004 LW AT,0004 (T9)
- 3C08801E LUI T0,801E
- 25089DC0 ADDIU T0,T0,9DC0
- 8D0A0000 LW T2,0000 (T0)
- 8D0B0004 LW T3,0004 (T0)
- 24060000 ADDIU A2,R0,0000
- 004A2023 SUBU A0,V0,T2
- 006B082B SLTU AT,V1,T3
- 00812023 SUBU A0,A0,AT
- 24070040 ADDIU A3,R0,0040
- 0C0008B6 JAL 800022D8 # V0, V1 = DMULTU (A0, A1) (A2, A3)
- 006B2823 SUBU A1,V1,T3
- 00402025 OR A0,V0,R0
- 00602825 OR A1,V1,R0
- 24060000 ADDIU A2,R0,0000
- 0C000876 JAL 800021D8 # V0, V1 = quotient f/ DDIVU (A0, A1) (A2, A3)
- 24070BB8 ADDIU A3,R0,0BB8
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- 00000000 NOP
- 3C09801E LUI T1,801E
- 25299DC0 ADDIU T1,T1,9DC0
- 8D2C0000 LW T4,0000 (T1)
- 8D2D0004 LW T5,0004 (T1)
- 24060000 ADDIU A2,R0,0000
- 004C2023 SUBU A0,V0,T4
- 006D082B SLTU AT,V1,T5
- 00812023 SUBU A0,A0,AT
- 24070040 ADDIU A3,R0,0040
- 0C0008B6 JAL 800022D8 # V0, V1 = DMULTU (A0, A1) (A2, A3)
- 006D2823 SUBU A1,V1,T5
- 00402025 OR A0,V0,R0
- 00602825 OR A1,V1,R0
- 24060000 ADDIU A2,R0,0000
- 0C000876 JAL 800021D8 # V0, V1 = quotient f/ DDIVU (A0, A1) (A2, A3)
- 24070BB8 ADDIU A3,R0,0BB8
- 8FAE001C LW T6,001C (SP)
- 3C0F000F LUI T7,000F
- 35EF4240 ORI T7,T7,4240
- 01EE2823 SUBU A1,T7,T6
- 58A00004 BLTZL A1,+4
- 8FB80020 LW T8,0020 (SP)
- 0C00071F JAL 80001C7C # run timer for ((A0 * 3000) // 64)
- 00A02025 OR A0,A1,R0
- 8FB80020 LW T8,0020 (SP)
- 57000004 BNEL T8,R0,+4
- 8FBF0014 LW RA,0014 (SP)
- 0C071BDE JAL 801C6F78
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 801C7438 0x5B8 fill 0x25800 bytes of framebuffer A0 with black
- accepts: A0=p->framebuffer
- 3C010002 LUI AT,0002
- 34215800 ORI AT,AT,5800
- 00811821 ADDU V1,A0,AT
- 0083082B SLTU AT,A0,V1
- 10200006 BEQ AT,R0,+6
- 00801025 OR V0,A0,R0
- 24040001 ADDIU A0,R0,0001
- @801C7450
- 24420002 ADDIU V0,V0,0002
- 0043082B SLTU AT,V0,V1
- 1420FFFD BNE AT,R0,-3
- A444FFFE SH A0,FFFE (V0)
- 03E00008 JR RA
- 00000000 NOP
- 801C746C 0x5EC draw error# image A0, error text image A1, and disk insertion/removal image A2 to screen
- accepts: A0=p->error# image, A1=p->error text image, A2=p->disk insert/removal image
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFBF0024 SW RA,0024 (SP)
- AFA40030 SW A0,0030 (SP)
- AFA50034 SW A1,0034 (SP)
- AFA60038 SW A2,0038 (SP)
- 8FAE0030 LW T6,0030 (SP)
- 8FAF0034 LW T7,0034 (SP)
- 15C00005 BNE T6,R0,+5
- 00000000 NOP
- 15E00003 BNE T7,R0,+3
- 8FB80038 LW T8,0038 (SP)
- 53000045 BEQL T8,R0,+69
- 8FBF0024 LW RA,0024 (SP)
- 0C000D30 JAL 800034C0
- 00000000 NOP
- 3C012000 LUI AT,2000
- 00412021 ADDU A0,V0,AT
- 3C0100FF LUI AT,00FF
- 3421FFFF ORI AT,AT,FFFF
- 0081C824 AND T9,A0,AT
- 1320003B BEQ T9,R0,+59
- AFA4002C SW A0,002C (SP)
- 3C02801E LUI V0,801E
- 24429DB8 ADDIU V0,V0,9DB8
- 90480000 LBU T0,0000 (V0)
- 5100000B BEQL T0,R0,+11
- 8FA40030 LW A0,0030 (SP)
- A0400000 SB R0,0000 (V0)
- 0C071D0E JAL 801C7438 # fill 0x25800 bytes of framebuffer A0 with black
- 8FA4002C LW A0,002C (SP)
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- 00000000 NOP
- 3C09801E LUI T1,801E
- 25299DC0 ADDIU T1,T1,9DC0
- AD220000 SW V0,0000 (T1)
- AD230004 SW V1,0004 (T1)
- 8FA40030 LW A0,0030 (SP)
- 24050060 ADDIU A1,R0,0060 # org bytes per row = 96
- 24060020 ADDIU A2,R0,0020 # org height = 32
- 1080000A BEQ A0,R0,+10
- 240700C0 ADDIU A3,R0,00C0 # width = 192
- 8FAC002C LW T4,002C (SP)
- 240A0010 ADDIU T2,R0,0010
- 240B000B ADDIU T3,R0,000B
- 240D0140 ADDIU T5,R0,0140
- AFAD001C SW T5,001C (SP) # target width = 320
- AFAB0014 SW T3,0014 (SP) # 11
- AFAA0010 SW T2,0010 (SP) # height = 16
- 0C07287C JAL 801CA1F0 # directly draw SP+10 rows of ci4 image A0, (A3, A2) and A1 bytes wide, from offset SP+14 to buffer SP+18 with width SP+1C
- AFAC0018 SW T4,0018 (SP) # target
- 8FA40034 LW A0,0034 (SP)
- 00002825 OR A1,R0,R0
- 24060050 ADDIU A2,R0,0050
- 1080000A BEQ A0,R0,+10
- 24070140 ADDIU A3,R0,0140
- 8FB8002C LW T8,002C (SP)
- 240E0040 ADDIU T6,R0,0040
- 240F000B ADDIU T7,R0,000B
- 24190140 ADDIU T9,R0,0140
- AFB9001C SW T9,001C (SP)
- AFAF0014 SW T7,0014 (SP)
- AFAE0010 SW T6,0010 (SP)
- 0C07287C JAL 801CA1F0 # directly draw SP+10 rows of ci4 image A0, (A3, A2) and A1 bytes wide, from offset SP+14 to buffer SP+18 with width SP+1C
- AFB80018 SW T8,0018 (SP)
- 8FA40038 LW A0,0038 (SP)
- 00002825 OR A1,R0,R0
- 240600B0 ADDIU A2,R0,00B0
- 1080000A BEQ A0,R0,+10
- 24070140 ADDIU A3,R0,0140
- 8FAA002C LW T2,002C (SP)
- 24080020 ADDIU T0,R0,0020
- 2409000B ADDIU T1,R0,000B
- 240B0140 ADDIU T3,R0,0140
- AFAB001C SW T3,001C (SP)
- AFA90014 SW T1,0014 (SP)
- AFA80010 SW T0,0010 (SP)
- 0C07287C JAL 801CA1F0 # directly draw SP+10 rows of ci4 image A0, (A3, A2) and A1 bytes wide, from offset SP+14 to buffer SP+18 with width SP+1C
- AFAA0018 SW T2,0018 (SP)
- 0C000EF8 JAL 80003BE0
- 00002025 OR A0,R0,R0
- 8FBF0024 LW RA,0024 (SP)
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 801C75BC 0x73C replace and draw error# image A0, error text image A1, and disk insertion/removal image A2 to screen
- accepts: A0=p->error# image or None, A1=p->error text image or None, A2=p->disk insertion/removal image or None
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 14800004 BNE A0,R0,+4
- 3C0E801E LUI T6,801E
- 14A00002 BNE A1,R0,+2
- 00000000 NOP
- 10C0000D BEQ A2,R0,+13
- 25CE9DB8 ADDIU T6,T6,9DB8
- 91CF0000 LBU T7,0000 (T6)
- 10800002 BEQ A0,R0,+2
- 3C01801E LUI AT,801E
- AC249DCC SW A0,9DCC (AT)
- 10A00002 BEQ A1,R0,+2
- 3C01801E LUI AT,801E
- AC259DD0 SW A1,9DD0 (AT)
- 10C00002 BEQ A2,R0,+2
- 3C01801E LUI AT,801E
- AC269DD4 SW A2,9DD4 (AT)
- 0C071D1B JAL 801C746C # draw error# image A0, error text image A1, and disk insertion/removal image A2 to screen
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C761C 0x79C draw error images to screen
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C000733 JAL 80001CCC # run timer for (A0 * clock / 1000)
- 24040064 ADDIU A0,R0,0064
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 3C06801E LUI A2,801E
- 8CC69DD4 LW A2,9DD4 (A2) # disk insertion/removal image = @801D9DD4
- 8CA59DD0 LW A1,9DD0 (A1) # error text image = @801D9DD0
- 0C071D1B JAL 801C746C # draw error# image A0, error text image A1, and disk insertion/removal image A2 to screen
- 8C849DCC LW A0,9DCC (A0) # error# image = @801D9DCC
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C7658 0x7D8 start 64DD hardware and management threads
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFBF0024 SW RA,0024 (SP)
- AFB00020 SW S0,0020 (SP)
- 3C0E8012 LUI T6,8012
- 91CE1212 LBU T6,1212 (T6)
- 3C10801E LUI S0,801E
- 2610AF88 ADDIU S0,S0,AF88
- 11C00003 BEQ T6,R0,+3 # if 80121212[0], return 0
- 3C04801E LUI A0,801E
- 10000061 BEQ R0,R0,+97
- 00001025 OR V0,R0,R0
- 3C18801E LUI T8,801E
- 27188E10 ADDIU T8,T8,8E10
- 3C05801E LUI A1,801E
- 240F0100 ADDIU T7,R0,0100
- AFAF0010 SW T7,0010 (SP) # blocks = 0x100
- 24A59F88 ADDIU A1,A1,9F88 # A1 = 801D9F88
- AFB80014 SW T8,0014 (SP) # thread name = 801D8E10: p->"ddmsg"
- 2484AF88 ADDIU A0,A0,AF88 # entry = 801DAF88
- 02003025 OR A2,S0,R0 # A2 = 801DAF88
- 0C000624 JAL 80001890 # create profiler entry A0 for SP+10 blocks of fixed or dynamic memory (A3) between A1 and A2
- 00003825 OR A3,R0,R0 # A3 = 0
- 3C04801E LUI A0,801E
- 3C06801C LUI A2,801C
- 3C07801E LUI A3,801E
- 2419000D ADDIU T9,R0,000D
- AFB90014 SW T9,0014 (SP) # priority = 0xD
- 24E79B90 ADDIU A3,A3,9B90 # arg = 801D9B90
- 24C6711C ADDIU A2,A2,711C # func = 801C711C
- 24849DD8 ADDIU A0,A0,9DD8 # thread = 801D9DD8
- 24050009 ADDIU A1,R0,0009 # ID 9
- 0C000BC8 JAL 80002F20 # create thread A0, ID A1, calling A2(A3) with stack at SP+10, priority SP+14
- AFB00010 SW S0,0010 (SP) # SP = 801DAF88
- 3C04801E LUI A0,801E
- 0C0017B0 JAL 80005EC0 # start thread A0
- 24849DD8 ADDIU A0,A0,9DD8 # thread = 801D9DD8: ddmsg
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A59DB0 ADDIU A1,A1,9DB0 # msg = 801D9DB0
- 24849D80 ADDIU A0,A0,9D80 # queue = 801D9D80
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001 # msgs = 1
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A59DB4 ADDIU A1,A1,9DB4 # msg = 801D9DB4
- 24849D98 ADDIU A0,A0,9D98 # queue = 801D9D98
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001 # msgs = 1
- 3C09801E LUI T1,801E
- 25298E18 ADDIU T1,T1,8E18
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 3C06801E LUI A2,801E
- 24080100 ADDIU T0,R0,0100
- AFA80010 SW T0,0010 (SP) # SP+10 = 0x100
- 24C6BFA8 ADDIU A2,A2,BFA8 # A2 = 801DBFA8
- 24A5AFA8 ADDIU A1,A1,AFA8 # A1 = 801DAFA8
- 2484BFA8 ADDIU A0,A0,BFA8 # A0 = 801DBFA8
- AFA90014 SW T1,0014 (SP) # thread name = 801D8E18: p->"n64dd"
- 0C000624 JAL 80001890 # create profiler entry A0 for SP+10 blocks of fixed or dynamic memory (A3) between A1 and A2
- 00003825 OR A3,R0,R0 # fixed
- 3C10801E LUI S0,801E
- 26109D50 ADDIU S0,S0,9D50 # arg = 801E9D50
- 3C0A801E LUI T2,801E
- 3C0B801E LUI T3,801E
- 3C0D801E LUI T5,801E
- 3C02801D LUI V0,801D
- 254A9D80 ADDIU T2,T2,9D80
- 256B9D98 ADDIU T3,T3,9D98
- 240C0008 ADDIU T4,R0,0008
- 25ADBFA8 ADDIU T5,T5,BFA8
- 240E000D ADDIU T6,R0,000D
- 240F0001 ADDIU T7,R0,0001
- 24428000 ADDIU V0,V0,8000
- AE0A001C SW T2,001C (S0) # arg+1C = 801D9D80: incoming queue
- AE0B0020 SW T3,0020 (S0) # arg+20 = 801D9D98: outgoing queue
- AE0C0024 SW T4,0024 (S0) # arg+24 = 8: ID
- AE0D0028 SW T5,0028 (S0) # arg+28 = 801DBFA8: SP
- AE0E002C SW T6,002C (S0) # arg+2C = 0xD: priority
- A20F0000 SB T7,0000 (S0) # option 1
- AFA2002C SW V0,002C (SP) # func = 801C8000
- 0040F809 JALR RA,V0
- 02002025 OR A0,S0,R0 # call 801C8000(801E9D50) w/ option 1: start n64dd thread
- 3C198012 LUI T9,8012
- 27391213 ADDIU T9,T9,1213
- 24180001 ADDIU T8,R0,0001
- 0C071BF6 JAL 801C6FD8
- A3380000 SB T8,0000 (T9)
- 8FB9002C LW T9,002C (SP) # func = 801C8000
- 3C0A8000 LUI T2,8000
- 3C0B801C LUI T3,801C
- 24080002 ADDIU T0,R0,0002
- 24090006 ADDIU T1,R0,0006
- 254A0A54 ADDIU T2,T2,0A54
- 256B75BC ADDIU T3,T3,75BC
- A2080000 SB T0,0000 (S0) # option 2
- AE090010 SW T1,0010 (S0) # arg+10 = 6
- AE0A0014 SW T2,0014 (S0) # arg+14 = 80000A54
- AE0B000C SW T3,000C (S0) # arg+C = 801C75BC: replace and draw error# image A0, error text image A1, and disk insertion/removal image A2 to screen
- 0320F809 JALR RA,T9
- 02002025 OR A0,S0,R0 # call 801C8000(801E9D50) w/ option 2: start leo threads
- 8FB9002C LW T9,002C (SP)
- 240C000D ADDIU T4,R0,000D
- A20C0000 SB T4,0000 (S0) # 801E9D50[0] = 0xD: option 0xD
- 0320F809 JALR RA,T9
- 02002025 OR A0,S0,R0 # call 801C8000(801E9D50) w/ option 0xD: 801D2EA0 = 1
- 00001025 OR V0,R0,R0
- 8FBF0024 LW RA,0024 (SP)
- 8FB00020 LW S0,0020 (SP)
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 801C7818 0x998
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C04801E LUI A0,801E
- 24849D50 ADDIU A0,A0,9D50
- AFBF0014 SW RA,0014 (SP)
- 3C19801D LUI T9,801D
- 240E000C ADDIU T6,R0,000C
- 27398000 ADDIU T9,T9,8000
- 0320F809 JALR RA,T9
- A08E0000 SB T6,0000 (A0) # call 801C8000(801D9D50) w/ option 0xC: 801D2EA0 = 0
- 0C072071 JAL 801C81C4 # V0 = @801D2E60
- 00000000 NOP
- 14400007 BNE V0,R0,+7
- 00000000 NOP
- @801C784C
- 0C00071F JAL 80001C7C # run timer for ((A0 * 3000) // 64)
- 2404411A ADDIU A0,R0,411A
- 0C072071 JAL 801C81C4 # V0 = @801D2E60
- 00000000 NOP
- 1040FFFB BEQ V0,R0,-5
- 00000000 NOP
- @801C7864
- 0C072071 JAL 801C81C4 # V0 = @801D2E60
- 00000000 NOP
- 24010002 ADDIU AT,R0,0002
- 10410007 BEQ V0,AT,+7
- 00000000 NOP
- @801C7878
- 0C071D87 JAL 801C761C # draw error images to screen
- 00000000 NOP
- 0C02B398 JAL 800ACE60 # run timer for one full clock
- 00000000 NOP
- 10000007 BEQ R0,R0,+7
- 2402FFFD ADDIU V0,R0,FFFD
- @801C7890
- 0C071C06 JAL 801C7018 # if 80121213[0]: 80121213[0] = 1 and print error message "HungUp ../z_n64dd.c:503"
- 00000000 NOP
- 240F0001 ADDIU T7,R0,0001
- 3C018012 LUI AT,8012
- A02F1212 SB T7,1212 (AT) # 80121212[0] = 1
- 00001025 OR V0,R0,R0
- @801C78A8
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C78B8 0xA38 disk boot function
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C071D96 JAL 801C7658 # start 64DD hardware and management threads
- 00000000 NOP
- 14400004 BNE V0,R0,+4
- 00401825 OR V1,V0,R0
- 0C071E06 JAL 801C7818
- 00000000 NOP
- 00401825 OR V1,V0,R0
- 00601025 OR V0,V1,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C78F0 0xA70 call 801C8000(801D9D50) w/ option 0
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C04801E LUI A0,801E
- 24849D50 ADDIU A0,A0,9D50
- AFBF0014 SW RA,0014 (SP)
- 3C19801D LUI T9,801D
- 27398000 ADDIU T9,T9,8000
- 0320F809 JALR RA,T9
- A0800000 SB R0,0000 (A0) # call 801C8000(801D9D50) w/ option 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C7920 0xAA0 read A2 bytes from LBA A0 to rdram A1; calls 801C8000 with options 3, 6, and 7
- accepts: A0=LBA, A1=rdram, A2=bytelength
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFB00014 SW S0,0014 (SP)
- 3C10801E LUI S0,801E
- 26109D50 ADDIU S0,S0,9D50
- AFBF001C SW RA,001C (SP)
- AFB10018 SW S1,0018 (SP)
- 00803825 OR A3,A0,R0
- 3C11801D LUI S1,801D
- 240E0003 ADDIU T6,R0,0003
- 26318000 ADDIU S1,S1,8000 # func = 801C8000
- AE050018 SW A1,0018 (S0) # 801D9D50+18: A1 f/caller
- AE07001C SW A3,001C (S0) # 801D9D50+1C: A0 f/caller
- AE060020 SW A2,0020 (S0) # 801D9D50+20: A2 f/caller
- A20E0000 SB T6,0000 (S0) # 801D9D50[0] = 3
- 0220F809 JALR RA,S1
- 02002025 OR A0,S0,R0 # call 801C8000(801D9D50) w/ option 3
- @801C7960
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- 00000000 NOP
- 240F0006 ADDIU T7,R0,0006
- A20F0000 SB T7,0000 (S0) # 801D9D50[0] = 6
- 0220F809 JALR RA,S1
- 02002025 OR A0,S0,R0 # call 801C8000(801D9D50) w/ option 6
- 50400008 BEQL V0,R0,+8
- 24180007 ADDIU T8,R0,0007
- @801C7980: loop while V0
- 0C00071F JAL 80001C7C # run timer for ((A0 * 3000) // 64)
- 2404411A ADDIU A0,R0,411A
- 0220F809 JALR RA,S1
- 02002025 OR A0,S0,R0
- 1440FFFB BNE V0,R0,-5
- 00000000 NOP
- @801C7998
- 24180007 ADDIU T8,R0,0007
- A2180000 SB T8,0000 (S0) # 801D9D50[0] = 7
- 0220F809 JALR RA,S1
- 02002025 OR A0,S0,R0 # call 801C8000(801D9D50) w/ option 7
- 50400004 BEQL V0,R0,+4
- 8FBF001C LW RA,001C (SP)
- @801C79B0
- 0C02B398 JAL 800ACE60 # run timer for one full clock
- 00000000 NOP
- 8FBF001C LW RA,001C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 801C79CC 0xB4C write A2 bytes from rdram A1 to LBA A0; calls 801C8000 with option 4
- accepts: A0=LBA, A1=rdram, A2=bytelength
- 00803825 OR A3,A0,R0
- 3C04801E LUI A0,801E
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 24849D50 ADDIU A0,A0,9D50
- 3C19801D LUI T9,801D
- 240E0004 ADDIU T6,R0,0004
- 27398000 ADDIU T9,T9,8000
- AC870018 SW A3,0018 (A0) # 801D9D50+18 = A0
- AC85001C SW A1,001C (A0) # 801D9D50+1C = A1
- AC860020 SW A2,0020 (A0) # 801D9D50+20 = A2
- 0320F809 JALR RA,T9 # call 801C8000(801D9D50) w/ option 4
- A08E0000 SB T6,0000 (A0) # 801D9D50[0] = 4
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C7A10 0xB90 NERFed
- accepts: A0=p->diskID
- AFA40000 SW A0,0000 (SP)
- 03E00008 JR RA
- 00000000 NOP
- 801C7A1C 0xB9C return False if not an EZL* disk or disk has been swapped else True
- accepts: A0=p->struct
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF001C SW RA,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 00802825 OR A1,A0,R0
- 24B00038 ADDIU S0,A1,0038 # S0 = struct+38: p->diskID
- 0C071E84 JAL 801C7A10 # NERFed
- 02002025 OR A0,S0,R0
- 3C0E801E LUI T6,801E
- 8DCEBFF0 LW T6,BFF0 (T6)
- 3C05801E LUI A1,801E
- 24A58E20 ADDIU A1,A1,8E20 # 801D8E20: "EZLJ"
- 15C00029 BNE T6,R0,+41 # if @801DBFF0, skip copying diskID: True if diskID already copied
- 02002025 OR A0,S0,R0
- @801C7A50: compare disk gameID and copy on a hit
- 0C0350E4 JAL 800D4390 # V0 = difference in A2 bytes at A0 and A1
- 24060004 ADDIU A2,R0,0004 # length = 4
- 10400007 BEQ V0,R0,+7
- 02002025 OR A0,S0,R0
- 3C05801E LUI A1,801E
- 24A58E28 ADDIU A1,A1,8E28 # 801D8E28: "EZLE"
- 0C0350E4 JAL 800D4390 # V0 = difference in A2 bytes at A0 and A1
- 24060004 ADDIU A2,R0,0004 # length = 4
- 1440001B BNE V0,R0,+27
- 3C03801E LUI V1,801E
- 8E190000 LW T9,0000 (S0)
- 3C0F801E LUI T7,801E
- 25EFBFD0 ADDIU T7,T7,BFD0
- ADF90000 SW T9,0000 (T7) # 801DBFD0[:32] = struct+38[:32]
- 8E180004 LW T8,0004 (S0)
- 3C03801E LUI V1,801E
- 24080001 ADDIU T0,R0,0001
- ADF80004 SW T8,0004 (T7)
- 8E190008 LW T9,0008 (S0)
- 3C01801E LUI AT,801E
- 24639DC8 ADDIU V1,V1,9DC8
- ADF90008 SW T9,0008 (T7)
- 8E18000C LW T8,000C (S0)
- 24090001 ADDIU T1,R0,0001
- ADF8000C SW T8,000C (T7)
- 8E190010 LW T9,0010 (S0)
- ADF90010 SW T9,0010 (T7)
- 8E180014 LW T8,0014 (S0)
- ADF80014 SW T8,0014 (T7)
- 8E190018 LW T9,0018 (S0)
- ADF90018 SW T9,0018 (T7)
- 8E18001C LW T8,001C (S0)
- ADF8001C SW T8,001C (T7)
- AC28BFF0 SW T0,BFF0 (AT) # 801D8FF0 = True
- 10000014 BEQ R0,R0,+20
- AC690000 SW T1,0000 (V1) # 801D9DC8 = 1
- @801C7AE0 on a miss set 801D9DC8 = 2 and return False
- 24639DC8 ADDIU V1,V1,9DC8
- 240A0002 ADDIU T2,R0,0002
- 10000010 BEQ R0,R0,+16
- AC6A0000 SW T2,0000 (V1) # 801D9DC8 = 2
- @801C7AF0 if original diskID already copied, verify same disk inserted...
- 3C04801E LUI A0,801E
- 2484BFD0 ADDIU A0,A0,BFD0
- 02002825 OR A1,S0,R0
- 0C0350E4 JAL 800D4390 # V0 = difference in A2 bytes at A0 and A1
- 24060020 ADDIU A2,R0,0020
- 14400005 BNE V0,R0,+5
- 3C03801E LUI V1,801E
- 24639DC8 ADDIU V1,V1,9DC8
- 240B0001 ADDIU T3,R0,0001
- 10000005 BEQ R0,R0,+5
- AC6B0000 SW T3,0000 (V1) # 801D9DC8 = 1
- @801C7B1C on a miss (or disk swap) set 801D9DC8 = 2 and return False
- 3C03801E LUI V1,801E
- 24639DC8 ADDIU V1,V1,9DC8
- 240C0002 ADDIU T4,R0,0002
- AC6C0000 SW T4,0000 (V1) # 801D9DC8 = 2
- @801C7B2C
- 8C620000 LW V0,0000 (V1)
- 8FBF001C LW RA,001C (SP)
- 38420001 XORI V0,V0,0001
- 2C420001 SLTIU V0,V0,0001 # return True if @801D9DC8 == 1 else False
- 8FB00018 LW S0,0018 (SP)
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 801C7B48 0xCC8 V0 = sensecode; A1 = LBAs containing A0 bytes starting from LBA 1, with A2 bytes in final LBA
- accepts: A0=length, A1=p->target for #LBAs, A2=p->target for bytelength in final LBA
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFBF0014 SW RA,0014 (SP)
- AFA40030 SW A0,0030 (SP)
- AFA50034 SW A1,0034 (SP)
- AFA60038 SW A2,0038 (SP)
- 8FA50030 LW A1,0030 (SP)
- 24040001 ADDIU A0,R0,0001
- 27A6002C ADDIU A2,SP,002C
- 0C0739A0 JAL 801CE680 # V0=sensecode; A2 = #LBAs for A1 bytes at LBA A0
- 24A50001 ADDIU A1,A1,0001 # A0 + 1
- 50400004 BEQL V0,R0,+4
- 8FA2002C LW V0,002C (SP)
- 10000019 BEQ R0,R0,+25
- 8FBF0014 LW RA,0014 (SP)
- @801C7B80
- 8FA2002C LW V0,002C (SP) # V0 = #LBAs for A0+1 bytes starting at LBA 1
- 24010001 ADDIU AT,R0,0001
- 24040001 ADDIU A0,R0,0001 # LBA 1
- 14410003 BNE V0,AT,+3
- 2445FFFF ADDIU A1,V0,FFFF
- 10000008 BEQ R0,R0,+8
- AFA00020 SW R0,0020 (SP) # if #LBAs ==1, SP+20 = 0
- @801C7B9C
- 27A60020 ADDIU A2,SP,0020
- 0C072FBC JAL 801CBEF0 # V0 = sensecode; A2 = bytelength of A1 LBAs starting at A0
- AFA50024 SW A1,0024 (SP) # #LBAs - 1
- 10400003 BEQ V0,R0,+3
- 8FA50024 LW A1,0024 (SP)
- 1000000B BEQ R0,R0,+11
- 8FBF0014 LW RA,0014 (SP)
- @801C7BB8
- 8FAF0034 LW T7,0034 (SP)
- 24AE0001 ADDIU T6,A1,0001
- 00001025 OR V0,R0,R0
- ADEE0000 SW T6,0000 (T7) # A1+0 = #LBAs + 1 (so original #LBAs)
- 8FB90020 LW T9,0020 (SP)
- 8FB80030 LW T8,0030 (SP)
- 8FA90038 LW T1,0038 (SP)
- 03194023 SUBU T0,T8,T9
- AD280000 SW T0,0000 (T1) # A2+0 = bytelength A0 - bytelength of (#LBAs - 1): bytelength within final LBA
- 8FBF0014 LW RA,0014 (SP)
- @801C7BE0
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 801C7BEC 0xD6C V0 = #bytes at LBA A0
- accepts: A0=LBA
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 24050001 ADDIU A1,R0,0001 # blocks = 1
- 0C072FBC JAL 801CBEF0 # V0 = sensecode; A2 = bytelength of A1 LBAs starting at A0
- 27A6001C ADDIU A2,SP,001C
- 14400003 BNE V0,R0,+3 # return 0 if error else bytelength
- 8FBF0014 LW RA,0014 (SP)
- 10000002 BEQ R0,R0,+2
- 8FA2001C LW V0,001C (SP)
- 00001025 OR V0,R0,R0
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 801C7C1C 0xD9C copy A2 bytes starting A1 bytes after LBA 1 to rdram A0
- accepts: A0=p->rdram, A1=offset, A2=length
- 27BDFFA0 ADDIU SP,SP,FFA0
- AFB10018 SW S1,0018 (SP)
- AFB00014 SW S0,0014 (SP)
- 00A08025 OR S0,A1,R0
- 00C08825 OR S1,A2,R0
- AFBF001C SW RA,001C (SP)
- AFA40060 SW A0,0060 (SP)
- 0C071BF6 JAL 801C6FD8
- 00000000 NOP
- 0C071BCC JAL 801C6F30
- 00000000 NOP
- 3C0F801E LUI T7,801E
- 25EF9DB8 ADDIU T7,T7,9DB8
- 240E0001 ADDIU T6,R0,0001
- 3C08801E LUI T0,801E
- A1EE0000 SB T6,0000 (T7) # 801D9DB8[0] = 1
- 25089DC0 ADDIU T0,T0,9DC0
- 24180000 ADDIU T8,R0,0000
- AD180000 SW T8,0000 (T0) # 801D9DC0+0 = 0
- 24190000 ADDIU T9,R0,0000
- AD190004 SW T9,0004 (T0) # 801D9DC0+4 = 0
- 02002025 OR A0,S0,R0 # length = offset (A0)
- 27A5005C ADDIU A1,SP,005C
- 0C071ED2 JAL 801C7B48 # V0 = sensecode; A1 = LBAs containing A0 bytes starting from LBA 1, with A2 bytes in final LBA
- 27A60054 ADDIU A2,SP,0054
- 02112021 ADDU A0,S0,S1 # length = offset (A1) + length (A2)
- 27A50058 ADDIU A1,SP,0058
- 0C071ED2 JAL 801C7B48 # V0 = sensecode; A1 = LBAs containing A0 bytes starting from LBA 1, with A2 bytes in final LBA
- 27A60050 ADDIU A2,SP,0050
- 8FA4005C LW A0,005C (SP) # #LBAs to offset
- 8FAA0058 LW T2,0058 (SP) # #LBAs to offset+length
- 3C09801D LUI T1,801D
- 8D292E50 LW T1,2E50 (T1)
- 148A000F BNE A0,T2,+15
- AFA9004C SW T1,004C (SP) # SP+4C = @801D2E50
- @801C7CA8: if all data's in one LBA...
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 00000000 NOP
- 8FA4005C LW A0,005C (SP) # #LBAs to offset
- 8FA5004C LW A1,004C (SP) # target = @801D2E50
- 0C071E48 JAL 801C7920 # read A2 bytes from LBA A0 to rdram A1; calls 801C8000 with options 3, 6, and 7
- 00403025 OR A2,V0,R0 # #bytes at that LBA
- 8FA70054 LW A3,0054 (SP)
- 8FAB004C LW T3,004C (SP)
- 8FA50060 LW A1,0060 (SP) # target = A0 f/caller
- 02203025 OR A2,S1,R0 # length = A2 f/caller
- 0C001370 JAL 80004DC0 # copy A2 bytes from A0 to A1
- 01672021 ADDU A0,T3,A3 # source = @801D2E50 + (#bytes to initial offset)
- 1000003D BEQ R0,R0,+61
- 00000000 NOP
- @801C7CE0: if you're copying off the end of something greater...
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 00008825 OR S1,R0,R0
- 8FA4005C LW A0,005C (SP)
- 8FA5004C LW A1,004C (SP)
- 0C071E48 JAL 801C7920 # read A2 bytes from LBA A0 to rdram A1; calls 801C8000 with options 3, 6, and 7
- 00403025 OR A2,V0,R0
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 8FA4005C LW A0,005C (SP)
- 8FA70054 LW A3,0054 (SP)
- 8FAC004C LW T4,004C (SP)
- 8FA50060 LW A1,0060 (SP)
- 00473023 SUBU A2,V0,A3
- 0C001370 JAL 80004DC0 # copy A2 bytes from A0 to A1
- 01872021 ADDU A0,T4,A3
- 8FA2005C LW V0,005C (SP)
- 8FA40058 LW A0,0058 (SP)
- 24420001 ADDIU V0,V0,0001
- 0044082A SLT AT,V0,A0
- 10200016 BEQ AT,R0,+22
- 0044082A SLT AT,V0,A0
- @801C7D30
- 10200009 BEQ AT,R0,+9
- 00408025 OR S0,V0,R0
- @801C7D38
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 02002025 OR A0,S0,R0
- 8FAD0058 LW T5,0058 (SP)
- 26100001 ADDIU S0,S0,0001
- 02228821 ADDU S1,S1,V0
- 020D082A SLT AT,S0,T5
- 1420FFF9 BNE AT,R0,-7
- 00000000 NOP
- @801C7D58
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 8FA4005C LW A0,005C (SP)
- 8FAE0060 LW T6,0060 (SP)
- 8FA70054 LW A3,0054 (SP)
- 8FA4005C LW A0,005C (SP)
- 004E7821 ADDU T7,V0,T6
- 02203025 OR A2,S1,R0
- 01E72823 SUBU A1,T7,A3 # A1 = A0 + bytelength - (#bytes to initial offset)
- 0C071E48 JAL 801C7920 # read A2 bytes from LBA A0 to rdram A1; calls 801C8000 with options 3, 6, and 7
- 24840001 ADDIU A0,A0,0001
- 8FA40058 LW A0,0058 (SP)
- 8FB80050 LW T8,0050 (SP)
- 1B000011 BLTZ T8,+17
- 00000000 NOP
- @801C7D90
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 00000000 NOP
- 8FA40058 LW A0,0058 (SP)
- 8FA5004C LW A1,004C (SP)
- 0C071E48 JAL 801C7920 # read A2 bytes from LBA A0 to rdram A1; calls 801C8000 with options 3, 6, and 7
- 00403025 OR A2,V0,R0
- 0C071EFB JAL 801C7BEC # V0 = #bytes at LBA A0
- 8FA4005C LW A0,005C (SP)
- 8FB90060 LW T9,0060 (SP)
- 8FA70054 LW A3,0054 (SP)
- 8FA4004C LW A0,004C (SP)
- 00594021 ADDU T0,V0,T9
- 01074823 SUBU T1,T0,A3
- 01312821 ADDU A1,T1,S1
- 0C001370 JAL 80004DC0 # copy A2 bytes from A0 to A1
- 8FA60050 LW A2,0050 (SP)
- @801C7DD0
- 3C0A801E LUI T2,801E
- 254A9DC0 ADDIU T2,T2,9DC0
- 8D4C0000 LW T4,0000 (T2) # @801D9DC0+0
- 8D4D0004 LW T5,0004 (T2) # @801D9DC0+4
- 15800003 BNE T4,R0,+3
- 00000000 NOP
- 11A0001A BEQ T5,R0,+26
- 00000000 NOP
- @801C7DF0: if timer set, check it
- 0C001230 JAL 800048C0 # V0, V1 = time since timer started (ref. 80009E80 & 80009E88)
- 00000000 NOP
- 3C0B801E LUI T3,801E
- 256B9DC0 ADDIU T3,T3,9DC0
- 8D6E0000 LW T6,0000 (T3) # @801D9DC0+0
- 8D6F0004 LW T7,0004 (T3) # @801D9DC0+4
- 24060000 ADDIU A2,R0,0000
- 004E2023 SUBU A0,V0,T6
- 006F082B SLTU AT,V1,T7
- 00812023 SUBU A0,A0,AT
- 24070040 ADDIU A3,R0,0040
- 0C0008B6 JAL 800022D8 # V0, V1 = DMULTU (A0, A1) (A2, A3)
- 006F2823 SUBU A1,V1,T7
- 00402025 OR A0,V0,R0
- 00602825 OR A1,V1,R0
- 24060000 ADDIU A2,R0,0000
- 0C000876 JAL 800021D8 # V0, V1 = quotient f/ DDIVU (A0, A1) (A2, A3)
- 24070BB8 ADDIU A3,R0,0BB8 # result // 3000
- 3C06000F LUI A2,000F
- 34C64240 ORI A2,A2,4240
- 00C3C023 SUBU T8,A2,V1
- 1B000003 BLTZ T8,+3 # skip if V1 > 0xF4240 (1000000)
- 00000000 NOP
- @801C7E4C
- 0C00071F JAL 80001C7C # run timer for ((A0 * 3000) // 64)
- 00C32023 SUBU A0,A2,V1 # 0xF4240 - V1
- @801C7E54: error messages if applicable
- 0C071C06 JAL 801C7018 # if 80121213[0]: 80121213[0] = 1 and print error message "HungUp ../z_n64dd.c:503"
- 00000000 NOP
- 0C071BDE JAL 801C6F78
- 00000000 NOP
- @801C7E64
- 8FBF001C LW RA,001C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 03E00008 JR RA
- 27BD0060 ADDIU SP,SP,0060
- 801C7E78 0xFF8 unconditional return
- 03E00008 JR RA
- 00000000 NOP
- 801C7E80 0x1000 hook 64DD expansion; load and run file at LBA 1 + 0x1060, 0x118 in size
- 27BDFFD8 ADDIU SP,SP,FFD8
- 3C02801E LUI V0,801E
- 24429D48 ADDIU V0,V0,9D48
- AFBF0014 SW RA,0014 (SP)
- 8C4E0000 LW T6,0000 (V0)
- 3C0F801E LUI T7,801E
- 25E49C30 ADDIU A0,T7,9C30 # A0 = 801D9C30
- 11C00003 BEQ T6,R0,+3 # if @801D9D48, return -1
- 24051060 ADDIU A1,R0,1060 # A1 = 0x1060
- 1000001B BEQ R0,R0,+27
- 2402FFFF ADDIU V0,R0,FFFF
- @801C7EAC
- AC440000 SW A0,0000 (V0) # 801D9D48 = 801D9C30
- 0C071F07 JAL 801C7C1C # copy A2 bytes starting A1 bytes after LBA 1 to rdram A0
- 24060118 ADDIU A2,R0,0118 # A2 = 0x118
- 3C02801E LUI V0,801E
- 8C429D48 LW V0,9D48 (V0) # entry = @801D9D48: 801D9C30
- 8C450000 LW A1,0000 (V0) # @entry+0: offset f/ LBA 1 start
- 8C580004 LW T8,0004 (V0) # @entry+4: offset f/ LBA 1 end
- 8C440008 LW A0,0008 (V0) # @entry+8: rdram start
- 8C59000C LW T9,000C (V0) # @entry+C: rdram end
- 03053023 SUBU A2,T8,A1 # length = @entry+4 - @entry+0
- 00864821 ADDU T1,A0,A2
- 03244023 SUBU T0,T9,A0
- AFA80020 SW T0,0020 (SP) # SP+20 = rdram end - rdram start
- AFA90018 SW T1,0018 (SP) # SP+18 = rdram start + length
- 0C071F07 JAL 801C7C1C # copy A2 bytes starting A1 bytes after LBA 1 to rdram A0
- AFA60024 SW A2,0024 (SP) # SP+24 = length
- @801C7EEC: initialize remaining space after the file
- 8FA60024 LW A2,0024 (SP)
- 8FAA0020 LW T2,0020 (SP)
- 8FA40018 LW A0,0018 (SP) # target = rdram + data size
- 0C000BA0 JAL 80002E80 # initialize A1 bytes at A0
- 01462823 SUBU A1,T2,A2 # length = rdram size - data size
- 3C0B801E LUI T3,801E
- 8D6B9D48 LW T3,9D48 (T3) # entry = @801D9D48: 801D9C30
- 0C02B530 JAL 800AD4C0 # runs function A0, saving to 80121220
- 8D640010 LW A0,0010 (T3) # entrypoint = entry+10
- 00001025 OR V0,R0,R0
- @801C7F14
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 801C7F24 0x10A4 unhook 64DD expansion
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C0E801E LUI T6,801E
- 8DCE9D48 LW T6,9D48 (T6)
- 15C00003 BNE T6,R0,+3 # if not @801D9D48, return -1
- 00000000 NOP
- 10000010 BEQ R0,R0,+16
- 2402FFFF ADDIU V0,R0,FFFF
- 0C02B547 JAL 800AD51C # unhooks function at 80121220 using unloader function
- 00000000 NOP
- 3C02801E LUI V0,801E
- 8C429D48 LW V0,9D48 (V0)
- 8C440008 LW A0,0008 (V0)
- 8C4F000C LW T7,000C (V0)
- 0C000BA0 JAL 80002E80 # initialize A1 bytes at A0
- 01E42823 SUBU A1,T7,A0
- 3C04801E LUI A0,801E
- 8C849D48 LW A0,9D48 (A0) # target = @801D9D48: entry
- 0C000BA0 JAL 80002E80 # initialize A1 bytes at A0
- 24050118 ADDIU A1,R0,0118 # length = 0x118
- 3C01801E LUI AT,801E
- AC209D48 SW R0,9D48 (AT) # 801D9D48 = 0: remove link to entry
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- # Note: called by map select menu options and main game code
- 801C7F90 0x1110 unhook or hook (A0) 64DD expansion
- accepts: A0=mode (0:unhook, 1:hook)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 10800009 BEQ A0,R0,+9
- 3C0F801E LUI T7,801E
- @801C7FA0: mode 1 - hook entry
- 3C0E801E LUI T6,801E
- 8DCE9D48 LW T6,9D48 (T6)
- 55C0000B BNEL T6,R0,+11 # if @801D9D48, return
- 8FBF0014 LW RA,0014 (SP)
- @801C7FB0
- 0C071FA0 JAL 801C7E80 # hook 64DD expansion; load and run file at LBA 1 + 0x1060, 0x118 in size
- 00000000 NOP
- 10000007 BEQ R0,R0,+7
- 8FBF0014 LW RA,0014 (SP)
- @801C7FC0: mode 0 - unhook entry
- 8DEF9D48 LW T7,9D48 (T7)
- 51E00004 BEQL T7,R0,+4 # if not @801D9D48, return
- 8FBF0014 LW RA,0014 (SP)
- 0C071FC9 JAL 801C7F24 # unhook 64DD expansion
- 00000000 NOP
- @801C7FD4: return
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801C8000 0x1180
- accepts: A0
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB00020 SW S0,0020 (SP)
- 00808025 OR S0,A0,R0
- AFBF0024 SW RA,0024 (SP)
- 920E0000 LBU T6,0000 (S0) # option = A0[0]
- 2DC1000E SLTIU AT,T6,000E
- 1020005A BEQ AT,R0,+90
- 000E7080 SLL T6,T6,0x2
- 3C01801E LUI AT,801E
- 002E0821 ADDU AT,AT,T6
- 8C2E8E30 LW T6,8E30 (AT) # call 801D8E30[A0]()
- 01C00008 JR T6
- 00000000 NOP
- @801C8034: option 0
- 0C072211 JAL 801C8844 # V0 = True if 801E0D7E[0] == 0 else False
- 00000000 NOP
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 10000050 BEQ R0,R0,+80
- 24020001 ADDIU V0,R0,0001
- 0C072155 JAL 801C8554
- 00000000 NOP
- 1000004C BEQ R0,R0,+76
- 00001025 OR V0,R0,R0
- @801C805C: option 1 - create thread handler for this function
- 8E0F002C LW T7,002C (S0)
- 8E04001C LW A0,001C (S0)
- 8E050020 LW A1,0020 (S0)
- 8E060024 LW A2,0024 (S0)
- 8E070028 LW A3,0028 (S0)
- 0C07215E JAL 801C8578 # create init cmd handler thread with ID A2 and priority SP+10, incoming queue A0, outgoing queue A1, stack at A3
- AFAF0010 SW T7,0010 (SP)
- 10000043 BEQ R0,R0,+67
- 00001025 OR V0,R0,R0
- @801C8080: option 2 - start leo threads
- 8E04000C LW A0,000C (S0)
- 8E050010 LW A1,0010 (S0)
- 0C07218E JAL 801C8638 # run "start leo threads" init command, setting 801E2EB4 = function A0, 801E0F70 = function A1, and 801D2EC0 = function A2
- 8E060014 LW A2,0014 (S0)
- 1000003D BEQ R0,R0,+61
- 00001025 OR V0,R0,R0
- @801C8098: option 3 - read bytelength from LBA to rdram
- 0C072211 JAL 801C8844 # V0 = True if 801E0D7E[0] == 0 else False
- 00000000 NOP
- 10400003 BEQ V0,R0,+3
- 24070001 ADDIU A3,R0,0001 # init cmd 1: read bytelength from LBA
- 10000037 BEQ R0,R0,+55
- 24020001 ADDIU V0,R0,0001
- 8E040018 LW A0,0018 (S0)
- 8E05001C LW A1,001C (S0)
- 0C0721A3 JAL 801C868C # run init command to read or write (A3) A2 bytes between LBA A0 and rdram A1
- 8E060020 LW A2,0020 (S0)
- 10000031 BEQ R0,R0,+49
- 00001025 OR V0,R0,R0
- @801C80C8: option 4 - write bytelength from rdram to LBA
- 0C072211 JAL 801C8844 # V0 = True if 801E0D7E[0] == 0 else False
- 00000000 NOP
- 10400003 BEQ V0,R0,+3
- 24070002 ADDIU A3,R0,0002 # init cmd 2: write bytelength to LBA
- 1000002B BEQ R0,R0,+43
- 24020001 ADDIU V0,R0,0001
- 8E040018 LW A0,0018 (S0)
- 8E05001C LW A1,001C (S0)
- 0C0721A3 JAL 801C868C # run init command to read or write (A3) A2 bytes between LBA A0 and rdram A1
- 8E060020 LW A2,0020 (S0)
- 10000025 BEQ R0,R0,+37
- 00001025 OR V0,R0,R0
- @801C80F8: option 5
- 0C0721DC JAL 801C8770 # V0 = 0 if busy, 1 if error, 2 if okay after test unit ready result
- 00000000 NOP
- A2020008 SB V0,0008 (S0) # A0[8] = result of test unit ready
- 10000020 BEQ R0,R0,+32
- 304200FF ANDI V0,V0,00FF # return result of test unit ready
- @801C810C: option 7
- 0C0721FF JAL 801C87FC
- 00000000 NOP
- 1000001D BEQ R0,R0,+29
- 8FBF0024 LW RA,0024 (SP)
- @801C811C: option 6
- 0C072211 JAL 801C8844 # V0 = True if 801E0D7E[0] == 0 else False
- 00000000 NOP
- 10000019 BEQ R0,R0,+25
- 8FBF0024 LW RA,0024 (SP)
- @801C812C: option 8
- 0C0721F0 JAL 801C87C0 # return -1 if 801E0D7E[0] == 0 or recent sensecode @801E0D18+68 == 0 else return sensecode
- 00000000 NOP
- 10000014 BEQ R0,R0,+20
- AE020004 SW V0,0004 (S0)
- @801C813C: option 9
- 0C072217 JAL 801C885C
- 00000000 NOP
- 10000011 BEQ R0,R0,+17
- 8FBF0024 LW RA,0024 (SP)
- @801C814C: option 0xA
- 0C07222B JAL 801C88AC
- 00000000 NOP
- 1000000D BEQ R0,R0,+13
- 8FBF0024 LW RA,0024 (SP)
- @801C815C: option 0xB - True if IPL missing
- 0C07223F JAL 801C88FC # V0 = True if IPL not found else False; sets sensecode 8 (leo busy) if found
- 00000000 NOP
- 10000009 BEQ R0,R0,+9 # return True if IPL not found else False
- 8FBF0024 LW RA,0024 (SP)
- @801C816C: option 0xC: 801D2EA0 = 0
- 3C01801D LUI AT,801D
- 10000004 BEQ R0,R0,+4 # 801D2EA0 = 0; return 0
- AC202EA0 SW R0,2EA0 (AT)
- @801C8178: option 0xD: 801D2EA0 = 1
- 24180001 ADDIU T8,R0,0001
- 3C01801D LUI AT,801D
- AC382EA0 SW T8,2EA0 (AT) # 801D2EA0 = 1; return 0
- 00001025 OR V0,R0,R0
- @801C8188: return
- 8FBF0024 LW RA,0024 (SP)
- 8FB00020 LW S0,0020 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 801C819C 0x131C 801D2E60 = 1 if A0 else 2
- accepts: A0
- 10800005 BEQ A0,R0,+5
- 240F0002 ADDIU T7,R0,0002
- 240E0001 ADDIU T6,R0,0001
- 3C01801D LUI AT,801D
- 03E00008 JR RA
- AC2E2E60 SW T6,2E60 (AT)
- 3C01801D LUI AT,801D
- AC2F2E60 SW T7,2E60 (AT)
- 03E00008 JR RA
- 00000000 NOP
- 801C81C4 0x1344 V0 = @801D2E60
- 3C02801D LUI V0,801D
- 8C422E60 LW V0,2E60 (V0)
- 03E00008 JR RA
- 00000000 NOP
- 801C81D4 0x1354 True if leo threads successfully started (801D2E64 is True)
- 3C02801D LUI V0,801D
- 8C422E64 LW V0,2E64 (V0)
- 38420001 XORI V0,V0,0001
- 2C420001 SLTIU V0,V0,0001
- 03E00008 JR RA
- 00000000 NOP
- 801C81EC 0x136C start leo threads
- accepts: A0=p->struct
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 8FA40018 LW A0,0018 (SP)
- 3C05801E LUI A1,801E
- 24A50D88 ADDIU A1,A1,0D88 # msg = 801E0D88
- 24060001 ADDIU A2,R0,0001 # msgs = 1
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 2484001C ADDIU A0,A0,001C # queue = A0+1C
- 3C0E8000 LUI T6,8000
- 8DCE6280 LW T6,6280 (T6)
- 24010001 ADDIU AT,R0,0001
- 24040095 ADDIU A0,R0,0095
- 15C1000A BNE T6,AT,+10 # if @80006280 != 1: English
- 24050096 ADDIU A1,R0,0096
- @801C8228: Japanese
- 3C06801E LUI A2,801E
- 24C60D90 ADDIU A2,A2,0D90
- 24040095 ADDIU A0,R0,0095
- 24050096 ADDIU A1,R0,0096
- 0C07485C JAL 801D2170 # Japanese-start leo threads
- 24070008 ADDIU A3,R0,0008
- 8FAF0018 LW T7,0018 (SP)
- 10000007 BEQ R0,R0,+7
- ADE20068 SW V0,0068 (T7)
- @801C824C: English
- 3C06801E LUI A2,801E
- 24C60D90 ADDIU A2,A2,0D90
- 0C074AA0 JAL 801D2A80 # English+Debug-start leo threads
- 24070008 ADDIU A3,R0,0008
- 8FB80018 LW T8,0018 (SP)
- AF020068 SW V0,0068 (T8) # A0+68 = sensecode
- @801C8264
- 8FB90018 LW T9,0018 (SP)
- 24010029 ADDIU AT,R0,0029
- 24080001 ADDIU T0,R0,0001
- 8F220068 LW V0,0068 (T9)
- 10410002 BEQ V0,AT,+2
- 00000000 NOP
- 14400002 BNE V0,R0,+2
- 3C01801D LUI AT,801D
- AC282E64 SW T0,2E64 (AT) # 801D2E64 = True if no error or device communication failure
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8298 0x1418 read disk ID to struct A0
- accepts: A0=struct
- 27BDFFC8 ADDIU SP,SP,FFC8
- AFBF0014 SW RA,0014 (SP)
- 00803825 OR A3,A0,R0
- 24E6001C ADDIU A2,A3,001C # queue = A0+1C
- AFA60018 SW A2,0018 (SP)
- 27A4001C ADDIU A0,SP,001C
- 24E50038 ADDIU A1,A3,0038 # target = A0+38
- 0C073064 JAL 801CC190 # read disk ID to A1 using leocmd A0, informing queue A2; return 0 if okay, -1 if leo not started
- AFA70038 SW A3,0038 (SP)
- 8FA70038 LW A3,0038 (SP)
- 8FA40018 LW A0,0018 (SP) # queue
- 24060001 ADDIU A2,R0,0001
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24E50068 ADDIU A1,A3,0068 # target = A0+68
- 8FBF0014 LW RA,0014 (SP)
- 27BD0038 ADDIU SP,SP,0038
- 03E00008 JR RA
- 00000000 NOP
- 801C82E0 0x1460 apply brake
- accepts: A0=p->struct
- 27BDFFC8 ADDIU SP,SP,FFC8
- AFBF0014 SW RA,0014 (SP)
- AFA40038 SW A0,0038 (SP)
- 8FA70038 LW A3,0038 (SP)
- 27A4001C ADDIU A0,SP,001C
- 24050004 ADDIU A1,R0,0004 # brake on
- 24E7001C ADDIU A3,A3,001C
- 00E03025 OR A2,A3,R0
- 0C073334 JAL 801CCCD0 # send start/stop (A1) leocmd A0, informing queue A2
- AFA70018 SW A3,0018 (SP)
- 8FA50038 LW A1,0038 (SP)
- 8FA40018 LW A0,0018 (SP)
- 24060001 ADDIU A2,R0,0001 # wait
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24A50068 ADDIU A1,A1,0068
- 8FBF0014 LW RA,0014 (SP)
- 27BD0038 ADDIU SP,SP,0038
- 03E00008 JR RA
- 00000000 NOP
- 801C832C 0x14AC read requested (A0) bytelength from LBA
- accepts: A0=p->struct
- 27BDFFC8 ADDIU SP,SP,FFC8
- AFB00020 SW S0,0020 (SP)
- 00808025 OR S0,A0,R0
- AFBF0024 SW RA,0024 (SP)
- 8E04005C LW A0,005C (S0)
- 8E050060 LW A1,0060 (S0)
- 27A60034 ADDIU A2,SP,0034
- 0C0739A0 JAL 801CE680 # V0=sensecode; A2 = #LBAs for A1 bytes at LBA A0
- AFA40030 SW A0,0030 (SP)
- 1440000E BNE V0,R0,+14
- 02002025 OR A0,S0,R0
- 8FAE0034 LW T6,0034 (SP)
- 8E070058 LW A3,0058 (S0)
- 2602001C ADDIU V0,S0,001C
- AFA20014 SW V0,0014 (SP)
- AFA20028 SW V0,0028 (SP)
- 00002825 OR A1,R0,R0 # read
- 8FA60030 LW A2,0030 (SP)
- 0C0729D0 JAL 801CA740 # send read or write (A1) leocmd A0 for SP+10 blocks between LBA A2 and rdram A3, notifying queue SP+14
- AFAE0010 SW T6,0010 (SP)
- 8FA40028 LW A0,0028 (SP)
- 26050068 ADDIU A1,S0,0068
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001
- 8FBF0024 LW RA,0024 (SP)
- 8FB00020 LW S0,0020 (SP)
- 27BD0038 ADDIU SP,SP,0038
- 03E00008 JR RA
- 00000000 NOP
- 801C83A0 0x1520 write requested (A0) bytelength to LBA
- accepts: A0=p->struct
- 27BDFFC8 ADDIU SP,SP,FFC8
- AFB00020 SW S0,0020 (SP)
- 00808025 OR S0,A0,R0
- AFBF0024 SW RA,0024 (SP)
- 8E040058 LW A0,0058 (S0) # LBA = @A0+58
- 8E050060 LW A1,0060 (S0) # bytelength = @A0+60
- 27A60034 ADDIU A2,SP,0034 # target
- 0C0739A0 JAL 801CE680 # V0=sensecode; A2 = #LBAs for A1 bytes at LBA A0
- AFA40030 SW A0,0030 (SP)
- 1440000E BNE V0,R0,+14 # if error: return error
- 02002025 OR A0,S0,R0
- 8FAE0034 LW T6,0034 (SP)
- 8E07005C LW A3,005C (S0) # rdram = @A0+5C
- 2602001C ADDIU V0,S0,001C
- AFA20014 SW V0,0014 (SP) # queue = A0+1C
- AFA20028 SW V0,0028 (SP)
- 24050001 ADDIU A1,R0,0001 # write
- 8FA60030 LW A2,0030 (SP) # LBA = @A0+58
- 0C0729D0 JAL 801CA740 # send read or write (A1) leocmd A0 for SP+10 blocks between LBA A2 and rdram A3, notifying queue SP+14
- AFAE0010 SW T6,0010 (SP) # blocks = @SP+34
- 8FA40028 LW A0,0028 (SP) # queue = A0+1C
- 26050068 ADDIU A1,S0,0068 # target = A0+68
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001 # wait
- 8FBF0024 LW RA,0024 (SP)
- 8FB00020 LW S0,0020 (SP)
- 27BD0038 ADDIU SP,SP,0038
- 03E00008 JR RA
- 00000000 NOP
- 801C8414 0x1594 set msg for request A0 to 9
- accepts: A0=p->struct
- 240E0009 ADDIU T6,R0,0009
- AC8E0068 SW T6,0068 (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801C8424 0x15A4 run leo init command (A0[64]) using struct A0
- accepts: A0=p->struct
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB00014 SW S0,0014 (SP)
- 00808025 OR S0,A0,R0
- AFBF0024 SW RA,0024 (SP)
- AFB30020 SW S3,0020 (SP)
- AFB2001C SW S2,001C (SP)
- AFB10018 SW S1,0018 (SP)
- 240EFFFF ADDIU T6,R0,FFFF
- 0C072075 JAL 801C81D4 # True if leo threads successfully started (801D2E64 is True)
- AE0E0068 SW T6,0068 (S0) # struct+68 = -1
- 14400004 BNE V0,R0,+4
- 24180001 ADDIU T8,R0,0001
- 920F0064 LBU T7,0064 (S0)
- 55E00018 BNEL T7,R0,+24
- 8FBF0024 LW RA,0024 (SP)
- 92190064 LBU T9,0064 (S0) # init state = struct[64]
- 3C09801D LUI T1,801D
- 25292E68 ADDIU T1,T1,2E68
- 001940C0 SLL T0,T9,0x3
- A2180066 SB T8,0066 (S0)
- 01091021 ADDU V0,T0,T1 # p->functions = 801D2E68 + (@struct+64 * 8)
- 8C510000 LW S1,0000 (V0)
- 8C520004 LW S2,0004 (V0)
- 24130002 ADDIU S3,R0,0002
- 0220F809 JALR RA,S1
- 02002025 OR A0,S0,R0
- 0240F809 JALR RA,S2
- 02002025 OR A0,S0,R0
- 1053FFFB BEQ V0,S3,-5
- 00402025 OR A0,V0,R0
- 920A0064 LBU T2,0064 (S0)
- AE02006C SW V0,006C (S0)
- 55400004 BNEL T2,R0,+4
- A2000066 SB R0,0066 (S0)
- 0C072067 JAL 801C819C # 801D2E60 = 1 if A0 else 2
- 00000000 NOP
- A2000066 SB R0,0066 (S0)
- 8FBF0024 LW RA,0024 (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801C84D4 0x1654 Thread: runs init command set in struct
- [listens to @801E0D10, funnels msg through 801C8424(), signals @801E0D14 complete]
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF001C SW RA,001C (SP)
- AFB10018 SW S1,0018 (SP)
- AFB00014 SW S0,0014 (SP)
- AFA40028 SW A0,0028 (SP)
- 3C10801E LUI S0,801E
- 26100D10 ADDIU S0,S0,0D10
- 27B10024 ADDIU S1,SP,0024
- @801C84F4
- 8E040000 LW A0,0000 (S0) # queue = @801E0D10
- 02202825 OR A1,S1,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001 # wait
- 0C072109 JAL 801C8424 # run leo init command (A0[64]) using struct A0
- 8FA40024 LW A0,0024 (SP) # msg is presumed to be p->struct
- 8E040004 LW A0,0004 (S0) # queue = @801E0D14
- 00002825 OR A1,R0,R0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001 # jam
- 1000FFF6 BEQ R0,R0,-10
- 8E040000 LW A0,0000 (S0)
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 8FBF001C LW RA,001C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801C8554 0x16D4 ???; call 80002D70(801E0DB0)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 0C000B5C JAL 80002D70
- 24840DB0 ADDIU A0,A0,0DB0 # A0 = 801E0DB0 [801E0D18+98]
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8578 0x16F8 create init cmd handler thread with ID A2 and priority SP+10, incoming queue A0, outgoing queue A1, stack at A3
- accepts: A0=p->incoming queue, A1=p->outgoing queue, A2=ID, A3=p->stack, SP+10=priority
- 27BDFFE0 ADDIU SP,SP,FFE0
- 3C02801E LUI V0,801E
- 24420D10 ADDIU V0,V0,0D10
- AFBF001C SW RA,001C (SP)
- AFA40020 SW A0,0020 (SP)
- AFA50024 SW A1,0024 (SP)
- AFA60028 SW A2,0028 (SP)
- AFA7002C SW A3,002C (SP)
- 8FAE0020 LW T6,0020 (SP)
- 8FAF0024 LW T7,0024 (SP)
- 8FB8002C LW T8,002C (SP)
- 8FB90030 LW T9,0030 (SP)
- 3C04801E LUI A0,801E
- 3C06801D LUI A2,801D
- 24C684D4 ADDIU A2,A2,84D4 # func = 801C84D4
- 24840DB0 ADDIU A0,A0,0DB0 # thread = 801E0DB0
- 8FA50028 LW A1,0028 (SP) # ID = A2 f/caller
- 00003825 OR A3,R0,R0 # arg = 0
- AC4E0000 SW T6,0000 (V0) # 801E0D10 = A0 f/caller
- AC4F0004 SW T7,0004 (V0) # 801E0D14 = A1 f/caller
- AFB80010 SW T8,0010 (SP) # SP = A3 f/caller
- 0C000BC8 JAL 80002F20 # create thread A0, ID A1, calling A2(A3) with stack at SP+10, priority SP+14
- AFB90014 SW T9,0014 (SP) # priority = SP+10 f/caller
- 3C04801E LUI A0,801E
- 0C0017B0 JAL 80005EC0 # start thread A0
- 24840DB0 ADDIU A0,A0,0DB0 # thread = 801E0DB0
- 8FBF001C LW RA,001C (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801C85F0 0x1770 run leo init command (A0[64]) indirectly or directly (A1) using struct A0
- accepts: A0=p->struct, A1=mode (0:run via thread, 1:run directly)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 00803825 OR A3,A0,R0
- 24010001 ADDIU AT,R0,0001
- 14A10005 BNE A1,AT,+5
- 3C04801E LUI A0,801E
- 0C072109 JAL 801C8424 # run leo init command (A0[64]) using struct A0
- 00E02025 OR A0,A3,R0
- 10000006 BEQ R0,R0,+6
- 8FBF0014 LW RA,0014 (SP)
- 8C840D10 LW A0,0D10 (A0) # queue = @801E0D10
- 00E02825 OR A1,A3,R0 # msg = A0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001 # jam
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8638 0x17B8 run "start leo threads" init command, setting 801E2EB4 = function A0, 801E0F70 = function A1, and 801D2EC0 = function A2
- accepts: A0=p->function, A1=p->function or None, A2=p->function or None
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 00A03825 OR A3,A1,R0
- 00E02025 OR A0,A3,R0
- 0C0726D4 JAL 801C9B50 # 801E0F70 = A0; 801D2EC0 = A1
- 00C02825 OR A1,A2,R0
- 8FAE0018 LW T6,0018 (SP)
- 3C01801D LUI AT,801D
- 3C04801E LUI A0,801E
- AC2E2EB4 SW T6,2EB4 (AT) # 801E2EB4 = A0 f/caller
- 3C01801E LUI AT,801E
- A0200D7C SB R0,0D7C (AT) # struct[64] = 0: start leo threads
- A0200D7D SB R0,0D7D (AT) # struct[65] = 0
- 24840D18 ADDIU A0,A0,0D18 # struct = 801E0D18
- 0C07217C JAL 801C85F0 # run leo init command (A0[64]) indirectly or directly (A1) using struct A0
- 00002825 OR A1,R0,R0 # use threading
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C868C 0x180C run init command to read or write (A3) A2 bytes between LBA A0 and rdram A1
- accepts: A0=LBA, A1=rdram, A2=bytelength, A3=leo init cmd (1:read, 2:write)
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C02801D LUI V0,801D
- 24422E90 ADDIU V0,V0,2E90
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- AFA5001C SW A1,001C (SP)
- AFA60020 SW A2,0020 (SP)
- AFA70024 SW A3,0024 (SP)
- 8C4E0000 LW T6,0000 (V0)
- 24010001 ADDIU AT,R0,0001
- 240F0004 ADDIU T7,R0,0004
- 15C1000E BNE T6,AT,+14 # run directly if @801D2E90 == 1 else run threaded
- 3C04801E LUI A0,801E
- AC400000 SW R0,0000 (V0) # 801D2E90 = 0
- 3C01801E LUI AT,801E
- A02F0D7C SB T7,0D7C (AT) # 801E0D18[64] = 4
- 24840D18 ADDIU A0,A0,0D18 # struct = 801E0D18
- 0C07217C JAL 801C85F0 # run leo init command (A0[64]) indirectly or directly (A1) using struct A0
- 24050001 ADDIU A1,R0,0001 # run directly
- 3C02801E LUI V0,801E
- 8C420D84 LW V0,0D84 (V0)
- 24010003 ADDIU AT,R0,0003
- 10410011 BEQ V0,AT,+17
- 24010004 ADDIU AT,R0,0004
- 50410010 BEQL V0,AT,+16 # if @801E0D18+6C in (3, 4), return
- 8FBF0014 LW RA,0014 (SP)
- @801C86F4
- 8FB80018 LW T8,0018 (SP)
- 8FB9001C LW T9,001C (SP)
- 3C01801E LUI AT,801E
- 8FA80020 LW T0,0020 (SP)
- 93A90027 LBU T1,0027 (SP)
- AC380D70 SW T8,0D70 (AT) # 801E0D18+58 = A0 f/caller
- AC390D74 SW T9,0D74 (AT) # 801E0D18+5C = A1 f/caller
- 3C01801E LUI AT,801E
- 3C04801E LUI A0,801E
- 24840D18 ADDIU A0,A0,0D18 # struct = 801E0D18
- 00002825 OR A1,R0,R0 # use threading
- AC280D78 SW T0,0D78 (AT) # 801E0D18+60 = A2 f/caller
- 0C07217C JAL 801C85F0 # run leo init command (A0[64]) indirectly or directly (A1) using struct A0
- A0290D7C SB T1,0D7C (AT) # 801E0D18[64] = A3 f/caller
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C873C 0x18BC V0 = True if disk present else False
- accepts: A0=p->struct
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- AFA40020 SW A0,0020 (SP)
- 0C074B2C JAL 801D2CB0 # V0 = sensecode; A0 = motor state (1: disk removed, 2:head retracted, 4:spindle stopped)
- 27A4001F ADDIU A0,SP,001F
- 8FAE0020 LW T6,0020 (SP)
- ADC20068 SW V0,0068 (T6)
- 93A2001F LBU V0,001F (SP)
- 8FBF0014 LW RA,0014 (SP)
- 30420001 ANDI V0,V0,0001
- 2C420001 SLTIU V0,V0,0001
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 801C8770 0x18F0 V0 = 0 if busy, 1 if error, 2 if okay after test unit ready result
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 0C0721CF JAL 801C873C # V0 = True if disk present else False
- 24840D18 ADDIU A0,A0,0D18 # struct = 801E0D18
- 3C0E801E LUI T6,801E
- 8DCE0D80 LW T6,0D80 (T6) # sensecode = @801E0D18+68
- 24010008 ADDIU AT,R0,0008
- 8FBF0014 LW RA,0014 (SP)
- 15C10003 BNE T6,AT,+3
- 00000000 NOP
- 10000006 BEQ R0,R0,+6 # if sensecode == 8: return 0 (leo busy)
- 00001025 OR V0,R0,R0
- 54400004 BNEL V0,R0,+4 # if sensecode: return 1
- 24020001 ADDIU V0,R0,0001
- 10000002 BEQ R0,R0,+2 # if okay: return 2
- 24020002 ADDIU V0,R0,0002
- 24020001 ADDIU V0,R0,0001
- 03E00008 JR RA
- 27BD0018 ADDIU SP,SP,0018
- 801C87C0 0x1940 return -1 if 801E0D7E[0] == 0 or recent sensecode @801E0D18+68 == 0 else return sensecode
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C072211 JAL 801C8844 # V0 = True if 801E0D7E[0] == 0 else False
- 00000000 NOP
- 14400007 BNE V0,R0,+7 # if V0, return -1
- 8FBF0014 LW RA,0014 (SP)
- 3C03801E LUI V1,801E
- 8C630D80 LW V1,0D80 (V1) # sensecode = @801E0D18+68
- 50600004 BEQL V1,R0,+4 # if not sensecode, return -1
- 2402FFFF ADDIU V0,R0,FFFF
- 10000002 BEQ R0,R0,+2 # else, return sensecode
- 00601025 OR V0,V1,R0
- 2402FFFF ADDIU V0,R0,FFFF
- 03E00008 JR RA
- 27BD0018 ADDIU SP,SP,0018
- 801C87FC 0x197C
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C072211 JAL 801C8844 # V0 = True if 801E0D7E[0] == 0 else False
- 00000000 NOP
- 1440000A BNE V0,R0,+10 # if V0, return 0
- 8FBF0014 LW RA,0014 (SP)
- 3C02801E LUI V0,801E
- 8C420D84 LW V0,0D84 (V0)
- 24010003 ADDIU AT,R0,0003
- 10410002 BEQ V0,AT,+2
- 24010004 ADDIU AT,R0,0004
- 14410003 BNE V0,AT,+3
- 3C02801E LUI V0,801E
- 10000002 BEQ R0,R0,+2
- 8C420D80 LW V0,0D80 (V0) # if @801E0D84 in (3, 4), return sensecode f/ @801E0D18+68
- 00001025 OR V0,R0,R0 # else, return 0
- 03E00008 JR RA
- 27BD0018 ADDIU SP,SP,0018
- 801C8844 0x19C4 V0 = True if 801E0D7E[0] == 0 else False
- 3C02801E LUI V0,801E
- 90420D7E LBU V0,0D7E (V0)
- 38420001 XORI V0,V0,0001
- 2C420001 SLTIU V0,V0,0001
- 03E00008 JR RA
- 00000000 NOP
- 801C885C 0x19DC
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C04801E LUI A0,801E
- 24840D18 ADDIU A0,A0,0D18 # struct = 801E0D18
- AFBF0014 SW RA,0014 (SP)
- 240E0003 ADDIU T6,R0,0003
- A08E0064 SB T6,0064 (A0) # struct[64] = 3
- 0C07217C JAL 801C85F0 # run leo init command (A0[64]) indirectly or directly (A1) using struct A0
- 24050001 ADDIU A1,R0,0001 # run directly
- 3C03801E LUI V1,801E
- 8C630D84 LW V1,0D84 (V1) # @801E0D18+6C
- 24010003 ADDIU AT,R0,0003
- 8FBF0014 LW RA,0014 (SP)
- 10610003 BEQ V1,AT,+3 # if @801E0D84 in (3, 4), return -1
- 24010004 ADDIU AT,R0,0004
- 14610003 BNE V1,AT,+3 # else, return True if not @801E0D84 else False
- 2C620001 SLTIU V0,V1,0001
- 10000001 BEQ R0,R0,+1
- 2402FFFF ADDIU V0,R0,FFFF
- 03E00008 JR RA
- 27BD0018 ADDIU SP,SP,0018
- 801C88AC 0x1A2C
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C04801E LUI A0,801E
- 24840D18 ADDIU A0,A0,0D18 # struct = 801E0D18
- AFBF0014 SW RA,0014 (SP)
- 240E0004 ADDIU T6,R0,0004
- A08E0064 SB T6,0064 (A0) # struct[64] = 4
- 0C07217C JAL 801C85F0 # run leo init command (A0[64]) indirectly or directly (A1) using struct A0
- 24050001 ADDIU A1,R0,0001 # run directly
- 3C03801E LUI V1,801E
- 8C630D84 LW V1,0D84 (V1)
- 24010003 ADDIU AT,R0,0003
- 8FBF0014 LW RA,0014 (SP)
- 10610003 BEQ V1,AT,+3 # if @801E0D84 in (3, 4), return -1
- 24010004 ADDIU AT,R0,0004
- 14610003 BNE V1,AT,+3 # else, return True if not @801E0D84 else False
- 2C620001 SLTIU V0,V1,0001
- 10000001 BEQ R0,R0,+1
- 2402FFFF ADDIU V0,R0,FFFF
- 03E00008 JR RA
- 27BD0018 ADDIU SP,SP,0018
- 801C88FC 0x1A7C V0 = True if IPL not found else False; sets sensecode 8 (leo busy) if found
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C073848 JAL 801CE120 # V0 = True if IPL valid else False
- 00000000 NOP
- 10400003 BEQ V0,R0,+3
- 3C01801E LUI AT,801E
- 10000002 BEQ R0,R0,+2
- 24030008 ADDIU V1,R0,0008
- 00001825 OR V1,R0,R0
- 2C620001 SLTIU V0,V1,0001 # return True if IPL not found else False
- AC230D80 SW V1,0D80 (AT) # sensecode = leo busy if call 801CE120 else 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801C8940 0x1AC0 create and display image for leo error# A0
- accepts: A0=sensecode
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C07278A JAL 801C9E28 # V0 = p->image for error# string
- 00000000 NOP
- 3C01801D LUI AT,801D
- AC222EA4 SW V0,2EA4 (AT) # 801D2EA4 = p->image for error# string
- 3C01801D LUI AT,801D
- 240E0001 ADDIU T6,R0,0001
- AC2E2EA8 SW T6,2EA8 (AT) # 801D2EA8 = True: display error image
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8974 0x1AF4 if error# image is displayed remove it
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C0E801D LUI T6,801D
- 8DCE2EA8 LW T6,2EA8 (T6) # @801D2EA8: display error image if True
- 24010001 ADDIU AT,R0,0001
- 55C10008 BNEL T6,AT,+8 # return if no error to display
- 8FBF0014 LW RA,0014 (SP)
- 0C0727B0 JAL 801C9EC0 # V0 = 801E0F80; initialize image at 801E0F80
- 00000000 NOP
- 3C01801D LUI AT,801D
- AC222EA4 SW V0,2EA4 (AT) # 801D2EA4 = 801E0F80
- 3C01801D LUI AT,801D
- AC202EA8 SW R0,2EA8 (AT) # 801D2EA8 = False
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C89B8 0x1B38 create and display image for error text of sensecode A0
- accepts: A0=sensecode
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C0727E4 JAL 801C9F90 # V0 = 801E1580; draw error A0's text to image at 801E1580
- 00000000 NOP
- 3C01801D LUI AT,801D
- AC222EAC SW V0,2EAC (AT) # 801D2EAC = p->image for leo error text image
- 3C01801E LUI AT,801E
- 240E0001 ADDIU T6,R0,0001
- AC2E0F60 SW T6,0F60 (AT) # 801E0F60 = True: display leo error text image
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C89EC 0x1B6C if error text image is displayed remove it
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C0E801E LUI T6,801E
- 8DCE0F60 LW T6,0F60 (T6) # @801E0F60: display leo error text image if True
- 24010001 ADDIU AT,R0,0001
- 55C10008 BNEL T6,AT,+8 # return if no error to display
- 8FBF0014 LW RA,0014 (SP)
- 0C0727FF JAL 801C9FFC # V0 = 801E1580; initialize image at 801E1580
- 00000000 NOP
- 3C01801D LUI AT,801D
- AC222EAC SW V0,2EAC (AT) # 801D2EAC = p->image for leo error text image
- 3C01801E LUI AT,801E
- AC200F60 SW R0,0F60 (AT) # 801E0F60 = False
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8A30 0x1BB0 create and display image for disk removal/insertion error A0
- accepts: A0=leo error msg
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C07280C JAL 801CA030 # V0 = 801E3D80; draw disk removal/insertion leo error to image 801E3D80
- 00000000 NOP
- 3C01801D LUI AT,801D
- AC222EB0 SW V0,2EB0 (AT) # 801D2EB0 = 801E3D80: p->image
- 3C01801E LUI AT,801E
- 240E0001 ADDIU T6,R0,0001
- AC2E0F64 SW T6,0F64 (AT) # 801E0F64 = True: display disk removal/insertion error image
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8A64 0x1BE4 if disk removal/insertion error image is displayed remove it
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C0E801E LUI T6,801E
- 8DCE0F64 LW T6,0F64 (T6) # @801E0F60: display disk removal/insertion error image if True
- 24010001 ADDIU AT,R0,0001
- 55C10008 BNEL T6,AT,+8 # return if no error to display
- 8FBF0014 LW RA,0014 (SP)
- 0C07281C JAL 801CA070 # V0 = 801E3D80; initialize image at 801E3D80
- 00000000 NOP
- 3C01801D LUI AT,801D
- AC222EB0 SW V0,2EB0 (AT) # 801D2EB0 = 801E3D80: p->image
- 3C01801E LUI AT,801E
- AC200F64 SW R0,0F64 (AT) # 801E0F64 = False
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8AA8 0x1C28
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 8C840D14 LW A0,0D14 (A0) # queue = @801E0D14
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 00003025 OR A2,R0,R0 # read
- 3C0E801D LUI T6,801D
- 8DCE2EB4 LW T6,2EB4 (T6)
- 3C0F801D LUI T7,801D
- 51C0001E BEQL T6,R0,+30 # if @801D2EB4 is None, return
- 8FBF0014 LW RA,0014 (SP)
- 8DEF2EA0 LW T7,2EA0 (T7)
- 55E0001B BNEL T7,R0,+27 # if @801D2EA0, return
- 8FBF0014 LW RA,0014 (SP)
- 0C000F30 JAL 80003CC0 # V0 = Status; set interrupts in Status and MI Int using flags A0
- 24040001 ADDIU A0,R0,0001
- 3C03801D LUI V1,801D
- 3C05801D LUI A1,801D
- 3C06801D LUI A2,801D
- 24C62EB0 ADDIU A2,A2,2EB0
- 24A52EAC ADDIU A1,A1,2EAC
- 24632EA4 ADDIU V1,V1,2EA4
- 8C780000 LW T8,0000 (V1) # T8 = @801D2EA4
- 8CB90000 LW T9,0000 (A1) # T9 = @801D2EAC
- 8CC80000 LW T0,0000 (A2) # T0 = @801D2EB0
- AC600000 SW R0,0000 (V1) # 801D2EA4 = 0
- ACA00000 SW R0,0000 (A1) # 801D2EAC = 0
- ACC00000 SW R0,0000 (A2) # 801D2EB0 = 0
- 00402025 OR A0,V0,R0
- AFB80020 SW T8,0020 (SP)
- AFB9001C SW T9,001C (SP)
- 0C000F30 JAL 80003CC0 # V0 = Status; set interrupts in Status and MI Int using flags A0
- AFA80018 SW T0,0018 (SP)
- 3C19801D LUI T9,801D
- 8F392EB4 LW T9,2EB4 (T9) # func = @801D2EB4
- 8FA40020 LW A0,0020 (SP) # A0 = @801D2EA4
- 8FA5001C LW A1,001C (SP) # A1 = @801D2EAC
- 0320F809 JALR RA,T9
- 8FA60018 LW A2,0018 (SP) # A2 = @801D2EB0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 801C8B58 0x1CD8 display error# A0 with error text A1 and disk removal/insertion text A2
- accepts: A0=sensecode, A1=sensecode, A2=removal/insertion error#
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA5001C SW A1,001C (SP)
- AFA60020 SW A2,0020 (SP)
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 00000000 NOP
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 8FA4001C LW A0,001C (SP)
- 0C07228C JAL 801C8A30 # create and display image for disk removal/insertion error A0
- 8FA40020 LW A0,0020 (SP)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8B90 0x1D10 remove all error images
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C07225D JAL 801C8974 # if error# image is displayed remove it
- 00000000 NOP
- 0C07227B JAL 801C89EC # if error text image is displayed remove it
- 00000000 NOP
- 0C072299 JAL 801C8A64 # if disk removal/insertion error image is displayed remove it
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8BC0 0x1D40 display current error unless invalid command, invalid LBA, or waiting NMI
- accepts: A0=p->struct
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 8C850068 LW A1,0068 (A0) # sensecode = @struct+68
- 28A10025 SLTI AT,A1,0025
- 14200002 BNE AT,R0,+2
- 28A10029 SLTI AT,A1,0029
- 14200009 BNE AT,R0,+9
- 2401001F ADDIU AT,R0,001F
- 10A10007 BEQ A1,AT,+7
- 24010020 ADDIU AT,R0,0020 # pass errors 0x1F, 0x20, 0x25, 0x26, 0x27, 0x28
- 10A10005 BEQ A1,AT,+5
- 00000000 NOP
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 00A02025 OR A0,A1,R0
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040003 ADDIU A0,R0,0003
- 0C07398C JAL 801CE630 # clear leocmd queue
- 00000000 NOP
- 24020004 ADDIU V0,R0,0004
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8C1C 0x1D9C
- accepts: A0=p->struct
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB1001C SW S1,001C (SP)
- 00808825 OR S1,A0,R0
- AFBF002C SW RA,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB00018 SW S0,0018 (SP)
- 2414002A ADDIU S4,R0,002A
- 24130023 ADDIU S3,R0,0023
- 24120022 ADDIU S2,R0,0022
- 00008025 OR S0,R0,R0
- 0C000733 JAL 80001CCC
- 2404003C ADDIU A0,R0,003C
- 0C0720B8 JAL 801C82E0 # apply brake
- 02202025 OR A0,S1,R0
- 8E220068 LW V0,0068 (S1)
- 10400011 BEQ V0,R0,+17
- 00000000 NOP
- 10520009 BEQ V0,S2,+9
- 00000000 NOP
- 50530010 BEQL V0,S3,+16
- 24100001 ADDIU S0,R0,0001
- 1454000E BNE V0,S4,+14
- 00000000 NOP
- 0C072299 JAL 801C8A64 # if disk removal/insertion error image is displayed remove it
- 00000000 NOP
- 10000010 BEQ R0,R0,+16
- 00001025 OR V0,R0,R0
- 0C072299 JAL 801C8A64 # if disk removal/insertion error image is displayed remove it
- 00000000 NOP
- 0C07398C JAL 801CE630 # clear leocmd queue
- 00000000 NOP
- 1000000A BEQ R0,R0,+10
- 24020003 ADDIU V0,R0,0003
- 0C07228C JAL 801C8A30 # create and display image for disk removal/insertion error A0
- 24040006 ADDIU A0,R0,0006
- 24100001 ADDIU S0,R0,0001
- 5600FFE5 BNEL S0,R0,-27
- 00008025 OR S0,R0,R0
- 0C072299 JAL 801C8A64 # if disk removal/insertion error image is displayed remove it
- 00000000 NOP
- 0C0722F0 JAL 801C8BC0 # display current error unless invalid command, invalid LBA, or waiting NMI
- 02202025 OR A0,S1,R0
- 8FBF002C LW RA,002C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 801C8CEC 0x1E6C
- accepts: A0=p->struct
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 8C850068 LW A1,0068 (A0) # sensecode = @struct+68
- 24010002 ADDIU AT,R0,0002
- 10A00017 BEQ A1,R0,+23
- 00A01025 OR V0,A1,R0
- 10A1000F BEQ A1,AT,+15
- 24010022 ADDIU AT,R0,0022
- 10410007 BEQ V0,AT,+7
- 24010023 ADDIU AT,R0,0023
- 10410025 BEQ V0,AT,+37 # if queue full return 9
- 2401002B ADDIU AT,R0,002B
- 50410014 BEQL V0,AT,+20
- 908E0065 LBU T6,0065 (A0)
- 1000001B BEQ R0,R0,+27
- 00000000 NOP
- @801C8D2C: 0x22 - command terminated
- 0C0722E4 JAL 801C8B90 # remove all error images
- 00000000 NOP
- 0C07398C JAL 801CE630 # clear leocmd queue
- 00000000 NOP
- 1000001C BEQ R0,R0,+28 # return 3
- 24020003 ADDIU V0,R0,0003
- @801C8D44: 2 - diagnostic failure
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 00A02025 OR A0,A1,R0
- 0C07228C JAL 801C8A30 # create and display image for disk removal/insertion error A0
- 24040005 ADDIU A0,R0,0005
- 10000016 BEQ R0,R0,+22 # return 9
- 24020009 ADDIU V0,R0,0009
- @801C8D5C: sensecode clear
- 0C0722E4 JAL 801C8B90 # remove all error images
- 00000000 NOP
- 10000012 BEQ R0,R0,+18 # return 0
- 00001025 OR V0,R0,R0
- @801C8D6C: 0x2B - power on or reset occured
- 908E0065 LBU T6,0065 (A0)
- 15C00008 BNE T6,R0,+8 # branch if struct[65]
- 00000000 NOP
- 0C0722E4 JAL 801C8B90 # remove all error images
- AFA40018 SW A0,0018 (SP)
- 8FA40018 LW A0,0018 (SP)
- 240F0002 ADDIU T7,R0,0002
- 24020001 ADDIU V0,R0,0001
- 10000008 BEQ R0,R0,+8 # return 1
- A08F0065 SB T7,0065 (A0) # struct[65] = 2
- @801C8D94
- 0C0722E4 JAL 801C8B90 # remove all error images
- AFA40018 SW A0,0018 (SP)
- 0C0722F0 JAL 801C8BC0 # display current error unless invalid command, invalid LBA, or waiting NMI
- 8FA40018 LW A0,0018 (SP)
- 10000003 BEQ R0,R0,+3
- 8FBF0014 LW RA,0014 (SP)
- @801C8DAC
- 24020009 ADDIU V0,R0,0009
- @801C8DB0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8DC0 0x1F40 read diskID to struct A0 until success, handling errors
- accepts: A0=p->struct
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB00014 SW S0,0014 (SP)
- 00808025 OR S0,A0,R0
- AFBF0024 SW RA,0024 (SP)
- AFB30020 SW S3,0020 (SP)
- AFB2001C SW S2,001C (SP)
- AFB10018 SW S1,0018 (SP)
- 24130009 ADDIU S3,R0,0009
- 24120031 ADDIU S2,R0,0031
- 2411002A ADDIU S1,R0,002A
- @801C8DE8: testing loop
- 0C0720A6 JAL 801C8298 # read disk ID to struct A0
- 02002025 OR A0,S0,R0
- 8E040068 LW A0,0068 (S0) # sensecode = @A0+68
- 10910009 BEQ A0,S1,+9 # handle error if sensecode == 0x2A
- 00000000 NOP
- 1492000B BNE A0,S2,+11
- 00000000 NOP
- @801C8E04: 0x31 - ejected illegally (resume)
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 00000000 NOP
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040002 ADDIU A0,R0,0002
- 1000000F BEQ R0,R0,+15 # return 5
- 24020005 ADDIU V0,R0,0005
- @801C8E1C: 0x2A - medium not preset
- 0C0722E4 JAL 801C8B90 # remove all error images
- 00000000 NOP
- 1000000B BEQ R0,R0,+11 # return 5
- 24020005 ADDIU V0,R0,0005
- @801C8E2C: if disk present continue
- 0C07233B JAL 801C8CEC
- 02002025 OR A0,S0,R0
- 10530003 BEQ V0,S3,+3 # if V0 != 9: return (not queue full or diagnostic failure)
- 00000000 NOP
- 10000006 BEQ R0,R0,+6
- 8FBF0024 LW RA,0024 (SP)
- @801C8E44: loop
- 0C000733 JAL 80001CCC
- 2404003C ADDIU A0,R0,003C
- 1000FFE6 BEQ R0,R0,-26
- 00000000 NOP
- @801C8E54
- 8FBF0024 LW RA,0024 (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801C8E70 0x1FF0 read disk ID to struct A0, displaying errors until success
- accepts: A0=p->struct
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB00018 SW S0,0018 (SP)
- 00808025 OR S0,A0,R0
- AFBF002C SW RA,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- 24140009 ADDIU S4,R0,0009
- 24130031 ADDIU S3,R0,0031
- 2412002A ADDIU S2,R0,002A
- 24110023 ADDIU S1,R0,0023
- @801C8EA0: while errors
- 0C000733 JAL 80001CCC
- 2404003C ADDIU A0,R0,003C
- 0C0720A6 JAL 801C8298 # read disk ID to struct A0
- 02002025 OR A0,S0,R0
- 8E040068 LW A0,0068 (S0)
- 1091FFFA BEQ A0,S1,-6 # if queue full, retry
- 00000000 NOP
- 10920007 BEQ A0,S2,+7 # if medium not preset, display disk removal message
- 00000000 NOP
- 14930009 BNE A0,S3,+9 # if disk ejected illegally, display error
- 00000000 NOP
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 00000000 NOP
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040002 ADDIU A0,R0,0002
- 0C07228C JAL 801C8A30 # create and display image for disk removal/insertion error A0
- 24040004 ADDIU A0,R0,0004
- 1000FFEE BEQ R0,R0,-18
- 00000000 NOP
- @801C8EEC
- 0C07233B JAL 801C8CEC
- 02002025 OR A0,S0,R0
- 1054FFEA BEQ V0,S4,-22 # while 9, repeat diskID read
- 00000000 NOP
- 8FBF002C LW RA,002C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 801C8F1C 0x209C V0 = @801D2E54() if @801D2E54 else 1; by default return False if not an EZL* disk or disk has been swapped else True
- accepts: A0=p->struct
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C02801D LUI V0,801D
- 8C422E54 LW V0,2E54 (V0) # func = @801D2E54: 801C7A1C return False if not an EZL* disk or disk has been swapped else True
- 50400006 BEQL V0,R0,+6
- 24020001 ADDIU V0,R0,0001
- 0040F809 JALR RA,V0
- 00000000 NOP
- 10000003 BEQ R0,R0,+3
- 8FBF0014 LW RA,0014 (SP)
- 24020001 ADDIU V0,R0,0001
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C8F58 0x20D8
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB00018 SW S0,0018 (SP)
- 00808025 OR S0,A0,R0
- AFBF0024 SW RA,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- 24120004 ADDIU S2,R0,0004
- 24110003 ADDIU S1,R0,0003
- 0C07239C JAL 801C8E70 # read disk ID to struct A0, displaying errors until success
- 02002025 OR A0,S0,R0
- 10510003 BEQ V0,S1,+3
- 00401825 OR V1,V0,R0
- 14520003 BNE V0,S2,+3
- 00000000 NOP
- 10000015 BEQ R0,R0,+21
- 00601025 OR V0,V1,R0
- 1460FFF7 BNE V1,R0,-9
- 00000000 NOP
- 0C0723C7 JAL 801C8F1C # V0 = @801D2E54() if @801D2E54 else 1; by default return False if not an EZL* disk or disk has been swapped else True
- 02002025 OR A0,S0,R0
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 1000000D BEQ R0,R0,+13 # return 2 if correct disk inserted
- 24020002 ADDIU V0,R0,0002
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040001 ADDIU A0,R0,0001
- 0C072307 JAL 801C8C1C
- 02002025 OR A0,S0,R0
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 10000006 BEQ R0,R0,+6
- 8FBF0024 LW RA,0024 (SP)
- 0C07227B JAL 801C89EC # if error text image is displayed remove it
- 00000000 NOP
- 1000FFE5 BEQ R0,R0,-27
- 00000000 NOP
- 8FBF0024 LW RA,0024 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801C9000 0x2180
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB30024 SW S3,0024 (SP)
- 00809825 OR S3,A0,R0
- AFBF002C SW RA,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 24120004 ADDIU S2,R0,0004
- 24110003 ADDIU S1,R0,0003
- 0C07239C JAL 801C8E70 # read disk ID to struct A0, displaying errors until success
- 02602025 OR A0,S3,R0
- 10510003 BEQ V0,S1,+3
- 00408025 OR S0,V0,R0
- 14520003 BNE V0,S2,+3
- 00000000 NOP
- 10000018 BEQ R0,R0,+24
- 02001025 OR V0,S0,R0
- 1600FFF7 BNE S0,R0,-9
- 00000000 NOP
- 0C0722E4 JAL 801C8B90 # remove all error images
- 00000000 NOP
- 0C0723C7 JAL 801C8F1C # V0 = @801D2E54() if @801D2E54 else 1; by default return False if not an EZL* disk or disk has been swapped else True
- 02602025 OR A0,S3,R0
- 10400003 BEQ V0,R0,+3
- 0040A025 OR S4,V0,R0
- 1000000E BEQ R0,R0,+14
- 24020002 ADDIU V0,R0,0002
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040001 ADDIU A0,R0,0001
- 0C072307 JAL 801C8C1C
- 02602025 OR A0,S3,R0
- 10400003 BEQ V0,R0,+3
- 00408025 OR S0,V0,R0
- 10000007 BEQ R0,R0,+7
- 8FBF002C LW RA,002C (SP)
- 0C07227B JAL 801C89EC # if error text image is displayed remove it
- 00000000 NOP
- 1280FFE3 BEQ S4,R0,-29
- 00000000 NOP
- 02001025 OR V0,S0,R0
- 8FBF002C LW RA,002C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 801C90C4 0x2244
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 8FAE0018 LW T6,0018 (SP)
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 8DC40068 LW A0,0068 (T6)
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040002 ADDIU A0,R0,0002
- 0C072400 JAL 801C9000
- 8FA40018 LW A0,0018 (SP)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C90FC 0x227C
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 8FAE0018 LW T6,0018 (SP)
- 0C072250 JAL 801C8940 # create and display image for leo error# A0
- 8DC40068 LW A0,0068 (T6)
- 0C072400 JAL 801C9000
- 8FA40018 LW A0,0018 (SP)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C912C 0x22AC
- accepts: A0=p->struct
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB1001C SW S1,001C (SP)
- 00808825 OR S1,A0,R0
- AFBF002C SW RA,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB00018 SW S0,0018 (SP)
- 00008025 OR S0,R0,R0
- 24140001 ADDIU S4,R0,0001
- 24130004 ADDIU S3,R0,0004
- 24120003 ADDIU S2,R0,0003
- @801C915C: repeat 30 times
- 0C072AEE JAL 801CABB8 # V0 = sensecode; test if drive ready (no phase error, communication error, reset occured)
- 00000000 NOP
- 0C072370 JAL 801C8DC0 # read diskID to struct A0 until success, handling errors
- 02202025 OR A0,S1,R0 # p->struct = A0 f/caller
- 10520003 BEQ V0,S2,+3
- 00401825 OR V1,V0,R0
- 14530003 BNE V0,S3,+3 # if V0 in (3, 4) return V0
- 00000000 NOP
- 10000010 BEQ R0,R0,+16
- 00601025 OR V0,V1,R0
- @801C9184
- 10540007 BEQ V0,S4,+7 # if V0 != 1 return V0
- 00000000 NOP
- 14400003 BNE V0,R0,+3
- 00000000 NOP
- 1000000A BEQ R0,R0,+10
- 00601025 OR V0,V1,R0
- @801C919C
- 10000008 BEQ R0,R0,+8
- 00601025 OR V0,V1,R0
- @801C91A4: V0 == 1
- 0C000733 JAL 80001CCC
- 240400FA ADDIU A0,R0,00FA
- 2A02001E SLTI V0,S0,001E
- 1440FFEA BNE V0,R0,-22 # loop 30 times
- 26100001 ADDIU S0,S0,0001
- @801C91B8: if failed 30 times, then you throw the error
- 0C0722F0 JAL 801C8BC0 # display current error unless invalid command, invalid LBA, or waiting NMI
- 02202025 OR A0,S1,R0
- @801C91C0
- 8FBF002C LW RA,002C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 801C91E0 0x2360 test rdram size and read diskID(?)
- accepts: A0=p->struct
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 8C8E0068 LW T6,0068 (A0) # sensecode = @struct+68
- 24010029 ADDIU AT,R0,0029
- 3C0F8000 LUI T7,8000
- 15C10005 BNE T6,AT,+5 # branch if sensecode != 0x29: device communication failure
- 00000000 NOP
- 0C0722F0 JAL 801C8BC0 # display current error unless invalid command, invalid LBA, or waiting NMI
- 00000000 NOP
- 10000013 BEQ R0,R0,+19
- 8FBF0014 LW RA,0014 (SP)
- @801C920C
- 8DEF0318 LW T7,0318 (T7) # osMemSize = @80000318
- 3C010080 LUI AT,0080
- 00002825 OR A1,R0,R0
- 01E1082B SLTU AT,T7,AT
- 10200005 BEQ AT,R0,+5 # branch if rdram >= 8MB
- 24060003 ADDIU A2,R0,0003
- @801C9224: if insuffiencent rdram raise error
- 0C0722D6 JAL 801C8B58 # display error# A0 with error text A1 and disk removal/insertion text A2
- 2404002C ADDIU A0,R0,002C # sensecode = 0x2C: rampak not present
- 10000008 BEQ R0,R0,+8 # return 4 if not enough rdram
- 24020004 ADDIU V0,R0,0004
- @801C9234
- 0C07244B JAL 801C912C # ???; pretty sure this reads the diskID into struct A0
- 00000000 NOP
- 14400003 BNE V0,R0,+3 # if error do not set 801D2E90
- 24180001 ADDIU T8,R0,0001
- @801C9244
- 3C01801D LUI AT,801D
- AC382E90 SW T8,2E90 (AT) # 801D2E90 = 1
- 00001025 OR V0,R0,R0
- @801C9250
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9260 0x23E0 handle sensecode in struct A0
- accepts: A0=p->struct
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 8C8E0068 LW T6,0068 (A0) # sensecode = @struct+68
- 2DC10032 SLTIU AT,T6,0032
- 1020002A BEQ AT,R0,+42
- 000E7080 SLL T6,T6,0x2
- 3C01801E LUI AT,801E
- 002E0821 ADDU AT,AT,T6
- 8C2E8E70 LW T6,8E70 (AT) # call 801D8E70[sensecode]()
- 01C00008 JR T6
- 00000000 NOP
- @801C928C: 0x17 - unrecovered read error
- 0C0721CF JAL 801C873C # V0 = True if disk present else False
- AFA40018 SW A0,0018 (SP)
- 0C072307 JAL 801C8C1C
- 8FA40018 LW A0,0018 (SP)
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 10000020 BEQ R0,R0,+32
- 8FBF0014 LW RA,0014 (SP)
- 0C0722E4 JAL 801C8B90 # remove all error images
- 00000000 NOP
- 1000001B BEQ R0,R0,+27
- 24020002 ADDIU V0,R0,0002
- @801C92BC: 2 - diagnostic failure
- 0C0723D6 JAL 801C8F58
- 00000000 NOP
- 10000018 BEQ R0,R0,+24
- 8FBF0014 LW RA,0014 (SP)
- @801C92CC: 0x22 - command terminated
- 0C07398C JAL 801CE630 # clear leocmd queue
- 00000000 NOP
- 10000013 BEQ R0,R0,+19
- 24020003 ADDIU V0,R0,0003
- @801C92DC: 0x31 - ejected illegally (resume)
- 0C072431 JAL 801C90C4
- 00000000 NOP
- 10000010 BEQ R0,R0,+16
- 8FBF0014 LW RA,0014 (SP)
- @801C92EC: 0x2F - medium may have changed
- 0C072400 JAL 801C9000
- 00000000 NOP
- 1000000C BEQ R0,R0,+12
- 8FBF0014 LW RA,0014 (SP)
- @801C92FC: 0x2A - medium not present
- 0C07243F JAL 801C90FC
- 00000000 NOP
- 10000008 BEQ R0,R0,+8
- 8FBF0014 LW RA,0014 (SP)
- @801C930C: 0 - no error
- 10000005 BEQ R0,R0,+5 # return 0
- 00001025 OR V0,R0,R0
- @801C9314: 0x23 - queue full
- 10000003 BEQ R0,R0,+3 # return 2
- 24020002 ADDIU V0,R0,0002
- @801C931C: all other sensecodes
- 0C0722F0 JAL 801C8BC0 # display current error unless invalid command, invalid LBA, or waiting NMI
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9334 0x24B4
- accepts: A0=p->struct
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB30020 SW S3,0020 (SP)
- 00809825 OR S3,A0,R0
- AFBF0024 SW RA,0024 (SP)
- AFB2001C SW S2,001C (SP)
- AFB10018 SW S1,0018 (SP)
- AFB00014 SW S0,0014 (SP)
- 24120005 ADDIU S2,R0,0005
- 24110004 ADDIU S1,R0,0004
- 24100003 ADDIU S0,R0,0003
- @801C935C: while unhandled errors are thrown...
- 0C072370 JAL 801C8DC0 # read diskID to struct A0 until success, handling errors
- 02602025 OR A0,S3,R0
- 10500005 BEQ V0,S0,+5 # if error type 3 (not sure the conditions) return 3
- 00401825 OR V1,V0,R0
- 10510003 BEQ V0,S1,+3 # if error type 4 (not sure the conditions) return 4
- 00000000 NOP
- 14520003 BNE V0,S2,+3 # if disk not present return 5
- 00000000 NOP
- 1000000A BEQ R0,R0,+10
- 00601025 OR V0,V1,R0
- 1460FFF5 BNE V1,R0,-11 # all other errors loop
- 00000000 NOP
- @801C938C
- 0C0723C7 JAL 801C8F1C # V0 = @801D2E54() if @801D2E54 else 1; by default return False if not an EZL* disk or disk has been swapped else True
- 02602025 OR A0,S3,R0
- 50400004 BEQL V0,R0,+4
- 24020007 ADDIU V0,R0,0007
- 10000002 BEQ R0,R0,+2 # return 7 if False else 0
- 00001025 OR V0,R0,R0
- 24020007 ADDIU V0,R0,0007
- @801C93A8
- 8FBF0024 LW RA,0024 (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801C93C4
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFB00014 SW S0,0014 (SP)
- 00808025 OR S0,A0,R0
- AFBF001C SW RA,001C (SP)
- AFB10018 SW S1,0018 (SP)
- 24110007 ADDIU S1,R0,0007
- 0C0724CD JAL 801C9334
- 02002025 OR A0,S0,R0
- 10510003 BEQ V0,S1,+3
- 00000000 NOP
- 1000000E BEQ R0,R0,+14
- 8FBF001C LW RA,001C (SP)
- 0C07226E JAL 801C89B8 # create and display image for error text of sensecode A0
- 24040001 ADDIU A0,R0,0001
- 0C072307 JAL 801C8C1C
- 02002025 OR A0,S0,R0
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 10000006 BEQ R0,R0,+6
- 8FBF001C LW RA,001C (SP)
- 0C07227B JAL 801C89EC # if error text image is displayed remove it
- 00000000 NOP
- 1000FFEF BEQ R0,R0,-17
- 00000000 NOP
- 8FBF001C LW RA,001C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 00000000 NOP
- 00000000 NOP
- 801C9440 0x25C0 V0 = True if wchar at A0 else False
- accepts: A0=p->char
- 90830000 LBU V1,0000 (A0)
- 2861008E SLTI AT,V1,008E
- 14200002 BNE AT,R0,+2
- 286100FF SLTI AT,V1,00FF
- 14200006 BNE AT,R0,+6
- 2401008F ADDIU AT,R0,008F
- 1061000C BEQ V1,AT,+12
- 00001025 OR V0,R0,R0
- 240100A0 ADDIU AT,R0,00A0
- 10610009 BEQ V1,AT,+9
- 00000000 NOP
- 90830001 LBU V1,0001 (A0)
- 24840001 ADDIU A0,A0,0001
- 286200A0 SLTI V0,V1,00A0
- 38420001 XORI V0,V0,0001
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 03E00008 JR RA
- 286200FF SLTI V0,V1,00FF
- 03E00008 JR RA
- 00000000 NOP
- 90830000 LBU V1,0000 (A0)
- 28610081 SLTI AT,V1,0081
- 14200002 BNE AT,R0,+2
- 286100A0 SLTI AT,V1,00A0
- 14200006 BNE AT,R0,+6
- 286100E0 SLTI AT,V1,00E0
- 14200010 BNE AT,R0,+16
- 00001025 OR V0,R0,R0
- 286100FD SLTI AT,V1,00FD
- 1020000D BEQ AT,R0,+13
- 00000000 NOP
- 90830001 LBU V1,0001 (A0)
- 24840001 ADDIU A0,A0,0001
- 28620040 SLTI V0,V1,0040
- 38420001 XORI V0,V0,0001
- 10400007 BEQ V0,R0,+7
- 00000000 NOP
- 286200FD SLTI V0,V1,00FD
- 10400004 BEQ V0,R0,+4
- 00000000 NOP
- 3862007F XORI V0,V1,007F
- 03E00008 JR RA
- 0002102B SLTU V0,R0,V0
- 03E00008 JR RA
- 00000000 NOP
- AFA50004 SW A1,0004 (SP)
- 30A5FFFF ANDI A1,A1,FFFF
- 00057203 SRA T6,A1,0x8
- A08E0000 SB T6,0000 (A0)
- A0850001 SB A1,0001 (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801C9514 0x2694 V0 = wchar A0 - 0x8080
- accepts: A0=wchar
- AFA40000 SW A0,0000 (SP)
- 3084FFFF ANDI A0,A0,FFFF
- 3C01FFFF LUI AT,FFFF
- 34217F80 ORI AT,AT,7F80
- 00811021 ADDU V0,A0,AT
- 3042FFFF ANDI V0,V0,FFFF
- 03E00008 JR RA
- 00000000 NOP
- 801C9534 0x26B4 V0 = euc-jp wchar A0 - 0x8080 -> shift-jis
- accepts: A0=wchar - 0x8080
- AFA40000 SW A0,0000 (SP)
- 3084FFFF ANDI A0,A0,FFFF
- 00042A03 SRA A1,A0,0x8
- 30A800FF ANDI T0,A1,00FF # T0 = bank
- 310E0001 ANDI T6,T0,0001
- 11C0000A BEQ T6,R0,+10
- 308700FF ANDI A3,A0,00FF # A3 = index
- @801C9550
- 00E03025 OR A2,A3,R0
- 24C6001F ADDIU A2,A2,001F
- 30C600FF ANDI A2,A2,00FF
- 28C1007F SLTI AT,A2,007F
- 14200006 BNE AT,R0,+6
- 00C01825 OR V1,A2,R0
- 24C60001 ADDIU A2,A2,0001
- 10000003 BEQ R0,R0,+3
- 30C300FF ANDI V1,A2,00FF
- @801C9574
- 24E6007E ADDIU A2,A3,007E
- 30C300FF ANDI V1,A2,00FF
- 2502FFDF ADDIU V0,T0,FFDF # V0 = bank - 0x21
- 04410002 BGEZ V0,+2
- 00400821 ADDU AT,V0,R0
- 24410001 ADDIU AT,V0,0001
- 00011043 SRA V0,AT,0x1
- 24420081 ADDIU V0,V0,0081
- 304200FF ANDI V0,V0,00FF
- 284100A0 SLTI AT,V0,00A0
- 14200003 BNE AT,R0,+3
- 00402025 OR A0,V0,R0
- 24420040 ADDIU V0,V0,0040
- 304400FF ANDI A0,V0,00FF
- 00047A00 SLL T7,A0,0x8
- 01E31021 ADDU V0,T7,V1
- 3042FFFF ANDI V0,V0,FFFF
- 03E00008 JR RA
- 00000000 NOP
- 801C95C0 0x2740 call @801D2EC0(args)
- accepts: args
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C02801D LUI V0,801D
- 8C422EC0 LW V0,2EC0 (V0)
- 50400004 BEQL V0,R0,+4
- 8FBF0014 LW RA,0014 (SP)
- 0040F809 JALR RA,V0
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C95F0 0x2770 V0 = IPL hardware address of image for wchar A0 (euc-jp)
- accepts: A0=p->wchar
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 00802825 OR A1,A0,R0
- 90AF0000 LBU T7,0000 (A1)
- 90AE0001 LBU T6,0001 (A1)
- 000FC200 SLL T8,T7,0x8
- 01D82025 OR A0,T6,T8
- 0C072545 JAL 801C9514 # V0 = wchar A0 - 0x8080
- 3084FFFF ANDI A0,A0,FFFF
- 0C07254D JAL 801C9534 # V0 = euc-jp wchar A0 - 0x8080 -> shift-jis
- 3044FFFF ANDI A0,V0,FFFF
- 0C073C2C JAL 801CF0B0 # V0 = offset in IPL font to wchar A0's image (shift-jis)
- 00402025 OR A0,V0,R0
- 3C01000A LUI AT,000A
- 00411021 ADDU V0,V0,AT # return 0xA0000 + V0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C963C 0x27BC V0 = correction; A0 = IPL hardware address of image for char SP+10, A1=width, A2=height, A3=alignment
- accepts: A0=p->target, A1=target for width, A2=target for height, A3=target for alignment, SP+10=char
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 3C19801E LUI T9,801E
- 8F390F70 LW T9,0F70 (T9) # 801E0F70
- 93AE002B LBU T6,002B (SP)
- 00194080 SLL T0,T9,0x2
- 01194023 SUBU T0,T0,T9
- 00084180 SLL T0,T0,0x6
- 25D8FFE0 ADDIU T8,T6,FFE0
- 03081021 ADDU V0,T8,T0
- 0C073EEC JAL 801CFBB0 # V0 = IPL hardware address of image for char A0 - 32; A1 = width, A2 = height, A3 = alignment
- 3044FFFF ANDI A0,V0,FFFF # (char - 0x20) + (@801E0F70 * 0xC0)
- 8FAB0018 LW T3,0018 (SP)
- 3043000F ANDI V1,V0,000F
- 00434823 SUBU T1,V0,V1
- 3C01000A LUI AT,000A
- 01215021 ADDU T2,T1,AT
- 00601025 OR V0,V1,R0
- AD6A0000 SW T2,0000 (T3) # A0+0: 0xA0000 | (V0 & ~0xF)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C969C 0x281C read font image for char SP+10 from IPL to A0
- accepts: A0=p->target, A1=target for width, A2=target for height, A3=target for alignment, SP+10=char
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF001C SW RA,001C (SP)
- AFA40028 SW A0,0028 (SP)
- AFA5002C SW A1,002C (SP)
- AFA60030 SW A2,0030 (SP)
- AFA70034 SW A3,0034 (SP)
- 0C072510 JAL 801C9440 # V0 = True if wchar at A0 else False
- 8FA40038 LW A0,0038 (SP)
- 1040000E BEQ V0,R0,+14
- 27A40024 ADDIU A0,SP,0024
- 0C07257C JAL 801C95F0 # V0 = IPL hardware address of image for wchar A0 (euc-jp)
- 8FA40038 LW A0,0038 (SP)
- 8FAE002C LW T6,002C (SP)
- 24040010 ADDIU A0,R0,0010
- AFA20024 SW V0,0024 (SP)
- ADC40000 SW A0,0000 (T6)
- 8FAF0030 LW T7,0030 (SP)
- 2418000B ADDIU T8,R0,000B
- 00001825 OR V1,R0,R0
- ADE40000 SW A0,0000 (T7)
- 8FB90034 LW T9,0034 (SP)
- 10000009 BEQ R0,R0,+9
- AF380000 SW T8,0000 (T9)
- 8FA80038 LW T0,0038 (SP)
- 8FA5002C LW A1,002C (SP)
- 8FA60030 LW A2,0030 (SP)
- 91090000 LBU T1,0000 (T0)
- 8FA70034 LW A3,0034 (SP)
- 0C07258F JAL 801C963C # V0 = correction; A0 = IPL hardware address of image for char SP+10, A1=width, A2=height, A3=alignment
- AFA90010 SW T1,0010 (SP) # char
- 00401825 OR V1,V0,R0
- 8FA40028 LW A0,0028 (SP) # rdram = A0
- 8FA50024 LW A1,0024 (SP) # hardware = IPL address for font image
- 24060080 ADDIU A2,R0,0080 # length = 0x80
- 0C072570 JAL 801C95C0 # call @801D2EC0(args)
- AFA30020 SW V1,0020 (SP)
- 8FA20020 LW V0,0020 (SP)
- 8FBF001C LW RA,001C (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 801C9740 0x28C0 set high or low nibble (A1) of A0 to A2
- accepts: A0=p->target, A1=nibble (0:low, 1:high), A2=value
- AFA60008 SW A2,0008 (SP)
- 30C600FF ANDI A2,A2,00FF
- 24010001 ADDIU AT,R0,0001
- 14A10004 BNE A1,AT,+4
- 00067100 SLL T6,A2,0x4
- A08E0000 SB T6,0000 (A0) # if mode 0: A0[0] = A2 << 4, return 0
- 03E00008 JR RA
- 00001025 OR V0,R0,R0
- 908F0000 LBU T7,0000 (A0)
- 24020001 ADDIU V0,R0,0001
- 01E6C025 OR T8,T7,A2
- A0980000 SB T8,0000 (A0) # if mode 1: A0[0] = A2, return 1
- 03E00008 JR RA
- 00000000 NOP
- 24070001 ADDIU A3,R0,0001
- 8CA20000 LW V0,0000 (A1)
- 00067043 SRA T6,A2,0x1
- 008E2021 ADDU A0,A0,T6
- 14E20003 BNE A3,V0,+3
- 30C30001 ANDI V1,A2,0001
- 50600006 BEQL V1,R0,+6
- 00832021 ADDU A0,A0,V1
- 14400006 BNE V0,R0,+6
- 30C30001 ANDI V1,A2,0001
- 50600005 BEQL V1,R0,+5
- ACA00000 SW R0,0000 (A1)
- 00832021 ADDU A0,A0,V1
- 10000002 BEQ R0,R0,+2
- ACA70000 SW A3,0000 (A1)
- ACA00000 SW R0,0000 (A1)
- 00801025 OR V0,A0,R0
- 03E00008 JR RA
- 00000000 NOP
- 801C97C4 0x2944
- accepts: A0, A1, A2, A3, SP+10, SP+14=p->source, SP+18=width, SP+1C=height, SP+20=alignment
- 27BDFFA0 ADDIU SP,SP,FFA0
- AFB60030 SW S6,0030 (SP)
- 8FB60078 LW S6,0078 (SP)
- AFBF003C SW RA,003C (SP)
- AFBE0038 SW S8,0038 (SP)
- AFB70034 SW S7,0034 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- AFA40060 SW A0,0060 (SP)
- AFA50064 SW A1,0064 (SP)
- AFA60068 SW A2,0068 (SP)
- 8FB80070 LW T8,0070 (SP)
- 8FAE0068 LW T6,0068 (SP)
- 02C77821 ADDU T7,S6,A3
- 8FA80060 LW T0,0060 (SP)
- 01F8C821 ADDU T9,T7,T8
- AFB90044 SW T9,0044 (SP)
- AFAE004C SW T6,004C (SP)
- 24140001 ADDIU S4,R0,0001
- 27A5004C ADDIU A1,SP,004C
- 00E03025 OR A2,A3,R0
- 0C0725DE JAL 801C9778
- 8D040000 LW A0,0000 (T0)
- 8FA90064 LW T1,0064 (SP)
- 8FAB0080 LW T3,0080 (SP)
- 240C000B ADDIU T4,R0,000B
- 00095043 SRA T2,T1,0x1
- 018B6823 SUBU T5,T4,T3
- 01AA0019 MULTU T5,T2
- 8FB7007C LW S7,007C (SP)
- 32CF0001 ANDI T7,S6,0001
- AFAA0064 SW T2,0064 (SP)
- 24150001 ADDIU S5,R0,0001
- 8FB20074 LW S2,0074 (SP)
- 00007012 MFLO T6
- 004EF021 ADDU S8,V0,T6
- 11E00002 BEQ T7,R0,+2
- 02E01025 OR V0,S7,R0
- 26D60001 ADDIU S6,S6,0001
- 12E00024 BEQ S7,R0,+36
- 26F7FFFF ADDIU S7,S7,FFFF
- 03C08025 OR S0,S8,R0
- 8FB1004C LW S1,004C (SP)
- 1AC0001A BLTZ S6,+26
- 00009825 OR S3,R0,R0
- 5695000C BNEL S4,S5,+12
- 92460000 LBU A2,0000 (S2)
- 92460000 LBU A2,0000 (S2)
- 02002025 OR A0,S0,R0
- 02202825 OR A1,S1,R0
- 00063103 SRA A2,A2,0x4
- 0C0725D0 JAL 801C9740 # set high or low nibble (A1) of A0 to A2
- 30C600FF ANDI A2,A2,00FF
- 5040000D BEQL V0,R0,+13
- 26730001 ADDIU S3,S3,0001
- 1000000A BEQ R0,R0,+10
- 26100001 ADDIU S0,S0,0001
- 92460000 LBU A2,0000 (S2)
- 02002025 OR A0,S0,R0
- 02202825 OR A1,S1,R0
- 30C6000F ANDI A2,A2,000F
- 0C0725D0 JAL 801C9740 # set high or low nibble (A1) of A0 to A2
- 30C600FF ANDI A2,A2,00FF
- 10400002 BEQ V0,R0,+2
- 26520001 ADDIU S2,S2,0001
- 26100001 ADDIU S0,S0,0001
- 26730001 ADDIU S3,S3,0001
- 3A940001 XORI S4,S4,0001
- 1676FFE8 BNE S3,S6,-24
- 3A310001 XORI S1,S1,0001
- 8FB80064 LW T8,0064 (SP)
- 02E01025 OR V0,S7,R0
- 03D8F021 ADDU S8,S8,T8
- 16E0FFDF BNE S7,R0,-33
- 26F7FFFF ADDIU S7,S7,FFFF
- AFB20074 SW S2,0074 (SP)
- 8FB90060 LW T9,0060 (SP)
- 27A50068 ADDIU A1,SP,0068
- 8FA60044 LW A2,0044 (SP)
- 0C0725DE JAL 801C9778
- 8F240000 LW A0,0000 (T9)
- 8FA80060 LW T0,0060 (SP)
- AD020000 SW V0,0000 (T0)
- 8FA20068 LW V0,0068 (SP)
- 8FBF003C LW RA,003C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FBE0038 LW S8,0038 (SP)
- 03E00008 JR RA
- 27BD0060 ADDIU SP,SP,0060
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- AFA5001C SW A1,001C (SP)
- 0C072510 JAL 801C9440 # V0 = True if wchar at A0 else False
- AFA60020 SW A2,0020 (SP)
- 8FA40018 LW A0,0018 (SP)
- 8FA5001C LW A1,001C (SP)
- 10400004 BEQ V0,R0,+4
- 8FA60020 LW A2,0020 (SP)
- ACC00000 SW R0,0000 (A2)
- 1000001F BEQ R0,R0,+31
- ACA00000 SW R0,0000 (A1)
- ACC00000 SW R0,0000 (A2)
- ACA00000 SW R0,0000 (A1)
- 90820000 LBU V0,0000 (A0)
- 24080020 ADDIU T0,R0,0020
- 9083FFFF LBU V1,FFFF (A0)
- 10480008 BEQ V0,T0,+8
- 90870001 LBU A3,0001 (A0)
- 24010049 ADDIU AT,R0,0049
- 10410008 BEQ V0,AT,+8
- 24010069 ADDIU AT,R0,0069
- 50410007 BEQL V0,AT,+7
- 24020002 ADDIU V0,R0,0002
- 1000000E BEQ R0,R0,+14
- 24020001 ADDIU V0,R0,0001
- ACC00000 SW R0,0000 (A2)
- 1000000E BEQ R0,R0,+14
- ACA00000 SW R0,0000 (A1)
- 24020002 ADDIU V0,R0,0002
- ACC20000 SW V0,0000 (A2)
- ACA20000 SW V0,0000 (A1)
- 15030002 BNE T0,V1,+2
- ACC20000 SW V0,0000 (A2)
- ACA00000 SW R0,0000 (A1)
- 55070007 BNEL T0,A3,+7
- 8FBF0014 LW RA,0014 (SP)
- 10000004 BEQ R0,R0,+4
- ACC00000 SW R0,0000 (A2)
- ACC20000 SW V0,0000 (A2)
- ACA20000 SW V0,0000 (A1)
- ACC20000 SW V0,0000 (A2)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9A10 0x2B90 draw string A2 to image A0, width A1
- accepts: A0=p->target, A1=width, A2=p->text
- 27BDFEE0 ADDIU SP,SP,FEE0
- AFB00030 SW S0,0030 (SP)
- 00C08025 OR S0,A2,R0
- AFBF0054 SW RA,0054 (SP)
- AFBE0050 SW S8,0050 (SP)
- AFB7004C SW S7,004C (SP)
- AFB60048 SW S6,0048 (SP)
- AFB50044 SW S5,0044 (SP)
- AFB40040 SW S4,0040 (SP)
- AFB3003C SW S3,003C (SP)
- AFB20038 SW S2,0038 (SP)
- AFB10034 SW S1,0034 (SP)
- AFA40120 SW A0,0120 (SP)
- AFA50124 SW A1,0124 (SP)
- 12000035 BEQ S0,R0,+53
- 24120001 ADDIU S2,R0,0001
- 920E0000 LBU T6,0000 (S0)
- 03A08825 OR S1,SP,R0
- 2631008F ADDIU S1,S1,008F
- 11C00030 BEQ T6,R0,+48
- 00118902 SRL S1,S1,0x4
- 00118900 SLL S1,S1,0x4
- 27BE0120 ADDIU S8,SP,0120
- 27B70070 ADDIU S7,SP,0070
- 27B60074 ADDIU S6,SP,0074
- 27B50078 ADDIU S5,SP,0078
- 27B40064 ADDIU S4,SP,0064
- 27B30068 ADDIU S3,SP,0068
- 02002025 OR A0,S0,R0 # p->string
- 02602825 OR A1,S3,R0 # SP+68
- 0C072655 JAL 801C9954
- 02803025 OR A2,S4,R0 # SP+64
- 02202025 OR A0,S1,R0 # SP+80~
- 02A02825 OR A1,S5,R0 # SP+78
- 02C03025 OR A2,S6,R0 # SP+74
- 02E03825 OR A3,S7,R0 # SP+70
- 0C0725A7 JAL 801C969C # read font image for char SP+10 from IPL to A0
- AFB00010 SW S0,0010 (SP) #SP+10 = p->string
- 8FA80078 LW T0,0078 (SP)
- 00401825 OR V1,V0,R0
- 03C02025 OR A0,S8,R0
- 310F0001 ANDI T7,T0,0001
- 11E00002 BEQ T7,R0,+2
- 8FA50124 LW A1,0124 (SP)
- 25080001 ADDIU T0,T0,0001 # if width odd, width += 1
- 8FB80064 LW T8,0064 (SP)
- 8FA90074 LW T1,0074 (SP)
- 8FAA0070 LW T2,0070 (SP)
- 0223C821 ADDU T9,S1,V1
- AFB90014 SW T9,0014 (SP)
- 02403025 OR A2,S2,R0
- 8FA70068 LW A3,0068 (SP)
- AFA80018 SW T0,0018 (SP) # SP+18 = width
- AFA80078 SW T0,0078 (SP)
- AFB80010 SW T8,0010 (SP)
- AFA9001C SW T1,001C (SP) # SP+1C = height
- 0C0725F1 JAL 801C97C4
- AFAA0020 SW T2,0020 (SP) # SP+20 = alignment
- 00409025 OR S2,V0,R0
- 0C072510 JAL 801C9440 # V0 = True if wchar at A0 else False
- 02002025 OR A0,S0,R0
- 50400003 BEQL V0,R0,+3
- 920B0001 LBU T3,0001 (S0)
- 26100001 ADDIU S0,S0,0001
- 920B0001 LBU T3,0001 (S0)
- 26100001 ADDIU S0,S0,0001
- 5560FFDA BNEL T3,R0,-38
- 02002025 OR A0,S0,R0
- 8FBF0054 LW RA,0054 (SP)
- 8FB00030 LW S0,0030 (SP)
- 8FB10034 LW S1,0034 (SP)
- 8FB20038 LW S2,0038 (SP)
- 8FB3003C LW S3,003C (SP)
- 8FB40040 LW S4,0040 (SP)
- 8FB50044 LW S5,0044 (SP)
- 8FB60048 LW S6,0048 (SP)
- 8FB7004C LW S7,004C (SP)
- 8FBE0050 LW S8,0050 (SP)
- 03E00008 JR RA
- 27BD0120 ADDIU SP,SP,0120
- 801C9B50 0x2CD0 801E0F70 = A0; 801D2EC0 = A1
- accepts: A0, A1=p->function or None
- 3C01801E LUI AT,801E
- AC240F70 SW A0,0F70 (AT)
- 3C01801D LUI AT,801D
- AC252EC0 SW A1,2EC0 (AT)
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801C9B70 0x2CF0 V0 = base 10 version of int A0
- accepts: A0=int
- 2881000A SLTI AT,A0,000A
- 00001025 OR V0,R0,R0
- 10200003 BEQ AT,R0,+3
- 00001825 OR V1,R0,R0
- 03E00008 JR RA
- 00801025 OR V0,A0,R0 # if A0 < 10, return A0
- @801C9B88
- 2881000A SLTI AT,A0,000A
- 1420000A BNE AT,R0,+10
- 24050001 ADDIU A1,R0,0001
- 2406000A ADDIU A2,R0,000A
- 2408000A ADDIU T0,R0,000A
- @801C9B9C
- 00C80019 MULTU A2,T0
- 00C02825 OR A1,A2,R0
- 24420001 ADDIU V0,V0,0001
- 00003012 MFLO A2
- 0086082A SLT AT,A0,A2
- 1020FFFA BEQ AT,R0,-6
- 00000000 NOP
- @801C9BB8
- 00403825 OR A3,V0,R0
- 2408000A ADDIU T0,R0,000A
- 00803025 OR A2,A0,R0
- 1040001D BEQ V0,R0,+29
- 2442FFFF ADDIU V0,V0,FFFF
- 00C5001A DIV A2,A1
- 14A00002 BNE A1,R0,+2
- 00000000 NOP
- 0007000D BREAK 0x1C00
- 2401FFFF ADDIU AT,R0,FFFF
- 14A10004 BNE A1,AT,+4
- 3C018000 LUI AT,8000
- 14C10002 BNE A2,AT,+2
- 00000000 NOP
- 0006000D BREAK 0x1800
- 00007012 MFLO T6
- 00003010 MFHI A2
- 00403825 OR A3,V0,R0
- 006E1825 OR V1,V1,T6
- 00A8001A DIV A1,T0
- 00031900 SLL V1,V1,0x4
- 15000002 BNE T0,R0,+2
- 00000000 NOP
- 0007000D BREAK 0x1C00
- 2401FFFF ADDIU AT,R0,FFFF
- 15010004 BNE T0,AT,+4
- 3C018000 LUI AT,8000
- 14A10002 BNE A1,AT,+2
- 00000000 NOP
- 0006000D BREAK 0x1800
- 00002812 MFLO A1
- 1440FFE5 BNE V0,R0,-27
- 2442FFFF ADDIU V0,V0,FFFF
- 00661021 ADDU V0,V1,A2
- 03E00008 JR RA
- 00000000 NOP
- 801C9C48 0x2DC8 V0 = language (0:Japanese, 1:English)
- 3C0E8000 LUI T6,8000
- 8DCE6280 LW T6,6280 (T6)
- 24010001 ADDIU AT,R0,0001
- 24030001 ADDIU V1,R0,0001
- 15C10003 BNE T6,AT,+3 # if @80006280 != 1: return English
- 00000000 NOP
- 10000001 BEQ R0,R0,+1 # return Japanese
- 00001825 OR V1,R0,R0
- 00601025 OR V0,V1,R0
- 03E00008 JR RA
- 00000000 NOP
- 801C9C74 0x2DF4 write value A1 to A2 bytes at A0
- accepts: A0=p->target, A1=value, A2=length
- AFA50004 SW A1,0004 (SP)
- 30A500FF ANDI A1,A1,00FF
- 00C01025 OR V0,A2,R0
- 10C00006 BEQ A2,R0,+6
- 24C6FFFF ADDIU A2,A2,FFFF
- 00C01025 OR V0,A2,R0
- A0850000 SB A1,0000 (A0)
- 24840001 ADDIU A0,A0,0001
- 14C0FFFC BNE A2,R0,-4
- 24C6FFFF ADDIU A2,A2,FFFF
- 03E00008 JR RA
- 00000000 NOP
- 801C9CA4 0x2E24 V0 = p->"Error #" string for region
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C072712 JAL 801C9C48 # V0 = language (0:Japanese, 1:English)
- 00000000 NOP
- 00027080 SLL T6,V0,0x2
- 3C02801D LUI V0,801D
- 004E1021 ADDU V0,V0,T6
- 8C422ED0 LW V0,2ED0 (V0) # @801D2ED0[language]: p->error# message for language
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9CD4 0x2E54 print int A1 to string A0 as widechars
- accepts: A0=p->string, A1=int
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- AFA40020 SW A0,0020 (SP)
- AFA50024 SW A1,0024 (SP)
- 0C0726DC JAL 801C9B70 # V0 = base 10 version of int A0
- 8FA40024 LW A0,0024 (SP)
- 8FAE0024 LW T6,0024 (SP)
- 8FA40020 LW A0,0020 (SP)
- 00401825 OR V1,V0,R0
- 29C1000A SLTI AT,T6,000A
- 14200006 BNE AT,R0,+6
- 3405A1A1 ORI A1,R0,A1A1 # A1 = fullwidth space char
- 00022903 SRA A1,V0,0x4
- 3401A3B0 ORI AT,R0,A3B0
- 00A12821 ADDU A1,A1,AT
- 10000001 BEQ R0,R0,+1
- 30A5FFFF ANDI A1,A1,FFFF
- AFA3001C SW V1,001C (SP)
- 0C07253E JAL 801C94F8
- AFA40020 SW A0,0020 (SP)
- 8FA3001C LW V1,001C (SP)
- 8FA40020 LW A0,0020 (SP)
- 3401A3B0 ORI AT,R0,A3B0
- 3065000F ANDI A1,V1,000F
- 00A12821 ADDU A1,A1,AT
- 30A5FFFF ANDI A1,A1,FFFF
- 0C07253E JAL 801C94F8
- 24840002 ADDIU A0,A0,0002
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801C9D54 0x2ED4 print int A1 to string A0
- accepts: A0=p->string, A1=int
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA5001C SW A1,001C (SP)
- 00803025 OR A2,A0,R0
- 8FA4001C LW A0,001C (SP)
- 0C0726DC JAL 801C9B70 # V0 = base 10 version of int A0
- AFA60018 SW A2,0018 (SP)
- 8FAE001C LW T6,001C (SP)
- 3048000F ANDI T0,V0,000F
- 8FA60018 LW A2,0018 (SP)
- 29C1000A SLTI AT,T6,000A
- 14200005 BNE AT,R0,+5
- 25090030 ADDIU T1,T0,0030
- 00027903 SRA T7,V0,0x4
- 25F80030 ADDIU T8,T7,0030
- 10000003 BEQ R0,R0,+3
- A0D80000 SB T8,0000 (A2)
- 24190020 ADDIU T9,R0,0020
- A0D90000 SB T9,0000 (A2)
- 24C60001 ADDIU A2,A2,0001
- A0C90000 SB T1,0000 (A2)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9DB8 draw error# for sensecode A1 to image A0
- accepts: A0=p->image, A1=sensecode
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- AFA40020 SW A0,0020 (SP)
- AFA50024 SW A1,0024 (SP)
- 0C072729 JAL 801C9CA4 # V0 = p->"Error #" string for region
- 00000000 NOP
- 3C0E8000 LUI T6,8000
- 8DCE6280 LW T6,6280 (T6)
- 24010001 ADDIU AT,R0,0001
- 8FA50024 LW A1,0024 (SP)
- 15C10006 BNE T6,AT,+6 # if @80006280 != 1: English
- 00401825 OR V1,V0,R0
- @801C9DE8: Japanese
- 2444000C ADDIU A0,V0,000C
- 0C072735 JAL 801C9CD4 # print int A1 to string A0 as widechars
- AFA2001C SW V0,001C (SP)
- 10000005 BEQ R0,R0,+5
- 8FA40020 LW A0,0020 (SP)
- @801C9DFC: English
- 2464000D ADDIU A0,V1,000D
- 0C072755 JAL 801C9D54 # print int A1 to string A0
- AFA3001C SW V1,001C (SP)
- 8FA40020 LW A0,0020 (SP)
- @801C9E0C
- 240500C0 ADDIU A1,R0,00C0 # width = 0xC0
- 0C072684 JAL 801C9A10 # draw string A2 to image A0, width A1
- 8FA6001C LW A2,001C (SP) # text = p->"Error #" string for region
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801C9E28 0x2FA8 V0 = p->image for error# string
- accepts: A0=sensecode
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 00802825 OR A1,A0,R0
- 0C0727B0 JAL 801C9EC0 # V0 = 801E0F80; initialize image at 801E0F80
- AFA50018 SW A1,0018 (SP)
- 8FA50018 LW A1,0018 (SP)
- 24010029 ADDIU AT,R0,0029
- 54A1000B BNEL A1,AT,+11
- 28A10025 SLTI AT,A1,0025
- @801C9E4C: sensecode 0x29 (DEVICE COMMUNICATION FAILURE)
- 0C072712 JAL 801C9C48 # V0 = language (0:Japanese, 1:English)
- 00000000 NOP
- 00027080 SLL T6,V0,0x2
- 01C27023 SUBU T6,T6,V0
- 3C0F801D LUI T7,801D
- 25EF2FE0 ADDIU T7,T7,2FE0
- 000E7240 SLL T6,T6,0x9
- 10000011 BEQ R0,R0,+17
- 01CF1021 ADDU V0,T6,T7 # return = 801D2FE0 + (V0*0x600): p->Japanese or English Error 41 image
- @801C9E70
- 28A10025 SLTI AT,A1,0025
- 14200002 BNE AT,R0,+2
- 28A10029 SLTI AT,A1,0029
- 14200005 BNE AT,R0,+5
- 2401001F ADDIU AT,R0,001F
- 10A10003 BEQ A1,AT,+3
- 24010020 ADDIU AT,R0,0020
- 14A10004 BNE A1,AT,+4
- 3C04801E LUI A0,801E
- 3C02801E LUI V0,801E
- 10000005 BEQ R0,R0,+5 # return 801E0F80
- 24420F80 ADDIU V0,V0,0F80
- @801C9EA0
- 0C07276E JAL 801C9DB8 # draw error# for sensecode A1 to image A0
- 24840F80 ADDIU A0,A0,0F80
- 3C02801E LUI V0,801E
- 24420F80 ADDIU V0,V0,0F80 # return 801E0F80
- @801C9EB0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9EC0 0x3040 V0 = 801E0F80; initialize image at 801E0F80
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 24840F80 ADDIU A0,A0,0F80
- 00002825 OR A1,R0,R0
- 0C07271D JAL 801C9C74 # write value A1 to A2 bytes at A0
- 24060600 ADDIU A2,R0,0600
- 3C02801E LUI V0,801E
- 24420F80 ADDIU V0,V0,0F80
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9EF4 draw A2 lines of leo error msg A1 to image A0
- accepts: A0=p->image, A1=msg#, A2=#lines
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB50028 SW S5,0028 (SP)
- AFB30020 SW S3,0020 (SP)
- AFB10018 SW S1,0018 (SP)
- 00808825 OR S1,A0,R0
- 00C09825 OR S3,A2,R0
- 00A0A825 OR S5,A1,R0
- AFBF002C SW RA,002C (SP)
- AFB40024 SW S4,0024 (SP)
- AFB2001C SW S2,001C (SP)
- AFB00014 SW S0,0014 (SP)
- 1A600012 BLTZ S3,+18
- 00008025 OR S0,R0,R0
- 3C12801D LUI S2,801D
- 26522EE0 ADDIU S2,S2,2EE0
- 0013A080 SLL S4,S3,0x2
- 0C072712 JAL 801C9C48 # V0 = language (0:Japanese, 1:English)
- 00000000 NOP
- 000271C0 SLL T6,V0,0x7
- 024E7821 ADDU T7,S2,T6
- 0015C100 SLL T8,S5,0x4
- 01F8C821 ADDU T9,T7,T8
- 03304021 ADDU T0,T9,S0
- 8D060000 LW A2,0000 (T0) # text = 801D2EE0 + (language * 0x80) + (msg * 16) + (line * 4)
- 02202025 OR A0,S1,R0 # target = A0 + (line * 0xA00)
- 0C072684 JAL 801C9A10 # draw string A2 to image A0, width A1
- 24050140 ADDIU A1,R0,0140 # width
- 26100004 ADDIU S0,S0,0004
- 1614FFF3 BNE S0,S4,-13
- 26310A00 ADDIU S1,S1,0A00
- 8FBF002C LW RA,002C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 8FB40024 LW S4,0024 (SP)
- 8FB50028 LW S5,0028 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 801C9F90 0x3110 V0 = 801E1580; draw error A0's text to image at 801E1580
- accepts: A0=leo error to display
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 0C0727FF JAL 801C9FFC # V0 = 801E1580; initialize image at 801E1580
- 00000000 NOP
- 8FA50018 LW A1,0018 (SP)
- 24010003 ADDIU AT,R0,0003
- 3C04801E LUI A0,801E
- 14A1000A BNE A1,AT,+10
- 24841580 ADDIU A0,A0,1580
- 0C072712 JAL 801C9C48 # V0 = language (0:Japanese, 1:English)
- 00000000 NOP
- 00027080 SLL T6,V0,0x2
- 01C27021 ADDU T6,T6,V0
- 3C0F801D LUI T7,801D
- 25EF3BE0 ADDIU T7,T7,3BE0
- 000E72C0 SLL T6,T6,0xB
- 10000005 BEQ R0,R0,+5 # return V0 = 801D3BE0 + (language * 0x2800): p->Japanese or English "Please read the instruction manual for details" error image
- 01CF1021 ADDU V0,T6,T7
- 0C0727BD JAL 801C9EF4 # draw A2 lines of leo error msg A1 to image A0
- 24060004 ADDIU A2,R0,0004
- 3C02801E LUI V0,801E
- 24421580 ADDIU V0,V0,1580 # return 801E1580
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801C9FFC 0x317C V0 = 801E1580; initialize image at 801E1580
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 24841580 ADDIU A0,A0,1580
- 00002825 OR A1,R0,R0
- 0C07271D JAL 801C9C74 # write value A1 to A2 bytes at A0
- 24062800 ADDIU A2,R0,2800
- 3C02801E LUI V0,801E
- 24421580 ADDIU V0,V0,1580
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CA030 0x31B0 V0 = 801E3D80; draw disk removal/insertion leo error to image 801E3D80
- accepts: A0=leo error msg
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 0C07281C JAL 801CA070 # V0 = 801E3D80; initialize image at 801E3D80
- 00000000 NOP
- 3C04801E LUI A0,801E
- 24843D80 ADDIU A0,A0,3D80
- 8FA50018 LW A1,0018 (SP)
- 0C0727BD JAL 801C9EF4 # draw A2 lines of leo error msg A1 to image A0
- 24060002 ADDIU A2,R0,0002 # 2 lines
- 3C02801E LUI V0,801E
- 24423D80 ADDIU V0,V0,3D80
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CA070 0x31F0 V0 = 801E3D80; initialize image at 801E3D80
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 24843D80 ADDIU A0,A0,3D80
- 00002825 OR A1,R0,R0
- 0C07271D JAL 801C9C74 # write value A1 to A2 bytes at A0
- 24061400 ADDIU A2,R0,1400
- 3C02801E LUI V0,801E
- 24423D80 ADDIU V0,V0,3D80
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CA0B0 0x3230 read image for char A0 with width A2, height A3, and alignment SP+10 from IPL to rdram A1
- accepts: A0=char, A1=p->target, A2=target for width, A3=target for height, SP+10=target for alignment
- 27BDFFA0 ADDIU SP,SP,FFA0
- AFB00018 SW S0,0018 (SP)
- 00808025 OR S0,A0,R0
- AFBF001C SW RA,001C (SP)
- AFA50064 SW A1,0064 (SP)
- AFA60068 SW A2,0068 (SP)
- AFA7006C SW A3,006C (SP)
- 0C000580 JAL 80001600 # V0 = p->EPI handle, created if necessary
- 00000000 NOP
- 2A010020 SLTI AT,S0,0020
- 1420000D BNE AT,R0,+13
- AFA20058 SW V0,0058 (SP)
- 2A01007F SLTI AT,S0,007F
- 1020000A BEQ AT,R0,+10 # skip if not ASCII
- 00107080 SLL T6,S0,0x2
- 3C04801E LUI A0,801E
- 008E2021 ADDU A0,A0,T6
- 8C848B60 LW A0,8B60 (A0) # LeoGetAAdr2 = 801D8BE0[ASCII - ' ']
- 8FA50068 LW A1,0068 (SP)
- 8FA6006C LW A2,006C (SP)
- 0C072F34 JAL 801CBCD0 # V0 = address, A1 = width, A2 = height, A3 = alignment for IPL font image entry A0
- 8FA70070 LW A3,0070 (SP)
- 10000013 BEQ R0,R0,+19
- 00408025 OR S0,V0,R0
- @801CA110: shift-jis
- 34018140 ORI AT,R0,8140
- 0201082A SLT AT,S0,AT
- 1420000D BNE AT,R0,+13
- 00000000 NOP
- 0C073C2C JAL 801CF0B0 # V0 = offset in IPL font to wchar A0's image (shift-jis)
- 02002025 OR A0,S0,R0
- 8FAF0068 LW T7,0068 (SP)
- 24030010 ADDIU V1,R0,0010
- 2419000B ADDIU T9,R0,000B
- ADE30000 SW V1,0000 (T7)
- 8FB8006C LW T8,006C (SP)
- 00408025 OR S0,V0,R0
- AF030000 SW V1,0000 (T8)
- 8FA80070 LW T0,0070 (SP)
- 10000003 BEQ R0,R0,+3
- AD190000 SW T9,0000 (T0)
- @801CA150
- 1000001B BEQ R0,R0,+27
- 2402FFFF ADDIU V0,R0,FFFF
- @801CA158
- 27A40040 ADDIU A0,SP,0040
- 27A5003C ADDIU A1,SP,003C
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001
- 8FAB0064 LW T3,0064 (SP)
- 8FAE0058 LW T6,0058 (SP)
- 3C01000A LUI AT,000A
- 02015021 ADDU T2,S0,AT
- 27A90040 ADDIU T1,SP,0040
- 240C0080 ADDIU T4,R0,0080
- AFAC0034 SW T4,0034 (SP) # req+10 = length: 0x80
- AFA90028 SW T1,0028 (SP) # req+4 = queue temp queue above
- AFAA0030 SW T2,0030 (SP) # req+C = hardware: 0xA0000 + offset
- A3A00026 SB R0,0026 (SP) # req[2] = 0
- 240D0002 ADDIU T5,R0,0002
- AFAB002C SW T3,002C (SP) # req[8] = A1
- ADCD0014 SW T5,0014 (T6) # IPL EPI handle+14 = 2
- 8FA40058 LW A0,0058 (SP) # p->IPL EPI handle
- 27A50024 ADDIU A1,SP,0024
- 0C001030 JAL 800040C0 # send read or write (A2) DMA request A1 using EPI handle A0
- 00003025 OR A2,R0,R0 # read
- 27A40040 ADDIU A0,SP,0040
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001
- 00001025 OR V0,R0,R0
- 8FBF001C LW RA,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 27BD0060 ADDIU SP,SP,0060
- 03E00008 JR RA
- 00000000 NOP
- 801CA1D4 0x3354 V0 = color A0 from palette 801D9390
- accepts: A0=index
- 308E000F ANDI T6,A0,000F
- 000E7840 SLL T7,T6,0x1
- 3C02801E LUI V0,801E
- 004F1021 ADDU V0,V0,T7
- 94429390 LHU V0,9390 (V0)
- 03E00008 JR RA
- 00000000 NOP
- 801CA1F0 0x3370 directly draw SP+10 rows of ci4 image A0, (A3, A2) and A1 bytes wide, from offset SP+14 to buffer SP+18 with width SP+1C
- accepts: A0=p->image, A1=bytes per row, A2=height, A3=width, SP+10=height out, SP+14=offset, SP+18=p->out, SP+1C=out width
- 27BDFFC0 ADDIU SP,SP,FFC0
- AFBE0038 SW S8,0038 (SP)
- AFB70034 SW S7,0034 (SP)
- AFB30024 SW S3,0024 (SP)
- 00E09825 OR S3,A3,R0
- 8FB70050 LW S7,0050 (SP)
- 00A0F025 OR S8,A1,R0
- AFBF003C SW RA,003C (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- AFA60048 SW A2,0048 (SP)
- 00808825 OR S1,A0,R0
- 1AE00025 BLTZ S7,+37 # if no output size, return
- 0000A825 OR S5,R0,R0
- @801CA238
- 32760001 ANDI S6,S3,0001
- 8FB40058 LW S4,0058 (SP)
- 1A60001C BLTZ S3,+28
- 00008025 OR S0,R0,R0
- 8FAE0048 LW T6,0048 (SP)
- 8FAF0054 LW T7,0054 (SP)
- 8FA9005C LW T1,005C (SP)
- 001E6040 SLL T4,S8,0x1 # T4 = width * 2
- 01CFC023 SUBU T8,T6,T7
- 0315C821 ADDU T9,T8,S5
- 2728000B ADDIU T0,T9,000B
- 01090019 MULTU T0,T1
- 028C6821 ADDU T5,S4,T4
- 00005012 MFLO T2
- 000A5840 SLL T3,T2,0x1 # T3 = 2(@SP+1C * (A2 - @SP+14 + outpos + 11))
- 01AB9021 ADDU S2,T5,T3 # target = @SP+18 + width * 2 + 2(@SP+1C * (A2 - @SP+14 + outpos + 11))
- 320E0001 ANDI T6,S0,0001
- 55C00005 BNEL T6,R0,+5
- 92240000 LBU A0,0000 (S1)
- 92240000 LBU A0,0000 (S1)
- 10000004 BEQ R0,R0,+4
- 00042103 SRA A0,A0,0x4 # pixel = upper nibble
- @801CA290: get pixel from next byte
- 92240000 LBU A0,0000 (S1)
- 26310001 ADDIU S1,S1,0001
- 3084000F ANDI A0,A0,000F
- 0C072875 JAL 801CA1D4 # V0 = color A0 from palette 801D9390
- 00000000 NOP
- 26100001 ADDIU S0,S0,0001
- 26520002 ADDIU S2,S2,0002
- 1613FFF2 BNE S0,S3,-14
- A642FFFE SH V0,FFFE (S2)
- @801CA2B4: per row
- 12C00002 BEQ S6,R0,+2
- 26B50001 ADDIU S5,S5,0001
- 26310001 ADDIU S1,S1,0001
- 16B7FFDF BNE S5,S7,-33 # for i in range(height)
- 00000000 NOP
- @801CA2C8: return
- 8FBF003C LW RA,003C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FBE0038 LW S8,0038 (SP)
- 03E00008 JR RA
- 27BD0040 ADDIU SP,SP,0040
- 801CA2F8 0x3478
- A0850010 SB A1,0010 (A0)
- A0860011 SB A2,0011 (A0)
- A0870012 SB A3,0012 (A0)
- 8FAE0010 LW T6,0010 (SP)
- A08E0013 SB T6,0013 (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801CA314 0x3494
- 948E0014 LHU T6,0014 (A0)
- 94980016 LHU T8,0016 (A0)
- 01C57821 ADDU T7,T6,A1
- 0306C821 ADDU T9,T8,A2
- A48F000A SH T7,000A (A0)
- A499000C SH T9,000C (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801CA334 0x34B4
- A4850014 SH A1,0014 (A0)
- A4860016 SH A2,0016 (A0)
- A4870018 SH A3,0018 (A0)
- 8FAE0010 LW T6,0010 (SP)
- A48E001A SH T6,001A (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801CA350 0x34D0
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF001C SW RA,001C (SP)
- AFA50024 SW A1,0024 (SP)
- AFA60028 SW A2,0028 (SP)
- AFA7002C SW A3,002C (SP)
- 8FAE0024 LW T6,0024 (SP)
- 3C012000 LUI AT,2000
- 00002825 OR A1,R0,R0
- 01C17821 ADDU T7,T6,AT
- AC8F0020 SW T7,0020 (A0)
- 8FB80028 LW T8,0028 (SP)
- 00003025 OR A2,R0,R0
- A4980024 SH T8,0024 (A0)
- 8FB9002C LW T9,002C (SP)
- A4990026 SH T9,0026 (A0)
- 8FA8002C LW T0,002C (SP)
- 8FA70028 LW A3,0028 (SP)
- 2509FFFF ADDIU T1,T0,FFFF
- AFA90010 SW T1,0010 (SP)
- 0C0728CD JAL 801CA334
- 24E7FFFF ADDIU A3,A3,FFFF
- 8FBF001C LW RA,001C (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801CA3B4 0x3534
- 3C012000 LUI AT,2000
- 00A17021 ADDU T6,A1,AT
- AC8E0004 SW T6,0004 (A0)
- A4860008 SH A2,0008 (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801CA3CC 0x354C
- 27BDFFB0 ADDIU SP,SP,FFB0
- AFB00028 SW S0,0028 (SP)
- AFA50054 SW A1,0054 (SP)
- 30A500FF ANDI A1,A1,00FF
- 00808025 OR S0,A0,R0
- AFBF002C SW RA,002C (SP)
- 9202001C LBU V0,001C (S0)
- 27A60048 ADDIU A2,SP,0048
- 27A70044 ADDIU A3,SP,0044
- 10400004 BEQ V0,R0,+4
- 27AF0040 ADDIU T7,SP,0040
- 00027200 SLL T6,V0,0x8
- 1000000A BEQ R0,R0,+10
- 01C52025 OR A0,T6,A1
- 28A10080 SLTI AT,A1,0080
- 14200006 BNE AT,R0,+6
- 00A01025 OR V0,A1,R0
- 28A10099 SLTI AT,A1,0099
- 50200004 BEQL AT,R0,+4
- 00402025 OR A0,V0,R0
- 10000030 BEQ R0,R0,+48
- A205001C SB A1,001C (S0)
- 00402025 OR A0,V0,R0
- A200001C SB R0,001C (S0)
- 8E050004 LW A1,0004 (S0)
- 0C07282C JAL 801CA0B0 # read image for char A0 with width A2, height A3, and alignment SP+10 from IPL to rdram A1
- AFAF0010 SW T7,0010 (SP)
- 14400029 BNE V0,R0,+41
- 8FB90048 LW T9,0048 (SP)
- 9605000A LHU A1,000A (S0)
- 96180018 LHU T8,0018 (S0)
- 00B94021 ADDU T0,A1,T9
- 0308082A SLT AT,T8,T0
- 5020000F BEQL AT,R0,+15
- 8FAC0044 LW T4,0044 (SP)
- 9602000C LHU V0,000C (S0)
- 960A001A LHU T2,001A (S0)
- 96090014 LHU T1,0014 (S0)
- 24420010 ADDIU V0,V0,0010
- 0142082A SLT AT,T2,V0
- 10200005 BEQ AT,R0,+5
- A609000A SH T1,000A (S0)
- 960B0016 LHU T3,0016 (S0)
- 3125FFFF ANDI A1,T1,FFFF
- 10000003 BEQ R0,R0,+3
- A60B000C SH T3,000C (S0)
- A602000C SH V0,000C (S0)
- 9605000A LHU A1,000A (S0)
- 8FAC0044 LW T4,0044 (SP)
- 8FAD0040 LW T5,0040 (SP)
- 8E040004 LW A0,0004 (S0)
- 9606000C LHU A2,000C (S0)
- AFAC0010 SW T4,0010 (SP)
- AFAD0014 SW T5,0014 (SP)
- 8E0E0020 LW T6,0020 (S0)
- 8FA70048 LW A3,0048 (SP)
- AFAE0018 SW T6,0018 (SP)
- 960F0024 LHU T7,0024 (S0)
- 0C07287C JAL 801CA1F0 # directly draw SP+10 rows of ci4 image A0, (A3, A2) and A1 bytes wide, from offset SP+14 to buffer SP+18 with width SP+1C
- AFAF001C SW T7,001C (SP)
- 8FA30048 LW V1,0048 (SP)
- 24010010 ADDIU AT,R0,0010
- 14610003 BNE V1,AT,+3
- 24620002 ADDIU V0,V1,0002
- 10000001 BEQ R0,R0,+1
- 00601025 OR V0,V1,R0
- 9619000A LHU T9,000A (S0)
- 0322C021 ADDU T8,T9,V0
- A618000A SH T8,000A (S0)
- 8FBF002C LW RA,002C (SP)
- 8FB00028 LW S0,0028 (SP)
- 27BD0050 ADDIU SP,SP,0050
- 03E00008 JR RA
- 00000000 NOP
- 801CA4F4 0x3674
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFB00018 SW S0,0018 (SP)
- AFA50024 SW A1,0024 (SP)
- 30A500FF ANDI A1,A1,00FF
- 00808025 OR S0,A0,R0
- AFBF001C SW RA,001C (SP)
- 28A10020 SLTI AT,A1,0020
- 14200008 BNE AT,R0,+8
- 00A01025 OR V0,A1,R0
- 28A10100 SLTI AT,A1,0100
- 10200005 BEQ AT,R0,+5
- 00000000 NOP
- 0C0728F3 JAL 801CA3CC
- 02002025 OR A0,S0,R0
- 1000001F BEQ R0,R0,+31
- 8FBF001C LW RA,001C (SP)
- 1040001C BEQ V0,R0,+28
- 24010009 ADDIU AT,R0,0009
- 1041000D BEQ V0,AT,+13
- 2401000A ADDIU AT,R0,000A
- 10410005 BEQ V0,AT,+5
- 2401000D ADDIU AT,R0,000D
- 50410007 BEQL V0,AT,+7
- 96180014 LHU T8,0014 (S0)
- 10000015 BEQ R0,R0,+21
- 8FBF001C LW RA,001C (SP)
- 960E000C LHU T6,000C (S0)
- 25CF0020 ADDIU T7,T6,0020
- A60F000C SH T7,000C (S0)
- 96180014 LHU T8,0014 (S0)
- 1000000E BEQ R0,R0,+14
- A618000A SH T8,000A (S0)
- 02002025 OR A0,S0,R0
- 0C0728F3 JAL 801CA3CC
- 24050020 ADDIU A1,R0,0020
- 9619000A LHU T9,000A (S0)
- 96080014 LHU T0,0014 (S0)
- 03284823 SUBU T1,T9,T0
- 05210004 BGEZ T1,+4
- 312A00FF ANDI T2,T1,00FF
- 11400002 BEQ T2,R0,+2
- 00000000 NOP
- 254AFF00 ADDIU T2,T2,FF00
- 5540FFF5 BNEL T2,R0,-11
- 02002025 OR A0,S0,R0
- 8FBF001C LW RA,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801CA5BC 0x373C
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB20020 SW S2,0020 (SP)
- 00809025 OR S2,A0,R0
- AFBF0024 SW RA,0024 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 00C70019 MULTU A2,A3
- 00A08025 OR S0,A1,R0
- 00008812 MFLO S1
- 12200007 BEQ S1,R0,+7
- 02402025 OR A0,S2,R0
- 92050000 LBU A1,0000 (S0)
- 0C07293D JAL 801CA4F4
- 26100001 ADDIU S0,S0,0001
- 2631FFFF ADDIU S1,S1,FFFF
- 5620FFFB BNEL S1,R0,-5
- 02402025 OR A0,S2,R0
- 8FBF0024 LW RA,0024 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801CA618 0x3798
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- 00A08825 OR S1,A1,R0
- 00809025 OR S2,A0,R0
- AFBF0024 SW RA,0024 (SP)
- AFB00018 SW S0,0018 (SP)
- 92300000 LBU S0,0000 (S1)
- 12000007 BEQ S0,R0,+7
- 02402025 OR A0,S2,R0
- 320500FF ANDI A1,S0,00FF
- 0C07293D JAL 801CA4F4
- 26310001 ADDIU S1,S1,0001
- 92300000 LBU S0,0000 (S1)
- 5600FFFB BNEL S0,R0,-5
- 02402025 OR A0,S2,R0
- 8FBF0024 LW RA,0024 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 03E00008 JR RA
- 27BD0028 ADDIU SP,SP,0028
- 801CA670 0x37F0
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 00C03825 OR A3,A2,R0
- 8FA40018 LW A0,0018 (SP)
- 0C07296F JAL 801CA5BC
- 24060001 ADDIU A2,R0,0001
- 8FA20018 LW V0,0018 (SP)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CA6A0 0x3820
- 3C0E801D LUI T6,801D
- 25CEA670 ADDIU T6,T6,A670
- AC8E0000 SW T6,0000 (A0)
- A480000A SH R0,000A (A0)
- A480000C SH R0,000C (A0)
- A4800014 SH R0,0014 (A0)
- A4800016 SH R0,0016 (A0)
- A4800018 SH R0,0018 (A0)
- A480001A SH R0,001A (A0)
- AC800010 SW R0,0010 (A0)
- A080001C SB R0,001C (A0)
- AC800004 SW R0,0004 (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801CA6D8 0x3858 NERFed
- AFA40000 SW A0,0000 (SP)
- 03E00008 JR RA
- 00000000 NOP
- 801CA6E4 0x3864 redirect to 800CE810
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C033A04 JAL 800CE810
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CA704 0x3884
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- AFA50024 SW A1,0024 (SP)
- AFA60028 SW A2,0028 (SP)
- AFA7002C SW A3,002C (SP)
- 8FA50024 LW A1,0024 (SP)
- 0C0729B9 JAL 801CA6E4
- 27A60028 ADDIU A2,SP,0028
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CA740 0x38C0 send read or write (A1) leocmd A0 for SP+10 blocks between LBA A2 and rdram A3, notifying queue SP+14
- accepts: A0=p->leocmd, A1=mode (0:read, 1:write), A2=LBA, A3=p->rdram, SP+10=length, SP+14=p->queue or None
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 15C00003 BNE T6,R0,+3
- 00000000 NOP
- 10000017 BEQ R0,R0,+23
- 2402FFFF ADDIU V0,R0,FFFF
- 14A00004 BNE A1,R0,+4
- 24180006 ADDIU T8,R0,0006
- 240F0005 ADDIU T7,R0,0005
- 10000002 BEQ R0,R0,+2
- A08F0000 SB T7,0000 (A0) # leocmd[0] = cmd: read
- A0980000 SB T8,0000 (A0) # leocmd[0] = cmd: write
- 8FA2002C LW V0,002C (SP)
- A0800001 SB R0,0001 (A0) # leocmd[1] = 0
- 24190080 ADDIU T9,R0,0080
- 50400004 BEQL V0,R0,+4
- A0800002 SB R0,0002 (A0)
- 10000002 BEQ R0,R0,+2
- A0990002 SB T9,0002 (A0) # leocmd[2] = 0x80: enable post queue
- A0800002 SB R0,0002 (A0) # leocmd[2] = 0
- A0800003 SB R0,0003 (A0) # leocmd[3] = 0
- AC820008 SW V0,0008 (A0) # leocmd+8 = queue
- AC86000C SW A2,000C (A0) # leocmd+10 = LBA
- 8FA80028 LW T0,0028 (SP)
- AC870014 SW A3,0014 (A0) # leocmd+14 = p->data
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- AC880010 SW T0,0010 (A0) # leocmd+10 = length
- 00001025 OR V0,R0,R0 # return 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CA7D0 0x3950 create and start leo threads with priority (A0, A1) with A3 msgs at A2
- accepts: A0=priority of Leo Int, A1=priority of Leo Work, A2=p->msgs, A3=#msgs
- 27BDFFD0 ADDIU SP,SP,FFD0
- 00A4082A SLT AT,A1,A0
- AFBF001C SW RA,001C (SP)
- AFA40030 SW A0,0030 (SP)
- AFA50034 SW A1,0034 (SP)
- AFA60038 SW A2,0038 (SP)
- 10200003 BEQ AT,R0,+3
- AFA7003C SW A3,003C (SP)
- 10000002 BEQ R0,R0,+2
- 00802825 OR A1,A0,R0
- 8FA50034 LW A1,0034 (SP)
- 2418FFFF ADDIU T8,R0,FFFF
- AFB80028 SW T8,0028 (SP)
- 00002025 OR A0,R0,R0
- 0C001158 JAL 80004560
- AFA50020 SW A1,0020 (SP)
- 8FA50020 LW A1,0020 (SP)
- 0045082A SLT AT,V0,A1
- 10200004 BEQ AT,R0,+4
- 00000000 NOP
- AFA20028 SW V0,0028 (SP)
- 0C001120 JAL 80004480
- 00002025 OR A0,R0,R0
- 0C00144C JAL 80005130 # V0 = True if interrupts disabled; disable interrupts in Status
- 00000000 NOP
- 24190001 ADDIU T9,R0,0001
- 3C01801E LUI AT,801E
- 3C04801E LUI A0,801E
- AFA2002C SW V0,002C (SP)
- AC398D64 SW T9,8D64 (AT)
- 24845DE8 ADDIU A0,A0,5DE8 # queue = 801E5DE8
- 8FA50038 LW A1,0038 (SP)
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 8FA6003C LW A2,003C (SP)
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A55E64 ADDIU A1,A1,5E64 # msgs = 801E5E64
- 24845E18 ADDIU A0,A0,5E18 # queue = 801E5E18
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001 # 1 msg
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A55E60 ADDIU A1,A1,5E60 # msgs = 801E5E60
- 24845E00 ADDIU A0,A0,5E00 # queue = 801E5E00
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1: cart interrupt callback
- 24060001 ADDIU A2,R0,0001 # 1 msg
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A55E68 ADDIU A1,A1,5E68 # msgs = 801E5E68
- 24845E30 ADDIU A0,A0,5E30 # queue = 801E5E30
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060002 ADDIU A2,R0,0002 # 2 msgs
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A55E70 ADDIU A1,A1,5E70 # msgs = 801E5E70
- 24845E48 ADDIU A0,A0,5E48 # queue = 801E5E48
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001 # 1 msg
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A55198 ADDIU A1,A1,5198 # msgs = 801E5E98
- 24845180 ADDIU A0,A0,5180 # queue = 801E5E80
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001 # 1 msg
- 8FA90030 LW T1,0030 (SP)
- 3C08801E LUI T0,801E
- 250859E8 ADDIU T0,T0,59E8
- 3C04801E LUI A0,801E
- 3C06801D LUI A2,801D
- 24C6B640 ADDIU A2,A2,B640 # func = 801CB640: Leo Int thread
- 24845288 ADDIU A0,A0,5288 # thread = 801E5288
- AFA80010 SW T0,0010 (SP) # SP = 801D59E8
- 24050001 ADDIU A1,R0,0001 # ID = 1
- 00003825 OR A3,R0,R0 # arg = 0
- 0C000BC8 JAL 80002F20 # create thread A0, ID A1, calling A2(A3) with stack at SP+10, priority SP+14
- AFA90014 SW T1,0014 (SP) # priority = A0 f/caller
- 3C04801E LUI A0,801E
- 0C0017B0 JAL 80005EC0 # start thread A0
- 24845288 ADDIU A0,A0,5288 # thread = 801E5288: Leo Int
- 8FAB0034 LW T3,0034 (SP)
- 3C0A801E LUI T2,801E
- 254A5DE8 ADDIU T2,T2,5DE8
- 3C04801E LUI A0,801E
- 3C06801D LUI A2,801D
- 24C6AC40 ADDIU A2,A2,AC40 # func = 801CAC40: Leo Work thread
- 24845438 ADDIU A0,A0,5438 # thread = 801E5438
- AFAA0010 SW T2,0010 (SP) # SP = 801E5DE8
- 24050001 ADDIU A1,R0,0001 # ID = 1
- 00003825 OR A3,R0,R0 # arg = 0
- 0C000BC8 JAL 80002F20 # create thread A0, ID A1, calling A2(A3) with stack at SP+10, priority SP+14
- AFAB0014 SW T3,0014 (SP) # priority = A1 f/caller
- 3C04801E LUI A0,801E
- 0C0017B0 JAL 80005EC0 # start thread A0
- 24845438 ADDIU A0,A0,5438 # thread = 801E5438: Leo Work
- 3C05801E LUI A1,801E
- 24A55E00 ADDIU A1,A1,5E00 # queue = 801E5E00: cart interrupt callback
- 24040002 ADDIU A0,R0,0002 # event 2: cart interrupt
- 0C000FEC JAL 80003FB0 # create callback for event A0 on queue A1 with msg A2
- 3C060003 LUI A2,0003
- 3C04801E LUI A0,801E
- 24845E48 ADDIU A0,A0,5E48
- 00002825 OR A1,R0,R0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 00003025 OR A2,R0,R0
- 0C001468 JAL 800051A0 # Status |= A0
- 8FA4002C LW A0,002C (SP)
- 8FAC0028 LW T4,0028 (SP)
- 2401FFFF ADDIU AT,R0,FFFF
- 00002025 OR A0,R0,R0
- 51810004 BEQL T4,AT,+4
- 8FBF001C LW RA,001C (SP)
- 0C001120 JAL 80004480
- 01802825 OR A1,T4,R0
- 8FBF001C LW RA,001C (SP)
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 801CA9A4 0x3B24 send leocmd A0
- accepts: A0=leocmd
- 3C0E801E LUI T6,801E
- 8DCE8D60 LW T6,8D60 (T6)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 11C0000E BEQ T6,R0,+14
- 00803825 OR A3,A0,R0
- 90990002 LBU T9,0002 (A0) # ctrlflgs = leocmd[2]
- 240F0002 ADDIU T7,R0,0002
- 24180025 ADDIU T8,R0,0025
- 33280080 ANDI T0,T9,0080
- A08F0004 SB T7,0004 (A0) # leocmd[4] = 2: check condition
- 11000048 BEQ T0,R0,+72 # skip if not using queue
- A0980005 SB T8,0005 (A0) # leocmd[5] = 0x25: sensecode Waiting on NMI
- @801CA9D8
- 8C840008 LW A0,0008 (A0)
- 24050025 ADDIU A1,R0,0025
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001
- 10000043 BEQ R0,R0,+67 # return
- 8FBF0014 LW RA,0014 (SP)
- @801CA9F0
- 3C04801E LUI A0,801E
- 24845E48 ADDIU A0,A0,5E48
- 00002825 OR A1,R0,R0
- 24060001 ADDIU A2,R0,0001
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- AFA70018 SW A3,0018 (SP)
- 8FA70018 LW A3,0018 (SP)
- 24090008 ADDIU T1,R0,0008
- 24010001 ADDIU AT,R0,0001
- 90E40000 LBU A0,0000 (A3)
- 240A00FF ADDIU T2,R0,00FF
- A0E90004 SB T1,0004 (A3)
- 10810009 BEQ A0,AT,+9
- A0E00005 SB R0,0005 (A3)
- 24010005 ADDIU AT,R0,0005
- 10810019 BEQ A0,AT,+25
- 00E02825 OR A1,A3,R0
- 24010006 ADDIU AT,R0,0006
- 10810016 BEQ A0,AT,+22
- 248FFFFF ADDIU T7,A0,FFFF
- 10000016 BEQ R0,R0,+22
- 2DE1000E SLTIU AT,T7,000E
- 3C0B801E LUI T3,801E
- 256B5E85 ADDIU T3,T3,5E85
- A16A0000 SB T2,0000 (T3)
- 0C0739F8 JAL 801CE7E0 # handle leocmd 1: clear leo queue
- AFA70018 SW A3,0018 (SP)
- 8FA70018 LW A3,0018 (SP)
- 3C0C801E LUI T4,801E
- 258C5E85 ADDIU T4,T4,5E85
- A1800000 SB R0,0000 (T4)
- 90ED0002 LBU T5,0002 (A3)
- 00002825 OR A1,R0,R0
- 24060001 ADDIU A2,R0,0001
- 31AE0080 ANDI T6,T5,0080
- 11C00018 BEQ T6,R0,+24
- A0E00004 SB R0,0004 (A3)
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 8CE40008 LW A0,0008 (A3)
- 10000014 BEQ R0,R0,+20
- 00000000 NOP
- @801CAA94
- 10000007 BEQ R0,R0,+7
- ACE00018 SW R0,0018 (A3)
- @801CAA9C
- 14200005 BNE AT,R0,+5
- 2418001F ADDIU T8,R0,001F
- 24190002 ADDIU T9,R0,0002
- A0F80005 SB T8,0005 (A3)
- 1000000C BEQ R0,R0,+12
- A0F90004 SB T9,0004 (A3)
- @801CAAB4
- 3C04801E LUI A0,801E
- 24845DE8 ADDIU A0,A0,5DE8
- 00003025 OR A2,R0,R0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- AFA70018 SW A3,0018 (SP)
- 10400005 BEQ V0,R0,+5
- 8FA70018 LW A3,0018 (SP)
- 24080023 ADDIU T0,R0,0023
- 24090002 ADDIU T1,R0,0002
- A0E80005 SB T0,0005 (A3)
- A0E90004 SB T1,0004 (A3)
- 3C04801E LUI A0,801E
- 24845E48 ADDIU A0,A0,5E48
- 00002825 OR A1,R0,R0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001
- @801CAAF4
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CAB04 0x3C84
- 3C0F801E LUI T7,801E
- 8DEF8D64 LW T7,8D64 (T7)
- 27BDFFE8 ADDIU SP,SP,FFE8
- 240E0001 ADDIU T6,R0,0001
- 3C01801E LUI AT,801E
- AFBF0014 SW RA,0014 (SP)
- 11E00019 BEQ T7,R0,+25
- AC2E8D60 SW T6,8D60 (AT)
- 3C19801E LUI T9,801E
- 27395E85 ADDIU T9,T9,5E85
- 241800FF ADDIU T8,R0,00FF
- 0C0739F8 JAL 801CE7E0 # handle leocmd 1: clear leo queue
- A3380000 SB T8,0000 (T9)
- 3C08801E LUI T0,801E
- 25085E85 ADDIU T0,T0,5E85
- 3C04801E LUI A0,801E
- A1000000 SB R0,0000 (T0)
- 24845E00 ADDIU A0,A0,5E00 # queue = 801E5E00: cart interrupt callback
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 00003025 OR A2,R0,R0 # read
- 3C04801E LUI A0,801E
- 24845E00 ADDIU A0,A0,5E00 # queue = 801E5E00: cart interrupt callback
- 3C05000A LUI A1,000A
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001 # jam
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- 24A593B0 ADDIU A1,A1,93B0 # msg = 801D93B0
- 24845DE8 ADDIU A0,A0,5DE8 # queue = 801E5DE8
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CAB94 0x3D14 V0 = 0; leo reset
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C073300 JAL 801CCC00 # leo reset
- 00000000 NOP
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 00001025 OR V0,R0,R0
- 03E00008 JR RA
- 00000000 NOP
- 801CABB8 0x3D38 V0 = sensecode; test if drive ready (no phase error, communication error, reset occured)
- 27BDFFD8 ADDIU SP,SP,FFD8
- 3C18801E LUI T8,801E
- AFBF0014 SW RA,0014 (SP)
- 240E000F ADDIU T6,R0,000F
- 240F0080 ADDIU T7,R0,0080
- 27185180 ADDIU T8,T8,5180
- 3C04801E LUI A0,801E
- A3AE001C SB T6,001C (SP) # leocmd[0] = 0xF: readystate
- A3AF001E SB T7,001E (SP) # leocmd[2] = 0x80: enable post queue
- A3A00020 SB R0,0020 (SP)
- AFB80024 SW T8,0024 (SP) # leocmd[8] = 801E5180: queue
- 24845DE8 ADDIU A0,A0,5DE8 # queue = 801E5DE8
- 27A5001C ADDIU A1,SP,001C # msg = leocmd
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 00003025 OR A2,R0,R0 # send
- 10400003 BEQ V0,R0,+3
- 3C04801E LUI A0,801E
- 1000000B BEQ R0,R0,+11
- 24020023 ADDIU V0,R0,0023
- @801CAC04
- 24845180 ADDIU A0,A0,5180 # queue = 801E5180
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001 # wait
- 93B90020 LBU T9,0020 (SP) # status = leocmd[4]
- 93A20021 LBU V0,0021 (SP) # sensecode = leocmd[5]
- 17200003 BNE T9,R0,+3 # return sensecode if status else 0
- 00000000 NOP
- 10000001 BEQ R0,R0,+1
- 00001025 OR V0,R0,R0
- @801CAC2C
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 801CAC40 0x3DC0 Thread: Leo Work thread
- 27BDFFC0 ADDIU SP,SP,FFC0
- AFA40040 SW A0,0040 (SP)
- AFBF003C SW RA,003C (SP)
- 3C04801E LUI A0,801E
- 3C05801E LUI A1,801E
- AFBE0038 SW S8,0038 (SP)
- AFB70034 SW S7,0034 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 24A55EA0 ADDIU A1,A1,5EA0 # msg = 801E5EA0
- 24845EA8 ADDIU A0,A0,5EA8 # queue = 801E5EA8
- 0C001088 JAL 80004220 # create queue A0 with A2 msgs at A1
- 24060001 ADDIU A2,R0,0001 # msgs = 1
- 3C17801E LUI S7,801E
- 3C16801E LUI S6,801E
- 3C14801E LUI S4,801E
- 3C13801E LUI S3,801E
- 3C12801E LUI S2,801E
- 3C11801E LUI S1,801E
- 26315E90 ADDIU S1,S1,5E90
- 26525E86 ADDIU S2,S2,5E86
- 26735E78 ADDIU S3,S3,5E78
- 26945E74 ADDIU S4,S4,5E74
- 26D65438 ADDIU S6,S6,5438
- 26F75E18 ADDIU S7,S7,5E18
- 3C1E0009 LUI S8,0009
- 24150001 ADDIU S5,R0,0001
- @801CACC0: loop
- 0C0007DC JAL 80001F70 # stop thread A0
- 02C02025 OR A0,S6,R0 # thread = 801E5438: Leo Work
- 8E620000 LW V0,0000 (S3) # leocmd = @801E5E78
- 8C4E0014 LW T6,0014 (V0)
- 8C500010 LW S0,0010 (V0)
- AE8E0000 SW T6,0000 (S4) # 801E5E74 = @leocmd+14: p->rdram
- 0C0738D0 JAL 801CE340 # fill 801E5E90 with seek info for LBA A0
- 96240000 LHU A0,0000 (S1) # LBA = 801E5E90[0:2]
- 964F0000 LHU T7,0000 (S2)
- 31F88000 ANDI T8,T7,8000
- 13000005 BEQ T8,R0,+5
- 00000000 NOP
- @801CACF0
- 0C07326F JAL 801CC9BC # send seek read or write (A0) request for current location
- 32A4FFFF ANDI A0,S5,FFFF # write
- 10000004 BEQ R0,R0,+4
- 00402825 OR A1,V0,R0
- @801CAD00
- 0C07326F JAL 801CC9BC # send seek read or write (A0) request for current location
- 00002025 OR A0,R0,R0 # read
- 00402825 OR A1,V0,R0
- @801CAD0C
- 5440001F BNEL V0,R0,+31
- 02E02025 OR A0,S7,R0
- 96590000 LHU T9,0000 (S2)
- 32A200FF ANDI V0,S5,00FF
- 00401825 OR V1,V0,R0
- 33282000 ANDI T0,T9,2000
- 51000004 BEQL T0,R0,+4
- 92220009 LBU V0,0009 (S1)
- 10000008 BEQ R0,R0,+8
- A2350009 SB S5,0009 (S1)
- @801CAD34
- 92220009 LBU V0,0009 (S1)
- 0202082B SLTU AT,S0,V0
- 10200004 BEQ AT,R0,+4
- 00401825 OR V1,V0,R0
- 320200FF ANDI V0,S0,00FF
- 00401825 OR V1,V0,R0
- A2300009 SB S0,0009 (S1)
- @801CAD50
- 96290000 LHU T1,0000 (S1)
- 02038023 SUBU S0,S0,V1
- 01225021 ADDU T2,T1,V0
- 0C072B74 JAL 801CADD0
- A62A0000 SH T2,0000 (S1)
- 14400008 BNE V0,R0,+8
- 00402825 OR A1,V0,R0
- @801CAD6C
- 8E620000 LW V0,0000 (S3) # leocmd = @801E5E78
- 8E8B0000 LW T3,0000 (S4)
- 8C4C0014 LW T4,0014 (V0)
- 016C6823 SUBU T5,T3,T4
- 1600FFD6 BNE S0,R0,-42
- AC4D0018 SW T5,0018 (V0)
- 03C02825 OR A1,S8,R0 # msg = 0x90000
- @801CAD88
- 02E02025 OR A0,S7,R0 # queue = 801E5E18
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 24060001 ADDIU A2,R0,0001 # jam
- 1000FFCA BEQ R0,R0,-54
- 00000000 NOP
- 00000000 NOP
- 8FBF003C LW RA,003C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FBE0038 LW S8,0038 (SP)
- 03E00008 JR RA
- 27BD0040 ADDIU SP,SP,0040
- 801CADD0
- 27BDFF88 ADDIU SP,SP,FF88
- AFB30024 SW S3,0024 (SP)
- 3C13801E LUI S3,801E
- 26735E86 ADDIU S3,S3,5E86
- AFB20020 SW S2,0020 (SP)
- 966F0000 LHU T7,0000 (S3)
- 3C12801E LUI S2,801E
- 26525E90 ADDIU S2,S2,5E90
- 924E0006 LBU T6,0006 (S2) # size of transfering sector = 801E5E90[6]
- 31F82000 ANDI T8,T7,2000
- AFBF003C SW RA,003C (SP)
- AFBE0038 SW S8,0038 (SP)
- AFB70034 SW S7,0034 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 96440004 LHU A0,0004 (S2)
- 13000002 BEQ T8,R0,+2
- A3AE0069 SB T6,0069 (SP)
- 93A40069 LBU A0,0069 (SP)
- 3C03801E LUI V1,801E
- 24635E74 ADDIU V1,V1,5E74
- 8C620000 LW V0,0000 (V1) # rdram buffer base = @801E5E74
- 92480009 LBU T0,0009 (S2)
- 24050002 ADDIU A1,R0,0002
- 0044C821 ADDU T9,V0,A0
- AC790000 SW T9,0000 (V1)
- A7A4006A SH A0,006A (SP)
- 14A80004 BNE A1,T0,+4
- AFA2005C SW V0,005C (SP)
- 03245021 ADDU T2,T9,A0
- AC6A0000 SW T2,0000 (V1)
- A7A4006A SH A0,006A (SP)
- 3C1E801E LUI S8,801E
- 3C16801E LUI S6,801E
- 3C15801E LUI S5,801E
- 0000A025 OR S4,R0,R0
- 26B55EC0 ADDIU S5,S5,5EC0
- 26D66070 ADDIU S6,S6,6070
- 27DE5E7C ADDIU S8,S8,5E7C
- 24170001 ADDIU S7,R0,0001
- 8EAB0000 LW T3,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 24020001 ADDIU V0,R0,0001
- A5620018 SH V0,0018 (T3) # epi[18:1A] = 1: block transfer mode
- 8EAC0000 LW T4,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 240B0003 ADDIU T3,R0,0003
- A580001A SH R0,001A (T4) # epi[1A:1C] = 0: block #0
- 8EAD0000 LW T5,0000 (S5)
- ADA0003C SW R0,003C (T5) # epi+3C = 0: block 1 #C1 errors
- 8EAF0000 LW T7,0000 (S5)
- 93AE0069 LBU T6,0069 (SP)
- ADEE0038 SW T6,0038 (T7) # epi+38 = 801E5E90[6]: block 1 size of transfering sector
- 8EB90000 LW T9,0000 (S5)
- 8FB8005C LW T8,005C (SP)
- AF380030 SW T8,0030 (T9) # epi+30 = @SP+5C: block 1 p->rdram buffer
- 8EA80000 LW T0,0000 (S5)
- AD160034 SW S6,0034 (T0) # epi+34 = 801E6070: block 1 p->C2 buffer
- 96690000 LHU T1,0000 (S3)
- 312A2000 ANDI T2,T1,2000
- 51400006 BEQL T2,R0,+6
- 924D0009 LBU T5,0009 (S2)
- 8EAC0000 LW T4,0000 (S5)
- A2420009 SB V0,0009 (S2)
- 1000001C BEQ R0,R0,+28
- A58B0018 SH T3,0018 (T4)
- 924D0009 LBU T5,0009 (S2)
- 14AD0019 BNE A1,T5,+25
- 00000000 NOP
- 8EAF0000 LW T7,0000 (S5)
- 240E0002 ADDIU T6,R0,0002
- A5EE0018 SH T6,0018 (T7)
- 8EA90000 LW T1,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 01204025 OR T0,T1,R0
- 25390024 ADDIU T9,T1,0024
- 8D01002C LW AT,002C (T0)
- 2508000C ADDIU T0,T0,000C
- 2529000C ADDIU T1,T1,000C
- AD210044 SW AT,0044 (T1)
- 8D010024 LW AT,0024 (T0)
- AD210048 SW AT,0048 (T1)
- 8D010028 LW AT,0028 (T0)
- 1519FFF8 BNE T0,T9,-8 # copy block 1 info to block 2
- AD21004C SW AT,004C (T1)
- 8EAB0000 LW T3,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 3C0A801E LUI T2,801E
- 254A6410 ADDIU T2,T2,6410
- AD6A0058 SW T2,0058 (T3) # epi+58 = 801E6410: block 2 p->C2 buffer
- 8EA40000 LW A0,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 97AD006A LHU T5,006A (SP)
- 8C8C0054 LW T4,0054 (A0)
- 018D7021 ADDU T6,T4,T5
- AC8E0054 SW T6,0054 (A0) # advance block 2 p->rdram by block size
- 0C072CF3 JAL 801CB3CC
- 00000000 NOP
- 144000D7 BNE V0,R0,+215
- 00402025 OR A0,V0,R0
- 966F0000 LHU T7,0000 (S3)
- AFA20074 SW V0,0074 (SP)
- 31F88000 ANDI T8,T7,8000
- 13000005 BEQ T8,R0,+5
- 00000000 NOP
- 0C0737A0 JAL 801CDE80
- 24040001 ADDIU A0,R0,0001
- 10000003 BEQ R0,R0,+3
- 00000000 NOP
- 0C0737A0 JAL 801CDE80
- 00002025 OR A0,R0,R0
- 0C072D0D JAL 801CB434
- 00000000 NOP
- 8FD90000 LW T9,0000 (S8)
- 8EA80000 LW T0,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 3C09801E LUI T1,801E
- AD190024 SW T9,0024 (T0)
- 8EAA0000 LW T2,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 8D295E80 LW T1,5E80 (T1)
- AD490028 SW T1,0028 (T2)
- 966B0000 LHU T3,0000 (S3)
- 316C8000 ANDI T4,T3,8000
- 51800026 BEQL T4,R0,+38
- 966D0000 LHU T5,0000 (S3)
- 8EAE0000 LW T6,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 240D0001 ADDIU T5,R0,0001
- ADCD0014 SW T5,0014 (T6)
- 92580009 LBU T8,0009 (S2)
- 97AF006A LHU T7,006A (SP)
- 8FA4005C LW A0,005C (SP)
- 01F80019 MULTU T7,T8
- 00002812 MFLO A1
- 0C000D10 JAL 80003440 # cache blah blah
- 00000000 NOP
- 3C05801E LUI A1,801E
- 24A55EC8 ADDIU A1,A1,5EC8
- 8EA40000 LW A0,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 0C001030 JAL 800040C0 # send read or write (A2) DMA request A1 using EPI handle A0
- 02E03025 OR A2,S7,R0 # write
- 3C04801E LUI A0,801E
- 24845E30 ADDIU A0,A0,5E30
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 02E03025 OR A2,S7,R0
- 8EA40000 LW A0,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 3C01801E LUI AT,801E
- 8C990024 LW T9,0024 (A0)
- AFD90000 SW T9,0000 (S8)
- 8C880028 LW T0,0028 (A0)
- AC285E80 SW T0,5E80 (AT)
- 9483001A LHU V1,001A (A0)
- 000348C0 SLL T1,V1,0x3
- 01234821 ADDU T1,T1,V1
- 00094880 SLL T1,T1,0x2
- 00895021 ADDU T2,A0,T1
- 8D4B002C LW T3,002C (T2)
- 1560009E BNE T3,R0,+158
- AFAB0074 SW T3,0074 (SP)
- 100000D6 BEQ R0,R0,+214
- 01601025 OR V0,T3,R0
- 966D0000 LHU T5,0000 (S3)
- 3C04801E LUI A0,801E
- 00008825 OR S1,R0,R0
- 31AE4000 ANDI T6,T5,4000
- 11C00009 BEQ T6,R0,+9
- 24845EA8 ADDIU A0,A0,5EA8
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 02E03025 OR A2,S7,R0
- 3C04801E LUI A0,801E
- 24845EA8 ADDIU A0,A0,5EA8
- 00002825 OR A1,R0,R0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 00003025 OR A2,R0,R0
- 8EAF0000 LW T7,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- ADE00014 SW R0,0014 (T7)
- 92590009 LBU T9,0009 (S2)
- 97B8006A LHU T8,006A (SP)
- 8FA4005C LW A0,005C (SP)
- 03190019 MULTU T8,T9
- 00002812 MFLO A1
- 0C001094 JAL 80004250
- 00000000 NOP
- 3C05801E LUI A1,801E
- 24A55EC8 ADDIU A1,A1,5EC8
- 8EA40000 LW A0,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 0C001030 JAL 800040C0 # send read or write (A2) DMA request A1 using EPI handle A0
- 00003025 OR A2,R0,R0 # read
- 92480009 LBU T0,0009 (S2)
- 00008025 OR S0,R0,R0
- 11000079 BEQ T0,R0,+121
- 3C04801E LUI A0,801E
- 24845E30 ADDIU A0,A0,5E30 # queue = 801E5E30
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 02E03025 OR A2,S7,R0
- 8EA40000 LW A0,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 3C01801E LUI AT,801E
- 8C890024 LW T1,0024 (A0)
- 00901821 ADDU V1,A0,S0
- AFC90000 SW T1,0000 (S8)
- 8C8A0028 LW T2,0028 (A0)
- AC2A5E80 SW T2,5E80 (AT)
- 8C6B002C LW T3,002C (V1)
- 1560006E BNE T3,R0,+110
- AFAB0074 SW T3,0074 (SP)
- 966D0000 LHU T5,0000 (S3)
- 31AE2000 ANDI T6,T5,2000
- 51C00004 BEQL T6,R0,+4
- 8C6F003C LW T7,003C (V1)
- 100000A2 BEQ R0,R0,+162
- 00001025 OR V0,R0,R0
- 8C6F003C LW T7,003C (V1)
- 51E00043 BEQL T7,R0,+67
- 92430009 LBU V1,0009 (S2)
- 8C780040 LW T8,0040 (V1)
- 2F010055 SLTIU AT,T8,0055
- 1020003C BEQ AT,R0,+60
- 00000000 NOP
- 92590009 LBU T9,0009 (S2)
- 3C050500 LUI A1,0500
- 34A50514 ORI A1,A1,0514
- 16F90009 BNE S7,T9,+9
- 00000000 NOP
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60074 ADDIU A2,SP,0074
- 8FA40074 LW A0,0074 (SP)
- 000440C0 SLL T0,A0,0x3
- 05010003 BGEZ T0,+3
- 24040004 ADDIU A0,R0,0004
- 10000054 BEQ R0,R0,+84
- AFA40074 SW A0,0074 (SP)
- 16200003 BNE S1,R0,+3
- 93A20069 LBU V0,0069 (SP)
- 10000003 BEQ R0,R0,+3
- 02C02025 OR A0,S6,R0
- 3C04801E LUI A0,801E
- 24846410 ADDIU A0,A0,6410
- 00022880 SLL A1,V0,0x2
- 00855021 ADDU T2,A0,A1
- 0C001094 JAL 80004250
- AFAA0060 SW T2,0060 (SP) # SP+60 = 801E6410[V0]: block 2 C2 buffer
- 8EAB0000 LW T3,0000 (S5) # p->ASIC EPI handle = @801E5EC0
- 3C04801E LUI A0,801E
- 24845EA8 ADDIU A0,A0,5EA8 # queue = 801E5EA8
- 01701821 ADDU V1,T3,S0
- 8C6C003C LW T4,003C (V1)
- 00002825 OR A1,R0,R0
- 02E03025 OR A2,S7,R0
- A3AC0068 SB T4,0068 (SP) # SP+64[4] = epi[block]+3C: #C1 errors
- 8C6D0040 LW T5,0040 (V1)
- A3AD0064 SB T5,0064 (SP) # SP+64[0] = epi[block]+40: error sector 1
- 8C6E0044 LW T6,0044 (V1)
- A3AE0065 SB T6,0065 (SP) # SP+64[1] = epi[block]+44: error sector 2
- 8C6F0048 LW T7,0048 (V1)
- A3AF0066 SB T7,0066 (SP) # SP+64[2] = epi[block]+48: error sector 3
- 8C78004C LW T8,004C (V1)
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- A3B80067 SB T8,0067 (SP) # SP+64[3] = epi[block]+4C: error sector 4
- 96790000 LHU T9,0000 (S3)
- 27AA005C ADDIU T2,SP,005C
- 3C09801E LUI T1,801E
- 37284000 ORI T0,T9,4000
- A6680000 SH T0,0000 (S3)
- 8D4C0004 LW T4,0004 (T2)
- 8D410000 LW AT,0000 (T2)
- 252967B0 ADDIU T1,T1,67B0
- AD2C0004 SW T4,0004 (T1)
- AD210000 SW AT,0000 (T1)
- 8D410008 LW AT,0008 (T2)
- 8D4C000C LW T4,000C (T2)
- 3C04801E LUI A0,801E
- 24845E18 ADDIU A0,A0,5E18 # queue = 801E5E18
- 3C050008 LUI A1,0008 # msg = 0x80000
- 02E03025 OR A2,S7,R0
- AD210008 SW AT,0008 (T1)
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- AD2C000C SW T4,000C (T1)
- 10000014 BEQ R0,R0,+20
- 92430009 LBU V1,0009 (S2)
- 92430009 LBU V1,0009 (S2)
- 001168C0 SLL T5,S1,0x3
- 01B16823 SUBU T5,T5,S1
- 16E3000F BNE S7,V1,+15
- 000D6880 SLL T5,T5,0x2
- 01B16821 ADDU T5,T5,S1
- 000D6940 SLL T5,T5,0x5
- 02CD1021 ADDU V0,S6,T5
- 8C4E000C LW T6,000C (V0)
- 8C4F0000 LW T7,0000 (V0)
- 8C590004 LW T9,0004 (V0)
- 8C4B0008 LW T3,0008 (V0)
- 01CFC025 OR T8,T6,T7
- 03194025 OR T0,T8,T9
- 010B4825 OR T1,T0,T3
- 11200003 BEQ T1,R0,+3
- 24040017 ADDIU A0,R0,0017
- 10000011 BEQ R0,R0,+17
- AFA40074 SW A0,0074 (SP)
- 97A4006A LHU A0,006A (SP)
- 8FAA005C LW T2,005C (SP)
- 924D000A LBU T5,000A (S2)
- 246FFFFF ADDIU T7,V1,FFFF
- 31F800FF ANDI T8,T7,00FF
- 01446021 ADDU T4,T2,A0
- 39AE0001 XORI T6,T5,0001
- 26310001 ADDIU S1,S1,0001
- 26100024 ADDIU S0,S0,0024
- AFAC005C SW T4,005C (SP)
- A24E000A SB T6,000A (S2)
- 1700FF88 BNE T8,R0,-120
- A24F0009 SB T7,0009 (S2)
- 1000003C BEQ R0,R0,+60
- 00001025 OR V0,R0,R0
- AFA40074 SW A0,0074 (SP)
- 8FA40074 LW A0,0074 (SP)
- 24010016 ADDIU AT,R0,0016
- 14810004 BNE A0,AT,+4
- 00000000 NOP
- 0C072D47 JAL 801CB51C
- 00000000 NOP
- 00402025 OR A0,V0,R0
- 0C0732AC JAL 801CCAB0
- AFA40074 SW A0,0074 (SP)
- 1440002F BNE V0,R0,+47
- 3C040003 LUI A0,0003
- 96790000 LHU T9,0000 (S3)
- 3A820040 XORI V0,S4,0040
- 34840001 ORI A0,A0,0001
- 33281000 ANDI T0,T9,1000
- 5500002A BNEL T0,R0,+42
- 8FA20074 LW V0,0074 (SP)
- 10400027 BEQ V0,R0,+39
- 26940001 ADDIU S4,S4,0001
- 328B0007 ANDI T3,S4,0007
- 55600007 BNEL T3,R0,+7
- 8FA40074 LW A0,0074 (SP)
- 0C073208 JAL 801CC820
- 00002825 OR A1,R0,R0
- 00402025 OR A0,V0,R0
- 1440FFED BNE V0,R0,-19
- AFA20074 SW V0,0074 (SP)
- 8FA40074 LW A0,0074 (SP)
- 24010018 ADDIU AT,R0,0018
- 10810006 BEQ A0,AT,+6
- 24010017 ADDIU AT,R0,0017
- 14810009 BNE A0,AT,+9
- AFA40074 SW A0,0074 (SP)
- 24010020 ADDIU AT,R0,0020
- 56810007 BNEL S4,AT,+7
- 96690000 LHU T1,0000 (S3)
- 0C073251 JAL 801CC944
- 00000000 NOP
- 00402025 OR A0,V0,R0
- 1440FFDF BNE V0,R0,-33
- AFA20074 SW V0,0074 (SP)
- 96690000 LHU T1,0000 (S3)
- 312A8000 ANDI T2,T1,8000
- 11400005 BEQ T2,R0,+5
- 00000000 NOP
- 0C07326F JAL 801CC9BC # send seek read or write (A0) request for current location
- 24040001 ADDIU A0,R0,0001 # write
- 10000004 BEQ R0,R0,+4
- 00402025 OR A0,V0,R0
- 0C07326F JAL 801CC9BC # send seek read or write (A0) request for current location
- 00002025 OR A0,R0,R0 # read
- 00402025 OR A0,V0,R0
- 1440FFD2 BNE V0,R0,-46
- 00000000 NOP
- 24050002 ADDIU A1,R0,0002
- 1000FEBA BEQ R0,R0,-326
- AFA40074 SW A0,0074 (SP)
- 8FA20074 LW V0,0074 (SP)
- 8FBF003C LW RA,003C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FBE0038 LW S8,0038 (SP)
- 03E00008 JR RA
- 27BD0078 ADDIU SP,SP,0078
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 3C040001 LUI A0,0001
- 0C0731F4 JAL 801CC7D0
- 34840001 ORI A0,A0,0001
- 1440000F BNE V0,R0,+15
- 00401825 OR V1,V0,R0
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A5050C ORI A1,A1,050C
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 27A60018 ADDIU A2,SP,0018
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- AFA2001C SW V0,001C (SP)
- 8FAE0018 LW T6,0018 (SP)
- 3C046000 LUI A0,6000
- 8FA3001C LW V1,001C (SP)
- 01C47824 AND T7,T6,A0
- 508F0003 BEQL A0,T7,+3
- 8FBF0014 LW RA,0014 (SP)
- 24030018 ADDIU V1,R0,0018
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 00601025 OR V0,V1,R0
- 03E00008 JR RA
- 00000000 NOP
- 3C02801E LUI V0,801E
- 24425E7C ADDIU V0,V0,5E7C
- 8C460000 LW A2,0000 (V0)
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C011000 LUI AT,1000
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 00C17025 OR T6,A2,AT
- 01C03025 OR A2,T6,R0
- 34A50510 ORI A1,A1,0510
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 3C02801E LUI V0,801E
- 24425E7C ADDIU V0,V0,5E7C
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50510 ORI A1,A1,0510
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8C460000 LW A2,0000 (V0)
- 3C03801E LUI V1,801E
- 24635E90 ADDIU V1,V1,5E90
- 906F000A LBU T7,000A (V1)
- 3C02801E LUI V0,801E
- 24425E7C ADDIU V0,V0,5E7C
- 11E00004 BEQ T7,R0,+4
- 3C19801E LUI T9,801E
- 3C18005A LUI T8,005A
- 10000002 BEQ R0,R0,+2
- AC580000 SW T8,0000 (V0)
- AC400000 SW R0,0000 (V0)
- 27395E86 ADDIU T9,T9,5E86
- 97280000 LHU T0,0000 (T9)
- 3C050500 LUI A1,0500
- 34A50510 ORI A1,A1,0510
- 31098000 ANDI T1,T0,8000
- 15200005 BNE T1,R0,+5
- 3C04801E LUI A0,801E
- 8C4A0000 LW T2,0000 (V0)
- 3C014000 LUI AT,4000
- 01415825 OR T3,T2,AT
- AC4B0000 SW T3,0000 (V0)
- 906C0009 LBU T4,0009 (V1)
- 24010002 ADDIU AT,R0,0002
- 15810005 BNE T4,AT,+5
- 00000000 NOP
- 8C4D0000 LW T5,0000 (V0)
- 3C010200 LUI AT,0200
- 01A17025 OR T6,T5,AT
- AC4E0000 SW T6,0000 (V0)
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8C460000 LW A2,0000 (V0)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50514 ORI A1,A1,0514
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A6001C ADDIU A2,SP,001C
- 3C06801E LUI A2,801E
- 8CC65E7C LW A2,5E7C (A2)
- 3C011000 LUI AT,1000
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 00C17025 OR T6,A2,AT
- 01C03025 OR A2,T6,R0
- 34A50510 ORI A1,A1,0510
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 3C06801E LUI A2,801E
- 8CC65E7C LW A2,5E7C (A2)
- 34A50510 ORI A1,A1,0510
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 8FA2001C LW V0,001C (SP)
- 00027940 SLL T7,V0,0x5
- 05E10003 BGEZ T7,+3
- 0002C0C0 SLL T8,V0,0x3
- 10000023 BEQ R0,R0,+35
- 24020031 ADDIU V0,R0,0031
- 07010003 BGEZ T8,+3
- 3C014200 LUI AT,4200
- 1000001F BEQ R0,R0,+31
- 24020004 ADDIU V0,R0,0004
- 0041C824 AND T9,V0,AT
- 1320000B BEQ T9,R0,+11
- 00025800 SLL T3,V0,0x0
- 3C08801E LUI T0,801E
- 25085E86 ADDIU T0,T0,5E86
- 95090000 LHU T1,0000 (T0)
- 312A8000 ANDI T2,T1,8000
- 11400003 BEQ T2,R0,+3
- 00000000 NOP
- 10000014 BEQ R0,R0,+20
- 24020016 ADDIU V0,R0,0016
- 10000012 BEQ R0,R0,+18
- 24020017 ADDIU V0,R0,0017
- 05610003 BGEZ T3,+3
- 3C04801E LUI A0,801E
- 1000000E BEQ R0,R0,+14
- 24020018 ADDIU V0,R0,0018
- 3C050500 LUI A1,0500
- 34A5050C ORI A1,A1,050C
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60018 ADDIU A2,SP,0018
- 8FAC0018 LW T4,0018 (SP)
- 3C026000 LUI V0,6000
- 01826824 AND T5,T4,V0
- 544D0004 BNEL V0,T5,+4
- 24020018 ADDIU V0,R0,0018
- 10000002 BEQ R0,R0,+2
- 24020019 ADDIU V0,R0,0019
- 24020018 ADDIU V0,R0,0018
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CB640 0x47C0 Thread: Leo Interrupt thread
- 27BDFFB8 ADDIU SP,SP,FFB8
- AFBF0024 SW RA,0024 (SP)
- AFB30020 SW S3,0020 (SP)
- AFB2001C SW S2,001C (SP)
- AFB10018 SW S1,0018 (SP)
- AFB00014 SW S0,0014 (SP)
- AFA40048 SW A0,0048 (SP)
- 3C0EA000 LUI T6,A000
- 91CF0010 LBU T7,0010 (T6)
- 3C02801E LUI V0,801E
- 24425E9C ADDIU V0,V0,5E9C
- 3C18A000 LUI T8,A000
- A04F0000 SB T7,0000 (V0) # 801E5E9C[0] = A0000010[0]: disk region
- 93190090 LBU T9,0090 (T8)
- 3C08A000 LUI T0,A000
- 3C0AA000 LUI T2,A000
- A0590001 SB T9,0001 (V0) # 801E5E9C[1] = A0000090[0]: disk region
- 91090110 LBU T1,0110 (T0)
- 3C01801E LUI AT,801E
- 3C0C801E LUI T4,801E
- A0490002 SB T1,0002 (V0) # 801E5E9C[2] = A0000110[0]: disk region
- 914B0190 LBU T3,0190 (T2)
- 258C5E85 ADDIU T4,T4,5E85
- A04B0003 SB T3,0003 (V0) # 801E5E9C[3] = A0000190[0]: disk region
- AC205E80 SW R0,5E80 (AT) # 801E5E80 = 0
- 3C01801E LUI AT,801E
- AC205E7C SW R0,5E7C (AT) # 801E5E7C = 0
- 3C01801E LUI AT,801E
- A0205E84 SB R0,5E84 (AT) # 801E5E84 = 0
- 0C073330 JAL 801CCCC0 # 801E5F74 = 1
- A1800000 SB R0,0000 (T4)
- 0C07303C JAL 801CC0F0 # V0 = p->ASIC EPI handle, created if necessary
- 00000000 NOP
- 3C03801E LUI V1,801E
- 3C07801E LUI A3,801E
- 3C0E801E LUI T6,801E
- 24E75EC0 ADDIU A3,A3,5EC0
- 24635EC8 ADDIU V1,V1,5EC8
- 240D0001 ADDIU T5,R0,0001
- 25CE5E30 ADDIU T6,T6,5E30
- @801CB6E0
- 3C050500 LUI A1,0500
- ACE20000 SW V0,0000 (A3) # 801E5EC0 = p->ASIC EPI handle
- A06D0002 SB T5,0002 (V1)
- AC6E0004 SW T6,0004 (V1)
- 34A50508 ORI A1,A1,0508
- 00402025 OR A0,V0,R0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60044 ADDIU A2,SP,0044
- 8FA30044 LW V1,0044 (SP)
- 3C010680 LUI AT,0680
- 00037A40 SLL T7,V1,0x9
- 05E00005 BLTZ T7,+5
- 0061C024 AND T8,V1,AT
- 13000003 BEQ T8,R0,+3
- 00000000 NOP
- 0C073300 JAL 801CCC00 # leo reset
- 00000000 NOP
- @801CB724
- 3C11801E LUI S1,801E
- 26315E78 ADDIU S1,S1,5E78
- 2413002B ADDIU S3,R0,002B
- 24120002 ADDIU S2,R0,0002
- 3C04801E LUI A0,801E
- 24845DE8 ADDIU A0,A0,5DE8
- 02202825 OR A1,S1,R0 # msg = 801E5E78: p->leocmd
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001
- 8E230000 LW V1,0000 (S1) # leocmd = @801E5E78
- 3C01801E LUI AT,801E
- 3C040001 LUI A0,0001
- 90790000 LBU T9,0000 (V1)
- AC395EE0 SW T9,5EE0 (AT)
- 90680000 LBU T0,0000 (V1)
- 1500000A BNE T0,R0,+10
- 00000000 NOP
- @801CB768
- 0C073300 JAL 801CCC00 # leo reset
- 00000000 NOP
- 3C04801E LUI A0,801E
- 24845E00 ADDIU A0,A0,5E00 # queue = 801E5E00: cart interrupt callback
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 00003025 OR A2,R0,R0 # read
- 1000FFEB BEQ R0,R0,-21
- 00000000 NOP
- @801CB78C
- 0C073123 JAL 801CC48C
- 34840001 ORI A0,A0,0001
- 0C07330C JAL 801CCC30 # V0 = @801E5F74
- 00408025 OR S0,V0,R0
- 00401825 OR V1,V0,R0
- 14400005 BNE V0,R0,+5
- AFA20044 SW V0,0044 (SP)
- 16000017 BNE S0,R0,+23
- 00000000 NOP
- 10000043 BEQ R0,R0,+67
- 00000000 NOP
- @801CB7B8
- 24010003 ADDIU AT,R0,0003
- 12010012 BEQ S0,AT,+18
- 24010025 ADDIU AT,R0,0025
- 12010010 BEQ S0,AT,+16
- 24010029 ADDIU AT,R0,0029
- 1201000E BEQ S0,AT,+14
- 00000000 NOP
- 1213000C BEQ S0,S3,+12
- 24010031 ADDIU AT,R0,0031
- 16010007 BNE S0,AT,+7
- 00000000 NOP
- 0C07330F JAL 801CCC3C # V0 = sensecode for flags @801E5F74
- 00000000 NOP
- 14530006 BNE V0,S3,+6
- 00000000 NOP
- 10000004 BEQ R0,R0,+4
- 02608025 OR S0,S3,R0
- @801CB7FC
- 0C07330F JAL 801CCC3C # V0 = sensecode for flags @801E5F74
- 00000000 NOP
- 00408025 OR S0,V0,R0
- 1213001F BEQ S0,S3,+31
- 2401002F ADDIU AT,R0,002F
- 12010005 BEQ S0,AT,+5
- 24010031 ADDIU AT,R0,0031
- 5201000F BEQL S0,AT,+15
- 8E230000 LW V1,0000 (S1)
- 10000037 BEQ R0,R0,+55
- 8E230000 LW V1,0000 (S1)
- @801CB828
- 8E230000 LW V1,0000 (S1) # leocmd = @801E5E78
- 90640000 LBU A0,0000 (V1)
- 2489FFFE ADDIU T1,A0,FFFE
- 2D21000E SLTIU AT,T1,000E
- 10200032 BEQ AT,R0,+50
- 00094880 SLL T1,T1,0x2
- 3C01801E LUI AT,801E
- 00290821 ADDU AT,AT,T1
- 8C2993C8 LW T1,93C8 (AT)
- 01200008 JR T1
- 00000000 NOP
- @801CB854
- 8E230000 LW V1,0000 (S1) # leocmd = @801E5E78
- 90640000 LBU A0,0000 (V1)
- 248AFFFE ADDIU T2,A0,FFFE
- 2D41000E SLTIU AT,T2,000E
- 10200006 BEQ AT,R0,+6
- 000A5080 SLL T2,T2,0x2
- 3C01801E LUI AT,801E
- 002A0821 ADDU AT,AT,T2
- 8C2A9400 LW T2,9400 (AT)
- 01400008 JR T2
- 00000000 NOP
- @801CB880
- 10000020 BEQ R0,R0,+32
- 2410002A ADDIU S0,R0,002A
- @801CB888
- 8E230000 LW V1,0000 (S1) # leocmd = @801E5E78
- 24010002 ADDIU AT,R0,0002
- 90640000 LBU A0,0000 (V1)
- 1081000A BEQ A0,AT,+10
- 00801025 OR V0,A0,R0
- 2401000D ADDIU AT,R0,000D
- 10410007 BEQ V0,AT,+7
- 2401000E ADDIU AT,R0,000E
- 10410005 BEQ V0,AT,+5
- 2401000F ADDIU AT,R0,000F
- 54410015 BNEL V0,AT,+21
- 24010003 ADDIU AT,R0,0003
- 0C07331C JAL 801CCC70 # 801E5F74 &= ~2
- 00000000 NOP
- 3C0B801E LUI T3,801E
- 916B5E84 LBU T3,5E84 (T3)
- 55600055 BNEL T3,R0,+85
- 8E2A0000 LW T2,0000 (S1)
- 8E2C0000 LW T4,0000 (S1) # leocmd = @801E5E78
- 918D0000 LBU T5,0000 (T4)
- 25AEFFFE ADDIU T6,T5,FFFE
- 2DC1000E SLTIU AT,T6,000E
- 10200014 BEQ AT,R0,+20 # only use on cmds 2 - 0xF
- 000E7080 SLL T6,T6,0x2
- 3C01801E LUI AT,801E
- 002E0821 ADDU AT,AT,T6
- 8C2E9438 LW T6,9438 (AT) # call 801D9438[cmd]()
- 01C00008 JR T6
- 00000000 NOP
- @801CB8FC: test unit ready
- 8E230000 LW V1,0000 (S1) # leocmd = @801E5E78
- 90640000 LBU A0,0000 (V1)
- 24010003 ADDIU AT,R0,0003
- 54810007 BNEL A0,AT,+7
- A0700005 SB S0,0005 (V1)
- 0C0732F0 JAL 801CCBC0
- 00000000 NOP
- 8E2F0000 LW T7,0000 (S1) # leocmd = @801E5E78
- A1E2000C SB V0,000C (T7) # leocmd[C] = call 801CCBC0(): unit ready flags
- 8E230000 LW V1,0000 (S1)
- A0700005 SB S0,0005 (V1)
- 8E380000 LW T8,0000 (S1)
- 10000043 BEQ R0,R0,+67
- A3120004 SB S2,0004 (T8) # leocmd[4] = 2: check condition
- @801CB934: inquiry
- 3C19801E LUI T9,801E
- 8F395E9C LW T9,5E9C (T9) # region = @801E5E9C
- 3C050500 LUI A1,0500
- 34A50540 ORI A1,A1,0540 # addy = 05000540: ASIC Attrib
- 1720000C BNE T9,R0,+12 # skip test on retail units
- 3C04801E LUI A0,801E
- @801CB94C: development drives
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60044 ADDIU A2,SP,0044
- 8FA30044 LW V1,0044 (SP)
- 3C010007 LUI AT,0007
- 00614024 AND T0,V1,AT
- 3C010004 LUI AT,0004
- 11010003 BEQ T0,AT,+3 # if ASIC Attrib device type != 4 (dev), permaloop
- 00000000 NOP
- 1000FFFF BEQ R0,R0,-1
- 00000000 NOP
- @801CB978
- 0C072EAF JAL 801CBABC
- 00000000 NOP
- 10400004 BEQ V0,R0,+4
- 3C05801E LUI A1,801E
- 8E290000 LW T1,0000 (S1) # leocmd = @801E5E78
- 1000002B BEQ R0,R0,+43
- A1320004 SB S2,0004 (T1) # leocmd[4] = 2: check condition
- @801CB994
- 90A551A5 LBU A1,51A5 (A1) # disk type
- 3C04000B LUI A0,000B
- 34840001 ORI A0,A0,0001 # cmd = 0xB0001: submit disk type
- 00055400 SLL T2,A1,0x10
- 0C073208 JAL 801CC820
- 01402825 OR A1,T2,R0
- 8E2B0000 LW T3,0000 (S1) # leocmd = @801E5E78
- 10400004 BEQ V0,R0,+4
- A1620005 SB V0,0005 (T3)
- 8E2C0000 LW T4,0000 (S1)
- 1000001F BEQ R0,R0,+31
- A1920004 SB S2,0004 (T4) # leocmd[4] = 2: check condition
- @801CB9C4
- 3C02801E LUI V0,801E
- 904251A5 LBU V0,51A5 (V0)
- 24010010 ADDIU AT,R0,0010
- 3C0F801E LUI T7,801E
- 304D00F0 ANDI T5,V0,00F0
- 15A10008 BNE T5,AT,+8
- 304E000F ANDI T6,V0,000F
- @801CB9E0
- 3C01801E LUI AT,801E
- A02E5E88 SB T6,5E88 (AT)
- 91EF5E88 LBU T7,5E88 (T7)
- 240900FF ADDIU T1,R0,00FF
- 29E10007 SLTI AT,T7,0007
- 14200007 BNE AT,R0,+7
- 00000000 NOP
- @801CB9FC
- 8E390000 LW T9,0000 (S1) # leocmd = @801E5E78
- 2418000B ADDIU T8,R0,000B
- A3380005 SB T8,0005 (T9) # leocmd[5] = 0xB: incompatible medium installed
- 8E280000 LW T0,0000 (S1)
- 1000000B BEQ R0,R0,+11
- A1120004 SB S2,0004 (T0) # leocmd[4] = 2: check condition
- @801CBA14
- 3C01801E LUI AT,801E
- A0295E84 SB T1,5E84 (AT)
- 8E2A0000 LW T2,0000 (S1) # leocmd = @801E5E78
- 3C19801E LUI T9,801E
- 914B0000 LBU T3,0000 (T2) # cmd = leocmd[0]
- 000B6080 SLL T4,T3,0x2
- 032CC821 ADDU T9,T9,T4
- 8F398D70 LW T9,8D70 (T9) # call 801D8D70[cmd](): leocmd handlers
- 0320F809 JALR RA,T9
- 00000000 NOP
- @801CBA3C
- 8E230000 LW V1,0000 (S1) # leocmd = @801E5E78
- 24060001 ADDIU A2,R0,0001
- 906D0002 LBU T5,0002 (V1)
- 31AE0080 ANDI T6,T5,0080
- 11C00004 BEQ T6,R0,+4 # if enable post queue, send sensecode to queue
- 00000000 NOP
- 8C640008 LW A0,0008 (V1) # queue = @leocmd+8
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 90650005 LBU A1,0005 (V1) # msg = sensecode
- 3C0F801E LUI T7,801E
- 25EF5E85 ADDIU T7,T7,5E85
- 91F80000 LBU T8,0000 (T7)
- 1300FF31 BEQ T8,R0,-207
- 00000000 NOP
- @801CBA74
- 0C0739F8 JAL 801CE7E0 # handle leocmd 1: clear leo queue
- 00000000 NOP
- 1000FF2D BEQ R0,R0,-211
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 8FBF0024 LW RA,0024 (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 03E00008 JR RA
- 27BD0048 ADDIU SP,SP,0048
- 801CBABC
- 27BDFF88 ADDIU SP,SP,FF88
- 3C05801E LUI A1,801E
- 24A55E78 ADDIU A1,A1,5E78
- 8CAE0000 LW T6,0000 (A1) # leocmd = @801E5E78
- AFB70034 SW S7,0034 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB1001C SW S1,001C (SP)
- AFBE0038 SW S8,0038 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB00018 SW S0,0018 (SP)
- 27A3005C ADDIU V1,SP,005C
- 3C110003 LUI S1,0003
- 3C13801E LUI S3,801E
- 3C14801E LUI S4,801E
- 3C15801E LUI S5,801E
- 3C17801E LUI S7,801E
- AFBF003C SW RA,003C (SP)
- ACA30000 SW V1,0000 (A1) # leocmd = @801E5E78
- 00009025 OR S2,R0,R0
- 00008025 OR S0,R0,R0
- 26F78DB0 ADDIU S7,S7,8DB0 # 801D8DB0: leocmd sample for reading one block at system LBA 12
- 26B55E86 ADDIU S5,S5,5E86
- 26945E88 ADDIU S4,S4,5E88
- 267351A0 ADDIU S3,S3,51A0
- 36310001 ORI S1,S1,0001
- 24163000 ADDIU S6,R0,3000
- 241E0017 ADDIU S8,R0,0017
- AFAE0058 SW T6,0058 (SP)
- 8EE10000 LW AT,0000 (S7)
- 8EF80004 LW T8,0004 (S7)
- A2800000 SB R0,0000 (S4)
- AC610000 SW AT,0000 (V1)
- 8EE10008 LW AT,0008 (S7)
- AC780004 SW T8,0004 (V1)
- 8EF8000C LW T8,000C (S7)
- AC610008 SW AT,0008 (V1)
- 8EE10010 LW AT,0010 (S7)
- AC78000C SW T8,000C (V1)
- 8EF80014 LW T8,0014 (S7)
- AC610010 SW AT,0010 (V1)
- 8EE10018 LW AT,0018 (S7)
- AC780014 SW T8,0014 (V1)
- A2600008 SB R0,0008 (S3)
- AC610018 SW AT,0018 (V1)
- A6B60000 SH S6,0000 (S5)
- 16400019 BNE S2,R0,+25
- AFB30070 SW S3,0070 (SP)
- 0C072F57 JAL 801CBD5C # handle read request from base LBA A0
- 00002025 OR A0,R0,R0 # base LBA = 0
- 93A20061 LBU V0,0061 (SP)
- 27A3005C ADDIU V1,SP,005C
- 10400005 BEQ V0,R0,+5
- 00000000 NOP
- 105E000A BEQ V0,S8,+10 # if unrecovered read error, read the disk header
- 27A3005C ADDIU V1,SP,005C
- 10000025 BEQ R0,R0,+37
- 00000000 NOP
- @801CBBAC: LBA 12 is supposed to be unwritten; fatal for retail
- 3C02801E LUI V0,801E
- 8C425E9C LW V0,5E9C (V0) # region = @801E5E9C
- 00008025 OR S0,R0,R0
- 1440FFFF BNE V0,R0,-1 # if retail, permaloop
- 00000000 NOP
- 1000FFDD BEQ R0,R0,-35
- 2652FFFF ADDIU S2,S2,FFFF
- @801CBBC8:
- 3C02801E LUI V0,801E
- 8C425E9C LW V0,5E9C (V0) # region = @801E5E9C
- 00008025 OR S0,R0,R0
- 1040FFFF BEQ V0,R0,-1 # if dev, permaloop
- 00000000 NOP
- 1000FFD6 BEQ R0,R0,-42
- 2652FFFF ADDIU S2,S2,FFFF
- @801CBBE4:
- 32190003 ANDI T9,S0,0003
- 3C02801E LUI V0,801E
- 3C08801E LUI T0,801E
- 8D085E9C LW T0,5E9C (T0) # region = @801E5E9C
- 00591021 ADDU V0,V0,T9
- 904293C0 LBU V0,93C0 (V0) # disk header LBA = 801D93C0[cur]
- 15000003 BNE T0,R0,+3 # if dev, add 2 to the header LBAs
- AFA20068 SW V0,0068 (SP)
- 24420002 ADDIU V0,V0,0002
- AFA20068 SW V0,0068 (SP)
- 0C072F57 JAL 801CBD5C # handle read request from base LBA A0
- 00002025 OR A0,R0,R0 # base LBA = 0
- 93A90060 LBU T1,0060 (SP)
- 15200008 BNE T1,R0,+8
- 3C02801E LUI V0,801E
- 3C03801E LUI V1,801E
- 8C6351A0 LW V1,51A0 (V1)
- 8C425E9C LW V0,5E9C (V0) # region = @801E5E9C
- 1443FFFF BNE V0,V1,-1
- 00000000 NOP
- 10000013 BEQ R0,R0,+19
- 8FAB0058 LW T3,0058 (SP)
- @801CBC3C:
- 0C0732AC JAL 801CCAB0
- 93A40061 LBU A0,0061 (SP)
- 1440000E BNE V0,R0,+14
- 02202025 OR A0,S1,R0
- 2E020040 SLTIU V0,S0,0040
- 38420001 XORI V0,V0,0001
- 1440000A BNE V0,R0,+10
- 26100001 ADDIU S0,S0,0001
- 320A0007 ANDI T2,S0,0007
- 15400005 BNE T2,R0,+5
- 00000000 NOP
- 0C073208 JAL 801CC820
- 00002825 OR A1,R0,R0
- 1440FFF2 BNE V0,R0,-14
- A3A20061 SB V0,0061 (SP)
- 1000FFAF BEQ R0,R0,-81
- 27A3005C ADDIU V1,SP,005C
- @801CBC80:
- 8FAB0058 LW T3,0058 (SP)
- 93A20061 LBU V0,0061 (SP)
- 3C01801E LUI AT,801E
- AC2B5E78 SW T3,5E78 (AT) # 801E5E78 = @SP+58: p->leocmd
- A1620005 SB V0,0005 (T3)
- 8FBF003C LW RA,003C (SP)
- 8FBE0038 LW S8,0038 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 03E00008 JR RA
- 27BD0078 ADDIU SP,SP,0078
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CBCD0 0x4E50 V0 = address, A1 = width, A2 = height, A3 = alignment for IPL font image entry A0
- accepts: A0=LeoGetAAdr2 entry, A1=target for width, A2=target for height, A3=target for alignment
- 3C010001 LUI AT,0001
- 0004C3C2 SRL T8,A0,0xF
- 3421FFFE ORI AT,AT,FFFE
- 03011824 AND V1,T8,AT # offset = (upper HW << 1) & 0x1FFFE
- 3C010007 LUI AT,0007
- 3421EE80 ORI AT,AT,EE80
- 00045202 SRL T2,A0,0x8
- 00611020 ADD V0,V1,AT # V0 = offset + 0x7EE80: IPL hardware address for image
- 314B000F ANDI T3,T2,000F
- 308D00FE ANDI T5,A0,00FE
- 216C0001 ADDI T4,T3,0001
- 000D7600 SLL T6,T5,0x18
- 30990001 ANDI T9,A0,0001
- 00041B02 SRL V1,A0,0xC
- ACCC0000 SW T4,0000 (A2)
- 000E7E43 SRA T7,T6,0x19 # alignment = (entry & 0xFE) >> 1
- 0019C100 SLL T8,T9,0x4
- 3069000F ANDI T1,V1,000F
- ACEF0000 SW T7,0000 (A3)
- 01385025 OR T2,T1,T8 # width = ((entry & 1) << 8) | (entry >> 12)
- 03E00008 JR RA
- ACAA0000 SW T2,0000 (A1)
- 00000000 NOP
- 00000000 NOP
- 801CBD30 0x4EB0 handle leocmd 5: read
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C0E801E LUI T6,801E
- AFBF0014 SW RA,0014 (SP)
- 25CE5E86 ADDIU T6,T6,5E86
- A5C00000 SH R0,0000 (T6) # 801E5E86[0:2] = 0
- 0C072F57 JAL 801CBD5C # handle read request from base LBA A0
- 24040018 ADDIU A0,R0,0018 # base LBA = 24
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CBD5C 0x4EDC handle read request from base LBA A0
- accepts: A0=base LBA
- 27BDFFB0 ADDIU SP,SP,FFB0
- AFB60030 SW S6,0030 (SP)
- 3C16801E LUI S6,801E
- 26D65E78 ADDIU S6,S6,5E78
- 8EC50000 LW A1,0000 (S6) # leocmd = @801E5E78
- AFBF0034 SW RA,0034 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 8CA2000C LW V0,000C (A1)
- 8CA30010 LW V1,0010 (A1)
- 24190020 ADDIU T9,R0,0020
- 00437025 OR T6,V0,V1
- 000E7C02 SRL T7,T6,0x10
- 15E00005 BNE T7,R0,+5
- 00441021 ADDU V0,V0,A0
- 0043C021 ADDU T8,V0,V1
- 2F0110DD SLTIU AT,T8,10DD
- 14200006 BNE AT,R0,+6
- 00000000 NOP
- A0B90005 SB T9,0005 (A1)
- 8EC90000 LW T1,0000 (S6) # leocmd = @801E5E78
- 24080002 ADDIU T0,R0,0002
- 1000003F BEQ R0,R0,+63
- A1280004 SB T0,0004 (T1)
- 14600008 BNE V1,R0,+8
- 3C10801E LUI S0,801E
- 2C4110DC SLTIU AT,V0,10DC
- 5020FFF8 BEQL AT,R0,-8
- A0B90005 SB T9,0005 (A1)
- A0A00005 SB R0,0005 (A1)
- 8ECA0000 LW T2,0000 (S6) # leocmd = @801E5E78
- 10000036 BEQ R0,R0,+54
- A1400004 SB R0,0004 (T2)
- 3C01801E LUI AT,801E
- 26105E86 ADDIU S0,S0,5E86
- A4225E90 SH V0,5E90 (AT)
- 960B0000 LHU T3,0000 (S0)
- 3C15801E LUI S5,801E
- 26B55EA8 ADDIU S5,S5,5EA8
- 316C3FFF ANDI T4,T3,3FFF
- A60C0000 SH T4,0000 (S0)
- 02A02025 OR A0,S5,R0
- 00002825 OR A1,R0,R0
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 00003025 OR A2,R0,R0
- 3C04801E LUI A0,801E
- 0C0017B0 JAL 80005EC0 # start thread A0
- 24845438 ADDIU A0,A0,5438 # thread = 801E5438: Leo Work
- 3C11801E LUI S1,801E
- 26315E18 ADDIU S1,S1,5E18
- 2414BFFF ADDIU S4,R0,BFFF
- 3C130008 LUI S3,0008
- 27B20044 ADDIU S2,SP,0044
- 02202025 OR A0,S1,R0 # queue = 801E5E18
- 02402825 OR A1,S2,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001 # wait
- 8FA20044 LW V0,0044 (SP) # msg f/ 801E5E18
- 10530005 BEQ V0,S3,+5
- 3C010009 LUI AT,0009
- 50410016 BEQL V0,AT,+22
- 8EC90000 LW T1,0000 (S6)
- 1000000D BEQ R0,R0,+13
- 8FAF0044 LW T7,0044 (SP)
- @: msg == 0x80000
- 0C073364 JAL 801CCD90
- 00000000 NOP
- 960D0000 LHU T5,0000 (S0)
- 02A02025 OR A0,S5,R0
- 00002825 OR A1,R0,R0
- 01B47024 AND T6,T5,S4
- A60E0000 SH T6,0000 (S0)
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 00003025 OR A2,R0,R0
- 1000FFEC BEQ R0,R0,-20
- 02202025 OR A0,S1,R0
- @: all other msgs
- 8FAF0044 LW T7,0044 (SP)
- 8ED80000 LW T8,0000 (S6) # leocmd = @801E5E78
- 24190002 ADDIU T9,R0,0002
- A30F0005 SB T7,0005 (T8)
- 8EC80000 LW T0,0000 (S6)
- 10000005 BEQ R0,R0,+5
- A1190004 SB T9,0004 (T0)
- @: msg == 0x90000
- 8EC90000 LW T1,0000 (S6) # leocmd = @801E5E78
- A1200005 SB R0,0005 (T1)
- 8ECA0000 LW T2,0000 (S6)
- A1400004 SB R0,0004 (T2)
- 8FBF0034 LW RA,0034 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 03E00008 JR RA
- 27BD0050 ADDIU SP,SP,0050
- 00000000 NOP
- 801CBEF0 0x5070 V0 = sensecode; A2 = bytelength of A1 LBAs starting at A0
- accepts: A0=LBA, A1=#blocks, A2=p->target
- 27BDFFC0 ADDIU SP,SP,FFC0
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 00808025 OR S0,A0,R0
- 00A08825 OR S1,A1,R0
- AFBF0034 SW RA,0034 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- 15C00003 BNE T6,R0,+3
- AFA60048 SW A2,0048 (SP)
- 10000039 BEQ R0,R0,+57
- 2402FFFF ADDIU V0,R0,FFFF
- 00009825 OR S3,R0,R0
- 24050001 ADDIU A1,R0,0001
- 24020001 ADDIU V0,R0,0001
- 12200031 BEQ S1,R0,+49
- 26100018 ADDIU S0,S0,0018
- 3C16801E LUI S6,801E
- 3C15801E LUI S5,801E
- 3C14801E LUI S4,801E
- 3C12801E LUI S2,801E
- 26525E88 ADDIU S2,S2,5E88
- 26949518 ADDIU S4,S4,9518
- 26B59618 ADDIU S5,S5,9618
- 26D69504 ADDIU S6,S6,9504
- 8FA40038 LW A0,0038 (SP)
- 14400009 BNE V0,R0,+9
- 00000000 NOP
- 924F0000 LBU T7,0000 (S2)
- 00054040 SLL T0,A1,0x1
- 000FC140 SLL T8,T7,0x5
- 0298C821 ADDU T9,S4,T8
- 03284821 ADDU T1,T9,T0
- 952A0000 LHU T2,0000 (T1)
- 560A0013 BNEL S0,T2,+19
- 2631FFFF ADDIU S1,S1,FFFF
- 0C07394D JAL 801CE534 # vzone for LBA A0
- 02002025 OR A0,S0,R0
- 924B0000 LBU T3,0000 (S2)
- 3045FFFF ANDI A1,V0,FFFF
- 000B6100 SLL T4,T3,0x4
- 02AC6821 ADDU T5,S5,T4
- 01A27021 ADDU T6,T5,V0
- 91C30000 LBU V1,0000 (T6)
- 28610008 SLTI AT,V1,0008
- 14200004 BNE AT,R0,+4
- 00602025 OR A0,V1,R0
- 2483FFF9 ADDIU V1,A0,FFF9
- 306FFFFF ANDI T7,V1,FFFF
- 01E01825 OR V1,T7,R0
- 0003C040 SLL T8,V1,0x1
- 02D8C821 ADDU T9,S6,T8
- 97240000 LHU A0,0000 (T9)
- 2631FFFF ADDIU S1,S1,FFFF
- 02649821 ADDU S3,S3,A0
- 12200006 BEQ S1,R0,+6
- 26100001 ADDIU S0,S0,0001
- 2E0110DC SLTIU AT,S0,10DC
- 14200003 BNE AT,R0,+3
- 00000000 NOP
- 10000007 BEQ R0,R0,+7
- 24020020 ADDIU V0,R0,0020
- 1620FFDB BNE S1,R0,-37
- 00001025 OR V0,R0,R0
- AFA40038 SW A0,0038 (SP)
- 8FA80048 LW T0,0048 (SP)
- 00001025 OR V0,R0,R0
- AD130000 SW S3,0000 (T0)
- 8FBF0034 LW RA,0034 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 03E00008 JR RA
- 27BD0040 ADDIU SP,SP,0040
- 00000000 NOP
- 801CC040 0x51C0 handle leocmd 2: inquiry
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50540 ORI A1,A1,0540 # hardware = 05000540: Leo Attrib
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A6001C ADDIU A2,SP,001C
- 3C04001B LUI A0,001B # cmd = 0x1B0000: disk inquiry
- 0C073208 JAL 801CC820
- 00002825 OR A1,R0,R0
- 1440000D BNE V0,R0,+13
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500 # hardware = 05000500: Leo Data
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60018 ADDIU A2,SP,0018
- 8FAE0018 LW T6,0018 (SP) # result of disk inquiry command
- 8FB8001C LW T8,001C (SP) # result of Leo Attrib read
- 3C010010 LUI AT,0010
- 000E7BC0 SLL T7,T6,0xF
- 05E10002 BGEZ T7,+2
- 0301C825 OR T9,T8,AT
- AFB9001C SW T9,001C (SP) # if (Leo Attrib & 0x10000), Leo Attrib |= 0x100000
- 3C02801E LUI V0,801E
- 24425E78 ADDIU V0,V0,5E78
- 8C480000 LW T0,0000 (V0) # leocmd = @801E5E78
- 240C0001 ADDIU T4,R0,0001
- A100000C SB R0,000C (T0) # leocmd[C] = 0: device type
- 8FA9001C LW T1,001C (SP)
- 8C4B0000 LW T3,0000 (V0)
- 00095402 SRL T2,T1,0x10
- A16A000D SB T2,000D (T3) # leocmd[D] = (Leo Attrib >> 16): hardware version
- 8C4D0000 LW T5,0000 (V0)
- A1AC000E SB T4,000E (T5) # leocmd[E] = 1: #devices
- 8C4E0000 LW T6,0000 (V0)
- A1C0000F SB R0,000F (T6) # leocmd[F] = 0: Leo software version < 2.0H
- 8C4F0000 LW T7,0000 (V0)
- A1E00004 SB R0,0004 (T7) # leocmd[4] = 0: clear status
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801CC0F0 0x5270 V0 = p->ASIC EPI handle, created if necessary
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFB00018 SW S0,0018 (SP)
- 3C10801E LUI S0,801E
- 26105EF0 ADDIU S0,S0,5EF0
- AFBF001C SW RA,001C (SP)
- 24020002 ADDIU V0,R0,0002
- 24030006 ADDIU V1,R0,0006
- 3C0EA500 LUI T6,A500
- 240F0003 ADDIU T7,R0,0003
- 24180001 ADDIU T8,R0,0001
- 3C04801E LUI A0,801E
- A2020004 SB V0,0004 (S0)
- AE0E000C SW T6,000C (S0)
- A20F0005 SB T7,0005 (S0)
- A2030008 SB V1,0008 (S0)
- A2030006 SB V1,0006 (S0)
- A2020007 SB V0,0007 (S0)
- A2180009 SB T8,0009 (S0)
- AE000010 SW R0,0010 (S0)
- 24845F04 ADDIU A0,A0,5F04
- 0C000BA0 JAL 80002E80 # initialize A1 bytes at A0
- 24050060 ADDIU A1,R0,0060
- 0C00144C JAL 80005130 # V0 = True if interrupts disabled; disable interrupts in Status
- 00000000 NOP
- 3C038000 LUI V1,8000
- 2463638C ADDIU V1,V1,638C
- 8C790000 LW T9,0000 (V1)
- AC700000 SW S0,0000 (V1)
- 3C01801E LUI AT,801E
- AE190000 SW T9,0000 (S0)
- AC305F64 SW S0,5F64 (AT)
- 0C001468 JAL 800051A0 # Status |= A0
- 00402025 OR A0,V0,R0
- 8FBF001C LW RA,001C (SP)
- 02001025 OR V0,S0,R0
- 8FB00018 LW S0,0018 (SP)
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 00000000 NOP
- 00000000 NOP
- 801CC190 0x5310 read disk ID to A1 using leocmd A0, informing queue A2; return 0 if okay, -1 if leo not started
- accepts: A0=p->leocmd, A1=p->target, A2=p->queue or None
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 15C00003 BNE T6,R0,+3
- 240F000C ADDIU T7,R0,000C
- 1000000D BEQ R0,R0,+13
- 2402FFFF ADDIU V0,R0,FFFF
- A08F0000 SB T7,0000 (A0) # leocmd[0:4] = (0xC, 0, 0, 0)
- A0800001 SB R0,0001 (A0)
- A0800002 SB R0,0002 (A0)
- A0800003 SB R0,0003 (A0)
- 10C00004 BEQ A2,R0,+4 # if queue is None, skip
- AC85000C SW A1,000C (A0) # leocmd+C = A1: p->target
- @
- 34190080 ORI T9,R0,0080
- A0990002 SB T9,0002 (A0) # leocmd[2] = 0x80: enable post queue
- AC860008 SW A2,0008 (A0) # leocmd+8 = A2: p->queue
- @
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- 00000000 NOP
- 00001025 OR V0,R0,R0 # return 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC1F0 0x5370 handle leocmd 0xC: read diskID
- 27BDFF98 ADDIU SP,SP,FF98
- AFBE0038 SW S8,0038 (SP)
- 3C1E801E LUI S8,801E
- 27DE5E78 ADDIU S8,S8,5E78
- AFB70034 SW S7,0034 (SP)
- AFB5002C SW S5,002C (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 27B2004C ADDIU S2,SP,004C
- AFB60030 SW S6,0030 (SP)
- AFB40028 SW S4,0028 (SP)
- 8FD00000 LW S0,0000 (S8) # leocmd = @801E5E78
- 3C11801E LUI S1,801E
- 3C13801E LUI S3,801E
- 3C15801E LUI S5,801E
- 3C17801E LUI S7,801E
- AFBF003C SW RA,003C (SP)
- AFD20000 SW S2,0000 (S8) # 801E5E78 = SP+4C: p->leocmd
- 26F79472 ADDIU S7,S7,9472 # 801D9472: end of diskID LBA list
- 26B58DD0 ADDIU S5,S5,8DD0 # 801D8DD0: leocmd sample for reading one block at system LBA 14 (disk ID)
- 26735E86 ADDIU S3,S3,5E86
- 26319470 ADDIU S1,S1,9470 # 801D9470: diskID LBA list
- 24142000 ADDIU S4,R0,2000
- 24160017 ADDIU S6,R0,0017
- @801CC258
- 8EA10000 LW AT,0000 (S5)
- 8EAF0004 LW T7,0004 (S5)
- 92380000 LBU T8,0000 (S1)
- AE410000 SW AT,0000 (S2) # copy base diskID sample to temp leocmd at SP+4C
- 8EA10008 LW AT,0008 (S5)
- AE4F0004 SW T7,0004 (S2)
- 8EAF000C LW T7,000C (S5)
- AE410008 SW AT,0008 (S2)
- 8EA10010 LW AT,0010 (S5)
- AE4F000C SW T7,000C (S2)
- 8EAF0014 LW T7,0014 (S5)
- AE410010 SW AT,0010 (S2)
- 8EA10018 LW AT,0018 (S5)
- AE4F0014 SW T7,0014 (S2)
- A6740000 SH S4,0000 (S3)
- AE410018 SW AT,0018 (S2)
- 00002025 OR A0,R0,R0 # base LBA = 0
- 0C072F57 JAL 801CBD5C # handle read request from base LBA A0
- AFB80058 SW T8,0058 (SP) # diskID = 801D9470[cur]
- 93B90051 LBU T9,0051 (SP)
- 26310001 ADDIU S1,S1,0001
- 0237082B SLTU AT,S1,S7
- 12D90003 BEQ S6,T9,+3 # if sensecode == unrecovered read error, try next LBA
- 00000000 NOP
- 10000004 BEQ R0,R0,+4
- AFD00000 SW S0,0000 (S8)
- @801CC2C0: loop through other entries until one readable
- 5420FFE6 BNEL AT,R0,-26
- 8EA10000 LW AT,0000 (S5)
- @801CC2C8
- AFD00000 SW S0,0000 (S8) # 801E5E78 = orginal p->leocmd
- 3C02801E LUI V0,801E
- 3C03801E LUI V1,801E
- 8E10000C LW S0,000C (S0) # target for diskID = @leocmd+C
- 24635FA0 ADDIU V1,V1,5FA0
- 24425F80 ADDIU V0,V0,5F80
- 8C490000 LW T1,0000 (V0)
- 24420010 ADDIU V0,V0,0010
- 26100010 ADDIU S0,S0,0010
- AE09FFF0 SW T1,FFF0 (S0)
- 8C4AFFF4 LW T2,FFF4 (V0)
- AE0AFFF4 SW T2,FFF4 (S0)
- 8C4BFFF8 LW T3,FFF8 (V0)
- AE0BFFF8 SW T3,FFF8 (S0)
- 8C4CFFFC LW T4,FFFC (V0)
- 1443FFF6 BNE V0,V1,-10 # copy diskID from 801E5F80 to target
- AE0CFFFC SW T4,FFFC (S0)
- @801CC30C
- 93AD0051 LBU T5,0051 (SP)
- 8FCE0000 LW T6,0000 (S8) # leocmd = @801E5E78
- A1CD0005 SB T5,0005 (T6) # leocmd[5] = sensecode
- 8FD80000 LW T8,0000 (S8)
- 93AF0050 LBU T7,0050 (SP)
- A30F0004 SB T7,0004 (T8) # leocmd[4] = status
- 8FD90000 LW T9,0000 (S8)
- 93280004 LBU T0,0004 (T9)
- 15000005 BNE T0,R0,+5 # 801E5F74 |= 1 if status else 801E5F74 &= ~1
- 00000000 NOP
- @801CC334
- 0C073323 JAL 801CCC8C # 801E5F74 &= ~1; diskID read successfully
- 00000000 NOP
- 10000004 BEQ R0,R0,+4
- 8FBF003C LW RA,003C (SP)
- @801CC344
- 0C07332A JAL 801CCCA8 # 801E5F74 |= 1; status error during diskID read
- 00000000 NOP
- 8FBF003C LW RA,003C (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 8FB70034 LW S7,0034 (SP)
- 8FBE0038 LW S8,0038 (SP)
- 03E00008 JR RA
- 27BD0068 ADDIU SP,SP,0068
- 00000000 NOP
- 801CC380
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 3C06801E LUI A2,801E
- 24C65F70 ADDIU A2,A2,5F70 # target = 801E5F70
- 34A50508 ORI A1,A1,0508 # hardware = 05000508: Leo Status
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 3C0E801E LUI T6,801E
- 8DCE5F70 LW T6,5F70 (T6)
- 3C030100 LUI V1,0100
- 3C0101C3 LUI AT,01C3
- 3421FFFF ORI AT,AT,FFFF
- 01C31026 XOR V0,T6,V1
- 00417824 AND T7,V0,AT
- 11E0002D BEQ T7,R0,+45
- 3C0101C1 LUI AT,01C1
- 3421FFFF ORI AT,AT,FFFF
- 0041C024 AND T8,V0,AT
- 13000003 BEQ T8,R0,+3
- 3059FFFF ANDI T9,V0,FFFF
- 3C01801E LUI AT,801E
- A0205E84 SB R0,5E84 (AT)
- 13200003 BEQ T9,R0,+3
- 3C0100C0 LUI AT,00C0
- 10000024 BEQ R0,R0,+36
- 24020029 ADDIU V0,R0,0029
- 00414024 AND T0,V0,AT
- 3C010080 LUI AT,0080
- 15010003 BNE T0,AT,+3
- 00024A40 SLL T1,V0,0x9
- 1000001E BEQ R0,R0,+30
- 24020003 ADDIU V0,R0,0003
- 05230009 BGEZL T1,+9
- 00436024 AND T4,V0,V1
- 3C03801E LUI V1,801E
- 24635F74 ADDIU V1,V1,5F74
- 8C6A0000 LW T2,0000 (V1)
- 2402002B ADDIU V0,R0,002B
- 354B0002 ORI T3,T2,0002
- 10000015 BEQ R0,R0,+21
- AC6B0000 SW T3,0000 (V1)
- 00436024 AND T4,V0,V1
- 51800004 BEQL T4,R0,+4
- 00026BC0 SLL T5,V0,0xF
- 10000010 BEQ R0,R0,+16
- 24020031 ADDIU V0,R0,0031
- 00026BC0 SLL T5,V0,0xF
- 05A10007 BGEZ T5,+7
- 3C03801E LUI V1,801E
- 24635F74 ADDIU V1,V1,5F74
- 8C6E0000 LW T6,0000 (V1)
- 2402002F ADDIU V0,R0,002F
- 35CF0001 ORI T7,T6,0001
- 10000007 BEQ R0,R0,+7
- AC6F0000 SW T7,0000 (V1)
- 0002C380 SLL T8,V0,0xE
- 07030004 BGEZL T8,+4
- 00001025 OR V0,R0,R0
- 10000002 BEQ R0,R0,+2
- 24020015 ADDIU V0,R0,0015
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC48C
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 0C0730E0 JAL 801CC380
- AFA40020 SW A0,0020 (SP)
- 24010015 ADDIU AT,R0,0015
- 8FA40020 LW A0,0020 (SP)
- 1041002C BEQ V0,AT,+44
- AFA2001C SW V0,001C (SP)
- @801CC4AC
- 2401002B ADDIU AT,R0,002B
- 1041000D BEQ V0,AT,+13
- 3C0E801E LUI T6,801E
- 2401002F ADDIU AT,R0,002F
- 10410005 BEQ V0,AT,+5
- 24010031 ADDIU AT,R0,0031
- 10410022 BEQ V0,AT,+34
- 30980001 ANDI T8,A0,0001
- 10000025 BEQ R0,R0,+37
- 93A2001F LBU V0,001F (SP)
- 3C010008 LUI AT,0008
- 14810003 BNE A0,AT,+3
- 00000000 NOP
- 10000020 BEQ R0,R0,+32
- 00001025 OR V0,R0,R0
- @801CC4E8
- 8DCE5F70 LW T6,5F70 (T6)
- 3C010009 LUI AT,0009
- 000E7A00 SLL T7,T6,0x8
- 05E2001B BLTZL T7,+27
- 93A2001F LBU V0,001F (SP)
- 14810003 BNE A0,AT,+3
- 00000000 NOP
- 10000017 BEQ R0,R0,+23
- 00001025 OR V0,R0,R0
- @801CC50C
- 0C073297 JAL 801CCA5C
- 00002025 OR A0,R0,R0
- 10400003 BEQ V0,R0,+3
- 3C04801E LUI A0,801E
- 10000011 BEQ R0,R0,+17
- 24020025 ADDIU V0,R0,0025
- @801CC524
- 3C050500 LUI A1,0500
- 34A50508 ORI A1,A1,0508
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 3C060009 LUI A2,0009
- 0C073297 JAL 801CCA5C
- 24040001 ADDIU A0,R0,0001
- 50400008 BEQL V0,R0,+8
- 93A2001F LBU V0,001F (SP)
- 10000006 BEQ R0,R0,+6
- 24020025 ADDIU V0,R0,0025
- @801CC550
- 57000004 BNEL T8,R0,+4
- 93A2001F LBU V0,001F (SP)
- 10000002 BEQ R0,R0,+2
- 00001025 OR V0,R0,R0
- 93A2001F LBU V0,001F (SP)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801CC574
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF0014 SW RA,0014 (SP)
- 0C0730E0 JAL 801CC380
- AFA40028 SW A0,0028 (SP)
- 24010015 ADDIU AT,R0,0015
- 10410028 BEQ V0,AT,+40
- 00401825 OR V1,V0,R0
- 2401002B ADDIU AT,R0,002B
- 10410008 BEQ V0,AT,+8
- 3C0E801E LUI T6,801E
- 2401002F ADDIU AT,R0,002F
- 10410005 BEQ V0,AT,+5
- 24010031 ADDIU AT,R0,0031
- 1041001B BEQ V0,AT,+27
- 8FB80028 LW T8,0028 (SP)
- 10000059 BEQ R0,R0,+89
- 306200FF ANDI V0,V1,00FF
- 8DCE5F70 LW T6,5F70 (T6)
- 00002025 OR A0,R0,R0
- 000E7A00 SLL T7,T6,0x8
- 05E20054 BLTZL T7,+84
- 306200FF ANDI V0,V1,00FF
- 0C073297 JAL 801CCA5C
- AFA30020 SW V1,0020 (SP)
- 10400003 BEQ V0,R0,+3
- 8FA30020 LW V1,0020 (SP)
- 1000004E BEQ R0,R0,+78
- 24020025 ADDIU V0,R0,0025
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50508 ORI A1,A1,0508
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 3C060009 LUI A2,0009
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- AFA30020 SW V1,0020 (SP)
- 0C073297 JAL 801CCA5C
- 24040001 ADDIU A0,R0,0001
- 10400042 BEQ V0,R0,+66
- 8FA30020 LW V1,0020 (SP)
- 10000041 BEQ R0,R0,+65
- 24020025 ADDIU V0,R0,0025
- 33190001 ANDI T9,T8,0001
- 5720003E BNEL T9,R0,+62
- 306200FF ANDI V0,V1,00FF
- 1000003C BEQ R0,R0,+60
- 00001025 OR V0,R0,R0
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 00003025 OR A2,R0,R0
- 0C073297 JAL 801CCA5C
- 00002025 OR A0,R0,R0
- 10400003 BEQ V0,R0,+3
- 3C04801E LUI A0,801E
- 10000030 BEQ R0,R0,+48
- 24020025 ADDIU V0,R0,0025
- 3C050500 LUI A1,0500
- 34A50508 ORI A1,A1,0508
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 3C06000C LUI A2,000C
- 0C073297 JAL 801CCA5C
- 24040001 ADDIU A0,R0,0001
- 10400003 BEQ V0,R0,+3
- 3C04801E LUI A0,801E
- 10000025 BEQ R0,R0,+37
- 24020025 ADDIU V0,R0,0025
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60024 ADDIU A2,SP,0024
- 0C073123 JAL 801CC48C
- 3C04000C LUI A0,000C
- 50400004 BEQL V0,R0,+4
- 8FA20024 LW V0,0024 (SP)
- 1000001A BEQ R0,R0,+26
- 304200FF ANDI V0,V0,00FF
- 8FA20024 LW V0,0024 (SP)
- 000243C0 SLL T0,V0,0xF
- 05010003 BGEZ T0,+3
- 00024B80 SLL T1,V0,0xE
- 10000014 BEQ R0,R0,+20
- 24020002 ADDIU V0,R0,0002
- 05210003 BGEZ T1,+3
- 00025340 SLL T2,V0,0xD
- 10000010 BEQ R0,R0,+16
- 24020018 ADDIU V0,R0,0018
- 05410003 BGEZ T2,+3
- 00025B00 SLL T3,V0,0xC
- 1000000C BEQ R0,R0,+12
- 24020001 ADDIU V0,R0,0001
- 05610003 BGEZ T3,+3
- 00026280 SLL T4,V0,0xA
- 10000008 BEQ R0,R0,+8
- 24020015 ADDIU V0,R0,0015
- 05810003 BGEZ T4,+3
- 00000000 NOP
- 10000004 BEQ R0,R0,+4
- 2402000B ADDIU V0,R0,000B
- 10000002 BEQ R0,R0,+2
- 24020029 ADDIU V0,R0,0029
- 306200FF ANDI V0,V1,00FF
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 801CC728 0x58A8
- accepts: A0=ASIC command, A1=data
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 0C073123 JAL 801CC48C
- AFA5001C SW A1,001C (SP)
- 10400008 BEQ V0,R0,+8
- 304300FF ANDI V1,V0,00FF
- 3C04801E LUI A0,801E
- 24845E78 ADDIU A0,A0,5E78
- 8C8E0000 LW T6,0000 (A0) # leocmd = @801E5E78
- A1C30005 SB V1,0005 (T6)
- 8C8F0000 LW T7,0000 (A0)
- 10000019 BEQ R0,R0,+25
- 91E20005 LBU V0,0005 (T7)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500 # hardware = 05000500
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8FA6001C LW A2,001C (SP) # value = A1 f/caller
- 0C073297 JAL 801CCA5C
- 00002025 OR A0,R0,R0
- 10400008 BEQ V0,R0,+8
- 3C04801E LUI A0,801E
- 24845E78 ADDIU A0,A0,5E78
- 8C990000 LW T9,0000 (A0) # leocmd = @801E5E78
- 24180025 ADDIU T8,R0,0025
- A3380005 SB T8,0005 (T9)
- 8C880000 LW T0,0000 (A0)
- 10000008 BEQ R0,R0,+8
- 91020005 LBU V0,0005 (T0)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50508 ORI A1,A1,0508
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8FA60018 LW A2,0018 (SP)
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC7D0 0x5950
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 0C073297 JAL 801CCA5C
- 24040001 ADDIU A0,R0,0001
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 10000008 BEQ R0,R0,+8
- 24020025 ADDIU V0,R0,0025
- 0C07315D JAL 801CC574
- 8FA40018 LW A0,0018 (SP)
- 50400004 BEQL V0,R0,+4
- 00001025 OR V0,R0,R0
- 10000002 BEQ R0,R0,+2
- 304200FF ANDI V0,V0,00FF
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC820 0x59A0
- accepts: A0=ASIC command, A1
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C0731CA JAL 801CC728
- AFA40018 SW A0,0018 (SP)
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 10000003 BEQ R0,R0,+3
- 304200FF ANDI V0,V0,00FF
- 0C0731F4 JAL 801CC7D0
- 8FA40018 LW A0,0018 (SP)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC858 0x59D8 V0 = sensecode; send command A0, data A1 to ASIC
- accepts: A0=command, A1=data
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 0C073123 JAL 801CC48C
- AFA5001C SW A1,001C (SP)
- 2401002F ADDIU AT,R0,002F
- 10410009 BEQ V0,AT,+9 # ignore medium may have changed
- 304400FF ANDI A0,V0,00FF
- 10400007 BEQ V0,R0,+7 # if sensecode, set in leocmd and return sensecode
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C6E0000 LW T6,0000 (V1) # leocmd = @801E5E78
- A1C40005 SB A0,0005 (T6) # leocmd[5] = sensecode
- 8C6F0000 LW T7,0000 (V1)
- 10000028 BEQ R0,R0,+40
- 91E20005 LBU V0,0005 (T7) # return sensecode
- @801CC898: send data
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500 # target = 05000500: ASIC data
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8FA6001C LW A2,001C (SP)
- 0C073297 JAL 801CCA5C
- 00002025 OR A0,R0,R0
- 10400008 BEQ V0,R0,+8
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C790000 LW T9,0000 (V1) # leocmd = @801E5E78
- 24180025 ADDIU T8,R0,0025
- A3380005 SB T8,0005 (T9) # leocmd[5] = sensecode
- 8C680000 LW T0,0000 (V1)
- 10000017 BEQ R0,R0,+23 # return sensecode
- 91020005 LBU V0,0005 (T0)
- @801CC8DC
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50508 ORI A1,A1,0508 # target = 05000508: ASIC command
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8FA60018 LW A2,0018 (SP)
- 0C073297 JAL 801CCA5C
- 24040001 ADDIU A0,R0,0001
- 10400003 BEQ V0,R0,+3
- 00000000 NOP
- 1000000B BEQ R0,R0,+11
- 24020025 ADDIU V0,R0,0025
- @801CC90C
- 0C07315D JAL 801CC574
- 8FA40018 LW A0,0018 (SP)
- 2401002F ADDIU AT,R0,002F
- 50410006 BEQL V0,AT,+6 # ignore medium may have changed
- 00001025 OR V0,R0,R0
- 50400004 BEQL V0,R0,+4
- 00001025 OR V0,R0,R0
- 10000002 BEQ R0,R0,+2 # return sensecode if sensecode else 0
- 304200FF ANDI V0,V0,00FF
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC944 0x5AC4 detect index from disk; call 801CC820(0xE0001, 0)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04000E LUI A0,000E
- 34840001 ORI A0,A0,0001
- 0C073208 JAL 801CC820
- 00002825 OR A1,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC96C 0x5AEC call 801CC728(0x30001, 0)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C040003 LUI A0,0003
- 34840001 ORI A0,A0,0001
- 0C0731CA JAL 801CC728
- 00002825 OR A1,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC994 0x5B14 call 801CC820(0x30001, 0)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C040003 LUI A0,0003
- 34840001 ORI A0,A0,0001
- 0C073208 JAL 801CC820
- 00002825 OR A1,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CC9BC 0x5B3C send seek read or write (A0) request for current location
- accepts: A0=mode (0:read, 1:write)
- 3C02801E LUI V0,801E
- 24425E90 ADDIU V0,V0,5E90
- 904F0007 LBU T7,0007 (V0) # head = 801E5E90[7]
- 94590002 LHU T9,0002 (V0) # 801E5E90[2:4]
- 27BDFFE8 ADDIU SP,SP,FFE8
- 000FC300 SLL T8,T7,0xC
- 03192821 ADDU A1,T8,T9
- 308EFFFF ANDI T6,A0,FFFF
- 00054400 SLL T0,A1,0x10
- AFBF0014 SW RA,0014 (SP)
- AFA40018 SW A0,0018 (SP)
- 15C00006 BNE T6,R0,+6 # branch if write
- 01002825 OR A1,T0,R0
- 3C040001 LUI A0,0001
- 0C0731CA JAL 801CC728
- 34840001 ORI A0,A0,0001 # cmd = 0x10001: seek (read)
- 10000005 BEQ R0,R0,+5
- 8FBF0014 LW RA,0014 (SP)
- 3C040002 LUI A0,0002
- 0C0731CA JAL 801CC728
- 34840001 ORI A0,A0,0001 # cmd = 0x20001: seek (write)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CCA20 0x5BA0
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C07326F JAL 801CC9BC # send seek read or write (A0) request for current location
- 00002025 OR A0,R0,R0 # read
- 10400003 BEQ V0,R0,+3
- 304300FF ANDI V1,V0,00FF
- 10000004 BEQ R0,R0,+4
- 00601025 OR V0,V1,R0
- 3C040001 LUI A0,0001
- 0C0731F4 JAL 801CC7D0
- 34840001 ORI A0,A0,0001
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CCA5C 0x5BDC
- accepts: A0=read or wait (0:read, 1:wait)
- 27BDFFE0 ADDIU SP,SP,FFE0
- 00803025 OR A2,A0,R0
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 24845E00 ADDIU A0,A0,5E00 # queue = 801E5E00: cart interrupt callback
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 27A5001C ADDIU A1,SP,001C
- 14400008 BNE V0,R0,+8
- 8FAE001C LW T6,001C (SP)
- 3C01000A LUI AT,000A
- 55C10006 BNEL T6,AT,+6 # if msg == 0xA0000: reset drive
- 00001025 OR V0,R0,R0
- 0C073300 JAL 801CCC00 # leo reset
- 00000000 NOP
- 10000002 BEQ R0,R0,+2 # return 0xFF
- 240200FF ADDIU V0,R0,00FF
- 00001025 OR V0,R0,R0 # return 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 801CCAB0 0x5C30
- 3C02801E LUI V0,801E
- 8C425EE0 LW V0,5EE0 (V0)
- 2401000C ADDIU AT,R0,000C
- 10410002 BEQ V0,AT,+2
- 24010008 ADDIU AT,R0,0008
- 1441001B BNE V0,AT,+27
- 2C810004 SLTIU AT,A0,0004
- 14200009 BNE AT,R0,+9
- 248EFFDB ADDIU T6,A0,FFDB
- 2DC1000D SLTIU AT,T6,000D
- 10200036 BEQ AT,R0,+54
- 000E7080 SLL T6,T6,0x2
- 3C01801E LUI AT,801E
- 002E0821 ADDU AT,AT,T6
- 8C2E9480 LW T6,9480 (AT)
- 01C00008 JR T6
- 00000000 NOP
- @801CCAF4
- 24010002 ADDIU AT,R0,0002
- 1081000A BEQ A0,AT,+10
- 24010003 ADDIU AT,R0,0003
- 10810008 BEQ A0,AT,+8
- 00000000 NOP
- 1000002B BEQ R0,R0,+43
- 00001025 OR V0,R0,R0
- @801CCB10
- 3C02801E LUI V0,801E
- 24425F74 ADDIU V0,V0,5F74
- 8C4F0000 LW T7,0000 (V0)
- 35F80002 ORI T8,T7,0002
- AC580000 SW T8,0000 (V0)
- 3C01801E LUI AT,801E
- A0205E84 SB R0,5E84 (AT)
- 03E00008 JR RA
- 2402FFFF ADDIU V0,R0,FFFF
- 801CCB34 0x5CB4
- 2C810004 SLTIU AT,A0,0004
- 14200009 BNE AT,R0,+9
- 2499FFDB ADDIU T9,A0,FFDB
- 2F21000D SLTIU AT,T9,000D
- 1020001B BEQ AT,R0,+27
- 0019C880 SLL T9,T9,0x2
- 3C01801E LUI AT,801E
- 00390821 ADDU AT,AT,T9
- 8C3994B4 LW T9,94B4 (AT) # call 801D94B4[A0 - 0x25]()
- 03200008 JR T9
- 00000000 NOP
- @801CCB60
- 24010002 ADDIU AT,R0,0002
- 1081000F BEQ A0,AT,+15
- 24010003 ADDIU AT,R0,0003
- 1081000D BEQ A0,AT,+13
- 00000000 NOP
- 10000010 BEQ R0,R0,+16
- 00001025 OR V0,R0,R0
- @801CCB7C
- 3C02801E LUI V0,801E
- 24425F74 ADDIU V0,V0,5F74
- 8C480000 LW T0,0000 (V0)
- 35090002 ORI T1,T0,0002
- AC490000 SW T1,0000 (V0)
- 3C02801E LUI V0,801E
- 24425F74 ADDIU V0,V0,5F74
- 8C4A0000 LW T2,0000 (V0)
- 354B0001 ORI T3,T2,0001
- AC4B0000 SW T3,0000 (V0)
- 3C01801E LUI AT,801E
- A0205E84 SB R0,5E84 (AT)
- 03E00008 JR RA
- 2402FFFF ADDIU V0,R0,FFFF
- @801CCBB4
- 00001025 OR V0,R0,R0
- 03E00008 JR RA
- 00000000 NOP
- 801CCBC0 0x5D40
- 3C02801E LUI V0,801E
- 8C425F70 LW V0,5F70 (V0)
- 00001825 OR V1,R0,R0
- 000271C0 SLL T6,V0,0x7
- 05C00002 BLTZ T6,+2
- 00027B00 SLL T7,V0,0xC
- 24030001 ADDIU V1,R0,0001
- 05E10003 BGEZ T7,+3
- 000242C0 SLL T0,V0,0xB
- 34780002 ORI T8,V1,0002
- 330300FF ANDI V1,T8,00FF
- 05010002 BGEZ T0,+2
- 34690004 ORI T1,V1,0004
- 312300FF ANDI V1,T1,00FF
- 03E00008 JR RA
- 00601025 OR V0,V1,R0
- 801CCC00 0x5D80 leo reset
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50520 ORI A1,A1,0520
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 3C06AAAA LUI A2,AAAA
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CCC30 0x5DB0 V0 = @801E5F74
- 3C02801E LUI V0,801E
- 03E00008 JR RA
- 8C425F74 LW V0,5F74 (V0)
- 801CCC3C 0x5DBC V0 = sensecode for flags @801E5F74
- 3C02801E LUI V0,801E
- 8C425F74 LW V0,5F74 (V0)
- 304E0002 ANDI T6,V0,0002
- 11C00003 BEQ T6,R0,+3
- 304F0001 ANDI T7,V0,0001
- 03E00008 JR RA
- 2402002B ADDIU V0,R0,002B # if @801E5F74 & 2: return sensecode 0x2B (power on or device reset)
- 11E00003 BEQ T7,R0,+3
- 00001025 OR V0,R0,R0
- 03E00008 JR RA
- 2402002F ADDIU V0,R0,002F # if @801E5F74 & 1: return sensecode 0x2F (medium may have changed)
- 03E00008 JR RA
- 00000000 NOP
- 801CCC70 0x5DF0 801E5F74 &= ~2
- 3C02801E LUI V0,801E
- 24425F74 ADDIU V0,V0,5F74
- 8C4E0000 LW T6,0000 (V0)
- 2401FFFD ADDIU AT,R0,FFFD
- 01C17824 AND T7,T6,AT
- 03E00008 JR RA
- AC4F0000 SW T7,0000 (V0)
- 801CCC8C 0x5E0C 801E5F74 &= ~1; diskID read successfully
- 3C02801E LUI V0,801E
- 24425F74 ADDIU V0,V0,5F74
- 8C4E0000 LW T6,0000 (V0)
- 2401FFFE ADDIU AT,R0,FFFE
- 01C17824 AND T7,T6,AT
- 03E00008 JR RA
- AC4F0000 SW T7,0000 (V0)
- 801CCCA8 0x5E28 801E5F74 |= 1; status error during diskID read
- 3C02801E LUI V0,801E
- 24425F74 ADDIU V0,V0,5F74
- 8C4E0000 LW T6,0000 (V0)
- 35CF0001 ORI T7,T6,0001
- 03E00008 JR RA
- AC4F0000 SW T7,0000 (V0)
- 801CCCC0 0x5E40 801E5F74 = 1
- 240E0001 ADDIU T6,R0,0001
- 3C01801E LUI AT,801E
- 03E00008 JR RA
- AC2E5F74 SW T6,5F74 (AT)
- 801CCCD0 0x5E50 send start/stop (A1) leocmd A0, informing queue A2
- accepts: A0=p->leocmd, A1=mode (0:normal, 1:standby, 2:normal, 4:brake on), A2=p->queue or None
- 3C0F801E LUI T7,801E
- 8DEF8DF0 LW T7,8DF0 (T7) # @801D8DF0: True if leo threads started
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFA5001C SW A1,001C (SP)
- 30AE00FF ANDI T6,A1,00FF
- 01C02825 OR A1,T6,R0
- 15E00003 BNE T7,R0,+3
- AFBF0014 SW RA,0014 (SP)
- 10000020 BEQ R0,R0,+32
- 2402FFFF ADDIU V0,R0,FFFF
- @801CCCF8
- 24180008 ADDIU T8,R0,0008
- A0980000 SB T8,0000 (A0) # leocmd[0] = 8: start/stop
- 10A0000B BEQ A1,R0,+11
- A0800001 SB R0,0001 (A0) # if mode == 0: ctrlflgs = 0
- 24010001 ADDIU AT,R0,0001
- 10A1000B BEQ A1,AT,+11 # if mode == 1: ctrlflgs = 2 (standby mode)
- 24080002 ADDIU T0,R0,0002
- 24010002 ADDIU AT,R0,0002
- 10A1000A BEQ A1,AT,+10 # if mode == 2: ctrlflgs = 0
- 24010004 ADDIU AT,R0,0004
- 10A1000A BEQ A1,AT,+10 # if mode == 1: ctrlflgs = 4 (brake on)
- 24090004 ADDIU T1,R0,0004
- 10000009 BEQ R0,R0,+9
- 00000000 NOP
- @801CCD30
- 24190001 ADDIU T9,R0,0001
- 10000006 BEQ R0,R0,+6
- A0990002 SB T9,0002 (A0)
- 10000004 BEQ R0,R0,+4
- A0880002 SB T0,0002 (A0)
- 10000002 BEQ R0,R0,+2
- A0800002 SB R0,0002 (A0)
- A0890002 SB T1,0002 (A0)
- 10C00005 BEQ A2,R0,+5
- A0800003 SB R0,0003 (A0)
- 908A0002 LBU T2,0002 (A0)
- AC860008 SW A2,0008 (A0)
- 354B0080 ORI T3,T2,0080
- A08B0002 SB T3,0002 (A0)
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- 00000000 NOP
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CCD90 0x5F10
- 3C0E801E LUI T6,801E
- 91CE67BC LBU T6,67BC (T6)
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 2DC10005 SLTIU AT,T6,0005
- 10200016 BEQ AT,R0,+22
- 000E7080 SLL T6,T6,0x2
- 3C01801E LUI AT,801E
- 002E0821 ADDU AT,AT,T6
- 8C2E9AD0 LW T6,9AD0 (AT)
- 01C00008 JR T6
- 00000000 NOP
- @801CCDC0
- 0C073387 JAL 801CCE1C
- 00000000 NOP
- 10000010 BEQ R0,R0,+16
- 00001025 OR V0,R0,R0
- @801CCDD0
- 0C0733BC JAL 801CCEF0
- 00000000 NOP
- 1000000C BEQ R0,R0,+12
- 00001025 OR V0,R0,R0
- @801CCDE0
- 0C07345C JAL 801CD170
- 00000000 NOP
- 10000008 BEQ R0,R0,+8
- 00001025 OR V0,R0,R0
- @801CCDF0
- 0C073556 JAL 801CD558
- 00000000 NOP
- 10000004 BEQ R0,R0,+4
- 00001025 OR V0,R0,R0
- @801CCE00
- 10000002 BEQ R0,R0,+2
- 3402FFFF ORI V0,R0,FFFF
- @801CCE08
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801CCE1C 0x5F9C
- 3C06801E LUI A2,801E
- 24C667B0 ADDIU A2,A2,67B0
- 90C20008 LBU V0,0008 (A2)
- 28410055 SLTI AT,V0,0055
- 1020002E BEQ AT,R0,+46
- 00000000 NOP
- 90C3000D LBU V1,000D (A2)
- 244E0001 ADDIU T6,V0,0001
- 8CD80000 LW T8,0000 (A2)
- 01C30019 MULTU T6,V1
- 30620003 ANDI V0,V1,0003
- 00021023 SUBU V0,R0,V0
- 8CC50004 LW A1,0004 (A2)
- 00434821 ADDU T1,V0,V1
- 00007812 MFLO T7
- 01F82021 ADDU A0,T7,T8
- 1040000C BEQ V0,R0,+12
- 24A6FFFC ADDIU A2,A1,FFFC
- 2488FFFF ADDIU T0,A0,FFFF
- 91190000 LBU T9,0000 (T0)
- 90CA0000 LBU T2,0000 (A2)
- 2463FFFF ADDIU V1,V1,FFFF
- 01002025 OR A0,T0,R0
- 032A5826 XOR T3,T9,T2
- A10B0000 SB T3,0000 (T0)
- 1523FFF7 BNE T1,V1,-9
- 00C02825 OR A1,A2,R0
- 10600017 BEQ V1,R0,+23
- 00000000 NOP
- 908CFFFF LBU T4,FFFF (A0)
- 90ADFFFC LBU T5,FFFC (A1)
- 00A03025 OR A2,A1,R0
- 00804025 OR T0,A0,R0
- 018D7026 XOR T6,T4,T5
- A08EFFFF SB T6,FFFF (A0)
- 910FFFFE LBU T7,FFFE (T0)
- 90D8FFF8 LBU T8,FFF8 (A2)
- 910AFFFD LBU T2,FFFD (T0)
- 2504FFFC ADDIU A0,T0,FFFC
- 01F8C826 XOR T9,T7,T8
- A119FFFE SB T9,FFFE (T0)
- 90CBFFF4 LBU T3,FFF4 (A2)
- 24C5FFF0 ADDIU A1,A2,FFF0
- 2463FFFC ADDIU V1,V1,FFFC
- 014B6026 XOR T4,T2,T3
- A10CFFFD SB T4,FFFD (T0)
- 908D0000 LBU T5,0000 (A0)
- 90AE0000 LBU T6,0000 (A1)
- 01AE7826 XOR T7,T5,T6
- 1460FFEB BNE V1,R0,-21
- A08F0000 SB T7,0000 (A0)
- 03E00008 JR RA
- 00000000 NOP
- 801CCEF0 0x6070
- 3C06801E LUI A2,801E
- 24C667B0 ADDIU A2,A2,67B0
- 90CE0008 LBU T6,0008 (A2)
- 90CF0009 LBU T7,0009 (A2)
- 24070058 ADDIU A3,R0,0058
- 3C0B801E LUI T3,801E
- 256B96D0 ADDIU T3,T3,96D0
- 00EE1023 SUBU V0,A3,T6
- 00EF1823 SUBU V1,A3,T7
- 01635021 ADDU T2,T3,V1
- 0162C821 ADDU T9,T3,V0
- 932C0000 LBU T4,0000 (T9)
- 91580000 LBU T8,0000 (T2)
- 27BDFFA0 ADDIU SP,SP,FFA0
- AFBF001C SW RA,001C (SP)
- AFB00018 SW S0,0018 (SP)
- AFAA0024 SW T2,0024 (SP)
- 24040001 ADDIU A0,R0,0001
- 0C07378E JAL 801CDE38
- 030C2826 XOR A1,T8,T4
- 3C06801E LUI A2,801E
- 24C667B0 ADDIU A2,A2,67B0
- 90C50009 LBU A1,0009 (A2)
- 3C08801E LUI T0,801E
- 250898D0 ADDIU T0,T0,98D0
- 01026821 ADDU T5,T0,V0
- 3C0B801E LUI T3,801E
- 28A10055 SLTI AT,A1,0055
- 256B96D0 ADDIU T3,T3,96D0
- 91B00000 LBU S0,0000 (T5)
- 8FAA0024 LW T2,0024 (SP)
- 14200009 BNE AT,R0,+9
- 90C9000D LBU T1,000D (A2)
- 90C20008 LBU V0,0008 (A2)
- 3C04801E LUI A0,801E
- 24846068 ADDIU A0,A0,6068
- 28410055 SLTI AT,V0,0055
- 50200076 BEQL AT,R0,+118
- 8FBF001C LW RA,001C (SP)
- 10000008 BEQ R0,R0,+8
- 8CC30000 LW V1,0000 (A2)
- 24AE0001 ADDIU T6,A1,0001
- 01C90019 MULTU T6,T1
- 8CC30000 LW V1,0000 (A2)
- 90C20008 LBU V0,0008 (A2)
- 00007812 MFLO T7
- 01E32021 ADDU A0,T7,V1
- 00000000 NOP
- 24590001 ADDIU T9,V0,0001
- 03290019 MULTU T9,T1
- 31220001 ANDI V0,T1,0001
- 8CC50004 LW A1,0004 (A2)
- 0000C012 MFLO T8
- 03033821 ADDU A3,T8,V1
- 50020024 BEQL R0,V0,+36
- 90A2FFFC LBU V0,FFFC (A1)
- 90A2FFFC LBU V0,FFFC (A1)
- 24A5FFFC ADDIU A1,A1,FFFC
- 24E7FFFF ADDIU A3,A3,FFFF
- 10400008 BEQ V0,R0,+8
- 00403025 OR A2,V0,R0
- 01026821 ADDU T5,T0,V0
- 91AE0000 LBU T6,0000 (T5)
- 90AC0001 LBU T4,0001 (A1)
- 014E7821 ADDU T7,T2,T6
- 91F90000 LBU T9,0000 (T7)
- 10000002 BEQ R0,R0,+2
- 01991826 XOR V1,T4,T9
- 90A30001 LBU V1,0001 (A1)
- 1060000E BEQ V1,R0,+14
- 2484FFFF ADDIU A0,A0,FFFF
- 0103C021 ADDU T8,T0,V1
- 930D0000 LBU T5,0000 (T8)
- 90EC0000 LBU T4,0000 (A3)
- 016D7021 ADDU T6,T3,T5
- 01D07821 ADDU T7,T6,S0
- 91E20000 LBU V0,0000 (T7)
- 0182C826 XOR T9,T4,V0
- A0F90000 SB T9,0000 (A3)
- 90980000 LBU T8,0000 (A0)
- 00466826 XOR T5,V0,A2
- 030D7026 XOR T6,T8,T5
- 10000004 BEQ R0,R0,+4
- A08E0000 SB T6,0000 (A0)
- 908F0000 LBU T7,0000 (A0)
- 01E66026 XOR T4,T7,A2
- A08C0000 SB T4,0000 (A0)
- 2529FFFF ADDIU T1,T1,FFFF
- 51200043 BEQL T1,R0,+67
- 8FBF001C LW RA,001C (SP)
- 90A2FFFC LBU V0,FFFC (A1)
- 24A5FFFC ADDIU A1,A1,FFFC
- 24E7FFFF ADDIU A3,A3,FFFF
- 10400008 BEQ V0,R0,+8
- 00403025 OR A2,V0,R0
- 0102C021 ADDU T8,T0,V0
- 930D0000 LBU T5,0000 (T8)
- 90B90001 LBU T9,0001 (A1)
- 014D7021 ADDU T6,T2,T5
- 91CF0000 LBU T7,0000 (T6)
- 10000002 BEQ R0,R0,+2
- 032F1826 XOR V1,T9,T7
- 90A30001 LBU V1,0001 (A1)
- 1060000E BEQ V1,R0,+14
- 2484FFFF ADDIU A0,A0,FFFF
- 01036021 ADDU T4,T0,V1
- 91980000 LBU T8,0000 (T4)
- 90F90000 LBU T9,0000 (A3)
- 01786821 ADDU T5,T3,T8
- 01B07021 ADDU T6,T5,S0
- 91C20000 LBU V0,0000 (T6)
- 03227826 XOR T7,T9,V0
- A0EF0000 SB T7,0000 (A3)
- 908C0000 LBU T4,0000 (A0)
- 0046C026 XOR T8,V0,A2
- 01986826 XOR T5,T4,T8
- 10000004 BEQ R0,R0,+4
- A08D0000 SB T5,0000 (A0)
- 908E0000 LBU T6,0000 (A0)
- 01C6C826 XOR T9,T6,A2
- A0990000 SB T9,0000 (A0)
- 90A2FFFC LBU V0,FFFC (A1)
- 24A5FFFC ADDIU A1,A1,FFFC
- 24E7FFFF ADDIU A3,A3,FFFF
- 10400008 BEQ V0,R0,+8
- 00403025 OR A2,V0,R0
- 01026021 ADDU T4,T0,V0
- 91980000 LBU T8,0000 (T4)
- 90AF0001 LBU T7,0001 (A1)
- 01586821 ADDU T5,T2,T8
- 91AE0000 LBU T6,0000 (T5)
- 10000002 BEQ R0,R0,+2
- 01EE1826 XOR V1,T7,T6
- 90A30001 LBU V1,0001 (A1)
- 1060000E BEQ V1,R0,+14
- 2484FFFF ADDIU A0,A0,FFFF
- 0103C821 ADDU T9,T0,V1
- 932C0000 LBU T4,0000 (T9)
- 90EF0000 LBU T7,0000 (A3)
- 016CC021 ADDU T8,T3,T4
- 03106821 ADDU T5,T8,S0
- 91A20000 LBU V0,0000 (T5)
- 01E27026 XOR T6,T7,V0
- A0EE0000 SB T6,0000 (A3)
- 90990000 LBU T9,0000 (A0)
- 00466026 XOR T4,V0,A2
- 032CC026 XOR T8,T9,T4
- 10000004 BEQ R0,R0,+4
- A0980000 SB T8,0000 (A0)
- 908D0000 LBU T5,0000 (A0)
- 01A67826 XOR T7,T5,A2
- A08F0000 SB T7,0000 (A0)
- 2529FFFE ADDIU T1,T1,FFFE
- 5520FFC1 BNEL T1,R0,-63
- 90A2FFFC LBU V0,FFFC (A1)
- 8FBF001C LW RA,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 27BD0060 ADDIU SP,SP,0060
- 03E00008 JR RA
- 00000000 NOP
- 801CD170 0x62F0
- 3C07801E LUI A3,801E
- 24E767B0 ADDIU A3,A3,67B0
- 27BDFF68 ADDIU SP,SP,FF68
- 90EE0008 LBU T6,0008 (A3)
- 90EF0009 LBU T7,0009 (A3)
- 90F8000A LBU T8,000A (A3)
- AFB00014 SW S0,0014 (SP)
- 24060058 ADDIU A2,R0,0058
- 3C10801E LUI S0,801E
- 261096D0 ADDIU S0,S0,96D0
- 00CE1023 SUBU V0,A2,T6
- 00CF1823 SUBU V1,A2,T7
- 00D82023 SUBU A0,A2,T8
- 02047821 ADDU T7,S0,A0
- 91E40000 LBU A0,0000 (T7)
- 0202C821 ADDU T9,S0,V0
- 02037021 ADDU T6,S0,V1
- 93220000 LBU V0,0000 (T9)
- 91C30000 LBU V1,0000 (T6)
- AFBF0034 SW RA,0034 (SP)
- AFB70030 SW S7,0030 (SP)
- AFB6002C SW S6,002C (SP)
- AFB50028 SW S5,0028 (SP)
- AFB40024 SW S4,0024 (SP)
- AFB30020 SW S3,0020 (SP)
- AFB2001C SW S2,001C (SP)
- AFB10018 SW S1,0018 (SP)
- AFA4006C SW A0,006C (SP)
- 00802825 OR A1,A0,R0
- AFA20074 SW V0,0074 (SP)
- 0C07377D JAL 801CDDF4
- AFA30070 SW V1,0070 (SP)
- 8FA40070 LW A0,0070 (SP)
- 00408825 OR S1,V0,R0
- 0C07377D JAL 801CDDF4
- 00802825 OR A1,A0,R0
- 8FA40074 LW A0,0074 (SP)
- 00409025 OR S2,V0,R0
- 0C07377D JAL 801CDDF4
- 00802825 OR A1,A0,R0
- 00409825 OR S3,V0,R0
- 0232A826 XOR S5,S1,S2
- 0222B026 XOR S6,S1,V0
- 0242B826 XOR S7,S2,V0
- 8FA40070 LW A0,0070 (SP)
- 0C07377D JAL 801CDDF4
- 02202825 OR A1,S1,R0
- AFA2003C SW V0,003C (SP)
- 8FA4006C LW A0,006C (SP)
- 0C07377D JAL 801CDDF4
- 02402825 OR A1,S2,R0
- 8FB8003C LW T8,003C (SP)
- 8FA4006C LW A0,006C (SP)
- 02602825 OR A1,S3,R0
- 0058F826 XOR RA,V0,T8
- AFBF0050 SW RA,0050 (SP)
- 0C07377D JAL 801CDDF4
- 00000000 NOP
- AFA2003C SW V0,003C (SP)
- 8FA40074 LW A0,0074 (SP)
- 0C07377D JAL 801CDDF4
- 02202825 OR A1,S1,R0
- 8FB9003C LW T9,003C (SP)
- 8FA40070 LW A0,0070 (SP)
- 02602825 OR A1,S3,R0
- 0C07377D JAL 801CDDF4
- 0059A026 XOR S4,V0,T9
- AFA2003C SW V0,003C (SP)
- 8FA40074 LW A0,0074 (SP)
- 0C07377D JAL 801CDDF4
- 02402825 OR A1,S2,R0
- 8FBF0050 LW RA,0050 (SP)
- 8FAE003C LW T6,003C (SP)
- 24040001 ADDIU A0,R0,0001
- 03F47826 XOR T7,RA,S4
- 004E1826 XOR V1,V0,T6
- 01E32826 XOR A1,T7,V1
- 0C07378E JAL 801CDE38
- AFA30048 SW V1,0048 (SP)
- 8FBF0050 LW RA,0050 (SP)
- 3C07801E LUI A3,801E
- 8FAE0070 LW T6,0070 (SP)
- 8FAF006C LW T7,006C (SP)
- 24E798D0 ADDIU A3,A3,98D0
- 00FFC021 ADDU T8,A3,RA
- 931F0000 LBU RA,0000 (T8)
- 00F5C821 ADDU T9,A3,S5
- 93350000 LBU S5,0000 (T9)
- 01CFC026 XOR T8,T6,T7
- 00F8C821 ADDU T9,A3,T8
- 00F6C021 ADDU T8,A3,S6
- 93160000 LBU S6,0000 (T8)
- 8FB80074 LW T8,0074 (SP)
- 93310000 LBU S1,0000 (T9)
- 00F4C821 ADDU T9,A3,S4
- 8FAD0048 LW T5,0048 (SP)
- 93340000 LBU S4,0000 (T9)
- 01F8C826 XOR T9,T7,T8
- 3C04801E LUI A0,801E
- 00F97821 ADDU T7,A3,T9
- 248467B0 ADDIU A0,A0,67B0
- 00EDC821 ADDU T9,A3,T5
- 9083000A LBU V1,000A (A0)
- 91F20000 LBU S2,0000 (T7)
- 932D0000 LBU T5,0000 (T9)
- 00F77821 ADDU T7,A3,S7
- 030EC826 XOR T9,T8,T6
- 91F70000 LBU S7,0000 (T7)
- 00F97821 ADDU T7,A3,T9
- 00E2C021 ADDU T8,A3,V0
- 28610055 SLTI AT,V1,0055
- 91F30000 LBU S3,0000 (T7)
- 930C0000 LBU T4,0000 (T8)
- 14200014 BNE AT,R0,+20
- 908B000D LBU T3,000D (A0)
- 3C04801E LUI A0,801E
- 908467B9 LBU A0,67B9 (A0)
- 3C02801E LUI V0,801E
- 24426068 ADDIU V0,V0,6068
- 28810055 SLTI AT,A0,0055
- 10200004 BEQ AT,R0,+4
- 00404825 OR T1,V0,R0
- 3C02801E LUI V0,801E
- 10000013 BEQ R0,R0,+19
- 8C4267B0 LW V0,67B0 (V0)
- 3C03801E LUI V1,801E
- 906367B8 LBU V1,67B8 (V1)
- 00405025 OR T2,V0,R0
- 3C02801E LUI V0,801E
- 28610055 SLTI AT,V1,0055
- 5020006D BEQL AT,R0,+109
- 8FBF0034 LW RA,0034 (SP)
- 10000011 BEQ R0,R0,+17
- 8C4267B0 LW V0,67B0 (V0)
- 246E0001 ADDIU T6,V1,0001
- 01CB0019 MULTU T6,T3
- 3C02801E LUI V0,801E
- 8C4267B0 LW V0,67B0 (V0)
- 3C04801E LUI A0,801E
- 908467B9 LBU A0,67B9 (A0)
- 0000C812 MFLO T9
- 03224821 ADDU T1,T9,V0
- 00000000 NOP
- 248F0001 ADDIU T7,A0,0001
- 01EB0019 MULTU T7,T3
- 3C03801E LUI V1,801E
- 906367B8 LBU V1,67B8 (V1)
- 0000C012 MFLO T8
- 03025021 ADDU T2,T8,V0
- 00000000 NOP
- 246E0001 ADDIU T6,V1,0001
- 01CB0019 MULTU T6,T3
- 3C06801E LUI A2,801E
- 8CC667B4 LW A2,67B4 (A2)
- 0000C812 MFLO T9
- 03224021 ADDU T0,T9,V0
- 00000000 NOP
- 90C2FFFC LBU V0,FFFC (A2)
- 24C6FFFC ADDIU A2,A2,FFFC
- 2508FFFF ADDIU T0,T0,FFFF
- 1040000C BEQ V0,R0,+12
- 254AFFFF ADDIU T2,T2,FFFF
- 00E27821 ADDU T7,A3,V0
- 91E20000 LBU V0,0000 (T7)
- 0202C021 ADDU T8,S0,V0
- 031F7021 ADDU T6,T8,RA
- 91C30000 LBU V1,0000 (T6)
- 0202C821 ADDU T9,S0,V0
- 03347821 ADDU T7,T9,S4
- 030D7021 ADDU T6,T8,T5
- 91E40000 LBU A0,0000 (T7)
- 10000004 BEQ R0,R0,+4
- 91C50000 LBU A1,0000 (T6)
- 00002825 OR A1,R0,R0
- 00002025 OR A0,R0,R0
- 00001825 OR V1,R0,R0
- 90C20001 LBU V0,0001 (A2)
- 256BFFFF ADDIU T3,T3,FFFF
- 1040000E BEQ V0,R0,+14
- 00E2C821 ADDU T9,A3,V0
- 93220000 LBU V0,0000 (T9)
- 02027821 ADDU T7,S0,V0
- 01F5C021 ADDU T8,T7,S5
- 930E0000 LBU T6,0000 (T8)
- 0202C821 ADDU T9,S0,V0
- 03367821 ADDU T7,T9,S6
- 006E1826 XOR V1,V1,T6
- 02027021 ADDU T6,S0,V0
- 91F80000 LBU T8,0000 (T7)
- 01D7C821 ADDU T9,T6,S7
- 932F0000 LBU T7,0000 (T9)
- 00982026 XOR A0,A0,T8
- 00AF2826 XOR A1,A1,T7
- 90C20002 LBU V0,0002 (A2)
- 1040000E BEQ V0,R0,+14
- 00E2C021 ADDU T8,A3,V0
- 93020000 LBU V0,0000 (T8)
- 02027021 ADDU T6,S0,V0
- 01D1C821 ADDU T9,T6,S1
- 932F0000 LBU T7,0000 (T9)
- 0202C021 ADDU T8,S0,V0
- 03127021 ADDU T6,T8,S2
- 006F1826 XOR V1,V1,T7
- 02027821 ADDU T7,S0,V0
- 91D90000 LBU T9,0000 (T6)
- 01F3C021 ADDU T8,T7,S3
- 930E0000 LBU T6,0000 (T8)
- 00992026 XOR A0,A0,T9
- 00AE2826 XOR A1,A1,T6
- 10600009 BEQ V1,R0,+9
- 2529FFFF ADDIU T1,T1,FFFF
- 00E37821 ADDU T7,A3,V1
- 91F80000 LBU T8,0000 (T7)
- 91190000 LBU T9,0000 (T0)
- 02187021 ADDU T6,S0,T8
- 01CC7821 ADDU T7,T6,T4
- 91F80000 LBU T8,0000 (T7)
- 03387026 XOR T6,T9,T8
- A10E0000 SB T6,0000 (T0)
- 10800008 BEQ A0,R0,+8
- 00E4C821 ADDU T9,A3,A0
- 93380000 LBU T8,0000 (T9)
- 914F0000 LBU T7,0000 (T2)
- 02187021 ADDU T6,S0,T8
- 01CCC821 ADDU T9,T6,T4
- 93380000 LBU T8,0000 (T9)
- 01F87026 XOR T6,T7,T8
- A14E0000 SB T6,0000 (T2)
- 10A00008 BEQ A1,R0,+8
- 00E57821 ADDU T7,A3,A1
- 91F80000 LBU T8,0000 (T7)
- 91390000 LBU T9,0000 (T1)
- 02187021 ADDU T6,S0,T8
- 01CC7821 ADDU T7,T6,T4
- 91F80000 LBU T8,0000 (T7)
- 03387026 XOR T6,T9,T8
- A12E0000 SB T6,0000 (T1)
- 5560FFB0 BNEL T3,R0,-80
- 90C2FFFC LBU V0,FFFC (A2)
- 8FBF0034 LW RA,0034 (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 8FB40024 LW S4,0024 (SP)
- 8FB50028 LW S5,0028 (SP)
- 8FB6002C LW S6,002C (SP)
- 8FB70030 LW S7,0030 (SP)
- 03E00008 JR RA
- 27BD0098 ADDIU SP,SP,0098
- 801CD558 0x66D8
- 3C08801E LUI T0,801E
- 250867B0 ADDIU T0,T0,67B0
- 27BDFF30 ADDIU SP,SP,FF30
- AFB00018 SW S0,0018 (SP)
- 3C10801E LUI S0,801E
- 24020058 ADDIU V0,R0,0058
- 910E0008 LBU T6,0008 (T0)
- 910F0009 LBU T7,0009 (T0)
- 9118000A LBU T8,000A (T0)
- 9119000B LBU T9,000B (T0)
- 261096D0 ADDIU S0,S0,96D0
- 004E2823 SUBU A1,V0,T6
- 004F1823 SUBU V1,V0,T7
- 00583023 SUBU A2,V0,T8
- 00593823 SUBU A3,V0,T9
- 02057021 ADDU T6,S0,A1
- 02037821 ADDU T7,S0,V1
- 0206C021 ADDU T8,S0,A2
- 0207C821 ADDU T9,S0,A3
- 91C50000 LBU A1,0000 (T6)
- 91E30000 LBU V1,0000 (T7)
- 93060000 LBU A2,0000 (T8)
- 93270000 LBU A3,0000 (T9)
- 92040000 LBU A0,0000 (S0)
- AFBF001C SW RA,001C (SP)
- AFA50084 SW A1,0084 (SP)
- AFA30080 SW V1,0080 (SP)
- AFA6007C SW A2,007C (SP)
- AFA70088 SW A3,0088 (SP)
- 0C07378E JAL 801CDE38
- AFA40074 SW A0,0074 (SP)
- AFA200A8 SW V0,00A8 (SP)
- 8FA40074 LW A0,0074 (SP)
- 0C07378E JAL 801CDE38
- 8FA50080 LW A1,0080 (SP)
- AFA200A4 SW V0,00A4 (SP)
- 8FA40074 LW A0,0074 (SP)
- 0C07378E JAL 801CDE38
- 8FA5007C LW A1,007C (SP)
- AFA2009C SW V0,009C (SP)
- 8FA40074 LW A0,0074 (SP)
- 0C07378E JAL 801CDE38
- 8FA50088 LW A1,0088 (SP)
- AFA200A0 SW V0,00A0 (SP)
- 8FA400A4 LW A0,00A4 (SP)
- 0C07377D JAL 801CDDF4
- 8FA5009C LW A1,009C (SP)
- AFA20070 SW V0,0070 (SP)
- 8FA4009C LW A0,009C (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A0 LW A1,00A0 (SP)
- AFA2006C SW V0,006C (SP)
- 8FA400A0 LW A0,00A0 (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A4 LW A1,00A4 (SP)
- AFA20068 SW V0,0068 (SP)
- 8FA400A0 LW A0,00A0 (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A8 LW A1,00A8 (SP)
- AFA20064 SW V0,0064 (SP)
- 8FA400A8 LW A0,00A8 (SP)
- 0C07377D JAL 801CDDF4
- 8FA5009C LW A1,009C (SP)
- AFA20060 SW V0,0060 (SP)
- 8FA400A8 LW A0,00A8 (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A4 LW A1,00A4 (SP)
- 8FA8006C LW T0,006C (SP)
- 8FAA0070 LW T2,0070 (SP)
- 8FAB0064 LW T3,0064 (SP)
- 8FA70068 LW A3,0068 (SP)
- 8FA90060 LW T1,0060 (SP)
- 01487026 XOR T6,T2,T0
- 010BC026 XOR T8,T0,T3
- 01C77826 XOR T7,T6,A3
- 0309C826 XOR T9,T8,T1
- 8FA300A0 LW V1,00A0 (SP)
- 8FA400A4 LW A0,00A4 (SP)
- 8FA5009C LW A1,009C (SP)
- 8FA600A8 LW A2,00A8 (SP)
- AFAF0044 SW T7,0044 (SP)
- AFB90040 SW T9,0040 (SP)
- 004AC026 XOR T8,V0,T2
- 01627026 XOR T6,T3,V0
- 01C77826 XOR T7,T6,A3
- 0309C826 XOR T9,T8,T1
- AFAF003C SW T7,003C (SP)
- AFB90038 SW T9,0038 (SP)
- 00857026 XOR T6,A0,A1
- 01C36026 XOR T4,T6,V1
- 00A37826 XOR T7,A1,V1
- 0066C026 XOR T8,V1,A2
- 00C4C826 XOR T9,A2,A0
- 03043826 XOR A3,T8,A0
- 03257026 XOR T6,T9,A1
- 01E64026 XOR T0,T7,A2
- AFAE0064 SW T6,0064 (SP)
- AFA8006C SW T0,006C (SP)
- AFA70068 SW A3,0068 (SP)
- AFAC0070 SW T4,0070 (SP)
- 0C07377D JAL 801CDDF4
- AFAC0020 SW T4,0020 (SP)
- 00402025 OR A0,V0,R0
- 0C07377D JAL 801CDDF4
- 8FA500A0 LW A1,00A0 (SP)
- AFA20060 SW V0,0060 (SP)
- 8FA4009C LW A0,009C (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A0 LW A1,00A0 (SP)
- 00402025 OR A0,V0,R0
- 0C07377D JAL 801CDDF4
- 8FA500A8 LW A1,00A8 (SP)
- AFA2005C SW V0,005C (SP)
- 8FA400A0 LW A0,00A0 (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A8 LW A1,00A8 (SP)
- 00402025 OR A0,V0,R0
- 0C07377D JAL 801CDDF4
- 8FA500A4 LW A1,00A4 (SP)
- AFA20058 SW V0,0058 (SP)
- 8FA400A8 LW A0,00A8 (SP)
- 0C07377D JAL 801CDDF4
- 8FA500A4 LW A1,00A4 (SP)
- 00402025 OR A0,V0,R0
- 0C07377D JAL 801CDDF4
- 8FA5009C LW A1,009C (SP)
- AFA20054 SW V0,0054 (SP)
- 8FA40084 LW A0,0084 (SP)
- 0C07378E JAL 801CDE38
- 8FA50080 LW A1,0080 (SP)
- AFA20024 SW V0,0024 (SP)
- 8FA40084 LW A0,0084 (SP)
- 0C07378E JAL 801CDE38
- 8FA5007C LW A1,007C (SP)
- 8FA40024 LW A0,0024 (SP)
- 38450001 XORI A1,V0,0001
- 388F0001 XORI T7,A0,0001
- 0C07377D JAL 801CDDF4
- 01E02025 OR A0,T7,R0
- AFA2002C SW V0,002C (SP)
- 8FA40084 LW A0,0084 (SP)
- 0C07378E JAL 801CDE38
- 8FA50088 LW A1,0088 (SP)
- 8FA4002C LW A0,002C (SP)
- 0C07377D JAL 801CDDF4
- 38450001 XORI A1,V0,0001
- 24040001 ADDIU A0,R0,0001
- 0C07378E JAL 801CDE38
- 00402825 OR A1,V0,R0
- AFA20074 SW V0,0074 (SP)
- 8FA40080 LW A0,0080 (SP)
- 0C07378E JAL 801CDE38
- 8FA50084 LW A1,0084 (SP)
- AFA20024 SW V0,0024 (SP)
- 8FA40080 LW A0,0080 (SP)
- 0C07378E JAL 801CDE38
- 8FA5007C LW A1,007C (SP)
- 8FA40024 LW A0,0024 (SP)
- 38450001 XORI A1,V0,0001
- 38980001 XORI T8,A0,0001
- 0C07377D JAL 801CDDF4
- 03002025 OR A0,T8,R0
- AFA2002C SW V0,002C (SP)
- 8FA40080 LW A0,0080 (SP)
- 0C07378E JAL 801CDE38
- 8FA50088 LW A1,0088 (SP)
- 8FA4002C LW A0,002C (SP)
- 0C07377D JAL 801CDDF4
- 38450001 XORI A1,V0,0001
- 24040001 ADDIU A0,R0,0001
- 0C07378E JAL 801CDE38
- 00402825 OR A1,V0,R0
- AFA20050 SW V0,0050 (SP)
- 8FA4007C LW A0,007C (SP)
- 0C07378E JAL 801CDE38
- 8FA50084 LW A1,0084 (SP)
- AFA20024 SW V0,0024 (SP)
- 8FA4007C LW A0,007C (SP)
- 0C07378E JAL 801CDE38
- 8FA50080 LW A1,0080 (SP)
- 8FA40024 LW A0,0024 (SP)
- 38450001 XORI A1,V0,0001
- 38990001 XORI T9,A0,0001
- 0C07377D JAL 801CDDF4
- 03202025 OR A0,T9,R0
- AFA2002C SW V0,002C (SP)
- 8FA4007C LW A0,007C (SP)
- 0C07378E JAL 801CDE38
- 8FA50088 LW A1,0088 (SP)
- 8FA4002C LW A0,002C (SP)
- 0C07377D JAL 801CDDF4
- 38450001 XORI A1,V0,0001
- 24040001 ADDIU A0,R0,0001
- 0C07378E JAL 801CDE38
- 00402825 OR A1,V0,R0
- AFA2004C SW V0,004C (SP)
- 8FA40088 LW A0,0088 (SP)
- 0C07378E JAL 801CDE38
- 8FA50084 LW A1,0084 (SP)
- AFA20024 SW V0,0024 (SP)
- 8FA40088 LW A0,0088 (SP)
- 0C07378E JAL 801CDE38
- 8FA50080 LW A1,0080 (SP)
- 8FA40024 LW A0,0024 (SP)
- 38450001 XORI A1,V0,0001
- 388E0001 XORI T6,A0,0001
- 0C07377D JAL 801CDDF4
- 01C02025 OR A0,T6,R0
- AFA2002C SW V0,002C (SP)
- 8FA40088 LW A0,0088 (SP)
- 0C07378E JAL 801CDE38
- 8FA5007C LW A1,007C (SP)
- 8FA4002C LW A0,002C (SP)
- 0C07377D JAL 801CDDF4
- 38450001 XORI A1,V0,0001
- 24040001 ADDIU A0,R0,0001
- 0C07378E JAL 801CDE38
- 00402825 OR A1,V0,R0
- AFA20048 SW V0,0048 (SP)
- 8FA40020 LW A0,0020 (SP)
- 0C07377D JAL 801CDDF4
- 8FA50074 LW A1,0074 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 01427821 ADDU T7,T2,V0
- 91F80000 LBU T8,0000 (T7)
- 8FA40044 LW A0,0044 (SP)
- 8FA50074 LW A1,0074 (SP)
- 0C07377D JAL 801CDDF4
- AFB800A8 SW T8,00A8 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 0142C821 ADDU T9,T2,V0
- 932E0000 LBU T6,0000 (T9)
- 8FA40060 LW A0,0060 (SP)
- 8FA50074 LW A1,0074 (SP)
- 0C07377D JAL 801CDDF4
- AFAE00A4 SW T6,00A4 (SP)
- AFA20060 SW V0,0060 (SP)
- 8FA4006C LW A0,006C (SP)
- 0C07377D JAL 801CDDF4
- 8FA50050 LW A1,0050 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 01427821 ADDU T7,T2,V0
- 91F80000 LBU T8,0000 (T7)
- 8FA40040 LW A0,0040 (SP)
- 8FA50050 LW A1,0050 (SP)
- 0C07377D JAL 801CDDF4
- AFB8009C SW T8,009C (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 0142C821 ADDU T9,T2,V0
- 932E0000 LBU T6,0000 (T9)
- 8FA4005C LW A0,005C (SP)
- 8FA50050 LW A1,0050 (SP)
- 0C07377D JAL 801CDDF4
- AFAE00A0 SW T6,00A0 (SP)
- AFA2005C SW V0,005C (SP)
- 8FA40068 LW A0,0068 (SP)
- 0C07377D JAL 801CDDF4
- 8FA5004C LW A1,004C (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 01427821 ADDU T7,T2,V0
- 91F80000 LBU T8,0000 (T7)
- 8FA4003C LW A0,003C (SP)
- 8FA5004C LW A1,004C (SP)
- 0C07377D JAL 801CDDF4
- AFB80098 SW T8,0098 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 0142C821 ADDU T9,T2,V0
- 932E0000 LBU T6,0000 (T9)
- 8FA40058 LW A0,0058 (SP)
- 8FA5004C LW A1,004C (SP)
- 0C07377D JAL 801CDDF4
- AFAE0094 SW T6,0094 (SP)
- AFA20058 SW V0,0058 (SP)
- 8FA40064 LW A0,0064 (SP)
- 0C07377D JAL 801CDDF4
- 8FA50048 LW A1,0048 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 01427821 ADDU T7,T2,V0
- 91F80000 LBU T8,0000 (T7)
- 8FA40038 LW A0,0038 (SP)
- 8FA50048 LW A1,0048 (SP)
- 0C07377D JAL 801CDDF4
- AFB80090 SW T8,0090 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 0142C821 ADDU T9,T2,V0
- 932E0000 LBU T6,0000 (T9)
- 8FA40054 LW A0,0054 (SP)
- 8FA50048 LW A1,0048 (SP)
- 0C07377D JAL 801CDDF4
- AFAE008C SW T6,008C (SP)
- 8FAF0074 LW T7,0074 (SP)
- 3C0A801E LUI T2,801E
- 254A98D0 ADDIU T2,T2,98D0
- 014FC021 ADDU T8,T2,T7
- 93190000 LBU T9,0000 (T8)
- 8FAE0060 LW T6,0060 (SP)
- 3C05801E LUI A1,801E
- AFB90074 SW T9,0074 (SP)
- 014E7821 ADDU T7,T2,T6
- 91F80000 LBU T8,0000 (T7)
- 8FB90050 LW T9,0050 (SP)
- 24A567B0 ADDIU A1,A1,67B0
- AFB80060 SW T8,0060 (SP)
- 01597021 ADDU T6,T2,T9
- 91CF0000 LBU T7,0000 (T6)
- 8FB8005C LW T8,005C (SP)
- 90A4000B LBU A0,000B (A1)
- AFAF0050 SW T7,0050 (SP)
- 0158C821 ADDU T9,T2,T8
- 932E0000 LBU T6,0000 (T9)
- 8FAF004C LW T7,004C (SP)
- 28810055 SLTI AT,A0,0055
- AFAE005C SW T6,005C (SP)
- 014FC021 ADDU T8,T2,T7
- 93190000 LBU T9,0000 (T8)
- 8FAE0058 LW T6,0058 (SP)
- 90BF000D LBU RA,000D (A1)
- AFB9004C SW T9,004C (SP)
- 014E7821 ADDU T7,T2,T6
- 91F80000 LBU T8,0000 (T7)
- 8FB90048 LW T9,0048 (SP)
- AFB80058 SW T8,0058 (SP)
- 01597021 ADDU T6,T2,T9
- 0142C021 ADDU T8,T2,V0
- 91CF0000 LBU T7,0000 (T6)
- 93190000 LBU T9,0000 (T8)
- AFAF0048 SW T7,0048 (SP)
- 14200018 BNE AT,R0,+24
- AFB90054 SW T9,0054 (SP)
- 90A3000A LBU V1,000A (A1)
- 3C02801E LUI V0,801E
- 24426068 ADDIU V0,V0,6068
- 28610055 SLTI AT,V1,0055
- 10200003 BEQ AT,R0,+3
- 00406825 OR T5,V0,R0
- 10000017 BEQ R0,R0,+23
- 8CA20000 LW V0,0000 (A1)
- 90A40009 LBU A0,0009 (A1)
- 00405825 OR T3,V0,R0
- 28810055 SLTI AT,A0,0055
- 10200003 BEQ AT,R0,+3
- 00000000 NOP
- 10000016 BEQ R0,R0,+22
- 8CA20000 LW V0,0000 (A1)
- 3C03801E LUI V1,801E
- 906367B8 LBU V1,67B8 (V1)
- 00406025 OR T4,V0,R0
- 28610055 SLTI AT,V1,0055
- 102000BD BEQ AT,R0,+189
- 3C02801E LUI V0,801E
- 10000015 BEQ R0,R0,+21
- 8C4267B0 LW V0,67B0 (V0)
- 248E0001 ADDIU T6,A0,0001
- 01DF0019 MULTU T6,RA
- 8CA20000 LW V0,0000 (A1)
- 90A3000A LBU V1,000A (A1)
- 00007812 MFLO T7
- 01E26821 ADDU T5,T7,V0
- 00000000 NOP
- 24780001 ADDIU T8,V1,0001
- 031F0019 MULTU T8,RA
- 90A40009 LBU A0,0009 (A1)
- 0000C812 MFLO T9
- 03225821 ADDU T3,T9,V0
- 00000000 NOP
- 248E0001 ADDIU T6,A0,0001
- 01DF0019 MULTU T6,RA
- 3C03801E LUI V1,801E
- 906367B8 LBU V1,67B8 (V1)
- 00007812 MFLO T7
- 01E26021 ADDU T4,T7,V0
- 00000000 NOP
- 24780001 ADDIU T8,V1,0001
- 031F0019 MULTU T8,RA
- 3C08801E LUI T0,801E
- 8D0867B4 LW T0,67B4 (T0)
- 0000C812 MFLO T9
- 03224821 ADDU T1,T9,V0
- 00000000 NOP
- 9102FFFC LBU V0,FFFC (T0)
- 2508FFFC ADDIU T0,T0,FFFC
- 2529FFFF ADDIU T1,T1,FFFF
- 14400006 BNE V0,R0,+6
- 258CFFFF ADDIU T4,T4,FFFF
- 00003025 OR A2,R0,R0
- 00003825 OR A3,R0,R0
- 00002025 OR A0,R0,R0
- 10000013 BEQ R0,R0,+19
- 00002825 OR A1,R0,R0
- 01427021 ADDU T6,T2,V0
- 91C20000 LBU V0,0000 (T6)
- 8FB80074 LW T8,0074 (SP)
- 02027821 ADDU T7,S0,V0
- 01F8C821 ADDU T9,T7,T8
- 8FAF0050 LW T7,0050 (SP)
- 02027021 ADDU T6,S0,V0
- 93250000 LBU A1,0000 (T9)
- 01CFC021 ADDU T8,T6,T7
- 8FAE004C LW T6,004C (SP)
- 0202C821 ADDU T9,S0,V0
- 93040000 LBU A0,0000 (T8)
- 032E7821 ADDU T7,T9,T6
- 8FB90048 LW T9,0048 (SP)
- 0202C021 ADDU T8,S0,V0
- 91E70000 LBU A3,0000 (T7)
- 03197021 ADDU T6,T8,T9
- 91C60000 LBU A2,0000 (T6)
- 91020001 LBU V0,0001 (T0)
- 8FB80070 LW T8,0070 (SP)
- 256BFFFF ADDIU T3,T3,FFFF
- 10400029 BEQ V0,R0,+41
- 27FFFFFF ADDIU RA,RA,FFFF
- 01427821 ADDU T7,T2,V0
- 17000003 BNE T8,R0,+3
- 91E20000 LBU V0,0000 (T7)
- 10000005 BEQ R0,R0,+5
- 00001825 OR V1,R0,R0
- 8FAE00A8 LW T6,00A8 (SP)
- 0202C821 ADDU T9,S0,V0
- 032E7821 ADDU T7,T9,T6
- 91E30000 LBU V1,0000 (T7)
- 8FB8006C LW T8,006C (SP)
- 00A32826 XOR A1,A1,V1
- 8FAE009C LW T6,009C (SP)
- 57000004 BNEL T8,R0,+4
- 0202C821 ADDU T9,S0,V0
- 10000004 BEQ R0,R0,+4
- 00001825 OR V1,R0,R0
- 0202C821 ADDU T9,S0,V0
- 032E7821 ADDU T7,T9,T6
- 91E30000 LBU V1,0000 (T7)
- 8FB80068 LW T8,0068 (SP)
- 00832026 XOR A0,A0,V1
- 8FAE0098 LW T6,0098 (SP)
- 57000004 BNEL T8,R0,+4
- 0202C821 ADDU T9,S0,V0
- 10000004 BEQ R0,R0,+4
- 00001825 OR V1,R0,R0
- 0202C821 ADDU T9,S0,V0
- 032E7821 ADDU T7,T9,T6
- 91E30000 LBU V1,0000 (T7)
- 8FB80064 LW T8,0064 (SP)
- 00E33826 XOR A3,A3,V1
- 8FAE0090 LW T6,0090 (SP)
- 57000004 BNEL T8,R0,+4
- 0202C821 ADDU T9,S0,V0
- 10000004 BEQ R0,R0,+4
- 00001825 OR V1,R0,R0
- 0202C821 ADDU T9,S0,V0
- 032E7821 ADDU T7,T9,T6
- 91E30000 LBU V1,0000 (T7)
- 00C33026 XOR A2,A2,V1
- 91020002 LBU V0,0002 (T0)
- 8FB90044 LW T9,0044 (SP)
- 10400028 BEQ V0,R0,+40
- 0142C021 ADDU T8,T2,V0
- 17200003 BNE T9,R0,+3
- 93020000 LBU V0,0000 (T8)
- 10000005 BEQ R0,R0,+5
- 00001825 OR V1,R0,R0
- 8FAF00A4 LW T7,00A4 (SP)
- 02027021 ADDU T6,S0,V0
- 01CFC021 ADDU T8,T6,T7
- 93030000 LBU V1,0000 (T8)
- 8FB90040 LW T9,0040 (SP)
- 00A32826 XOR A1,A1,V1
- 8FAF00A0 LW T7,00A0 (SP)
- 57200004 BNEL T9,R0,+4
- 02027021 ADDU T6,S0,V0
- 10000004 BEQ R0,R0,+4
- 00001825 OR V1,R0,R0
- 02027021 ADDU T6,S0,V0
- 01CFC021 ADDU T8,T6,T7
- 93030000 LBU V1,0000 (T8)
- 8FB9003C LW T9,003C (SP)
- 00832026 XOR A0,A0,V1
- 8FAF0094 LW T7,0094 (SP)
- 57200004 BNEL T9,R0,+4
- 02027021 ADDU T6,S0,V0
- 10000004 BEQ R0,R0,+4
- 00001825 OR V1,R0,R0
- 02027021 ADDU T6,S0,V0
- 01CFC021 ADDU T8,T6,T7
- 93030000 LBU V1,0000 (T8)
- 8FB90038 LW T9,0038 (SP)
- 00E33826 XOR A3,A3,V1
- 8FAF008C LW T7,008C (SP)
- 57200004 BNEL T9,R0,+4
- 02027021 ADDU T6,S0,V0
- 10000004 BEQ R0,R0,+4
- 00001825 OR V1,R0,R0
- 02027021 ADDU T6,S0,V0
- 01CFC021 ADDU T8,T6,T7
- 93030000 LBU V1,0000 (T8)
- 00C33026 XOR A2,A2,V1
- 91020003 LBU V0,0003 (T0)
- 10400013 BEQ V0,R0,+19
- 0142C821 ADDU T9,T2,V0
- 93220000 LBU V0,0000 (T9)
- 8FAF0060 LW T7,0060 (SP)
- 02027021 ADDU T6,S0,V0
- 01CFC021 ADDU T8,T6,T7
- 8FAF005C LW T7,005C (SP)
- 93190000 LBU T9,0000 (T8)
- 01CFC021 ADDU T8,T6,T7
- 8FAF0058 LW T7,0058 (SP)
- 00B92826 XOR A1,A1,T9
- 93190000 LBU T9,0000 (T8)
- 01CFC021 ADDU T8,T6,T7
- 8FAF0054 LW T7,0054 (SP)
- 00992026 XOR A0,A0,T9
- 93190000 LBU T9,0000 (T8)
- 01CFC021 ADDU T8,T6,T7
- 00F93826 XOR A3,A3,T9
- 93190000 LBU T9,0000 (T8)
- 00D93026 XOR A2,A2,T9
- 10A00004 BEQ A1,R0,+4
- 25ADFFFF ADDIU T5,T5,FFFF
- 912E0000 LBU T6,0000 (T1)
- 01C57826 XOR T7,T6,A1
- A12F0000 SB T7,0000 (T1)
- 10800004 BEQ A0,R0,+4
- 00000000 NOP
- 91980000 LBU T8,0000 (T4)
- 0304C826 XOR T9,T8,A0
- A1990000 SB T9,0000 (T4)
- 10E00004 BEQ A3,R0,+4
- 00000000 NOP
- 916E0000 LBU T6,0000 (T3)
- 01C77826 XOR T7,T6,A3
- A16F0000 SB T7,0000 (T3)
- 10C00004 BEQ A2,R0,+4
- 00000000 NOP
- 91B80000 LBU T8,0000 (T5)
- 0306C826 XOR T9,T8,A2
- A1B90000 SB T9,0000 (T5)
- 57E0FF63 BNEL RA,R0,-157
- 9102FFFC LBU V0,FFFC (T0)
- 8FBF001C LW RA,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 27BD00D0 ADDIU SP,SP,00D0
- 03E00008 JR RA
- 00000000 NOP
- 801CDDF4 0x6F74
- 10800003 BEQ A0,R0,+3
- 00000000 NOP
- 14A00003 BNE A1,R0,+3
- 3C03801E LUI V1,801E
- 03E00008 JR RA
- 00001025 OR V0,R0,R0
- 246398D0 ADDIU V1,V1,98D0
- 00657021 ADDU T6,V1,A1
- 0064C021 ADDU T8,V1,A0
- 93190000 LBU T9,0000 (T8)
- 91CF0000 LBU T7,0000 (T6)
- 3C02801E LUI V0,801E
- 01F94021 ADDU T0,T7,T9
- 00481021 ADDU V0,V0,T0
- 904296D0 LBU V0,96D0 (V0)
- 03E00008 JR RA
- 00000000 NOP
- 801CDE38 0x6FB8
- 10800003 BEQ A0,R0,+3
- 00000000 NOP
- 14A00003 BNE A1,R0,+3
- 3C03801E LUI V1,801E
- 03E00008 JR RA
- 00001025 OR V0,R0,R0
- 246398D0 ADDIU V1,V1,98D0
- 0065C021 ADDU T8,V1,A1
- 93190000 LBU T9,0000 (T8)
- 00647021 ADDU T6,V1,A0
- 91CF0000 LBU T7,0000 (T6)
- 00194023 SUBU T0,R0,T9
- 3C02801E LUI V0,801E
- 01E84821 ADDU T1,T7,T0
- 00491021 ADDU V0,V0,T1
- 904297CF LBU V0,97CF (V0)
- 03E00008 JR RA
- 00000000 NOP
- 801CDE80 0x7000
- 27BDFFC8 ADDIU SP,SP,FFC8
- AFB1001C SW S1,001C (SP)
- 3C11801E LUI S1,801E
- 26315E80 ADDIU S1,S1,5E80
- 8E2E0000 LW T6,0000 (S1)
- AFB20020 SW S2,0020 (SP)
- 3C01BFFF LUI AT,BFFF
- 3C12801E LUI S2,801E
- AFB00018 SW S0,0018 (SP)
- 3421FFFF ORI AT,AT,FFFF
- 3090FFFF ANDI S0,A0,FFFF
- 26525EC0 ADDIU S2,S2,5EC0
- AFBF0024 SW RA,0024 (SP)
- AFA40038 SW A0,0038 (SP)
- 3C050500 LUI A1,0500
- 01C13024 AND A2,T6,AT
- AE260000 SW A2,0000 (S1)
- 34A50518 ORI A1,A1,0518
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8E440000 LW A0,0000 (S2) # p->ASIC EPI handle = @801E5EC0
- 24010001 ADDIU AT,R0,0001
- 16010004 BNE S0,AT,+4
- 00001025 OR V0,R0,R0
- 3C03801E LUI V1,801E
- 10000003 BEQ R0,R0,+3
- 24639B30 ADDIU V1,V1,9B30
- 3C03801E LUI V1,801E
- 24639AF0 ADDIU V1,V1,9AF0
- 3C07801E LUI A3,801E
- 24E767C0 ADDIU A3,A3,67C0
- 0002C880 SLL T9,V0,0x2
- 24420001 ADDIU V0,V0,0001
- 8C780000 LW T8,0000 (V1)
- 304900FF ANDI T1,V0,00FF
- 29210010 SLTI AT,T1,0010
- 00F94021 ADDU T0,A3,T9
- 01201025 OR V0,T1,R0
- 24630004 ADDIU V1,V1,0004
- 1420FFF7 BNE AT,R0,-9
- AD180000 SW T8,0000 (T0)
- 3C02801E LUI V0,801E
- 90425E96 LBU V0,5E96 (V0)
- 8CEB0010 LW T3,0010 (A3)
- 00E02025 OR A0,A3,R0
- 2450FFFF ADDIU S0,V0,FFFF
- 00105200 SLL T2,S0,0x8
- 26020007 ADDIU V0,S0,0007
- 016A6025 OR T4,T3,T2
- 01408025 OR S0,T2,R0
- ACEC0010 SW T4,0010 (A3)
- AFA2002C SW V0,002C (SP)
- 0C000D10 JAL 80003440 # cache blah blah
- 24050040 ADDIU A1,R0,0040
- 3C05801E LUI A1,801E
- 24A55EC8 ADDIU A1,A1,5EC8 # req = 801E5EC8
- 8E590000 LW T9,0000 (S2) # p->ASIC EPI handle = @801E5EC0
- 3C07801E LUI A3,801E
- 3C0D0500 LUI T5,0500
- 24E767C0 ADDIU A3,A3,67C0
- 35AD0580 ORI T5,T5,0580
- 240E0040 ADDIU T6,R0,0040
- ACA70008 SW A3,0008 (A1) # req+8 = 801E67C0
- ACAD000C SW T5,000C (A1) # req+C = 05000580: ASIC sequence data
- ACAE0010 SW T6,0010 (A1) # req+10 = length
- 240F0002 ADDIU T7,R0,0002
- AF2F0014 SW T7,0014 (T9) # EPI handle+14 = 2
- 8E440000 LW A0,0000 (S2)
- 0C001030 JAL 800040C0 # send read or write (A2) DMA request A1 using EPI handle A0
- 24060001 ADDIU A2,R0,0001 # write
- 3C04801E LUI A0,801E
- 24845E30 ADDIU A0,A0,5E30
- 00002825 OR A1,R0,R0
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001
- 8FA2002C LW V0,002C (SP)
- 3C050500 LUI A1,0500
- 34A50530 ORI A1,A1,0530 # target = 05000530: sector byte reg
- 34465900 ORI A2,V0,5900
- 0006C400 SLL T8,A2,0x10
- 03003025 OR A2,T8,R0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8E440000 LW A0,0000 (S2) # p->ASIC EPI handle = @801E5EC0
- 3C08801E LUI T0,801E
- 25085E86 ADDIU T0,T0,5E86
- 95090000 LHU T1,0000 (T0)
- 3C050500 LUI A1,0500
- 34A50528 ORI A1,A1,0528
- 312A0800 ANDI T2,T1,0800
- 51400003 BEQL T2,R0,+3
- 8E440000 LW A0,0000 (S2)
- 26100100 ADDIU S0,S0,0100
- 8E440000 LW A0,0000 (S2) # p->ASIC EPI handle = @801E5EC0
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 00103200 SLL A2,S0,0x8
- 8E2B0000 LW T3,0000 (S1)
- 3C014000 LUI AT,4000
- 3C050500 LUI A1,0500
- 01613025 OR A2,T3,AT
- AE260000 SW A2,0000 (S1)
- 34A50518 ORI A1,A1,0518
- 0C001600 JAL 80005800 # write word A2 to hardware offset A1 using EPI handle A0
- 8E440000 LW A0,0000 (S2) # p->ASIC EPI handle = @801E5EC0
- 8FBF0024 LW RA,0024 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 03E00008 JR RA
- 27BD0038 ADDIU SP,SP,0038
- 801CE030 0x71B0 handle leocmd 8: start/stop
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB30020 SW S3,0020 (SP)
- AFB2001C SW S2,001C (SP)
- AFB50028 SW S5,0028 (SP)
- AFB40024 SW S4,0024 (SP)
- AFB00014 SW S0,0014 (SP)
- 3C12801E LUI S2,801E
- 3C130005 LUI S3,0005
- AFBF002C SW RA,002C (SP)
- AFB10018 SW S1,0018 (SP)
- 24100008 ADDIU S0,R0,0008
- 36730001 ORI S3,S3,0001
- 26525E78 ADDIU S2,S2,5E78
- 3C14000D LUI S4,000D
- 3C150001 LUI S5,0001
- 8E4E0000 LW T6,0000 (S2) # leocmd = @801E5E78
- 00002825 OR A1,R0,R0
- 91C20002 LBU V0,0002 (T6)
- 304F0001 ANDI T7,V0,0001 # True if starting
- 11E00003 BEQ T7,R0,+3
- 30580002 ANDI T8,V0,0002 # True if standby mode
- 10000008 BEQ R0,R0,+8
- 02602025 OR A0,S3,R0
- 13000003 BEQ T8,R0,+3
- 30590004 ANDI T9,V0,0004 # True if brake on
- 10000004 BEQ R0,R0,+4
- 02802025 OR A0,S4,R0
- 13200002 BEQ T9,R0,+2
- 3C040004 LUI A0,0004
- 02A02825 OR A1,S5,R0
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 00000000 NOP
- 14400004 BNE V0,R0,+4
- 305100FF ANDI S1,V0,00FF
- 8E480000 LW T0,0000 (S2) # leocmd = @801E5E78
- 1000000E BEQ R0,R0,+14
- A1000004 SB R0,0004 (T0)
- 0C0732AC JAL 801CCAB0
- 02202025 OR A0,S1,R0
- 14400005 BNE V0,R0,+5
- 02001025 OR V0,S0,R0
- 2610FFFF ADDIU S0,S0,FFFF
- 320900FF ANDI T1,S0,00FF
- 1440FFE3 BNE V0,R0,-29
- 01208025 OR S0,T1,R0
- 8E4A0000 LW T2,0000 (S2) # leocmd = @801E5E78
- 240B0002 ADDIU T3,R0,0002
- A1510005 SB S1,0005 (T2)
- 8E4C0000 LW T4,0000 (S2)
- A18B0004 SB T3,0004 (T4)
- 8FBF002C LW RA,002C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 8FB40024 LW S4,0024 (SP)
- 8FB50028 LW S5,0028 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 00000000 NOP
- 801CE120 0x72A0 V0 = True if IPL valid else False
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFBF0014 SW RA,0014 (SP)
- 0C00076C JAL 80001DB0 # wait for PI I/O to complete; creates queue 80008948 if not created
- 00000000 NOP
- 3C03A460 LUI V1,A460
- 34630010 ORI V1,V1,0010
- 8C620000 LW V0,0000 (V1)
- 3C06A460 LUI A2,A460
- 34C60014 ORI A2,A2,0014
- 304E0003 ANDI T6,V0,0003
- 11C00005 BEQ T6,R0,+5
- 3C07A460 LUI A3,A460
- 8C620000 LW V0,0000 (V1)
- 304F0003 ANDI T7,V0,0003
- 55E0FFFE BNEL T7,R0,-2 # while PI Status & 3: pass
- 8C620000 LW V0,0000 (V1)
- 8CC20000 LW V0,0000 (A2) # PI Domain 1 Latency = @A4600014
- 34E7001C ORI A3,A3,001C
- 3C08A460 LUI T0,A460
- 8CE30000 LW V1,0000 (A3) # PI Domain 1 Page Size = @A460001C
- 35080020 ORI T0,T0,0020
- 3C09A460 LUI T1,A460
- 8D040000 LW A0,0000 (T0) # PI Domain 1 Release = @A4600020
- 35290018 ORI T1,T1,0018
- 8D250000 LW A1,0000 (T1) # PI Domain 1 Page Width = @A4600018
- 240A00FF ADDIU T2,R0,00FF
- ACCA0000 SW T2,0000 (A2) # latency = 0xFF
- ACE00000 SW R0,0000 (A3) # page size = 0
- 24180003 ADDIU T8,R0,0003
- AD180000 SW T8,0000 (T0) # release = 3
- AD2A0000 SW T2,0000 (T1) # width = 0xFF
- 3C19A600 LUI T9,A600
- 8F2B1010 LW T3,1010 (T9)
- AFAB001C SW T3,001C (SP) # SP+1C = @A6001010: IPL secondary confirmation test
- ACC20000 SW V0,0000 (A2)
- ACE30000 SW V1,0000 (A3)
- AD040000 SW A0,0000 (T0)
- 0C00077D JAL 80001DF4 # signal PI I/O complete; send msg 0 to queue 80008948
- AD250000 SW A1,0000 (T1)
- 8FAC001C LW T4,001C (SP)
- 3C012129 LUI AT,2129
- 3421FFF8 ORI AT,AT,FFF8
- 15810003 BNE T4,AT,+3 # return True if @A6001010 == 0x2129FFF8 else False
- 8FBF0014 LW RA,0014 (SP)
- 10000002 BEQ R0,R0,+2
- 24020001 ADDIU V0,R0,0001
- 00001025 OR V0,R0,R0
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CE1F0 0x7370 handle leocmd 0xB: select
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFB00018 SW S0,0018 (SP)
- 3C10801E LUI S0,801E
- 26105E78 ADDIU S0,S0,5E78
- 8E0E0000 LW T6,0000 (S0) # leocmd = @801E5E78
- AFBF001C SW RA,001C (SP)
- 3C040006 LUI A0,0006
- 91C5000E LBU A1,000E (T6) # standby time = leocmd[E]
- 00057C00 SLL T7,A1,0x10
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 01E02825 OR A1,T7,R0
- 54400010 BNEL V0,R0,+16
- 8E090000 LW T1,0000 (S0)
- 8E180000 LW T8,0000 (S0) # leocmd = @801E5E78
- 3C040007 LUI A0,0007
- 9305000F LBU A1,000F (T8) # sleep time = leocmd[F]
- 0005CC00 SLL T9,A1,0x10
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 03202825 OR A1,T9,R0
- 54400008 BNEL V0,R0,+8
- 8E090000 LW T1,0000 (S0)
- 8E080000 LW T0,0000 (S0) # leocmd = @801E5E78
- 3C040015 LUI A0,0015
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 8D050010 LW A1,0010 (T0) # LED on/off time = @leocmd+10
- 50400008 BEQL V0,R0,+8
- 8E0C0000 LW T4,0000 (S0)
- 8E090000 LW T1,0000 (S0) # leocmd = @801E5E78
- 240A0002 ADDIU T2,R0,0002
- A1220005 SB V0,0005 (T1) # leocmd[5] = sensecode
- 8E0B0000 LW T3,0000 (S0)
- 10000005 BEQ R0,R0,+5
- A16A0004 SB T2,0004 (T3) # leocmd[4] = 2: check condition
- 8E0C0000 LW T4,0000 (S0) # leocmd = @801E5E78
- A1820005 SB V0,0005 (T4) # leocmd[5] = sensecode
- 8E0D0000 LW T5,0000 (S0)
- A1A00004 SB R0,0004 (T5) # leocmd[4] = 0
- 8FBF001C LW RA,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 27BD0020 ADDIU SP,SP,0020
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CE2A0 0x7420 handle leocmd 9: read capacity
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C620000 LW V0,0000 (V1) # leocmd = @801E5E78
- 3C04801E LUI A0,801E
- 24845E88 ADDIU A0,A0,5E88
- 904E0002 LBU T6,0002 (V0)
- 31CF0001 ANDI T7,T6,0001
- 51E00014 BEQL T7,R0,+20 # if leocmd[2] & 1: development disk
- AC40000C SW R0,000C (V0)
- @801CE2C4: retail disk
- 90980000 LBU T8,0000 (A0) # disk type = 801E5E88[0]
- 3C08801E LUI T0,801E
- 240A10C3 ADDIU T2,R0,10C3
- 0018C840 SLL T9,T8,0x1
- 01194021 ADDU T0,T0,T9
- 95089698 LHU T0,9698 (T0) # 801D9698[disk]: highest unwritable LBA for disk type
- 3C0E801E LUI T6,801E
- 2509FFE8 ADDIU T1,T0,FFE8
- AC49000C SW T1,000C (V0) # leocmd+C = highest LBA - 24: start LBA
- 8C6B0000 LW T3,0000 (V1)
- AD6A0010 SW T2,0010 (T3) # leocmd+10 = 0x10C3: end LBA
- 908C0000 LBU T4,0000 (A0)
- 8C6F0000 LW T7,0000 (V1)
- 000C6880 SLL T5,T4,0x2
- 01CD7021 ADDU T6,T6,T5
- 8DCE96A8 LW T6,96A8 (T6)
- 10000009 BEQ R0,R0,+9
- ADEE0014 SW T6,0014 (T7)
- @801CE30C: dev disk
- AC40000C SW R0,000C (V0) # leocmd+C = 0: start LBA
- 8C790000 LW T9,0000 (V1)
- 241810C3 ADDIU T8,R0,10C3
- 3C0803D7 LUI T0,03D7
- AF380010 SW T8,0010 (T9) # leocmd+10 = 0x10C3: end LBA
- 8C690000 LW T1,0000 (V1)
- 35088F40 ORI T0,T0,8F40
- AD280014 SW T0,0014 (T1) # leocmd+14 = 0x3D78F40: size in bytes
- 8C6A0000 LW T2,0000 (V1)
- 03E00008 JR RA
- A1400004 SB R0,0004 (T2) # leocmd[4] = 0
- 00000000 NOP
- 00000000 NOP
- 801CE340 0x74C0 fill 801E5E90 with seek info for LBA A0
- accepts: A0=LBA
- 3C08801E LUI T0,801E
- 308E0001 ANDI T6,A0,0001
- 240F0002 ADDIU T7,R0,0002
- 25085E90 ADDIU T0,T0,5E90
- 27BDFFE8 ADDIU SP,SP,FFE8
- 01EEC023 SUBU T8,T7,T6
- 30820003 ANDI V0,A0,0003
- AFBF0014 SW RA,0014 (SP)
- 10400006 BEQ V0,R0,+6 # if (A0 & 3) in (0, 3): 801E5E90[A] = 0
- A1180009 SB T8,0009 (T0) # 801E5E90[9] = 2 - (A0 & 1)
- 24010003 ADDIU AT,R0,0003
- 10410003 BEQ V0,AT,+3 # else: 801E5E90[A] = 1
- 24190001 ADDIU T9,R0,0001
- 10000002 BEQ R0,R0,+2
- A119000A SB T9,000A (T0)
- @801CE37C
- A100000A SB R0,000A (T0)
- @801CE380
- 0C07394D JAL 801CE534 # vzone for LBA A0
- AFA40018 SW A0,0018 (SP)
- 3C05801E LUI A1,801E
- 90A55E88 LBU A1,5E88 (A1) # disk type = 801E5E88[0]
- 3C04801E LUI A0,801E
- 3C08801E LUI T0,801E
- 00056100 SLL T4,A1,0x4
- 01826821 ADDU T5,T4,V0
- 008D2021 ADDU A0,A0,T5
- 90849618 LBU A0,9618 (A0) # logical zone assignments for disk type = 801D9618[disk][vzone]
- 25085E90 ADDIU T0,T0,5E90
- 8FAB0018 LW T3,0018 (SP)
- 308A00FF ANDI T2,A0,00FF
- 29410008 SLTI AT,T2,0008
- A1000007 SB R0,0007 (T0) # 801E5E90[7] = 0: head
- 01401825 OR V1,T2,R0
- 14200006 BNE AT,R0,+6
- A1040008 SB A0,0008 (T0) # 801E5E90[8] = pzone same as lzone
- @801CE3C8: logical zone needs conversion to physical if over 7
- 246FFFF9 ADDIU T7,V1,FFF9
- 240E0001 ADDIU T6,R0,0001
- A10F0008 SB T7,0008 (T0) # 801E5E90[8] = lzone - 7: pzone
- A10E0007 SB T6,0007 (T0) # 801E5E90[7] = 1: head
- 31EA00FF ANDI T2,T7,00FF
- @801CE3DC
- 0004C040 SLL T8,A0,0x1
- 3C09801E LUI T1,801E
- 01384821 ADDU T1,T1,T8
- 10400008 BEQ V0,R0,+8
- 952995F8 LHU T1,95F8 (T1) # initial track for zone = 801D95F8[lzone]
- @801CE3F0
- 0005C940 SLL T9,A1,0x5
- 00026040 SLL T4,V0,0x1
- 032C6821 ADDU T5,T9,T4
- 3C03801E LUI V1,801E
- 006D1821 ADDU V1,V1,T5
- 10000002 BEQ R0,R0,+2
- 94639516 LHU V1,9516 (V1) # initial LBA for zone = 801D9518[disk][vzone-1]
- @801CE40C
- 00001825 OR V1,R0,R0 # initial LBA = 0 if vzone == 0
- @801CE410
- 910F0007 LBU T7,0007 (T0) T7 = head
- 01637023 SUBU T6,T3,V1
- 000EC842 SRL T9,T6,0x1 # T9 = (LBA - initial LBA) >> 1
- 11E00009 BEQ T7,R0,+9
- 3C01801E LUI AT,801E
- @801CE424: head 1 - count backward
- 01396023 SUBU T4,T1,T9
- 3C09801E LUI T1,801E
- 000A6840 SLL T5,T2,0x1
- 3C01801E LUI AT,801E
- 012D4821 ADDU T1,T1,T5
- A42C5E92 SH T4,5E92 (AT) # 801E5E90[0:2] = initial track - ((LBA - initial LBA) >> 1)
- 10000005 BEQ R0,R0,+5
- 95299686 LHU T1,9686 (T1) # initial track for physical zone = 801D9688[pzone - 1]
- @801CE444: head 0 - count forward
- 01637823 SUBU T7,T3,V1
- 000FC042 SRL T8,T7,0x1
- 0138C821 ADDU T9,T1,T8
- A4395E92 SH T9,5E92 (AT) # 801E5E90[0:2] = initial track + ((LBA - initial LBA) >> 1)
- @801CE454
- 10800005 BEQ A0,R0,+5
- 3C07801E LUI A3,801E
- @801CE45C
- 24E751A0 ADDIU A3,A3,51A0
- 00E46021 ADDU T4,A3,A0
- 10000004 BEQ R0,R0,+4
- 91850007 LBU A1,0007 (T4) # A1 = 801E51A0[7 + lzone]
- @801CE46C
- 3C07801E LUI A3,801E
- 24E751A0 ADDIU A3,A3,51A0
- 00002825 OR A1,R0,R0 # if not lzone, A1 = 0
- @801CE478
- 00E46821 ADDU T5,A3,A0
- 91AF0008 LBU T7,0008 (T5) # T7 = 801E51A0[8 + lzone]
- 01203025 OR A2,T1,R0
- 01E51823 SUBU V1,T7,A1
- 306EFFFF ANDI T6,V1,FFFF
- 11C00011 BEQ T6,R0,+17
- 01C01825 OR V1,T6,R0
- @801CE494
- 00E5C021 ADDU T8,A3,A1
- 93190020 LBU T9,0020 (T8) # T9 = 801E51A0[A1]
- 95040002 LHU A0,0002 (T0)
- 24A50001 ADDIU A1,A1,0001
- 03261021 ADDU V0,T9,A2
- 304CFFFF ANDI T4,V0,FFFF
- 008C082A SLT AT,A0,T4
- 14200008 BNE AT,R0,+8
- 248D0001 ADDIU T5,A0,0001
- 2463FFFF ADDIU V1,V1,FFFF
- 30AFFFFF ANDI T7,A1,FFFF
- 306EFFFF ANDI T6,V1,FFFF
- A50D0002 SH T5,0002 (T0) # 801E9E90[2:4] += 1
- 01E02825 OR A1,T7,R0
- 15C0FFF1 BNE T6,R0,-15
- 01C01825 OR V1,T6,R0
- @801CE4D4
- 3C18801E LUI T8,801E
- 030AC021 ADDU T8,T8,T2
- 931894F8 LBU T8,94F8 (T8)
- 000AC840 SLL T9,T2,0x1
- 3C0C801E LUI T4,801E
- 01996021 ADDU T4,T4,T9
- A1180006 SB T8,0006 (T0) # 801E5E90[6:8] = 801D94F8[pzone]: pzone track length
- 958C9504 LHU T4,9504 (T4)
- 3C0D801E LUI T5,801E
- 2D61000C SLTIU AT,T3,000C
- A50C0004 SH T4,0004 (T0) # 801E5E90[4:6] = 801D9504[pzone]: pzone block size
- 8DAD5E9C LW T5,5E9C (T5) # region = @801E5E9C
- 55A00007 BNEL T5,R0,+7 # return if retail
- 8FBF0014 LW RA,0014 (SP)
- 10200004 BEQ AT,R0,+4 # return if a system LBA < 12
- 240F00C0 ADDIU T7,R0,00C0
- 240E3FC0 ADDIU T6,R0,3FC0
- A10F0006 SB T7,0006 (T0) # 801E5E90[6:8] = 0xC0: dev system area track length
- A50E0004 SH T6,0004 (T0) # 801E5E90[4:6] = 0x3FC0: dev system area block size
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 00001025 OR V0,R0,R0
- 03E00008 JR RA
- 00000000 NOP
- 801CE534 0x76B4 vzone for LBA A0
- accepts: A0=LBA
- 3C0E801E LUI T6,801E
- 91CE5E88 LBU T6,5E88 (T6) # 801E5E88[0]: disk type
- 3C18801E LUI T8,801E
- 27189518 ADDIU T8,T8,9518
- 000E7940 SLL T7,T6,0x5
- 01F81021 ADDU V0,T7,T8
- 00001825 OR V1,R0,R0
- 94590000 LHU T9,0000 (V0) # LBAs per zone = 801D9518[disk type]
- 24420002 ADDIU V0,V0,0002
- 0099082B SLTU AT,A0,T9
- 50200004 BEQL AT,R0,+4 # continue until zone found
- 24630001 ADDIU V1,V1,0001
- 03E00008 JR RA
- 00601025 OR V0,V1,R0
- @801CE56C
- 24630001 ADDIU V1,V1,0001
- 3068FFFF ANDI T0,V1,FFFF
- 29010010 SLTI AT,T0,0010
- 1420FFF5 BNE AT,R0,-11
- 01001825 OR V1,T0,R0
- 240200FF ADDIU V0,R0,00FF
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 801CE590 0x7710 handle leocmd 4: rezero
- 27BDFFE0 ADDIU SP,SP,FFE0
- AFB00014 SW S0,0014 (SP)
- AFBF001C SW RA,001C (SP)
- AFB10018 SW S1,0018 (SP)
- 24100008 ADDIU S0,R0,0008
- 0C073265 JAL 801CC994
- 00000000 NOP
- 1440000B BNE V0,R0,+11
- 305100FF ANDI S1,V0,00FF
- 3C02801E LUI V0,801E
- 24425E90 ADDIU V0,V0,5E90
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C6E0000 LW T6,0000 (V1) # leocmd = @801E5E78
- A4400002 SH R0,0002 (V0) # 801E5E90[2:4] = 0
- A0400007 SB R0,0007 (V0) # 801E5E90[7] = 0
- A0400008 SB R0,0008 (V0) # 801E5E90[8] = 0
- 10000010 BEQ R0,R0,+16
- A1C00004 SB R0,0004 (T6) # 801E5E90[4] = 0
- 0C0732AC JAL 801CCAB0
- 02202025 OR A0,S1,R0
- 14400005 BNE V0,R0,+5
- 02001025 OR V0,S0,R0
- 2610FFFF ADDIU S0,S0,FFFF
- 320F00FF ANDI T7,S0,00FF
- 1440FFEB BNE V0,R0,-21
- 01E08025 OR S0,T7,R0
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C780000 LW T8,0000 (V1) # leocmd = @801E5E78
- 24190002 ADDIU T9,R0,0002
- A3110005 SB S1,0005 (T8) # leocmd[5] = sensecode
- 8C680000 LW T0,0000 (V1)
- A1190004 SB T9,0004 (T0) # leocmd[4] = 2: check condition
- 8FBF001C LW RA,001C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 00000000 NOP
- 801CE630 0x77B0 clear leocmd queue
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF0014 SW RA,0014 (SP)
- 15C00003 BNE T6,R0,+3
- 240F0001 ADDIU T7,R0,0001
- 10000008 BEQ R0,R0,+8
- 2402FFFF ADDIU V0,R0,FFFF
- A3AF001C SB T7,001C (SP) # leocmd[0] = 1: clear queue
- A3A0001D SB R0,001D (SP)
- A3A0001E SB R0,001E (SP)
- A3A0001F SB R0,001F (SP)
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- 27A4001C ADDIU A0,SP,001C
- 00001025 OR V0,R0,R0 # return 0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 801CE680 0x7800 V0=sensecode; A2 = #LBAs for A1 bytes at LBA A0
- accepts: A0=LBA, A1=length, A2=p->target
- 27BDFFC0 ADDIU SP,SP,FFC0
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 00A08025 OR S0,A1,R0
- 00808825 OR S1,A0,R0
- AFBF0034 SW RA,0034 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- 15C00003 BNE T6,R0,+3
- AFA60048 SW A2,0048 (SP)
- 1000003D BEQ R0,R0,+61
- 2402FFFF ADDIU V0,R0,FFFF
- @801CE6C4
- 00009825 OR S3,R0,R0
- 24050001 ADDIU A1,R0,0001
- 24020001 ADDIU V0,R0,0001
- 12000035 BEQ S0,R0,+53
- 26310018 ADDIU S1,S1,0018 # LBA += 24: add system LBAs
- @801CE6D8
- 3C16801E LUI S6,801E
- 3C15801E LUI S5,801E
- 3C14801E LUI S4,801E
- 3C12801E LUI S2,801E
- 26525E88 ADDIU S2,S2,5E88 # 801E5E88
- 26949518 ADDIU S4,S4,9518 # 801D9518
- 26B59618 ADDIU S5,S5,9618 # 801D9618
- 26D69504 ADDIU S6,S6,9504 # 801D9504
- 8FA40038 LW A0,0038 (SP)
- 14400009 BNE V0,R0,+9 # skip on first run
- 00000000 NOP
- @801CE704
- 924F0000 LBU T7,0000 (S2) # 801E5E88[0]: disk type
- 00054040 SLL T0,A1,0x1
- 000FC140 SLL T8,T7,0x5
- 0298C821 ADDU T9,S4,T8
- 03284821 ADDU T1,T9,T0
- 952A0000 LHU T2,0000 (T1) # LBAs for zone = 801D9518[disk][i]
- 562A0013 BNEL S1,T2,+19
- 0204082B SLTU AT,S0,A0
- @801CE724
- 0C07394D JAL 801CE534 # vzone for LBA A0
- 02202025 OR A0,S1,R0 # LBA
- 924B0000 LBU T3,0000 (S2) # 801E5E88[0]: disk type
- 3045FFFF ANDI A1,V0,FFFF
- 000B6100 SLL T4,T3,0x4
- 02AC6821 ADDU T5,S5,T4
- 01A27021 ADDU T6,T5,V0
- 91C30000 LBU V1,0000 (T6) # lzone = 801D9618[disk][vzone]: logical zone for disk type
- 28610008 SLTI AT,V1,0008
- 14200004 BNE AT,R0,+4 # pzone = zone if zone < 8 else zone - 7
- 00602025 OR A0,V1,R0
- 2483FFF9 ADDIU V1,A0,FFF9
- 306FFFFF ANDI T7,V1,FFFF
- 01E01825 OR V1,T7,R0
- 0003C040 SLL T8,V1,0x1
- 02D8C821 ADDU T9,S6,T8
- 97240000 LHU A0,0000 (T9) # A0 = 801D9504[pzone]: block size
- @801CE768: length = min(0, length - block size)
- 0204082B SLTU AT,S0,A0
- 10200003 BEQ AT,R0,+3
- 26730001 ADDIU S3,S3,0001
- 10000002 BEQ R0,R0,+2
- 00008025 OR S0,R0,R0 # if block size > length, length = 0
- @801CE77C
- 02048023 SUBU S0,S0,A0 # length -= block size
- @801CE780
- 12000006 BEQ S0,R0,+6
- 26310001 ADDIU S1,S1,0001
- 2E2110DC SLTIU AT,S1,10DC
- 14200003 BNE AT,R0,+3
- 00000000 NOP
- 10000007 BEQ R0,R0,+7 # if LBA > 0x10DC, return 0x20: LBA out of range
- 24020020 ADDIU V0,R0,0020
- @801CE79C
- 1600FFD7 BNE S0,R0,-41 # while more LBAs remain and length > 0, loop
- 00001025 OR V0,R0,R0
- AFA40038 SW A0,0038 (SP)
- 8FA80048 LW T0,0048 (SP)
- 00001025 OR V0,R0,R0
- AD130000 SW S3,0000 (T0) # A2 = #blocks
- 8FBF0034 LW RA,0034 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 03E00008 JR RA
- 27BD0040 ADDIU SP,SP,0040
- 00000000 NOP
- 801CE7E0 0x7960 handle leocmd 1: clear leo queue
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB2001C SW S2,001C (SP)
- 3C12801E LUI S2,801E
- AFB30020 SW S3,0020 (SP)
- 27B3002C ADDIU S3,SP,002C
- 26525DE8 ADDIU S2,S2,5DE8
- AFBF0024 SW RA,0024 (SP)
- AFB10018 SW S1,0018 (SP)
- AFB00014 SW S0,0014 (SP)
- 02402025 OR A0,S2,R0 # queue = 801E5DE8
- 02602825 OR A1,S3,R0 # target = SP+2C: p->leocmd
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 00003025 OR A2,R0,R0 # read
- 14400015 BNE V0,R0,+21
- 24110002 ADDIU S1,R0,0002
- @801CE81C
- 24100022 ADDIU S0,R0,0022
- 8FAE002C LW T6,002C (SP)
- 24050022 ADDIU A1,R0,0022 # msg = 0x22: command terminated
- 24060001 ADDIU A2,R0,0001 # jam
- A1D00005 SB S0,0005 (T6) # leocmd[5] = 0x22: command terminated
- 8FAF002C LW T7,002C (SP)
- A1F10004 SB S1,0004 (T7) # leocmd[4] = 2: check condition
- 8FB8002C LW T8,002C (SP)
- 93190002 LBU T9,0002 (T8)
- 33280080 ANDI T0,T9,0080
- 51000004 BEQL T0,R0,+4 # if status & 0x80, post to queue
- 02402025 OR A0,S2,R0
- @801CE84C
- 0C000788 JAL 80001E20 # send or jam (A2) msg A1 to queue A0
- 8F040008 LW A0,0008 (T8) # queue = @leocmd+8
- 02402025 OR A0,S2,R0 # queue = 801E5DE8
- 02602825 OR A1,S3,R0 # target = SP+2C: p->leocmd
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 00003025 OR A2,R0,R0 # read
- 5040FFEF BEQL V0,R0,-17
- 8FAE002C LW T6,002C (SP)
- @801CE86C
- 8FBF0024 LW RA,0024 (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 8FB2001C LW S2,001C (SP)
- 8FB30020 LW S3,0020 (SP)
- 03E00008 JR RA
- 27BD0030 ADDIU SP,SP,0030
- 801CE888 0x7A08 handle leocmd 0xF: diagnostics catching LEO_SENSE_COMMAND_PHASE_ERROR, LEO_SENSE_DEVICE_COMMUNICATION_FAILURE, LEO_SENSE_POWERONRESET_DEVICERESET_OCCURED
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C0730E0 JAL 801CC380
- 00000000 NOP
- 24010003 ADDIU AT,R0,0003
- 10410005 BEQ V0,AT,+5
- 3C03801E LUI V1,801E
- 24010029 ADDIU AT,R0,0029
- 10410002 BEQ V0,AT,+2
- 2401002B ADDIU AT,R0,002B
- 14410007 BNE V0,AT,+7
- 24635E78 ADDIU V1,V1,5E78
- 8C6E0000 LW T6,0000 (V1) # leocmd = @801E5E78
- 240F0002 ADDIU T7,R0,0002
- A1C20005 SB V0,0005 (T6) # leocmd[5] = sensecode
- 8C780000 LW T8,0000 (V1)
- 10000007 BEQ R0,R0,+7
- A30F0004 SB T7,0004 (T8) # leocmd[4] = 2: check condition
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C790000 LW T9,0000 (V1) # leocmd = @801E5E78
- A3200005 SB R0,0005 (T9)
- 8C680000 LW T0,0000 (V1)
- A1000004 SB R0,0004 (T0) # leocmd[4:6] = (0, 0)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CE900 0x7A80 handle leocmd 0xA: translate
- 27BDFFB8 ADDIU SP,SP,FFB8
- 3C03801E LUI V1,801E
- 8C635E78 LW V1,5E78 (V1) # leocmd = @801E5E78
- AFBF0034 SW RA,0034 (SP)
- AFB60030 SW S6,0030 (SP)
- AFB5002C SW S5,002C (SP)
- AFB40028 SW S4,0028 (SP)
- AFB30024 SW S3,0024 (SP)
- AFB20020 SW S2,0020 (SP)
- AFB1001C SW S1,001C (SP)
- AFB00018 SW S0,0018 (SP)
- 8C64000C LW A0,000C (V1) # LBA = @leocmd+C
- 240E0020 ADDIU T6,R0,0020
- 00009025 OR S2,R0,R0
- 2C8110C4 SLTIU AT,A0,10C4
- 14200007 BNE AT,R0,+7
- 24900018 ADDIU S0,A0,0018
- A06E0005 SB T6,0005 (V1) # leocmd[5] = 0x20: LBA out of range
- 3C18801E LUI T8,801E
- 8F185E78 LW T8,5E78 (T8)
- 240F0002 ADDIU T7,R0,0002
- 10000085 BEQ R0,R0,+133
- A30F0004 SB T7,0004 (T8) # leocmd[4] = 2: check condition
- 90790002 LBU T9,0002 (V1)
- 00008825 OR S1,R0,R0
- 24050001 ADDIU A1,R0,0001
- 33280001 ANDI T0,T9,0001
- 11000041 BEQ T0,R0,+65
- 24020001 ADDIU V0,R0,0001
- 8C710010 LW S1,0010 (V1)
- 3C16801E LUI S6,801E
- 26D69504 ADDIU S6,S6,9504
- 1220003A BEQ S1,R0,+58
- 3C15801E LUI S5,801E
- 3C14801E LUI S4,801E
- 3C13801E LUI S3,801E
- 26735E88 ADDIU S3,S3,5E88
- 26949518 ADDIU S4,S4,9518
- 26B59618 ADDIU S5,S5,9618
- 8FA30038 LW V1,0038 (SP)
- 14400009 BNE V0,R0,+9
- 00000000 NOP
- 92690000 LBU T1,0000 (S3)
- 00056040 SLL T4,A1,0x1
- 00095140 SLL T2,T1,0x5
- 028A5821 ADDU T3,S4,T2
- 016C6821 ADDU T5,T3,T4
- 95AE0000 LHU T6,0000 (T5)
- 560E0013 BNEL S0,T6,+19
- 0223082B SLTU AT,S1,V1
- 0C07394D JAL 801CE534 # vzone for LBA A0
- 02002025 OR A0,S0,R0
- 926F0000 LBU T7,0000 (S3)
- 3045FFFF ANDI A1,V0,FFFF
- 000FC100 SLL T8,T7,0x4
- 02B8C821 ADDU T9,S5,T8
- 03224021 ADDU T0,T9,V0
- 91040000 LBU A0,0000 (T0)
- 28810008 SLTI AT,A0,0008
- 14200004 BNE AT,R0,+4
- 00801825 OR V1,A0,R0
- 2464FFF9 ADDIU A0,V1,FFF9
- 3089FFFF ANDI T1,A0,FFFF
- 01202025 OR A0,T1,R0
- 00045040 SLL T2,A0,0x1
- 02CA5821 ADDU T3,S6,T2
- 95630000 LHU V1,0000 (T3)
- 0223082B SLTU AT,S1,V1
- 10200003 BEQ AT,R0,+3
- 26520001 ADDIU S2,S2,0001
- 10000002 BEQ R0,R0,+2
- 00008825 OR S1,R0,R0
- 02238823 SUBU S1,S1,V1
- 1220000C BEQ S1,R0,+12
- 26100001 ADDIU S0,S0,0001
- 2E0110DC SLTIU AT,S0,10DC
- 14200009 BNE AT,R0,+9
- 3C0D801E LUI T5,801E
- 8DAD5E78 LW T5,5E78 (T5) # leocmd = @801E5E78
- 240C0020 ADDIU T4,R0,0020
- 3C0F801E LUI T7,801E
- A1AC0005 SB T4,0005 (T5)
- 8DEF5E78 LW T7,5E78 (T7) # leocmd = @801E5E78
- 240E0002 ADDIU T6,R0,0002
- 10000046 BEQ R0,R0,+70
- A1EE0004 SB T6,0004 (T7)
- 1620FFD1 BNE S1,R0,-47
- 00001025 OR V0,R0,R0
- AFA30038 SW V1,0038 (SP)
- 3C03801E LUI V1,801E
- 8C635E78 LW V1,5E78 (V1) # leocmd = @801E5E78
- 1000003C BEQ R0,R0,+60
- AC720014 SW S2,0014 (V1)
- 8C720010 LW S2,0010 (V1)
- 3C16801E LUI S6,801E
- 26D69504 ADDIU S6,S6,9504
- 12400036 BEQ S2,R0,+54
- 3C15801E LUI S5,801E
- 3C14801E LUI S4,801E
- 3C13801E LUI S3,801E
- 26735E88 ADDIU S3,S3,5E88
- 26949518 ADDIU S4,S4,9518
- 26B59618 ADDIU S5,S5,9618
- 8FA30038 LW V1,0038 (SP)
- 14400009 BNE V0,R0,+9
- 00000000 NOP
- 92780000 LBU T8,0000 (S3)
- 00054840 SLL T1,A1,0x1
- 0018C940 SLL T9,T8,0x5
- 02994021 ADDU T0,S4,T9
- 01095021 ADDU T2,T0,T1
- 954B0000 LHU T3,0000 (T2)
- 560B0013 BNEL S0,T3,+19
- 2652FFFF ADDIU S2,S2,FFFF
- 0C07394D JAL 801CE534 # vzone for LBA A0
- 02002025 OR A0,S0,R0
- 926C0000 LBU T4,0000 (S3)
- 3045FFFF ANDI A1,V0,FFFF
- 000C6900 SLL T5,T4,0x4
- 02AD7021 ADDU T6,S5,T5
- 01C27821 ADDU T7,T6,V0
- 91E40000 LBU A0,0000 (T7)
- 28810008 SLTI AT,A0,0008
- 14200004 BNE AT,R0,+4
- 00801825 OR V1,A0,R0
- 2464FFF9 ADDIU A0,V1,FFF9
- 3098FFFF ANDI T8,A0,FFFF
- 03002025 OR A0,T8,R0
- 0004C840 SLL T9,A0,0x1
- 02D94021 ADDU T0,S6,T9
- 95030000 LHU V1,0000 (T0)
- 2652FFFF ADDIU S2,S2,FFFF
- 02238821 ADDU S1,S1,V1
- 1240000C BEQ S2,R0,+12
- 26100001 ADDIU S0,S0,0001
- 2E0110DC SLTIU AT,S0,10DC
- 14200009 BNE AT,R0,+9
- 3C0A801E LUI T2,801E
- 8D4A5E78 LW T2,5E78 (T2) # leocmd = @801E5E78
- 24090020 ADDIU T1,R0,0020
- 3C0C801E LUI T4,801E
- A1490005 SB T1,0005 (T2)
- 8D8C5E78 LW T4,5E78 (T4) # leocmd = @801E5E78
- 240B0002 ADDIU T3,R0,0002
- 1000000A BEQ R0,R0,+10
- A18B0004 SB T3,0004 (T4)
- 1640FFD5 BNE S2,R0,-43
- 00001025 OR V0,R0,R0
- AFA30038 SW V1,0038 (SP)
- 3C03801E LUI V1,801E
- 8C635E78 LW V1,5E78 (V1) # leocmd = @801E5E78
- AC710014 SW S1,0014 (V1)
- 3C0D801E LUI T5,801E
- 8DAD5E78 LW T5,5E78 (T5) # leocmd = @801E5E78
- A1A00004 SB R0,0004 (T5)
- 8FBF0034 LW RA,0034 (SP)
- 8FB00018 LW S0,0018 (SP)
- 8FB1001C LW S1,001C (SP)
- 8FB20020 LW S2,0020 (SP)
- 8FB30024 LW S3,0024 (SP)
- 8FB40028 LW S4,0028 (SP)
- 8FB5002C LW S5,002C (SP)
- 8FB60030 LW S6,0030 (SP)
- 03E00008 JR RA
- 27BD0048 ADDIU SP,SP,0048
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CEBA0 0x7D20 handle leocmd 0xD: read time
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFBF0014 SW RA,0014 (SP)
- 0C073BA5 JAL 801CEE94 # read time from RTC to A0
- 27A40020 ADDIU A0,SP,0020
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C6F0000 LW T7,0000 (V1) # leocmd = @801E5E78
- 93AE0020 LBU T6,0020 (SP)
- A1EE000E SB T6,000E (T7)
- 8C790000 LW T9,0000 (V1)
- 93B80021 LBU T8,0021 (SP)
- A338000F SB T8,000F (T9)
- 8C690000 LW T1,0000 (V1)
- 93A80022 LBU T0,0022 (SP)
- A1280010 SB T0,0010 (T1)
- 8C6B0000 LW T3,0000 (V1)
- 93AA0023 LBU T2,0023 (SP)
- A16A0011 SB T2,0011 (T3)
- 8C6D0000 LW T5,0000 (V1)
- 93AC0024 LBU T4,0024 (SP)
- A1AC0012 SB T4,0012 (T5)
- 8C6F0000 LW T7,0000 (V1)
- 93AE0025 LBU T6,0025 (SP)
- 10400007 BEQ V0,R0,+7
- A1EE0013 SB T6,0013 (T7)
- 8C780000 LW T8,0000 (V1)
- 24190002 ADDIU T9,R0,0002
- A3020005 SB V0,0005 (T8)
- 8C680000 LW T0,0000 (V1)
- 1000000D BEQ R0,R0,+13
- A1190004 SB T9,0004 (T0)
- 8C620000 LW V0,0000 (V1)
- 240A0019 ADDIU T2,R0,0019
- 240B0020 ADDIU T3,R0,0020
- 9049000E LBU T1,000E (V0)
- 2D210096 SLTIU AT,T1,0096
- 54200004 BNEL AT,R0,+4
- A04B000D SB T3,000D (V0)
- 10000002 BEQ R0,R0,+2
- A04A000D SB T2,000D (V0)
- A04B000D SB T3,000D (V0)
- 8C6C0000 LW T4,0000 (V1)
- A1800004 SB R0,0004 (T4)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 801CEC5C 0x7DDC handle leocmd 0xE: set time
- 3C0D801E LUI T5,801E
- 25AD5E78 ADDIU T5,T5,5E78
- 8DA80000 LW T0,0000 (T5) # leocmd = @801E5E78
- 27BDFFA8 ADDIU SP,SP,FFA8
- 3C0A801E LUI T2,801E
- AFBF0014 SW RA,0014 (SP)
- 254A9B78 ADDIU T2,T2,9B78
- 8FA60038 LW A2,0038 (SP)
- 8FA4003C LW A0,003C (SP)
- 00001825 OR V1,R0,R0
- 240C0002 ADDIU T4,R0,0002
- 240B001D ADDIU T3,R0,001D
- 24090001 ADDIU T1,R0,0001
- 24070006 ADDIU A3,R0,0006
- 2505000E ADDIU A1,T0,000E
- 90A20000 LBU V0,0000 (A1)
- 3C0F801E LUI T7,801E
- 24A50001 ADDIU A1,A1,0001
- 304E000F ANDI T6,V0,000F
- 2DC1000A SLTIU AT,T6,000A
- 14200006 BNE AT,R0,+6
- 0002C902 SRL T9,V0,0x4
- 240F0024 ADDIU T7,R0,0024
- A10F0005 SB T7,0005 (T0)
- 8DB80000 LW T8,0000 (T5)
- 10000070 BEQ R0,R0,+112
- A30C0004 SB T4,0004 (T8)
- 03270019 MULTU T9,A3
- 25EF9B70 ADDIU T7,T7,9B70
- 00007012 MFLO T6
- 004E1023 SUBU V0,V0,T6
- 10690015 BEQ V1,T1,+21
- 00000000 NOP
- 106C0005 BEQ V1,T4,+5
- 0146C021 ADDU T8,T2,A2
- 3C0F801E LUI T7,801E
- 25EF9B70 ADDIU T7,T7,9B70 # 801D9B70: maximums for each RTC element
- 10000016 BEQ R0,R0,+22
- 006F2021 ADDU A0,V1,T7
- 93190000 LBU T9,0000 (T8)
- 308E0003 ANDI T6,A0,0003
- 0322082B SLTU AT,T9,V0
- 1020000A BEQ AT,R0,+10
- 00000000 NOP
- 544B0004 BNEL V0,T3,+4
- 240F0024 ADDIU T7,R0,0024
- 11C00006 BEQ T6,R0,+6
- 00000000 NOP
- 240F0024 ADDIU T7,R0,0024
- A10F0005 SB T7,0005 (T0)
- 8DB80000 LW T8,0000 (T5)
- 10000056 BEQ R0,R0,+86
- A30C0004 SB T4,0004 (T8)
- 14400006 BNE V0,R0,+6
- 006F2021 ADDU A0,V1,T7
- 24190024 ADDIU T9,R0,0024
- A1190005 SB T9,0005 (T0)
- 8DAE0000 LW T6,0000 (T5)
- 1000004F BEQ R0,R0,+79
- A1CC0004 SB T4,0004 (T6)
- 90980000 LBU T8,0000 (A0)
- 24630001 ADDIU V1,V1,0001
- 00C02025 OR A0,A2,R0
- 0302082B SLTU AT,T8,V0
- 10200005 BEQ AT,R0,+5
- 24190024 ADDIU T9,R0,0024
- A1190005 SB T9,0005 (T0)
- 8DAE0000 LW T6,0000 (T5)
- 10000045 BEQ R0,R0,+69
- A1CC0004 SB T4,0004 (T6)
- 1467FFC8 BNE V1,A3,-56
- 00403025 OR A2,V0,R0
- AFA20038 SW V0,0038 (SP)
- AFA4003C SW A0,003C (SP)
- 910F000E LBU T7,000E (T0)
- 27A40028 ADDIU A0,SP,0028
- A3AF0028 SB T7,0028 (SP)
- 9118000F LBU T8,000F (T0)
- A3B80029 SB T8,0029 (SP)
- 91190010 LBU T9,0010 (T0)
- A3B9002A SB T9,002A (SP)
- 910E0011 LBU T6,0011 (T0)
- A3AE002B SB T6,002B (SP)
- 910F0012 LBU T7,0012 (T0)
- A3AF002C SB T7,002C (SP)
- 91180013 LBU T8,0013 (T0)
- 0C073C01 JAL 801CF004 # write time from A0 to RTC
- A3B8002D SB T8,002D (SP)
- 3C0D801E LUI T5,801E
- 25AD5E78 ADDIU T5,T5,5E78
- 10400006 BEQ V0,R0,+6
- 240C0002 ADDIU T4,R0,0002
- 8DB90000 LW T9,0000 (T5) # leocmd = @801E5E78
- A3220005 SB V0,0005 (T9)
- 8DAE0000 LW T6,0000 (T5)
- 1000002A BEQ R0,R0,+42
- A1CC0004 SB T4,0004 (T6)
- 0C073BA5 JAL 801CEE94 # read time from RTC to A0
- 27A40028 ADDIU A0,SP,0028
- 3C0D801E LUI T5,801E
- 25AD5E78 ADDIU T5,T5,5E78
- 10400006 BEQ V0,R0,+6
- 240C0002 ADDIU T4,R0,0002
- 8DAF0000 LW T7,0000 (T5) # leocmd = @801E5E78
- A1E20005 SB V0,0005 (T7)
- 8DB80000 LW T8,0000 (T5)
- 1000001F BEQ R0,R0,+31
- A30C0004 SB T4,0004 (T8)
- 8DA80000 LW T0,0000 (T5)
- 93AE0028 LBU T6,0028 (SP)
- 93B80029 LBU T8,0029 (SP)
- 9119000E LBU T9,000E (T0)
- 572E0014 BNEL T9,T6,+20
- 24190024 ADDIU T9,R0,0024
- 910F000F LBU T7,000F (T0)
- 93AE002A LBU T6,002A (SP)
- 55F80010 BNEL T7,T8,+16
- 24190024 ADDIU T9,R0,0024
- 91190010 LBU T9,0010 (T0)
- 93B8002B LBU T8,002B (SP)
- 572E000C BNEL T9,T6,+12
- 24190024 ADDIU T9,R0,0024
- 910F0011 LBU T7,0011 (T0)
- 93AE002C LBU T6,002C (SP)
- 55F80008 BNEL T7,T8,+8
- 24190024 ADDIU T9,R0,0024
- 91190012 LBU T9,0012 (T0)
- 93B8002D LBU T8,002D (SP)
- 572E0004 BNEL T9,T6,+4
- 24190024 ADDIU T9,R0,0024
- 910F0013 LBU T7,0013 (T0)
- 11F80005 BEQ T7,T8,+5
- 24190024 ADDIU T9,R0,0024
- A1190005 SB T9,0005 (T0)
- 8DAE0000 LW T6,0000 (T5)
- 10000002 BEQ R0,R0,+2
- A1CC0004 SB T4,0004 (T6)
- A1000004 SB R0,0004 (T0)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0058 ADDIU SP,SP,0058
- 03E00008 JR RA
- 00000000 NOP
- 801CEE94 0x8014 read time from RTC to A0
- accepts: A0=p->target
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFB00018 SW S0,0018 (SP)
- 00808025 OR S0,A0,R0
- AFBF001C SW RA,001C (SP)
- 3C040014 LUI A0,0014
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 00002825 OR A1,R0,R0 # read month/year from RTC
- 10400003 BEQ V0,R0,+3
- 304300FF ANDI V1,V0,00FF
- 1000004D BEQ R0,R0,+77 # if sensecode, return sensecode
- 00601025 OR V0,V1,R0
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500 # target = 05000500: ASIC data
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A6002C ADDIU A2,SP,002C
- 8FAE002C LW T6,002C (SP) # month/year
- 3C01FF00 LUI AT,FF00
- 3C040013 LUI A0,0013
- 01C17824 AND T7,T6,AT
- 000FC602 SRL T8,T7,0x18
- A2180004 SB T8,0004 (S0)
- 8FB9002C LW T9,002C (SP)
- 3C0100FF LUI AT,00FF
- 00002825 OR A1,R0,R0 # read hour/day from RTC
- 03214024 AND T0,T9,AT
- 00084C02 SRL T1,T0,0x10
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- A2090005 SB T1,0005 (S0)
- 10400006 BEQ V0,R0,+6
- 304300FF ANDI V1,V0,00FF
- 920A0004 LBU T2,0004 (S0)
- 00601025 OR V0,V1,R0
- 314BFF7F ANDI T3,T2,FF7F
- 10000033 BEQ R0,R0,+51
- A20B0004 SB T3,0004 (S0)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A6002C ADDIU A2,SP,002C
- 8FAC002C LW T4,002C (SP)
- 3C01FF00 LUI AT,FF00
- 3C040012 LUI A0,0012
- 01816824 AND T5,T4,AT
- 000D7602 SRL T6,T5,0x18
- A20E0002 SB T6,0002 (S0)
- 8FAF002C LW T7,002C (SP)
- 3C0100FF LUI AT,00FF
- 00002825 OR A1,R0,R0
- 01E1C024 AND T8,T7,AT
- 0018CC02 SRL T9,T8,0x10
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- A2190003 SB T9,0003 (S0)
- 10400006 BEQ V0,R0,+6
- 304300FF ANDI V1,V0,00FF
- 92080004 LBU T0,0004 (S0)
- 00601025 OR V0,V1,R0
- 3109FF7F ANDI T1,T0,FF7F
- 10000019 BEQ R0,R0,+25
- A2090004 SB T1,0004 (S0)
- 3C04801E LUI A0,801E
- 3C050500 LUI A1,0500
- 34A50500 ORI A1,A1,0500
- 8C845EC0 LW A0,5EC0 (A0) # p->ASIC EPI handle = @801E5EC0
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A6002C ADDIU A2,SP,002C
- 8FAA002C LW T2,002C (SP)
- 3C01FF00 LUI AT,FF00
- 92030004 LBU V1,0004 (S0)
- 01415824 AND T3,T2,AT
- 000B6602 SRL T4,T3,0x18
- A20C0000 SB T4,0000 (S0)
- 8FAD002C LW T5,002C (SP)
- 3C0100FF LUI AT,00FF
- 30780080 ANDI T8,V1,0080
- 01A17024 AND T6,T5,AT
- 000E7C02 SRL T7,T6,0x10
- 13000005 BEQ T8,R0,+5
- A20F0001 SB T7,0001 (S0)
- 3079FF7F ANDI T9,V1,FF7F
- A2190004 SB T9,0004 (S0)
- 10000002 BEQ R0,R0,+2
- 24020005 ADDIU V0,R0,0005
- 00001025 OR V0,R0,R0
- 8FBF001C LW RA,001C (SP)
- 8FB00018 LW S0,0018 (SP)
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 801CF004 0x8184 write time from A0 to RTC
- accepts: A0=p->time
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF0014 SW RA,0014 (SP)
- 908A0003 LBU T2,0003 (A0)
- 90880002 LBU T0,0002 (A0)
- 90980001 LBU T8,0001 (A0)
- 908E0000 LBU T6,0000 (A0)
- 000A5C00 SLL T3,T2,0x10
- 00084E00 SLL T1,T0,0x18
- 012B6021 ADDU T4,T1,T3
- AFAC0020 SW T4,0020 (SP)
- 0018CC00 SLL T9,T8,0x10
- 90980005 LBU T8,0005 (A0)
- 908D0004 LBU T5,0004 (A0)
- 000E7E00 SLL T7,T6,0x18
- 01F92821 ADDU A1,T7,T9
- 00187C00 SLL T7,T8,0x10
- 000D7600 SLL T6,T5,0x18
- 01CFC821 ADDU T9,T6,T7
- AFB9001C SW T9,001C (SP)
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 3C04000F LUI A0,000F
- 1440000B BNE V0,R0,+11
- 304300FF ANDI V1,V0,00FF
- 3C040010 LUI A0,0010
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 8FA50020 LW A1,0020 (SP)
- 14400006 BNE V0,R0,+6
- 304300FF ANDI V1,V0,00FF
- 3C040011 LUI A0,0011
- 0C073216 JAL 801CC858 # V0 = sensecode; send command A0, data A1 to ASIC
- 8FA5001C LW A1,001C (SP)
- 10400003 BEQ V0,R0,+3
- 304300FF ANDI V1,V0,00FF
- 10000002 BEQ R0,R0,+2
- 00601025 OR V0,V1,R0
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801CF0B0 0x8230 V0 = offset in IPL font to wchar A0's image (shift-jis)
- accepts: A0=wchar (shift-jis)
- 34018140 ORI AT,R0,8140
- 0081082A SLT AT,A0,AT
- 14200029 BNE AT,R0,+41
- 34019873 ORI AT,R0,9873
- 0081082A SLT AT,A0,AT
- 10200026 BEQ AT,R0,+38
- 34018800 ORI AT,R0,8800
- 0081082A SLT AT,A0,AT
- 14200010 BNE AT,R0,+16
- 240600BC ADDIU A2,R0,00BC
- 00042A02 SRL A1,A0,0x8
- 20A5FF78 ADDI A1,A1,FF78
- 00C50019 MULTU A2,A1
- 308700FF ANDI A3,A0,00FF
- 20E7FFC0 ADDI A3,A3,FFC0
- 28E10040 SLTI AT,A3,0040
- 00003012 MFLO A2
- 54200003 BNEL AT,R0,+3
- 00003012 MFLO A2
- 20E7FFFF ADDI A3,A3,FFFF
- 00003012 MFLO A2
- 20E7030A ADDI A3,A3,030A
- 00E63820 ADD A3,A3,A2
- 03E00008 JR RA
- 000711C0 SLL V0,A3,0x7
- @
- 00042A02 SRL A1,A0,0x8
- 20A5FF7F ADDI A1,A1,FF7F
- 00C50019 MULTU A2,A1
- 308700FF ANDI A3,A0,00FF
- 20E7FFC0 ADDI A3,A3,FFC0
- 28E10040 SLTI AT,A3,0040
- 00003012 MFLO A2
- 54200003 BNEL AT,R0,+3
- 00003012 MFLO A2
- 20E7FFFF ADDI A3,A3,FFFF
- 00003012 MFLO A2
- 00E63820 ADD A3,A3,A2
- 3C06801D LUI A2,801D
- 00073840 SLL A3,A3,0x1
- 24C6F168 ADDIU A2,A2,F168
- 00E63820 ADD A3,A3,A2
- 84E60000 LH A2,0000 (A3)
- 03E00008 JR RA
- 000611C0 SLL V0,A2,0x7
- @
- 03E00008 JR RA
- 2402FFFF ADDIU V0,R0,FFFF
- 801CF168 0x82E8 shift-jis to font index table
- 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 000A 000B 000C 000D 000E 000F
- 0010 0011 0012 0013 0014 0015 0016 0017 0018 0019 001A 001B 001C 001D 001E 001F
- 0020 0021 0022 0023 0024 0025 0026 0027 0028 0029 002A 002B 002C 002D 002E 002F
- 0030 0031 0032 0033 0034 0035 0036 0037 0038 0039 003A 003B 003C 003D 003E 003F
- 0040 0041 0042 0043 0044 0045 0046 0047 0048 0049 004A 004B 004C 004D 004E 004F
- 0050 0051 0052 0053 0054 0055 0056 0057 0058 0059 005A 005B 005C 005D 005E 005F
- 0060 0061 0062 0063 0064 0065 0066 0067 0068 0069 006A 006B 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 006C 006D 006E 006F 0070 0071 0072 0073 0000
- 0000 0000 0000 0000 0000 0000 0000 0074 0075 0076 0077 0078 0079 007A 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 007B 007C 007D 007E 007F 0080
- 0081 0082 0083 0084 0085 0086 0087 0088 0000 0000 0000 0000 0000 0000 0000 0089
- 008A 008B 008C 008D 008E 008F 0090 0000 0000 0000 0000 0091 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0092 0093 0094 0095 0096
- 0097 0098 0099 009A 009B 0000 0000 0000 0000 0000 0000 0000 009C 009D 009E 009F
- 00A0 00A1 00A2 00A3 00A4 00A5 00A6 00A7 00A8 00A9 00AA 00AB 00AC 00AD 00AE 00AF
- 00B0 00B1 00B2 00B3 00B4 00B5 0000 0000 0000 0000 0000 0000 00B6 00B7 00B8 00B9
- 00BA 00BB 00BC 00BD 00BE 00BF 00C0 00C1 00C2 00C3 00C4 00C5 00C6 00C7 00C8 00C9
- 00CA 00CB 00CC 00CD 00CE 00CF 0000 0000 0000 0000 00D0 00D1 00D2 00D3 00D4 00D5
- 00D6 00D7 00D8 00D9 00DA 00DB 00DC 00DD 00DE 00DF 00E0 00E1 00E2 00E3 00E4 00E5
- 00E6 00E7 00E8 00E9 00EA 00EB 00EC 00ED 00EE 00EF 00F0 00F1 00F2 00F3 00F4 00F5
- 00F6 00F7 00F8 00F9 00FA 00FB 00FC 00FD 00FE 00FF 0100 0101 0102 0103 0104 0105
- 0106 0107 0108 0109 010A 010B 010C 010D 010E 010F 0110 0111 0112 0113 0114 0115
- 0116 0117 0118 0119 011A 011B 011C 011D 011E 011F 0120 0121 0122 0123 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0124 0125 0126 0127 0128 0129 012A 012B
- 012C 012D 012E 012F 0130 0131 0132 0133 0134 0135 0136 0137 0138 0139 013A 013B
- 013C 013D 013E 013F 0140 0141 0142 0143 0144 0145 0146 0147 0148 0149 014A 014B
- 014C 014D 014E 014F 0150 0151 0152 0153 0154 0155 0156 0157 0158 0159 015A 015B
- 015C 015D 015E 015F 0160 0161 0162 0163 0164 0165 0166 0167 0168 0169 016A 016B
- 016C 016D 016E 016F 0170 0171 0172 0173 0174 0175 0176 0177 0178 0179 0000 0000
- 0000 0000 0000 0000 0000 0000 017A 017B 017C 017D 017E 017F 0180 0181 0182 0183
- 0184 0185 0186 0187 0188 0189 018A 018B 018C 018D 018E 018F 0190 0191 0000 0000
- 0000 0000 0000 0000 0000 0000 0192 0193 0194 0195 0196 0197 0198 0199 019A 019B
- 019C 019D 019E 019F 01A0 01A1 01A2 01A3 01A4 01A5 01A6 01A7 01A8 01A9 01AA 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 01AB 01AC 01AD 01AE 01AF 01B0 01B1 01B2 01B3 01B4 01B5 01B6
- 01B7 01B8 01B9 01BA 01BB 01BC 01BD 01BE 01BF 01C0 01C1 01C2 01C3 01C4 01C5 01C6
- 01C7 01C8 01C9 01CA 01CB 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 01CC 01CD 01CE 01CF 01D0 01D1 01D2 01D3 01D4 01D5 01D6 01D7
- 01D8 01D9 01DA 01DB 01DC 01DD 01DE 01DF 01E0 01E1 01E2 01E3 01E4 01E5 01E6 01E7
- 01E8 01E9 01EA 01EB 01EC 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 01ED 01EE 01EF 01F0 01F1 01F2 01F3 01F4 01F5 01F6 01F7 01F8 01F9 01FA
- 01FB 01FC 01FD 01FE 01FF 0200 0201 0202 0203 0204 0205 0206 0207 0208 0209 020A
- 020B 020C 020D 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 020E 020F 0210 0211 0212 0213 0214 0215 0216 0217 0218 0219 021A 021B 021C 021D
- 021E 021F 0220 0221 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0222 0223
- 0224 0225 0226 0227 0228 0229 022A 022B 022C 022D 022E 022F 0230 0231 0232 0233
- 0234 0235 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0236 0237 0238 0239
- 023A 023B 023C 023D 023E 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 023F 0240 0241 0242 0243 0244 0245 0246 0247 0248 0000 0000 0000 0000 0249 024A
- 024B 024C 024D 024E 024F 0250 0251 0252 0253 0254 0255 0256 0257 0000 0000 0000
- 0000 0000 0258 0259 025A 025B 025C 025D 025E 025F 0260 0261 0262 0263 0264 0265
- 0266 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0267 0268 0269 026A 026B 026C
- 026D 026E 026F 0270 0271 0272 0273 0274 0275 0276 0277 0278 0279 027A 027B 027C
- 027D 027E 027F 0280 0281 0000 0000 0000 0000 0000 0000 0000 0282 0283 0284 0285
- 0286 0287 0288 0289 028A 028B 028C 028D 028E 028F 0290 0291 0292 0293 0294 0295
- 0296 0297 0298 0299 029A 029B 029C 029D 029E 029F 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 02A0 02A1 02A2 02A3 02A4 02A5 02A6 02A7 02A8 02A9
- 02AA 02AB 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 02AC 02AD
- 02AE 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 02AF 02B0 02B1 02B2 02B3 02B4 02B5 02B6 02B7 02B8 02B9 02BA 02BB 02BC
- 02BD 02BE 02BF 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 02C0 02C1 02C2 02C3 02C4 02C5 02C6 02C7
- 02C8 02C9 02CA 02CB 02CC 02CD 02CE 02CF 02D0 02D1 02D2 02D3 02D4 02D5 02D6 02D7
- 02D8 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 02D9 02DA 02DB 02DC 02DD 02DE 02DF 02E0
- 02E1 02E2 02E3 02E4 02E5 02E6 02E7 02E8 02E9 02EA 02EB 02EC 02ED 02EE 02EF 02F0
- 02F1 02F2 02F3 02F4 02F5 02F6 02F7 02F8 02F9 02FA 02FB 02FC 02FD 0000 0000 0000
- 0000 0000 0000 0000 02FE 02FF 0300 0301 0302 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0303 0304 0305 0306
- 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
- 0000 0307 0308 0309
- 801CFBB0 0x8D30 V0 = IPL hardware address of image for char A0 - 32; A1 = width, A2 = height, A3 = alignment
- accepts: A0=char - 32
- 04800019 BLTZ A0,+25
- 28810908 SLTI AT,A0,0908
- 10200017 BEQ AT,R0,+23
- 00000000 NOP
- 3C03801D LUI V1,801D
- 00044080 SLL T0,A0,0x2
- 2463FC20 ADDIU V1,V1,FC20
- 01034820 ADD T1,T0,V1 # LeoGetAAdr2 entry = 801CFC20[A0]
- 91380002 LBU T8,0002 (T1)
- 95390000 LHU T9,0000 (T1)
- 3C010007 LUI AT,0007
- 330A000F ANDI T2,T8,000F
- 214B0001 ADDI T3,T2,0001
- ACCB0000 SW T3,0000 (A2) # A2 = height
- 81280003 LB T0,0003 (T1)
- 00186102 SRL T4,T8,0x4
- 3421EE80 ORI AT,AT,EE80
- 310D0001 ANDI T5,T0,0001
- 000D7100 SLL T6,T5,0x4
- 01CC7825 OR T7,T6,T4
- ACAF0000 SW T7,0000 (A1)
- 00191040 SLL V0,T9,0x1
- 00081843 SRA V1,T0,0x1
- ACE30000 SW V1,0000 (A3)
- 03E00008 JR RA
- 00411020 ADDU V0,V0,AT # V0 = 0x7EE80 + LeoGetAAdr2[0:2] << 1
- 03E00008 JR RA
- 2402FFFF ADDIU V0,R0,FFFF
- 801CFC20 0x8DA0 copy of LeoGetAAdr2
- 0000 9D 14 0023 2A 14 0029 63 14 002F 8A 14 0045 7E 18 0063 CA 14 0084 AA 14 00A0 33 14
- 00A4 5E 14 00BB 4E 14 00CA 65 14 00D3 77 0E 00E3 33 02 00E7 81 08 00EB 21 02 00EC 6C 14
- 0100 8A 14 0116 3A 14 0121 7A 14 0137 7A 14 014D 8A 14 0163 8A 14 0179 8A 14 018F 7A 14
- 01A5 8A 14 01BB 8A 14 01D1 17 0E 01D5 49 0E 01DF 77 0E 01EF 74 0A 01F9 77 0E 0209 7A 14
- 021F DC 16 024D BA 14 026E 7A 14 0284 BA 14 02A5 9A 14 02C1 6A 14 02D2 6A 14 02E3 BA 14
- 0304 8A 14 031A 1A 14 0320 6A 14 0331 8A 14 0347 6A 14 0358 CA 14 0379 9A 14 0395 CA 14
- 03B6 7A 14 03CC CA 14 03ED 8A 14 0403 7A 14 0419 6A 14 042A 8A 14 0440 AA 14 045C DA 14
- 0483 9A 14 049F 9A 14 04BB 7A 14 04D1 4D 14 04DF 5C 14 04F3 3D 14 0501 52 16 0506 81 FA
- 050A 9D 14 052D 98 10 0544 9A 14 0560 98 10 0577 9A 14 0593 98 10 05AA 5A 14 05BB 9C 10
- 05DC 7A 14 05F2 2A 14 05F8 3D 14 0606 7A 14 061C 2A 14 0622 D8 10 0642 78 10 0654 98 10
- 066B 9B 10 0689 9B 10 06A7 48 10 06B0 68 10 06BE 5A 14 06CF 77 0E 06DF 87 0E 06EF B7 0E
- 0707 67 0E 0713 8A 0E 0729 67 0E 0735 6D 14 074A 1F 16 0752 6D 14 0767 52 16 076C 9D 14
- 078F 9D 14 07B2 2A 0E 07B8 8B 14 07D0 8A 14 07E6 98 16 07FD 9A 14 0819 3F 16 0829 6C 14
- 083D 51 14 0840 CA 14 0861 66 14 086C 65 0C 0875 83 0A 087D 9D 14 08A0 CA 14 08C1 41 14
- 08C3 53 18 08C9 88 10 08DB 9D 14 08FE 9D 14 0921 32 16 0924 9A 0E 0940 7A 14 0956 44 0E
- 095B 33 02 095F 9D 14 0982 66 14 098D 65 0C 0996 0A 15 09C2 C5 14 09D4 07 0F 09F4 7A 0E
- 0A0A BE 1C 0A37 BE 1C 0A64 BE 1C 0A91 BD 1A 0ABB BD 1A 0AE5 BE 1C 0B12 FA 14 0B3E BE 14
- 0B6B 7E 1C 0B89 7E 1C 0BA7 7E 1C 0BC5 7D 1A 0BE1 3E 1C 0BF0 4E 1C 0BFF 4E 1C 0C0E 5D 1A
- 0C23 9D 14 0C46 9D 1A 0C69 BE 1C 0C96 BE 1C 0CC3 BE 1C 0CF0 BD 1A 0D1A BD 1A 0D44 77 0E
- 0D54 CC 16 0D7B 8E 1C 0D99 8E 1C 0DB7 7E 1C 0DD5 7D 1A 0DF1 9D 14 0E14 9D 14 0E37 9A 14
- 0E53 9B 16 0E71 9B 16 0E8F 9B 16 0EAD 9B 16 0ECB 9A 14 0EE7 9B 16 0F05 08 11 0F29 9B 10
- 0F47 9B 16 0F65 9B 16 0F83 9B 16 0FA1 9A 14 0FBD 3B 16 0FC9 3A 16 0FD4 4B 16 0FE0 4A 14
- 0FEB 79 12 0FFF 8B 16 1017 9B 16 1035 9B 16 1053 9B 16 1071 9B 16 108F 9A 14 10AB 76 0C
- 10B9 99 10 10D2 8B 16 10EA 8B 16 1102 8B 16 111A 8A 14 1130 9D 14 1153 9D 14 1176 9D 14
- 1199 6F 18 11B1 3A 14 11BC 75 14 11C8 89 12 11DC 9D 16 11FF EA 14 1226 CA 14 1247 45 14
- 124D 4D 14 125B 4D 14 1269 66 14 1274 87 0E 1284 34 04 1289 91 08 128E 42 04 1291 6C 14
- 12A5 AA 14 12C1 7A 14 12D7 9A 14 12F3 AA 14 130F AA 14 132B 9B 16 1349 AA 14 1365 AA 14
- 1381 AA 14 139D AA 14 13B9 37 0E 13C1 39 0E 13CB 77 0E 13DB 75 0C 13E7 77 0E 13F7 9A 14
- 1413 CC 14 143A CA 14 145B BA 14 147C BA 14 149D BA 14 14BE BA 14 14DF BA 14 1500 BA 14
- 1521 CA 14 1542 6A 14 1553 AA 14 156F CA 14 1590 AA 14 15AC FA 14 15D8 CA 14 15F9 BA 14
- 161A AA 14 1636 CE 14 1663 CA 14 1684 9A 14 16A0 CA 14 16C1 BA 14 16E2 CA 14 1703 EA 14
- 172A CA 14 174B CA 14 176C AA 14 1788 3D 14 1796 6C 14 17AA 3D 14 17B8 52 14 17BD 92 FC
- 17C5 5F 1A 17DD 87 0E 17ED AA 14 1809 87 0E 1819 9A 14 1835 97 0E 1849 7A 14 185F 9C 10
- 1880 BA 14 18A1 5A 14 18B2 6E 14 18C9 AA 14 18E5 5A 14 18F6 F7 0E 1916 A7 0E 192A 97 0E
- 193E AB 0E 195C 9B 0E 197A 77 0E 198A 77 0E 199A 69 12 19A9 A7 0E 19BD A6 0E 19CF D7 0E
- 19EB A7 0E 19FF AB 0E 1A1D 87 0E 1A2D 6D 14 1A42 3F 16 1A52 6D 14 1A67 52 14 1A6C 6F 18
- 1A84 6F 16 1A9C 3A 0E 1AA7 8B 14 1ABF AA 14 1ADB 86 14 1AE9 BA 14 1B0A 2F 16 1B12 8A 14
- 1B28 52 14 1B2D BB 14 1B51 66 14 1B5C 86 0C 1B6A 73 0A 1B72 6E 16 1B89 BB 14 1BAD 50 12
- 1BAF 53 16 1BB5 89 10 1BC9 5F 18 1BE1 5F 18 1BF9 53 16 1BFF A9 0C 1C18 8A 14 1C2E 54 0E
- 1C36 34 04 1C3B 6D 14 1C50 66 14 1C5B 86 0C 1C69 09 13 1C91 C5 12 1CA3 D7 0E 1CBF 9A 0E
- 1CDB CD 1A 1D05 CD 1A 1D2F CD 1A 1D59 CD 1A 1D83 CD 1A 1DAD CE 1C 1DDA 2A 15 1E0C BD 14
- 1E36 BD 1A 1E60 BD 1A 1E8A BD 1A 1EB4 BC 18 1EDB 6D 1A 1EF0 6D 1A 1F05 6D 1A 1F1A 6D 1A
- 1F2F 5F 1A 1F47 BD 1A 1F71 CD 1A 1F9B CD 1A 1FC5 CD 1A 1FEF CD 1A 2019 CD 1A 2043 97 0E
- 2057 CB 14 207B AD 1A 209E BD 1A 20C8 BD 1A 20F2 BD 1A 211C 6F 1A 2134 5F 1A 214C AA 14
- 2168 9B 16 2186 9B 16 21A4 9A 14 21C0 AA 14 21DC 9A 14 21F8 9B 16 2216 D7 0E 2232 9B 0E
- 2250 8B 16 2268 9B 16 2286 9A 14 22A2 9A 14 22BE 5B 16 22D0 5B 16 22E2 5A 14 22F3 5A 14
- 2304 89 12 2318 AA 14 2334 9B 16 2352 9B 16 2370 9A 14 238C 9A 14 23A8 9A 14 23C4 99 10
- 23DD 9A 10 23F9 AB 16 2417 AB 16 2435 AA 14 2451 AA 14 246D 5F 18 2485 5F 18 249D AE 14
- 24C3 9D 14 24E6 2A 14 24EC 53 14 24F2 89 12 2506 8D 16 2522 CA 14 2543 CA 14 2564 23 14
- 2566 3C 14 2573 3C 14 2580 65 14 2589 77 0E 2599 33 02 259D 90 06 25A0 31 02 25A2 6C 14
- 25B6 9A 14 25D2 6A 14 25E3 8A 14 25F9 9A 14 2615 9A 14 2631 8A 14 2647 8A 14 265D 99 12
- 2676 9A 14 2692 8A 14 26A8 26 0C 26AC 48 0C 26B5 87 0E 26C5 74 0A 26CF 77 0E 26DF 8A 14
- 26F5 DC 14 2723 CA 14 2744 A9 12 275D AA 14 2779 B9 12 2797 A9 12 27B0 A9 12 27C9 BA 14
- 27EA C9 12 2808 59 12 2817 99 12 2830 B9 12 284E 99 12 2867 D9 12 288A B9 12 28A8 CA 14
- 28C9 99 12 28E2 CD 14 290C B9 12 292A 9A 14 2946 A9 12 295F B9 12 297D C9 12 299B 09 13
- 29C3 C9 12 29E1 B9 12 29FF 99 12 2A18 3B 12 2A24 6C 14 2A38 3B 12 2A44 52 14 2A49 81 FA
- 2A4D 9D 14 2A70 97 0E 2A84 9A 14 2AA0 77 0E 2AB0 9A 14 2ACC 87 0E 2ADC 6A 14 2AED 9C 10
- 2B0E 9A 14 2B2A 49 12 2B34 6D 12 2B49 9A 14 2B65 5A 14 2B76 F7 0E 2B96 A7 0E 2BAA 97 0E
- 2BBE 9B 0E 2BDC AB 0E 2BFA 77 0E 2C0A 77 0E 2C1A 69 12 2C29 A7 0E 2C3D 97 0E 2C51 C7 0E
- 2C69 A7 0E 2C7D 9B 0E 2C9B 77 0E 2CAB 5C 12 2CBF 2F 16 2CC7 6C 12 2CDB 52 14 2CE0 8D 14
- 2CFC 9D 14 2D1F 2A 0E 2D25 7B 14 2D3D 9A 14 2D59 97 14 2D6D B9 12 2D8B 2F 16 2D93 7A 14
- 2DA9 51 12 2DAC CB 14 2DD0 77 14 2DE0 76 0C 2DEE 73 0A 2DF6 9D 14 2E19 BB 14 2E3D 51 12
- 2E40 53 16 2E46 88 10 2E58 9D 14 2E7B 9D 14 2E9E 42 14 2EA1 9A 0C 2EBD 7A 14 2ED3 44 0E
- 2ED8 23 02 2EDA 8D 14 2EF6 67 14 2F02 76 0C 2F10 0A 15 2F3C C6 14 2F51 C7 0E 2F69 8A 0E
- 2F7F CD 1A 2FA9 CD 1A 2FD3 BD 1A 2FFD CD 1A 3027 CC 18 304E CE 1C 307B 09 13 30A3 BD 14
- 30CD AD 1A 30F0 BD 1A 311A BD 1A 3144 AC 18 3165 4D 1A 3173 4D 1A 3181 4D 1A 318F 5C 18
- 31A3 9D 14 31C6 BD 1A 31F0 CD 1A 321A CD 1A 3244 CD 1A 326E CD 1A 3298 CC 18 32BF A7 0E
- 32D3 BB 14 32F7 BD 1A 3321 CD 1A 334B BD 1A 3375 BC 18 339C 8D 14 33B8 8D 14 33D4 9A 14
- 33F0 9A 14 340C 9A 14 3428 9A 14 3444 9A 14 3460 99 12 3479 9B 16 3497 C7 0E 34AF 7A 0E
- 34C5 8A 14 34DB 8A 14 34F1 7A 14 3507 79 12 351B 5A 14 352C 5A 14 353D 5A 14 354E 69 12
- 355D 79 12 3571 9A 14 358D 8A 14 35A3 8A 14 35B9 8A 14 35CF 8A 14 35E5 89 12 35F9 87 0E
- 3609 99 10 3622 AA 14 363E AA 14 365A AA 14 3676 99 12 368F 8D 14 36AB 8D 14 36C7 9D 12
- 36EA 6F 18 3702 49 12 370C 74 12 3716 6B 14 3728 8C 14 3742 79 12 3756 88 10 3768 44 12
- 376D 5C 12 3781 5C 12 3795 76 12 37A3 97 10 37B7 44 04 37BC A1 08 37C1 33 06 37C5 7B 14
- 37DD 89 12 37F1 79 12 3805 79 12 3819 89 12 382D 89 12 3841 79 12 3855 79 12 3869 79 12
- 387D 89 12 3891 89 12 38A5 37 0E 38AD 48 0C 38B6 97 10 38CA 94 0E 38D7 97 10 38EB 79 12
- 38FF 8B 14 3917 A9 12 3930 99 12 3949 89 12 395D 89 12 3971 99 12 398A 99 12 39A3 99 12
- 39BC 99 12 39D5 79 12 39E9 99 12 3A02 99 12 3A1B 99 12 3A34 A9 12 3A4D 99 12 3A66 99 12
- 3A7F 89 12 3A93 9B 12 3AB1 99 12 3ACA 89 12 3ADE 89 12 3AF2 99 12 3B0B 99 12 3B24 A9 12
- 3B3D 89 12 3B51 89 12 3B65 79 12 3B79 4C 12 3B86 7B 14 3B9E 4C 12 3BAB 62 14 3BB0 A2 FC
- 3BB8 5F 1A 3BD0 87 0E 3BE0 99 12 3BF9 87 0E 3C09 89 12 3C1D 87 0E 3C2D 89 12 3C41 9A 0E
- 3C5D 89 12 3C71 8A 14 3C87 7D 14 3CA3 99 12 3CBC 89 12 3CD0 A7 0E 3CE4 97 0E 3CF8 97 0E
- 3D0C 9B 0E 3D2A AB 0E 3D48 97 0E 3D5C 77 0E 3D6C 89 12 3D80 97 0E 3D94 97 0E 3DA8 A7 0E
- 3DBC 87 0E 3DCC 9A 0E 3DE8 77 0E 3DF8 6D 12 3E0D 2F 16 3E15 6D 12 3E2A 62 12 3E2F 6F 16
- 3E47 6F 16 3E5F 49 12 3E69 7A 14 3E7F 79 12 3E93 86 12 3EA1 99 12 3EBA 3F 16 3ECA 8A 12
- 3EE0 61 12 3EE3 A8 12 3EFA 77 12 3F0A 55 0C 3F13 95 0E 3F22 6E 16 3F39 98 12 3F50 61 12
- 3F53 43 16 3F57 88 12 3F69 5F 18 3F81 5F 18 3F99 52 14 3F9E 9A 0E 3FBA 79 12 3FCE 32 0C
- 3FD1 44 04 3FD6 6D 14 3FEB 77 12 3FFB 65 0C 4004 87 10 4014 83 10 401C 86 0E 402A 79 12
- 403E AC 18 405F AC 18 4080 AC 18 40A1 AB 16 40BF AB 16 40DD AD 1A 4100 B9 12 411E 8C 12
- 4138 8C 18 4152 9C 18 4173 9C 18 4194 8B 16 41AC 7C 18 41C6 7C 18 41E0 7C 18 41FA 7B 16
- 4212 5F 1A 422A AB 16 4248 9C 18 4269 9C 18 428A 9C 18 42AB 9B 16 42C9 9B 16 42E7 87 0E
- 42F7 9A 12 4313 9C 18 4334 9C 18 4355 AC 18 4376 AB 16 4394 6F 1A 43AC 5F 1A 43C4 89 12
- 43D8 8A 14 43EE 8A 14 4404 9A 14 4420 99 12 4439 89 12 444D 8B 16 4465 97 0E 4479 8A 0E
- 448F 8A 14 44A5 8A 14 44BB 9A 14 44D7 99 12 44F0 8A 14 4506 8A 14 451C 7A 14 4532 79 12
- 4546 89 12 455A 99 12 4573 8A 14 4589 8A 14 459F 99 12 45B8 99 12 45D1 99 12 45EA A9 12
- 4603 99 10 461C 9A 14 4638 9A 14 4654 8A 14 466A 99 12 4683 5F 18 469B 5F 18 46B3 8C 12
- 46CD 3C 16 46DA 3C 16 46E7 75 16 46F3 9A 14 470F 7E 18 472D DC 16 475B BC 16 4782 45 16
- 4788 4F 18 4798 4F 18 47A8 55 16 47B1 87 0E 47C1 55 04 47CA 81 0A 47CE 43 04 47D2 8F 18
- 47F2 9C 16 4813 4B 16 481F 8B 16 4837 8C 16 4851 9B 16 486F 8C 16 4889 8C 16 48A3 8B 16
- 48BB 8C 16 48D5 8C 16 48EF 38 0E 48F8 4A 0E 4903 97 0E 4917 85 0C 4923 87 0E 4933 7C 16
- 494D CC 16 4974 BB 16 4998 8B 16 49B0 9C 16 49D1 AB 16 49EF 7B 16 4A07 7B 16 4A1F BC 16
- 4A46 AB 16 4A64 3B 16 4A70 6C 16 4A84 9B 16 4AA2 6B 16 4AB4 DC 16 4AE2 AC 16 4B03 CC 16
- 4B2A 8B 16 4B42 CC 16 4B69 8B 16 4B81 8C 16 4B9B 7B 16 4BB3 9C 16 4BD4 BC 16 4BFB FC 16
- 4C2F AB 16 4C4D AB 16 4C6B 9B 16 4C89 3E 18 4C98 8C 18 4CB2 4E 18 4CC1 63 16 4CC7 81 FC
- 4CCB 3C 16 4CD8 88 0E 4CEA 8D 18 4D06 68 0E 4D14 9D 18 4D37 88 0E 4D49 5C 18 4D5D 8B 0E
- 4D75 7C 18 4D8F 3B 16 4D9B 3F 16 4DAB 8C 18 4DC5 3C 18 4DD2 B7 0E 4DEA 77 0E 4DFA 98 0E
- 4E11 9B 0E 4E2F 9B 0E 4E4D 67 0E 4E59 68 0E 4E67 49 12 4E71 78 0E 4E83 98 0E 4E9A D8 0E
- 4EBA A7 0E 4ECE 9B 0E 4EEC 77 0E 4EFC 5F 18 4F14 2C 18 4F1B 4F 18 4F2B 71 14 4F2F 3C 16
- 4F3C 3C 10 4F49 3B 0E 4F55 6A 14 4F66 9C 16 4F87 98 10 4F9E 9B 16 4FBC 2C 18 4FC3 8E 18
- 4FE1 62 16 4FE6 DC 16 5014 66 16 501F 77 10 502F 84 0C 5039 3C 1A 5046 DC 16 5074 71 16
- 5078 43 16 507C 89 12 5090 3C 14 509D 3C 14 50AA 43 16 50AE 7B 0E 50C6 AE 16 50EC 66 10
- 50F7 55 04 5100 3C 18 510D 66 16 5118 87 10 5128 FC 16 515C E6 16 5175 D8 0E 5195 8B 0E
- 51AD CC 18 51D4 BC 18 51FB BC 18 5222 BC 18 5249 CC 18 5270 BC 18 5297 FB 16 52C7 9E 16
- 52ED 6C 18 5301 6C 18 5315 7C 18 532F 7C 18 5349 4C 18 5356 4C 18 5363 6C 18 5377 7C 18
- 5391 3C 18 539E AD 18 53C1 CD 18 53EB CD 18 5415 CD 18 543F CD 18 5469 CC 18 5490 97 0E
- 54A4 CC 16 54CB 9D 18 54EE 9D 18 5511 9D 18 5534 9D 18 5557 3C 18 5564 3C 18 5571 9D 18
- 5594 8C 16 55AE 9C 16 55CF 8C 16 55E9 9B 14 5607 8C 16 5621 9C 16 5642 C8 0E 565D 6A 0E
- 566E 8C 16 5688 7C 16 56A2 8C 16 56BC 7C 16 56D6 4B 16 56E2 4B 16 56EE 6B 16 5700 7B 16
- 5718 7B 16 5730 7A 14 5746 9C 16 5767 8C 16 5781 8C 16 579B 9B 14 57B9 9C 16 57DA 88 0E
- 57EC 98 0E 5803 8C 16 581D 8C 16 5837 8C 16 5851 8C 16 586B 3C 16 5878 3C 16 5885 9F 16
- 58AD 6F 18 58C5 5C 16 58D9 85 16 58E5 9B 14 5903 8E 18 5921 BC 16 5948 AC 16 5969 55 16
- 5972 4F 18 5982 5F 18 599A 65 16 59A3 97 0E 59B7 55 04 59C0 81 0A 59C4 33 04 59C8 AF 18
- 59F0 9C 16 5A11 5B 16 5A23 9B 16 5A41 8C 16 5A5B 9B 16 5A79 9C 16 5A9A 9C 16 5ABB AC 16
- 5ADC 8C 16 5AF6 9C 16 5B17 48 0E 5B20 6A 0E 5B31 97 0E 5B45 95 0C 5B54 97 0E 5B68 7C 16
- 5B82 CC 16 5BA9 BB 16 5BCD 9B 16 5BEB 9C 16 5C0C BB 16 5C30 9B 16 5C4E 9B 16 5C6C BC 16
- 5C93 BB 16 5CB7 5B 16 5CC9 8C 16 5CE3 BB 16 5D07 7B 16 5D1F DC 16 5D4D CC 16 5D74 DC 16
- 5DA2 9B 16 5DC0 CC 16 5DE7 9B 16 5E05 9C 16 5E26 8B 16 5E3E AC 16 5E5F BC 16 5E86 0C 17
- 5EBA BB 16 5EDE AB 16 5EFC BB 16 5F20 5E 18 5F37 6E 18 5F4E 6E 18 5F65 53 16 5F6B 91 FC
- 5F70 6F 1A 5F88 98 0E 5F9F 9D 18 5FC2 68 0E 5FD0 AD 18 5FF3 88 0E 6005 6C 18 6019 9B 0E
- 6037 8C 18 6051 5B 16 6063 6F 16 607B 9C 18 609C 5C 18 60B0 C7 0E 60C8 87 0E 60D8 88 0E
- 60EA 9B 0E 6108 9B 0E 6126 77 0E 6136 68 0E 6144 69 12 6153 78 0E 6165 98 0E 617C D8 0E
- 619C A7 0E 61B0 AB 0E 61CE A7 0E 61E2 6F 18 61FA 4C 18 6207 6F 18 621F 71 14 6223 6F 18
- 623B 6F 16 6253 4B 0E 625F 7A 14 6275 AC 16 6296 A8 10 62AD AB 16 62CB 4C 18 62D8 8E 18
- 62F6 62 16 62FB DC 16 6329 76 16 6337 87 10 6347 94 0C 6354 6F 18 636C DC 16 639A 61 16
- 639D 43 16 63A1 99 12 63BA 6F 18 63D2 6F 18 63EA 53 16 63F0 9B 0E 640E 9E 16 6434 66 10
- 643F 55 04 6448 6F 18 6460 76 16 646E 87 10 647E FA 14 64AA D5 14 64BF C6 0C 64D4 7B 0E
- 64EC CC 18 6513 BC 18 653A BC 18 6561 CC 18 6588 CC 18 65AF BC 18 65D6 FB 16 6606 AE 16
- 662C 8C 18 6646 8C 18 6660 9C 18 6681 9C 18 66A2 5C 18 66B6 6C 18 66CA 7C 18 66E4 7C 18
- 66FE 6F 1A 6716 CD 18 6740 DD 18 6771 CD 18 679B CD 18 67C5 CD 18 67EF DD 18 6820 A7 0E
- 6834 FC 16 6868 AD 18 688B AD 18 68AE AD 18 68D1 AD 18 68F4 6F 1A 690C 6F 1A 6924 9D 18
- 6947 9C 16 6968 9C 16 6989 9C 16 69AA 9B 14 69C8 9C 16 69E9 9C 16 6A0A D8 0E 6A2A 7A 0E
- 6A40 8C 16 6A5A 8C 16 6A74 8C 16 6A8E 8C 16 6AA8 5B 16 6ABA 5B 16 6ACC 6B 16 6ADE 6B 16
- 6AF0 7B 16 6B08 9A 14 6B24 8C 16 6B3E 9C 16 6B5F 9C 16 6B80 8B 14 6B98 8C 16 6BB2 98 0E
- 6BC9 98 0E 6BE0 8C 16 6BFA 8C 16 6C14 8C 16 6C2E 8C 16 6C48 6F 18 6C60 6F 18 6C78 AF 16
- 6CA0 6F 18 6CB8 2A 14 6CBE 43 14 6CC2 9A 14 6CDE 8D 16 6CFA DB 14 6D24 9B 14 6D42 23 14
- 6D44 5D 14 6D59 4D 14 6D67 54 14 6D6F 87 0E 6D7F 24 02 6D82 91 08 6D87 21 02 6D88 5A 14
- 6D99 8B 14 6DB1 5A 14 6DC2 8A 14 6DD8 8B 14 6DF0 8A 14 6E06 8B 14 6E1E 8B 14 6E36 8A 14
- 6E4C 8B 14 6E64 8B 14 6E7C 27 0E 6E80 2A 0E 6E86 97 0E 6E9A 85 0C 6EA6 97 0E 6EBA 7A 14
- 6ED0 DB 14 6EFA AA 14 6F16 9A 14 6F32 AB 14 6F50 9A 14 6F6C 9A 14 6F88 9A 14 6FA4 AB 14
- 6FC2 AA 14 6FDE 2A 14 6FE4 7B 14 6FFC 9A 14 7018 8A 14 702E BA 14 704F 9A 14 706B BB 14
- 708F 9A 14 70AB BB 14 70CF 9A 14 70EB 9B 14 7109 AA 14 7125 9B 14 7143 AA 14 715F EA 14
- 7186 AA 14 71A2 AA 14 71BE 9A 14 71DA 3D 14 71E8 7A 14 71FE 4D 14 720C 52 14 7211 90 FC
- 7214 5F 1A 722C 89 10 7240 8B 14 7258 89 10 726C 7C 16 7286 89 10 729A 6A 14 72AB 8C 10
- 72C5 7A 14 72DB 2A 14 72E1 4E 14 72F0 7A 14 7306 2A 14 730C B8 10 7327 78 10 7339 89 10
- 734D 8C 10 7367 8C 10 7381 58 10 738F 79 10 73A3 4A 12 73AE 78 0E 73C0 87 0E 73D0 B7 0E
- 73E8 77 0E 73F8 8B 0E 7410 77 0E 7420 5D 14 7435 2A 14 743B 6D 14 7450 61 14 7453 6F 18
- 746B 6F 16 7483 2A 0E 7489 8B 12 74A1 8B 14 74B9 87 10 74C9 9A 14 74E5 2A 14 74EB 7E 14
- 7509 41 14 750B BA 14 752C 54 14 7534 65 0C 753D 84 0A 7547 6E 16 755E BA 14 757F 61 14
- 7582 33 16 7586 87 0E 7596 5F 18 75AE 5F 18 75C6 42 14 75C9 9B 0E 75E7 8D 14 7603 43 0C
- 7607 24 02 760A 6D 14 761F 54 14 7627 55 0C 7630 FB 14 7660 C5 14 7672 E8 0E 7692 8A 0E
- 76A8 AD 1A 76CB AD 1A 76EE AD 1A 7711 AD 1A 7734 AD 1A 7757 AE 1C 777D FA 14 77A9 AD 14
- 77CC 8D 1A 77E8 8D 1A 7804 8D 1A 7820 8C 18 783A 4D 1A 7848 3D 1A 7856 5D 1A 786B 5D 1A
- 7880 5F 1A 7898 AD 1A 78BB CE 1A 78E8 BE 1A 7915 BE 1A 7942 BE 1A 796F CD 18 7999 87 0E
- 79A9 BB 14 79CD 9E 1A 79F3 9E 1A 7A19 9E 1A 7A3F AE 1A 7A65 6F 1A 7A7D 5F 1A 7A95 8B 14
- 7AAD 8C 16 7AC7 8C 16 7AE1 8C 16 7AFB 8B 14 7B13 8B 14 7B2B 8C 16 7B45 D9 10 7B68 7C 10
- 7B82 8C 16 7B9C 8C 16 7BB6 8C 16 7BD0 8B 14 7BE8 4B 16 7BF4 4B 16 7C00 5B 16 7C12 4B 16
- 7C1E 7B 14 7C36 7A 14 7C4C 8C 16 7C66 8C 16 7C80 8C 16 7C9A 8B 14 7CB2 8B 14 7CCA 87 0E
- 7CDA 89 10 7CEE 7C 16 7D08 8C 16 7D22 7C 16 7D3C 7B 14 7D54 5F 18 7D6C 5F 18 7D84 8E 14
- 7DA2 6F 16 7DBA 3A 14 7DC5 64 14 7DCD 9A 14 7DE9 8D 16 7E05 EB 14 7E2F BB 14 7E53 34 14
- 7E58 4D 14 7E66 4D 14 7E74 64 14 7E7C 87 0E 7E8C 34 02 7E91 92 0A 7E99 31 02 7E9B 7A 14
- 7EB1 8B 14 7EC9 5A 14 7EDA 8A 14 7EF0 8B 14 7F08 8A 14 7F1E 8B 14 7F36 8B 14 7F4E 8A 14
- 7F64 8B 14 7F7C 9B 14 7F9A 37 0E 7FA2 3A 0E 7FAD A8 0E 7FC4 96 0C 7FD6 98 0E 7FED 9A 14
- 8009 DC 16 8037 BA 14 8058 AA 14 8074 BB 14 8098 AA 14 80B4 9A 14 80D0 9A 14 80EC BB 14
- 8110 AA 14 812C 3A 14 8137 8B 14 814F AA 14 816B 9A 14 8187 BA 14 81A8 AA 14 81C4 BB 14
- 81E8 9A 14 8204 BB 14 8228 AA 14 8244 AB 14 8262 AA 14 827E 9B 14 829C AA 14 82B8 FA 14
- 82E4 AA 14 8300 AA 14 831C 9A 14 8338 4D 14 8346 6A 14 8357 5D 14 836C 62 16 8371 90 FC
- 8374 5F 18 838C 89 10 83A0 9B 14 83BE 89 10 83D2 9B 14 83F0 99 10 8409 5A 14 841A 8C 10
- 8434 8A 14 844A 3A 14 8455 4E 14 8464 8A 14 847A 2A 14 8480 C8 10 849B 88 10 84AD 99 10
- 84C6 8C 10 84E0 9C 10 8501 58 10 850F 89 10 8523 5A 14 8534 88 0E 8546 87 0E 8556 C7 0E
- 856E 87 0E 857E 8B 0E 8596 87 0E 85A6 5D 14 85BB 3A 14 85C6 6D 14 85DB 72 16 85E1 6F 18
- 85F9 6F 14 8611 3A 0E 861C 8B 12 8634 8B 14 864C 87 10 865C 9A 14 8678 3A 14 8683 8D 14
- 869F 61 14 86A2 BA 14 86C3 65 14 86CC 75 0C 86D8 95 0C 86E7 5F 16 86FF BA 14 8720 61 14
- 8723 43 18 8727 97 0E 873B 5F 16 8753 5F 16 876B 41 14 876D AB 0E 878B 9D 14 87AE 43 0C
- 87B2 34 02 87B7 6F 16 87CF 65 14 87D8 65 0C 87E1 EC 14 880F C5 12 8821 E9 0E 8844 8A 0E
- 885A AD 1A 887D BD 1A 88A7 BD 1A 88D1 BD 1A 88FB AD 1A 891E BE 1C 894B FA 14 8977 AE 14
- 899D 9D 1A 89C0 9D 1A 89E3 9D 1A 8A06 9D 1A 8A29 4D 1A 8A37 4D 1A 8A45 6D 1A 8A5A 6D 1A
- 8A6F 5F 18 8A87 AD 1A 8AAA BE 1A 8AD7 BE 1A 8B04 BE 1A 8B31 BE 1A 8B5E BE 1A 8B8B 87 0E
- 8B9B BB 14 8BBF 9E 1A 8BE5 9E 1A 8C0B AE 1A 8C31 AE 1A 8C57 5F 18 8C6F 5F 18 8C87 8B 14
- 8C9F 8B 14 8CB7 9B 14 8CD5 8C 16 8CEF 8C 16 8D09 8B 14 8D21 9D 18 8D44 D9 10 8D67 8C 10
- 8D81 8B 14 8D99 9B 14 8DB7 9C 16 8DD8 8B 14 8DF0 5A 14 8E01 5A 14 8E12 5A 14 8E23 6A 14
- 8E34 8B 14 8E4C 8B 16 8E64 9B 14 8E82 9B 14 8EA0 9C 16 8EC1 9C 16 8EE2 9B 14 8F00 87 0E
- 8F10 A9 10 8F29 8B 14 8F41 8B 14 8F59 8C 16 8F73 8C 16 8F8D 5F 18 8FA5 5F 18 8FBD 8F 16
- 8FDD 6F 16 8FF5 4A 12 9000 43 12 9004 9A 12 9020 9C 14 9041 BA 12 9062 8A 12 9078 23 12
- 907A 6C 12 908E 5C 12 90A2 54 12 90AA 87 0C 90BA 33 00 90BE 80 06 90C0 21 00 90C1 7A 12
- 90D7 8A 12 90ED 5A 12 90FE 9A 12 911A 8A 12 9130 8A 12 9146 9A 12 9162 8A 12 9178 8A 12
- 918E 8A 12 91A4 7A 12 91BA 37 0E 91C2 4A 0E 91CD 98 0E 91E4 94 0A 91F1 98 0E 9208 7A 12
- 921E CB 14 9242 AA 12 925E 9A 12 927A BB 14 929E AA 12 92BA BA 12 92DB AA 12 92F7 BB 14
- 931B BA 12 933C 4A 12 9347 8A 12 935D BA 12 937E 8A 12 9394 CA 12 93B5 AA 12 93D1 BB 14
- 93F5 AA 12 9411 BB 14 9435 AA 12 9451 9B 14 946F 9A 12 948B AA 12 94A7 AA 12 94C3 DA 12
- 94EA BA 12 950B 9A 12 9527 BA 12 9548 5C 12 955C 3A 12 9567 5C 12 957B 51 12 957E 80 FC
- 9580 3F 18 9590 78 0E 95A2 9A 12 95BE 88 0E 95D0 9A 12 95EC 88 0E 95FE 5A 12 960F 9B 0E
- 962D 8A 12 9643 4A 12 964E 6D 12 9663 8A 12 9679 4A 12 9684 C8 0E 969F 88 0E 96B1 88 0E
- 96C3 9B 0E 96E1 8B 0E 96F9 68 0E 9707 78 0E 9719 5A 12 972A 88 0E 973C 88 0E 974E A8 0E
- 9765 98 0E 977C 9B 0E 979A 88 0E 97AC 7C 12 97C6 3A 12 97D1 6C 12 97E5 61 12 97E8 6F 18
- 9800 4F 14 9810 4A 0E 981B 8A 10 9831 9A 12 984D 86 0E 985B 9A 12 9877 4A 12 9882 7D 12
- 989E 51 12 98A1 BA 12 98C2 55 14 98CB 74 0A 98D5 84 0A 98DF 5F 14 98F7 BA 12 9918 51 12
- 991B 32 14 991E 87 0C 992E 5F 16 9946 5F 16 995E 31 12 9960 BB 0E 9984 8C 12 999E 33 0C
- 99A2 23 00 99A4 6F 16 99BC 55 14 99C5 64 0A 99CD FB 14 99FD B4 12 9A0C D8 0E 9A2C 7A 0E
- 9A42 AD 18 9A65 AD 18 9A88 9D 18 9AAB AD 18 9ACE AD 18 9AF1 AE 1A 9B17 FA 12 9B43 BE 14
- 9B70 BD 18 9B9A AD 18 9BBD AD 18 9BE0 AD 18 9C03 5D 18 9C18 6D 18 9C2D 6D 18 9C42 6D 18
- 9C57 3F 18 9C67 BD 18 9C91 BD 18 9CBB BD 18 9CE5 BD 18 9D0F BD 18 9D39 BD 18 9D63 98 0E
- 9D7A DB 14 9DA4 AD 18 9DC7 AD 18 9DEA AD 18 9E0D AD 18 9E30 5F 18 9E48 5F 18 9E60 8A 12
- 9E76 8B 14 9E8E 8B 14 9EA6 8B 14 9EBE 8B 14 9ED6 8A 12 9EEC 8C 16 9F06 D8 0E 9F26 7B 0E
- 9F3E 8B 14 9F56 7B 14 9F6E 8B 14 9F86 8A 12 9F9C 3B 14 9FA8 5B 14 9FBA 5B 14 9FCC 5A 12
- 9FDD 8A 12 9FF3 8B 14 A00B 8B 14 A023 8B 14 A03B 8B 14 A053 8B 14 A06B 8A 12 A081 86 0C
- A08F 98 0E A0A6 7B 14 A0BE 8B 14 A0D6 8B 14 A0EE 8A 12 A104 5E 16 A11B 5E 16 A132 9D 12
- A155 6F 1A A16D 1B 16 A173 53 16 A179 7B 16 A191 5D 18 A1A6 7B 16 A1BE 5B 16 A1D0 23 16
- A1D2 2F 18 A1DA 2F 18 A1E2 33 16 A1E6 54 0C A1EE 24 04 A1F1 50 08 A1F3 12 04 A1F5 3A 16
- A200 4B 16 A20C 2B 16 A212 4B 16 A21E 5B 16 A230 4B 16 A23C 5B 16 A24E 4B 16 A25A 5B 16
- A26C 4B 16 A278 5B 16 A28A 17 10 A28E 28 0E A293 68 10 A2A1 53 0C A2A7 58 10 A2B5 4B 16
- A2C1 7C 18 A2DB 5B 16 A2ED 4B 16 A2F9 6C 18 A30D 5B 16 A31F 5B 16 A331 5C 18 A345 6C 18
- A359 5B 16 A36B 2A 16 A371 4B 16 A37D 6B 16 A38F 5B 16 A3A1 7B 16 A3B9 6B 16 A3CB 6C 18
- A3DF 5B 16 A3F1 6D 18 A406 5C 18 A41A 6C 18 A42E 6A 16 A43F 5B 16 A451 6B 16 A463 8C 18
- A47D 5B 16 A48F 5B 16 A4A1 5B 16 A4B3 2E 16 A4BB 3A 16 A4C6 2E 16 A4CE 53 1A A4D4 70 FC
- A4D6 5F 1C A4EE 48 10 A4F7 5B 16 A509 59 12 A518 5B 16 A52A 58 10 A538 3C 18 A545 4B 10
- A551 4B 16 A55D 2B 16 A563 2E 16 A56B 4B 16 A577 2B 16 A57D 68 10 A58B 48 10 A594 59 12
- A5A3 4B 10 A5AF 5B 10 A5C1 38 10 A5CA 59 12 A5D9 3A 14 A5E4 48 10 A5ED 58 10 A5FB 68 10
- A609 48 10 A612 5B 10 A624 58 10 A632 4E 16 A641 2E 16 A649 4E 16 A658 61 16 A65B 6C 18
- A66F 5E 16 A686 2B 10 A68C 5C 14 A6A0 4B 16 A6AC 57 12 A6B8 4A 16 A6C3 2B 16 A6C9 4E 16
- A6D8 31 16 A6DA 7B 16 A6F2 36 18 A6F9 65 0E A702 44 0C A707 6B 16 A719 7B 16 A731 70 16
- A733 22 18 A735 57 0E A741 5F 1A A759 5F 1A A771 21 16 A772 5B 10 A784 5E 16 A79B 23 0E
- A79D 23 00 A79F 6D 16 A7B4 36 18 A7BB 64 0C A7C3 8B 16 A7DB 75 16 A7E7 88 10 A7F9 5B 10
- A80B 5E 1C A822 5E 1C A839 5E 1C A850 6E 1C A867 5D 1A A87C 5F 1E A894 8B 16 A8AC 6F 18
- A8C4 5F 1E A8DC 5E 1C A8F3 5F 1E A90B 5D 1A A920 2E 1C A928 2E 1C A930 5F 1E A948 4D 1A
- A956 5F 1C A96E 6E 1C A985 7E 1C A9A3 7E 1C A9C1 7F 1E A9E1 7E 1C A9FF 7D 1A AA1B 48 10
- AA24 6C 18 AA38 6E 1C AA4F 6E 1C AA66 6F 1E AA7E 6D 1A AA93 6F 1C AAAB 5F 1C AAC3 4B 16
- AACF 5B 16 AAE1 5B 16 AAF3 5C 18 AB07 6B 16 AB19 4A 14 AB24 5C 18 AB38 78 10 AB4A 4B 10
- AB56 5B 16 AB68 5B 16 AB7A 5C 18 AB8E 4A 14 AB99 2B 16 AB9F 2B 16 ABA5 5B 16 ABB7 4A 14
- ABC2 4B 16 ABCE 6B 16 ABE0 5B 16 ABF2 5B 16 AC04 5C 18 AC18 6B 16 AC2A 4A 14 AC35 56 0E
- AC40 58 10 AC4E 5B 16 AC60 4B 16 AC6C 5C 18 AC80 4A 14 AC8B 5F 1A ACA3 6F 1A ACBB 4D 14
- ACC9 6F 1A ACE1 2C 18 ACE8 53 18 ACEE 8C 18 AD08 7E 18 AD26 6B 16 AD38 8C 18 AD52 23 18
- AD54 3F 18 AD64 3F 18 AD74 53 18 AD7A 87 10 AD8A 23 02 AD8C 71 0A AD90 21 02 AD91 5E 1A
- ADA8 5B 16 ADBA 4B 16 ADC6 5B 16 ADD8 5B 16 ADEA 7B 16 AE02 5B 16 AE14 5B 16 AE26 7B 16
- AE3E 5B 16 AE50 5B 16 AE62 27 10 AE66 29 10 AE6B 7A 12 AE81 74 0C AE8B 7A 12 AEA1 6C 18
- AEB5 8C 18 AECF 7C 18 AEE9 6C 18 AEFD 6C 18 AF11 6C 18 AF25 5C 18 AF39 5C 18 AF4D 6C 18
- AF61 6C 18 AF75 2C 18 AF7C 6C 18 AF90 8C 18 AFAA 5C 18 AFBE 8C 18 AFD8 7C 18 AFF2 6C 18
- B006 6C 18 B01A 7C 18 B034 6C 18 B048 6C 18 B05C 6C 18 B070 6C 18 B084 7C 18 B09E AC 18
- B0BF 8C 18 B0D9 8C 18 B0F3 6C 18 B107 3F 1C B117 5E 1A B12E 3F 1C B13E 52 16 B143 80 FC
- B145 5F 1C B15D 59 12 B16C 5C 18 B180 58 10 B18E 5C 18 B1A2 59 12 B1B1 4C 18 B1BE 5C 12
- B1D2 5C 18 B1E6 2C 18 B1ED 4F 18 B1FD 6C 18 B211 2C 18 B218 79 12 B22C 59 12 B23B 59 12
- B24A 5C 12 B25E 5C 12 B272 59 12 B281 5A 14 B292 4B 16 B29E 58 10 B2AC 78 10 B2BE 88 10
- B2D0 78 10 B2E2 7A 10 B2F8 58 10 B306 5E 16 B31D 1C 18 B324 5E 16 B33B 61 16 B33E 6C 18
- B352 5E 16 B369 2B 10 B36F 6C 14 B383 7B 16 B39B 79 14 B3AF 8B 16 B3C7 1C 18 B3CE 7D 16
- B3EA 40 16 B3EB 7B 16 B403 36 18 B40A A9 12 B423 82 0C B429 6B 16 B43B 7B 16 B453 80 16
- B455 32 18 B458 8A 14 B46E 34 18 B473 34 18 B478 31 18 B47A 8A 10 B490 6E 16 B4A7 43 0E
- B4AB 23 02 B4AD 34 18 B4B2 36 18 B4B9 A9 12 B4D2 8B 16 B4EA 82 16 B4F0 89 10 B504 6B 10
- B516 7E 1C B534 7E 1C B552 7F 1E B572 7E 1C B590 7E 1C B5AE 7F 1E B5CE 8C 18 B5E8 6E 18
- B5FF 5F 1E B617 5F 1E B62F 5F 1E B647 5E 1C B65E 3F 1E B66E 3F 1E B67E 5F 1E B696 4E 1C
- B6A5 7C 18 B6BF 7E 1C B6DD 6F 1E B6F5 6F 1E B70D 6F 1E B725 6F 1E B73D 6E 1C B754 78 12
- B766 8C 18 B780 6E 1C B797 6E 1C B7AE 6E 1C B7C5 6D 1A B7DA 8D 1A B7F6 8E 1C B814 6D 1A
- B829 5B 16 B83B 5B 16 B84D 5C 18 B861 6B 16 B873 5A 14 B884 5C 18 B898 89 12 B8AC 5D 12
- B8C1 5B 16 B8D3 5B 16 B8E5 5B 16 B8F7 5A 14 B908 3B 16 B914 3B 16 B920 5B 16 B932 4A 14
- B93D 5B 16 B94F 6B 16 B961 5B 16 B973 5B 16 B985 5C 18 B999 6B 16 B9AB 5A 14 B9BC 87 10
- B9CC 7B 14 B9E4 5B 16 B9F6 5B 16 BA08 5B 16 BA1A 5A 14 BA2B 7C 16 BA45 5C 16 BA59 7B 14
- BA71 6F 18 BA89 3B 16 BA95 64 14 BA9D 69 12 BAAC 6D 16 BAC1 7B 14 BAD9 7B 14 BAF1 44 14
- BAF6 4D 16 BB04 3D 16 BB12 79 12 BB26 69 12 BB35 33 02 BB39 61 0A BB3C 32 02 BB3F 8D 16
- BB5B 6B 16 BB6D 5B 16 BB7F 7B 16 BB97 6B 16 BBA9 7B 16 BBC1 7B 16 BBD9 7B 16 BBF1 6B 16
- BC03 7B 16 BC1B 7B 16 BC33 38 10 BC3C 39 10 BC46 7C 18 BC60 73 0E BC68 7C 18 BC82 6B 16
- BC94 7B 16 BCAC 7B 16 BCC4 7B 16 BCDC 6B 16 BCEE 7B 16 BD06 7B 16 BD1E 7B 16 BD36 7B 16
- BD4E 8B 16 BD66 5B 16 BD78 6B 16 BD8A 8B 16 BDA2 7B 16 BDBA 7B 16 BDD2 7B 16 BDEA 6B 16
- BDFC 8B 16 BE14 7C 16 BE2E 7B 16 BE46 6B 16 BE58 7B 16 BE70 7B 16 BE88 7B 16 BEA0 8B 16
- BEB8 7B 16 BED0 7B 16 BEE8 7B 16 BF00 3D 18 BF0E 8D 16 BF2A 3D 18 BF38 71 14 BF3C A0 FA
- BF3F 6F 1A BF57 78 10 BF69 AB 16 BF87 88 10 BF99 7B 16 BFB1 78 10 BFC3 6B 16 BFD5 89 10
- BFE9 7B 16 C001 5B 16 C013 4C 16 C020 8B 16 C038 4B 16 C044 78 10 C056 78 10 C068 68 10
- C076 79 10 C08A 79 10 C09E 68 10 C0AC 68 10 C0BA 5A 14 C0CB 78 10 C0DD 78 10 C0EF 88 10
- C101 88 10 C113 79 10 C127 68 10 C135 4D 18 C143 2D 18 C14A 4D 18 C158 51 16 C15B 6F 1C
- C227 6F 16 C23F 6F 16 C173 8A 16 C189 AB 16 C257 6F 16 C1A7 C9 14 C1C5 2D 16 C1CC 6A 16
- C1DD 61 16 C26F 6F 16 C287 6F 16 C1E0 7D 18 C1FC C4 0C C20B 7D 18 C29F 6F 16 C2B7 6F 16
- C2CF 43 18 C2D3 A9 14 C2EC A9 12 C305 AB 16 C412 6F 18 C323 A9 10 C33C 89 14 C350 43 0E
- C354 34 04 C359 DB 14 C383 A0 16 C386 DB 16 C3B0 ED 18 C3E1 ED 18 C42A 6F 18 C442 6F 18
- C45A A2 0E C462 43 06 C466 6D 18 C47B A8 10 C492 5A 18 C4A3 5A 12 C4B4 6A 18 C4C5 7A 12
- C4DB 5D 18 C4F0 5D 18 C505 5D 18 C51A 6D 18 C52F D9 14 C552 D9 14 C575 B9 14 C593 E5 10
- C5A8 F5 0E C5C0 7D 16 C5DC 6D 16 C5F1 EB 14 C61B EB 14 C645 D9 12 C668 D9 12 C68B AD 16
- C6AE AD 16 C6D1 FA 14 C6FD 9C 16 C71E 6F 16 C736 6F 16 C74E 6F 16 C766 6F 16 C77E 6F 16
- C796 E6 12 C7AF A8 10 C7C6 51 18 C7C9 63 18 C7CF 34 18 C7D4 48 10 C7DD D3 0E C7EB A3 0E
- C7F5 5D 18 C80A C2 0E C813 8B 16 C82B B9 12 C849 6F 1A C861 6F 1A C879 6F 1A C891 6F 1A
- C8A9 0F 17 C8E9 96 0E C8FB 78 10 C90D 96 0E C91F 78 10 C931 9E 14 C957 F8 10 C97B 9E 16
- C9A1 F8 10 C9C5 CC 14 C9EC DC 16 CA1A DC 14 CA48 DC 14 CA76 EF 16 CAAE 07 0F CACE 07 0F
- CAEE 8F 16 CB0E ED 14 CB3F ED 14 CB70 ED 14 CBA1 EF 16 CBD9 CB 12 CBFD CB 12 CC21 CB 12
- 801D2040 0xB1C0 handle leocmd 6: write
- 3C07801E LUI A3,801E
- 24E75E78 ADDIU A3,A3,5E78
- 8CE40000 LW A0,0000 (A3) # leocmd = @801E5E78
- 27BDFFD0 ADDIU SP,SP,FFD0
- AFBF0014 SW RA,0014 (SP)
- 8C82000C LW V0,000C (A0) # LBA = leocmd+C
- 8C830010 LW V1,0010 (A0) # length = leocmd+10
- 24190020 ADDIU T9,R0,0020
- 00437025 OR T6,V0,V1
- 000E7C02 SRL T7,T6,0x10
- 15E00007 BNE T7,R0,+7
- 24420018 ADDIU V0,V0,0018 # LBA += 24: add on system LBAs
- 2C4110DC SLTIU AT,V0,10DC
- 10200004 BEQ AT,R0,+4
- 0043C021 ADDU T8,V0,V1
- 2F0110DD SLTIU AT,T8,10DD
- 14200006 BNE AT,R0,+6 # branch if initial LBA and final LBA both valid
- 3C0A801E LUI T2,801E
- A0990005 SB T9,0005 (A0) # leocmd[5] = 0x20: LBA out of range
- 8CE90000 LW T1,0000 (A3) # leocmd = @801E5E78
- 24080002 ADDIU T0,R0,0002
- 10000030 BEQ R0,R0,+48
- A1280004 SB T0,0004 (T1) # leocmd[4] = 2: check condition
- @801D209C
- 914A5E88 LBU T2,5E88 (T2) # 801E5E88[0]: disk type
- 3C0C801E LUI T4,801E
- 240D0021 ADDIU T5,R0,0021
- 000A5840 SLL T3,T2,0x1
- 018B6021 ADDU T4,T4,T3
- 958C9698 LHU T4,9698 (T4) # 801D9698[disk]: highest unwritable LBA for disk type
- 004C082B SLTU AT,V0,T4
- 10200006 BEQ AT,R0,+6 # branch if LBAs fall in writable region
- 00000000 NOP
- A08D0005 SB T5,0005 (A0) # leocmd[5] = 0x21: write protext error
- 8CEF0000 LW T7,0000 (A3) # leocmd = @801E5E78
- 240E0002 ADDIU T6,R0,0002
- 10000022 BEQ R0,R0,+34
- A1EE0004 SB T6,0004 (T7) # leocmd[4] = 2: check condition
- @801D20D4
- 14600005 BNE V1,R0,+5 # if nothing to write, return no error or status
- 34198000 ORI T9,R0,8000
- A0800005 SB R0,0005 (A0) # leocmd[5] = 0
- 8CF80000 LW T8,0000 (A3)
- 1000001C BEQ R0,R0,+28
- A3000004 SB R0,0004 (T8) # leocmd[4] = 0
- @801D20EC
- 3C01801E LUI AT,801E
- A4395E86 SH T9,5E86 (AT) # 801E5E86[0:2] = 0x8000
- 3C01801E LUI AT,801E
- 3C04801E LUI A0,801E
- A4225E90 SH V0,5E90 (AT) # 801E5E90[0:2] = LBA
- 0C0017B0 JAL 80005EC0 # start thread A0
- 24845438 ADDIU A0,A0,5438 # thread = 801E5438: Leo Work
- 3C04801E LUI A0,801E
- 24845E18 ADDIU A0,A0,5E18 # queue = 801E5E18
- 27A5002C ADDIU A1,SP,002C
- 0C00080C JAL 80002030 # read or wait (A2) to write msg from queue A0 to A1
- 24060001 ADDIU A2,R0,0001 # wait
- 8FA8002C LW T0,002C (SP)
- 3C07801E LUI A3,801E
- 3C010009 LUI AT,0009
- 11010007 BEQ T0,AT,+7 # if msg == 0x90000, return no error or status
- 24E75E78 ADDIU A3,A3,5E78
- 8CE90000 LW T1,0000 (A3) # leocmd = @801E5E78
- 240A0002 ADDIU T2,R0,0002
- A1280005 SB T0,0005 (T1) # leocmd[5] = sensecode
- 8CEB0000 LW T3,0000 (A3)
- 10000005 BEQ R0,R0,+5
- A16A0004 SB T2,0004 (T3) # leocmd[4] = 2: check condition
- 8CEC0000 LW T4,0000 (A3) # leocmd = @801E5E78
- A1800005 SB R0,0005 (T4)
- 8CED0000 LW T5,0000 (A3)
- A1A00004 SB R0,0004 (T5) # leocmd[4:6] = (0, 0)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0030 ADDIU SP,SP,0030
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801D2170 0xB2F0 Japanese-start leo threads
- 27BDFF78 ADDIU SP,SP,FF78
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- AFBF0014 SW RA,0014 (SP)
- AFA40088 SW A0,0088 (SP)
- AFA5008C SW A1,008C (SP)
- AFA60090 SW A2,0090 (SP)
- 11C00003 BEQ T6,R0,+3
- AFA70094 SW A3,0094 (SP)
- 1000007F BEQ R0,R0,+127
- 00001025 OR V0,R0,R0
- 0C073848 JAL 801CE120 # V0 = True if IPL valid else False
- 00000000 NOP
- 14400003 BNE V0,R0,+3
- 00000000 NOP
- 10000079 BEQ R0,R0,+121
- 24020029 ADDIU V0,R0,0029
- 0C07303C JAL 801CC0F0 # V0 = p->ASIC EPI handle, created if necessary
- 00000000 NOP
- 0C000580 JAL 80001600 # V0 = p->EPI handle, created if necessary
- 00000000 NOP
- 240F0001 ADDIU T7,R0,0001
- 3C01801E LUI AT,801E
- 3C05801D LUI A1,801D
- 3C06801E LUI A2,801E
- AFA20084 SW V0,0084 (SP)
- AC2F8DF0 SW T7,8DF0 (AT) # 801D8DF0 = True: leo threads started
- 24C67800 ADDIU A2,A2,7800 # 801E7800
- 24A523B0 ADDIU A1,A1,23B0 # 801D23B0
- 0C001804 JAL 80006010
- 24040001 ADDIU A0,R0,0001
- 8FA40088 LW A0,0088 (SP)
- 8FA5008C LW A1,008C (SP)
- 8FA60090 LW A2,0090 (SP)
- 0C0729F4 JAL 801CA7D0 # create and start leo threads with priority (A0, A1) with A3 msgs at A2
- 8FA70094 LW A3,0094 (SP)
- 3C188000 LUI T8,8000
- 8F18030C LW T8,030C (T8)
- 24010001 ADDIU AT,R0,0001
- 57010004 BNEL T8,AT,+4 # if game was reset, do a leo reset
- 24190002 ADDIU T9,R0,0002
- 0C072AE5 JAL 801CAB94 # V0 = 0; leo reset
- 00000000 NOP
- 24190002 ADDIU T9,R0,0002
- A3B9006C SB T9,006C (SP) # leocmd[0] = 2: inquiry
- A3A0006D SB R0,006D (SP)
- A3A0006E SB R0,006E (SP)
- A3A0006F SB R0,006F (SP)
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- 27A4006C ADDIU A0,SP,006C
- 3C0100FF LUI AT,00FF
- 3421FFFF ORI AT,AT,FFFF
- 27A7006C ADDIU A3,SP,006C
- 00E14024 AND T0,A3,AT
- AFA80024 SW T0,0024 (SP)
- 8FA90024 LW T1,0024 (SP) # T1 = SP+6C & 0xFFFFFF
- 3C02801D LUI V0,801D
- 2442AB94 ADDIU V0,V0,AB94
- 1920000C BLTZ T1,+12
- 3C0100FF LUI AT,00FF
- 3421FFFF ORI AT,AT,FFFF
- 00415024 AND T2,V0,AT # T2 = 0x1CAB94
- 3C010040 LUI AT,0040
- 34213DF4 ORI AT,AT,3DF4
- 01411025 OR V0,T2,AT # V0 = 0x1CAB94 | 0x403DF4: 0x5CBFF4
- 8FAC0024 LW T4,0024 (SP)
- 01826823 SUBU T5,T4,V0
- AFAD0024 SW T5,0024 (SP) # while T2 >= 0: T2 -= 0x5CBFF4: weird and pointless timeout
- 8FAE0024 LW T6,0024 (SP)
- 5DC0FFFC BGTZL T6,-4
- 8FAC0024 LW T4,0024 (SP)
- @
- 93AF0070 LBU T7,0070 (SP)
- 24020008 ADDIU V0,R0,0008
- 24090006 ADDIU T1,R0,0006
- 144F0004 BNE V0,T7,+4
- 24010004 ADDIU AT,R0,0004
- 93B80070 LBU T8,0070 (SP)
- 5058FFFF BEQL V0,T8,-1
- 93B80070 LBU T8,0070 (SP)
- 93B90070 LBU T9,0070 (SP) # status = leocmd[4]
- 3C02801E LUI V0,801E
- 24426800 ADDIU V0,V0,6800
- 53200004 BEQL T9,R0,+4
- 93A80079 LBU T0,0079 (SP)
- 10000034 BEQ R0,R0,+52
- 93A20071 LBU V0,0071 (SP)
- 93A80079 LBU T0,0079 (SP) # hardware version = leocmd[D]
- 93AA0078 LBU T2,0078 (SP) # device type = leocmd[C]
- 93AB007A LBU T3,007A (SP) # #devices = leocmd[E]
- A0480000 SB T0,0000 (V0) # 801E6800[0:4] = (hardware version, 6, device type, #devices)
- 90430000 LBU V1,0000 (V0)
- A0490001 SB T1,0001 (V0)
- A04A0002 SB T2,0002 (V0)
- 306C000F ANDI T4,V1,000F
- 01801825 OR V1,T4,R0
- 15810004 BNE T4,AT,+4 # region = dev if (hardware version & 0xF) == 4 else japanese
- A04B0003 SB T3,0003 (V0)
- 3C01801E LUI AT,801E
- 10000025 BEQ R0,R0,+37
- AC205E9C SW R0,5E9C (AT) # 801E5E9C = 0: "region code" for dev 64DDs
- 24010003 ADDIU AT,R0,0003
- 10610003 BEQ V1,AT,+3
- 8FA40084 LW A0,0084 (SP) # p->IPL EPI handle
- 24010001 ADDIU AT,R0,0001
- 1461001D BNE V1,AT,+29
- 3C050009 LUI A1,0009
- 34A5FF00 ORI A1,A1,FF00 # 0x9FF00
- 27A60028 ADDIU A2,SP,0028
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- AFA7001C SW A3,001C (SP)
- 8FA30028 LW V1,0028 (SP)
- 3C01FF00 LUI AT,FF00
- 3C0F3ED9 LUI T7,3ED9
- 00616824 AND T5,V1,AT
- 000D1E02 SRL V1,T5,0x18 # check value from IPL 0x9FF00 (0xC3 for Japan)
- 35EF8F23 ORI T7,T7,8F23
- 240100C3 ADDIU AT,R0,00C3
- 8FA7001C LW A3,001C (SP)
- 10610003 BEQ V1,AT,+3 # set region code if IPL+9FF00 == 0xC3 else sit&spin
- AFAF0020 SW T7,0020 (SP)
- 1000FFFF BEQ R0,R0,-1
- 00000000 NOP
- 8FB80020 LW T8,0020 (SP)
- 3C0AE848 LUI T2,E848
- 354AD316 ORI T2,T2,D316
- 03030019 MULTU T8,V1
- 3C01801E LUI AT,801E
- AC2A5E9C SW T2,5E9C (AT) # 801E5E9C = 0xE848D316: "region code" for Japanese retail
- 0000C812 MFLO T9
- AFB90020 SW T9,0020 (SP) # SP+20 = 0xE848D316 * 0xC3 = 0xF03BC9C2: VALUE IS UNUSED
- 8FA80020 LW T0,0020 (SP)
- 01074823 SUBU T1,T0,A3
- 10000003 BEQ R0,R0,+3
- AFA90020 SW T1,0020 (SP)
- 1000FFFF BEQ R0,R0,-1
- 00000000 NOP
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0088 ADDIU SP,SP,0088
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801D23B0 0xB530
- 3C0A801E LUI T2,801E
- 254A5F64 ADDIU T2,T2,5F64
- 8D480000 LW T0,0000 (T2) # @801E5F64
- 27BDFFC8 ADDIU SP,SP,FFC8
- AFBF001C SW RA,001C (SP)
- 3C03A460 LUI V1,A460
- 34630010 ORI V1,V1,0010
- 8C780000 LW T8,0000 (V1)
- 950E001A LHU T6,001A (T0)
- 25080014 ADDIU T0,T0,0014
- AFB80030 SW T8,0030 (SP)
- 8FB90030 LW T9,0030 (SP)
- 000E78C0 SLL T7,T6,0x3
- 01EE7821 ADDU T7,T7,T6
- 000F7880 SLL T7,T7,0x2
- 010F4821 ADDU T1,T0,T7
- 332D0001 ANDI T5,T9,0001
- 11A0000C BEQ T5,R0,+12 # return if PI I/O busy
- 25290018 ADDIU T1,T1,0018
- @801D23FC
- 3C048000 LUI A0,8000
- 24846360 ADDIU A0,A0,6360
- 8C8E0000 LW T6,0000 (A0)
- 2401F7FF ADDIU AT,R0,F7FF
- 2418001D ADDIU T8,R0,001D
- 01C17824 AND T7,T6,AT
- AC8F0000 SW T7,0000 (A0) # 80006360 &= ~0x800
- 0C074A71 JAL 801D29C4
- AD380000 SW T8,0000 (T1)
- 10000137 BEQ R0,R0,+311
- 24020001 ADDIU V0,R0,0001
- @801D2428
- 8C790000 LW T9,0000 (V1)
- 3C04A500 LUI A0,A500
- 34840508 ORI A0,A0,0508
- AFB90030 SW T9,0030 (SP)
- 8FAD0030 LW T5,0030 (SP)
- 3C010100 LUI AT,0100
- 31AE0003 ANDI T6,T5,0003
- 51C00008 BEQL T6,R0,+8
- 8C850000 LW A1,0000 (A0)
- 8C6F0000 LW T7,0000 (V1)
- AFAF0030 SW T7,0030 (SP)
- 8FB80030 LW T8,0030 (SP)
- 33190003 ANDI T9,T8,0003
- 5720FFFC BNEL T9,R0,-4
- 8C6F0000 LW T7,0000 (V1)
- 8C850000 LW A1,0000 (A0)
- 3C0B0200 LUI T3,0200
- 00056980 SLL T5,A1,0x6
- 05A30015 BGEZL T5,+21
- 8D020000 LW V0,0000 (T0)
- 8C6E0000 LW T6,0000 (V1)
- AFAE0030 SW T6,0030 (SP)
- 8FAF0030 LW T7,0030 (SP)
- 31F80003 ANDI T8,T7,0003
- 53000008 BEQL T8,R0,+8
- 8D0F0010 LW T7,0010 (T0)
- 8C790000 LW T9,0000 (V1)
- AFB90030 SW T9,0030 (SP)
- 8FAD0030 LW T5,0030 (SP)
- 31AE0003 ANDI T6,T5,0003
- 55C0FFFC BNEL T6,R0,-4
- 8C790000 LW T9,0000 (V1)
- 8D0F0010 LW T7,0010 (T0)
- 3C19A500 LUI T9,A500
- 00001025 OR V0,R0,R0
- 01E1C025 OR T8,T7,AT
- AF380510 SW T8,0510 (T9)
- 10000110 BEQ R0,R0,+272
- AD200000 SW R0,0000 (T1)
- 8D020000 LW V0,0000 (T0)
- 24060002 ADDIU A2,R0,0002
- 00056900 SLL T5,A1,0x4
- 14C20003 BNE A2,V0,+3
- 00000000 NOP
- 10000109 BEQ R0,R0,+265
- 24020001 ADDIU V0,R0,0001
- 05A3001E BGEZL T5,+30
- 240C0001 ADDIU T4,R0,0001
- 8C6E0000 LW T6,0000 (V1)
- AFAE0030 SW T6,0030 (SP)
- 8FAF0030 LW T7,0030 (SP)
- 31F80003 ANDI T8,T7,0003
- 13000007 BEQ T8,R0,+7
- 240F0016 ADDIU T7,R0,0016
- 8C790000 LW T9,0000 (V1)
- AFB90030 SW T9,0030 (SP)
- 8FAD0030 LW T5,0030 (SP)
- 31AE0003 ANDI T6,T5,0003
- 55C0FFFC BNEL T6,R0,-4
- 8C790000 LW T9,0000 (V1)
- 8C800000 LW R0,0000 (A0)
- 0C074A71 JAL 801D29C4
- AD2F0000 SW T7,0000 (T1)
- 3C03A460 LUI V1,A460
- 34630010 ORI V1,V1,0010
- 3C048000 LUI A0,8000
- 24060002 ADDIU A2,R0,0002
- 24846360 ADDIU A0,A0,6360
- AC660000 SW A2,0000 (V1)
- 8C980000 LW T8,0000 (A0)
- 3C010010 LUI AT,0010
- 34210401 ORI AT,AT,0401
- 0301C825 OR T9,T8,AT
- AC990000 SW T9,0000 (A0) # 80006360 |= 0x100401
- 100000EB BEQ R0,R0,+235
- 24020001 ADDIU V0,R0,0001
- 240C0001 ADDIU T4,R0,0001
- 1582002F BNE T4,V0,+47
- 00056840 SLL T5,A1,0x1
- 05A2001D BLTZL T5,+29
- 8D2F0004 LW T7,0004 (T1)
- 950E0004 LHU T6,0004 (T0)
- 8D180008 LW T8,0008 (T0)
- 3C048000 LUI A0,8000
- 000E7880 SLL T7,T6,0x2
- 01EE7821 ADDU T7,T7,T6
- 000F7880 SLL T7,T7,0x2
- 01EE7821 ADDU T7,T7,T6
- 000F7880 SLL T7,T7,0x2
- 01EE7821 ADDU T7,T7,T6
- 27190001 ADDIU T9,T8,0001
- 11F90006 BEQ T7,T9,+6
- 24846360 ADDIU A0,A0,6360
- 240D0018 ADDIU T5,R0,0018
- 0C074A44 JAL 801D2910
- AD2D0000 SW T5,0000 (T1)
- 100000D5 BEQ R0,R0,+213
- 24020001 ADDIU V0,R0,0001
- AC660000 SW A2,0000 (V1)
- 8C8E0000 LW T6,0000 (A0)
- 3C010010 LUI AT,0010
- 34210401 ORI AT,AT,0401
- 01C1C025 OR T8,T6,AT
- AC980000 SW T8,0000 (A0) # 80006360 |= 0x100401
- 0C074A71 JAL 801D29C4
- AD200000 SW R0,0000 (T1)
- 100000CB BEQ R0,R0,+203
- 24020001 ADDIU V0,R0,0001
- 8D2F0004 LW T7,0004 (T1)
- 8D39000C LW T9,000C (T1)
- 3C060500 LUI A2,0500
- 34C60400 ORI A2,A2,0400
- 01F96821 ADDU T5,T7,T9
- AD2D0004 SW T5,0004 (T1)
- 8D0E0008 LW T6,0008 (T0)
- 24050001 ADDIU A1,R0,0001
- 25D80001 ADDIU T8,T6,0001
- AD180008 SW T8,0008 (T0)
- 8D2F000C LW T7,000C (T1)
- 8D270004 LW A3,0004 (T1)
- 8D440000 LW A0,0000 (T2)
- 0C0011B8 JAL 800046E0
- AFAF0010 SW T7,0010 (SP)
- 100000BA BEQ R0,R0,+186
- 24020001 ADDIU V0,R0,0001
- 144000B5 BNE V0,R0,+181
- 24180004 ADDIU T8,R0,0004
- 95190004 LHU T9,0004 (T0)
- 24070003 ADDIU A3,R0,0003
- 54F90013 BNEL A3,T9,+19
- 8D2E0004 LW T6,0004 (T1)
- 8D2E0010 LW T6,0010 (T1)
- 8D0D0008 LW T5,0008 (T0)
- 00057840 SLL T7,A1,0x1
- 25D80011 ADDIU T8,T6,0011
- 030D082A SLT AT,T8,T5
- 10200005 BEQ AT,R0,+5
- 00000000 NOP
- 0C074A44 JAL 801D2910
- AD200000 SW R0,0000 (T1)
- 100000A9 BEQ R0,R0,+169
- 24020001 ADDIU V0,R0,0001
- 05E00009 BLTZ T7,+9
- 24190017 ADDIU T9,R0,0017
- 0C074A44 JAL 801D2910
- AD390000 SW T9,0000 (T1)
- 100000A3 BEQ R0,R0,+163
- 24020001 ADDIU V0,R0,0001
- 8D2E0004 LW T6,0004 (T1)
- 8D2D000C LW T5,000C (T1)
- 01CDC021 ADDU T8,T6,T5
- AD380004 SW T8,0004 (T1)
- 3C0FA500 LUI T7,A500
- 8DE20510 LW V0,0510 (T7)
- 0002CA80 SLL T9,V0,0xA
- 07210002 BGEZ T9,+2
- 00027240 SLL T6,V0,0x9
- 05C00003 BLTZ T6,+3
- 004B6824 AND T5,V0,T3
- 51A0001A BEQL T5,R0,+26
- 000570C0 SLL T6,A1,0x3
- 8D240010 LW A0,0010 (T1)
- 2C810004 SLTIU AT,A0,0004
- 5420000E BNEL AT,R0,+14
- 8D0E0008 LW T6,0008 (T0)
- 95180004 LHU T8,0004 (T0)
- 24190017 ADDIU T9,R0,0017
- 14F80005 BNE A3,T8,+5
- 00000000 NOP
- 8D0F0008 LW T7,0008 (T0)
- 29E10053 SLTI AT,T7,0053
- 5420000C BNEL AT,R0,+12
- 24990001 ADDIU T9,A0,0001
- 0C074A44 JAL 801D2910
- AD390000 SW T9,0000 (T1)
- 10000086 BEQ R0,R0,+134
- 24020001 ADDIU V0,R0,0001
- 8D0E0008 LW T6,0008 (T0)
- 0004C080 SLL T8,A0,0x2
- 01387821 ADDU T7,T1,T8
- 25CD0001 ADDIU T5,T6,0001
- ADED0014 SW T5,0014 (T7)
- 8D240010 LW A0,0010 (T1)
- 24990001 ADDIU T9,A0,0001
- AD390010 SW T9,0010 (T1)
- 000570C0 SLL T6,A1,0x3
- 05C1002C BGEZ T6,+44
- 8D020008 LW V0,0008 (T0)
- 24010057 ADDIU AT,R0,0057
- 10410006 BEQ V0,AT,+6
- 00002825 OR A1,R0,R0
- 24180018 ADDIU T8,R0,0018
- 0C074A44 JAL 801D2910
- AD380000 SW T8,0000 (T1)
- 10000073 BEQ R0,R0,+115
- 24020001 ADDIU V0,R0,0001
- 950D0004 LHU T5,0004 (T0)
- 24010002 ADDIU AT,R0,0002
- 3C048000 LUI A0,8000
- 15A1000E BNE T5,AT,+14
- 24846360 ADDIU A0,A0,6360
- 950F0006 LHU T7,0006 (T0)
- 2419FFFF ADDIU T9,R0,FFFF
- 55E0000B BNEL T7,R0,+11
- AC660000 SW A2,0000 (V1)
- 8D0E0040 LW T6,0040 (T0)
- 8D180048 LW T8,0048 (T0)
- A50C0006 SH T4,0006 (T0)
- AD190008 SW T9,0008 (T0)
- 01D86823 SUBU T5,T6,T8
- AD0D0040 SW T5,0040 (T0)
- 240F0016 ADDIU T7,R0,0016
- 10000009 BEQ R0,R0,+9
- AD2F0000 SW T7,0000 (T1)
- AC660000 SW A2,0000 (V1)
- 8C990000 LW T9,0000 (A0)
- 3C010010 LUI AT,0010
- 34210401 ORI AT,AT,0401
- 03217025 OR T6,T9,AT
- AC8E0000 SW T6,0000 (A0) # 80006360 |= 0x100401
- AD060000 SW A2,0000 (T0)
- AD200000 SW R0,0000 (T1)
- 8D38000C LW T8,000C (T1)
- 8D270008 LW A3,0008 (T1)
- 8D440000 LW A0,0000 (T2)
- 00186880 SLL T5,T8,0x2
- AFAD0010 SW T5,0010 (SP)
- 0C0011B8 JAL 800046E0
- 3C060500 LUI A2,0500
- 10000050 BEQ R0,R0,+80
- 24020001 ADDIU V0,R0,0001
- 2401FFFF ADDIU AT,R0,FFFF
- 54410028 BNEL V0,AT,+40
- 24590001 ADDIU T9,V0,0001
- 950F0004 LHU T7,0004 (T0)
- 24010002 ADDIU AT,R0,0002
- 55E10024 BNEL T7,AT,+36
- 24590001 ADDIU T9,V0,0001
- 95190006 LHU T9,0006 (T0)
- 24010001 ADDIU AT,R0,0001
- 57210020 BNEL T9,AT,+32
- 24590001 ADDIU T9,V0,0001
- 8D0E0028 LW T6,0028 (T0)
- 25030018 ADDIU V1,T0,0018
- 55C00011 BNEL T6,R0,+17
- AD000018 SW R0,0018 (T0)
- 8C620008 LW V0,0008 (V1)
- 8C58000C LW T8,000C (V0)
- 8C4D0000 LW T5,0000 (V0)
- 8C590004 LW T9,0004 (V0)
- 030D7825 OR T7,T8,T5
- 8C580008 LW T8,0008 (V0)
- 01F97025 OR T6,T7,T9
- 240F0017 ADDIU T7,R0,0017
- 01D86825 OR T5,T6,T8
- 51A00006 BEQL T5,R0,+6
- AD000018 SW R0,0018 (T0)
- 0C074A44 JAL 801D2910
- AC6F0000 SW T7,0000 (V1)
- 10000032 BEQ R0,R0,+50
- 24020001 ADDIU V0,R0,0001
- AD000018 SW R0,0018 (T0)
- AFA90024 SW T1,0024 (SP)
- AFA80028 SW T0,0028 (SP)
- 0C074A71 JAL 801D29C4
- AFA50034 SW A1,0034 (SP)
- 8FA80028 LW T0,0028 (SP)
- 3C0A801E LUI T2,801E
- 254A5F64 ADDIU T2,T2,5F64
- 8FA50034 LW A1,0034 (SP)
- 8FA90024 LW T1,0024 (SP)
- 8D020008 LW V0,0008 (T0)
- 24590001 ADDIU T9,V0,0001
- 00057040 SLL T6,A1,0x1
- 05C10015 BGEZ T6,+21
- AD190008 SW T9,0008 (T0)
- 2B210055 SLTI AT,T9,0055
- 14200006 BNE AT,R0,+6
- 00002825 OR A1,R0,R0
- 240D0018 ADDIU T5,R0,0018
- 0C074A44 JAL 801D2910
- AD2D0000 SW T5,0000 (T1)
- 1000001B BEQ R0,R0,+27
- 24020001 ADDIU V0,R0,0001
- 8D2F000C LW T7,000C (T1)
- 3C060500 LUI A2,0500
- 8D270004 LW A3,0004 (T1)
- AFA90024 SW T1,0024 (SP)
- 34C60400 ORI A2,A2,0400
- 8D440000 LW A0,0000 (T2)
- 0C0011B8 JAL 800046E0
- AFAF0010 SW T7,0010 (SP)
- 8FA90024 LW T1,0024 (SP)
- 24020001 ADDIU V0,R0,0001
- 1000000F BEQ R0,R0,+15
- AD200000 SW R0,0000 (T1)
- 8D190008 LW T9,0008 (T0)
- 240E0018 ADDIU T6,R0,0018
- 2B210055 SLTI AT,T9,0055
- 10200005 BEQ AT,R0,+5
- 00000000 NOP
- 0C074A44 JAL 801D2910
- AD2E0000 SW T6,0000 (T1)
- 10000006 BEQ R0,R0,+6
- 24020001 ADDIU V0,R0,0001
- 10000004 BEQ R0,R0,+4
- 24020001 ADDIU V0,R0,0001
- 0C074A44 JAL 801D2910
- AD380000 SW T8,0000 (T1)
- 24020001 ADDIU V0,R0,0001
- 8FBF001C LW RA,001C (SP)
- 27BD0038 ADDIU SP,SP,0038
- 03E00008 JR RA
- 00000000 NOP
- 801D2910 0xBA90
- 27BDFFE8 ADDIU SP,SP,FFE8
- 3C03A460 LUI V1,A460
- 34630010 ORI V1,V1,0010
- AFBF0014 SW RA,0014 (SP)
- 8C620000 LW V0,0000 (V1)
- 3C04801E LUI A0,801E
- 8C845F64 LW A0,5F64 (A0) # @801E5F64
- 304E0003 ANDI T6,V0,0003
- 11C00005 BEQ T6,R0,+5
- 24840014 ADDIU A0,A0,0014
- 8C620000 LW V0,0000 (V1)
- 304F0003 ANDI T7,V0,0003
- 55E0FFFE BNEL T7,R0,-2
- 8C620000 LW V0,0000 (V1)
- 8C980010 LW T8,0010 (A0)
- 3C05A500 LUI A1,A500
- 3C011000 LUI AT,1000
- 34A50510 ORI A1,A1,0510
- 0301C825 OR T9,T8,AT
- ACB90000 SW T9,0000 (A1)
- 8C620000 LW V0,0000 (V1)
- 30480003 ANDI T0,V0,0003
- 51000006 BEQL T0,R0,+6
- 8C8A0010 LW T2,0010 (A0)
- 8C620000 LW V0,0000 (V1)
- 30490003 ANDI T1,V0,0003
- 5520FFFE BNEL T1,R0,-2
- 8C620000 LW V0,0000 (V1)
- 8C8A0010 LW T2,0010 (A0)
- 0C074A71 JAL 801D29C4
- ACAA0000 SW T2,0000 (A1)
- 3C03A460 LUI V1,A460
- 34630010 ORI V1,V1,0010
- 3C028000 LUI V0,8000
- 240B0002 ADDIU T3,R0,0002
- 24426360 ADDIU V0,V0,6360
- AC6B0000 SW T3,0000 (V1)
- 8C4C0000 LW T4,0000 (V0)
- 8FBF0014 LW RA,0014 (SP)
- 3C010010 LUI AT,0010
- 34210401 ORI AT,AT,0401
- 01816825 OR T5,T4,AT
- AC4D0000 SW T5,0000 (V0) # 80006360 |= 0x100401
- 03E00008 JR RA
- 27BD0018 ADDIU SP,SP,0018
- 801D29C4 0xBB44
- 3C048001 LUI A0,8001
- 8C849E20 LW A0,9E20 (A0) # @80009E20
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 50800027 BEQL A0,R0,+39
- 8FBF0014 LW RA,0014 (SP)
- 8C830008 LW V1,0008 (A0)
- 8C850010 LW A1,0010 (A0)
- 3C188001 LUI T8,8001
- 0065082A SLT AT,V1,A1
- 50200021 BEQL AT,R0,+33
- 8FBF0014 LW RA,0014 (SP)
- 8C8E000C LW T6,000C (A0)
- 8C990014 LW T9,0014 (A0)
- 8F189E24 LW T8,9E24 (T8)
- 01C37821 ADDU T7,T6,V1
- 01E5001A DIV T7,A1
- 00001010 MFHI V0
- 00024080 SLL T0,V0,0x2
- 03284821 ADDU T1,T9,T0
- AD380000 SW T8,0000 (T1)
- 8C8A0008 LW T2,0008 (A0)
- 8C8C0000 LW T4,0000 (A0)
- 14A00002 BNE A1,R0,+2
- 00000000 NOP
- 0007000D BREAK 0x1C00
- 2401FFFF ADDIU AT,R0,FFFF
- 14A10004 BNE A1,AT,+4
- 3C018000 LUI AT,8000
- 15E10002 BNE T7,AT,+2
- 00000000 NOP
- 0006000D BREAK 0x1800
- 254B0001 ADDIU T3,T2,0001
- AC8B0008 SW T3,0008 (A0)
- 8D8D0000 LW T5,0000 (T4)
- 51A00008 BEQL T5,R0,+8
- 8FBF0014 LW RA,0014 (SP)
- 0C000AE5 JAL 80002B94
- 00000000 NOP
- 3C048000 LUI A0,8000
- 24846338 ADDIU A0,A0,6338
- 0C000AD3 JAL 80002B4C
- 00402825 OR A1,V0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801D2A80 0xBC00 English+Debug-start leo threads
- 27BDFF78 ADDIU SP,SP,FF78
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- AFBF0014 SW RA,0014 (SP)
- AFA40088 SW A0,0088 (SP)
- AFA5008C SW A1,008C (SP)
- AFA60090 SW A2,0090 (SP)
- 11C00003 BEQ T6,R0,+3
- AFA70094 SW A3,0094 (SP)
- 1000007C BEQ R0,R0,+124
- 00001025 OR V0,R0,R0
- 0C073848 JAL 801CE120 # V0 = True if IPL valid else False
- 00000000 NOP
- 14400003 BNE V0,R0,+3
- 00000000 NOP
- 10000076 BEQ R0,R0,+118
- 24020029 ADDIU V0,R0,0029
- @801D2AC4
- 0C07303C JAL 801CC0F0 # V0 = p->ASIC EPI handle, created if necessary
- 00000000 NOP
- 0C000580 JAL 80001600 # V0 = p->EPI handle, created if necessary
- 00000000 NOP
- 240F0001 ADDIU T7,R0,0001
- 3C01801E LUI AT,801E
- 3C05801D LUI A1,801D
- 3C06801E LUI A2,801E
- AFA20084 SW V0,0084 (SP)
- AC2F8DF0 SW T7,8DF0 (AT) # 801D8DF0 = True: leo threads started
- 24C67800 ADDIU A2,A2,7800
- 24A523B0 ADDIU A1,A1,23B0
- 0C001804 JAL 80006010
- 24040001 ADDIU A0,R0,0001
- 8FA40088 LW A0,0088 (SP)
- 8FA5008C LW A1,008C (SP)
- 8FA60090 LW A2,0090 (SP)
- 0C0729F4 JAL 801CA7D0 # create and start leo threads with priority (A0, A1) with A3 msgs at A2
- 8FA70094 LW A3,0094 (SP)
- 3C188000 LUI T8,8000
- 8F18030C LW T8,030C (T8) # osResetType = @8000030C
- 24010001 ADDIU AT,R0,0001
- 57010004 BNEL T8,AT,+4 # reset leo if reset via NMI (not cold or hooked)
- 24190002 ADDIU T9,R0,0002
- @801D2B24
- 0C072AE5 JAL 801CAB94 # V0 = 0; leo reset
- 00000000 NOP
- @801D2B2C
- 24190002 ADDIU T9,R0,0002
- A3B9006C SB T9,006C (SP) # leocmd[0] = 2: inquiry
- A3A0006D SB R0,006D (SP)
- A3A0006E SB R0,006E (SP)
- A3A0006F SB R0,006F (SP)
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- 27A4006C ADDIU A0,SP,006C
- 3C088000 LUI T0,8000
- 3C0100A4 LUI AT,00A4
- 34218D3C ORI AT,AT,8D3C
- 25086010 ADDIU T0,T0,6010
- 01014824 AND T1,T0,AT
- AFA90024 SW T1,0024 (SP)
- 8FAA0024 LW T2,0024 (SP)
- 3C0300E0 LUI V1,00E0
- 3C02801D LUI V0,801D
- 0143082A SLT AT,T2,V1
- 1020000B BEQ AT,R0,+11
- 2442A9A4 ADDIU V0,V0,A9A4
- 304B00FF ANDI T3,V0,00FF
- 356C008A ORI T4,T3,008A
- 000C1400 SLL V0,T4,0x10
- 8FAE0024 LW T6,0024 (SP)
- 01C27821 ADDU T7,T6,V0
- AFAF0024 SW T7,0024 (SP)
- 8FB80024 LW T8,0024 (SP)
- 0303082A SLT AT,T8,V1
- 5420FFFB BNEL AT,R0,-5
- 8FAE0024 LW T6,0024 (SP)
- 93B90070 LBU T9,0070 (SP) # leocmd[4]: status
- 24020008 ADDIU V0,R0,0008
- 240B0006 ADDIU T3,R0,0006
- 14590004 BNE V0,T9,+4
- 24010004 ADDIU AT,R0,0004
- 93A80070 LBU T0,0070 (SP)
- 5048FFFF BEQL V0,T0,-1 # while status is busy: pass
- 93A80070 LBU T0,0070 (SP)
- 93A90070 LBU T1,0070 (SP)
- 3C02801E LUI V0,801E
- 24426800 ADDIU V0,V0,6800
- 51200004 BEQL T1,R0,+4
- 93AA0079 LBU T2,0079 (SP)
- 10000030 BEQ R0,R0,+48
- 93A20071 LBU V0,0071 (SP) # if status: return sensecode
- @801D2BDC: development 64DD
- 93AA0079 LBU T2,0079 (SP) # leocmd[D] = hardware version
- 93AC0078 LBU T4,0078 (SP) # leocmd[C] = device type
- 93AD007A LBU T5,007A (SP) # leocmd[E] = #devices
- A04A0000 SB T2,0000 (V0)
- 90430000 LBU V1,0000 (V0)
- A04B0001 SB T3,0001 (V0)
- A04C0002 SB T4,0002 (V0)
- 306E000F ANDI T6,V1,000F
- 01C01825 OR V1,T6,R0
- 15C10004 BNE T6,AT,+4 # region = dev if (hardware version & 0xF) == 4 else english
- A04D0003 SB T5,0003 (V0) # 801E6800[0:4] = (hardware version, 6, device type, #devices)
- 3C01801E LUI AT,801E
- 10000021 BEQ R0,R0,+33
- AC205E9C SW R0,5E9C (AT) # 801E5E9C = 0: "region code" for dev 64DDs
- @801D2C14: North American 64DD
- 24010003 ADDIU AT,R0,0003
- 10610003 BEQ V1,AT,+3
- 8FA40084 LW A0,0084 (SP)
- 24010001 ADDIU AT,R0,0001
- 14610019 BNE V1,AT,+25 # if (hardware version & 0xF) not in (1, 3): inf. loop
- 3C050009 LUI A1,0009
- 34A5FF00 ORI A1,A1,FF00
- 0C00158C JAL 80005630 # read word from hardware offset A1 to A2 using EPI handle A0
- 27A60028 ADDIU A2,SP,0028
- 8FA30028 LW V1,0028 (SP)
- 3C01FF00 LUI AT,FF00
- 3C1932F8 LUI T9,32F8
- 00617824 AND T7,V1,AT
- 000FC602 SRL T8,T7,0x18
- 24010004 ADDIU AT,R0,0004
- 13010003 BEQ T8,AT,+3 # if IPL+9FF00[0] != 4: inf. loop
- 3739EB20 ORI T9,T9,EB20
- 1000FFFF BEQ R0,R0,-1
- 00000000 NOP
- @801D2C94
- AFB90020 SW T9,0020 (SP)
- 8FA90020 LW T1,0020 (SP)
- 3C0A801E LUI T2,801E
- 3C082263 LUI T0,2263
- 254A8DF0 ADDIU T2,T2,8DF0
- 3508EE56 ORI T0,T0,EE56
- 3C01801E LUI AT,801E
- 012A5821 ADDU T3,T1,T2
- AC285E9C SW T0,5E9C (AT) # 801E5E9C = 0x2263EE56: "region code" for USA
- 10000003 BEQ R0,R0,+3
- AFAB0020 SW T3,0020 (SP) # SP+20 = 801D8DF0 + 0x32F8EB20: completely pointless value
- 1000FFFF BEQ R0,R0,-1
- 00000000 NOP
- 00001025 OR V0,R0,R0
- 8FBF0014 LW RA,0014 (SP)
- 27BD0088 ADDIU SP,SP,0088
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801D2CB0 0xBE30 V0 = sensecode; A0 = motor state (1: disk removed, 2:head retracted, 4:spindle stopped)
- accepts: A0=p->target
- 3C0E801E LUI T6,801E
- 8DCE8DF0 LW T6,8DF0 (T6) # @801D8DF0: True if leo threads started
- 27BDFFD8 ADDIU SP,SP,FFD8
- AFBF0014 SW RA,0014 (SP)
- 15C00003 BNE T6,R0,+3
- AFA40028 SW A0,0028 (SP)
- 1000001A BEQ R0,R0,+26
- 2402FFFF ADDIU V0,R0,FFFF
- 3C0FA460 LUI T7,A460
- 8DF80010 LW T8,0010 (T7)
- 24080003 ADDIU T0,R0,0003
- 27A40018 ADDIU A0,SP,0018
- 33190001 ANDI T9,T8,0001
- 53200004 BEQL T9,R0,+4
- A3A80018 SB T0,0018 (SP)
- 10000011 BEQ R0,R0,+17 # return 8 if PI busy
- 24020008 ADDIU V0,R0,0008
- A3A80018 SB T0,0018 (SP) # leocmd[0] = 3: test unit ready
- A3A00019 SB R0,0019 (SP)
- A3A0001A SB R0,001A (SP)
- 0C072A69 JAL 801CA9A4 # send leocmd A0
- A3A0001B SB R0,001B (SP)
- 93A9001C LBU T1,001C (SP)
- 24020008 ADDIU V0,R0,0008
- 8FAC0028 LW T4,0028 (SP)
- 54490005 BNEL V0,T1,+5
- 93AB0024 LBU T3,0024 (SP)
- 93AA001C LBU T2,001C (SP)
- 504AFFFF BEQL V0,T2,-1 # while status busy: pass
- 93AA001C LBU T2,001C (SP)
- 93AB0024 LBU T3,0024 (SP) # state = leocmd[C]
- A18B0000 SB T3,0000 (T4)
- 93A2001D LBU V0,001D (SP) # return sensecode
- 8FBF0014 LW RA,0014 (SP)
- 27BD0028 ADDIU SP,SP,0028
- 03E00008 JR RA
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 00000000 NOP
- 801D2D50 0xBED0 handle leocmd 3: test unit ready
- 27BDFFE8 ADDIU SP,SP,FFE8
- AFBF0014 SW RA,0014 (SP)
- 0C0732F0 JAL 801CCBC0
- 00000000 NOP
- 3C03801E LUI V1,801E
- 24635E78 ADDIU V1,V1,5E78
- 8C6E0000 LW T6,0000 (V1) # leocmd = @801E5E78
- A1C2000C SB V0,000C (T6) # leocmd[C] = call 801CCBC0(): unit ready flags
- 8C6F0000 LW T7,0000 (V1)
- A1E00005 SB R0,0005 (T7)
- 8C780000 LW T8,0000 (V1)
- A3000004 SB R0,0004 (T8) # leocmd[4:6] = (0, 0)
- 8FBF0014 LW RA,0014 (SP)
- 27BD0018 ADDIU SP,SP,0018
- 03E00008 JR RA
- 00000000 NOP
- 801D2D90 0xBF10 handle leocmd 7: seek
- 3C05801E LUI A1,801E
- 24A55E78 ADDIU A1,A1,5E78
- 27BDFFE0 ADDIU SP,SP,FFE0
- 8CA20000 LW V0,0000 (A1) # leocmd = @801E5E78
- AFBF001C SW RA,001C (SP)
- AFB10018 SW S1,0018 (SP)
- AFB00014 SW S0,0014 (SP)
- 8C43000C LW V1,000C (V0) # LBA = @leocmd+C
- 24100014 ADDIU S0,R0,0014
- 240E0020 ADDIU T6,R0,0020
- 2C6110C4 SLTIU AT,V1,10C4
- 14200006 BNE AT,R0,+6
- 00000000 NOP
- A04E0005 SB T6,0005 (V0) # leocmd[5] = 0x20: LBA out of range
- 8CB80000 LW T8,0000 (A1)
- 240F0002 ADDIU T7,R0,0002
- 1000001A BEQ R0,R0,+26
- A30F0004 SB T7,0004 (T8) # leocmd[4] = 2: check condition
- @801D2DD8
- 0C0738D0 JAL 801CE340 # fill 801E5E90 with seek info for LBA A0
- 24640018 ADDIU A0,V1,0018 # LBA + 24: add on system LBAs
- 0C073288 JAL 801CCA20
- 00000000 NOP
- 14400005 BNE V0,R0,+5
- 305100FF ANDI S1,V0,00FF
- 3C19801E LUI T9,801E
- 8F395E78 LW T9,5E78 (T9) # leocmd = @801E5E78
- 10000010 BEQ R0,R0,+16
- A3200004 SB R0,0004 (T9)
- @801D2E00
- 0C0732AC JAL 801CCAB0
- 02202025 OR A0,S1,R0
- 14400005 BNE V0,R0,+5
- 02001025 OR V0,S0,R0
- 2610FFFF ADDIU S0,S0,FFFF
- 320800FF ANDI T0,S0,00FF
- 1440FFF1 BNE V0,R0,-15
- 01008025 OR S0,T0,R0
- 3C02801E LUI V0,801E
- 24425E78 ADDIU V0,V0,5E78
- 8C490000 LW T1,0000 (V0) # leocmd = @801E5E78
- 240A0002 ADDIU T2,R0,0002
- A1310005 SB S1,0005 (T1) # leocmd[5] = sensecode
- 8C4B0000 LW T3,0000 (V0)
- A16A0004 SB T2,0004 (T3) # leocmd[4] = 2: check condition
- 8FBF001C LW RA,001C (SP)
- 8FB00014 LW S0,0014 (SP)
- 8FB10018 LW S1,0018 (SP)
- 03E00008 JR RA
- 27BD0020 ADDIU SP,SP,0020
- 801D2E50 0xBFD0
- 801DC000 801C7A1C
- 801D2E58 default 0
- 801D2E5C default 0
- 801D2E60 default 0
- 801D2E64 default 0
- 801D2E68 0xBFE8
- 801C81EC 801C91E0 start leo threads; test rdram size and read diskID(?)
- 801C832C 801C9260 read requested (A0) bytelength from LBA; handle sensecode in struct A0
- 801C83A0 801C9260 write requested (A0) bytelength to LBA; handle sensecode in struct A0
- 801C8414 801C9334 set msg for request A0 to 9;
- 801C8414 801C93C4 set msg for request A0 to 9;
- 801D2E90 0xC010
- 00000000 00000000 00000000 00000000
- 00000000 00000000 00000000 00000000
- 00000000 00000000 00000000 00000000
- 00000000 00000000 00000000 00000000
- # leo error message pointers
- 801D2ED0 0xC050
- 801D8F40 801D8F54 00000000 00000000
- # leo japanese error message pointers
- 801D2EE0 0xC060
- 801D8F70 801D8F98 00000000 00000000
- 801D8FC0 801D8FE8 801D9010 00000000
- 801D9038 801D9060 801D9088 00000000
- 801D90B0 801D90D8 00000000 00000000
- 801D9100 00000000 00000000 00000000
- 801D9128 00000000 00000000 00000000
- 801D9150 00000000 00000000 00000000
- 00000000 00000000 00000000 00000000
- # leo english error message pointers
- 801D2F60 0xC0E0
- 801D9178 801D919C 00000000 00000000
- 801D91C4 801D91E8 801D9204 801D922C
- 801D9244 801D9268 801D9290 801D92B8
- 801D92D4 801D92FC 00000000 00000000
- 801D9318 00000000 00000000 00000000
- 801D933C 00000000 00000000 00000000
- 801D9364 00000000 00000000 00000000
- 00000000 00000000 00000000 00000000
- 801D2FE0 0xC160 "エラー番号 41.192x16.ci4"
- 801D35E0 0xC760 "Error Number 41.192x16.ci4"
- 801D3BE0 0xCD60 "詳しくは、取扱説明書をお読みください。.320x64.ci4"
- 801D63E0 0xF560 "Please read the instruction manual for details.320x64.ci4"
- 801D8BE0 0x11D60
- 00009D14 00232A14 00296314 002F8A14 00457E18 0063CA14 0084AA14 00A03314
- 00A45E14 00BB4E14 00CA6514 00D3770E 00E33302 00E78108 00EB2102 00EC6C14
- 01008A14 01163A14 01217A14 01377A14 014D8A14 01638A14 01798A14 018F7A14
- 01A58A14 01BB8A14 01D1170E 01D5490E 01DF770E 01EF740A 01F9770E 02097A14
- 021FDC16 024DBA14 026E7A14 0284BA14 02A59A14 02C16A14 02D26A14 02E3BA14
- 03048A14 031A1A14 03206A14 03318A14 03476A14 0358CA14 03799A14 0395CA14
- 03B67A14 03CCCA14 03ED8A14 04037A14 04196A14 042A8A14 0440AA14 045CDA14
- 04839A14 049F9A14 04BB7A14 04D14D14 04DF5C14 04F33D14 05015216 050681FA
- 050A9D14 052D9810 05449A14 05609810 05779A14 05939810 05AA5A14 05BB9C10
- 05DC7A14 05F22A14 05F83D14 06067A14 061C2A14 0622D810 06427810 06549810
- 066B9B10 06899B10 06A74810 06B06810 06BE5A14 06CF770E 06DF870E 06EFB70E
- 0707670E 07138A0E 0729670E 07356D14 074A1F16 07526D14 07675216
- 801D8D5C 0x11EDC
- 801D8D70 0x11EF0 leocmd handlers
- 00000000 801CE7E0 801CC040 801D2D50
- 801CE590 801CBD30 801D2040 801D2D90
- 801CE030 801CE2A0 801CE900 801CE1F0
- 801CC1F0 801CEBA0 801CEC5C 801CE888
- 801D8DB0 0x11F30 leocmd sample for reading one block at system LBA 12
- 05000000 00000000 00000000 0000000C
- 00000001 00000000 00000000 00000000
- 801D8DD0 0x11F50 leocmd sample for reading one block at system LBA 14 (disk ID)
- 05000000 00000000 00000000 0000000E
- 00000001 801E5F80 00000000 00000000
- 801D8DF0 0x11F70
- 801D8E00 0x11F80 ../z_n64dd.c
- 801D8E10 0x11F90 ddmsg
- 801D8E18 0x11F98 n64dd
- 801D8E20 0x11FA0 EZLJ
- 801D8E28 0x11FA8 EZLE
- 801D8E30 0x11FB0 function pointers f/ 801C8000
- 801C8034 801C805C 801C8080 801C8098
- 801C80C8 801C80F8 801C811C 801C810C
- 801C812C 801C813C 801C814C 801C815C
- 801C816C 801C8178
- 801D8E70 0x11FF0 function pointers f/ 801C9260
- 801C930C 801C931C 801C92BC 801C931C
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C931C 801C928C
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C92CC 801C9314
- 801C931C 801C931C 801C931C 801C931C
- 801C931C 801C931C 801C92FC 801C931C
- 801C931C 801C931C 801C931C 801C92EC
- 801C931C 801C92DC
- # Leo error strings
- 801D8F40 0x120C0 エラー番号
- 801D8F54 0x120D4 Error Number
- 801D8F68 0x120E8
- 801D8F6C 0x120EC
- 801D8F70 0x120F0 メモリー拡張パックが正しく差し込
- 801D8F98 0x12118 んでありますか?
- 801D8FC0 0x12140 間違ったディスクが差し込まれてい
- 801D8FE8 0x12168 る可能性があります。正しいディス
- 801D9010 0x12190 クに交換してください。
- 801D9038 0x121B8 注意:アクセスランプ点滅中にディ
- 801D9060 0x121E0 スクを抜かないでください。詳しく
- 801D9088 0x12208 は、取扱説明書をお読みください。
- 801D90B0 0x12230 詳しくは、取扱説明書をお読みくだ
- 801D90D8 0x12258 さい。
- 801D9100 0x12280 ディスクを差し込んでください。
- 801D9128 0x122A8 ディスクを差し込み直してください。
- 801D9150 0x122D0 ディスクを取り出してください。
- 801D9178 0x122F8 Are you sure the Expansion
- 801D919C 0x1231C Pak is inserted correctly?
- 801D91C4 0x12344 Check to see if the proper
- 801D91E8 0x12368 disk is inserted.
- 801D9204 0x12384 Please insert the disk the
- 801D922C 0x123AC correct disk.
- 801D9244 0x123C4 Do not remove the disk when
- 801D9268 0x123E8 the access light is flashing.
- 801D9290 0x12410 Please read the instruction
- 801D92B8 0x12438 manual for details.
- 801D92D4 0x12454 Please read the instruction
- 801D92FC 0x1247C manual for details.
- 801D9318 0x12498 Please insert a disk.
- 801D933C 0x124BC Please insert the disk again.
- 801D9364 0x124E4 Please remove the disk.
- 801D9388 0x12508
- 801D9390 0x12510 palette for error messages
- 0001 1085 2109 318D 4211 5295 6319 739D 8C63 9CE7 AD6B BDEF CE73 DEF7 EF7B FFFF
- 801D93B0 0x12530
- 00000000 00000000 00000000 00000000
- 801D93C0 0x12540 disk header LBAs 00 01 08 09
- 801D93C8 0x12548
- 801CB8C0 801CB904 801CB904 801CB904
- 801CB904 801CB904 801CB8C0 801CB904
- 801CB904 801CB8C0 801CB8C0 801CB8C0
- 801CB8C0 801CB8C0 801CB8C0 801CB880
- 801CB880 801CB880 801CB880 801CB880
- 801CB880 801CB880 801CB880 801CB8C0
- 801CB880 801CB8C0 801CB8C0 801CB8C0
- 801D9438 0x125B8 correction functions for leo commands 2-0xF
- 801CBA1C 801CBA1C 801CB934 801CB934
- 801CB934 801CB934 801CBA1C 801CB934
- 801CB934 801CBA1C 801CB934 801CBA1C
- 801CBA1C 801CBA1C
- 801D9470 0x125F0 disk ID LBAs 0E 0F
- 801D9480 0x12600
- 801CCB24 801CCBB4 801CCBB4 801CCBB4
- 801CCB24 801CCB24 801CCB10 801CCBB4
- 801CCBB4 801CCBB4 801CCBB4 801CCBB4
- 801CCB24 801CCBA4 801CCBB4 801CCBB4
- 801CCBB4 801CCBA4 801CCBA4 801CCB7C
- 801CCBB4 801CCBB4 801CCBB4 801CCB90
- 801CCBB4 801CCBA4
- 801D94F0 0x12670 leo library version string B014A26
- 801D94F8 0x12678 track lengths per zone
- E8 D8 D0 C0 B0 A0 90 80 70
- 801D9504 0x12684 block sizes per zone
- 4D08 47B8 4510 3FC0 3A70 3520 2FD0 2A80 2530
- 801D9518 0x12698 LBA zone map for disk types; 0x20 each
- 801D95F8 0x12778 initial track for logical zone
- 0000 009E 013C 01D1 0266 02FB 0390 0425
- 0091 012F 01C4 0259 02EE 0383 0418 048A
- 801D9618 0x12798 logical zone assignments for each disk type; 0x10 each
- 801D9688 0x12808 initial track for physical zone
- 0000 009E 013C 01D1 0266 02FB 0390 0425
- 801D9698 0x12818 highest unwritable LBAs for each disk type
- 801D96A8 0x12828 RAM area size for each disk type
- 801D96C4 0x12844
- 801D96D0 0x12850 C1 decryption table 1 for "error correction", aka intentional encryption
- 801D97D0 0x12950 C1 decryption table 1, offset right 1 byte, for "error correction", aka intentional encryption
- 801D98D0 0x12A50 C1 decryption table 2 for "error correction", aka intentional encryption
- 801D99D0 0x12B50 C1 decryption table 2, offset right 1 byte, for "error correction", aka intentional encryption
- 801D9AD0 0x12C50
- 801D9B70 0x12CF0 maximums for each RTC element
- 63 0C 1F 17 3B 3B
- 801D9B78 0x12CF8
- 801D9B90 0x12D10 EOF!!!
- +_+
- Other addresses:
- 801D9C30 target for 0x118 table read from LBA 1 + 0x1060
- 801D9D48 p->target for write to 801D9C30
- 801D9D80 queue, 1 msg at 801D9DB0
- 801D9D98 queue, 1 msg at 801D9DB4
- 801D9DB0 1 msg for queue 801D9D80
- 801D9DB4 1 msg for queue 801D9D98
- 801D9DB8
- 801D9DCC p->error# image
- 801D9DD0 p->error text image
- 801D9DD4 p->disk insertion/removal image
- 801D9DD8 thread: ddmsg
- 801D9F88 stack for thread 801D9DD8: ddmsg
- 801DAF88 profiler entry for ddmsg stack
- 801DAFA8 stack for thread : n64dd
- 801DBFA8 profiler entry for n64dd stack
- 801DBFC8
- 801DBFD0 copy of original diskID
- 801DBFF0 True if diskID has been verified and copied to 801DBFD0
- 801DC000 target for LBA
- 801E0D18 struct
- 0x1C 4 p->queue
- 0x38 0x20 diskID
- 0x68 4 sensecode
- 801E0DB0 thread
- 801E0F60
- 801E0F80 image for Error number
- 801E1580 image for error message
- 801E3D80 image for (two lines)
- 801E5180
- 801E5288 thread: Leo Int
- 801E5438 thread: Leo Work
- 801E55E8 stack for Leo Int thread at 801E5288
- 801D59E8 stack for Leo Work thread at 801E5438
- 801E5DE8 queue, [8] msgs at [801E0D90]: 64dd queue
- 801E5E00 queue, 1 msg at 801E5E60: cart interrupt callback
- 801E5E18 queue, 1 msg at 801E5E64
- 801E5E30 queue, 2 msgs at 801E5E68
- 801E5E48 queue, 1 msg at 801E5E70
- 801E5E60 1 msg for queue 801E5E00
- 801E5E64 1 msg for queue 801E5E18
- 801E5E68 2 msgs for queue 801E5E30
- 801E5E70 1 msg for queue 801E5E48
- 801E5E74 p->rdram target for block transfer
- 801E5E78 p->leocmd
- 801E5E7C
- 801E5E80 queue, 1 msg at 801E5E98
- 801E5E88 1 disk type
- 801E5E98 1 msg for queue 801E5E80
- 801E5E9C region code ("Japanese":0xE848D316, "English":0x2263EE56, "Dev":0)
- 801E5EA0 1 msg for queue 801E5EA8
- 801E5EA4
- 801E5EA8 queue, 1 msg at 801E5EA0
- 801E5EC0
- 801E5EC8 E/PI request buffer for ASIC DMAs
- 801E5EE0
- 801E6070 block 1 C2 buffer
- 801E6410 block 2 C2 buffer
- 801E67C0 buffer for microsequencer data
- 801E6800 result of inquiry (hardware version, 6, device type, #devices)
- 801E6804
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement