bsmt2000.asm
srg320_Arcade-Battletoads_MiSTer/src/bsmt2000.asm
0x00-0x0B					;u16 sample_addr[12];
0x0C-0x17					;u16 sample_frac[12];
0x18-0x23					;u16 sample_rate[12];
0x24-0x2F					;u16 sample_len[12];
0x30-0x3B					;u16 sample_loop[12];
0x3C-0x47					;u16 sample_bank[12];
0x48-0x53					;u16 sample_vol[12];
0x54-0x5F					;u16 sample_data[12];

0000 F900 0004 B     $004		;goto start_loop;
0002 F900 0D96 B     $D96		;goto int_handler;

L0004:					;start_loop:
0004 7F81      DINT  			;
0005 7F8A      ROVM  			;
0006 6E00      LDPK  $00		;
0007 6880      MAR   *,0		;
0008 7E01      LACK  #$01		;
0009 5066      SACL  $66,0		;
000A 4064      IN    $64,0		;u8 mode = PORT_CMD_REG;
000B 6664      ZALS  $64		;switch (mode) {
000C FF00 0025 BZ    L0025		;case 0: goto mode_0;
000E 1066      SUB   $66		;
000F FF00 0368 BZ    $368		;case 1: goto mode_1;
0011 1066      SUB   $66		;
0012 FF00 0ACA BZ    $ACA		;case 2: goto test_left;
0014 1066      SUB   $66		;
0015 FF00 0ADE BZ    $ADE		;case 3: goto test_rigth;
0017 1066      SUB   $66		;
0018 FF00 0AF2 BZ    $AF2		;case 4: goto mode_addr_4;
001A 1066      SUB   $66		;
001B FF00 0AFD BZ    $AFD		;case 5: goto play_pcm_mono_with_pan;
001D 1066      SUB   $66		;
001E FF00 0BFC BZ    $BFC		;case 6: goto mode_6;
0020 1066      SUB   $66		;
0021 FF00 0CC2 BZ    $CC2		;case 7: goto mode_7; }
0023 F900 0004 B     L0004		;goro start_loop;

L0025:					;mode_0:
0025 7F81      DINT  			;
0026 7F8A      ROVM  			;
0027 6E00      LDPK  $00		;
0028 6880      MAR   *,0		;
0029 70FF      LARK  AR0,#$FF		;
002A 7F89      ZAC   			;u16* ptr = 0xFF;
L002B:					;for (int i=0;i<256;i++)
002B 5088      SACL  *,0		;  *ptr-- = 0;
002C F400 002B BANZ  L002B		;
002E 7E00      LACK  #$00		;
002F 5048      SACL  $48		;*0x48 = 0;
0030 5049      SACL  $49		;*0x49 = 0;
0031 504A      SACL  $4A		;*0x4A = 0;
0032 504B      SACL  $4B		;*0x4B = 0;
0033 504C      SACL  $4C		;*0x4C = 0;
0034 504D      SACL  $4D		;*0x4D = 0;
0035 504E      SACL  $4E		;*0x4E = 0;
0036 504F      SACL  $4F		;*0x4F = 0;
0037 5050      SACL  $50		;*0x50 = 0;
0038 5051      SACL  $51		;*0x51 = 0;
0039 5052      SACL  $52		;*0x52 = 0;
003A 5053      SACL  $53		;*0x53 = 0;
003B 506E      SACL  $6E		;*0x6E = 0;
003C 503C      SACL  $3C		;*0x3C = 0;
003D 503D      SACL  $3D		;*0x3D = 0;
003E 503E      SACL  $3E		;*0x3E = 0;
003F 503F      SACL  $3F		;*0x3F = 0;
0040 5040      SACL  $40		;*0x40 = 0;
0041 5041      SACL  $41		;*0x41 = 0;
0042 5042      SACL  $42		;*0x42 = 0;
0043 5043      SACL  $43		;*0x43 = 0;
0044 5044      SACL  $44		;*0x44 = 0;
0045 5045      SACL  $45		;*0x45 = 0;
0046 5046      SACL  $46		;*0x46 = 0;
0047 5047      SACL  $47		;*0x47 = 0;
0048 4164      IN    $64,1		;*0x64 = PORT_CMD_DAT;
0049 7E08      LACK  #$08		;
004A 5065      SACL  $65		;
004B 2865      LAC   $65,8		;
004C 5065      SACL  $65		;*0x65 = 0x0800;
004D 7E88      LACK  #$88		;
004E 5072      SACL  $72		;*0x72 = 0x0088;
004F 7E01      LACK  #$01		;
0050 5066      SACL  $66		;*0x66 = 0x0001;
0051 7EF0      LACK  #$F0		;
0052 5064      SACL  $64		;
0053 2864      LAC   $64,8		;
0054 5068      SACL  $68		;*0x68 = 0xF000;
0055 7F89      ZAC   			;
0056 1066      SUB   $66,0		;
0057 5067      SACL  $67		;*0x67 = 0xFFFF;
0058 7EFE      LACK  #$FE		;
0059 506F      SACL  $6F		;*0x6F = 0x00FE;
005A 7E07      LACK  #$07		;
005B 5064      SACL  $64		;
005C 2864      LAC   $64,8		;
005D 5064      SACL  $64		;*0x64 = 0x0700;
005E 7ED0      LACK  #$D0		;
005F 7A64      OR    $64		;
0060 5079      SACL  $79		;*0x79 = 0x07D0;
0061 7E0A      LACK  #$0A		;
0062 506C      SACL  $6C		;*0x6C = 0x000A;
0063 5076      SACL  $76		;*0x76 = 0x000A;
0064 7080      LARK  AR0,#$80		;
0065 7E9A      LACK  #$9A		;
0066 50A8      SACL  *+			;*0x80 = 0x009A;
0067 50A8      SACL  *+			;*0x81 = 0x009A;
0068 7E80      LACK  #$80		;
0069 50A8      SACL  *+			;*0x82 = 0x0080;
006A 7E66      LACK  #$66		;
006B 50A8      SACL  *+			;*0x83 = 0x0066;
006C 7E4D      LACK  #$4D		;
006D 50A8      SACL  *+			;*0x84 = 0x004D;
006E 7E3A      LACK  #$3A		;
006F 50A8      SACL  *+			;*0x85 = 0x003A;
0070 7E3A      LACK  #$3A		;
0071 50A8      SACL  *+			;*0x86 = 0x003A;
0072 7E3A      LACK  #$3A		;
0073 50A8      SACL  *+			;*0x87 = 0x003A;
0074 7E3A      LACK  #$3A		;
0075 50A8      SACL  *+			;*0x88 = 0x003A;
0076 7E3A      LACK  #$3A		;
0077 50A8      SACL  *+			;*0x89 = 0x003A;
0078 7E3A      LACK  #$3A		;
0079 50A8      SACL  *+			;*0x8A = 0x003A;
007A 7E3A      LACK  #$3A		;
007B 50A8      SACL  *+			;*0x8B = 0x003A;
007C 7E4D      LACK  #$4D		;
007D 50A8      SACL  *+			;*0x8C = 0x004D;
007E 7E66      LACK  #$66		;
007F 50A8      SACL  *+			;*0x8D = 0x0066;
0080 7E80      LACK  #$80		;
0081 50A8      SACL  *+			;*0x8E = 0x0080;
0082 7E9A      LACK  #$9A		;
0083 50A8      SACL  *+			;*0x8F = 0x009A;

L0084:					;mode0_loop:
0084 2073      LAC   $73,0		;
0085 FF00 0091 BZ    L0091		;if (*0x73 != 0) {
0087 6574      ZALH  $74		;
0088 586E      SACH  $6E,0		;  *0x6E = *0x74;
0089 5071      SACL  $71		;  *0x71 = 0x0000;
008A 6576      ZALH  $76		;
008B 586C      SACH  $6C,0		;  *0x6C = *0x76;
008C 6575      ZALH  $75		;
008D 5869      SACH  $69,0		;  *0x69 = *0x75;
008E 5073      SACL  $73		;  *0x73 = 0x0000;
008F 7E01      LACK  #$01		;  *0x7A = 0x0001;
0090 507A      SACL  $7A		;}
L0091:
0091 496F      OUT   $6F,1		;PORT_ROM_BANK = *0x6F;
0092 4869      OUT   $69,0		;PORT_ROM_ADDR = *0x69;
0093 2069      LAC   $69,0		;
0094 007A      ADD   $7A,0		;
0095 5069      SACL  $69		;*0x69 += *0x7A;
0096 426B      IN    $6B,2		;*0x6B = PORT_ROM_DATA;
0097 F800 02B9 CALL  L02B9		;L02B9();//>188
0099 666C      ZALS  $6C		;
009A FF00 00C9 BZ    L00C9		;
009C 1079      SUB   $79,0		;
009D FA00 00F6 BLZ   L00F6		;if (*0x6C != 0 && *0x6C - *0x79 <= 0) goto L00F6;
009F 7F8B      SOVM  			;if (*0x6C != 0) {
00A0 7F89      ZAC   			;  u32 sum = 0;
00A1 6A48      LT    $48		;
00A2 6D54      MPY   $54		;
00A3 6C49      LTA   $49		;  sum += sample_vol[0] * sample_data[0];
00A4 6D55      MPY   $55		;
00A5 6C4A      LTA   $4A		;  sum += sample_vol[1] * sample_data[1];
00A6 6D56      MPY   $56		;
00A7 6C4B      LTA   $4B		;  sum += sample_vol[2] * sample_data[2];
00A8 6D57      MPY   $57		;
00A9 6C4C      LTA   $4C		;  sum += sample_vol[3] * sample_data[3];
00AA 6D58      MPY   $58		;
00AB 6C4D      LTA   $4D		;  sum += sample_vol[4] * sample_data[4];
00AC 6D59      MPY   $59		;
00AD 6C4E      LTA   $4E		;  sum += sample_vol[5] * sample_data[5];
00AE 6D5A      MPY   $5A		;
00AF 6C4F      LTA   $4F		;  sum += sample_vol[6] * sample_data[6];
00B0 6D5B      MPY   $5B		;
00B1 6C50      LTA   $50		;  sum += sample_vol[7] * sample_data[7];
00B2 6D5C      MPY   $5C		;
00B3 6C51      LTA   $51		;  sum += sample_vol[8] * sample_data[8];
00B4 6D5D      MPY   $5D		;
00B5 6C52      LTA   $52		;  sum += sample_vol[9] * sample_data[9];
00B6 6D5E      MPY   $5E		;
00B7 6C53      LTA   $53		;  sum += sample_vol[10] * sample_data[10];
00B8 6D5F      MPY   $5F		;
00B9 6C6E      LTA   $6E		;  sum += sample_vol[11] * sample_data[11];
00BA 6D71      MPY   $71		;
00BB 7F8F      APAC  			;  sum += *0x6E * *0x71;
00BC 7F8F      APAC  			;  sum += *0x6E * *0x71;
00BD 5864      SACH  $64,0		;
00BE 4B64      OUT   $64,3		;  PORT_OUT_LEFT = sum >> 16;
00BF 7F80      NOP   			;
00C0 6679      ZALS  $79		;
00C1 506C      SACL  $6C		;  *0x6C = *0x79;
00C2 F600 0120 BIOZ  L0120		;  if (!BIO) goto L0120;
00C4 7F80      NOP   			;
00C5 7F80      NOP   			;
00C6 7F80      NOP   			;
00C7 F900 0123 B     L0123		;  goto L0123;
L00C9:					;} else {
00C9 6666      ZALS  $66		;
00CA 506C      SACL  $6C		;  *0x6C = *0x66;
00CB 7F80      NOP   			;
00CC 7F8B      SOVM  			;
00CD 7F89      ZAC   			;  u32 sum = 0;
00CE 6A48      LT    $48		;
00CF 6D54      MPY   $54		;
00D0 6C49      LTA   $49		;  sum += sample_vol[0] * sample_data[0];
00D1 6D55      MPY   $55		;
00D2 6C4A      LTA   $4A		;  sum += sample_vol[1] * sample_data[1];
00D3 6D56      MPY   $56		;
00D4 6C4B      LTA   $4B		;  sum += sample_vol[2] * sample_data[2];
00D5 6D57      MPY   $57		;
00D6 6C4C      LTA   $4C		;  sum += sample_vol[3] * sample_data[3];
00D7 6D58      MPY   $58		;
00D8 6C4D      LTA   $4D		;  sum += sample_vol[4] * sample_data[4];
00D9 6D59      MPY   $59		;
00DA 6C4E      LTA   $4E		;  sum += sample_vol[5] * sample_data[5];
00DB 6D5A      MPY   $5A		;
00DC 6C4F      LTA   $4F		;  sum += sample_vol[6] * sample_data[6];
00DD 6D5B      MPY   $5B		;
00DE 6C50      LTA   $50		;  sum += sample_vol[7] * sample_data[7];
00DF 6D5C      MPY   $5C		;
00E0 6C51      LTA   $51		;  sum += sample_vol[8] * sample_data[8];
00E1 6D5D      MPY   $5D		;
00E2 6C52      LTA   $52		;  sum += sample_vol[9] * sample_data[9];
00E3 6D5E      MPY   $5E		;
00E4 6C53      LTA   $53		;  sum += sample_vol[10] * sample_data[10];
00E5 6D5F      MPY   $5F		;
00E6 6C6E      LTA   $6E		;  sum += sample_vol[11] * sample_data[11];
00E7 6D71      MPY   $71		;
00E8 7F8F      APAC  			;  sum += *0x6E * *0x71;
00E9 7F8F      APAC  			;  sum += *0x6E * *0x71;
00EA 5864      SACH  $64,0		;
00EB 4B64      OUT   $64,3		;  PORT_OUT_LEFT = sum >> 16;
00EC 7F80      NOP   			;
00ED 7F80      NOP   			;
00EE 7F80      NOP   			;
00EF F600 0120 BIOZ  $120		;  if (!BIO) goto L0120;
00F1 7F80      NOP   			;
00F2 7F80      NOP   			;
00F3 7F80      NOP   			;
00F4 F900 0123 B     L0123		;  goto L0123; }
L00F6:
00F6 7F8B      SOVM  			;
00F7 7F89      ZAC   			;  u32 sum = 0;
00F8 6A48      LT    $48		;
00F9 6D54      MPY   $54		;
00FA 6C49      LTA   $49		;  sum += sample_vol[0] * sample_data[0];
00FB 6D55      MPY   $55		;
00FC 6C4A      LTA   $4A		;  sum += sample_vol[1] * sample_data[1];
00FD 6D56      MPY   $56		;
00FE 6C4B      LTA   $4B		;  sum += sample_vol[2] * sample_data[2];
00FF 6D57      MPY   $57		;
0100 6C4C      LTA   $4C		;  sum += sample_vol[3] * sample_data[3];
0101 6D58      MPY   $58		;
0102 6C4D      LTA   $4D		;  sum += sample_vol[4] * sample_data[4];
0103 6D59      MPY   $59		;
0104 6C4E      LTA   $4E		;  sum += sample_vol[5] * sample_data[5];
0105 6D5A      MPY   $5A		;
0106 6C4F      LTA   $4F		;  sum += sample_vol[6] * sample_data[6];
0107 6D5B      MPY   $5B		;
0108 6C50      LTA   $50		;  sum += sample_vol[7] * sample_data[7];
0109 6D5C      MPY   $5C		;
010A 6C51      LTA   $51		;  sum += sample_vol[8] * sample_data[8];
010B 6D5D      MPY   $5D		;
010C 6C52      LTA   $52		;  sum += sample_vol[9] * sample_data[9];
010D 6D5E      MPY   $5E		;
010E 6C53      LTA   $53		;  sum += sample_vol[10] * sample_data[10];
010F 6D5F      MPY   $5F		;
0110 6C6E      LTA   $6E		;  sum += sample_vol[11] * sample_data[11];
0111 6D71      MPY   $71		;
0112 7F8F      APAC  			;  sum += *0x6E * *0x71;
0113 7F8F      APAC  			;  sum += *0x6E * *0x71;
0114 5864      SACH  $64,0		;
0115 4B64      OUT   $64,3		;  PORT_OUT_LEFT = sum >> 16;
0116 7F80      NOP   			;
0117 7F80      NOP   			;
0118 7F80      NOP   			;
0119 F600 0120 BIOZ  $120		;  if (!BIO) goto L0120;
011B 7F80      NOP   			;
011C 7F80      NOP   			;
011D 7F80      NOP   			;
011E F900 0123 B     L0123		;  goto L0123;
L0120:
0120 4060      IN    $60,0		;*0x60 = PORT_CMD_REG;
0121 3860      LAR   AR0,$60		;
0122 4188      IN    *,1		;*(*0x60) = PORT_CMD_DATA;
L0123:
0123 206B      LAC   $6B,0		;
0124 7968      AND   $68		;
0125 506A      SACL  $6A		;*0x6A = *0x6B & *0x68;
0126 246A      LAC   $6A,4		;temp = *0x6A << 4;
0127 FC00 0134 BGZ   L0134		;if (temp < 0) {
0129 5864      SACH  $64,0		;  *0x64 = temp >> 16;
012A 6671      ZALS  $71		;
012B 6A64      LT    $64		;
012C 6D6C      MPY   $6C		;
012D 7F8F      APAC  			;
012E 5071      SACL  $71		;  *0x71 += (*0x6C * *0x64);
012F 6571      ZALH  $71		;
0130 1F6C      SUB   $6C,15		;
0131 5871      SACH  $71,0		;  *0x71 = ((*0x71 << 16) - (*0x6C << 15)) >> 16;
0132 F900 013F B     L013F		;}
L0134:
0134 5864      SACH  $64,0		;else {
0135 6671      ZALS  $71		;
0136 6A64      LT    $64		;
0137 6D6C      MPY   $6C		;
0138 7F8F      APAC  			;
0139 5071      SACL  $71		;
013A 6571      ZALH  $71		;
013B 0F6C      ADD   $6C,15		;
013C 5871      SACH  $71,0		;
013D 7F80      NOP   			;
013E 7F80      NOP   			;}
L013F:
013F 7F8A      ROVM  			;
0140 F800 02B9 CALL  L02B9		;channels_phase_update();
0142 7F8B      SOVM  			;
0143 7F89      ZAC   			;acc = 0;
0144 6A48      LT    $48		;
0145 6D54      MPY   $54		;
0146 6C49      LTA   $49		;acc += sample_vol[0] * sample_data[0];
0147 6D55      MPY   $55		;
0148 6C4A      LTA   $4A		;acc += sample_vol[1] * sample_data[1];
0149 6D56      MPY   $56		;
014A 6C4B      LTA   $4B		;acc += sample_vol[2] * sample_data[2];
014B 6D57      MPY   $57		;
014C 6C4C      LTA   $4C		;acc += sample_vol[3] * sample_data[3];
014D 6D58      MPY   $58		;
014E 6C4D      LTA   $4D		;acc += sample_vol[4] * sample_data[4];
014F 6D59      MPY   $59		;
0150 6C4E      LTA   $4E		;acc += sample_vol[5] * sample_data[5];
0151 6D5A      MPY   $5A		;
0152 6C4F      LTA   $4F		;acc += sample_vol[6] * sample_data[6];
0153 6D5B      MPY   $5B		;
0154 6C50      LTA   $50		;acc += sample_vol[7] * sample_data[7];
0155 6D5C      MPY   $5C		;
0156 6C51      LTA   $51		;acc += sample_vol[8] * sample_data[8];
0157 6D5D      MPY   $5D		;
0158 6C52      LTA   $52		;acc += sample_vol[9] * sample_data[9];
0159 6D5E      MPY   $5E		;
015A 6C53      LTA   $53		;acc += sample_vol[10] * sample_data[10];
015B 6D5F      MPY   $5F		;
015C 6C6E      LTA   $6E		;acc += sample_vol[11] * sample_data[11];
015D 6D71      MPY   $71		;
015E 7F8F      APAC  			;acc += *0x6E * *0x71;
015F 7F8F      APAC  			;acc += *0x6E * *0x71;
0160 5864      SACH  $64,0		;
0161 4B64      OUT   $64,3		;PORT_OUT_LEFT = sum >> 16;
0162 7F8A      ROVM  			;
0163 7F80      NOP   			;
0164 7F80      NOP   			;
0165 F600 016E BIOZ  L016E		;
0167 7F80      NOP   			;
0168 7F80      NOP   			;
0169 7F80      NOP   			;
016A F900 0171 B     L0171		;
016C F900 0084 B     L0084		;if (!BIO) {
L016E:
016E 4060      IN    $60,0		;  u16* ptr = PORT_CMD_ADDR;
016F 3860      LAR   AR0,$60		;  *ptr = PORT_CMD_DATA;
0170 4188      IN    *,1		;}
L0171:
0171 246A      LAC   $6A,4		;acc = *0x6A << 4;
0172 6072      ADDH  $72		;acc += *0x72 << 16;
0173 5864      SACH  $64,0		;*0x64 = acc >> 16;
0174 3864      LAR   AR0,$64		;u16* ptr = *0x64;
0175 6A88      LT    *			;
0176 6D6C      MPY   $6C		;
0177 7F8E      PAC   			;acc = *0x6C * *ptr;
0178 5864      SACH  $64,0		;*0x64 = acc >> 16;
0179 506C      SACL  $6C		;*0x6C = (u16)acc;
017A 2A6C      LAC   $6C,10		;
017B 586C      SACH  $6C,0		;*0x6A >>= 6;
017C 2A67      LAC   $67,10		;
017D 7867      XOR   $67		;
017E 796C      AND   $6C		;
017F 0A64      ADD   $64,10		;
0180 506C      SACL  $6C		;*0x64 = (((*0x67 << 10) ^ *0x67) & *0x6C) + (*0x64 << 10);
0181 F800 02B9 CALL  L02B9		;channels_phase_update();
0183 7F80      NOP   			;
0184 7F80      NOP   			;
0185 7F8B      SOVM  			;
0186 7F89      ZAC   			;acc = 0;
0187 6A48      LT    $48		;
0188 6D54      MPY   $54		;
0189 6C49      LTA   $49		;acc += sample_vol[0] * sample_data[0];
018A 6D55      MPY   $55		;
018B 6C4A      LTA   $4A		;acc += sample_vol[1] * sample_data[1];
018C 6D56      MPY   $56		;
018D 6C4B      LTA   $4B		;acc += sample_vol[2] * sample_data[2];
018E 6D57      MPY   $57		;
018F 6C4C      LTA   $4C		;acc += sample_vol[3] * sample_data[3];
0190 6D58      MPY   $58		;
0191 6C4D      LTA   $4D		;acc += sample_vol[4] * sample_data[4];
0192 6D59      MPY   $59		;
0193 6C4E      LTA   $4E		;acc += sample_vol[5] * sample_data[5];
0194 6D5A      MPY   $5A		;
0195 6C4F      LTA   $4F		;acc += sample_vol[6] * sample_data[6];
0196 6D5B      MPY   $5B		;
0197 6C50      LTA   $50		;acc += sample_vol[7] * sample_data[7];
0198 6D5C      MPY   $5C		;
0199 6C51      LTA   $51		;acc += sample_vol[8] * sample_data[8];
019A 6D5D      MPY   $5D		;
019B 6C52      LTA   $52		;acc += sample_vol[9] * sample_data[9];
019C 6D5E      MPY   $5E		;
019D 6C53      LTA   $53		;acc += sample_vol[10] * sample_data[10];
019E 6D5F      MPY   $5F		;
019F 6C6E      LTA   $6E		;acc += sample_vol[11] * sample_data[11];
01A0 6D71      MPY   $71		;
01A1 7F8F      APAC  			;acc += *0x6E * *0x71;
01A2 7F8F      APAC  			;acc += *0x6E * *0x71;
01A3 5864      SACH  $64,0		;
01A4 4B64      OUT   $64,3		;PORT_OUT_LEFT = sum >> 16;
01A5 7F8A      ROVM  			;
01A6 7F80      NOP   			;
01A7 7F80      NOP   			;
01A8 F600 01AF BIOZ  $1AF		;
01AA 7F80      NOP   			;
01AB 7F80      NOP   			;
01AC 7F80      NOP   			;
01AD F900 01B2 B     L01B2		;if (!BIO) {
01AF 4060      IN    $60,0		;  u8* ptr = PORT_CMD_REG;
01B0 3860      LAR   AR0,$60		;  *ptr = PORT_CMD_DATA;
01B1 4188      IN    *,1		;}
L01B2:
01B2 2069      LAC   $69,0		;
01B3 106D      SUB   $6D,0		;acc = *0x69 - *0x6D;
01B4 FE00 01BC BNZ   L01BC		;if (!acc) {
01B6 7F89      ZAC   			;
01B7 586E      SACH  $6E,0		;  *0x6E = 0;
01B8 587A      SACH  $7A,0		;  *0x7A = 0;
01B9 586C      SACH  $6C,0		;  *0x6C = 0;
01BA F900 01C2 B     $1C2		;}
L01BC:
01BC 7F80      NOP   			;
01BD 7F80      NOP   			;
01BE 7F80      NOP   			;
01BF 7F80      NOP   			;
01C0 7F80      NOP   			;
01C1 7F80      NOP   			;
01C2 F800 02B9 CALL  L02B9		;channels_phase_update();
01C4 666C      ZALS  $6C		;
01C5 FF00 01F6 BZ    L01F6		;if (!*0x6C) {
01C7 1079      SUB   $79,0		;
01C8 FA00 01FB BLZ   $1FB		;
01CA 7F80      NOP   			;
01CB 7F80      NOP   			;
01CC 7F8B      SOVM  			;
01CD 7F89      ZAC   			;
01CE 6A48      LT    $48		;
01CF 6D54      MPY   $54		;
01D0 6C49      LTA   $49		;
01D1 6D55      MPY   $55		;
01D2 6C4A      LTA   $4A		;
01D3 6D56      MPY   $56		;
01D4 6C4B      LTA   $4B		;
01D5 6D57      MPY   $57		;
01D6 6C4C      LTA   $4C		;
01D7 6D58      MPY   $58		;
01D8 6C4D      LTA   $4D		;
01D9 6D59      MPY   $59		;
01DA 6C4E      LTA   $4E		;
01DB 6D5A      MPY   $5A		;
01DC 6C4F      LTA   $4F		;
01DD 6D5B      MPY   $5B		;
01DE 6C50      LTA   $50		;
01DF 6D5C      MPY   $5C		;
01E0 6C51      LTA   $51		;
01E1 6D5D      MPY   $5D		;
01E2 6C52      LTA   $52		;
01E3 6D5E      MPY   $5E		;
01E4 6C53      LTA   $53		;
01E5 6D5F      MPY   $5F		;
01E6 6C6E      LTA   $6E		;
01E7 6D71      MPY   $71		;
01E8 7F8F      APAC  			;
01E9 7F8F      APAC  			;
01EA 5864      SACH  $64,0		;
01EB 4B64      OUT   $64,3		;
01EC 7F80      NOP   			;
01ED 6679      ZALS  $79		;
01EE 506C      SACL  $6C		;
01EF F600 0227 BIOZ  $227		;
01F1 7F80      NOP   			;
01F2 7F80      NOP   			;
01F3 7F80      NOP   			;
01F4 F900 022A B     $22A		;}
L01F6:
01F6 6666      ZALS  $66		;else {
01F7 506C      SACL  $6C		;
01F8 7F80      NOP   			;
01F9 F900 01FD B     $1FD		;
01FB 7F80      NOP   			;
01FC 7F80      NOP   			;
01FD 7F8B      SOVM  			;
01FE 7F89      ZAC   			;
01FF 6A48      LT    $48		;
0200 6D54      MPY   $54		;
0201 6C49      LTA   $49		;
0202 6D55      MPY   $55		;
0203 6C4A      LTA   $4A		;
0204 6D56      MPY   $56		;
0205 6C4B      LTA   $4B		;
0206 6D57      MPY   $57		;
0207 6C4C      LTA   $4C		;
0208 6D58      MPY   $58		;
0209 6C4D      LTA   $4D		;
020A 6D59      MPY   $59		;
020B 6C4E      LTA   $4E		;
020C 6D5A      MPY   $5A		;
020D 6C4F      LTA   $4F		;
020E 6D5B      MPY   $5B		;
020F 6C50      LTA   $50		;
0210 6D5C      MPY   $5C		;
0211 6C51      LTA   $51		;
0212 6D5D      MPY   $5D		;
0213 6C52      LTA   $52		;
0214 6D5E      MPY   $5E		;
0215 6C53      LTA   $53		;
0216 6D5F      MPY   $5F		;
0217 6C6E      LTA   $6E		;
0218 6D71      MPY   $71		;
0219 7F8F      APAC  			;
021A 7F8F      APAC  			;
021B 5864      SACH  $64,0		;
021C 4B64      OUT   $64,3		;
021D 7F80      NOP   			;
021E 7F80      NOP   			;
021F 7F80      NOP   			;
0220 F600 0227 BIOZ  $227		;
0222 7F80      NOP   			;
0223 7F80      NOP   			;
0224 7F80      NOP   			;
0225 F900 022A B     $22A		;

0227 4060      IN    $60,0		;
0228 3860      LAR   AR0,$60		;
0229 4188      IN    *,1		;}
L022A:
022A 246B      LAC   $6B,4		;
022B 7968      AND   $68		;
022C 506A      SACL  $6A		;
022D 246A      LAC   $6A,4		;
022E FC00 023B BGZ   $23B		;
0230 5864      SACH  $64,0		;
0231 6671      ZALS  $71		;
0232 6A64      LT    $64		;
0233 6D6C      MPY   $6C		;
0234 7F8F      APAC  			;
0235 5071      SACL  $71		;
0236 6571      ZALH  $71		;
0237 1F6C      SUB   $6C,15		;
0238 5871      SACH  $71,0		;
0239 F900 0246 B     $246		;
023B 5864      SACH  $64,0		;
023C 6671      ZALS  $71		;
023D 6A64      LT    $64		;
023E 6D6C      MPY   $6C		;
023F 7F8F      APAC  			;
0240 5071      SACL  $71		;
0241 6571      ZALH  $71		;
0242 0F6C      ADD   $6C,15		;
0243 5871      SACH  $71,0		;
0244 7F80      NOP   			;
0245 7F80      NOP   			;
0246 7F8A      ROVM  			;
0247 F800 02B9 CALL  L02B9		;channels_phase_update();
0249 7F8B      SOVM  			;
024A 7F89      ZAC   			;
024B 6A48      LT    $48		;
024C 6D54      MPY   $54		;
024D 6C49      LTA   $49		;
024E 6D55      MPY   $55		;
024F 6C4A      LTA   $4A		;
0250 6D56      MPY   $56		;
0251 6C4B      LTA   $4B		;
0252 6D57      MPY   $57		;
0253 6C4C      LTA   $4C		;
0254 6D58      MPY   $58		;
0255 6C4D      LTA   $4D		;
0256 6D59      MPY   $59		;
0257 6C4E      LTA   $4E		;
0258 6D5A      MPY   $5A		;
0259 6C4F      LTA   $4F		;
025A 6D5B      MPY   $5B		;
025B 6C50      LTA   $50		;
025C 6D5C      MPY   $5C		;
025D 6C51      LTA   $51		;
025E 6D5D      MPY   $5D		;
025F 6C52      LTA   $52		;
0260 6D5E      MPY   $5E		;
0261 6C53      LTA   $53		;
0262 6D5F      MPY   $5F		;
0263 6C6E      LTA   $6E		;
0264 6D71      MPY   $71		;
0265 7F8F      APAC  			;
0266 7F8F      APAC  			;
0267 5864      SACH  $64,0		;
0268 4B64      OUT   $64,3		;
0269 7F8A      ROVM  			;
026A 7F80      NOP   			;
026B 7F80      NOP   			;
026C F600 0273 BIOZ  $273		;
026E 7F80      NOP   			;
026F 7F80      NOP   			;
0270 7F80      NOP   			;
0271 F900 0276 B     $276		;
0273 4060      IN    $60,0		;
0274 3860      LAR   AR0,$60		;
0275 4188      IN    *,1		;
0276 246A      LAC   $6A,4		;
0277 6072      ADDH  $72		;
0278 5864      SACH  $64,0		;
0279 3864      LAR   AR0,$64		;
027A 6A88      LT    *			;
027B 6D6C      MPY   $6C		;
027C 7F8E      PAC   			;
027D 5864      SACH  $64,0		;
027E 506C      SACL  $6C		;
027F 2A6C      LAC   $6C,10		;
0280 586C      SACH  $6C,0		;
0281 2A67      LAC   $67,10		;
0282 7867      XOR   $67		;
0283 796C      AND   $6C		;
0284 0A64      ADD   $64,10		;
0285 506C      SACL  $6C		;
0286 7F80      NOP   			;
0287 7F80      NOP   			;
0288 F800 02B9 CALL  L02B9		;channels_phase_update();
028A 7F8B      SOVM  			;
028B 7F89      ZAC   			;
028C 6A48      LT    $48		;
028D 6D54      MPY   $54		;
028E 6C49      LTA   $49		;
028F 6D55      MPY   $55		;
0290 6C4A      LTA   $4A		;
0291 6D56      MPY   $56		;
0292 6C4B      LTA   $4B		;
0293 6D57      MPY   $57		;
0294 6C4C      LTA   $4C		;
0295 6D58      MPY   $58		;
0296 6C4D      LTA   $4D		;
0297 6D59      MPY   $59		;
0298 6C4E      LTA   $4E		;
0299 6D5A      MPY   $5A		;
029A 6C4F      LTA   $4F		;
029B 6D5B      MPY   $5B		;
029C 6C50      LTA   $50		;
029D 6D5C      MPY   $5C		;
029E 6C51      LTA   $51		;
029F 6D5D      MPY   $5D		;
02A0 6C52      LTA   $52		;
02A1 6D5E      MPY   $5E		;
02A2 6C53      LTA   $53		;
02A3 6D5F      MPY   $5F		;
02A4 6C6E      LTA   $6E		;
02A5 6D71      MPY   $71		;
02A6 7F8F      APAC  			;
02A7 7F8F      APAC  			;
02A8 5864      SACH  $64,0		;
02A9 4B64      OUT   $64,3		;
02AA 7F8A      ROVM  			;
02AB F600 02B4 BIOZ  L02B4		;
02AD 7F80      NOP   			;
02AE 7F80      NOP   			;
02AF 7F80      NOP   			;
02B0 7F80      NOP   			;
02B1 7F80      NOP   			;
02B2 F900 0084 B     L0084		;
L02B4:
02B4 4060      IN    $60,0		;
02B5 3860      LAR   AR0,$60		;
02B6 4188      IN    *,1		;
02B7 F900 0084 B     L0084		;

L02B9:					;void channels_phase_update()
02B9 493C      OUT   $3C,1		;PORT_ROM_BANK = sample_bank[0];
02BA 4800      OUT   $00,0		;PORT_ROM_ADR = sample_addr[0];
02BB 6A55      LT    $55		;
02BC 6D77      MPY   $77		;
02BD 7F8E      PAC   			;
02BE 5864      SACH  $64,0		;temp = (*0x55 * *0x77) >> 16;
02BF 6A64      LT    $64		;
02C0 6D18      MPY   $18		;
02C1 7F8E      PAC   			;
02C2 5864      SACH  $64,0		;temp = (temp * sample_rate[0]) >> 16;
02C3 6500      ZALH  $00		;
02C4 0A64      ADD   $64,10		;
02C5 610C      ADDS  $0C		;
02C6 0518      ADD   $18,5		;acc = (sample_addr[0] << 16) + (temp << 10) + sample_frac[0] + (sample_rate[0] << 5);
02C7 500C      SACL  $0C		;sample_frac[0] = (u16)acc;
02C8 5800      SACH  $00,0		;sample_addr[0] = acc >> 16;
02C9 4254      IN    $54,2		;sample_data[0] = PORT_ROM_DATA;
02CA 6224      SUBH  $24		;acc -= (sample_len[0] << 16);
02CB FB00 02CF BLEZ  L02CF		;if (acc > 0) {
02CD 6030      ADDH  $30		;  acc += (sample_loop[0] << 16);
02CE 5800      SACH  $00,0		;  sample_addr[0] = acc >> 16;
L02CF:					;}
02CF 493D      OUT   $3D,1		;PORT_ROM_BANK = sample_bank[1];
02D0 6501      ZALH  $01		;
02D1 4801      OUT   $01,0		;PORT_ROM_ADR = sample_addr[1];
02D2 610D      ADDS  $0D		;
02D3 0519      ADD   $19,5		;acc = (sample_addr[1] << 16) + sample_frac[1] + (sample_rate[1] << 5);
02D4 500D      SACL  $0D		;sample_frac[1] = (u16)acc;
02D5 5801      SACH  $01,0		;sample_addr[1] = acc >> 16;
02D6 4255      IN    $55,2		;sample_data[1] = PORT_ROM_DATA;
02D7 6225      SUBH  $25		;acc -= (sample_len[1] << 16);
02D8 FB00 02DC BLEZ  L02DC		;if (acc > 0) {
02DA 6031      ADDH  $31		;  acc += (sample_loop[1] << 16);
02DB 5801      SACH  $01,0		;  sample_addr[1] = acc >> 16;
L02DC:					;}
02DC 493E      OUT   $3E,1		;PORT_ROM_BANK = sample_bank[2];
02DD 4802      OUT   $02,0		;PORT_ROM_ADR = sample_addr[2];
02DE 6A57      LT    $57		;
02DF 6D78      MPY   $78		;
02E0 7F8E      PAC   			;
02E1 5864      SACH  $64,0		;temp = (*0x57 * *0x78) >> 16;
02E2 6A64      LT    $64		;
02E3 6D1A      MPY   $1A		;
02E4 7F8E      PAC   			;
02E5 5864      SACH  $64,0		;temp = (temp * sample_rate[2]) >> 16;
02E6 6502      ZALH  $02		;
02E7 0A64      ADD   $64,10		;
02E8 610E      ADDS  $0E		;
02E9 051A      ADD   $1A,5		;acc = (sample_addr[2] << 16) + (temp << 10) + sample_frac[2] + (sample_rate[2] << 5);
02EA 500E      SACL  $0E		;sample_frac[2] = (u16)acc;
02EB 5802      SACH  $02,0		;sample_addr[2] = acc >> 16;
02EC 4256      IN    $56,2		;sample_data[2] = PORT_ROM_DATA;
02ED 6226      SUBH  $26		;acc -= (sample_len[2] << 16);
02EE FB00 02F2 BLEZ  L02F2		;if (acc > 0) {
02F0 6032      ADDH  $32		;  acc += (sample_loop[2] << 16);
02F1 5802      SACH  $02,0		;  sample_addr[2] = acc >> 16;
L02F2:					;}
02F2 493F      OUT   $3F,1		;PORT_ROM_BANK = sample_bank[3];
02F3 6503      ZALH  $03		;
02F4 4803      OUT   $03,0		;PORT_ROM_ADR = sample_addr[3];
02F5 610F      ADDS  $0F		;
02F6 051B      ADD   $1B,5		;acc = (sample_addr[3] << 16) + sample_frac[3] + (sample_rate[3] << 5);
02F7 500F      SACL  $0F		;sample_frac[3] = (u16)acc;
02F8 5803      SACH  $03,0		;sample_addr[3] = acc >> 16;
02F9 4257      IN    $57,2		;sample_data[3] = PORT_ROM_DATA;
02FA 6227      SUBH  $27		;acc -= (sample_len[3] << 16);
02FB FB00 02FF BLEZ  L02FF		;if (acc > 0) {
02FD 6033      ADDH  $33		;  acc += (sample_loop[3] << 16);
02FE 5803      SACH  $03,0		;  sample_addr[3] = acc >> 16;
L02FF:					;}
02FF 4940      OUT   $40,1		;PORT_ROM_BANK = sample_bank[4];
0300 6504      ZALH  $04		;
0301 4804      OUT   $04,0		;PORT_ROM_ADR = sample_addr[4];
0302 6110      ADDS  $10		;
0303 051C      ADD   $1C,5		;acc = (sample_addr[4] << 16) + sample_frac[4] + (sample_rate[4] << 5);
0304 5010      SACL  $10		;sample_frac[4] = (u16)acc;
0305 5804      SACH  $04,0		;sample_addr[4] = acc >> 16;
0306 4258      IN    $58,2		;sample_data[4] = PORT_ROM_DATA;
0307 6228      SUBH  $28		;acc -= (sample_len[4] << 16);
0308 FB00 030C BLEZ  L030C		;if (acc > 0) {
030A 6034      ADDH  $34		;  acc += (sample_loop[4] << 16);
030B 5804      SACH  $04,0		;  sample_addr[4] = acc >> 16;
L030C:					;}
030C 4941      OUT   $41,1		;PORT_ROM_BANK = sample_bank[5];
030D 6505      ZALH  $05		;
030E 4805      OUT   $05,0		;PORT_ROM_ADR = sample_addr[5];
030F 6111      ADDS  $11		;
0310 051D      ADD   $1D,5		;acc = (sample_addr[5] << 16) + sample_frac[5] + (sample_rate[5] << 5);
0311 5011      SACL  $11		;sample_frac[5] = (u16)acc;
0312 5805      SACH  $05,0		;sample_addr[5] = acc >> 16;
0313 4259      IN    $59,2		;sample_data[5] = PORT_ROM_DATA;
0314 6229      SUBH  $29		;acc -= (sample_len[5] << 16);
0315 FB00 0319 BLEZ  L0319		;if (acc > 0) {
0317 6035      ADDH  $35		;  acc += (sample_loop[5] << 16);
0318 5805      SACH  $05,0		;  sample_addr[5] = acc >> 16;
L0319:					;}
0319 4942      OUT   $42,1		;PORT_ROM_BANK = sample_bank[6];
031A 6506      ZALH  $06		;
031B 4806      OUT   $06,0		;PORT_ROM_ADR = sample_addr[6];
031C 6112      ADDS  $12		;
031D 051E      ADD   $1E,5		;acc = (sample_addr[6] << 16) + sample_frac[6] + (sample_rate[6] << 5);
031E 5012      SACL  $12		;sample_frac[6] = (u16)acc;
031F 5806      SACH  $06,0		;sample_addr[6] = acc >> 16;
0320 425A      IN    $5A,2		;sample_data[6] = PORT_ROM_DATA;
0321 622A      SUBH  $2A		;acc -= (sample_len[6] << 16);
0322 FB00 0326 BLEZ  L0326		;if (acc > 0) {
0324 6036      ADDH  $36		;  acc += (sample_loop[6] << 16);
0325 5806      SACH  $06,0		;  sample_addr[6] = acc >> 16;
L0326:					;}
0326 4943      OUT   $43,1		;PORT_ROM_BANK = sample_bank[7];
0327 6507      ZALH  $07		;
0328 4807      OUT   $07,0		;PORT_ROM_ADR = sample_addr[7];
0329 6113      ADDS  $13		;
032A 051F      ADD   $1F,5		;acc = (sample_addr[7] << 16) + sample_frac[7] + (sample_rate[7] << 5);
032B 5013      SACL  $13		;sample_frac[7] = (u16)acc;
032C 5807      SACH  $07,0		;sample_addr[7] = acc >> 16;
032D 425B      IN    $5B,2		;sample_data[7] = PORT_ROM_DATA;
032E 622B      SUBH  $2B		;acc -= (sample_len[7] << 16);
032F FB00 0333 BLEZ  L0333		;if (acc > 0) {
0331 6037      ADDH  $37		;  acc += (sample_loop[7] << 16);
0332 5807      SACH  $07,0		;  sample_addr[7] = acc >> 16;
L0333:					;}
0333 4944      OUT   $44,1		;PORT_ROM_BANK = sample_bank[8];
0334 6508      ZALH  $08		;
0335 4808      OUT   $08,0		;PORT_ROM_ADR = sample_addr[8];
0336 6114      ADDS  $14		;
0337 0520      ADD   $20,5		;
0338 5014      SACL  $14		;
0339 5808      SACH  $08,0		;
033A 425C      IN    $5C,2		;sample_data[8] = PORT_ROM_DATA;
033B 622C      SUBH  $2C		;
033C FB00 0340 BLEZ  $340		;
033E 6038      ADDH  $38		;
033F 5808      SACH  $08,0		;

0340 4945      OUT   $45,1		;PORT_ROM_BANK = sample_bank[9];
0341 6509      ZALH  $09		;
0342 4809      OUT   $09,0		;PORT_ROM_ADR = sample_addr[9];
0343 6115      ADDS  $15		;
0344 0521      ADD   $21,5		;
0345 5015      SACL  $15		;
0346 5809      SACH  $09,0		;
0347 425D      IN    $5D,2		;sample_data[9] = PORT_ROM_DATA;
0348 622D      SUBH  $2D		;
0349 FB00 034D BLEZ  $34D		;
034B 6039      ADDH  $39		;
034C 5809      SACH  $09,0		;

034D 4946      OUT   $46,1		;PORT_ROM_BANK = sample_bank[10];
034E 650A      ZALH  $0A		;
034F 480A      OUT   $0A,0		;PORT_ROM_ADR = sample_addr[10];
0350 6116      ADDS  $16		;
0351 0522      ADD   $22,5		;
0352 5016      SACL  $16		;
0353 580A      SACH  $0A,0		;
0354 425E      IN    $5E,2		;sample_data[10] = PORT_ROM_DATA;
0355 622E      SUBH  $2E		;
0356 FB00 035A BLEZ  $35A		;
0358 603A      ADDH  $3A		;
0359 580A      SACH  $0A,0		;

035A 4947      OUT   $47,1		;PORT_ROM_BANK = sample_bank[11];
035B 650B      ZALH  $0B		;
035C 480B      OUT   $0B,0		;PORT_ROM_ADR = sample_addr[11];
035D 6117      ADDS  $17		;
035E 0523      ADD   $23,5		;
035F 5017      SACL  $17		;
0360 580B      SACH  $0B,0		;
0361 425F      IN    $5F,2		;sample_data[11] = PORT_ROM_DATA;
0362 622F      SUBH  $2F		;
0363 FB00 0367 BLEZ  $367		;
0365 603B      ADDH  $3B		;
0366 580B      SACH  $0B,0		;

0367 7F8D      RET   			;

L0368:					;mode_1:
0368 7F81      DINT  			;
0369 7F8A      ROVM  			;
036A 6E00      LDPK  $00		;
036B 6880      MAR   *,0		;
036C 70FF      LARK  AR0,#$FF		;
036D 7F89      ZAC   			;
036E 5088      SACL  *,0		;
036F F400 036E BANZ  $36E		;
0371 7E00      LACK  #$00		;
0372 5037      SACL  $37,0		;
0373 5038      SACL  $38,0		;
0374 5039      SACL  $39,0		;
0375 503A      SACL  $3A,0		;
0376 503B      SACL  $3B,0		;
0377 503C      SACL  $3C,0		;
0378 503D      SACL  $3D,0		;
0379 503E      SACL  $3E,0		;
037A 503F      SACL  $3F,0		;
037B 5040      SACL  $40,0		;
037C 5041      SACL  $41,0		;
037D 4164      IN    $64,1		;
037E 7E08      LACK  #$08		;
037F 5065      SACL  $65,0		;
0380 2865      LAC   $65,8		;
0381 5065      SACL  $65,0		;
0382 7E88      LACK  #$88		;
0383 5072      SACL  $72,0		;
0384 7E01      LACK  #$01		;
0385 5066      SACL  $66,0		;
0386 7EF0      LACK  #$F0		;
0387 5064      SACL  $64,0		;
0388 2864      LAC   $64,8		;
0389 5068      SACL  $68,0		;
038A 7F89      ZAC   			;
038B 1066      SUB   $66		;
038C 5067      SACL  $67,0		;
038D 7EFE      LACK  #$FE		;
038E 506F      SACL  $6F,0		;
038F 7E07      LACK  #$07		;
0390 5064      SACL  $64,0		;
0391 2864      LAC   $64,8		;
0392 5064      SACL  $64,0		;
0393 7ED0      LACK  #$D0		;
0394 7A64      OR    $64		;
0395 507A      SACL  $7A,0		;
0396 7E0A      LACK  #$0A		;
0397 506C      SACL  $6C,0		;
0398 5076      SACL  $76,0		;
0399 7080      LARK  AR0,#$80		;
039A 7E9A      LACK  #$9A		;
039B 50A8      SACL  *+,0		;
039C 50A8      SACL  *+,0		;
039D 7E80      LACK  #$80		;
039E 50A8      SACL  *+,0		;
039F 7E66      LACK  #$66		;
03A0 50A8      SACL  *+,0		;
03A1 7E4D      LACK  #$4D		;
03A2 50A8      SACL  *+,0		;
03A3 7E3A      LACK  #$3A		;
03A4 50A8      SACL  *+,0		;
03A5 7E3A      LACK  #$3A		;
03A6 50A8      SACL  *+,0		;
03A7 7E3A      LACK  #$3A		;
03A8 50A8      SACL  *+,0		;
03A9 7E3A      LACK  #$3A		;
03AA 50A8      SACL  *+,0		;
03AB 7E3A      LACK  #$3A		;
03AC 50A8      SACL  *+,0		;
03AD 7E3A      LACK  #$3A		;
03AE 50A8      SACL  *+,0		;
03AF 7E3A      LACK  #$3A		;
03B0 50A8      SACL  *+,0		;
03B1 7E4D      LACK  #$4D		;
03B2 50A8      SACL  *+,0		;
03B3 7E66      LACK  #$66		;
03B4 50A8      SACL  *+,0		;
03B5 7E80      LACK  #$80		;
03B6 50A8      SACL  *+,0		;
03B7 7E9A      LACK  #$9A		;
03B8 50A8      SACL  *+,0		;
03B9 2073      LAC   $73,0		;
03BA FF00 03C8 BZ    $3C8		;
03BC 6574      ZALH  $74		;
03BD 586E      SACH  $6E,0		;
03BE 6578      ZALH  $78		;
03BF 5870      SACH  $70,0		;
03C0 5071      SACL  $71,0		;
03C1 6576      ZALH  $76		;
03C2 586C      SACH  $6C,0		;
03C3 6575      ZALH  $75		;
03C4 5869      SACH  $69,0		;
03C5 5073      SACL  $73,0		;
03C6 7E01      LACK  #$01		;
03C7 507B      SACL  $7B,0		;
03C8 496F      OUT   $6F,1		;
03C9 4869      OUT   $69,0		;
03CA 2069      LAC   $69,0		;
03CB 007B      ADD   $7B,0		;
03CC 5069      SACL  $69,0		;
03CD 426B      IN    $6B,2		;
03CE 4937      OUT   $37,1		;
03CF 4800      OUT   $00,0		;
03D0 6A59      LT    $59		;
03D1 6D77      MPY   $77		;
03D2 7F8E      PAC   			;
03D3 5864      SACH  $64,0		;
03D4 6A64      LT    $64		;
03D5 6D16      MPY   $16		;
03D6 7F8E      PAC   			;
03D7 5864      SACH  $64,0		;
03D8 6500      ZALH  $00		;
03D9 0A64      ADD   $64,10		;
03DA 610B      ADDS  $0B		;
03DB 0516      ADD   $16,5		;
03DC 500B      SACL  $0B,0		;
03DD 5800      SACH  $00,0		;
03DE 4258      IN    $58,2		;
03DF 6221      SUBH  $21		;
03E0 FB00 03E4 BLEZ  $3E4		;
03E2 602C      ADDH  $2C		;
03E3 5800      SACH  $00,0		;
03E4 4938      OUT   $38,1		;
03E5 4801      OUT   $01,0		;
03E6 6501      ZALH  $01		;
03E7 610C      ADDS  $0C		;
03E8 0517      ADD   $17,5		;
03E9 500C      SACL  $0C,0		;
03EA 5801      SACH  $01,0		;
03EB 4259      IN    $59,2		;
03EC 6222      SUBH  $22		;
03ED FB00 03F1 BLEZ  $3F1		;
03EF 602D      ADDH  $2D		;
03F0 5801      SACH  $01,0		;
03F1 4939      OUT   $39,1		;
03F2 6502      ZALH  $02		;
03F3 4802      OUT   $02,0		;
03F4 610D      ADDS  $0D		;
03F5 0518      ADD   $18,5		;
03F6 500D      SACL  $0D,0		;
03F7 5802      SACH  $02,0		;
03F8 425A      IN    $5A,2		;
03F9 6223      SUBH  $23		;
03FA FB00 03FE BLEZ  $3FE		;
03FC 602E      ADDH  $2E		;
03FD 5802      SACH  $02,0		;
03FE 493A      OUT   $3A,1		;
03FF 6503      ZALH  $03		;
0400 4803      OUT   $03,0		;
0401 610E      ADDS  $0E		;
0402 0519      ADD   $19,5		;
0403 500E      SACL  $0E,0		;
0404 5803      SACH  $03,0		;
0405 425B      IN    $5B,2		;
0406 6224      SUBH  $24		;
0407 FB00 040B BLEZ  $40B		;
0409 602F      ADDH  $2F		;
040A 5803      SACH  $03,0		;
040B 493B      OUT   $3B,1		;
040C 6504      ZALH  $04		;
040D 4804      OUT   $04,0		;
040E 610F      ADDS  $0F		;
040F 051A      ADD   $1A,5		;
0410 500F      SACL  $0F,0		;
0411 5804      SACH  $04,0		;
0412 425C      IN    $5C,2		;
0413 6225      SUBH  $25		;
0414 FB00 0418 BLEZ  $418		;
0416 6030      ADDH  $30		;
0417 5804      SACH  $04,0		;
0418 493C      OUT   $3C,1		;
0419 6505      ZALH  $05		;
041A 4805      OUT   $05,0		;
041B 6110      ADDS  $10		;
041C 051B      ADD   $1B,5		;
041D 5010      SACL  $10,0		;
041E 5805      SACH  $05,0		;
041F 425D      IN    $5D,2		;
0420 6226      SUBH  $26		;
0421 FB00 0425 BLEZ  $425		;
0423 6031      ADDH  $31		;
0424 5805      SACH  $05,0		;
0425 493D      OUT   $3D,1		;
0426 6506      ZALH  $06		;
0427 4806      OUT   $06,0		;
0428 6111      ADDS  $11		;
0429 051C      ADD   $1C,5		;
042A 5011      SACL  $11,0		;
042B 5806      SACH  $06,0		;
042C 425E      IN    $5E,2		;
042D 6227      SUBH  $27		;
042E FB00 0432 BLEZ  $432		;
0430 6032      ADDH  $32		;
0431 5806      SACH  $06,0		;
0432 493E      OUT   $3E,1		;
0433 6507      ZALH  $07		;
0434 4807      OUT   $07,0		;
0435 6112      ADDS  $12		;
0436 051D      ADD   $1D,5		;
0437 5012      SACL  $12,0		;
0438 5807      SACH  $07,0		;
0439 425F      IN    $5F,2		;
043A 6228      SUBH  $28		;
043B FB00 043F BLEZ  $43F		;
043D 6033      ADDH  $33		;
043E 5807      SACH  $07,0		;
043F 493F      OUT   $3F,1		;
0440 6508      ZALH  $08		;
0441 4808      OUT   $08,0		;
0442 6113      ADDS  $13		;
0443 051E      ADD   $1E,5		;
0444 5013      SACL  $13,0		;
0445 5808      SACH  $08,0		;
0446 4260      IN    $60,2		;
0447 6229      SUBH  $29		;
0448 FB00 044C BLEZ  $44C		;
044A 6034      ADDH  $34		;
044B 5808      SACH  $08,0		;
044C 4940      OUT   $40,1		;
044D 6509      ZALH  $09		;
044E 4809      OUT   $09,0		;
044F 6114      ADDS  $14		;
0450 051F      ADD   $1F,5		;
0451 5014      SACL  $14,0		;
0452 5809      SACH  $09,0		;
0453 4261      IN    $61,2		;
0454 622A      SUBH  $2A		;
0455 FB00 0459 BLEZ  $459		;
0457 6035      ADDH  $35		;
0458 5809      SACH  $09,0		;
0459 4941      OUT   $41,1		;
045A 650A      ZALH  $0A		;
045B 480A      OUT   $0A,0		;
045C 6115      ADDS  $15		;
045D 0520      ADD   $20,5		;
045E 5015      SACL  $15,0		;
045F 580A      SACH  $0A,0		;
0460 4262      IN    $62,2		;
0461 622B      SUBH  $2B		;
0462 FB00 0466 BLEZ  $466		;
0464 6036      ADDH  $36		;
0465 580A      SACH  $0A,0		;
0466 666C      ZALS  $6C		;
0467 FF00 04B1 BZ    $4B1		;
0469 107A      SUB   $7A		;
046A FA00 04F9 BLZ   $4F9		;
046C 7F8B      SOVM  			;
046D 7F89      ZAC   			;
046E 6A42      LT    $42		;
046F 6D58      MPY   $58		;
0470 6C43      LTA   $43		;
0471 6D59      MPY   $59		;
0472 6C44      LTA   $44		;
0473 6D5A      MPY   $5A		;
0474 6C45      LTA   $45		;
0475 6D5B      MPY   $5B		;
0476 6C46      LTA   $46		;
0477 6D5C      MPY   $5C		;
0478 6C47      LTA   $47		;
0479 6D5D      MPY   $5D		;
047A 6C48      LTA   $48		;
047B 6D5E      MPY   $5E		;
047C 6C49      LTA   $49		;
047D 6D5F      MPY   $5F		;
047E 6C4A      LTA   $4A		;
047F 6D60      MPY   $60		;
0480 6C4B      LTA   $4B		;
0481 6D61      MPY   $61		;
0482 6C4C      LTA   $4C		;
0483 6D62      MPY   $62		;
0484 6C6E      LTA   $6E		;
0485 6D71      MPY   $71		;
0486 7F8F      APAC  			;
0487 7F8F      APAC  			;
0488 5864      SACH  $64,0		;
0489 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
048A 7F89      ZAC   			;
048B 6A4D      LT    $4D		;
048C 6D58      MPY   $58		;
048D 6C4E      LTA   $4E		;
048E 6D59      MPY   $59		;
048F 6C4F      LTA   $4F		;
0490 6D5A      MPY   $5A		;
0491 6C50      LTA   $50		;
0492 6D5B      MPY   $5B		;
0493 6C51      LTA   $51		;
0494 6D5C      MPY   $5C		;
0495 6C52      LTA   $52		;
0496 6D5D      MPY   $5D		;
0497 6C53      LTA   $53		;
0498 6D5E      MPY   $5E		;
0499 6C54      LTA   $54		;
049A 6D5F      MPY   $5F		;
049B 6C55      LTA   $55		;
049C 6D60      MPY   $60		;
049D 6C56      LTA   $56		;
049E 6D61      MPY   $61		;
049F 6C57      LTA   $57		;
04A0 6D62      MPY   $62		;
04A1 6C70      LTA   $70		;
04A2 6D71      MPY   $71		;
04A3 7F8F      APAC  			;
04A4 7F8F      APAC  			;
04A5 5864      SACH  $64,0		;
04A6 4B64      OUT   $64,3		;PORT_OUT_LEFT = *0x64;
04A7 7F80      NOP   			;
04A8 667A      ZALS  $7A		;
04A9 506C      SACL  $6C,0		;
04AA F600 053E BIOZ  $53E		;
04AC 7F80      NOP   			;
04AD 7F80      NOP   			;
04AE 7F80      NOP   			;
04AF F900 0541 B     $541		;
04B1 6666      ZALS  $66		;
04B2 506C      SACL  $6C,0		;
04B3 7F80      NOP   			;
04B4 7F8B      SOVM  			;
04B5 7F89      ZAC   			;
04B6 6A42      LT    $42		;
04B7 6D58      MPY   $58		;
04B8 6C43      LTA   $43		;
04B9 6D59      MPY   $59		;
04BA 6C44      LTA   $44		;
04BB 6D5A      MPY   $5A		;
04BC 6C45      LTA   $45		;
04BD 6D5B      MPY   $5B		;
04BE 6C46      LTA   $46		;
04BF 6D5C      MPY   $5C		;
04C0 6C47      LTA   $47		;
04C1 6D5D      MPY   $5D		;
04C2 6C48      LTA   $48		;
04C3 6D5E      MPY   $5E		;
04C4 6C49      LTA   $49		;
04C5 6D5F      MPY   $5F		;
04C6 6C4A      LTA   $4A		;
04C7 6D60      MPY   $60		;
04C8 6C4B      LTA   $4B		;
04C9 6D61      MPY   $61		;
04CA 6C4C      LTA   $4C		;
04CB 6D62      MPY   $62		;
04CC 6C6E      LTA   $6E		;
04CD 6D71      MPY   $71		;
04CE 7F8F      APAC  			;
04CF 7F8F      APAC  			;
04D0 5864      SACH  $64,0		;
04D1 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
04D2 7F89      ZAC   			;
04D3 6A4D      LT    $4D		;
04D4 6D58      MPY   $58		;
04D5 6C4E      LTA   $4E		;
04D6 6D59      MPY   $59		;
04D7 6C4F      LTA   $4F		;
04D8 6D5A      MPY   $5A		;
04D9 6C50      LTA   $50		;
04DA 6D5B      MPY   $5B		;
04DB 6C51      LTA   $51		;
04DC 6D5C      MPY   $5C		;
04DD 6C52      LTA   $52		;
04DE 6D5D      MPY   $5D		;
04DF 6C53      LTA   $53		;
04E0 6D5E      MPY   $5E		;
04E1 6C54      LTA   $54		;
04E2 6D5F      MPY   $5F		;
04E3 6C55      LTA   $55		;
04E4 6D60      MPY   $60		;
04E5 6C56      LTA   $56		;
04E6 6D61      MPY   $61		;
04E7 6C57      LTA   $57		;
04E8 6D62      MPY   $62		;
04E9 6C70      LTA   $70		;
04EA 6D71      MPY   $71		;
04EB 7F8F      APAC  			;
04EC 7F8F      APAC  			;
04ED 5864      SACH  $64,0		;
04EE 4B64      OUT   $64,3		;PORT_OUT_LEFT = *0x64;
04EF 7F80      NOP   			;
04F0 7F80      NOP   			;
04F1 7F80      NOP   			;
04F2 F600 053E BIOZ  $53E		;
04F4 7F80      NOP   			;
04F5 7F80      NOP   			;
04F6 7F80      NOP   			;
04F7 F900 0541 B     $541		;
04F9 7F8B      SOVM  			;
04FA 7F89      ZAC   			;
04FB 6A42      LT    $42		;
04FC 6D58      MPY   $58		;
04FD 6C43      LTA   $43		;
04FE 6D59      MPY   $59		;
04FF 6C44      LTA   $44		;
0500 6D5A      MPY   $5A		;
0501 6C45      LTA   $45		;
0502 6D5B      MPY   $5B		;
0503 6C46      LTA   $46		;
0504 6D5C      MPY   $5C		;
0505 6C47      LTA   $47		;
0506 6D5D      MPY   $5D		;
0507 6C48      LTA   $48		;
0508 6D5E      MPY   $5E		;
0509 6C49      LTA   $49		;
050A 6D5F      MPY   $5F		;
050B 6C4A      LTA   $4A		;
050C 6D60      MPY   $60		;
050D 6C4B      LTA   $4B		;
050E 6D61      MPY   $61		;
050F 6C4C      LTA   $4C		;
0510 6D62      MPY   $62		;
0511 6C6E      LTA   $6E		;
0512 6D71      MPY   $71		;
0513 7F8F      APAC  			;
0514 7F8F      APAC  			;
0515 5864      SACH  $64,0		;
0516 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
0517 7F89      ZAC   			;
0518 6A4D      LT    $4D		;
0519 6D58      MPY   $58		;
051A 6C4E      LTA   $4E		;
051B 6D59      MPY   $59		;
051C 6C4F      LTA   $4F		;
051D 6D5A      MPY   $5A		;
051E 6C50      LTA   $50		;
051F 6D5B      MPY   $5B		;
0520 6C51      LTA   $51		;
0521 6D5C      MPY   $5C		;
0522 6C52      LTA   $52		;
0523 6D5D      MPY   $5D		;
0524 6C53      LTA   $53		;
0525 6D5E      MPY   $5E		;
0526 6C54      LTA   $54		;
0527 6D5F      MPY   $5F		;
0528 6C55      LTA   $55		;
0529 6D60      MPY   $60		;
052A 6C56      LTA   $56		;
052B 6D61      MPY   $61		;
052C 6C57      LTA   $57		;
052D 6D62      MPY   $62		;
052E 6C70      LTA   $70		;
052F 6D71      MPY   $71		;
0530 7F8F      APAC  			;
0531 7F8F      APAC  			;
0532 5864      SACH  $64,0		;
0533 4B64      OUT   $64,3		;PORT_OUT_LEFT = *0x64;
0534 7F80      NOP   			;
0535 7F80      NOP   			;
0536 7F80      NOP   			;
0537 F600 053E BIOZ  $53E		;
0539 7F80      NOP   			;
053A 7F80      NOP   			;
053B 7F80      NOP   			;
053C F900 0541 B     $541		;
053E 4060      IN    $60,0		;
053F 3860      LAR   AR0,$60		;
0540 4188      IN    *,1		;
0541 206B      LAC   $6B,0		;
0542 7968      AND   $68		;
0543 506A      SACL  $6A,0		;
0544 246A      LAC   $6A,4		;
0545 FC00 0552 BGZ   $552		;
0547 5864      SACH  $64,0		;
0548 6671      ZALS  $71		;
0549 6A64      LT    $64		;
054A 6D6C      MPY   $6C		;
054B 7F8F      APAC  			;
054C 5071      SACL  $71,0		;
054D 6571      ZALH  $71		;
054E 1F6C      SUB   $6C		;
054F 5871      SACH  $71,0		;
0550 F900 055D B     $55D		;
0552 5864      SACH  $64,0		;
0553 6671      ZALS  $71		;
0554 6A64      LT    $64		;
0555 6D6C      MPY   $6C		;
0556 7F8F      APAC  			;
0557 5071      SACL  $71,0		;
0558 6571      ZALH  $71		;
0559 0F6C      ADD   $6C,15		;
055A 5871      SACH  $71,0		;
055B 7F80      NOP   			;
055C 7F80      NOP   			;
055D 7F8A      ROVM  			;
055E 4937      OUT   $37,1		;
055F 4800      OUT   $00,0		;
0560 6A59      LT    $59		;
0561 6D77      MPY   $77		;
0562 7F8E      PAC   			;
0563 5864      SACH  $64,0		;
0564 6A64      LT    $64		;
0565 6D16      MPY   $16		;
0566 7F8E      PAC   			;
0567 5864      SACH  $64,0		;
0568 6500      ZALH  $00		;
0569 0A64      ADD   $64,10		;
056A 610B      ADDS  $0B		;
056B 0516      ADD   $16,5		;
056C 500B      SACL  $0B,0		;
056D 5800      SACH  $00,0		;
056E 4258      IN    $58,2		;
056F 6221      SUBH  $21		;
0570 FB00 0574 BLEZ  $574		;
0572 602C      ADDH  $2C		;
0573 5800      SACH  $00,0		;
0574 4938      OUT   $38,1		;
0575 6501      ZALH  $01		;
0576 4801      OUT   $01,0		;
0577 610C      ADDS  $0C		;
0578 0517      ADD   $17,5		;
0579 500C      SACL  $0C,0		;
057A 5801      SACH  $01,0		;
057B 4259      IN    $59,2		;
057C 6222      SUBH  $22		;
057D FB00 0581 BLEZ  $581		;
057F 602D      ADDH  $2D		;
0580 5801      SACH  $01,0		;
0581 4939      OUT   $39,1		;
0582 6502      ZALH  $02		;
0583 4802      OUT   $02,0		;
0584 610D      ADDS  $0D		;
0585 0518      ADD   $18,5		;
0586 500D      SACL  $0D,0		;
0587 5802      SACH  $02,0		;
0588 425A      IN    $5A,2		;
0589 6223      SUBH  $23		;
058A FB00 058E BLEZ  $58E		;
058C 602E      ADDH  $2E		;
058D 5802      SACH  $02,0		;
058E 493A      OUT   $3A,1		;
058F 6503      ZALH  $03		;
0590 4803      OUT   $03,0		;
0591 610E      ADDS  $0E		;
0592 0519      ADD   $19,5		;
0593 500E      SACL  $0E,0		;
0594 5803      SACH  $03,0		;
0595 425B      IN    $5B,2		;
0596 6224      SUBH  $24		;
0597 FB00 059B BLEZ  $59B		;
0599 602F      ADDH  $2F		;
059A 5803      SACH  $03,0		;
059B 493B      OUT   $3B,1		;
059C 6504      ZALH  $04		;
059D 4804      OUT   $04,0		;
059E 610F      ADDS  $0F		;
059F 051A      ADD   $1A,5		;
05A0 500F      SACL  $0F,0		;
05A1 5804      SACH  $04,0		;
05A2 425C      IN    $5C,2		;
05A3 6225      SUBH  $25		;
05A4 FB00 05A8 BLEZ  $5A8		;
05A6 6030      ADDH  $30		;
05A7 5804      SACH  $04,0		;
05A8 493C      OUT   $3C,1		;
05A9 6505      ZALH  $05		;
05AA 4805      OUT   $05,0		;
05AB 6110      ADDS  $10		;
05AC 051B      ADD   $1B,5		;
05AD 5010      SACL  $10,0		;
05AE 5805      SACH  $05,0		;
05AF 425D      IN    $5D,2		;
05B0 6226      SUBH  $26		;
05B1 FB00 05B5 BLEZ  $5B5		;
05B3 6031      ADDH  $31		;
05B4 5805      SACH  $05,0		;
05B5 493D      OUT   $3D,1		;
05B6 6506      ZALH  $06		;
05B7 4806      OUT   $06,0		;
05B8 6111      ADDS  $11		;
05B9 051C      ADD   $1C,5		;
05BA 5011      SACL  $11,0		;
05BB 5806      SACH  $06,0		;
05BC 425E      IN    $5E,2		;
05BD 6227      SUBH  $27		;
05BE FB00 05C2 BLEZ  $5C2		;
05C0 6032      ADDH  $32		;
05C1 5806      SACH  $06,0		;
05C2 493E      OUT   $3E,1		;
05C3 6507      ZALH  $07		;
05C4 4807      OUT   $07,0		;
05C5 6112      ADDS  $12		;
05C6 051D      ADD   $1D,5		;
05C7 5012      SACL  $12,0		;
05C8 5807      SACH  $07,0		;
05C9 425F      IN    $5F,2		;
05CA 6228      SUBH  $28		;
05CB FB00 05CF BLEZ  $5CF		;
05CD 6033      ADDH  $33		;
05CE 5807      SACH  $07,0		;
05CF 493F      OUT   $3F,1		;
05D0 6508      ZALH  $08		;
05D1 4808      OUT   $08,0		;
05D2 6113      ADDS  $13		;
05D3 051E      ADD   $1E,5		;
05D4 5013      SACL  $13,0		;
05D5 5808      SACH  $08,0		;
05D6 4260      IN    $60,2		;
05D7 6229      SUBH  $29		;
05D8 FB00 05DC BLEZ  $5DC		;
05DA 6034      ADDH  $34		;
05DB 5808      SACH  $08,0		;
05DC 4940      OUT   $40,1		;
05DD 6509      ZALH  $09		;
05DE 4809      OUT   $09,0		;
05DF 6114      ADDS  $14		;
05E0 051F      ADD   $1F,5		;
05E1 5014      SACL  $14,0		;
05E2 5809      SACH  $09,0		;
05E3 4261      IN    $61,2		;
05E4 622A      SUBH  $2A		;
05E5 FB00 05E9 BLEZ  $5E9		;
05E7 6035      ADDH  $35		;
05E8 5809      SACH  $09,0		;
05E9 4941      OUT   $41,1		;
05EA 650A      ZALH  $0A		;
05EB 480A      OUT   $0A,0		;
05EC 6115      ADDS  $15		;
05ED 0520      ADD   $20,5		;
05EE 5015      SACL  $15,0		;
05EF 580A      SACH  $0A,0		;
05F0 4262      IN    $62,2		;
05F1 622B      SUBH  $2B		;
05F2 FB00 05F6 BLEZ  $5F6		;
05F4 6036      ADDH  $36		;
05F5 580A      SACH  $0A,0		;
05F6 7F8B      SOVM  			;
05F7 7F89      ZAC   			;
05F8 6A42      LT    $42		;
05F9 6D58      MPY   $58		;
05FA 6C43      LTA   $43		;
05FB 6D59      MPY   $59		;
05FC 6C44      LTA   $44		;
05FD 6D5A      MPY   $5A		;
05FE 6C45      LTA   $45		;
05FF 6D5B      MPY   $5B		;
0600 6C46      LTA   $46		;
0601 6D5C      MPY   $5C		;
0602 6C47      LTA   $47		;
0603 6D5D      MPY   $5D		;
0604 6C48      LTA   $48		;
0605 6D5E      MPY   $5E		;
0606 6C49      LTA   $49		;
0607 6D5F      MPY   $5F		;
0608 6C4A      LTA   $4A		;
0609 6D60      MPY   $60		;
060A 6C4B      LTA   $4B		;
060B 6D61      MPY   $61		;
060C 6C4C      LTA   $4C		;
060D 6D62      MPY   $62		;
060E 6C6E      LTA   $6E		;
060F 6D71      MPY   $71		;
0610 7F8F      APAC  			;
0611 7F8F      APAC  			;
0612 5864      SACH  $64,0		;
0613 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
0614 7F89      ZAC   			;
0615 6A4D      LT    $4D		;
0616 6D58      MPY   $58		;
0617 6C4E      LTA   $4E		;
0618 6D59      MPY   $59		;
0619 6C4F      LTA   $4F		;
061A 6D5A      MPY   $5A		;
061B 6C50      LTA   $50		;
061C 6D5B      MPY   $5B		;
061D 6C51      LTA   $51		;
061E 6D5C      MPY   $5C		;
061F 6C52      LTA   $52		;
0620 6D5D      MPY   $5D		;
0621 6C53      LTA   $53		;
0622 6D5E      MPY   $5E		;
0623 6C54      LTA   $54		;
0624 6D5F      MPY   $5F		;
0625 6C55      LTA   $55		;
0626 6D60      MPY   $60		;
0627 6C56      LTA   $56		;
0628 6D61      MPY   $61		;
0629 6C57      LTA   $57		;
062A 6D62      MPY   $62		;
062B 6C70      LTA   $70		;
062C 6D71      MPY   $71		;
062D 7F8F      APAC  			;
062E 7F8F      APAC  			;
062F 5864      SACH  $64,0		;
0630 4B64      OUT   $64,3		;PORT_OUT_LEFT = *0x64;
0631 7F8A      ROVM  			;
0632 7F80      NOP   			;
0633 7F80      NOP   			;
0634 F600 063B BIOZ  $63B		;
0636 7F80      NOP   			;
0637 7F80      NOP   			;
0638 7F80      NOP   			;
0639 F900 063E B     $63E		;
063B 4060      IN    $60,0		;
063C 3860      LAR   AR0,$60		;
063D 4188      IN    *,1		;
063E 246A      LAC   $6A,4		;
063F 6072      ADDH  $72		;
0640 5864      SACH  $64,0		;
0641 3864      LAR   AR0,$64		;
0642 6A88      LT    *			;
0643 6D6C      MPY   $6C		;
0644 7F8E      PAC   			;
0645 5864      SACH  $64,0		;
0646 506C      SACL  $6C,0		;
0647 2A6C      LAC   $6C,10		;
0648 586C      SACH  $6C,0		;
0649 2A67      LAC   $67,10		;
064A 7867      XOR   $67		;
064B 796C      AND   $6C		;
064C 0A64      ADD   $64,10		;
064D 506C      SACL  $6C,0		;
064E 4937      OUT   $37,1		;
064F 4800      OUT   $00,0		;
0650 6A59      LT    $59		;
0651 6D77      MPY   $77		;
0652 7F8E      PAC   			;
0653 5864      SACH  $64,0		;
0654 6A64      LT    $64		;
0655 6D16      MPY   $16		;
0656 7F8E      PAC   			;
0657 5864      SACH  $64,0		;
0658 6500      ZALH  $00		;
0659 0A64      ADD   $64,10		;
065A 610B      ADDS  $0B		;
065B 0516      ADD   $16,5		;
065C 500B      SACL  $0B,0		;
065D 5800      SACH  $00,0		;
065E 4258      IN    $58,2		;
065F 6221      SUBH  $21		;
0660 FB00 0664 BLEZ  $664		;
0662 602C      ADDH  $2C		;
0663 5800      SACH  $00,0		;
0664 4938      OUT   $38,1		;
0665 6501      ZALH  $01		;
0666 4801      OUT   $01,0		;
0667 610C      ADDS  $0C		;
0668 0517      ADD   $17,5		;
0669 500C      SACL  $0C,0		;
066A 5801      SACH  $01,0		;
066B 4259      IN    $59,2		;
066C 6222      SUBH  $22		;
066D FB00 0671 BLEZ  $671		;
066F 602D      ADDH  $2D		;
0670 5801      SACH  $01,0		;
0671 4939      OUT   $39,1		;
0672 6502      ZALH  $02		;
0673 4802      OUT   $02,0		;
0674 610D      ADDS  $0D		;
0675 0518      ADD   $18,5		;
0676 500D      SACL  $0D,0		;
0677 5802      SACH  $02,0		;
0678 425A      IN    $5A,2		;
0679 6223      SUBH  $23		;
067A FB00 067E BLEZ  $67E		;
067C 602E      ADDH  $2E		;
067D 5802      SACH  $02,0		;
067E 493A      OUT   $3A,1		;
067F 6503      ZALH  $03		;
0680 4803      OUT   $03,0		;
0681 610E      ADDS  $0E		;
0682 0519      ADD   $19,5		;
0683 500E      SACL  $0E,0		;
0684 5803      SACH  $03,0		;
0685 425B      IN    $5B,2		;
0686 6224      SUBH  $24		;
0687 FB00 068B BLEZ  $68B		;
0689 602F      ADDH  $2F		;
068A 5803      SACH  $03,0		;
068B 493B      OUT   $3B,1		;
068C 6504      ZALH  $04		;
068D 4804      OUT   $04,0		;
068E 610F      ADDS  $0F		;
068F 051A      ADD   $1A,5		;
0690 500F      SACL  $0F,0		;
0691 5804      SACH  $04,0		;
0692 425C      IN    $5C,2		;
0693 6225      SUBH  $25		;
0694 FB00 0698 BLEZ  $698		;
0696 6030      ADDH  $30		;
0697 5804      SACH  $04,0		;
0698 493C      OUT   $3C,1		;
0699 6505      ZALH  $05		;
069A 4805      OUT   $05,0		;
069B 6110      ADDS  $10		;
069C 051B      ADD   $1B,5		;
069D 5010      SACL  $10,0		;
069E 5805      SACH  $05,0		;
069F 425D      IN    $5D,2		;
06A0 6226      SUBH  $26		;
06A1 FB00 06A5 BLEZ  $6A5		;
06A3 6031      ADDH  $31		;
06A4 5805      SACH  $05,0		;
06A5 493D      OUT   $3D,1		;
06A6 6506      ZALH  $06		;
06A7 4806      OUT   $06,0		;
06A8 6111      ADDS  $11		;
06A9 051C      ADD   $1C,5		;
06AA 5011      SACL  $11,0		;
06AB 5806      SACH  $06,0		;
06AC 425E      IN    $5E,2		;
06AD 6227      SUBH  $27		;
06AE FB00 06B2 BLEZ  $6B2		;
06B0 6032      ADDH  $32		;
06B1 5806      SACH  $06,0		;
06B2 493E      OUT   $3E,1		;
06B3 6507      ZALH  $07		;
06B4 4807      OUT   $07,0		;
06B5 6112      ADDS  $12		;
06B6 051D      ADD   $1D,5		;
06B7 5012      SACL  $12,0		;
06B8 5807      SACH  $07,0		;
06B9 425F      IN    $5F,2		;
06BA 6228      SUBH  $28		;
06BB FB00 06BF BLEZ  $6BF		;
06BD 6033      ADDH  $33		;
06BE 5807      SACH  $07,0		;
06BF 493F      OUT   $3F,1		;
06C0 6508      ZALH  $08		;
06C1 4808      OUT   $08,0		;
06C2 6113      ADDS  $13		;
06C3 051E      ADD   $1E,5		;
06C4 5013      SACL  $13,0		;
06C5 5808      SACH  $08,0		;
06C6 4260      IN    $60,2		;
06C7 6229      SUBH  $29		;
06C8 FB00 06CC BLEZ  $6CC		;
06CA 6034      ADDH  $34		;
06CB 5808      SACH  $08,0		;
06CC 4940      OUT   $40,1		;
06CD 6509      ZALH  $09		;
06CE 4809      OUT   $09,0		;
06CF 6114      ADDS  $14		;
06D0 051F      ADD   $1F,5		;
06D1 5014      SACL  $14,0		;
06D2 5809      SACH  $09,0		;
06D3 4261      IN    $61,2		;
06D4 622A      SUBH  $2A		;
06D5 FB00 06D9 BLEZ  $6D9		;
06D7 6035      ADDH  $35		;
06D8 5809      SACH  $09,0		;
06D9 4941      OUT   $41,1		;
06DA 650A      ZALH  $0A		;
06DB 480A      OUT   $0A,0		;
06DC 6115      ADDS  $15		;
06DD 0520      ADD   $20,5		;
06DE 5015      SACL  $15,0		;
06DF 580A      SACH  $0A,0		;
06E0 4262      IN    $62,2		;
06E1 622B      SUBH  $2B		;
06E2 FB00 06E6 BLEZ  $6E6		;
06E4 6036      ADDH  $36		;
06E5 580A      SACH  $0A,0		;
06E6 7F80      NOP   			;
06E7 7F80      NOP   			;
06E8 7F8B      SOVM  			;
06E9 7F89      ZAC   			;
06EA 6A42      LT    $42		;
06EB 6D58      MPY   $58		;
06EC 6C43      LTA   $43		;
06ED 6D59      MPY   $59		;
06EE 6C44      LTA   $44		;
06EF 6D5A      MPY   $5A		;
06F0 6C45      LTA   $45		;
06F1 6D5B      MPY   $5B		;
06F2 6C46      LTA   $46		;
06F3 6D5C      MPY   $5C		;
06F4 6C47      LTA   $47		;
06F5 6D5D      MPY   $5D		;
06F6 6C48      LTA   $48		;
06F7 6D5E      MPY   $5E		;
06F8 6C49      LTA   $49		;
06F9 6D5F      MPY   $5F		;
06FA 6C4A      LTA   $4A		;
06FB 6D60      MPY   $60		;
06FC 6C4B      LTA   $4B		;
06FD 6D61      MPY   $61		;
06FE 6C4C      LTA   $4C		;
06FF 6D62      MPY   $62		;
0700 6C6E      LTA   $6E		;
0701 6D71      MPY   $71		;
0702 7F8F      APAC  			;
0703 7F8F      APAC  			;
0704 5864      SACH  $64,0		;
0705 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
0706 7F89      ZAC   			;
0707 6A4D      LT    $4D		;
0708 6D58      MPY   $58		;
0709 6C4E      LTA   $4E		;
070A 6D59      MPY   $59		;
070B 6C4F      LTA   $4F		;
070C 6D5A      MPY   $5A		;
070D 6C50      LTA   $50		;
070E 6D5B      MPY   $5B		;
070F 6C51      LTA   $51		;
0710 6D5C      MPY   $5C		;
0711 6C52      LTA   $52		;
0712 6D5D      MPY   $5D		;
0713 6C53      LTA   $53		;
0714 6D5E      MPY   $5E		;
0715 6C54      LTA   $54		;
0716 6D5F      MPY   $5F		;
0717 6C55      LTA   $55		;
0718 6D60      MPY   $60		;
0719 6C56      LTA   $56		;
071A 6D61      MPY   $61		;
071B 6C57      LTA   $57		;
071C 6D62      MPY   $62		;
071D 6C70      LTA   $70		;
071E 6D71      MPY   $71		;
071F 7F8F      APAC  			;
0720 7F8F      APAC  			;
0721 5864      SACH  $64,0		;
0722 4B64      OUT   $64,3		;PORT_OUT_LEFT = *0x64;
0723 7F8A      ROVM  			;
0724 7F80      NOP   			;
0725 7F80      NOP   			;
0726 F600 072D BIOZ  $72D		;
0728 7F80      NOP   			;
0729 7F80      NOP   			;
072A 7F80      NOP   			;
072B F900 0730 B     $730		;
072D 4060      IN    $60,0		;
072E 3860      LAR   AR0,$60		;
072F 4188      IN    *,1		;
0730 2069      LAC   $69,0		;
0731 106D      SUB   $6D		;
0732 FE00 073B BNZ   $73B		;
0734 7F89      ZAC   			;
0735 5870      SACH  $70,0		;
0736 586E      SACH  $6E,0		;
0737 587B      SACH  $7B,0		;
0738 586C      SACH  $6C,0		;
0739 F900 0742 B     $742		;
073B 7F80      NOP   			;
073C 7F80      NOP   			;
073D 7F80      NOP   			;
073E 7F80      NOP   			;
073F 7F80      NOP   			;
0740 7F80      NOP   			;
0741 7F80      NOP   			;
0742 4937      OUT   $37,1		;
0743 4800      OUT   $00,0		;
0744 6A59      LT    $59		;
0745 6D77      MPY   $77		;
0746 7F8E      PAC   			;
0747 5864      SACH  $64,0		;
0748 6A64      LT    $64		;
0749 6D16      MPY   $16		;
074A 7F8E      PAC   			;
074B 5864      SACH  $64,0		;
074C 6500      ZALH  $00		;
074D 0A64      ADD   $64,10		;
074E 610B      ADDS  $0B		;
074F 0516      ADD   $16,5		;
0750 500B      SACL  $0B,0		;
0751 5800      SACH  $00,0		;
0752 4258      IN    $58,2		;
0753 6221      SUBH  $21		;
0754 FB00 0758 BLEZ  $758		;
0756 602C      ADDH  $2C		;
0757 5800      SACH  $00,0		;
0758 4938      OUT   $38,1		;
0759 6501      ZALH  $01		;
075A 4801      OUT   $01,0		;
075B 610C      ADDS  $0C		;
075C 0517      ADD   $17,5		;
075D 500C      SACL  $0C,0		;
075E 5801      SACH  $01,0		;
075F 4259      IN    $59,2		;
0760 6222      SUBH  $22		;
0761 FB00 0765 BLEZ  $765		;
0763 602D      ADDH  $2D		;
0764 5801      SACH  $01,0		;
0765 4939      OUT   $39,1		;
0766 6502      ZALH  $02		;
0767 4802      OUT   $02,0		;
0768 610D      ADDS  $0D		;
0769 0518      ADD   $18,5		;
076A 500D      SACL  $0D,0		;
076B 5802      SACH  $02,0		;
076C 425A      IN    $5A,2		;
076D 6223      SUBH  $23		;
076E FB00 0772 BLEZ  $772		;
0770 602E      ADDH  $2E		;
0771 5802      SACH  $02,0		;
0772 493A      OUT   $3A,1		;
0773 6503      ZALH  $03		;
0774 4803      OUT   $03,0		;
0775 610E      ADDS  $0E		;
0776 0519      ADD   $19,5		;
0777 500E      SACL  $0E,0		;
0778 5803      SACH  $03,0		;
0779 425B      IN    $5B,2		;
077A 6224      SUBH  $24		;
077B FB00 077F BLEZ  $77F		;
077D 602F      ADDH  $2F		;
077E 5803      SACH  $03,0		;
077F 493B      OUT   $3B,1		;
0780 6504      ZALH  $04		;
0781 4804      OUT   $04,0		;
0782 610F      ADDS  $0F		;
0783 051A      ADD   $1A,5		;
0784 500F      SACL  $0F,0		;
0785 5804      SACH  $04,0		;
0786 425C      IN    $5C,2		;
0787 6225      SUBH  $25		;
0788 FB00 078C BLEZ  $78C		;
078A 6030      ADDH  $30		;
078B 5804      SACH  $04,0		;
078C 493C      OUT   $3C,1		;
078D 6505      ZALH  $05		;
078E 4805      OUT   $05,0		;
078F 6110      ADDS  $10		;
0790 051B      ADD   $1B,5		;
0791 5010      SACL  $10,0		;
0792 5805      SACH  $05,0		;
0793 425D      IN    $5D,2		;
0794 6226      SUBH  $26		;
0795 FB00 0799 BLEZ  $799		;
0797 6031      ADDH  $31		;
0798 5805      SACH  $05,0		;
0799 493D      OUT   $3D,1		;
079A 6506      ZALH  $06		;
079B 4806      OUT   $06,0		;
079C 6111      ADDS  $11		;
079D 051C      ADD   $1C,5		;
079E 5011      SACL  $11,0		;
079F 5806      SACH  $06,0		;
07A0 425E      IN    $5E,2		;
07A1 6227      SUBH  $27		;
07A2 FB00 07A6 BLEZ  $7A6		;
07A4 6032      ADDH  $32		;
07A5 5806      SACH  $06,0		;
07A6 493E      OUT   $3E,1		;
07A7 6507      ZALH  $07		;
07A8 4807      OUT   $07,0		;
07A9 6112      ADDS  $12		;
07AA 051D      ADD   $1D,5		;
07AB 5012      SACL  $12,0		;
07AC 5807      SACH  $07,0		;
07AD 425F      IN    $5F,2		;
07AE 6228      SUBH  $28		;
07AF FB00 07B3 BLEZ  $7B3		;
07B1 6033      ADDH  $33		;
07B2 5807      SACH  $07,0		;
07B3 493F      OUT   $3F,1		;
07B4 6508      ZALH  $08		;
07B5 4808      OUT   $08,0		;
07B6 6113      ADDS  $13		;
07B7 051E      ADD   $1E,5		;
07B8 5013      SACL  $13,0		;
07B9 5808      SACH  $08,0		;
07BA 4260      IN    $60,2		;
07BB 6229      SUBH  $29		;
07BC FB00 07C0 BLEZ  $7C0		;
07BE 6034      ADDH  $34		;
07BF 5808      SACH  $08,0		;
07C0 4940      OUT   $40,1		;
07C1 6509      ZALH  $09		;
07C2 4809      OUT   $09,0		;
07C3 6114      ADDS  $14		;
07C4 051F      ADD   $1F,5		;
07C5 5014      SACL  $14,0		;
07C6 5809      SACH  $09,0		;
07C7 4261      IN    $61,2		;
07C8 622A      SUBH  $2A		;
07C9 FB00 07CD BLEZ  $7CD		;
07CB 6035      ADDH  $35		;
07CC 5809      SACH  $09,0		;
07CD 4941      OUT   $41,1		;
07CE 650A      ZALH  $0A		;
07CF 480A      OUT   $0A,0		;
07D0 6115      ADDS  $15		;
07D1 0520      ADD   $20,5		;
07D2 5015      SACL  $15,0		;
07D3 580A      SACH  $0A,0		;
07D4 4262      IN    $62,2		;
07D5 622B      SUBH  $2B		;
07D6 FB00 07DA BLEZ  $7DA		;
07D8 6036      ADDH  $36		;
07D9 580A      SACH  $0A,0		;
07DA 666C      ZALS  $6C		;
07DB FF00 0826 BZ    $826		;
07DD 107A      SUB   $7A		;
07DE FA00 086F BLZ   $86F		;
07E0 7F80      NOP   			;
07E1 7F8B      SOVM  			;
07E2 7F89      ZAC   			;
07E3 6A42      LT    $42		;
07E4 6D58      MPY   $58		;
07E5 6C43      LTA   $43		;
07E6 6D59      MPY   $59		;
07E7 6C44      LTA   $44		;
07E8 6D5A      MPY   $5A		;
07E9 6C45      LTA   $45		;
07EA 6D5B      MPY   $5B		;
07EB 6C46      LTA   $46		;
07EC 6D5C      MPY   $5C		;
07ED 6C47      LTA   $47		;
07EE 6D5D      MPY   $5D		;
07EF 6C48      LTA   $48		;
07F0 6D5E      MPY   $5E		;
07F1 6C49      LTA   $49		;
07F2 6D5F      MPY   $5F		;
07F3 6C4A      LTA   $4A		;
07F4 6D60      MPY   $60		;
07F5 6C4B      LTA   $4B		;
07F6 6D61      MPY   $61		;
07F7 6C4C      LTA   $4C		;
07F8 6D62      MPY   $62		;
07F9 6C6E      LTA   $6E		;
07FA 6D71      MPY   $71		;
07FB 7F8F      APAC  			;
07FC 7F8F      APAC  			;
07FD 5864      SACH  $64,0		;
07FE 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
07FF 7F89      ZAC   			;
0800 6A4D      LT    $4D		;
0801 6D58      MPY   $58		;
0802 6C4E      LTA   $4E		;
0803 6D59      MPY   $59		;
0804 6C4F      LTA   $4F		;
0805 6D5A      MPY   $5A		;
0806 6C50      LTA   $50		;
0807 6D5B      MPY   $5B		;
0808 6C51      LTA   $51		;
0809 6D5C      MPY   $5C		;
080A 6C52      LTA   $52		;
080B 6D5D      MPY   $5D		;
080C 6C53      LTA   $53		;
080D 6D5E      MPY   $5E		;
080E 6C54      LTA   $54		;
080F 6D5F      MPY   $5F		;
0810 6C55      LTA   $55		;
0811 6D60      MPY   $60		;
0812 6C56      LTA   $56		;
0813 6D61      MPY   $61		;
0814 6C57      LTA   $57		;
0815 6D62      MPY   $62		;
0816 6C70      LTA   $70		;
0817 6D71      MPY   $71		;
0818 7F8F      APAC  			;
0819 7F8F      APAC  			;
081A 5864      SACH  $64,0		;
081B 4B64      OUT   $64,3		;
081C 7F80      NOP   			;
081D 667A      ZALS  $7A		;
081E 506C      SACL  $6C,0		;
081F F600 08B5 BIOZ  $8B5		;
0821 7F80      NOP   			;
0822 7F80      NOP   			;
0823 7F80      NOP   			;
0824 F900 08B8 B     $8B8		;
0826 7F80      NOP   			;
0827 7F80      NOP   			;
0828 6666      ZALS  $66		;
0829 506C      SACL  $6C,0		;
082A 7F8B      SOVM  			;
082B 7F89      ZAC   			;
082C 6A42      LT    $42		;
082D 6D58      MPY   $58		;
082E 6C43      LTA   $43		;
082F 6D59      MPY   $59		;
0830 6C44      LTA   $44		;
0831 6D5A      MPY   $5A		;
0832 6C45      LTA   $45		;
0833 6D5B      MPY   $5B		;
0834 6C46      LTA   $46		;
0835 6D5C      MPY   $5C		;
0836 6C47      LTA   $47		;
0837 6D5D      MPY   $5D		;
0838 6C48      LTA   $48		;
0839 6D5E      MPY   $5E		;
083A 6C49      LTA   $49		;
083B 6D5F      MPY   $5F		;
083C 6C4A      LTA   $4A		;
083D 6D60      MPY   $60		;
083E 6C4B      LTA   $4B		;
083F 6D61      MPY   $61		;
0840 6C4C      LTA   $4C		;
0841 6D62      MPY   $62		;
0842 6C6E      LTA   $6E		;
0843 6D71      MPY   $71		;
0844 7F8F      APAC  			;
0845 7F8F      APAC  			;
0846 5864      SACH  $64,0		;
0847 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
0848 7F89      ZAC   			;
0849 6A4D      LT    $4D		;
084A 6D58      MPY   $58		;
084B 6C4E      LTA   $4E		;
084C 6D59      MPY   $59		;
084D 6C4F      LTA   $4F		;
084E 6D5A      MPY   $5A		;
084F 6C50      LTA   $50		;
0850 6D5B      MPY   $5B		;
0851 6C51      LTA   $51		;
0852 6D5C      MPY   $5C		;
0853 6C52      LTA   $52		;
0854 6D5D      MPY   $5D		;
0855 6C53      LTA   $53		;
0856 6D5E      MPY   $5E		;
0857 6C54      LTA   $54		;
0858 6D5F      MPY   $5F		;
0859 6C55      LTA   $55		;
085A 6D60      MPY   $60		;
085B 6C56      LTA   $56		;
085C 6D61      MPY   $61		;
085D 6C57      LTA   $57		;
085E 6D62      MPY   $62		;
085F 6C70      LTA   $70		;
0860 6D71      MPY   $71		;
0861 7F8F      APAC  			;
0862 7F8F      APAC  			;
0863 5864      SACH  $64,0		;
0864 4B64      OUT   $64,3		;
0865 7F80      NOP   			;
0866 7F80      NOP   			;
0867 7F80      NOP   			;
0868 F600 08B5 BIOZ  $8B5		;
086A 7F80      NOP   			;
086B 7F80      NOP   			;
086C 7F80      NOP   			;
086D F900 08B8 B     $8B8		;
086F 7F80      NOP   			;
0870 7F8B      SOVM  			;
0871 7F89      ZAC   			;
0872 6A42      LT    $42		;
0873 6D58      MPY   $58		;
0874 6C43      LTA   $43		;
0875 6D59      MPY   $59		;
0876 6C44      LTA   $44		;
0877 6D5A      MPY   $5A		;
0878 6C45      LTA   $45		;
0879 6D5B      MPY   $5B		;
087A 6C46      LTA   $46		;
087B 6D5C      MPY   $5C		;
087C 6C47      LTA   $47		;
087D 6D5D      MPY   $5D		;
087E 6C48      LTA   $48		;
087F 6D5E      MPY   $5E		;
0880 6C49      LTA   $49		;
0881 6D5F      MPY   $5F		;
0882 6C4A      LTA   $4A		;
0883 6D60      MPY   $60		;
0884 6C4B      LTA   $4B		;
0885 6D61      MPY   $61		;
0886 6C4C      LTA   $4C		;
0887 6D62      MPY   $62		;
0888 6C6E      LTA   $6E		;
0889 6D71      MPY   $71		;
088A 7F8F      APAC  			;
088B 7F8F      APAC  			;
088C 5864      SACH  $64,0		;
088D 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
088E 7F89      ZAC   			;
088F 6A4D      LT    $4D		;
0890 6D58      MPY   $58		;
0891 6C4E      LTA   $4E		;
0892 6D59      MPY   $59		;
0893 6C4F      LTA   $4F		;
0894 6D5A      MPY   $5A		;
0895 6C50      LTA   $50		;
0896 6D5B      MPY   $5B		;
0897 6C51      LTA   $51		;
0898 6D5C      MPY   $5C		;
0899 6C52      LTA   $52		;
089A 6D5D      MPY   $5D		;
089B 6C53      LTA   $53		;
089C 6D5E      MPY   $5E		;
089D 6C54      LTA   $54		;
089E 6D5F      MPY   $5F		;
089F 6C55      LTA   $55		;
08A0 6D60      MPY   $60		;
08A1 6C56      LTA   $56		;
08A2 6D61      MPY   $61		;
08A3 6C57      LTA   $57		;
08A4 6D62      MPY   $62		;
08A5 6C70      LTA   $70		;
08A6 6D71      MPY   $71		;
08A7 7F8F      APAC  			;
08A8 7F8F      APAC  			;
08A9 5864      SACH  $64,0		;
08AA 4B64      OUT   $64,3		;
08AB 7F80      NOP   			;
08AC 7F80      NOP   			;
08AD 7F80      NOP   			;
08AE F600 08B5 BIOZ  $8B5		;
08B0 7F80      NOP   			;
08B1 7F80      NOP   			;
08B2 7F80      NOP   			;
08B3 F900 08B8 B     $8B8		;
08B5 4060      IN    $60,0		;
08B6 3860      LAR   AR0,$60		;
08B7 4188      IN    *,1		;
08B8 246B      LAC   $6B,4		;
08B9 7968      AND   $68		;
08BA 506A      SACL  $6A,0		;
08BB 246A      LAC   $6A,4		;
08BC FC00 08C9 BGZ   $8C9		;
08BE 5864      SACH  $64,0		;
08BF 6671      ZALS  $71		;
08C0 6A64      LT    $64		;
08C1 6D6C      MPY   $6C		;
08C2 7F8F      APAC  			;
08C3 5071      SACL  $71,0		;
08C4 6571      ZALH  $71		;
08C5 1F6C      SUB   $6C		;
08C6 5871      SACH  $71,0		;
08C7 F900 08D4 B     $8D4		;
08C9 5864      SACH  $64,0		;
08CA 6671      ZALS  $71		;
08CB 6A64      LT    $64		;
08CC 6D6C      MPY   $6C		;
08CD 7F8F      APAC  			;
08CE 5071      SACL  $71,0		;
08CF 6571      ZALH  $71		;
08D0 0F6C      ADD   $6C,15		;
08D1 5871      SACH  $71,0		;
08D2 7F80      NOP   			;
08D3 7F80      NOP   			;
08D4 7F8A      ROVM  			;
08D5 4937      OUT   $37,1		;
08D6 4800      OUT   $00,0		;
08D7 6A59      LT    $59		;
08D8 6D77      MPY   $77		;
08D9 7F8E      PAC   			;
08DA 5864      SACH  $64,0		;
08DB 6A64      LT    $64		;
08DC 6D16      MPY   $16		;
08DD 7F8E      PAC   			;
08DE 5864      SACH  $64,0		;
08DF 6500      ZALH  $00		;
08E0 0A64      ADD   $64,10		;
08E1 610B      ADDS  $0B		;
08E2 0516      ADD   $16,5		;
08E3 500B      SACL  $0B,0		;
08E4 5800      SACH  $00,0		;
08E5 4258      IN    $58,2		;
08E6 6221      SUBH  $21		;
08E7 FB00 08EB BLEZ  $8EB		;
08E9 602C      ADDH  $2C		;
08EA 5800      SACH  $00,0		;
08EB 4938      OUT   $38,1		;
08EC 6501      ZALH  $01		;
08ED 4801      OUT   $01,0		;
08EE 610C      ADDS  $0C		;
08EF 0517      ADD   $17,5		;
08F0 500C      SACL  $0C,0		;
08F1 5801      SACH  $01,0		;
08F2 4259      IN    $59,2		;
08F3 6222      SUBH  $22		;
08F4 FB00 08F8 BLEZ  $8F8		;
08F6 602D      ADDH  $2D		;
08F7 5801      SACH  $01,0		;
08F8 4939      OUT   $39,1		;
08F9 6502      ZALH  $02		;
08FA 4802      OUT   $02,0		;
08FB 610D      ADDS  $0D		;
08FC 0518      ADD   $18,5		;
08FD 500D      SACL  $0D,0		;
08FE 5802      SACH  $02,0		;
08FF 425A      IN    $5A,2		;
0900 6223      SUBH  $23		;
0901 FB00 0905 BLEZ  $905		;
0903 602E      ADDH  $2E		;
0904 5802      SACH  $02,0		;
0905 493A      OUT   $3A,1		;
0906 6503      ZALH  $03		;
0907 4803      OUT   $03,0		;
0908 610E      ADDS  $0E		;
0909 0519      ADD   $19,5		;
090A 500E      SACL  $0E,0		;
090B 5803      SACH  $03,0		;
090C 425B      IN    $5B,2		;
090D 6224      SUBH  $24		;
090E FB00 0912 BLEZ  $912		;
0910 602F      ADDH  $2F		;
0911 5803      SACH  $03,0		;
0912 493B      OUT   $3B,1		;
0913 6504      ZALH  $04		;
0914 4804      OUT   $04,0		;
0915 610F      ADDS  $0F		;
0916 051A      ADD   $1A,5		;
0917 500F      SACL  $0F,0		;
0918 5804      SACH  $04,0		;
0919 425C      IN    $5C,2		;
091A 6225      SUBH  $25		;
091B FB00 091F BLEZ  $91F		;
091D 6030      ADDH  $30		;
091E 5804      SACH  $04,0		;
091F 493C      OUT   $3C,1		;
0920 6505      ZALH  $05		;
0921 4805      OUT   $05,0		;
0922 6110      ADDS  $10		;
0923 051B      ADD   $1B,5		;
0924 5010      SACL  $10,0		;
0925 5805      SACH  $05,0		;
0926 425D      IN    $5D,2		;
0927 6226      SUBH  $26		;
0928 FB00 092C BLEZ  $92C		;
092A 6031      ADDH  $31		;
092B 5805      SACH  $05,0		;
092C 493D      OUT   $3D,1		;
092D 6506      ZALH  $06		;
092E 4806      OUT   $06,0		;
092F 6111      ADDS  $11		;
0930 051C      ADD   $1C,5		;
0931 5011      SACL  $11,0		;
0932 5806      SACH  $06,0		;
0933 425E      IN    $5E,2		;
0934 6227      SUBH  $27		;
0935 FB00 0939 BLEZ  $939		;
0937 6032      ADDH  $32		;
0938 5806      SACH  $06,0		;
0939 493E      OUT   $3E,1		;
093A 6507      ZALH  $07		;
093B 4807      OUT   $07,0		;
093C 6112      ADDS  $12		;
093D 051D      ADD   $1D,5		;
093E 5012      SACL  $12,0		;
093F 5807      SACH  $07,0		;
0940 425F      IN    $5F,2		;
0941 6228      SUBH  $28		;
0942 FB00 0946 BLEZ  $946		;
0944 6033      ADDH  $33		;
0945 5807      SACH  $07,0		;
0946 493F      OUT   $3F,1		;
0947 6508      ZALH  $08		;
0948 4808      OUT   $08,0		;
0949 6113      ADDS  $13		;
094A 051E      ADD   $1E,5		;
094B 5013      SACL  $13,0		;
094C 5808      SACH  $08,0		;
094D 4260      IN    $60,2		;
094E 6229      SUBH  $29		;
094F FB00 0953 BLEZ  $953		;
0951 6034      ADDH  $34		;
0952 5808      SACH  $08,0		;
0953 4940      OUT   $40,1		;
0954 6509      ZALH  $09		;
0955 4809      OUT   $09,0		;
0956 6114      ADDS  $14		;
0957 051F      ADD   $1F,5		;
0958 5014      SACL  $14,0		;
0959 5809      SACH  $09,0		;
095A 4261      IN    $61,2		;
095B 622A      SUBH  $2A		;
095C FB00 0960 BLEZ  $960		;
095E 6035      ADDH  $35		;
095F 5809      SACH  $09,0		;
0960 4941      OUT   $41,1		;
0961 650A      ZALH  $0A		;
0962 480A      OUT   $0A,0		;
0963 6115      ADDS  $15		;
0964 0520      ADD   $20,5		;
0965 5015      SACL  $15,0		;
0966 580A      SACH  $0A,0		;
0967 4262      IN    $62,2		;
0968 622B      SUBH  $2B		;
0969 FB00 096D BLEZ  $96D		;
096B 6036      ADDH  $36		;
096C 580A      SACH  $0A,0		;
096D 7F8B      SOVM  			;
096E 7F89      ZAC   			;
096F 6A42      LT    $42		;
0970 6D58      MPY   $58		;
0971 6C43      LTA   $43		;
0972 6D59      MPY   $59		;
0973 6C44      LTA   $44		;
0974 6D5A      MPY   $5A		;
0975 6C45      LTA   $45		;
0976 6D5B      MPY   $5B		;
0977 6C46      LTA   $46		;
0978 6D5C      MPY   $5C		;
0979 6C47      LTA   $47		;
097A 6D5D      MPY   $5D		;
097B 6C48      LTA   $48		;
097C 6D5E      MPY   $5E		;
097D 6C49      LTA   $49		;
097E 6D5F      MPY   $5F		;
097F 6C4A      LTA   $4A		;
0980 6D60      MPY   $60		;
0981 6C4B      LTA   $4B		;
0982 6D61      MPY   $61		;
0983 6C4C      LTA   $4C		;
0984 6D62      MPY   $62		;
0985 6C6E      LTA   $6E		;
0986 6D71      MPY   $71		;
0987 7F8F      APAC  			;
0988 7F8F      APAC  			;
0989 5864      SACH  $64,0		;
098A 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
098B 7F89      ZAC   			;
098C 6A4D      LT    $4D		;
098D 6D58      MPY   $58		;
098E 6C4E      LTA   $4E		;
098F 6D59      MPY   $59		;
0990 6C4F      LTA   $4F		;
0991 6D5A      MPY   $5A		;
0992 6C50      LTA   $50		;
0993 6D5B      MPY   $5B		;
0994 6C51      LTA   $51		;
0995 6D5C      MPY   $5C		;
0996 6C52      LTA   $52		;
0997 6D5D      MPY   $5D		;
0998 6C53      LTA   $53		;
0999 6D5E      MPY   $5E		;
099A 6C54      LTA   $54		;
099B 6D5F      MPY   $5F		;
099C 6C55      LTA   $55		;
099D 6D60      MPY   $60		;
099E 6C56      LTA   $56		;
099F 6D61      MPY   $61		;
09A0 6C57      LTA   $57		;
09A1 6D62      MPY   $62		;
09A2 6C70      LTA   $70		;
09A3 6D71      MPY   $71		;
09A4 7F8F      APAC  			;
09A5 7F8F      APAC  			;
09A6 5864      SACH  $64,0		;
09A7 4B64      OUT   $64,3		;
09A8 7F8A      ROVM  			;
09A9 7F80      NOP   			;
09AA 7F80      NOP   			;
09AB F600 09B2 BIOZ  $9B2		;
09AD 7F80      NOP   			;
09AE 7F80      NOP   			;
09AF 7F80      NOP   			;
09B0 F900 09B5 B     $9B5		;
09B2 4060      IN    $60,0		;
09B3 3860      LAR   AR0,$60		;
09B4 4188      IN    *,1		;
09B5 246A      LAC   $6A,4		;
09B6 6072      ADDH  $72		;
09B7 5864      SACH  $64,0		;
09B8 3864      LAR   AR0,$64		;
09B9 6A88      LT    *			;
09BA 6D6C      MPY   $6C		;
09BB 7F8E      PAC   			;
09BC 5864      SACH  $64,0		;
09BD 506C      SACL  $6C,0		;
09BE 2A6C      LAC   $6C,10		;
09BF 586C      SACH  $6C,0		;
09C0 2A67      LAC   $67,10		;
09C1 7867      XOR   $67		;
09C2 796C      AND   $6C		;
09C3 0A64      ADD   $64,10		;
09C4 506C      SACL  $6C,0		;
09C5 4937      OUT   $37,1		;
09C6 4800      OUT   $00,0		;
09C7 6A59      LT    $59		;
09C8 6D77      MPY   $77		;
09C9 7F8E      PAC   			;
09CA 5864      SACH  $64,0		;
09CB 6A64      LT    $64		;
09CC 6D16      MPY   $16		;
09CD 7F8E      PAC   			;
09CE 5864      SACH  $64,0		;
09CF 6500      ZALH  $00		;
09D0 0A64      ADD   $64,10		;
09D1 610B      ADDS  $0B		;
09D2 0516      ADD   $16,5		;
09D3 500B      SACL  $0B,0		;
09D4 5800      SACH  $00,0		;
09D5 4258      IN    $58,2		;
09D6 6221      SUBH  $21		;
09D7 FB00 09DB BLEZ  $9DB		;
09D9 602C      ADDH  $2C		;
09DA 5800      SACH  $00,0		;
09DB 4938      OUT   $38,1		;
09DC 6501      ZALH  $01		;
09DD 4801      OUT   $01,0		;
09DE 610C      ADDS  $0C		;
09DF 0517      ADD   $17,5		;
09E0 500C      SACL  $0C,0		;
09E1 5801      SACH  $01,0		;
09E2 4259      IN    $59,2		;
09E3 6222      SUBH  $22		;
09E4 FB00 09E8 BLEZ  $9E8		;
09E6 602D      ADDH  $2D		;
09E7 5801      SACH  $01,0		;
09E8 4939      OUT   $39,1		;
09E9 6502      ZALH  $02		;
09EA 4802      OUT   $02,0		;
09EB 610D      ADDS  $0D		;
09EC 0518      ADD   $18,5		;
09ED 500D      SACL  $0D,0		;
09EE 5802      SACH  $02,0		;
09EF 425A      IN    $5A,2		;
09F0 6223      SUBH  $23		;
09F1 FB00 09F5 BLEZ  $9F5		;
09F3 602E      ADDH  $2E		;
09F4 5802      SACH  $02,0		;
09F5 493A      OUT   $3A,1		;
09F6 6503      ZALH  $03		;
09F7 4803      OUT   $03,0		;
09F8 610E      ADDS  $0E		;
09F9 0519      ADD   $19,5		;
09FA 500E      SACL  $0E,0		;
09FB 5803      SACH  $03,0		;
09FC 425B      IN    $5B,2		;
09FD 6224      SUBH  $24		;
09FE FB00 0A02 BLEZ  $A02		;
0A00 602F      ADDH  $2F		;
0A01 5803      SACH  $03,0		;
0A02 493B      OUT   $3B,1		;
0A03 6504      ZALH  $04		;
0A04 4804      OUT   $04,0		;
0A05 610F      ADDS  $0F		;
0A06 051A      ADD   $1A,5		;
0A07 500F      SACL  $0F,0		;
0A08 5804      SACH  $04,0		;
0A09 425C      IN    $5C,2		;
0A0A 6225      SUBH  $25		;
0A0B FB00 0A0F BLEZ  $A0F		;
0A0D 6030      ADDH  $30		;
0A0E 5804      SACH  $04,0		;
0A0F 493C      OUT   $3C,1		;
0A10 6505      ZALH  $05		;
0A11 4805      OUT   $05,0		;
0A12 6110      ADDS  $10		;
0A13 051B      ADD   $1B,5		;
0A14 5010      SACL  $10,0		;
0A15 5805      SACH  $05,0		;
0A16 425D      IN    $5D,2		;
0A17 6226      SUBH  $26		;
0A18 FB00 0A1C BLEZ  $A1C		;
0A1A 6031      ADDH  $31		;
0A1B 5805      SACH  $05,0		;
0A1C 493D      OUT   $3D,1		;
0A1D 6506      ZALH  $06		;
0A1E 4806      OUT   $06,0		;
0A1F 6111      ADDS  $11		;
0A20 051C      ADD   $1C,5		;
0A21 5011      SACL  $11,0		;
0A22 5806      SACH  $06,0		;
0A23 425E      IN    $5E,2		;
0A24 6227      SUBH  $27		;
0A25 FB00 0A29 BLEZ  $A29		;
0A27 6032      ADDH  $32		;
0A28 5806      SACH  $06,0		;
0A29 493E      OUT   $3E,1		;
0A2A 6507      ZALH  $07		;
0A2B 4807      OUT   $07,0		;
0A2C 6112      ADDS  $12		;
0A2D 051D      ADD   $1D,5		;
0A2E 5012      SACL  $12,0		;
0A2F 5807      SACH  $07,0		;
0A30 425F      IN    $5F,2		;
0A31 6228      SUBH  $28		;
0A32 FB00 0A36 BLEZ  $A36		;
0A34 6033      ADDH  $33		;
0A35 5807      SACH  $07,0		;
0A36 493F      OUT   $3F,1		;
0A37 6508      ZALH  $08		;
0A38 4808      OUT   $08,0		;
0A39 6113      ADDS  $13		;
0A3A 051E      ADD   $1E,5		;
0A3B 5013      SACL  $13,0		;
0A3C 5808      SACH  $08,0		;
0A3D 4260      IN    $60,2		;
0A3E 6229      SUBH  $29		;
0A3F FB00 0A43 BLEZ  $A43		;
0A41 6034      ADDH  $34		;
0A42 5808      SACH  $08,0		;
0A43 4940      OUT   $40,1		;
0A44 6509      ZALH  $09		;
0A45 4809      OUT   $09,0		;
0A46 6114      ADDS  $14		;
0A47 051F      ADD   $1F,5		;
0A48 5014      SACL  $14,0		;
0A49 5809      SACH  $09,0		;
0A4A 4261      IN    $61,2		;
0A4B 622A      SUBH  $2A		;
0A4C FB00 0A50 BLEZ  $A50		;
0A4E 6035      ADDH  $35		;
0A4F 5809      SACH  $09,0		;
0A50 4941      OUT   $41,1		;
0A51 650A      ZALH  $0A		;
0A52 480A      OUT   $0A,0		;
0A53 6115      ADDS  $15		;
0A54 0520      ADD   $20,5		;
0A55 5015      SACL  $15,0		;
0A56 580A      SACH  $0A,0		;
0A57 4262      IN    $62,2		;
0A58 622B      SUBH  $2B		;
0A59 FB00 0A5D BLEZ  $A5D		;
0A5B 6036      ADDH  $36		;
0A5C 580A      SACH  $0A,0		;
0A5D 7F80      NOP   			;
0A5E 7F80      NOP   			;
0A5F 7F8B      SOVM  			;
0A60 7F89      ZAC   			;
0A61 6A42      LT    $42		;
0A62 6D58      MPY   $58		;
0A63 6C43      LTA   $43		;
0A64 6D59      MPY   $59		;
0A65 6C44      LTA   $44		;
0A66 6D5A      MPY   $5A		;
0A67 6C45      LTA   $45		;
0A68 6D5B      MPY   $5B		;
0A69 6C46      LTA   $46		;
0A6A 6D5C      MPY   $5C		;
0A6B 6C47      LTA   $47		;
0A6C 6D5D      MPY   $5D		;
0A6D 6C48      LTA   $48		;
0A6E 6D5E      MPY   $5E		;
0A6F 6C49      LTA   $49		;
0A70 6D5F      MPY   $5F		;
0A71 6C4A      LTA   $4A		;
0A72 6D60      MPY   $60		;
0A73 6C4B      LTA   $4B		;
0A74 6D61      MPY   $61		;
0A75 6C4C      LTA   $4C		;
0A76 6D62      MPY   $62		;
0A77 6C6E      LTA   $6E		;
0A78 6D71      MPY   $71		;
0A79 7F8F      APAC  			;
0A7A 7F8F      APAC  			;
0A7B 5864      SACH  $64,0		;
0A7C 4F64      OUT   $64,7		;PORT_OUT_RIGTH = *0x64;
0A7D 7F89      ZAC   			;
0A7E 6A4D      LT    $4D		;
0A7F 6D58      MPY   $58		;
0A80 6C4E      LTA   $4E		;
0A81 6D59      MPY   $59		;
0A82 6C4F      LTA   $4F		;
0A83 6D5A      MPY   $5A		;
0A84 6C50      LTA   $50		;
0A85 6D5B      MPY   $5B		;
0A86 6C51      LTA   $51		;
0A87 6D5C      MPY   $5C		;
0A88 6C52      LTA   $52		;
0A89 6D5D      MPY   $5D		;
0A8A 6C53      LTA   $53		;
0A8B 6D5E      MPY   $5E		;
0A8C 6C54      LTA   $54		;
0A8D 6D5F      MPY   $5F		;
0A8E 6C55      LTA   $55		;
0A8F 6D60      MPY   $60		;
0A90 6C56      LTA   $56		;
0A91 6D61      MPY   $61		;
0A92 6C57      LTA   $57		;
0A93 6D62      MPY   $62		;
0A94 6C70      LTA   $70		;
0A95 6D71      MPY   $71		;
0A96 7F8F      APAC  			;
0A97 7F8F      APAC  			;
0A98 5864      SACH  $64,0		;
0A99 4B64      OUT   $64,3		;
0A9A 7F8A      ROVM  			;
0A9B F600 0AA4 BIOZ  $AA4		;
0A9D 7F80      NOP   			;
0A9E 7F80      NOP   			;
0A9F 7F80      NOP   			;
0AA0 7F80      NOP   			;
0AA1 7F80      NOP   			;
0AA2 F900 03B9 B     $3B9		;
0AA4 4060      IN    $60,0		;
0AA5 3860      LAR   AR0,$60		;
0AA6 4188      IN    *,1		;
0AA7 F900 03B9 B     $3B9		;
0AA9 7F81      DINT  			;
0AAA 6E00      LDPK  $00		;
0AAB 7F8A      ROVM  			;
0AAC 6880      MAR   *,0		;
0AAD 7000      LARK  AR0,#$00		;
0AAE 7E80      LACK  #$80		;
0AAF 5000      SACL  $00,0		;
0AB0 2700      LAC   $00,7		;
0AB1 5000      SACL  $00,0		;
0AB2 7F89      ZAC   			;
0AB3 5802      SACH  $02,0		;
0AB4 4B00      OUT   $00,3		;
0AB5 703C      LARK  AR0,#$3C		;
0AB6 F400 0AB6 BANZ  $AB6		;
0AB8 4B00      OUT   $00,3		;
0AB9 703C      LARK  AR0,#$3C		;
0ABA F400 0ABA BANZ  $ABA		;
0ABC 7F80      NOP   			;
0ABD 7F80      NOP   			;
0ABE 7F80      NOP   			;
0ABF 7F80      NOP   			;
0AC0 4B02      OUT   $02,3		;
0AC1 703C      LARK  AR0,#$3C		;
0AC2 F400 0AC2 BANZ  $AC2		;
0AC4 4B02      OUT   $02,3		;
0AC5 703C      LARK  AR0,#$3C		;
0AC6 F400 0AC6 BANZ  $AC6		;
0AC8 F900 0AB4 B     $AB4		;

L0ACA:					;test_left:
0ACA 7F81      DINT  			;
0ACB 6E00      LDPK  $00		;
0ACC 7F8A      ROVM  			;
0ACD 6880      MAR   *,0		;
0ACE 7000      LARK  AR0,#$00		;
0ACF 7E80      LACK  #$80		;
0AD0 5000      SACL  $00,0		;
0AD1 2400      LAC   $00,4		;
0AD2 5000      SACL  $00,0		;
0AD3 7F89      ZAC   			;
0AD4 5001      SACL  $01,0		;u32 wave = 0;
L0AD5:
0AD5 6501      ZALH  $01		;while (1) {
0AD6 6000      ADDH  $00		;
0AD7 5801      SACH  $01,0		;  wave += 0x08000000;
0AD8 4B01      OUT   $01,3		;  PORT_OUT_LEFT = wave >> 16;
0AD9 7078      LARK  AR0,#$78		;
0ADA F400 0ADA BANZ  $ADA		;  for (int i=0;i<0x78;i++);
0ADC F900 0AD5 B     L0AD5		;}

L0ADE:					;test_rigth:
0ADE 7F81      DINT  			;
0ADF 6E00      LDPK  $00		;
0AE0 7F8A      ROVM  			;
0AE1 6880      MAR   *,0		;
0AE2 7000      LARK  AR0,#$00		;
0AE3 7E80      LACK  #$80		;
0AE4 5000      SACL  $00,0		;
0AE5 2400      LAC   $00,4		;
0AE6 5000      SACL  $00,0		;
0AE7 7F89      ZAC   			;
0AE8 5001      SACL  $01,0		;u32 wave = 0;
L0AE9:
0AE9 6501      ZALH  $01		;while (1) {
0AEA 6000      ADDH  $00		;
0AEB 5801      SACH  $01,0		;  wave += 0x800000;
0AEC 4F01      OUT   $01,7		;  PORT_OUT_RIGTH = (wave << 3) >> 16;
0AED 7078      LARK  AR0,#$78		;
0AEE F400 0AEE BANZ  $AEE		;  for (int i=0;i<0x78;i++);
0AF0 F900 0AE9 B     L0AE9		;}

L0AF2:					;mode_4:
0AF2 7F80      NOP   			;while (1) {
0AF3 7E7F      LACK  #$7F		;
0AF4 5002      SACL  $02,0		;
0AF5 2802      LAC   $02,8		;
0AF6 5002      SACL  $02,0		;
0AF7 4B02      OUT   $02,3		;  PORT_OUT_LEFT = (0x7F << 3);
0AF8 7078      LARK  AR0,#$78		;
0AF9 F400 0AF9 BANZ  $AF9		;  for (int i=0;i<0x78;i++);
0AFB F900 0AF2 B     L0AF2		;}

L0AFD:					;play_pcm_mono_with_pan:
0AFD 7F81      DINT  			;
0AFE 7F8A      ROVM  			;
0AFF 6E00      LDPK  $00		;
0B00 6880      MAR   *,0		;
0B01 70FF      LARK  AR0,#$FF		;u16* ptr = 0xFF;
0B02 7F89      ZAC   			;
L0B03:					;for (int i=0;i<256;i++)
0B03 5088      SACL  *,0		;  *ptr-- = 0;
0B04 F400 0B03 BANZ  L0B03		;
0B06 F900 0B0B B     L0B0B		;while (1) {
L0B08:					;  if (!BIO) {
0B08 406D      IN    $6D,0		;    u16* ptr = PORT_CMD_ADDR;
0B09 386D      LAR   AR0,$6D		;    *ptr = PORT_CMD_DATA;
0B0A 4188      IN    *,1		;  }
L0B0B:
0B0B 493C      OUT   $3C,1		;  PORT_ROM_BANK = sample_bank[0];
0B0C 4800      OUT   $00,0		;  PORT_ROM_ADDR = sample_addr[0];
0B0D 6A49      LT    $49		;
0B0E 6D6E      MPY   $6E		;
0B0F 7F8E      PAC   			;
0B10 586C      SACH  $6C,0		;  temp = (*0x49 * *0x6E) >> 16;
0B11 6A6C      LT    $6C		;
0B12 6D18      MPY   $18		;
0B13 7F8E      PAC   			;
0B14 586C      SACH  $6C,0		;  temp = (temp * *0x18) >> 16;
0B15 6500      ZALH  $00		;
0B16 0A6C      ADD   $6C,10		;
0B17 610C      ADDS  $0C		;
0B18 0518      ADD   $18,5		;  acc = (sample_addr[0] << 16) + (temp << 10) + sample_frac[0] + (sample_rate[0] << 5);
0B19 500C      SACL  $0C,0		;  sample_frac[0] = (u16)acc;
0B1A 5800      SACH  $00,0		;  sample_addr[0] = acc >> 16;
0B1B 4248      IN    $48,2		;  *0x48 = PORT_ROM_DATA;
0B1C 6224      SUBH  $24		;  acc -= (sample_len[0] << 16);
0B1D FB00 0B21 BLEZ  $B21		;  if (acc > 0) {
0B1F 6030      ADDH  $30		;    acc += (sample_loop[0] << 16);
0B20 5800      SACH  $00,0		;    sample_addr[0] = acc >> 16;
L0B21:					;  }
0B21 493D      OUT   $3D,1		;  PORT_ROM_BANK = sample_bank[1];
0B22 6501      ZALH  $01		;
0B23 4801      OUT   $01,0		;  PORT_ROM_ADDR = sample_addr[0];
0B24 610D      ADDS  $0D		;
0B25 0519      ADD   $19,5		;  acc = (sample_addr[1] << 16) + sample_frac[1] + (sample_rate[1] << 5);
0B26 500D      SACL  $0D,0		;  sample_frac[1] = (u16)acc;
0B27 5801      SACH  $01,0		;  sample_addr[1] = acc >> 16;
0B28 4249      IN    $49,2		;  *0x49 = PORT_ROM_DATA;
0B29 6225      SUBH  $25		;  acc -= (sample_len[1] << 16);
0B2A FB00 0B2E BLEZ  L0B2E		;  if (acc > 0) {
0B2C 6031      ADDH  $31		;    acc += (sample_loop[1] << 16);
0B2D 5801      SACH  $01,0		;    sample_addr[1] = acc >> 16;
L0B2E:					;  }
0B2E 493E      OUT   $3E,1		;
0B2F 4802      OUT   $02,0		;
0B30 6A4B      LT    $4B		;
0B31 6D6F      MPY   $6F		;
0B32 7F8E      PAC   			;
0B33 586C      SACH  $6C,0		;  temp = (*0x4B * *0x6F) >> 16;
0B34 6A6C      LT    $6C		;
0B35 6D1A      MPY   $1A		;
0B36 7F8E      PAC   			;
0B37 586C      SACH  $6C,0		;  temp = (temp * *0x1A) >> 16;
0B38 6502      ZALH  $02		;
0B39 0A6C      ADD   $6C,10		;
0B3A 610E      ADDS  $0E		;
0B3B 051A      ADD   $1A,5		;  acc = (sample_addr[2] << 16) + (temp << 10) + sample_frac[2] + (sample_rate[2] << 5);
0B3C 500E      SACL  $0E,0		;  sample_frac[2] = (u16)acc;
0B3D 5802      SACH  $02,0		;  sample_addr[2] = acc >> 16;
0B3E 424A      IN    $4A,2		;  *0x4A = PORT_ROM_DATA;
0B3F 6226      SUBH  $26		;  acc -= (sample_len[2] << 16);
0B40 FB00 0B44 BLEZ  L0B44		;  if (acc > 0) {
0B42 6032      ADDH  $32		;    acc += (sample_loop[2] << 16);
0B43 5802      SACH  $02,0		;    sample_addr[2] = acc >> 16;
L0B44:					;  }
0B44 493F      OUT   $3F,1		;
0B45 6503      ZALH  $03		;
0B46 4803      OUT   $03,0		;
0B47 610F      ADDS  $0F		;
0B48 051B      ADD   $1B,5		;
0B49 500F      SACL  $0F,0		;
0B4A 5803      SACH  $03,0		;
0B4B 424B      IN    $4B,2		;
0B4C 6227      SUBH  $27		;
0B4D FB00 0B51 BLEZ  $B51		;
0B4F 6033      ADDH  $33		;
0B50 5803      SACH  $03,0		;
0B51 4940      OUT   $40,1		;
0B52 6504      ZALH  $04		;
0B53 4804      OUT   $04,0		;
0B54 6110      ADDS  $10		;
0B55 051C      ADD   $1C,5		;
0B56 5010      SACL  $10,0		;
0B57 5804      SACH  $04,0		;
0B58 424C      IN    $4C,2		;
0B59 6228      SUBH  $28		;
0B5A FB00 0B5E BLEZ  $B5E		;
0B5C 6034      ADDH  $34		;
0B5D 5804      SACH  $04,0		;
0B5E 4941      OUT   $41,1		;
0B5F 6505      ZALH  $05		;
0B60 4805      OUT   $05,0		;
0B61 6111      ADDS  $11		;
0B62 051D      ADD   $1D,5		;
0B63 5011      SACL  $11,0		;
0B64 5805      SACH  $05,0		;
0B65 424D      IN    $4D,2		;
0B66 6229      SUBH  $29		;
0B67 FB00 0B6B BLEZ  $B6B		;
0B69 6035      ADDH  $35		;
0B6A 5805      SACH  $05,0		;
0B6B 4942      OUT   $42,1		;
0B6C 6506      ZALH  $06		;
0B6D 4806      OUT   $06,0		;
0B6E 6112      ADDS  $12		;
0B6F 051E      ADD   $1E,5		;
0B70 5012      SACL  $12,0		;
0B71 5806      SACH  $06,0		;
0B72 424E      IN    $4E,2		;
0B73 622A      SUBH  $2A		;
0B74 FB00 0B78 BLEZ  $B78		;
0B76 6036      ADDH  $36		;
0B77 5806      SACH  $06,0		;
0B78 4943      OUT   $43,1		;
0B79 6507      ZALH  $07		;
0B7A 4807      OUT   $07,0		;
0B7B 6113      ADDS  $13		;
0B7C 051F      ADD   $1F,5		;
0B7D 5013      SACL  $13,0		;
0B7E 5807      SACH  $07,0		;
0B7F 424F      IN    $4F,2		;
0B80 622B      SUBH  $2B		;
0B81 FB00 0B85 BLEZ  $B85		;
0B83 6037      ADDH  $37		;
0B84 5807      SACH  $07,0		;
0B85 4944      OUT   $44,1		;
0B86 6508      ZALH  $08		;
0B87 4808      OUT   $08,0		;
0B88 6114      ADDS  $14		;
0B89 0520      ADD   $20,5		;
0B8A 5014      SACL  $14,0		;
0B8B 5808      SACH  $08,0		;
0B8C 4250      IN    $50,2		;
0B8D 622C      SUBH  $2C		;
0B8E FB00 0B92 BLEZ  $B92		;
0B90 6038      ADDH  $38		;
0B91 5808      SACH  $08,0		;
0B92 4945      OUT   $45,1		;
0B93 6509      ZALH  $09		;
0B94 4809      OUT   $09,0		;
0B95 6115      ADDS  $15		;
0B96 0521      ADD   $21,5		;
0B97 5015      SACL  $15,0		;
0B98 5809      SACH  $09,0		;
0B99 4251      IN    $51,2		;
0B9A 622D      SUBH  $2D		;
0B9B FB00 0B9F BLEZ  $B9F		;
0B9D 6039      ADDH  $39		;
0B9E 5809      SACH  $09,0		;
0B9F 4946      OUT   $46,1		;
0BA0 650A      ZALH  $0A		;
0BA1 480A      OUT   $0A,0		;
0BA2 6116      ADDS  $16		;
0BA3 0522      ADD   $22,5		;
0BA4 5016      SACL  $16,0		;
0BA5 580A      SACH  $0A,0		;
0BA6 4252      IN    $52,2		;
0BA7 622E      SUBH  $2E		;
0BA8 FB00 0BAC BLEZ  $BAC		;
0BAA 603A      ADDH  $3A		;
0BAB 580A      SACH  $0A,0		;
0BAC 4947      OUT   $47,1		;
0BAD 650B      ZALH  $0B		;
0BAE 480B      OUT   $0B,0		;
0BAF 6117      ADDS  $17		;
0BB0 0523      ADD   $23,5		;
0BB1 5017      SACL  $17,0		;
0BB2 580B      SACH  $0B,0		;
0BB3 4253      IN    $53,2		;
0BB4 622F      SUBH  $2F		;
0BB5 FB00 0BB9 BLEZ  $BB9		;
0BB7 603B      ADDH  $3B		;
0BB8 580B      SACH  $0B,0		;
0BB9 7F8B      SOVM  			;
0BBA 7F89      ZAC   			;
0BBB 6A54      LT    $54		;
0BBC 6D48      MPY   $48		;
0BBD 6C55      LTA   $55		;
0BBE 6D49      MPY   $49		;
0BBF 6C56      LTA   $56		;
0BC0 6D4A      MPY   $4A		;
0BC1 6C57      LTA   $57		;
0BC2 6D4B      MPY   $4B		;
0BC3 6C58      LTA   $58		;
0BC4 6D4C      MPY   $4C		;
0BC5 6C59      LTA   $59		;
0BC6 6D4D      MPY   $4D		;
0BC7 6C5A      LTA   $5A		;
0BC8 6D4E      MPY   $4E		;
0BC9 6C5B      LTA   $5B		;
0BCA 6D4F      MPY   $4F		;
0BCB 6C5C      LTA   $5C		;
0BCC 6D50      MPY   $50		;
0BCD 6C5D      LTA   $5D		;
0BCE 6D51      MPY   $51		;
0BCF 6C5E      LTA   $5E		;
0BD0 6D52      MPY   $52		;
0BD1 6C5F      LTA   $5F		;
0BD2 6D53      MPY   $53		;
0BD3 7F8F      APAC  			;
0BD4 586C      SACH  $6C,0		;
0BD5 4F6C      OUT   $6C,7		;  PORT_OUT_RIGTH = *0x6C;
0BD6 7F80      NOP   			;
0BD7 7F80      NOP   			;
0BD8 7F89      ZAC   			;
0BD9 6A60      LT    $60		;
0BDA 6D48      MPY   $48		;
0BDB 6C61      LTA   $61		;
0BDC 6D49      MPY   $49		;
0BDD 6C62      LTA   $62		;
0BDE 6D4A      MPY   $4A		;
0BDF 6C63      LTA   $63		;
0BE0 6D4B      MPY   $4B		;
0BE1 6C64      LTA   $64		;
0BE2 6D4C      MPY   $4C		;
0BE3 6C65      LTA   $65		;
0BE4 6D4D      MPY   $4D		;
0BE5 6C66      LTA   $66		;
0BE6 6D4E      MPY   $4E		;
0BE7 6C67      LTA   $67		;
0BE8 6D4F      MPY   $4F		;
0BE9 6C68      LTA   $68		;
0BEA 6D50      MPY   $50		;
0BEB 6C69      LTA   $69		;
0BEC 6D51      MPY   $51		;
0BED 6C6A      LTA   $6A		;
0BEE 6D52      MPY   $52		;
0BEF 6C6B      LTA   $6B		;
0BF0 6D53      MPY   $53		;
0BF1 7F8F      APAC  			;
0BF2 586C      SACH  $6C,0		;
0BF3 4B6C      OUT   $6C,3		;  PORT_OUT_LEFT = *0x6C;
0BF4 7F8A      ROVM  			;
0BF5 F600 0B08 BIOZ  $B08		;
0BF7 7F80      NOP   			;
0BF8 7F80      NOP   			;
0BF9 7F80      NOP   			;
0BFA F900 0B0B B     $B0B		;}

L0BFC:					;mode_6:
0BFC 7F81      DINT  			;
0BFD 7F8A      ROVM  			;
0BFE 6E00      LDPK  $00		;
0BFF 6880      MAR   *,0		;
0C00 70FF      LARK  AR0,#$FF		;
0C01 7F89      ZAC   			;
0C02 5088      SACL  *,0		;
0C03 F400 0C02 BANZ  $C02		;
0C05 F900 0C0A B     $C0A		;
L0C07:					;while (1) {
0C07 4049      IN    $49,0		;
0C08 3849      LAR   AR0,$49		;
0C09 4188      IN    *,1		;
0C0A 4928      OUT   $28,1		;
0C0B 4800      OUT   $00,0		;
0C0C 6A31      LT    $31		;
0C0D 6D4A      MPY   $4A		;
0C0E 7F8E      PAC   			;
0C0F 5848      SACH  $48,0		;
0C10 6A48      LT    $48		;
0C11 6D10      MPY   $10		;
0C12 7F8E      PAC   			;
0C13 5848      SACH  $48,0		;
0C14 6500      ZALH  $00		;
0C15 0A48      ADD   $48,10		;
0C16 6108      ADDS  $08		;
0C17 0510      ADD   $10,5		;
0C18 5008      SACL  $08,0		;
0C19 5800      SACH  $00,0		;
0C1A 4230      IN    $30,2		;
0C1B 6218      SUBH  $18		;
0C1C FB00 0C20 BLEZ  $C20		;
0C1E 6020      ADDH  $20		;
0C1F 5800      SACH  $00,0		;
0C20 4929      OUT   $29,1		;
0C21 6501      ZALH  $01		;
0C22 4801      OUT   $01,0		;
0C23 6109      ADDS  $09		;
0C24 0511      ADD   $11,5		;
0C25 5009      SACL  $09,0		;
0C26 5801      SACH  $01,0		;
0C27 4231      IN    $31,2		;
0C28 6219      SUBH  $19		;
0C29 FB00 0C2D BLEZ  $C2D		;
0C2B 6021      ADDH  $21		;
0C2C 5801      SACH  $01,0		;
0C2D 492A      OUT   $2A,1		;
0C2E 4802      OUT   $02,0		;
0C2F 6A33      LT    $33		;
0C30 6D4B      MPY   $4B		;
0C31 7F8E      PAC   			;
0C32 5848      SACH  $48,0		;
0C33 6A48      LT    $48		;
0C34 6D12      MPY   $12		;
0C35 7F8E      PAC   			;
0C36 5848      SACH  $48,0		;
0C37 6502      ZALH  $02		;
0C38 0A48      ADD   $48,10		;
0C39 610A      ADDS  $0A		;
0C3A 0512      ADD   $12,5		;
0C3B 500A      SACL  $0A,0		;
0C3C 5802      SACH  $02,0		;
0C3D 4232      IN    $32,2		;
0C3E 621A      SUBH  $1A		;
0C3F FB00 0C43 BLEZ  $C43		;
0C41 6022      ADDH  $22		;
0C42 5802      SACH  $02,0		;
0C43 492B      OUT   $2B,1		;
0C44 6503      ZALH  $03		;
0C45 4803      OUT   $03,0		;
0C46 610B      ADDS  $0B		;
0C47 0513      ADD   $13,5		;
0C48 500B      SACL  $0B,0		;
0C49 5803      SACH  $03,0		;
0C4A 4233      IN    $33,2		;
0C4B 621B      SUBH  $1B		;
0C4C FB00 0C50 BLEZ  $C50		;
0C4E 6023      ADDH  $23		;
0C4F 5803      SACH  $03,0		;
0C50 492C      OUT   $2C,1		;
0C51 6504      ZALH  $04		;
0C52 4804      OUT   $04,0		;
0C53 610C      ADDS  $0C		;
0C54 0514      ADD   $14,5		;
0C55 500C      SACL  $0C,0		;
0C56 5804      SACH  $04,0		;
0C57 4234      IN    $34,2		;
0C58 621C      SUBH  $1C		;
0C59 FB00 0C5D BLEZ  $C5D		;
0C5B 6024      ADDH  $24		;
0C5C 5804      SACH  $04,0		;
0C5D 492D      OUT   $2D,1		;
0C5E 6505      ZALH  $05		;
0C5F 4805      OUT   $05,0		;
0C60 610D      ADDS  $0D		;
0C61 0515      ADD   $15,5		;
0C62 500D      SACL  $0D,0		;
0C63 5805      SACH  $05,0		;
0C64 4235      IN    $35,2		;
0C65 621D      SUBH  $1D		;
0C66 FB00 0C6A BLEZ  $C6A		;
0C68 6025      ADDH  $25		;
0C69 5805      SACH  $05,0		;
0C6A 492E      OUT   $2E,1		;
0C6B 6506      ZALH  $06		;
0C6C 4806      OUT   $06,0		;
0C6D 610E      ADDS  $0E		;
0C6E 0516      ADD   $16,5		;
0C6F 500E      SACL  $0E,0		;
0C70 5806      SACH  $06,0		;
0C71 4236      IN    $36,2		;
0C72 621E      SUBH  $1E		;
0C73 FB00 0C77 BLEZ  $C77		;
0C75 6026      ADDH  $26		;
0C76 5806      SACH  $06,0		;
0C77 492F      OUT   $2F,1		;
0C78 6507      ZALH  $07		;
0C79 4807      OUT   $07,0		;
0C7A 610F      ADDS  $0F		;
0C7B 0517      ADD   $17,5		;
0C7C 500F      SACL  $0F,0		;
0C7D 5807      SACH  $07,0		;
0C7E 4237      IN    $37,2		;
0C7F 621F      SUBH  $1F		;
0C80 FB00 0C84 BLEZ  $C84		;
0C82 6027      ADDH  $27		;
0C83 5807      SACH  $07,0		;
0C84 7F8B      SOVM  			;
0C85 7F89      ZAC   			;
0C86 6A38      LT    $38		;
0C87 6D30      MPY   $30		;
0C88 6C39      LTA   $39		;
0C89 6D31      MPY   $31		;
0C8A 6C3A      LTA   $3A		;
0C8B 6D32      MPY   $32		;
0C8C 6C3B      LTA   $3B		;
0C8D 6D33      MPY   $33		;
0C8E 6C3C      LTA   $3C		;
0C8F 6D34      MPY   $34		;
0C90 6C3D      LTA   $3D		;
0C91 6D35      MPY   $35		;
0C92 6C3E      LTA   $3E		;
0C93 6D36      MPY   $36		;
0C94 6C3F      LTA   $3F		;
0C95 6D37      MPY   $37		;
0C96 7F8F      APAC  			;
0C97 5848      SACH  $48,0		;
0C98 4F48      OUT   $48,7		;PORT_OUT_RIGTH = *0x48;
0C99 7F80      NOP   			;
0C9A 7F80      NOP   			;
0C9B 7F80      NOP   			;
0C9C 7F80      NOP   			;
0C9D 7F80      NOP   			;
0C9E 7F80      NOP   			;
0C9F 7F80      NOP   			;
0CA0 7F80      NOP   			;
0CA1 7F80      NOP   			;
0CA2 7F80      NOP   			;
0CA3 7F80      NOP   			;
0CA4 7F80      NOP   			;
0CA5 7F8B      SOVM  			;
0CA6 7F89      ZAC   			;
0CA7 6A40      LT    $40		;
0CA8 6D30      MPY   $30		;
0CA9 6C41      LTA   $41		;
0CAA 6D31      MPY   $31		;
0CAB 6C42      LTA   $42		;
0CAC 6D32      MPY   $32		;
0CAD 6C43      LTA   $43		;
0CAE 6D33      MPY   $33		;
0CAF 6C44      LTA   $44		;
0CB0 6D34      MPY   $34		;
0CB1 6C45      LTA   $45		;
0CB2 6D35      MPY   $35		;
0CB3 6C46      LTA   $46		;
0CB4 6D36      MPY   $36		;
0CB5 6C47      LTA   $47		;
0CB6 6D37      MPY   $37		;
0CB7 7F8F      APAC  			;
0CB8 5848      SACH  $48,0		;
0CB9 4B48      OUT   $48,3		;
0CBA 7F8A      ROVM  			;
0CBB F600 0C07 BIOZ  $C07		;
0CBD 7F80      NOP   			;
0CBE 7F80      NOP   			;
0CBF 7F80      NOP   			;
0CC0 F900 0C0A B     $C0A		;}

L0CC2:					;mode_7:
0CC2 7F81      DINT  			;
0CC3 7F8A      ROVM  			;
0CC4 6E00      LDPK  $00		;
0CC5 6880      MAR   *,0		;
0CC6 70FF      LARK  AR0,#$FF		;
0CC7 7F89      ZAC   			;
0CC8 5088      SACL  *,0		;
0CC9 F400 0CC8 BANZ  $CC8		;
0CCB F900 0CD0 B     $CD0		;
0CCD 4052      IN    $52,0		;
0CCE 3852      LAR   AR0,$52		;
0CCF 4188      IN    *,1		;
0CD0 492D      OUT   $2D,1		;
0CD1 4800      OUT   $00,0		;
0CD2 6A37      LT    $37		;
0CD3 6D53      MPY   $53		;
0CD4 7F8E      PAC   			;
0CD5 5851      SACH  $51,0		;
0CD6 6A51      LT    $51		;
0CD7 6D12      MPY   $12		;
0CD8 7F8E      PAC   			;
0CD9 5851      SACH  $51,0		;
0CDA 6500      ZALH  $00		;
0CDB 0A51      ADD   $51,10		;
0CDC 6109      ADDS  $09		;
0CDD 0512      ADD   $12,5		;
0CDE 5009      SACL  $09,0		;
0CDF 5800      SACH  $00,0		;
0CE0 4236      IN    $36,2		;
0CE1 621B      SUBH  $1B		;
0CE2 FB00 0CE6 BLEZ  $CE6		;
0CE4 6024      ADDH  $24		;
0CE5 5800      SACH  $00,0		;
0CE6 492E      OUT   $2E,1		;
0CE7 6501      ZALH  $01		;
0CE8 4801      OUT   $01,0		;
0CE9 610A      ADDS  $0A		;
0CEA 0513      ADD   $13,5		;
0CEB 500A      SACL  $0A,0		;
0CEC 5801      SACH  $01,0		;
0CED 4237      IN    $37,2		;
0CEE 621C      SUBH  $1C		;
0CEF FB00 0CF3 BLEZ  $CF3		;
0CF1 6025      ADDH  $25		;
0CF2 5801      SACH  $01,0		;
0CF3 492F      OUT   $2F,1		;
0CF4 4802      OUT   $02,0		;
0CF5 6A39      LT    $39		;
0CF6 6D54      MPY   $54		;
0CF7 7F8E      PAC   			;
0CF8 5851      SACH  $51,0		;
0CF9 6A51      LT    $51		;
0CFA 6D14      MPY   $14		;
0CFB 7F8E      PAC   			;
0CFC 5851      SACH  $51,0		;
0CFD 6502      ZALH  $02		;
0CFE 0A51      ADD   $51,10		;
0CFF 610B      ADDS  $0B		;
0D00 0514      ADD   $14,5		;
0D01 500B      SACL  $0B,0		;
0D02 5802      SACH  $02,0		;
0D03 4238      IN    $38,2		;
0D04 621D      SUBH  $1D		;
0D05 FB00 0D09 BLEZ  $D09		;
0D07 6026      ADDH  $26		;
0D08 5802      SACH  $02,0		;
0D09 4930      OUT   $30,1		;
0D0A 6503      ZALH  $03		;
0D0B 4803      OUT   $03,0		;
0D0C 610C      ADDS  $0C		;
0D0D 0515      ADD   $15,5		;
0D0E 500C      SACL  $0C,0		;
0D0F 5803      SACH  $03,0		;
0D10 4239      IN    $39,2		;
0D11 621E      SUBH  $1E		;
0D12 FB00 0D16 BLEZ  $D16		;
0D14 6027      ADDH  $27		;
0D15 5803      SACH  $03,0		;
0D16 4931      OUT   $31,1		;
0D17 6504      ZALH  $04		;
0D18 4804      OUT   $04,0		;
0D19 610D      ADDS  $0D		;
0D1A 0516      ADD   $16,5		;
0D1B 500D      SACL  $0D,0		;
0D1C 5804      SACH  $04,0		;
0D1D 423A      IN    $3A,2		;
0D1E 621F      SUBH  $1F		;
0D1F FB00 0D23 BLEZ  $D23		;
0D21 6028      ADDH  $28		;
0D22 5804      SACH  $04,0		;
0D23 4932      OUT   $32,1		;
0D24 6505      ZALH  $05		;
0D25 4805      OUT   $05,0		;
0D26 610E      ADDS  $0E		;
0D27 0517      ADD   $17,5		;
0D28 500E      SACL  $0E,0		;
0D29 5805      SACH  $05,0		;
0D2A 423B      IN    $3B,2		;
0D2B 6220      SUBH  $20		;
0D2C FB00 0D30 BLEZ  $D30		;
0D2E 6029      ADDH  $29		;
0D2F 5805      SACH  $05,0		;
0D30 4933      OUT   $33,1		;
0D31 6506      ZALH  $06		;
0D32 4806      OUT   $06,0		;
0D33 610F      ADDS  $0F		;
0D34 0518      ADD   $18,5		;
0D35 500F      SACL  $0F,0		;
0D36 5806      SACH  $06,0		;
0D37 423C      IN    $3C,2		;
0D38 6221      SUBH  $21		;
0D39 FB00 0D3D BLEZ  $D3D		;
0D3B 602A      ADDH  $2A		;
0D3C 5806      SACH  $06,0		;
0D3D 4934      OUT   $34,1		;
0D3E 6507      ZALH  $07		;
0D3F 4807      OUT   $07,0		;
0D40 6110      ADDS  $10		;
0D41 0519      ADD   $19,5		;
0D42 5010      SACL  $10,0		;
0D43 5807      SACH  $07,0		;
0D44 423D      IN    $3D,2		;
0D45 6222      SUBH  $22		;
0D46 FB00 0D4A BLEZ  $D4A		;
0D48 602B      ADDH  $2B		;
0D49 5807      SACH  $07,0		;
0D4A 4935      OUT   $35,1		;
0D4B 6508      ZALH  $08		;
0D4C 4808      OUT   $08,0		;
0D4D 6111      ADDS  $11		;
0D4E 051A      ADD   $1A,5		;
0D4F 5011      SACL  $11,0		;
0D50 5808      SACH  $08,0		;
0D51 423E      IN    $3E,2		;
0D52 6223      SUBH  $23		;
0D53 FB00 0D57 BLEZ  $D57		;
0D55 602C      ADDH  $2C		;
0D56 5808      SACH  $08,0		;
0D57 7F8B      SOVM  			;
0D58 7F89      ZAC   			;
0D59 6A3F      LT    $3F		;
0D5A 6D36      MPY   $36		;
0D5B 6C40      LTA   $40		;
0D5C 6D37      MPY   $37		;
0D5D 6C41      LTA   $41		;
0D5E 6D38      MPY   $38		;
0D5F 6C42      LTA   $42		;
0D60 6D39      MPY   $39		;
0D61 6C43      LTA   $43		;
0D62 6D3A      MPY   $3A		;
0D63 6C44      LTA   $44		;
0D64 6D3B      MPY   $3B		;
0D65 6C45      LTA   $45		;
0D66 6D3C      MPY   $3C		;
0D67 6C46      LTA   $46		;
0D68 6D3D      MPY   $3D		;
0D69 6C47      LTA   $47		;
0D6A 6D3E      MPY   $3E		;
0D6B 7F8F      APAC  			;
0D6C 5851      SACH  $51,0		;
0D6D 4F51      OUT   $51,7		;PORT_OUT_RIGTH = *0x51;
0D6E 7F80      NOP   			;
0D6F 7F80      NOP   			;
0D70 7F80      NOP   			;
0D71 7F80      NOP   			;
0D72 7F80      NOP   			;
0D73 7F80      NOP   			;
0D74 7F80      NOP   			;
0D75 7F80      NOP   			;
0D76 7F80      NOP   			;
0D77 7F8B      SOVM  			;
0D78 7F89      ZAC   			;
0D79 6A48      LT    $48		;
0D7A 6D36      MPY   $36		;
0D7B 6C49      LTA   $49		;
0D7C 6D37      MPY   $37		;
0D7D 6C4A      LTA   $4A		;
0D7E 6D38      MPY   $38		;
0D7F 6C4B      LTA   $4B		;
0D80 6D39      MPY   $39		;
0D81 6C4C      LTA   $4C		;
0D82 6D3A      MPY   $3A		;
0D83 6C4D      LTA   $4D		;
0D84 6D3B      MPY   $3B		;
0D85 6C4E      LTA   $4E		;
0D86 6D3C      MPY   $3C		;
0D87 6C4F      LTA   $4F		;
0D88 6D3D      MPY   $3D		;
0D89 6C50      LTA   $50		;
0D8A 6D3E      MPY   $3E		;
0D8B 7F8F      APAC  			;
0D8C 5851      SACH  $51,0		;
0D8D 4B51      OUT   $51,3		;
0D8E 7F8A      ROVM  			;
0D8F F600 0CCD BIOZ  $CCD		;
0D91 7F80      NOP   			;
0D92 7F80      NOP   			;
0D93 7F80      NOP   			;
0D94 F900 0CD0 B     $CD0		;

L0D96:					;int_handler
0D96 7F8D      RET   			;



0FCD 4D02      OUT   $02,5	;
0FCE F600 0FD1 BIOZ  $FD1		;
0FD0 2002      LAC   $02,0		;
0FD1 7F80      NOP   		;
0FD2 7F80      NOP   		;
0FD3 F600 0FD6 BIOZ  $FD6		;
0FD5 0002      ADD   $02,0		;
0FD6 4800      OUT   $00,0	;
0FD7 7F80      NOP   		;
0FD8 7F80      NOP   		;
0FD9 7F80      NOP   		;
0FDA 7F80      NOP   		;
0FDB 4903      OUT   $03,1	;
0FDC 4009      IN    $09,0	;
0FDD 4804      OUT   $04,0	;
0FDE 450A      IN    $0A,5	;
0FDF 4905      OUT   $05,1	;
0FE0 4906      OUT   $06,1	;
0FE1 4807      OUT   $07,0	;
0FE2 4D08      OUT   $08,5	;
0FE3 F600 0FE6 BIOZ  $FE6		;
0FE5 400B      IN    $0B,0	;
0FE6 7F80      NOP   		;
0FE7 F600 0FEA BIOZ  $FEA		;
0FE9 0002      ADD   $02,0		;
0FEA 7F80      NOP   		;
0FEB 7F80      NOP   		;
0FEC 7F80      NOP   		;
0FED 7F80      NOP   		;
0FEE 400C      IN    $0C,0	;
0FEF 450D      IN    $0D,5	;
0FF0 410E      IN    $0E,1	;
0FF1 410F      IN    $0F,1	;
0FF2 4807      OUT   $07,0	;
0FF3 7F80      NOP   		;
0FF4 5011      SACL  $11,0	;
0FF5 4010      IN    $10,0	;
0FF6 7F80      NOP   		;
0FF7 7F80      NOP   		;
0FF8 7F80      NOP   		;
0FF9 7F80      NOP   		;
0FFA 67A8      TBLR  *+		;
0FFB 7F80      NOP   		;
0FFC 7F80      NOP   		;
0FFD 3CC0      ???   		;
0FFE 3D48      ???   		;
0FFF 554B      ???   		;
