SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 1 ************ OBJECT LISTING ************ FILE NAME: G:\Casio SDK\Projekte\Matris\Matris.c SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 1 /*Matris by Casimo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported +License. Matris.c 2 see here: http://creativecommons.org/licenses/by-nc-sa/3.0/ Matris.c 3 */ Matris.c 4 #include "stdio.h" Matris.c 5 #include "key.h" Matris.c 6 #include "draw.h" Matris.c 7 #include "global.h" Matris.c 8 Matris.c 9 short*APP_EnableRestart() P 00000000 _APP_EnableRestart: ; function: APP_EnableRestart ; frame size=0 Matris.c 10 { Matris.c 11 unsigned int ea; Matris.c 12 unsigned int j; Matris.c 13 short*pEnableRestartFlag; Matris.c 14 ea = *(unsigned int*)0x8001007C; 00000000 D541 MOV.L L685+4,R5 ; H'8001007C 00000002 6452 MOV.L @R5,R4 Matris.c 15 ea += 0x0490*4; 00000004 937E MOV.W L685,R3 ; H'1240 00000006 343C ADD R3,R4 Matris.c 16 if ( ea < 0x8001007C ) return 0; 00000008 3452 CMP/HS R5,R4 0000000A 8B19 BF L673 Matris.c 17 if ( ea > 0x81000000 ) return 0; 0000000C D73F MOV.L L685+8,R7 ; H'81000000 0000000E 3476 CMP/HI R7,R4 00000010 8916 BT L673 Matris.c 18 ea = *(unsigned int*)( ea ); 00000012 6442 MOV.L @R4,R4 Matris.c 19 if ( ea < 0x8001007C ) return 0; 00000014 3452 CMP/HS R5,R4 00000016 8B13 BF L673 Matris.c 20 if ( ea > 0x81000000 ) return 0; 00000018 3476 CMP/HI R7,R4 0000001A 8911 BT L673 Matris.c 21 j = *(unsigned char*)( ea + 1 ); 0000001C 8441 MOV.B @(1,R4),R0 Matris.c 22 j *= 4; Matris.c 23 ea = ( ea + j + 4 ) & 0xFFFFFFFC; 0000001E E3FC MOV #-4,R3 00000020 660C EXTU.B R0,R6 00000022 4608 SHLL2 R6 00000024 346C ADD R6,R4 00000026 7404 ADD #4,R4 00000028 2439 AND R3,R4 Matris.c 24 if ( ea < 0x8001007C ) return 0; 0000002A 3452 CMP/HS R5,R4 0000002C 8B08 BF L673 Matris.c 25 if ( ea > 0x81000000 ) return 0; 0000002E 3476 CMP/HI R7,R4 00000030 8906 BT L673 Matris.c 26 pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 ); SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 2 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000032 6442 MOV.L @R4,R4 Matris.c 27 if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0; 00000034 D236 MOV.L L685+12,R2 ; H'FF000000 00000036 7408 ADD #8,R4 00000038 D336 MOV.L L685+16,R3 ; H'88000000 0000003A 2249 AND R4,R2 0000003C 3230 CMP/EQ R3,R2 0000003E 8901 BT L509 00000040 L673: 00000040 000B RTS 00000042 E000 MOV #0,R0 00000044 L509: Matris.c 28 if ( pEnableRestartFlag ) *pEnableRestartFlag = 1; 00000044 2448 TST R4,R4 00000046 8D02 BT/S L510 Matris.c 29 return pEnableRestartFlag; 00000048 6043 MOV R4,R0 0000004A E201 MOV #1,R2 0000004C 2421 MOV.W R2,@R4 0000004E L510: Matris.c 30 } 0000004E L503: 0000004E 000B RTS 00000050 0009 NOP Matris.c 31 Matris.c 32 //restart addin after return 1 Matris.c 33 Matris.c 34 static unsigned int seed = 123456789; Matris.c 35 unsigned int kiss() 00000052 _kiss: ; function: kiss ; frame size=4 00000052 4F12 STS.L MACL,@-R15 Matris.c 36 { Matris.c 37 // interner Zustand Matris.c 38 static unsigned int y = 362436000; Matris.c 39 static unsigned int z = 521288629; Matris.c 40 static unsigned int c = 7654321; Matris.c 41 Matris.c 42 unsigned long t; Matris.c 43 Matris.c 44 // Linearer Kongruenzgenerator Matris.c 45 seed = 69069 * seed + 12345; 00000054 D630 MOV.L L685+20,R6 ; __$seed 00000056 D331 MOV.L L685+24,R3 ; H'00010DCD 00000058 6262 MOV.L @R6,R2 0000005A 0237 MUL.L R3,R2 0000005C 9153 MOV.W L685+2,R1 ; H'3039 0000005E 031A STS MACL,R3 Matris.c 46 Matris.c 47 // Xorshift Matris.c 48 y ^= y << 13; 00000060 D42F MOV.L L685+28,R4 ; __$y$306 00000062 331C ADD R1,R3 Matris.c 49 y ^= y >> 17; Matris.c 50 y ^= y << 5; Matris.c 51 Matris.c 52 // Multiply-with-carry SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 3 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 53 t = (unsigned long)698769069 * z + c; 00000064 D72F MOV.L L685+32,R7 ; __$z$307 00000066 2632 MOV.L R3,@R6 00000068 6242 MOV.L @R4,R2 0000006A E30D MOV #13,R3 0000006C 6042 MOV.L @R4,R0 0000006E 423D SHLD R3,R2 00000070 202A XOR R2,R0 00000072 6203 MOV R0,R2 00000074 4229 SHLR16 R2 00000076 4201 SHLR R2 00000078 202A XOR R2,R0 0000007A 6203 MOV R0,R2 0000007C 4208 SHLL2 R2 0000007E 4208 SHLL2 R2 00000080 4200 SHLL R2 00000082 202A XOR R2,R0 00000084 2402 MOV.L R0,@R4 00000086 D228 MOV.L L685+36,R2 ; H'29A65EAD 00000088 6072 MOV.L @R7,R0 0000008A 0027 MUL.L R2,R0 0000008C D027 MOV.L L685+40,R0 ; __$c$308 0000008E 051A STS MACL,R5 00000090 6102 MOV.L @R0,R1 Matris.c 54 c = t >> 32; 00000092 E2E0 MOV #-32,R2 00000094 351C ADD R1,R5 00000096 6353 MOV R5,R3 00000098 432D SHLD R2,R3 0000009A 6203 MOV R0,R2 0000009C 2232 MOV.L R3,@R2 Matris.c 55 z = (unsigned int) t; Matris.c 56 Matris.c 57 return seed + y + z; 0000009E 6153 MOV R5,R1 000000A0 2752 MOV.L R5,@R7 000000A2 6342 MOV.L @R4,R3 000000A4 6062 MOV.L @R6,R0 000000A6 303C ADD R3,R0 000000A8 301C ADD R1,R0 Matris.c 58 } 000000AA 000B RTS 000000AC 4F16 LDS.L @R15+,MACL Matris.c 59 Matris.c 60 void seedkiss() 000000AE _seedkiss: ; function: seedkiss ; frame size=4 000000AE 4F22 STS.L PR,@-R15 Matris.c 61 { Matris.c 62 seed = RTC_GetTicks(); 000000B0 D31F MOV.L L685+44,R3 ; _RTC_GetTicks 000000B2 430B JSR @R3 000000B4 0009 NOP 000000B6 D218 MOV.L L685+20,R2 ; __$seed Matris.c 63 } 000000B8 4F26 LDS.L @R15+,PR 000000BA 000B RTS SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 4 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000000BC 2202 MOV.L R0,@R2 Matris.c 64 Matris.c 65 //kiss is a random number generator Matris.c 66 Matris.c 67 char *Disp_GetVRAMPtr(void); Matris.c 68 void DrawLineVRAM(int x1, int y1, int x2, int y2); Matris.c 69 void AllClr_DD(void); Matris.c 70 void AllClr_VRAM(void); Matris.c 71 void AllClr_DDVRAM(void); Matris.c 72 void locate(int x, int y); Matris.c 73 void Print(const unsigned char *str); Matris.c 74 int Timer_Install(int TimerID, void (*handler)(void), int delay); Matris.c 75 int Timer_Uninstall(int TimerID); Matris.c 76 int Timer_Start(int TimerID); Matris.c 77 void App_RUN_MAT(); Matris.c 78 Matris.c 79 //some prototypes Matris.c 80 Matris.c 81 char swit; Matris.c 82 Matris.c 83 char pause = False; Matris.c 84 //pause the game Matris.c 85 Matris.c 86 char quit = False; Matris.c 87 Matris.c 88 char levelchanged = False; Matris.c 89 //has the level changed during two actions? Matris.c 90 Matris.c 91 char exit = False; Matris.c 92 Matris.c 93 char ready; Matris.c 94 Matris.c 95 char onoff = True; Matris.c 96 //used for timers Matris.c 97 Matris.c 98 char canswap; Matris.c 99 //brick already swapped? Matris.c 100 Matris.c 101 char slowyposdown = 0; Matris.c 102 Matris.c 103 char connected; Matris.c 104 //multiplayer activated? Matris.c 105 Matris.c 106 unsigned char receiveline = 0; Matris.c 107 unsigned char sendline = 0; Matris.c 108 //what to send or receive? Matris.c 109 Matris.c 110 char cantrans = False; Matris.c 111 //allowed to transfer? Matris.c 112 Matris.c 113 //taken from MonochromeLib by PierrotLL Matris.c 114 Matris.c 115 void drawbuffer(char *buffer) 000000BE _drawbuffer: ; function: drawbuffer ; frame size=16 000000BE E107 MOV #7,R1 000000C0 D61C MOV.L L685+48,R6 ; H'B4000000 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 5 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000000C2 E004 MOV #4,R0 000000C4 D51C MOV.L L685+52,R5 ; H'B4010000 000000C6 2FD6 MOV.L R13,@-R15 000000C8 2FC6 MOV.L R12,@-R15 Matris.c 116 { Matris.c 117 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000; Matris.c 118 int i, j; Matris.c 119 for(i=0 ; i<64 ; i++) 000000CA EC00 MOV #0,R12 000000CC 2FA6 MOV.L R10,@-R15 000000CE 6DC3 MOV R12,R13 000000D0 2F96 MOV.L R9,@-R15 000000D2 EA10 MOV #16,R10 000000D4 E940 MOV #64,R9 000000D6 L512: Matris.c 120 { Matris.c 121 *LCD_register_selector = 4; Matris.c 122 *LCD_data_register = i|192; 000000D6 E3C0 MOV #-64,R3 000000D8 2600 MOV.B R0,@R6 Matris.c 123 *LCD_register_selector = 4; Matris.c 124 *LCD_data_register = 0; Matris.c 125 *LCD_register_selector = 7; Matris.c 126 for(j=0 ; j<16 ; j++) *LCD_data_register = *buffer++; 000000DA 67A3 MOV R10,R7 000000DC 23DB OR R13,R3 000000DE 2530 MOV.B R3,@R5 000000E0 2600 MOV.B R0,@R6 000000E2 25C0 MOV.B R12,@R5 000000E4 2610 MOV.B R1,@R6 000000E6 L514: 000000E6 77FE ADD #-2,R7 000000E8 6344 MOV.B @R4+,R3 000000EA 2778 TST R7,R7 000000EC 2530 MOV.B R3,@R5 000000EE 6344 MOV.B @R4+,R3 000000F0 8FF9 BF/S L514 000000F2 2530 MOV.B R3,@R5 000000F4 7D01 ADD #1,R13 000000F6 3D93 CMP/GE R9,R13 000000F8 8BED BF L512 Matris.c 127 } Matris.c 128 } 000000FA 69F6 MOV.L @R15+,R9 000000FC 6AF6 MOV.L @R15+,R10 000000FE 6CF6 MOV.L @R15+,R12 00000100 000B RTS 00000102 6DF6 MOV.L @R15+,R13 00000104 L685: 00000104 1240 .DATA.W H'1240 00000106 3039 .DATA.W H'3039 00000108 8001007C .DATA.L H'8001007C 0000010C 81000000 .DATA.L H'81000000 00000110 FF000000 .DATA.L H'FF000000 00000114 88000000 .DATA.L H'88000000 00000118 <00000000> .DATA.L __$seed 0000011C 00010DCD .DATA.L H'00010DCD SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 6 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000120 <00000000> .DATA.L __$y$306 00000124 <00000000> .DATA.L __$z$307 00000128 29A65EAD .DATA.L H'29A65EAD 0000012C <00000000> .DATA.L __$c$308 00000130 <00000000> .DATA.L _RTC_GetTicks 00000134 B4000000 .DATA.L H'B4000000 00000138 B4010000 .DATA.L H'B4010000 Matris.c 129 Matris.c 130 void RestGray(void) 0000013C _RestGray: ; function: RestGray ; frame size=8 0000013C 2FE6 MOV.L R14,@-R15 0000013E 4F22 STS.L PR,@-R15 Matris.c 131 { Matris.c 132 drawbuffer(pScreen); 00000140 DE30 MOV.L L686+8,R14 ; _pScreen 00000142 BFBC BSR _drawbuffer 00000144 64E2 MOV.L @R14,R4 Matris.c 133 drawbuffer(pScreen + 1024); 00000146 9359 MOV.W L686,R3 ; H'0400 00000148 64E2 MOV.L @R14,R4 0000014A BFB8 BSR _drawbuffer 0000014C 343C ADD R3,R4 Matris.c 134 drawbuffer(pScreen + 2048); 0000014E 9356 MOV.W L686+2,R3 ; H'0800 00000150 64E2 MOV.L @R14,R4 00000152 343C ADD R3,R4 00000154 4F26 LDS.L @R15+,PR 00000156 AFB2 BRA _drawbuffer 00000158 6EF6 MOV.L @R15+,R14 Matris.c 135 } Matris.c 136 Matris.c 137 Matris.c 138 void Disconnect() 0000015A _Disconnect: ; function: Disconnect ; frame size=4 0000015A 4F22 STS.L PR,@-R15 Matris.c 139 { Matris.c 140 Serial_Close(1); 0000015C D32A MOV.L L686+12,R3 ; _Serial_Close 0000015E 430B JSR @R3 00000160 E401 MOV #1,R4 Matris.c 141 connected = False; 00000162 E200 MOV #0,R2 00000164 D329 MOV.L L686+16,R3 ; _connected Matris.c 142 } 00000166 4F26 LDS.L @R15+,PR 00000168 000B RTS 0000016A 2320 MOV.B R2,@R3 Matris.c 143 Matris.c 144 void TeacherMode() 0000016C _TeacherMode: ; function: TeacherMode ; frame size=4 0000016C 4F22 STS.L PR,@-R15 Matris.c 145 { Matris.c 146 Timer_Uninstall(6); 0000016E D328 MOV.L L686+20,R3 ; _Timer_Uninstall SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 7 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000170 430B JSR @R3 00000172 E406 MOV #6,R4 Matris.c 147 Timer_Uninstall(7); 00000174 D226 MOV.L L686+20,R2 ; _Timer_Uninstall 00000176 420B JSR @R2 00000178 E407 MOV #7,R4 Matris.c 148 Disconnect(); 0000017A BFEE BSR _Disconnect 0000017C 0009 NOP Matris.c 149 Matris.c 150 App_RUN_MAT(); 0000017E D225 MOV.L L686+24,R2 ; _App_RUN_MAT 00000180 422B JMP @R2 00000182 4F26 LDS.L @R15+,PR Matris.c 151 } Matris.c 152 Matris.c 153 int round(float num) 00000184 _round: ; function: round ; frame size=32 ; used runtime library name: ; __addd, __stod, __dtoi 00000184 4F22 STS.L PR,@-R15 Matris.c 154 { Matris.c 155 return (int) (num + 0.5); 00000186 6043 MOV R4,R0 00000188 D323 MOV.L L686+28,R3 ; __stod 0000018A 7FF0 ADD #-16,R15 0000018C 430B JSR @R3 0000018E 2FF6 MOV.L R15,@-R15 00000190 D123 MOV.L L686+36,R1 ; __addd 00000192 E200 MOV #0,R2 00000194 2F26 MOV.L R2,@-R15 00000196 D221 MOV.L L686+32,R2 ; H'3FE00000 00000198 2F26 MOV.L R2,@-R15 0000019A 63F3 MOV R15,R3 0000019C 7310 ADD #16,R3 0000019E 410B JSR @R1 000001A0 2F36 MOV.L R3,@-R15 000001A2 D220 MOV.L L686+40,R2 ; __dtoi 000001A4 420B JSR @R2 000001A6 0009 NOP Matris.c 156 } 000001A8 4F26 LDS.L @R15+,PR 000001AA 000B RTS 000001AC 0009 NOP Matris.c 157 Matris.c 158 void clrbuffer(char *buffer) 000001AE _clrbuffer: ; function: clrbuffer ; frame size=0 Matris.c 159 { Matris.c 160 memset(buffer, 0, 3072); 000001AE 9627 MOV.W L686+4,R6 ; H'0C00 000001B0 D31D MOV.L L686+44,R3 ; _memset 000001B2 432B JMP @R3 000001B4 E500 MOV #0,R5 Matris.c 161 } Matris.c 162 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 8 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 163 Matris.c 164 void CreateBlock() 000001B6 _CreateBlock: ; function: CreateBlock ; frame size=8 ; used runtime library name: ; __modlu 000001B6 2FE6 MOV.L R14,@-R15 000001B8 4F22 STS.L PR,@-R15 Matris.c 165 { Matris.c 166 block = nextblock; Matris.c 167 canswap = True; 000001BA EE01 MOV #1,R14 000001BC D21B MOV.L L686+48,R2 ; _nextblock 000001BE 6320 MOV.B @R2,R3 000001C0 D11B MOV.L L686+52,R1 ; _block 000001C2 2130 MOV.B R3,@R1 000001C4 D31B MOV.L L686+56,R3 ; _canswap Matris.c 168 nextblock = (kiss() % 7) + 1; 000001C6 BF44 BSR _kiss 000001C8 23E0 MOV.B R14,@R3 000001CA 6103 MOV R0,R1 000001CC D31A MOV.L L686+60,R3 ; __modlu 000001CE 430B JSR @R3 000001D0 E007 MOV #7,R0 000001D2 7001 ADD #1,R0 000001D4 D215 MOV.L L686+48,R2 ; _nextblock Matris.c 169 xpos = 7; 000001D6 E307 MOV #7,R3 000001D8 D118 MOV.L L686+64,R1 ; _xpos 000001DA 2200 MOV.B R0,@R2 000001DC 2132 MOV.L R3,@R1 Matris.c 170 ypos = 3; 000001DE E203 MOV #3,R2 000001E0 D317 MOV.L L686+68,R3 ; _ypos Matris.c 171 dir = 0; 000001E2 E000 MOV #0,R0 Matris.c 172 left = True; 000001E4 D118 MOV.L L686+76,R1 ; _left 000001E6 2322 MOV.L R2,@R3 000001E8 D216 MOV.L L686+72,R2 ; _dir 000001EA 2200 MOV.B R0,@R2 000001EC 21E0 MOV.B R14,@R1 Matris.c 173 right = True; 000001EE D317 MOV.L L686+80,R3 ; _right Matris.c 174 cantrans = True; 000001F0 D217 MOV.L L686+84,R2 ; _cantrans 000001F2 23E0 MOV.B R14,@R3 000001F4 22E0 MOV.B R14,@R2 Matris.c 175 } 000001F6 4F26 LDS.L @R15+,PR 000001F8 000B RTS 000001FA 6EF6 MOV.L @R15+,R14 000001FC L686: 000001FC 0400 .DATA.W H'0400 000001FE 0800 .DATA.W H'0800 00000200 0C00 .DATA.W H'0C00 00000202 0000 .DATA.W 0 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 9 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000204 <00000000> .DATA.L _pScreen 00000208 <00000000> .DATA.L _Serial_Close 0000020C <00000000> .DATA.L _connected 00000210 <00000000> .DATA.L _Timer_Uninstall 00000214 <00000000> .DATA.L _App_RUN_MAT 00000218 <00000000> .DATA.L __stod 0000021C 3FE00000 .DATA.L H'3FE00000 00000220 <00000000> .DATA.L __addd 00000224 <00000000> .DATA.L __dtoi 00000228 <00000000> .DATA.L _memset 0000022C <00000000> .DATA.L _nextblock 00000230 <00000000> .DATA.L _block 00000234 <00000000> .DATA.L _canswap 00000238 <00000000> .DATA.L __modlu 0000023C <00000000> .DATA.L _xpos 00000240 <00000000> .DATA.L _ypos 00000244 <00000000> .DATA.L _dir 00000248 <00000000> .DATA.L _left 0000024C <00000000> .DATA.L _right 00000250 <00000000> .DATA.L _cantrans Matris.c 176 Matris.c 177 void ResetValues() 00000254 _ResetValues: ; function: ResetValues ; frame size=60 ; used runtime library name: ; __modlu 00000254 2FE6 MOV.L R14,@-R15 00000256 2FD6 MOV.L R13,@-R15 00000258 4F22 STS.L PR,@-R15 0000025A 7FE0 ADD #-32,R15 Matris.c 178 { Matris.c 179 int x,y; Matris.c 180 Matris.c 181 char text[30]; Matris.c 182 Matris.c 183 memset(&changemap, 0, 210); 0000025C 966E MOV.W L687,R6 ; H'00D2 0000025E D438 MOV.L L687+4,R4 ; _changemap 00000260 D338 MOV.L L687+8,R3 ; _memset 00000262 430B JSR @R3 00000264 E500 MOV #0,R5 Matris.c 184 memset(&globalmap, 0, 210); 00000266 9669 MOV.W L687,R6 ; H'00D2 00000268 D437 MOV.L L687+12,R4 ; _globalmap 0000026A D236 MOV.L L687+8,R2 ; _memset 0000026C 420B JSR @R2 0000026E E500 MOV #0,R5 Matris.c 185 Matris.c 186 ypos = 3; 00000270 D236 MOV.L L687+16,R2 ; _ypos Matris.c 187 xpos = 0; 00000272 E100 MOV #0,R1 00000274 D036 MOV.L L687+20,R0 ; _xpos Matris.c 188 block = 0; Matris.c 189 onoff = True; 00000276 ED01 MOV #1,R13 00000278 E303 MOV #3,R3 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 10 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 0000027A 6E13 MOV R1,R14 0000027C 2232 MOV.L R3,@R2 0000027E 2012 MOV.L R1,@R0 00000280 D334 MOV.L L687+24,R3 ; _block 00000282 23E0 MOV.B R14,@R3 00000284 D234 MOV.L L687+28,R2 ; _onoff 00000286 22D0 MOV.B R13,@R2 Matris.c 190 levelchanged = False; 00000288 D134 MOV.L L687+32,R1 ; _levelchanged 0000028A 21E0 MOV.B R14,@R1 Matris.c 191 right = True; 0000028C D334 MOV.L L687+36,R3 ; _right 0000028E 23D0 MOV.B R13,@R3 Matris.c 192 left = True; 00000290 D234 MOV.L L687+40,R2 ; _left 00000292 22D0 MOV.B R13,@R2 Matris.c 193 hold = 0; 00000294 D134 MOV.L L687+44,R1 ; _hold 00000296 21E0 MOV.B R14,@R1 Matris.c 194 exit = False; 00000298 D334 MOV.L L687+48,R3 ; _exit 0000029A 23E0 MOV.B R14,@R3 Matris.c 195 nextdir = Down; 0000029C D234 MOV.L L687+52,R2 ; _nextdir Matris.c 196 nextblock = (kiss() % 7) + 1; 0000029E BED8 BSR _kiss 000002A0 22E0 MOV.B R14,@R2 000002A2 6103 MOV R0,R1 000002A4 D333 MOV.L L687+56,R3 ; __modlu 000002A6 430B JSR @R3 000002A8 E007 MOV #7,R0 000002AA 7001 ADD #1,R0 000002AC D232 MOV.L L687+60,R2 ; _nextblock Matris.c 197 CreateBlock(); 000002AE BF82 BSR _CreateBlock 000002B0 2200 MOV.B R0,@R2 Matris.c 198 clrbuffer(pScreen); 000002B2 D132 MOV.L L687+64,R1 ; _pScreen 000002B4 BF7B BSR _clrbuffer 000002B6 6412 MOV.L @R1,R4 Matris.c 199 Timer_Uninstall(6); 000002B8 D231 MOV.L L687+68,R2 ; _Timer_Uninstall 000002BA 420B JSR @R2 000002BC E406 MOV #6,R4 Matris.c 200 Timer_Uninstall(7); 000002BE D330 MOV.L L687+68,R3 ; _Timer_Uninstall 000002C0 430B JSR @R3 000002C2 E407 MOV #7,R4 Matris.c 201 ready = True; 000002C4 D22F MOV.L L687+72,R2 ; _ready 000002C6 22D0 MOV.B R13,@R2 Matris.c 202 connected = False; 000002C8 D32F MOV.L L687+76,R3 ; _connected Matris.c 203 Matris.c 204 AllClr_DDVRAM(); 000002CA D130 MOV.L L687+80,R1 ; _AllClr_DDVRAM 000002CC 410B JSR @R1 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 11 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000002CE 23E0 MOV.B R14,@R3 Matris.c 205 Matris.c 206 PopUpWin(2); 000002D0 D32F MOV.L L687+84,R3 ; _PopUpWin 000002D2 430B JSR @R3 000002D4 E402 MOV #2,R4 Matris.c 207 sprintf(&text, "Points: %d", points); 000002D6 D32F MOV.L L687+88,R3 ; _points 000002D8 D12F MOV.L L687+92,R1 ; L367 000002DA 6232 MOV.L @R3,R2 000002DC 2F26 MOV.L R2,@-R15 000002DE 2F16 MOV.L R1,@-R15 000002E0 D22E MOV.L L687+96,R2 ; _sprintf 000002E2 64F3 MOV R15,R4 000002E4 420B JSR @R2 000002E6 7408 ADD #8,R4 Matris.c 208 locate(3, 3); 000002E8 D32D MOV.L L687+100,R3; _locate 000002EA E503 MOV #3,R5 000002EC 430B JSR @R3 000002EE 6453 MOV R5,R4 Matris.c 209 Print(&text); 000002F0 D22C MOV.L L687+104,R2; _Print 000002F2 64F3 MOV R15,R4 000002F4 420B JSR @R2 000002F6 7408 ADD #8,R4 Matris.c 210 sprintf(&text, "Level: %d", level); 000002F8 D22B MOV.L L687+108,R2; _level 000002FA 6320 MOV.B @R2,R3 000002FC D12B MOV.L L687+112,R1; L368 000002FE 2F36 MOV.L R3,@-R15 00000300 2F16 MOV.L R1,@-R15 00000302 64F3 MOV R15,R4 00000304 D325 MOV.L L687+96,R3 ; _sprintf 00000306 430B JSR @R3 00000308 7410 ADD #16,R4 0000030A 7F10 ADD #16,R15 Matris.c 211 locate(3, 4); 0000030C D224 MOV.L L687+100,R2; _locate 0000030E E504 MOV #4,R5 00000310 420B JSR @R2 00000312 E403 MOV #3,R4 Matris.c 212 Print(&text); 00000314 D323 MOV.L L687+104,R3; _Print 00000316 430B JSR @R3 00000318 64F3 MOV R15,R4 Matris.c 213 PutDisp_DD(); 0000031A D225 MOV.L L687+116,R2; _PutDisp_DD 0000031C 420B JSR @R2 0000031E 0009 NOP Matris.c 214 Matris.c 215 points = 0; 00000320 D31C MOV.L L687+88,R3 ; _points 00000322 23E2 MOV.L R14,@R3 Matris.c 216 level = 0; 00000324 D220 MOV.L L687+108,R2; _level 00000326 22E0 MOV.B R14,@R2 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 12 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000328 DE22 MOV.L L687+120,R14; _KeyDown Matris.c 217 Matris.c 218 while(!KeyDown(31)); 0000032A L516: 0000032A 4E0B JSR @R14 0000032C E41F MOV #31,R4 0000032E 2008 TST R0,R0 00000330 89FB BT L516 Matris.c 219 } 00000332 7F20 ADD #32,R15 00000334 4F26 LDS.L @R15+,PR 00000336 6DF6 MOV.L @R15+,R13 00000338 000B RTS 0000033A 6EF6 MOV.L @R15+,R14 0000033C L687: 0000033C 00D2 .DATA.W H'00D2 0000033E 0000 .DATA.W 0 00000340 <00000000> .DATA.L _changemap 00000344 <00000000> .DATA.L _memset 00000348 <00000000> .DATA.L _globalmap 0000034C <00000000> .DATA.L _ypos 00000350 <00000000> .DATA.L _xpos 00000354 <00000000> .DATA.L _block 00000358 <00000000> .DATA.L _onoff 0000035C <00000000> .DATA.L _levelchanged 00000360 <00000000> .DATA.L _right 00000364 <00000000> .DATA.L _left 00000368 <00000000> .DATA.L _hold 0000036C <00000000> .DATA.L _exit 00000370 <00000000> .DATA.L _nextdir 00000374 <00000000> .DATA.L __modlu 00000378 <00000000> .DATA.L _nextblock 0000037C <00000000> .DATA.L _pScreen 00000380 <00000000> .DATA.L _Timer_Uninstall 00000384 <00000000> .DATA.L _ready 00000388 <00000000> .DATA.L _connected 0000038C <00000000> .DATA.L _AllClr_DDVRAM 00000390 <00000000> .DATA.L _PopUpWin 00000394 <00000000> .DATA.L _points 00000398 <00000000> .DATA.L L367 0000039C <00000000> .DATA.L _sprintf 000003A0 <00000000> .DATA.L _locate 000003A4 <00000000> .DATA.L _Print 000003A8 <00000000> .DATA.L _level 000003AC <00000000> .DATA.L L368 000003B0 <00000000> .DATA.L _PutDisp_DD 000003B4 <00000000> .DATA.L _KeyDown Matris.c 220 Matris.c 221 void Transfer() 000003B8 _Transfer: ; function: Transfer ; frame size=44 ; used runtime library name: ; __modlu 000003B8 2FE6 MOV.L R14,@-R15 000003BA 2FD6 MOV.L R13,@-R15 000003BC 2FC6 MOV.L R12,@-R15 000003BE 2FB6 MOV.L R11,@-R15 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 13 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000003C0 2FA6 MOV.L R10,@-R15 000003C2 2F96 MOV.L R9,@-R15 000003C4 2F86 MOV.L R8,@-R15 000003C6 4F22 STS.L PR,@-R15 000003C8 7FF8 ADD #-8,R15 Matris.c 222 { Matris.c 223 int xcount, ycount; Matris.c 224 char space = kiss() % 10; //where is the hole? 000003CA BE42 BSR _kiss 000003CC EA0A MOV #10,R10 000003CE 6103 MOV R0,R1 000003D0 D283 MOV.L L688+2,R2 ; __modlu 000003D2 420B JSR @R2 000003D4 60A3 MOV R10,R0 000003D6 2F00 MOV.B R0,@R15 Matris.c 225 Matris.c 226 if(connected == True) 000003D8 D382 MOV.L L688+6,R3 ; _connected 000003DA 6030 MOV.B @R3,R0 000003DC 8801 CMP/EQ #1,R0 000003DE 8901 BT L689 000003E0 A093 BRA L518 000003E2 0009 NOP 000003E4 L689: Matris.c 227 { Matris.c 228 if(receiveline > sendline) 000003E4 DD80 MOV.L L688+10,R13; _sendline 000003E6 DE81 MOV.L L688+14,R14; _receiveline 000003E8 62D0 MOV.B @R13,R2 000003EA 61E0 MOV.B @R14,R1 000003EC 3126 CMP/HI R2,R1 000003EE 8F06 BF/S L519 000003F0 EB00 MOV #0,R11 Matris.c 229 { Matris.c 230 //if there are lines arriving, but there can be send lines back, erase the lines, +for example: receiving 3 lines, sending 1 -> 0 are send, 2 are received Matris.c 231 receiveline -= sendline; 000003F2 62D0 MOV.B @R13,R2 000003F4 61E0 MOV.B @R14,R1 000003F6 3128 SUB R2,R1 000003F8 2E10 MOV.B R1,@R14 Matris.c 232 sendline = 0; 000003FA A005 BRA L520 000003FC 2DB0 MOV.B R11,@R13 000003FE L519: Matris.c 233 } Matris.c 234 else Matris.c 235 { Matris.c 236 sendline -= receiveline; 000003FE 62E0 MOV.B @R14,R2 00000400 61D0 MOV.B @R13,R1 00000402 3128 SUB R2,R1 00000404 2D10 MOV.B R1,@R13 Matris.c 237 receiveline = 0; 00000406 2EB0 MOV.B R11,@R14 00000408 L520: Matris.c 238 } SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 14 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 239 if(sendline > 0) 00000408 63D0 MOV.B @R13,R3 0000040A 633C EXTU.B R3,R3 0000040C 4315 CMP/PL R3 0000040E 8B06 BF L521 00000410 DC77 MOV.L L688+18,R12; _Serial_BufferedTransmitOneByte Matris.c 240 { Matris.c 241 while(Serial_BufferedTransmitOneByte(sendline) != 0); 00000412 L522: 00000412 64D0 MOV.B @R13,R4 00000414 4C0B JSR @R12 00000416 644C EXTU.B R4,R4 00000418 2008 TST R0,R0 0000041A 8BFA BF L522 Matris.c 242 //send the number of lines Matris.c 243 sendline = 0; 0000041C 2DB0 MOV.B R11,@R13 0000041E L521: 0000041E 60E0 MOV.B @R14,R0 00000420 600C EXTU.B R0,R0 00000422 4015 CMP/PL R0 00000424 8B71 BF L518 Matris.c 244 } Matris.c 245 if(receiveline > 0) Matris.c 246 { Matris.c 247 for(ycount = 0; ycount < 20 - receiveline; ycount++) 00000426 E714 MOV #20,R7 00000428 DC72 MOV.L L688+22,R12; _globalmap 0000042A 6273 MOV R7,R2 0000042C 3208 SUB R0,R2 0000042E 4215 CMP/PL R2 00000430 8F2A BF/S L525 00000432 65B3 MOV R11,R5 00000434 L526: Matris.c 248 { Matris.c 249 for(xcount = 0; xcount < 10; xcount++) 00000434 60B3 MOV R11,R0 00000436 6653 MOV R5,R6 00000438 6353 MOV R5,R3 0000043A 4608 SHLL2 R6 0000043C 363C ADD R3,R6 0000043E 4600 SHLL R6 00000440 36CC ADD R12,R6 00000442 L528: Matris.c 250 { Matris.c 251 globalmap[ycount][xcount] = globalmap[ycount + receiveline][xcount +]; 00000442 6103 MOV R0,R1 00000444 63E0 MOV.B @R14,R3 00000446 316C ADD R6,R1 00000448 633C EXTU.B R3,R3 0000044A 335C ADD R5,R3 0000044C 6233 MOV R3,R2 0000044E 4308 SHLL2 R3 00000450 332C ADD R2,R3 00000452 4300 SHLL R3 00000454 33CC ADD R12,R3 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 15 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000456 033C MOV.B @(R0,R3),R3 00000458 2130 MOV.B R3,@R1 0000045A 7001 ADD #1,R0 0000045C 63E0 MOV.B @R14,R3 0000045E 6103 MOV R0,R1 00000460 316C ADD R6,R1 00000462 633C EXTU.B R3,R3 00000464 335C ADD R5,R3 00000466 6233 MOV R3,R2 00000468 4308 SHLL2 R3 0000046A 332C ADD R2,R3 0000046C 4300 SHLL R3 0000046E 33CC ADD R12,R3 00000470 033C MOV.B @(R0,R3),R3 00000472 7001 ADD #1,R0 00000474 2130 MOV.B R3,@R1 00000476 30A3 CMP/GE R10,R0 00000478 8BE3 BF L528 0000047A 7501 ADD #1,R5 0000047C 62E0 MOV.B @R14,R2 0000047E 6373 MOV R7,R3 00000480 622C EXTU.B R2,R2 00000482 3328 SUB R2,R3 00000484 3533 CMP/GE R3,R5 00000486 8BD5 BF L526 00000488 L525: Matris.c 252 //move all lines upwards Matris.c 253 } Matris.c 254 } Matris.c 255 Matris.c 256 for(ycount = 19; ycount > 19 - receiveline; ycount --) 00000488 63E0 MOV.B @R14,R3 0000048A E813 MOV #19,R8 0000048C 633C EXTU.B R3,R3 0000048E 6283 MOV R8,R2 00000490 3238 SUB R3,R2 00000492 3827 CMP/GT R2,R8 00000494 8B38 BF L529 00000496 L530: Matris.c 257 { Matris.c 258 for(xcount = 0; xcount < 10; xcount ++) 00000496 6DB3 MOV R11,R13 00000498 6983 MOV R8,R9 0000049A 6383 MOV R8,R3 0000049C 4908 SHLL2 R9 0000049E 393C ADD R3,R9 000004A0 4900 SHLL R9 000004A2 39CC ADD R12,R9 000004A4 L532: Matris.c 259 { Matris.c 260 globalmap[ycount][xcount] = (xcount == space) ? 0 : (kiss() % 7) + + 1; 000004A4 63D3 MOV R13,R3 000004A6 339C ADD R9,R3 000004A8 2F36 MOV.L R3,@-R15 000004AA 62F3 MOV R15,R2 000004AC 7204 ADD #4,R2 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 16 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000004AE 6220 MOV.B @R2,R2 000004B0 1F22 MOV.L R2,@(8,R15) 000004B2 3D20 CMP/EQ R2,R13 000004B4 8B01 BF L533 000004B6 A008 BRA L534 000004B8 E200 MOV #0,R2 000004BA L533: 000004BA BDCA BSR _kiss 000004BC 0009 NOP 000004BE 6103 MOV R0,R1 000004C0 D347 MOV.L L688+2,R3 ; __modlu 000004C2 430B JSR @R3 000004C4 E007 MOV #7,R0 000004C6 7001 ADD #1,R0 000004C8 6203 MOV R0,R2 000004CA L534: 000004CA 7D01 ADD #1,R13 000004CC 63F6 MOV.L @R15+,R3 000004CE 2320 MOV.B R2,@R3 000004D0 63D3 MOV R13,R3 000004D2 339C ADD R9,R3 000004D4 2F36 MOV.L R3,@-R15 000004D6 52F2 MOV.L @(8,R15),R2 000004D8 3D20 CMP/EQ R2,R13 000004DA 8B01 BF L535 000004DC A008 BRA L536 000004DE E200 MOV #0,R2 000004E0 L535: 000004E0 BDB7 BSR _kiss 000004E2 0009 NOP 000004E4 D33E MOV.L L688+2,R3 ; __modlu 000004E6 6103 MOV R0,R1 000004E8 430B JSR @R3 000004EA E007 MOV #7,R0 000004EC 7001 ADD #1,R0 000004EE 6203 MOV R0,R2 000004F0 L536: 000004F0 63F6 MOV.L @R15+,R3 000004F2 7D01 ADD #1,R13 000004F4 2320 MOV.B R2,@R3 000004F6 3DA3 CMP/GE R10,R13 000004F8 8BD4 BF L532 000004FA 78FF ADD #-1,R8 000004FC 63E0 MOV.B @R14,R3 000004FE E213 MOV #19,R2 00000500 633C EXTU.B R3,R3 00000502 3238 SUB R3,R2 00000504 3827 CMP/GT R2,R8 00000506 89C6 BT L530 00000508 L529: Matris.c 261 //add lines at the bottom Matris.c 262 } Matris.c 263 } Matris.c 264 receiveline = 0; 00000508 2EB0 MOV.B R11,@R14 0000050A L518: Matris.c 265 } SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 17 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 266 } Matris.c 267 } 0000050A 7F08 ADD #8,R15 0000050C 4F26 LDS.L @R15+,PR 0000050E 68F6 MOV.L @R15+,R8 00000510 69F6 MOV.L @R15+,R9 00000512 6AF6 MOV.L @R15+,R10 00000514 6BF6 MOV.L @R15+,R11 00000516 6CF6 MOV.L @R15+,R12 00000518 6DF6 MOV.L @R15+,R13 0000051A 000B RTS 0000051C 6EF6 MOV.L @R15+,R14 Matris.c 268 Matris.c 269 void receive(void) 0000051E _receive: ; function: receive ; frame size=8 Matris.c 270 { Matris.c 271 unsigned char receiveadd = 0; 0000051E E300 MOV #0,R3 00000520 4F22 STS.L PR,@-R15 00000522 7FFC ADD #-4,R15 00000524 2F30 MOV.B R3,@R15 Matris.c 272 Matris.c 273 if(Serial_ReadOneByte(&receiveadd) != 0) 00000526 D334 MOV.L L688+26,R3 ; _Serial_ReadOneByte 00000528 430B JSR @R3 0000052A 64F3 MOV R15,R4 0000052C 2008 TST R0,R0 0000052E 8901 BT L537 Matris.c 274 { Matris.c 275 receiveadd = 0; 00000530 E300 MOV #0,R3 00000532 2F30 MOV.B R3,@R15 00000534 L537: Matris.c 276 } Matris.c 277 Matris.c 278 receiveline += (receiveadd > 20)?0:receiveadd; 00000534 D52D MOV.L L688+14,R5 ; _receiveline 00000536 E314 MOV #20,R3 00000538 64F0 MOV.B @R15,R4 0000053A 644C EXTU.B R4,R4 0000053C 3437 CMP/GT R3,R4 0000053E 8B01 BF L538 00000540 A001 BRA L539 00000542 E300 MOV #0,R3 00000544 L538: 00000544 6343 MOV R4,R3 00000546 L539: 00000546 6250 MOV.B @R5,R2 00000548 323C ADD R3,R2 0000054A 2520 MOV.B R2,@R5 Matris.c 279 } 0000054C 7F04 ADD #4,R15 0000054E 4F26 LDS.L @R15+,PR 00000550 000B RTS 00000552 0009 NOP Matris.c 280 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 18 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 281 void Connect() 00000554 _Connect: ; function: Connect ; frame size=24 00000554 2FE6 MOV.L R14,@-R15 00000556 2FD6 MOV.L R13,@-R15 00000558 4F22 STS.L PR,@-R15 0000055A 7FF4 ADD #-12,R15 Matris.c 282 { Matris.c 283 unsigned char connstart = 111; Matris.c 284 unsigned char answer; Matris.c 285 char open_mode[6]; Matris.c 286 Matris.c 287 PopUpWin(1); 0000055C D327 MOV.L L688+30,R3 ; _PopUpWin 0000055E 430B JSR @R3 00000560 E401 MOV #1,R4 Matris.c 288 locate( 5 , 4); 00000562 E504 MOV #4,R5 00000564 D226 MOV.L L688+34,R2 ; _locate 00000566 420B JSR @R2 00000568 E405 MOV #5,R4 Matris.c 289 Print("Connecting..."); 0000056A D426 MOV.L L688+38,R4 ; L395 0000056C D326 MOV.L L688+42,R3 ; _Print 0000056E 430B JSR @R3 00000570 0009 NOP Matris.c 290 PutDisp_DD(); 00000572 D226 MOV.L L688+46,R2 ; _PutDisp_DD 00000574 420B JSR @R2 00000576 0009 NOP Matris.c 291 Matris.c 292 open_mode[ 0 ] = 0; // always 0 Matris.c 293 open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9= +115200 baud Matris.c 294 open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even Matris.c 295 open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit Matris.c 296 open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two Matris.c 297 open_mode[ 5 ] = 0; // always 0 Matris.c 298 Matris.c 299 Serial_Open( &open_mode ); 00000578 D325 MOV.L L688+50,R3 ; _Serial_Open 0000057A E400 MOV #0,R4 0000057C 6043 MOV R4,R0 0000057E 80F4 MOV.B R0,@(4,R15) 00000580 E009 MOV #9,R0 00000582 80F5 MOV.B R0,@(5,R15) 00000584 E002 MOV #2,R0 00000586 80F6 MOV.B R0,@(6,R15) 00000588 6043 MOV R4,R0 0000058A 80F7 MOV.B R0,@(7,R15) 0000058C 6043 MOV R4,R0 0000058E 80F8 MOV.B R0,@(8,R15) 00000590 6043 MOV R4,R0 00000592 64F3 MOV R15,R4 00000594 80F9 MOV.B R0,@(9,R15) 00000596 430B JSR @R3 00000598 7404 ADD #4,R4 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 19 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 0000059A DD17 MOV.L L688+26,R13; _Serial_ReadOneByte 0000059C DE14 MOV.L L688+18,R14; _Serial_BufferedTransmitOneByte Matris.c 300 Matris.c 301 do 0000059E L540: Matris.c 302 { Matris.c 303 Serial_BufferedTransmitOneByte(connstart); 0000059E 4E0B JSR @R14 000005A0 E46F MOV #111,R4 Matris.c 304 Serial_ReadOneByte(&answer); 000005A2 4D0B JSR @R13 000005A4 64F3 MOV R15,R4 Matris.c 305 }while(answer != connstart && !KeyDown(47)); 000005A6 60F0 MOV.B @R15,R0 000005A8 600C EXTU.B R0,R0 000005AA 886F CMP/EQ #111,R0 000005AC 8904 BT L541 000005AE D219 MOV.L L688+54,R2 ; _KeyDown 000005B0 420B JSR @R2 000005B2 E42F MOV #47,R4 000005B4 2008 TST R0,R0 000005B6 89F2 BT L540 000005B8 L541: Matris.c 306 Matris.c 307 if(!KeyDown(47))connected = True; 000005B8 D216 MOV.L L688+54,R2 ; _KeyDown 000005BA 420B JSR @R2 000005BC E42F MOV #47,R4 000005BE 2008 TST R0,R0 000005C0 8B02 BF L542 000005C2 E201 MOV #1,R2 000005C4 D307 MOV.L L688+6,R3 ; _connected 000005C6 2320 MOV.B R2,@R3 000005C8 L542: Matris.c 308 Matris.c 309 if(connected != True) 000005C8 D106 MOV.L L688+6,R1 ; _connected 000005CA 6010 MOV.B @R1,R0 000005CC 8801 CMP/EQ #1,R0 000005CE 8901 BT L543 Matris.c 310 { Matris.c 311 Disconnect(); 000005D0 BDC3 BSR _Disconnect 000005D2 0009 NOP 000005D4 L543: Matris.c 312 } Matris.c 313 } 000005D4 7F0C ADD #12,R15 000005D6 4F26 LDS.L @R15+,PR 000005D8 6DF6 MOV.L @R15+,R13 000005DA 000B RTS 000005DC 6EF6 MOV.L @R15+,R14 000005DE L688: 000005DE 0000 .DATA.W 0 000005E0 <00000000> .DATA.L __modlu 000005E4 <00000000> .DATA.L _connected 000005E8 <00000000> .DATA.L _sendline SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 20 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000005EC <00000000> .DATA.L _receiveline 000005F0 <00000000> .DATA.L _Serial_BufferedTransmitOneByte 000005F4 <00000000> .DATA.L _globalmap 000005F8 <00000000> .DATA.L _Serial_ReadOneByte 000005FC <00000000> .DATA.L _PopUpWin 00000600 <00000000> .DATA.L _locate 00000604 <00000000> .DATA.L L395 00000608 <00000000> .DATA.L _Print 0000060C <00000000> .DATA.L _PutDisp_DD 00000610 <00000000> .DATA.L _Serial_Open 00000614 <00000000> .DATA.L _KeyDown Matris.c 314 Matris.c 315 void SwapPieces() 00000618 _SwapPieces: ; function: SwapPieces ; frame size=8 ; used runtime library name: ; __modlu 00000618 4F22 STS.L PR,@-R15 0000061A 7FFC ADD #-4,R15 Matris.c 316 { Matris.c 317 char save; Matris.c 318 if(canswap == True) 0000061C D33F MOV.L L690+2,R3 ; _canswap 0000061E 6030 MOV.B @R3,R0 00000620 8801 CMP/EQ #1,R0 00000622 8B20 BF L544 Matris.c 319 { Matris.c 320 save = block; 00000624 D53E MOV.L L690+6,R5 ; _block 00000626 6150 MOV.B @R5,R1 00000628 D23E MOV.L L690+10,R2 ; _hold 0000062A 2F10 MOV.B R1,@R15 0000062C 6420 MOV.B @R2,R4 0000062E 614E EXTS.B R4,R1 00000630 2118 TST R1,R1 00000632 8B0B BF L545 Matris.c 321 if(hold == 0) Matris.c 322 { Matris.c 323 block = nextblock; 00000634 D03C MOV.L L690+14,R0 ; _nextblock 00000636 6100 MOV.B @R0,R1 Matris.c 324 nextblock = (kiss() % 7) + 1; 00000638 BD0B BSR _kiss 0000063A 2510 MOV.B R1,@R5 0000063C D23B MOV.L L690+18,R2 ; __modlu 0000063E 6103 MOV R0,R1 00000640 420B JSR @R2 00000642 E007 MOV #7,R0 00000644 D338 MOV.L L690+14,R3 ; _nextblock 00000646 7001 ADD #1,R0 00000648 A001 BRA L546 0000064A 2300 MOV.B R0,@R3 0000064C L545: Matris.c 325 } Matris.c 326 else Matris.c 327 { Matris.c 328 block = hold; SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 21 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 0000064C 2540 MOV.B R4,@R5 0000064E L546: Matris.c 329 } Matris.c 330 hold = save; Matris.c 331 xpos = 7; 0000064E E107 MOV #7,R1 00000650 63F0 MOV.B @R15,R3 Matris.c 332 ypos = 3; 00000652 E003 MOV #3,R0 00000654 D233 MOV.L L690+10,R2 ; _hold 00000656 2230 MOV.B R3,@R2 00000658 D335 MOV.L L690+22,R3 ; _xpos Matris.c 333 dir = 0; 0000065A E200 MOV #0,R2 0000065C 2312 MOV.L R1,@R3 0000065E D135 MOV.L L690+26,R1 ; _ypos 00000660 2102 MOV.L R0,@R1 00000662 D035 MOV.L L690+30,R0 ; _dir 00000664 2020 MOV.B R2,@R0 00000666 L544: Matris.c 334 } Matris.c 335 canswap = False; 00000666 E300 MOV #0,R3 00000668 D12C MOV.L L690+2,R1 ; _canswap 0000066A 2130 MOV.B R3,@R1 Matris.c 336 } 0000066C 7F04 ADD #4,R15 0000066E 4F26 LDS.L @R15+,PR 00000670 000B RTS 00000672 0009 NOP Matris.c 337 Matris.c 338 void Rotate() 00000674 _Rotate: ; function: Rotate ; frame size=8 00000674 2FE6 MOV.L R14,@-R15 00000676 4F22 STS.L PR,@-R15 Matris.c 339 { Matris.c 340 if(++dir == 4) 00000678 DE2F MOV.L L690+30,R14; _dir 0000067A 60E0 MOV.B @R14,R0 0000067C 7001 ADD #1,R0 0000067E 2E00 MOV.B R0,@R14 00000680 600E EXTS.B R0,R0 00000682 8804 CMP/EQ #4,R0 00000684 8B01 BF L547 Matris.c 341 { Matris.c 342 dir = 0; 00000686 E200 MOV #0,R2 00000688 2E20 MOV.B R2,@R14 0000068A L547: Matris.c 343 } Matris.c 344 Matris.c 345 if(DrawSprite() == False) 0000068A D32C MOV.L L690+34,R3 ; _DrawSprite 0000068C 430B JSR @R3 0000068E 0009 NOP 00000690 2008 TST R0,R0 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 22 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000692 8B07 BF L548 Matris.c 346 { Matris.c 347 dir = (dir == 0)? 3 : dir - 1; 00000694 64E0 MOV.B @R14,R4 00000696 2448 TST R4,R4 00000698 8B01 BF L549 0000069A A002 BRA L550 0000069C E303 MOV #3,R3 0000069E L549: 0000069E 6343 MOV R4,R3 000006A0 73FF ADD #-1,R3 000006A2 L550: 000006A2 2E30 MOV.B R3,@R14 000006A4 L548: Matris.c 348 } Matris.c 349 } 000006A4 4F26 LDS.L @R15+,PR 000006A6 000B RTS 000006A8 6EF6 MOV.L @R15+,R14 Matris.c 350 Matris.c 351 void MoveBlock() 000006AA _MoveBlock: ; function: MoveBlock ; frame size=12 000006AA 2FE6 MOV.L R14,@-R15 000006AC 2FD6 MOV.L R13,@-R15 000006AE 4F22 STS.L PR,@-R15 Matris.c 352 { Matris.c 353 switch (nextdir) 000006B0 D41F MOV.L L690+22,R4 ; _xpos 000006B2 DE23 MOV.L L690+38,R14; _nextdir 000006B4 60E0 MOV.B @R14,R0 000006B6 88FF CMP/EQ #-1,R0 000006B8 8D08 BT/S L494 000006BA ED00 MOV #0,R13 000006BC 8801 CMP/EQ #1,R0 000006BE 890D BT L495 000006C0 8814 CMP/EQ #20,R0 000006C2 8913 BT L496 000006C4 880A CMP/EQ #10,R0 000006C6 8915 BT L497 000006C8 A017 BRA L551 000006CA 0009 NOP 000006CC L494: ; case label Matris.c 354 { Matris.c 355 case Left : if(left == True) {xpos ++;} nextdir = Down;break; 000006CC D31D MOV.L L690+42,R3 ; _left 000006CE 6030 MOV.B @R3,R0 000006D0 8801 CMP/EQ #1,R0 000006D2 8B11 BF L676 000006D4 6142 MOV.L @R4,R1 000006D6 7101 ADD #1,R1 000006D8 A00E BRA L676 000006DA 2412 MOV.L R1,@R4 000006DC L495: ; case label Matris.c 356 case Right: if(right == True){xpos --;}nextdir = Down;break; 000006DC D31A MOV.L L690+46,R3 ; _right 000006DE 6030 MOV.B @R3,R0 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 23 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000006E0 8801 CMP/EQ #1,R0 000006E2 8B09 BF L676 000006E4 6142 MOV.L @R4,R1 000006E6 71FF ADD #-1,R1 000006E8 A006 BRA L676 000006EA 2412 MOV.L R1,@R4 000006EC L496: ; case label Matris.c 357 case Rot : Rotate();nextdir = Down;break; 000006EC BFC2 BSR _Rotate 000006EE 0009 NOP 000006F0 A002 BRA L676 000006F2 0009 NOP 000006F4 L497: ; case label Matris.c 358 case Swap: SwapPieces();nextdir = Down;break; 000006F4 BF90 BSR _SwapPieces 000006F6 0009 NOP 000006F8 L676: 000006F8 2ED0 MOV.B R13,@R14 000006FA L551: Matris.c 359 } Matris.c 360 Matris.c 361 if(nextdir == Fast && (int)slowyposdown == slowyposdown) 000006FA 60E0 MOV.B @R14,R0 000006FC 881E CMP/EQ #30,R0 000006FE 8B08 BF L554 00000700 D312 MOV.L L690+50,R3 ; _slowyposdown 00000702 6230 MOV.B @R3,R2 00000704 6130 MOV.B @R3,R1 00000706 3210 CMP/EQ R1,R2 00000708 8B03 BF L554 Matris.c 362 { Matris.c 363 points += 1; 0000070A D411 MOV.L L690+54,R4 ; _points 0000070C 6342 MOV.L @R4,R3 0000070E 7301 ADD #1,R3 00000710 2432 MOV.L R3,@R4 00000712 L554: Matris.c 364 } Matris.c 365 } 00000712 4F26 LDS.L @R15+,PR 00000714 6DF6 MOV.L @R15+,R13 00000716 000B RTS 00000718 6EF6 MOV.L @R15+,R14 0000071A L690: 0000071A 0000 .DATA.W 0 0000071C <00000000> .DATA.L _canswap 00000720 <00000000> .DATA.L _block 00000724 <00000000> .DATA.L _hold 00000728 <00000000> .DATA.L _nextblock 0000072C <00000000> .DATA.L __modlu 00000730 <00000000> .DATA.L _xpos 00000734 <00000000> .DATA.L _ypos 00000738 <00000000> .DATA.L _dir 0000073C <00000000> .DATA.L _DrawSprite 00000740 <00000000> .DATA.L _nextdir 00000744 <00000000> .DATA.L _left 00000748 <00000000> .DATA.L _right SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 24 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 0000074C <00000000> .DATA.L _slowyposdown 00000750 <00000000> .DATA.L _points Matris.c 366 Matris.c 367 void CheckPoints() 00000754 _CheckPoints: ; function: CheckPoints ; frame size=80 ; used runtime library name: ; __divls 00000754 2FE6 MOV.L R14,@-R15 00000756 2FD6 MOV.L R13,@-R15 00000758 2FC6 MOV.L R12,@-R15 0000075A 2FB6 MOV.L R11,@-R15 0000075C 2FA6 MOV.L R10,@-R15 Matris.c 368 { Matris.c 369 char typecount = 0; 0000075E EA00 MOV #0,R10 00000760 DC88 MOV.L L691,R12 ; _globalmap 00000762 60A3 MOV R10,R0 Matris.c 370 char oldlevel; Matris.c 371 int xcount, ycount; Matris.c 372 int ycount2, ycount3; Matris.c 373 char fulllinecount = 0; Matris.c 374 Matris.c 375 for(xcount = 0; xcount < 10; xcount ++) 00000764 D688 MOV.L L691+4,R6 ; _exit 00000766 65C3 MOV R12,R5 00000768 2F96 MOV.L R9,@-R15 0000076A 64C3 MOV R12,R4 0000076C 2F86 MOV.L R8,@-R15 0000076E 750A ADD #10,R5 00000770 4F22 STS.L PR,@-R15 00000772 3452 CMP/HS R5,R4 00000774 4F12 STS.L MACL,@-R15 00000776 7FF4 ADD #-12,R15 00000778 8D08 BT/S L555 0000077A 80F8 MOV.B R0,@(8,R15) 0000077C L556: Matris.c 376 { Matris.c 377 if(globalmap[0][xcount] != 0) 0000077C 6240 MOV.B @R4,R2 0000077E 2228 TST R2,R2 00000780 8D02 BT/S L557 00000782 7401 ADD #1,R4 Matris.c 378 { Matris.c 379 exit = True; 00000784 E101 MOV #1,R1 00000786 2610 MOV.B R1,@R6 00000788 L557: 00000788 3452 CMP/HS R5,R4 0000078A 8BF7 BF L556 0000078C L555: Matris.c 380 //game over Matris.c 381 } Matris.c 382 } Matris.c 383 Matris.c 384 for(ycount = 0; ycount < 20; ycount ++) 0000078C 1FA1 MOV.L R10,@(4,R15) SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 25 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 0000078E E90A MOV #10,R9 00000790 DB7E MOV.L L691+8,R11 ; _pScreen 00000792 L558: Matris.c 385 { Matris.c 386 fulllinecount = 0; 00000792 67A3 MOV R10,R7 00000794 54F1 MOV.L @(4,R15),R4 00000796 66C3 MOV R12,R6 Matris.c 387 for(xcount = 0; xcount < 10; xcount ++) 00000798 65A3 MOV R10,R5 0000079A 6343 MOV R4,R3 0000079C 4408 SHLL2 R4 0000079E 343C ADD R3,R4 000007A0 4400 SHLL R4 000007A2 34CC ADD R12,R4 000007A4 L560: Matris.c 388 { Matris.c 389 if(globalmap[ycount][xcount] != 0) 000007A4 6340 MOV.B @R4,R3 000007A6 2338 TST R3,R3 000007A8 8904 BT L559 Matris.c 390 { Matris.c 391 fulllinecount ++; 000007AA 7701 ADD #1,R7 000007AC 7501 ADD #1,R5 000007AE 3593 CMP/GE R9,R5 000007B0 8FF8 BF/S L560 000007B2 7401 ADD #1,R4 000007B4 L559: Matris.c 392 } Matris.c 393 else Matris.c 394 { Matris.c 395 break; Matris.c 396 } Matris.c 397 } Matris.c 398 Matris.c 399 if(fulllinecount == 10) 000007B4 607E EXTS.B R7,R0 000007B6 880A CMP/EQ #10,R0 000007B8 8901 BT L692 000007BA A102 BRA L564 000007BC 0009 NOP 000007BE L692: Matris.c 400 { Matris.c 401 typecount ++; 000007BE 84F8 MOV.B @(8,R15),R0 000007C0 7001 ADD #1,R0 000007C2 80F8 MOV.B R0,@(8,R15) Matris.c 402 Matris.c 403 //1: single, 2: double, 3: triple line, 4: tetris (maximum) Matris.c 404 Matris.c 405 for(ycount2 = ycount; ycount2 > 0; ycount2 --) 000007C4 55F1 MOV.L @(4,R15),R5 000007C6 6D53 MOV R5,R13 000007C8 6353 MOV R5,R3 000007CA 4D08 SHLL2 R13 000007CC 3D3C ADD R3,R13 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 26 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000007CE 4D00 SHLL R13 000007D0 3D6C ADD R6,R13 000007D2 6E53 MOV R5,R14 000007D4 7EFF ADD #-1,R14 000007D6 63E3 MOV R14,R3 000007D8 4E08 SHLL2 R14 000007DA 3E3C ADD R3,R14 000007DC 4E00 SHLL R14 000007DE 4515 CMP/PL R5 000007E0 8F11 BF/S L565 000007E2 3E6C ADD R6,R14 000007E4 L566: Matris.c 406 { Matris.c 407 for(xcount = 0; xcount < 10; xcount ++) 000007E4 66A3 MOV R10,R6 000007E6 67E3 MOV R14,R7 000007E8 64D3 MOV R13,R4 000007EA L568: 000007EA 7602 ADD #2,R6 Matris.c 408 { Matris.c 409 globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount]; 000007EC 6374 MOV.B @R7+,R3 000007EE 3693 CMP/GE R9,R6 000007F0 2430 MOV.B R3,@R4 000007F2 7401 ADD #1,R4 000007F4 6374 MOV.B @R7+,R3 000007F6 2430 MOV.B R3,@R4 000007F8 8FF7 BF/S L568 000007FA 7401 ADD #1,R4 000007FC 75FF ADD #-1,R5 000007FE 7DF6 ADD #-10,R13 00000800 4515 CMP/PL R5 00000802 8DEF BT/S L566 00000804 7EF6 ADD #-10,R14 00000806 L565: Matris.c 410 //move averything Matris.c 411 } Matris.c 412 } Matris.c 413 Matris.c 414 line(pScreen, 0 , 0 , 81 , 0, 1); 00000806 E201 MOV #1,R2 00000808 D361 MOV.L L691+12,R3 ; _line 0000080A E751 MOV #81,R7 0000080C 2F26 MOV.L R2,@-R15 0000080E E600 MOV #0,R6 00000810 2FA6 MOV.L R10,@-R15 00000812 6563 MOV R6,R5 00000814 430B JSR @R3 00000816 64B2 MOV.L @R11,R4 Matris.c 415 line(pScreen, 0 , 0 , 0 , 41, 1); 00000818 D15D MOV.L L691+12,R1 ; _line 0000081A E201 MOV #1,R2 0000081C 2F26 MOV.L R2,@-R15 0000081E E329 MOV #41,R3 00000820 2F36 MOV.L R3,@-R15 00000822 E700 MOV #0,R7 00000824 6673 MOV R7,R6 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 27 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000826 6573 MOV R7,R5 00000828 410B JSR @R1 0000082A 64B2 MOV.L @R11,R4 Matris.c 416 line(pScreen, 81 , 0 , 81 , 41, 1); 0000082C D158 MOV.L L691+12,R1 ; _line 0000082E E301 MOV #1,R3 00000830 2F36 MOV.L R3,@-R15 00000832 E229 MOV #41,R2 00000834 2F26 MOV.L R2,@-R15 00000836 E751 MOV #81,R7 00000838 E600 MOV #0,R6 0000083A 6573 MOV R7,R5 0000083C 410B JSR @R1 0000083E 64B2 MOV.L @R11,R4 Matris.c 417 line(pScreen, 81 , 41 , 0 , 41, 1); 00000840 D153 MOV.L L691+12,R1 ; _line 00000842 E301 MOV #1,R3 00000844 2F36 MOV.L R3,@-R15 00000846 E229 MOV #41,R2 00000848 2F26 MOV.L R2,@-R15 0000084A E700 MOV #0,R7 0000084C 6623 MOV R2,R6 0000084E E551 MOV #81,R5 00000850 410B JSR @R1 00000852 64B2 MOV.L @R11,R4 00000854 7F20 ADD #32,R15 Matris.c 418 Matris.c 419 for(ycount3 = 0; ycount3 < 20; ycount3 ++) 00000856 68A3 MOV R10,R8 00000858 L569: Matris.c 420 { Matris.c 421 for(xcount = 0; xcount < 10; xcount ++) 00000858 6EA3 MOV R10,R14 0000085A 6D83 MOV R8,R13 0000085C 6383 MOV R8,R3 0000085E 4D08 SHLL2 R13 00000860 3D3C ADD R3,R13 00000862 4D00 SHLL R13 00000864 L571: Matris.c 422 { Matris.c 423 if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] ! += 0) 00000864 60D3 MOV R13,R0 00000866 30CC ADD R12,R0 00000868 03EC MOV.B @(R0,R14),R3 0000086A 2338 TST R3,R3 0000086C 8B05 BF L573 0000086E D149 MOV.L L691+16,R1 ; _changemap 00000870 31DC ADD R13,R1 00000872 31EC ADD R14,R1 00000874 6310 MOV.B @R1,R3 00000876 2338 TST R3,R3 00000878 8911 BT L572 0000087A L573: Matris.c 424 { Matris.c 425 fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcou +nt] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1); SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 28 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 0000087A 60D3 MOV R13,R0 0000087C 30CC ADD R12,R0 0000087E 07EC MOV.B @(R0,R14),R7 00000880 2778 TST R7,R7 00000882 8D02 BT/S L574 00000884 2F72 MOV.L R7,@R15 00000886 A004 BRA L677 00000888 67F2 MOV.L @R15,R7 0000088A L574: 0000088A D742 MOV.L L691+16,R7 ; _changemap 0000088C 37DC ADD R13,R7 0000088E 37EC ADD R14,R7 00000890 6770 MOV.B @R7,R7 00000892 L677: 00000892 77FF ADD #-1,R7 00000894 D240 MOV.L L691+20,R2 ; _fillbox 00000896 66E3 MOV R14,R6 00000898 6583 MOV R8,R5 0000089A 420B JSR @R2 0000089C 64B2 MOV.L @R11,R4 0000089E L572: 0000089E 7E01 ADD #1,R14 000008A0 60D3 MOV R13,R0 000008A2 30CC ADD R12,R0 000008A4 03EC MOV.B @(R0,R14),R3 000008A6 2338 TST R3,R3 000008A8 8B05 BF L577 000008AA D13A MOV.L L691+16,R1 ; _changemap 000008AC 31DC ADD R13,R1 000008AE 31EC ADD R14,R1 000008B0 6310 MOV.B @R1,R3 000008B2 2338 TST R3,R3 000008B4 8911 BT L576 000008B6 L577: 000008B6 60D3 MOV R13,R0 000008B8 30CC ADD R12,R0 000008BA 07EC MOV.B @(R0,R14),R7 000008BC 2778 TST R7,R7 000008BE 8D02 BT/S L578 000008C0 2F72 MOV.L R7,@R15 000008C2 A004 BRA L678 000008C4 67F2 MOV.L @R15,R7 000008C6 L578: 000008C6 D733 MOV.L L691+16,R7 ; _changemap 000008C8 37DC ADD R13,R7 000008CA 37EC ADD R14,R7 000008CC 6770 MOV.B @R7,R7 000008CE L678: 000008CE 77FF ADD #-1,R7 000008D0 D231 MOV.L L691+20,R2 ; _fillbox 000008D2 66E3 MOV R14,R6 000008D4 6583 MOV R8,R5 000008D6 420B JSR @R2 000008D8 64B2 MOV.L @R11,R4 000008DA L576: 000008DA 7E01 ADD #1,R14 000008DC 60D3 MOV R13,R0 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 29 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000008DE 30CC ADD R12,R0 000008E0 03EC MOV.B @(R0,R14),R3 000008E2 2338 TST R3,R3 000008E4 8B05 BF L581 000008E6 D12B MOV.L L691+16,R1 ; _changemap 000008E8 31DC ADD R13,R1 000008EA 31EC ADD R14,R1 000008EC 6310 MOV.B @R1,R3 000008EE 2338 TST R3,R3 000008F0 8911 BT L580 000008F2 L581: 000008F2 60D3 MOV R13,R0 000008F4 30CC ADD R12,R0 000008F6 07EC MOV.B @(R0,R14),R7 000008F8 2778 TST R7,R7 000008FA 8D02 BT/S L582 000008FC 2F72 MOV.L R7,@R15 000008FE A004 BRA L679 00000900 67F2 MOV.L @R15,R7 00000902 L582: 00000902 D724 MOV.L L691+16,R7 ; _changemap 00000904 37DC ADD R13,R7 00000906 37EC ADD R14,R7 00000908 6770 MOV.B @R7,R7 0000090A L679: 0000090A 77FF ADD #-1,R7 0000090C D222 MOV.L L691+20,R2 ; _fillbox 0000090E 66E3 MOV R14,R6 00000910 6583 MOV R8,R5 00000912 420B JSR @R2 00000914 64B2 MOV.L @R11,R4 00000916 L580: 00000916 7E01 ADD #1,R14 00000918 60D3 MOV R13,R0 0000091A 30CC ADD R12,R0 0000091C 03EC MOV.B @(R0,R14),R3 0000091E 2338 TST R3,R3 00000920 8B05 BF L585 00000922 D11C MOV.L L691+16,R1 ; _changemap 00000924 31DC ADD R13,R1 00000926 31EC ADD R14,R1 00000928 6310 MOV.B @R1,R3 0000092A 2338 TST R3,R3 0000092C 8911 BT L584 0000092E L585: 0000092E 60D3 MOV R13,R0 00000930 30CC ADD R12,R0 00000932 07EC MOV.B @(R0,R14),R7 00000934 2778 TST R7,R7 00000936 8D02 BT/S L586 00000938 2F72 MOV.L R7,@R15 0000093A A004 BRA L680 0000093C 67F2 MOV.L @R15,R7 0000093E L586: 0000093E D715 MOV.L L691+16,R7 ; _changemap 00000940 37DC ADD R13,R7 00000942 37EC ADD R14,R7 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 30 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000944 6770 MOV.B @R7,R7 00000946 L680: 00000946 77FF ADD #-1,R7 00000948 D213 MOV.L L691+20,R2 ; _fillbox 0000094A 66E3 MOV R14,R6 0000094C 6583 MOV R8,R5 0000094E 420B JSR @R2 00000950 64B2 MOV.L @R11,R4 00000952 L584: 00000952 7E01 ADD #1,R14 00000954 E306 MOV #6,R3 00000956 3E33 CMP/GE R3,R14 00000958 8B84 BF L571 0000095A 3E93 CMP/GE R9,R14 0000095C 892B BT L588 0000095E L589: 0000095E 60D3 MOV R13,R0 00000960 30CC ADD R12,R0 00000962 03EC MOV.B @(R0,R14),R3 00000964 2338 TST R3,R3 00000966 8B05 BF L591 00000968 D10A MOV.L L691+16,R1 ; _changemap 0000096A 31DC ADD R13,R1 0000096C 31EC ADD R14,R1 0000096E 6310 MOV.B @R1,R3 00000970 2338 TST R3,R3 00000972 891D BT L590 00000974 L591: 00000974 60D3 MOV R13,R0 00000976 30CC ADD R12,R0 00000978 07EC MOV.B @(R0,R14),R7 0000097A 2778 TST R7,R7 0000097C 8D0E BT/S L592 0000097E 2F72 MOV.L R7,@R15 00000980 A010 BRA L681 00000982 67F2 MOV.L @R15,R7 00000984 L691: 00000984 <00000000> .DATA.L _globalmap 00000988 <00000000> .DATA.L _exit 0000098C <00000000> .DATA.L _pScreen 00000990 <00000000> .DATA.L _line 00000994 <00000000> .DATA.L _changemap 00000998 <00000000> .DATA.L _fillbox 0000099C L592: 0000099C D73C MOV.L L693+8,R7 ; _changemap 0000099E 37DC ADD R13,R7 000009A0 37EC ADD R14,R7 000009A2 6770 MOV.B @R7,R7 000009A4 L681: 000009A4 D23B MOV.L L693+12,R2 ; _fillbox 000009A6 77FF ADD #-1,R7 000009A8 66E3 MOV R14,R6 000009AA 6583 MOV R8,R5 000009AC 420B JSR @R2 000009AE 64B2 MOV.L @R11,R4 000009B0 L590: 000009B0 7E01 ADD #1,R14 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 31 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 000009B2 3E93 CMP/GE R9,R14 000009B4 8BD3 BF L589 000009B6 L588: 000009B6 7801 ADD #1,R8 000009B8 E214 MOV #20,R2 000009BA 3823 CMP/GE R2,R8 000009BC 8901 BT L694 000009BE AF4B BRA L569 000009C0 0009 NOP 000009C2 L694: 000009C2 L564: 000009C2 E314 MOV #20,R3 000009C4 51F1 MOV.L @(4,R15),R1 000009C6 7101 ADD #1,R1 000009C8 3133 CMP/GE R3,R1 000009CA 8D02 BT/S L695 000009CC 1F11 MOV.L R1,@(4,R15) 000009CE AEE0 BRA L558 000009D0 0009 NOP 000009D2 L695: 000009D2 84F8 MOV.B @(8,R15),R0 000009D4 6E03 MOV R0,R14 000009D6 4E15 CMP/PL R14 000009D8 8B4B BF L594 Matris.c 426 } Matris.c 427 } Matris.c 428 } Matris.c 429 } Matris.c 430 } Matris.c 431 if(typecount > 0) Matris.c 432 { Matris.c 433 int blink; Matris.c 434 Matris.c 435 points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount = += 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0; 000009DA 60E3 MOV R14,R0 000009DC D42E MOV.L L693+16,R4 ; _points 000009DE 8801 CMP/EQ #1,R0 000009E0 8B08 BF L595 000009E2 D32E MOV.L L693+20,R3 ; _level 000009E4 6230 MOV.B @R3,R2 000009E6 7201 ADD #1,R2 000009E8 6123 MOV R2,R1 000009EA 4208 SHLL2 R2 000009EC 321C ADD R1,R2 000009EE 4208 SHLL2 R2 000009F0 A01B BRA L599 000009F2 4200 SHLL R2 000009F4 L595: 000009F4 8802 CMP/EQ #2,R0 000009F6 8B04 BF L596 000009F8 D328 MOV.L L693+20,R3 ; _level 000009FA E164 MOV #100,R1 000009FC 6230 MOV.B @R3,R2 000009FE A011 BRA L683 00000A00 221F MULS R1,R2 00000A02 L596: SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 32 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000A02 60E3 MOV R14,R0 00000A04 8803 CMP/EQ #3,R0 00000A06 8B06 BF L597 00000A08 D324 MOV.L L693+20,R3 ; _level 00000A0A 6230 MOV.B @R3,R2 00000A0C 913C MOV.W L693,R1 ; H'012C 00000A0E 7201 ADD #1,R2 00000A10 0217 MUL.L R1,R2 00000A12 A007 BRA L683 00000A14 0009 NOP 00000A16 L597: 00000A16 8804 CMP/EQ #4,R0 00000A18 8B06 BF L598 00000A1A D320 MOV.L L693+20,R3 ; _level 00000A1C 9135 MOV.W L693+2,R1 ; H'04B0 00000A1E 6230 MOV.B @R3,R2 00000A20 7201 ADD #1,R2 00000A22 0217 MUL.L R1,R2 00000A24 L683: 00000A24 A001 BRA L599 00000A26 021A STS MACL,R2 00000A28 L598: 00000A28 E200 MOV #0,R2 00000A2A L599: Matris.c 436 //increment points Matris.c 437 Matris.c 438 sendline = (typecount == 4)? 4 : typecount - 1; 00000A2A 60E3 MOV R14,R0 00000A2C 6342 MOV.L @R4,R3 00000A2E 8804 CMP/EQ #4,R0 00000A30 332C ADD R2,R3 00000A32 2432 MOV.L R3,@R4 00000A34 8B01 BF L603 00000A36 A002 BRA L604 00000A38 E204 MOV #4,R2 00000A3A L603: 00000A3A 62E3 MOV R14,R2 00000A3C 72FF ADD #-1,R2 00000A3E L604: 00000A3E D318 MOV.L L693+24,R3 ; _sendline Matris.c 439 //send a line, if not tetris send lines - 1 Matris.c 440 oldlevel = level; 00000A40 D416 MOV.L L693+20,R4 ; _level 00000A42 2320 MOV.B R2,@R3 00000A44 6540 MOV.B @R4,R5 Matris.c 441 level += typecount; 00000A46 84F8 MOV.B @(8,R15),R0 00000A48 6140 MOV.B @R4,R1 00000A4A 310C ADD R0,R1 00000A4C 2410 MOV.B R1,@R4 Matris.c 442 if((int)(level / 10) != (int)(oldlevel / 10) && level < 200) 00000A4E 6640 MOV.B @R4,R6 00000A50 D214 MOV.L L693+28,R2 ; __divls 00000A52 6163 MOV R6,R1 00000A54 420B JSR @R2 00000A56 6093 MOV R9,R0 00000A58 D212 MOV.L L693+28,R2 ; __divls SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 33 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000A5A 6303 MOV R0,R3 00000A5C 615E EXTS.B R5,R1 00000A5E 420B JSR @R2 00000A60 6093 MOV R9,R0 00000A62 3300 CMP/EQ R0,R3 00000A64 8905 BT L594 00000A66 9311 MOV.W L693+4,R3 ; H'00C8 00000A68 3633 CMP/GE R3,R6 00000A6A 8902 BT L594 Matris.c 443 { Matris.c 444 levelchanged = True; 00000A6C D20E MOV.L L693+32,R2 ; _levelchanged 00000A6E E101 MOV #1,R1 00000A70 2210 MOV.B R1,@R2 00000A72 L594: Matris.c 445 //level = round cleared lines / 10 Matris.c 446 } Matris.c 447 } Matris.c 448 Transfer(); 00000A72 7F0C ADD #12,R15 00000A74 4F16 LDS.L @R15+,MACL 00000A76 4F26 LDS.L @R15+,PR 00000A78 68F6 MOV.L @R15+,R8 00000A7A 69F6 MOV.L @R15+,R9 00000A7C 6AF6 MOV.L @R15+,R10 00000A7E 6BF6 MOV.L @R15+,R11 00000A80 6CF6 MOV.L @R15+,R12 00000A82 6DF6 MOV.L @R15+,R13 00000A84 AC98 BRA _Transfer 00000A86 6EF6 MOV.L @R15+,R14 00000A88 L693: 00000A88 012C .DATA.W H'012C 00000A8A 04B0 .DATA.W H'04B0 00000A8C 00C8 .DATA.W H'00C8 00000A8E 0000 .DATA.W 0 00000A90 <00000000> .DATA.L _changemap 00000A94 <00000000> .DATA.L _fillbox 00000A98 <00000000> .DATA.L _points 00000A9C <00000000> .DATA.L _level 00000AA0 <00000000> .DATA.L _sendline 00000AA4 <00000000> .DATA.L __divls 00000AA8 <00000000> .DATA.L _levelchanged Matris.c 449 } Matris.c 450 Matris.c 451 void ReadKey() 00000AAC _ReadKey: ; function: ReadKey ; frame size=12 00000AAC 2FE6 MOV.L R14,@-R15 Matris.c 452 { Matris.c 453 nextdir =Down; 00000AAE E300 MOV #0,R3 00000AB0 2FD6 MOV.L R13,@-R15 00000AB2 4F22 STS.L PR,@-R15 00000AB4 DD32 MOV.L L696,R13 ; _nextdir 00000AB6 2D30 MOV.B R3,@R13 Matris.c 454 Matris.c 455 if(KeyDown(38)) nextdir = Rot; SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 34 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000AB8 DE32 MOV.L L696+4,R14 ; _KeyDown 00000ABA 4E0B JSR @R14 00000ABC E426 MOV #38,R4 00000ABE 2008 TST R0,R0 00000AC0 8D02 BT/S L606 Matris.c 456 if(KeyDown(37)) nextdir = Left ; 00000AC2 E425 MOV #37,R4 00000AC4 E314 MOV #20,R3 00000AC6 2D30 MOV.B R3,@R13 00000AC8 L606: 00000AC8 4E0B JSR @R14 00000ACA 0009 NOP 00000ACC 2008 TST R0,R0 00000ACE 8D02 BT/S L607 Matris.c 457 if(KeyDown(28)) nextdir = Right; 00000AD0 E41C MOV #28,R4 00000AD2 E3FF MOV #-1,R3 00000AD4 2D30 MOV.B R3,@R13 00000AD6 L607: 00000AD6 4E0B JSR @R14 00000AD8 0009 NOP 00000ADA 2008 TST R0,R0 00000ADC 8D02 BT/S L608 Matris.c 458 if(KeyDown(27)) nextdir = Fast; 00000ADE E41B MOV #27,R4 00000AE0 E301 MOV #1,R3 00000AE2 2D30 MOV.B R3,@R13 00000AE4 L608: 00000AE4 4E0B JSR @R14 00000AE6 0009 NOP 00000AE8 2008 TST R0,R0 00000AEA 8D02 BT/S L609 Matris.c 459 if(KeyDown(47)) exit = True; 00000AEC E42F MOV #47,R4 00000AEE E31E MOV #30,R3 00000AF0 2D30 MOV.B R3,@R13 00000AF2 L609: 00000AF2 4E0B JSR @R14 00000AF4 0009 NOP 00000AF6 2008 TST R0,R0 00000AF8 8D03 BT/S L610 Matris.c 460 if(KeyDown(26)) nextdir = Swap; 00000AFA E41A MOV #26,R4 00000AFC D222 MOV.L L696+8,R2 ; _exit 00000AFE E301 MOV #1,R3 00000B00 2230 MOV.B R3,@R2 00000B02 L610: 00000B02 4E0B JSR @R14 00000B04 0009 NOP 00000B06 2008 TST R0,R0 00000B08 8D02 BT/S L611 Matris.c 461 if(KeyDown(31)) TeacherMode(); 00000B0A E41F MOV #31,R4 00000B0C E20A MOV #10,R2 00000B0E 2D20 MOV.B R2,@R13 00000B10 L611: 00000B10 4E0B JSR @R14 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 35 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000B12 0009 NOP 00000B14 2008 TST R0,R0 00000B16 8901 BT L612 00000B18 BB28 BSR _TeacherMode 00000B1A 0009 NOP 00000B1C L612: Matris.c 462 if(KeyDown(39)) {pause = (pause == True)? False : True; while(KeyDown(39));} 00000B1C 4E0B JSR @R14 00000B1E E427 MOV #39,R4 00000B20 2008 TST R0,R0 00000B22 890B BT L613 00000B24 D419 MOV.L L696+12,R4 ; _pause 00000B26 6040 MOV.B @R4,R0 00000B28 8801 CMP/EQ #1,R0 00000B2A 8B01 BF L614 00000B2C A001 BRA L615 00000B2E E200 MOV #0,R2 00000B30 L614: 00000B30 E201 MOV #1,R2 00000B32 L615: 00000B32 2420 MOV.B R2,@R4 00000B34 L616: 00000B34 4E0B JSR @R14 00000B36 E427 MOV #39,R4 00000B38 2008 TST R0,R0 00000B3A 8BFB BF L616 00000B3C L613: Matris.c 463 } 00000B3C 4F26 LDS.L @R15+,PR 00000B3E 6DF6 MOV.L @R15+,R13 00000B40 000B RTS 00000B42 6EF6 MOV.L @R15+,R14 Matris.c 464 Matris.c 465 void Main(void) 00000B44 _Main: ; function: Main ; frame size=16 ; used runtime library name: ; __modls 00000B44 2FE6 MOV.L R14,@-R15 Matris.c 466 { Matris.c 467 cantrans = False; 00000B46 E400 MOV #0,R4 00000B48 D311 MOV.L L696+16,R3 ; _cantrans 00000B4A 2FD6 MOV.L R13,@-R15 00000B4C 2FC6 MOV.L R12,@-R15 00000B4E 4F22 STS.L PR,@-R15 00000B50 2340 MOV.B R4,@R3 Matris.c 468 ready = False; 00000B52 D210 MOV.L L696+20,R2 ; _ready Matris.c 469 if(pause == False) 00000B54 D00D MOV.L L696+12,R0 ; _pause 00000B56 2240 MOV.B R4,@R2 00000B58 6100 MOV.B @R0,R1 00000B5A 2118 TST R1,R1 00000B5C 8B4B BF L618 Matris.c 470 { Matris.c 471 receive(); SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 36 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000B5E BCDE BSR _receive 00000B60 0009 NOP Matris.c 472 ypos += (slowyposdown % 10 == 0 || nextdir == Fast)? 1 : 0; 00000B62 E50A MOV #10,R5 00000B64 D40C MOV.L L696+24,R4 ; _ypos 00000B66 DE0D MOV.L L696+28,R14; _slowyposdown 00000B68 D30D MOV.L L696+32,R3 ; __modls 00000B6A 61E0 MOV.B @R14,R1 00000B6C 430B JSR @R3 00000B6E 6053 MOV R5,R0 00000B70 2008 TST R0,R0 00000B72 8903 BT L620 00000B74 D202 MOV.L L696,R2 ; _nextdir 00000B76 6020 MOV.B @R2,R0 00000B78 881E CMP/EQ #30,R0 00000B7A 8B13 BF L619 00000B7C L620: 00000B7C A013 BRA L621 00000B7E E201 MOV #1,R2 00000B80 L696: 00000B80 <00000000> .DATA.L _nextdir 00000B84 <00000000> .DATA.L _KeyDown 00000B88 <00000000> .DATA.L _exit 00000B8C <00000000> .DATA.L _pause 00000B90 <00000000> .DATA.L _cantrans 00000B94 <00000000> .DATA.L _ready 00000B98 <00000000> .DATA.L _ypos 00000B9C <00000000> .DATA.L _slowyposdown 00000BA0 <00000000> .DATA.L __modls 00000BA4 L619: 00000BA4 E200 MOV #0,R2 00000BA6 L621: 00000BA6 6342 MOV.L @R4,R3 00000BA8 332C ADD R2,R3 00000BAA 2432 MOV.L R3,@R4 Matris.c 473 if(nextdir == Left || nextdir == Right || nextdir == Fast || nextdir == Rot || slowyposdow +n % 10 == 0) 00000BAC D235 MOV.L L697+6,R2 ; _nextdir 00000BAE 6020 MOV.B @R2,R0 00000BB0 88FF CMP/EQ #-1,R0 00000BB2 8D0F BT/S L623 00000BB4 6403 MOV R0,R4 00000BB6 6043 MOV R4,R0 00000BB8 8801 CMP/EQ #1,R0 00000BBA 890B BT L623 00000BBC 6043 MOV R4,R0 00000BBE 881E CMP/EQ #30,R0 00000BC0 8908 BT L623 00000BC2 6043 MOV R4,R0 00000BC4 8814 CMP/EQ #20,R0 00000BC6 8905 BT L623 00000BC8 61E0 MOV.B @R14,R1 00000BCA D32F MOV.L L697+10,R3 ; __modls 00000BCC 430B JSR @R3 00000BCE 6053 MOV R5,R0 00000BD0 2008 TST R0,R0 00000BD2 8B0D BF L622 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 37 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000BD4 L623: Matris.c 474 { Matris.c 475 MoveBlock(); 00000BD4 BD69 BSR _MoveBlock 00000BD6 0009 NOP Matris.c 476 DrawBlock(); 00000BD8 D12C MOV.L L697+14,R1 ; _DrawBlock 00000BDA 410B JSR @R1 00000BDC 0009 NOP Matris.c 477 if(cantrans == True) 00000BDE D22C MOV.L L697+18,R2 ; _cantrans 00000BE0 6020 MOV.B @R2,R0 00000BE2 8801 CMP/EQ #1,R0 00000BE4 8B04 BF L622 Matris.c 478 { Matris.c 479 CheckPoints(); 00000BE6 BDB5 BSR _CheckPoints 00000BE8 0009 NOP Matris.c 480 DrawBlock(); 00000BEA D328 MOV.L L697+14,R3 ; _DrawBlock 00000BEC 430B JSR @R3 00000BEE 0009 NOP 00000BF0 L622: Matris.c 481 } Matris.c 482 } Matris.c 483 slowyposdown++; 00000BF0 62E0 MOV.B @R14,R2 00000BF2 7201 ADD #1,R2 00000BF4 2E20 MOV.B R2,@R14 00000BF6 L618: Matris.c 484 } Matris.c 485 ready = True; 00000BF6 E301 MOV #1,R3 00000BF8 D126 MOV.L L697+22,R1 ; _ready Matris.c 486 drawNumber(pScreen, connected, 0, 62); 00000BFA E73E MOV #62,R7 00000BFC DC26 MOV.L L697+26,R12; _pScreen 00000BFE E600 MOV #0,R6 00000C00 DD26 MOV.L L697+30,R13; _connected 00000C02 2130 MOV.B R3,@R1 00000C04 DE26 MOV.L L697+34,R14; _drawNumber 00000C06 65D0 MOV.B @R13,R5 00000C08 4E0B JSR @R14 00000C0A 64C2 MOV.L @R12,R4 Matris.c 487 drawNumber(pScreen + 1024, connected, 0, 62); 00000C0C 65D0 MOV.B @R13,R5 00000C0E E73E MOV #62,R7 00000C10 9335 MOV.W L697,R3 ; H'0400 00000C12 E600 MOV #0,R6 00000C14 64C2 MOV.L @R12,R4 00000C16 4E0B JSR @R14 00000C18 343C ADD R3,R4 Matris.c 488 drawNumber(pScreen + 2048, connected, 0, 62); 00000C1A E73E MOV #62,R7 00000C1C 65D0 MOV.B @R13,R5 00000C1E E600 MOV #0,R6 00000C20 932E MOV.W L697+2,R3 ; H'0800 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 38 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000C22 64C2 MOV.L @R12,R4 00000C24 4E0B JSR @R14 00000C26 343C ADD R3,R4 Matris.c 489 } 00000C28 4F26 LDS.L @R15+,PR 00000C2A 6CF6 MOV.L @R15+,R12 00000C2C 6DF6 MOV.L @R15+,R13 00000C2E 000B RTS 00000C30 6EF6 MOV.L @R15+,R14 Matris.c 490 Matris.c 491 void CallMain(void) 00000C32 _CallMain: ; function: CallMain ; frame size=12 00000C32 2FE6 MOV.L R14,@-R15 00000C34 2FD6 MOV.L R13,@-R15 00000C36 4F22 STS.L PR,@-R15 Matris.c 492 { Matris.c 493 ReadKey(); 00000C38 BF38 BSR _ReadKey 00000C3A 0009 NOP 00000C3C D619 MOV.L L697+38,R6 ; _onoff 00000C3E DD11 MOV.L L697+6,R13 ; _nextdir 00000C40 DE19 MOV.L L697+42,R14; _Timer_Install 00000C42 D414 MOV.L L697+22,R4 ; _ready 00000C44 60D0 MOV.B @R13,R0 00000C46 881E CMP/EQ #30,R0 00000C48 8F36 BF/S L625 00000C4A 6503 MOV R0,R5 00000C4C D215 MOV.L L697+38,R2 ; _onoff 00000C4E 6320 MOV.B @R2,R3 00000C50 2338 TST R3,R3 00000C52 8B31 BF L625 00000C54 L626: Matris.c 494 if(nextdir == Fast && onoff == False) Matris.c 495 { Matris.c 496 while(ready == False); 00000C54 6140 MOV.B @R4,R1 00000C56 2118 TST R1,R1 00000C58 89FC BT L626 Matris.c 497 onoff = True; 00000C5A E201 MOV #1,R2 Matris.c 498 Timer_Uninstall(7); 00000C5C D313 MOV.L L697+46,R3 ; _Timer_Uninstall 00000C5E 2620 MOV.B R2,@R6 00000C60 430B JSR @R3 00000C62 E407 MOV #7,R4 Matris.c 499 Timer_Install(7, &Main, 50); 00000C64 D512 MOV.L L697+50,R5 ; _Main 00000C66 E632 MOV #50,R6 00000C68 4E0B JSR @R14 00000C6A E407 MOV #7,R4 Matris.c 500 Timer_Start(7); 00000C6C D211 MOV.L L697+54,R2 ; _Timer_Start 00000C6E 420B JSR @R2 00000C70 E407 MOV #7,R4 Matris.c 501 if(nextdir == Down) 00000C72 63D0 MOV.B @R13,R3 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 39 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000C74 2338 TST R3,R3 00000C76 8B48 BF L629 Matris.c 502 { Matris.c 503 nextdir = Fast; 00000C78 E11E MOV #30,R1 00000C7A A046 BRA L629 00000C7C 2D10 MOV.B R1,@R13 00000C7E L697: 00000C7E 0400 .DATA.W H'0400 00000C80 0800 .DATA.W H'0800 00000C82 0000 .DATA.W 0 00000C84 <00000000> .DATA.L _nextdir 00000C88 <00000000> .DATA.L __modls 00000C8C <00000000> .DATA.L _DrawBlock 00000C90 <00000000> .DATA.L _cantrans 00000C94 <00000000> .DATA.L _ready 00000C98 <00000000> .DATA.L _pScreen 00000C9C <00000000> .DATA.L _connected 00000CA0 <00000000> .DATA.L _drawNumber 00000CA4 <00000000> .DATA.L _onoff 00000CA8 <00000000> .DATA.L _Timer_Install 00000CAC <00000000> .DATA.L _Timer_Uninstall 00000CB0 <00000000> .DATA.L _Main 00000CB4 <00000000> .DATA.L _Timer_Start 00000CB8 L625: Matris.c 504 } Matris.c 505 } Matris.c 506 else Matris.c 507 { Matris.c 508 if(nextdir != Fast && onoff == True || levelchanged == True) 00000CB8 6053 MOV R5,R0 00000CBA 881E CMP/EQ #30,R0 00000CBC 8903 BT L632 00000CBE D31E MOV.L L698,R3 ; _onoff 00000CC0 6030 MOV.B @R3,R0 00000CC2 8801 CMP/EQ #1,R0 00000CC4 8903 BT L633 00000CC6 L632: 00000CC6 D31D MOV.L L698+4,R3 ; _levelchanged 00000CC8 6030 MOV.B @R3,R0 00000CCA 8801 CMP/EQ #1,R0 00000CCC 8B1D BF L629 00000CCE L633: Matris.c 509 { Matris.c 510 while(ready == False); 00000CCE 6240 MOV.B @R4,R2 00000CD0 2228 TST R2,R2 00000CD2 89FC BT L633 Matris.c 511 onoff = False; Matris.c 512 Timer_Uninstall(7); 00000CD4 D31A MOV.L L698+8,R3 ; _Timer_Uninstall 00000CD6 E100 MOV #0,R1 00000CD8 2610 MOV.B R1,@R6 00000CDA 430B JSR @R3 00000CDC E407 MOV #7,R4 Matris.c 513 Matris.c 514 if(level < 20) SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 40 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000CDE E114 MOV #20,R1 00000CE0 D318 MOV.L L698+12,R3 ; _level 00000CE2 6230 MOV.B @R3,R2 00000CE4 3213 CMP/GE R1,R2 00000CE6 8906 BT L635 Matris.c 515 { Matris.c 516 Timer_Install(7, &Main, 100 - level * 5); 00000CE8 6030 MOV.B @R3,R0 00000CEA E664 MOV #100,R6 00000CEC 6203 MOV R0,R2 00000CEE 4008 SHLL2 R0 00000CF0 302C ADD R2,R0 00000CF2 A001 BRA L684 00000CF4 3608 SUB R0,R6 00000CF6 L635: Matris.c 517 } Matris.c 518 else Matris.c 519 { Matris.c 520 Timer_Install(7, &Main, 0); 00000CF6 E600 MOV #0,R6 00000CF8 L684: 00000CF8 D513 MOV.L L698+16,R5 ; _Main 00000CFA 4E0B JSR @R14 00000CFC E407 MOV #7,R4 Matris.c 521 } Matris.c 522 Matris.c 523 Timer_Start(7); 00000CFE D213 MOV.L L698+20,R2 ; _Timer_Start 00000D00 420B JSR @R2 00000D02 E407 MOV #7,R4 Matris.c 524 levelchanged = False; 00000D04 D20D MOV.L L698+4,R2 ; _levelchanged 00000D06 E300 MOV #0,R3 00000D08 2230 MOV.B R3,@R2 00000D0A L629: Matris.c 525 } Matris.c 526 } Matris.c 527 } 00000D0A 4F26 LDS.L @R15+,PR 00000D0C 6DF6 MOV.L @R15+,R13 00000D0E 000B RTS 00000D10 6EF6 MOV.L @R15+,R14 Matris.c 528 Matris.c 529 //the code above is not good, CallMain handles the keys and sets the timer of Main Matris.c 530 Matris.c 531 void ReadMenuKeys() 00000D12 _ReadMenuKeys: ; function: ReadMenuKeys ; frame size=4 00000D12 4F22 STS.L PR,@-R15 Matris.c 532 { Matris.c 533 if(KeyDown(31)) TeacherMode(); 00000D14 D30E MOV.L L698+24,R3 ; _KeyDown 00000D16 430B JSR @R3 00000D18 E41F MOV #31,R4 00000D1A 2008 TST R0,R0 00000D1C 8901 BT L637 00000D1E BA25 BSR _TeacherMode SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 41 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000D20 0009 NOP 00000D22 L637: Matris.c 534 if(KeyDown(47)) quit = True; 00000D22 D20B MOV.L L698+24,R2 ; _KeyDown 00000D24 420B JSR @R2 00000D26 E42F MOV #47,R4 00000D28 2008 TST R0,R0 00000D2A 8902 BT L638 00000D2C D309 MOV.L L698+28,R3 ; _quit 00000D2E E201 MOV #1,R2 00000D30 2320 MOV.B R2,@R3 00000D32 L638: Matris.c 535 } 00000D32 4F26 LDS.L @R15+,PR 00000D34 000B RTS 00000D36 0009 NOP 00000D38 L698: 00000D38 <00000000> .DATA.L _onoff 00000D3C <00000000> .DATA.L _levelchanged 00000D40 <00000000> .DATA.L _Timer_Uninstall 00000D44 <00000000> .DATA.L _level 00000D48 <00000000> .DATA.L _Main 00000D4C <00000000> .DATA.L _Timer_Start 00000D50 <00000000> .DATA.L _KeyDown 00000D54 <00000000> .DATA.L _quit Matris.c 536 Matris.c 537 int AddIn_main(int isAppli, unsigned short OptionNum) 00000D58 _AddIn_main: ; function: AddIn_main ; frame size=52 ; used runtime library name: ; __modlu 00000D58 2FE6 MOV.L R14,@-R15 00000D5A 2FD6 MOV.L R13,@-R15 00000D5C 2FC6 MOV.L R12,@-R15 Matris.c 538 { Matris.c 539 char c[] = {0xE6, 0x9B, 0}; Matris.c 540 char mode = 0; 00000D5E ED00 MOV #0,R13 Matris.c 541 Matris.c 542 level = 0; Matris.c 543 Matris.c 544 pScreen = (char*)malloc(3072); 00000D60 9473 MOV.W L699,R4 ; H'0C00 00000D62 62D3 MOV R13,R2 00000D64 2FB6 MOV.L R11,@-R15 00000D66 2FA6 MOV.L R10,@-R15 00000D68 2F96 MOV.L R9,@-R15 00000D6A 2F86 MOV.L R8,@-R15 00000D6C 4F22 STS.L PR,@-R15 00000D6E 7FEC ADD #-20,R15 00000D70 D137 MOV.L L699+6,R1 ; L462 00000D72 63F3 MOV R15,R3 00000D74 6010 MOV.B @R1,R0 00000D76 7310 ADD #16,R3 00000D78 2300 MOV.B R0,@R3 00000D7A 8411 MOV.B @(1,R1),R0 00000D7C 8031 MOV.B R0,@(1,R3) SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 42 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000D7E 8412 MOV.B @(2,R1),R0 00000D80 8032 MOV.B R0,@(2,R3) 00000D82 D334 MOV.L L699+10,R3 ; _level 00000D84 2320 MOV.B R2,@R3 00000D86 D234 MOV.L L699+14,R2 ; _malloc 00000D88 420B JSR @R2 00000D8A 0009 NOP 00000D8C D333 MOV.L L699+18,R3 ; _pScreen Matris.c 545 Matris.c 546 nextblock = (kiss() % 7) + 1; 00000D8E B960 BSR _kiss 00000D90 2302 MOV.L R0,@R3 00000D92 6103 MOV R0,R1 00000D94 D332 MOV.L L699+22,R3 ; __modlu 00000D96 430B JSR @R3 00000D98 E007 MOV #7,R0 00000D9A 7001 ADD #1,R0 00000D9C D231 MOV.L L699+26,R2 ; _nextblock Matris.c 547 CreateBlock(); 00000D9E BA0A BSR _CreateBlock 00000DA0 2200 MOV.B R0,@R2 Matris.c 548 Matris.c 549 ready = True; 00000DA2 E101 MOV #1,R1 00000DA4 D330 MOV.L L699+30,R3 ; _ready Matris.c 550 Matris.c 551 APP_EnableRestart();//thx to SimonLothar 00000DA6 B92B BSR _APP_EnableRestart 00000DA8 2310 MOV.B R1,@R3 Matris.c 552 Matris.c 553 seedkiss();//seed random numbers 00000DAA B980 BSR _seedkiss 00000DAC 0009 NOP 00000DAE D22F MOV.L L699+34,R2 ; L467 00000DB0 D32F MOV.L L699+38,R3 ; L468 00000DB2 1F21 MOV.L R2,@(4,R15) 00000DB4 1F33 MOV.L R3,@(12,R15) 00000DB6 63F3 MOV R15,R3 Matris.c 554 Matris.c 555 while(mode != 3) 00000DB8 D82F MOV.L L699+46,R8 ; _Timer_Install 00000DBA 7310 ADD #16,R3 00000DBC D92F MOV.L L699+50,R9 ; _exit 00000DBE D22D MOV.L L699+42,R2 ; L469 00000DC0 DB2F MOV.L L699+54,R11; _Print 00000DC2 1F22 MOV.L R2,@(8,R15) 00000DC4 2F32 MOV.L R3,@R15 00000DC6 DC2F MOV.L L699+58,R12; _locate 00000DC8 DE2F MOV.L L699+62,R14; _KeyDown 00000DCA L640: Matris.c 556 { Matris.c 557 quit = False; 00000DCA E300 MOV #0,R3 00000DCC D22F MOV.L L699+66,R2 ; _quit 00000DCE 2230 MOV.B R3,@R2 Matris.c 558 Timer_Install(10, &ReadMenuKeys, 200); 00000DD0 963C MOV.W L699+2,R6 ; H'00C8 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 43 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000DD2 D52F MOV.L L699+70,R5 ; _ReadMenuKeys 00000DD4 480B JSR @R8 00000DD6 E40A MOV #10,R4 Matris.c 559 Timer_Start(10); 00000DD8 D32E MOV.L L699+74,R3 ; _Timer_Start 00000DDA 430B JSR @R3 00000DDC E40A MOV #10,R4 Matris.c 560 while(!KeyDown(31) && mode != 3) 00000DDE 4E0B JSR @R14 00000DE0 E41F MOV #31,R4 00000DE2 2008 TST R0,R0 00000DE4 8901 BT L700 00000DE6 A07E BRA L641 00000DE8 0009 NOP 00000DEA L700: 00000DEA 60DE EXTS.B R13,R0 00000DEC 8803 CMP/EQ #3,R0 00000DEE 897A BT L641 00000DF0 L642: Matris.c 561 { Matris.c 562 AllClr_VRAM(); 00000DF0 D229 MOV.L L699+78,R2 ; _AllClr_VRAM 00000DF2 420B JSR @R2 00000DF4 0009 NOP Matris.c 563 Matris.c 564 locate( 6, 3 ); 00000DF6 E503 MOV #3,R5 00000DF8 4C0B JSR @R12 00000DFA E406 MOV #6,R4 Matris.c 565 Print(&"Singleplayer"); 00000DFC 4B0B JSR @R11 00000DFE 54F1 MOV.L @(4,R15),R4 Matris.c 566 locate( 6, 4 ); 00000E00 E504 MOV #4,R5 00000E02 4C0B JSR @R12 00000E04 E406 MOV #6,R4 Matris.c 567 Print(&"Multiplayer"); 00000E06 4B0B JSR @R11 00000E08 54F3 MOV.L @(12,R15),R4 Matris.c 568 locate( 2, 8); 00000E0A E508 MOV #8,R5 00000E0C 4C0B JSR @R12 00000E0E E402 MOV #2,R4 Matris.c 569 Print(&"Copyright by Casimo"); 00000E10 4B0B JSR @R11 00000E12 54F2 MOV.L @(8,R15),R4 Matris.c 570 Matris.c 571 locate( 4, 3 + mode); 00000E14 65DE EXTS.B R13,R5 00000E16 7503 ADD #3,R5 00000E18 4C0B JSR @R12 00000E1A E404 MOV #4,R4 Matris.c 572 PrintC(&c); 00000E1C D31F MOV.L L699+82,R3 ; _PrintC 00000E1E 430B JSR @R3 00000E20 64F2 MOV.L @R15,R4 Matris.c 573 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 44 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 574 PutDisp_DD(); 00000E22 D21F MOV.L L699+86,R2 ; _PutDisp_DD 00000E24 420B JSR @R2 00000E26 0009 NOP Matris.c 575 Matris.c 576 if(KeyDown(37)) 00000E28 4E0B JSR @R14 00000E2A E425 MOV #37,R4 00000E2C 2008 TST R0,R0 00000E2E 8939 BT L643 Matris.c 577 { Matris.c 578 mode += (mode == 1)? -1 : 1; 00000E30 60DE EXTS.B R13,R0 00000E32 8801 CMP/EQ #1,R0 00000E34 8B01 BF L644 00000E36 A001 BRA L645 00000E38 E2FF MOV #-1,R2 00000E3A L644: 00000E3A E201 MOV #1,R2 00000E3C L645: 00000E3C 3D2C ADD R2,R13 Matris.c 579 while(KeyDown(37)); 00000E3E L646: 00000E3E 4E0B JSR @R14 00000E40 E425 MOV #37,R4 00000E42 2008 TST R0,R0 00000E44 8BFB BF L646 00000E46 A047 BRA L648 00000E48 0009 NOP 00000E4A L699: 00000E4A 0C00 .DATA.W H'0C00 00000E4C 00C8 .DATA.W H'00C8 00000E4E 0000 .DATA.W 0 00000E50 <00000000> .DATA.L L462 00000E54 <00000000> .DATA.L _level 00000E58 <00000000> .DATA.L _malloc 00000E5C <00000000> .DATA.L _pScreen 00000E60 <00000000> .DATA.L __modlu 00000E64 <00000000> .DATA.L _nextblock 00000E68 <00000000> .DATA.L _ready 00000E6C <00000000> .DATA.L L467 00000E70 <00000000> .DATA.L L468 00000E74 <00000000> .DATA.L L469 00000E78 <00000000> .DATA.L _Timer_Install 00000E7C <00000000> .DATA.L _exit 00000E80 <00000000> .DATA.L _Print 00000E84 <00000000> .DATA.L _locate 00000E88 <00000000> .DATA.L _KeyDown 00000E8C <00000000> .DATA.L _quit 00000E90 <00000000> .DATA.L _ReadMenuKeys 00000E94 <00000000> .DATA.L _Timer_Start 00000E98 <00000000> .DATA.L _AllClr_VRAM 00000E9C <00000000> .DATA.L _PrintC 00000EA0 <00000000> .DATA.L _PutDisp_DD 00000EA4 L643: Matris.c 580 } Matris.c 581 else SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 45 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 582 { Matris.c 583 if(KeyDown(28)) 00000EA4 4E0B JSR @R14 00000EA6 E41C MOV #28,R4 00000EA8 2008 TST R0,R0 00000EAA 890C BT L649 Matris.c 584 { Matris.c 585 mode -= (mode == 0)? -1 : 1; 00000EAC 62DE EXTS.B R13,R2 00000EAE 2228 TST R2,R2 00000EB0 8B01 BF L650 00000EB2 A001 BRA L651 00000EB4 E3FF MOV #-1,R3 00000EB6 L650: 00000EB6 E301 MOV #1,R3 00000EB8 L651: 00000EB8 3D38 SUB R3,R13 Matris.c 586 while(KeyDown(28)); 00000EBA L652: 00000EBA 4E0B JSR @R14 00000EBC E41C MOV #28,R4 00000EBE 2008 TST R0,R0 00000EC0 8BFB BF L652 00000EC2 A009 BRA L648 00000EC4 0009 NOP 00000EC6 L649: Matris.c 587 } Matris.c 588 else Matris.c 589 { Matris.c 590 if(KeyDown(47)) 00000EC6 4E0B JSR @R14 00000EC8 E42F MOV #47,R4 00000ECA 2008 TST R0,R0 00000ECC 8904 BT L648 Matris.c 591 { Matris.c 592 mode = 3; 00000ECE ED03 MOV #3,R13 Matris.c 593 while(KeyDown(47)); 00000ED0 L656: 00000ED0 4E0B JSR @R14 00000ED2 E42F MOV #47,R4 00000ED4 2008 TST R0,R0 00000ED6 8BFB BF L656 00000ED8 L648: 00000ED8 4E0B JSR @R14 00000EDA E41F MOV #31,R4 00000EDC 2008 TST R0,R0 00000EDE 8B02 BF L641 00000EE0 60DE EXTS.B R13,R0 00000EE2 8803 CMP/EQ #3,R0 00000EE4 8B84 BF L642 00000EE6 L641: Matris.c 594 } Matris.c 595 } Matris.c 596 Matris.c 597 } Matris.c 598 } SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 46 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 599 Matris.c 600 Timer_Uninstall(10); 00000EE6 D222 MOV.L L701+4,R2 ; _Timer_Uninstall 00000EE8 420B JSR @R2 00000EEA E40A MOV #10,R4 00000EEC 6ADE EXTS.B R13,R10 00000EEE 60A3 MOV R10,R0 00000EF0 8803 CMP/EQ #3,R0 00000EF2 8920 BT L659 Matris.c 601 Matris.c 602 if(mode != 3) Matris.c 603 { Matris.c 604 if(mode == 1) 00000EF4 60A3 MOV R10,R0 00000EF6 8801 CMP/EQ #1,R0 00000EF8 8B04 BF L660 Matris.c 605 { Matris.c 606 Serial_ClearReceiveBuffer(); 00000EFA D31E MOV.L L701+8,R3 ; _Serial_ClearReceiveBuffer 00000EFC 430B JSR @R3 00000EFE 0009 NOP Matris.c 607 Connect(); 00000F00 BB28 BSR _Connect 00000F02 0009 NOP 00000F04 L660: Matris.c 608 } Matris.c 609 Matris.c 610 Timer_Install(6,&CallMain, 150); 00000F04 9632 MOV.W L701,R6 ; H'0096 00000F06 D51C MOV.L L701+12,R5 ; _CallMain 00000F08 480B JSR @R8 00000F0A E406 MOV #6,R4 Matris.c 611 Timer_Start(6); 00000F0C D31B MOV.L L701+16,R3 ; _Timer_Start 00000F0E 430B JSR @R3 00000F10 E406 MOV #6,R4 Matris.c 612 Matris.c 613 while(exit == False){RestGray();} 00000F12 6290 MOV.B @R9,R2 00000F14 2228 TST R2,R2 00000F16 8B04 BF L661 00000F18 L662: 00000F18 B910 BSR _RestGray 00000F1A 0009 NOP 00000F1C 6390 MOV.B @R9,R3 00000F1E 2338 TST R3,R3 00000F20 89FA BT L662 00000F22 L661: Matris.c 614 Matris.c 615 ResetValues(); 00000F22 B997 BSR _ResetValues 00000F24 0009 NOP Matris.c 616 Matris.c 617 while(KeyDown(47)); 00000F26 L663: 00000F26 4E0B JSR @R14 00000F28 E42F MOV #47,R4 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 47 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 00000F2A 2008 TST R0,R0 00000F2C 8BFB BF L663 00000F2E L665: Matris.c 618 while(KeyDown(31)); 00000F2E 4E0B JSR @R14 00000F30 E41F MOV #31,R4 00000F32 2008 TST R0,R0 00000F34 8BFB BF L665 00000F36 L659: 00000F36 60A3 MOV R10,R0 00000F38 8803 CMP/EQ #3,R0 00000F3A 8901 BT L702 00000F3C AF45 BRA L640 00000F3E 0009 NOP 00000F40 L702: Matris.c 619 } Matris.c 620 } Matris.c 621 Timer_Uninstall(6); 00000F40 D30B MOV.L L701+4,R3 ; _Timer_Uninstall 00000F42 430B JSR @R3 00000F44 E406 MOV #6,R4 Matris.c 622 Timer_Uninstall(7); 00000F46 D20A MOV.L L701+4,R2 ; _Timer_Uninstall 00000F48 420B JSR @R2 00000F4A E407 MOV #7,R4 Matris.c 623 Disconnect(); 00000F4C B905 BSR _Disconnect 00000F4E 0009 NOP Matris.c 624 free(pScreen); 00000F50 D20B MOV.L L701+20,R2 ; _pScreen 00000F52 D30C MOV.L L701+24,R3 ; _free 00000F54 430B JSR @R3 00000F56 6422 MOV.L @R2,R4 Matris.c 625 } 00000F58 7F14 ADD #20,R15 00000F5A 4F26 LDS.L @R15+,PR 00000F5C 68F6 MOV.L @R15+,R8 00000F5E 69F6 MOV.L @R15+,R9 00000F60 6AF6 MOV.L @R15+,R10 00000F62 6BF6 MOV.L @R15+,R11 00000F64 6CF6 MOV.L @R15+,R12 00000F66 6DF6 MOV.L @R15+,R13 00000F68 000B RTS 00000F6A 6EF6 MOV.L @R15+,R14 00000F6C L701: 00000F6C 0096 .DATA.W H'0096 00000F6E 0000 .DATA.W 0 00000F70 <00000000> .DATA.L _Timer_Uninstall 00000F74 <00000000> .DATA.L _Serial_ClearReceiveBuffer 00000F78 <00000000> .DATA.L _CallMain 00000F7C <00000000> .DATA.L _Timer_Start 00000F80 <00000000> .DATA.L _pScreen 00000F84 <00000000> .DATA.L _free Matris.c 626 Matris.c 627 //I'm sure there are unused variables Matris.c 628 Matris.c 629 #pragma section _BR_Size SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 48 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT Matris.c 630 unsigned long BR_Size; Matris.c 631 #pragma section Matris.c 632 #pragma section _TOP Matris.c 633 int InitializeSystem(int isAppli, unsigned short OptionNum) P_T 00000000 _InitializeSystem: ; function: InitializeSystem ; frame size=4 Matris.c 634 {return INIT_ADDIN_APPLICATION(isAppli, OptionNum);} 00000000 D303 MOV.L L703+2,R3 ; _INIT_ADDIN_APPLICATION 00000002 7FFC ADD #-4,R15 00000004 2F51 MOV.W R5,@R15 00000006 65F1 MOV.W @R15,R5 00000008 655D EXTU.W R5,R5 0000000A 432B JMP @R3 0000000C 7F04 ADD #4,R15 0000000E L703: 0000000E 0000 .DATA.W 0 00000010 <00000000> .DATA.L _INIT_ADDIN_APPLICATION Matris.c 635 #pragma section D 00000000 __$seed: ; static: seed 00000000 075BCD15 .DATA.L H'075BCD15 00000004 __$y$306: ; static: y 00000004 159A55A0 .DATA.L H'159A55A0 00000008 __$z$307: ; static: z 00000008 1F123BB5 .DATA.L H'1F123BB5 0000000C __$c$308: ; static: c 0000000C 0074CBB1 .DATA.L H'0074CBB1 00000010 _pause: ; static: pause 00000010 00 .DATA.B H'00 00000011 _quit: ; static: quit 00000011 00 .DATA.B H'00 00000012 _levelchanged: ; static: levelchanged 00000012 00 .DATA.B H'00 00000013 _exit: ; static: exit 00000013 00 .DATA.B H'00 00000014 _onoff: ; static: onoff 00000014 01 .DATA.B H'01 00000015 _slowyposdown: ; static: slowyposdown 00000015 00 .DATA.B H'00 00000016 _receiveline: ; static: receiveline 00000016 00 .DATA.B H'00 00000017 _sendline: ; static: sendline 00000017 00 .DATA.B H'00 00000018 _cantrans: ; static: cantrans 00000018 00 .DATA.B H'00 C 00000000 L367: 00000000 506F696E74 .SDATA "Points: %d" 733A202564 0000000A 00 .DATA.B H'00 0000000B 00000001 .RES.B 1 0000000C L368: 0000000C 4C6576656C .SDATA "Level: %d" 3A202564 00000015 00 .DATA.B H'00 00000016 00000002 .RES.W 1 00000018 L395: 00000018 436F6E6E65 .SDATA "Connecting..." 6374696E67 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 49 SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT 2E2E2E 00000025 00 .DATA.B H'00 00000026 L462: 00000026 E69B00 .DATA.B H'E6,H'9B,H'00 00000029 00000001 .RES.B 1 0000002A 00000002 .RES.W 1 0000002C L467: 0000002C 53696E676C .SDATA "Singleplayer" 65706C6179 6572 00000038 00 .DATA.B H'00 00000039 00000001 .RES.B 1 0000003A 00000002 .RES.W 1 0000003C L468: 0000003C 4D756C7469 .SDATA "Multiplayer" 706C617965 72 00000047 00 .DATA.B H'00 00000048 L469: 00000048 436F707972 .SDATA "Copyright by Casimo" 6967687420 6279204361 73696D6F 0000005B 00 .DATA.B H'00 B 00000000 _swit: ; static: swit 00000000 00000001 .RES.B 1 00000001 _ready: ; static: ready 00000001 00000001 .RES.B 1 00000002 _canswap: ; static: canswap 00000002 00000001 .RES.B 1 00000003 _connected: ; static: connected 00000003 00000001 .RES.B 1 B_B 00000000 _BR_Size: ; static: BR_Size 00000000 00000004 .RES.L 1 SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 1 ******** STATISTICS INFORMATION ******** ********** ERROR INFORMATION *********** NUMBER OF ERRORS: 0 NUMBER OF WARNINGS: 9 ******* SOURCE LINE INFORMATION ******** COMPILED SOURCE LINE: 635 ******* SECTION SIZE INFORMATION ******* PROGRAM SECTION (P): 00000F88 Byte(s) PROGRAM SECTION (P_BR_Size): 00000000 Byte(s) PROGRAM SECTION (P_TOP): 00000014 Byte(s) CONSTANT SECTION (C): 0000005C Byte(s) CONSTANT SECTION (C_BR_Size): 00000000 Byte(s) CONSTANT SECTION (C_TOP): 00000000 Byte(s) DATA SECTION (D): 00000019 Byte(s) DATA SECTION (D_BR_Size): 00000000 Byte(s) DATA SECTION (D_TOP): 00000000 Byte(s) BSS SECTION (B): 00000004 Byte(s) BSS SECTION (B_BR_Size): 00000004 Byte(s) BSS SECTION (B_TOP): 00000000 Byte(s) TOTAL PROGRAM SIZE: 00001019 Byte(s) ********** LABEL INFORMATION *********** NUMBER OF EXTERNAL REFERENCE SYMBOLS: 48 NUMBER OF EXTERNAL DEFINITION SYMBOLS: 38 NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 243 *** COMMAND PARAMETER *** -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk43B4.tmp