// Memory map:
//  0x0C00: current AXList


// Voice PB structure:
//  the current PB is stored at 0x02D0
//  offsets and sizes are counted in words
//
//	Offset		Size	Desription
//	0x000		2		Address of the next PB
//	0x002		2		Address of this PB
//	0x004		1		Sample rate converter (0-2)
//	0x005		1		Coef select (0-2: 0x1000, 0x1200, 0x1400)
//	0x006		2		Selects entries in 4 tables (19 bits used)
//	0x008		1		Play/stop flag (1=play, 0=stop)
//	0x022		1		Initial time delay enable
//	0x023		2		Initial time delay data


 0000 0000      nop         
 0001 0000      nop         

// Exception jump table
 0002 029f 0f3c jmp         0x0f3c
 0004 029f 0f48 jmp         0x0f48
 0006 029f 0f4d jmp         0x0f4d
 0008 029f 0f5c jmp         0x0f5c
 000a 029f 0f61 jmp         0x0f61
 000c 029f 0f8d jmp         0x0f8d
 000e 029f 0f92 jmp         0x0f92

// Entry point
void 0010_Entry() {
 0010 1302      sbset       #0x02
 0011 1303      sbset       #0x03
 0012 1204      sbclr       #0x04
 0013 1305      sbset       #0x05
 0014 1306      sbset       #0x06
 0015 8e00      set16       
 0016 8c00      clr15       
 0017 8b00      m0          
 0018 0092 00ff lri         $CR, #0x00ff
 001a 009e 8000 lri         $AC0.M, #0x8000
 001c 00fe 0ce5 sr          @0x0ce5, $AC0.M
 001e 009e 8000 lri         $AC0.M, #0x8000
 0020 00fe 0ce6 sr          @0x0ce6, $AC0.M
 0022 00fe 0ce7 sr          @0x0ce7, $AC0.M
 0024 00fe 0ce8 sr          @0x0ce8, $AC0.M
 0026 8100      clr         $ACC0
 0027 00fe 0ce9 sr          @0x0ce9, $AC0.M
 0029 8900      clr         $ACC1
 002a 16fc dcd1 si          @DMBH, #0xdcd1
 002c 16fd 0000 si          @DMBL, #0x0000
 002e 16fb 0001 si          @DIRQ, #0x0001			// send a 0xDCD10000 and trigger an IRQ
 0030 26fc      lrs         $AC0.M, @DMBH
 0031 02a0 8000 andf        $AC0.M, #0x8000
 0033 029c 0030 jlnz        0x0030					// wait until the mail is received by CPU
 0035 029f 004c jmp         0x004c					// enter the main loop
}

void 0037_Unk_Restart() {
 0037 1302      sbset       #0x02
 0038 1303      sbset       #0x03
 0039 1204      sbclr       #0x04
 003a 1305      sbset       #0x05
 003b 1306      sbset       #0x06
 003c 8e00      set16       
 003d 8c00      clr15       
 003e 8b00      m0          
 003f 0092 00ff lri         $CR, #0x00ff
 0041 16fc dcd1 si          @DMBH, #0xdcd1
 0043 16fd 0001 si          @DMBL, #0x0001
 0045 16fb 0001 si          @DIRQ, #0x0001			// send a 0xDCD10001 and trigger an IRQ
 0047 26fc      lrs         $AC0.M, @DMBH
 0048 02a0 8000 andf        $AC0.M, #0x8000
 004a 029c 0047 jlnz        0x0047					// wait until the mail is received by CPU
 
// main loop
 004c 8e00      set16       
 004d 8100      clr         $ACC0
 004e 8900      clr         $ACC1
 004f 009f babe lri         $AC1.M, #0xbabe
 0051 26fe      lrs         $AC0.M, @CMBH
 0052 02c0 8000 andcf       $AC0.M, #0x8000
 0054 029c 0051 jlnz        0x0051					// wait until we get a new mail from CPU
 0056 8200      cmp         
 0057 0294 0051 jnz         0x0051					// discard it if it's not a 0xBABE---- (AXList begin)
 0059 23ff      lrs         $AX1.H, @CMBL			// AX1.H = low part of 0xBABE---- mail = length of list in bytes
 005a 8100      clr         $ACC0
 005b 26fe      lrs         $AC0.M, @CMBH
 005c 02c0 8000 andcf       $AC0.M, #0x8000
 005e 029c 005b jlnz        0x005b					// wait until the next mail
 0060 27ff      lrs         $AC1.M, @CMBL
 0061 0240 7fff andi        $AC0.M, #0x7fff			// AC0.M = address high part, AC1.M = address low part
 0063 2ece      srs         @DSMAH, $AC0.M
 0064 2fcf      srs         @DSMAL, $AC1.M
 0065 16cd 0c00 si          @DSPA, #0x0c00
 0067 8100      clr         $ACC0
 0068 2ec9      srs         @DSCR, $AC0.M
 0069 1ffb      mrr         $AC1.M, $AX1.H			// Transfer the AXList (DMA)
 006a 2fcb      srs         @DSBL, $AC1.M			// DMA transfer from main memory (addr = second mail) to 0x0C00, len = low part of first mail
 006b 02bf 0084 call        0084_WaitForDMACompletion()
 006d 0080 0c00 lri         $AR0, #0x0c00			// AR0 = 0x0C00
} // continues into next function 

void 006f_MailHandler() {
 006f 8e00      set16       
 0070 8100      clr         $ACC0
 0071 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 0072 b100      tst         $ACC0
 0073 0291 0080 jl          0x0080
 0075 0a0e      lris        $AX0.H, #0x0e
 0076 c100      cmpar       $ACC0, $AX0.H
 0077 0292 0080 jg          0x0080					// die if command number is higher than 0xE
 0079 009f 0d04 lri         $AC1.M, #0x0d04
 007b 4c00      add         $ACC0, $ACC1
 007c 1c7e      mrr         $AR3, $AC0.M
 007d 0213      ilrr        $AC0.M, @$AR3
 007e 1c7e      mrr         $AR3, $AC0.M			// func at [0x0D04 + cmd_num]
 007f 176f      jmpr        $AR3					// Jump to command func:	AR0 = 0x0C01. Okay.
																				AC0.M = <nothing interesting>
																				AC1.M = 0x0D04. Not interesting either.
}

void 0080_Die() {
 0080 16fc baad si          @DMBH, #0xbaad
 0082 2efd      srs         @DMBL, $AC0.M
 0083 0021      halt
}

void 0084_WaitForDMACompletion() {       
 0084 26c9      lrs         $AC0.M, @DSCR
 0085 02a0 0004 andf        $AC0.M, #0x0004
 0087 029c 0084 jlnz        0x0084
 0089 02df      ret         
}

void 008a_Cmd_0() {
 008a 8100      clr         $ACC0
 008b 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 008c 8e78      set16'l     : $AC1.M, @$AR0
 008d 2ece      srs         @DSMAH, $AC0.M
 008e 2fcf      srs         @DSMAL, $AC1.M
 008f 16cd 0d08 si          @DSPA, #0x0d08
 0091 16c9 0000 si          @DSCR, #0x0000
 0093 16cb 0078 si          @DSBL, #0x0078
 0095 0081 0d08 lri         $AR1, #0x0d08
 0097 0082 0000 lri         $AR2, #0x0000
 0099 009b 005f lri         $AX1.H, #0x005f
 009b 009a 00c0 lri         $AX0.H, #0x00c0
 009d 8100      clr         $ACC0
 009e 8900      clr         $ACC1
 009f 8f00      set40       
 00a0 02bf 0084 call        0084_WaitForDMACompletion()
 00a2 193e      lrri        $AC0.M, @$AR1
 00a3 193c      lrri        $AC0.L, @$AR1
 00a4 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 00a5 0294 00ab jnz         0x00ab
 00a7 005a      loop        $AX0.H
  00a8 1b5e      srri        @$AR2, $AC0.M
 00a9 029f 00b3 jmp         0x00b3
 00ab 9900      asr16       $ACC1
 00ac 1b5e      srri        @$AR2, $AC0.M
 00ad 1b5c      srri        @$AR2, $AC0.L
 00ae 007b 00b2 bloop       $AX1.H, 0x00b2
  00b0 4c00      add         $ACC0, $ACC1
  00b1 1b5e      srri        @$AR2, $AC0.M		
  00b2 1b5c      srri        @$AR2, $AC0.L
 00b3 0082 00c0 lri         $AR2, #0x00c0
 00b5 193e      lrri        $AC0.M, @$AR1
 00b6 193c      lrri        $AC0.L, @$AR1
 00b7 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 00b8 0294 00be jnz         0x00be
 00ba 005a      loop        $AX0.H
  00bb 1b5e      srri        @$AR2, $AC0.M
 00bc 029f 00c6 jmp         0x00c6
 00be 9900      asr16       $ACC1
 00bf 1b5e      srri        @$AR2, $AC0.M
 00c0 1b5c      srri        @$AR2, $AC0.L
 00c1 007b 00c5 bloop       $AX1.H, 0x00c5
  00c3 4c00      add         $ACC0, $ACC1
  00c4 1b5e      srri        @$AR2, $AC0.M
  00c5 1b5c      srri        @$AR2, $AC0.L
 00c6 0082 0180 lri         $AR2, #0x0180
 00c8 193e      lrri        $AC0.M, @$AR1
 00c9 193c      lrri        $AC0.L, @$AR1
 00ca b179      tst'l       $ACC0 : $AC1.M, @$AR1
 00cb 0294 00d1 jnz         0x00d1
 00cd 005a      loop        $AX0.H
  00ce 1b5e      srri        @$AR2, $AC0.M
 00cf 029f 00d9 jmp         0x00d9
 00d1 9900      asr16       $ACC1
 00d2 1b5e      srri        @$AR2, $AC0.M
 00d3 1b5c      srri        @$AR2, $AC0.L
 00d4 007b 00d8 bloop       $AX1.H, 0x00d8
 00d6 4c00      add         $ACC0, $ACC1
 00d7 1b5e      srri        @$AR2, $AC0.M
 00d8 1b5c      srri        @$AR2, $AC0.L
 00d9 0082 0400 lri         $AR2, #0x0400
 00db 193e      lrri        $AC0.M, @$AR1
 00dc 193c      lrri        $AC0.L, @$AR1
 00dd b179      tst'l       $ACC0 : $AC1.M, @$AR1
 00de 0294 00e4 jnz         0x00e4
 00e0 005a      loop        $AX0.H
  00e1 1b5e      srri        @$AR2, $AC0.M
 00e2 029f 00ec jmp         0x00ec
 00e4 9900      asr16       $ACC1
 00e5 1b5e      srri        @$AR2, $AC0.M
 00e6 1b5c      srri        @$AR2, $AC0.L
 00e7 007b 00eb bloop       $AX1.H, 0x00eb
  00e9 4c00      add         $ACC0, $ACC1
  00ea 1b5e      srri        @$AR2, $AC0.M
  00eb 1b5c      srri        @$AR2, $AC0.L
 00ec 0082 04c0 lri         $AR2, #0x04c0
 00ee 193e      lrri        $AC0.M, @$AR1
 00ef 193c      lrri        $AC0.L, @$AR1
 00f0 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 00f1 0294 00f7 jnz         0x00f7
 00f3 005a      loop        $AX0.H
  00f4 1b5e      srri        @$AR2, $AC0.M
 00f5 029f 00ff jmp         0x00ff
 00f7 9900      asr16       $ACC1
 00f8 1b5e      srri        @$AR2, $AC0.M
 00f9 1b5c      srri        @$AR2, $AC0.L
 00fa 007b 00fe bloop       $AX1.H, 0x00fe
  00fc 4c00      add         $ACC0, $ACC1
  00fd 1b5e      srri        @$AR2, $AC0.M
  00fe 1b5c      srri        @$AR2, $AC0.L
 00ff 0082 0580 lri         $AR2, #0x0580
 0101 193e      lrri        $AC0.M, @$AR1
 0102 193c      lrri        $AC0.L, @$AR1
 0103 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 0104 0294 010a jnz         0x010a
 0106 005a      loop        $AX0.H
  0107 1b5e      srri        @$AR2, $AC0.M
 0108 029f 0112 jmp         0x0112
 010a 9900      asr16       $ACC1
 010b 1b5e      srri        @$AR2, $AC0.M
 010c 1b5c      srri        @$AR2, $AC0.L
 010d 007b 0111 bloop       $AX1.H, 0x0111
  010f 4c00      add         $ACC0, $ACC1
  0110 1b5e      srri        @$AR2, $AC0.M
  0111 1b5c      srri        @$AR2, $AC0.L
 0112 0082 0640 lri         $AR2, #0x0640
 0114 193e      lrri        $AC0.M, @$AR1
 0115 193c      lrri        $AC0.L, @$AR1
 0116 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 0117 0294 011d jnz         0x011d
 0119 005a      loop        $AX0.H
  011a 1b5e      srri        @$AR2, $AC0.M
 011b 029f 0125 jmp         0x0125
 011d 9900      asr16       $ACC1
 011e 1b5e      srri        @$AR2, $AC0.M
 011f 1b5c      srri        @$AR2, $AC0.L
 0120 007b 0124 bloop       $AX1.H, 0x0124
  0122 4c00      add         $ACC0, $ACC1
  0123 1b5e      srri        @$AR2, $AC0.M
  0124 1b5c      srri        @$AR2, $AC0.L
 0125 0082 0700 lri         $AR2, #0x0700
 0127 193e      lrri        $AC0.M, @$AR1
 0128 193c      lrri        $AC0.L, @$AR1
 0129 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 012a 0294 0130 jnz         0x0130
 012c 005a      loop        $AX0.H
  012d 1b5e      srri        @$AR2, $AC0.M
 012e 029f 0138 jmp         0x0138
 0130 9900      asr16       $ACC1
 0131 1b5e      srri        @$AR2, $AC0.M
 0132 1b5c      srri        @$AR2, $AC0.L
 0133 007b 0137 bloop       $AX1.H, 0x0137
  0135 4c00      add         $ACC0, $ACC1
  0136 1b5e      srri        @$AR2, $AC0.M
  0137 1b5c      srri        @$AR2, $AC0.L
 0138 0082 07c0 lri         $AR2, #0x07c0
 013a 193e      lrri        $AC0.M, @$AR1
 013b 193c      lrri        $AC0.L, @$AR1
 013c b179      tst'l       $ACC0 : $AC1.M, @$AR1
 013d 0294 0143 jnz         0x0143
 013f 005a      loop        $AX0.H
  0140 1b5e      srri        @$AR2, $AC0.M
 0141 029f 014b jmp         0x014b
 0143 9900      asr16       $ACC1
 0144 1b5e      srri        @$AR2, $AC0.M
 0145 1b5c      srri        @$AR2, $AC0.L
 0146 007b 014a bloop       $AX1.H, 0x014a
  0148 4c00      add         $ACC0, $ACC1
  0149 1b5e      srri        @$AR2, $AC0.M
  014a 1b5c      srri        @$AR2, $AC0.L
 014b 0082 0880 lri         $AR2, #0x0880
 014d 193e      lrri        $AC0.M, @$AR1
 014e 193c      lrri        $AC0.L, @$AR1
 014f b179      tst'l       $ACC0 : $AC1.M, @$AR1
 0150 0294 0156 jnz         0x0156
 0152 005a      loop        $AX0.H
  0153 1b5e      srri        @$AR2, $AC0.M
 0154 029f 015e jmp         0x015e
 0156 9900      asr16       $ACC1
 0157 1b5e      srri        @$AR2, $AC0.M
 0158 1b5c      srri        @$AR2, $AC0.L
 0159 007b 015d bloop       $AX1.H, 0x015d
  015b 4c00      add         $ACC0, $ACC1
  015c 1b5e      srri        @$AR2, $AC0.M
  015d 1b5c      srri        @$AR2, $AC0.L
 015e 0082 0940 lri         $AR2, #0x0940
 0160 193e      lrri        $AC0.M, @$AR1
 0161 193c      lrri        $AC0.L, @$AR1
 0162 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 0163 0294 0169 jnz         0x0169
 0165 005a      loop        $AX0.H
  0166 1b5e      srri        @$AR2, $AC0.M
 0167 029f 0171 jmp         0x0171
 0169 9900      asr16       $ACC1
 016a 1b5e      srri        @$AR2, $AC0.M
 016b 1b5c      srri        @$AR2, $AC0.L
 016c 007b 0170 bloop       $AX1.H, 0x0170
  016e 4c00      add         $ACC0, $ACC1
  016f 1b5e      srri        @$AR2, $AC0.M
  0170 1b5c      srri        @$AR2, $AC0.L
 0171 0082 0a00 lri         $AR2, #0x0a00
 0173 193e      lrri        $AC0.M, @$AR1
 0174 193c      lrri        $AC0.L, @$AR1
 0175 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 0176 0294 017c jnz         0x017c
 0178 005a      loop        $AX0.H
  0179 1b5e      srri        @$AR2, $AC0.M
 017a 029f 0184 jmp         0x0184
 017c 9900      asr16       $ACC1
 017d 1b5e      srri        @$AR2, $AC0.M
 017e 1b5c      srri        @$AR2, $AC0.L
 017f 007b 0183 bloop       $AX1.H, 0x0183
  0181 4c00      add         $ACC0, $ACC1
  0182 1b5e      srri        @$AR2, $AC0.M
  0183 1b5c      srri        @$AR2, $AC0.L
 0184 009b 0011 lri         $AX1.H, #0x0011
 0186 009a 0024 lri         $AX0.H, #0x0024
 0188 0082 0240 lri         $AR2, #0x0240
 018a 193e      lrri        $AC0.M, @$AR1
 018b 193c      lrri        $AC0.L, @$AR1
 018c b179      tst'l       $ACC0 : $AC1.M, @$AR1
 018d 0294 0193 jnz         0x0193
 018f 005a      loop        $AX0.H
  0190 1b5e      srri        @$AR2, $AC0.M
 0191 029f 019b jmp         0x019b
 0193 9900      asr16       $ACC1
 0194 1b5e      srri        @$AR2, $AC0.M
 0195 1b5c      srri        @$AR2, $AC0.L
 0196 007b 019a bloop       $AX1.H, 0x019a
  0198 4c00      add         $ACC0, $ACC1
  0199 1b5e      srri        @$AR2, $AC0.M
  019a 1b5c      srri        @$AR2, $AC0.L
 019b 0082 0ac0 lri         $AR2, #0x0ac0
 019d 193e      lrri        $AC0.M, @$AR1
 019e 193c      lrri        $AC0.L, @$AR1
 019f b179      tst'l       $ACC0 : $AC1.M, @$AR1
 01a0 0294 01a6 jnz         0x01a6
 01a2 005a      loop        $AX0.H
  01a3 1b5e      srri        @$AR2, $AC0.M
 01a4 029f 01ae jmp         0x01ae
 01a6 9900      asr16       $ACC1
 01a7 1b5e      srri        @$AR2, $AC0.M
 01a8 1b5c      srri        @$AR2, $AC0.L
 01a9 007b 01ad bloop       $AX1.H, 0x01ad
  01ab 4c00      add         $ACC0, $ACC1
  01ac 1b5e      srri        @$AR2, $AC0.M
  01ad 1b5c      srri        @$AR2, $AC0.L
 01ae 0082 0264 lri         $AR2, #0x0264
 01b0 193e      lrri        $AC0.M, @$AR1
 01b1 193c      lrri        $AC0.L, @$AR1
 01b2 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 01b3 0294 01b9 jnz         0x01b9
  01b5 005a      loop        $AX0.H
 01b6 1b5e      srri        @$AR2, $AC0.M
 01b7 029f 01c1 jmp         0x01c1
 01b9 9900      asr16       $ACC1
 01ba 1b5e      srri        @$AR2, $AC0.M
 01bb 1b5c      srri        @$AR2, $AC0.L
 01bc 007b 01c0 bloop       $AX1.H, 0x01c0
  01be 4c00      add         $ACC0, $ACC1
  01bf 1b5e      srri        @$AR2, $AC0.M
  01c0 1b5c      srri        @$AR2, $AC0.L
 01c1 0082 0ae4 lri         $AR2, #0x0ae4
 01c3 193e      lrri        $AC0.M, @$AR1
 01c4 193c      lrri        $AC0.L, @$AR1
 01c5 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 01c6 0294 01cc jnz         0x01cc
 01c8 005a      loop        $AX0.H
  01c9 1b5e      srri        @$AR2, $AC0.M
 01ca 029f 01d4 jmp         0x01d4
 01cc 9900      asr16       $ACC1
 01cd 1b5e      srri        @$AR2, $AC0.M
 01ce 1b5c      srri        @$AR2, $AC0.L
 01cf 007b 01d3 bloop       $AX1.H, 0x01d3
  01d1 4c00      add         $ACC0, $ACC1
  01d2 1b5e      srri        @$AR2, $AC0.M
  01d3 1b5c      srri        @$AR2, $AC0.L
 01d4 0082 0288 lri         $AR2, #0x0288
 01d6 193e      lrri        $AC0.M, @$AR1
 01d7 193c      lrri        $AC0.L, @$AR1
 01d8 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 01d9 0294 01df jnz         0x01df
 01db 005a      loop        $AX0.H
  01dc 1b5e      srri        @$AR2, $AC0.M
 01dd 029f 01e7 jmp         0x01e7
 01df 9900      asr16       $ACC1
 01e0 1b5e      srri        @$AR2, $AC0.M
 01e1 1b5c      srri        @$AR2, $AC0.L
 01e2 007b 01e6 bloop       $AX1.H, 0x01e6
  01e4 4c00      add         $ACC0, $ACC1
  01e5 1b5e      srri        @$AR2, $AC0.M
  01e6 1b5c      srri        @$AR2, $AC0.L
 01e7 0082 0b08 lri         $AR2, #0x0b08
 01e9 193e      lrri        $AC0.M, @$AR1
 01ea 193c      lrri        $AC0.L, @$AR1
 01eb b179      tst'l       $ACC0 : $AC1.M, @$AR1
 01ec 0294 01f2 jnz         0x01f2
 01ee 005a      loop        $AX0.H
  01ef 1b5e      srri        @$AR2, $AC0.M
 01f0 029f 01fa jmp         0x01fa
 01f2 9900      asr16       $ACC1
 01f3 1b5e      srri        @$AR2, $AC0.M
 01f4 1b5c      srri        @$AR2, $AC0.L
 01f5 007b 01f9 bloop       $AX1.H, 0x01f9
  01f7 4c00      add         $ACC0, $ACC1
  01f8 1b5e      srri        @$AR2, $AC0.M
  01f9 1b5c      srri        @$AR2, $AC0.L
 01fa 0082 02ac lri         $AR2, #0x02ac
 01fc 193e      lrri        $AC0.M, @$AR1
 01fd 193c      lrri        $AC0.L, @$AR1
 01fe b179      tst'l       $ACC0 : $AC1.M, @$AR1
 01ff 0294 0205 jnz         0x0205
 0201 005a      loop        $AX0.H
  0202 1b5e      srri        @$AR2, $AC0.M
 0203 029f 020d jmp         0x020d
 0205 9900      asr16       $ACC1
 0206 1b5e      srri        @$AR2, $AC0.M
 0207 1b5c      srri        @$AR2, $AC0.L
 0208 007b 020c bloop       $AX1.H, 0x020c
  020a 4c00      add         $ACC0, $ACC1
  020b 1b5e      srri        @$AR2, $AC0.M
  020c 1b5c      srri        @$AR2, $AC0.L
 020d 0082 0b2c lri         $AR2, #0x0b2c
 020f 193e      lrri        $AC0.M, @$AR1
 0210 193c      lrri        $AC0.L, @$AR1
 0211 b179      tst'l       $ACC0 : $AC1.M, @$AR1
 0212 0294 0218 jnz         0x0218
 0214 005a      loop        $AX0.H
  0215 1b5e      srri        @$AR2, $AC0.M
 0216 029f 0220 jmp         0x0220
 0218 9900      asr16       $ACC1
 0219 1b5e      srri        @$AR2, $AC0.M
 021a 1b5c      srri        @$AR2, $AC0.L
 021b 007b 021f bloop       $AX1.H, 0x021f
  021d 4c00      add         $ACC0, $ACC1
  021e 1b5e      srri        @$AR2, $AC0.M
  021f 1b5c      srri        @$AR2, $AC0.L
 0220 029f 006f jmp         006f_MailHandler()
}

void 0222_Cmd_1() {
 0222 8100      clr         $ACC0
 0223 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 0224 8e60      set16'l     : $AC0.L, @$AR0
 0225 2ece      srs         @DSMAH, $AC0.M
 0226 2ccf      srs         @DSMAL, $AC0.L
 0227 16cd 0d08 si          @DSPA, #0x0d08
 0229 16c9 0000 si          @DSCR, #0x0000
 022b 16cb 0180 si          @DSBL, #0x0180
 022d 1cc0      mrr         $IX2, $AR0
 022e 0080 0000 lri         $AR0, #0x0000
 0230 0083 00c0 lri         $AR3, #0x00c0
 0232 0081 0d08 lri         $AR1, #0x0d08
 0234 0084 ffff lri         $IX0, #0xffff
 0236 1ce4      mrr         $IX3, $IX0
 0237 02bf 0084 call        0084_WaitForDMACompletion()
 0239 8f00      set40       
 023a 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 023b 80c9      nx'ldm      : $AX0.L, $AX1.L, @$AR1
 023c 6800      movax       $ACC0, $AX0.L
 023d 4a00      addax       $ACC0, $AX1.L
 023e 191b      lrri        $AX1.H, @$AR0
 023f 6994      movax'lsn   $ACC1, $AX0.L : $AX1.L, $AC0.M
 0240 4b23      addax's     $ACC1, $AX1.L : @$AR3, $AC0.L
 0241 115f 0249 bloopi      #0x5f, 0x0249
  0243 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0244 80c9      nx'ldm      : $AX0.L, $AX1.L, @$AR1
  0245 6838      movax's     $ACC0, $AX0.L : @$AR0, $AC1.M
  0246 4a28      addax's     $ACC0, $AX1.L : @$AR0, $AC1.L
  0247 191b      lrri        $AX1.H, @$AR0
  0248 6994      movax'lsn   $ACC1, $AX0.L : $AX1.L, $AC0.M
  0249 4b23      addax's     $ACC1, $AX1.L : @$AR3, $AC0.L
 024a 1b1f      srri        @$AR0, $AC1.M
 024b 1b1d      srri        @$AR0, $AC1.L
 024c 1c06      mrr         $AR0, $IX2
 024d 029f 006f jmp         006f_MailHandler()
}

void 024f_Cmd_2() {
 024f 8100      clr         $ACC0
 0250 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 0251 8e60      set16'l     : $AC0.L, @$AR0
 0252 2ece      srs         @DSMAH, $AC0.M
 0253 2ccf      srs         @DSMAL, $AC0.L
 0254 16cd 0d08 si          @DSPA, #0x0d08
 0256 16c9 0000 si          @DSCR, #0x0000
 0258 16cb 0180 si          @DSBL, #0x0180
 025a 1cc0      mrr         $IX2, $AR0
 025b 0080 0000 lri         $AR0, #0x0000
 025d 0083 00c0 lri         $AR3, #0x00c0
 025f 0081 0d08 lri         $AR1, #0x0d08
 0261 0084 ffff lri         $IX0, #0xffff
 0263 1ce4      mrr         $IX3, $IX0
 0264 02bf 0084 call        0084_WaitForDMACompletion()
 0266 8f00      set40       
 0267 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0268 80c9      nx'ldm      : $AX0.L, $AX1.L, @$AR1
 0269 6800      movax       $ACC0, $AX0.L
 026a 4a00      addax       $ACC0, $AX1.L
 026b 191b      lrri        $AX1.H, @$AR0
 026c 6994      movax'lsn   $ACC1, $AX0.L : $AX1.L, $AC0.M
 026d 7d00      neg         $ACC1
 026e 4b23      addax's     $ACC1, $AX1.L : @$AR3, $AC0.L
 026f 115f 0278 bloopi      #0x5f, 0x0278
  0271 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0272 80c9      nx'ldm      : $AX0.L, $AX1.L, @$AR1
  0273 6838      movax's     $ACC0, $AX0.L : @$AR0, $AC1.M
  0274 4a28      addax's     $ACC0, $AX1.L : @$AR0, $AC1.L
  0275 191b      lrri        $AX1.H, @$AR0
  0276 6994      movax'lsn   $ACC1, $AX0.L : $AX1.L, $AC0.M
  0277 7d00      neg         $ACC1
  0278 4b23      addax's     $ACC1, $AX1.L : @$AR3, $AC0.L
 0279 1b1f      srri        @$AR0, $AC1.M
 027a 1b1d      srri        @$AR0, $AC1.L
 027b 1c06      mrr         $AR0, $IX2
 027c 029f 006f jmp         006f_MailHandler()
}

// Command 0x4 - Mixer
// Parameters: AR0 -> 0x0C01
// AXList data: command (2), PBs address (4)
// Stores 0x140 bytes of data from the PBs address to 0x02D0. Suspicious.

void 027e_Cmd_4_SetPBsAddress() {
 027e 8100      clr         $ACC0							// ACC0 = 0, ACC1 = 0
 027f 8970      clr'l       $ACC1 : $AC0.M, @$AR0			// ACC0 = mem32[0x0C01] (the new PBs address is there)
 0280 8e60      set16'l     : $AC0.L, @$AR0					// 
 0281 00e0 0cd2 sr          @0x0cd2, $AR0					// mem16[0x0CD2] = 0x0C03;
 
 
// Mixing loop - stops when the pointer to the next PB in the current PB is NULL
 0283 2ece      srs         @DSMAH, $AC0.M
 0284 2ccf      srs         @DSMAL, $AC0.L
 0285 16cd 02d0 si          @DSPA, #0x02d0
 0287 16c9 0000 si          @DSCR, #0x0000
 0289 16cb 0140 si          @DSBL, #0x0140					// transfer 0x140 bytes from the current PB address to 0x02D0. aka Transfer the current PB
 028b 02bf 0084 call        0084_WaitForDMACompletion()
 
// Load some values to memory [0x0CDX / 0x0CEX]
 028d 8100      clr         $ACC0
 028e 8900      clr         $ACC1
 028f 00de 02d4 lr          $AC0.M, @0x02d4					// 
 0291 009f 0db7 lri         $AC1.M, #0x0db7
 0293 4c00      add         $ACC0, $ACC1					// mem16[0x02D4] + 0xDB7;
 0294 1c7e      mrr         $AR3, $AC0.M
 0295 0213      ilrr        $AC0.M, @$AR3					// Sample rate converter
 0296 00fe 0cdf sr          @0x0cdf, $AC0.M					// mem16[0x0CDF] = iram16[0x0DB7 + mem16[0x02D4]];
 0298 00de 02d5 lr          $AC0.M, @0x02d5
 029a 009f 0dba lri         $AC1.M, #0x0dba
 029c 4c00      add         $ACC0, $ACC1
 029d 1c7e      mrr         $AR3, $AC0.M
 029e 0213      ilrr        $AC0.M, @$AR3					// Coef select
 029f 00fe 0ce0 sr          @0x0ce0, $AC0.M					// mem16[0x0CE0] = iram16[0x0DBA + mem16[0x02D5]];
 02a1 009a 001f lri         $AX0.H, #0x001f
 02a3 00de 02d7 lr          $AC0.M, @0x02d7
 02a5 009f 0d13 lri         $AC1.M, #0x0d13
 02a7 3400      andr        $AC0.M, $AX0.H
 02a8 4c00      add         $ACC0, $ACC1
 02a9 1c7e      mrr         $AR3, $AC0.M
 02aa 0213      ilrr        $AC0.M, @$AR3					// probably a volume coef table
 02ab 00fe 0cd3 sr          @0x0cd3, $AC0.M					// mem16[0x0CD3] = iram16[0x0D13 + (mem16[0x02D7] & 0x001F)]; (5 bits)
 02ad 00de 02d6 lr          $AC0.M, @0x02d6
 02af 009f 0d33 lri         $AC1.M, #0x0d33
 02b1 3400      andr        $AC0.M, $AX0.H
 02b2 4c00      add         $ACC0, $ACC1
 02b3 1c7e      mrr         $AR3, $AC0.M
 02b4 0213      ilrr        $AC0.M, @$AR3					// probably a volume coef table
 02b5 00fe 0cd4 sr          @0x0cd4, $AC0.M					// mem16[0x0CD4] = iram16[0x0D33 + (mem16[0x02D6] & 0x001F)]; (5 bits)
 02b7 00de 02d6 lr          $AC0.M, @0x02d6
 02b9 009f 0d53 lri         $AC1.M, #0x0d53
 02bb 14fb      asr         $ACC0, #-5
 02bc 3400      andr        $AC0.M, $AX0.H
 02bd 4c00      add         $ACC0, $ACC1
 02be 1c7e      mrr         $AR3, $AC0.M
 02bf 0213      ilrr        $AC0.M, @$AR3					// probably a volume coef table
 02c0 00fe 0cd5 sr          @0x0cd5, $AC0.M					// mem16[0x0CD5] = iram16[0x0D53 + ((mem16[0x02D6] >> 5) & 0x001F)]; (5 bits)
 02c2 00de 02d6 lr          $AC0.M, @0x02d6
 02c4 009f 0d73 lri         $AC1.M, #0x0d73
 02c6 14f6      asr         $ACC0, #-10
 02c7 4c00      add         $ACC0, $ACC1
 02c8 1c7e      mrr         $AR3, $AC0.M
 02c9 0213      ilrr        $AC0.M, @$AR3					// probably a volume coef table
 02ca 00fe 0cd6 sr          @0x0cd6, $AC0.M					// mem16[0x0CD6] = iram16[0x0D73 + (mem16[0x02D6] >> 10)]; (6 bits)
 02cc 8100      clr         $ACC0
 02cd 00de 033c lr          $AC0.M, @0x033c
 02cf 009a 0003 lri         $AX0.H, #0x0003
 02d1 009b 0db3 lri         $AX1.H, #0x0db3
 02d3 1ffe      mrr         $AC1.M, $AC0.M
 02d4 3500      andr        $AC1.M, $AX0.H
 02d5 4700      addr        $ACC1, $AX1.H
 02d6 1c7f      mrr         $AR3, $AC1.M
 02d7 0313      ilrr        $AC1.M, @$AR3
 02d8 00ff 0cd7 sr          @0x0cd7, $AC1.M					// mem16[0x0CD7] = iram16[0x0DB3 + (mem16[0x033C] & 0x0003)];
 02da 147e      lsr         $ACC0, #-2
 02db 1ffe      mrr         $AC1.M, $AC0.M
 02dc 3500      andr        $AC1.M, $AX0.H
 02dd 4700      addr        $ACC1, $AX1.H
 02de 1c7f      mrr         $AR3, $AC1.M
 02df 0313      ilrr        $AC1.M, @$AR3
 02e0 00ff 0cd8 sr          @0x0cd8, $AC1.M					// mem16[0x0CD8] = iram16[0x0DB3 + ((mem16[0x033C] >> 2) & 0x0003)];
 02e2 147e      lsr         $ACC0, #-2
 02e3 1ffe      mrr         $AC1.M, $AC0.M
 02e4 3500      andr        $AC1.M, $AX0.H
 02e5 4700      addr        $ACC1, $AX1.H
 02e6 1c7f      mrr         $AR3, $AC1.M
 02e7 0313      ilrr        $AC1.M, @$AR3
 02e8 00ff 0cd9 sr          @0x0cd9, $AC1.M					// mem16[0x0CD9] = iram16[0x0DB3 + ((mem16[0x033C] >> 4) & 0x0003)];
 02ea 147e      lsr         $ACC0, #-2
 02eb 1ffe      mrr         $AC1.M, $AC0.M
 02ec 3500      andr        $AC1.M, $AX0.H
 02ed 4700      addr        $ACC1, $AX1.H
 02ee 1c7f      mrr         $AR3, $AC1.M
 02ef 0313      ilrr        $AC1.M, @$AR3
 02f0 00ff 0cda sr          @0x0cda, $AC1.M					// mem16[0x0CDA] = iram16[0x0DB3 + ((mem16[0x033C] >> 6) & 0x0003)];
 02f2 147e      lsr         $ACC0, #-2
 02f3 1ffe      mrr         $AC1.M, $AC0.M
 02f4 3500      andr        $AC1.M, $AX0.H
 02f5 4700      addr        $ACC1, $AX1.H
 02f6 1c7f      mrr         $AR3, $AC1.M
 02f7 0313      ilrr        $AC1.M, @$AR3
 02f8 00ff 0cdb sr          @0x0cdb, $AC1.M					// mem16[0x0CDB] = iram16[0x0DB3 + ((mem16[0x033C] >> 8) & 0x0003)];
 02fa 147e      lsr         $ACC0, #-2
 02fb 1ffe      mrr         $AC1.M, $AC0.M
 02fc 3500      andr        $AC1.M, $AX0.H
 02fd 4700      addr        $ACC1, $AX1.H
 02fe 1c7f      mrr         $AR3, $AC1.M
 02ff 0313      ilrr        $AC1.M, @$AR3
 0300 00ff 0cdc sr          @0x0cdc, $AC1.M					// mem16[0x0CDC] = iram16[0x0DB3 + ((mem16[0x033C] >> 10) & 0x0003)];
 0302 147e      lsr         $ACC0, #-2
 0303 1ffe      mrr         $AC1.M, $AC0.M
 0304 3500      andr        $AC1.M, $AX0.H
 0305 4700      addr        $ACC1, $AX1.H
 0306 1c7f      mrr         $AR3, $AC1.M
 0307 0313      ilrr        $AC1.M, @$AR3
 0308 00ff 0cdd sr          @0x0cdd, $AC1.M					// mem16[0x0CDD] = iram16[0x0DB3 + ((mem16[0x033C] >> 12) & 0x0003)];
 030a 147e      lsr         $ACC0, #-2
 030b 1ffe      mrr         $AC1.M, $AC0.M
 030c 3500      andr        $AC1.M, $AX0.H
 030d 4700      addr        $ACC1, $AX1.H
 030e 1c7f      mrr         $AR3, $AC1.M
 030f 0313      ilrr        $AC1.M, @$AR3
 0310 00ff 0cde sr          @0x0cde, $AC1.M					// mem16[0x0CDE] = iram16[0x0DB3 + (mem16[0x033C] >> 14)];
 
 0312 8100      clr         $ACC0
 0313 00de 02f2 lr          $AC0.M, @0x02f2
 0315 b100      tst         $ACC0
 0316 0295 0339 jz          0x0339
 
 // Initial time delay - aka echo aka reverb
 // The buffer is 64 bytes
 // That thing may be hard to implement in HLE because the HLE sound buffer size is variable
 if (mem16[0x02F2] != 0)
 {
	 0318 8900      clr         $ACC1
	 0319 00df 02f5 lr          $AC1.M, @0x02f5
	 031b 0300 0c40 addi        $AC1.M, #0x0c40
	 031d 00ff 0ce2 sr          @0x0ce2, $AC1.M
	 031f 00df 02f6 lr          $AC1.M, @0x02f6
	 0321 0300 0c40 addi        $AC1.M, #0x0c40
	 0323 00ff 0ce3 sr          @0x0ce3, $AC1.M
	 0325 009f 0c60 lri         $AC1.M, #0x0c60
	 0327 00ff 0ce1 sr          @0x0ce1, $AC1.M
	 0329 00de 02f3 lr          $AC0.M, @0x02f3
	 032b 2ece      srs         @DSMAH, $AC0.M
	 032c 00de 02f4 lr          $AC0.M, @0x02f4
	 032e 2ecf      srs         @DSMAL, $AC0.M
	 032f 16cd 0c40 si          @DSPA, #0x0c40
	 0331 16c9 0000 si          @DSCR, #0x0000
	 0333 16cb 0040 si          @DSBL, #0x0040
	 0335 02bf 0084 call        0084_WaitForDMACompletion()			// so yet another DMA... from mem32[0x02F3] to 0x0C40, 64 bytes
	 0337 029f 0341 jmp         0x0341
 }
 else
 {
	 0339 009f 0c60 lri         $AC1.M, #0x0c60
	 033b 00ff 0ce2 sr          @0x0ce2, $AC1.M
	 033d 00ff 0ce3 sr          @0x0ce3, $AC1.M
	 033f 00ff 0ce1 sr          @0x0ce1, $AC1.M
 }

 0341 8c00      clr15       
 0342 8b00      m0          
 0343 8100      clr         $ACC0
 0344 00de 02d8 lr          $AC0.M, @0x02d8
 0346 0601      cmpis       $ACC0, #0x01
 0347 0294 046a jnz         0x046a
 
if (mem16[0x02D8] == 1) // if the voice is playing
{
	 0349 00c3 0cdf lr          $AR3, @0x0cdf
	 034b 177f      callr       $AR3								// call the sample rate converter
	 034c 8a00      m2												// MULTIPLICATION x2 MODE ENABLED!
	 034d 8100      clr         $ACC0
	 034e 8900      clr         $ACC1
	 034f 00de 0306 lr          $AC0.M, @0x0306						// pb[0x36]
	 0351 00df 0305 lr          $AC1.M, @0x0305						// pb[0x35]
	 0353 1f1f      mrr         $AX0.L, $AC1.M
	 0354 4d00      add         $ACC1, $ACC0
	 0355 1481      asl         $ACC0, #1
	 0356 8d1e      set15'mv    : $AX1.H, $AC0.M
	 0357 1fd8      mrr         $AC0.M, $AX0.L
	 0358 0098 8000 lri         $AX0.L, #0x8000
	 035a 0080 0d08 lri         $AR0, #0x0d08
	 035c a830      mulx's      $AX0.L, $AX1.H : @$AR0, $AC0.M
	 035d 112f 0360 bloopi      #0x2f, 0x0360
	  035f ac38      mulxac's    $AX0.L, $AX1.H, $ACC0 : @$AR0, $AC1.M
	  0360 ad30      mulxac's    $AX0.L, $AX1.H, $ACC1 : @$AR0, $AC0.M
	 0361 ac38      mulxac's    $AX0.L, $AX1.H, $ACC0 : @$AR0, $AC1.M
	 0362 00fe 0305 sr          @0x0305, $AC0.M
	 0364 8f00      set40       
	 0365 0080 0d08 lri         $AR0, #0x0d08
	 0367 00c1 0ce1 lr          $AR1, @0x0ce1
	 0369 1c61      mrr         $AR3, $AR1
	 036a 193a      lrri        $AX0.H, @$AR1
	 036b 1919      lrri        $AX1.L, @$AR0
	 036c b051      mulx'l      $AX0.H, $AX1.L : $AX0.H, @$AR1
	 036d 1919      lrri        $AX1.L, @$AR0
	 036e 115e 0371 bloopi      #0x5e, 0x0371
	  0370 b651      mulxmv'l    $AX0.H, $AX1.L, $ACC0 : $AX0.H, @$AR1
	  0371 8090      nx'ls       : $AX1.L, $AC0.M
	 0372 b600      mulxmv      $AX0.H, $AX1.L, $ACC0
	 0373 6e33      movp's      $ACC0 : @$AR3, $AC0.M
	 0374 1b7e      srri        @$AR3, $AC0.M
	 0375 00de 032d lr          $AC0.M, @0x032d
	 0377 b100      tst         $ACC0
	 0378 0295 0381 jz          0x0381
	 037a 00c0 0ce1 lr          $AR0, @0x0ce1
	 037c 1c20      mrr         $AR1, $AR0
	 037d 0083 032e lri         $AR3, #0x032e
	 037f 02bf 06ab call        0x06ab
	 0381 00de 0331 lr          $AC0.M, @0x0331
	 0383 b100      tst         $ACC0
	 0384 0295 038d jz          0x038d
	 0386 0080 0332 lri         $AR0, #0x0332
	 0388 00c1 0ce1 lr          $AR1, @0x0ce1
	 038a 1c41      mrr         $AR2, $AR1
	 038b 02bf 06c3 call        06c3_Unknown()
	 038d 0080 02f9 lri         $AR0, #0x02f9
	 038f 8100      clr         $ACC0
	 0390 100c      loopi       #0x0c
	  0391 1b1e      srri        @$AR0, $AC0.M			// zero out the updates field
	 0392 0080 034d lri         $AR0, #0x034d
	 0394 1008      loopi       #0x08
	  0395 1b1e      srri        @$AR0, $AC0.M
	 0396 00c3 0cd3 lr          $AR3, @0x0cd3			// perform volume stuff
	 0398 177f      callr       $AR3					// what a complicated volume control!
	 0399 00c3 0cd4 lr          $AR3, @0x0cd4
	 039b 177f      callr       $AR3
	 039c 00c3 0cd5 lr          $AR3, @0x0cd5
	 039e 177f      callr       $AR3
	 039f 00c3 0cd6 lr          $AR3, @0x0cd6
	 03a1 177f      callr       $AR3
	 
	 03a2 00de 033b lr          $AC0.M, @0x033b
	 03a4 b100      tst         $ACC0
	 03a5 0295 0447 jz          0x0447
	 if (mem16[0x033B] != 0)
	 {
		 03a7 00de 035a lr          $AC0.M, @0x035a
		 03a9 b100      tst         $ACC0
		 03aa 0295 03c4 jz          0x03c4
		 if (mem16[0x035A] != 0)
		 {
			 03ac 0a02      lris        $AX0.H, #0x02
			 03ad c100      cmpar       $ACC0, $AX0.H
			 03ae 0294 03ba jnz         0x03ba
			 03b0 0080 035b lri         $AR0, #0x035b
			 03b2 00c1 0ce1 lr          $AR1, @0x0ce1
			 03b4 0082 0d0c lri         $AR2, #0x0d0c
			 03b6 02bf 06c3 call        06c3_Unknown()
			 03b8 029f 03cc jmp         0x03cc
			 03ba 0080 0d0c lri         $AR0, #0x0d0c
			 03bc 00c1 0ce1 lr          $AR1, @0x0ce1
			 03be 0083 035b lri         $AR3, #0x035b
			 03c0 02bf 06ab call        0x06ab
			 03c2 029f 03cc jmp         0x03cc
		 }
		 else
		 {
			 03c4 0080 0d0c lri         $AR0, #0x0d0c
			 03c6 00c1 0ce1 lr          $AR1, @0x0ce1
			 03c8 1160 03cb bloopi      #0x60, 0x03cb
			  03ca 193f      lrri        $AC1.M, @$AR1
			  03cb 1b1f      srri        @$AR0, $AC1.M
		 }
		 03cc 0082 0355 lri         $AR2, #0x0355
		 03ce 8c00      clr15       
		 03cf 8100      clr         $ACC0
		 03d0 195c      lrri        $AC0.L, @$AR2
		 03d1 009b 0005 lri         $AX1.H, #0x0005
		 03d3 0099 5555 lri         $AX1.L, #0x5555
		 03d5 0080 0d08 lri         $AR0, #0x0d08
		 03d7 1104 03da bloopi      #0x04, 0x03da
		  03d9 195f      lrri        $AC1.M, @$AR2
		  03da 1b1f      srri        @$AR0, $AC1.M
		 03db 0081 0cc0 lri         $AR1, #0x0cc0
		 03dd 0084 0d08 lri         $IX0, #0x0d08
		 03df 0087 1000 lri         $IX3, #0x1000
		 03e1 1112 03f2 bloopi      #0x12, 0x03f2
		  03e3 4a00      addax       $ACC0, $AX1.L
		  03e4 1c1e      mrr         $AR0, $AC0.M
		  03e5 0010      addarn      $AR0, $IX0
		  03e6 8900      clr         $ACC1
		  03e7 1fbc      mrr         $AC1.L, $AC0.L
		  03e8 1577      lsr         $ACC1, #-9
		  03e9 1512      lsl         $ACC1, #18
		  03ea 1c7f      mrr         $AR3, $AC1.M
		  03eb 001f      addarn      $AR3, $IX3
		  03ec 80c3      nx'ld       : $AX0.L, $AX1.L, @$AR3
		  03ed 90c3      mul'ld      $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$AR3
		  03ee 97c3      mulmv'ld    $AX0.L, $AX0.H, $ACC1 : $AX0.L, $AX1.L, @$AR3
		  03ef 95c3      mulac'ld    $AX0.L, $AX0.H, $ACC1 : $AX0.L, $AX1.L, @$AR3
		  03f0 9500      mulac       $AX0.L, $AX0.H, $ACC1
		  03f1 4f00      addp        $ACC1
		  03f2 1b3f      srri        @$AR1, $AC1.M
		 03f3 0004      dar         $AR0
		 03f4 0006      dar         $AR2
		 03f5 189f      lrrd        $AC1.M, @$AR0
		 03f6 1adf      srrd        @$AR2, $AC1.M
		 03f7 189f      lrrd        $AC1.M, @$AR0
		 03f8 1adf      srrd        @$AR2, $AC1.M
		 03f9 189f      lrrd        $AC1.M, @$AR0
		 03fa 1adf      srrd        @$AR2, $AC1.M
		 03fb 189f      lrrd        $AC1.M, @$AR0
		 03fc 1adf      srrd        @$AR2, $AC1.M
		 03fd 1adc      srrd        @$AR2, $AC0.L
		 03fe 8d00      set15       
		 03ff 0081 033d lri         $AR1, #0x033d
		 0401 0082 0240 lri         $AR2, #0x0240
		 0403 00c3 0cd7 lr          $AR3, @0x0cd7
		 0405 177f      callr       $AR3
		 0406 00f8 034d sr          @0x034d, $AX0.L
		 0408 0081 033f lri         $AR1, #0x033f
		 040a 0082 0ac0 lri         $AR2, #0x0ac0
		 040c 00c3 0cd8 lr          $AR3, @0x0cd8
		 040e 177f      callr       $AR3
		 040f 00f8 0351 sr          @0x0351, $AX0.L
		 0411 0081 0341 lri         $AR1, #0x0341
		 0413 0082 0264 lri         $AR2, #0x0264
		 0415 00c3 0cd9 lr          $AR3, @0x0cd9
		 0417 177f      callr       $AR3
		 0418 00f8 034e sr          @0x034e, $AX0.L
		 041a 0081 0343 lri         $AR1, #0x0343
		 041c 0082 0ae4 lri         $AR2, #0x0ae4
		 041e 00c3 0cda lr          $AR3, @0x0cda
		 0420 177f      callr       $AR3
		 0421 00f8 0352 sr          @0x0352, $AX0.L
		 0423 0081 0345 lri         $AR1, #0x0345
		 0425 0082 0288 lri         $AR2, #0x0288
		 0427 00c3 0cdb lr          $AR3, @0x0cdb
		 0429 177f      callr       $AR3
		 042a 00f8 034f sr          @0x034f, $AX0.L
		 042c 0081 0347 lri         $AR1, #0x0347
		 042e 0082 0b08 lri         $AR2, #0x0b08
		 0430 00c3 0cdc lr          $AR3, @0x0cdc
		 0432 177f      callr       $AR3
		 0433 00f8 0353 sr          @0x0353, $AX0.L
		 0435 0081 0349 lri         $AR1, #0x0349
		 0437 0082 02ac lri         $AR2, #0x02ac
		 0439 00c3 0cdd lr          $AR3, @0x0cdd
		 043b 177f      callr       $AR3
		 043c 00f8 0350 sr          @0x0350, $AX0.L
		 043e 0081 034b lri         $AR1, #0x034b
		 0440 0082 0b2c lri         $AR2, #0x0b2c
		 0442 00c3 0cde lr          $AR3, @0x0cde
		 0444 177f      callr       $AR3
		 0445 00f8 0354 sr          @0x0354, $AX0.L
	 }
	 0447 00de 02f2 lr          $AC0.M, @0x02f2
	 0449 b100      tst         $ACC0
	 044a 0295 046a jz          0x046a
	 044c 00de 02f5 lr          $AC0.M, @0x02f5
	 044e 00df 02f7 lr          $AC1.M, @0x02f7
	 0450 8200      cmp         
	 0451 0293 0456 jle         0x0456
	 0453 7800      decm        $AC0.M
	 0454 029f 0459 jmp         0x0459
	 0456 0295 0459 jz          0x0459
	 0458 7400      incm        $AC0.M
	 0459 00fe 02f5 sr          @0x02f5, $AC0.M
	 045b 00de 02f6 lr          $AC0.M, @0x02f6
	 045d 00df 02f8 lr          $AC1.M, @0x02f8
	 045f 8200      cmp         
	 0460 0293 0465 jle         0x0465
	 0462 7800      decm        $AC0.M
	 0463 029f 0468 jmp         0x0468
	 0465 0295 0468 jz          0x0468
	 0467 7400      incm        $AC0.M
	 
	 0468 00fe 02f6 sr          @0x02f6, $AC0.M
	 046a 8e00      set16       
}

 046b 8100      clr         $ACC0
 046c 00de 02f2 lr          $AC0.M, @0x02f2
 046e b100      tst         $ACC0
 046f 0295 047f jz          0x047f
 0471 00de 02f3 lr          $AC0.M, @0x02f3
 0473 00dc 02f4 lr          $AC0.L, @0x02f4
 0475 2ece      srs         @DSMAH, $AC0.M
 0476 2ccf      srs         @DSMAL, $AC0.L
 0477 16cd 0ca0 si          @DSPA, #0x0ca0
 0479 16c9 0001 si          @DSCR, #0x0001
 047b 16cb 0040 si          @DSBL, #0x0040
 047d 02bf 0084 call        0084_WaitForDMACompletion()		// from 0x0CA0 to mem32[0x02F3], 64 bytes
 
 047f 8100      clr         $ACC0
 0480 8900      clr         $ACC1
 0481 00de 02d2 lr          $AC0.M, @0x02d2
 0483 00df 02d3 lr          $AC1.M, @0x02d3
 0485 2ece      srs         @DSMAH, $AC0.M
 0486 2fcf      srs         @DSMAL, $AC1.M
 0487 16cd 02d0 si          @DSPA, #0x02d0
 0489 16c9 0001 si          @DSCR, #0x0001
 048b 16cb 0140 si          @DSBL, #0x0140
 048d 02bf 0084 call        0084_WaitForDMACompletion()		// from 0x02D0 to mem32[0x02D2], 0x140 bytes
 048f 8100      clr         $ACC0
 0490 00de 02d0 lr          $AC0.M, @0x02d0
 0492 00dc 02d1 lr          $AC0.L, @0x02d1
 0494 b100      tst         $ACC0
 0495 0294 0283 jnz         0x0283							// if (mem32[0x02D0] != 0) do the whole thing again;
 
 0497 00c0 0cd2 lr          $AR0, @0x0cd2					// restore AR0;
 0499 029f 006f jmp         006f_MailHandler()
}


void 049b_Cmd_5() {
 049b 8e00      set16       
 049c 00c4 0ce6 lr          $IX0, @0x0ce6
 049e 1905      lrri        $IX1, @$AR0
 049f 00e5 0ce6 sr          @0x0ce6, $IX1
 04a1 0086 0400 lri         $IX2, #0x0400
 04a3 8100      clr         $ACC0
 04a4 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 04a5 191c      lrri        $AC0.L, @$AR0
 04a6 2ece      srs         @DSMAH, $AC0.M
 04a7 2ccf      srs         @DSMAL, $AC0.L
 04a8 1fc6      mrr         $AC0.M, $IX2
 04a9 2ecd      srs         @DSPA, $AC0.M
 04aa 16c9 0001 si          @DSCR, #0x0001
 04ac 16cb 0480 si          @DSBL, #0x0480
 04ae 02bf 0084 call        0084_WaitForDMACompletion()
 04b0 02bf 04e6 call        0x04e6
 04b2 029f 006f jmp         006f_MailHandler()
}

void 04b4_Cmd_6() {
 04b4 8e00      set16       
 04b5 00c4 0ce7 lr          $IX0, @0x0ce7
 04b7 1905      lrri        $IX1, @$AR0
 04b8 00e5 0ce7 sr          @0x0ce7, $IX1
 04ba 0086 0640 lri         $IX2, #0x0640
 04bc 8100      clr         $ACC0
 04bd 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 04be 191c      lrri        $AC0.L, @$AR0
 04bf 2ece      srs         @DSMAH, $AC0.M
 04c0 2ccf      srs         @DSMAL, $AC0.L
 04c1 1fc6      mrr         $AC0.M, $IX2
 04c2 2ecd      srs         @DSPA, $AC0.M
 04c3 16c9 0001 si          @DSCR, #0x0001
 04c5 16cb 0480 si          @DSBL, #0x0480
 04c7 02bf 0084 call        0084_WaitForDMACompletion()
 04c9 02bf 04e6 call        0x04e6
 04cb 029f 006f jmp         006f_MailHandler()
}

// Command #7 - Set output buffer address
// AXList data:
//	- command (2)
//	- something (2)
//	- Left/Right(?) output buffer address (4)
//	- Right/Left(?) output buffer address (4)
// 
void 04cd_Cmd_7() {
 04cd 8e00      set16       
 04ce 00c4 0ce8 lr          $IX0, @0x0ce8
 04d0 1905      lrri        $IX1, @$AR0
 04d1 00e5 0ce8 sr          @0x0ce8, $IX1				// mem16[0x0CE8] = mem16[0x0C01];
 04d3 0086 0880 lri         $IX2, #0x0880
 04d5 8100      clr         $ACC0
 04d6 8970      clr'l       $ACC1 : $AC0.M, @$AR0
 04d7 191c      lrri        $AC0.L, @$AR0
 04d8 2ece      srs         @DSMAH, $AC0.M
 04d9 2ccf      srs         @DSMAL, $AC0.L
 04da 1fc6      mrr         $AC0.M, $IX2
 04db 2ecd      srs         @DSPA, $AC0.M
 04dc 16c9 0001 si          @DSCR, #0x0001
 04de 16cb 0480 si          @DSBL, #0x0480				// dma from 0x0880 to mem32[0x0C02], 1152 bytes.
 04e0 02bf 0084 call        0084_WaitForDMACompletion()
 04e2 02bf 04e6 call        0x04e6
 04e4 029f 006f jmp         006f_MailHandler()
}

void 04e6_Unk() {
 04e6 8b00      m0          
 04e7 8100      clr         $ACC0
 04e8 1fc4      mrr         $AC0.M, $IX0
 04e9 1fe5      mrr         $AC1.M, $IX1
 04ea 5d00      sub         $ACC1, $ACC0
 04eb 009a 02ab lri         $AX0.H, #0x02ab
 04ed 009b 02aa lri         $AX1.H, #0x02aa
 04ef 0081 0d08 lri         $AR1, #0x0d08
 04f1 d000      mulc        $AC1.M, $AX0.H
 04f2 d400      mulcac      $AC1.M, $AX0.H, $ACC0
 04f3 111f 04f7 bloopi      #0x1f, 0x04f7
  04f5 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
  04f6 d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
  04f7 d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
 04f8 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
 04f9 4e31      addp's      $ACC0 : @$AR1, $AC0.M
 04fa 1b25      srri        @$AR1, $IX1
 04fb 8e00      set16       
 04fc 191f      lrri        $AC1.M, @$AR0
 04fd 191d      lrri        $AC1.L, @$AR0
 04fe 2fce      srs         @DSMAH, $AC1.M
 04ff 2dcf      srs         @DSMAL, $AC1.L
 0500 8900      clr         $ACC1
 0501 1fa6      mrr         $AC1.L, $IX2
 0502 2dcd      srs         @DSPA, $AC1.L
 0503 16c9 0000 si          @DSCR, #0x0000
 0505 16cb 0480 si          @DSBL, #0x0480
 0507 02bf 0084 call        0084_WaitForDMACompletion()
 0509 00e0 0cd2 sr          @0x0cd2, $AR0
 050b 8f00      set40       
 050c 8d00      set15       
 050d 8a00      m2          
 050e 0080 0d08 lri         $AR0, #0x0d08
 0510 0081 0000 lri         $AR1, #0x0000
 0512 1c41      mrr         $AR2, $AR1
 0513 1c66      mrr         $AR3, $IX2
 0514 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0515 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0516 a000      mulx        $AX0.L, $AX1.L
 0517 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 0518 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
 0519 4e00      addp        $ACC0
 051a 4800      addax       $ACC0, $AX0.L
 051b 112f 052a bloopi      #0x2f, 0x052a
  051d 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  051e 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  051f a000      mulx        $AX0.L, $AX1.L
  0520 af00      mulxmv      $AX0.L, $AX1.H, $ACC1
  0521 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
  0522 4f32      addp's      $ACC1 : @$AR2, $AC0.M
  0523 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
  0524 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0525 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0526 a000      mulx        $AX0.L, $AX1.L
  0527 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  0528 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
  0529 4e3a      addp's      $ACC0 : @$AR2, $AC1.M
  052a 482a      addax's     $ACC0, $AX0.L : @$AR2, $AC1.L
 052b 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 052c 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 052d a000      mulx        $AX0.L, $AX1.L
 052e af00      mulxmv      $AX0.L, $AX1.H, $ACC1
 052f 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
 0530 4f32      addp's      $ACC1 : @$AR2, $AC0.M
 0531 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
 0532 1b5f      srri        @$AR2, $AC1.M
 0533 1b5d      srri        @$AR2, $AC1.L
 0534 0080 0d08 lri         $AR0, #0x0d08
 0536 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0537 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0538 a000      mulx        $AX0.L, $AX1.L
 0539 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 053a 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
 053b 4e00      addp        $ACC0
 053c 4800      addax       $ACC0, $AX0.L
 053d 112f 054c bloopi      #0x2f, 0x054c
  053f 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0540 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0541 a000      mulx        $AX0.L, $AX1.L
  0542 af00      mulxmv      $AX0.L, $AX1.H, $ACC1
  0543 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
  0544 4f32      addp's      $ACC1 : @$AR2, $AC0.M
  0545 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
  0546 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0547 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0548 a000      mulx        $AX0.L, $AX1.L
  0549 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  054a 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
  054b 4e3a      addp's      $ACC0 : @$AR2, $AC1.M
  054c 482a      addax's     $ACC0, $AX0.L : @$AR2, $AC1.L
 054d 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 054e 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 054f a000      mulx        $AX0.L, $AX1.L
 0550 af00      mulxmv      $AX0.L, $AX1.H, $ACC1
 0551 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
 0552 4f32      addp's      $ACC1 : @$AR2, $AC0.M
 0553 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
 0554 1b5f      srri        @$AR2, $AC1.M
 0555 1b5d      srri        @$AR2, $AC1.L
 0556 0080 0d08 lri         $AR0, #0x0d08
 0558 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0559 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 055a a000      mulx        $AX0.L, $AX1.L
 055b ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 055c 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
 055d 4e00      addp        $ACC0
 055e 4800      addax       $ACC0, $AX0.L
 055f 112f 056e bloopi      #0x2f, 0x056e
  0561 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0562 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0563 a000      mulx        $AX0.L, $AX1.L
  0564 af00      mulxmv      $AX0.L, $AX1.H, $ACC1
  0565 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
  0566 4f32      addp's      $ACC1 : @$AR2, $AC0.M
  0567 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
  0568 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0569 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  056a a000      mulx        $AX0.L, $AX1.L
  056b ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  056c 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
  056d 4e3a      addp's      $ACC0 : @$AR2, $AC1.M
  056e 482a      addax's     $ACC0, $AX0.L : @$AR2, $AC1.L
 056f 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0570 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0571 a000      mulx        $AX0.L, $AX1.L
 0572 af00      mulxmv      $AX0.L, $AX1.H, $ACC1
 0573 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
 0574 4f32      addp's      $ACC1 : @$AR2, $AC0.M
 0575 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
 0576 1b5f      srri        @$AR2, $AC1.M
 0577 1b5d      srri        @$AR2, $AC1.L
 0578 00c0 0cd2 lr          $AR0, @0x0cd2
 057a 02df      ret       
}

void 057b_Cmd_A() {   
 057b 8d00      set15       
 057c 8f00      set40       
 057d 8a00      m2          
 057e 8900      clr         $ACC1
 057f 8168      clr'l       $ACC0 : $AC1.L, @$AR0
 0580 0098 0000 lri         $AX0.L, #0x0000
 0582 0099 0001 lri         $AX1.L, #0x0001
 0584 0081 0000 lri         $AR1, #0x0000
 0586 193e      lrri        $AC0.M, @$AR1
 0587 193c      lrri        $AC0.L, @$AR1
 0588 1160 0593 bloopi      #0x60, 0x0593
  058a a100      tstaxl      $ACC0
  058b 8271      cmp'l       : $AC0.M, @$AR1
  058c 0277      ifc         
  058d 1f19      mrr         $AX0.L, $AX1.L
  058e 193c      lrri        $AC0.L, @$AR1
  058f a100      tstaxl      $ACC0
  0590 8271      cmp'l       : $AC0.M, @$AR1
  0591 0277      ifc         
  0592 1f19      mrr         $AX0.L, $AX1.L
  0593 193c      lrri        $AC0.L, @$AR1
 0594 1fd8      mrr         $AC0.M, $AX0.L
 0595 b100      tst         $ACC0
 0596 0294 05c0 jnz         0x05c0
 0598 00de 0ce4 lr          $AC0.M, @0x0ce4
 059a b100      tst         $ACC0
 059b 0294 05a2 jnz         0x05a2
 059d 191c      lrri        $AC0.L, @$AR0
 059e 191c      lrri        $AC0.L, @$AR0
 059f 191c      lrri        $AC0.L, @$AR0
 05a0 029f 006f jmp         006f_MailHandler()
 05a2 8b00      m0          
 05a3 7a00      dec         $ACC0
 05a4 00fe 0ce4 sr          @0x0ce4, $AC0.M
 05a6 8400      clrp        
 05a7 0099 00c0 lri         $AX1.L, #0x00c0
 05a9 1f1e      mrr         $AX0.L, $AC0.M
 05aa a000      mulx        $AX0.L, $AX1.L
 05ab 191e      lrri        $AC0.M, @$AR0
 05ac 191e      lrri        $AC0.M, @$AR0
 05ad 191c      lrri        $AC0.L, @$AR0
 05ae 00e0 0cd2 sr          @0x0cd2, $AR0
 05b0 009a 0000 lri         $AX0.H, #0x0000
 05b2 0098 0840 lri         $AX0.L, #0x0840
 05b4 4e00      addp        $ACC0
 05b5 4800      addax       $ACC0, $AX0.L
 05b6 2ece      srs         @DSMAH, $AC0.M
 05b7 2ccf      srs         @DSMAL, $AC0.L
 05b8 16cd 0d08 si          @DSPA, #0x0d08
 05ba 16c9 0000 si          @DSCR, #0x0000
 05bc 16cb 00c0 si          @DSBL, #0x00c0
 05be 029f 05d6 jmp         0x05d6
 05c0 8b00      m0          
 05c1 00d8 0ce4 lr          $AX0.L, @0x0ce4
 05c3 0099 00c0 lri         $AX1.L, #0x00c0
 05c5 a000      mulx        $AX0.L, $AX1.L
 05c6 191e      lrri        $AC0.M, @$AR0
 05c7 00fe 0ce4 sr          @0x0ce4, $AC0.M
 05c9 191e      lrri        $AC0.M, @$AR0
 05ca 191c      lrri        $AC0.L, @$AR0
 05cb 00e0 0cd2 sr          @0x0cd2, $AR0
 05cd 4e00      addp        $ACC0
 05ce 2ece      srs         @DSMAH, $AC0.M
 05cf 2ccf      srs         @DSMAL, $AC0.L
 05d0 16cd 0d08 si          @DSPA, #0x0d08
 05d2 16c9 0000 si          @DSCR, #0x0000
 05d4 16cb 00c0 si          @DSBL, #0x00c0
 05d6 02bf 0084 call        0084_WaitForDMACompletion()
 05d8 8a48      m2'l        : $AX1.L, @$AR0
 05d9 0083 0d08 lri         $AR3, #0x0d08
 05db 0080 0000 lri         $AR0, #0x0000
 05dd 0081 0000 lri         $AR1, #0x0000
 05df 1979      lrri        $AX1.L, @$AR3
 05e0 193a      lrri        $AX0.H, @$AR1
 05e1 b041      mulx'l      $AX0.H, $AX1.L : $AX0.L, @$AR1
 05e2 a64b      mulxmv'l    $AX0.L, $AX1.L, $ACC0 : $AX1.L, @$AR3
 05e3 f051      lsl16'l     $ACC0 : $AX0.H, @$AR1
 05e4 b441      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AX0.L, @$AR1
 05e5 9100      asr16       $ACC0
 05e6 1130 05ef bloopi      #0x30, 0x05ef
  05e8 a792      mulxmv'sl   $AX0.L, $AX1.L, $ACC1 : $AC0.M, $AX1.L
  05e9 f151      lsl16'l     $ACC1 : $AX0.H, @$AR1
  05ea b520      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR0, $AC0.L
  05eb 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
  05ec a693      mulxmv'sl   $AX0.L, $AX1.L, $ACC0 : $AC1.M, $AX1.L
  05ed f051      lsl16'l     $ACC0 : $AX0.H, @$AR1
  05ee b428      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR0, $AC1.L
  05ef 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
 05f0 0083 0d08 lri         $AR3, #0x0d08
 05f2 0080 00c0 lri         $AR0, #0x00c0
 05f4 0081 00c0 lri         $AR1, #0x00c0
 05f6 1979      lrri        $AX1.L, @$AR3
 05f7 193a      lrri        $AX0.H, @$AR1
 05f8 b041      mulx'l      $AX0.H, $AX1.L : $AX0.L, @$AR1
 05f9 a64b      mulxmv'l    $AX0.L, $AX1.L, $ACC0 : $AX1.L, @$AR3
 05fa f051      lsl16'l     $ACC0 : $AX0.H, @$AR1
 05fb b441      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AX0.L, @$AR1
 05fc 9100      asr16       $ACC0
 05fd 1130 0606 bloopi      #0x30, 0x0606
  05ff a792      mulxmv'sl   $AX0.L, $AX1.L, $ACC1 : $AC0.M, $AX1.L
  0600 f151      lsl16'l     $ACC1 : $AX0.H, @$AR1
  0601 b520      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR0, $AC0.L
  0602 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
  0603 a693      mulxmv'sl   $AX0.L, $AX1.L, $ACC0 : $AC1.M, $AX1.L
  0604 f051      lsl16'l     $ACC0 : $AX0.H, @$AR1
  0605 b428      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR0, $AC1.L
  0606 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
 0607 00c0 0cd2 lr          $AR0, @0x0cd2
 0609 029f 006f jmp         006f_MailHandler()
}

void 060b_Cmd_B() {
 060b 8e48      set16'l     : $AX1.L, @$AR0
 060c 8b70      m0'l        : $AC0.M, @$AR0
 060d 8960      clr'l       $ACC1 : $AC0.L, @$AR0
 060e 00e0 0cd2 sr          @0x0cd2, $AR0
 0610 2ece      srs         @DSMAH, $AC0.M
 0611 2ccf      srs         @DSMAL, $AC0.L
 0612 16cd 0180 si          @DSPA, #0x0180
 0614 16c9 0001 si          @DSCR, #0x0001
 0616 16cb 0180 si          @DSBL, #0x0180
 0618 8100      clr         $ACC0
 0619 00de 0ce5 lr          $AC0.M, @0x0ce5
 061b 1ff9      mrr         $AC1.M, $AX1.L
 061c 5d00      sub         $ACC1, $ACC0
 061d 00f9 0ce5 sr          @0x0ce5, $AX1.L
 061f 009a 02ab lri         $AX0.H, #0x02ab
 0621 009b 02aa lri         $AX1.H, #0x02aa
 0623 0081 0d08 lri         $AR1, #0x0d08
 0625 d000      mulc        $AC1.M, $AX0.H
 0626 d400      mulcac      $AC1.M, $AX0.H, $ACC0
 0627 111f 062b bloopi      #0x1f, 0x062b
  0629 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
  062a d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
  062b d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
 062c dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
 062d 4e31      addp's      $ACC0 : @$AR1, $AC0.M
 062e 1b39      srri        @$AR1, $AX1.L
 062f 02bf 0084 call        0084_WaitForDMACompletion()
 0631 8f00      set40       
 0632 8d00      set15       
 0633 8a00      m2          
 0634 0080 0d08 lri         $AR0, #0x0d08
 0636 0081 0400 lri         $AR1, #0x0400
 0638 0083 0000 lri         $AR3, #0x0000
 063a 0082 00c0 lri         $AR2, #0x00c0
 063c 1918      lrri        $AX0.L, @$AR0
 063d 195b      lrri        $AX1.H, @$AR2
 063e 1959      lrri        $AX1.L, @$AR2
 063f a000      mulx        $AX0.L, $AX1.L
 0640 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 0641 9100      asr16       $ACC0
 0642 4e5b      addp'l      $ACC0 : $AX1.H, @$AR3
 0643 f04b      lsl16'l     $ACC0 : $AX1.L, @$AR3
 0644 115f 064f bloopi      #0x5f, 0x064f
  0646 a031      mulx's      $AX0.L, $AX1.L : @$AR1, $AC0.M
  0647 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  0648 9140      asr16'l     $ACC0 : $AX0.L, @$AR0
  0649 4e5a      addp'l      $ACC0 : $AX1.H, @$AR2
  064a f04a      lsl16'l     $ACC0 : $AX1.L, @$AR2
  064b a031      mulx's      $AX0.L, $AX1.L : @$AR1, $AC0.M
  064c ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  064d 9100      asr16       $ACC0
  064e 4e5b      addp'l      $ACC0 : $AX1.H, @$AR3
  064f f04b      lsl16'l     $ACC0 : $AX1.L, @$AR3
 0650 a031      mulx's      $AX0.L, $AX1.L : @$AR1, $AC0.M
 0651 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 0652 9100      asr16       $ACC0
 0653 4e00      addp        $ACC0
 0654 f000      lsl16       $ACC0
 0655 1b3e      srri        @$AR1, $AC0.M
 0656 8e00      set16       
 0657 00c0 0cd2 lr          $AR0, @0x0cd2
 0659 191e      lrri        $AC0.M, @$AR0
 065a 191c      lrri        $AC0.L, @$AR0
 065b 2ece      srs         @DSMAH, $AC0.M
 065c 2ccf      srs         @DSMAL, $AC0.L
 065d 16cd 0400 si          @DSPA, #0x0400
 065f 16c9 0001 si          @DSCR, #0x0001
 0661 16cb 0180 si          @DSBL, #0x0180
 0663 02bf 0084 call        0084_WaitForDMACompletion()
 0665 16fc dcd1 si          @DMBH, #0xdcd1 <--------------!!!
 0667 16fd 0004 si          @DMBL, #0x0004 <--------------!!!
 0669 16fb 0001 si          @DIRQ, #0x0001 <--------------!!!
 066b 26fc      lrs         $AC0.M, @DMBH
 066c 02a0 8000 andf        $AC0.M, #0x8000
 066e 029c 066b jlnz        0x066b
 0670 029f 006f jmp         006f_MailHandler()
}

// Command 0xE - AXList end
void 0672_Cmd_E() {
 0672 16fc dcd1 si          @DMBH, #0xdcd1
 0674 16fd 0002 si          @DMBL, #0x0002
 0676 16fb 0001 si          @DIRQ, #0x0001					// send a 0xDCD10002 and trigger an IRQ
 0678 029f 0f9b jmp         0x0f9b
 067a 029f 004c jmp         0x004c
}

void 067c_Cmd_D() {
 067c 8c00      clr15       
 067d 8a00      m2          
 067e 8f00      set40       
 067f 0081 0ac0 lri         $AR1, #0x0ac0
 0681 0082 0240 lri         $AR2, #0x0240
 0683 1fa1      mrr         $AC1.L, $AR1
 0684 1112 0689 bloopi      #0x12, 0x0689
  0686 195e      lrri        $AC0.M, @$AR2
  0687 195c      lrri        $AC0.L, @$AR2
  0688 f000      lsl16       $ACC0
  0689 1b3e      srri        @$AR1, $AC0.M
 068a 191e      lrri        $AC0.M, @$AR0
 068b 191c      lrri        $AC0.L, @$AR0
 068c 2ece      srs         @DSMAH, $AC0.M
 068d 2ccf      srs         @DSMAL, $AC0.L
 068e 2dcd      srs         @DSPA, $AC1.L
 068f 1103 06a2 bloopi      #0x03, 0x06a2
  0691 16c9 0001 si          @DSCR, #0x0001
  0693 16cb 0024 si          @DSBL, #0x0024
  0695 1fa1      mrr         $AC1.L, $AR1
  0696 1112 069b bloopi      #0x12, 0x069b
   0698 195e      lrri        $AC0.M, @$AR2
   0699 195c      lrri        $AC0.L, @$AR2
   069a f000      lsl16       $ACC0
   069b 1b3e      srri        @$AR1, $AC0.M
  069c 02bf 0084 call        0084_WaitForDMACompletion()
  069e 191e      lrri        $AC0.M, @$AR0
  069f 191c      lrri        $AC0.L, @$AR0
  06a0 2ece      srs         @DSMAH, $AC0.M
  06a1 2ccf      srs         @DSMAL, $AC0.L
 06a2 2dcd      srs         @DSPA, $AC1.L
 06a3 16c9 0001 si          @DSCR, #0x0001
 06a5 16cb 0024 si          @DSBL, #0x0024
 06a7 02bf 0084 call        0084_WaitForDMACompletion()
 06a9 029f 006f jmp         006f_MailHandler()
}

void 06ab_unknown() {
 06ab 0087 ffff lri         $IX3, #0xffff
 06ad 1c83      mrr         $IX0, $AR3
 06ae 197e      lrri        $AC0.M, @$AR3
 06af 80e1      nx'ld       : $AX0.H, $AX1.L, @$AR1
 06b0 b04f      mulx'ln     $AX0.H, $AX1.L : $AX1.L, @$AR3
 06b1 1f5e      mrr         $AX0.H, $AC0.M
 06b2 e2e1      maddx'ld    $AX0.H, $AX1.L : $AX0.H, $AX1.L, @$AR1
 06b3 b64f      mulxmv'ln   $AX0.H, $AX1.L, $ACC0 : $AX1.L, @$AR3
 06b4 1f5e      mrr         $AX0.H, $AC0.M
 06b5 e2e1      maddx'ld    $AX0.H, $AX1.L : $AX0.H, $AX1.L, @$AR1
 06b6 112f 06bd bloopi      #0x2f, 0x06bd
  06b8 b79a      mulxmv'slm  $AX0.H, $AX1.L, $ACC1 : $AC0.M, $AX1.L
  06b9 1f5f      mrr         $AX0.H, $AC1.M
  06ba e2e1      maddx'ld    $AX0.H, $AX1.L : $AX0.H, $AX1.L, @$AR1
  06bb b69b      mulxmv'slm  $AX0.H, $AX1.L, $ACC0 : $AC1.M, $AX1.L
  06bc 1f5e      mrr         $AX0.H, $AC0.M
  06bd e2e1      maddx'ld    $AX0.H, $AX1.L : $AX0.H, $AX1.L, @$AR1
 06be 6f30      movp's      $ACC1 : @$AR0, $AC0.M
 06bf 1b1f      srri        @$AR0, $AC1.M
 06c0 1c64      mrr         $AR3, $IX0
 06c1 1b7f      srri        @$AR3, $AC1.M
 06c2 02df      ret         
}

void 06c3_Unknown() {
 06c3 8c00      clr15       
 06c4 8b00      m0          
 06c5 1ca0      mrr         $IX1, $AR0
 06c6 0083 0370 lri         $AR3, #0x0370
 06c8 191a      lrri        $AX0.H, @$AR0
 06c9 1918      lrri        $AX0.L, @$AR0
 06ca 1b7a      srri        @$AR3, $AX0.H
 06cb 1b78      srri        @$AR3, $AX0.L
 06cc 1919      lrri        $AX1.L, @$AR0
 06cd 191b      lrri        $AX1.H, @$AR0
 06ce 0083 0d03 lri         $AR3, #0x0d03
 06d0 1105 06d3 bloopi      #0x05, 0x06d3
  06d2 191a      lrri        $AX0.H, @$AR0
  06d3 1b7a      srri        @$AR3, $AX0.H
 06d4 0080 0d03 lri         $AR0, #0x0d03
 06d6 0088 0004 lri         $WR0, #0x0004
 06d8 0083 0370 lri         $AR3, #0x0370
 06da 008b 0001 lri         $WR3, #0x0001
 06dc 0087 0000 lri         $IX3, #0x0000
 06de 193f      lrri        $AC1.M, @$AR1
 06df 191a      lrri        $AX0.H, @$AR0
 06e0 d0c3      mulc'ld     $AC1.M, $AX0.H : $AX0.L, $AX1.L, @$AR3
 06e1 f2cb      madd'ldm    $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$AR3
 06e2 f2a9      madd'lsm    $AX0.L, $AX0.H : $AX0.H, $AC1.M
 06e3 e250      maddx'l     $AX0.H, $AX1.L : $AX0.H, @$AR0
 06e4 e379      maddx'l     $AX0.H, $AX1.H : $AC1.M, @$AR1
 06e5 6e50      movp'l      $ACC0 : $AX0.H, @$AR0
 06e6 1482      asl         $ACC0, #2
 06e7 fc00      clrl        $AC1.L
 06e8 1f7e      mrr         $AX1.H, $AC0.M
 06e9 1b5e      srri        @$AR2, $AC0.M
 06ea 112f 06ff bloopi      #0x2f, 0x06ff
  06ec d0c3      mulc'ld     $AC1.M, $AX0.H : $AX0.L, $AX1.L, @$AR3
  06ed f2cb      madd'ldm    $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$AR3
  06ee f2a9      madd'lsm    $AX0.L, $AX0.H : $AX0.H, $AC1.M
  06ef e350      maddx'l     $AX0.H, $AX1.H : $AX0.H, @$AR0
  06f0 e279      maddx'l     $AX0.H, $AX1.L : $AC1.M, @$AR1
  06f1 6e50      movp'l      $ACC0 : $AX0.H, @$AR0
  06f2 1482      asl         $ACC0, #2
  06f3 fc00      clrl        $AC1.L
  06f4 1f3e      mrr         $AX1.L, $AC0.M
  06f5 1b5e      srri        @$AR2, $AC0.M
  06f6 d0c3      mulc'ld     $AC1.M, $AX0.H : $AX0.L, $AX1.L, @$AR3
  06f7 f2cb      madd'ldm    $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$AR3
  06f8 f2a9      madd'lsm    $AX0.L, $AX0.H : $AX0.H, $AC1.M
  06f9 e250      maddx'l     $AX0.H, $AX1.L : $AX0.H, @$AR0
  06fa e379      maddx'l     $AX0.H, $AX1.H : $AC1.M, @$AR1
  06fb 6e50      movp'l      $ACC0 : $AX0.H, @$AR0
  06fc 1482      asl         $ACC0, #2
  06fd fc00      clrl        $AC1.L
  06fe 1f7e      mrr         $AX1.H, $AC0.M
  06ff 1b5e      srri        @$AR2, $AC0.M
 0700 d0c3      mulc'ld     $AC1.M, $AX0.H : $AX0.L, $AX1.L, @$AR3
 0701 f2cb      madd'ldm    $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$AR3
 0702 f2a9      madd'lsm    $AX0.L, $AX0.H : $AX0.H, $AC1.M
 0703 e350      maddx'l     $AX0.H, $AX1.H : $AX0.H, @$AR0
 0704 e200      maddx       $AX0.H, $AX1.L
 0705 6e00      movp        $ACC0
 0706 1482      asl         $ACC0, #2
 0707 fc00      clrl        $AC1.L
 0708 1f3e      mrr         $AX1.L, $AC0.M
 0709 1b5e      srri        @$AR2, $AC0.M
 070a 0088 ffff lri         $WR0, #0xffff
 070c 008b ffff lri         $WR3, #0xffff
 070e 1c05      mrr         $AR0, $IX1
 070f 0083 0370 lri         $AR3, #0x0370
 0711 197a      lrri        $AX0.H, @$AR3
 0712 1978      lrri        $AX0.L, @$AR3
 0713 1b1a      srri        @$AR0, $AX0.H
 0714 1b18      srri        @$AR0, $AX0.L
 0715 1b19      srri        @$AR0, $AX1.L
 0716 1b1b      srri        @$AR0, $AX1.H
 0717 8d00      set15       
 0718 8a00      m2          
 0719 02df      ret 
}

// Sample rate converter #0 - None
//
 071a 02bf 07e6 call        0x07e6_SetupAccelerator()
 071c 8c00      clr15       
 071d 8a00      m2          
 071e 8f00      set40       
 // Read ratio
 071f 195b      lrri        $AX1.H, @$AR2
 0720 1959      lrri        $AX1.L, @$AR2
 0721 8100      clr         $ACC0
 // Read cur_addr fractional part
 0722 195c      lrri        $AC0.L, @$AR2
 0723 0080 0d08 lri         $AR0, #0x0d08
 0725 0088 0003 lri         $WR0, #0x0003
 // Read the last samples, copy them to 0x0D08
 0727 195f      lrri        $AC1.M, @$AR2
 0728 1b1f      srri        @$AR0, $AC1.M
 0729 195f      lrri        $AC1.M, @$AR2
 072a 1b1f      srri        @$AR0, $AC1.M
 072b 195f      lrri        $AC1.M, @$AR2
 072c 1b1f      srri        @$AR0, $AC1.M
 072d 195f      lrri        $AC1.M, @$AR2
 072e 1b1f      srri        @$AR0, $AC1.M
 
 072f 0081 0c60 lri         $AR1, #0x0c60
 0731 0082 ffdd lri         $AR2, #0xffdd
 0733 00c7 0ce0 lr          $IX3, @0x0ce0
 0735 4a00      addax       $ACC0, $AX1.L
 0736 1160 074a bloopi      #0x60, 0x074a
  0738 8912      clr'mv      $ACC1 : $AX0.L, $AC0.M
  0739 1fbc      mrr         $AC1.L, $AC0.L
  073a 1577      lsr         $ACC1, #-9
  073b 1512      lsl         $ACC1, #18
  073c 1c7f      mrr         $AR3, $AC1.M
  073d 001f      addarn      $AR3, $IX3
  073e 0078 0743 bloop       $AX0.L, 0x0743
   0740 185a      lrr         $AX0.H, @$AR2
   0741 1b1a      srri        @$AR0, $AX0.H
   0742 5000      subr        $ACC0, $AX0.L
   0743 1f1d      mrr         $AX0.L, $AC1.L
  0744 4ac3      addax'ld    $ACC0, $AX1.L : $AX0.L, $AX1.L, @$AR3
  0745 90c3      mul'ld      $AX0.L, $AX0.H : $AX0.L, $AX1.L, @$AR3
  0746 97c3      mulmv'ld    $AX0.L, $AX0.H, $ACC1 : $AX0.L, $AX1.L, @$AR3
  0747 95c3      mulac'ld    $AX0.L, $AX0.H, $ACC1 : $AX0.L, $AX1.L, @$AR3
  0748 9500      mulac       $AX0.L, $AX0.H, $ACC1
  0749 4f00      addp        $ACC1
  074a 1b3f      srri        @$AR1, $AC1.M
 074b 5a00      subax       $ACC0, $AX1.L
 074c 0004      dar         $AR0
 074d 0082 0329 lri         $AR2, #0x0329
 074f 189f      lrrd        $AC1.M, @$AR0
 0750 1adf      srrd        @$AR2, $AC1.M
 0751 189f      lrrd        $AC1.M, @$AR0
 0752 1adf      srrd        @$AR2, $AC1.M
 0753 189f      lrrd        $AC1.M, @$AR0
 0754 1adf      srrd        @$AR2, $AC1.M
 0755 189f      lrrd        $AC1.M, @$AR0
 0756 1adf      srrd        @$AR2, $AC1.M
 0757 0088 ffff lri         $WR0, #0xffff
 0759 1adc      srrd        @$AR2, $AC0.L
 075a 0082 0322 lri         $AR2, #0x0322
 075c 27dc      lrs         $AC1.M, @yn2
 075d 1adf      srrd        @$AR2, $AC1.M
 075e 27db      lrs         $AC1.M, @yn1
 075f 1adf      srrd        @$AR2, $AC1.M
 0760 27da      lrs         $AC1.M, @pred_scale
 0761 1adf      srrd        @$AR2, $AC1.M
 0762 0082 030e lri         $AR2, #0x030e
 0764 27d9      lrs         $AC1.M, @ACCAL
 0765 1adf      srrd        @$AR2, $AC1.M
 0766 27d8      lrs         $AC1.M, @ACCAH
 0767 1adf      srrd        @$AR2, $AC1.M
 0768 8e00      set16       
 0769 8b00      m0          
 076a 02df      ret         

// Sample rate converter #1 - ?
//
 076b 02bf 07e6 call        0x07e6_SetupAccelerator()
 076d 8d00      set15       
 076e 8b00      m0          
 076f 8f00      set40       
 0770 195b      lrri        $AX1.H, @$AR2
 0771 1945      lrri        $IX1, @$AR2
 0772 8100      clr         $ACC0
 0773 195c      lrri        $AC0.L, @$AR2
 0774 0080 0d08 lri         $AR0, #0x0d08
 0776 0088 0003 lri         $WR0, #0x0003
 0778 0084 0003 lri         $IX0, #0x0003
 077a 195f      lrri        $AC1.M, @$AR2
 077b 1b1f      srri        @$AR0, $AC1.M
 077c 195f      lrri        $AC1.M, @$AR2
 077d 1b1f      srri        @$AR0, $AC1.M
 077e 195f      lrri        $AC1.M, @$AR2
 077f 1b1f      srri        @$AR0, $AC1.M
 0780 195f      lrri        $AC1.M, @$AR2
 0781 1b1f      srri        @$AR0, $AC1.M
 0782 0081 0c60 lri         $AR1, #0x0c60
 0784 0082 ffdd lri         $AR2, #0xffdd
 0786 1f25      mrr         $AX1.L, $IX1
 0787 4a00      addax       $ACC0, $AX1.L
 0788 1160 079f bloopi      #0x60, 0x079f
  078a 8912      clr'mv      $ACC1 : $AX0.L, $AC0.M
  078b 0078 0790 bloop       $AX0.L, 0x0790
   078d 185a      lrr         $AX0.H, @$AR2
   078e 1b1a      srri        @$AR0, $AX0.H
   078f 5000      subr        $ACC0, $AX0.L
   0790 1f1f      mrr         $AX0.L, $AC1.M
  0791 7c00      neg         $ACC0
  0792 b114      tst'mv      $ACC0 : $AX1.L, $AC0.L
  0793 0294 0799 jnz         0x0799
  0795 191f      lrri        $AC1.M, @$AR0
  0796 0010      addarn      $AR0, $IX0
  0797 029f 079e jmp         0x079e
  0799 7c50      neg'l       $ACC0 : $AX0.H, @$AR0
  079a b014      mulx'mv     $AX0.H, $AX1.L : $AX1.L, $AC0.L
  079b 199a      lrrn        $AX0.H, @$AR0
  079c b700      mulxmv      $AX0.H, $AX1.L, $ACC1
  079d 4f00      addp        $ACC1
  079e 1f25      mrr         $AX1.L, $IX1
  079f 4a39      addax's     $ACC0, $AX1.L : @$AR1, $AC1.M
 07a0 5a00      subax       $ACC0, $AX1.L
 07a1 0004      dar         $AR0
 07a2 0082 0329 lri         $AR2, #0x0329
 07a4 189f      lrrd        $AC1.M, @$AR0
 07a5 1adf      srrd        @$AR2, $AC1.M
 07a6 189f      lrrd        $AC1.M, @$AR0
 07a7 1adf      srrd        @$AR2, $AC1.M
 07a8 189f      lrrd        $AC1.M, @$AR0
 07a9 1adf      srrd        @$AR2, $AC1.M
 07aa 189f      lrrd        $AC1.M, @$AR0
 07ab 1adf      srrd        @$AR2, $AC1.M
 07ac 0088 ffff lri         $WR0, #0xffff
 07ae 1adc      srrd        @$AR2, $AC0.L
 07af 0082 0322 lri         $AR2, #0x0322
 07b1 27dc      lrs         $AC1.M, @yn2
 07b2 1adf      srrd        @$AR2, $AC1.M
 07b3 27db      lrs         $AC1.M, @yn1
 07b4 1adf      srrd        @$AR2, $AC1.M
 07b5 27da      lrs         $AC1.M, @pred_scale
 07b6 1adf      srrd        @$AR2, $AC1.M
 07b7 0082 030e lri         $AR2, #0x030e
 07b9 27d9      lrs         $AC1.M, @ACCAL
 07ba 1adf      srrd        @$AR2, $AC1.M
 07bb 27d8      lrs         $AC1.M, @ACCAH
 07bc 1adf      srrd        @$AR2, $AC1.M
 07bd 8e00      set16       
 07be 8c00      clr15       
 07bf 02df      ret         

// Sample rate converter #2 - No sample rate conversion
// Just copies 96 bytes of data to the output buffer
//
 07c0 02bf 07e6 call        0x07e6_SetupAccelerator()
 07c2 0080 0c60 lri         $AR0, #0x0c60
 07c4 0082 ffdd lri         $AR2, #0xffdd				// 0xFFDD: ACDAT
 07c6 1160 07cb bloopi      #0x60, 0x07cb
  07c8 1844      lrr         $IX0, @$AR2				// Load a sample from accelerator
  07c9 1b04      srri        @$AR0, $IX0				// and store it to 0x0C60+
  07ca 0000      nop         
  07cb 0000      nop         
 07cc 0004      dar         $AR0
 // Save the 4 last samples in the PB
 07cd 0082 0329 lri         $AR2, #0x0329
 07cf 189f      lrrd        $AC1.M, @$AR0
 07d0 1adf      srrd        @$AR2, $AC1.M
 07d1 189f      lrrd        $AC1.M, @$AR0
 07d2 1adf      srrd        @$AR2, $AC1.M
 07d3 189f      lrrd        $AC1.M, @$AR0
 07d4 1adf      srrd        @$AR2, $AC1.M
 07d5 189f      lrrd        $AC1.M, @$AR0
 07d6 1adf      srrd        @$AR2, $AC1.M
 // Save the accelerator regs in the PB
 07d7 0082 0322 lri         $AR2, #0x0322
 // YN1 and YN2
 07d9 27dc      lrs         $AC1.M, @yn2
 07da 1adf      srrd        @$AR2, $AC1.M
 07db 27db      lrs         $AC1.M, @yn1
 07dc 1adf      srrd        @$AR2, $AC1.M
 // Pred scale
 07dd 27da      lrs         $AC1.M, @pred_scale
 07de 1adf      srrd        @$AR2, $AC1.M
 07df 0082 030e lri         $AR2, #0x030e
 // Current address
 07e1 27d9      lrs         $AC1.M, @ACCAL
 07e2 1adf      srrd        @$AR2, $AC1.M
 07e3 27d8      lrs         $AC1.M, @ACCAH
 07e4 1adf      srrd        @$AR2, $AC1.M
 07e5 02df      ret         

// Called by the three sample rate converters above.
// Sets up the accelerator so that it can be used to
// read the audio data.
// The accelerator area is set to be the same length
// as the sound data being played, so that looping
// will be handled by exception vector #5 (ACCOV).
// Parameters: None
// Return: AR0 = 0x0328
//
07e6_SetupAccelerator()
{
 // Set the accelerator regs from the PB
 07e6 0082 0308 lri         $AR2, #0x0308
 // Sample format
 07e8 195e      lrri        $AC0.M, @$AR2
 07e9 2ed1      srs         @SampleFormat, $AC0.M
 // Start address
 07ea 195e      lrri        $AC0.M, @$AR2
 07eb 2ed4      srs         @ACSAH, $AC0.M
 07ec 195e      lrri        $AC0.M, @$AR2
 07ed 2ed5      srs         @ACSAL, $AC0.M
 // End address
 07ee 195e      lrri        $AC0.M, @$AR2
 07ef 2ed6      srs         @ACEAH, $AC0.M
 07f0 195e      lrri        $AC0.M, @$AR2
 07f1 2ed7      srs         @ACEAL, $AC0.M
 // Current address
 07f2 195e      lrri        $AC0.M, @$AR2
 07f3 2ed8      srs         @ACCAH, $AC0.M
 07f4 195e      lrri        $AC0.M, @$AR2
 07f5 2ed9      srs         @ACCAL, $AC0.M
 // 16 coefs
 07f6 195e      lrri        $AC0.M, @$AR2
 07f7 2ea0      srs         @COEF_A1_0, $AC0.M
 07f8 195e      lrri        $AC0.M, @$AR2
 07f9 2ea1      srs         @COEF_A2_0, $AC0.M
 07fa 195e      lrri        $AC0.M, @$AR2
 07fb 2ea2      srs         @COEF_A1_1, $AC0.M
 07fc 195e      lrri        $AC0.M, @$AR2
 07fd 2ea3      srs         @COEF_A2_1, $AC0.M
 07fe 195e      lrri        $AC0.M, @$AR2
 07ff 2ea4      srs         @COEF_A1_2, $AC0.M
 0800 195e      lrri        $AC0.M, @$AR2
 0801 2ea5      srs         @COEF_A2_2, $AC0.M
 0802 195e      lrri        $AC0.M, @$AR2
 0803 2ea6      srs         @COEF_A1_3, $AC0.M
 0804 195e      lrri        $AC0.M, @$AR2
 0805 2ea7      srs         @COEF_A2_3, $AC0.M
 0806 195e      lrri        $AC0.M, @$AR2
 0807 2ea8      srs         @COEF_A1_4, $AC0.M
 0808 195e      lrri        $AC0.M, @$AR2
 0809 2ea9      srs         @COEF_A2_4, $AC0.M
 080a 195e      lrri        $AC0.M, @$AR2
 080b 2eaa      srs         @COEF_A1_5, $AC0.M
 080c 195e      lrri        $AC0.M, @$AR2
 080d 2eab      srs         @COEF_A2_5, $AC0.M
 080e 195e      lrri        $AC0.M, @$AR2
 080f 2eac      srs         @COEF_A1_6, $AC0.M
 0810 195e      lrri        $AC0.M, @$AR2
 0811 2ead      srs         @COEF_A2_6, $AC0.M
 0812 195e      lrri        $AC0.M, @$AR2
 0813 2eae      srs         @COEF_A1_7, $AC0.M
 0814 195e      lrri        $AC0.M, @$AR2
 0815 2eaf      srs         @COEF_A2_7, $AC0.M
 // Gain
 0816 195e      lrri        $AC0.M, @$AR2
 0817 2ede      srs         @GAIN, $AC0.M
 // Pred scale
 0818 195e      lrri        $AC0.M, @$AR2
 0819 2eda      srs         @pred_scale, $AC0.M
 // YN1 and YN2
 081a 195e      lrri        $AC0.M, @$AR2
 081b 2edb      srs         @yn1, $AC0.M
 081c 195e      lrri        $AC0.M, @$AR2
 081d 2edc      srs         @yn2, $AC0.M
 081e 02df      ret         
}

// Volume_0_0
 081f 02df      ret         
 
// Volume_0_1
 0820 00c0 0ce2 lr          $AR0, @0x0ce2
 0822 0081 02da lri         $AR1, #0x02da
 0824 0082 0000 lri         $AR2, #0x0000
 0826 1c62      mrr         $AR3, $AR2
 0827 02bf 0bd1 call        0bd1_ApplyVolume1(mem16[0x0ce2], 0x02da, 0x0000, 0x0000)
 0829 00f8 02f9 sr          @0x02f9, $AX0.L		// uh? the last <PROD> is saved in updates field?
 082b 02df      ret  
        
 082c 00c0 0ce3 lr          $AR0, @0x0ce3
 082e 0081 02dc lri         $AR1, #0x02dc
 0830 0082 00c0 lri         $AR2, #0x00c0
 0832 1c62      mrr         $AR3, $AR2
 0833 02bf 0bd1 call        0bd1_Unknown()
 0835 00f8 02fd sr          @0x02fd, $AX0.L
 0837 02df      ret         
 
 0838 00c0 0ce2 lr          $AR0, @0x0ce2
 083a 0081 02da lri         $AR1, #0x02da
 083c 0082 0000 lri         $AR2, #0x0000
 083e 1c62      mrr         $AR3, $AR2
 083f 00c4 0ce3 lr          $IX0, @0x0ce3
 0841 0085 00c0 lri         $IX1, #0x00c0
 0843 02bf 0beb call        0x0beb
 0845 00f8 02f9 sr          @0x02f9, $AX0.L
 0847 00fb 02fd sr          @0x02fd, $AX1.H
 0849 02df      ret         
 
 084a 00c0 0ce2 lr          $AR0, @0x0ce2
 084c 0081 02da lri         $AR1, #0x02da
 084e 0082 0000 lri         $AR2, #0x0000
 0850 0083 0d08 lri         $AR3, #0x0d08
 0852 00c4 0ce3 lr          $IX0, @0x0ce3
 0854 0085 00c0 lri         $IX1, #0x00c0
 0856 02bf 0c51 call        0x0c51
 0858 00f8 02f9 sr          @0x02f9, $AX0.L
 085a 00fb 02fd sr          @0x02fd, $AX1.H
 085c 02df      ret         
 
 085d 00c0 0ce1 lr          $AR0, @0x0ce1
 085f 0081 02ea lri         $AR1, #0x02ea
 0861 0082 0180 lri         $AR2, #0x0180
 0863 1c62      mrr         $AR3, $AR2
 0864 02bf 0bd1 call        0bd1_Unknown()
 0866 00f8 0301 sr          @0x0301, $AX0.L
 0868 02df      ret         
 
 0869 00c0 0ce1 lr          $AR0, @0x0ce1
 086b 0081 02ea lri         $AR1, #0x02ea
 086d 0082 0180 lri         $AR2, #0x0180
 086f 1c62      mrr         $AR3, $AR2
 0870 02bf 0bd1 call        0bd1_Unknown()
 0872 00f8 0301 sr          @0x0301, $AX0.L
 0874 029f 0820 jmp         0x0820
 0876 00c0 0ce1 lr          $AR0, @0x0ce1
 0878 0081 02ea lri         $AR1, #0x02ea
 087a 0082 0180 lri         $AR2, #0x0180
 087c 1c62      mrr         $AR3, $AR2
 087d 02bf 0bd1 call        0bd1_Unknown()
 087f 00f8 0301 sr          @0x0301, $AX0.L
 0881 029f 082c jmp         0x082c
 0883 00c0 0ce1 lr          $AR0, @0x0ce1
 0885 0081 02ea lri         $AR1, #0x02ea
 0887 0082 0180 lri         $AR2, #0x0180
 0889 1c62      mrr         $AR3, $AR2
 088a 02bf 0bd1 call        0bd1_Unknown()
 088c 00f8 0301 sr          @0x0301, $AX0.L
 088e 029f 0838 jmp         0x0838
 0890 00c0 0ce1 lr          $AR0, @0x0ce1
 0892 0081 02ea lri         $AR1, #0x02ea
 0894 0082 0180 lri         $AR2, #0x0180
 0896 1c62      mrr         $AR3, $AR2
 0897 02bf 0bd1 call        0bd1_Unknown()
 0899 00f8 0301 sr          @0x0301, $AX0.L
 089b 029f 084a jmp         0x084a
 089d 00c0 0ce1 lr          $AR0, @0x0ce1
 089f 0081 02ea lri         $AR1, #0x02ea
 08a1 0082 0180 lri         $AR2, #0x0180
 08a3 0083 0d08 lri         $AR3, #0x0d08
 08a5 02bf 0c21 call        0c21_Unknown()
 08a7 00f8 0301 sr          @0x0301, $AX0.L
 08a9 02df      ret         
 
 08aa 00c0 0ce1 lr          $AR0, @0x0ce1
 08ac 0081 02ea lri         $AR1, #0x02ea
 08ae 0082 0180 lri         $AR2, #0x0180
 08b0 0083 0d08 lri         $AR3, #0x0d08
 08b2 02bf 0c21 call        0c21_Unknown()
 08b4 00f8 0301 sr          @0x0301, $AX0.L
 08b6 029f 0820 jmp         0x0820
 08b8 00c0 0ce1 lr          $AR0, @0x0ce1
 08ba 0081 02ea lri         $AR1, #0x02ea
 08bc 0082 0180 lri         $AR2, #0x0180
 08be 0083 0d08 lri         $AR3, #0x0d08
 08c0 02bf 0c21 call        0c21_Unknown()
 08c2 00f8 0301 sr          @0x0301, $AX0.L
 08c4 029f 082c jmp         0x082c
 08c6 00c0 0ce1 lr          $AR0, @0x0ce1
 08c8 0081 02ea lri         $AR1, #0x02ea
 08ca 0082 0180 lri         $AR2, #0x0180
 08cc 0083 0d08 lri         $AR3, #0x0d08
 08ce 02bf 0c21 call        0c21_Unknown()
 08d0 00f8 0301 sr          @0x0301, $AX0.L
 08d2 029f 0838 jmp         0x0838
 08d4 00c0 0ce1 lr          $AR0, @0x0ce1
 08d6 0081 02ea lri         $AR1, #0x02ea
 08d8 0082 0180 lri         $AR2, #0x0180
 08da 0083 0d08 lri         $AR3, #0x0d08
 08dc 02bf 0c21 call        0c21_Unknown()
 08de 00f8 0301 sr          @0x0301, $AX0.L
 08e0 029f 084a jmp         0x084a
 08e2 00c0 0ce2 lr          $AR0, @0x0ce2
 08e4 0081 02de lri         $AR1, #0x02de
 08e6 0082 0400 lri         $AR2, #0x0400
 08e8 1c62      mrr         $AR3, $AR2
 08e9 02bf 0bd1 call        0bd1_Unknown()
 08eb 00f8 02fa sr          @0x02fa, $AX0.L
 08ed 02df      ret         
 
 08ee 00c0 0ce3 lr          $AR0, @0x0ce3
 08f0 0081 02e0 lri         $AR1, #0x02e0
 08f2 0082 04c0 lri         $AR2, #0x04c0
 08f4 1c62      mrr         $AR3, $AR2
 08f5 02bf 0bd1 call        0bd1_Unknown()
 08f7 00f8 02fe sr          @0x02fe, $AX0.L
 08f9 02df      ret         
 
 08fa 00c0 0ce2 lr          $AR0, @0x0ce2
 08fc 0081 02de lri         $AR1, #0x02de
 08fe 0082 0400 lri         $AR2, #0x0400
 0900 1c62      mrr         $AR3, $AR2
 0901 00c4 0ce3 lr          $IX0, @0x0ce3
 0903 0085 04c0 lri         $IX1, #0x04c0
 0905 02bf 0beb call        0x0beb
 0907 00f8 02fa sr          @0x02fa, $AX0.L
 0909 00fb 02fe sr          @0x02fe, $AX1.H
 090b 02df      ret         
 
 090c 00c0 0ce2 lr          $AR0, @0x0ce2
 090e 0081 02de lri         $AR1, #0x02de
 0910 0082 0400 lri         $AR2, #0x0400
 0912 0083 0d08 lri         $AR3, #0x0d08
 0914 00c4 0ce3 lr          $IX0, @0x0ce3
 0916 0085 04c0 lri         $IX1, #0x04c0
 0918 02bf 0c51 call        0x0c51
 091a 00f8 02fa sr          @0x02fa, $AX0.L
 091c 00fb 02fe sr          @0x02fe, $AX1.H
 091e 02df      ret         
 
 091f 00c0 0ce1 lr          $AR0, @0x0ce1
 0921 0081 02ec lri         $AR1, #0x02ec
 0923 0082 0580 lri         $AR2, #0x0580
 0925 1c62      mrr         $AR3, $AR2
 0926 02bf 0bd1 call        0bd1_Unknown()
 0928 00f8 0302 sr          @0x0302, $AX0.L
 092a 02df      ret         
 
 092b 00c0 0ce1 lr          $AR0, @0x0ce1
 092d 0081 02ec lri         $AR1, #0x02ec
 092f 0082 0580 lri         $AR2, #0x0580
 0931 1c62      mrr         $AR3, $AR2
 0932 02bf 0bd1 call        0bd1_Unknown()
 0934 00f8 0302 sr          @0x0302, $AX0.L
 0936 029f 08e2 jmp         0x08e2
 0938 00c0 0ce1 lr          $AR0, @0x0ce1
 093a 0081 02ec lri         $AR1, #0x02ec
 093c 0082 0580 lri         $AR2, #0x0580
 093e 1c62      mrr         $AR3, $AR2
 093f 02bf 0bd1 call        0bd1_Unknown()
 0941 00f8 0302 sr          @0x0302, $AX0.L
 0943 029f 08ee jmp         0x08ee
 0945 00c0 0ce1 lr          $AR0, @0x0ce1
 0947 0081 02ec lri         $AR1, #0x02ec
 0949 0082 0580 lri         $AR2, #0x0580
 094b 1c62      mrr         $AR3, $AR2
 094c 02bf 0bd1 call        0bd1_Unknown()
 094e 00f8 0302 sr          @0x0302, $AX0.L
 0950 029f 08fa jmp         0x08fa
 0952 00c0 0ce1 lr          $AR0, @0x0ce1
 0954 0081 02ec lri         $AR1, #0x02ec
 0956 0082 0580 lri         $AR2, #0x0580
 0958 1c62      mrr         $AR3, $AR2
 0959 02bf 0bd1 call        0bd1_Unknown()
 095b 00f8 0302 sr          @0x0302, $AX0.L
 095d 029f 090c jmp         0x090c
 095f 00c0 0ce1 lr          $AR0, @0x0ce1
 0961 0081 02ec lri         $AR1, #0x02ec
 0963 0082 0580 lri         $AR2, #0x0580
 0965 0083 0d08 lri         $AR3, #0x0d08
 0967 02bf 0c21 call        0c21_Unknown()
 0969 00f8 0302 sr          @0x0302, $AX0.L
 096b 02df      ret         
 
 096c 00c0 0ce1 lr          $AR0, @0x0ce1
 096e 0081 02ec lri         $AR1, #0x02ec
 0970 0082 0580 lri         $AR2, #0x0580
 0972 0083 0d08 lri         $AR3, #0x0d08
 0974 02bf 0c21 call        0c21_Unknown()
 0976 00f8 0302 sr          @0x0302, $AX0.L
 0978 029f 08e2 jmp         0x08e2
 097a 00c0 0ce1 lr          $AR0, @0x0ce1
 097c 0081 02ec lri         $AR1, #0x02ec
 097e 0082 0580 lri         $AR2, #0x0580
 0980 0083 0d08 lri         $AR3, #0x0d08
 0982 02bf 0c21 call        0c21_Unknown()
 0984 00f8 0302 sr          @0x0302, $AX0.L
 0986 029f 08ee jmp         0x08ee
 0988 00c0 0ce1 lr          $AR0, @0x0ce1
 098a 0081 02ec lri         $AR1, #0x02ec
 098c 0082 0580 lri         $AR2, #0x0580
 098e 0083 0d08 lri         $AR3, #0x0d08
 0990 02bf 0c21 call        0c21_Unknown()
 0992 00f8 0302 sr          @0x0302, $AX0.L
 0994 029f 08fa jmp         0x08fa
 0996 00c0 0ce1 lr          $AR0, @0x0ce1
 0998 0081 02ec lri         $AR1, #0x02ec
 099a 0082 0580 lri         $AR2, #0x0580
 099c 0083 0d08 lri         $AR3, #0x0d08
 099e 02bf 0c21 call        0c21_Unknown()
 09a0 00f8 0302 sr          @0x0302, $AX0.L
 09a2 029f 090c jmp         0x090c
 09a4 00c0 0ce2 lr          $AR0, @0x0ce2
 09a6 0081 02e2 lri         $AR1, #0x02e2
 09a8 0082 0640 lri         $AR2, #0x0640
 09aa 1c62      mrr         $AR3, $AR2
 09ab 02bf 0bd1 call        0bd1_Unknown()
 09ad 00f8 02fb sr          @0x02fb, $AX0.L
 09af 02df      ret         
 
 09b0 00c0 0ce3 lr          $AR0, @0x0ce3
 09b2 0081 02e4 lri         $AR1, #0x02e4
 09b4 0082 0700 lri         $AR2, #0x0700
 09b6 1c62      mrr         $AR3, $AR2
 09b7 02bf 0bd1 call        0bd1_Unknown()
 09b9 00f8 02ff sr          @0x02ff, $AX0.L
 09bb 02df      ret         
 
 09bc 00c0 0ce2 lr          $AR0, @0x0ce2
 09be 0081 02e2 lri         $AR1, #0x02e2
 09c0 0082 0640 lri         $AR2, #0x0640
 09c2 1c62      mrr         $AR3, $AR2
 09c3 00c4 0ce3 lr          $IX0, @0x0ce3
 09c5 0085 0700 lri         $IX1, #0x0700
 09c7 02bf 0beb call        0x0beb
 09c9 00f8 02fb sr          @0x02fb, $AX0.L
 09cb 00fb 02ff sr          @0x02ff, $AX1.H
 09cd 02df      ret             
 
 09ce 00c0 0ce2 lr          $AR0, @0x0ce2
 09d0 0081 02e2 lri         $AR1, #0x02e2
 09d2 0082 0640 lri         $AR2, #0x0640
 09d4 0083 0d08 lri         $AR3, #0x0d08
 09d6 00c4 0ce3 lr          $IX0, @0x0ce3
 09d8 0085 0700 lri         $IX1, #0x0700
 09da 02bf 0c51 call        0x0c51
 09dc 00f8 02fb sr          @0x02fb, $AX0.L
 09de 00fb 02ff sr          @0x02ff, $AX1.H
 09e0 02df      ret            
 
 09e1 00c0 0ce1 lr          $AR0, @0x0ce1
 09e3 0081 02ee lri         $AR1, #0x02ee
 09e5 0082 07c0 lri         $AR2, #0x07c0
 09e7 1c62      mrr         $AR3, $AR2
 09e8 02bf 0bd1 call        0bd1_Unknown()
 09ea 00f8 0303 sr          @0x0303, $AX0.L
 09ec 02df      ret             
 
 09ed 00c0 0ce1 lr          $AR0, @0x0ce1
 09ef 0081 02ee lri         $AR1, #0x02ee
 09f1 0082 07c0 lri         $AR2, #0x07c0
 09f3 1c62      mrr         $AR3, $AR2
 09f4 02bf 0bd1 call        0bd1_Unknown()
 09f6 00f8 0303 sr          @0x0303, $AX0.L
 09f8 029f 09a4 jmp         0x09a4
 09fa 00c0 0ce1 lr          $AR0, @0x0ce1
 09fc 0081 02ee lri         $AR1, #0x02ee
 09fe 0082 07c0 lri         $AR2, #0x07c0
 0a00 1c62      mrr         $AR3, $AR2
 0a01 02bf 0bd1 call        0bd1_Unknown()
 0a03 00f8 0303 sr          @0x0303, $AX0.L
 0a05 029f 09b0 jmp         0x09b0
 0a07 00c0 0ce1 lr          $AR0, @0x0ce1
 0a09 0081 02ee lri         $AR1, #0x02ee
 0a0b 0082 07c0 lri         $AR2, #0x07c0
 0a0d 1c62      mrr         $AR3, $AR2
 0a0e 02bf 0bd1 call        0bd1_Unknown()
 0a10 00f8 0303 sr          @0x0303, $AX0.L
 0a12 029f 09bc jmp         0x09bc
 0a14 00c0 0ce1 lr          $AR0, @0x0ce1
 0a16 0081 02ee lri         $AR1, #0x02ee
 0a18 0082 07c0 lri         $AR2, #0x07c0
 0a1a 1c62      mrr         $AR3, $AR2
 0a1b 02bf 0bd1 call        0bd1_Unknown()
 0a1d 00f8 0303 sr          @0x0303, $AX0.L
 0a1f 029f 09ce jmp         0x09ce
 0a21 00c0 0ce1 lr          $AR0, @0x0ce1
 0a23 0081 02ee lri         $AR1, #0x02ee
 0a25 0082 07c0 lri         $AR2, #0x07c0
 0a27 0083 0d08 lri         $AR3, #0x0d08
 0a29 02bf 0c21 call        0c21_Unknown()
 0a2b 00f8 0303 sr          @0x0303, $AX0.L
 0a2d 02df      ret               
 
 0a2e 00c0 0ce1 lr          $AR0, @0x0ce1
 0a30 0081 02ee lri         $AR1, #0x02ee
 0a32 0082 07c0 lri         $AR2, #0x07c0
 0a34 0083 0d08 lri         $AR3, #0x0d08
 0a36 02bf 0c21 call        0c21_Unknown()
 0a38 00f8 0303 sr          @0x0303, $AX0.L
 0a3a 029f 09a4 jmp         0x09a4
 0a3c 00c0 0ce1 lr          $AR0, @0x0ce1
 0a3e 0081 02ee lri         $AR1, #0x02ee
 0a40 0082 07c0 lri         $AR2, #0x07c0
 0a42 0083 0d08 lri         $AR3, #0x0d08
 0a44 02bf 0c21 call        0c21_Unknown()
 0a46 00f8 0303 sr          @0x0303, $AX0.L
 0a48 029f 09b0 jmp         0x09b0
 0a4a 00c0 0ce1 lr          $AR0, @0x0ce1
 0a4c 0081 02ee lri         $AR1, #0x02ee
 0a4e 0082 07c0 lri         $AR2, #0x07c0
 0a50 0083 0d08 lri         $AR3, #0x0d08
 0a52 02bf 0c21 call        0c21_Unknown()
 0a54 00f8 0303 sr          @0x0303, $AX0.L
 0a56 029f 09bc jmp         0x09bc
 0a58 00c0 0ce1 lr          $AR0, @0x0ce1
 0a5a 0081 02ee lri         $AR1, #0x02ee
 0a5c 0082 07c0 lri         $AR2, #0x07c0
 0a5e 0083 0d08 lri         $AR3, #0x0d08
 0a60 02bf 0c21 call        0c21_Unknown()
 0a62 00f8 0303 sr          @0x0303, $AX0.L
 0a64 029f 09ce jmp         0x09ce
 0a66 00c0 0ce2 lr          $AR0, @0x0ce2
 0a68 0081 02e6 lri         $AR1, #0x02e6
 0a6a 0082 0880 lri         $AR2, #0x0880
 0a6c 1c62      mrr         $AR3, $AR2
 0a6d 02bf 0bd1 call        0bd1_Unknown()
 0a6f 00f8 02fc sr          @0x02fc, $AX0.L
 0a71 02df      ret         

 0a72 00c0 0ce3 lr          $AR0, @0x0ce3
 0a74 0081 02e8 lri         $AR1, #0x02e8
 0a76 0082 0940 lri         $AR2, #0x0940
 0a78 1c62      mrr         $AR3, $AR2
 0a79 02bf 0bd1 call        0bd1_Unknown()
 0a7b 00f8 0300 sr          @0x0300, $AX0.L
 0a7d 02df      ret         

 0a7e 00c0 0ce2 lr          $AR0, @0x0ce2
 0a80 0081 02e6 lri         $AR1, #0x02e6
 0a82 0082 0880 lri         $AR2, #0x0880
 0a84 1c62      mrr         $AR3, $AR2
 0a85 00c4 0ce3 lr          $IX0, @0x0ce3
 0a87 0085 0940 lri         $IX1, #0x0940
 0a89 02bf 0beb call        0x0beb
 0a8b 00f8 02fc sr          @0x02fc, $AX0.L
 0a8d 00fb 0300 sr          @0x0300, $AX1.H
 0a8f 02df      ret         

 0a90 00c0 0ce2 lr          $AR0, @0x0ce2
 0a92 0081 02e6 lri         $AR1, #0x02e6
 0a94 0082 0880 lri         $AR2, #0x0880
 0a96 0083 0d08 lri         $AR3, #0x0d08
 0a98 00c4 0ce3 lr          $IX0, @0x0ce3
 0a9a 0085 0940 lri         $IX1, #0x0940
 0a9c 02bf 0c51 call        0x0c51
 0a9e 00f8 02fc sr          @0x02fc, $AX0.L
 0aa0 00fb 0300 sr          @0x0300, $AX1.H
 0aa2 02df      ret         
 0aa3 00c0 0ce1 lr          $AR0, @0x0ce1
 0aa5 0081 02f0 lri         $AR1, #0x02f0
 0aa7 0082 0a00 lri         $AR2, #0x0a00
 0aa9 1c62      mrr         $AR3, $AR2
 0aaa 02bf 0bd1 call        0bd1_Unknown()
 0aac 00f8 0304 sr          @0x0304, $AX0.L
 0aae 02df      ret           
 
 0aaf 00c0 0ce1 lr          $AR0, @0x0ce1
 0ab1 0081 02f0 lri         $AR1, #0x02f0
 0ab3 0082 0a00 lri         $AR2, #0x0a00
 0ab5 1c62      mrr         $AR3, $AR2
 0ab6 02bf 0bd1 call        0bd1_Unknown()
 0ab8 00f8 0304 sr          @0x0304, $AX0.L
 0aba 029f 0a66 jmp         0x0a66
 0abc 00c0 0ce1 lr          $AR0, @0x0ce1
 0abe 0081 02f0 lri         $AR1, #0x02f0
 0ac0 0082 0a00 lri         $AR2, #0x0a00
 0ac2 1c62      mrr         $AR3, $AR2
 0ac3 02bf 0bd1 call        0bd1_Unknown()
 0ac5 00f8 0304 sr          @0x0304, $AX0.L
 0ac7 029f 0a72 jmp         0x0a72
 0ac9 00c0 0ce1 lr          $AR0, @0x0ce1
 0acb 0081 02f0 lri         $AR1, #0x02f0
 0acd 0082 0a00 lri         $AR2, #0x0a00
 0acf 1c62      mrr         $AR3, $AR2
 0ad0 02bf 0bd1 call        0bd1_Unknown()
 0ad2 00f8 0304 sr          @0x0304, $AX0.L
 0ad4 029f 0a7e jmp         0x0a7e
 0ad6 00c0 0ce1 lr          $AR0, @0x0ce1
 0ad8 0081 02f0 lri         $AR1, #0x02f0
 0ada 0082 0a00 lri         $AR2, #0x0a00
 0adc 1c62      mrr         $AR3, $AR2
 0add 02bf 0bd1 call        0bd1_Unknown()
 0adf 00f8 0304 sr          @0x0304, $AX0.L
 0ae1 029f 0a90 jmp         0x0a90
 0ae3 00c0 0ce1 lr          $AR0, @0x0ce1
 0ae5 0081 02f0 lri         $AR1, #0x02f0
 0ae7 0082 0a00 lri         $AR2, #0x0a00
 0ae9 0083 0d08 lri         $AR3, #0x0d08
 0aeb 02bf 0c21 call        0c21_Unknown()
 0aed 00f8 0304 sr          @0x0304, $AX0.L
 0aef 02df      ret            
 
 0af0 00c0 0ce1 lr          $AR0, @0x0ce1
 0af2 0081 02f0 lri         $AR1, #0x02f0
 0af4 0082 0a00 lri         $AR2, #0x0a00
 0af6 0083 0d08 lri         $AR3, #0x0d08
 0af8 02bf 0c21 call        0c21_Unknown()
 0afa 00f8 0304 sr          @0x0304, $AX0.L
 0afc 029f 0a66 jmp         0x0a66
 0afe 00c0 0ce1 lr          $AR0, @0x0ce1
 0b00 0081 02f0 lri         $AR1, #0x02f0
 0b02 0082 0a00 lri         $AR2, #0x0a00
 0b04 0083 0d08 lri         $AR3, #0x0d08
 0b06 02bf 0c21 call        0c21_Unknown()
 0b08 00f8 0304 sr          @0x0304, $AX0.L
 0b0a 029f 0a72 jmp         0x0a72
 0b0c 00c0 0ce1 lr          $AR0, @0x0ce1
 0b0e 0081 02f0 lri         $AR1, #0x02f0
 0b10 0082 0a00 lri         $AR2, #0x0a00
 0b12 0083 0d08 lri         $AR3, #0x0d08
 0b14 02bf 0c21 call        0c21_Unknown()
 0b16 00f8 0304 sr          @0x0304, $AX0.L
 0b18 029f 0a7e jmp         0x0a7e
 0b1a 00c0 0ce1 lr          $AR0, @0x0ce1
 0b1c 0081 02f0 lri         $AR1, #0x02f0
 0b1e 0082 0a00 lri         $AR2, #0x0a00
 0b20 0083 0d08 lri         $AR3, #0x0d08
 0b22 02bf 0c21 call        0c21_Unknown()
 0b24 00f8 0304 sr          @0x0304, $AX0.L
 0b26 029f 0a90 jmp         0x0a90
 0b28 00c0 0ce1 lr          $AR0, @0x0ce1
 0b2a 0081 02e6 lri         $AR1, #0x02e6
 0b2c 0082 0880 lri         $AR2, #0x0880
 0b2e 1c62      mrr         $AR3, $AR2
 0b2f 02bf 0bd1 call        0bd1_Unknown()
 0b31 00f8 02fc sr          @0x02fc, $AX0.L
 0b33 02df      ret                 
 
 0b34 00c0 0ce1 lr          $AR0, @0x0ce1
 0b36 0081 02e8 lri         $AR1, #0x02e8
 0b38 0082 0940 lri         $AR2, #0x0940
 0b3a 1c62      mrr         $AR3, $AR2
 0b3b 02bf 0bd1 call        0bd1_Unknown()
 0b3d 00f8 0300 sr          @0x0300, $AX0.L
 0b3f 02df      ret         

 0b40 00c0 0ce1 lr          $AR0, @0x0ce1
 0b42 0081 02e6 lri         $AR1, #0x02e6
 0b44 0082 0880 lri         $AR2, #0x0880
 0b46 1c62      mrr         $AR3, $AR2
 0b47 00c4 0ce1 lr          $IX0, @0x0ce1
 0b49 0085 0940 lri         $IX1, #0x0940
 0b4b 02bf 0beb call        0x0beb
 0b4d 00f8 02fc sr          @0x02fc, $AX0.L
 0b4f 00fb 0300 sr          @0x0300, $AX1.H
 0b51 02df      ret         

void 0b52_Maybe_Mixer() {
 0b52 00c0 0ce1 lr          $AR0, @0x0ce1
 0b54 0081 02e6 lri         $AR1, #0x02e6
 0b56 0082 0880 lri         $AR2, #0x0880
 0b58 0083 0d08 lri         $AR3, #0x0d08
 0b5a 00c4 0ce1 lr          $IX0, @0x0ce1
 0b5c 0085 0940 lri         $IX1, #0x0940
 0b5e 02bf 0c51 call        0x0c51
 0b60 00f8 02fc sr          @0x02fc, $AX0.L
 0b62 00fb 0300 sr          @0x0300, $AX1.H
 0b64 02df      ret         
 0b65 00c0 0ce1 lr          $AR0, @0x0ce1
 0b67 0081 02f0 lri         $AR1, #0x02f0
 0b69 0082 0a00 lri         $AR2, #0x0a00
 0b6b 1c62      mrr         $AR3, $AR2
 0b6c 02bf 0bd1 call        0bd1_Unknown()
 0b6e 00f8 0304 sr          @0x0304, $AX0.L
 0b70 029f 0b28 jmp         0x0b28
 0b72 00c0 0ce1 lr          $AR0, @0x0ce1
 0b74 0081 02f0 lri         $AR1, #0x02f0
 0b76 0082 0a00 lri         $AR2, #0x0a00
 0b78 1c62      mrr         $AR3, $AR2
 0b79 02bf 0bd1 call        0bd1_Unknown()
 0b7b 00f8 0304 sr          @0x0304, $AX0.L
 0b7d 029f 0b34 jmp         0x0b34
 0b7f 00c0 0ce1 lr          $AR0, @0x0ce1
 0b81 0081 02f0 lri         $AR1, #0x02f0
 0b83 0082 0a00 lri         $AR2, #0x0a00
 0b85 1c62      mrr         $AR3, $AR2
 0b86 02bf 0bd1 call        0bd1_Unknown()
 0b88 00f8 0304 sr          @0x0304, $AX0.L
 0b8a 029f 0b40 jmp         0x0b40
 0b8c 00c0 0ce1 lr          $AR0, @0x0ce1
 0b8e 0081 02f0 lri         $AR1, #0x02f0
 0b90 0082 0a00 lri         $AR2, #0x0a00
 0b92 1c62      mrr         $AR3, $AR2
 0b93 02bf 0bd1 call        0bd1_Unknown()
 0b95 00f8 0304 sr          @0x0304, $AX0.L
 0b97 029f 0b52 jmp         0x0b52
 0b99 00c0 0ce1 lr          $AR0, @0x0ce1
 0b9b 0081 02f0 lri         $AR1, #0x02f0
 0b9d 0082 0a00 lri         $AR2, #0x0a00
 0b9f 0083 0d08 lri         $AR3, #0x0d08
 0ba1 02bf 0c21 call        0c21_Unknown()
 0ba3 00f8 0304 sr          @0x0304, $AX0.L
 0ba5 029f 0b28 jmp         0x0b28
 0ba7 00c0 0ce1 lr          $AR0, @0x0ce1
 0ba9 0081 02f0 lri         $AR1, #0x02f0
 0bab 0082 0a00 lri         $AR2, #0x0a00
 0bad 0083 0d08 lri         $AR3, #0x0d08
 0baf 02bf 0c21 call        0c21_Unknown()
 0bb1 00f8 0304 sr          @0x0304, $AX0.L
 0bb3 029f 0b34 jmp         0x0b34
 0bb5 00c0 0ce1 lr          $AR0, @0x0ce1
 0bb7 0081 02f0 lri         $AR1, #0x02f0
 0bb9 0082 0a00 lri         $AR2, #0x0a00
 0bbb 0083 0d08 lri         $AR3, #0x0d08
 0bbd 02bf 0c21 call        0c21_Unknown()
 0bbf 00f8 0304 sr          @0x0304, $AX0.L
 0bc1 029f 0b40 jmp         0x0b40
 0bc3 00c0 0ce1 lr          $AR0, @0x0ce1
 0bc5 0081 02f0 lri         $AR1, #0x02f0
 0bc7 0082 0a00 lri         $AR2, #0x0a00
 0bc9 0083 0d08 lri         $AR3, #0x0d08
 0bcb 02bf 0c21 call        0c21_Unknown()
 0bcd 00f8 0304 sr          @0x0304, $AX0.L
 0bcf 029f 0b52 jmp         0x0b52
}

// Volume
// AR0: factor table?
// AR1: factor
// AR2: input
// AR3: output
// returns: last <PROD> in AX0.L (16 highest bits)
//
// basically:
//		for (i = 0; i < 96; i++)
//			out[i] = ((in[i*2+1] << 16) + (ar0[i] * factor)) >> 16;
//
// so that you don't bang your head against your keyboard trying to figure 
// out those awful pipelined loops (I had to get myself a new head to finish
// this one). :P
//
void 0bd1_ApplyVolume1() { 
 0bd1 191a      lrri        $AX0.H, @$AR0							// ax0.h = mem[ar0++]
 0bd2 1939      lrri        $AX1.L, @$AR1							// ax1.l = mem[ar1++]
 0bd3 b072      mulx'l      $AX0.H, $AX1.L : $AC0.M, @$AR2			// <PROD> = ax0.h * ax1.l; ac0.m = mem[ar2++]
 0bd4 195c      lrri        $AC0.L, @$AR2							// ac0.l = mem[ar2++]
 0bd5 f07a      lsl16'l     $ACC0 : $AC1.M, @$AR2					// acc0 <<= 16; ac1.m = mem[ar2++]
 0bd6 191a      lrri        $AX0.H, @$AR0							// ax0.h = mem[ar0++]
 0bd7 b46a      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AC1.L, @$AR2	// acc0 += <PROD>; <PROD> = ax0.h * ax1.l; ac1.l = mem[ar2++]
 0bd8 9100      asr16       $ACC0									// acc0 >>= 16
 0bd9 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M					// acc1 <<= 16; ax0.h = mem[ar0++]; mem[ar3++] = ac0.m
 0bda 112f 0be3 bloopi      #0x2f, 0x0be3							// for (i = 0; i < 0x2f; i++)
  0bdc b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L	//		acc1 += <PROD>; <PROD> = ax0.h * ax1.l; mem[ar3++] = ac0.l;
  0bdd 9972      asr16'l     $ACC1 : $AC0.M, @$AR2					//		acc1 >>= 16; ac0.m = mem[ar2++]
  0bde 195c      lrri        $AC0.L, @$AR2							//		ac0.l = mem[ar2++];
  0bdf f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M					//		acc0 <<= 16; ax0.h = mem[ar0++]; mem[ar3++] = ac1.m
  0be0 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L	//		acc0 += <PROD>; <PROD> = ax0.h * ax1.l; mem[ar3++] = ac1.l;
  0be1 917a      asr16'l     $ACC0 : $AC1.M, @$AR2					//		acc0 >>= 16; ac1.m = mem[ar2++]
  0be2 195d      lrri        $AC1.L, @$AR2							//		ac1.l = mem[ar2++];
  0be3 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M					//		acc1 <<= 16; ax0.h = mem[ar0++]; mem[ar3++] = ac0.m
 0be4 1b7c      srri        @$AR3, $AC0.L							// mem[ar3++] = ac0.l;
 0be5 6e00      movp        $ACC0									// acc0 = <PROD>;
 0be6 4f12      addp'mv     $ACC1 : $AX0.L, $AC0.M					// acc1 += <PROD>; ax0.l = ac0.m;
 0be7 9900      asr16       $ACC1									// acc1 >>= 16;
 0be8 1b7f      srri        @$AR3, $AC1.M							// mem[ar3++] = ac1.m;
 0be9 812b      clr's       $ACC0 : @$AR3, $AC1.L					// acc0 = 0; mem[ar3++] = ac1.l;
 0bea 02df      ret         
}

 0beb 191a      lrri        $AX0.H, @$AR0
 0bec 1939      lrri        $AX1.L, @$AR1
 0bed b072      mulx'l      $AX0.H, $AX1.L : $AC0.M, @$AR2
 0bee 195c      lrri        $AC0.L, @$AR2
 0bef f07a      lsl16'l     $ACC0 : $AC1.M, @$AR2
 0bf0 191a      lrri        $AX0.H, @$AR0
 0bf1 b46a      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AC1.L, @$AR2
 0bf2 9100      asr16       $ACC0
 0bf3 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0bf4 112f 0bfd bloopi      #0x2f, 0x0bfd
  0bf6 b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0bf7 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0bf8 195c      lrri        $AC0.L, @$AR2
  0bf9 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0bfa b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0bfb 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0bfc 195d      lrri        $AC1.L, @$AR2
  0bfd f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0bfe 1b7c      srri        @$AR3, $AC0.L
 0bff 6e00      movp        $ACC0
 0c00 4f12      addp'mv     $ACC1 : $AX0.L, $AC0.M
 0c01 9909      asr16'ir    $ACC1 : $AR1
 0c02 1b7f      srri        @$AR3, $AC1.M
 0c03 1b7d      srri        @$AR3, $AC1.L
 0c04 1c04      mrr         $AR0, $IX0
 0c05 1c45      mrr         $AR2, $IX1
 0c06 1c62      mrr         $AR3, $AR2
 0c07 191a      lrri        $AX0.H, @$AR0
 0c08 1939      lrri        $AX1.L, @$AR1
 0c09 b072      mulx'l      $AX0.H, $AX1.L : $AC0.M, @$AR2
 0c0a 195c      lrri        $AC0.L, @$AR2
 0c0b f07a      lsl16'l     $ACC0 : $AC1.M, @$AR2
 0c0c 191a      lrri        $AX0.H, @$AR0
 0c0d b46a      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AC1.L, @$AR2
 0c0e 9100      asr16       $ACC0
 0c0f f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0c10 112f 0c19 bloopi      #0x2f, 0x0c19
  0c12 b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0c13 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0c14 195c      lrri        $AC0.L, @$AR2
  0c15 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0c16 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0c17 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0c18 195d      lrri        $AC1.L, @$AR2
  0c19 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0c1a 1b7c      srri        @$AR3, $AC0.L
 0c1b 6e00      movp        $ACC0
 0c1c 4f1e      addp'mv     $ACC1 : $AX1.H, $AC0.M
 0c1d 9900      asr16       $ACC1
 0c1e 1b7f      srri        @$AR3, $AC1.M
 0c1f 1b7d      srri        @$AR3, $AC1.L
 0c20 02df      ret         

void 0c21_Unknown() {
 0c21 1ce3      mrr         $IX3, $AR3
 0c22 8e00      set16       
 0c23 8100      clr         $ACC0
 0c24 8971      clr'l       $ACC1 : $AC0.M, @$AR1
 0c25 18bf      lrrd        $AC1.M, @$AR1
 0c26 1b7e      srri        @$AR3, $AC0.M
 0c27 4c00      add         $ACC0, $ACC1
 0c28 1b7e      srri        @$AR3, $AC0.M
 0c29 112f 0c2e bloopi      #0x2f, 0x0c2e
  0c2b 4c00      add         $ACC0, $ACC1
  0c2c 1b7e      srri        @$AR3, $AC0.M
  0c2d 4c00      add         $ACC0, $ACC1
  0c2e 1b7e      srri        @$AR3, $AC0.M
 0c2f 4c00      add         $ACC0, $ACC1
 0c30 1b3e      srri        @$AR1, $AC0.M
 0c31 1c27      mrr         $AR1, $IX3
 0c32 1c62      mrr         $AR3, $AR2
 0c33 8f50      set40'l     : $AX0.H, @$AR0
 0c34 1939      lrri        $AX1.L, @$AR1
 0c35 b072      mulx'l      $AX0.H, $AX1.L : $AC0.M, @$AR2
 0c36 195c      lrri        $AC0.L, @$AR2
 0c37 f07a      lsl16'l     $ACC0 : $AC1.M, @$AR2
 0c38 191a      lrri        $AX0.H, @$AR0
 0c39 1939      lrri        $AX1.L, @$AR1
 0c3a b46a      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AC1.L, @$AR2
 0c3b 9100      asr16       $ACC0
 0c3c f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0c3d 1939      lrri        $AX1.L, @$AR1
 0c3e 112f 0c49 bloopi      #0x2f, 0x0c49
  0c40 b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0c41 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0c42 195c      lrri        $AC0.L, @$AR2
  0c43 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0c44 1939      lrri        $AX1.L, @$AR1
  0c45 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0c46 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0c47 195d      lrri        $AC1.L, @$AR2
  0c48 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
  0c49 1939      lrri        $AX1.L, @$AR1
 0c4a 1b7c      srri        @$AR3, $AC0.L
 0c4b 6e00      movp        $ACC0
 0c4c 4f12      addp'mv     $ACC1 : $AX0.L, $AC0.M
 0c4d 9900      asr16       $ACC1
 0c4e 1b7f      srri        @$AR3, $AC1.M
 0c4f 1b7d      srri        @$AR3, $AC1.L
 0c50 02df      ret         
 0c51 1ce3      mrr         $IX3, $AR3
 0c52 8e00      set16       
 0c53 8100      clr         $ACC0
 0c54 8971      clr'l       $ACC1 : $AC0.M, @$AR1
 0c55 18bf      lrrd        $AC1.M, @$AR1
 0c56 1b7e      srri        @$AR3, $AC0.M
 0c57 4c00      add         $ACC0, $ACC1
 0c58 1b7e      srri        @$AR3, $AC0.M
 0c59 112f 0c5e bloopi      #0x2f, 0x0c5e
  0c5b 4c00      add         $ACC0, $ACC1
  0c5c 1b7e      srri        @$AR3, $AC0.M
  0c5d 4c00      add         $ACC0, $ACC1
  0c5e 1b7e      srri        @$AR3, $AC0.M
 0c5f 4c00      add         $ACC0, $ACC1
 0c60 1b3e      srri        @$AR1, $AC0.M
 0c61 0009      iar         $AR1
 0c62 8100      clr         $ACC0
 0c63 8971      clr'l       $ACC1 : $AC0.M, @$AR1
 0c64 18bf      lrrd        $AC1.M, @$AR1
 0c65 1b7e      srri        @$AR3, $AC0.M
 0c66 4c00      add         $ACC0, $ACC1
 0c67 1b7e      srri        @$AR3, $AC0.M
 0c68 112f 0c6d bloopi      #0x2f, 0x0c6d
  0c6a 4c00      add         $ACC0, $ACC1
  0c6b 1b7e      srri        @$AR3, $AC0.M
  0c6c 4c00      add         $ACC0, $ACC1
  0c6d 1b7e      srri        @$AR3, $AC0.M
 0c6e 4c00      add         $ACC0, $ACC1
 0c6f 1b3e      srri        @$AR1, $AC0.M
 0c70 1c27      mrr         $AR1, $IX3
 0c71 1c62      mrr         $AR3, $AR2
 0c72 8f50      set40'l     : $AX0.H, @$AR0
 0c73 1939      lrri        $AX1.L, @$AR1
 0c74 b072      mulx'l      $AX0.H, $AX1.L : $AC0.M, @$AR2
 0c75 195c      lrri        $AC0.L, @$AR2
 0c76 f07a      lsl16'l     $ACC0 : $AC1.M, @$AR2
 0c77 191a      lrri        $AX0.H, @$AR0
 0c78 1939      lrri        $AX1.L, @$AR1
 0c79 b46a      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AC1.L, @$AR2
 0c7a 9100      asr16       $ACC0
 0c7b f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0c7c 1939      lrri        $AX1.L, @$AR1
 0c7d 112f 0c88 bloopi      #0x2f, 0x0c88
  0c7f b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0c80 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0c81 195c      lrri        $AC0.L, @$AR2
  0c82 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0c83 1939      lrri        $AX1.L, @$AR1
  0c84 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0c85 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0c86 195d      lrri        $AC1.L, @$AR2
  0c87 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
  0c88 1939      lrri        $AX1.L, @$AR1
 0c89 1b7c      srri        @$AR3, $AC0.L
 0c8a 6e00      movp        $ACC0
 0c8b 4f12      addp'mv     $ACC1 : $AX0.L, $AC0.M
 0c8c 9905      asr16'dr    $ACC1 : $AR1
 0c8d 1b7f      srri        @$AR3, $AC1.M
 0c8e 1b7d      srri        @$AR3, $AC1.L
 0c8f 1c04      mrr         $AR0, $IX0
 0c90 1c45      mrr         $AR2, $IX1
 0c91 1c62      mrr         $AR3, $AR2
 0c92 191a      lrri        $AX0.H, @$AR0
 0c93 1939      lrri        $AX1.L, @$AR1
 0c94 b072      mulx'l      $AX0.H, $AX1.L : $AC0.M, @$AR2
 0c95 195c      lrri        $AC0.L, @$AR2
 0c96 f07a      lsl16'l     $ACC0 : $AC1.M, @$AR2
 0c97 191a      lrri        $AX0.H, @$AR0
 0c98 1939      lrri        $AX1.L, @$AR1
 0c99 b46a      mulxac'l    $AX0.H, $AX1.L, $ACC0 : $AC1.L, @$AR2
 0c9a 9100      asr16       $ACC0
 0c9b f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0c9c 1939      lrri        $AX1.L, @$AR1
 0c9d 112f 0ca8 bloopi      #0x2f, 0x0ca8
  0c9f b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0ca0 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0ca1 195c      lrri        $AC0.L, @$AR2
  0ca2 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0ca3 1939      lrri        $AX1.L, @$AR1
  0ca4 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0ca5 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0ca6 195d      lrri        $AC1.L, @$AR2
  0ca7 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
  0ca8 1939      lrri        $AX1.L, @$AR1
 0ca9 1b7c      srri        @$AR3, $AC0.L
 0caa 6e00      movp        $ACC0
 0cab 4f1e      addp'mv     $ACC1 : $AX1.H, $AC0.M
 0cac 9900      asr16       $ACC1
 0cad 1b7f      srri        @$AR3, $AC1.M
 0cae 1b7d      srri        @$AR3, $AC1.L
 0caf 02df      ret         
 0cb0 0098 0000 lri         $AX0.L, #0x0000
 0cb2 02df      ret         
}

 0cb3 0080 0cc0 lri         $AR0, #0x0cc0
 0cb5 1c62      mrr         $AR3, $AR2
 0cb6 1939      lrri        $AX1.L, @$AR1
 0cb7 191a      lrri        $AX0.H, @$AR0
 0cb8 b000      mulx        $AX0.H, $AX1.L
 0cb9 195e      lrri        $AC0.M, @$AR2
 0cba 195c      lrri        $AC0.L, @$AR2
 0cbb f050      lsl16'l     $ACC0 : $AX0.H, @$AR0
 0cbc b400      mulxac      $AX0.H, $AX1.L, $ACC0
 0cbd 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
 0cbe 195d      lrri        $AC1.L, @$AR2
 0cbf f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0cc0 1108 0cc9 bloopi      #0x08, 0x0cc9
  0cc2 b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0cc3 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0cc4 195c      lrri        $AC0.L, @$AR2
  0cc5 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0cc6 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0cc7 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0cc8 195d      lrri        $AC1.L, @$AR2
  0cc9 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0cca 4f23      addp's      $ACC1 : @$AR3, $AC0.L
 0ccb 9900      asr16       $ACC1
 0ccc 1b7f      srri        @$AR3, $AC1.M
 0ccd 6e2b      movp's      $ACC0 : @$AR3, $AC1.L
 0cce 1f1e      mrr         $AX0.L, $AC0.M
 0ccf 02df      ret         
 0cd0 0080 0cc0 lri         $AR0, #0x0cc0
 0cd2 0083 0d08 lri         $AR3, #0x0d08
 0cd4 1ce3      mrr         $IX3, $AR3
 0cd5 8e00      set16       
 0cd6 8100      clr         $ACC0
 0cd7 8971      clr'l       $ACC1 : $AC0.M, @$AR1
 0cd8 18bf      lrrd        $AC1.M, @$AR1
 0cd9 1b7e      srri        @$AR3, $AC0.M
 0cda 4c00      add         $ACC0, $ACC1
 0cdb 1b7e      srri        @$AR3, $AC0.M
 0cdc 1108 0ce1 bloopi      #0x08, 0x0ce1
  0cde 4c00      add         $ACC0, $ACC1
  0cdf 1b7e      srri        @$AR3, $AC0.M
  0ce0 4c00      add         $ACC0, $ACC1
  0ce1 1b7e      srri        @$AR3, $AC0.M
 0ce2 4c00      add         $ACC0, $ACC1
 0ce3 1b3e      srri        @$AR1, $AC0.M
 0ce4 1c27      mrr         $AR1, $IX3
 0ce5 1c62      mrr         $AR3, $AR2
 0ce6 8f50      set40'l     : $AX0.H, @$AR0
 0ce7 1939      lrri        $AX1.L, @$AR1
 0ce8 b000      mulx        $AX0.H, $AX1.L
 0ce9 195e      lrri        $AC0.M, @$AR2
 0cea 195c      lrri        $AC0.L, @$AR2
 0ceb f050      lsl16'l     $ACC0 : $AX0.H, @$AR0
 0cec 1939      lrri        $AX1.L, @$AR1
 0ced b400      mulxac      $AX0.H, $AX1.L, $ACC0
 0cee 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
 0cef 195d      lrri        $AC1.L, @$AR2
 0cf0 f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
 0cf1 1939      lrri        $AX1.L, @$AR1
 0cf2 1108 0cfd bloopi      #0x08, 0x0cfd
  0cf4 b523      mulxac's    $AX0.H, $AX1.L, $ACC1 : @$AR3, $AC0.L
  0cf5 9972      asr16'l     $ACC1 : $AC0.M, @$AR2
  0cf6 195c      lrri        $AC0.L, @$AR2
  0cf7 f0a1      lsl16'ls    $ACC0 : $AX0.H, $AC1.M
  0cf8 1939      lrri        $AX1.L, @$AR1
  0cf9 b42b      mulxac's    $AX0.H, $AX1.L, $ACC0 : @$AR3, $AC1.L
  0cfa 917a      asr16'l     $ACC0 : $AC1.M, @$AR2
  0cfb 195d      lrri        $AC1.L, @$AR2
  0cfc f1a0      lsl16'ls    $ACC1 : $AX0.H, $AC0.M
  0cfd 1939      lrri        $AX1.L, @$AR1
 0cfe 4f23      addp's      $ACC1 : @$AR3, $AC0.L
 0cff 9900      asr16       $ACC1
 0d00 1b7f      srri        @$AR3, $AC1.M
 0d01 6e2b      movp's      $ACC0 : @$AR3, $AC1.L
 0d02 1f1e      mrr         $AX0.L, $AC0.M
 0d03 02df      ret         
 
// Command jump table
 0d04 008a  // 0x0 - ???
 0d05 0222  // 0x1 - ???
 0d06 024f  // 0x2 - ???
 0d07 0e83  // 0x3 - ???
 0d08 027e  // 0x4 - set PBs address
 0d09 049b  // 0x5 - ???
 0d0a 04b4  // 0x6 - ???
 0d0b 04cd  // 0x7 - set output buffers
 0d0c 0dbd  // 0x8 - ???
 0d0d 0ddf  // 0x9 - ???
 0d0e 057b  // 0xA - set compressor table
 0d0f 060b  // 0xB - ???
 0d10 0ec6  // 0xC - ???
 0d11 067c  // 0xD - ???
 0d12 0672  // 0xE - The End
 
// Table #1 - entry selected by PB[0x007] bits 0-4
 0d13 081f      lris        $AX0.L, #0x1f				// 0: Do nothing
 0d14 0820      lris        $AX0.L, #0x20
 0d15 082c      lris        $AX0.L, #0x2c
 0d16 0838      lris        $AX0.L, #0x38
 0d17 084a      lris        $AX0.L, #0x4a
 0d18 084a      lris        $AX0.L, #0x4a
 0d19 084a      lris        $AX0.L, #0x4a
 0d1a 084a      lris        $AX0.L, #0x4a
 0d1b 085d      lris        $AX0.L, #0x5d
 0d1c 0869      lris        $AX0.L, #0x69
 0d1d 0876      lris        $AX0.L, #0x76
 0d1e 0883      lris        $AX0.L, #0x83
 0d1f 0890      lris        $AX0.L, #0x90
 0d20 0890      lris        $AX0.L, #0x90
 0d21 0890      lris        $AX0.L, #0x90
 0d22 0890      lris        $AX0.L, #0x90
 0d23 089d      lris        $AX0.L, #0x9d
 0d24 08aa      lris        $AX0.L, #0xaa
 0d25 08b8      lris        $AX0.L, #0xb8
 0d26 08c6      lris        $AX0.L, #0xc6
 0d27 08d4      lris        $AX0.L, #0xd4
 0d28 08d4      lris        $AX0.L, #0xd4
 0d29 08d4      lris        $AX0.L, #0xd4
 0d2a 08d4      lris        $AX0.L, #0xd4
 0d2b 089d      lris        $AX0.L, #0x9d
 0d2c 08aa      lris        $AX0.L, #0xaa
 0d2d 08b8      lris        $AX0.L, #0xb8
 0d2e 08c6      lris        $AX0.L, #0xc6
 0d2f 08d4      lris        $AX0.L, #0xd4
 0d30 08d4      lris        $AX0.L, #0xd4
 0d31 08d4      lris        $AX0.L, #0xd4
 0d32 08d4      lris        $AX0.L, #0xd4
 
// Table #2 - entry selected by PB[0x006] bits 0-4
 0d33 081f      lris        $AX0.L, #0x1f				// 0: Do nothing
 0d34 08e2      lris        $AX0.L, #0xe2
 0d35 08ee      lris        $AX0.L, #0xee
 0d36 08fa      lris        $AX0.L, #0xfa
 0d37 090c      lris        $AX1.L, #0x0c
 0d38 090c      lris        $AX1.L, #0x0c
 0d39 090c      lris        $AX1.L, #0x0c
 0d3a 090c      lris        $AX1.L, #0x0c
 0d3b 091f      lris        $AX1.L, #0x1f
 0d3c 092b      lris        $AX1.L, #0x2b
 0d3d 0938      lris        $AX1.L, #0x38
 0d3e 0945      lris        $AX1.L, #0x45
 0d3f 0952      lris        $AX1.L, #0x52
 0d40 0952      lris        $AX1.L, #0x52
 0d41 0952      lris        $AX1.L, #0x52
 0d42 0952      lris        $AX1.L, #0x52
 0d43 095f      lris        $AX1.L, #0x5f
 0d44 096c      lris        $AX1.L, #0x6c
 0d45 097a      lris        $AX1.L, #0x7a
 0d46 0988      lris        $AX1.L, #0x88
 0d47 0996      lris        $AX1.L, #0x96
 0d48 0996      lris        $AX1.L, #0x96
 0d49 0996      lris        $AX1.L, #0x96
 0d4a 0996      lris        $AX1.L, #0x96
 0d4b 095f      lris        $AX1.L, #0x5f
 0d4c 096c      lris        $AX1.L, #0x6c
 0d4d 097a      lris        $AX1.L, #0x7a
 0d4e 0988      lris        $AX1.L, #0x88
 0d4f 0996      lris        $AX1.L, #0x96
 0d50 0996      lris        $AX1.L, #0x96
 0d51 0996      lris        $AX1.L, #0x96
 0d52 0996      lris        $AX1.L, #0x96
 
// Table #3 - entry selected by PB[0x006] bits 5-9
 0d53 081f      lris        $AX0.L, #0x1f				// 0: Do nothing
 0d54 09a4      lris        $AX1.L, #0xa4
 0d55 09b0      lris        $AX1.L, #0xb0
 0d56 09bc      lris        $AX1.L, #0xbc
 0d57 09ce      lris        $AX1.L, #0xce
 0d58 09ce      lris        $AX1.L, #0xce
 0d59 09ce      lris        $AX1.L, #0xce
 0d5a 09ce      lris        $AX1.L, #0xce
 0d5b 09e1      lris        $AX1.L, #0xe1
 0d5c 09ed      lris        $AX1.L, #0xed
 0d5d 09fa      lris        $AX1.L, #0xfa
 0d5e 0a07      lris        $AX0.H, #0x07
 0d5f 0a14      lris        $AX0.H, #0x14
 0d60 0a14      lris        $AX0.H, #0x14
 0d61 0a14      lris        $AX0.H, #0x14
 0d62 0a14      lris        $AX0.H, #0x14
 0d63 0a21      lris        $AX0.H, #0x21
 0d64 0a2e      lris        $AX0.H, #0x2e
 0d65 0a3c      lris        $AX0.H, #0x3c
 0d66 0a4a      lris        $AX0.H, #0x4a
 0d67 0a58      lris        $AX0.H, #0x58
 0d68 0a58      lris        $AX0.H, #0x58
 0d69 0a58      lris        $AX0.H, #0x58
 0d6a 0a58      lris        $AX0.H, #0x58
 0d6b 0a21      lris        $AX0.H, #0x21
 0d6c 0a2e      lris        $AX0.H, #0x2e
 0d6d 0a3c      lris        $AX0.H, #0x3c
 0d6e 0a4a      lris        $AX0.H, #0x4a
 0d6f 0a58      lris        $AX0.H, #0x58
 0d70 0a58      lris        $AX0.H, #0x58
 0d71 0a58      lris        $AX0.H, #0x58
 0d72 0a58      lris        $AX0.H, #0x58
 
// Table #4 - entry selected by PB[0x006] bits 10-15
// (twice longer than the three previous ones!)
 0d73 081f      lris        $AX0.L, #0x1f				// 0: Do nothing
 0d74 0a66      lris        $AX0.H, #0x66
 0d75 0a72      lris        $AX0.H, #0x72
 0d76 0a7e      lris        $AX0.H, #0x7e
 0d77 0a90      lris        $AX0.H, #0x90
 0d78 0a90      lris        $AX0.H, #0x90
 0d79 0a90      lris        $AX0.H, #0x90
 0d7a 0a90      lris        $AX0.H, #0x90
 0d7b 0aa3      lris        $AX0.H, #0xa3
 0d7c 0aaf      lris        $AX0.H, #0xaf
 0d7d 0abc      lris        $AX0.H, #0xbc
 0d7e 0ac9      lris        $AX0.H, #0xc9
 0d7f 0ad6      lris        $AX0.H, #0xd6
 0d80 0ad6      lris        $AX0.H, #0xd6
 0d81 0ad6      lris        $AX0.H, #0xd6
 0d82 0ad6      lris        $AX0.H, #0xd6
 0d83 0ae3      lris        $AX0.H, #0xe3
 0d84 0af0      lris        $AX0.H, #0xf0
 0d85 0afe      lris        $AX0.H, #0xfe
 0d86 0b0c      lris        $AX1.H, #0x0c
 0d87 0b1a      lris        $AX1.H, #0x1a
 0d88 0b1a      lris        $AX1.H, #0x1a
 0d89 0b1a      lris        $AX1.H, #0x1a
 0d8a 0b1a      lris        $AX1.H, #0x1a
 0d8b 0ae3      lris        $AX0.H, #0xe3
 0d8c 0af0      lris        $AX0.H, #0xf0
 0d8d 0afe      lris        $AX0.H, #0xfe
 0d8e 0b0c      lris        $AX1.H, #0x0c
 0d8f 0b1a      lris        $AX1.H, #0x1a
 0d90 0b1a      lris        $AX1.H, #0x1a
 0d91 0b1a      lris        $AX1.H, #0x1a
 0d92 0b1a      lris        $AX1.H, #0x1a
 0d93 081f      lris        $AX0.L, #0x1f
 0d94 0b28      lris        $AX1.H, #0x28
 0d95 0b34      lris        $AX1.H, #0x34
 0d96 0b40      lris        $AX1.H, #0x40
 0d97 0b52      lris        $AX1.H, #0x52
 0d98 0b52      lris        $AX1.H, #0x52
 0d99 0b52      lris        $AX1.H, #0x52
 0d9a 0b52      lris        $AX1.H, #0x52
 0d9b 0aa3      lris        $AX0.H, #0xa3
 0d9c 0b65      lris        $AX1.H, #0x65
 0d9d 0b72      lris        $AX1.H, #0x72
 0d9e 0b7f      lris        $AX1.H, #0x7f
 0d9f 0b8c      lris        $AX1.H, #0x8c
 0da0 0b8c      lris        $AX1.H, #0x8c
 0da1 0b8c      lris        $AX1.H, #0x8c
 0da2 0b8c      lris        $AX1.H, #0x8c
 0da3 0ae3      lris        $AX0.H, #0xe3
 0da4 0b99      lris        $AX1.H, #0x99
 0da5 0ba7      lris        $AX1.H, #0xa7
 0da6 0bb5      lris        $AX1.H, #0xb5
 0da7 0bc3      lris        $AX1.H, #0xc3
 0da8 0bc3      lris        $AX1.H, #0xc3
 0da9 0bc3      lris        $AX1.H, #0xc3
 0daa 0bc3      lris        $AX1.H, #0xc3
 0dab 0ae3      lris        $AX0.H, #0xe3
 0dac 0b99      lris        $AX1.H, #0x99
 0dad 0ba7      lris        $AX1.H, #0xa7
 0dae 0bb5      lris        $AX1.H, #0xb5
 0daf 0bc3      lris        $AX1.H, #0xc3
 0db0 0bc3      lris        $AX1.H, #0xc3
 0db1 0bc3      lris        $AX1.H, #0xc3
 0db2 0bc3      lris        $AX1.H, #0xc3
 
 
 0db3 0cb0      lris        $AC0.L, #0xb0
 0db4 0cb3      lris        $AC0.L, #0xb3
 0db5 0cd0      lris        $AC0.L, #0xd0
 0db6 0cd0      lris        $AC0.L, #0xd0
 
// Jump table for sample rate converters
 0db7 071a      cmpis       $ACC1, #0x1a		// none
 0db8 076b      cmpis       $ACC1, #0x6b		// ?
 0db9 07c0      cmpis       $ACC1, #0xc0		// linear
 
// Table for coef_select
// addresses into COEF ROM
 0dba 1000      loopi       #0x00
 0dbb 1200      sbclr       #0x00
 0dbc 1400      lsl         $ACC0, #0
 
void 0dbd_Cmd_8() { 
 0dbd 8e00      set16       
 0dbe 00c4 0ce6 lr          $IX0, @0x0ce6
 0dc0 1905      lrri        $IX1, @$AR0
 0dc1 00e5 0ce6 sr          @0x0ce6, $IX1
 0dc3 0086 0400 lri         $IX2, #0x0400
 0dc5 191e      lrri        $AC0.M, @$AR0
 0dc6 191c      lrri        $AC0.L, @$AR0
 0dc7 2ece      srs         @DSMAH, $AC0.M
 0dc8 2ccf      srs         @DSMAL, $AC0.L
 0dc9 16cd 0400 si          @DSPA, #0x0400
 0dcb 16c9 0001 si          @DSCR, #0x0001
 0dcd 16cb 0480 si          @DSBL, #0x0480
 0dcf 02bf 0084 call        0084_WaitForDMACompletion()
 0dd1 191e      lrri        $AC0.M, @$AR0
 0dd2 191c      lrri        $AC0.L, @$AR0
 0dd3 2ece      srs         @DSMAH, $AC0.M
 0dd4 2ccf      srs         @DSMAL, $AC0.L
 0dd5 16cd 0940 si          @DSPA, #0x0940
 0dd7 16c9 0001 si          @DSCR, #0x0001
 0dd9 16cb 0180 si          @DSBL, #0x0180
 0ddb 02bf 0084 call        0084_WaitForDMACompletion()
 0ddd 029f 0e01 jmp         0e01_Unk()
} 

void 0ddf_Cmd_9() { 
 0ddf 8e00      set16       
 0de0 00c4 0ce7 lr          $IX0, @0x0ce7
 0de2 1905      lrri        $IX1, @$AR0
 0de3 00e5 0ce7 sr          @0x0ce7, $IX1
 0de5 0086 0640 lri         $IX2, #0x0640
 0de7 191e      lrri        $AC0.M, @$AR0
 0de8 191c      lrri        $AC0.L, @$AR0
 0de9 2ece      srs         @DSMAH, $AC0.M
 0dea 2ccf      srs         @DSMAL, $AC0.L
 0deb 16cd 0640 si          @DSPA, #0x0640
 0ded 16c9 0001 si          @DSCR, #0x0001
 0def 16cb 0480 si          @DSBL, #0x0480
 0df1 02bf 0084 call        0084_WaitForDMACompletion()
 0df3 191e      lrri        $AC0.M, @$AR0
 0df4 191c      lrri        $AC0.L, @$AR0
 0df5 2ece      srs         @DSMAH, $AC0.M
 0df6 2ccf      srs         @DSMAL, $AC0.L
 0df7 16cd 0a00 si          @DSPA, #0x0a00
 0df9 16c9 0001 si          @DSCR, #0x0001
 0dfb 16cb 0180 si          @DSBL, #0x0180
 0dfd 02bf 0084 call        0084_WaitForDMACompletion()
 0dff 029f 0e01 jmp         0e01_Unk()
}

void 0e01_Unk() { 
 0e01 8b00      m0          
 0e02 8100      clr         $ACC0
 0e03 8900      clr         $ACC1
 0e04 1fc4      mrr         $AC0.M, $IX0
 0e05 1fe5      mrr         $AC1.M, $IX1
 0e06 5d00      sub         $ACC1, $ACC0
 0e07 009a 02ab lri         $AX0.H, #0x02ab
 0e09 009b 02aa lri         $AX1.H, #0x02aa
 0e0b 0081 0d08 lri         $AR1, #0x0d08
 0e0d d000      mulc        $AC1.M, $AX0.H
 0e0e d400      mulcac      $AC1.M, $AX0.H, $ACC0
 0e0f 111f 0e13 bloopi      #0x1f, 0x0e13
  0e11 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
  0e12 d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
  0e13 d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
  0e14 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
 0e15 4e31      addp's      $ACC0 : @$AR1, $AC0.M
 0e16 1b25      srri        @$AR1, $IX1
 0e17 191e      lrri        $AC0.M, @$AR0
 0e18 191c      lrri        $AC0.L, @$AR0
 0e19 2ece      srs         @DSMAH, $AC0.M
 0e1a 2ccf      srs         @DSMAL, $AC0.L
 0e1b 00e6 ffcd sr          @DSPA, $IX2
 0e1d 16c9 0000 si          @DSCR, #0x0000
 0e1f 16cb 0180 si          @DSBL, #0x0180
 0e21 0081 0000 lri         $AR1, #0x0000
 0e23 1c41      mrr         $AR2, $AR1
 0e24 02bf 0084 call        0084_WaitForDMACompletion()
 0e26 02bf 0e57 call        0x0e57
 0e28 191e      lrri        $AC0.M, @$AR0
 0e29 191c      lrri        $AC0.L, @$AR0
 0e2a 2ece      srs         @DSMAH, $AC0.M
 0e2b 2ccf      srs         @DSMAL, $AC0.L
 0e2c 00e6 ffcd sr          @DSPA, $IX2
 0e2e 16c9 0000 si          @DSCR, #0x0000
 0e30 16cb 0180 si          @DSBL, #0x0180
 0e32 02bf 0084 call        0084_WaitForDMACompletion()
 0e34 02bf 0e57 call        0x0e57
 0e36 191e      lrri        $AC0.M, @$AR0
 0e37 191c      lrri        $AC0.L, @$AR0
 0e38 2ece      srs         @DSMAH, $AC0.M
 0e39 2ccf      srs         @DSMAL, $AC0.L
 0e3a 00e6 ffcd sr          @DSPA, $IX2
 0e3c 16c9 0000 si          @DSCR, #0x0000
 0e3e 16cb 0180 si          @DSBL, #0x0180
 0e40 02bf 0084 call        0084_WaitForDMACompletion()
 0e42 02bf 0e57 call        0x0e57
 0e44 191e      lrri        $AC0.M, @$AR0
 0e45 191c      lrri        $AC0.L, @$AR0
 0e46 2ece      srs         @DSMAH, $AC0.M
 0e47 2ccf      srs         @DSMAL, $AC0.L
 0e48 00e6 ffcd sr          @DSPA, $IX2
 0e4a 16c9 0000 si          @DSCR, #0x0000
 0e4c 16cb 0180 si          @DSBL, #0x0180
 0e4e 0081 0880 lri         $AR1, #0x0880
 0e50 1c41      mrr         $AR2, $AR1
 0e51 02bf 0084 call        0084_WaitForDMACompletion()
 0e53 02bf 0e57 call        0x0e57
 0e55 029f 006f jmp         006f_MailHandler()
}

 0e57 8f00      set40       
 0e58 8d00      set15       
 0e59 8a00      m2          
 0e5a 00e0 0cd2 sr          @0x0cd2, $AR0
 0e5c 0080 0d08 lri         $AR0, #0x0d08
 0e5e 1c66      mrr         $AR3, $IX2
 0e5f 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0e60 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0e61 a000      mulx        $AX0.L, $AX1.L
 0e62 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 0e63 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
 0e64 4e00      addp        $ACC0
 0e65 4800      addax       $ACC0, $AX0.L
 0e66 112f 0e75 bloopi      #0x2f, 0x0e75
  0e68 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0e69 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0e6a a000      mulx        $AX0.L, $AX1.L
  0e6b af00      mulxmv      $AX0.L, $AX1.H, $ACC1
  0e6c 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
  0e6d 4f32      addp's      $ACC1 : @$AR2, $AC0.M
  0e6e 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
  0e6f 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
  0e70 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0e71 a000      mulx        $AX0.L, $AX1.L
  0e72 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  0e73 9141      asr16'l     $ACC0 : $AX0.L, @$AR1
  0e74 4e3a      addp's      $ACC0 : @$AR2, $AC1.M
  0e75 482a      addax's     $ACC0, $AX0.L : @$AR2, $AC1.L
 0e76 80f1      nx'ld       : $AX0.H, $AX1.H, @$AR1
 0e77 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0e78 a000      mulx        $AX0.L, $AX1.L
 0e79 af00      mulxmv      $AX0.L, $AX1.H, $ACC1
 0e7a 9941      asr16'l     $ACC1 : $AX0.L, @$AR1
 0e7b 4f32      addp's      $ACC1 : @$AR2, $AC0.M
 0e7c 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
 0e7d 1b5f      srri        @$AR2, $AC1.M
 0e7e 1b5d      srri        @$AR2, $AC1.L
 0e7f 00c0 0cd2 lr          $AR0, @0x0cd2
 0e81 8e00      set16       
 0e82 02df      ret      
  
void 0e83_Cmd_3() {    
 0e83 8e00      set16       
 0e84 191f      lrri        $AC1.M, @$AR0
 0e85 191d      lrri        $AC1.L, @$AR0
 0e86 2fce      srs         @DSMAH, $AC1.M
 0e87 2dcf      srs         @DSMAL, $AC1.L
 0e88 16cd 0d08 si          @DSPA, #0x0d08
 0e8a 16c9 0000 si          @DSCR, #0x0000
 0e8c 16cb 0300 si          @DSBL, #0x0300
 0e8e 02bf 0084 call        0084_WaitForDMACompletion()
 0e90 1c80      mrr         $IX0, $AR0
 0e91 8f00      set40       
 0e92 0080 0d08 lri         $AR0, #0x0d08
 0e94 0083 0000 lri         $AR3, #0x0000
 0e96 1c43      mrr         $AR2, $AR3
 0e97 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
 0e98 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0e99 6a00      movax       $ACC0, $AX1.L
 0e9a 4800      addax       $ACC0, $AX0.L
 0e9b 112f 0ea4 bloopi      #0x2f, 0x0ea4
  0e9d 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
  0e9e 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0e9f 6b32      movax's     $ACC1, $AX1.L : @$AR2, $AC0.M
  0ea0 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
  0ea1 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
  0ea2 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0ea3 6a3a      movax's     $ACC0, $AX1.L : @$AR2, $AC1.M
  0ea4 482a      addax's     $ACC0, $AX0.L : @$AR2, $AC1.L
 0ea5 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
 0ea6 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0ea7 6b32      movax's     $ACC1, $AX1.L : @$AR2, $AC0.M
 0ea8 4922      addax's     $ACC1, $AX0.L : @$AR2, $AC0.L
 0ea9 1b5f      srri        @$AR2, $AC1.M
 0eaa 1b5d      srri        @$AR2, $AC1.L
 0eab 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
 0eac 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0ead 6800      movax       $ACC0, $AX0.L
 0eae 7c00      neg         $ACC0
 0eaf 4a00      addax       $ACC0, $AX1.L
 0eb0 112f 0ebb bloopi      #0x2f, 0x0ebb
  0eb2 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
  0eb3 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0eb4 6932      movax's     $ACC1, $AX0.L : @$AR2, $AC0.M
  0eb5 7d00      neg         $ACC1
  0eb6 4b22      addax's     $ACC1, $AX1.L : @$AR2, $AC0.L
  0eb7 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
  0eb8 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
  0eb9 683a      movax's     $ACC0, $AX0.L : @$AR2, $AC1.M
  0eba 7c00      neg         $ACC0
  0ebb 4a2a      addax's     $ACC0, $AX1.L : @$AR2, $AC1.L
 0ebc 80f0      nx'ld       : $AX0.H, $AX1.H, @$AR0
 0ebd 80c0      nx'ld       : $AX0.L, $AX1.L, @$AR0
 0ebe 6932      movax's     $ACC1, $AX0.L : @$AR2, $AC0.M
 0ebf 7d00      neg         $ACC1
 0ec0 4b22      addax's     $ACC1, $AX1.L : @$AR2, $AC0.L
 0ec1 1b5f      srri        @$AR2, $AC1.M
 0ec2 1b5d      srri        @$AR2, $AC1.L
 0ec3 1c04      mrr         $AR0, $IX0
 0ec4 029f 006f jmp         006f_MailHandler()
}

void 0ec6_Cmd_C() {  
 0ec6 8e48      set16'l     : $AX1.L, @$AR0
 0ec7 8b78      m0'l        : $AC1.M, @$AR0
 0ec8 8168      clr'l       $ACC0 : $AC1.L, @$AR0
 0ec9 00e0 0cd2 sr          @0x0cd2, $AR0
 0ecb 2fce      srs         @DSMAH, $AC1.M
 0ecc 2dcf      srs         @DSMAL, $AC1.L
 0ecd 16cd 0180 si          @DSPA, #0x0180
 0ecf 16c9 0001 si          @DSCR, #0x0001
 0ed1 16cb 0180 si          @DSBL, #0x0180
 0ed3 02bf 0084 call        0084_WaitForDMACompletion()
 0ed5 8100      clr         $ACC0
 0ed6 009c 0180 lri         $AC0.L, #0x0180
 0ed8 4d00      add         $ACC1, $ACC0
 0ed9 2fce      srs         @DSMAH, $AC1.M
 0eda 2dcf      srs         @DSMAL, $AC1.L
 0edb 16cd 0880 si          @DSPA, #0x0880
 0edd 16c9 0001 si          @DSCR, #0x0001
 0edf 16cb 0180 si          @DSBL, #0x0180
 0ee1 8100      clr         $ACC0
 0ee2 8900      clr         $ACC1
 0ee3 00de 0ce5 lr          $AC0.M, @0x0ce5
 0ee5 1ff9      mrr         $AC1.M, $AX1.L
 0ee6 5d00      sub         $ACC1, $ACC0
 0ee7 00f9 0ce5 sr          @0x0ce5, $AX1.L
 0ee9 009a 02ab lri         $AX0.H, #0x02ab
 0eeb 009b 02aa lri         $AX1.H, #0x02aa
 0eed 0081 0d08 lri         $AR1, #0x0d08
 0eef d000      mulc        $AC1.M, $AX0.H
 0ef0 d400      mulcac      $AC1.M, $AX0.H, $ACC0
 0ef1 111f 0ef5 bloopi      #0x1f, 0x0ef5
  0ef3 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
  0ef4 d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
  0ef5 d431      mulcac's    $AC1.M, $AX0.H, $ACC0 : @$AR1, $AC0.M
 0ef6 dc31      mulcac's    $AC1.M, $AX1.H, $ACC0 : @$AR1, $AC0.M
 0ef7 4e31      addp's      $ACC0 : @$AR1, $AC0.M
 0ef8 1b39      srri        @$AR1, $AX1.L
 0ef9 02bf 0084 call        0084_WaitForDMACompletion()
 0efb 8f00      set40       
 0efc 8d00      set15       
 0efd 8a00      m2          
 0efe 0080 0d08 lri         $AR0, #0x0d08
 0f00 0081 0400 lri         $AR1, #0x0400
 0f02 0083 0000 lri         $AR3, #0x0000
 0f04 0082 00c0 lri         $AR2, #0x00c0
 0f06 1918      lrri        $AX0.L, @$AR0
 0f07 195b      lrri        $AX1.H, @$AR2
 0f08 1959      lrri        $AX1.L, @$AR2
 0f09 a000      mulx        $AX0.L, $AX1.L
 0f0a ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 0f0b 9100      asr16       $ACC0
 0f0c 4e5b      addp'l      $ACC0 : $AX1.H, @$AR3
 0f0d f04b      lsl16'l     $ACC0 : $AX1.L, @$AR3
 0f0e 115f 0f19 bloopi      #0x5f, 0x0f19
  0f10 a031      mulx's      $AX0.L, $AX1.L : @$AR1, $AC0.M
  0f11 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  0f12 9140      asr16'l     $ACC0 : $AX0.L, @$AR0
  0f13 4e5a      addp'l      $ACC0 : $AX1.H, @$AR2
  0f14 f04a      lsl16'l     $ACC0 : $AX1.L, @$AR2
  0f15 a031      mulx's      $AX0.L, $AX1.L : @$AR1, $AC0.M
  0f16 ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
  0f17 9100      asr16       $ACC0
  0f18 4e5b      addp'l      $ACC0 : $AX1.H, @$AR3
  0f19 f04b      lsl16'l     $ACC0 : $AX1.L, @$AR3
 0f1a a031      mulx's      $AX0.L, $AX1.L : @$AR1, $AC0.M
 0f1b ae00      mulxmv      $AX0.L, $AX1.H, $ACC0
 0f1c 9100      asr16       $ACC0
 0f1d 4e00      addp        $ACC0
 0f1e f000      lsl16       $ACC0
 0f1f 1b3e      srri        @$AR1, $AC0.M
 0f20 8e00      set16       
 0f21 00c0 0cd2 lr          $AR0, @0x0cd2
 0f23 191e      lrri        $AC0.M, @$AR0
 0f24 191c      lrri        $AC0.L, @$AR0
 0f25 2ece      srs         @DSMAH, $AC0.M
 0f26 2ccf      srs         @DSMAL, $AC0.L
 0f27 16cd 0400 si          @DSPA, #0x0400
 0f29 16c9 0001 si          @DSCR, #0x0001
 0f2b 16cb 0180 si          @DSBL, #0x0180
 0f2d 02bf 0084 call        0084_WaitForDMACompletion()
 0f2f 16fc dcd1 si          @DMBH, #0xdcd1 <-------------- !!!
 0f31 16fd 0004 si          @DMBL, #0x0004 <-------------- !!!
 0f33 16fb 0001 si          @DIRQ, #0x0001 <-------------- !!!
 0f35 26fc      lrs         $AC0.M, @DMBH
 0f36 02a0 8000 andf        $AC0.M, #0x8000
 0f38 029c 0f35 jlnz        0x0f35
 0f3a 029f 006f jmp         006f_MailHandler()
}

void 0f3c_Int1_Handler() {
 0f3c 8e00      set16       
 0f3d 1fcc      mrr         $AC0.M, $ST0
 0f3e 1d9e      mrr         $ST0, $AC0.M
 0f3f 16fc ecc0 si          @DMBH, #0xecc0
 0f41 2efd      srs         @DMBL, $AC0.M
 0f42 26fc      lrs         $AC0.M, @DMBH
 0f43 02a0 8000 andf        $AC0.M, #0x8000
 0f45 029c 0f42 jlnz        0x0f42
 0f47 02ff      rti         
}

void 0f48_Int2_Handler() {
 0f48 0000      nop         
 0f49 0000      nop         
 0f4a 0000      nop         
 0f4b 0000      nop         
 0f4c 02ff      rti       
}
  
void 0f4d_Int3_Handler() {
 0f4d 8e00      set16       
 0f4e 1dbc      mrr         $ST1, $AC0.L
 0f4f 1dbe      mrr         $ST1, $AC0.M
 0f50 8100      clr         $ACC0
 0f51 00de 0307 lr          $AC0.M, @0x0307
 0f53 0601      cmpis       $ACC0, #0x01
 0f54 0295 0f59 jz          0x0f59
 0f56 0e00      lris        $AC0.M, #0x00
 0f57 00fe 02d8 sr          @0x02d8, $AC0.M
 0f59 1fcd      mrr         $AC0.M, $ST1
 0f5a 1f8d      mrr         $AC0.L, $ST1
 0f5b 02ff      rti
}

void 0f5c_Int4_Handler() {         
 0f5c 0000      nop         
 0f5d 0000      nop         
 0f5e 0000      nop         
 0f5f 0000      nop         
 0f60 02ff      rti
}

// Handles ACCOV exception
// ACCOV exception will be triggered when a sound being played
// reaches end and needs to be reloaded or stopped.
//
void 0f61_Int5_Handler() 
{        
 0f61 8e00      set16       
 0f62 1dbc      mrr         $ST1, $AC0.L
 0f63 1dbe      mrr         $ST1, $AC0.M
 0f64 8100      clr         $ACC0
 0f65 00de 0307 lr          $AC0.M, @0x0307
 0f67 0601      cmpis       $ACC0, #0x01
 0f68 0295 0f72 jz          0x0f72					// if (mem16[0x0307] == 1) handle looping;
 0f6a 0e00      lris        $AC0.M, #0x00
 0f6b 00fe 02d8 sr          @0x02d8, $AC0.M			// else stop the sound;
 0f6d 0082 0ce9 lri         $AR2, #0x0ce9
 0f6f 1fcd      mrr         $AC0.M, $ST1
 0f70 1f8d      mrr         $AC0.L, $ST1
 0f71 02ff      rti        

 // Looping handling
 0f72 00de 02d9 lr          $AC0.M, @0x02d9
 0f74 0601      cmpis       $ACC0, #0x01
 0f75 0295 0f83 jz          0x0f83					// if (mem16[0x02D9] == 1) handle stream;
 // reload pred scale, yn1 and yn2 from the PB
 // the address will be automatically reloaded by the accelerator
 0f77 00de 032a lr          $AC0.M, @0x032a
 0f79 2eda      srs         @pred_scale, $AC0.M
 0f7a 00de 032b lr          $AC0.M, @0x032b
 0f7c 2edb      srs         @yn1, $AC0.M
 0f7d 00de 032c lr          $AC0.M, @0x032c
 0f7f 2edc      srs         @yn2, $AC0.M
 0f80 1fcd      mrr         $AC0.M, $ST1
 0f81 1f8d      mrr         $AC0.L, $ST1
 0f82 02ff      rti 
 
 // Stream handling
 // reload pred_scale from the PB
 0f83 00de 032a lr          $AC0.M, @0x032a
 0f85 2eda      srs         @pred_scale, $AC0.M
 // ??? - reload the yn1 and yn2 from... themselves
 0f86 26db      lrs         $AC0.M, @yn1
 0f87 2edb      srs         @yn1, $AC0.M
 0f88 26dc      lrs         $AC0.M, @yn2
 0f89 2edc      srs         @yn2, $AC0.M
 0f8a 1fcd      mrr         $AC0.M, $ST1
 0f8b 1f8d      mrr         $AC0.L, $ST1
 0f8c 02ff      rti
}

void 0f8d_Int6_Handler() {         
 0f8d 0000      nop         
 0f8e 0000      nop         
 0f8f 0000      nop         
 0f90 0000      nop         
 0f91 02ff      rti       
}

void 0f92_Int7_Handler() {           
 0f92 0000      nop         
 0f93 0000      nop         
 0f94 0000      nop         
 0f95 0000      nop         
 0f96 02ff      rti         
}

// action jump table
 0f97 0fa9      // Action 0 - restart
 0f98 0fac      // Action 1 - dump DRAM and jump into iROM where new IRAM and DRAM can be uploaded
 0f99 0fe4      // Action 2 - soft reset
 0f9a 0fe7      // Action 3 - jump back to main loop
 
// called at AXList end; wait for a last mail and take an action
// Note: the same thing can be found in Zelda ucode. It's called after DsyncFrame.
// Probably debugging stuff.
{
 0f9b 8e00      set16       
 0f9c 8100      clr         $ACC0
 0f9d 8900      clr         $ACC1
 0f9e 02bf 0fea call        0x0fea				// wait for the mail; the high part is likely 0xCDD1 as for Zelda
 0fa0 27ff      lrs         $AC1.M, @CMBL		// the low part of the mail tells the action to take
 0fa1 009e 0f97 lri         $AC0.M, #0x0f97
 0fa3 4c00      add         $ACC0, $ACC1
 0fa4 1c7e      mrr         $AR3, $AC0.M
 0fa5 0313      ilrr        $AC1.M, @$AR3
 0fa6 1c7f      mrr         $AR3, $AC1.M
 0fa7 176f      jmpr        $AR3				// take the action!
 0fa8 0021      halt        
}

//ACTION 0 (0xCDD10000)
{ 
 0fa9 029f 0037 jmp         0037_Unk_Restart()
 0fab 0021      halt  
}

//ACTION 1 (0xCDD10001)
{ 
 0fac 8100      clr         $ACC0
 0fad 8900      clr         $ACC1
 0fae 02bf 0fea call        0x0fea
 0fb0 24ff      lrs         $AC0.L, @CMBL
 0fb1 02bf 0ff0 call        0x0ff0
 0fb3 25ff      lrs         $AC1.L, @CMBL
 0fb4 02bf 0ff0 call        0x0ff0
 0fb6 27ff      lrs         $AC1.M, @CMBL
 0fb7 2ece      srs         @DSMAH, $AC0.M
 0fb8 2ccf      srs         @DSMAL, $AC0.L
 0fb9 16c9 0001 si          @DSCR, #0x0001 // DMEM->CPU
 0fbb 2fcd      srs         @DSPA, $AC1.M
 0fbc 2dcb      srs         @DSBL, $AC1.L
 0fbd 8100      clr         $ACC0
 0fbe 8900      clr         $ACC1
 0fbf 02bf 0fea call        0x0fea
//prepare addr-s/length/dsp-PC for new IRAM/DRAM 
 0fc1 24ff      lrs         $AC0.L, @CMBL
 0fc2 1c9e      mrr         $IX0, $AC0.M
 0fc3 1cbc      mrr         $IX1, $AC0.L
 0fc4 02bf 0ff0 call        0x0ff0
 0fc6 25ff      lrs         $AC1.L, @CMBL
 0fc7 02bf 0ff0 call        0x0ff0
 0fc9 27ff      lrs         $AC1.M, @CMBL
 0fca 1cdf      mrr         $IX2, $AC1.M
 0fcb 1cfd      mrr         $IX3, $AC1.L
 0fcc 8100      clr         $ACC0
 0fcd 02bf 0fea call        0x0fea
 0fcf 26ff      lrs         $AC0.M, @CMBL
 0fd0 1c1e      mrr         $AR0, $AC0.M
 0fd1 8900      clr         $ACC1
 0fd2 02bf 0ff0 call        0x0ff0
 0fd4 20ff      lrs         $AX0.L, @CMBL
 0fd5 1f5f      mrr         $AX0.H, $AC1.M
 0fd6 02bf 0fea call        0x0fea
 0fd8 21ff      lrs         $AX1.L, @CMBL
 0fd9 02bf 0fea call        0x0fea
 0fdb 23ff      lrs         $AX1.H, @CMBL
//
 0fdc 26c9      lrs         $AC0.M, @DSCR
 0fdd 02a0 0004 andf        $AC0.M, #0x0004
 0fdf 029c 0fdc jlnz        0x0fdc
 0fe1 029f 80b5 jmp         0x80b5 // 80b5_BootUcode()
 0fe3 0021      halt   
}

//ACTION 2 (0xCDD10002)
{      
 0fe4 029f 8000 jmp         0x8000
 0fe6 0021      halt   
}

//ACTION 3 (0xCDD10003)
{ 
 0fe7 029f 004c jmp         0x004c
 0fe9 0021      halt        
} 

{
 0fea 26fe      lrs         $AC0.M, @CMBH
 0feb 02c0 8000 andcf       $AC0.M, #0x8000
 0fed 029c 0fea jlnz        0x0fea
 0fef 02df      ret         
}

{
 0ff0 27fe      lrs         $AC1.M, @CMBH
 0ff1 03c0 8000 andcf       $AC1.M, #0x8000
 0ff3 029c 0ff0 jlnz        0x0ff0
 0ff5 02df      ret         
}

 0ff6 0000      nop         
 0ff7 0000      nop         
 0ff8 0000      nop         
 0ff9 0000      nop         
 0ffa 0000      nop         
 0ffb 0000      nop         
 0ffc 0000      nop         
 0ffd 0000      nop         
 0ffe 0000      nop         
 0fff 0000      nop