From ba07c2bc98fdba991b6d6444d57f0f897cf5959f Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 12 Jun 2016 20:08:57 +0200 Subject: import full project --- Debug/Matris.lst | 3305 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 3305 insertions(+) create mode 100644 Debug/Matris.lst (limited to 'Debug/Matris.lst') diff --git a/Debug/Matris.lst b/Debug/Matris.lst new file mode 100644 index 0000000..7883b00 --- /dev/null +++ b/Debug/Matris.lst @@ -0,0 +1,3305 @@ +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 + -- cgit v1.3.1