3089 lines
97 KiB
Plaintext
3089 lines
97 KiB
Plaintext
|
// Zelda UCode - CRC: 0x09CD143F
|
||
|
|
||
|
// This is a disassembly done using an outdated disasm. Need to redisasm and transfer
|
||
|
// the comments.
|
||
|
|
||
|
// This is a very complex little ucode. Quite a bit more so than AX.
|
||
|
// It also seems to use features of the DSP that AX neglects (the reverse is true as well,
|
||
|
// this ucode doesn't seem to use the hardware ADPCM feature at all, instead opting to
|
||
|
// decode a different ADPCM format manually).
|
||
|
|
||
|
// The value 0x50 is VERY common as a loop size. Many, especially intermediate/output
|
||
|
// sample buffers seem to be of this size. Half that size, 0x28, is also seen.
|
||
|
|
||
|
// MemMap
|
||
|
|
||
|
|
||
|
// 0x0400 to 0x04C0 - Some kind of CommandoBlock
|
||
|
|
||
|
|
||
|
|
||
|
// exception vector
|
||
|
0000 029f 0012 JMP 0x0012
|
||
|
0002 0000 NOP
|
||
|
0003 0000 NOP
|
||
|
0004 02ff RTI
|
||
|
0005 0000 NOP
|
||
|
0006 02ff RTI
|
||
|
0007 0000 NOP
|
||
|
0008 02ff RTI
|
||
|
0009 0000 NOP
|
||
|
000a 02ff RTI
|
||
|
000b 0000 NOP
|
||
|
000c 02ff RTI
|
||
|
000d 0000 NOP
|
||
|
000e 029f 05b8 JMP 0x05b8
|
||
|
|
||
|
|
||
|
0010 029f 004e JMP 0x004e
|
||
|
|
||
|
// Handler for 0000 exception (reset?)
|
||
|
0012 1205 SBCLR #0x05 // interesting, what is this flag? must be important.
|
||
|
0013 02bf 0057 CALL 0x0057 // InitHardware()
|
||
|
|
||
|
// clear memory
|
||
|
0015 8100 CLR $AC0.M
|
||
|
0016 009f 1000 LRI $AC1.M, #0x1000
|
||
|
0018 0080 0000 LRI $R00, #0x0000
|
||
|
001a 005f LOOP $AC1.M
|
||
|
001b 1b1e SRRI @$R00, $AC0.M
|
||
|
|
||
|
001c 02bf 0688 CALL 0x0688 // InitGlobalsVars()
|
||
|
001e 02bf 04c0 CALL 0x04c0
|
||
|
0020 02bf 0e14 CALL 0x0e14 // Init some kind of table
|
||
|
0022 0e00 LRIS $AC0.M, #0x00
|
||
|
0023 02bf 066a CALL 0x066a // SendMessageViaDSPMailBox_DCD1(AC0.M)
|
||
|
0025 009e 1111 LRI $AC0.M, #0x1111
|
||
|
0027 02bf 0674 CALL 0x0674 // SendMessageViaDSPMailBox_F355(AC0.M)
|
||
|
0029 0e00 LRIS $AC0.M, #0x00
|
||
|
002a 00fe 034e SR @0x034e, $AC0.M
|
||
|
002c 1305 SBSET #0x05
|
||
|
002d 029f 06c5 JMP 0x06c5 -> jump to MessageLoop()
|
||
|
|
||
|
// CommandHandler()
|
||
|
002f 00df 0357 LR $AC1.M, @0x0357
|
||
|
0031 00ff 0345 SR @0x0345, $AC1.M
|
||
|
0033 00de 0356 LR $AC0.M, @0x0356
|
||
|
0035 1ffe MRR $AC1.M, $AC0.M
|
||
|
0036 0340 00ff ANDI $ACC1, #0x00ff
|
||
|
0038 00ff 0344 SR @0x0344, $AC1.M
|
||
|
003a 1479 LSR $ACC0, #0x39
|
||
|
003b 0240 007e ANDI $ACC0, #0x007e
|
||
|
003d 00fe 0343 SR @0x0343, $AC0.M
|
||
|
003f 0200 0075 ADDI $ACC0, #0x0075 // offset of "JMP Table Opcodes"
|
||
|
0041 1c1e MRR $R00, $AC0.M
|
||
|
0042 170f JMPR $R00 // JMP to OpcodeHandler
|
||
|
0043 0092 00ff LRI $CR, #0x00ff
|
||
|
0045 0e04 LRIS $AC0.M, #0x04
|
||
|
0046 02bf 066a CALL 0x066a // SendMessageViaDSPMailBox_DCD1(AC0.M)
|
||
|
0048 00de 0356 LR $AC0.M, @0x0356
|
||
|
004a 02bf 0674 CALL 0x0674 // SendMessageViaDSPMailBox_F355(AC0.M)
|
||
|
004c 029f 002d JMP 0x002d
|
||
|
|
||
|
|
||
|
// task start vector (0x0010) jumps here immediately.
|
||
|
004e 1205 SBCLR #0x05
|
||
|
004f 02bf 0057 CALL 0x0057 // InitHardware()
|
||
|
0051 0e01 LRIS $AC0.M, #0x01
|
||
|
0052 02bf 066a CALL 0x066a // SendMessageViaDSPMailBox_DCD1(AC0.M)
|
||
|
0054 1305 SBSET #0x05
|
||
|
0055 029f 002d JMP 0x002d
|
||
|
|
||
|
|
||
|
// InitHardware()
|
||
|
0057 1202 SBCLR #0x02
|
||
|
0058 1203 SBCLR #0x03
|
||
|
0059 1204 SBCLR #0x04
|
||
|
005a 1306 SBSET #0x06
|
||
|
005b 8e00 S40
|
||
|
005c 8c00 CLR15
|
||
|
005d 8b00 M0
|
||
|
// Initialize the loop index registers to #ffff to neutralize them.
|
||
|
005e 009e ffff LRI $AC0.M, #0xffff
|
||
|
0060 1d1e MRR $R08, $AC0.M
|
||
|
0061 1d3e MRR $R09, $AC0.M
|
||
|
0062 1d5e MRR $R10, $AC0.M
|
||
|
0063 1d7e MRR $R11, $AC0.M
|
||
|
0064 0092 00ff LRI $CR, #0x00ff
|
||
|
0066 02df RET
|
||
|
|
||
|
|
||
|
// ReadWholeMessage($R00)
|
||
|
0067 0090 0000 LRI $ACH0, #0x0000
|
||
|
0069 0c00 LRIS $AC0.L, #0x00
|
||
|
006a 0081 0358 LRI $R01, #0x0358
|
||
|
006c 007e 0071 BLOOP $AC0.M, 0x0071
|
||
|
006e 193e LRRI $AC0.M, @$R01
|
||
|
006f 1b1e SRRI @$R00, $AC0.M
|
||
|
0070 193e LRRI $AC0.M, @$R01
|
||
|
0071 1b1e SRRI @$R00, $AC0.M
|
||
|
0072 02df RET
|
||
|
|
||
|
// Opcode_03() -> direct return
|
||
|
0073 029f 0043 JMP 0x0043
|
||
|
|
||
|
// JMP Table Opcodes
|
||
|
0075 029f 0043 JMP 0x0043 // dummy handler -> direct return
|
||
|
0077 029f 0095 JMP 0x0095
|
||
|
0079 029f 0243 JMP 0x0243
|
||
|
007b 029f 0073 JMP 0x0073
|
||
|
007d 029f 0580 JMP 0x0580
|
||
|
007f 029f 0592 JMP 0x0592
|
||
|
0081 029f 0469 JMP 0x0469
|
||
|
0083 029f 041d JMP 0x041d
|
||
|
0085 029f 0485 JMP 0x0485
|
||
|
0087 029f 044d JMP 0x044d
|
||
|
0089 029f 0043 JMP 0x0043 // dummy handler -> direct return
|
||
|
008b 029f 0043 JMP 0x0043 // dummy handler -> direct return
|
||
|
008d 029f 0043 JMP 0x0043 // dummy handler -> direct return
|
||
|
008f 029f 00b2 JMP 0x00b2
|
||
|
0091 029f 0043 JMP 0x0043 // dummy handler -> direct return
|
||
|
0093 029f 0043 JMP 0x0043 // dummy handler -> direct return
|
||
|
|
||
|
|
||
|
// Opcode_01() - DsetupTable()
|
||
|
0095 0080 0380 LRI $R00, #0x0380
|
||
|
0097 0e04 LRIS $AC0.M, #0x04
|
||
|
0098 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
009a 0081 0382 LRI $R01, #0x0382
|
||
|
009c 009f 0000 LRI $AC1.M, #0x0000
|
||
|
009e 0080 0280 LRI $R00, #0x0280
|
||
|
00a0 02bf 0523 CALL 0x0523 // RAMtoDMEM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
00a2 0081 0384 LRI $R01, #0x0384
|
||
|
00a4 009f 0300 LRI $AC1.M, #0x0300
|
||
|
00a6 0080 0020 LRI $R00, #0x0020
|
||
|
00a8 02bf 0523 CALL 0x0523 // RAMtoDMEM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
00aa 00de 0345 LR $AC0.M, @0x0345
|
||
|
00ac 00fe 0342 SR @0x0342, $AC0.M
|
||
|
00ae 02bf 0bec CALL 0x0bec
|
||
|
00b0 029f 0043 JMP 0x0043
|
||
|
|
||
|
// Opcode_0D() - DsetDolbyDelay
|
||
|
00b2 0080 0374 LRI $R00, #0x0374
|
||
|
00b4 0e01 LRIS $AC0.M, #0x01
|
||
|
00b5 00fe 0377 SR @0x0377, $AC0.M
|
||
|
00b7 00fe 037c SR @0x037c, $AC0.M
|
||
|
00b9 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
00bb 00de 0345 LR $AC0.M, @0x0345
|
||
|
00bd 00fe 0376 SR @0x0376, $AC0.M
|
||
|
00bf 029f 0043 JMP 0x0043
|
||
|
|
||
|
// Load some kind of command block with size C0
|
||
|
00c1 0081 034c LRI $R01, #0x034c
|
||
|
00c3 009f 0400 LRI $AC1.M, #0x0400
|
||
|
00c5 0080 00c0 LRI $R00, #0x00c0
|
||
|
00c7 02bf 0523 CALL 0x0523 // RAMtoDMEM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
00c9 02df RET
|
||
|
|
||
|
// Copy something out.
|
||
|
00ca 0081 034c LRI $R01, #0x034c
|
||
|
00cc 009f 0400 LRI $AC1.M, #0x0400
|
||
|
00ce 0080 0080 LRI $R00, #0x0080
|
||
|
00d0 0081 034c LRI $R01, #0x034c
|
||
|
00d2 193e LRRI $AC0.M, @$R01
|
||
|
00d3 193c LRRI $AC0.L, @$R01
|
||
|
00d4 0098 0000 LRI $AX0.L, #0x0000
|
||
|
00d6 7000 ADDAXL $AC0.M, $AX0.L
|
||
|
00d7 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
00d9 02df RET
|
||
|
|
||
|
// CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
// Hm, is it really? The MOVR loop doesn't involve R03.
|
||
|
00da 191e LRRI $AC0.M, @$R00
|
||
|
00db 191a LRRI $AX0.H, @$R00
|
||
|
00dc 005f LOOP $AC1.M
|
||
|
00dd 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M // ??? Does the .LS makes any sense? shouldnt it be just a load? um yeah it makes sense, that's a LOOP, not a BLOOP. wonder about the SRRIs though.
|
||
|
00de 1b7e SRRI @$R03, $AC0.M
|
||
|
00df 1b7a SRRI @$R03, $AX0.H
|
||
|
00e0 02df RET
|
||
|
|
||
|
// Decrypt???? (btw, wonder if LRRI disasm is broken).
|
||
|
00e1 191e LRRI $AC0.M, @$R00
|
||
|
00e2 191a LRRI $AX0.H, @$R00
|
||
|
00e3 007f 00e8 BLOOP $AC1.M, 0x00e8
|
||
|
00e5 32b2 XORR.SL $AC0.M, $AX1.H : $AC0.M, $AX1.H
|
||
|
00e6 65a0 MOVR.LS $AC1.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
00e7 33ba XORR.SLM $AC1.M, $AX1.H : $AC0.M, $AX1.H
|
||
|
00e8 64a1 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC1.M
|
||
|
00e9 0000 NOP
|
||
|
00ea 02df RET
|
||
|
|
||
|
// Multiply loop of some kind...
|
||
|
// Reads from arrays pointed to by R00, R03
|
||
|
// Writes to array pointed to by R00, i think - extensions are unclear.
|
||
|
// TODO: Figure out what LSR $ACC1, #0x3f means .. just a clear?
|
||
|
// Loop count in AC1.M.
|
||
|
00eb 8a00 M2
|
||
|
00ec 157f LSR $ACC1, #0x3f
|
||
|
00ed 1c20 MRR $R01, $R00
|
||
|
00ee 1c03 MRR $R00, $R03
|
||
|
00ef 193a LRRI $AX0.H, @$R01
|
||
|
00f0 9051 MUL.L $AX0.L, $AX0.H : $AX0.H, @$R01
|
||
|
00f1 925b MULMVZ.L $AX0.L, $AX0.H, $AC0.M : $AX1.H, @$R03
|
||
|
00f2 007f 00f7 BLOOP $AC1.M, 0x00f7
|
||
|
00f4 4651 ADDR.L $AC0.M, $AX1.H : $AX0.H, @$R01
|
||
|
00f5 92b2 MULMVZ.SL $AX0.L, $AX0.H, $AC0.M : $AC0.M, $AX1.H
|
||
|
00f6 4651 ADDR.L $AC0.M, $AX1.H : $AX0.H, @$R01
|
||
|
00f7 92b2 MULMVZ.SL $AX0.L, $AX0.H, $AC0.M : $AC0.M, $AX1.H
|
||
|
00f8 8b00 M0
|
||
|
00f9 02df RET
|
||
|
|
||
|
// Another multiply loop of some kind ....
|
||
|
// Loop count in AC1.M.
|
||
|
00fa 8a00 M2
|
||
|
00fb 191a LRRI $AX0.H, @$R00
|
||
|
00fc 9050 MUL.L $AX0.L, $AX0.H : $AX0.H, @$R00
|
||
|
00fd 9250 MULMVZ.L $AX0.L, $AX0.H, $AC0.M : $AX0.H, @$R00
|
||
|
00fe 005f LOOP $AC1.M
|
||
|
00ff 92a0 MULMVZ.LS $AX0.L, $AX0.H, $AC0.M : $AX0.H, $AC0.M
|
||
|
0100 8b00 M0
|
||
|
0101 02df RET
|
||
|
|
||
|
// Clear some memory (called by op2)
|
||
|
0102 8100 CLR $AC0.M
|
||
|
0103 8900 CLR $AC1.M
|
||
|
0104 0e50 LRIS $AC0.M, #0x50
|
||
|
0105 0080 0d00 LRI $R00, #0x0d00
|
||
|
0107 005e LOOP $AC0.M
|
||
|
0108 1b1f SRRI @$R00, $AC1.M
|
||
|
0109 0080 0d60 LRI $R00, #0x0d60
|
||
|
010b 005e LOOP $AC0.M
|
||
|
010c 1b1f SRRI @$R00, $AC1.M
|
||
|
010d 02bf 0e3f CALL 0x0e3f
|
||
|
010f 8100 CLR $AC0.M
|
||
|
0110 8900 CLR $AC1.M
|
||
|
0111 0e50 LRIS $AC0.M, #0x50
|
||
|
0112 0080 0ca0 LRI $R00, #0x0ca0
|
||
|
0114 005e LOOP $AC0.M
|
||
|
0115 1b1f SRRI @$R00, $AC1.M
|
||
|
0116 0080 0f40 LRI $R00, #0x0f40
|
||
|
0118 005e LOOP $AC0.M
|
||
|
0119 1b1f SRRI @$R00, $AC1.M
|
||
|
011a 0080 0fa0 LRI $R00, #0x0fa0
|
||
|
011c 005e LOOP $AC0.M
|
||
|
011d 1b1f SRRI @$R00, $AC1.M
|
||
|
011e 0080 0a00 LRI $R00, #0x0a00
|
||
|
0120 005e LOOP $AC0.M
|
||
|
0121 1b1f SRRI @$R00, $AC1.M
|
||
|
0122 0080 09a0 LRI $R00, #0x09a0
|
||
|
0124 005e LOOP $AC0.M
|
||
|
0125 1b1f SRRI @$R00, $AC1.M
|
||
|
0126 02df RET
|
||
|
|
||
|
|
||
|
// A function with multiplies that doesn't change the mode?
|
||
|
// Looks like a stereo mixer or something
|
||
|
0127 00c0 03a0 LR $R00, @0x03a0
|
||
|
0129 191a LRRI $AX0.H, @$R00
|
||
|
012a 00df 03a1 LR $AC1.M, @0x03a1
|
||
|
012c 009b 00a0 LRI $AX1.H, #0x00a0
|
||
|
012e 0081 0393 LRI $R01, #0x0393
|
||
|
0130 18bc LRRD $AC0.L, @$R01
|
||
|
0131 b871 MULX.L $AX0.H, $AX1.H : $AC0.M, @$R01
|
||
|
0132 bc00 MULXAC $AX0.H, $AX1.H, $AC0.M
|
||
|
0133 0080 0050 LRI $R00, #0x0050
|
||
|
0135 0508 ADDIS $ACC1, #0x08
|
||
|
0136 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0138 00de 0390 LR $AC0.M, @0x0390
|
||
|
013a 02a0 0001 ANDCF $AC0.M, #0x0001
|
||
|
013c 029d 0145 JNZ 0x0145
|
||
|
013e 0080 0398 LRI $R00, #0x0398
|
||
|
0140 0e08 LRIS $AC0.M, #0x08
|
||
|
0141 00c1 03a1 LR $R01, @0x03a1
|
||
|
0143 02bf 0b2e CALL 0x0b2e
|
||
|
0145 0f50 LRIS $AC1.M, #0x50
|
||
|
0146 00c0 03a1 LR $R00, @0x03a1
|
||
|
0148 00da 0394 LR $AX0.H, @0x0394
|
||
|
//..
|
||
|
014a 8600 TSTAXH $AX0.H
|
||
|
014b 0295 0152 JEQ 0x0152
|
||
|
014d 1c7a MRR $R03, $AX0.H
|
||
|
014e 00d8 0395 LR $AX0.L, @0x0395
|
||
|
0150 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
0152 0f50 LRIS $AC1.M, #0x50
|
||
|
0153 00c0 03a1 LR $R00, @0x03a1
|
||
|
0155 00da 0396 LR $AX0.H, @0x0396
|
||
|
//..
|
||
|
0157 8600 TSTAXH $AX0.H
|
||
|
0158 0295 015f JEQ 0x015f
|
||
|
015a 1c7a MRR $R03, $AX0.H
|
||
|
015b 00d8 0397 LR $AX0.L, @0x0397
|
||
|
015d 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
015f 00de 0390 LR $AC0.M, @0x0390
|
||
|
0161 02a0 0002 ANDCF $AC0.M, #0x0002
|
||
|
0163 02dd RETNZ
|
||
|
//..
|
||
|
0164 0080 0398 LRI $R00, #0x0398
|
||
|
0166 0e08 LRIS $AC0.M, #0x08
|
||
|
0167 00c1 03a1 LR $R01, @0x03a1
|
||
|
0169 02bf 0b2e CALL 0x0b2e
|
||
|
016b 02df RET
|
||
|
|
||
|
// Yet another mixer? this one does both 0x50 and 0x28 loops.
|
||
|
016c 8900 CLR $AC1.M
|
||
|
016d 009f 0dc0 LRI $AC1.M, #0x0dc0
|
||
|
016f 00ff 03a1 SR @0x03a1, $AC1.M
|
||
|
0171 009f 03a8 LRI $AC1.M, #0x03a8
|
||
|
0173 00ff 03a2 SR @0x03a2, $AC1.M
|
||
|
0175 009f 03a4 LRI $AC1.M, #0x03a4
|
||
|
0177 00ff 03a0 SR @0x03a0, $AC1.M
|
||
|
0179 1104 019f BLOOPI #0x04, 0x019f // scary bloopi - end of instruction!
|
||
|
017b 00c0 03a2 LR $R00, @0x03a2
|
||
|
017d 0083 0390 LRI $R03, #0x0390
|
||
|
017f 0f0e LRIS $AC1.M, #0x0e
|
||
|
0180 02bf 00da CALL 0x00da // CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
0182 00da 0390 LR $AX0.H, @0x0390
|
||
|
0184 8600 TSTAXH $AX0.H
|
||
|
0185 0295 0191 JEQ 0x0191
|
||
|
0187 00df 03a1 LR $AC1.M, @0x03a1
|
||
|
0189 1c7f MRR $R03, $AC1.M
|
||
|
018a 0550 ADDIS $ACC1, #0x50
|
||
|
018b 1c1f MRR $R00, $AC1.M
|
||
|
018c 0f06 LRIS $AC1.M, #0x06
|
||
|
018d 02bf 00da CALL 0x00da // CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
018f 02bf 0127 CALL 0x0127
|
||
|
//..
|
||
|
0191 00de 03a2 LR $AC0.M, @0x03a2
|
||
|
0193 0410 ADDIS $ACC0, #0x10
|
||
|
0194 00fe 03a2 SR @0x03a2, $AC0.M
|
||
|
0196 00de 03a1 LR $AC0.M, @0x03a1
|
||
|
0198 0460 ADDIS $ACC0, #0x60
|
||
|
0199 00fe 03a1 SR @0x03a1, $AC0.M
|
||
|
019b 00de 03a0 LR $AC0.M, @0x03a0
|
||
|
019d 7400 INCM $AC0.M
|
||
|
019e 00fe 03a0 SR @0x03a0, $AC0.Ma
|
||
|
// end of BLOOPI 0179
|
||
|
01a0 0f50 LRIS $AC1.M, #0x50
|
||
|
01a1 0080 0c00 LRI $R00, #0x0c00
|
||
|
01a3 0083 0e80 LRI $R03, #0x0e80
|
||
|
01a5 0098 7fff LRI $AX0.L, #0x7fff
|
||
|
01a7 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
01a9 0f50 LRIS $AC1.M, #0x50
|
||
|
01aa 0080 0c00 LRI $R00, #0x0c00
|
||
|
01ac 0083 0ee0 LRI $R03, #0x0ee0
|
||
|
01ae 0098 b820 LRI $AX0.L, #0xb820
|
||
|
01b0 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
01b2 0f28 LRIS $AC1.M, #0x28 // half size!
|
||
|
01b3 0080 0c78 LRI $R00, #0x0c78
|
||
|
01b5 0083 0e80 LRI $R03, #0x0e80
|
||
|
01b7 0098 b820 LRI $AX0.L, #0xb820
|
||
|
01b9 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
01bb 0f28 LRIS $AC1.M, #0x28 // half size!
|
||
|
01bc 0080 0c78 LRI $R00, #0x0c78
|
||
|
01be 0083 0ee0 LRI $R03, #0x0ee0
|
||
|
01c0 0098 7fff LRI $AX0.L, #0x7fff
|
||
|
01c2 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
01c4 8100 CLR $AC0.M
|
||
|
01c5 8900 CLR $AC1.M
|
||
|
01c6 0e50 LRIS $AC0.M, #0x50 // bufsize. looks like buf clearing
|
||
|
01c7 0080 0c00 LRI $R00, #0x0c00
|
||
|
01c9 005e LOOP $AC0.M
|
||
|
01ca 1b1f SRRI @$R00, $AC1.M
|
||
|
01cb 0080 0c50 LRI $R00, #0x0c50
|
||
|
01cd 005e LOOP $AC0.M
|
||
|
01ce 1b1f SRRI @$R00, $AC1.M
|
||
|
01cf 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
01d0 00c0 03a0 LR $R00, @0x03a0
|
||
|
01d2 181a LRR $AX0.H, @$R00
|
||
|
01d3 8100 CLR $AC0.M
|
||
|
01d4 181e LRR $AC0.M, @$R00
|
||
|
01d5 00db 0391 LR $AX1.H, @0x0391
|
||
|
01d7 7400 INCM $AC0.M
|
||
|
01d8 d100 CMPAXH $AC1.M, $AX0.H
|
||
|
01d9 0270 IF_0
|
||
|
01da 8100 CLR $AC0.M
|
||
|
01db 1b1e SRRI @$R00, $AC0.M
|
||
|
01dc 00df 03a1 LR $AC1.M, @0x03a1
|
||
|
01de 009b 00a0 LRI $AX1.H, #0x00a0
|
||
|
01e0 0081 0393 LRI $R01, #0x0393
|
||
|
01e2 18bc LRRD $AC0.L, @$R01
|
||
|
01e3 b871 MULX.L $AX0.H, $AX1.H : $AC0.M, @$R01
|
||
|
01e4 bc00 MULXAC $AX0.H, $AX1.H, $AC0.M
|
||
|
01e5 0080 0050 LRI $R00, #0x0050
|
||
|
01e7 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
01e9 02df RET
|
||
|
|
||
|
|
||
|
// Another zany mixer... this time on half-length buffers (0x28 instead of 0x50)?
|
||
|
01ea 8900 CLR $AC1.M
|
||
|
01eb 0f28 LRIS $AC1.M, #0x28
|
||
|
01ec 0080 0c50 LRI $R00, #0x0c50
|
||
|
01ee 0083 0ea8 LRI $R03, #0x0ea8
|
||
|
01f0 0098 b820 LRI $AX0.L, #0xb820
|
||
|
01f2 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
01f4 8900 CLR $AC1.M
|
||
|
01f5 0f28 LRIS $AC1.M, #0x28
|
||
|
01f6 0080 0c50 LRI $R00, #0x0c50
|
||
|
01f8 0083 0f08 LRI $R03, #0x0f08
|
||
|
01fa 0098 7fff LRI $AX0.L, #0x7fff
|
||
|
01fc 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
01fe 009f 0dc0 LRI $AC1.M, #0x0dc0
|
||
|
0200 00ff 03a1 SR @0x03a1, $AC1.M
|
||
|
0202 009f 03a8 LRI $AC1.M, #0x03a8
|
||
|
0204 00ff 03a2 SR @0x03a2, $AC1.M
|
||
|
0206 009f 03a4 LRI $AC1.M, #0x03a4
|
||
|
0208 00ff 03a0 SR @0x03a0, $AC1.M
|
||
|
020a 1104 0228 BLOOPI #0x04, 0x0228
|
||
|
020c 00c0 03a2 LR $R00, @0x03a2
|
||
|
020e 0083 0390 LRI $R03, #0x0390
|
||
|
0210 0f0e LRIS $AC1.M, #0x0e
|
||
|
0211 02bf 00da CALL 0x00da // CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
0213 00da 0390 LR $AX0.H, @0x0390
|
||
|
0215 8600 TSTAXH $AX0.H
|
||
|
0216 0295 021a JEQ 0x021a
|
||
|
0218 02bf 01d0 CALL 0x01d0
|
||
|
021a 00de 03a2 LR $AC0.M, @0x03a2
|
||
|
021c 0410 ADDIS $ACC0, #0x10
|
||
|
021d 00fe 03a2 SR @0x03a2, $AC0.M
|
||
|
021f 00de 03a1 LR $AC0.M, @0x03a1
|
||
|
0221 0460 ADDIS $ACC0, #0x60
|
||
|
0222 00fe 03a1 SR @0x03a1, $AC0.M
|
||
|
0224 00de 03a0 LR $AC0.M, @0x03a0
|
||
|
0226 7400 INCM $AC0.M
|
||
|
0227 00fe 03a0 SR @0x03a0, $AC0.M
|
||
|
0229 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
022a 0081 0386 LRI $R01, #0x0386
|
||
|
022c 009f 03a8 LRI $AC1.M, #0x03a8
|
||
|
022e 0080 0040 LRI $R00, #0x0040
|
||
|
0230 02bf 0523 CALL 0x0523 // RAMtoDMEM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
0232 02df RET
|
||
|
|
||
|
|
||
|
// Load 32-bit value, add AX0 to it, store it back. Trash ACC0.
|
||
|
0233 191e LRRI $AC0.M, @$R00
|
||
|
0234 189c LRRD $AC0.L, @$R00
|
||
|
0235 4800 ADDAX $AC0.M, $AX0.L
|
||
|
0236 1b1e SRRI @$R00, $AC0.M
|
||
|
0237 1b1c SRRI @$R00, $AC0.L
|
||
|
0238 02df RET
|
||
|
|
||
|
|
||
|
// This looks like some sort of crazy wait loop, waiting for one value to equal the other.
|
||
|
// Must be interrupt-driven?
|
||
|
0239 8100 CLR $AC0.M
|
||
|
023a 8900 CLR $AC1.M
|
||
|
023b 00df 0354 LR $AC1.M, @0x0354
|
||
|
023d 00de 034e LR $AC0.M, @0x034e
|
||
|
023f 8200 CMP
|
||
|
0240 0293 0239 JX3 0x0239
|
||
|
0242 02df RET
|
||
|
|
||
|
// Opcode_02() - SyncFrame
|
||
|
0243 0080 0388 LRI $R00, #0x0388
|
||
|
0245 0081 0067 LRI $R01, #0x0067
|
||
|
0247 0e02 LRIS $AC0.M, #0x02
|
||
|
0248 173f CALLR $R01 // Strange call - seems to always go to 0067 .. unless we can get here in another way than from above.
|
||
|
0249 00de 0344 LR $AC0.M, @0x0344
|
||
|
024b 00fe 0341 SR @0x0341, $AC0.M
|
||
|
024d 00de 0345 LR $AC0.M, @0x0345
|
||
|
024f 00fe 038e SR @0x038e, $AC0.M
|
||
|
0251 8100 CLR $AC0.M
|
||
|
0252 00fe 0355 SR @0x0355, $AC0.M
|
||
|
0254 02bf 022a CALL 0x022a
|
||
|
0256 02bf 05a4 CALL 0x05a4 // ClearAccelerator()
|
||
|
0258 00de 0341 LR $AC0.M, @0x0341
|
||
|
025a 007e 0418 BLOOP $AC0.M, 0x0418
|
||
|
025c 02bf 0102 CALL 0x0102 // Clear some memory areas...
|
||
|
025e 02bf 016c CALL 0x016c // mix in background music? or something? dunno
|
||
|
0260 02bf 095f CALL 0x095f // recalc some table?
|
||
|
0262 00de 0355 LR $AC0.M, @0x0355 // Increase counter at 0x0355
|
||
|
0264 7400 INCM $AC0.M
|
||
|
0265 00fe 0355 SR @0x0355, $AC0.M
|
||
|
0267 8100 CLR $AC0.M
|
||
|
0268 00fe 0354 SR @0x0354, $AC0.M // Zero counter at 0x0354
|
||
|
026a 00de 0342 LR $AC0.M, @0x0342 // Read 0x0342, that number of times, process the loop.
|
||
|
026c 007e 03c0 BLOOP $AC0.M, 0x03c0 // Strange loop - goes outside this function...
|
||
|
026e 02bf 0239 CALL 0x0239 // This one waits for interrupts.
|
||
|
0270 8100 CLR $AC0.M
|
||
|
0271 8900 CLR $AC1.M
|
||
|
0272 00de 0354 LR $AC0.M, @0x0354 // 0x354 is obviously interesting.
|
||
|
0274 147c LSR $ACC0, #0x3c
|
||
|
0275 0200 04fc ADDI $ACC0, #0x04fc
|
||
|
0277 1c1e MRR $R00, $AC0.M
|
||
|
0278 181f LRR $AC1.M, @$R00 // Table lookup from DRAM @ 0x04fc. Something must have initialized it.
|
||
|
0279 00de 0354 LR $AC0.M, @0x0354
|
||
|
027b 0240 000f ANDI $ACC0, #0x000f
|
||
|
027d 3d80 ANDC.LS $AC1.M : $AX0.L, $AC0.M
|
||
|
027e 03c0 8000 ANDF $AC1.M, #0x8000
|
||
|
0280 029c 03bc JZR 0x03bc
|
||
|
0282 00d8 0354 LR $AX0.L, @0x0354
|
||
|
0284 009a 0180 LRI $AX0.H, #0x0180
|
||
|
0286 8100 CLR $AC0.M
|
||
|
0287 00de 0380 LR $AC0.M, @0x0380
|
||
|
0289 00dc 0381 LR $AC0.L, @0x0381
|
||
|
028b 9000 MUL $AX0.L, $AX0.H
|
||
|
028c 9400 MULAC $AX0.L, $AX0.H, $AC0.M
|
||
|
028d 00fe 034c SR @0x034c, $AC0.M
|
||
|
028f 00fc 034d SR @0x034d, $AC0.L
|
||
|
0291 02bf 00c1 CALL 0x00c1
|
||
|
0293 00da 0400 LR $AX0.H, @0x0400
|
||
|
0295 8600 TSTAXH $AX0.H
|
||
|
0296 0295 03bc JEQ 0x03bc
|
||
|
0298 00da 0401 LR $AX0.H, @0x0401
|
||
|
029a 8600 TSTAXH $AX0.H
|
||
|
029b 0294 03bc JNE 0x03bc
|
||
|
029d 00da 0433 LR $AX0.H, @0x0433
|
||
|
029f 00fa 03f8 SR @0x03f8, $AX0.H
|
||
|
02a1 00da 0406 LR $AX0.H, @0x0406
|
||
|
02a3 8600 TSTAXH $AX0.H
|
||
|
02a4 0294 0dff JNE 0x0dff
|
||
|
02a6 8100 CLR $AC0.M
|
||
|
02a7 00de 0480 LR $AC0.M, @0x0480
|
||
|
02a9 0609 CMPIS $ACC0, #0x09
|
||
|
02aa 0295 02bd JEQ 0x02bd
|
||
|
02ac 0605 CMPIS $ACC0, #0x05
|
||
|
02ad 0295 02bd JEQ 0x02bd
|
||
|
02af 0608 CMPIS $ACC0, #0x08
|
||
|
02b0 0295 098f JEQ 0x098f
|
||
|
02b2 0610 CMPIS $ACC0, #0x10
|
||
|
02b3 0295 0a14 JEQ 0x0a14
|
||
|
02b5 0620 CMPIS $ACC0, #0x20
|
||
|
02b6 0295 0a9a JEQ 0x0a9a
|
||
|
02b8 0621 CMPIS $ACC0, #0x21
|
||
|
02b9 0295 0aa2 JEQ 0x0aa2
|
||
|
02bb 029f 087c JMP 0x087c
|
||
|
|
||
|
// Choose from one of several 0x50 size buffers and do something?
|
||
|
02bd 00d8 0402 LR $AX0.L, @0x0402
|
||
|
02bf 8100 CLR $AC0.M
|
||
|
02c0 8900 CLR $AC1.M
|
||
|
02c1 00dc 0430 LR $AC0.L, @0x0430
|
||
|
02c3 8d00 SET15
|
||
|
02c4 0950 LRIS $AX1.L, #0x50
|
||
|
02c5 a000 MULX $AX0.L, $AX1.L
|
||
|
02c6 a400 MULXAC $AX0.L, $AX1.L, $AC0.M
|
||
|
02c7 1404 LSL $ACC0, #0x04
|
||
|
02c8 8c00 CLR15
|
||
|
02c9 1ffe MRR $AC1.M, $AC0.M
|
||
|
02ca 0083 0580 LRI $R03, #0x0580
|
||
|
02cc 02bf 073d CALL 0x073d
|
||
|
02ce 029f 02d0 JMP 0x02d0
|
||
|
|
||
|
|
||
|
02d0 0080 0580 LRI $R00, #0x0580
|
||
|
02d2 0081 0520 LRI $R01, #0x0520
|
||
|
02d4 0099 0000 LRI $AX1.L, #0x0000
|
||
|
02d6 02bf 0d7f CALL 0x0d7f
|
||
|
02d8 00da 04a8 LR $AX0.H, @0x04a8
|
||
|
02da 8600 TSTAXH $AX0.H
|
||
|
02db 0295 02e1 JEQ 0x02e1
|
||
|
02dd 0080 0520 LRI $R00, #0x0520
|
||
|
02df 02bf 0c84 CALL 0x0c84
|
||
|
02e1 009e 0520 LRI $AC0.M, #0x0520
|
||
|
02e3 00fe 038f SR @0x038f, $AC0.M
|
||
|
02e5 8900 CLR $AC1.M
|
||
|
02e6 00df 0484 LR $AC1.M, @0x0484
|
||
|
02e8 0340 001f ANDI $ACC1, #0x001f
|
||
|
02ea b900 TST $AC1.M
|
||
|
02eb 0295 0311 JEQ 0x0311
|
||
|
02ed 00de 038f LR $AC0.M, @0x038f
|
||
|
02ef 5c00 SUB $AC0.M, $AC1.M
|
||
|
02f0 00fe 038f SR @0x038f, $AC0.M
|
||
|
02f2 1c7e MRR $R03, $AC0.M
|
||
|
02f3 0080 0440 LRI $R00, #0x0440
|
||
|
02f5 05fe ADDIS $ACC1, #0xfe
|
||
|
02f6 02bf 00da CALL 0x00da // CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
02f8 0080 0490 LRI $R00, #0x0490
|
||
|
02fa 00c1 038f LR $R01, @0x038f
|
||
|
02fc 8900 CLR $AC1.M
|
||
|
02fd 00df 0484 LR $AC1.M, @0x0484
|
||
|
02ff 0340 001f ANDI $ACC1, #0x001f
|
||
|
0301 02bf 0b4d CALL 0x0b4d
|
||
|
0303 00de 038f LR $AC0.M, @0x038f
|
||
|
0305 0450 ADDIS $ACC0, #0x50
|
||
|
0306 1c1e MRR $R00, $AC0.M
|
||
|
0307 0083 0440 LRI $R03, #0x0440
|
||
|
0309 8900 CLR $AC1.M
|
||
|
030a 00df 0484 LR $AC1.M, @0x0484
|
||
|
030c 0340 001f ANDI $ACC1, #0x001f
|
||
|
030e 05fe ADDIS $ACC1, #0xfe
|
||
|
030f 02bf 00da CALL 0x00da // CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
0311 00de 0484 LR $AC0.M, @0x0484
|
||
|
0313 0240 0020 ANDI $ACC0, #0x0020
|
||
|
0315 0295 0333 JEQ 0x0333
|
||
|
0317 0080 04a4 LRI $R00, #0x04a4
|
||
|
0319 00c1 038f LR $R01, @0x038f
|
||
|
031b 0082 0454 LRI $R02, #0x0454
|
||
|
031d 0083 04a7 LRI $R03, #0x04a7
|
||
|
031f 18fa LRRD $AX0.H, @$R03
|
||
|
0320 8600 TSTAXH $AX0.H
|
||
|
0321 0294 0331 JNE 0x0331
|
||
|
0323 18fa LRRD $AX0.H, @$R03
|
||
|
0324 8600 TSTAXH $AX0.H
|
||
|
0325 0294 0331 JNE 0x0331
|
||
|
0327 18fa LRRD $AX0.H, @$R03
|
||
|
0328 8600 TSTAXH $AX0.H
|
||
|
0329 0294 0331 JNE 0x0331
|
||
|
032b 8100 CLR $AC0.M
|
||
|
032c 18fe LRRD $AC0.M, @$R03
|
||
|
032d 0280 7fff CMPI $AC0.M, #0x7fff
|
||
|
032f 0295 0333 JEQ 0x0333
|
||
|
0331 02bf 0b68 CALL 0x0b68
|
||
|
0333 8100 CLR $AC0.M
|
||
|
0334 00de 042c LR $AC0.M, @0x042c
|
||
|
0336 b100 TST $AC0.M
|
||
|
0337 0295 033d JEQ 0x033d
|
||
|
0339 02bf 0cd3 CALL 0x0cd3
|
||
|
033b 029f 03b2 JMP 0x03b2
|
||
|
033d 8100 CLR $AC0.M
|
||
|
033e 1c9e MRR $R04, $AC0.M
|
||
|
033f 1cde MRR $R06, $AC0.M
|
||
|
0340 7400 INCM $AC0.M
|
||
|
0341 1cfe MRR $R07, $AC0.M
|
||
|
0342 8100 CLR $AC0.M
|
||
|
0343 00de 0407 LR $AC0.M, @0x0407
|
||
|
0345 b100 TST $AC0.M
|
||
|
0346 0295 0355 JEQ 0x0355
|
||
|
0348 00c3 038f LR $R03, @0x038f
|
||
|
034a 0007 DAR $R03
|
||
|
034b 0080 0477 LRI $R00, #0x0477
|
||
|
034d 0084 ffff LRI $R04, #0xffff
|
||
|
034f 0087 ffff LRI $R07, #0xffff
|
||
|
0351 199a LRRN $AX0.H, @$R00
|
||
|
0352 6554 MOVR.LN $AC1.M, $AX0.H : $AX0.H, @$R00
|
||
|
0353 005e LOOP $AC0.M
|
||
|
0354 65ad MOVR.LSNM $AC1.M, $AX0.H : $AX0.H, $AC1.M
|
||
|
0355 00da 0485 LR $AX0.H, @0x0485
|
||
|
0357 8600 TSTAXH $AX0.H
|
||
|
0358 0295 036b JEQ 0x036b
|
||
|
035a 8900 CLR $AC1.M
|
||
|
035b 0086 0005 LRI $R06, #0x0005
|
||
|
035d 0082 040a LRI $R02, #0x040a
|
||
|
035f 1106 0363 BLOOPI #0x06, 0x0363
|
||
|
0361 18de LRRD $AC0.M, @$R02
|
||
|
0362 147f LSR $ACC0, #0x3f
|
||
|
0363 4d36 ADD.SN $AC1.M, $AC0.M : @$R02, $AC0.M
|
||
|
0364 b900 TST $AC1.M
|
||
|
0365 0294 036b JNE 0x036b
|
||
|
0367 009a 0001 LRI $AX0.H, #0x0001
|
||
|
0369 00fa 0401 SR @0x0401, $AX0.H
|
||
|
036b 8f00 S16
|
||
|
036c 0086 0002 LRI $R06, #0x0002
|
||
|
036e 0082 0408 LRI $R02, #0x0408
|
||
|
0370 1106 039b BLOOPI #0x06, 0x039b
|
||
|
0372 8100 CLR $AC0.M
|
||
|
0373 195e LRRI $AC0.M, @$R02
|
||
|
0374 1200 SBCLR #0x00
|
||
|
0375 b100 TST $AC0.M
|
||
|
0376 0275 IF_Q
|
||
|
0377 1300 SBSET #0x00
|
||
|
0378 1c7e MRR $R03, $AC0.M
|
||
|
0379 195e LRRI $AC0.M, @$R02
|
||
|
037a 195f LRRI $AC1.M, @$R02
|
||
|
037b 5c00 SUB $AC0.M, $AC1.M
|
||
|
037c 14fb ASR $ACC0, #0x7b
|
||
|
037d 1f5e MRR $AX0.H, $AC0.M
|
||
|
037e 1f1c MRR $AX0.L, $AC0.L
|
||
|
037f 185e LRR $AC0.M, @$R02
|
||
|
0380 0240 00ff ANDI $ACC0, #0x00ff
|
||
|
0382 1f7e MRR $AX1.H, $AC0.M
|
||
|
0383 185e LRR $AC0.M, @$R02
|
||
|
0384 1478 LSR $ACC0, #0x38
|
||
|
0385 009c 0000 LRI $AC0.L, #0x0000
|
||
|
0387 d100 CMPAXH $AC1.M, $AX0.H
|
||
|
0388 0295 0390 JEQ 0x0390
|
||
|
038a 185e LRR $AC0.M, @$R02
|
||
|
038b 0272 IF_2
|
||
|
038c 7400 INCM $AC0.M
|
||
|
038d 0271 IF_1
|
||
|
038e 7800 DECM $AC0.M
|
||
|
038f 1a5e SRR @$R02, $AC0.M
|
||
|
0390 0006 DAR $R02
|
||
|
0391 00de 038f LR $AC0.M, @0x038f
|
||
|
0393 5600 SUBR $AC0.M, $AX1.H
|
||
|
0394 029d 0399 JNZ 0x0399
|
||
|
0396 1c1e MRR $R00, $AC0.M
|
||
|
0397 02bf 0ca9 CALL 0x0ca9
|
||
|
0399 0000 NOP
|
||
|
039a 1b5f SRRI @$R02, $AC1.M
|
||
|
039b 000a IAR $R02
|
||
|
039c 8e00 S40
|
||
|
039d 8100 CLR $AC0.M
|
||
|
039e 00de 0407 LR $AC0.M, @0x0407
|
||
|
03a0 b100 TST $AC0.M
|
||
|
03a1 0295 03b2 JEQ 0x03b2
|
||
|
03a3 00c3 038f LR $R03, @0x038f
|
||
|
03a5 0087 004f LRI $R07, #0x004f // does this have something to do with the common 0x50 buffer size?
|
||
|
03a7 001f CW 0x001f ; *** UNKNOWN OPCODE ***
|
||
|
03a8 0080 0477 LRI $R00, #0x0477
|
||
|
03aa 0084 ffff LRI $R04, #0xffff
|
||
|
03ac 0087 ffff LRI $R07, #0xffff
|
||
|
03ae 19fa LRRN $AX0.H, @$R03
|
||
|
03af 6557 MOVR.LN $AC1.M, $AX0.H : $AX0.H, @$R03
|
||
|
03b0 005e LOOP $AC0.M
|
||
|
03b1 65af MOVR.SLNM $AC1.M, $AX0.H : $AC1.M, $AX0.H
|
||
|
03b2 00da 0406 LR $AX0.H, @0x0406
|
||
|
03b4 8600 TSTAXH $AX0.H
|
||
|
03b5 0294 03ba JNE 0x03ba
|
||
|
03b7 8100 CLR $AC0.M
|
||
|
03b8 00fe 0404 SR @0x0404, $AC0.M
|
||
|
03ba 02bf 00ca CALL 0x00ca
|
||
|
03bc 00de 0354 LR $AC0.M, @0x0354
|
||
|
03be 7400 INCM $AC0.M
|
||
|
03bf 00fe 0354 SR @0x0354, $AC0.M
|
||
|
03c1 0e00 LRIS $AC0.M, #0x00
|
||
|
03c2 00fe 034e SR @0x034e, $AC0.M
|
||
|
03c4 0e04 LRIS $AC0.M, #0x04
|
||
|
03c5 02bf 066a CALL 0x066a // SendMessageViaDSPMailBox_DCD1(AC0.M)
|
||
|
03c7 00de 0355 LR $AC0.M, @0x0355
|
||
|
03c9 0260 ff00 ORI $ACC0, #0xff00
|
||
|
03cb 02bf 0674 CALL 0x0674 // SendMessageViaDSPMailBox_F355(AC0.M)
|
||
|
03cd 02bf 0c0a CALL 0x0c0a
|
||
|
03cf 02bf 0c1c CALL 0x0c1c
|
||
|
03d1 02bf 0c71 CALL 0x0c71
|
||
|
03d3 00de 0341 LR $AC0.M, @0x0341
|
||
|
03d5 7800 DECM $AC0.M
|
||
|
03d6 00fe 0341 SR @0x0341, $AC0.M
|
||
|
03d8 0080 09a0 LRI $R00, #0x09a0
|
||
|
03da 0083 0d00 LRI $R03, #0x0d00
|
||
|
03dc 0f50 LRIS $AC1.M, #0x50
|
||
|
03dd 0098 5a82 LRI $AX0.L, #0x5a82
|
||
|
03df 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
03e1 0080 09a0 LRI $R00, #0x09a0
|
||
|
03e3 0083 0d60 LRI $R03, #0x0d60
|
||
|
03e5 0f50 LRIS $AC1.M, #0x50
|
||
|
03e6 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
03e8 0083 0d00 LRI $R03, #0x0d00
|
||
|
03ea 02bf 0cc1 CALL 0x0cc1
|
||
|
03ec 0081 0388 LRI $R01, #0x0388
|
||
|
03ee 009f 0d00 LRI $AC1.M, #0x0d00
|
||
|
03f0 0080 0050 LRI $R00, #0x0050
|
||
|
03f2 02bf 0530 CALL 0x0530 // DMEMtoRAM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
03f4 0080 0fa0 LRI $R00, #0x0fa0
|
||
|
03f6 0083 0d60 LRI $R03, #0x0d60
|
||
|
03f8 0f50 LRIS $AC1.M, #0x50
|
||
|
03f9 0098 8000 LRI $AX0.L, #0x8000
|
||
|
03fb 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
03fd 0083 0d60 LRI $R03, #0x0d60
|
||
|
03ff 02bf 0cc1 CALL 0x0cc1
|
||
|
0401 0081 038a LRI $R01, #0x038a
|
||
|
0403 009f 0d60 LRI $AC1.M, #0x0d60
|
||
|
0405 0080 0050 LRI $R00, #0x0050
|
||
|
0407 02bf 0530 CALL 0x0530 // DMEMtoRAM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
0409 009a 0000 LRI $AX0.H, #0x0000
|
||
|
040b 0098 00a0 LRI $AX0.L, #0x00a0
|
||
|
040d 0080 0388 LRI $R00, #0x0388
|
||
|
040f 02bf 0233 CALL 0x0233
|
||
|
0411 0080 038a LRI $R00, #0x038a
|
||
|
0413 02bf 0233 CALL 0x0233
|
||
|
0415 02bf 01ea CALL 0x01ea
|
||
|
0417 0000 NOP
|
||
|
0418 0000 NOP
|
||
|
0419 0080 002d LRI $R00, #0x002d
|
||
|
041b 029f 0603 JMP 0x0603
|
||
|
|
||
|
|
||
|
|
||
|
// Opcode_07()
|
||
|
041d 0080 0346 LRI $R00, #0x0346
|
||
|
041f 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0421 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0423 0081 0346 LRI $R01, #0x0346
|
||
|
0425 193e LRRI $AC0.M, @$R01
|
||
|
0426 193c LRRI $AC0.L, @$R01
|
||
|
0427 009f 0400 LRI $AC1.M, #0x0400
|
||
|
0429 00c0 0345 LR $R00, @0x0345
|
||
|
042b 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
042d 0081 0348 LRI $R01, #0x0348
|
||
|
042f 193e LRRI $AC0.M, @$R01
|
||
|
0430 193c LRRI $AC0.L, @$R01
|
||
|
0431 009f 0800 LRI $AC1.M, #0x0800
|
||
|
0433 00c0 0345 LR $R00, @0x0345
|
||
|
0435 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0437 0081 0346 LRI $R01, #0x0346
|
||
|
0439 193e LRRI $AC0.M, @$R01
|
||
|
043a 193c LRRI $AC0.L, @$R01
|
||
|
043b 009f 0800 LRI $AC1.M, #0x0800
|
||
|
043d 00c0 0345 LR $R00, @0x0345
|
||
|
043f 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0441 0081 0348 LRI $R01, #0x0348
|
||
|
0443 193e LRRI $AC0.M, @$R01
|
||
|
0444 193c LRRI $AC0.L, @$R01
|
||
|
0445 009f 0400 LRI $AC1.M, #0x0400
|
||
|
0447 00c0 0345 LR $R00, @0x0345
|
||
|
0449 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
044b 029f 0043 JMP 0x0043
|
||
|
|
||
|
|
||
|
// Opcode_09()
|
||
|
044d 0080 0346 LRI $R00, #0x0346
|
||
|
044f 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0451 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0453 0081 0346 LRI $R01, #0x0346
|
||
|
0455 193e LRRI $AC0.M, @$R01
|
||
|
0456 193c LRRI $AC0.L, @$R01
|
||
|
0457 009f 0400 LRI $AC1.M, #0x0400
|
||
|
0459 00c0 0345 LR $R00, @0x0345
|
||
|
045b 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
045d 0081 0348 LRI $R01, #0x0348
|
||
|
045f 193e LRRI $AC0.M, @$R01
|
||
|
0460 193c LRRI $AC0.L, @$R01
|
||
|
0461 009f 0400 LRI $AC1.M, #0x0400
|
||
|
0463 00c0 0345 LR $R00, @0x0345
|
||
|
0465 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0467 029f 0043 JMP 0x0043
|
||
|
|
||
|
// Opcode_06()
|
||
|
0469 0080 0346 LRI $R00, #0x0346
|
||
|
046b 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
046d 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
046f 0081 0346 LRI $R01, #0x0346
|
||
|
0471 193e LRRI $AC0.M, @$R01
|
||
|
0472 193c LRRI $AC0.L, @$R01
|
||
|
0473 009f 0400 LRI $AC1.M, #0x0400
|
||
|
0475 00c0 0345 LR $R00, @0x0345
|
||
|
0477 02bf 0555 CALL 0x0555
|
||
|
0479 0081 0348 LRI $R01, #0x0348
|
||
|
047b 193e LRRI $AC0.M, @$R01
|
||
|
047c 193c LRRI $AC0.L, @$R01
|
||
|
047d 009f 0400 LRI $AC1.M, #0x0400
|
||
|
047f 00c0 0345 LR $R00, @0x0345
|
||
|
0481 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0483 029f 0043 JMP 0x0043
|
||
|
|
||
|
|
||
|
// Opcode_08() - Mixer
|
||
|
0485 0080 0346 LRI $R00, #0x0346
|
||
|
0487 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0489 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
048b 0081 0346 LRI $R01, #0x0346
|
||
|
048d 193e LRRI $AC0.M, @$R01
|
||
|
048e 193c LRRI $AC0.L, @$R01
|
||
|
048f 009f 0400 LRI $AC1.M, #0x0400
|
||
|
0491 00c0 0344 LR $R00, @0x0344
|
||
|
0493 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0495 0081 0348 LRI $R01, #0x0348
|
||
|
0497 193e LRRI $AC0.M, @$R01
|
||
|
0498 193c LRRI $AC0.L, @$R01
|
||
|
0499 009f 0800 LRI $AC1.M, #0x0800
|
||
|
049b 00c0 0344 LR $R00, @0x0344
|
||
|
049d 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
049f 0080 0400 LRI $R00, #0x0400
|
||
|
04a1 0083 0800 LRI $R03, #0x0800
|
||
|
04a3 0084 0000 LRI $R04, #0x0000
|
||
|
04a5 00da 0345 LR $AX0.H, @0x0345
|
||
|
04a7 00df 0344 LR $AC1.M, @0x0344
|
||
|
04a9 8f00 S16
|
||
|
04aa 197b LRRI $AX1.H, @$R03
|
||
|
04ab b800 MULX $AX0.H, $AX1.H
|
||
|
04ac 197b LRRI $AX1.H, @$R03
|
||
|
04ad 007f 04b2 BLOOP $AC1.M, 0x04b2
|
||
|
04af 199e LRRN $AC0.M, @$R00
|
||
|
04b0 bc00 MULXAC $AX0.H, $AX1.H, $AC0.M
|
||
|
04b1 80b2 NX.SL : $AC0.M, $AX1.H
|
||
|
04b2 0000 NOP
|
||
|
04b3 8e00 S40
|
||
|
04b4 0081 0346 LRI $R01, #0x0346
|
||
|
04b6 193e LRRI $AC0.M, @$R01
|
||
|
04b7 193c LRRI $AC0.L, @$R01
|
||
|
04b8 009f 0400 LRI $AC1.M, #0x0400
|
||
|
04ba 00c0 0344 LR $R00, @0x0344
|
||
|
04bc 02bf 0532 CALL 0x0532 // DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
04be 029f 0043 JMP 0x0043
|
||
|
|
||
|
|
||
|
// dunno... is called by InitCode()
|
||
|
04c0 0092 00ff LRI $CR, #0x00ff
|
||
|
04c2 8100 CLR $AC0.M
|
||
|
04c3 0080 0b00 LRI $R00, #0x0b00
|
||
|
04c5 10ff LOOPI #0xff
|
||
|
04c6 1b1e SRRI @$R00, $AC0.M
|
||
|
04c7 1b1e SRRI @$R00, $AC0.M
|
||
|
04c8 8100 CLR $AC0.M
|
||
|
04c9 009f 0b00 LRI $AC1.M, #0x0b00
|
||
|
04cb 0080 0100 LRI $R00, #0x0100
|
||
|
04cd 02bf 0573 CALL 0x0573
|
||
|
04cf 02df RET
|
||
|
|
||
|
//
|
||
|
04d0 02bf 04e1 CALL 0x04e1
|
||
|
04d2 00df 04fb LR $AC1.M, @0x04fb
|
||
|
04d4 009e 0b00 LRI $AC0.M, #0x0b00
|
||
|
04d6 4c00 ADD $AC0.M, $AC1.M
|
||
|
04d7 1c1e MRR $R00, $AC0.M
|
||
|
04d8 181e LRR $AC0.M, @$R00
|
||
|
04d9 7400 INCM $AC0.M
|
||
|
04da 1a1e SRR @$R00, $AC0.M
|
||
|
04db 02bf 04ea CALL 0x04ea
|
||
|
04dd 8100 CLR $AC0.M
|
||
|
04de 00fe 04fb SR @0x04fb, $AC0.M
|
||
|
04e0 02df RET
|
||
|
|
||
|
|
||
|
// This is called by the thing above.
|
||
|
04e1 0092 00ff LRI $CR, #0x00ff
|
||
|
04e3 8100 CLR $AC0.M
|
||
|
04e4 009f 0b00 LRI $AC1.M, #0x0b00
|
||
|
04e6 0080 0040 LRI $R00, #0x0040
|
||
|
04e8 029f 0555 JMP 0x0555 ///oookay..
|
||
|
|
||
|
//
|
||
|
04ea 8100 CLR $AC0.M
|
||
|
04eb 009f 0b00 LRI $AC1.M, #0x0b00
|
||
|
04ed 0080 0050 LRI $R00, #0x0050
|
||
|
04ef 029f 0573 JMP 0x0573
|
||
|
|
||
|
//
|
||
|
04f1 02bf 04e1 CALL 0x04e1
|
||
|
04f3 8900 CLR $AC1.M
|
||
|
04f4 0080 04fc LRI $R00, #0x04fc
|
||
|
04f6 8100 CLR $AC0.M
|
||
|
04f7 1104 0505 BLOOPI #0x04, 0x0505
|
||
|
04f9 0000 NOP
|
||
|
04fa 191e LRRI $AC0.M, @$R00
|
||
|
04fb 0000 NOP
|
||
|
04fc 1110 0503 BLOOPI #0x10, 0x0503
|
||
|
04fe 02c0 0001 ANDF $AC0.M, #0x0001
|
||
|
0500 027d IF_Z
|
||
|
0501 7500 INCM $AC1.M
|
||
|
0502 147f LSR $ACC0, #0x3f // Another bizarre super shift.
|
||
|
0503 0000 NOP // Do these shifts have latency?
|
||
|
0504 0000 NOP
|
||
|
0505 0000 NOP
|
||
|
|
||
|
|
||
|
0506 00de 04fc LR $AC0.M, @0x04fc
|
||
|
0508 00fe 0b48 SR @0x0b48, $AC0.M
|
||
|
050a 00de 04fd LR $AC0.M, @0x04fd
|
||
|
050c 00fe 0b49 SR @0x0b49, $AC0.M
|
||
|
050e 00de 04fe LR $AC0.M, @0x04fe
|
||
|
0510 00fe 0b4a SR @0x0b4a, $AC0.M
|
||
|
0512 00de 04ff LR $AC0.M, @0x04ff
|
||
|
0514 00fe 0b4b SR @0x0b4b, $AC0.M
|
||
|
0516 009e 0b00 LRI $AC0.M, #0x0b00
|
||
|
0518 4c00 ADD $AC0.M, $AC1.M
|
||
|
0519 1c1e MRR $R00, $AC0.M
|
||
|
051a 181e LRR $AC0.M, @$R00
|
||
|
051b 7400 INCM $AC0.M
|
||
|
051c 1a1e SRR @$R00, $AC0.M
|
||
|
051d 02bf 04ea CALL 0x04ea
|
||
|
051f 02df RET
|
||
|
|
||
|
|
||
|
0520 02bf 04ea CALL 0x04ea
|
||
|
0522 02df RET
|
||
|
|
||
|
// RAMtoDMEM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
0523 193e LRRI $AC0.M, @$R01
|
||
|
0524 193c LRRI $AC0.L, @$R01
|
||
|
// RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0525 2fcd SRS @DSPA, $AC1.M
|
||
|
0526 0f00 LRIS $AC1.M, #0x00
|
||
|
0527 2fc9 SRS @DSCR, $AC1.M
|
||
|
0528 2ece SRS @DSMAH, $AC0.M
|
||
|
0529 2ccf SRS @DSMAL, $AC0.L
|
||
|
052a 1fe0 MRR $AC1.M, $R00
|
||
|
052b 1501 LSL $ACC1, #0x01
|
||
|
052c 2fcb SRS @DSBL, $AC1.M
|
||
|
052d 02bf 0536 CALL 0x0536 // WaitForDMATransfer()
|
||
|
052f 02df RET
|
||
|
|
||
|
|
||
|
// DMEMtoRAM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
0530 193e LRRI $AC0.M, @$R01
|
||
|
0531 193c LRRI $AC0.L, @$R01
|
||
|
// DMEMtoRAM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0532 2fcd SRS @DSPA, $AC1.M
|
||
|
0533 0f01 LRIS $AC1.M, #0x01
|
||
|
0534 029f 0527 JMP 0x0527
|
||
|
|
||
|
// WaitForDMATransfer()
|
||
|
0536 26c9 LRS $AC0.M, @DSCR
|
||
|
0537 02a0 0004 ANDCF $AC0.M, #0x0004
|
||
|
0539 029c 0536 JZR 0x0536
|
||
|
053b 02df RET
|
||
|
|
||
|
// Setup DMA conroller and do a transfer. Should figure out exactly how.
|
||
|
053c 193e LRRI $AC0.M, @$R01
|
||
|
053d 193c LRRI $AC0.L, @$R01
|
||
|
053e 00ff ffcd SR @DSPA, $AC1.M
|
||
|
0540 0f00 LRIS $AC1.M, #0x00
|
||
|
0541 00ff ffc9 SR @DSCR, $AC1.M
|
||
|
0543 00fe ffce SR @DSMAH, $AC0.M
|
||
|
0545 00fc ffcf SR @DSMAL, $AC0.L
|
||
|
0547 1fe0 MRR $AC1.M, $R00
|
||
|
0548 1501 LSL $ACC1, #0x01
|
||
|
0549 00ff ffcb SR @DSBL, $AC1.M
|
||
|
054b 02df RET
|
||
|
|
||
|
// An identical copy of WaitForDMATransfer from 0536
|
||
|
054c 00de ffc9 LR $AC0.M, @DSCR()
|
||
|
054e 02a0 0004 ANDCF $AC0.M, #0x0004
|
||
|
0550 029c 054c JZR 0x054c
|
||
|
0552 02df RET
|
||
|
|
||
|
|
||
|
0553 193e LRRI $AC0.M, @$R01
|
||
|
0554 193c LRRI $AC0.L, @$R01
|
||
|
0555 0240 7fff ANDI $ACC0, #0x7fff
|
||
|
0557 02bf 0561 CALL 0x0561 // SetupAccelerator()
|
||
|
0559 007a 055f BLOOP $AX0.H, 0x055f
|
||
|
055b 26d3 LRS $AC0.M, @0xffd3
|
||
|
055c 1b3e SRRI @$R01, $AC0.M
|
||
|
055d 0000 NOP
|
||
|
055e 0000 NOP
|
||
|
055f 0000 NOP
|
||
|
0560 02df RET
|
||
|
|
||
|
// SetupAccelerator()
|
||
|
0561 1c3f MRR $R01, $AC1.M
|
||
|
0562 0f0a LRIS $AC1.M, #0x0a
|
||
|
0563 2fd1 SRS @SampleFormat, $AC1.M
|
||
|
0564 1f5e MRR $AX0.H, $AC0.M
|
||
|
0565 1f1c MRR $AX0.L, $AC0.L
|
||
|
0566 009e ffff LRI $AC0.M, #0xffff
|
||
|
0568 2ed6 SRS @ACEAH, $AC0.M
|
||
|
0569 2ed7 SRS @ACEAL, $AC0.M
|
||
|
056a 1fda MRR $AC0.M, $AX0.H
|
||
|
056b 1f98 MRR $AC0.L, $AX0.L
|
||
|
056c 147f LSR $ACC0, #0x3f
|
||
|
056d 2ed8 SRS @ACCAH, $AC0.M
|
||
|
056e 2cd9 SRS @ACCAL, $AC0.L
|
||
|
056f 1f40 MRR $AX0.H, $R00
|
||
|
0570 02df RET
|
||
|
|
||
|
// AC1.M is input which also falls into 0x0561.
|
||
|
0571 193e LRRI $AC0.M, @$R01
|
||
|
0572 193c LRRI $AC0.L, @$R01
|
||
|
0573 0090 0001 LRI $ACH0, #0x0001
|
||
|
0575 02bf 0561 CALL 0x0561 // SetupAccelerator()
|
||
|
0577 007a 057e BLOOP $AX0.H, 0x057e
|
||
|
0579 193e LRRI $AC0.M, @$R01
|
||
|
057a 2ed3 SRS @0xffd3, $AC0.M
|
||
|
057b 0000 NOP
|
||
|
057c 0000 NOP
|
||
|
057d 0000 NOP
|
||
|
057e 0000 NOP
|
||
|
057f 02df RET
|
||
|
|
||
|
|
||
|
// Opcode_04()
|
||
|
0580 0080 0346 LRI $R00, #0x0346
|
||
|
0582 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0584 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0586 0081 0346 LRI $R01, #0x0346
|
||
|
0588 00df 0349 LR $AC1.M, @0x0349
|
||
|
058a 0340 ffff ANDI $ACC1, #0xffff
|
||
|
058c 00c0 0345 LR $R00, @0x0345
|
||
|
058e 02bf 0523 CALL 0x0523 // RAMtoDMEM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
0590 029f 0043 JMP 0x0043
|
||
|
|
||
|
// Opcode_05()
|
||
|
0592 0080 0346 LRI $R00, #0x0346
|
||
|
0594 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0596 02bf 0067 CALL 0x0067 // ReadWholeMessage($R00)
|
||
|
0598 0081 0346 LRI $R01, #0x0346
|
||
|
059a 00df 0349 LR $AC1.M, @0x0349
|
||
|
059c 0340 ffff ANDI $ACC1, #0xffff
|
||
|
059e 00c0 0345 LR $R00, @0x0345
|
||
|
05a0 02bf 0530 CALL 0x0530 // DMEMtoRAM(DMEM=$AC1.M, *R01=MEMADDR, R00=Len)
|
||
|
05a2 029f 0043 JMP 0x0043
|
||
|
|
||
|
// ClearAccelerator()
|
||
|
05a4 0092 00ff LRI $CR, #0x00ff
|
||
|
05a6 009e ffff LRI $AC0.M, #0xffff
|
||
|
05a8 2ed4 SRS @ACSAH, $AC0.M
|
||
|
05a9 2ed5 SRS @ACSAL, $AC0.M
|
||
|
05aa 2ed6 SRS @ACEAH, $AC0.M
|
||
|
05ab 2ed7 SRS @ACEAL, $AC0.M
|
||
|
05ac 02df RET
|
||
|
|
||
|
// Set up accelerator to a sample format and point to a read location
|
||
|
05ad 00ff ffd1 SR @SampleFormat, $AC1.M
|
||
|
05af 0340 0003 ANDI $ACC1, #0x0003
|
||
|
05b1 7900 DECM $AC1.M
|
||
|
05b2 02ca CW 0x02ca ; *** UNKNOWN OPCODE ***
|
||
|
05b3 00fe ffd8 SR @ACCAH, $AC0.M
|
||
|
05b5 00fc ffd9 SR @ACCAL, $AC0.L
|
||
|
05b7 02df RET
|
||
|
|
||
|
// Is this statement really true? :
|
||
|
// Exception Handler (lvl 7) is called on new mails
|
||
|
05b8 1205 SBCLR #0x05
|
||
|
05b9 8e00 S40
|
||
|
05ba 00f0 03fd SR @0x03fd, $ACH0
|
||
|
05bc 00fc 03ff SR @0x03ff, $AC0.L
|
||
|
05be f400 LSR16 $AC0.M
|
||
|
05bf 00fc 03fe SR @0x03fe, $AC0.L
|
||
|
05c1 00fa 03fa SR @0x03fa, $AX0.H
|
||
|
05c3 8100 CLR $AC0.M
|
||
|
05c4 00de fffe LR $AC0.M, @CMBH // Read mailbox
|
||
|
05c6 02c0 8000 ANDF $AC0.M, #0x8000
|
||
|
05c8 029c 06b9 JZR 0x06b9
|
||
|
05ca 00da ffff LR $AX0.H, @CMBL
|
||
|
05cc 8600 TSTAXH $AX0.H
|
||
|
05cd 0294 0692 JNE 0x0692
|
||
|
05cf 00de fffe LR $AC0.M, @CMBH
|
||
|
05d1 02c0 8000 ANDF $AC0.M, #0x8000
|
||
|
05d3 029c 05cf JZR 0x05cf
|
||
|
05d5 0240 000f ANDI $ACC0, #0x000f
|
||
|
05d7 1f5e MRR $AX0.H, $AC0.M
|
||
|
05d8 7400 INCM $AC0.M
|
||
|
05d9 0c00 LRIS $AC0.L, #0x00
|
||
|
05da 1404 LSL $ACC0, #0x04
|
||
|
05db 00fe 034e SR @0x034e, $AC0.M
|
||
|
05dd 1fda MRR $AC0.M, $AX0.H
|
||
|
05de 1f40 MRR $AX0.H, $R00
|
||
|
05df 0200 04fc ADDI $ACC0, #0x04fc
|
||
|
05e1 1c1e MRR $R00, $AC0.M
|
||
|
05e2 00de ffff LR $AC0.M, @CMBL
|
||
|
05e4 1a1e SRR @$R00, $AC0.M
|
||
|
05e5 1c1a MRR $R00, $AX0.H
|
||
|
05e6 00de 03fe LR $AC0.M, @0x03fe
|
||
|
05e8 00dc 03ff LR $AC0.L, @0x03ff
|
||
|
05ea 00d0 03fd LR $ACH0, @0x03fd
|
||
|
05ec 00da 03fa LR $AX0.H, @0x03fa
|
||
|
05ee 1305 SBSET #0x05
|
||
|
05ef 02ff RTI
|
||
|
|
||
|
// StopUCode()
|
||
|
05f0 009a 0002 LRI $AX0.H, #0x0002
|
||
|
05f2 00fa 03a3 SR @0x03a3, $AX0.H
|
||
|
05f4 00e0 03f9 SR @0x03f9, $R00
|
||
|
05f6 02bf 067c CALL 0x067c // WaitForEmptyDSPMailBox_ovAC0.M()
|
||
|
05f8 16fc dcd1 SI @DMBH, #0xdcd1
|
||
|
05fa 16fd 0002 SI @DMBL, #0x0002
|
||
|
05fc 16fb 0001 SI @DIRQ, #0x0001
|
||
|
05fe 0021 HALT
|
||
|
|
||
|
// Looks like data more than it looks like code... yep, see 613.
|
||
|
05ff 0617 CMPIS $ACC0, #0x17
|
||
|
0600 0618 CMPIS $ACC0, #0x18
|
||
|
0601 0658 CMPIS $ACC0, #0x58
|
||
|
0602 065b CMPIS $ACC0, #0x5b
|
||
|
|
||
|
// Store a jump destination to RAM. Then get some data from the CPU. This data controls whether
|
||
|
// we will halt, reset, boot task or jump to function.
|
||
|
// This could very well be debug code.
|
||
|
0603 00e0 03f9 SR @0x03f9, $R00
|
||
|
0605 009e 0005 LRI $AC0.M, #0x0005
|
||
|
0607 02bf 066a CALL 0x066a // SendMessageViaDSPMailBox_DCD1(AC0.M)
|
||
|
0609 8e00 S40
|
||
|
060a 8100 CLR $AC0.M
|
||
|
060b 8900 CLR $AC1.M
|
||
|
060c 02bf 065e CALL 0x065e
|
||
|
060e 27ff LRS $AC1.M, @CMBL
|
||
|
060f 009e 05ff LRI $AC0.M, #0x05ff
|
||
|
0611 4c00 ADD $AC0.M, $AC1.M
|
||
|
0612 1c7e MRR $R03, $AC0.M
|
||
|
0613 0313 ILRR $AC1.M, @$R03 // Jump table lookup.
|
||
|
0614 1c7f MRR $R03, $AC1.M
|
||
|
0615 176f JMPR $R03
|
||
|
0616 0021 HALT
|
||
|
|
||
|
// Jump table alt 0. A bit too simple :p
|
||
|
0617 0021 HALT
|
||
|
|
||
|
// Jump table alt 1. Seems to simply receive a big list of register initialization
|
||
|
// values from the CPU.
|
||
|
// Ends by jumping into the rom - boot task?
|
||
|
// ATTENTION - sets up R06 and R07.
|
||
|
0618 009a 0002 LRI $AX0.H, #0x0002
|
||
|
061a 00fa 03a3 SR @0x03a3, $AX0.H
|
||
|
061c 8100 CLR $AC0.M
|
||
|
061d 8900 CLR $AC1.M
|
||
|
061e 02bf 065e CALL 0x065e // wait for cpu mailbox
|
||
|
0620 24ff LRS $AC0.L, @CMBL
|
||
|
0621 02bf 0664 CALL 0x0664 // wait for cpu mailbox
|
||
|
0623 25ff LRS $AC1.L, @CMBL
|
||
|
0624 02bf 0664 CALL 0x0664 // wait for cpu mailbox
|
||
|
0626 27ff LRS $AC1.M, @CMBL
|
||
|
0627 2ece SRS @DSMAH, $AC0.M
|
||
|
0628 2ccf SRS @DSMAL, $AC0.L
|
||
|
0629 16c9 0001 SI @DSCR, #0x0001
|
||
|
062b 2fcd SRS @DSPA, $AC1.M
|
||
|
062c 2dcb SRS @DSBL, $AC1.L
|
||
|
062d 8100 CLR $AC0.M
|
||
|
062e 8900 CLR $AC1.M
|
||
|
062f 02bf 065e CALL 0x065e // wait for cpu mailbox
|
||
|
0631 24ff LRS $AC0.L, @CMBL
|
||
|
0632 1c9e MRR $R04, $AC0.M
|
||
|
0633 1cbc MRR $R05, $AC0.L
|
||
|
0634 02bf 0664 CALL 0x0664 // wait for cpu mailbox
|
||
|
0636 25ff LRS $AC1.L, @CMBL
|
||
|
0637 02bf 0664 CALL 0x0664 // wait for cpu mailbox
|
||
|
0639 27ff LRS $AC1.M, @CMBL
|
||
|
063a 1cdf MRR $R06, $AC1.M
|
||
|
063b 1cfd MRR $R07, $AC1.L
|
||
|
063c 8100 CLR $AC0.M
|
||
|
063d 02bf 065e CALL 0x065e // wait for cpu mailbox
|
||
|
063f 26ff LRS $AC0.M, @CMBL
|
||
|
0640 1c1e MRR $R00, $AC0.M
|
||
|
0641 8900 CLR $AC1.M
|
||
|
0642 02bf 0664 CALL 0x0664 // wait for cpu mailbox
|
||
|
0644 20ff LRS $AX0.L, @CMBL
|
||
|
0645 1f5f MRR $AX0.H, $AC1.M
|
||
|
0646 02bf 065e CALL 0x065e // wait for cpu mailbox
|
||
|
0648 21ff LRS $AX1.L, @CMBL
|
||
|
0649 02bf 065e CALL 0x065e // wait for cpu mailbox
|
||
|
064b 23ff LRS $AX1.H, @CMBL
|
||
|
064c 26c9 LRS $AC0.M, @DSCR
|
||
|
064d 02a0 0004 ANDCF $AC0.M, #0x0004
|
||
|
064f 029c 064c JZR 0x064c
|
||
|
// Clear some bits in SR.
|
||
|
0651 1206 SBCLR #0x06
|
||
|
0652 1203 SBCLR #0x03
|
||
|
0653 1204 SBCLR #0x04
|
||
|
0654 1205 SBCLR #0x05
|
||
|
// Jump into the ROM. (!) Boot task?
|
||
|
0655 029f 80b5 JMP 0x80b5
|
||
|
0657 0021 HALT
|
||
|
|
||
|
// Jump table alt 2. (reset DSP?)
|
||
|
0658 029f 8000 JMP 0x8000
|
||
|
065a 0021 HALT
|
||
|
|
||
|
// Jump table alt 3. Loads another jump destination and jumps there.
|
||
|
065b 00c0 03f9 LR $R00, @0x03f9
|
||
|
065d 170f JMPR $R00
|
||
|
|
||
|
// Wait for CPU mailbox, trash ACC0.
|
||
|
065e 26fe LRS $AC0.M, @CMBH
|
||
|
065f 02c0 8000 ANDF $AC0.M, #0x8000
|
||
|
0661 029c 065e JZR 0x065e
|
||
|
0663 02df RET
|
||
|
|
||
|
// Wait for CPU mailbox, trash ACC1.
|
||
|
0664 27fe LRS $AC1.M, @CMBH
|
||
|
0665 03c0 8000 ANDF $AC1.M, #0x8000
|
||
|
0667 029c 0664 JZR 0x0664
|
||
|
0669 02df RET
|
||
|
|
||
|
// SendMessageViaDSPMailBox_DCD1(AC0.M)
|
||
|
066a 02bf 0682 CALL 0x0682 // WaitForEmptyDSPMailBox_ovAC1.M()
|
||
|
066c 16fc dcd1 SI @DMBH, #0xdcd1
|
||
|
066e 2efd SRS @DMBL, $AC0.M
|
||
|
066f 16fb 0001 SI @DIRQ, #0x0001
|
||
|
0671 02bf 0682 CALL 0x0682 // WaitForEmptyDSPMailBox_ovAC1.M()
|
||
|
0673 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
// SendMessageViaDSPMailBox_F355(AC0.M)
|
||
|
0674 02bf 0682 CALL 0x0682 // WaitForEmptyDSPMailBox_ovAC1.M()
|
||
|
0676 16fc f355 SI @DMBH, #0xf355
|
||
|
0678 2efd SRS @DMBL, $AC0.M
|
||
|
0679 02bf 0682 CALL 0x0682 // WaitForEmptyDSPMailBox_ovAC1.M()
|
||
|
067b 02df RET
|
||
|
|
||
|
// WaitForEmptyDSPMailBox_ovAC0.M()
|
||
|
067c 26fc LRS $AC0.M, @DMBH
|
||
|
067d 02c0 8000 ANDF $AC0.M, #0x8000
|
||
|
067f 029d 067c JNZ 0x067c
|
||
|
0681 02df RET
|
||
|
|
||
|
// WaitForEmptyDSPMailBox_ovAC1.M()
|
||
|
0682 27fc LRS $AC1.M, @DMBH
|
||
|
0683 03c0 8000 ANDF $AC1.M, #0x8000
|
||
|
0685 029d 0682 JNZ 0x0682
|
||
|
0687 02df RET
|
||
|
|
||
|
// InitGlobalsVars()
|
||
|
0688 009a 0280 LRI $AX0.H, #0x0280
|
||
|
068a 00fa 0350 SR @0x0350, $AX0.H
|
||
|
068c 00fa 0351 SR @0x0351, $AX0.H
|
||
|
068e 0a00 LRIS $AX0.H, #0x00
|
||
|
068f 00fa 0352 SR @0x0352, $AX0.H
|
||
|
0691 02df RET
|
||
|
|
||
|
// Huh, the 7 exception handler sends us here?
|
||
|
// Uses loop indexing (R08)
|
||
|
0692 00e0 03fb SR @0x03fb, $R00
|
||
|
0694 00e8 03fc SR @0x03fc, $R08
|
||
|
0696 00c0 0350 LR $R00, @0x0350
|
||
|
0698 0088 002f LRI $R08, #0x002f
|
||
|
069a 1b1a SRRI @$R00, $AX0.H
|
||
|
069b 00de fffe LR $AC0.M, @CMBH
|
||
|
069d 02c0 8000 ANDF $AC0.M, #0x8000
|
||
|
069f 029c 069b JZR 0x069b
|
||
|
06a1 00dc ffff LR $AC0.L, @CMBL
|
||
|
06a3 1b1e SRRI @$R00, $AC0.M
|
||
|
06a4 1b1c SRRI @$R00, $AC0.L
|
||
|
06a5 1fda MRR $AC0.M, $AX0.H
|
||
|
06a6 7800 DECM $AC0.M
|
||
|
06a7 1f5e MRR $AX0.H, $AC0.M
|
||
|
06a8 8600 TSTAXH $AX0.H
|
||
|
06a9 0294 069b JNE 0x069b
|
||
|
06ab 8100 CLR $AC0.M
|
||
|
06ac 00de 0352 LR $AC0.M, @0x0352
|
||
|
06ae 7400 INCM $AC0.M
|
||
|
06af 00fe 0352 SR @0x0352, $AC0.M
|
||
|
06b1 00e0 0350 SR @0x0350, $R00
|
||
|
06b3 00c0 03fb LR $R00, @0x03fb
|
||
|
06b5 00c8 03fc LR $R08, @0x03fc
|
||
|
06b7 029f 05e6 JMP 0x05e6
|
||
|
06b9 00e0 03fb SR @0x03fb, $R00
|
||
|
06bb 00e8 03fc SR @0x03fc, $R08
|
||
|
06bd 00c0 0350 LR $R00, @0x0350
|
||
|
06bf 0088 002f LRI $R08, #0x002f
|
||
|
06c1 0a00 LRIS $AX0.H, #0x00
|
||
|
06c2 1b1a SRRI @$R00, $AX0.H
|
||
|
06c3 029f 06ab JMP 0x06ab
|
||
|
|
||
|
|
||
|
// MessageLoop()
|
||
|
06c5 00c0 0351 LR $R00, @0x0351
|
||
|
06c7 0088 002f LRI $R08, #0x002f
|
||
|
|
||
|
06c9 00da 0352 LR $AX0.H, @0x0352
|
||
|
06cb 8600 TSTAXH $AX0.H
|
||
|
06cc 0295 06ed JEQ 0x06ed
|
||
|
06ce 1205 SBCLR #0x05
|
||
|
06cf 00da 0352 LR $AX0.H, @0x0352
|
||
|
06d1 1fda MRR $AC0.M, $AX0.H
|
||
|
06d2 7800 DECM $AC0.M
|
||
|
06d3 00fe 0352 SR @0x0352, $AC0.M
|
||
|
06d5 1305 SBSET #0x05
|
||
|
06d6 0081 0356 LRI $R01, #0x0356
|
||
|
06d8 191e LRRI $AC0.M, @$R00
|
||
|
06d9 02c0 8000 ANDF $AC0.M, #0x8000
|
||
|
06db 029d 06f1 JNZ 0x06f1
|
||
|
06dd 1f5e MRR $AX0.H, $AC0.M
|
||
|
06de 8600 TSTAXH $AX0.H
|
||
|
06df 0295 06f5 JEQ 0x06f5
|
||
|
06e1 007a 06e6 BLOOP $AX0.H, 0x06e6
|
||
|
06e3 191e LRRI $AC0.M, @$R00
|
||
|
06e4 1b3e SRRI @$R01, $AC0.M
|
||
|
06e5 191e LRRI $AC0.M, @$R00
|
||
|
06e6 1b3e SRRI @$R01, $AC0.M
|
||
|
06e7 00e0 0351 SR @0x0351, $R00
|
||
|
06e9 0088 ffff LRI $R08, #0xffff
|
||
|
06eb 029f 002f JMP 0x002f // Command handler.
|
||
|
|
||
|
06ed 0088 ffff LRI $R08, #0xffff
|
||
|
06ef 029f 002d JMP 0x002d // Just jumps back to MessageLoop
|
||
|
|
||
|
// Store the current command, jump back to MessageLoop+2.
|
||
|
06f1 00e0 0351 SR @0x0351, $R00
|
||
|
06f3 029f 06c9 JMP 0x06c9
|
||
|
|
||
|
// Default command, jump back to MessageLoop?
|
||
|
06f5 0080 06c5 LRI $R00, #0x06c5
|
||
|
06f7 029f 05f0 JMP 0x05f0 // StopUCode()
|
||
|
|
||
|
|
||
|
// Tests the value at M(0x0032)
|
||
|
06f9 8100 CLR $AC0.M
|
||
|
06fa 0e10 LRIS $AC0.M, #0x10
|
||
|
06fb 2232 LRS $AX0.H, @0x0032
|
||
|
06fc 8600 TSTAXH $AX0.H
|
||
|
06fd 02d5 RETEQ
|
||
|
06fe 5400 SUBR $AC0.M, $AX0.H
|
||
|
06ff 0200 0458 ADDI $ACC0, #0x0458
|
||
|
0701 1c1e MRR $R00, $AC0.M
|
||
|
0702 1fda MRR $AC0.M, $AX0.H
|
||
|
0703 04fe ADDIS $ACC0, #0xfe
|
||
|
0704 1f1e MRR $AX0.L, $AC0.M
|
||
|
0705 191e LRRI $AC0.M, @$R00
|
||
|
0706 0291 070c JX1 0x070c
|
||
|
0708 191a LRRI $AX0.H, @$R00
|
||
|
0709 0058 LOOP $AX0.L
|
||
|
070a 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
070b 6433 MOVR.S $AC0.M, $AX0.H : @$R03, $AC0.M
|
||
|
070c 1b7e SRRI @$R03, $AC0.M
|
||
|
070d 02df RET
|
||
|
|
||
|
|
||
|
// M(0x0032) must be important...
|
||
|
070e 02bf 06f9 CALL 0x06f9
|
||
|
0710 8100 CLR $AC0.M
|
||
|
0711 2632 LRS $AC0.M, @0x0032
|
||
|
0712 5c00 SUB $AC0.M, $AC1.M
|
||
|
0713 2e32 SRS @0x0032, $AC0.M
|
||
|
0714 0092 00ff LRI $CR, #0x00ff
|
||
|
0716 02df RET
|
||
|
|
||
|
|
||
|
// Copies some values from hardware to dram.
|
||
|
0717 00de 04fb LR $AC0.M, @0x04fb
|
||
|
0719 7400 INCM $AC0.M
|
||
|
071a 00fe 04fb SR @0x04fb, $AC0.M
|
||
|
071c 8100 CLR $AC0.M
|
||
|
071d 2e32 SRS @0x0032, $AC0.M
|
||
|
071e 2e66 SRS @0x0066, $AC0.M
|
||
|
071f 2e67 SRS @0x0067, $AC0.M
|
||
|
0720 268a LRS $AC0.M, @0xff8a // What HW is this?
|
||
|
0721 248b LRS $AC0.L, @0xff8b
|
||
|
0722 2e3a SRS @0x003a, $AC0.M
|
||
|
0723 2c3b SRS @0x003b, $AC0.L
|
||
|
0724 268c LRS $AC0.M, @0xff8c
|
||
|
0725 248d LRS $AC0.L, @0xff8d
|
||
|
0726 2e38 SRS @0x0038, $AC0.M
|
||
|
0727 2c39 SRS @0x0039, $AC0.L
|
||
|
0728 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0729 8100 CLR $AC0.M
|
||
|
072a 2689 LRS $AC0.M, @0xff89
|
||
|
072b 0240 000f ANDI $ACC0, #0x000f
|
||
|
072d 1f5e MRR $AX0.H, $AC0.M
|
||
|
072e 8100 CLR $AC0.M
|
||
|
072f 0e10 LRIS $AC0.M, #0x10
|
||
|
0730 5400 SUBR $AC0.M, $AX0.H
|
||
|
0731 2e32 SRS @0x0032, $AC0.M
|
||
|
0732 268a LRS $AC0.M, @0xff8a
|
||
|
0733 248b LRS $AC0.L, @0xff8b
|
||
|
0734 2288 LRS $AX0.H, @0xff88
|
||
|
0735 2089 LRS $AX0.L, @0xff89
|
||
|
0736 5800 SUBAX $AC0.M, $AX0.L
|
||
|
0737 0a00 LRIS $AX0.H, #0x00
|
||
|
0738 2032 LRS $AX0.L, @0x0032
|
||
|
0739 5800 SUBAX $AC0.M, $AX0.L
|
||
|
073a 2e3a SRS @0x003a, $AC0.M
|
||
|
073b 2c3b SRS @0x003b, $AC0.L
|
||
|
073c 02df RET
|
||
|
|
||
|
|
||
|
// Call, or not, 0x717 with some params.
|
||
|
// CR loading is .. suspicious :P
|
||
|
073d 0092 0004 LRI $CR, #0x0004
|
||
|
073f 8100 CLR $AC0.M
|
||
|
0740 2604 LRS $AC0.M, @0x0004
|
||
|
0741 b100 TST $AC0.M
|
||
|
0742 02b4 0717 CALLNE 0x0717
|
||
|
0744 8100 CLR $AC0.M
|
||
|
0745 2601 LRS $AC0.M, @0x0001
|
||
|
0746 b100 TST $AC0.M
|
||
|
0747 0294 07e5 JNE 0x07e5
|
||
|
//..
|
||
|
0749 2232 LRS $AX0.H, @0x0032
|
||
|
074a c900 CMPAXH $AC0.M, $AX1.H
|
||
|
074b 0293 070e JX3 0x070e
|
||
|
074d 5500 SUBR $AC1.M, $AX0.H
|
||
|
074e 02bf 06f9 CALL 0x06f9
|
||
|
0750 223a LRS $AX0.H, @0x003a
|
||
|
0751 8600 TSTAXH $AX0.H
|
||
|
0752 0294 0759 JNE 0x0759
|
||
|
0754 8100 CLR $AC0.M
|
||
|
0755 263b LRS $AC0.M, @0x003b
|
||
|
0756 8200 CMP
|
||
|
0757 0291 07ab JX1 0x07ab
|
||
|
0759 8100 CLR $AC0.M
|
||
|
075a 1fdf MRR $AC0.M, $AC1.M
|
||
|
075b 040f ADDIS $ACC0, #0x0f
|
||
|
075c 147c LSR $ACC0, #0x3c
|
||
|
075d 1f7e MRR $AX1.H, $AC0.M
|
||
|
075e 0c00 LRIS $AC0.L, #0x00
|
||
|
075f 1404 LSL $ACC0, #0x04
|
||
|
0760 1f1e MRR $AX0.L, $AC0.M
|
||
|
0761 0a00 LRIS $AX0.H, #0x00
|
||
|
0762 8100 CLR $AC0.M
|
||
|
0763 263a LRS $AC0.M, @0x003a
|
||
|
0764 243b LRS $AC0.L, @0x003b
|
||
|
0765 5800 SUBAX $AC0.M, $AX0.L
|
||
|
0766 0290 0771 JX0 0x0771
|
||
|
0768 8100 CLR $AC0.M
|
||
|
0769 263b LRS $AC0.M, @0x003b
|
||
|
076a 5c00 SUB $AC0.M, $AC1.M
|
||
|
076b 2e32 SRS @0x0032, $AC0.M
|
||
|
076c 8100 CLR $AC0.M
|
||
|
076d 2e3a SRS @0x003a, $AC0.M
|
||
|
076e 2e3b SRS @0x003b, $AC0.M
|
||
|
076f 029f 0777 JMP 0x0777
|
||
|
|
||
|
//.. Jump target from 0766
|
||
|
0771 2e3a SRS @0x003a, $AC0.M
|
||
|
0772 2c3b SRS @0x003b, $AC0.L
|
||
|
0773 0c00 LRIS $AC0.L, #0x00
|
||
|
0774 1fd8 MRR $AC0.M, $AX0.L
|
||
|
0775 5c00 SUB $AC0.M, $AC1.M
|
||
|
0776 2e32 SRS @0x0032, $AC0.M
|
||
|
//.. Jump target from 076f
|
||
|
0777 8100 CLR $AC0.M
|
||
|
0778 1fdb MRR $AC0.M, $AX1.H
|
||
|
0779 02bf 07eb CALL 0x07eb
|
||
|
077b 2232 LRS $AX0.H, @0x0032
|
||
|
077c 8600 TSTAXH $AX0.H
|
||
|
077d 0295 07a8 JEQ 0x07a8 // bail
|
||
|
077f 0a10 LRIS $AX0.H, #0x10
|
||
|
0780 8100 CLR $AC0.M
|
||
|
0781 1fc3 MRR $AC0.M, $R03
|
||
|
0782 5400 SUBR $AC0.M, $AX0.H
|
||
|
0783 1c7e MRR $R03, $AC0.M
|
||
|
0784 0080 0458 LRI $R00, #0x0458
|
||
|
0786 197e LRRI $AC0.M, @$R03
|
||
|
0787 197a LRRI $AX0.H, @$R03
|
||
|
0788 100e LOOPI #0x0e
|
||
|
0789 64a2 MOVR.SL $AC0.M, $AX0.H : $AC0.M, $AX0.H
|
||
|
078a 1b1e SRRI @$R00, $AC0.M
|
||
|
078b 1b1a SRRI @$R00, $AX0.H
|
||
|
078c 8100 CLR $AC0.M
|
||
|
078d 263a LRS $AC0.M, @0x003a
|
||
|
078e 243b LRS $AC0.L, @0x003b
|
||
|
078f b100 TST $AC0.M
|
||
|
0790 0294 07a8 JNE 0x07a8 // bail
|
||
|
0792 2232 LRS $AX0.H, @0x0032
|
||
|
0793 8600 TSTAXH $AX0.H
|
||
|
0794 0295 07a8 JEQ 0x07a8 // bail
|
||
|
0796 0080 0467 LRI $R00, #0x0467
|
||
|
0798 8100 CLR $AC0.M
|
||
|
0799 268b LRS $AC0.M, @0xff8b
|
||
|
079a b100 TST $AC0.M
|
||
|
079b 0295 07a8 JEQ 0x07a8 // bail
|
||
|
079d 0200 000f ADDI $ACC0, #0x000f
|
||
|
079f 0240 000f ANDI $ACC0, #0x000f
|
||
|
07a1 0200 0458 ADDI $ACC0, #0x0458
|
||
|
07a3 1c7e MRR $R03, $AC0.M
|
||
|
07a4 007a 07a7 BLOOP $AX0.H, 0x07a7
|
||
|
07a6 18fe LRRD $AC0.M, @$R03
|
||
|
07a7 1a9e SRRD @$R00, $AC0.M
|
||
|
//..
|
||
|
07a8 0092 00ff LRI $CR, #0x00ff
|
||
|
07aa 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
07ab b100 TST $AC0.M
|
||
|
07ac 0295 07bb JEQ 0x07bb
|
||
|
07ae 5d00 SUB $AC1.M, $AC0.M
|
||
|
07af 040f ADDIS $ACC0, #0x0f
|
||
|
07b0 147c LSR $ACC0, #0x3c
|
||
|
07b1 0c00 LRIS $AC0.L, #0x00
|
||
|
07b2 00e3 0363 SR @0x0363, $R03
|
||
|
07b4 02bf 07eb CALL 0x07eb
|
||
|
07b6 00de 0363 LR $AC0.M, @0x0363
|
||
|
07b8 223b LRS $AX0.H, @0x003b
|
||
|
07b9 4400 ADDR $AC0.M, $AX0.H
|
||
|
07ba 1c7e MRR $R03, $AC0.M
|
||
|
07bb 8100 CLR $AC0.M
|
||
|
07bc 2681 LRS $AC0.M, @0xff81
|
||
|
07bd b100 TST $AC0.M
|
||
|
07be 0295 07e3 JEQ 0x07e3 // memset
|
||
|
07c0 2380 LRS $AX1.H, @0xff80
|
||
|
07c1 2688 LRS $AC0.M, @0xff88
|
||
|
07c2 2489 LRS $AC0.L, @0xff89
|
||
|
07c3 1408 LSL $ACC0, #0x08
|
||
|
07c4 14f4 ASR $ACC0, #0x74
|
||
|
07c5 2380 LRS $AX1.H, @0xff80
|
||
|
07c6 8d00 SET15
|
||
|
07c7 c810 MULC.MV $AX1.H, $AC0.M : $AX0.L, $AC0.L
|
||
|
07c8 ae00 MULXMV $AX0.L, $AX1.H, $AC0.M
|
||
|
07c9 8c00 CLR15
|
||
|
07ca f000 LSL16 $AC0.M
|
||
|
07cb 4e00 ADDP $AC0.M
|
||
|
07cc 238c LRS $AX1.H, @0xff8c
|
||
|
07cd 218d LRS $AX1.L, @0xff8d
|
||
|
07ce 4a00 ADDAX $AC0.M, $AX1.L
|
||
|
07cf 2e38 SRS @0x0038, $AC0.M
|
||
|
07d0 2c39 SRS @0x0039, $AC0.L
|
||
|
07d1 2682 LRS $AC0.M, @0xff82
|
||
|
07d2 2e67 SRS @0x0067, $AC0.M
|
||
|
07d3 2683 LRS $AC0.M, @0xff83
|
||
|
07d4 2e66 SRS @0x0066, $AC0.M
|
||
|
07d5 00e3 0363 SR @0x0363, $R03
|
||
|
07d7 0083 0458 LRI $R03, #0x0458
|
||
|
07d9 8100 CLR $AC0.M
|
||
|
07da 0e01 LRIS $AC0.M, #0x01
|
||
|
07db 02bf 07eb CALL 0x07eb
|
||
|
07dd 00c3 0363 LR $R03, @0x0363
|
||
|
07df 02bf 0729 CALL 0x0729
|
||
|
07e1 029f 0749 JMP 0x0749
|
||
|
|
||
|
|
||
|
// loop count = AC1.M
|
||
|
// strange - stores the value 1 at [1].
|
||
|
// then just memset 0 and a CR=0xff.
|
||
|
07e3 0e01 LRIS $AC0.M, #0x01
|
||
|
07e4 2e01 SRS @0x0001, $AC0.M
|
||
|
07e5 8100 CLR $AC0.M
|
||
|
07e6 005f LOOP $AC1.M
|
||
|
07e7 1b7e SRRI @$R03, $AC0.M
|
||
|
07e8 0092 00ff LRI $CR, #0x00ff
|
||
|
07ea 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
07eb 00ff 0360 SR @0x0360, $AC1.M
|
||
|
07ed 00fe 0361 SR @0x0361, $AC0.M
|
||
|
07ef 2638 LRS $AC0.M, @0x0038
|
||
|
07f0 2439 LRS $AC0.L, @0x0039
|
||
|
07f1 0f05 LRIS $AC1.M, #0x05
|
||
|
07f2 02bf 05ad CALL 0x05ad
|
||
|
07f4 2638 LRS $AC0.M, @0x0038
|
||
|
07f5 2439 LRS $AC0.L, @0x0039
|
||
|
07f6 8900 CLR $AC1.M
|
||
|
07f7 00df 0361 LR $AC1.M, @0x0361
|
||
|
07f9 2280 LRS $AX0.H, @0xff80
|
||
|
07fa d000 MULC $AX0.H, $AC1.M
|
||
|
07fb 6f00 MOVP $AC1.M
|
||
|
07fc 4c00 ADD $AC0.M, $AC1.M
|
||
|
07fd 2e38 SRS @0x0038, $AC0.M
|
||
|
07fe 2c39 SRS @0x0039, $AC0.L
|
||
|
07ff 8100 CLR $AC0.M
|
||
|
0800 00de 0361 LR $AC0.M, @0x0361
|
||
|
0802 007e 086b BLOOP $AC0.M, 0x086b
|
||
|
0804 0080 ffd3 LRI $R00, #0xffd3
|
||
|
0806 0084 0000 LRI $R04, #0x0000
|
||
|
0808 199e LRRN $AC0.M, @$R00
|
||
|
0809 8900 CLR $AC1.M
|
||
|
080a 1ffe MRR $AC1.M, $AC0.M
|
||
|
080b 1401 LSL $ACC0, #0x01
|
||
|
080c 0240 001e ANDI $ACC0, #0x001e
|
||
|
080e 0200 0300 ADDI $ACC0, #0x0300
|
||
|
0810 1c3e MRR $R01, $AC0.M
|
||
|
0811 157c LSR $ACC1, #0x3c
|
||
|
0812 0340 000f ANDI $ACC1, #0x000f
|
||
|
0814 0a11 LRIS $AX0.H, #0x11
|
||
|
0815 5500 SUBR $AC1.M, $AX0.H
|
||
|
0816 8100 CLR $AC0.M
|
||
|
0817 2680 LRS $AC0.M, @0xff80
|
||
|
0818 0605 CMPIS $ACC0, #0x05
|
||
|
0819 0295 0832 JEQ 0x0832
|
||
|
081b 009a 00f0 LRI $AX0.H, #0x00f0
|
||
|
081d 0b0f LRIS $AX1.H, #0x0f
|
||
|
081e 0082 0364 LRI $R02, #0x0364
|
||
|
0820 1998 LRRN $AX0.L, @$R00
|
||
|
0821 6000 MOVR $AC0.M, $AX0.L
|
||
|
0822 1107 0829 BLOOPI #0x07, 0x0829
|
||
|
0824 3400 ANDR $AC0.M, $AX0.H
|
||
|
0825 1408 LSL $ACC0, #0x08
|
||
|
0826 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
0827 3644 ANDR.LN $AC0.M, $AX1.H : $AX0.L, @$R00
|
||
|
0828 140c LSL $ACC0, #0x0c
|
||
|
0829 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
082a 3400 ANDR $AC0.M, $AX0.H
|
||
|
082b 1408 LSL $ACC0, #0x08
|
||
|
082c 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
082d 3600 ANDR $AC0.M, $AX1.H
|
||
|
082e 140c LSL $ACC0, #0x0c
|
||
|
082f 1b5e SRRI @$R02, $AC0.M
|
||
|
0830 029f 0852 JMP 0x0852
|
||
|
|
||
|
|
||
|
|
||
|
0832 009a c000 LRI $AX0.H, #0xc000
|
||
|
0834 0082 0364 LRI $R02, #0x0364
|
||
|
0836 1998 LRRN $AX0.L, @$R00
|
||
|
0837 6000 MOVR $AC0.M, $AX0.L
|
||
|
0838 1103 0845 BLOOPI #0x03, 0x0845
|
||
|
083a 1408 LSL $ACC0, #0x08
|
||
|
083b 3400 ANDR $AC0.M, $AX0.H
|
||
|
083c 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
083d 140a LSL $ACC0, #0x0a
|
||
|
083e 3400 ANDR $AC0.M, $AX0.H
|
||
|
083f 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
0840 140c LSL $ACC0, #0x0c
|
||
|
0841 3400 ANDR $AC0.M, $AX0.H
|
||
|
0842 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
0843 140e LSL $ACC0, #0x0e
|
||
|
0844 3444 ANDR.LN $AC0.M, $AX0.H : $AX0.L, @$R00
|
||
|
0845 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
0846 1408 LSL $ACC0, #0x08
|
||
|
0847 3400 ANDR $AC0.M, $AX0.H
|
||
|
0848 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
0849 140a LSL $ACC0, #0x0a
|
||
|
084a 3400 ANDR $AC0.M, $AX0.H
|
||
|
084b 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
084c 140c LSL $ACC0, #0x0c
|
||
|
084d 3400 ANDR $AC0.M, $AX0.H
|
||
|
084e 6032 MOVR.S $AC0.M, $AX0.L : @$R02, $AC0.M
|
||
|
084f 140e LSL $ACC0, #0x0e
|
||
|
0850 3400 ANDR $AC0.M, $AX0.H
|
||
|
0851 1b5e SRRI @$R02, $AC0.M
|
||
|
0852 8f00 S16
|
||
|
0853 1f7f MRR $AX1.H, $AC1.M
|
||
|
0854 2066 LRS $AX0.L, @0x0066
|
||
|
0855 2767 LRS $AC1.M, @0x0067
|
||
|
0856 193a LRRI $AX0.H, @$R01
|
||
|
0857 1939 LRRI $AX1.L, @$R01
|
||
|
0858 0080 0364 LRI $R00, #0x0364
|
||
|
085a 1c80 MRR $R04, $R00
|
||
|
085b a000 MULX $AX0.L, $AX1.L
|
||
|
085c ea70 MADDC.L $AC1.M, $AX1.L : $AC0.M, @$R00
|
||
|
085d 1108 0866 BLOOPI #0x08, 0x0866
|
||
|
085f 3a93 ORR.SL $AC0.M, $AX1.H : $AC1.M, $AX1.L
|
||
|
0860 a478 MULXAC.L $AX0.L, $AX1.L, $AC0.M : $AC1.M, @$R00
|
||
|
0861 1485 ASL $ACC0, #0x05
|
||
|
0862 e833 MADDC.S $AC0.M, $AX1.L : @$R03, $AC0.M
|
||
|
0863 3b92 ORR.SL $AC1.M, $AX1.H : $AC0.M, $AX1.L
|
||
|
0864 a570 MULXAC.L $AX0.L, $AX1.L, $AC1.M : $AC0.M, @$R00
|
||
|
0865 1585 ASL $ACC1, #0x05
|
||
|
0866 ea3b MADDC.S $AC1.M, $AX1.L : @$R03, $AC1.M
|
||
|
0867 2f67 SRS @0x0067, $AC1.M
|
||
|
0868 8e00 S40
|
||
|
0869 1ff8 MRR $AC1.M, $AX0.L
|
||
|
086a 2f66 SRS @0x0066, $AC1.M
|
||
|
086b 8900 CLR $AC1.M
|
||
|
086c 00df 0360 LR $AC1.M, @0x0360
|
||
|
086e 02df RET
|
||
|
|
||
|
|
||
|
086f b100 TST $AC0.M
|
||
|
0870 02d5 RETEQ
|
||
|
0871 04fe ADDIS $ACC0, #0xfe
|
||
|
0872 1f1e MRR $AX0.L, $AC0.M
|
||
|
0873 191e LRRI $AC0.M, @$R00
|
||
|
0874 0291 087a JX1 0x087a
|
||
|
0876 191a LRRI $AX0.H, @$R00
|
||
|
0877 0058 LOOP $AX0.L
|
||
|
0878 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0879 6433 MOVR.S $AC0.M, $AX0.H : @$R03, $AC0.M
|
||
|
087a 1b7e SRRI @$R03, $AC0.M
|
||
|
087b 02df RET
|
||
|
|
||
|
|
||
|
// Another jump table dispatcher. Not sure what it is.
|
||
|
087c 8100 CLR $AC0.M
|
||
|
087d 1f5e MRR $AX0.H, $AC0.M
|
||
|
087e 00d8 0402 LR $AX0.L, @0x0402
|
||
|
0880 00dc 0430 LR $AC0.L, @0x0430
|
||
|
0882 0080 0520 LRI $R00, #0x0520
|
||
|
0884 00df 0480 LR $AC1.M, @0x0480
|
||
|
0886 1501 LSL $ACC1, #0x01
|
||
|
0887 0340 007e ANDI $ACC1, #0x007e
|
||
|
0889 0300 0891 ADDI $ACC1, #0x0891
|
||
|
088b 1c5f MRR $R02, $AC1.M
|
||
|
088c 175f CALLR $R02
|
||
|
088d 00fc 0430 SR @0x0430, $AC0.L
|
||
|
088f 029f 02d8 JMP 0x02d8 // 0
|
||
|
0891 029f 08b2 JMP 0x08b2 // 1
|
||
|
0893 029f 08ed JMP 0x08ed // 2
|
||
|
0895 029f 08d5 JMP 0x08d5 // 3
|
||
|
0897 029f 08c2 JMP 0x08c2 // 4
|
||
|
0899 029f 08fb JMP 0x08fb // 5
|
||
|
089b 029f 08b1 JMP 0x08b1 // 6
|
||
|
089d 029f 0919 JMP 0x0919 // 7
|
||
|
089f 029f 091c JMP 0x091c // 8
|
||
|
08a1 029f 08b1 JMP 0x08b1 // 9
|
||
|
08a3 029f 08b1 JMP 0x08b1 // 10
|
||
|
08a5 029f 093a JMP 0x093a // 11
|
||
|
08a7 029f 08f3 JMP 0x08f3 // 12
|
||
|
08a9 029f 08f7 JMP 0x08f7 // 13
|
||
|
08ab 029f 08b1 JMP 0x08b1 // 14
|
||
|
08ad 029f 08b1 JMP 0x08b1 // 15
|
||
|
08af 029f 08b1 JMP 0x08b1 // 16 (huh? one too much)
|
||
|
|
||
|
// 88c Call targets 6, 9, 10, 14, 15, 16. (Nop)
|
||
|
08b1 02df RET
|
||
|
|
||
|
// Could this stuff be some zany audio decompression?
|
||
|
// CT1 seems to unpack the bits of ac0 and write either
|
||
|
// 0xc000 or 0x4000 to the output depending on 1 bit of acc0.
|
||
|
// CT4 does the same but depends on 2 bits of acc0.
|
||
|
// CT3 is similar but also seems to accumulate some value.
|
||
|
// CT2 just stores a ramp.
|
||
|
// Not sure what CT5 does.
|
||
|
// CT12 and CT13 are variants of CT5.
|
||
|
// CT7 is just a memset.
|
||
|
//
|
||
|
|
||
|
// 88c Call target 1.
|
||
|
08b2 1401 LSL $ACC0, #0x01
|
||
|
08b3 009b c000 LRI $AX1.H, #0xc000
|
||
|
08b5 0099 4000 LRI $AX1.L, #0x4000
|
||
|
08b7 1150 08bf BLOOPI #0x50, 0x08bf
|
||
|
08b9 02c0 0001 ANDF $AC0.M, #0x0001
|
||
|
08bb 027c IF_R
|
||
|
08bc 1b1b SRRI @$R00, $AX1.H
|
||
|
08bd 027d IF_Z
|
||
|
08be 1b19 SRRI @$R00, $AX1.L
|
||
|
08bf 4800 ADDAX $AC0.M, $AX0.L
|
||
|
08c0 147f LSR $ACC0, #0x3f
|
||
|
08c1 02df RET
|
||
|
|
||
|
// 88c Call target 4.
|
||
|
08c2 1402 LSL $ACC0, #0x02
|
||
|
08c3 8900 CLR $AC1.M
|
||
|
08c4 1fb8 MRR $AC1.L, $AX0.L
|
||
|
08c5 1501 LSL $ACC1, #0x01
|
||
|
08c6 009b c000 LRI $AX1.H, #0xc000
|
||
|
08c8 0099 4000 LRI $AX1.L, #0x4000
|
||
|
08ca 1150 08d2 BLOOPI #0x50, 0x08d2
|
||
|
08cc 02c0 0003 ANDF $AC0.M, #0x0003
|
||
|
08ce 027c IF_R
|
||
|
08cf 1b1b SRRI @$R00, $AX1.H
|
||
|
08d0 027d IF_Z
|
||
|
08d1 1b19 SRRI @$R00, $AX1.L
|
||
|
08d2 4c00 ADD $AC0.M, $AC1.M
|
||
|
08d3 147e LSR $ACC0, #0x3e
|
||
|
08d4 02df RET
|
||
|
|
||
|
// 88c Call target 3.
|
||
|
08d5 1401 LSL $ACC0, #0x01
|
||
|
08d6 0081 0ca0 LRI $R01, #0x0ca0
|
||
|
08d8 009b c000 LRI $AX1.H, #0xc000
|
||
|
08da 0099 4000 LRI $AX1.L, #0x4000
|
||
|
08dc 8900 CLR $AC1.M
|
||
|
08dd 0082 0000 LRI $R02, #0x0000
|
||
|
08df 1150 08ea BLOOPI #0x50, 0x08ea
|
||
|
08e1 02c0 0001 ANDF $AC0.M, #0x0001
|
||
|
08e3 027c IF_R
|
||
|
08e4 1b1b SRRI @$R00, $AX1.H
|
||
|
08e5 027d IF_Z
|
||
|
08e6 1b19 SRRI @$R00, $AX1.L
|
||
|
08e7 183d LRR $AC1.L, @$R01
|
||
|
08e8 4900 ADDAX $AC1.M, $AX0.L
|
||
|
08e9 1fe2 MRR $AC1.M, $R02
|
||
|
08ea 4c39 ADD.S $AC0.M, $AC1.M : @$R01, $AC1.M
|
||
|
08eb 147f LSR $ACC0, #0x3f
|
||
|
08ec 02df RET
|
||
|
|
||
|
// 88c Call target 2.
|
||
|
08ed 8900 CLR $AC1.M
|
||
|
08ee 1fb8 MRR $AC1.L, $AX0.L
|
||
|
08ef 157f LSR $ACC1, #0x3f
|
||
|
08f0 1050 LOOPI #0x50
|
||
|
08f1 4c20 ADD.S $AC0.M, $AC1.M : @$R00, $AC0.L
|
||
|
08f2 02df RET
|
||
|
|
||
|
// 88c Call target 12.
|
||
|
08f3 0082 0180 LRI $R02, #0x0180
|
||
|
08f5 029f 08fd JMP 0x08fd
|
||
|
|
||
|
// 88c Call target 13.
|
||
|
08f7 0082 01c0 LRI $R02, #0x01c0
|
||
|
08f9 029f 08fd JMP 0x08fd
|
||
|
|
||
|
// 88c Call target 5.
|
||
|
08fb 0082 0140 LRI $R02, #0x0140
|
||
|
// 88c targets 12 and 13 forward here with different R02 value.
|
||
|
08fd 008a 003f LRI $R10, #0x003f
|
||
|
08ff 0086 0000 LRI $R06, #0x0000
|
||
|
0901 1406 LSL $ACC0, #0x06
|
||
|
0902 8900 CLR $AC1.M
|
||
|
0903 1fb8 MRR $AC1.L, $AX0.L
|
||
|
0904 1505 LSL $ACC1, #0x05
|
||
|
0905 009b 003f LRI $AX1.H, #0x003f
|
||
|
0907 009a 0000 LRI $AX0.H, #0x0000
|
||
|
0909 3600 ANDR $AC0.M, $AX1.H
|
||
|
090a 1cde MRR $R06, $AC0.M
|
||
|
090b 001a CW 0x001a ; *** UNKNOWN OPCODE ***
|
||
|
090c 3400 ANDR $AC0.M, $AX0.H
|
||
|
090d 1150 0913 BLOOPI #0x50, 0x0913
|
||
|
090f 4c4a ADD.L $AC0.M, $AC1.M : $AX1.L, @$R02
|
||
|
0910 3606 ANDR.DR $AC0.M, $AX1.H : $R02
|
||
|
0911 1cde MRR $R06, $AC0.M
|
||
|
0912 340e ANDR.NR $AC0.M, $AX0.H : $R02
|
||
|
0913 1b19 SRRI @$R00, $AX1.L
|
||
|
0914 1fc2 MRR $AC0.M, $R02
|
||
|
0915 147a LSR $ACC0, #0x3a
|
||
|
0916 008a ffff LRI $R10, #0xffff
|
||
|
0918 02df RET
|
||
|
|
||
|
// 88c Call target 7.
|
||
|
0919 1050 LOOPI #0x50
|
||
|
091a 1b18 SRRI @$R00, $AX0.L
|
||
|
091b 02df RET
|
||
|
|
||
|
// 88c Call target 8.
|
||
|
091c 0082 0100 LRI $R02, #0x0100
|
||
|
091e 008a 003f LRI $R10, #0x003f
|
||
|
0920 0086 0000 LRI $R06, #0x0000
|
||
|
0922 1406 LSL $ACC0, #0x06
|
||
|
0923 8900 CLR $AC1.M
|
||
|
0924 1fb8 MRR $AC1.L, $AX0.L
|
||
|
0925 1505 LSL $ACC1, #0x05
|
||
|
0926 009b 003f LRI $AX1.H, #0x003f
|
||
|
0928 009a 0000 LRI $AX0.H, #0x0000
|
||
|
092a 3600 ANDR $AC0.M, $AX1.H
|
||
|
092b 1cde MRR $R06, $AC0.M
|
||
|
092c 001a CW 0x001a ; *** UNKNOWN OPCODE ***
|
||
|
092d 3400 ANDR $AC0.M, $AX0.H
|
||
|
092e 1150 0934 BLOOPI #0x50, 0x0934
|
||
|
0930 4c4a ADD.L $AC0.M, $AC1.M : $AX1.L, @$R02
|
||
|
0931 3606 ANDR.DR $AC0.M, $AX1.H : $R02
|
||
|
0932 1cde MRR $R06, $AC0.M
|
||
|
0933 340e ANDR.NR $AC0.M, $AX0.H : $R02
|
||
|
0934 1b19 SRRI @$R00, $AX1.L
|
||
|
0935 1fc2 MRR $AC0.M, $R02
|
||
|
0936 147a LSR $ACC0, #0x3a
|
||
|
0937 008a ffff LRI $R10, #0xffff
|
||
|
0939 02df RET
|
||
|
|
||
|
|
||
|
// 88c Call target 11.
|
||
|
093a 0082 0100 LRI $R02, #0x0100
|
||
|
093c 008a 003f LRI $R10, #0x003f
|
||
|
093e 0086 0000 LRI $R06, #0x0000
|
||
|
0940 0081 0ca0 LRI $R01, #0x0ca0
|
||
|
0942 1406 LSL $ACC0, #0x06
|
||
|
0943 8900 CLR $AC1.M
|
||
|
0944 1fb8 MRR $AC1.L, $AX0.L
|
||
|
0945 1505 LSL $ACC1, #0x05
|
||
|
0946 009b 003f LRI $AX1.H, #0x003f
|
||
|
0948 009a 0000 LRI $AX0.H, #0x0000
|
||
|
094a 3600 ANDR $AC0.M, $AX1.H
|
||
|
094b 1cde MRR $R06, $AC0.M
|
||
|
094c 001a CW 0x001a ; *** UNKNOWN OPCODE ***
|
||
|
094d 3400 ANDR $AC0.M, $AX0.H
|
||
|
094e 1150 0959 BLOOPI #0x50, 0x0959
|
||
|
0950 1939 LRRI $AX1.L, @$R01
|
||
|
0951 a000 MULX $AX0.L, $AX1.L
|
||
|
0952 140a LSL $ACC0, #0x0a
|
||
|
0953 4e00 ADDP $AC0.M
|
||
|
0954 1476 LSR $ACC0, #0x36
|
||
|
0955 4c4a ADD.L $AC0.M, $AC1.M : $AX1.L, @$R02
|
||
|
0956 3606 ANDR.DR $AC0.M, $AX1.H : $R02
|
||
|
0957 1cde MRR $R06, $AC0.M
|
||
|
0958 340e ANDR.NR $AC0.M, $AX0.H : $R02
|
||
|
0959 1b19 SRRI @$R00, $AX1.L
|
||
|
095a 1fc2 MRR $AC0.M, $R02
|
||
|
095b 147a LSR $ACC0, #0x3a
|
||
|
095c 008a ffff LRI $R10, #0xffff
|
||
|
095e 02df RET
|
||
|
|
||
|
|
||
|
// recalculate some 020-sized table?
|
||
|
095f 0080 01be LRI $R00, #0x01be
|
||
|
0961 1918 LRRI $AX0.L, @$R00
|
||
|
0962 191a LRRI $AX0.H, @$R00
|
||
|
0963 0080 0180 LRI $R00, #0x0180
|
||
|
0965 0083 0180 LRI $R03, #0x0180
|
||
|
0967 9070 MUL.L $AX0.L, $AX0.H : $AC0.M, @$R00
|
||
|
0968 1ffe MRR $AC1.M, $AC0.M
|
||
|
0969 1120 0970 BLOOPI #0x20, 0x0970
|
||
|
096b 7c00 NEG $AC0.M
|
||
|
096c d450 MULCAC.L $AX0.H, $AC1.M, $AC0.M : $AX0.H, @$R00
|
||
|
096d 6533 MOVR.S $AC1.M, $AX0.H : @$R03, $AC0.M
|
||
|
096e c550 MULCAC.L $AX0.H, $AC0.M, $AC1.M : $AX0.H, @$R00
|
||
|
096f 1501 LSL $ACC1, #0x01
|
||
|
0970 643b MOVR.S $AC0.M, $AX0.H : @$R03, $AC1.M
|
||
|
0971 0080 01fe LRI $R00, #0x01fe
|
||
|
0973 191a LRRI $AX0.H, @$R00
|
||
|
0974 1918 LRRI $AX0.L, @$R00
|
||
|
0975 0080 01c0 LRI $R00, #0x01c0
|
||
|
0977 0083 01c0 LRI $R03, #0x01c0
|
||
|
0979 1ff8 MRR $AC1.M, $AX0.L
|
||
|
097a 9070 MUL.L $AX0.L, $AX0.H : $AC0.M, @$R00
|
||
|
097b f800 ADDPAXZ $AC0.M, $AX0.H
|
||
|
097c 0240 01ff ANDI $ACC0, #0x01ff
|
||
|
097e 0260 2000 ORI $ACC0, #0x2000
|
||
|
0980 02bf 0983 CALL 0x0983
|
||
|
0982 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0983 b900 TST $AC1.M
|
||
|
0984 0272 IF_2
|
||
|
0985 7c00 NEG $AC0.M
|
||
|
0986 1f7e MRR $AX1.H, $AC0.M
|
||
|
0987 4700 ADDR $AC1.M, $AX1.H
|
||
|
0988 1110 098d BLOOPI #0x10, 0x098d
|
||
|
098a 473b ADDR.S $AC1.M, $AX1.H : @$R03, $AC1.M
|
||
|
098b 473b ADDR.S $AC1.M, $AX1.H : @$R03, $AC1.M
|
||
|
098c 473b ADDR.S $AC1.M, $AX1.H : @$R03, $AC1.M
|
||
|
098d 473b ADDR.S $AC1.M, $AX1.H : @$R03, $AC1.M
|
||
|
098e 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
098f 0092 0004 LRI $CR, #0x0004
|
||
|
0991 2002 LRS $AX0.L, @0x0002
|
||
|
0992 8100 CLR $AC0.M
|
||
|
0993 8900 CLR $AC1.M
|
||
|
0994 2430 LRS $AC0.L, @0x0030
|
||
|
0995 8d00 SET15
|
||
|
0996 0950 LRIS $AX1.L, #0x50
|
||
|
0997 a000 MULX $AX0.L, $AX1.L
|
||
|
0998 a400 MULXAC $AX0.L, $AX1.L, $AC0.M
|
||
|
0999 1404 LSL $ACC0, #0x04
|
||
|
099a 8c00 CLR15
|
||
|
099b 1ffe MRR $AC1.M, $AC0.M
|
||
|
099c 0083 0580 LRI $R03, #0x0580
|
||
|
099e 2201 LRS $AX0.H, @0x0001
|
||
|
099f 8600 TSTAXH $AX0.H
|
||
|
09a0 0294 09b1 JNE 0x09b1
|
||
|
09a2 2204 LRS $AX0.H, @0x0004
|
||
|
09a3 8600 TSTAXH $AX0.H
|
||
|
09a4 02b4 09f9 CALLNE 0x09f9
|
||
|
09a6 8100 CLR $AC0.M
|
||
|
09a7 2605 LRS $AC0.M, @0x0005
|
||
|
09a8 b100 TST $AC0.M
|
||
|
09a9 0295 09be JEQ 0x09be
|
||
|
09ab 8100 CLR $AC0.M
|
||
|
09ac 2e05 SRS @0x0005, $AC0.M
|
||
|
09ad 2281 LRS $AX0.H, @0xff81
|
||
|
09ae 8600 TSTAXH $AX0.H
|
||
|
09af 0294 09b8 JNE 0x09b8
|
||
|
09b1 8100 CLR $AC0.M
|
||
|
09b2 005f LOOP $AC1.M
|
||
|
09b3 1b7e SRRI @$R03, $AC0.M
|
||
|
09b4 7400 INCM $AC0.M
|
||
|
09b5 2e01 SRS @0x0001, $AC0.M
|
||
|
09b6 029f 09f2 JMP 0x09f2
|
||
|
|
||
|
|
||
|
// called from 9af above.
|
||
|
09b8 2688 LRS $AC0.M, @0xff88
|
||
|
09b9 2489 LRS $AC0.L, @0xff89
|
||
|
09ba 2e34 SRS @0x0034, $AC0.M
|
||
|
09bb 2c35 SRS @0x0035, $AC0.L
|
||
|
09bc 02bf 09f9 CALL 0x09f9
|
||
|
09be 00ff 0360 SR @0x0360, $AC1.M
|
||
|
09c0 2638 LRS $AC0.M, @0x0038
|
||
|
09c1 2439 LRS $AC0.L, @0x0039
|
||
|
09c2 0f05 LRIS $AC1.M, #0x05
|
||
|
09c3 02bf 05ad CALL 0x05ad
|
||
|
09c5 00df 0360 LR $AC1.M, @0x0360
|
||
|
09c7 8100 CLR $AC0.M
|
||
|
09c8 263a LRS $AC0.M, @0x003a
|
||
|
09c9 b100 TST $AC0.M
|
||
|
09ca 0294 09d9 JNE 0x09d9
|
||
|
09cc 263b LRS $AC0.M, @0x003b
|
||
|
09cd 5c00 SUB $AC0.M, $AC1.M
|
||
|
09ce 0290 09d9 JX0 0x09d9
|
||
|
09d0 223b LRS $AX0.H, @0x003b
|
||
|
09d1 02bf 0a0a CALL 0x0a0a // weird little loop. count = ax0.h
|
||
|
09d3 5500 SUBR $AC1.M, $AX0.H
|
||
|
09d4 0a01 LRIS $AX0.H, #0x01
|
||
|
09d5 00fa 0405 SR @0x0405, $AX0.H
|
||
|
09d7 029f 09ab JMP 0x09ab
|
||
|
|
||
|
|
||
|
|
||
|
09d9 1f5f MRR $AX0.H, $AC1.M
|
||
|
09da 02bf 0a0a CALL 0x0a0a // weird little loop. count = ax0.h
|
||
|
09dc 00fa 0362 SR @0x0362, $AX0.H
|
||
|
09de 8100 CLR $AC0.M
|
||
|
09df 263a LRS $AC0.M, @0x003a
|
||
|
09e0 243b LRS $AC0.L, @0x003b
|
||
|
09e1 1570 LSR $ACC1, #0x30
|
||
|
09e2 0a01 LRIS $AX0.H, #0x01
|
||
|
09e3 0081 0405 LRI $R01, #0x0405
|
||
|
09e5 5c00 SUB $AC0.M, $AC1.M
|
||
|
09e6 b100 TST $AC0.M
|
||
|
09e7 0275 IF_Q
|
||
|
09e8 1a3a SRR @$R01, $AX0.H
|
||
|
09e9 2e3a SRS @0x003a, $AC0.M
|
||
|
09ea 2c3b SRS @0x003b, $AC0.L
|
||
|
09eb 2638 LRS $AC0.M, @0x0038
|
||
|
09ec 2439 LRS $AC0.L, @0x0039
|
||
|
09ed 00d8 0362 LR $AX0.L, @0x0362
|
||
|
09ef 7000 ADDAXL $AC0.M, $AX0.L
|
||
|
09f0 2c39 SRS @0x0039, $AC0.L
|
||
|
09f1 2e38 SRS @0x0038, $AC0.M
|
||
|
09f2 0092 00ff LRI $CR, #0x00ff
|
||
|
09f4 029f 02d0 JMP 0x02d0
|
||
|
|
||
|
|
||
|
// Nobody every calls 9f6... probably 3 lines of dead code.
|
||
|
09f6 8100 CLR $AC0.M
|
||
|
09f7 2e34 SRS @0x0034, $AC0.M
|
||
|
09f8 2e35 SRS @0x0035, $AC0.M
|
||
|
|
||
|
|
||
|
//.. entry point here from 9a4, 9bc. Looks kind of like a 32-bit butterfly computation?
|
||
|
09f9 2334 LRS $AX1.H, @0x0034
|
||
|
09fa 2135 LRS $AX1.L, @0x0035
|
||
|
09fb 268a LRS $AC0.M, @0xff8a
|
||
|
09fc 248b LRS $AC0.L, @0xff8b
|
||
|
09fd 5a00 SUBAX $AC0.M, $AX1.L
|
||
|
09fe 2e3a SRS @0x003a, $AC0.M
|
||
|
09ff 2c3b SRS @0x003b, $AC0.L
|
||
|
0a00 2634 LRS $AC0.M, @0x0034
|
||
|
0a01 2435 LRS $AC0.L, @0x0035
|
||
|
0a02 238c LRS $AX1.H, @0xff8c
|
||
|
0a03 218d LRS $AX1.L, @0xff8d
|
||
|
0a04 4a00 ADDAX $AC0.M, $AX1.L
|
||
|
0a05 2e38 SRS @0x0038, $AC0.M
|
||
|
0a06 2c39 SRS @0x0039, $AC0.L
|
||
|
0a07 8100 CLR $AC0.M
|
||
|
0a08 2e05 SRS @0x0005, $AC0.M
|
||
|
0a09 02df RET
|
||
|
|
||
|
|
||
|
// weird little loop. out[i] = in[i] << 8; ?
|
||
|
0a0a 0080 ffd3 LRI $R00, #0xffd3
|
||
|
0a0c 0084 0000 LRI $R04, #0x0000
|
||
|
0a0e 007a 0a12 BLOOP $AX0.H, 0x0a12
|
||
|
0a10 199e LRRN $AC0.M, @$R00
|
||
|
0a11 1488 ASL $ACC0, #0x08
|
||
|
0a12 1b7e SRRI @$R03, $AC0.M
|
||
|
0a13 02df RET
|
||
|
|
||
|
|
||
|
0a14 0092 0004 LRI $CR, #0x0004
|
||
|
0a16 2002 LRS $AX0.L, @0x0002
|
||
|
0a17 8100 CLR $AC0.M
|
||
|
0a18 8900 CLR $AC1.M
|
||
|
0a19 2430 LRS $AC0.L, @0x0030
|
||
|
0a1a 8d00 SET15
|
||
|
0a1b 0950 LRIS $AX1.L, #0x50
|
||
|
0a1c a000 MULX $AX0.L, $AX1.L
|
||
|
0a1d a400 MULXAC $AX0.L, $AX1.L, $AC0.M
|
||
|
0a1e 1404 LSL $ACC0, #0x04
|
||
|
0a1f 8c00 CLR15
|
||
|
0a20 1ffe MRR $AC1.M, $AC0.M
|
||
|
0a21 0083 0580 LRI $R03, #0x0580
|
||
|
0a23 2201 LRS $AX0.H, @0x0001
|
||
|
0a24 8600 TSTAXH $AX0.H
|
||
|
0a25 0294 0a36 JNE 0x0a36
|
||
|
0a27 2204 LRS $AX0.H, @0x0004
|
||
|
0a28 8600 TSTAXH $AX0.H
|
||
|
0a29 02b4 0a7f CALLNE 0x0a7f
|
||
|
0a2b 8100 CLR $AC0.M
|
||
|
0a2c 2605 LRS $AC0.M, @0x0005
|
||
|
0a2d b100 TST $AC0.M
|
||
|
0a2e 0295 0a43 JEQ 0x0a43
|
||
|
0a30 8100 CLR $AC0.M // 0x0a5c jumps here.
|
||
|
0a31 2e05 SRS @0x0005, $AC0.M
|
||
|
0a32 2281 LRS $AX0.H, @0xff81
|
||
|
0a33 8600 TSTAXH $AX0.H
|
||
|
0a34 0294 0a3d JNE 0x0a3d
|
||
|
0a36 8100 CLR $AC0.M
|
||
|
0a37 005f LOOP $AC1.M
|
||
|
0a38 1b7e SRRI @$R03, $AC0.M
|
||
|
0a39 7400 INCM $AC0.M
|
||
|
0a3a 2e01 SRS @0x0001, $AC0.M
|
||
|
0a3b 029f 0a78 JMP 0x0a78
|
||
|
|
||
|
|
||
|
// VERY similar to 9b8, just a different call.
|
||
|
0a3d 2688 LRS $AC0.M, @0xff88
|
||
|
0a3e 2489 LRS $AC0.L, @0xff89
|
||
|
0a3f 2e34 SRS @0x0034, $AC0.M
|
||
|
0a40 2c35 SRS @0x0035, $AC0.L
|
||
|
0a41 02bf 0a7f CALL 0x0a7f
|
||
|
0a43 00ff 0360 SR @0x0360, $AC1.M
|
||
|
0a45 2638 LRS $AC0.M, @0x0038
|
||
|
0a46 2439 LRS $AC0.L, @0x0039
|
||
|
0a47 0f06 LRIS $AC1.M, #0x06
|
||
|
0a48 02bf 05ad CALL 0x05ad
|
||
|
0a4a 00df 0360 LR $AC1.M, @0x0360
|
||
|
0a4c 8100 CLR $AC0.M
|
||
|
0a4d 263a LRS $AC0.M, @0x003a
|
||
|
0a4e b100 TST $AC0.M
|
||
|
0a4f 0294 0a5e JNE 0x0a5e
|
||
|
0a51 263b LRS $AC0.M, @0x003b
|
||
|
0a52 5c00 SUB $AC0.M, $AC1.M
|
||
|
0a53 0290 0a5e JX0 0x0a5e
|
||
|
0a55 223b LRS $AX0.H, @0x003b
|
||
|
0a56 02bf 0a91 CALL 0x0a91
|
||
|
0a58 5500 SUBR $AC1.M, $AX0.H
|
||
|
0a59 0a01 LRIS $AX0.H, #0x01
|
||
|
0a5a 00fa 0405 SR @0x0405, $AX0.H
|
||
|
0a5c 029f 0a30 JMP 0x0a30
|
||
|
|
||
|
|
||
|
// Identical to 9d9 except an extra ADDAXL.
|
||
|
0a5e 1f5f MRR $AX0.H, $AC1.M
|
||
|
0a5f 02bf 0a91 CALL 0x0a91
|
||
|
0a61 00fa 0362 SR @0x0362, $AX0.H
|
||
|
0a63 8100 CLR $AC0.M
|
||
|
0a64 263a LRS $AC0.M, @0x003a
|
||
|
0a65 243b LRS $AC0.L, @0x003b
|
||
|
0a66 1570 LSR $ACC1, #0x30
|
||
|
0a67 0a01 LRIS $AX0.H, #0x01
|
||
|
0a68 0081 0405 LRI $R01, #0x0405
|
||
|
0a6a 5c00 SUB $AC0.M, $AC1.M
|
||
|
0a6b b100 TST $AC0.M
|
||
|
0a6c 0275 IF_Q
|
||
|
0a6d 1a3a SRR @$R01, $AX0.H
|
||
|
0a6e 2e3a SRS @0x003a, $AC0.M
|
||
|
0a6f 2c3b SRS @0x003b, $AC0.L
|
||
|
0a70 2638 LRS $AC0.M, @0x0038
|
||
|
0a71 2439 LRS $AC0.L, @0x0039
|
||
|
0a72 00d8 0362 LR $AX0.L, @0x0362
|
||
|
0a74 7000 ADDAXL $AC0.M, $AX0.L
|
||
|
0a75 7000 ADDAXL $AC0.M, $AX0.L
|
||
|
0a76 2c39 SRS @0x0039, $AC0.L
|
||
|
0a77 2e38 SRS @0x0038, $AC0.M
|
||
|
0a78 0092 00ff LRI $CR, #0x00ff
|
||
|
0a7a 029f 02d0 JMP 0x02d0
|
||
|
|
||
|
|
||
|
|
||
|
0a7c 8100 CLR $AC0.M
|
||
|
0a7d 2e34 SRS @0x0034, $AC0.M
|
||
|
0a7e 2e35 SRS @0x0035, $AC0.M
|
||
|
0a7f 2334 LRS $AX1.H, @0x0034
|
||
|
0a80 2135 LRS $AX1.L, @0x0035
|
||
|
0a81 268a LRS $AC0.M, @0xff8a
|
||
|
0a82 248b LRS $AC0.L, @0xff8b
|
||
|
0a83 5a00 SUBAX $AC0.M, $AX1.L
|
||
|
0a84 2e3a SRS @0x003a, $AC0.M
|
||
|
0a85 2c3b SRS @0x003b, $AC0.L
|
||
|
0a86 2634 LRS $AC0.M, @0x0034
|
||
|
0a87 2435 LRS $AC0.L, @0x0035
|
||
|
0a88 1401 LSL $ACC0, #0x01
|
||
|
0a89 238c LRS $AX1.H, @0xff8c
|
||
|
0a8a 218d LRS $AX1.L, @0xff8d
|
||
|
0a8b 4a00 ADDAX $AC0.M, $AX1.L
|
||
|
0a8c 2e38 SRS @0x0038, $AC0.M
|
||
|
0a8d 2c39 SRS @0x0039, $AC0.L
|
||
|
0a8e 8100 CLR $AC0.M
|
||
|
0a8f 2e05 SRS @0x0005, $AC0.M
|
||
|
0a90 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
0a91 0080 ffd3 LRI $R00, #0xffd3
|
||
|
0a93 0084 0000 LRI $R04, #0x0000
|
||
|
0a95 007a 0a98 BLOOP $AX0.H, 0x0a98
|
||
|
0a97 199e LRRN $AC0.M, @$R00
|
||
|
0a98 1b7e SRRI @$R03, $AC0.M
|
||
|
0a99 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0a9a 8900 CLR $AC1.M
|
||
|
0a9b 0f50 LRIS $AC1.M, #0x50
|
||
|
0a9c 0083 0520 LRI $R03, #0x0520
|
||
|
0a9e 02bf 0ab3 CALL 0x0ab3
|
||
|
0aa0 029f 02d8 JMP 0x02d8
|
||
|
|
||
|
|
||
|
|
||
|
0aa2 00d8 0402 LR $AX0.L, @0x0402
|
||
|
0aa4 8100 CLR $AC0.M
|
||
|
0aa5 8900 CLR $AC1.M
|
||
|
0aa6 00dc 0430 LR $AC0.L, @0x0430
|
||
|
0aa8 0a50 LRIS $AX0.H, #0x50
|
||
|
0aa9 9000 MUL $AX0.L, $AX0.H
|
||
|
0aaa 9400 MULAC $AX0.L, $AX0.H, $AC0.M
|
||
|
0aab 1404 LSL $ACC0, #0x04
|
||
|
0aac 1ffe MRR $AC1.M, $AC0.M
|
||
|
0aad 0083 0580 LRI $R03, #0x0580
|
||
|
0aaf 02bf 0ab3 CALL 0x0ab3
|
||
|
0ab1 029f 02d0 JMP 0x02d0
|
||
|
|
||
|
|
||
|
|
||
|
0ab3 0092 0004 LRI $CR, #0x0004
|
||
|
0ab5 8100 CLR $AC0.M
|
||
|
0ab6 263a LRS $AC0.M, @0x003a
|
||
|
0ab7 243b LRS $AC0.L, @0x003b
|
||
|
0ab8 1f1f MRR $AX0.L, $AC1.M
|
||
|
0ab9 0a00 LRIS $AX0.H, #0x00
|
||
|
0aba 5800 SUBAX $AC0.M, $AX0.L
|
||
|
0abb 0292 0ad1 JX2 0x0ad1
|
||
|
0abd 8900 CLR $AC1.M
|
||
|
0abe 00c0 043b LR $R00, @0x043b
|
||
|
0ac0 02bf 0af6 CALL 0x0af6
|
||
|
0ac2 8100 CLR $AC0.M
|
||
|
0ac3 1fd8 MRR $AC0.M, $AX0.L
|
||
|
0ac4 223b LRS $AX0.H, @0x003b
|
||
|
0ac5 5400 SUBR $AC0.M, $AX0.H
|
||
|
0ac6 0007 DAR $R03
|
||
|
0ac7 1979 LRRI $AX1.L, @$R03
|
||
|
0ac8 005e LOOP $AC0.M
|
||
|
0ac9 1b79 SRRI @$R03, $AX1.L
|
||
|
0aca 0f01 LRIS $AC1.M, #0x01
|
||
|
0acb 2f01 SRS @0x0001, $AC1.M
|
||
|
0acc 8900 CLR $AC1.M
|
||
|
0acd 2f3b SRS @0x003b, $AC1.M
|
||
|
0ace 0092 00ff LRI $CR, #0x00ff
|
||
|
0ad0 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0ad1 2e3a SRS @0x003a, $AC0.M
|
||
|
0ad2 2c3b SRS @0x003b, $AC0.L
|
||
|
0ad3 8100 CLR $AC0.M
|
||
|
0ad4 8900 CLR $AC1.M
|
||
|
0ad5 268a LRS $AC0.M, @0xff8a
|
||
|
0ad6 2734 LRS $AC1.M, @0x0034
|
||
|
0ad7 5c00 SUB $AC0.M, $AC1.M
|
||
|
0ad8 2e36 SRS @0x0036, $AC0.M
|
||
|
0ad9 5000 SUBR $AC0.M, $AX0.L
|
||
|
0ada 0290 0af0 JX0 0x0af0
|
||
|
0adc 00c0 0436 LR $R00, @0x0436
|
||
|
0ade 02bf 0af6 CALL 0x0af6
|
||
|
0ae0 8100 CLR $AC0.M
|
||
|
0ae1 1fd8 MRR $AC0.M, $AX0.L
|
||
|
0ae2 2236 LRS $AX0.H, @0x0036
|
||
|
0ae3 5400 SUBR $AC0.M, $AX0.H
|
||
|
0ae4 1c1e MRR $R00, $AC0.M
|
||
|
0ae5 8100 CLR $AC0.M
|
||
|
0ae6 2e34 SRS @0x0034, $AC0.M
|
||
|
0ae7 2688 LRS $AC0.M, @0xff88
|
||
|
0ae8 2489 LRS $AC0.L, @0xff89
|
||
|
0ae9 2e8c SRS @0xff8c, $AC0.M
|
||
|
0aea 2c8d SRS @0xff8d, $AC0.L
|
||
|
0aeb 02bf 0af6 CALL 0x0af6
|
||
|
0aed 0092 00ff LRI $CR, #0x00ff
|
||
|
0aef 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0af0 1c18 MRR $R00, $AX0.L
|
||
|
0af1 02bf 0af6 CALL 0x0af6
|
||
|
0af3 0092 00ff LRI $CR, #0x00ff
|
||
|
0af5 02df RET
|
||
|
0af6 8100 CLR $AC0.M
|
||
|
0af7 1fc0 MRR $AC0.M, $R00
|
||
|
0af8 b100 TST $AC0.M
|
||
|
0af9 02d5 RETEQ
|
||
|
0afa 8900 CLR $AC1.M
|
||
|
0afb 2734 LRS $AC1.M, @0x0034
|
||
|
0afc 0340 0001 ANDI $ACC1, #0x0001
|
||
|
0afe 0b00 LRIS $AX1.H, #0x00
|
||
|
0aff 1f3f MRR $AX1.L, $AC1.M
|
||
|
0b00 268c LRS $AC0.M, @0xff8c
|
||
|
0b01 248d LRS $AC0.L, @0xff8d
|
||
|
0b02 8900 CLR $AC1.M
|
||
|
0b03 2534 LRS $AC1.L, @0x0034
|
||
|
0b04 1501 LSL $ACC1, #0x01
|
||
|
0b05 4c00 ADD $AC0.M, $AC1.M
|
||
|
0b06 5a00 SUBAX $AC0.M, $AX1.L
|
||
|
0b07 5a00 SUBAX $AC0.M, $AX1.L
|
||
|
0b08 1c20 MRR $R01, $R00
|
||
|
0b09 1fe0 MRR $AC1.M, $R00
|
||
|
0b0a 0502 ADDIS $ACC1, #0x02
|
||
|
0b0b 1c1f MRR $R00, $AC1.M
|
||
|
0b0c 009f 0b00 LRI $AC1.M, #0x0b00
|
||
|
0b0e 0092 00ff LRI $CR, #0x00ff
|
||
|
0b10 02bf 0525 CALL 0x0525 // RAMtoDMEM(DMEM=$AC1.M, AC0=MEMADDR, R00=Len)
|
||
|
0b12 0092 0004 LRI $CR, #0x0004
|
||
|
0b14 2734 LRS $AC1.M, @0x0034
|
||
|
0b15 1f61 MRR $AX1.H, $R01
|
||
|
0b16 4700 ADDR $AC1.M, $AX1.H
|
||
|
0b17 2f34 SRS @0x0034, $AC1.M
|
||
|
0b18 0080 0b00 LRI $R00, #0x0b00
|
||
|
0b1a 8900 CLR $AC1.M
|
||
|
0b1b 1ff9 MRR $AC1.M, $AX1.L
|
||
|
0b1c b900 TST $AC1.M
|
||
|
0b1d 0274 IF_E
|
||
|
0b1e 0008 IAR $R00
|
||
|
0b1f 8900 CLR $AC1.M
|
||
|
0b20 1fe1 MRR $AC1.M, $R01
|
||
|
0b21 191e LRRI $AC0.M, @$R00
|
||
|
0b22 0701 CMPIS $ACC1, #0x01
|
||
|
0b23 0293 0b2c JX3 0x0b2c
|
||
|
0b25 191a LRRI $AX0.H, @$R00
|
||
|
0b26 05fe ADDIS $ACC1, #0xfe
|
||
|
0b27 005f LOOP $AC1.M
|
||
|
0b28 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0b29 1b7e SRRI @$R03, $AC0.M
|
||
|
0b2a 1b7a SRRI @$R03, $AX0.H
|
||
|
0b2b 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0b2c 1b7e SRRI @$R03, $AC0.M
|
||
|
0b2d 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0b2e 8a00 M2
|
||
|
0b2f 0083 03e8 LRI $R03, #0x03e8
|
||
|
0b31 191e LRRI $AC0.M, @$R00
|
||
|
0b32 191a LRRI $AX0.H, @$R00
|
||
|
0b33 1006 LOOPI #0x06
|
||
|
0b34 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0b35 1b7e SRRI @$R03, $AC0.M
|
||
|
0b36 1b7a SRRI @$R03, $AX0.H
|
||
|
0b37 0080 03e8 LRI $R00, #0x03e8
|
||
|
0b39 0088 0007 LRI $R08, #0x0007
|
||
|
0b3b 1150 0b48 BLOOPI #0x50, 0x0b48
|
||
|
0b3d 1c61 MRR $R03, $R01
|
||
|
0b3e 84c3 CLRP.LD : $AX0.L, $AX1.L, @$R03
|
||
|
0b3f f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b40 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b41 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b42 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b43 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b44 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b45 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b46 f200 MADD $AX0.L, $AX0.H
|
||
|
0b47 fe00 MOVPZ $AC0.M
|
||
|
0b48 1b3e SRRI @$R01, $AC0.M
|
||
|
0b49 0088 ffff LRI $R08, #0xffff
|
||
|
0b4b 8b00 M0
|
||
|
0b4c 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0b4d 8a00 M2
|
||
|
0b4e 05fe ADDIS $ACC1, #0xfe
|
||
|
0b4f 0083 03e8 LRI $R03, #0x03e8
|
||
|
0b51 191e LRRI $AC0.M, @$R00
|
||
|
0b52 191a LRRI $AX0.H, @$R00
|
||
|
0b53 005f LOOP $AC1.M
|
||
|
0b54 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0b55 1b7e SRRI @$R03, $AC0.M
|
||
|
0b56 1b7a SRRI @$R03, $AX0.H
|
||
|
0b57 0080 03e8 LRI $R00, #0x03e8
|
||
|
0b59 0501 ADDIS $ACC1, #0x01
|
||
|
0b5a 1d1f MRR $R08, $AC1.M
|
||
|
0b5b 1150 0b63 BLOOPI #0x50, 0x0b63
|
||
|
0b5d 1c61 MRR $R03, $R01
|
||
|
0b5e 84c3 CLRP.LD : $AX0.L, $AX1.L, @$R03
|
||
|
0b5f 005f LOOP $AC1.M
|
||
|
0b60 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0b61 f200 MADD $AX0.L, $AX0.H
|
||
|
0b62 fe00 MOVPZ $AC0.M
|
||
|
0b63 1b3e SRRI @$R01, $AC0.M
|
||
|
0b64 0088 ffff LRI $R08, #0xffff
|
||
|
0b66 8b00 M0
|
||
|
0b67 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0b68 0083 03e8 LRI $R03, #0x03e8
|
||
|
0b6a 191e LRRI $AC0.M, @$R00
|
||
|
0b6b 191a LRRI $AX0.H, @$R00
|
||
|
0b6c 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0b6d 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0b6e 1b7e SRRI @$R03, $AC0.M
|
||
|
0b6f 1b7a SRRI @$R03, $AX0.H
|
||
|
0b70 0080 03e8 LRI $R00, #0x03e8
|
||
|
0b72 0088 0003 LRI $R08, #0x0003
|
||
|
0b74 0085 0000 LRI $R05, #0x0000
|
||
|
0b76 0087 0000 LRI $R07, #0x0000
|
||
|
0b78 1fc2 MRR $AC0.M, $R02
|
||
|
0b79 195b LRRI $AX1.H, @$R02
|
||
|
0b7a 1959 LRRI $AX1.L, @$R02
|
||
|
0b7b 195f LRRI $AC1.M, @$R02
|
||
|
0b7c 195a LRRI $AX0.H, @$R02
|
||
|
0b7d 1c5e MRR $R02, $AC0.M
|
||
|
0b7e 1fda MRR $AC0.M, $AX0.H
|
||
|
0b7f 1c61 MRR $R03, $R01
|
||
|
0b80 8a00 M2
|
||
|
0b81 8f00 S16
|
||
|
0b82 191a LRRI $AX0.H, @$R00
|
||
|
0b83 b850 MULX.L $AX0.H, $AX1.H : $AX0.H, @$R00
|
||
|
0b84 e250 MADDX.L $AX0.H, $AX1.L : $AX0.H, @$R00
|
||
|
0b85 ea50 MADDC.L $AC1.M, $AX1.L : $AX0.H, @$R00
|
||
|
0b86 e8e8 MADDC.LDXM $AC0.M, $AX1.L : $AX0.L, $AX0.H, @$R01
|
||
|
0b87 b650 MULXMV.L $AX0.H, $AX1.L, $AC0.M : $AX0.H, @$R00
|
||
|
0b88 1127 0b93 BLOOPI #0x27, 0x0b93
|
||
|
0b8a e3a8 MADDX.LSM $AX0.H, $AX1.H : $AX0.H, $AC0.M
|
||
|
0b8b 197e LRRI $AC0.M, @$R03
|
||
|
0b8c e850 MADDC.L $AC0.M, $AX1.L : $AX0.H, @$R00
|
||
|
0b8d eaf8 MADDC.LDXM $AC1.M, $AX1.L : $AX1.L, $AX1.H, @$R01
|
||
|
0b8e bf50 MULXMV.L $AX0.H, $AX1.H, $AC1.M : $AX0.H, @$R00
|
||
|
0b8f e2a9 MADDX.LSM $AX0.H, $AX1.L : $AX0.H, $AC1.M
|
||
|
0b90 197f LRRI $AC1.M, @$R03
|
||
|
0b91 ea50 MADDC.L $AC1.M, $AX1.L : $AX0.H, @$R00
|
||
|
0b92 e8e8 MADDC.LDXM $AC0.M, $AX1.L : $AX0.L, $AX0.H, @$R01
|
||
|
0b93 b650 MULXMV.L $AX0.H, $AX1.L, $AC0.M : $AX0.H, @$R00
|
||
|
0b94 e3a8 MADDX.LSM $AX0.H, $AX1.H : $AX0.H, $AC0.M
|
||
|
0b95 197e LRRI $AC0.M, @$R03
|
||
|
0b96 e850 MADDC.L $AC0.M, $AX1.L : $AX0.H, @$R00
|
||
|
0b97 eaf8 MADDC.LDXM $AC1.M, $AX1.L : $AX1.L, $AX1.H, @$R01
|
||
|
0b98 bf00 MULXMV $AX0.H, $AX1.H, $AC1.M
|
||
|
0b99 1bff SRRN @$R03, $AC1.M
|
||
|
0b9a 197f LRRI $AC1.M, @$R03
|
||
|
0b9b 8e00 S40
|
||
|
0b9c 8b00 M0
|
||
|
0b9d 0088 ffff LRI $R08, #0xffff
|
||
|
0b9f 1b5b SRRI @$R02, $AX1.H
|
||
|
0ba0 1b59 SRRI @$R02, $AX1.L
|
||
|
0ba1 1b5f SRRI @$R02, $AC1.M
|
||
|
0ba2 1b5e SRRI @$R02, $AC0.M
|
||
|
0ba3 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0ba4 0083 03e8 LRI $R03, #0x03e8
|
||
|
0ba6 191e LRRI $AC0.M, @$R00
|
||
|
0ba7 191a LRRI $AX0.H, @$R00
|
||
|
0ba8 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0ba9 64a0 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC0.M
|
||
|
0baa 1b7e SRRI @$R03, $AC0.M
|
||
|
0bab 1b7a SRRI @$R03, $AX0.H
|
||
|
0bac 0080 03e8 LRI $R00, #0x03e8
|
||
|
0bae 0088 0003 LRI $R08, #0x0003
|
||
|
0bb0 0085 0000 LRI $R05, #0x0000
|
||
|
0bb2 0087 0000 LRI $R07, #0x0000
|
||
|
0bb4 1fc2 MRR $AC0.M, $R02
|
||
|
0bb5 195b LRRI $AX1.H, @$R02
|
||
|
0bb6 1959 LRRI $AX1.L, @$R02
|
||
|
0bb7 195f LRRI $AC1.M, @$R02
|
||
|
0bb8 195a LRRI $AX0.H, @$R02
|
||
|
0bb9 1c5e MRR $R02, $AC0.M
|
||
|
0bba 1fda MRR $AC0.M, $AX0.H
|
||
|
0bbb 1c61 MRR $R03, $R01
|
||
|
0bbc 8a00 M2
|
||
|
0bbd 8f00 S16
|
||
|
0bbe 191a LRRI $AX0.H, @$R00
|
||
|
0bbf b800 MULX $AX0.H, $AX1.H
|
||
|
0bc0 e350 MADDX.L $AX0.H, $AX1.H : $AX0.H, @$R00
|
||
|
0bc1 e250 MADDX.L $AX0.H, $AX1.L : $AX0.H, @$R00
|
||
|
0bc2 ea00 MADDC $AC1.M, $AX1.L
|
||
|
0bc3 ea50 MADDC.L $AC1.M, $AX1.L : $AX0.H, @$R00
|
||
|
0bc4 e877 MADDC.LN $AC0.M, $AX1.L : $AC0.M, @$R03
|
||
|
0bc5 ece8 MSUBC.LDXM $AC0.M, $AX1.L : $AX0.L, $AX0.H, @$R01
|
||
|
0bc6 b200 MULXMVZ $AX0.H, $AX1.L, $AC0.M
|
||
|
0bc7 1127 0bd8 BLOOPI #0x27, 0x0bd8
|
||
|
0bc9 e250 MADDX.L $AX0.H, $AX1.L : $AX0.H, @$R00
|
||
|
0bca e3a8 MADDX.LSM $AX0.H, $AX1.H : $AX0.H, $AC0.M
|
||
|
0bcb 197e LRRI $AC0.M, @$R03
|
||
|
0bcc e800 MADDC $AC0.M, $AX1.L
|
||
|
0bcd e850 MADDC.L $AC0.M, $AX1.L : $AX0.H, @$R00
|
||
|
0bce ea7f MADDC.LN $AC1.M, $AX1.L : $AC1.M, @$R03
|
||
|
0bcf eef8 MSUBC.LDXM $AC1.M, $AX1.L : $AX1.L, $AX1.H, @$R01
|
||
|
0bd0 bb00 MULXMVZ $AX0.H, $AX1.H, $AC1.M
|
||
|
0bd1 e350 MADDX.L $AX0.H, $AX1.H : $AX0.H, @$R00
|
||
|
0bd2 e2a9 MADDX.LSM $AX0.H, $AX1.L : $AX0.H, $AC1.M
|
||
|
0bd3 197f LRRI $AC1.M, @$R03
|
||
|
0bd4 ea00 MADDC $AC1.M, $AX1.L
|
||
|
0bd5 ea50 MADDC.L $AC1.M, $AX1.L : $AX0.H, @$R00
|
||
|
0bd6 e877 MADDC.LN $AC0.M, $AX1.L : $AC0.M, @$R03
|
||
|
0bd7 ece8 MSUBC.LDXM $AC0.M, $AX1.L : $AX0.L, $AX0.H, @$R01
|
||
|
0bd8 b200 MULXMVZ $AX0.H, $AX1.L, $AC0.M
|
||
|
0bd9 e250 MADDX.L $AX0.H, $AX1.L : $AX0.H, @$R00
|
||
|
0bda e3a8 MADDX.LSM $AX0.H, $AX1.H : $AX0.H, $AC0.M
|
||
|
0bdb 197e LRRI $AC0.M, @$R03
|
||
|
0bdc e800 MADDC $AC0.M, $AX1.L
|
||
|
0bdd e850 MADDC.L $AC0.M, $AX1.L : $AX0.H, @$R00
|
||
|
0bde ea7f MADDC.LN $AC1.M, $AX1.L : $AC1.M, @$R03
|
||
|
0bdf eef8 MSUBC.LDXM $AC1.M, $AX1.L : $AX1.L, $AX1.H, @$R01
|
||
|
0be0 bb00 MULXMVZ $AX0.H, $AX1.H, $AC1.M
|
||
|
0be1 1bff SRRN @$R03, $AC1.M
|
||
|
0be2 197f LRRI $AC1.M, @$R03
|
||
|
0be3 8e00 S40
|
||
|
0be4 8b00 M0
|
||
|
0be5 0088 ffff LRI $R08, #0xffff
|
||
|
0be7 1b5b SRRI @$R02, $AX1.H
|
||
|
0be8 1b59 SRRI @$R02, $AX1.L
|
||
|
0be9 1b5f SRRI @$R02, $AC1.M
|
||
|
0bea 1b5e SRRI @$R02, $AC0.M
|
||
|
0beb 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0bec 0eff LRIS $AC0.M, #0xff
|
||
|
0bed 00fe 03f2 SR @0x03f2, $AC0.M
|
||
|
0bef 8100 CLR $AC0.M
|
||
|
0bf0 00fe 03f0 SR @0x03f0, $AC0.M
|
||
|
0bf2 00fe 03f6 SR @0x03f6, $AC0.M
|
||
|
0bf4 009e 0100 LRI $AC0.M, #0x0100
|
||
|
0bf6 00fe 03f7 SR @0x03f7, $AC0.M
|
||
|
0bf8 00da 03f7 LR $AX0.H, @0x03f7
|
||
|
0bfa 009e 8000 LRI $AC0.M, #0x8000
|
||
|
0bfc 5400 SUBR $AC0.M, $AX0.H
|
||
|
0bfd 00fe 03f5 SR @0x03f5, $AC0.M
|
||
|
0bff 0e30 LRIS $AC0.M, #0x30
|
||
|
0c00 00fe 03f3 SR @0x03f3, $AC0.M
|
||
|
0c02 0e10 LRIS $AC0.M, #0x10
|
||
|
0c03 00fe 03f4 SR @0x03f4, $AC0.M
|
||
|
0c05 009e 0096 LRI $AC0.M, #0x0096
|
||
|
0c07 00fe 03f1 SR @0x03f1, $AC0.M
|
||
|
0c09 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0c0a 0080 0a00 LRI $R00, #0x0a00
|
||
|
0c0c 8100 CLR $AC0.M
|
||
|
0c0d 00de 03f0 LR $AC0.M, @0x03f0
|
||
|
0c0f 8900 CLR $AC1.M
|
||
|
0c10 b100 TST $AC0.M
|
||
|
0c11 0275 IF_Q
|
||
|
0c12 0550 ADDIS $ACC1, #0x50
|
||
|
0c13 00ff 03f0 SR @0x03f0, $AC1.M
|
||
|
0c15 0200 0a60 ADDI $ACC0, #0x0a60
|
||
|
0c17 1c7e MRR $R03, $AC0.M
|
||
|
0c18 0f4e LRIS $AC1.M, #0x4e
|
||
|
0c19 02bf 00da CALL 0x00da // CopyMemory(LEN=$AC1.M, *R00=SRC, *R03=DEST)
|
||
|
0c1b 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0c1c 00de 03f1 LR $AC0.M, @0x03f1
|
||
|
0c1e 0200 0a60 ADDI $ACC0, #0x0a60
|
||
|
0c20 1c7e MRR $R03, $AC0.M
|
||
|
0c21 8100 CLR $AC0.M
|
||
|
0c22 8900 CLR $AC1.M
|
||
|
0c23 009f 00a0 LRI $AC1.M, #0x00a0
|
||
|
0c25 00de 03f1 LR $AC0.M, @0x03f1
|
||
|
0c27 5d00 SUB $AC1.M, $AC0.M
|
||
|
0c28 0e50 LRIS $AC0.M, #0x50
|
||
|
0c29 0750 CMPIS $ACC1, #0x50
|
||
|
0c2a 0270 IF_0
|
||
|
0c2b 5d00 SUB $AC1.M, $AC0.M
|
||
|
0c2c 00da 03f2 LR $AX0.H, @0x03f2
|
||
|
0c2e 8600 TSTAXH $AX0.H
|
||
|
0c2f 0290 0c4d JX0 0x0c4d
|
||
|
0c31 00de 03f3 LR $AC0.M, @0x03f3
|
||
|
0c33 5c00 SUB $AC0.M, $AC1.M
|
||
|
0c34 0293 0c38 JX3 0x0c38
|
||
|
0c36 029f 0c52 JMP 0x0c52
|
||
|
0c38 00db 03f7 LR $AX1.H, @0x03f7
|
||
|
0c3a 009e 8000 LRI $AC0.M, #0x8000
|
||
|
0c3c 4600 ADDR $AC0.M, $AX1.H
|
||
|
0c3d 029f 0c44 JMP 0x0c44
|
||
|
0c3f 00db 03f7 LR $AX1.H, @0x03f7
|
||
|
0c41 009e 8000 LRI $AC0.M, #0x8000
|
||
|
0c43 5600 SUBR $AC0.M, $AX1.H
|
||
|
0c44 00fe 03f5 SR @0x03f5, $AC0.M
|
||
|
0c46 1fda MRR $AC0.M, $AX0.H
|
||
|
0c47 7c00 NEG $AC0.M
|
||
|
0c48 1f5e MRR $AX0.H, $AC0.M
|
||
|
0c49 00fe 03f2 SR @0x03f2, $AC0.M
|
||
|
0c4b 029f 0c52 JMP 0x0c52
|
||
|
0c4d 00de 03f4 LR $AC0.M, @0x03f4
|
||
|
0c4f 5d00 SUB $AC1.M, $AC0.M
|
||
|
0c50 0293 0c3f JX3 0x0c3f
|
||
|
0c52 8900 CLR $AC1.M
|
||
|
0c53 00dd 03f5 LR $AC1.L, @0x03f5
|
||
|
0c55 1501 LSL $ACC1, #0x01
|
||
|
0c56 8100 CLR $AC0.M
|
||
|
0c57 00dc 03f6 LR $AC0.L, @0x03f6
|
||
|
0c59 008b 009f LRI $R11, #0x009f
|
||
|
0c5b 0080 0a00 LRI $R00, #0x0a00
|
||
|
0c5d 0900 LRIS $AX1.L, #0x00
|
||
|
0c5e 1150 0c65 BLOOPI #0x50, 0x0c65
|
||
|
0c60 1878 LRR $AX0.L, @$R03
|
||
|
0c61 4c00 ADD $AC0.M, $AC1.M
|
||
|
0c62 1cfe MRR $R07, $AC0.M
|
||
|
0c63 001f CW 0x001f ; *** UNKNOWN OPCODE ***
|
||
|
0c64 1fd9 MRR $AC0.M, $AX1.L
|
||
|
0c65 1b18 SRRI @$R00, $AX0.L
|
||
|
0c66 009f 0a60 LRI $AC1.M, #0x0a60
|
||
|
0c68 1fc3 MRR $AC0.M, $R03
|
||
|
0c69 5c00 SUB $AC0.M, $AC1.M
|
||
|
0c6a 00fe 03f1 SR @0x03f1, $AC0.M
|
||
|
0c6c 00fc 03f6 SR @0x03f6, $AC0.L
|
||
|
0c6e 008b ffff LRI $R11, #0xffff
|
||
|
0c70 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0c71 0f50 LRIS $AC1.M, #0x50
|
||
|
0c72 0080 0a00 LRI $R00, #0x0a00
|
||
|
0c74 0083 0d60 LRI $R03, #0x0d60
|
||
|
0c76 0098 3fff LRI $AX0.L, #0x3fff
|
||
|
0c78 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
0c7a 0f50 LRIS $AC1.M, #0x50
|
||
|
0c7b 0080 0a00 LRI $R00, #0x0a00
|
||
|
0c7d 0083 0d00 LRI $R03, #0x0d00
|
||
|
0c7f 0098 3fff LRI $AX0.L, #0x3fff
|
||
|
0c81 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
0c83 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0c84 8a00 M2
|
||
|
0c85 8f00 S16
|
||
|
0c86 8100 CLR $AC0.M
|
||
|
0c87 00de 0404 LR $AC0.M, @0x0404
|
||
|
0c89 b100 TST $AC0.M
|
||
|
0c8a 0295 0c91 JEQ 0x0c91
|
||
|
0c8c 8100 CLR $AC0.M
|
||
|
0c8d 00fe 0478 SR @0x0478, $AC0.M
|
||
|
0c8f 00fe 0479 SR @0x0479, $AC0.M
|
||
|
0c91 00df 0479 LR $AC1.M, @0x0479
|
||
|
0c93 00db 0478 LR $AX1.H, @0x0478
|
||
|
0c95 0900 LRIS $AX1.L, #0x00
|
||
|
0c96 0084 0000 LRI $R04, #0x0000
|
||
|
0c98 1150 0ca1 BLOOPI #0x50, 0x0ca1
|
||
|
0c9a 199e LRRN $AC0.M, @$R00
|
||
|
0c9b 5c7c SUB.LN $AC0.M, $AC1.M : $AC1.M, @$R00
|
||
|
0c9c c000 MULC $AX0.H, $AC0.M
|
||
|
0c9d 6e00 MOVP $AC0.M
|
||
|
0c9e 1488 ASL $ACC0, #0x08
|
||
|
0c9f 4a00 ADDAX $AC0.M, $AX1.L
|
||
|
0ca0 1b1e SRRI @$R00, $AC0.M
|
||
|
0ca1 1f7e MRR $AX1.H, $AC0.M
|
||
|
0ca2 00fb 0478 SR @0x0478, $AX1.H
|
||
|
0ca4 00ff 0479 SR @0x0479, $AC1.M
|
||
|
0ca6 8b00 M0
|
||
|
0ca7 8e00 S40
|
||
|
0ca8 02df RET
|
||
|
|
||
|
|
||
|
0ca9 b900 TST $AC1.M
|
||
|
0caa 0294 0caf JNE 0x0caf
|
||
|
0cac 6800 MOVAX $AC0.M, $AX0.L
|
||
|
0cad b100 TST $AC0.M
|
||
|
0cae 02d5 RETEQ
|
||
|
//...
|
||
|
0caf 1c23 MRR $R01, $R03
|
||
|
0cb0 197e LRRI $AC0.M, @$R03
|
||
|
0cb1 191b LRRI $AX1.H, @$R00
|
||
|
0cb2 d858 MULC.L $AX1.H, $AC1.M : $AX1.H, @$R00
|
||
|
0cb3 1120 0cb9 BLOOPI #0x20, 0x0cb9
|
||
|
0cb5 dcd3 MULCAC.LD $AX1.H, $AC1.M, $AC0.M : $AX0.L, $AX1.H, @$R03
|
||
|
0cb6 6231 MOVR.S $AC0.M, $AX1.L : @$R01, $AC0.M
|
||
|
0cb7 dcd3 MULCAC.LD $AX1.H, $AC1.M, $AC0.M : $AX0.L, $AX1.H, @$R03
|
||
|
0cb8 6231 MOVR.S $AC0.M, $AX1.L : @$R01, $AC0.M
|
||
|
0cb9 4900 ADDAX $AC1.M, $AX0.L
|
||
|
0cba 1108 0cbf BLOOPI #0x08, 0x0cbf
|
||
|
0cbc dcd3 MULCAC.LD $AX1.H, $AC1.M, $AC0.M : $AX0.L, $AX1.H, @$R03
|
||
|
0cbd 6231 MOVR.S $AC0.M, $AX1.L : @$R01, $AC0.M
|
||
|
0cbe dcd3 MULCAC.LD $AX1.H, $AC1.M, $AC0.M : $AX0.L, $AX1.H, @$R03
|
||
|
0cbf 6231 MOVR.S $AC0.M, $AX1.L : @$R01, $AC0.M
|
||
|
0cc0 02df RET
|
||
|
|
||
|
|
||
|
// Yet another multiply loop. bufsize = 0x28
|
||
|
0cc1 8f00 S16
|
||
|
0cc2 8d00 SET15
|
||
|
0cc3 1c03 MRR $R00, $R03
|
||
|
0cc4 00d9 038e LR $AX1.L, @0x038e
|
||
|
0cc6 0b04 LRIS $AX1.H, #0x04
|
||
|
0cc7 197a LRRI $AX0.H, @$R03
|
||
|
0cc8 b053 MULX.L $AX0.H, $AX1.L : $AX0.H, @$R03
|
||
|
0cc9 b600 MULXMV $AX0.H, $AX1.L, $AC0.M
|
||
|
0cca 1128 0ccf BLOOPI #0x28, 0x0ccf
|
||
|
0ccc 3ad3 ORR.LD $AC0.M, $AX1.H : $AX0.L, $AX1.H, @$R03
|
||
|
0ccd b630 MULXMV.S $AX0.H, $AX1.L, $AC0.M : @$R00, $AC0.M
|
||
|
0cce 3ad3 ORR.LD $AC0.M, $AX1.H : $AX0.L, $AX1.H, @$R03
|
||
|
0ccf b630 MULXMV.S $AX0.H, $AX1.L, $AC0.M : @$R00, $AC0.M
|
||
|
0cd0 8c00 CLR15
|
||
|
0cd1 8e00 S40
|
||
|
0cd2 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
0cd3 00da 0485 LR $AX0.H, @0x0485
|
||
|
0cd5 8600 TSTAXH $AX0.H
|
||
|
0cd6 0295 0ce5 JEQ 0x0ce5
|
||
|
0cd8 8100 CLR $AC0.M
|
||
|
0cd9 00de 042a LR $AC0.M, @0x042a
|
||
|
0cdb 147f LSR $ACC0, #0x3f
|
||
|
0cdc 00fe 042b SR @0x042b, $AC0.M
|
||
|
0cde b100 TST $AC0.M
|
||
|
0cdf 0294 0ce5 JNE 0x0ce5
|
||
|
0ce1 009a 0001 LRI $AX0.H, #0x0001
|
||
|
0ce3 00fa 0401 SR @0x0401, $AX0.H
|
||
|
0ce5 8f00 S16
|
||
|
0ce6 8100 CLR $AC0.M
|
||
|
0ce7 00de 0428 LR $AC0.M, @0x0428
|
||
|
0ce9 1478 LSR $ACC0, #0x38
|
||
|
0cea 00df 0428 LR $AC1.M, @0x0428
|
||
|
0cec 0340 007f ANDI $ACC1, #0x007f
|
||
|
0cee 1f1e MRR $AX0.L, $AC0.M
|
||
|
0cef 1f5f MRR $AX0.H, $AC1.M
|
||
|
0cf0 0220 007f XORI $ACC0, #0x007f
|
||
|
0cf2 1f3e MRR $AX1.L, $AC0.M
|
||
|
0cf3 0320 007f XORI $ACC1, #0x007f
|
||
|
0cf5 1f7f MRR $AX1.H, $AC1.M
|
||
|
0cf6 8100 CLR $AC0.M
|
||
|
0cf7 8900 CLR $AC1.M
|
||
|
0cf8 009f 0200 LRI $AC1.M, #0x0200
|
||
|
0cfa 1fd8 MRR $AC0.M, $AX0.L
|
||
|
0cfb 4c00 ADD $AC0.M, $AC1.M
|
||
|
0cfc 1c1e MRR $R00, $AC0.M
|
||
|
0cfd 1818 LRR $AX0.L, @$R00
|
||
|
0cfe 1fda MRR $AC0.M, $AX0.H
|
||
|
0cff 4c00 ADD $AC0.M, $AC1.M
|
||
|
0d00 1c1e MRR $R00, $AC0.M
|
||
|
0d01 181a LRR $AX0.H, @$R00
|
||
|
0d02 1fd9 MRR $AC0.M, $AX1.L
|
||
|
0d03 4c00 ADD $AC0.M, $AC1.M
|
||
|
0d04 1c1e MRR $R00, $AC0.M
|
||
|
0d05 1819 LRR $AX1.L, @$R00
|
||
|
0d06 1fdb MRR $AC0.M, $AX1.H
|
||
|
0d07 4c00 ADD $AC0.M, $AC1.M
|
||
|
0d08 1c1e MRR $R00, $AC0.M
|
||
|
0d09 181b LRR $AX1.H, @$R00
|
||
|
0d0a 0080 0b00 LRI $R00, #0x0b00
|
||
|
0d0c 9800 MUL $AX1.L, $AX1.H
|
||
|
0d0d ae00 MULXMV $AX0.L, $AX1.H, $AC0.M
|
||
|
0d0e b630 MULXMV.S $AX0.H, $AX1.L, $AC0.M : @$R00, $AC0.M
|
||
|
0d0f 9630 MULMV.S $AX0.L, $AX0.H, $AC0.M : @$R00, $AC0.M
|
||
|
0d10 6e30 MOVP.S $AC0.M : @$R00, $AC0.M
|
||
|
0d11 1b1e SRRI @$R00, $AC0.M
|
||
|
0d12 0080 0b00 LRI $R00, #0x0b00
|
||
|
0d14 0081 0b04 LRI $R01, #0x0b04
|
||
|
0d16 00da 042a LR $AX0.H, @0x042a
|
||
|
0d18 02bf 0d62 CALL 0x0d62
|
||
|
0d1a 0081 0b08 LRI $R01, #0x0b08
|
||
|
0d1c 0080 0b04 LRI $R00, #0x0b04
|
||
|
0d1e 00da 042a LR $AX0.H, @0x042a
|
||
|
0d20 00de 0429 LR $AC0.M, @0x0429
|
||
|
0d22 c000 MULC $AX0.H, $AC0.M
|
||
|
0d23 6e00 MOVP $AC0.M
|
||
|
0d24 1481 ASL $ACC0, #0x01
|
||
|
0d25 1f5e MRR $AX0.H, $AC0.M
|
||
|
0d26 02bf 0d62 CALL 0x0d62
|
||
|
0d28 0080 0b00 LRI $R00, #0x0b00
|
||
|
0d2a 0081 0b0c LRI $R01, #0x0b0c
|
||
|
0d2c 8100 CLR $AC0.M
|
||
|
0d2d 8900 CLR $AC1.M
|
||
|
0d2e 00de 042b LR $AC0.M, @0x042b
|
||
|
0d30 00df 042a LR $AC1.M, @0x042a
|
||
|
0d32 00fe 042a SR @0x042a, $AC0.M
|
||
|
0d34 5c00 SUB $AC0.M, $AC1.M
|
||
|
0d35 1f5e MRR $AX0.H, $AC0.M
|
||
|
0d36 02bf 0d6b CALL 0x0d6b
|
||
|
0d38 0080 0b0c LRI $R00, #0x0b0c
|
||
|
0d3a 0081 0b10 LRI $R01, #0x0b10
|
||
|
0d3c 00da 0429 LR $AX0.H, @0x0429
|
||
|
0d3e 02bf 0d62 CALL 0x0d62
|
||
|
0d40 0081 0b04 LRI $R01, #0x0b04
|
||
|
0d42 0082 0b0c LRI $R02, #0x0b0c
|
||
|
0d44 0083 0d77 LRI $R03, #0x0d77
|
||
|
0d46 1108 0d5f BLOOPI #0x08, 0x0d5f // 8 iterations, = data table size below
|
||
|
0d48 195f LRRI $AC1.M, @$R02
|
||
|
0d49 15fb ASR $ACC1, #0x7b
|
||
|
0d4a 1f1d MRR $AX0.L, $AC1.L
|
||
|
0d4b 1f5f MRR $AX0.H, $AC1.M
|
||
|
0d4c 193f LRRI $AC1.M, @$R01
|
||
|
0d4d 00e1 0b24 SR @0x0b24, $R01
|
||
|
0d4f 00e2 0b25 SR @0x0b25, $R02
|
||
|
0d51 021b ILRRI $AC0.M, @$R03 // Read from data table at 0d77, increment R03
|
||
|
0d52 00e3 0b26 SR @0x0b26, $R03
|
||
|
0d54 1c7e MRR $R03, $AC0.M
|
||
|
0d55 00c0 038f LR $R00, @0x038f
|
||
|
0d57 02bf 0ca9 CALL 0x0ca9
|
||
|
0d59 00c1 0b24 LR $R01, @0x0b24
|
||
|
0d5b 00c2 0b25 LR $R02, @0x0b25
|
||
|
0d5d 00c3 0b26 LR $R03, @0x0b26
|
||
|
0d5f 0000 NOP // BLOOPI end
|
||
|
0d60 8e00 S40
|
||
|
0d61 02df RET
|
||
|
|
||
|
|
||
|
// Compute something.... load @R00 store @R01
|
||
|
0d62 191f LRRI $AC1.M, @$R00
|
||
|
0d63 d078 MULC.L $AX0.H, $AC1.M : $AC1.M, @$R00
|
||
|
0d64 d678 MULCMV.L $AX0.H, $AC1.M, $AC0.M : $AC1.M, @$R00
|
||
|
0d65 d631 MULCMV.S $AX0.H, $AC1.M, $AC0.M : @$R01, $AC0.M
|
||
|
0d66 191f LRRI $AC1.M, @$R00
|
||
|
0d67 d631 MULCMV.S $AX0.H, $AC1.M, $AC0.M : @$R01, $AC0.M
|
||
|
0d68 6e31 MOVP.S $AC0.M : @$R01, $AC0.M
|
||
|
0d69 1b3e SRRI @$R01, $AC0.M
|
||
|
0d6a 02df RET
|
||
|
|
||
|
|
||
|
// Compute something... load @R00 store @R01
|
||
|
// Similar to 0d62 but different register usage.
|
||
|
// Surrounded with SET15/CLR15.
|
||
|
0d6b 8d00 SET15
|
||
|
0d6c 1f7e MRR $AX1.H, $AC0.M
|
||
|
0d6d 1918 LRRI $AX0.L, @$R00
|
||
|
0d6e a840 MULX.L $AX0.L, $AX1.H : $AX0.L, @$R00
|
||
|
0d6f ae40 MULXMV.L $AX0.L, $AX1.H, $AC0.M : $AX0.L, @$R00
|
||
|
0d70 ae31 MULXMV.S $AX0.L, $AX1.H, $AC0.M : @$R01, $AC0.M
|
||
|
0d71 1918 LRRI $AX0.L, @$R00
|
||
|
0d72 ae31 MULXMV.S $AX0.L, $AX1.H, $AC0.M : @$R01, $AC0.M
|
||
|
0d73 6e31 MOVP.S $AC0.M : @$R01, $AC0.M
|
||
|
0d74 1b3e SRRI @$R01, $AC0.M
|
||
|
0d75 8c00 CLR15
|
||
|
0d76 02df RET
|
||
|
|
||
|
|
||
|
// This would appear to be a data table.
|
||
|
0d77 0d00 LRIS $AC1.L, #0x00
|
||
|
0d78 0d60 LRIS $AC1.L, #0x60
|
||
|
0d79 0f40 LRIS $AC1.M, #0x40
|
||
|
0d7a 0ca0 LRIS $AC0.L, #0xa0
|
||
|
0d7b 0e80 LRIS $AC0.M, #0x80
|
||
|
0d7c 0ee0 LRIS $AC0.M, #0xe0
|
||
|
0d7d 0c00 LRIS $AC0.L, #0x00
|
||
|
0d7e 0c50 LRIS $AC0.L, #0x50
|
||
|
|
||
|
// Function starts here? 0x28 bufsize.
|
||
|
0d7f 00f9 0361 SR @0x0361, $AX1.L
|
||
|
0d81 1fc0 MRR $AC0.M, $R00
|
||
|
0d82 0200 fffc ADDI $ACC0, #0xfffc
|
||
|
0d84 1c1e MRR $R00, $AC0.M
|
||
|
0d85 1c5e MRR $R02, $AC0.M
|
||
|
0d86 0083 043c LRI $R03, #0x043c
|
||
|
0d88 197e LRRI $AC0.M, @$R03
|
||
|
0d89 197f LRRI $AC1.M, @$R03
|
||
|
0d8a 80a2 NX.SL : $AC0.M, $AX0.H
|
||
|
0d8b 64a3 MOVR.SL $AC0.M, $AX0.H : $AC1.M, $AX0.H
|
||
|
0d8c 6530 MOVR.S $AC1.M, $AX0.H : @$R00, $AC0.M
|
||
|
0d8d 1b1f SRRI @$R00, $AC1.M
|
||
|
0d8e 1c02 MRR $R00, $R02
|
||
|
0d8f 8100 CLR $AC0.M
|
||
|
0d90 00de 0402 LR $AC0.M, @0x0402
|
||
|
0d92 00fe 0362 SR @0x0362, $AC0.M
|
||
|
0d94 1474 LSR $ACC0, #0x34
|
||
|
0d95 1f7e MRR $AX1.H, $AC0.M
|
||
|
0d96 1f3c MRR $AX1.L, $AC0.L
|
||
|
0d97 8900 CLR $AC1.M
|
||
|
0d98 00dd 0430 LR $AC1.L, @0x0430
|
||
|
0d9a 1504 LSL $ACC1, #0x04
|
||
|
0d9b 0604 CMPIS $ACC0, #0x04
|
||
|
0d9c 0290 0df3 JX0 0x0df3
|
||
|
0d9e 1fdd MRR $AC0.M, $AC1.L
|
||
|
0d9f 0082 02b0 LRI $R02, #0x02b0
|
||
|
0da1 1050 LOOPI #0x50
|
||
|
0da2 4b2a ADDAX.S $AC1.M, $AX1.L : @$R02, $AC1.L
|
||
|
0da3 1fbe MRR $AC1.L, $AC0.M
|
||
|
0da4 00fe 0360 SR @0x0360, $AC0.M
|
||
|
0da6 8900 CLR $AC1.M
|
||
|
0da7 1fbe MRR $AC1.L, $AC0.M
|
||
|
0da8 0af8 LRIS $AX0.H, #0xf8
|
||
|
0da9 009b 00fc LRI $AX1.H, #0x00fc
|
||
|
0dab 00d8 0361 LR $AX0.L, @0x0361
|
||
|
0dad 0082 02b0 LRI $R02, #0x02b0
|
||
|
0daf 0083 02b0 LRI $R03, #0x02b0
|
||
|
0db1 195e LRRI $AC0.M, @$R02
|
||
|
0db2 3480 ANDR.LS $AC0.M, $AX0.H : $AX0.L, $AC0.M
|
||
|
0db3 1128 0db8 BLOOPI #0x28, 0x0db8
|
||
|
0db5 367a ANDR.L $AC0.M, $AX1.H : $AC1.M, @$R02
|
||
|
0db6 35b3 ANDR.SL $AC1.M, $AX0.H : $AC1.M, $AX1.H
|
||
|
0db7 3772 ANDR.L $AC1.M, $AX1.H : $AC0.M, @$R02
|
||
|
0db8 34bb ANDR.SLM $AC0.M, $AX0.H : $AC1.M, $AX1.H
|
||
|
0db9 8a00 M2
|
||
|
0dba 0082 02b0 LRI $R02, #0x02b0
|
||
|
0dbc 00dd 0430 LR $AC1.L, @0x0430
|
||
|
0dbe 1504 LSL $ACC1, #0x04
|
||
|
0dbf 1fe0 MRR $AC1.M, $R00
|
||
|
0dc0 8100 CLR $AC0.M
|
||
|
0dc1 00de 0362 LR $AC0.M, @0x0362
|
||
|
0dc3 1474 LSR $ACC0, #0x34
|
||
|
0dc4 1f7e MRR $AX1.H, $AC0.M
|
||
|
0dc5 1f3c MRR $AX1.L, $AC0.L
|
||
|
0dc6 8f00 S16
|
||
|
0dc7 1943 LRRI $R03, @$R02
|
||
|
0dc8 4bc3 ADDAX.LD $AC1.M, $AX1.L : $AX0.L, $AX1.L, @$R03
|
||
|
0dc9 90c3 MUL.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0dca f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0dcb f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0dcc f200 MADD $AX0.L, $AX0.H
|
||
|
0dcd fe00 MOVPZ $AC0.M
|
||
|
0dce 1c1f MRR $R00, $AC1.M
|
||
|
0dcf 1943 LRRI $R03, @$R02
|
||
|
0dd0 4bc3 ADDAX.LD $AC1.M, $AX1.L : $AX0.L, $AX1.L, @$R03
|
||
|
0dd1 90c3 MUL.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0dd2 114e 0dda BLOOPI #0x4e, 0x0dda
|
||
|
0dd4 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0dd5 f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0dd6 f231 MADD.S $AX0.L, $AX0.H : @$R01, $AC0.M
|
||
|
0dd7 1c1f MRR $R00, $AC1.M
|
||
|
0dd8 1943 LRRI $R03, @$R02
|
||
|
0dd9 4bc3 ADDAX.LD $AC1.M, $AX1.L : $AX0.L, $AX1.L, @$R03
|
||
|
0dda 92c3 MULMVZ.LD $AX0.L, $AX0.H, $AC0.M : $AX0.L, $AX1.L, @$R03
|
||
|
0ddb f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0ddc f2c3 MADD.LD $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$R03
|
||
|
0ddd f231 MADD.S $AX0.L, $AX0.H : @$R01, $AC0.M
|
||
|
0dde fe00 MOVPZ $AC0.M
|
||
|
0ddf 1b3e SRRI @$R01, $AC0.M
|
||
|
0de0 8b00 M0
|
||
|
0de1 8e00 S40
|
||
|
0de2 00fe 0433 SR @0x0433, $AC0.M
|
||
|
0de4 1c1f MRR $R00, $AC1.M
|
||
|
0de5 150c LSL $ACC1, #0x0c
|
||
|
0de6 0340 0fff ANDI $ACC1, #0x0fff
|
||
|
0de8 00ff 0430 SR @0x0430, $AC1.M
|
||
|
0dea 0083 043c LRI $R03, #0x043c
|
||
|
0dec 191e LRRI $AC0.M, @$R00
|
||
|
0ded 191f LRRI $AC1.M, @$R00
|
||
|
0dee 80a0 NX.LS : $AX0.H, $AC0.M
|
||
|
0def 64a1 MOVR.LS $AC0.M, $AX0.H : $AX0.H, $AC1.M
|
||
|
0df0 6533 MOVR.S $AC1.M, $AX0.H : @$R03, $AC0.M
|
||
|
0df1 1b7f SRRI @$R03, $AC1.M
|
||
|
0df2 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
// bufsize = 0x28
|
||
|
0df3 1fe0 MRR $AC1.M, $R00
|
||
|
0df4 1c1f MRR $R00, $AC1.M
|
||
|
0df5 1128 0dfc BLOOPI #0x28, 0x0dfc
|
||
|
0df7 4b70 ADDAX.L $AC1.M, $AX1.L : $AC0.M, @$R00
|
||
|
0df8 1b3e SRRI @$R01, $AC0.M
|
||
|
0df9 1c1f MRR $R00, $AC1.M
|
||
|
0dfa 4b70 ADDAX.L $AC1.M, $AX1.L : $AC0.M, @$R00
|
||
|
0dfb 1b3e SRRI @$R01, $AC0.M
|
||
|
0dfc 1c1f MRR $R00, $AC1.M
|
||
|
0dfd 029f 0de2 JMP 0x0de2
|
||
|
0dff 0083 0520 LRI $R03, #0x0520
|
||
|
0e01 00de 0433 LR $AC0.M, @0x0433
|
||
|
0e03 1050 LOOPI #0x50
|
||
|
0e04 1b7e SRRI @$R03, $AC0.M
|
||
|
0e05 029f 02d8 JMP 0x02d8
|
||
|
0e07 1c20 MRR $R01, $R00
|
||
|
0e08 185f LRR $AC1.M, @$R02
|
||
|
0e09 1f7f MRR $AX1.H, $AC1.M
|
||
|
0e0a 193a LRRI $AX0.H, @$R01
|
||
|
0e0b 6400 MOVR $AC0.M, $AX0.H
|
||
|
0e0c 0078 0e11 BLOOP $AX0.L, 0x0e11
|
||
|
0e0e 5659 SUBR.L $AC0.M, $AX1.H : $AX1.H, @$R01
|
||
|
0e0f 6730 MOVR.S $AC1.M, $AX1.H : @$R00, $AC0.M
|
||
|
0e10 5551 SUBR.L $AC1.M, $AX0.H : $AX0.H, @$R01
|
||
|
0e11 6438 MOVR.S $AC0.M, $AX0.H : @$R00, $AC1.M
|
||
|
0e12 1a5b SRR @$R02, $AX1.H
|
||
|
0e13 02df RET
|
||
|
|
||
|
|
||
|
|
||
|
// called by init code
|
||
|
{
|
||
|
a_04e8[0]=0x8240;
|
||
|
a_04e8[1]=0x7fff;
|
||
|
a_04e8[2]=0x7dbf;
|
||
|
a_04e8[3]=0x843f;
|
||
|
a_04f0[0]=0xb23b;
|
||
|
a_04f0[1]=0x7fff;
|
||
|
a_04f0[2]=0x4dc4;
|
||
|
a_04f0[3]=0xd808;
|
||
|
a_04ec[0]=a_04ec[1]=a_04ec[2]=a_04ec[3]=0;
|
||
|
a_04f4[0]=a_04f4[1]=a_04f4[2]=a_04f4[3]=0;
|
||
|
}
|
||
|
0e14 0098 8240 LRI $AX0.L, #0x8240
|
||
|
0e16 00f8 04e8 SR @0x04e8, $AX0.L
|
||
|
0e18 0098 7fff LRI $AX0.L, #0x7fff
|
||
|
0e1a 00f8 04e9 SR @0x04e9, $AX0.L
|
||
|
0e1c 0098 7dbf LRI $AX0.L, #0x7dbf
|
||
|
0e1e 00f8 04ea SR @0x04ea, $AX0.L
|
||
|
0e20 0098 843f LRI $AX0.L, #0x843f
|
||
|
0e22 00f8 04eb SR @0x04eb, $AX0.L
|
||
|
0e24 0098 b23b LRI $AX0.L, #0xb23b
|
||
|
0e26 00f8 04f0 SR @0x04f0, $AX0.L
|
||
|
0e28 0098 7fff LRI $AX0.L, #0x7fff
|
||
|
0e2a 00f8 04f1 SR @0x04f1, $AX0.L
|
||
|
0e2c 0098 4dc4 LRI $AX0.L, #0x4dc4
|
||
|
0e2e 00f8 04f2 SR @0x04f2, $AX0.L
|
||
|
0e30 0098 d808 LRI $AX0.L, #0xd808
|
||
|
0e32 00f8 04f3 SR @0x04f3, $AX0.L
|
||
|
0e34 0098 0000 LRI $AX0.L, #0x0000
|
||
|
0e36 0080 04ec LRI $R00, #0x04ec
|
||
|
0e38 1004 LOOPI #0x04
|
||
|
0e39 1b18 SRRI @$R00, $AX0.L
|
||
|
0e3a 0080 04f4 LRI $R00, #0x04f4
|
||
|
0e3c 1004 LOOPI #0x04
|
||
|
0e3d 1b18 SRRI @$R00, $AX0.L
|
||
|
0e3e 02df RET
|
||
|
|
||
|
|
||
|
// Main Stereo (or dolby) Mixer?
|
||
|
// Is the source sample at 0x0b00?
|
||
|
// 0x50 seems to be a buffer size. Strange one.
|
||
|
0e3f 0080 0f40 LRI $R00, #0x0f40
|
||
|
0e41 0083 0b00 LRI $R03, #0x0b00
|
||
|
0e43 8900 CLR $AC1.M
|
||
|
0e44 0f50 LRIS $AC1.M, #0x50
|
||
|
0e45 0098 6784 LRI $AX0.L, #0x6784
|
||
|
0e47 02bf 00fa CALL 0x00fa // multiply loop
|
||
|
0e49 0080 04e8 LRI $R00, #0x04e8
|
||
|
0e4b 0082 04ec LRI $R02, #0x04ec
|
||
|
0e4d 0081 0b00 LRI $R01, #0x0b00
|
||
|
0e4f 02bf 0ba4 CALL 0x0ba4 // complex multiply loop
|
||
|
0e51 8900 CLR $AC1.M
|
||
|
0e52 0f50 LRIS $AC1.M, #0x50
|
||
|
0e53 0080 0b00 LRI $R00, #0x0b00
|
||
|
0e55 0083 0d00 LRI $R03, #0x0d00
|
||
|
0e57 0098 7fff LRI $AX0.L, #0x7fff
|
||
|
0e59 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
0e5b 8900 CLR $AC1.M
|
||
|
0e5c 0f50 LRIS $AC1.M, #0x50
|
||
|
0e5d 0080 0b00 LRI $R00, #0x0b00
|
||
|
0e5f 0083 0d60 LRI $R03, #0x0d60
|
||
|
0e61 0098 b820 LRI $AX0.L, #0xb820
|
||
|
0e63 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
// Stereo mixer? (cont'd, other channel starts here?)
|
||
|
0e65 0080 0ca0 LRI $R00, #0x0ca0
|
||
|
0e67 0083 0b00 LRI $R03, #0x0b00
|
||
|
0e69 8900 CLR $AC1.M
|
||
|
0e6a 0f50 LRIS $AC1.M, #0x50
|
||
|
0e6b 0098 6784 LRI $AX0.L, #0x6784
|
||
|
0e6d 02bf 00fa CALL 0x00fa // multiply loop
|
||
|
0e6f 0080 04e8 LRI $R00, #0x04e8
|
||
|
0e71 0082 04f4 LRI $R02, #0x04f4
|
||
|
0e73 0081 0b00 LRI $R01, #0x0b00
|
||
|
0e75 02bf 0ba4 CALL 0x0ba4 // complex multiply loop
|
||
|
0e77 8900 CLR $AC1.M
|
||
|
0e78 0f50 LRIS $AC1.M, #0x50
|
||
|
0e79 0080 0b00 LRI $R00, #0x0b00
|
||
|
0e7b 0083 0d00 LRI $R03, #0x0d00
|
||
|
0e7d 0098 47e0 LRI $AX0.L, #0x47e0
|
||
|
0e7f 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
0e81 8900 CLR $AC1.M
|
||
|
0e82 0f50 LRIS $AC1.M, #0x50
|
||
|
0e83 0080 0b00 LRI $R00, #0x0b00
|
||
|
0e85 0083 0d60 LRI $R03, #0x0d60
|
||
|
0e87 0098 8001 LRI $AX0.L, #0x8001
|
||
|
0e89 02bf 00eb CALL 0x00eb // one of the multiply loops
|
||
|
0e8b 02df RET
|
||
|
0e8c 0000 NOP
|
||
|
0e8d 0000 NOP
|
||
|
0e8e 0000 NOP
|
||
|
0e8f 0000 NOP
|