10632 lines
537 KiB
Plaintext
10632 lines
537 KiB
Plaintext
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 1
|
|
|
|
************ OBJECT LISTING ************
|
|
|
|
FILE NAME: F:\AldTest\MonochromeLib.c
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1 /*************************************************************/
|
|
Monochrome 2 /** MonochromeLib - monochrome graphic library for fx-9860G **/
|
|
Monochrome 3 /** MonochromeLib is free software **/
|
|
Monochrome 4 /** **/
|
|
Monochrome 5 /** @author Pierre "PierrotLL" Le Gall **/
|
|
Monochrome 6 /** @contact legallpierre89@gmail.com **/
|
|
Monochrome 7 /** **/
|
|
Monochrome 8 /** @file MonochromeLib.c **/
|
|
Monochrome 9 /** Code file of MonochromeLib **/
|
|
Monochrome 10 /** **/
|
|
Monochrome 11 /** @date 11-22-2011 **/
|
|
Monochrome 12 /*************************************************************/
|
|
Monochrome 13
|
|
Monochrome 14 #include "MonochromeLib.h"
|
|
Monochrome 15 #include <stdlib.h>
|
|
Monochrome 16 #include "fxlib.h"
|
|
Monochrome 17 #include "mathf.h"
|
|
Monochrome 18
|
|
Monochrome 19
|
|
Monochrome 20 /******************************/
|
|
Monochrome 21 /** Dependencies management **/
|
|
Monochrome 22 /******************************/
|
|
Monochrome 23
|
|
Monochrome 24 #ifdef ML_ALL
|
|
Monochrome 25 #define ML_CLEAR_VRAM
|
|
Monochrome 26 #define ML_CLEAR_SCREEN
|
|
Monochrome 27 #define ML_DISPLAY_VRAM
|
|
Monochrome 28 #define ML_SET_CONTRAST
|
|
Monochrome 29 #define ML_GET_CONTRAST
|
|
Monochrome 30 #define ML_PIXEL
|
|
Monochrome 31 #define ML_POINT
|
|
Monochrome 32 #define ML_PIXEL_TEST
|
|
Monochrome 33 #define ML_LINE
|
|
Monochrome 34 #define ML_HORIZONTAL_LINE
|
|
Monochrome 35 #define ML_VERTICAL_LINE
|
|
Monochrome 36 #define ML_RECTANGLE
|
|
Monochrome 37 #define ML_POLYGON
|
|
Monochrome 38 #define ML_FILLED_POLYGON
|
|
Monochrome 39 #define ML_CIRCLE
|
|
Monochrome 40 #define ML_FILLED_CIRCLE
|
|
Monochrome 41 #define ML_ELLIPSE
|
|
Monochrome 42 #define ML_ELLIPSE_IN_RECT
|
|
Monochrome 43 #define ML_FILLED_ELLIPSE
|
|
Monochrome 44 #define ML_FILLED_ELLIPSE_IN_RECT
|
|
Monochrome 45 #define ML_HORIZONTAL_SCROLL
|
|
Monochrome 46 #define ML_VERTICAL_SCROLL
|
|
Monochrome 47 #define ML_BMP_OR
|
|
Monochrome 48 #define ML_BMP_AND
|
|
Monochrome 49 #define ML_BMP_XOR
|
|
Monochrome 50 #define ML_BMP_OR_CL
|
|
Monochrome 51 #define ML_BMP_AND_CL
|
|
Monochrome 52 #define ML_BMP_XOR_CL
|
|
Monochrome 53 #define ML_BMP_8_OR
|
|
Monochrome 54 #define ML_BMP_8_AND
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 2
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 55 #define ML_BMP_8_XOR
|
|
Monochrome 56 #define ML_BMP_8_OR_CL
|
|
Monochrome 57 #define ML_BMP_8_AND_CL
|
|
Monochrome 58 #define ML_BMP_8_XOR_CL
|
|
Monochrome 59 #define ML_BMP_16_OR
|
|
Monochrome 60 #define ML_BMP_16_AND
|
|
Monochrome 61 #define ML_BMP_16_XOR
|
|
Monochrome 62 #define ML_BMP_16_OR_CL
|
|
Monochrome 63 #define ML_BMP_16_AND_CL
|
|
Monochrome 64 #define ML_BMP_16_XOR_CL
|
|
Monochrome 65 #define ML_BMP_OR_ZOOM
|
|
Monochrome 66 #define ML_BMP_AND_ZOOM
|
|
Monochrome 67 #define ML_BMP_XOR_ZOOM
|
|
Monochrome 68 #define ML_BMP_OR_ROTATE
|
|
Monochrome 69 #define ML_BMP_AND_ROTATE
|
|
Monochrome 70 #define ML_BMP_XOR_ROTATE
|
|
Monochrome 71 #endif
|
|
Monochrome 72
|
|
Monochrome 73 #ifdef ML_POLYGON
|
|
Monochrome 74 #define ML_LINE
|
|
Monochrome 75 #endif
|
|
Monochrome 76
|
|
Monochrome 77 #ifdef ML_LINE
|
|
Monochrome 78 #define ML_PIXEL
|
|
Monochrome 79 #endif
|
|
Monochrome 80
|
|
Monochrome 81 #ifdef ML_POINT
|
|
Monochrome 82 #define ML_PIXEL
|
|
Monochrome 83 #define ML_RECTANGLE
|
|
Monochrome 84 #endif
|
|
Monochrome 85
|
|
Monochrome 86 #ifdef ML_RECTANGLE
|
|
Monochrome 87 #define ML_HORIZONTAL_LINE
|
|
Monochrome 88 #endif
|
|
Monochrome 89
|
|
Monochrome 90 #ifdef ML_FILLED_POLYGON
|
|
Monochrome 91 #define ML_HORIZONTAL_LINE
|
|
Monochrome 92 #endif
|
|
Monochrome 93
|
|
Monochrome 94 #ifdef ML_CIRCLE
|
|
Monochrome 95 #define ML_PIXEL
|
|
Monochrome 96 #endif
|
|
Monochrome 97
|
|
Monochrome 98 #ifdef ML_FILLED_CIRCLE
|
|
Monochrome 99 #define ML_HORIZONTAL_LINE
|
|
Monochrome 100 #endif
|
|
Monochrome 101
|
|
Monochrome 102 #ifdef ML_ELLIPSE_IN_RECT
|
|
Monochrome 103 #define ML_ELLIPSE
|
|
Monochrome 104 #endif
|
|
Monochrome 105
|
|
Monochrome 106 #ifdef ML_ELLIPSE
|
|
Monochrome 107 #define ML_PIXEL
|
|
Monochrome 108 #endif
|
|
Monochrome 109
|
|
Monochrome 110 #ifdef ML_FILLED_ELLIPSE_IN_RECT
|
|
Monochrome 111 #define ML_FILLED_ELLIPSE
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 3
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 112 #endif
|
|
Monochrome 113
|
|
Monochrome 114 #ifdef ML_FILLED_ELLIPSE
|
|
Monochrome 115 #define ML_HORIZONTAL_LINE
|
|
Monochrome 116 #endif
|
|
Monochrome 117
|
|
Monochrome 118
|
|
Monochrome 119 /***************/
|
|
Monochrome 120 /** Functions **/
|
|
Monochrome 121 /***************/
|
|
Monochrome 122
|
|
Monochrome 123 #define sgn(x) (x<0?-1:1)
|
|
Monochrome 124 #define rnd(x) ((int)(x+0.5))
|
|
Monochrome 125
|
|
Monochrome 126 //Thanks to Simon Lothar for this function
|
|
Monochrome 127
|
|
Monochrome 128 static int SysCallCode[] = {0xD201422B,0x60F20000,0x80010070};
|
|
Monochrome 129 static int (*SysCall)( int R4, int R5, int R6, int R7, int FNo ) = (void*)&SysCallCode;
|
|
Monochrome 130
|
|
Monochrome 131 char* ML_vram_adress()
|
|
P 00000000 _ML_vram_adress: ; function: ML_vram_adress
|
|
; frame size=8
|
|
00000000 4F22 STS.L PR,@-R15
|
|
Monochrome 132 {
|
|
Monochrome 133 return (char*)((*SysCall)(0, 0, 0, 0, 309));
|
|
00000002 E700 MOV #0,R7
|
|
00000004 D344 MOV.L L1650+4,R3 ; __$SysCall
|
|
00000006 6673 MOV R7,R6
|
|
00000008 9284 MOV.W L1650,R2 ; H'0135
|
|
0000000A 6573 MOV R7,R5
|
|
0000000C 6032 MOV.L @R3,R0
|
|
0000000E 2F26 MOV.L R2,@-R15
|
|
00000010 400B JSR @R0
|
|
00000012 6473 MOV R7,R4
|
|
Monochrome 134 }
|
|
00000014 7F04 ADD #4,R15
|
|
00000016 4F26 LDS.L @R15+,PR
|
|
00000018 000B RTS
|
|
0000001A 0009 NOP
|
|
Monochrome 135
|
|
Monochrome 136
|
|
Monochrome 137 #ifdef ML_CLEAR_VRAM
|
|
Monochrome 138 void ML_clear_vram()
|
|
0000001C _ML_clear_vram: ; function: ML_clear_vram
|
|
; frame size=8
|
|
0000001C 2FD6 MOV.L R13,@-R15
|
|
0000001E 4F22 STS.L PR,@-R15
|
|
Monochrome 139 {
|
|
Monochrome 140 int i, end, *pointer_long, vram;
|
|
Monochrome 141 char *pointer_byte;
|
|
Monochrome 142 vram = (int)ML_vram_adress();
|
|
00000020 BFEE BSR _ML_vram_adress
|
|
00000022 0009 NOP
|
|
00000024 6703 MOV R0,R7
|
|
Monochrome 143 end = 4-vram&3;
|
|
00000026 E004 MOV #4,R0
|
|
00000028 3078 SUB R7,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 4
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000002A E603 MOV #3,R6
|
|
0000002C 2609 AND R0,R6
|
|
Monochrome 144 pointer_byte = (char*)vram;
|
|
0000002E 6D73 MOV R7,R13
|
|
Monochrome 145 for(i=0 ; i<end ; i++) pointer_byte[i] = 0;
|
|
00000030 E400 MOV #0,R4
|
|
00000032 6143 MOV R4,R1
|
|
00000034 4615 CMP/PL R6
|
|
00000036 8F05 BF/S L1119
|
|
00000038 6573 MOV R7,R5
|
|
0000003A L1120:
|
|
0000003A 7101 ADD #1,R1
|
|
0000003C 2540 MOV.B R4,@R5
|
|
0000003E 3163 CMP/GE R6,R1
|
|
00000040 8FFB BF/S L1120
|
|
00000042 7501 ADD #1,R5
|
|
00000044 L1119:
|
|
00000044 9067 MOV.W L1650+2,R0 ; H'03FC
|
|
Monochrome 146 pointer_long = (int*) (vram+end);
|
|
00000046 6163 MOV R6,R1
|
|
00000048 317C ADD R7,R1
|
|
0000004A 6513 MOV R1,R5
|
|
0000004C 301C ADD R1,R0
|
|
Monochrome 147 for(i=0 ; i<255 ; i++) pointer_long[i] = 0;
|
|
0000004E L1121:
|
|
0000004E 2542 MOV.L R4,@R5
|
|
00000050 7504 ADD #4,R5
|
|
00000052 3502 CMP/HS R0,R5
|
|
00000054 8BFB BF L1121
|
|
Monochrome 148 pointer_byte += 1020+end;
|
|
00000056 925E MOV.W L1650+2,R2 ; H'03FC
|
|
00000058 362C ADD R2,R6
|
|
0000005A 3D6C ADD R6,R13
|
|
Monochrome 149 end = vram&3;
|
|
0000005C E603 MOV #3,R6
|
|
0000005E 2679 AND R7,R6
|
|
Monochrome 150 for(i=0 ; i<end ; i++) pointer_byte[i] = 0;
|
|
00000060 6743 MOV R4,R7
|
|
00000062 4615 CMP/PL R6
|
|
00000064 8F05 BF/S L1122
|
|
00000066 65D3 MOV R13,R5
|
|
00000068 L1123:
|
|
00000068 2540 MOV.B R4,@R5
|
|
0000006A 7701 ADD #1,R7
|
|
0000006C 3763 CMP/GE R6,R7
|
|
0000006E 8FFB BF/S L1123
|
|
00000070 7501 ADD #1,R5
|
|
00000072 L1122:
|
|
Monochrome 151 }
|
|
00000072 4F26 LDS.L @R15+,PR
|
|
00000074 000B RTS
|
|
00000076 6DF6 MOV.L @R15+,R13
|
|
Monochrome 152 #endif
|
|
Monochrome 153
|
|
Monochrome 154 #ifdef ML_CLEAR_SCREEN
|
|
Monochrome 155 void ML_clear_screen()
|
|
00000078 _ML_clear_screen: ; function: ML_clear_screen
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 5
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
; frame size=12
|
|
00000078 2FC6 MOV.L R12,@-R15
|
|
Monochrome 156 {
|
|
Monochrome 157 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
|
|
Monochrome 158 int i, j;
|
|
Monochrome 159 for(i=0 ; i<64 ; i++)
|
|
0000007A E704 MOV #4,R7
|
|
0000007C D527 MOV.L L1650+8,R5 ; H'B4000000
|
|
0000007E E600 MOV #0,R6
|
|
00000080 D427 MOV.L L1650+12,R4; H'B4010000
|
|
00000082 EC07 MOV #7,R12
|
|
00000084 2FB6 MOV.L R11,@-R15
|
|
00000086 6163 MOV R6,R1
|
|
00000088 2FA6 MOV.L R10,@-R15
|
|
0000008A EB10 MOV #16,R11
|
|
0000008C EA40 MOV #64,R10
|
|
0000008E L1124:
|
|
Monochrome 160 {
|
|
Monochrome 161 *LCD_register_selector = 4;
|
|
Monochrome 162 *LCD_data_register = i|192;
|
|
0000008E E3C0 MOV #-64,R3
|
|
00000090 2570 MOV.B R7,@R5
|
|
Monochrome 163 *LCD_register_selector = 4;
|
|
Monochrome 164 *LCD_data_register = 0;
|
|
Monochrome 165 *LCD_register_selector = 7;
|
|
Monochrome 166 for(j=0 ; j<16 ; j++) *LCD_data_register = 0;
|
|
00000092 60B3 MOV R11,R0
|
|
00000094 231B OR R1,R3
|
|
00000096 2430 MOV.B R3,@R4
|
|
00000098 2570 MOV.B R7,@R5
|
|
0000009A 2460 MOV.B R6,@R4
|
|
0000009C 25C0 MOV.B R12,@R5
|
|
0000009E L1125:
|
|
0000009E 4010 DT R0
|
|
000000A0 8FFD BF/S L1125
|
|
000000A2 2460 MOV.B R6,@R4
|
|
000000A4 7101 ADD #1,R1
|
|
000000A6 31A3 CMP/GE R10,R1
|
|
000000A8 8BF1 BF L1124
|
|
Monochrome 167 }
|
|
Monochrome 168 }
|
|
000000AA 6AF6 MOV.L @R15+,R10
|
|
000000AC 6BF6 MOV.L @R15+,R11
|
|
000000AE 000B RTS
|
|
000000B0 6CF6 MOV.L @R15+,R12
|
|
Monochrome 169 #endif
|
|
Monochrome 170
|
|
Monochrome 171 #ifdef ML_DISPLAY_VRAM
|
|
Monochrome 172 void ML_display_vram()
|
|
000000B2 _ML_display_vram: ; function: ML_display_vram
|
|
; frame size=20
|
|
000000B2 2FC6 MOV.L R12,@-R15
|
|
000000B4 2FB6 MOV.L R11,@-R15
|
|
000000B6 2FA6 MOV.L R10,@-R15
|
|
000000B8 2F96 MOV.L R9,@-R15
|
|
000000BA 4F22 STS.L PR,@-R15
|
|
Monochrome 173 {
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 6
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 174 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000, *vram;
|
|
Monochrome 175 int i, j;
|
|
Monochrome 176 vram = ML_vram_adress();
|
|
000000BC BFA0 BSR _ML_vram_adress
|
|
000000BE 0009 NOP
|
|
Monochrome 177 for(i=0 ; i<64 ; i++)
|
|
000000C0 D516 MOV.L L1650+8,R5 ; H'B4000000
|
|
000000C2 6C03 MOV R0,R12
|
|
000000C4 D416 MOV.L L1650+12,R4; H'B4010000
|
|
000000C6 E940 MOV #64,R9
|
|
000000C8 EA10 MOV #16,R10
|
|
000000CA EB07 MOV #7,R11
|
|
000000CC E100 MOV #0,R1
|
|
000000CE E704 MOV #4,R7
|
|
000000D0 6013 MOV R1,R0
|
|
000000D2 L1126:
|
|
Monochrome 178 {
|
|
Monochrome 179 *LCD_register_selector = 4;
|
|
Monochrome 180 *LCD_data_register = i|192;
|
|
000000D2 E2C0 MOV #-64,R2
|
|
000000D4 2570 MOV.B R7,@R5
|
|
Monochrome 181 *LCD_register_selector = 4;
|
|
Monochrome 182 *LCD_data_register = 0;
|
|
Monochrome 183 *LCD_register_selector = 7;
|
|
Monochrome 184 for(j=0 ; j<16 ; j++) *LCD_data_register = *vram++;
|
|
000000D6 66A3 MOV R10,R6
|
|
000000D8 220B OR R0,R2
|
|
000000DA 2420 MOV.B R2,@R4
|
|
000000DC 2570 MOV.B R7,@R5
|
|
000000DE 2410 MOV.B R1,@R4
|
|
000000E0 25B0 MOV.B R11,@R5
|
|
000000E2 L1127:
|
|
000000E2 4610 DT R6
|
|
000000E4 63C4 MOV.B @R12+,R3
|
|
000000E6 8FFC BF/S L1127
|
|
000000E8 2430 MOV.B R3,@R4
|
|
000000EA 7001 ADD #1,R0
|
|
000000EC 3093 CMP/GE R9,R0
|
|
000000EE 8BF0 BF L1126
|
|
Monochrome 185 }
|
|
Monochrome 186 }
|
|
000000F0 4F26 LDS.L @R15+,PR
|
|
000000F2 69F6 MOV.L @R15+,R9
|
|
000000F4 6AF6 MOV.L @R15+,R10
|
|
000000F6 6BF6 MOV.L @R15+,R11
|
|
000000F8 000B RTS
|
|
000000FA 6CF6 MOV.L @R15+,R12
|
|
Monochrome 187 #endif
|
|
Monochrome 188
|
|
Monochrome 189 #ifdef ML_SET_CONTRAST
|
|
Monochrome 190 void ML_set_contrast(unsigned char contrast)
|
|
000000FC _ML_set_contrast: ; function: ML_set_contrast
|
|
; frame size=0
|
|
Monochrome 191 {
|
|
Monochrome 192 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
|
|
Monochrome 193 *LCD_register_selector = 6;
|
|
000000FC D207 MOV.L L1650+8,R2 ; H'B4000000
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 7
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000000FE E306 MOV #6,R3
|
|
Monochrome 194 *LCD_data_register = contrast;
|
|
00000100 D107 MOV.L L1650+12,R1; H'B4010000
|
|
00000102 2230 MOV.B R3,@R2
|
|
Monochrome 195 }
|
|
00000104 000B RTS
|
|
00000106 2140 MOV.B R4,@R1
|
|
Monochrome 196 #endif
|
|
Monochrome 197
|
|
Monochrome 198 #ifdef ML_GET_CONTRAST
|
|
Monochrome 199 unsigned char ML_get_contrast()
|
|
00000108 _ML_get_contrast: ; function: ML_get_contrast
|
|
; frame size=0
|
|
Monochrome 200 {
|
|
Monochrome 201 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
|
|
Monochrome 202 *LCD_register_selector = 6;
|
|
00000108 D204 MOV.L L1650+8,R2 ; H'B4000000
|
|
0000010A E306 MOV #6,R3
|
|
Monochrome 203 return *LCD_data_register;
|
|
0000010C D104 MOV.L L1650+12,R1; H'B4010000
|
|
0000010E 2230 MOV.B R3,@R2
|
|
Monochrome 204 }
|
|
00000110 000B RTS
|
|
00000112 6010 MOV.B @R1,R0
|
|
00000114 L1650:
|
|
00000114 0135 .DATA.W H'0135
|
|
00000116 03FC .DATA.W H'03FC
|
|
00000118 <00000000> .DATA.L __$SysCall
|
|
0000011C B4000000 .DATA.L H'B4000000
|
|
00000120 B4010000 .DATA.L H'B4010000
|
|
Monochrome 205 #endif
|
|
Monochrome 206
|
|
Monochrome 207 #ifdef ML_PIXEL
|
|
Monochrome 208 void ML_pixel(int x, int y, ML_Color color)
|
|
00000124 _ML_pixel: ; function: ML_pixel
|
|
; frame size=16
|
|
00000124 2FE6 MOV.L R14,@-R15
|
|
00000126 6E43 MOV R4,R14
|
|
00000128 2FD6 MOV.L R13,@-R15
|
|
0000012A 6D53 MOV R5,R13
|
|
0000012C 4F22 STS.L PR,@-R15
|
|
0000012E 7FFC ADD #-4,R15
|
|
Monochrome 209 {
|
|
Monochrome 210 char* vram = ML_vram_adress();
|
|
00000130 BF66 BSR _ML_vram_adress
|
|
00000132 2F62 MOV.L R6,@R15
|
|
Monochrome 211 if(x&~127 || y&~63) return;
|
|
00000134 E280 MOV #-128,R2
|
|
00000136 22E8 TST R14,R2
|
|
00000138 8F35 BF/S L1131
|
|
0000013A 6603 MOV R0,R6
|
|
0000013C E1C0 MOV #-64,R1
|
|
0000013E 21D8 TST R13,R1
|
|
00000140 8B31 BF L1131
|
|
00000142 64D3 MOV R13,R4
|
|
00000144 957C MOV.W L1651,R5 ; H'0080
|
|
00000146 63E3 MOV R14,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 8
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000148 60F2 MOV.L @R15,R0
|
|
0000014A 4408 SHLL2 R4
|
|
0000014C 4408 SHLL2 R4
|
|
0000014E 4321 SHAR R3
|
|
00000150 4321 SHAR R3
|
|
00000152 4321 SHAR R3
|
|
00000154 343C ADD R3,R4
|
|
00000156 346C ADD R6,R4
|
|
00000158 E307 MOV #7,R3
|
|
0000015A 23E9 AND R14,R3
|
|
0000015C 633B NEG R3,R3
|
|
0000015E 8801 CMP/EQ #1,R0
|
|
00000160 8D08 BT/S L1101
|
|
00000162 453C SHAD R3,R5
|
|
00000164 8800 CMP/EQ #0,R0
|
|
00000166 8908 BT L1102
|
|
00000168 8802 CMP/EQ #2,R0
|
|
0000016A 890A BT L1103
|
|
0000016C 8803 CMP/EQ #3,R0
|
|
0000016E 890C BT L1104
|
|
00000170 A019 BRA L1131
|
|
00000172 0009 NOP
|
|
00000174 L1101: ; case label
|
|
Monochrome 212 switch(color)
|
|
Monochrome 213 {
|
|
Monochrome 214 case ML_BLACK:
|
|
Monochrome 215 vram[(y<<4)+(x>>3)] |= 128>>(x&7);
|
|
00000174 6340 MOV.B @R4,R3
|
|
Monochrome 216 break;
|
|
00000176 A011 BRA L1648
|
|
00000178 235B OR R5,R3
|
|
0000017A L1102: ; case label
|
|
Monochrome 217 case ML_WHITE:
|
|
Monochrome 218 vram[(y<<4)+(x>>3)] &= ~(128>>(x&7));
|
|
0000017A 6557 NOT R5,R5
|
|
0000017C 6340 MOV.B @R4,R3
|
|
Monochrome 219 break;
|
|
0000017E A00D BRA L1648
|
|
00000180 2359 AND R5,R3
|
|
00000182 L1103: ; case label
|
|
Monochrome 220 case ML_XOR:
|
|
Monochrome 221 vram[(y<<4)+(x>>3)] ^= 128>>(x&7);
|
|
00000182 6140 MOV.B @R4,R1
|
|
00000184 215A XOR R5,R1
|
|
Monochrome 222 break;
|
|
00000186 A00E BRA L1131
|
|
00000188 2410 MOV.B R1,@R4
|
|
0000018A L1104: ; case label
|
|
Monochrome 223 case ML_CHECKER:
|
|
Monochrome 224 if(y&1^x&1) vram[(y<<4)+(x>>3)] &= ~(128>>(x&7));
|
|
0000018A E601 MOV #1,R6
|
|
0000018C 2D69 AND R6,R13
|
|
0000018E 2E69 AND R6,R14
|
|
00000190 2DEA XOR R14,R13
|
|
00000192 2DD8 TST R13,R13
|
|
00000194 8904 BT L1133
|
|
00000196 6557 NOT R5,R5
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 9
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000198 6340 MOV.B @R4,R3
|
|
0000019A 2359 AND R5,R3
|
|
0000019C L1648:
|
|
0000019C A003 BRA L1131
|
|
0000019E 2430 MOV.B R3,@R4
|
|
000001A0 L1133:
|
|
Monochrome 225 else vram[(y<<4)+(x>>3)] |= 128>>(x&7);
|
|
000001A0 6140 MOV.B @R4,R1
|
|
000001A2 215B OR R5,R1
|
|
000001A4 2410 MOV.B R1,@R4
|
|
Monochrome 226 break;
|
|
Monochrome 227 }
|
|
Monochrome 228 }
|
|
000001A6 L1131:
|
|
000001A6 7F04 ADD #4,R15
|
|
000001A8 4F26 LDS.L @R15+,PR
|
|
000001AA 6DF6 MOV.L @R15+,R13
|
|
000001AC 000B RTS
|
|
000001AE 6EF6 MOV.L @R15+,R14
|
|
Monochrome 229 #endif
|
|
Monochrome 230
|
|
Monochrome 231 #ifdef ML_POINT
|
|
Monochrome 232 void ML_point(int x, int y, int width, ML_Color color)
|
|
000001B0 _ML_point: ; function: ML_point
|
|
; frame size=36
|
|
000001B0 2FE6 MOV.L R14,@-R15
|
|
Monochrome 233 {
|
|
Monochrome 234 if(width < 1) return;
|
|
000001B2 E301 MOV #1,R3
|
|
000001B4 2FD6 MOV.L R13,@-R15
|
|
000001B6 3633 CMP/GE R3,R6
|
|
000001B8 2FC6 MOV.L R12,@-R15
|
|
000001BA 6D53 MOV R5,R13
|
|
000001BC 2FB6 MOV.L R11,@-R15
|
|
000001BE 6C43 MOV R4,R12
|
|
000001C0 4F22 STS.L PR,@-R15
|
|
000001C2 7FFC ADD #-4,R15
|
|
000001C4 8F24 BF/S L1136
|
|
000001C6 2F72 MOV.L R7,@R15
|
|
Monochrome 235 if(width == 1) ML_pixel(x, y, color);
|
|
000001C8 6063 MOV R6,R0
|
|
000001CA 8801 CMP/EQ #1,R0
|
|
000001CC 8B09 BF L1137
|
|
000001CE 65D3 MOV R13,R5
|
|
000001D0 66F2 MOV.L @R15,R6
|
|
000001D2 64C3 MOV R12,R4
|
|
000001D4 7F04 ADD #4,R15
|
|
000001D6 4F26 LDS.L @R15+,PR
|
|
000001D8 6BF6 MOV.L @R15+,R11
|
|
000001DA 6CF6 MOV.L @R15+,R12
|
|
000001DC 6DF6 MOV.L @R15+,R13
|
|
000001DE AFA1 BRA _ML_pixel
|
|
000001E0 6EF6 MOV.L @R15+,R14
|
|
000001E2 L1137:
|
|
Monochrome 236 else
|
|
Monochrome 237 {
|
|
Monochrome 238 int padding, pair;
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 10
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 239 padding = width>>1;
|
|
000001E2 6E63 MOV R6,R14
|
|
Monochrome 240 pair = !(width&1);
|
|
Monochrome 241 ML_rectangle(x-padding+pair, y-padding+pair, x+padding, y+padding, 0, 0, color);
|
|
000001E4 63F2 MOV.L @R15,R3
|
|
000001E6 E200 MOV #0,R2
|
|
000001E8 2F36 MOV.L R3,@-R15
|
|
000001EA 67D3 MOV R13,R7
|
|
000001EC 2F26 MOV.L R2,@-R15
|
|
000001EE 65D3 MOV R13,R5
|
|
000001F0 2F26 MOV.L R2,@-R15
|
|
000001F2 64C3 MOV R12,R4
|
|
000001F4 4E21 SHAR R14
|
|
000001F6 EB01 MOV #1,R11
|
|
000001F8 2B69 AND R6,R11
|
|
000001FA 2BB8 TST R11,R11
|
|
000001FC 0B29 MOVT R11
|
|
000001FE 37EC ADD R14,R7
|
|
00000200 66C3 MOV R12,R6
|
|
00000202 36EC ADD R14,R6
|
|
00000204 35E8 SUB R14,R5
|
|
00000206 35BC ADD R11,R5
|
|
00000208 34E8 SUB R14,R4
|
|
0000020A B293 BSR _ML_rectangle
|
|
0000020C 34BC ADD R11,R4
|
|
0000020E 7F0C ADD #12,R15
|
|
Monochrome 242 }
|
|
Monochrome 243 }
|
|
00000210 L1136:
|
|
00000210 7F04 ADD #4,R15
|
|
00000212 4F26 LDS.L @R15+,PR
|
|
00000214 6BF6 MOV.L @R15+,R11
|
|
00000216 6CF6 MOV.L @R15+,R12
|
|
00000218 6DF6 MOV.L @R15+,R13
|
|
0000021A 000B RTS
|
|
0000021C 6EF6 MOV.L @R15+,R14
|
|
Monochrome 244 #endif
|
|
Monochrome 245
|
|
Monochrome 246 #ifdef ML_PIXEL_TEST
|
|
Monochrome 247 ML_Color ML_pixel_test(int x, int y)
|
|
0000021E _ML_pixel_test: ; function: ML_pixel_test
|
|
; frame size=12
|
|
Monochrome 248 {
|
|
Monochrome 249 char *vram, byte;
|
|
Monochrome 250 if(x&~127 || y&~63) return ML_TRANSPARENT;
|
|
0000021E E380 MOV #-128,R3
|
|
00000220 2FE6 MOV.L R14,@-R15
|
|
00000222 6E43 MOV R4,R14
|
|
00000224 4F22 STS.L PR,@-R15
|
|
00000226 23E8 TST R14,R3
|
|
00000228 7FFC ADD #-4,R15
|
|
0000022A 8F04 BF/S L1141
|
|
0000022C 2F52 MOV.L R5,@R15
|
|
0000022E E3C0 MOV #-64,R3
|
|
00000230 62F2 MOV.L @R15,R2
|
|
00000232 2238 TST R3,R2
|
|
00000234 8905 BT L1140
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 11
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000236 L1141:
|
|
00000236 E0FF MOV #-1,R0
|
|
00000238 7F04 ADD #4,R15
|
|
0000023A 4F26 LDS.L @R15+,PR
|
|
0000023C 000B RTS
|
|
0000023E 6EF6 MOV.L @R15+,R14
|
|
00000240 L1651:
|
|
00000240 0080 .DATA.W H'0080
|
|
00000242 L1140:
|
|
Monochrome 251 vram = ML_vram_adress();
|
|
00000242 BEDD BSR _ML_vram_adress
|
|
00000244 0009 NOP
|
|
00000246 6403 MOV R0,R4
|
|
Monochrome 252 byte = 1<<(7-(x&7));
|
|
Monochrome 253 return (vram[(y<<4)+(x>>3)] & byte ? ML_BLACK : ML_WHITE);
|
|
00000248 60F2 MOV.L @R15,R0
|
|
0000024A E507 MOV #7,R5
|
|
0000024C E601 MOV #1,R6
|
|
0000024E 62E3 MOV R14,R2
|
|
00000250 2259 AND R5,R2
|
|
00000252 6353 MOV R5,R3
|
|
00000254 3328 SUB R2,R3
|
|
00000256 6563 MOV R6,R5
|
|
00000258 453C SHAD R3,R5
|
|
0000025A 4008 SHLL2 R0
|
|
0000025C 4008 SHLL2 R0
|
|
0000025E 4E21 SHAR R14
|
|
00000260 4E21 SHAR R14
|
|
00000262 4E21 SHAR R14
|
|
00000264 30EC ADD R14,R0
|
|
00000266 655E EXTS.B R5,R5
|
|
00000268 004C MOV.B @(R0,R4),R0
|
|
0000026A 2058 TST R5,R0
|
|
0000026C 8904 BT L1143
|
|
0000026E 6063 MOV R6,R0
|
|
00000270 7F04 ADD #4,R15
|
|
00000272 4F26 LDS.L @R15+,PR
|
|
00000274 000B RTS
|
|
00000276 6EF6 MOV.L @R15+,R14
|
|
00000278 L1143:
|
|
00000278 E000 MOV #0,R0
|
|
Monochrome 254
|
|
Monochrome 255 }
|
|
0000027A L1142:
|
|
0000027A 7F04 ADD #4,R15
|
|
0000027C 4F26 LDS.L @R15+,PR
|
|
0000027E 000B RTS
|
|
00000280 6EF6 MOV.L @R15+,R14
|
|
Monochrome 256 #endif
|
|
Monochrome 257
|
|
Monochrome 258 #ifdef ML_LINE
|
|
Monochrome 259 void ML_line(int x1, int y1, int x2, int y2, ML_Color color)
|
|
00000282 _ML_line: ; function: ML_line
|
|
; frame size=40
|
|
00000282 2FE6 MOV.L R14,@-R15
|
|
00000284 2FD6 MOV.L R13,@-R15
|
|
Monochrome 260 {
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 12
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 261 int i, x, y, dx, dy, sx, sy, cumul;
|
|
Monochrome 262 x = x1;
|
|
Monochrome 263 y = y1;
|
|
Monochrome 264 dx = x2 - x1;
|
|
00000286 6E63 MOV R6,R14
|
|
00000288 2FC6 MOV.L R12,@-R15
|
|
0000028A 3E48 SUB R4,R14
|
|
0000028C 2FB6 MOV.L R11,@-R15
|
|
0000028E 6C53 MOV R5,R12
|
|
00000290 2FA6 MOV.L R10,@-R15
|
|
00000292 6B43 MOV R4,R11
|
|
00000294 2F96 MOV.L R9,@-R15
|
|
Monochrome 265 dy = y2 - y1;
|
|
00000296 6A73 MOV R7,R10
|
|
00000298 2F86 MOV.L R8,@-R15
|
|
Monochrome 266 sx = sgn(dx);
|
|
0000029A 4E11 CMP/PZ R14
|
|
0000029C 4F22 STS.L PR,@-R15
|
|
0000029E 7FF8 ADD #-8,R15
|
|
000002A0 59FA MOV.L @(40,R15),R9
|
|
000002A2 8D02 BT/S L1145
|
|
000002A4 3A58 SUB R5,R10
|
|
000002A6 A001 BRA L1146
|
|
000002A8 E8FF MOV #-1,R8
|
|
000002AA L1145:
|
|
000002AA E801 MOV #1,R8
|
|
000002AC L1146:
|
|
Monochrome 267 sy = sgn(dy);
|
|
000002AC 4A11 CMP/PZ R10
|
|
000002AE 8901 BT L1147
|
|
000002B0 A001 BRA L1148
|
|
000002B2 E2FF MOV #-1,R2
|
|
000002B4 L1147:
|
|
000002B4 E201 MOV #1,R2
|
|
000002B6 L1148:
|
|
000002B6 1F21 MOV.L R2,@(4,R15)
|
|
Monochrome 268 dx = abs(dx);
|
|
000002B8 D326 MOV.L L1652+2,R3 ; _abs
|
|
000002BA 430B JSR @R3
|
|
000002BC 64E3 MOV R14,R4
|
|
000002BE 6D03 MOV R0,R13
|
|
Monochrome 269 dy = abs(dy);
|
|
000002C0 D224 MOV.L L1652+2,R2 ; _abs
|
|
000002C2 420B JSR @R2
|
|
000002C4 64A3 MOV R10,R4
|
|
000002C6 6E03 MOV R0,R14
|
|
Monochrome 270 ML_pixel(x, y, color);
|
|
000002C8 6693 MOV R9,R6
|
|
000002CA 65C3 MOV R12,R5
|
|
000002CC BF2A BSR _ML_pixel
|
|
000002CE 64B3 MOV R11,R4
|
|
Monochrome 271 if(dx > dy)
|
|
000002D0 3DE7 CMP/GT R14,R13
|
|
000002D2 8F1B BF/S L1149
|
|
000002D4 E401 MOV #1,R4
|
|
Monochrome 272 {
|
|
Monochrome 273 cumul = dx / 2;
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 13
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000002D6 6AD3 MOV R13,R10
|
|
000002D8 E300 MOV #0,R3
|
|
000002DA 33A7 CMP/GT R10,R3
|
|
000002DC 3A3E ADDC R3,R10
|
|
000002DE 4A21 SHAR R10
|
|
Monochrome 274 for(i=1 ; i<dx ; i++)
|
|
000002E0 6343 MOV R4,R3
|
|
000002E2 33D3 CMP/GE R13,R3
|
|
000002E4 8D2B BT/S L1153
|
|
000002E6 2F42 MOV.L R4,@R15
|
|
000002E8 L1151:
|
|
Monochrome 275 {
|
|
Monochrome 276 x += sx;
|
|
Monochrome 277 cumul += dy;
|
|
000002E8 3AEC ADD R14,R10
|
|
Monochrome 278 if(cumul > dx)
|
|
000002EA 3AD7 CMP/GT R13,R10
|
|
000002EC 8F03 BF/S L1152
|
|
000002EE 3B8C ADD R8,R11
|
|
Monochrome 279 {
|
|
Monochrome 280 cumul -= dx;
|
|
Monochrome 281 y += sy;
|
|
000002F0 52F1 MOV.L @(4,R15),R2
|
|
000002F2 3AD8 SUB R13,R10
|
|
000002F4 3C2C ADD R2,R12
|
|
000002F6 L1152:
|
|
Monochrome 282 }
|
|
Monochrome 283 ML_pixel(x, y, color);
|
|
000002F6 6693 MOV R9,R6
|
|
000002F8 65C3 MOV R12,R5
|
|
000002FA BF13 BSR _ML_pixel
|
|
000002FC 64B3 MOV R11,R4
|
|
000002FE 62F2 MOV.L @R15,R2
|
|
00000300 7201 ADD #1,R2
|
|
00000302 32D3 CMP/GE R13,R2
|
|
00000304 8FF0 BF/S L1151
|
|
00000306 2F22 MOV.L R2,@R15
|
|
00000308 A019 BRA L1153
|
|
0000030A 0009 NOP
|
|
0000030C L1149:
|
|
Monochrome 284 }
|
|
Monochrome 285 }
|
|
Monochrome 286 else
|
|
Monochrome 287 {
|
|
Monochrome 288 cumul = dy / 2;
|
|
0000030C 6AE3 MOV R14,R10
|
|
0000030E E300 MOV #0,R3
|
|
00000310 33A7 CMP/GT R10,R3
|
|
00000312 3A3E ADDC R3,R10
|
|
00000314 4A21 SHAR R10
|
|
Monochrome 289 for(i=1 ; i<dy ; i++)
|
|
00000316 6343 MOV R4,R3
|
|
00000318 33E3 CMP/GE R14,R3
|
|
0000031A 8D10 BT/S L1153
|
|
0000031C 2F42 MOV.L R4,@R15
|
|
0000031E L1155:
|
|
Monochrome 290 {
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 14
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 291 y += sy;
|
|
Monochrome 292 cumul += dx;
|
|
0000031E 3ADC ADD R13,R10
|
|
00000320 51F1 MOV.L @(4,R15),R1
|
|
Monochrome 293 if(cumul > dy)
|
|
00000322 3AE7 CMP/GT R14,R10
|
|
00000324 8F02 BF/S L1156
|
|
00000326 3C1C ADD R1,R12
|
|
Monochrome 294 {
|
|
Monochrome 295 cumul -= dy;
|
|
00000328 3AE8 SUB R14,R10
|
|
Monochrome 296 x += sx;
|
|
0000032A 3B8C ADD R8,R11
|
|
0000032C L1156:
|
|
Monochrome 297 }
|
|
Monochrome 298 ML_pixel(x, y, color);
|
|
0000032C 6693 MOV R9,R6
|
|
0000032E 65C3 MOV R12,R5
|
|
00000330 BEF8 BSR _ML_pixel
|
|
00000332 64B3 MOV R11,R4
|
|
00000334 63F2 MOV.L @R15,R3
|
|
00000336 7301 ADD #1,R3
|
|
00000338 33E3 CMP/GE R14,R3
|
|
0000033A 8FF0 BF/S L1155
|
|
0000033C 2F32 MOV.L R3,@R15
|
|
0000033E L1153:
|
|
Monochrome 299 }
|
|
Monochrome 300 }
|
|
Monochrome 301 }
|
|
0000033E 7F08 ADD #8,R15
|
|
00000340 4F26 LDS.L @R15+,PR
|
|
00000342 68F6 MOV.L @R15+,R8
|
|
00000344 69F6 MOV.L @R15+,R9
|
|
00000346 6AF6 MOV.L @R15+,R10
|
|
00000348 6BF6 MOV.L @R15+,R11
|
|
0000034A 6CF6 MOV.L @R15+,R12
|
|
0000034C 6DF6 MOV.L @R15+,R13
|
|
0000034E 000B RTS
|
|
00000350 6EF6 MOV.L @R15+,R14
|
|
00000352 L1652:
|
|
00000352 0000 .DATA.W 0
|
|
00000354 <00000000> .DATA.L _abs
|
|
Monochrome 302 #endif
|
|
Monochrome 303
|
|
Monochrome 304 #ifdef ML_HORIZONTAL_LINE
|
|
Monochrome 305 void ML_horizontal_line(int y, int x1, int x2, ML_Color color)
|
|
00000358 _ML_horizontal_line: ; function: ML_horizontal_line
|
|
; frame size=44
|
|
00000358 2FE6 MOV.L R14,@-R15
|
|
0000035A 2FD6 MOV.L R13,@-R15
|
|
0000035C 2FC6 MOV.L R12,@-R15
|
|
0000035E 6C53 MOV R5,R12
|
|
00000360 2FB6 MOV.L R11,@-R15
|
|
00000362 6B63 MOV R6,R11
|
|
00000364 2FA6 MOV.L R10,@-R15
|
|
00000366 2F96 MOV.L R9,@-R15
|
|
00000368 2F86 MOV.L R8,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 15
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000036A 4F22 STS.L PR,@-R15
|
|
0000036C 7FF4 ADD #-12,R15
|
|
0000036E 2F42 MOV.L R4,@R15
|
|
Monochrome 306 {
|
|
Monochrome 307 int i;
|
|
Monochrome 308 char checker;
|
|
Monochrome 309 char* vram = ML_vram_adress();
|
|
00000370 BE46 BSR _ML_vram_adress
|
|
00000372 1F72 MOV.L R7,@(8,R15)
|
|
Monochrome 310 if(y&~63 || (x1<0 && x2<0) || (x1>127 && x2>127)) return;
|
|
00000374 62F2 MOV.L @R15,R2
|
|
00000376 6603 MOV R0,R6
|
|
00000378 E3C0 MOV #-64,R3
|
|
0000037A 2238 TST R3,R2
|
|
0000037C 8901 BT L1653
|
|
0000037E A134 BRA L1160
|
|
00000380 0009 NOP
|
|
00000382 L1653:
|
|
00000382 4C11 CMP/PZ R12
|
|
00000384 8903 BT L1159
|
|
00000386 4B11 CMP/PZ R11
|
|
00000388 8901 BT L1654
|
|
0000038A A12E BRA L1160
|
|
0000038C 0009 NOP
|
|
0000038E L1654:
|
|
0000038E L1159:
|
|
0000038E E37F MOV #127,R3
|
|
00000390 3C37 CMP/GT R3,R12
|
|
00000392 8B03 BF L1157
|
|
00000394 3B37 CMP/GT R3,R11
|
|
00000396 8B01 BF L1655
|
|
00000398 A127 BRA L1160
|
|
0000039A 0009 NOP
|
|
0000039C L1655:
|
|
0000039C L1157:
|
|
Monochrome 311 if(x1 > x2)
|
|
0000039C 3CB7 CMP/GT R11,R12
|
|
0000039E 8F03 BF/S L1161
|
|
Monochrome 312 {
|
|
Monochrome 313 i = x1;
|
|
Monochrome 314 x1 = x2;
|
|
Monochrome 315 x2 = i;
|
|
Monochrome 316 }
|
|
Monochrome 317 if(x1 < 0) x1 = 0;
|
|
000003A0 E800 MOV #0,R8
|
|
000003A2 64C3 MOV R12,R4
|
|
000003A4 6CB3 MOV R11,R12
|
|
000003A6 6B43 MOV R4,R11
|
|
000003A8 L1161:
|
|
000003A8 4C11 CMP/PZ R12
|
|
000003AA 8D01 BT/S L1162
|
|
Monochrome 318 if(x2 > 127) x2 = 127;
|
|
000003AC E47F MOV #127,R4
|
|
000003AE 6C83 MOV R8,R12
|
|
000003B0 L1162:
|
|
000003B0 3B47 CMP/GT R4,R11
|
|
000003B2 8F01 BF/S L1163
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 16
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000003B4 E707 MOV #7,R7
|
|
000003B6 6B43 MOV R4,R11
|
|
000003B8 L1163:
|
|
000003B8 9436 MOV.W L1656,R4 ; H'00FF
|
|
000003BA 65C3 MOV R12,R5
|
|
000003BC 6DF2 MOV.L @R15,R13
|
|
000003BE 69C3 MOV R12,R9
|
|
000003C0 4521 SHAR R5
|
|
000003C2 4521 SHAR R5
|
|
000003C4 4521 SHAR R5
|
|
000003C6 6EB3 MOV R11,R14
|
|
000003C8 4E21 SHAR R14
|
|
000003CA 4E21 SHAR R14
|
|
000003CC 4E21 SHAR R14
|
|
000003CE 4D08 SHLL2 R13
|
|
000003D0 4D08 SHLL2 R13
|
|
000003D2 2979 AND R7,R9
|
|
000003D4 6AB3 MOV R11,R10
|
|
000003D6 60C3 MOV R12,R0
|
|
000003D8 4011 CMP/PZ R0
|
|
000003DA 8F02 BF/S L1164
|
|
000003DC 2A79 AND R7,R10
|
|
000003DE A005 BRA L1165
|
|
000003E0 C907 AND #7,R0
|
|
000003E2 L1164:
|
|
000003E2 6007 NOT R0,R0
|
|
000003E4 7001 ADD #1,R0
|
|
000003E6 C907 AND #7,R0
|
|
000003E8 6007 NOT R0,R0
|
|
000003EA 7001 ADD #1,R0
|
|
000003EC L1165:
|
|
000003EC 6303 MOV R0,R3
|
|
000003EE 60B3 MOV R11,R0
|
|
000003F0 4011 CMP/PZ R0
|
|
000003F2 8B01 BF L1166
|
|
000003F4 A005 BRA L1167
|
|
000003F6 C907 AND #7,R0
|
|
000003F8 L1166:
|
|
000003F8 6007 NOT R0,R0
|
|
000003FA 7001 ADD #1,R0
|
|
000003FC C907 AND #7,R0
|
|
000003FE 6007 NOT R0,R0
|
|
00000400 7001 ADD #1,R0
|
|
00000402 L1167:
|
|
00000402 3308 SUB R0,R3
|
|
00000404 7307 ADD #7,R3
|
|
00000406 633B NEG R3,R3
|
|
00000408 6043 MOV R4,R0
|
|
0000040A 403C SHAD R3,R0
|
|
0000040C 1F01 MOV.L R0,@(4,R15)
|
|
0000040E 50F2 MOV.L @(8,R15),R0
|
|
00000410 8801 CMP/EQ #1,R0
|
|
00000412 890A BT L1105
|
|
00000414 8800 CMP/EQ #0,R0
|
|
00000416 8932 BT L1106
|
|
00000418 8802 CMP/EQ #2,R0
|
|
0000041A 8963 BT L1107
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 17
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000041C 8803 CMP/EQ #3,R0
|
|
0000041E 8B01 BF L1657
|
|
00000420 A08F BRA L1108
|
|
00000422 0009 NOP
|
|
00000424 L1657:
|
|
00000424 A0E1 BRA L1160
|
|
00000426 0009 NOP
|
|
00000428 L1656:
|
|
00000428 00FF .DATA.W H'00FF
|
|
0000042A L1105: ; case label
|
|
Monochrome 319 switch(color)
|
|
Monochrome 320 {
|
|
Monochrome 321 case ML_BLACK:
|
|
Monochrome 322 if(x1>>3 != x2>>3)
|
|
0000042A 35E0 CMP/EQ R14,R5
|
|
0000042C 891E BT L1169
|
|
Monochrome 323 {
|
|
Monochrome 324 vram[(y<<4)+(x1>>3)] |= 255 >> (x1&7);
|
|
0000042E 60D3 MOV R13,R0
|
|
00000430 305C ADD R5,R0
|
|
00000432 639B NEG R9,R3
|
|
00000434 016C MOV.B @(R0,R6),R1
|
|
Monochrome 325 vram[(y<<4)+(x2>>3)] |= 255 << 7-(x2&7);
|
|
00000436 37A8 SUB R10,R7
|
|
00000438 6243 MOV R4,R2
|
|
0000043A 423C SHAD R3,R2
|
|
0000043C 212B OR R2,R1
|
|
0000043E 447C SHAD R7,R4
|
|
00000440 0614 MOV.B R1,@(R0,R6)
|
|
Monochrome 326 for(i=(x1>>3)+1 ; i<x2>>3 ; i++)
|
|
00000442 7501 ADD #1,R5
|
|
00000444 60E3 MOV R14,R0
|
|
00000446 30DC ADD R13,R0
|
|
00000448 036C MOV.B @(R0,R6),R3
|
|
0000044A 35E3 CMP/GE R14,R5
|
|
0000044C 234B OR R4,R3
|
|
0000044E 64D3 MOV R13,R4
|
|
00000450 0634 MOV.B R3,@(R0,R6)
|
|
00000452 345C ADD R5,R4
|
|
00000454 346C ADD R6,R4
|
|
00000456 8F02 BF/S L1658
|
|
00000458 E6FF MOV #-1,R6
|
|
0000045A A0C6 BRA L1160
|
|
0000045C 0009 NOP
|
|
0000045E L1658:
|
|
0000045E L1171:
|
|
0000045E 7501 ADD #1,R5
|
|
Monochrome 327 vram[(y<<4) + i] = 255;
|
|
00000460 2460 MOV.B R6,@R4
|
|
00000462 35E3 CMP/GE R14,R5
|
|
00000464 8FFB BF/S L1171
|
|
00000466 7401 ADD #1,R4
|
|
00000468 A0BF BRA L1160
|
|
0000046A 0009 NOP
|
|
0000046C L1169:
|
|
Monochrome 328 }
|
|
Monochrome 329 else vram[(y<<4)+(x1>>3)] |= (255>>(x1%8 + 7-x2%8))<<(7-(x2&7));
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 18
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000046C 53F1 MOV.L @(4,R15),R3
|
|
0000046E 60D3 MOV R13,R0
|
|
00000470 305C ADD R5,R0
|
|
00000472 37A8 SUB R10,R7
|
|
00000474 026C MOV.B @(R0,R6),R2
|
|
00000476 437C SHAD R7,R3
|
|
00000478 223B OR R3,R2
|
|
Monochrome 330 break;
|
|
0000047A A0B6 BRA L1160
|
|
0000047C 0624 MOV.B R2,@(R0,R6)
|
|
0000047E L1106: ; case label
|
|
Monochrome 331 case ML_WHITE:
|
|
Monochrome 332 if(x1>>3 != x2>>3)
|
|
0000047E 35E0 CMP/EQ R14,R5
|
|
00000480 8920 BT L1173
|
|
Monochrome 333 {
|
|
Monochrome 334 vram[(y<<4)+(x1>>3)] &= 255 << 8-(x1&7);
|
|
00000482 60D3 MOV R13,R0
|
|
00000484 305C ADD R5,R0
|
|
00000486 E308 MOV #8,R3
|
|
00000488 3398 SUB R9,R3
|
|
0000048A 6243 MOV R4,R2
|
|
0000048C 423C SHAD R3,R2
|
|
Monochrome 335 vram[(y<<4)+(x2>>3)] &= 255 >> 1+(x2&7);
|
|
Monochrome 336 for(i=(x1>>3)+1 ; i<x2>>3 ; i++)
|
|
0000048E 7501 ADD #1,R5
|
|
00000490 036C MOV.B @(R0,R6),R3
|
|
00000492 35E3 CMP/GE R14,R5
|
|
00000494 2329 AND R2,R3
|
|
00000496 0634 MOV.B R3,@(R0,R6)
|
|
00000498 60E3 MOV R14,R0
|
|
0000049A 30DC ADD R13,R0
|
|
0000049C 026C MOV.B @(R0,R6),R2
|
|
0000049E 63A3 MOV R10,R3
|
|
000004A0 7301 ADD #1,R3
|
|
000004A2 633B NEG R3,R3
|
|
000004A4 443C SHAD R3,R4
|
|
000004A6 2249 AND R4,R2
|
|
000004A8 0624 MOV.B R2,@(R0,R6)
|
|
000004AA 64D3 MOV R13,R4
|
|
000004AC 345C ADD R5,R4
|
|
000004AE 8F02 BF/S L1659
|
|
000004B0 346C ADD R6,R4
|
|
000004B2 A09A BRA L1160
|
|
000004B4 0009 NOP
|
|
000004B6 L1659:
|
|
000004B6 L1175:
|
|
000004B6 7501 ADD #1,R5
|
|
Monochrome 337 vram[(y<<4) + i] = 0;
|
|
000004B8 2480 MOV.B R8,@R4
|
|
000004BA 35E3 CMP/GE R14,R5
|
|
000004BC 8FFB BF/S L1175
|
|
000004BE 7401 ADD #1,R4
|
|
000004C0 A093 BRA L1160
|
|
000004C2 0009 NOP
|
|
000004C4 L1173:
|
|
Monochrome 338 }
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 19
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 339 else vram[(y<<4)+(x1>>3)] &= (255<<8-(x1&7)) | (255>>1+(x2&7));
|
|
000004C4 60D3 MOV R13,R0
|
|
000004C6 305C ADD R5,R0
|
|
000004C8 E308 MOV #8,R3
|
|
000004CA 3398 SUB R9,R3
|
|
000004CC 6243 MOV R4,R2
|
|
000004CE 423C SHAD R3,R2
|
|
000004D0 63A3 MOV R10,R3
|
|
000004D2 7301 ADD #1,R3
|
|
000004D4 633B NEG R3,R3
|
|
000004D6 6143 MOV R4,R1
|
|
000004D8 413C SHAD R3,R1
|
|
000004DA 221B OR R1,R2
|
|
000004DC 036C MOV.B @(R0,R6),R3
|
|
000004DE 2329 AND R2,R3
|
|
Monochrome 340 break;
|
|
000004E0 A083 BRA L1160
|
|
000004E2 0634 MOV.B R3,@(R0,R6)
|
|
000004E4 L1107: ; case label
|
|
Monochrome 341 case ML_XOR:
|
|
Monochrome 342 if(x1>>3 != x2>>3)
|
|
000004E4 35E0 CMP/EQ R14,R5
|
|
000004E6 891E BT L1177
|
|
Monochrome 343 {
|
|
Monochrome 344 vram[(y<<4)+(x1>>3)] ^= 255 >> (x1&7);
|
|
000004E8 60D3 MOV R13,R0
|
|
000004EA 305C ADD R5,R0
|
|
000004EC 016C MOV.B @(R0,R6),R1
|
|
Monochrome 345 vram[(y<<4)+(x2>>3)] ^= 255 << 7-(x2&7);
|
|
000004EE 37A8 SUB R10,R7
|
|
000004F0 639B NEG R9,R3
|
|
000004F2 6243 MOV R4,R2
|
|
000004F4 423C SHAD R3,R2
|
|
000004F6 212A XOR R2,R1
|
|
000004F8 0614 MOV.B R1,@(R0,R6)
|
|
000004FA 6343 MOV R4,R3
|
|
000004FC 60E3 MOV R14,R0
|
|
000004FE 30DC ADD R13,R0
|
|
00000500 026C MOV.B @(R0,R6),R2
|
|
Monochrome 346 for(i=(x1>>3)+1 ; i<(x2>>3) ; i++)
|
|
00000502 7501 ADD #1,R5
|
|
00000504 437C SHAD R7,R3
|
|
00000506 223A XOR R3,R2
|
|
00000508 0624 MOV.B R2,@(R0,R6)
|
|
0000050A 63D3 MOV R13,R3
|
|
0000050C 335C ADD R5,R3
|
|
0000050E 35E3 CMP/GE R14,R5
|
|
00000510 8D6B BT/S L1160
|
|
00000512 363C ADD R3,R6
|
|
00000514 L1179:
|
|
Monochrome 347 vram[(y<<4) + i] ^= 255;
|
|
00000514 6360 MOV.B @R6,R3
|
|
00000516 7501 ADD #1,R5
|
|
00000518 234A XOR R4,R3
|
|
0000051A 35E3 CMP/GE R14,R5
|
|
0000051C 2630 MOV.B R3,@R6
|
|
0000051E 8FF9 BF/S L1179
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 20
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000520 7601 ADD #1,R6
|
|
00000522 A062 BRA L1160
|
|
00000524 0009 NOP
|
|
00000526 L1177:
|
|
Monochrome 348 }
|
|
Monochrome 349 else vram[(y<<4)+(x1>>3)] ^= (255>>((x1&7) + 7-(x2&7)))<<(7-(x2&7));
|
|
00000526 60D3 MOV R13,R0
|
|
00000528 305C ADD R5,R0
|
|
0000052A 6393 MOV R9,R3
|
|
0000052C 33A8 SUB R10,R3
|
|
0000052E 7307 ADD #7,R3
|
|
00000530 633B NEG R3,R3
|
|
00000532 443C SHAD R3,R4
|
|
00000534 036C MOV.B @(R0,R6),R3
|
|
00000536 E207 MOV #7,R2
|
|
00000538 32A8 SUB R10,R2
|
|
0000053A 442C SHAD R2,R4
|
|
0000053C 234A XOR R4,R3
|
|
Monochrome 350 break;
|
|
0000053E A054 BRA L1160
|
|
00000540 0634 MOV.B R3,@(R0,R6)
|
|
00000542 L1108: ; case label
|
|
Monochrome 351 case ML_CHECKER:
|
|
Monochrome 352 checker = (y&1 ? 85 : 170);
|
|
00000542 60F2 MOV.L @R15,R0
|
|
00000544 C801 TST #1,R0
|
|
00000546 8901 BT L1181
|
|
00000548 A001 BRA L1182
|
|
0000054A EC55 MOV #85,R12
|
|
0000054C L1181:
|
|
0000054C 9C57 MOV.W L1660,R12 ; H'00AA
|
|
0000054E L1182:
|
|
Monochrome 353 if(x1>>3 != x2>>3)
|
|
0000054E 35E0 CMP/EQ R14,R5
|
|
00000550 8932 BT L1183
|
|
Monochrome 354 {
|
|
Monochrome 355 vram[(y<<4)+(x1>>3)] &= 255 << 8-(x1&7);
|
|
00000552 63D3 MOV R13,R3
|
|
00000554 335C ADD R5,R3
|
|
00000556 336C ADD R6,R3
|
|
00000558 1F31 MOV.L R3,@(4,R15)
|
|
0000055A 629B NEG R9,R2
|
|
0000055C 7208 ADD #8,R2
|
|
0000055E 6143 MOV R4,R1
|
|
00000560 412C SHAD R2,R1
|
|
00000562 6230 MOV.B @R3,R2
|
|
00000564 2219 AND R1,R2
|
|
Monochrome 356 vram[(y<<4)+(x2>>3)] &= 255 >> 1+(x2&7);
|
|
00000566 6143 MOV R4,R1
|
|
00000568 2320 MOV.B R2,@R3
|
|
0000056A 63E3 MOV R14,R3
|
|
0000056C 33DC ADD R13,R3
|
|
0000056E 336C ADD R6,R3
|
|
00000570 2F32 MOV.L R3,@R15
|
|
00000572 62A3 MOV R10,R2
|
|
00000574 6030 MOV.B @R3,R0
|
|
00000576 7201 ADD #1,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 21
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000578 622B NEG R2,R2
|
|
0000057A 412C SHAD R2,R1
|
|
0000057C 2019 AND R1,R0
|
|
Monochrome 357 vram[(y<<4)+(x1>>3)] |= checker & 255>>(x1&7);
|
|
0000057E 629B NEG R9,R2
|
|
00000580 2300 MOV.B R0,@R3
|
|
00000582 6143 MOV R4,R1
|
|
00000584 53F1 MOV.L @(4,R15),R3
|
|
00000586 412C SHAD R2,R1
|
|
00000588 6230 MOV.B @R3,R2
|
|
0000058A 21C9 AND R12,R1
|
|
0000058C 221B OR R1,R2
|
|
0000058E 2320 MOV.B R2,@R3
|
|
Monochrome 358 vram[(y<<4)+(x2>>3)] |= checker & 255<<7-(x2&7);
|
|
00000590 63F2 MOV.L @R15,R3
|
|
00000592 37A8 SUB R10,R7
|
|
00000594 6230 MOV.B @R3,R2
|
|
Monochrome 359 for(i=(x1>>3)+1 ; i<x2>>3 ; i++)
|
|
00000596 7501 ADD #1,R5
|
|
00000598 447C SHAD R7,R4
|
|
0000059A 24C9 AND R12,R4
|
|
0000059C 224B OR R4,R2
|
|
0000059E 64D3 MOV R13,R4
|
|
000005A0 2320 MOV.B R2,@R3
|
|
000005A2 35E3 CMP/GE R14,R5
|
|
000005A4 345C ADD R5,R4
|
|
000005A6 8D20 BT/S L1160
|
|
000005A8 346C ADD R6,R4
|
|
000005AA L1185:
|
|
000005AA 7501 ADD #1,R5
|
|
Monochrome 360 vram[(y<<4) + i] = checker;
|
|
000005AC 24C0 MOV.B R12,@R4
|
|
000005AE 35E3 CMP/GE R14,R5
|
|
000005B0 8FFB BF/S L1185
|
|
000005B2 7401 ADD #1,R4
|
|
000005B4 A019 BRA L1160
|
|
000005B6 0009 NOP
|
|
000005B8 L1183:
|
|
Monochrome 361 }
|
|
Monochrome 362 else
|
|
Monochrome 363 {
|
|
Monochrome 364 vram[(y<<4)+(x1>>3)] &= (255<<8-(x1&7)) | (255>>1+(x2&7));
|
|
000005B8 63D3 MOV R13,R3
|
|
000005BA 335C ADD R5,R3
|
|
000005BC 336C ADD R6,R3
|
|
000005BE E208 MOV #8,R2
|
|
000005C0 2F32 MOV.L R3,@R15
|
|
000005C2 6143 MOV R4,R1
|
|
000005C4 3298 SUB R9,R2
|
|
000005C6 412C SHAD R2,R1
|
|
000005C8 62A3 MOV R10,R2
|
|
000005CA 7201 ADD #1,R2
|
|
000005CC 622B NEG R2,R2
|
|
000005CE 6043 MOV R4,R0
|
|
000005D0 402C SHAD R2,R0
|
|
000005D2 210B OR R0,R1
|
|
000005D4 6230 MOV.B @R3,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 22
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 365 vram[(y<<4)+(x1>>3)] |= checker & (255>>(x1%8 + 7-x2%8))<<(7-(x2&7));
|
|
000005D6 37A8 SUB R10,R7
|
|
000005D8 2219 AND R1,R2
|
|
000005DA 2320 MOV.B R2,@R3
|
|
000005DC 63F2 MOV.L @R15,R3
|
|
000005DE 52F1 MOV.L @(4,R15),R2
|
|
000005E0 6130 MOV.B @R3,R1
|
|
000005E2 427C SHAD R7,R2
|
|
000005E4 22C9 AND R12,R2
|
|
000005E6 212B OR R2,R1
|
|
000005E8 2310 MOV.B R1,@R3
|
|
Monochrome 366 }
|
|
Monochrome 367 break;
|
|
Monochrome 368 }
|
|
Monochrome 369 }
|
|
000005EA L1160:
|
|
000005EA 7F0C ADD #12,R15
|
|
000005EC 4F26 LDS.L @R15+,PR
|
|
000005EE 68F6 MOV.L @R15+,R8
|
|
000005F0 69F6 MOV.L @R15+,R9
|
|
000005F2 6AF6 MOV.L @R15+,R10
|
|
000005F4 6BF6 MOV.L @R15+,R11
|
|
000005F6 6CF6 MOV.L @R15+,R12
|
|
000005F8 6DF6 MOV.L @R15+,R13
|
|
000005FA 000B RTS
|
|
000005FC 6EF6 MOV.L @R15+,R14
|
|
000005FE L1660:
|
|
000005FE 00AA .DATA.W H'00AA
|
|
Monochrome 370
|
|
Monochrome 371 #endif
|
|
Monochrome 372
|
|
Monochrome 373 #ifdef ML_VERTICAL_LINE
|
|
Monochrome 374 void ML_vertical_line(int x, int y1, int y2, ML_Color color)
|
|
00000600 _ML_vertical_line: ; function: ML_vertical_line
|
|
; frame size=24
|
|
00000600 2FE6 MOV.L R14,@-R15
|
|
00000602 6E53 MOV R5,R14
|
|
00000604 2FD6 MOV.L R13,@-R15
|
|
00000606 6D63 MOV R6,R13
|
|
00000608 2FC6 MOV.L R12,@-R15
|
|
0000060A 6C43 MOV R4,R12
|
|
0000060C 4F22 STS.L PR,@-R15
|
|
0000060E 7FF8 ADD #-8,R15
|
|
Monochrome 375 {
|
|
Monochrome 376 int i, j;
|
|
Monochrome 377 char checker, byte, *vram = ML_vram_adress();
|
|
00000610 BCF6 BSR _ML_vram_adress
|
|
00000612 2F72 MOV.L R7,@R15
|
|
Monochrome 378 if(x&~127 || (y1<0 && y2<0) || (y1>63 && y2>63)) return;
|
|
00000614 E380 MOV #-128,R3
|
|
00000616 23C8 TST R12,R3
|
|
00000618 8D02 BT/S L1661
|
|
0000061A 1F01 MOV.L R0,@(4,R15)
|
|
0000061C A084 BRA L1190
|
|
0000061E 0009 NOP
|
|
00000620 L1661:
|
|
00000620 4E11 CMP/PZ R14
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 23
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000622 8903 BT L1189
|
|
00000624 4D11 CMP/PZ R13
|
|
00000626 8901 BT L1662
|
|
00000628 A07E BRA L1190
|
|
0000062A 0009 NOP
|
|
0000062C L1662:
|
|
0000062C L1189:
|
|
0000062C E33F MOV #63,R3
|
|
0000062E 3E37 CMP/GT R3,R14
|
|
00000630 8B03 BF L1187
|
|
00000632 3D37 CMP/GT R3,R13
|
|
00000634 8B01 BF L1663
|
|
00000636 A077 BRA L1190
|
|
00000638 0009 NOP
|
|
0000063A L1663:
|
|
0000063A L1187:
|
|
Monochrome 379 if(y1 > y2)
|
|
0000063A 3ED7 CMP/GT R13,R14
|
|
0000063C 8B02 BF L1191
|
|
Monochrome 380 {
|
|
Monochrome 381 int tmp = y1;
|
|
0000063E 64E3 MOV R14,R4
|
|
Monochrome 382 y1 = y2;
|
|
00000640 6ED3 MOV R13,R14
|
|
Monochrome 383 y2 = tmp;
|
|
00000642 6D43 MOV R4,R13
|
|
00000644 L1191:
|
|
Monochrome 384 }
|
|
Monochrome 385 if(y1 < 0) y1 = 0;
|
|
00000644 4E11 CMP/PZ R14
|
|
00000646 8D01 BT/S L1192
|
|
Monochrome 386 if(y2 > 63) y2 = 63;
|
|
00000648 E43F MOV #63,R4
|
|
0000064A EE00 MOV #0,R14
|
|
0000064C L1192:
|
|
0000064C 3D47 CMP/GT R4,R13
|
|
0000064E 8B00 BF L1193
|
|
00000650 6D43 MOV R4,R13
|
|
00000652 L1193:
|
|
Monochrome 387
|
|
Monochrome 388 i = (y1<<4)+(x>>3);
|
|
00000652 64E3 MOV R14,R4
|
|
00000654 9747 MOV.W L1664,R7 ; H'0080
|
|
00000656 E607 MOV #7,R6
|
|
00000658 60F2 MOV.L @R15,R0
|
|
0000065A 65C3 MOV R12,R5
|
|
0000065C 4408 SHLL2 R4
|
|
0000065E 4408 SHLL2 R4
|
|
00000660 4521 SHAR R5
|
|
00000662 4521 SHAR R5
|
|
00000664 4521 SHAR R5
|
|
00000666 345C ADD R5,R4
|
|
Monochrome 389 j = (y2<<4)+(x>>3);
|
|
00000668 4D08 SHLL2 R13
|
|
0000066A 4D08 SHLL2 R13
|
|
0000066C 35DC ADD R13,R5
|
|
0000066E 8801 CMP/EQ #1,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 24
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000670 5DF1 MOV.L @(4,R15),R13
|
|
00000672 8D08 BT/S L1109
|
|
00000674 3D4C ADD R4,R13
|
|
00000676 8800 CMP/EQ #0,R0
|
|
00000678 8915 BT L1110
|
|
0000067A 8802 CMP/EQ #2,R0
|
|
0000067C 8923 BT L1111
|
|
0000067E 8803 CMP/EQ #3,R0
|
|
00000680 8932 BT L1112
|
|
00000682 A051 BRA L1190
|
|
00000684 0009 NOP
|
|
00000686 L1109: ; case label
|
|
Monochrome 390 switch(color)
|
|
Monochrome 391 {
|
|
Monochrome 392 case ML_BLACK:
|
|
Monochrome 393 byte = 128>>(x&7);
|
|
00000686 2C69 AND R6,R12
|
|
00000688 6CCB NEG R12,R12
|
|
0000068A 6E73 MOV R7,R14
|
|
0000068C 4ECC SHAD R12,R14
|
|
Monochrome 394 for( ; i<=j ; i+=16)
|
|
0000068E 3457 CMP/GT R5,R4
|
|
00000690 8D4A BT/S L1190
|
|
00000692 66D3 MOV R13,R6
|
|
00000694 L1196:
|
|
Monochrome 395 vram[i] |= byte;
|
|
00000694 6260 MOV.B @R6,R2
|
|
00000696 7410 ADD #16,R4
|
|
00000698 22EB OR R14,R2
|
|
0000069A 3457 CMP/GT R5,R4
|
|
0000069C 2620 MOV.B R2,@R6
|
|
0000069E 8FF9 BF/S L1196
|
|
000006A0 7610 ADD #16,R6
|
|
Monochrome 396 break;
|
|
000006A2 A041 BRA L1190
|
|
000006A4 0009 NOP
|
|
000006A6 L1110: ; case label
|
|
Monochrome 397 case ML_WHITE:
|
|
Monochrome 398 byte = ~(128>>(x&7));
|
|
000006A6 2C69 AND R6,R12
|
|
000006A8 6CCB NEG R12,R12
|
|
000006AA 47CC SHAD R12,R7
|
|
000006AC 6E77 NOT R7,R14
|
|
Monochrome 399 for( ; i<=j ; i+=16)
|
|
000006AE 3457 CMP/GT R5,R4
|
|
000006B0 8D3A BT/S L1190
|
|
000006B2 66D3 MOV R13,R6
|
|
000006B4 L1198:
|
|
Monochrome 400 vram[i] &= byte;
|
|
000006B4 6260 MOV.B @R6,R2
|
|
000006B6 7410 ADD #16,R4
|
|
000006B8 22E9 AND R14,R2
|
|
000006BA 3457 CMP/GT R5,R4
|
|
000006BC 2620 MOV.B R2,@R6
|
|
000006BE 8FF9 BF/S L1198
|
|
000006C0 7610 ADD #16,R6
|
|
Monochrome 401 break;
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 25
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000006C2 A031 BRA L1190
|
|
000006C4 0009 NOP
|
|
000006C6 L1111: ; case label
|
|
Monochrome 402 case ML_XOR:
|
|
Monochrome 403 byte = 128>>(x&7);
|
|
000006C6 2C69 AND R6,R12
|
|
000006C8 6CCB NEG R12,R12
|
|
000006CA 6E73 MOV R7,R14
|
|
000006CC 4ECC SHAD R12,R14
|
|
Monochrome 404 for( ; i<=j ; i+=16)
|
|
000006CE 3457 CMP/GT R5,R4
|
|
000006D0 8D2A BT/S L1190
|
|
000006D2 66D3 MOV R13,R6
|
|
000006D4 L1200:
|
|
Monochrome 405 vram[i] ^= byte;
|
|
000006D4 6260 MOV.B @R6,R2
|
|
000006D6 7410 ADD #16,R4
|
|
000006D8 22EA XOR R14,R2
|
|
000006DA 3457 CMP/GT R5,R4
|
|
000006DC 2620 MOV.B R2,@R6
|
|
000006DE 8FF9 BF/S L1200
|
|
000006E0 7610 ADD #16,R6
|
|
Monochrome 406 break;
|
|
000006E2 A021 BRA L1190
|
|
000006E4 0009 NOP
|
|
000006E6 L1664:
|
|
000006E6 0080 .DATA.W H'0080
|
|
000006E8 L1112: ; case label
|
|
Monochrome 407 case ML_CHECKER:
|
|
Monochrome 408 byte = 128>>(x&7);
|
|
000006E8 26C9 AND R12,R6
|
|
000006EA 666B NEG R6,R6
|
|
000006EC 6073 MOV R7,R0
|
|
000006EE 406C SHAD R6,R0
|
|
Monochrome 409 checker = y1&1^x&1;
|
|
000006F0 E701 MOV #1,R7
|
|
000006F2 27E9 AND R14,R7
|
|
000006F4 E301 MOV #1,R3
|
|
000006F6 2C39 AND R3,R12
|
|
000006F8 27CA XOR R12,R7
|
|
000006FA 66D3 MOV R13,R6
|
|
000006FC 6ED3 MOV R13,R14
|
|
Monochrome 410 for( ; i<=j ; i+=16)
|
|
000006FE 3457 CMP/GT R5,R4
|
|
00000700 8D12 BT/S L1190
|
|
00000702 6D07 NOT R0,R13
|
|
00000704 L1202:
|
|
Monochrome 411 {
|
|
Monochrome 412 if(checker) vram[i] &= ~byte;
|
|
00000704 637E EXTS.B R7,R3
|
|
00000706 2338 TST R3,R3
|
|
00000708 8D04 BT/S L1203
|
|
Monochrome 413 else vram[i] |= byte;
|
|
Monochrome 414 checker = !checker;
|
|
0000070A 677E EXTS.B R7,R7
|
|
0000070C 62E0 MOV.B @R14,R2
|
|
0000070E 22D9 AND R13,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 26
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000710 A003 BRA L1204
|
|
00000712 2E20 MOV.B R2,@R14
|
|
00000714 L1203:
|
|
00000714 6160 MOV.B @R6,R1
|
|
00000716 210B OR R0,R1
|
|
00000718 2610 MOV.B R1,@R6
|
|
0000071A L1204:
|
|
0000071A 2778 TST R7,R7
|
|
0000071C 0729 MOVT R7
|
|
0000071E 7410 ADD #16,R4
|
|
00000720 7610 ADD #16,R6
|
|
00000722 3457 CMP/GT R5,R4
|
|
00000724 8FEE BF/S L1202
|
|
00000726 7E10 ADD #16,R14
|
|
00000728 L1190:
|
|
Monochrome 415 }
|
|
Monochrome 416 break;
|
|
Monochrome 417 }
|
|
Monochrome 418 }
|
|
00000728 7F08 ADD #8,R15
|
|
0000072A 4F26 LDS.L @R15+,PR
|
|
0000072C 6CF6 MOV.L @R15+,R12
|
|
0000072E 6DF6 MOV.L @R15+,R13
|
|
00000730 000B RTS
|
|
00000732 6EF6 MOV.L @R15+,R14
|
|
Monochrome 419 #endif
|
|
Monochrome 420
|
|
Monochrome 421 #ifdef ML_RECTANGLE
|
|
Monochrome 422 void ML_rectangle(int x1, int y1, int x2, int y2, int border_width, ML_Color border_color, ML_Color fill_c
|
|
+olor)
|
|
00000734 _ML_rectangle: ; function: ML_rectangle
|
|
; frame size=48
|
|
00000734 2FE6 MOV.L R14,@-R15
|
|
00000736 2FD6 MOV.L R13,@-R15
|
|
00000738 2FC6 MOV.L R12,@-R15
|
|
0000073A 6D43 MOV R4,R13
|
|
0000073C 2FB6 MOV.L R11,@-R15
|
|
0000073E 6C63 MOV R6,R12
|
|
00000740 2FA6 MOV.L R10,@-R15
|
|
Monochrome 423 {
|
|
Monochrome 424 int i;
|
|
Monochrome 425 if(x1 > x2)
|
|
00000742 3DC7 CMP/GT R12,R13
|
|
00000744 2F96 MOV.L R9,@-R15
|
|
00000746 2F86 MOV.L R8,@-R15
|
|
00000748 4F22 STS.L PR,@-R15
|
|
0000074A 7FF0 ADD #-16,R15
|
|
0000074C 5EFC MOV.L @(48,R15),R14
|
|
0000074E 8F03 BF/S L1206
|
|
00000750 5BFD MOV.L @(52,R15),R11
|
|
Monochrome 426 {
|
|
Monochrome 427 i = x1;
|
|
00000752 64D3 MOV R13,R4
|
|
Monochrome 428 x1 = x2;
|
|
00000754 6DC3 MOV R12,R13
|
|
Monochrome 429 x2 = i;
|
|
00000756 6C43 MOV R4,R12
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 27
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000758 L1206:
|
|
Monochrome 430 }
|
|
Monochrome 431 if(y1 > y2)
|
|
00000758 3577 CMP/GT R7,R5
|
|
0000075A 8B02 BF L1207
|
|
Monochrome 432 {
|
|
Monochrome 433 i = y1;
|
|
0000075C 6453 MOV R5,R4
|
|
Monochrome 434 y1 = y2;
|
|
0000075E 6573 MOV R7,R5
|
|
Monochrome 435 y2 = i;
|
|
00000760 6743 MOV R4,R7
|
|
00000762 L1207:
|
|
00000762 64C3 MOV R12,R4
|
|
00000764 34D8 SUB R13,R4
|
|
00000766 E300 MOV #0,R3
|
|
00000768 3347 CMP/GT R4,R3
|
|
0000076A 343E ADDC R3,R4
|
|
0000076C 4421 SHAR R4
|
|
0000076E 7401 ADD #1,R4
|
|
00000770 3E47 CMP/GT R4,R14
|
|
00000772 8B00 BF L1208
|
|
Monochrome 436 }
|
|
Monochrome 437 if(border_width > (x2-x1)/2+1) border_width = (x2-x1)/2+1;
|
|
00000774 6E43 MOV R4,R14
|
|
00000776 L1208:
|
|
00000776 6473 MOV R7,R4
|
|
00000778 3458 SUB R5,R4
|
|
0000077A E300 MOV #0,R3
|
|
0000077C 3347 CMP/GT R4,R3
|
|
0000077E 343E ADDC R3,R4
|
|
00000780 4421 SHAR R4
|
|
00000782 7401 ADD #1,R4
|
|
00000784 3E47 CMP/GT R4,R14
|
|
00000786 8F01 BF/S L1209
|
|
00000788 6353 MOV R5,R3
|
|
Monochrome 438 if(border_width > (y2-y1)/2+1) border_width = (y2-y1)/2+1;
|
|
0000078A 6E43 MOV R4,R14
|
|
0000078C L1209:
|
|
0000078C 33EC ADD R14,R3
|
|
0000078E 6873 MOV R7,R8
|
|
00000790 1F33 MOV.L R3,@(12,R15)
|
|
00000792 62D3 MOV R13,R2
|
|
00000794 32EC ADD R14,R2
|
|
00000796 61C3 MOV R12,R1
|
|
00000798 1F22 MOV.L R2,@(8,R15)
|
|
0000079A 60B3 MOV R11,R0
|
|
0000079C 31E8 SUB R14,R1
|
|
0000079E 88FF CMP/EQ #-1,R0
|
|
000007A0 2F12 MOV.L R1,@R15
|
|
000007A2 8D2D BT/S L1210
|
|
000007A4 38E8 SUB R14,R8
|
|
000007A6 4E15 CMP/PL R14
|
|
000007A8 8B2A BF L1210
|
|
Monochrome 439 if(border_color != ML_TRANSPARENT && border_width > 0)
|
|
Monochrome 440 {
|
|
Monochrome 441 for(i=0 ; i<border_width ; i++)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 28
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000007AA E300 MOV #0,R3
|
|
000007AC 1F31 MOV.L R3,@(4,R15)
|
|
000007AE 6973 MOV R7,R9
|
|
000007B0 4E15 CMP/PL R14
|
|
000007B2 8F11 BF/S L1211
|
|
000007B4 6A53 MOV R5,R10
|
|
000007B6 L1212:
|
|
Monochrome 442 {
|
|
Monochrome 443 ML_horizontal_line(y1+i, x1, x2, border_color);
|
|
000007B6 67B3 MOV R11,R7
|
|
000007B8 66C3 MOV R12,R6
|
|
000007BA 65D3 MOV R13,R5
|
|
000007BC BDCC BSR _ML_horizontal_line
|
|
000007BE 64A3 MOV R10,R4
|
|
Monochrome 444 ML_horizontal_line(y2-i, x1, x2, border_color);
|
|
000007C0 67B3 MOV R11,R7
|
|
000007C2 66C3 MOV R12,R6
|
|
000007C4 65D3 MOV R13,R5
|
|
000007C6 BDC7 BSR _ML_horizontal_line
|
|
000007C8 6493 MOV R9,R4
|
|
000007CA 79FF ADD #-1,R9
|
|
000007CC 52F1 MOV.L @(4,R15),R2
|
|
000007CE 7201 ADD #1,R2
|
|
000007D0 1F21 MOV.L R2,@(4,R15)
|
|
000007D2 32E3 CMP/GE R14,R2
|
|
000007D4 8FEF BF/S L1212
|
|
000007D6 7A01 ADD #1,R10
|
|
000007D8 L1211:
|
|
Monochrome 445 }
|
|
Monochrome 446 for(i=y1+border_width ; i<=y2-border_width ; i++)
|
|
000007D8 5EF3 MOV.L @(12,R15),R14
|
|
000007DA 5AF2 MOV.L @(8,R15),R10
|
|
000007DC 69F2 MOV.L @R15,R9
|
|
000007DE 3E87 CMP/GT R8,R14
|
|
000007E0 7AFF ADD #-1,R10
|
|
000007E2 8D0D BT/S L1210
|
|
000007E4 7901 ADD #1,R9
|
|
000007E6 L1214:
|
|
Monochrome 447 {
|
|
Monochrome 448 ML_horizontal_line(i, x1, x1+border_width-1, border_color);
|
|
000007E6 67B3 MOV R11,R7
|
|
000007E8 66A3 MOV R10,R6
|
|
000007EA 65D3 MOV R13,R5
|
|
000007EC BDB4 BSR _ML_horizontal_line
|
|
000007EE 64E3 MOV R14,R4
|
|
Monochrome 449 ML_horizontal_line(i, x2-border_width+1, x2, border_color);
|
|
000007F0 67B3 MOV R11,R7
|
|
000007F2 66C3 MOV R12,R6
|
|
000007F4 6593 MOV R9,R5
|
|
000007F6 BDAF BSR _ML_horizontal_line
|
|
000007F8 64E3 MOV R14,R4
|
|
000007FA 7E01 ADD #1,R14
|
|
000007FC 3E87 CMP/GT R8,R14
|
|
000007FE 8BF2 BF L1214
|
|
00000800 L1210:
|
|
Monochrome 450 }
|
|
Monochrome 451 }
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 29
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 452 if(fill_color != ML_TRANSPARENT)
|
|
00000800 50FE MOV.L @(56,R15),R0
|
|
00000802 88FF CMP/EQ #-1,R0
|
|
00000804 890A BT L1215
|
|
Monochrome 453 {
|
|
Monochrome 454 for(i=y1+border_width ; i<=y2-border_width ; i++)
|
|
00000806 5EF3 MOV.L @(12,R15),R14
|
|
00000808 3E87 CMP/GT R8,R14
|
|
0000080A 8907 BT L1215
|
|
0000080C L1217:
|
|
Monochrome 455 ML_horizontal_line(i, x1+border_width, x2-border_width, fill_color);
|
|
0000080C 57FE MOV.L @(56,R15),R7
|
|
0000080E 66F2 MOV.L @R15,R6
|
|
00000810 55F2 MOV.L @(8,R15),R5
|
|
00000812 BDA1 BSR _ML_horizontal_line
|
|
00000814 64E3 MOV R14,R4
|
|
00000816 7E01 ADD #1,R14
|
|
00000818 3E87 CMP/GT R8,R14
|
|
0000081A 8BF7 BF L1217
|
|
0000081C L1215:
|
|
Monochrome 456 }
|
|
Monochrome 457 }
|
|
0000081C 7F10 ADD #16,R15
|
|
0000081E 4F26 LDS.L @R15+,PR
|
|
00000820 68F6 MOV.L @R15+,R8
|
|
00000822 69F6 MOV.L @R15+,R9
|
|
00000824 6AF6 MOV.L @R15+,R10
|
|
00000826 6BF6 MOV.L @R15+,R11
|
|
00000828 6CF6 MOV.L @R15+,R12
|
|
0000082A 6DF6 MOV.L @R15+,R13
|
|
0000082C 000B RTS
|
|
0000082E 6EF6 MOV.L @R15+,R14
|
|
Monochrome 458 #endif
|
|
Monochrome 459
|
|
Monochrome 460 #ifdef ML_POLYGON
|
|
Monochrome 461 void ML_polygon(const int *x, const int *y, int nb_vertices, ML_Color color)
|
|
00000830 _ML_polygon: ; function: ML_polygon
|
|
; frame size=44
|
|
00000830 2FE6 MOV.L R14,@-R15
|
|
Monochrome 462 {
|
|
Monochrome 463 int i;
|
|
Monochrome 464 if(nb_vertices < 1) return;
|
|
00000832 E301 MOV #1,R3
|
|
00000834 2FD6 MOV.L R13,@-R15
|
|
00000836 3633 CMP/GE R3,R6
|
|
00000838 2FC6 MOV.L R12,@-R15
|
|
0000083A 6D43 MOV R4,R13
|
|
0000083C 2FB6 MOV.L R11,@-R15
|
|
0000083E 6C53 MOV R5,R12
|
|
00000840 2FA6 MOV.L R10,@-R15
|
|
00000842 2F96 MOV.L R9,@-R15
|
|
00000844 2F86 MOV.L R8,@-R15
|
|
00000846 4F22 STS.L PR,@-R15
|
|
00000848 7FF8 ADD #-8,R15
|
|
0000084A 8F21 BF/S L1219
|
|
0000084C 2F72 MOV.L R7,@R15
|
|
0000084E 6863 MOV R6,R8
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 30
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000850 78FF ADD #-1,R8
|
|
Monochrome 465 for(i=0 ; i<nb_vertices-1 ; i++)
|
|
00000852 4815 CMP/PL R8
|
|
00000854 8F11 BF/S L1220
|
|
00000856 EE00 MOV #0,R14
|
|
00000858 L1221:
|
|
Monochrome 466 ML_line(x[i], y[i], x[i+1], y[i+1], color);
|
|
00000858 62F2 MOV.L @R15,R2
|
|
0000085A 69E3 MOV R14,R9
|
|
0000085C 2F26 MOV.L R2,@-R15
|
|
0000085E 4908 SHLL2 R9
|
|
00000860 6A93 MOV R9,R10
|
|
00000862 3ACC ADD R12,R10
|
|
00000864 57A1 MOV.L @(4,R10),R7
|
|
00000866 6B93 MOV R9,R11
|
|
00000868 65A2 MOV.L @R10,R5
|
|
0000086A 3BDC ADD R13,R11
|
|
0000086C 56B1 MOV.L @(4,R11),R6
|
|
0000086E BD08 BSR _ML_line
|
|
00000870 64B2 MOV.L @R11,R4
|
|
00000872 7E01 ADD #1,R14
|
|
00000874 3E83 CMP/GE R8,R14
|
|
00000876 8FEF BF/S L1221
|
|
00000878 7F04 ADD #4,R15
|
|
0000087A L1220:
|
|
Monochrome 467 ML_line(x[i], y[i], x[0], y[0], color);
|
|
0000087A 60E3 MOV R14,R0
|
|
0000087C 63F2 MOV.L @R15,R3
|
|
0000087E 4008 SHLL2 R0
|
|
00000880 2F36 MOV.L R3,@-R15
|
|
00000882 67C2 MOV.L @R12,R7
|
|
00000884 66D2 MOV.L @R13,R6
|
|
00000886 1F02 MOV.L R0,@(8,R15)
|
|
00000888 05CE MOV.L @(R0,R12),R5
|
|
0000088A BCFA BSR _ML_line
|
|
0000088C 04DE MOV.L @(R0,R13),R4
|
|
0000088E 7F04 ADD #4,R15
|
|
Monochrome 468 }
|
|
00000890 L1219:
|
|
00000890 7F08 ADD #8,R15
|
|
00000892 4F26 LDS.L @R15+,PR
|
|
00000894 68F6 MOV.L @R15+,R8
|
|
00000896 69F6 MOV.L @R15+,R9
|
|
00000898 6AF6 MOV.L @R15+,R10
|
|
0000089A 6BF6 MOV.L @R15+,R11
|
|
0000089C 6CF6 MOV.L @R15+,R12
|
|
0000089E 6DF6 MOV.L @R15+,R13
|
|
000008A0 000B RTS
|
|
000008A2 6EF6 MOV.L @R15+,R14
|
|
Monochrome 469 #endif
|
|
Monochrome 470
|
|
Monochrome 471 #ifdef ML_FILLED_POLYGON
|
|
Monochrome 472 static int ML_filled_polygon_quicksord_partition(int *t, int p, int r)
|
|
000008A4 __$ML_filled_polygon_quicksord_partition:
|
|
; function: ML_filled_polygon_quicksord_partition
|
|
; frame size=20
|
|
000008A4 2FE6 MOV.L R14,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 31
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 473 {
|
|
Monochrome 474 int i, j, x, tmp;
|
|
Monochrome 475 j = p - 1;
|
|
Monochrome 476 x = t[r];
|
|
Monochrome 477 for(i=p ; i<r ; i++)
|
|
000008A6 6753 MOV R5,R7
|
|
000008A8 2FD6 MOV.L R13,@-R15
|
|
000008AA 6E53 MOV R5,R14
|
|
000008AC 2FC6 MOV.L R12,@-R15
|
|
000008AE 3763 CMP/GE R6,R7
|
|
000008B0 7FF8 ADD #-8,R15
|
|
000008B2 7EFF ADD #-1,R14
|
|
000008B4 6C63 MOV R6,R12
|
|
000008B6 4C08 SHLL2 R12
|
|
000008B8 3C4C ADD R4,R12
|
|
000008BA 4508 SHLL2 R5
|
|
000008BC 1FC1 MOV.L R12,@(4,R15)
|
|
000008BE 354C ADD R4,R5
|
|
000008C0 6CC2 MOV.L @R12,R12
|
|
000008C2 2F52 MOV.L R5,@R15
|
|
000008C4 8D10 BT/S L1222
|
|
000008C6 6D53 MOV R5,R13
|
|
000008C8 L1223:
|
|
Monochrome 478 {
|
|
Monochrome 479 if(x > t[i])
|
|
000008C8 62D2 MOV.L @R13,R2
|
|
000008CA 3C27 CMP/GT R2,R12
|
|
000008CC 8F08 BF/S L1224
|
|
000008CE 7701 ADD #1,R7
|
|
Monochrome 480 {
|
|
Monochrome 481 j++;
|
|
Monochrome 482 tmp = t[j];
|
|
Monochrome 483 t[j] = t[i];
|
|
000008D0 6352 MOV.L @R5,R3
|
|
000008D2 7E01 ADD #1,R14
|
|
000008D4 60E3 MOV R14,R0
|
|
000008D6 4008 SHLL2 R0
|
|
000008D8 304C ADD R4,R0
|
|
000008DA 6102 MOV.L @R0,R1
|
|
000008DC 2032 MOV.L R3,@R0
|
|
Monochrome 484 t[i] = tmp;
|
|
000008DE 2512 MOV.L R1,@R5
|
|
000008E0 L1224:
|
|
000008E0 7504 ADD #4,R5
|
|
000008E2 3763 CMP/GE R6,R7
|
|
000008E4 8FF0 BF/S L1223
|
|
000008E6 7D04 ADD #4,R13
|
|
000008E8 L1222:
|
|
Monochrome 485 }
|
|
Monochrome 486 }
|
|
Monochrome 487 t[r] = t[j+1];
|
|
000008E8 53F1 MOV.L @(4,R15),R3
|
|
000008EA 65E3 MOV R14,R5
|
|
000008EC 4508 SHLL2 R5
|
|
000008EE 354C ADD R4,R5
|
|
000008F0 7504 ADD #4,R5
|
|
Monochrome 488 t[j+1] = x;
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 32
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 489 return j + 1;
|
|
000008F2 60E3 MOV R14,R0
|
|
000008F4 6252 MOV.L @R5,R2
|
|
000008F6 7001 ADD #1,R0
|
|
000008F8 2322 MOV.L R2,@R3
|
|
000008FA 25C2 MOV.L R12,@R5
|
|
Monochrome 490 }
|
|
000008FC 7F08 ADD #8,R15
|
|
000008FE 6CF6 MOV.L @R15+,R12
|
|
00000900 6DF6 MOV.L @R15+,R13
|
|
00000902 000B RTS
|
|
00000904 6EF6 MOV.L @R15+,R14
|
|
Monochrome 491
|
|
Monochrome 492 static void ML_filled_polygon_quicksord(int* t, int p, int r)
|
|
00000906 __$ML_filled_polygon_quicksord: ; function: ML_filled_polygon_quicksord
|
|
; frame size=20
|
|
00000906 2FE6 MOV.L R14,@-R15
|
|
00000908 2FD6 MOV.L R13,@-R15
|
|
0000090A 6E53 MOV R5,R14
|
|
0000090C 2FC6 MOV.L R12,@-R15
|
|
0000090E 6D63 MOV R6,R13
|
|
00000910 4F22 STS.L PR,@-R15
|
|
00000912 7FFC ADD #-4,R15
|
|
00000914 2F42 MOV.L R4,@R15
|
|
00000916 L1226:
|
|
Monochrome 493 {
|
|
Monochrome 494 int q;
|
|
Monochrome 495 if(p < r)
|
|
00000916 3ED3 CMP/GE R13,R14
|
|
00000918 890E BT L1227
|
|
Monochrome 496 {
|
|
Monochrome 497 q = ML_filled_polygon_quicksord_partition(t, p, r);
|
|
0000091A 66D3 MOV R13,R6
|
|
0000091C 65E3 MOV R14,R5
|
|
0000091E BFC1 BSR __$ML_filled_polygon_quicksord_partition
|
|
00000920 64F2 MOV.L @R15,R4
|
|
00000922 6C03 MOV R0,R12
|
|
Monochrome 498 ML_filled_polygon_quicksord(t, p, q-1);
|
|
00000924 6603 MOV R0,R6
|
|
00000926 76FF ADD #-1,R6
|
|
00000928 65E3 MOV R14,R5
|
|
0000092A BFEC BSR __$ML_filled_polygon_quicksord
|
|
0000092C 64F2 MOV.L @R15,R4
|
|
Monochrome 499 ML_filled_polygon_quicksord(t, q+1, r);
|
|
0000092E 65D3 MOV R13,R5
|
|
00000930 64C3 MOV R12,R4
|
|
00000932 7401 ADD #1,R4
|
|
00000934 AFEF BRA L1226
|
|
00000936 6E43 MOV R4,R14
|
|
00000938 L1227:
|
|
Monochrome 500 }
|
|
Monochrome 501 }
|
|
00000938 7F04 ADD #4,R15
|
|
0000093A 4F26 LDS.L @R15+,PR
|
|
0000093C 6CF6 MOV.L @R15+,R12
|
|
0000093E 6DF6 MOV.L @R15+,R13
|
|
00000940 000B RTS
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 33
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000942 6EF6 MOV.L @R15+,R14
|
|
Monochrome 502
|
|
Monochrome 503
|
|
Monochrome 504 void ML_filled_polygon(const int *x, const int *y, int nb_vertices, ML_Color color)
|
|
00000944 _ML_filled_polygon: ; function: ML_filled_polygon
|
|
; frame size=108
|
|
; used runtime library name:
|
|
; __divls, __modls, __addd, __dtoi, __itod
|
|
00000944 2FE6 MOV.L R14,@-R15
|
|
Monochrome 505 {
|
|
Monochrome 506 int i, j, dx, dy, ymin, ymax;
|
|
Monochrome 507 int *cut_in_line, nb_cut;
|
|
Monochrome 508 if(nb_vertices < 3) return;
|
|
00000946 E303 MOV #3,R3
|
|
00000948 2FD6 MOV.L R13,@-R15
|
|
0000094A 2FC6 MOV.L R12,@-R15
|
|
0000094C 2FB6 MOV.L R11,@-R15
|
|
0000094E 6B63 MOV R6,R11
|
|
00000950 2FA6 MOV.L R10,@-R15
|
|
00000952 3B33 CMP/GE R3,R11
|
|
00000954 2F96 MOV.L R9,@-R15
|
|
00000956 6A53 MOV R5,R10
|
|
00000958 2F86 MOV.L R8,@-R15
|
|
0000095A 4F22 STS.L PR,@-R15
|
|
0000095C 4F12 STS.L MACL,@-R15
|
|
0000095E 7FD8 ADD #-40,R15
|
|
00000960 1F44 MOV.L R4,@(16,R15)
|
|
00000962 8D02 BT/S L1665
|
|
00000964 1F73 MOV.L R7,@(12,R15)
|
|
00000966 A100 BRA L1229
|
|
00000968 0009 NOP
|
|
0000096A L1665:
|
|
Monochrome 509 cut_in_line = malloc(nb_vertices*sizeof(int));
|
|
0000096A 64B3 MOV R11,R4
|
|
0000096C D384 MOV.L L1666,R3 ; _malloc
|
|
0000096E 430B JSR @R3
|
|
00000970 4408 SHLL2 R4
|
|
00000972 6D03 MOV R0,R13
|
|
Monochrome 510 if(!cut_in_line) return;
|
|
00000974 2DD8 TST R13,R13
|
|
00000976 8B01 BF L1667
|
|
00000978 A0F7 BRA L1229
|
|
0000097A 0009 NOP
|
|
0000097C L1667:
|
|
Monochrome 511 ymin = ymax = y[0];
|
|
0000097C 6EA2 MOV.L @R10,R14
|
|
Monochrome 512 for(i=1 ; i<nb_vertices ; i++)
|
|
0000097E E801 MOV #1,R8
|
|
00000980 1FE6 MOV.L R14,@(24,R15)
|
|
00000982 E704 MOV #4,R7
|
|
00000984 6483 MOV R8,R4
|
|
00000986 37AC ADD R10,R7
|
|
00000988 6573 MOV R7,R5
|
|
0000098A 34B3 CMP/GE R11,R4
|
|
0000098C 8D12 BT/S L1231
|
|
0000098E 6673 MOV R7,R6
|
|
00000990 L1232:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 34
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 513 {
|
|
Monochrome 514 if(y[i] < ymin) ymin = y[i];
|
|
00000990 6043 MOV R4,R0
|
|
00000992 4008 SHLL2 R0
|
|
00000994 03AE MOV.L @(R0,R10),R3
|
|
00000996 33E3 CMP/GE R14,R3
|
|
00000998 8900 BT L1233
|
|
0000099A 6E72 MOV.L @R7,R14
|
|
0000099C L1233:
|
|
Monochrome 515 if(y[i] > ymax) ymax = y[i];
|
|
0000099C 53F6 MOV.L @(24,R15),R3
|
|
0000099E 6262 MOV.L @R6,R2
|
|
000009A0 3237 CMP/GT R3,R2
|
|
000009A2 8F02 BF/S L1234
|
|
000009A4 7401 ADD #1,R4
|
|
000009A6 6252 MOV.L @R5,R2
|
|
000009A8 1F26 MOV.L R2,@(24,R15)
|
|
000009AA L1234:
|
|
000009AA 7504 ADD #4,R5
|
|
000009AC 7604 ADD #4,R6
|
|
000009AE 34B3 CMP/GE R11,R4
|
|
000009B0 8FEE BF/S L1232
|
|
000009B2 7704 ADD #4,R7
|
|
000009B4 L1231:
|
|
Monochrome 516 }
|
|
Monochrome 517 for(i=ymin ; i<=ymax ; i++)
|
|
000009B4 A0C7 BRA L1235
|
|
000009B6 6CE3 MOV R14,R12
|
|
000009B8 L1236:
|
|
Monochrome 518 {
|
|
Monochrome 519 nb_cut = 0;
|
|
000009B8 E900 MOV #0,R9
|
|
Monochrome 520 for(j=0 ; j<nb_vertices ; j++)
|
|
000009BA 6E93 MOV R9,R14
|
|
000009BC 6393 MOV R9,R3
|
|
000009BE 4B15 CMP/PL R11
|
|
000009C0 2F32 MOV.L R3,@R15
|
|
000009C2 1F81 MOV.L R8,@(4,R15)
|
|
000009C4 8F73 BF/S L1237
|
|
000009C6 1F82 MOV.L R8,@(8,R15)
|
|
000009C8 L1238:
|
|
Monochrome 521 {
|
|
Monochrome 522 if((y[j]<=i && y[(j+1)%nb_vertices]>=i) || (y[j]>=i && y[(j+1)%nb_vertices]<=i))
|
|
000009C8 60E3 MOV R14,R0
|
|
000009CA 4008 SHLL2 R0
|
|
000009CC 04AE MOV.L @(R0,R10),R4
|
|
000009CE 34C7 CMP/GT R12,R4
|
|
000009D0 8908 BT L1241
|
|
000009D2 61E3 MOV R14,R1
|
|
000009D4 D36B MOV.L L1666+4,R3 ; __modls
|
|
000009D6 7101 ADD #1,R1
|
|
000009D8 430B JSR @R3
|
|
000009DA 60B3 MOV R11,R0
|
|
000009DC 4008 SHLL2 R0
|
|
000009DE 02AE MOV.L @(R0,R10),R2
|
|
000009E0 32C3 CMP/GE R12,R2
|
|
000009E2 890A BT L1240
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 35
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000009E4 L1241:
|
|
000009E4 34C3 CMP/GE R12,R4
|
|
000009E6 8B56 BF L1239
|
|
000009E8 D366 MOV.L L1666+4,R3 ; __modls
|
|
000009EA 61E3 MOV R14,R1
|
|
000009EC 7101 ADD #1,R1
|
|
000009EE 430B JSR @R3
|
|
000009F0 60B3 MOV R11,R0
|
|
000009F2 4008 SHLL2 R0
|
|
000009F4 02AE MOV.L @(R0,R10),R2
|
|
000009F6 32C7 CMP/GT R12,R2
|
|
000009F8 894D BT L1239
|
|
000009FA L1240:
|
|
Monochrome 523 {
|
|
Monochrome 524 dy = abs(y[j]-y[(j+1)%nb_vertices]);
|
|
000009FA 60E3 MOV R14,R0
|
|
000009FC 51F2 MOV.L @(8,R15),R1
|
|
000009FE 4008 SHLL2 R0
|
|
00000A00 D360 MOV.L L1666+4,R3 ; __modls
|
|
00000A02 04AE MOV.L @(R0,R10),R4
|
|
00000A04 430B JSR @R3
|
|
00000A06 60B3 MOV R11,R0
|
|
00000A08 D25F MOV.L L1666+8,R2 ; _abs
|
|
00000A0A 4008 SHLL2 R0
|
|
00000A0C 03AE MOV.L @(R0,R10),R3
|
|
00000A0E 420B JSR @R2
|
|
00000A10 3438 SUB R3,R4
|
|
Monochrome 525 if(dy)
|
|
00000A12 2008 TST R0,R0
|
|
00000A14 8D3F BT/S L1239
|
|
00000A16 1F05 MOV.L R0,@(20,R15)
|
|
Monochrome 526 {
|
|
Monochrome 527 dx = x[(j+1)%nb_vertices]-x[j];
|
|
00000A18 51F1 MOV.L @(4,R15),R1
|
|
00000A1A D25A MOV.L L1666+4,R2 ; __modls
|
|
00000A1C 420B JSR @R2
|
|
00000A1E 60B3 MOV R11,R0
|
|
00000A20 53F4 MOV.L @(16,R15),R3
|
|
Monochrome 528 cut_in_line[nb_cut] = x[j] + rnd(abs(i-y[j]+sgn(i-y[j])/2)*dx/dy);
|
|
00000A22 64C3 MOV R12,R4
|
|
00000A24 4008 SHLL2 R0
|
|
00000A26 023E MOV.L @(R0,R3),R2
|
|
00000A28 60F2 MOV.L @R15,R0
|
|
00000A2A 013E MOV.L @(R0,R3),R1
|
|
00000A2C 1F18 MOV.L R1,@(32,R15)
|
|
00000A2E 3218 SUB R1,R2
|
|
00000A30 1F27 MOV.L R2,@(28,R15)
|
|
00000A32 6193 MOV R9,R1
|
|
00000A34 4108 SHLL2 R1
|
|
00000A36 31DC ADD R13,R1
|
|
00000A38 2F16 MOV.L R1,@-R15
|
|
00000A3A 7FF8 ADD #-8,R15
|
|
00000A3C 50F3 MOV.L @(12,R15),R0
|
|
00000A3E 02AE MOV.L @(R0,R10),R2
|
|
00000A40 3428 SUB R2,R4
|
|
00000A42 4411 CMP/PZ R4
|
|
00000A44 8D02 BT/S L1243
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 36
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000A46 1F2C MOV.L R2,@(48,R15)
|
|
00000A48 A001 BRA L1244
|
|
00000A4A E4FF MOV #-1,R4
|
|
00000A4C L1243:
|
|
00000A4C E401 MOV #1,R4
|
|
00000A4E L1244:
|
|
00000A4E E300 MOV #0,R3
|
|
00000A50 52FC MOV.L @(48,R15),R2
|
|
00000A52 3347 CMP/GT R4,R3
|
|
00000A54 343E ADDC R3,R4
|
|
00000A56 4421 SHAR R4
|
|
00000A58 D34B MOV.L L1666+8,R3 ; _abs
|
|
00000A5A 3428 SUB R2,R4
|
|
00000A5C 430B JSR @R3
|
|
00000A5E 34CC ADD R12,R4
|
|
00000A60 51FA MOV.L @(40,R15),R1
|
|
00000A62 0017 MUL.L R1,R0
|
|
00000A64 D349 MOV.L L1666+12,R3; __divls
|
|
00000A66 011A STS MACL,R1
|
|
00000A68 430B JSR @R3
|
|
00000A6A 50F8 MOV.L @(32,R15),R0
|
|
00000A6C D248 MOV.L L1666+16,R2; __itod
|
|
00000A6E 7FF8 ADD #-8,R15
|
|
00000A70 420B JSR @R2
|
|
00000A72 2FF6 MOV.L R15,@-R15
|
|
00000A74 D148 MOV.L L1666+24,R1; __addd
|
|
00000A76 E300 MOV #0,R3
|
|
00000A78 2F36 MOV.L R3,@-R15
|
|
00000A7A D346 MOV.L L1666+20,R3; H'3FE00000
|
|
00000A7C 2F36 MOV.L R3,@-R15
|
|
00000A7E 62F3 MOV R15,R2
|
|
00000A80 7210 ADD #16,R2
|
|
00000A82 410B JSR @R1
|
|
00000A84 2F26 MOV.L R2,@-R15
|
|
00000A86 D345 MOV.L L1666+28,R3; __dtoi
|
|
00000A88 430B JSR @R3
|
|
00000A8A 0009 NOP
|
|
00000A8C 52F9 MOV.L @(36,R15),R2
|
|
Monochrome 529 nb_cut++;
|
|
00000A8E 7901 ADD #1,R9
|
|
00000A90 63F6 MOV.L @R15+,R3
|
|
00000A92 302C ADD R2,R0
|
|
00000A94 2302 MOV.L R0,@R3
|
|
00000A96 L1239:
|
|
00000A96 7E01 ADD #1,R14
|
|
00000A98 62F2 MOV.L @R15,R2
|
|
00000A9A 3EB3 CMP/GE R11,R14
|
|
00000A9C 7204 ADD #4,R2
|
|
00000A9E 2F22 MOV.L R2,@R15
|
|
00000AA0 53F1 MOV.L @(4,R15),R3
|
|
00000AA2 7301 ADD #1,R3
|
|
00000AA4 1F31 MOV.L R3,@(4,R15)
|
|
00000AA6 51F2 MOV.L @(8,R15),R1
|
|
00000AA8 7101 ADD #1,R1
|
|
00000AAA 8F8D BF/S L1238
|
|
00000AAC 1F12 MOV.L R1,@(8,R15)
|
|
00000AAE L1237:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 37
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 530 }
|
|
Monochrome 531 }
|
|
Monochrome 532 }
|
|
Monochrome 533 ML_filled_polygon_quicksord(cut_in_line, 0, nb_cut-1);
|
|
00000AAE 6693 MOV R9,R6
|
|
00000AB0 76FF ADD #-1,R6
|
|
00000AB2 E500 MOV #0,R5
|
|
00000AB4 1F61 MOV.L R6,@(4,R15)
|
|
00000AB6 BF26 BSR __$ML_filled_polygon_quicksord
|
|
00000AB8 64D3 MOV R13,R4
|
|
Monochrome 534 j = 0;
|
|
00000ABA EE00 MOV #0,R14
|
|
00000ABC 6493 MOV R9,R4
|
|
Monochrome 535 while(j<nb_cut-2 && cut_in_line[j]==cut_in_line[j+1]) j++;
|
|
00000ABE A001 BRA L1245
|
|
00000AC0 74FE ADD #-2,R4
|
|
00000AC2 L1246:
|
|
00000AC2 7E01 ADD #1,R14
|
|
00000AC4 L1245:
|
|
00000AC4 3E43 CMP/GE R4,R14
|
|
00000AC6 893B BT L1248
|
|
00000AC8 60E3 MOV R14,R0
|
|
00000ACA 4008 SHLL2 R0
|
|
00000ACC 03DE MOV.L @(R0,R13),R3
|
|
00000ACE 62E3 MOV R14,R2
|
|
00000AD0 4208 SHLL2 R2
|
|
00000AD2 32DC ADD R13,R2
|
|
00000AD4 5121 MOV.L @(4,R2),R1
|
|
00000AD6 3310 CMP/EQ R1,R3
|
|
00000AD8 89F3 BT L1246
|
|
Monochrome 536 while(j < nb_cut)
|
|
00000ADA A031 BRA L1248
|
|
00000ADC 0009 NOP
|
|
00000ADE L1249:
|
|
00000ADE 63E3 MOV R14,R3
|
|
00000AE0 4308 SHLL2 R3
|
|
00000AE2 33DC ADD R13,R3
|
|
00000AE4 1F32 MOV.L R3,@(8,R15)
|
|
00000AE6 52F1 MOV.L @(4,R15),R2
|
|
00000AE8 3E20 CMP/EQ R2,R14
|
|
00000AEA 8B0A BF L1250
|
|
Monochrome 537 {
|
|
Monochrome 538 if(j == nb_cut-1) ML_horizontal_line(i, cut_in_line[j-1]+1, cut_in_line[j], color)
|
|
+;
|
|
00000AEC 57F3 MOV.L @(12,R15),R7
|
|
00000AEE 60E3 MOV R14,R0
|
|
00000AF0 6632 MOV.L @R3,R6
|
|
00000AF2 70FF ADD #-1,R0
|
|
00000AF4 4008 SHLL2 R0
|
|
00000AF6 05DE MOV.L @(R0,R13),R5
|
|
00000AF8 7501 ADD #1,R5
|
|
00000AFA BC2D BSR _ML_horizontal_line
|
|
00000AFC 64C3 MOV R12,R4
|
|
00000AFE A01E BRA L1251
|
|
00000B00 0009 NOP
|
|
00000B02 L1250:
|
|
Monochrome 539 else
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 38
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 540 {
|
|
Monochrome 541 dx = 1;
|
|
Monochrome 542 while(j+dx<nb_cut-1 && cut_in_line[j+dx]==cut_in_line[j+dx+1]) dx++;
|
|
00000B02 A003 BRA L1252
|
|
00000B04 2F82 MOV.L R8,@R15
|
|
00000B06 L1253:
|
|
00000B06 63F2 MOV.L @R15,R3
|
|
00000B08 7301 ADD #1,R3
|
|
00000B0A 2F32 MOV.L R3,@R15
|
|
00000B0C L1252:
|
|
00000B0C 64F2 MOV.L @R15,R4
|
|
00000B0E 34EC ADD R14,R4
|
|
00000B10 53F1 MOV.L @(4,R15),R3
|
|
00000B12 3433 CMP/GE R3,R4
|
|
00000B14 8908 BT L1254
|
|
00000B16 6043 MOV R4,R0
|
|
00000B18 4008 SHLL2 R0
|
|
00000B1A 6243 MOV R4,R2
|
|
00000B1C 03DE MOV.L @(R0,R13),R3
|
|
00000B1E 4208 SHLL2 R2
|
|
00000B20 32DC ADD R13,R2
|
|
00000B22 5121 MOV.L @(4,R2),R1
|
|
00000B24 3310 CMP/EQ R1,R3
|
|
00000B26 89EE BT L1253
|
|
00000B28 L1254:
|
|
Monochrome 543 ML_horizontal_line(i, cut_in_line[j], cut_in_line[j+dx], color);
|
|
00000B28 57F3 MOV.L @(12,R15),R7
|
|
00000B2A 60F2 MOV.L @R15,R0
|
|
00000B2C 55F2 MOV.L @(8,R15),R5
|
|
00000B2E 30EC ADD R14,R0
|
|
00000B30 6552 MOV.L @R5,R5
|
|
00000B32 4008 SHLL2 R0
|
|
00000B34 06DE MOV.L @(R0,R13),R6
|
|
00000B36 BC0F BSR _ML_horizontal_line
|
|
00000B38 64C3 MOV R12,R4
|
|
Monochrome 544 j += dx;
|
|
00000B3A 62F2 MOV.L @R15,R2
|
|
00000B3C 3E2C ADD R2,R14
|
|
00000B3E L1251:
|
|
Monochrome 545 }
|
|
Monochrome 546 j++;
|
|
00000B3E 7E01 ADD #1,R14
|
|
00000B40 L1248:
|
|
00000B40 3E93 CMP/GE R9,R14
|
|
00000B42 8BCC BF L1249
|
|
00000B44 7C01 ADD #1,R12
|
|
00000B46 L1235:
|
|
00000B46 52F6 MOV.L @(24,R15),R2
|
|
00000B48 3C27 CMP/GT R2,R12
|
|
00000B4A 8901 BT L1668
|
|
00000B4C AF34 BRA L1236
|
|
00000B4E 0009 NOP
|
|
00000B50 L1668:
|
|
Monochrome 547 }
|
|
Monochrome 548 }
|
|
Monochrome 549 free(cut_in_line);
|
|
00000B50 D213 MOV.L L1666+32,R2; _free
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 39
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000B52 64D3 MOV R13,R4
|
|
00000B54 7F28 ADD #40,R15
|
|
00000B56 4F16 LDS.L @R15+,MACL
|
|
00000B58 4F26 LDS.L @R15+,PR
|
|
00000B5A 68F6 MOV.L @R15+,R8
|
|
00000B5C 69F6 MOV.L @R15+,R9
|
|
00000B5E 6AF6 MOV.L @R15+,R10
|
|
00000B60 6BF6 MOV.L @R15+,R11
|
|
00000B62 6CF6 MOV.L @R15+,R12
|
|
00000B64 6DF6 MOV.L @R15+,R13
|
|
00000B66 422B JMP @R2
|
|
00000B68 6EF6 MOV.L @R15+,R14
|
|
00000B6A L1229:
|
|
Monochrome 550 }
|
|
00000B6A 7F28 ADD #40,R15
|
|
00000B6C 4F16 LDS.L @R15+,MACL
|
|
00000B6E 4F26 LDS.L @R15+,PR
|
|
00000B70 68F6 MOV.L @R15+,R8
|
|
00000B72 69F6 MOV.L @R15+,R9
|
|
00000B74 6AF6 MOV.L @R15+,R10
|
|
00000B76 6BF6 MOV.L @R15+,R11
|
|
00000B78 6CF6 MOV.L @R15+,R12
|
|
00000B7A 6DF6 MOV.L @R15+,R13
|
|
00000B7C 000B RTS
|
|
00000B7E 6EF6 MOV.L @R15+,R14
|
|
00000B80 L1666:
|
|
00000B80 <00000000> .DATA.L _malloc
|
|
00000B84 <00000000> .DATA.L __modls
|
|
00000B88 <00000000> .DATA.L _abs
|
|
00000B8C <00000000> .DATA.L __divls
|
|
00000B90 <00000000> .DATA.L __itod
|
|
00000B94 3FE00000 .DATA.L H'3FE00000
|
|
00000B98 <00000000> .DATA.L __addd
|
|
00000B9C <00000000> .DATA.L __dtoi
|
|
00000BA0 <00000000> .DATA.L _free
|
|
Monochrome 551 #endif
|
|
Monochrome 552
|
|
Monochrome 553 #ifdef ML_CIRCLE
|
|
Monochrome 554 void ML_circle(int x, int y, int radius, ML_Color color)
|
|
00000BA4 _ML_circle: ; function: ML_circle
|
|
; frame size=40
|
|
00000BA4 2FE6 MOV.L R14,@-R15
|
|
00000BA6 2FD6 MOV.L R13,@-R15
|
|
00000BA8 2FC6 MOV.L R12,@-R15
|
|
00000BAA 2FB6 MOV.L R11,@-R15
|
|
00000BAC 2FA6 MOV.L R10,@-R15
|
|
00000BAE 6B53 MOV R5,R11
|
|
00000BB0 2F96 MOV.L R9,@-R15
|
|
00000BB2 6A43 MOV R4,R10
|
|
00000BB4 2F86 MOV.L R8,@-R15
|
|
00000BB6 6863 MOV R6,R8
|
|
00000BB8 4F22 STS.L PR,@-R15
|
|
Monochrome 555 {
|
|
Monochrome 556 int plot_x, plot_y, d;
|
|
Monochrome 557
|
|
Monochrome 558 if(radius < 0) return;
|
|
00000BBA 4811 CMP/PZ R8
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 40
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000BBC 7FF8 ADD #-8,R15
|
|
00000BBE 8F60 BF/S L1256
|
|
00000BC0 6C73 MOV R7,R12
|
|
Monochrome 559 plot_x = 0;
|
|
00000BC2 ED00 MOV #0,R13
|
|
Monochrome 560 plot_y = radius;
|
|
00000BC4 6E83 MOV R8,R14
|
|
Monochrome 561 d = 1 - radius;
|
|
00000BC6 E901 MOV #1,R9
|
|
00000BC8 3988 SUB R8,R9
|
|
Monochrome 562
|
|
Monochrome 563 ML_pixel(x, y+plot_y, color);
|
|
00000BCA 66C3 MOV R12,R6
|
|
00000BCC 65B3 MOV R11,R5
|
|
00000BCE 35EC ADD R14,R5
|
|
00000BD0 BAA8 BSR _ML_pixel
|
|
00000BD2 64A3 MOV R10,R4
|
|
Monochrome 564 if(radius)
|
|
00000BD4 2888 TST R8,R8
|
|
00000BD6 890E BT L1257
|
|
Monochrome 565 {
|
|
Monochrome 566 ML_pixel(x, y-plot_y, color);
|
|
00000BD8 66C3 MOV R12,R6
|
|
00000BDA 65B3 MOV R11,R5
|
|
00000BDC 35E8 SUB R14,R5
|
|
00000BDE BAA1 BSR _ML_pixel
|
|
00000BE0 64A3 MOV R10,R4
|
|
Monochrome 567 ML_pixel(x+plot_y, y, color);
|
|
00000BE2 66C3 MOV R12,R6
|
|
00000BE4 65B3 MOV R11,R5
|
|
00000BE6 64A3 MOV R10,R4
|
|
00000BE8 BA9C BSR _ML_pixel
|
|
00000BEA 34EC ADD R14,R4
|
|
Monochrome 568 ML_pixel(x-plot_y, y, color);
|
|
00000BEC 66C3 MOV R12,R6
|
|
00000BEE 65B3 MOV R11,R5
|
|
00000BF0 64A3 MOV R10,R4
|
|
00000BF2 BA97 BSR _ML_pixel
|
|
00000BF4 34E8 SUB R14,R4
|
|
00000BF6 L1257:
|
|
Monochrome 569 }
|
|
Monochrome 570 while(plot_y > plot_x)
|
|
00000BF6 4E15 CMP/PL R14
|
|
00000BF8 8B43 BF L1256
|
|
00000BFA L1259:
|
|
Monochrome 571 {
|
|
Monochrome 572 if(d < 0)
|
|
00000BFA 4911 CMP/PZ R9
|
|
00000BFC 8904 BT L1260
|
|
Monochrome 573 d += 2*plot_x+3;
|
|
00000BFE 63D3 MOV R13,R3
|
|
00000C00 4300 SHLL R3
|
|
00000C02 7303 ADD #3,R3
|
|
00000C04 A006 BRA L1261
|
|
00000C06 393C ADD R3,R9
|
|
00000C08 L1260:
|
|
Monochrome 574 else
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 41
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 575 {
|
|
Monochrome 576 d += 2*(plot_x-plot_y)+5;
|
|
00000C08 63D3 MOV R13,R3
|
|
00000C0A 33E8 SUB R14,R3
|
|
00000C0C 4300 SHLL R3
|
|
00000C0E 7305 ADD #5,R3
|
|
00000C10 393C ADD R3,R9
|
|
Monochrome 577 plot_y--;
|
|
00000C12 7EFF ADD #-1,R14
|
|
00000C14 L1261:
|
|
Monochrome 578 }
|
|
Monochrome 579 plot_x++;
|
|
00000C14 7D01 ADD #1,R13
|
|
Monochrome 580 if(plot_y >= plot_x)
|
|
00000C16 3ED3 CMP/GE R13,R14
|
|
00000C18 8B17 BF L1262
|
|
Monochrome 581 {
|
|
Monochrome 582 ML_pixel(x+plot_x, y+plot_y, color);
|
|
00000C1A 66C3 MOV R12,R6
|
|
00000C1C 65B3 MOV R11,R5
|
|
00000C1E 35EC ADD R14,R5
|
|
00000C20 2F52 MOV.L R5,@R15
|
|
00000C22 64A3 MOV R10,R4
|
|
00000C24 34DC ADD R13,R4
|
|
00000C26 BA7D BSR _ML_pixel
|
|
00000C28 1F41 MOV.L R4,@(4,R15)
|
|
Monochrome 583 ML_pixel(x-plot_x, y+plot_y, color);
|
|
00000C2A 66C3 MOV R12,R6
|
|
00000C2C 65F2 MOV.L @R15,R5
|
|
00000C2E 68A3 MOV R10,R8
|
|
00000C30 38D8 SUB R13,R8
|
|
00000C32 BA77 BSR _ML_pixel
|
|
00000C34 6483 MOV R8,R4
|
|
Monochrome 584 ML_pixel(x+plot_x, y-plot_y, color);
|
|
00000C36 66C3 MOV R12,R6
|
|
00000C38 65B3 MOV R11,R5
|
|
00000C3A 35E8 SUB R14,R5
|
|
00000C3C 2F52 MOV.L R5,@R15
|
|
00000C3E BA71 BSR _ML_pixel
|
|
00000C40 54F1 MOV.L @(4,R15),R4
|
|
Monochrome 585 ML_pixel(x-plot_x, y-plot_y, color);
|
|
00000C42 66C3 MOV R12,R6
|
|
00000C44 65F2 MOV.L @R15,R5
|
|
00000C46 BA6D BSR _ML_pixel
|
|
00000C48 6483 MOV R8,R4
|
|
00000C4A L1262:
|
|
Monochrome 586 }
|
|
Monochrome 587 if(plot_y > plot_x)
|
|
00000C4A 3ED7 CMP/GT R13,R14
|
|
00000C4C 8B17 BF L1263
|
|
Monochrome 588 {
|
|
Monochrome 589 ML_pixel(x+plot_y, y+plot_x, color);
|
|
00000C4E 66C3 MOV R12,R6
|
|
00000C50 65B3 MOV R11,R5
|
|
00000C52 35DC ADD R13,R5
|
|
00000C54 2F52 MOV.L R5,@R15
|
|
00000C56 64A3 MOV R10,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 42
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000C58 34EC ADD R14,R4
|
|
00000C5A BA63 BSR _ML_pixel
|
|
00000C5C 1F41 MOV.L R4,@(4,R15)
|
|
Monochrome 590 ML_pixel(x-plot_y, y+plot_x, color);
|
|
00000C5E 66C3 MOV R12,R6
|
|
00000C60 65F2 MOV.L @R15,R5
|
|
00000C62 68A3 MOV R10,R8
|
|
00000C64 38E8 SUB R14,R8
|
|
00000C66 BA5D BSR _ML_pixel
|
|
00000C68 6483 MOV R8,R4
|
|
Monochrome 591 ML_pixel(x+plot_y, y-plot_x, color);
|
|
00000C6A 66C3 MOV R12,R6
|
|
00000C6C 65B3 MOV R11,R5
|
|
00000C6E 35D8 SUB R13,R5
|
|
00000C70 2F52 MOV.L R5,@R15
|
|
00000C72 BA57 BSR _ML_pixel
|
|
00000C74 54F1 MOV.L @(4,R15),R4
|
|
Monochrome 592 ML_pixel(x-plot_y, y-plot_x, color);
|
|
00000C76 66C3 MOV R12,R6
|
|
00000C78 65F2 MOV.L @R15,R5
|
|
00000C7A BA53 BSR _ML_pixel
|
|
00000C7C 6483 MOV R8,R4
|
|
00000C7E L1263:
|
|
00000C7E 3ED7 CMP/GT R13,R14
|
|
00000C80 89BB BT L1259
|
|
00000C82 L1256:
|
|
Monochrome 593 }
|
|
Monochrome 594 }
|
|
Monochrome 595 }
|
|
00000C82 7F08 ADD #8,R15
|
|
00000C84 4F26 LDS.L @R15+,PR
|
|
00000C86 68F6 MOV.L @R15+,R8
|
|
00000C88 69F6 MOV.L @R15+,R9
|
|
00000C8A 6AF6 MOV.L @R15+,R10
|
|
00000C8C 6BF6 MOV.L @R15+,R11
|
|
00000C8E 6CF6 MOV.L @R15+,R12
|
|
00000C90 6DF6 MOV.L @R15+,R13
|
|
00000C92 000B RTS
|
|
00000C94 6EF6 MOV.L @R15+,R14
|
|
Monochrome 596 #endif
|
|
Monochrome 597
|
|
Monochrome 598 #ifdef ML_FILLED_CIRCLE
|
|
Monochrome 599 void ML_filled_circle(int x, int y, int radius, ML_Color color)
|
|
00000C96 _ML_filled_circle: ; function: ML_filled_circle
|
|
; frame size=36
|
|
Monochrome 600 {
|
|
Monochrome 601 int plot_x, plot_y, d;
|
|
Monochrome 602
|
|
Monochrome 603 if(radius < 0) return;
|
|
00000C96 4611 CMP/PZ R6
|
|
00000C98 2FE6 MOV.L R14,@-R15
|
|
00000C9A 2FD6 MOV.L R13,@-R15
|
|
00000C9C 2FC6 MOV.L R12,@-R15
|
|
00000C9E 6C43 MOV R4,R12
|
|
00000CA0 2FB6 MOV.L R11,@-R15
|
|
00000CA2 2FA6 MOV.L R10,@-R15
|
|
00000CA4 2F96 MOV.L R9,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 43
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000CA6 6A53 MOV R5,R10
|
|
00000CA8 2F86 MOV.L R8,@-R15
|
|
00000CAA 4F22 STS.L PR,@-R15
|
|
00000CAC 7FFC ADD #-4,R15
|
|
00000CAE 8F41 BF/S L1265
|
|
00000CB0 6B73 MOV R7,R11
|
|
Monochrome 604 plot_x = 0;
|
|
00000CB2 ED00 MOV #0,R13
|
|
Monochrome 605 plot_y = radius;
|
|
00000CB4 6E63 MOV R6,R14
|
|
Monochrome 606 d = 1 - radius;
|
|
00000CB6 E901 MOV #1,R9
|
|
00000CB8 3968 SUB R6,R9
|
|
Monochrome 607
|
|
Monochrome 608 ML_horizontal_line(y, x-plot_y, x+plot_y, color);
|
|
00000CBA 67B3 MOV R11,R7
|
|
00000CBC 66C3 MOV R12,R6
|
|
00000CBE 36EC ADD R14,R6
|
|
00000CC0 65C3 MOV R12,R5
|
|
00000CC2 35E8 SUB R14,R5
|
|
00000CC4 BB48 BSR _ML_horizontal_line
|
|
00000CC6 64A3 MOV R10,R4
|
|
Monochrome 609 while(plot_y > plot_x)
|
|
00000CC8 4E15 CMP/PL R14
|
|
00000CCA 8B33 BF L1265
|
|
00000CCC L1267:
|
|
Monochrome 610 {
|
|
Monochrome 611 if(d < 0)
|
|
00000CCC 4911 CMP/PZ R9
|
|
00000CCE 8904 BT L1268
|
|
Monochrome 612 d += 2*plot_x+3;
|
|
00000CD0 63D3 MOV R13,R3
|
|
00000CD2 4300 SHLL R3
|
|
00000CD4 7303 ADD #3,R3
|
|
00000CD6 A018 BRA L1269
|
|
00000CD8 393C ADD R3,R9
|
|
00000CDA L1268:
|
|
Monochrome 613 else {
|
|
Monochrome 614 d += 2*(plot_x-plot_y)+5;
|
|
00000CDA 63D3 MOV R13,R3
|
|
00000CDC 33E8 SUB R14,R3
|
|
00000CDE 4300 SHLL R3
|
|
00000CE0 7305 ADD #5,R3
|
|
00000CE2 393C ADD R3,R9
|
|
Monochrome 615 plot_y--;
|
|
00000CE4 7EFF ADD #-1,R14
|
|
Monochrome 616 ML_horizontal_line(y+plot_y+1, x-plot_x, x+plot_x, color);
|
|
00000CE6 67B3 MOV R11,R7
|
|
00000CE8 68C3 MOV R12,R8
|
|
00000CEA 38DC ADD R13,R8
|
|
00000CEC 6683 MOV R8,R6
|
|
00000CEE 65C3 MOV R12,R5
|
|
00000CF0 35D8 SUB R13,R5
|
|
00000CF2 64A3 MOV R10,R4
|
|
00000CF4 2F52 MOV.L R5,@R15
|
|
00000CF6 34EC ADD R14,R4
|
|
00000CF8 BB2E BSR _ML_horizontal_line
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 44
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000CFA 7401 ADD #1,R4
|
|
Monochrome 617 ML_horizontal_line(y-plot_y-1, x-plot_x, x+plot_x, color);
|
|
00000CFC 65F2 MOV.L @R15,R5
|
|
00000CFE 64A3 MOV R10,R4
|
|
00000D00 67B3 MOV R11,R7
|
|
00000D02 6683 MOV R8,R6
|
|
00000D04 34E8 SUB R14,R4
|
|
00000D06 BB27 BSR _ML_horizontal_line
|
|
00000D08 74FF ADD #-1,R4
|
|
00000D0A L1269:
|
|
Monochrome 618 }
|
|
Monochrome 619 plot_x++;
|
|
00000D0A 7D01 ADD #1,R13
|
|
Monochrome 620 if(plot_y >= plot_x)
|
|
00000D0C 3ED3 CMP/GE R13,R14
|
|
00000D0E 8B0F BF L1270
|
|
Monochrome 621 {
|
|
Monochrome 622 ML_horizontal_line(y+plot_x, x-plot_y, x+plot_y, color);
|
|
00000D10 67B3 MOV R11,R7
|
|
00000D12 66C3 MOV R12,R6
|
|
00000D14 36EC ADD R14,R6
|
|
00000D16 68C3 MOV R12,R8
|
|
00000D18 2F62 MOV.L R6,@R15
|
|
00000D1A 64A3 MOV R10,R4
|
|
00000D1C 38E8 SUB R14,R8
|
|
00000D1E 6583 MOV R8,R5
|
|
00000D20 BB1A BSR _ML_horizontal_line
|
|
00000D22 34DC ADD R13,R4
|
|
Monochrome 623 ML_horizontal_line(y-plot_x, x-plot_y, x+plot_y, color);
|
|
00000D24 66F2 MOV.L @R15,R6
|
|
00000D26 6583 MOV R8,R5
|
|
00000D28 67B3 MOV R11,R7
|
|
00000D2A 64A3 MOV R10,R4
|
|
00000D2C BB14 BSR _ML_horizontal_line
|
|
00000D2E 34D8 SUB R13,R4
|
|
00000D30 L1270:
|
|
00000D30 3ED7 CMP/GT R13,R14
|
|
00000D32 89CB BT L1267
|
|
00000D34 L1265:
|
|
Monochrome 624 }
|
|
Monochrome 625 }
|
|
Monochrome 626 }
|
|
00000D34 7F04 ADD #4,R15
|
|
00000D36 4F26 LDS.L @R15+,PR
|
|
00000D38 68F6 MOV.L @R15+,R8
|
|
00000D3A 69F6 MOV.L @R15+,R9
|
|
00000D3C 6AF6 MOV.L @R15+,R10
|
|
00000D3E 6BF6 MOV.L @R15+,R11
|
|
00000D40 6CF6 MOV.L @R15+,R12
|
|
00000D42 6DF6 MOV.L @R15+,R13
|
|
00000D44 000B RTS
|
|
00000D46 6EF6 MOV.L @R15+,R14
|
|
Monochrome 627 #endif
|
|
Monochrome 628
|
|
Monochrome 629 #ifdef ML_ELLIPSE
|
|
Monochrome 630 void ML_ellipse(int x, int y, int radius1, int radius2, ML_Color color)
|
|
00000D48 _ML_ellipse: ; function: ML_ellipse
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 45
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
; frame size=128
|
|
; used runtime library name:
|
|
; __adds, __addd, __subdr, __muld, __dtos, __itos, __itod, __gtd, __lts
|
|
00000D48 2FE6 MOV.L R14,@-R15
|
|
00000D4A 2FD6 MOV.L R13,@-R15
|
|
00000D4C 2FC6 MOV.L R12,@-R15
|
|
00000D4E 6C73 MOV R7,R12
|
|
00000D50 2FB6 MOV.L R11,@-R15
|
|
00000D52 2FA6 MOV.L R10,@-R15
|
|
00000D54 2F96 MOV.L R9,@-R15
|
|
00000D56 6A63 MOV R6,R10
|
|
00000D58 2F86 MOV.L R8,@-R15
|
|
00000D5A 6953 MOV R5,R9
|
|
00000D5C 4F22 STS.L PR,@-R15
|
|
00000D5E 6843 MOV R4,R8
|
|
00000D60 4F12 STS.L MACL,@-R15
|
|
Monochrome 631 {
|
|
Monochrome 632 int plot_x, plot_y;
|
|
Monochrome 633 float d1, d2;
|
|
Monochrome 634 if(radius1 < 1 || radius2 < 1) return;
|
|
00000D62 E401 MOV #1,R4
|
|
00000D64 7FE8 ADD #-24,R15
|
|
00000D66 3A43 CMP/GE R4,R10
|
|
00000D68 8D02 BT/S L1669
|
|
00000D6A 5BFF MOV.L @(60,R15),R11
|
|
00000D6C A13A BRA L1273
|
|
00000D6E 0009 NOP
|
|
00000D70 L1669:
|
|
00000D70 3C43 CMP/GE R4,R12
|
|
00000D72 8901 BT L1670
|
|
00000D74 A136 BRA L1273
|
|
00000D76 0009 NOP
|
|
00000D78 L1670:
|
|
Monochrome 635 plot_x = 0;
|
|
Monochrome 636 plot_y = radius2;
|
|
Monochrome 637 d1 = radius2*radius2 - radius1*radius1*radius2 + radius1*radius1/4;
|
|
00000D78 0AA7 MUL.L R10,R10
|
|
00000D7A ED00 MOV #0,R13
|
|
00000D7C 6EC3 MOV R12,R14
|
|
00000D7E 001A STS MACL,R0
|
|
00000D80 4011 CMP/PZ R0
|
|
00000D82 8D01 BT/S L1274
|
|
00000D84 1F02 MOV.L R0,@(8,R15)
|
|
00000D86 7003 ADD #3,R0
|
|
00000D88 L1274:
|
|
00000D88 52F2 MOV.L @(8,R15),R2
|
|
00000D8A 4021 SHAR R0
|
|
00000D8C 02C7 MUL.L R12,R2
|
|
00000D8E 4021 SHAR R0
|
|
00000D90 021A STS MACL,R2
|
|
00000D92 3028 SUB R2,R0
|
|
00000D94 0CC7 MUL.L R12,R12
|
|
00000D96 031A STS MACL,R3
|
|
00000D98 1F35 MOV.L R3,@(20,R15)
|
|
00000D9A D212 MOV.L L1671+2,R2 ; __itos
|
|
00000D9C 420B JSR @R2
|
|
00000D9E 303C ADD R3,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 46
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000DA0 2F02 MOV.L R0,@R15
|
|
Monochrome 638 ML_pixel(x, y+plot_y, color);
|
|
00000DA2 66B3 MOV R11,R6
|
|
00000DA4 6593 MOV R9,R5
|
|
00000DA6 35EC ADD R14,R5
|
|
00000DA8 B9BC BSR _ML_pixel
|
|
00000DAA 6483 MOV R8,R4
|
|
Monochrome 639 ML_pixel(x, y-plot_y, color);
|
|
00000DAC 66B3 MOV R11,R6
|
|
00000DAE 6593 MOV R9,R5
|
|
00000DB0 35E8 SUB R14,R5
|
|
Monochrome 640 while(radius1*radius1*(plot_y-.5) > radius2*radius2*(plot_x+1))
|
|
00000DB2 A045 BRA L1649
|
|
00000DB4 6483 MOV R8,R4
|
|
00000DB6 L1276:
|
|
00000DB6 64D3 MOV R13,R4
|
|
00000DB8 61F2 MOV.L @R15,R1
|
|
00000DBA 4400 SHLL R4
|
|
00000DBC D30A MOV.L L1671+6,R3 ; __lts
|
|
00000DBE 7403 ADD #3,R4
|
|
00000DC0 04C7 MUL.L R12,R4
|
|
00000DC2 041A STS MACL,R4
|
|
00000DC4 04C7 MUL.L R12,R4
|
|
00000DC6 041A STS MACL,R4
|
|
00000DC8 430B JSR @R3
|
|
00000DCA E000 MOV #0,R0
|
|
00000DCC 8800 CMP/EQ #0,R0
|
|
00000DCE 890F BT L1277
|
|
Monochrome 641 {
|
|
Monochrome 642 if(d1 < 0)
|
|
Monochrome 643 {
|
|
Monochrome 644 d1 += radius2*radius2*(2*plot_x+3);
|
|
00000DD0 D204 MOV.L L1671+2,R2 ; __itos
|
|
00000DD2 420B JSR @R2
|
|
00000DD4 6043 MOV R4,R0
|
|
00000DD6 D305 MOV.L L1671+10,R3; __adds
|
|
00000DD8 430B JSR @R3
|
|
00000DDA 61F2 MOV.L @R15,R1
|
|
00000DDC 2F02 MOV.L R0,@R15
|
|
Monochrome 645 plot_x++;
|
|
00000DDE A018 BRA L1278
|
|
00000DE0 7D01 ADD #1,R13
|
|
00000DE2 L1671:
|
|
00000DE2 0000 .DATA.W 0
|
|
00000DE4 <00000000> .DATA.L __itos
|
|
00000DE8 <00000000> .DATA.L __lts
|
|
00000DEC <00000000> .DATA.L __adds
|
|
00000DF0 L1277:
|
|
Monochrome 646 } else {
|
|
Monochrome 647 d1 += radius2*radius2*(2*plot_x+3) + radius1*radius1*(-2*plot_y+2);
|
|
00000DF0 D3BA MOV.L L1672+2,R3 ; __itos
|
|
00000DF2 62E3 MOV R14,R2
|
|
00000DF4 4200 SHLL R2
|
|
00000DF6 E002 MOV #2,R0
|
|
00000DF8 3028 SUB R2,R0
|
|
00000DFA 00A7 MUL.L R10,R0
|
|
00000DFC 001A STS MACL,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 47
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000DFE 00A7 MUL.L R10,R0
|
|
00000E00 001A STS MACL,R0
|
|
00000E02 430B JSR @R3
|
|
00000E04 304C ADD R4,R0
|
|
00000E06 D2B6 MOV.L L1672+6,R2 ; __adds
|
|
00000E08 420B JSR @R2
|
|
00000E0A 61F2 MOV.L @R15,R1
|
|
00000E0C 2F02 MOV.L R0,@R15
|
|
Monochrome 648 plot_x++;
|
|
00000E0E 7D01 ADD #1,R13
|
|
Monochrome 649 plot_y--;
|
|
00000E10 7EFF ADD #-1,R14
|
|
00000E12 L1278:
|
|
Monochrome 650 }
|
|
Monochrome 651 ML_pixel(x+plot_x, y+plot_y, color);
|
|
00000E12 66B3 MOV R11,R6
|
|
00000E14 6593 MOV R9,R5
|
|
00000E16 35EC ADD R14,R5
|
|
00000E18 1F51 MOV.L R5,@(4,R15)
|
|
00000E1A 6483 MOV R8,R4
|
|
00000E1C 34DC ADD R13,R4
|
|
00000E1E B981 BSR _ML_pixel
|
|
00000E20 1F43 MOV.L R4,@(12,R15)
|
|
Monochrome 652 ML_pixel(x-plot_x, y+plot_y, color);
|
|
00000E22 66B3 MOV R11,R6
|
|
00000E24 55F1 MOV.L @(4,R15),R5
|
|
00000E26 6483 MOV R8,R4
|
|
00000E28 34D8 SUB R13,R4
|
|
00000E2A B97B BSR _ML_pixel
|
|
00000E2C 1F44 MOV.L R4,@(16,R15)
|
|
Monochrome 653 ML_pixel(x+plot_x, y-plot_y, color);
|
|
00000E2E 66B3 MOV R11,R6
|
|
00000E30 6593 MOV R9,R5
|
|
00000E32 35E8 SUB R14,R5
|
|
00000E34 1F51 MOV.L R5,@(4,R15)
|
|
00000E36 B975 BSR _ML_pixel
|
|
00000E38 54F3 MOV.L @(12,R15),R4
|
|
Monochrome 654 ML_pixel(x-plot_x, y-plot_y, color);
|
|
00000E3A 66B3 MOV R11,R6
|
|
00000E3C 55F1 MOV.L @(4,R15),R5
|
|
00000E3E 54F4 MOV.L @(16,R15),R4
|
|
00000E40 L1649:
|
|
00000E40 B970 BSR _ML_pixel
|
|
00000E42 0009 NOP
|
|
00000E44 D2A7 MOV.L L1672+10,R2; __itod
|
|
00000E46 7FF8 ADD #-8,R15
|
|
00000E48 50F4 MOV.L @(16,R15),R0
|
|
00000E4A 7FF8 ADD #-8,R15
|
|
00000E4C 420B JSR @R2
|
|
00000E4E 2FF6 MOV.L R15,@-R15
|
|
00000E50 D3A4 MOV.L L1672+10,R3; __itod
|
|
00000E52 60E3 MOV R14,R0
|
|
00000E54 7FF0 ADD #-16,R15
|
|
00000E56 430B JSR @R3
|
|
00000E58 2FF6 MOV.L R15,@-R15
|
|
00000E5A E200 MOV #0,R2
|
|
00000E5C D1A3 MOV.L L1672+18,R1; __addd
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 48
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000E5E 2F26 MOV.L R2,@-R15
|
|
00000E60 D2A1 MOV.L L1672+14,R2; H'BFE00000
|
|
00000E62 2F26 MOV.L R2,@-R15
|
|
00000E64 63F3 MOV R15,R3
|
|
00000E66 7310 ADD #16,R3
|
|
00000E68 410B JSR @R1
|
|
00000E6A 2F36 MOV.L R3,@-R15
|
|
00000E6C D0A0 MOV.L L1672+22,R0; __muld
|
|
00000E6E 62F3 MOV R15,R2
|
|
00000E70 7210 ADD #16,R2
|
|
00000E72 400B JSR @R0
|
|
00000E74 2F26 MOV.L R2,@-R15
|
|
00000E76 60D3 MOV R13,R0
|
|
00000E78 D39A MOV.L L1672+10,R3; __itod
|
|
00000E7A 7FF8 ADD #-8,R15
|
|
00000E7C 7001 ADD #1,R0
|
|
00000E7E 00C7 MUL.L R12,R0
|
|
00000E80 001A STS MACL,R0
|
|
00000E82 00C7 MUL.L R12,R0
|
|
00000E84 001A STS MACL,R0
|
|
00000E86 430B JSR @R3
|
|
00000E88 2FF6 MOV.L R15,@-R15
|
|
00000E8A D29A MOV.L L1672+26,R2; __gtd
|
|
00000E8C 420B JSR @R2
|
|
00000E8E 0009 NOP
|
|
00000E90 8800 CMP/EQ #0,R0
|
|
00000E92 8B90 BF L1276
|
|
Monochrome 655 }
|
|
Monochrome 656 d2 = radius2*radius2*(plot_x+.5)*(plot_x+.5) + radius1*radius1*(plot_y-1)*(plot_y-1) - radius1*rad
|
|
+ius1*radius2*radius2;
|
|
00000E94 D393 MOV.L L1672+10,R3; __itod
|
|
00000E96 7FE0 ADD #-32,R15
|
|
00000E98 50FD MOV.L @(52,R15),R0
|
|
00000E9A 7FF8 ADD #-8,R15
|
|
00000E9C 430B JSR @R3
|
|
00000E9E 2FF6 MOV.L R15,@-R15
|
|
00000EA0 D290 MOV.L L1672+10,R2; __itod
|
|
00000EA2 60D3 MOV R13,R0
|
|
00000EA4 7FF0 ADD #-16,R15
|
|
00000EA6 420B JSR @R2
|
|
00000EA8 2FF6 MOV.L R15,@-R15
|
|
00000EAA E300 MOV #0,R3
|
|
00000EAC D18F MOV.L L1672+18,R1; __addd
|
|
00000EAE 2F36 MOV.L R3,@-R15
|
|
00000EB0 D391 MOV.L L1672+30,R3; H'3FE00000
|
|
00000EB2 2F36 MOV.L R3,@-R15
|
|
00000EB4 62F3 MOV R15,R2
|
|
00000EB6 7210 ADD #16,R2
|
|
00000EB8 410B JSR @R1
|
|
00000EBA 2F26 MOV.L R2,@-R15
|
|
00000EBC D08C MOV.L L1672+22,R0; __muld
|
|
00000EBE 63F3 MOV R15,R3
|
|
00000EC0 7310 ADD #16,R3
|
|
00000EC2 400B JSR @R0
|
|
00000EC4 2F36 MOV.L R3,@-R15
|
|
00000EC6 60D3 MOV R13,R0
|
|
00000EC8 D286 MOV.L L1672+10,R2; __itod
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 49
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000ECA 7FF0 ADD #-16,R15
|
|
00000ECC 420B JSR @R2
|
|
00000ECE 2FF6 MOV.L R15,@-R15
|
|
00000ED0 D186 MOV.L L1672+18,R1; __addd
|
|
00000ED2 E300 MOV #0,R3
|
|
00000ED4 2F36 MOV.L R3,@-R15
|
|
00000ED6 D388 MOV.L L1672+30,R3; H'3FE00000
|
|
00000ED8 2F36 MOV.L R3,@-R15
|
|
00000EDA 62F3 MOV R15,R2
|
|
00000EDC 7210 ADD #16,R2
|
|
00000EDE 410B JSR @R1
|
|
00000EE0 2F26 MOV.L R2,@-R15
|
|
00000EE2 63F3 MOV R15,R3
|
|
00000EE4 D082 MOV.L L1672+22,R0; __muld
|
|
00000EE6 7310 ADD #16,R3
|
|
00000EE8 400B JSR @R0
|
|
00000EEA 2F36 MOV.L R3,@-R15
|
|
00000EEC D37D MOV.L L1672+10,R3; __itod
|
|
00000EEE 64E3 MOV R14,R4
|
|
00000EF0 74FF ADD #-1,R4
|
|
00000EF2 7FF8 ADD #-8,R15
|
|
00000EF4 0447 MUL.L R4,R4
|
|
00000EF6 001A STS MACL,R0
|
|
00000EF8 00A7 MUL.L R10,R0
|
|
00000EFA 001A STS MACL,R0
|
|
00000EFC 00A7 MUL.L R10,R0
|
|
00000EFE 001A STS MACL,R0
|
|
00000F00 430B JSR @R3
|
|
00000F02 2FF6 MOV.L R15,@-R15
|
|
00000F04 D179 MOV.L L1672+18,R1; __addd
|
|
00000F06 62F3 MOV R15,R2
|
|
00000F08 7210 ADD #16,R2
|
|
00000F0A 410B JSR @R1
|
|
00000F0C 2F26 MOV.L R2,@-R15
|
|
00000F0E 50F6 MOV.L @(24,R15),R0
|
|
00000F10 D374 MOV.L L1672+10,R3; __itod
|
|
00000F12 7FF8 ADD #-8,R15
|
|
00000F14 00C7 MUL.L R12,R0
|
|
00000F16 001A STS MACL,R0
|
|
00000F18 00C7 MUL.L R12,R0
|
|
00000F1A 001A STS MACL,R0
|
|
00000F1C 430B JSR @R3
|
|
00000F1E 2FF6 MOV.L R15,@-R15
|
|
00000F20 D176 MOV.L L1672+34,R1; __subdr
|
|
00000F22 62F3 MOV R15,R2
|
|
00000F24 7210 ADD #16,R2
|
|
00000F26 410B JSR @R1
|
|
00000F28 2F26 MOV.L R2,@-R15
|
|
00000F2A D375 MOV.L L1672+38,R3; __dtos
|
|
00000F2C 430B JSR @R3
|
|
00000F2E 0009 NOP
|
|
00000F30 2F02 MOV.L R0,@R15
|
|
00000F32 6483 MOV R8,R4
|
|
00000F34 34D8 SUB R13,R4
|
|
00000F36 6383 MOV R8,R3
|
|
00000F38 1F42 MOV.L R4,@(8,R15)
|
|
Monochrome 657 while(plot_y > 0)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 50
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000F3A 4E15 CMP/PL R14
|
|
00000F3C 33DC ADD R13,R3
|
|
00000F3E 1F31 MOV.L R3,@(4,R15)
|
|
00000F40 8F50 BF/S L1273
|
|
00000F42 1F44 MOV.L R4,@(16,R15)
|
|
00000F44 L1280:
|
|
Monochrome 658 {
|
|
Monochrome 659 if(d2 < 0)
|
|
00000F44 61F2 MOV.L @R15,R1
|
|
00000F46 D36F MOV.L L1672+42,R3; __lts
|
|
00000F48 430B JSR @R3
|
|
00000F4A E000 MOV #0,R0
|
|
00000F4C 8800 CMP/EQ #0,R0
|
|
00000F4E 8921 BT L1281
|
|
Monochrome 660 {
|
|
Monochrome 661 d2 += radius2*radius2*(2*plot_x+2) + radius1*radius1*(-2*plot_y+3);
|
|
00000F50 60D3 MOV R13,R0
|
|
00000F52 4000 SHLL R0
|
|
00000F54 7002 ADD #2,R0
|
|
00000F56 63E3 MOV R14,R3
|
|
00000F58 00C7 MUL.L R12,R0
|
|
00000F5A E203 MOV #3,R2
|
|
00000F5C 001A STS MACL,R0
|
|
00000F5E 4300 SHLL R3
|
|
00000F60 00C7 MUL.L R12,R0
|
|
00000F62 3238 SUB R3,R2
|
|
00000F64 D35D MOV.L L1672+2,R3 ; __itos
|
|
00000F66 001A STS MACL,R0
|
|
00000F68 02A7 MUL.L R10,R2
|
|
00000F6A 021A STS MACL,R2
|
|
00000F6C 02A7 MUL.L R10,R2
|
|
00000F6E 021A STS MACL,R2
|
|
00000F70 430B JSR @R3
|
|
00000F72 302C ADD R2,R0
|
|
00000F74 D25A MOV.L L1672+6,R2 ; __adds
|
|
00000F76 420B JSR @R2
|
|
00000F78 61F2 MOV.L @R15,R1
|
|
Monochrome 662 plot_y--;
|
|
00000F7A 7EFF ADD #-1,R14
|
|
00000F7C 2F02 MOV.L R0,@R15
|
|
Monochrome 663 plot_x++;
|
|
00000F7E 7D01 ADD #1,R13
|
|
00000F80 53F2 MOV.L @(8,R15),R3
|
|
00000F82 73FF ADD #-1,R3
|
|
00000F84 1F32 MOV.L R3,@(8,R15)
|
|
00000F86 52F1 MOV.L @(4,R15),R2
|
|
00000F88 7201 ADD #1,R2
|
|
00000F8A 1F21 MOV.L R2,@(4,R15)
|
|
00000F8C 51F4 MOV.L @(16,R15),R1
|
|
00000F8E 71FF ADD #-1,R1
|
|
00000F90 A00F BRA L1282
|
|
00000F92 1F14 MOV.L R1,@(16,R15)
|
|
00000F94 L1281:
|
|
Monochrome 664 } else {
|
|
Monochrome 665 d2 += radius1*radius1*(-2*plot_y+3);
|
|
00000F94 D351 MOV.L L1672+2,R3 ; __itos
|
|
00000F96 62E3 MOV R14,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 51
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000F98 4200 SHLL R2
|
|
00000F9A E003 MOV #3,R0
|
|
00000F9C 3028 SUB R2,R0
|
|
00000F9E 00A7 MUL.L R10,R0
|
|
00000FA0 001A STS MACL,R0
|
|
00000FA2 00A7 MUL.L R10,R0
|
|
00000FA4 430B JSR @R3
|
|
00000FA6 001A STS MACL,R0
|
|
00000FA8 D24D MOV.L L1672+6,R2 ; __adds
|
|
00000FAA 420B JSR @R2
|
|
00000FAC 61F2 MOV.L @R15,R1
|
|
Monochrome 666 plot_y--;
|
|
00000FAE 7EFF ADD #-1,R14
|
|
00000FB0 2F02 MOV.L R0,@R15
|
|
00000FB2 L1282:
|
|
Monochrome 667 }
|
|
Monochrome 668 ML_pixel(x+plot_x, y+plot_y, color);
|
|
00000FB2 66B3 MOV R11,R6
|
|
00000FB4 6593 MOV R9,R5
|
|
00000FB6 35EC ADD R14,R5
|
|
00000FB8 1F53 MOV.L R5,@(12,R15)
|
|
00000FBA 6483 MOV R8,R4
|
|
00000FBC B8B2 BSR _ML_pixel
|
|
00000FBE 34DC ADD R13,R4
|
|
Monochrome 669 ML_pixel(x-plot_x, y+plot_y, color);
|
|
00000FC0 55F3 MOV.L @(12,R15),R5
|
|
00000FC2 66B3 MOV R11,R6
|
|
00000FC4 B8AE BSR _ML_pixel
|
|
00000FC6 54F4 MOV.L @(16,R15),R4
|
|
Monochrome 670 if(plot_y > 0)
|
|
00000FC8 4E15 CMP/PL R14
|
|
00000FCA 8B09 BF L1283
|
|
Monochrome 671 {
|
|
Monochrome 672 ML_pixel(x+plot_x, y-plot_y, color);
|
|
00000FCC 66B3 MOV R11,R6
|
|
00000FCE 6593 MOV R9,R5
|
|
00000FD0 35E8 SUB R14,R5
|
|
00000FD2 1F53 MOV.L R5,@(12,R15)
|
|
00000FD4 B8A6 BSR _ML_pixel
|
|
00000FD6 54F1 MOV.L @(4,R15),R4
|
|
Monochrome 673 ML_pixel(x-plot_x, y-plot_y, color);
|
|
00000FD8 55F3 MOV.L @(12,R15),R5
|
|
00000FDA 66B3 MOV R11,R6
|
|
00000FDC B8A2 BSR _ML_pixel
|
|
00000FDE 54F2 MOV.L @(8,R15),R4
|
|
00000FE0 L1283:
|
|
00000FE0 4E15 CMP/PL R14
|
|
00000FE2 89AF BT L1280
|
|
00000FE4 L1273:
|
|
Monochrome 674 }
|
|
Monochrome 675 }
|
|
Monochrome 676 }
|
|
00000FE4 7F18 ADD #24,R15
|
|
00000FE6 4F16 LDS.L @R15+,MACL
|
|
00000FE8 4F26 LDS.L @R15+,PR
|
|
00000FEA 68F6 MOV.L @R15+,R8
|
|
00000FEC 69F6 MOV.L @R15+,R9
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 52
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00000FEE 6AF6 MOV.L @R15+,R10
|
|
00000FF0 6BF6 MOV.L @R15+,R11
|
|
00000FF2 6CF6 MOV.L @R15+,R12
|
|
00000FF4 6DF6 MOV.L @R15+,R13
|
|
00000FF6 000B RTS
|
|
00000FF8 6EF6 MOV.L @R15+,R14
|
|
Monochrome 677 #endif
|
|
Monochrome 678
|
|
Monochrome 679 #ifdef ML_ELLIPSE_IN_RECT
|
|
Monochrome 680 void ML_ellipse_in_rect(int x1, int y1, int x2, int y2, ML_Color color)
|
|
00000FFA _ML_ellipse_in_rect: ; function: ML_ellipse_in_rect
|
|
; frame size=24
|
|
00000FFA 2FE6 MOV.L R14,@-R15
|
|
00000FFC 2FD6 MOV.L R13,@-R15
|
|
00000FFE 6E43 MOV R4,R14
|
|
00001000 2FC6 MOV.L R12,@-R15
|
|
Monochrome 681 {
|
|
Monochrome 682 int radius1, radius2;
|
|
Monochrome 683 if(x1 > x2)
|
|
00001002 3E67 CMP/GT R6,R14
|
|
00001004 2FB6 MOV.L R11,@-R15
|
|
00001006 4F22 STS.L PR,@-R15
|
|
00001008 8F03 BF/S L1284
|
|
0000100A 6D53 MOV R5,R13
|
|
Monochrome 684 {
|
|
Monochrome 685 int tmp = x1;
|
|
0000100C 64E3 MOV R14,R4
|
|
Monochrome 686 x1 = x2;
|
|
0000100E 6E63 MOV R6,R14
|
|
Monochrome 687 x2 = tmp;
|
|
00001010 6643 MOV R4,R6
|
|
00001012 L1284:
|
|
Monochrome 688 }
|
|
Monochrome 689 if(y1 > y2)
|
|
00001012 3D77 CMP/GT R7,R13
|
|
00001014 8F03 BF/S L1285
|
|
Monochrome 690 {
|
|
Monochrome 691 int tmp = y1;
|
|
Monochrome 692 y1 = y2;
|
|
Monochrome 693 y2 = tmp;
|
|
Monochrome 694 }
|
|
Monochrome 695 radius1 = (x2-x1)/2;
|
|
00001016 36E8 SUB R14,R6
|
|
00001018 64D3 MOV R13,R4
|
|
0000101A 6D73 MOV R7,R13
|
|
0000101C 6743 MOV R4,R7
|
|
0000101E L1285:
|
|
0000101E 6B63 MOV R6,R11
|
|
Monochrome 696 radius2 = (y2-y1)/2;
|
|
Monochrome 697 ML_ellipse(x1+radius1, y1+radius2, radius1, radius2, color);
|
|
00001020 52F5 MOV.L @(20,R15),R2
|
|
00001022 65D3 MOV R13,R5
|
|
00001024 2F26 MOV.L R2,@-R15
|
|
00001026 64E3 MOV R14,R4
|
|
00001028 E300 MOV #0,R3
|
|
0000102A 33B7 CMP/GT R11,R3
|
|
0000102C 3B3E ADDC R3,R11
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 53
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000102E 4B21 SHAR R11
|
|
00001030 37D8 SUB R13,R7
|
|
00001032 6C73 MOV R7,R12
|
|
00001034 33C7 CMP/GT R12,R3
|
|
00001036 3C3E ADDC R3,R12
|
|
00001038 4C21 SHAR R12
|
|
0000103A 67C3 MOV R12,R7
|
|
0000103C 66B3 MOV R11,R6
|
|
0000103E 35CC ADD R12,R5
|
|
00001040 BE82 BSR _ML_ellipse
|
|
00001042 34BC ADD R11,R4
|
|
Monochrome 698 }
|
|
00001044 7F04 ADD #4,R15
|
|
00001046 4F26 LDS.L @R15+,PR
|
|
00001048 6BF6 MOV.L @R15+,R11
|
|
0000104A 6CF6 MOV.L @R15+,R12
|
|
0000104C 6DF6 MOV.L @R15+,R13
|
|
0000104E 000B RTS
|
|
00001050 6EF6 MOV.L @R15+,R14
|
|
Monochrome 699 #endif
|
|
Monochrome 700
|
|
Monochrome 701 #ifdef ML_FILLED_ELLIPSE
|
|
Monochrome 702 void ML_filled_ellipse(int x, int y, int radius1, int radius2, ML_Color color)
|
|
00001052 _ML_filled_ellipse: ; function: ML_filled_ellipse
|
|
; frame size=124
|
|
; used runtime library name:
|
|
; __adds, __addd, __subdr, __muld, __dtos, __itos, __itod, __gtd, __lts
|
|
00001052 2FE6 MOV.L R14,@-R15
|
|
00001054 2FD6 MOV.L R13,@-R15
|
|
00001056 2FC6 MOV.L R12,@-R15
|
|
00001058 2FB6 MOV.L R11,@-R15
|
|
0000105A 6C73 MOV R7,R12
|
|
0000105C 2FA6 MOV.L R10,@-R15
|
|
0000105E 6B63 MOV R6,R11
|
|
00001060 2F96 MOV.L R9,@-R15
|
|
00001062 6953 MOV R5,R9
|
|
00001064 2F86 MOV.L R8,@-R15
|
|
00001066 6843 MOV R4,R8
|
|
00001068 4F22 STS.L PR,@-R15
|
|
Monochrome 703 {
|
|
Monochrome 704 int plot_x, plot_y;
|
|
Monochrome 705 float d1, d2;
|
|
Monochrome 706 if(radius1 < 1 || radius2 < 1) return;
|
|
0000106A E401 MOV #1,R4
|
|
0000106C 4F12 STS.L MACL,@-R15
|
|
0000106E 3B43 CMP/GE R4,R11
|
|
00001070 7FEC ADD #-20,R15
|
|
00001072 8D02 BT/S L1673
|
|
00001074 5AFE MOV.L @(56,R15),R10
|
|
00001076 A13F BRA L1288
|
|
00001078 0009 NOP
|
|
0000107A L1673:
|
|
0000107A 3C43 CMP/GE R4,R12
|
|
0000107C 8901 BT L1674
|
|
0000107E A13B BRA L1288
|
|
00001080 0009 NOP
|
|
00001082 L1674:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 54
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 707 plot_x = 0;
|
|
00001082 ED00 MOV #0,R13
|
|
Monochrome 708 plot_y = radius2;
|
|
Monochrome 709 d1 = radius2*radius2 - radius1*radius1*radius2 + radius1*radius1/4;
|
|
00001084 0BB7 MUL.L R11,R11
|
|
00001086 6EC3 MOV R12,R14
|
|
00001088 001A STS MACL,R0
|
|
0000108A 4011 CMP/PZ R0
|
|
0000108C 8D01 BT/S L1289
|
|
0000108E 1F02 MOV.L R0,@(8,R15)
|
|
00001090 7003 ADD #3,R0
|
|
00001092 L1289:
|
|
00001092 4021 SHAR R0
|
|
00001094 52F2 MOV.L @(8,R15),R2
|
|
00001096 4021 SHAR R0
|
|
00001098 02C7 MUL.L R12,R2
|
|
0000109A 021A STS MACL,R2
|
|
0000109C 0CC7 MUL.L R12,R12
|
|
0000109E 3028 SUB R2,R0
|
|
000010A0 D20E MOV.L L1672+2,R2 ; __itos
|
|
000010A2 031A STS MACL,R3
|
|
000010A4 1F34 MOV.L R3,@(16,R15)
|
|
000010A6 420B JSR @R2
|
|
000010A8 303C ADD R3,R0
|
|
Monochrome 710 while(radius1*radius1*(plot_y-.5) > radius2*radius2*(plot_x+1))
|
|
000010AA A04E BRA L1290
|
|
000010AC 2F02 MOV.L R0,@R15
|
|
000010AE L1291:
|
|
000010AE 64D3 MOV R13,R4
|
|
000010B0 61F2 MOV.L @R15,R1
|
|
000010B2 4400 SHLL R4
|
|
000010B4 D313 MOV.L L1672+42,R3; __lts
|
|
000010B6 7403 ADD #3,R4
|
|
000010B8 04C7 MUL.L R12,R4
|
|
000010BA 041A STS MACL,R4
|
|
000010BC 04C7 MUL.L R12,R4
|
|
000010BE 041A STS MACL,R4
|
|
000010C0 430B JSR @R3
|
|
000010C2 E000 MOV #0,R0
|
|
000010C4 8800 CMP/EQ #0,R0
|
|
000010C6 891F BT L1292
|
|
Monochrome 711 {
|
|
Monochrome 712 if(d1 < 0)
|
|
Monochrome 713 {
|
|
Monochrome 714 d1 += radius2*radius2*(2*plot_x+3);
|
|
000010C8 D204 MOV.L L1672+2,R2 ; __itos
|
|
000010CA 420B JSR @R2
|
|
000010CC 6043 MOV R4,R0
|
|
000010CE D304 MOV.L L1672+6,R3 ; __adds
|
|
000010D0 430B JSR @R3
|
|
000010D2 61F2 MOV.L @R15,R1
|
|
000010D4 2F02 MOV.L R0,@R15
|
|
Monochrome 715 plot_x++;
|
|
000010D6 A038 BRA L1290
|
|
000010D8 7D01 ADD #1,R13
|
|
000010DA L1672:
|
|
000010DA 0000 .DATA.W 0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 55
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000010DC <00000000> .DATA.L __itos
|
|
000010E0 <00000000> .DATA.L __adds
|
|
000010E4 <00000000> .DATA.L __itod
|
|
000010E8 BFE00000 .DATA.L H'BFE00000
|
|
000010EC <00000000> .DATA.L __addd
|
|
000010F0 <00000000> .DATA.L __muld
|
|
000010F4 <00000000> .DATA.L __gtd
|
|
000010F8 3FE00000 .DATA.L H'3FE00000
|
|
000010FC <00000000> .DATA.L __subdr
|
|
00001100 <00000000> .DATA.L __dtos
|
|
00001104 <00000000> .DATA.L __lts
|
|
00001108 L1292:
|
|
Monochrome 716 } else {
|
|
Monochrome 717 d1 += radius2*radius2*(2*plot_x+3) + radius1*radius1*(-2*plot_y+2);
|
|
00001108 D3A0 MOV.L L1675+2,R3 ; __itos
|
|
0000110A 62E3 MOV R14,R2
|
|
0000110C 4200 SHLL R2
|
|
0000110E E002 MOV #2,R0
|
|
00001110 3028 SUB R2,R0
|
|
00001112 00B7 MUL.L R11,R0
|
|
00001114 001A STS MACL,R0
|
|
00001116 00B7 MUL.L R11,R0
|
|
00001118 001A STS MACL,R0
|
|
0000111A 430B JSR @R3
|
|
0000111C 304C ADD R4,R0
|
|
0000111E D29C MOV.L L1675+6,R2 ; __adds
|
|
00001120 420B JSR @R2
|
|
00001122 61F2 MOV.L @R15,R1
|
|
00001124 2F02 MOV.L R0,@R15
|
|
Monochrome 718 ML_horizontal_line(y+plot_y, x-plot_x, x+plot_x, color);
|
|
00001126 67A3 MOV R10,R7
|
|
00001128 6683 MOV R8,R6
|
|
0000112A 36DC ADD R13,R6
|
|
0000112C 1F61 MOV.L R6,@(4,R15)
|
|
0000112E 6583 MOV R8,R5
|
|
00001130 35D8 SUB R13,R5
|
|
00001132 6493 MOV R9,R4
|
|
00001134 1F53 MOV.L R5,@(12,R15)
|
|
00001136 B90F BSR _ML_horizontal_line
|
|
00001138 34EC ADD R14,R4
|
|
Monochrome 719 ML_horizontal_line(y-plot_y, x-plot_x, x+plot_x, color);
|
|
0000113A 67A3 MOV R10,R7
|
|
0000113C 56F1 MOV.L @(4,R15),R6
|
|
0000113E 6493 MOV R9,R4
|
|
00001140 55F3 MOV.L @(12,R15),R5
|
|
00001142 B909 BSR _ML_horizontal_line
|
|
00001144 34E8 SUB R14,R4
|
|
Monochrome 720 plot_x++;
|
|
00001146 7D01 ADD #1,R13
|
|
Monochrome 721 plot_y--;
|
|
00001148 7EFF ADD #-1,R14
|
|
0000114A L1290:
|
|
0000114A 7FF8 ADD #-8,R15
|
|
0000114C D291 MOV.L L1675+10,R2; __itod
|
|
0000114E 50F4 MOV.L @(16,R15),R0
|
|
00001150 7FF8 ADD #-8,R15
|
|
00001152 420B JSR @R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 56
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001154 2FF6 MOV.L R15,@-R15
|
|
00001156 60E3 MOV R14,R0
|
|
00001158 D38E MOV.L L1675+10,R3; __itod
|
|
0000115A 7FF0 ADD #-16,R15
|
|
0000115C 430B JSR @R3
|
|
0000115E 2FF6 MOV.L R15,@-R15
|
|
00001160 D18E MOV.L L1675+18,R1; __addd
|
|
00001162 E200 MOV #0,R2
|
|
00001164 2F26 MOV.L R2,@-R15
|
|
00001166 D28C MOV.L L1675+14,R2; H'BFE00000
|
|
00001168 2F26 MOV.L R2,@-R15
|
|
0000116A 63F3 MOV R15,R3
|
|
0000116C 7310 ADD #16,R3
|
|
0000116E 410B JSR @R1
|
|
00001170 2F36 MOV.L R3,@-R15
|
|
00001172 62F3 MOV R15,R2
|
|
00001174 D08A MOV.L L1675+22,R0; __muld
|
|
00001176 7210 ADD #16,R2
|
|
00001178 400B JSR @R0
|
|
0000117A 2F26 MOV.L R2,@-R15
|
|
0000117C D385 MOV.L L1675+10,R3; __itod
|
|
0000117E 60D3 MOV R13,R0
|
|
00001180 7001 ADD #1,R0
|
|
00001182 7FF8 ADD #-8,R15
|
|
00001184 00C7 MUL.L R12,R0
|
|
00001186 001A STS MACL,R0
|
|
00001188 00C7 MUL.L R12,R0
|
|
0000118A 001A STS MACL,R0
|
|
0000118C 430B JSR @R3
|
|
0000118E 2FF6 MOV.L R15,@-R15
|
|
00001190 D284 MOV.L L1675+26,R2; __gtd
|
|
00001192 420B JSR @R2
|
|
00001194 0009 NOP
|
|
00001196 8800 CMP/EQ #0,R0
|
|
00001198 8B89 BF L1291
|
|
Monochrome 722 }
|
|
Monochrome 723 }
|
|
Monochrome 724 ML_horizontal_line(y+plot_y, x-plot_x, x+plot_x, color);
|
|
0000119A 67A3 MOV R10,R7
|
|
0000119C 6683 MOV R8,R6
|
|
0000119E 36DC ADD R13,R6
|
|
000011A0 1F61 MOV.L R6,@(4,R15)
|
|
000011A2 6583 MOV R8,R5
|
|
000011A4 35D8 SUB R13,R5
|
|
000011A6 6493 MOV R9,R4
|
|
000011A8 1F53 MOV.L R5,@(12,R15)
|
|
000011AA B8D5 BSR _ML_horizontal_line
|
|
000011AC 34EC ADD R14,R4
|
|
Monochrome 725 ML_horizontal_line(y-plot_y, x-plot_x, x+plot_x, color);
|
|
000011AE 67A3 MOV R10,R7
|
|
000011B0 56F1 MOV.L @(4,R15),R6
|
|
000011B2 6493 MOV R9,R4
|
|
000011B4 55F3 MOV.L @(12,R15),R5
|
|
000011B6 B8CF BSR _ML_horizontal_line
|
|
000011B8 34E8 SUB R14,R4
|
|
Monochrome 726 d2 = radius2*radius2*(plot_x+.5)*(plot_x+.5) + radius1*radius1*(plot_y-1)*(plot_y-1) - radius1*rad
|
|
+ius1*radius2*radius2;
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 57
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000011BA 7FE0 ADD #-32,R15
|
|
000011BC D275 MOV.L L1675+10,R2; __itod
|
|
000011BE 50FC MOV.L @(48,R15),R0
|
|
000011C0 7FF8 ADD #-8,R15
|
|
000011C2 420B JSR @R2
|
|
000011C4 2FF6 MOV.L R15,@-R15
|
|
000011C6 60D3 MOV R13,R0
|
|
000011C8 D372 MOV.L L1675+10,R3; __itod
|
|
000011CA 7FF0 ADD #-16,R15
|
|
000011CC 430B JSR @R3
|
|
000011CE 2FF6 MOV.L R15,@-R15
|
|
000011D0 D172 MOV.L L1675+18,R1; __addd
|
|
000011D2 E200 MOV #0,R2
|
|
000011D4 2F26 MOV.L R2,@-R15
|
|
000011D6 D274 MOV.L L1675+30,R2; H'3FE00000
|
|
000011D8 2F26 MOV.L R2,@-R15
|
|
000011DA 63F3 MOV R15,R3
|
|
000011DC 7310 ADD #16,R3
|
|
000011DE 410B JSR @R1
|
|
000011E0 2F36 MOV.L R3,@-R15
|
|
000011E2 62F3 MOV R15,R2
|
|
000011E4 D06E MOV.L L1675+22,R0; __muld
|
|
000011E6 7210 ADD #16,R2
|
|
000011E8 400B JSR @R0
|
|
000011EA 2F26 MOV.L R2,@-R15
|
|
000011EC D369 MOV.L L1675+10,R3; __itod
|
|
000011EE 60D3 MOV R13,R0
|
|
000011F0 7FF0 ADD #-16,R15
|
|
000011F2 430B JSR @R3
|
|
000011F4 2FF6 MOV.L R15,@-R15
|
|
000011F6 E200 MOV #0,R2
|
|
000011F8 D168 MOV.L L1675+18,R1; __addd
|
|
000011FA 2F26 MOV.L R2,@-R15
|
|
000011FC D26A MOV.L L1675+30,R2; H'3FE00000
|
|
000011FE 2F26 MOV.L R2,@-R15
|
|
00001200 63F3 MOV R15,R3
|
|
00001202 7310 ADD #16,R3
|
|
00001204 410B JSR @R1
|
|
00001206 2F36 MOV.L R3,@-R15
|
|
00001208 D065 MOV.L L1675+22,R0; __muld
|
|
0000120A 62F3 MOV R15,R2
|
|
0000120C 7210 ADD #16,R2
|
|
0000120E 400B JSR @R0
|
|
00001210 2F26 MOV.L R2,@-R15
|
|
00001212 64E3 MOV R14,R4
|
|
00001214 D35F MOV.L L1675+10,R3; __itod
|
|
00001216 7FF8 ADD #-8,R15
|
|
00001218 74FF ADD #-1,R4
|
|
0000121A 0447 MUL.L R4,R4
|
|
0000121C 001A STS MACL,R0
|
|
0000121E 00B7 MUL.L R11,R0
|
|
00001220 001A STS MACL,R0
|
|
00001222 00B7 MUL.L R11,R0
|
|
00001224 001A STS MACL,R0
|
|
00001226 430B JSR @R3
|
|
00001228 2FF6 MOV.L R15,@-R15
|
|
0000122A 62F3 MOV R15,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 58
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000122C D15B MOV.L L1675+18,R1; __addd
|
|
0000122E 7210 ADD #16,R2
|
|
00001230 410B JSR @R1
|
|
00001232 2F26 MOV.L R2,@-R15
|
|
00001234 50F6 MOV.L @(24,R15),R0
|
|
00001236 7FF8 ADD #-8,R15
|
|
00001238 D356 MOV.L L1675+10,R3; __itod
|
|
0000123A 00C7 MUL.L R12,R0
|
|
0000123C 001A STS MACL,R0
|
|
0000123E 00C7 MUL.L R12,R0
|
|
00001240 001A STS MACL,R0
|
|
00001242 430B JSR @R3
|
|
00001244 2FF6 MOV.L R15,@-R15
|
|
00001246 62F3 MOV R15,R2
|
|
00001248 D158 MOV.L L1675+34,R1; __subdr
|
|
0000124A 7210 ADD #16,R2
|
|
0000124C 410B JSR @R1
|
|
0000124E 2F26 MOV.L R2,@-R15
|
|
00001250 D357 MOV.L L1675+38,R3; __dtos
|
|
00001252 430B JSR @R3
|
|
00001254 0009 NOP
|
|
Monochrome 727 while(plot_y > 0)
|
|
00001256 4E15 CMP/PL R14
|
|
00001258 2F02 MOV.L R0,@R15
|
|
0000125A 53F3 MOV.L @(12,R15),R3
|
|
0000125C 1F32 MOV.L R3,@(8,R15)
|
|
0000125E 52F1 MOV.L @(4,R15),R2
|
|
00001260 1F24 MOV.L R2,@(16,R15)
|
|
00001262 53F3 MOV.L @(12,R15),R3
|
|
00001264 1F31 MOV.L R3,@(4,R15)
|
|
00001266 8B47 BF L1288
|
|
00001268 L1295:
|
|
Monochrome 728 {
|
|
Monochrome 729 if(d2 < 0)
|
|
00001268 61F2 MOV.L @R15,R1
|
|
0000126A D252 MOV.L L1675+42,R2; __lts
|
|
0000126C 420B JSR @R2
|
|
0000126E E000 MOV #0,R0
|
|
00001270 8800 CMP/EQ #0,R0
|
|
00001272 8921 BT L1296
|
|
Monochrome 730 {
|
|
Monochrome 731 d2 += radius2*radius2*(2*plot_x+2) + radius1*radius1*(-2*plot_y+3);
|
|
00001274 60D3 MOV R13,R0
|
|
00001276 4000 SHLL R0
|
|
00001278 7002 ADD #2,R0
|
|
0000127A 63E3 MOV R14,R3
|
|
0000127C 00C7 MUL.L R12,R0
|
|
0000127E E203 MOV #3,R2
|
|
00001280 001A STS MACL,R0
|
|
00001282 4300 SHLL R3
|
|
00001284 00C7 MUL.L R12,R0
|
|
00001286 3238 SUB R3,R2
|
|
00001288 D340 MOV.L L1675+2,R3 ; __itos
|
|
0000128A 001A STS MACL,R0
|
|
0000128C 02B7 MUL.L R11,R2
|
|
0000128E 021A STS MACL,R2
|
|
00001290 02B7 MUL.L R11,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 59
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001292 021A STS MACL,R2
|
|
00001294 430B JSR @R3
|
|
00001296 302C ADD R2,R0
|
|
00001298 D23D MOV.L L1675+6,R2 ; __adds
|
|
0000129A 420B JSR @R2
|
|
0000129C 61F2 MOV.L @R15,R1
|
|
Monochrome 732 plot_y--;
|
|
0000129E 7EFF ADD #-1,R14
|
|
000012A0 2F02 MOV.L R0,@R15
|
|
Monochrome 733 plot_x++;
|
|
000012A2 7D01 ADD #1,R13
|
|
000012A4 53F2 MOV.L @(8,R15),R3
|
|
000012A6 73FF ADD #-1,R3
|
|
000012A8 1F32 MOV.L R3,@(8,R15)
|
|
000012AA 52F4 MOV.L @(16,R15),R2
|
|
000012AC 7201 ADD #1,R2
|
|
000012AE 1F24 MOV.L R2,@(16,R15)
|
|
000012B0 51F1 MOV.L @(4,R15),R1
|
|
000012B2 71FF ADD #-1,R1
|
|
000012B4 A00F BRA L1297
|
|
000012B6 1F11 MOV.L R1,@(4,R15)
|
|
000012B8 L1296:
|
|
Monochrome 734 } else {
|
|
Monochrome 735 d2 += radius1*radius1*(-2*plot_y+3);
|
|
000012B8 D334 MOV.L L1675+2,R3 ; __itos
|
|
000012BA 62E3 MOV R14,R2
|
|
000012BC 4200 SHLL R2
|
|
000012BE E003 MOV #3,R0
|
|
000012C0 3028 SUB R2,R0
|
|
000012C2 00B7 MUL.L R11,R0
|
|
000012C4 001A STS MACL,R0
|
|
000012C6 00B7 MUL.L R11,R0
|
|
000012C8 430B JSR @R3
|
|
000012CA 001A STS MACL,R0
|
|
000012CC D230 MOV.L L1675+6,R2 ; __adds
|
|
000012CE 420B JSR @R2
|
|
000012D0 61F2 MOV.L @R15,R1
|
|
Monochrome 736 plot_y--;
|
|
000012D2 7EFF ADD #-1,R14
|
|
000012D4 2F02 MOV.L R0,@R15
|
|
000012D6 L1297:
|
|
Monochrome 737 }
|
|
Monochrome 738 ML_horizontal_line(y+plot_y, x-plot_x, x+plot_x, color);
|
|
000012D6 67A3 MOV R10,R7
|
|
000012D8 55F1 MOV.L @(4,R15),R5
|
|
000012DA 6493 MOV R9,R4
|
|
000012DC 6683 MOV R8,R6
|
|
000012DE 36DC ADD R13,R6
|
|
000012E0 B83A BSR _ML_horizontal_line
|
|
000012E2 34EC ADD R14,R4
|
|
Monochrome 739 if(plot_y > 0)
|
|
000012E4 4E15 CMP/PL R14
|
|
000012E6 8B05 BF L1298
|
|
Monochrome 740 ML_horizontal_line(y-plot_y, x-plot_x, x+plot_x, color);
|
|
000012E8 56F4 MOV.L @(16,R15),R6
|
|
000012EA 6493 MOV R9,R4
|
|
000012EC 55F2 MOV.L @(8,R15),R5
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 60
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000012EE 67A3 MOV R10,R7
|
|
000012F0 B832 BSR _ML_horizontal_line
|
|
000012F2 34E8 SUB R14,R4
|
|
000012F4 L1298:
|
|
000012F4 4E15 CMP/PL R14
|
|
000012F6 89B7 BT L1295
|
|
000012F8 L1288:
|
|
Monochrome 741 }
|
|
Monochrome 742 }
|
|
000012F8 7F14 ADD #20,R15
|
|
000012FA 4F16 LDS.L @R15+,MACL
|
|
000012FC 4F26 LDS.L @R15+,PR
|
|
000012FE 68F6 MOV.L @R15+,R8
|
|
00001300 69F6 MOV.L @R15+,R9
|
|
00001302 6AF6 MOV.L @R15+,R10
|
|
00001304 6BF6 MOV.L @R15+,R11
|
|
00001306 6CF6 MOV.L @R15+,R12
|
|
00001308 6DF6 MOV.L @R15+,R13
|
|
0000130A 000B RTS
|
|
0000130C 6EF6 MOV.L @R15+,R14
|
|
Monochrome 743 #endif
|
|
Monochrome 744
|
|
Monochrome 745 #ifdef ML_FILLED_ELLIPSE_IN_RECT
|
|
Monochrome 746 void ML_filled_ellipse_in_rect(int x1, int y1, int x2, int y2, ML_Color color)
|
|
0000130E _ML_filled_ellipse_in_rect: ; function: ML_filled_ellipse_in_rect
|
|
; frame size=24
|
|
0000130E 2FE6 MOV.L R14,@-R15
|
|
00001310 2FD6 MOV.L R13,@-R15
|
|
00001312 6E43 MOV R4,R14
|
|
00001314 2FC6 MOV.L R12,@-R15
|
|
Monochrome 747 {
|
|
Monochrome 748 int radius1, radius2;
|
|
Monochrome 749 if(x1 > x2)
|
|
00001316 3E67 CMP/GT R6,R14
|
|
00001318 2FB6 MOV.L R11,@-R15
|
|
0000131A 4F22 STS.L PR,@-R15
|
|
0000131C 8F03 BF/S L1299
|
|
0000131E 6D53 MOV R5,R13
|
|
Monochrome 750 {
|
|
Monochrome 751 int tmp = x1;
|
|
00001320 64E3 MOV R14,R4
|
|
Monochrome 752 x1 = x2;
|
|
00001322 6E63 MOV R6,R14
|
|
Monochrome 753 x2 = tmp;
|
|
00001324 6643 MOV R4,R6
|
|
00001326 L1299:
|
|
Monochrome 754 }
|
|
Monochrome 755 if(y1 > y2)
|
|
00001326 3D77 CMP/GT R7,R13
|
|
00001328 8F03 BF/S L1300
|
|
Monochrome 756 {
|
|
Monochrome 757 int tmp = y1;
|
|
Monochrome 758 y1 = y2;
|
|
Monochrome 759 y2 = tmp;
|
|
Monochrome 760 }
|
|
Monochrome 761 radius1 = (x2-x1)/2;
|
|
0000132A 36E8 SUB R14,R6
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 61
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000132C 64D3 MOV R13,R4
|
|
0000132E 6D73 MOV R7,R13
|
|
00001330 6743 MOV R4,R7
|
|
00001332 L1300:
|
|
00001332 6B63 MOV R6,R11
|
|
Monochrome 762 radius2 = (y2-y1)/2;
|
|
Monochrome 763 ML_filled_ellipse(x1+radius1, y1+radius2, radius1, radius2, color);
|
|
00001334 52F5 MOV.L @(20,R15),R2
|
|
00001336 65D3 MOV R13,R5
|
|
00001338 2F26 MOV.L R2,@-R15
|
|
0000133A 64E3 MOV R14,R4
|
|
0000133C E300 MOV #0,R3
|
|
0000133E 33B7 CMP/GT R11,R3
|
|
00001340 3B3E ADDC R3,R11
|
|
00001342 4B21 SHAR R11
|
|
00001344 37D8 SUB R13,R7
|
|
00001346 6C73 MOV R7,R12
|
|
00001348 33C7 CMP/GT R12,R3
|
|
0000134A 3C3E ADDC R3,R12
|
|
0000134C 4C21 SHAR R12
|
|
0000134E 67C3 MOV R12,R7
|
|
00001350 66B3 MOV R11,R6
|
|
00001352 35CC ADD R12,R5
|
|
00001354 BE7D BSR _ML_filled_ellipse
|
|
00001356 34BC ADD R11,R4
|
|
Monochrome 764 }
|
|
00001358 7F04 ADD #4,R15
|
|
0000135A 4F26 LDS.L @R15+,PR
|
|
0000135C 6BF6 MOV.L @R15+,R11
|
|
0000135E 6CF6 MOV.L @R15+,R12
|
|
00001360 6DF6 MOV.L @R15+,R13
|
|
00001362 000B RTS
|
|
00001364 6EF6 MOV.L @R15+,R14
|
|
Monochrome 765 #endif
|
|
Monochrome 766
|
|
Monochrome 767 #ifdef ML_HORIZONTAL_SCROLL
|
|
Monochrome 768 void ML_horizontal_scroll(int scroll)
|
|
00001366 _ML_horizontal_scroll: ; function: ML_horizontal_scroll
|
|
; frame size=80
|
|
00001366 2FE6 MOV.L R14,@-R15
|
|
00001368 2FD6 MOV.L R13,@-R15
|
|
0000136A 2FC6 MOV.L R12,@-R15
|
|
0000136C 2FB6 MOV.L R11,@-R15
|
|
0000136E 2FA6 MOV.L R10,@-R15
|
|
00001370 2F96 MOV.L R9,@-R15
|
|
00001372 2F86 MOV.L R8,@-R15
|
|
00001374 4F22 STS.L PR,@-R15
|
|
00001376 7FD0 ADD #-48,R15
|
|
Monochrome 769 {
|
|
Monochrome 770 int i, j;
|
|
Monochrome 771 char line[16], shift, *vram;
|
|
Monochrome 772 unsigned char next;
|
|
Monochrome 773 unsigned short word;
|
|
Monochrome 774 vram = ML_vram_adress();
|
|
00001378 D30F MOV.L L1675+46,R3; _ML_vram_adress
|
|
0000137A 430B JSR @R3
|
|
0000137C 6C43 MOV R4,R12
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 62
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000137E 6E03 MOV R0,R14
|
|
Monochrome 775 scroll %= 128;
|
|
00001380 4C11 CMP/PZ R12
|
|
00001382 8F1B BF/S L1301
|
|
00001384 E37F MOV #127,R3
|
|
00001386 A01E BRA L1302
|
|
00001388 2C39 AND R3,R12
|
|
0000138A L1675:
|
|
0000138A 0000 .DATA.W 0
|
|
0000138C <00000000> .DATA.L __itos
|
|
00001390 <00000000> .DATA.L __adds
|
|
00001394 <00000000> .DATA.L __itod
|
|
00001398 BFE00000 .DATA.L H'BFE00000
|
|
0000139C <00000000> .DATA.L __addd
|
|
000013A0 <00000000> .DATA.L __muld
|
|
000013A4 <00000000> .DATA.L __gtd
|
|
000013A8 3FE00000 .DATA.L H'3FE00000
|
|
000013AC <00000000> .DATA.L __subdr
|
|
000013B0 <00000000> .DATA.L __dtos
|
|
000013B4 <00000000> .DATA.L __lts
|
|
000013B8 <00000000> .DATA.L _ML_vram_adress
|
|
000013BC L1301:
|
|
000013BC 6CC7 NOT R12,R12
|
|
000013BE 7C01 ADD #1,R12
|
|
000013C0 2C39 AND R3,R12
|
|
000013C2 6CC7 NOT R12,R12
|
|
000013C4 7C01 ADD #1,R12
|
|
000013C6 L1302:
|
|
Monochrome 776 shift = 8-(scroll&7);
|
|
000013C6 E107 MOV #7,R1
|
|
000013C8 21C9 AND R12,R1
|
|
000013CA E008 MOV #8,R0
|
|
000013CC 3018 SUB R1,R0
|
|
Monochrome 777 for(i=0 ; i<64 ; i++)
|
|
000013CE E700 MOV #0,R7
|
|
000013D0 80F4 MOV.B R0,@(4,R15)
|
|
000013D2 6DE3 MOV R14,R13
|
|
000013D4 6A73 MOV R7,R10
|
|
000013D6 6873 MOV R7,R8
|
|
000013D8 69E3 MOV R14,R9
|
|
000013DA 790F ADD #15,R9
|
|
000013DC 64F3 MOV R15,R4
|
|
000013DE 7420 ADD #32,R4
|
|
000013E0 6343 MOV R4,R3
|
|
000013E2 7310 ADD #16,R3
|
|
000013E4 1F32 MOV.L R3,@(8,R15)
|
|
000013E6 4C21 SHAR R12
|
|
000013E8 4C21 SHAR R12
|
|
000013EA 4C21 SHAR R12
|
|
000013EC 1FC4 MOV.L R12,@(16,R15)
|
|
000013EE 6243 MOV R4,R2
|
|
000013F0 1F25 MOV.L R2,@(20,R15)
|
|
000013F2 6123 MOV R2,R1
|
|
000013F4 710F ADD #15,R1
|
|
000013F6 EC0F MOV #15,R12
|
|
000013F8 1F16 MOV.L R1,@(24,R15)
|
|
000013FA 740E ADD #14,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 63
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000013FC 1F47 MOV.L R4,@(28,R15)
|
|
000013FE L1303:
|
|
Monochrome 778 {
|
|
Monochrome 779 for(j=0 ; j<16 ; j++) line[j] = vram[(i<<4)+((j-(scroll>>3)+15)&15)];
|
|
000013FE 6473 MOV R7,R4
|
|
00001400 53F4 MOV.L @(16,R15),R3
|
|
00001402 66A3 MOV R10,R6
|
|
00001404 3438 SUB R3,R4
|
|
00001406 6543 MOV R4,R5
|
|
00001408 54F5 MOV.L @(20,R15),R4
|
|
0000140A 4608 SHLL2 R6
|
|
0000140C 750F ADD #15,R5
|
|
0000140E 4608 SHLL2 R6
|
|
00001410 L1304:
|
|
00001410 6053 MOV R5,R0
|
|
00001412 20C9 AND R12,R0
|
|
00001414 306C ADD R6,R0
|
|
00001416 03EC MOV.B @(R0,R14),R3
|
|
00001418 2430 MOV.B R3,@R4
|
|
0000141A 7401 ADD #1,R4
|
|
0000141C 52F2 MOV.L @(8,R15),R2
|
|
0000141E 3422 CMP/HS R2,R4
|
|
00001420 8FF6 BF/S L1304
|
|
00001422 7501 ADD #1,R5
|
|
Monochrome 780 next = line[15];
|
|
00001424 56F6 MOV.L @(24,R15),R6
|
|
Monochrome 781 vram[(i<<4)+15] = 0;
|
|
Monochrome 782 for(j=15 ; j>0 ; j--)
|
|
00001426 6BC3 MOV R12,R11
|
|
00001428 6660 MOV.B @R6,R6
|
|
0000142A 6483 MOV R8,R4
|
|
0000142C 2970 MOV.B R7,@R9
|
|
0000142E 740F ADD #15,R4
|
|
00001430 55F7 MOV.L @(28,R15),R5
|
|
00001432 L1305:
|
|
Monochrome 783 {
|
|
Monochrome 784 word = next << shift;
|
|
00001432 666C EXTU.B R6,R6
|
|
00001434 84F4 MOV.B @(4,R15),R0
|
|
Monochrome 785 next = line[j-1];
|
|
Monochrome 786 vram[(i<<4)+j] |= *((char*)&word+1);
|
|
00001436 63F3 MOV R15,R3
|
|
00001438 460D SHLD R0,R6
|
|
0000143A 6043 MOV R4,R0
|
|
0000143C 2F61 MOV.W R6,@R15
|
|
0000143E E201 MOV #1,R2
|
|
00001440 6650 MOV.B @R5,R6
|
|
00001442 7BFF ADD #-1,R11
|
|
00001444 323C ADD R3,R2
|
|
00001446 4B15 CMP/PL R11
|
|
00001448 6320 MOV.B @R2,R3
|
|
0000144A 02EC MOV.B @(R0,R14),R2
|
|
0000144C 223B OR R3,R2
|
|
Monochrome 787 vram[(i<<4)+j-1] = *((char*)&word);
|
|
0000144E 63F3 MOV R15,R3
|
|
00001450 0E24 MOV.B R2,@(R0,R14)
|
|
00001452 70FF ADD #-1,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 64
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001454 1F03 MOV.L R0,@(12,R15)
|
|
00001456 6230 MOV.B @R3,R2
|
|
00001458 0E24 MOV.B R2,@(R0,R14)
|
|
0000145A 54F3 MOV.L @(12,R15),R4
|
|
0000145C 8DE9 BT/S L1305
|
|
0000145E 75FF ADD #-1,R5
|
|
Monochrome 788 }
|
|
Monochrome 789 word = next << shift;
|
|
00001460 84F4 MOV.B @(4,R15),R0
|
|
Monochrome 790 vram[(i<<4)] |= *((char*)&word+1);
|
|
00001462 63F3 MOV R15,R3
|
|
00001464 666C EXTU.B R6,R6
|
|
00001466 460D SHLD R0,R6
|
|
00001468 2F61 MOV.W R6,@R15
|
|
0000146A 7A01 ADD #1,R10
|
|
0000146C 8431 MOV.B @(1,R3),R0
|
|
0000146E 7810 ADD #16,R8
|
|
00001470 62D0 MOV.B @R13,R2
|
|
Monochrome 791 vram[(i<<4)+15] |= *((char*)&word);
|
|
00001472 63F3 MOV R15,R3
|
|
00001474 220B OR R0,R2
|
|
00001476 2D20 MOV.B R2,@R13
|
|
00001478 6330 MOV.B @R3,R3
|
|
0000147A 84DF MOV.B @(15,R13),R0
|
|
0000147C 203B OR R3,R0
|
|
0000147E E340 MOV #64,R3
|
|
00001480 80DF MOV.B R0,@(15,R13)
|
|
00001482 3A33 CMP/GE R3,R10
|
|
00001484 7D10 ADD #16,R13
|
|
00001486 8FBA BF/S L1303
|
|
00001488 7910 ADD #16,R9
|
|
Monochrome 792 }
|
|
Monochrome 793 }
|
|
0000148A 7F30 ADD #48,R15
|
|
0000148C 4F26 LDS.L @R15+,PR
|
|
0000148E 68F6 MOV.L @R15+,R8
|
|
00001490 69F6 MOV.L @R15+,R9
|
|
00001492 6AF6 MOV.L @R15+,R10
|
|
00001494 6BF6 MOV.L @R15+,R11
|
|
00001496 6CF6 MOV.L @R15+,R12
|
|
00001498 6DF6 MOV.L @R15+,R13
|
|
0000149A 000B RTS
|
|
0000149C 6EF6 MOV.L @R15+,R14
|
|
Monochrome 794 #endif
|
|
Monochrome 795
|
|
Monochrome 796 #ifdef ML_VERTICAL_SCROLL
|
|
Monochrome 797 void ML_vertical_scroll(int scroll)
|
|
0000149E _ML_vertical_scroll: ; function: ML_vertical_scroll
|
|
; frame size=104
|
|
0000149E 2FE6 MOV.L R14,@-R15
|
|
000014A0 2FD6 MOV.L R13,@-R15
|
|
000014A2 2FC6 MOV.L R12,@-R15
|
|
000014A4 2FB6 MOV.L R11,@-R15
|
|
000014A6 2FA6 MOV.L R10,@-R15
|
|
000014A8 2F86 MOV.L R8,@-R15
|
|
000014AA 4F22 STS.L PR,@-R15
|
|
Monochrome 798 {
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 65
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 799 int i, j;
|
|
Monochrome 800 char column[64], *vram = ML_vram_adress();
|
|
000014AC D31F MOV.L L1676,R3 ; _ML_vram_adress
|
|
000014AE 7FB4 ADD #-76,R15
|
|
000014B0 430B JSR @R3
|
|
000014B2 2F42 MOV.L R4,@R15
|
|
000014B4 1F01 MOV.L R0,@(4,R15)
|
|
Monochrome 801 scroll %= 64;
|
|
000014B6 60F2 MOV.L @R15,R0
|
|
000014B8 4011 CMP/PZ R0
|
|
000014BA 8B01 BF L1306
|
|
000014BC A005 BRA L1307
|
|
000014BE C93F AND #63,R0
|
|
000014C0 L1306:
|
|
000014C0 6007 NOT R0,R0
|
|
000014C2 7001 ADD #1,R0
|
|
000014C4 C93F AND #63,R0
|
|
000014C6 6007 NOT R0,R0
|
|
000014C8 7001 ADD #1,R0
|
|
000014CA L1307:
|
|
Monochrome 802 for(i=0 ; i<16 ; i++)
|
|
000014CA EC00 MOV #0,R12
|
|
000014CC 2F02 MOV.L R0,@R15
|
|
000014CE 6EF3 MOV R15,R14
|
|
000014D0 67C3 MOV R12,R7
|
|
000014D2 7E0C ADD #12,R14
|
|
000014D4 68E3 MOV R14,R8
|
|
000014D6 7840 ADD #64,R8
|
|
000014D8 EA10 MOV #16,R10
|
|
000014DA EB3F MOV #63,R11
|
|
000014DC ED40 MOV #64,R13
|
|
000014DE 63E3 MOV R14,R3
|
|
000014E0 1F32 MOV.L R3,@(8,R15)
|
|
000014E2 L1308:
|
|
000014E2 51F1 MOV.L @(4,R15),R1
|
|
000014E4 54F2 MOV.L @(8,R15),R4
|
|
000014E6 317C ADD R7,R1
|
|
000014E8 6513 MOV R1,R5
|
|
Monochrome 803 {
|
|
Monochrome 804 for(j=0 ; j<64 ; j++) column[j] = vram[(j<<4)+i];
|
|
000014EA L1309:
|
|
000014EA 6250 MOV.B @R5,R2
|
|
000014EC 2420 MOV.B R2,@R4
|
|
000014EE 7401 ADD #1,R4
|
|
000014F0 3482 CMP/HS R8,R4
|
|
000014F2 8FFA BF/S L1309
|
|
000014F4 7510 ADD #16,R5
|
|
Monochrome 805 for(j=0 ; j<64 ; j++) vram[(j<<4)+i] = column[(j-scroll+64)&63];
|
|
000014F6 66C3 MOV R12,R6
|
|
000014F8 63F2 MOV.L @R15,R3
|
|
000014FA 64C3 MOV R12,R4
|
|
000014FC 3438 SUB R3,R4
|
|
000014FE 7440 ADD #64,R4
|
|
00001500 6513 MOV R1,R5
|
|
00001502 L1310:
|
|
00001502 6043 MOV R4,R0
|
|
00001504 20B9 AND R11,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 66
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001506 7601 ADD #1,R6
|
|
00001508 03EC MOV.B @(R0,R14),R3
|
|
0000150A 7401 ADD #1,R4
|
|
0000150C 2530 MOV.B R3,@R5
|
|
0000150E 36D3 CMP/GE R13,R6
|
|
00001510 8FF7 BF/S L1310
|
|
00001512 7510 ADD #16,R5
|
|
00001514 7701 ADD #1,R7
|
|
00001516 37A3 CMP/GE R10,R7
|
|
00001518 8BE3 BF L1308
|
|
Monochrome 806 }
|
|
Monochrome 807 }
|
|
0000151A 7F4C ADD #76,R15
|
|
0000151C 4F26 LDS.L @R15+,PR
|
|
0000151E 68F6 MOV.L @R15+,R8
|
|
00001520 6AF6 MOV.L @R15+,R10
|
|
00001522 6BF6 MOV.L @R15+,R11
|
|
00001524 6CF6 MOV.L @R15+,R12
|
|
00001526 6DF6 MOV.L @R15+,R13
|
|
00001528 000B RTS
|
|
0000152A 6EF6 MOV.L @R15+,R14
|
|
0000152C L1676:
|
|
0000152C <00000000> .DATA.L _ML_vram_adress
|
|
Monochrome 808 #endif
|
|
Monochrome 809
|
|
Monochrome 810 #ifdef ML_BMP_OR
|
|
Monochrome 811 void ML_bmp_or(const unsigned char *bmp, int x, int y, int width, int height)
|
|
00001530 _ML_bmp_or: ; function: ML_bmp_or
|
|
; frame size=60
|
|
00001530 2FE6 MOV.L R14,@-R15
|
|
00001532 6E63 MOV R6,R14
|
|
00001534 2FD6 MOV.L R13,@-R15
|
|
00001536 2FC6 MOV.L R12,@-R15
|
|
00001538 2FB6 MOV.L R11,@-R15
|
|
0000153A 6B43 MOV R4,R11
|
|
0000153C 2FA6 MOV.L R10,@-R15
|
|
0000153E 6A53 MOV R5,R10
|
|
00001540 2F96 MOV.L R9,@-R15
|
|
00001542 6973 MOV R7,R9
|
|
00001544 2F86 MOV.L R8,@-R15
|
|
Monochrome 812 {
|
|
Monochrome 813 unsigned short line;
|
|
Monochrome 814 char shift, *screen, *p=(char*)&line;
|
|
Monochrome 815 int i, j, begin=0, end=height, real_width=(width-1>>3<<3)+8;
|
|
00001546 6C93 MOV R9,R12
|
|
00001548 4F22 STS.L PR,@-R15
|
|
0000154A E800 MOV #0,R8
|
|
0000154C 4F12 STS.L MACL,@-R15
|
|
0000154E 7CFF ADD #-1,R12
|
|
00001550 7FE8 ADD #-24,R15
|
|
00001552 6DF3 MOV R15,R13
|
|
00001554 54FF MOV.L @(60,R15),R4
|
|
00001556 4C21 SHAR R12
|
|
00001558 2F82 MOV.L R8,@R15
|
|
0000155A 7D04 ADD #4,R13
|
|
0000155C 1F45 MOV.L R4,@(20,R15)
|
|
0000155E 4C21 SHAR R12
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 67
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001560 4C21 SHAR R12
|
|
00001562 62C3 MOV R12,R2
|
|
00001564 4208 SHLL2 R2
|
|
00001566 4200 SHLL R2
|
|
00001568 7208 ADD #8,R2
|
|
Monochrome 816 if(!bmp || x<0 || x>128-width || y<1-height || y>63 || width<1 || height<1) return;
|
|
0000156A 2BB8 TST R11,R11
|
|
0000156C 8F02 BF/S L1677
|
|
0000156E 1F23 MOV.L R2,@(12,R15)
|
|
00001570 A085 BRA L1313
|
|
00001572 0009 NOP
|
|
00001574 L1677:
|
|
00001574 4A11 CMP/PZ R10
|
|
00001576 8901 BT L1678
|
|
00001578 A081 BRA L1313
|
|
0000157A 0009 NOP
|
|
0000157C L1678:
|
|
0000157C 933D MOV.W L1679,R3 ; H'0080
|
|
0000157E 3398 SUB R9,R3
|
|
00001580 3A37 CMP/GT R3,R10
|
|
00001582 8B01 BF L1680
|
|
00001584 A07B BRA L1313
|
|
00001586 0009 NOP
|
|
00001588 L1680:
|
|
00001588 E301 MOV #1,R3
|
|
0000158A 3348 SUB R4,R3
|
|
0000158C 3E33 CMP/GE R3,R14
|
|
0000158E 8B76 BF L1313
|
|
00001590 E33F MOV #63,R3
|
|
00001592 3E37 CMP/GT R3,R14
|
|
00001594 8973 BT L1313
|
|
00001596 E001 MOV #1,R0
|
|
00001598 3903 CMP/GE R0,R9
|
|
0000159A 8B70 BF L1313
|
|
0000159C 3403 CMP/GE R0,R4
|
|
0000159E 8B6E BF L1313
|
|
Monochrome 817 if(y < 0) begin = -y;
|
|
000015A0 4E11 CMP/PZ R14
|
|
000015A2 8D02 BT/S L1314
|
|
Monochrome 818 if(y+height > 64) end = 64-y;
|
|
000015A4 E540 MOV #64,R5
|
|
000015A6 62EB NEG R14,R2
|
|
000015A8 2F22 MOV.L R2,@R15
|
|
000015AA L1314:
|
|
000015AA 34EC ADD R14,R4
|
|
000015AC 3457 CMP/GT R5,R4
|
|
000015AE 8B01 BF L1315
|
|
000015B0 35E8 SUB R14,R5
|
|
000015B2 1F55 MOV.L R5,@(20,R15)
|
|
000015B4 L1315:
|
|
Monochrome 819 shift = 8-(x&7);
|
|
000015B4 E307 MOV #7,R3
|
|
000015B6 23A9 AND R10,R3
|
|
000015B8 E208 MOV #8,R2
|
|
000015BA 3238 SUB R3,R2
|
|
Monochrome 820 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
000015BC D30F MOV.L L1679+2,R3 ; _ML_vram_adress
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 68
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000015BE E010 MOV #16,R0
|
|
000015C0 430B JSR @R3
|
|
000015C2 0F24 MOV.B R2,@(R0,R15)
|
|
000015C4 61F2 MOV.L @R15,R1
|
|
000015C6 63A3 MOV R10,R3
|
|
000015C8 3E1C ADD R1,R14
|
|
000015CA 4E08 SHLL2 R14
|
|
000015CC 4E08 SHLL2 R14
|
|
000015CE 30EC ADD R14,R0
|
|
000015D0 4321 SHAR R3
|
|
000015D2 4321 SHAR R3
|
|
000015D4 4321 SHAR R3
|
|
000015D6 6503 MOV R0,R5
|
|
000015D8 353C ADD R3,R5
|
|
Monochrome 821 for(i=begin ; i<end ; i++)
|
|
000015DA 6613 MOV R1,R6
|
|
000015DC 63D3 MOV R13,R3
|
|
000015DE 7301 ADD #1,R3
|
|
000015E0 2F32 MOV.L R3,@R15
|
|
000015E2 54F3 MOV.L @(12,R15),R4
|
|
000015E4 6243 MOV R4,R2
|
|
000015E6 4221 SHAR R2
|
|
000015E8 4221 SHAR R2
|
|
000015EA 4221 SHAR R2
|
|
000015EC 1F22 MOV.L R2,@(8,R15)
|
|
000015EE 6143 MOV R4,R1
|
|
000015F0 3198 SUB R9,R1
|
|
000015F2 E9FF MOV #-1,R9
|
|
000015F4 491C SHAD R1,R9
|
|
000015F6 A03F BRA L1316
|
|
000015F8 3A4C ADD R4,R10
|
|
000015FA L1679:
|
|
000015FA 0080 .DATA.W H'0080
|
|
000015FC <00000000> .DATA.L _ML_vram_adress
|
|
00001600 L1317:
|
|
00001600 57F2 MOV.L @(8,R15),R7
|
|
00001602 E010 MOV #16,R0
|
|
00001604 0767 MUL.L R6,R7
|
|
00001606 4C15 CMP/PL R12
|
|
Monochrome 822 {
|
|
Monochrome 823 for(j=0 ; j<width-1>>3 ; j++)
|
|
00001608 6483 MOV R8,R4
|
|
0000160A 071A STS MACL,R7
|
|
0000160C 8F18 BF/S L1318
|
|
0000160E 0EFC MOV.B @(R0,R15),R14
|
|
00001610 L1319:
|
|
Monochrome 824 {
|
|
Monochrome 825 line = bmp[i*(real_width>>3)+j]<<shift;
|
|
00001610 6073 MOV R7,R0
|
|
00001612 304C ADD R4,R0
|
|
00001614 00BC MOV.B @(R0,R11),R0
|
|
00001616 600C EXTU.B R0,R0
|
|
00001618 40ED SHLD R14,R0
|
|
0000161A 81F2 MOV.W R0,@(4,R15)
|
|
Monochrome 826 screen[j] |= *p;
|
|
0000161C 63D0 MOV.B @R13,R3
|
|
0000161E 6043 MOV R4,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 69
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001620 025C MOV.B @(R0,R5),R2
|
|
00001622 223B OR R3,R2
|
|
00001624 0524 MOV.B R2,@(R0,R5)
|
|
Monochrome 827 if(shift!=8) screen[j+1] |= *(p+1);
|
|
00001626 60E3 MOV R14,R0
|
|
00001628 8808 CMP/EQ #8,R0
|
|
0000162A 8906 BT L1320
|
|
0000162C 62F2 MOV.L @R15,R2
|
|
0000162E 6343 MOV R4,R3
|
|
00001630 6220 MOV.B @R2,R2
|
|
00001632 335C ADD R5,R3
|
|
00001634 8431 MOV.B @(1,R3),R0
|
|
00001636 202B OR R2,R0
|
|
00001638 8031 MOV.B R0,@(1,R3)
|
|
0000163A L1320:
|
|
0000163A 7401 ADD #1,R4
|
|
0000163C 34C3 CMP/GE R12,R4
|
|
0000163E 8BE7 BF L1319
|
|
00001640 L1318:
|
|
Monochrome 828 }
|
|
Monochrome 829 line = (bmp[i*(real_width>>3)+j] & -1<<(real_width-width))<<shift;
|
|
00001640 50F2 MOV.L @(8,R15),R0
|
|
Monochrome 830 screen[j] |= *p;
|
|
00001642 6743 MOV R4,R7
|
|
00001644 0067 MUL.L R6,R0
|
|
00001646 375C ADD R5,R7
|
|
00001648 001A STS MACL,R0
|
|
0000164A 304C ADD R4,R0
|
|
0000164C 00BC MOV.B @(R0,R11),R0
|
|
0000164E 600C EXTU.B R0,R0
|
|
00001650 2099 AND R9,R0
|
|
00001652 40EC SHAD R14,R0
|
|
00001654 81F2 MOV.W R0,@(4,R15)
|
|
Monochrome 831 if(shift!=8 && x+real_width<129) screen[j+1] |= *(p+1);
|
|
00001656 60E3 MOV R14,R0
|
|
00001658 63D0 MOV.B @R13,R3
|
|
0000165A 8808 CMP/EQ #8,R0
|
|
0000165C 6270 MOV.B @R7,R2
|
|
0000165E 223B OR R3,R2
|
|
00001660 8D08 BT/S L1321
|
|
00001662 2720 MOV.B R2,@R7
|
|
00001664 9216 MOV.W L1681,R2 ; H'0081
|
|
00001666 3A23 CMP/GE R2,R10
|
|
00001668 8904 BT L1321
|
|
0000166A 61F2 MOV.L @R15,R1
|
|
0000166C 8471 MOV.B @(1,R7),R0
|
|
0000166E 6310 MOV.B @R1,R3
|
|
00001670 203B OR R3,R0
|
|
00001672 8071 MOV.B R0,@(1,R7)
|
|
00001674 L1321:
|
|
Monochrome 832 screen += 16;
|
|
00001674 7510 ADD #16,R5
|
|
00001676 7601 ADD #1,R6
|
|
00001678 L1316:
|
|
00001678 53F5 MOV.L @(20,R15),R3
|
|
0000167A 3633 CMP/GE R3,R6
|
|
0000167C 8BC0 BF L1317
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 70
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000167E L1313:
|
|
Monochrome 833 }
|
|
Monochrome 834 }
|
|
0000167E 7F18 ADD #24,R15
|
|
00001680 4F16 LDS.L @R15+,MACL
|
|
00001682 4F26 LDS.L @R15+,PR
|
|
00001684 68F6 MOV.L @R15+,R8
|
|
00001686 69F6 MOV.L @R15+,R9
|
|
00001688 6AF6 MOV.L @R15+,R10
|
|
0000168A 6BF6 MOV.L @R15+,R11
|
|
0000168C 6CF6 MOV.L @R15+,R12
|
|
0000168E 6DF6 MOV.L @R15+,R13
|
|
00001690 000B RTS
|
|
00001692 6EF6 MOV.L @R15+,R14
|
|
00001694 L1681:
|
|
00001694 0081 .DATA.W H'0081
|
|
Monochrome 835 #endif
|
|
Monochrome 836
|
|
Monochrome 837 #ifdef ML_BMP_AND
|
|
Monochrome 838 void ML_bmp_and(const unsigned char *bmp, int x, int y, int width, int height)
|
|
00001696 _ML_bmp_and: ; function: ML_bmp_and
|
|
; frame size=60
|
|
00001696 2FE6 MOV.L R14,@-R15
|
|
00001698 2FD6 MOV.L R13,@-R15
|
|
0000169A 6E63 MOV R6,R14
|
|
0000169C 2FC6 MOV.L R12,@-R15
|
|
0000169E 2FB6 MOV.L R11,@-R15
|
|
000016A0 2FA6 MOV.L R10,@-R15
|
|
000016A2 6B53 MOV R5,R11
|
|
000016A4 2F96 MOV.L R9,@-R15
|
|
000016A6 6A43 MOV R4,R10
|
|
000016A8 2F86 MOV.L R8,@-R15
|
|
Monochrome 839 {
|
|
Monochrome 840 unsigned short line;
|
|
Monochrome 841 char shift, *screen, *p=(char*)&line;
|
|
Monochrome 842 int i, j, begin=0, end=height, real_width=(width-1>>3<<3)+8;
|
|
000016AA E800 MOV #0,R8
|
|
000016AC 4F22 STS.L PR,@-R15
|
|
000016AE 6983 MOV R8,R9
|
|
000016B0 4F12 STS.L MACL,@-R15
|
|
000016B2 7FE8 ADD #-24,R15
|
|
000016B4 1F71 MOV.L R7,@(4,R15)
|
|
000016B6 6DF3 MOV R15,R13
|
|
000016B8 54FF MOV.L @(60,R15),R4
|
|
000016BA 1F45 MOV.L R4,@(20,R15)
|
|
000016BC 5CF1 MOV.L @(4,R15),R12
|
|
000016BE 7CFF ADD #-1,R12
|
|
000016C0 4C21 SHAR R12
|
|
000016C2 4C21 SHAR R12
|
|
000016C4 4C21 SHAR R12
|
|
000016C6 62C3 MOV R12,R2
|
|
000016C8 4208 SHLL2 R2
|
|
000016CA 4200 SHLL R2
|
|
000016CC 7208 ADD #8,R2
|
|
Monochrome 843 if(!bmp || x<0 || x>128-width || y<1-height || y>63 || width<1 || height<1) return;
|
|
000016CE 2AA8 TST R10,R10
|
|
000016D0 8F02 BF/S L1682
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 71
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000016D2 1F24 MOV.L R2,@(16,R15)
|
|
000016D4 A08E BRA L1324
|
|
000016D6 0009 NOP
|
|
000016D8 L1682:
|
|
000016D8 4B11 CMP/PZ R11
|
|
000016DA 8901 BT L1683
|
|
000016DC A08A BRA L1324
|
|
000016DE 0009 NOP
|
|
000016E0 L1683:
|
|
000016E0 53F1 MOV.L @(4,R15),R3
|
|
000016E2 9140 MOV.W L1684,R1 ; H'0080
|
|
000016E4 3138 SUB R3,R1
|
|
000016E6 3B17 CMP/GT R1,R11
|
|
000016E8 8B01 BF L1685
|
|
000016EA A083 BRA L1324
|
|
000016EC 0009 NOP
|
|
000016EE L1685:
|
|
000016EE E001 MOV #1,R0
|
|
000016F0 3048 SUB R4,R0
|
|
000016F2 3E03 CMP/GE R0,R14
|
|
000016F4 8901 BT L1686
|
|
000016F6 A07D BRA L1324
|
|
000016F8 0009 NOP
|
|
000016FA L1686:
|
|
000016FA E13F MOV #63,R1
|
|
000016FC 3E17 CMP/GT R1,R14
|
|
000016FE 8979 BT L1324
|
|
00001700 E001 MOV #1,R0
|
|
00001702 3303 CMP/GE R0,R3
|
|
00001704 8B76 BF L1324
|
|
00001706 E201 MOV #1,R2
|
|
00001708 3423 CMP/GE R2,R4
|
|
0000170A 8B73 BF L1324
|
|
Monochrome 844 if(y < 0) begin = -y;
|
|
0000170C 4E11 CMP/PZ R14
|
|
0000170E 8D01 BT/S L1325
|
|
Monochrome 845 if(y+height > 64) end = 64-y;
|
|
00001710 E540 MOV #64,R5
|
|
00001712 69EB NEG R14,R9
|
|
00001714 L1325:
|
|
00001714 34EC ADD R14,R4
|
|
00001716 3457 CMP/GT R5,R4
|
|
00001718 8F02 BF/S L1326
|
|
Monochrome 846 shift = 8-(x&7);
|
|
0000171A E307 MOV #7,R3
|
|
0000171C 35E8 SUB R14,R5
|
|
0000171E 1F55 MOV.L R5,@(20,R15)
|
|
00001720 L1326:
|
|
00001720 23B9 AND R11,R3
|
|
00001722 E008 MOV #8,R0
|
|
00001724 3038 SUB R3,R0
|
|
Monochrome 847 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00001726 D311 MOV.L L1684+6,R3 ; _ML_vram_adress
|
|
00001728 430B JSR @R3
|
|
0000172A 80FC MOV.B R0,@(12,R15)
|
|
0000172C 3E9C ADD R9,R14
|
|
0000172E 4E08 SHLL2 R14
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 72
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001730 4E08 SHLL2 R14
|
|
00001732 30EC ADD R14,R0
|
|
00001734 62B3 MOV R11,R2
|
|
00001736 4221 SHAR R2
|
|
00001738 4221 SHAR R2
|
|
0000173A 4221 SHAR R2
|
|
0000173C 6503 MOV R0,R5
|
|
0000173E 352C ADD R2,R5
|
|
00001740 52F4 MOV.L @(16,R15),R2
|
|
00001742 E308 MOV #8,R3
|
|
Monochrome 848 for(i=begin ; i<end ; i++)
|
|
00001744 6693 MOV R9,R6
|
|
00001746 69D3 MOV R13,R9
|
|
00001748 7901 ADD #1,R9
|
|
0000174A 4221 SHAR R2
|
|
0000174C 4221 SHAR R2
|
|
0000174E 4221 SHAR R2
|
|
00001750 1F22 MOV.L R2,@(8,R15)
|
|
00001752 50F1 MOV.L @(4,R15),R0
|
|
00001754 C907 AND #7,R0
|
|
00001756 3308 SUB R0,R3
|
|
00001758 9006 MOV.W L1684+2,R0 ; H'00FF
|
|
0000175A 633B NEG R3,R3
|
|
0000175C 403C SHAD R3,R0
|
|
0000175E 80F4 MOV.B R0,@(4,R15)
|
|
00001760 53F4 MOV.L @(16,R15),R3
|
|
00001762 A044 BRA L1327
|
|
00001764 3B3C ADD R3,R11
|
|
00001766 L1684:
|
|
00001766 0080 .DATA.W H'0080
|
|
00001768 00FF .DATA.W H'00FF
|
|
0000176A 0000 .DATA.W 0
|
|
0000176C <00000000> .DATA.L _ML_vram_adress
|
|
00001770 L1328:
|
|
00001770 57F2 MOV.L @(8,R15),R7
|
|
00001772 4C15 CMP/PL R12
|
|
00001774 84FC MOV.B @(12,R15),R0
|
|
Monochrome 849 {
|
|
Monochrome 850 for(j=0 ; j<width-1>>3 ; j++)
|
|
00001776 6483 MOV R8,R4
|
|
00001778 0767 MUL.L R6,R7
|
|
0000177A 071A STS MACL,R7
|
|
0000177C 8F19 BF/S L1329
|
|
0000177E 6E03 MOV R0,R14
|
|
00001780 L1330:
|
|
Monochrome 851 {
|
|
Monochrome 852 line = ~((unsigned char)~bmp[i*(real_width>>3)+j]<<shift);
|
|
00001780 6073 MOV R7,R0
|
|
00001782 304C ADD R4,R0
|
|
00001784 03AC MOV.B @(R0,R10),R3
|
|
Monochrome 853 screen[j] &= *p;
|
|
00001786 6043 MOV R4,R0
|
|
00001788 6337 NOT R3,R3
|
|
0000178A 633C EXTU.B R3,R3
|
|
0000178C 43ED SHLD R14,R3
|
|
0000178E 6337 NOT R3,R3
|
|
00001790 2F31 MOV.W R3,@R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 73
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001792 62D0 MOV.B @R13,R2
|
|
00001794 015C MOV.B @(R0,R5),R1
|
|
00001796 2129 AND R2,R1
|
|
00001798 0514 MOV.B R1,@(R0,R5)
|
|
Monochrome 854 if(shift!=8) screen[j+1] &= *(p+1);
|
|
0000179A 60E3 MOV R14,R0
|
|
0000179C 8808 CMP/EQ #8,R0
|
|
0000179E 8905 BT L1331
|
|
000017A0 6290 MOV.B @R9,R2
|
|
000017A2 6343 MOV R4,R3
|
|
000017A4 335C ADD R5,R3
|
|
000017A6 8431 MOV.B @(1,R3),R0
|
|
000017A8 2029 AND R2,R0
|
|
000017AA 8031 MOV.B R0,@(1,R3)
|
|
000017AC L1331:
|
|
000017AC 7401 ADD #1,R4
|
|
000017AE 34C3 CMP/GE R12,R4
|
|
000017B0 8BE6 BF L1330
|
|
000017B2 L1329:
|
|
Monochrome 855 }
|
|
Monochrome 856 line = ~((unsigned char)~(bmp[i*(real_width>>3)+j] | (unsigned char)-1>>8-(width&7))<<shif
|
|
+t);
|
|
Monochrome 857 screen[j] &= *p;
|
|
000017B2 6743 MOV R4,R7
|
|
000017B4 50F2 MOV.L @(8,R15),R0
|
|
000017B6 375C ADD R5,R7
|
|
000017B8 0067 MUL.L R6,R0
|
|
000017BA 001A STS MACL,R0
|
|
000017BC 304C ADD R4,R0
|
|
000017BE 03AC MOV.B @(R0,R10),R3
|
|
000017C0 84F4 MOV.B @(4,R15),R0
|
|
000017C2 203B OR R3,R0
|
|
000017C4 6007 NOT R0,R0
|
|
000017C6 600C EXTU.B R0,R0
|
|
000017C8 40ED SHLD R14,R0
|
|
000017CA 6007 NOT R0,R0
|
|
000017CC 2F01 MOV.W R0,@R15
|
|
Monochrome 858 if(shift!=8 && x+real_width<129) screen[j+1] &= *(p+1);
|
|
000017CE 60E3 MOV R14,R0
|
|
000017D0 63D0 MOV.B @R13,R3
|
|
000017D2 8808 CMP/EQ #8,R0
|
|
000017D4 6270 MOV.B @R7,R2
|
|
000017D6 2239 AND R3,R2
|
|
000017D8 8D07 BT/S L1332
|
|
000017DA 2720 MOV.B R2,@R7
|
|
000017DC 9215 MOV.W L1687,R2 ; H'0081
|
|
000017DE 3B23 CMP/GE R2,R11
|
|
000017E0 8903 BT L1332
|
|
000017E2 6390 MOV.B @R9,R3
|
|
000017E4 8471 MOV.B @(1,R7),R0
|
|
000017E6 2039 AND R3,R0
|
|
000017E8 8071 MOV.B R0,@(1,R7)
|
|
000017EA L1332:
|
|
Monochrome 859 screen += 16;
|
|
000017EA 7510 ADD #16,R5
|
|
000017EC 7601 ADD #1,R6
|
|
000017EE L1327:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 74
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000017EE 53F5 MOV.L @(20,R15),R3
|
|
000017F0 3633 CMP/GE R3,R6
|
|
000017F2 8BBD BF L1328
|
|
000017F4 L1324:
|
|
Monochrome 860 }
|
|
Monochrome 861 }
|
|
000017F4 7F18 ADD #24,R15
|
|
000017F6 4F16 LDS.L @R15+,MACL
|
|
000017F8 4F26 LDS.L @R15+,PR
|
|
000017FA 68F6 MOV.L @R15+,R8
|
|
000017FC 69F6 MOV.L @R15+,R9
|
|
000017FE 6AF6 MOV.L @R15+,R10
|
|
00001800 6BF6 MOV.L @R15+,R11
|
|
00001802 6CF6 MOV.L @R15+,R12
|
|
00001804 6DF6 MOV.L @R15+,R13
|
|
00001806 000B RTS
|
|
00001808 6EF6 MOV.L @R15+,R14
|
|
0000180A L1687:
|
|
0000180A 0081 .DATA.W H'0081
|
|
Monochrome 862 #endif
|
|
Monochrome 863
|
|
Monochrome 864 #ifdef ML_BMP_XOR
|
|
Monochrome 865 void ML_bmp_xor(const unsigned char *bmp, int x, int y, int width, int height)
|
|
0000180C _ML_bmp_xor: ; function: ML_bmp_xor
|
|
; frame size=60
|
|
0000180C 2FE6 MOV.L R14,@-R15
|
|
0000180E 6E63 MOV R6,R14
|
|
00001810 2FD6 MOV.L R13,@-R15
|
|
00001812 2FC6 MOV.L R12,@-R15
|
|
00001814 2FB6 MOV.L R11,@-R15
|
|
00001816 6B43 MOV R4,R11
|
|
00001818 2FA6 MOV.L R10,@-R15
|
|
0000181A 6A53 MOV R5,R10
|
|
0000181C 2F96 MOV.L R9,@-R15
|
|
0000181E 6973 MOV R7,R9
|
|
00001820 2F86 MOV.L R8,@-R15
|
|
Monochrome 866 {
|
|
Monochrome 867 unsigned short line;
|
|
Monochrome 868 char shift, *screen, *p=(char*)&line;
|
|
Monochrome 869 int i, j, begin=0, end=height, real_width=(width-1>>3<<3)+8;
|
|
00001822 6C93 MOV R9,R12
|
|
00001824 4F22 STS.L PR,@-R15
|
|
00001826 E800 MOV #0,R8
|
|
00001828 4F12 STS.L MACL,@-R15
|
|
0000182A 7CFF ADD #-1,R12
|
|
0000182C 7FE8 ADD #-24,R15
|
|
0000182E 6DF3 MOV R15,R13
|
|
00001830 54FF MOV.L @(60,R15),R4
|
|
00001832 4C21 SHAR R12
|
|
00001834 2F82 MOV.L R8,@R15
|
|
00001836 7D04 ADD #4,R13
|
|
00001838 1F45 MOV.L R4,@(20,R15)
|
|
0000183A 4C21 SHAR R12
|
|
0000183C 4C21 SHAR R12
|
|
0000183E 62C3 MOV R12,R2
|
|
00001840 4208 SHLL2 R2
|
|
00001842 4200 SHLL R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 75
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001844 7208 ADD #8,R2
|
|
Monochrome 870 if(!bmp || x<0 || x>128-width || y<1-height || y>63 || width<1 || height<1) return;
|
|
00001846 2BB8 TST R11,R11
|
|
00001848 8F02 BF/S L1688
|
|
0000184A 1F23 MOV.L R2,@(12,R15)
|
|
0000184C A085 BRA L1335
|
|
0000184E 0009 NOP
|
|
00001850 L1688:
|
|
00001850 4A11 CMP/PZ R10
|
|
00001852 8901 BT L1689
|
|
00001854 A081 BRA L1335
|
|
00001856 0009 NOP
|
|
00001858 L1689:
|
|
00001858 933D MOV.W L1690,R3 ; H'0080
|
|
0000185A 3398 SUB R9,R3
|
|
0000185C 3A37 CMP/GT R3,R10
|
|
0000185E 8B01 BF L1691
|
|
00001860 A07B BRA L1335
|
|
00001862 0009 NOP
|
|
00001864 L1691:
|
|
00001864 E301 MOV #1,R3
|
|
00001866 3348 SUB R4,R3
|
|
00001868 3E33 CMP/GE R3,R14
|
|
0000186A 8B76 BF L1335
|
|
0000186C E33F MOV #63,R3
|
|
0000186E 3E37 CMP/GT R3,R14
|
|
00001870 8973 BT L1335
|
|
00001872 E001 MOV #1,R0
|
|
00001874 3903 CMP/GE R0,R9
|
|
00001876 8B70 BF L1335
|
|
00001878 3403 CMP/GE R0,R4
|
|
0000187A 8B6E BF L1335
|
|
Monochrome 871 if(y < 0) begin = -y;
|
|
0000187C 4E11 CMP/PZ R14
|
|
0000187E 8D02 BT/S L1336
|
|
Monochrome 872 if(y+height > 64) end = 64-y;
|
|
00001880 E540 MOV #64,R5
|
|
00001882 62EB NEG R14,R2
|
|
00001884 2F22 MOV.L R2,@R15
|
|
00001886 L1336:
|
|
00001886 34EC ADD R14,R4
|
|
00001888 3457 CMP/GT R5,R4
|
|
0000188A 8B01 BF L1337
|
|
0000188C 35E8 SUB R14,R5
|
|
0000188E 1F55 MOV.L R5,@(20,R15)
|
|
00001890 L1337:
|
|
Monochrome 873 shift = 8-(x&7);
|
|
00001890 E307 MOV #7,R3
|
|
00001892 23A9 AND R10,R3
|
|
00001894 E208 MOV #8,R2
|
|
00001896 3238 SUB R3,R2
|
|
Monochrome 874 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00001898 D30F MOV.L L1690+2,R3 ; _ML_vram_adress
|
|
0000189A E010 MOV #16,R0
|
|
0000189C 430B JSR @R3
|
|
0000189E 0F24 MOV.B R2,@(R0,R15)
|
|
000018A0 61F2 MOV.L @R15,R1
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 76
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000018A2 63A3 MOV R10,R3
|
|
000018A4 3E1C ADD R1,R14
|
|
000018A6 4E08 SHLL2 R14
|
|
000018A8 4E08 SHLL2 R14
|
|
000018AA 30EC ADD R14,R0
|
|
000018AC 4321 SHAR R3
|
|
000018AE 4321 SHAR R3
|
|
000018B0 4321 SHAR R3
|
|
000018B2 6503 MOV R0,R5
|
|
000018B4 353C ADD R3,R5
|
|
Monochrome 875 for(i=begin ; i<end ; i++)
|
|
000018B6 6613 MOV R1,R6
|
|
000018B8 63D3 MOV R13,R3
|
|
000018BA 7301 ADD #1,R3
|
|
000018BC 2F32 MOV.L R3,@R15
|
|
000018BE 54F3 MOV.L @(12,R15),R4
|
|
000018C0 6243 MOV R4,R2
|
|
000018C2 4221 SHAR R2
|
|
000018C4 4221 SHAR R2
|
|
000018C6 4221 SHAR R2
|
|
000018C8 1F22 MOV.L R2,@(8,R15)
|
|
000018CA 6143 MOV R4,R1
|
|
000018CC 3198 SUB R9,R1
|
|
000018CE E9FF MOV #-1,R9
|
|
000018D0 491C SHAD R1,R9
|
|
000018D2 A03F BRA L1338
|
|
000018D4 3A4C ADD R4,R10
|
|
000018D6 L1690:
|
|
000018D6 0080 .DATA.W H'0080
|
|
000018D8 <00000000> .DATA.L _ML_vram_adress
|
|
000018DC L1339:
|
|
000018DC 57F2 MOV.L @(8,R15),R7
|
|
000018DE E010 MOV #16,R0
|
|
000018E0 0767 MUL.L R6,R7
|
|
000018E2 4C15 CMP/PL R12
|
|
Monochrome 876 {
|
|
Monochrome 877 for(j=0 ; j<width-1>>3 ; j++)
|
|
000018E4 6483 MOV R8,R4
|
|
000018E6 071A STS MACL,R7
|
|
000018E8 8F18 BF/S L1340
|
|
000018EA 0EFC MOV.B @(R0,R15),R14
|
|
000018EC L1341:
|
|
Monochrome 878 {
|
|
Monochrome 879 line = bmp[i*(real_width>>3)+j]<<shift;
|
|
000018EC 6073 MOV R7,R0
|
|
000018EE 304C ADD R4,R0
|
|
000018F0 00BC MOV.B @(R0,R11),R0
|
|
000018F2 600C EXTU.B R0,R0
|
|
000018F4 40ED SHLD R14,R0
|
|
000018F6 81F2 MOV.W R0,@(4,R15)
|
|
Monochrome 880 screen[j] ^= *p;
|
|
000018F8 63D0 MOV.B @R13,R3
|
|
000018FA 6043 MOV R4,R0
|
|
000018FC 025C MOV.B @(R0,R5),R2
|
|
000018FE 223A XOR R3,R2
|
|
00001900 0524 MOV.B R2,@(R0,R5)
|
|
Monochrome 881 if(shift!=8) screen[j+1] ^= *(p+1);
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 77
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001902 60E3 MOV R14,R0
|
|
00001904 8808 CMP/EQ #8,R0
|
|
00001906 8906 BT L1342
|
|
00001908 62F2 MOV.L @R15,R2
|
|
0000190A 6343 MOV R4,R3
|
|
0000190C 6220 MOV.B @R2,R2
|
|
0000190E 335C ADD R5,R3
|
|
00001910 8431 MOV.B @(1,R3),R0
|
|
00001912 202A XOR R2,R0
|
|
00001914 8031 MOV.B R0,@(1,R3)
|
|
00001916 L1342:
|
|
00001916 7401 ADD #1,R4
|
|
00001918 34C3 CMP/GE R12,R4
|
|
0000191A 8BE7 BF L1341
|
|
0000191C L1340:
|
|
Monochrome 882 }
|
|
Monochrome 883 line = (bmp[i*(real_width>>3)+j] & -1<<(real_width-width))<<shift;
|
|
0000191C 50F2 MOV.L @(8,R15),R0
|
|
Monochrome 884 screen[j] ^= *p;
|
|
0000191E 6743 MOV R4,R7
|
|
00001920 0067 MUL.L R6,R0
|
|
00001922 375C ADD R5,R7
|
|
00001924 001A STS MACL,R0
|
|
00001926 304C ADD R4,R0
|
|
00001928 00BC MOV.B @(R0,R11),R0
|
|
0000192A 600C EXTU.B R0,R0
|
|
0000192C 2099 AND R9,R0
|
|
0000192E 40EC SHAD R14,R0
|
|
00001930 81F2 MOV.W R0,@(4,R15)
|
|
Monochrome 885 if(shift!=8 && x+real_width<129) screen[j+1] ^= *(p+1);
|
|
00001932 60E3 MOV R14,R0
|
|
00001934 63D0 MOV.B @R13,R3
|
|
00001936 8808 CMP/EQ #8,R0
|
|
00001938 6270 MOV.B @R7,R2
|
|
0000193A 223A XOR R3,R2
|
|
0000193C 8D08 BT/S L1343
|
|
0000193E 2720 MOV.B R2,@R7
|
|
00001940 9268 MOV.W L1692,R2 ; H'0081
|
|
00001942 3A23 CMP/GE R2,R10
|
|
00001944 8904 BT L1343
|
|
00001946 61F2 MOV.L @R15,R1
|
|
00001948 8471 MOV.B @(1,R7),R0
|
|
0000194A 6310 MOV.B @R1,R3
|
|
0000194C 203A XOR R3,R0
|
|
0000194E 8071 MOV.B R0,@(1,R7)
|
|
00001950 L1343:
|
|
Monochrome 886 screen += 16;
|
|
00001950 7510 ADD #16,R5
|
|
00001952 7601 ADD #1,R6
|
|
00001954 L1338:
|
|
00001954 53F5 MOV.L @(20,R15),R3
|
|
00001956 3633 CMP/GE R3,R6
|
|
00001958 8BC0 BF L1339
|
|
0000195A L1335:
|
|
Monochrome 887 }
|
|
Monochrome 888 }
|
|
0000195A 7F18 ADD #24,R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 78
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000195C 4F16 LDS.L @R15+,MACL
|
|
0000195E 4F26 LDS.L @R15+,PR
|
|
00001960 68F6 MOV.L @R15+,R8
|
|
00001962 69F6 MOV.L @R15+,R9
|
|
00001964 6AF6 MOV.L @R15+,R10
|
|
00001966 6BF6 MOV.L @R15+,R11
|
|
00001968 6CF6 MOV.L @R15+,R12
|
|
0000196A 6DF6 MOV.L @R15+,R13
|
|
0000196C 000B RTS
|
|
0000196E 6EF6 MOV.L @R15+,R14
|
|
Monochrome 889 #endif
|
|
Monochrome 890
|
|
Monochrome 891 #ifdef ML_BMP_OR_CL
|
|
Monochrome 892 void ML_bmp_or_cl(const unsigned char *bmp, int x, int y, int width, int height)
|
|
00001970 _ML_bmp_or_cl: ; function: ML_bmp_or_cl
|
|
; frame size=92
|
|
00001970 2FE6 MOV.L R14,@-R15
|
|
00001972 E05C MOV #92,R0
|
|
00001974 2FD6 MOV.L R13,@-R15
|
|
00001976 2FC6 MOV.L R12,@-R15
|
|
00001978 2FB6 MOV.L R11,@-R15
|
|
0000197A 2FA6 MOV.L R10,@-R15
|
|
0000197C 2F96 MOV.L R9,@-R15
|
|
0000197E 6963 MOV R6,R9
|
|
00001980 2F86 MOV.L R8,@-R15
|
|
Monochrome 893 {
|
|
Monochrome 894 unsigned short line;
|
|
Monochrome 895 char shift, *screen, *p;
|
|
Monochrome 896 int i, j, real_width, begin_x, end_x, begin_y, end_y;
|
|
Monochrome 897 char bool1=1, bool2=1, bool3;
|
|
00001982 E601 MOV #1,R6
|
|
00001984 4F22 STS.L PR,@-R15
|
|
00001986 4F12 STS.L MACL,@-R15
|
|
00001988 7FC8 ADD #-56,R15
|
|
0000198A 1F45 MOV.L R4,@(20,R15)
|
|
0000198C 1F72 MOV.L R7,@(8,R15)
|
|
0000198E 04FE MOV.L @(R0,R15),R4
|
|
00001990 E01C MOV #28,R0
|
|
00001992 0F64 MOV.B R6,@(R0,R15)
|
|
00001994 E034 MOV #52,R0
|
|
00001996 0F64 MOV.B R6,@(R0,R15)
|
|
Monochrome 898 if(!bmp || x<1-width || x>127 || y<1-height || y>63 || height<1 || width<1) return;
|
|
00001998 53F5 MOV.L @(20,R15),R3
|
|
0000199A 2338 TST R3,R3
|
|
0000199C 8B01 BF L1693
|
|
0000199E A103 BRA L1346
|
|
000019A0 0009 NOP
|
|
000019A2 L1693:
|
|
000019A2 E201 MOV #1,R2
|
|
000019A4 53F2 MOV.L @(8,R15),R3
|
|
000019A6 3238 SUB R3,R2
|
|
000019A8 3523 CMP/GE R2,R5
|
|
000019AA 8901 BT L1694
|
|
000019AC A0FC BRA L1346
|
|
000019AE 0009 NOP
|
|
000019B0 L1694:
|
|
000019B0 E17F MOV #127,R1
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 79
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000019B2 3517 CMP/GT R1,R5
|
|
000019B4 8B01 BF L1695
|
|
000019B6 A0F7 BRA L1346
|
|
000019B8 0009 NOP
|
|
000019BA L1695:
|
|
000019BA E001 MOV #1,R0
|
|
000019BC 3048 SUB R4,R0
|
|
000019BE 3903 CMP/GE R0,R9
|
|
000019C0 8901 BT L1696
|
|
000019C2 A0F1 BRA L1346
|
|
000019C4 0009 NOP
|
|
000019C6 L1696:
|
|
000019C6 E23F MOV #63,R2
|
|
000019C8 3927 CMP/GT R2,R9
|
|
000019CA 8B01 BF L1697
|
|
000019CC A0EC BRA L1346
|
|
000019CE 0009 NOP
|
|
000019D0 L1697:
|
|
000019D0 E001 MOV #1,R0
|
|
000019D2 3403 CMP/GE R0,R4
|
|
000019D4 8901 BT L1698
|
|
000019D6 A0E7 BRA L1346
|
|
000019D8 0009 NOP
|
|
000019DA L1698:
|
|
000019DA 52F2 MOV.L @(8,R15),R2
|
|
000019DC 3203 CMP/GE R0,R2
|
|
000019DE 8901 BT L1699
|
|
000019E0 A0E2 BRA L1346
|
|
000019E2 0009 NOP
|
|
000019E4 L1699:
|
|
Monochrome 899 p = (char*)&line;
|
|
Monochrome 900 real_width = (width-1>>3<<3)+8;
|
|
000019E4 52F2 MOV.L @(8,R15),R2
|
|
000019E6 6BF3 MOV R15,R11
|
|
000019E8 72FF ADD #-1,R2
|
|
000019EA 4221 SHAR R2
|
|
000019EC 4221 SHAR R2
|
|
000019EE 4221 SHAR R2
|
|
000019F0 4208 SHLL2 R2
|
|
000019F2 4200 SHLL R2
|
|
000019F4 7208 ADD #8,R2
|
|
Monochrome 901 if(y < 0) begin_y = -y;
|
|
000019F6 4911 CMP/PZ R9
|
|
000019F8 1F23 MOV.L R2,@(12,R15)
|
|
000019FA 8D02 BT/S L1347
|
|
000019FC E600 MOV #0,R6
|
|
000019FE A001 BRA L1348
|
|
00001A00 689B NEG R9,R8
|
|
00001A02 L1347:
|
|
Monochrome 902 else begin_y = 0;
|
|
00001A02 6863 MOV R6,R8
|
|
00001A04 L1348:
|
|
Monochrome 903 if(y+height > 64) end_y = 64-y;
|
|
00001A04 E740 MOV #64,R7
|
|
00001A06 6393 MOV R9,R3
|
|
00001A08 334C ADD R4,R3
|
|
00001A0A 3377 CMP/GT R7,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 80
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001A0C 8B03 BF L1349
|
|
00001A0E 3798 SUB R9,R7
|
|
00001A10 A002 BRA L1350
|
|
00001A12 1F7C MOV.L R7,@(48,R15)
|
|
00001A14 L1692:
|
|
00001A14 0081 .DATA.W H'0081
|
|
00001A16 L1349:
|
|
Monochrome 904 else end_y = height;
|
|
00001A16 1F4C MOV.L R4,@(48,R15)
|
|
00001A18 L1350:
|
|
Monochrome 905 shift = 8-(x&7);
|
|
00001A18 E307 MOV #7,R3
|
|
00001A1A 2359 AND R5,R3
|
|
00001A1C E408 MOV #8,R4
|
|
00001A1E 3438 SUB R3,R4
|
|
00001A20 4511 CMP/PZ R5
|
|
00001A22 8D0A BT/S L1351
|
|
00001A24 6E4E EXTS.B R4,R14
|
|
Monochrome 906 if(x<0)
|
|
Monochrome 907 {
|
|
Monochrome 908 begin_x = -x>>3;
|
|
00001A26 6C5B NEG R5,R12
|
|
00001A28 4C21 SHAR R12
|
|
00001A2A 4C21 SHAR R12
|
|
00001A2C 4C21 SHAR R12
|
|
Monochrome 909 if(shift != 8) bool1 = 0;
|
|
00001A2E 60E3 MOV R14,R0
|
|
00001A30 8808 CMP/EQ #8,R0
|
|
00001A32 8903 BT L1353
|
|
00001A34 E01C MOV #28,R0
|
|
00001A36 A001 BRA L1353
|
|
00001A38 0F64 MOV.B R6,@(R0,R15)
|
|
00001A3A L1351:
|
|
Monochrome 910 } else begin_x = 0;
|
|
00001A3A 6C63 MOV R6,R12
|
|
00001A3C L1353:
|
|
00001A3C 9343 MOV.W L1700,R3 ; H'0080
|
|
00001A3E 6253 MOV R5,R2
|
|
00001A40 4221 SHAR R2
|
|
00001A42 4221 SHAR R2
|
|
00001A44 4221 SHAR R2
|
|
00001A46 1F21 MOV.L R2,@(4,R15)
|
|
00001A48 54F3 MOV.L @(12,R15),R4
|
|
00001A4A 74FF ADD #-1,R4
|
|
00001A4C 51F3 MOV.L @(12,R15),R1
|
|
00001A4E 4421 SHAR R4
|
|
00001A50 4421 SHAR R4
|
|
00001A52 4421 SHAR R4
|
|
00001A54 315C ADD R5,R1
|
|
00001A56 3137 CMP/GT R3,R1
|
|
00001A58 8B04 BF L1354
|
|
Monochrome 911 if(x+real_width > 128) end_x = 15-(x>>3), bool2 = 0;
|
|
00001A5A ED0F MOV #15,R13
|
|
00001A5C 3D28 SUB R2,R13
|
|
00001A5E E034 MOV #52,R0
|
|
00001A60 A001 BRA L1355
|
|
00001A62 0F64 MOV.B R6,@(R0,R15)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 81
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001A64 L1354:
|
|
Monochrome 912 else end_x = real_width-1>>3;
|
|
00001A64 6D43 MOV R4,R13
|
|
00001A66 L1355:
|
|
Monochrome 913 bool3 = (end_x == real_width-1>>3);
|
|
00001A66 3D40 CMP/EQ R4,R13
|
|
Monochrome 914 screen = ML_vram_adress()+(y+begin_y<<4)+(x>>3);
|
|
00001A68 D317 MOV.L L1700+2,R3 ; _ML_vram_adress
|
|
00001A6A 61F3 MOV R15,R1
|
|
00001A6C 0029 MOVT R0
|
|
00001A6E 712C ADD #44,R1
|
|
00001A70 430B JSR @R3
|
|
00001A72 2100 MOV.B R0,@R1
|
|
00001A74 53F1 MOV.L @(4,R15),R3
|
|
00001A76 61B3 MOV R11,R1
|
|
Monochrome 915
|
|
Monochrome 916 for(i=begin_y ; i<end_y ; i++)
|
|
00001A78 1F86 MOV.L R8,@(24,R15)
|
|
00001A7A 6A93 MOV R9,R10
|
|
00001A7C 54F3 MOV.L @(12,R15),R4
|
|
00001A7E 7101 ADD #1,R1
|
|
00001A80 3A8C ADD R8,R10
|
|
00001A82 4A08 SHLL2 R10
|
|
00001A84 4A08 SHLL2 R10
|
|
00001A86 3A0C ADD R0,R10
|
|
00001A88 3A3C ADD R3,R10
|
|
00001A8A 4421 SHAR R4
|
|
00001A8C 4421 SHAR R4
|
|
00001A8E 4421 SHAR R4
|
|
00001A90 1F44 MOV.L R4,@(16,R15)
|
|
00001A92 53F6 MOV.L @(24,R15),R3
|
|
00001A94 52F5 MOV.L @(20,R15),R2
|
|
00001A96 0437 MUL.L R3,R4
|
|
00001A98 041A STS MACL,R4
|
|
00001A9A 6843 MOV R4,R8
|
|
00001A9C 38DC ADD R13,R8
|
|
00001A9E 382C ADD R2,R8
|
|
00001AA0 6943 MOV R4,R9
|
|
00001AA2 34CC ADD R12,R4
|
|
00001AA4 342C ADD R2,R4
|
|
00001AA6 63C3 MOV R12,R3
|
|
00001AA8 1F48 MOV.L R4,@(32,R15)
|
|
00001AAA 7301 ADD #1,R3
|
|
00001AAC 1F11 MOV.L R1,@(4,R15)
|
|
00001AAE 1F3A MOV.L R3,@(40,R15)
|
|
00001AB0 52F2 MOV.L @(8,R15),R2
|
|
00001AB2 50F3 MOV.L @(12,R15),R0
|
|
00001AB4 3028 SUB R2,R0
|
|
00001AB6 E1FF MOV #-1,R1
|
|
00001AB8 410C SHAD R0,R1
|
|
00001ABA 1F13 MOV.L R1,@(12,R15)
|
|
00001ABC 55F4 MOV.L @(16,R15),R5
|
|
00001ABE 1F59 MOV.L R5,@(36,R15)
|
|
00001AC0 1F54 MOV.L R5,@(16,R15)
|
|
00001AC2 A06D BRA L1356
|
|
00001AC4 1F52 MOV.L R5,@(8,R15)
|
|
00001AC6 L1700:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 82
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001AC6 0080 .DATA.W H'0080
|
|
00001AC8 <00000000> .DATA.L _ML_vram_adress
|
|
00001ACC L1357:
|
|
Monochrome 917 {
|
|
Monochrome 918 if(begin_x < end_x)
|
|
00001ACC 3CD3 CMP/GE R13,R12
|
|
00001ACE 8938 BT L1358
|
|
Monochrome 919 {
|
|
Monochrome 920 line = bmp[i*(real_width>>3)+begin_x] << shift;
|
|
00001AD0 53F8 MOV.L @(32,R15),R3
|
|
00001AD2 64C3 MOV R12,R4
|
|
00001AD4 6230 MOV.B @R3,R2
|
|
00001AD6 E01C MOV #28,R0
|
|
00001AD8 622C EXTU.B R2,R2
|
|
00001ADA 42ED SHLD R14,R2
|
|
00001ADC 2F21 MOV.W R2,@R15
|
|
00001ADE 03FC MOV.B @(R0,R15),R3
|
|
00001AE0 2338 TST R3,R3
|
|
00001AE2 8D04 BT/S L1359
|
|
00001AE4 34AC ADD R10,R4
|
|
Monochrome 921 if(bool1) screen[begin_x] |= *p;
|
|
00001AE6 63B0 MOV.B @R11,R3
|
|
00001AE8 6140 MOV.B @R4,R1
|
|
00001AEA 213B OR R3,R1
|
|
00001AEC 2410 MOV.B R1,@R4
|
|
00001AEE L1359:
|
|
Monochrome 922 if(shift!=8) screen[begin_x+1] |= *(p+1);
|
|
00001AEE 60E3 MOV R14,R0
|
|
00001AF0 8808 CMP/EQ #8,R0
|
|
00001AF2 8904 BT L1360
|
|
00001AF4 52F1 MOV.L @(4,R15),R2
|
|
00001AF6 6320 MOV.B @R2,R3
|
|
00001AF8 8441 MOV.B @(1,R4),R0
|
|
00001AFA 203B OR R3,R0
|
|
00001AFC 8041 MOV.B R0,@(1,R4)
|
|
00001AFE L1360:
|
|
Monochrome 923 for(j=begin_x+1 ; j<end_x ; j++)
|
|
00001AFE 54FA MOV.L @(40,R15),R4
|
|
00001B00 53F5 MOV.L @(20,R15),R3
|
|
00001B02 34D3 CMP/GE R13,R4
|
|
00001B04 6643 MOV R4,R6
|
|
00001B06 36AC ADD R10,R6
|
|
00001B08 6563 MOV R6,R5
|
|
00001B0A 7501 ADD #1,R5
|
|
00001B0C 6763 MOV R6,R7
|
|
00001B0E 6693 MOV R9,R6
|
|
00001B10 364C ADD R4,R6
|
|
00001B12 8D16 BT/S L1358
|
|
00001B14 363C ADD R3,R6
|
|
00001B16 L1362:
|
|
Monochrome 924 {
|
|
Monochrome 925 line = bmp[i*(real_width>>3)+j] << shift;
|
|
Monochrome 926 screen[j] |= *p;
|
|
Monochrome 927 if(shift!=8) screen[j+1] |= *(p+1);
|
|
00001B16 60E3 MOV R14,R0
|
|
00001B18 6360 MOV.B @R6,R3
|
|
00001B1A 8808 CMP/EQ #8,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 83
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001B1C 633C EXTU.B R3,R3
|
|
00001B1E 43ED SHLD R14,R3
|
|
00001B20 2F31 MOV.W R3,@R15
|
|
00001B22 62B0 MOV.B @R11,R2
|
|
00001B24 6170 MOV.B @R7,R1
|
|
00001B26 212B OR R2,R1
|
|
00001B28 8D05 BT/S L1363
|
|
00001B2A 2710 MOV.B R1,@R7
|
|
00001B2C 52F1 MOV.L @(4,R15),R2
|
|
00001B2E 6320 MOV.B @R2,R3
|
|
00001B30 6150 MOV.B @R5,R1
|
|
00001B32 213B OR R3,R1
|
|
00001B34 2510 MOV.B R1,@R5
|
|
00001B36 L1363:
|
|
00001B36 7401 ADD #1,R4
|
|
00001B38 7501 ADD #1,R5
|
|
00001B3A 7701 ADD #1,R7
|
|
00001B3C 34D3 CMP/GE R13,R4
|
|
00001B3E 8FEA BF/S L1362
|
|
00001B40 7601 ADD #1,R6
|
|
00001B42 L1358:
|
|
Monochrome 928 }
|
|
Monochrome 929 }
|
|
Monochrome 930 line = bmp[i*(real_width>>3)+end_x];
|
|
Monochrome 931 if(bool3) line &= -1<<real_width-width;
|
|
00001B42 E02C MOV #44,R0
|
|
00001B44 6280 MOV.B @R8,R2
|
|
00001B46 622C EXTU.B R2,R2
|
|
00001B48 2F21 MOV.W R2,@R15
|
|
00001B4A 03FC MOV.B @(R0,R15),R3
|
|
00001B4C 2338 TST R3,R3
|
|
00001B4E 8903 BT L1364
|
|
00001B50 53F3 MOV.L @(12,R15),R3
|
|
00001B52 61F1 MOV.W @R15,R1
|
|
00001B54 2139 AND R3,R1
|
|
00001B56 2F11 MOV.W R1,@R15
|
|
00001B58 L1364:
|
|
Monochrome 932 line <<= shift;
|
|
00001B58 62F1 MOV.W @R15,R2
|
|
00001B5A 64D3 MOV R13,R4
|
|
00001B5C 42ED SHLD R14,R2
|
|
00001B5E 3CD3 CMP/GE R13,R12
|
|
00001B60 2F21 MOV.W R2,@R15
|
|
00001B62 8F04 BF/S L1366
|
|
00001B64 34AC ADD R10,R4
|
|
00001B66 E01C MOV #28,R0
|
|
00001B68 01FC MOV.B @(R0,R15),R1
|
|
00001B6A 2118 TST R1,R1
|
|
00001B6C 8903 BT L1365
|
|
00001B6E L1366:
|
|
Monochrome 933 if(begin_x < end_x || bool1) screen[end_x] |= *p;
|
|
00001B6E 63B0 MOV.B @R11,R3
|
|
00001B70 6240 MOV.B @R4,R2
|
|
00001B72 223B OR R3,R2
|
|
00001B74 2420 MOV.B R2,@R4
|
|
00001B76 L1365:
|
|
Monochrome 934 if(bool2) screen[end_x+1] |= *(p+1);
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 84
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001B76 E034 MOV #52,R0
|
|
00001B78 01FC MOV.B @(R0,R15),R1
|
|
00001B7A 2118 TST R1,R1
|
|
00001B7C 8D05 BT/S L1367
|
|
Monochrome 935 screen += 16;
|
|
00001B7E 7A10 ADD #16,R10
|
|
00001B80 51F1 MOV.L @(4,R15),R1
|
|
00001B82 6310 MOV.B @R1,R3
|
|
00001B84 8441 MOV.B @(1,R4),R0
|
|
00001B86 203B OR R3,R0
|
|
00001B88 8041 MOV.B R0,@(1,R4)
|
|
00001B8A L1367:
|
|
00001B8A 53F6 MOV.L @(24,R15),R3
|
|
00001B8C 7301 ADD #1,R3
|
|
00001B8E 1F36 MOV.L R3,@(24,R15)
|
|
00001B90 52F9 MOV.L @(36,R15),R2
|
|
00001B92 382C ADD R2,R8
|
|
00001B94 51F4 MOV.L @(16,R15),R1
|
|
00001B96 391C ADD R1,R9
|
|
00001B98 53F8 MOV.L @(32,R15),R3
|
|
00001B9A 50F2 MOV.L @(8,R15),R0
|
|
00001B9C 303C ADD R3,R0
|
|
00001B9E 1F08 MOV.L R0,@(32,R15)
|
|
00001BA0 L1356:
|
|
00001BA0 53FC MOV.L @(48,R15),R3
|
|
00001BA2 51F6 MOV.L @(24,R15),R1
|
|
00001BA4 3133 CMP/GE R3,R1
|
|
00001BA6 8B91 BF L1357
|
|
00001BA8 L1346:
|
|
Monochrome 936 }
|
|
Monochrome 937 }
|
|
00001BA8 7F38 ADD #56,R15
|
|
00001BAA 4F16 LDS.L @R15+,MACL
|
|
00001BAC 4F26 LDS.L @R15+,PR
|
|
00001BAE 68F6 MOV.L @R15+,R8
|
|
00001BB0 69F6 MOV.L @R15+,R9
|
|
00001BB2 6AF6 MOV.L @R15+,R10
|
|
00001BB4 6BF6 MOV.L @R15+,R11
|
|
00001BB6 6CF6 MOV.L @R15+,R12
|
|
00001BB8 6DF6 MOV.L @R15+,R13
|
|
00001BBA 000B RTS
|
|
00001BBC 6EF6 MOV.L @R15+,R14
|
|
Monochrome 938 #endif
|
|
Monochrome 939
|
|
Monochrome 940 #ifdef ML_BMP_AND_CL
|
|
Monochrome 941 void ML_bmp_and_cl(const unsigned char *bmp, int x, int y, int width, int height)
|
|
00001BBE _ML_bmp_and_cl: ; function: ML_bmp_and_cl
|
|
; frame size=92
|
|
00001BBE E05C MOV #92,R0
|
|
00001BC0 2FE6 MOV.L R14,@-R15
|
|
00001BC2 2FD6 MOV.L R13,@-R15
|
|
00001BC4 2FC6 MOV.L R12,@-R15
|
|
00001BC6 2FB6 MOV.L R11,@-R15
|
|
00001BC8 2FA6 MOV.L R10,@-R15
|
|
00001BCA 2F96 MOV.L R9,@-R15
|
|
00001BCC 2F86 MOV.L R8,@-R15
|
|
00001BCE 6963 MOV R6,R9
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 85
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001BD0 4F22 STS.L PR,@-R15
|
|
Monochrome 942 {
|
|
Monochrome 943 unsigned short line;
|
|
Monochrome 944 char shift, *screen, *p;
|
|
Monochrome 945 int i, j, real_width, begin_x, end_x, begin_y, end_y;
|
|
Monochrome 946 char bool1=1, bool2=1, bool3;
|
|
00001BD2 E601 MOV #1,R6
|
|
00001BD4 4F12 STS.L MACL,@-R15
|
|
00001BD6 7FC8 ADD #-56,R15
|
|
00001BD8 1F45 MOV.L R4,@(20,R15)
|
|
00001BDA 1F72 MOV.L R7,@(8,R15)
|
|
00001BDC 04FE MOV.L @(R0,R15),R4
|
|
00001BDE E01C MOV #28,R0
|
|
00001BE0 0F64 MOV.B R6,@(R0,R15)
|
|
00001BE2 E034 MOV #52,R0
|
|
00001BE4 0F64 MOV.B R6,@(R0,R15)
|
|
Monochrome 947 if(!bmp || x<1-width || x>127 || y<1-height || y>63 || height<1 || width<1) return;
|
|
00001BE6 53F5 MOV.L @(20,R15),R3
|
|
00001BE8 2338 TST R3,R3
|
|
00001BEA 8B01 BF L1701
|
|
00001BEC A109 BRA L1370
|
|
00001BEE 0009 NOP
|
|
00001BF0 L1701:
|
|
00001BF0 53F2 MOV.L @(8,R15),R3
|
|
00001BF2 E201 MOV #1,R2
|
|
00001BF4 3238 SUB R3,R2
|
|
00001BF6 3523 CMP/GE R2,R5
|
|
00001BF8 8901 BT L1702
|
|
00001BFA A102 BRA L1370
|
|
00001BFC 0009 NOP
|
|
00001BFE L1702:
|
|
00001BFE E17F MOV #127,R1
|
|
00001C00 3517 CMP/GT R1,R5
|
|
00001C02 8B01 BF L1703
|
|
00001C04 A0FD BRA L1370
|
|
00001C06 0009 NOP
|
|
00001C08 L1703:
|
|
00001C08 E001 MOV #1,R0
|
|
00001C0A 3048 SUB R4,R0
|
|
00001C0C 3903 CMP/GE R0,R9
|
|
00001C0E 8901 BT L1704
|
|
00001C10 A0F7 BRA L1370
|
|
00001C12 0009 NOP
|
|
00001C14 L1704:
|
|
00001C14 E23F MOV #63,R2
|
|
00001C16 3927 CMP/GT R2,R9
|
|
00001C18 8B01 BF L1705
|
|
00001C1A A0F2 BRA L1370
|
|
00001C1C 0009 NOP
|
|
00001C1E L1705:
|
|
00001C1E E001 MOV #1,R0
|
|
00001C20 3403 CMP/GE R0,R4
|
|
00001C22 8901 BT L1706
|
|
00001C24 A0ED BRA L1370
|
|
00001C26 0009 NOP
|
|
00001C28 L1706:
|
|
00001C28 52F2 MOV.L @(8,R15),R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 86
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001C2A 3203 CMP/GE R0,R2
|
|
00001C2C 8901 BT L1707
|
|
00001C2E A0E8 BRA L1370
|
|
00001C30 0009 NOP
|
|
00001C32 L1707:
|
|
Monochrome 948 p = (char*)&line;
|
|
00001C32 6BF3 MOV R15,R11
|
|
Monochrome 949 real_width = (width-1>>3<<3)+8;
|
|
00001C34 52F2 MOV.L @(8,R15),R2
|
|
00001C36 72FF ADD #-1,R2
|
|
00001C38 4221 SHAR R2
|
|
00001C3A 4221 SHAR R2
|
|
00001C3C 4221 SHAR R2
|
|
00001C3E 4208 SHLL2 R2
|
|
00001C40 4200 SHLL R2
|
|
00001C42 7208 ADD #8,R2
|
|
00001C44 1F23 MOV.L R2,@(12,R15)
|
|
Monochrome 950 if(y < 0) begin_y = -y;
|
|
00001C46 4911 CMP/PZ R9
|
|
00001C48 8D02 BT/S L1371
|
|
00001C4A E600 MOV #0,R6
|
|
00001C4C A001 BRA L1372
|
|
00001C4E 689B NEG R9,R8
|
|
00001C50 L1371:
|
|
Monochrome 951 else begin_y = 0;
|
|
00001C50 6863 MOV R6,R8
|
|
00001C52 L1372:
|
|
Monochrome 952 if(y+height > 64) end_y = 64-y;
|
|
00001C52 E740 MOV #64,R7
|
|
00001C54 6393 MOV R9,R3
|
|
00001C56 334C ADD R4,R3
|
|
00001C58 3377 CMP/GT R7,R3
|
|
00001C5A 8B02 BF L1373
|
|
00001C5C 3798 SUB R9,R7
|
|
00001C5E A001 BRA L1374
|
|
00001C60 1F7C MOV.L R7,@(48,R15)
|
|
00001C62 L1373:
|
|
Monochrome 953 else end_y = height;
|
|
00001C62 1F4C MOV.L R4,@(48,R15)
|
|
00001C64 L1374:
|
|
Monochrome 954 shift = 8-(x&7);
|
|
00001C64 E307 MOV #7,R3
|
|
00001C66 2359 AND R5,R3
|
|
00001C68 E408 MOV #8,R4
|
|
00001C6A 3438 SUB R3,R4
|
|
00001C6C 4511 CMP/PZ R5
|
|
00001C6E 8D0A BT/S L1375
|
|
00001C70 6E4E EXTS.B R4,R14
|
|
Monochrome 955 if(x<0)
|
|
Monochrome 956 {
|
|
Monochrome 957 begin_x = -x>>3;
|
|
00001C72 6C5B NEG R5,R12
|
|
00001C74 4C21 SHAR R12
|
|
00001C76 4C21 SHAR R12
|
|
00001C78 4C21 SHAR R12
|
|
Monochrome 958 if(shift != 8) bool1 = 0;
|
|
00001C7A 60E3 MOV R14,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 87
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001C7C 8808 CMP/EQ #8,R0
|
|
00001C7E 8903 BT L1377
|
|
00001C80 E01C MOV #28,R0
|
|
00001C82 A001 BRA L1377
|
|
00001C84 0F64 MOV.B R6,@(R0,R15)
|
|
00001C86 L1375:
|
|
Monochrome 959 } else begin_x = 0;
|
|
00001C86 6C63 MOV R6,R12
|
|
00001C88 L1377:
|
|
00001C88 9343 MOV.W L1708,R3 ; H'0080
|
|
00001C8A 6253 MOV R5,R2
|
|
00001C8C 4221 SHAR R2
|
|
00001C8E 4221 SHAR R2
|
|
00001C90 4221 SHAR R2
|
|
00001C92 1F21 MOV.L R2,@(4,R15)
|
|
00001C94 54F3 MOV.L @(12,R15),R4
|
|
00001C96 74FF ADD #-1,R4
|
|
00001C98 51F3 MOV.L @(12,R15),R1
|
|
00001C9A 4421 SHAR R4
|
|
00001C9C 4421 SHAR R4
|
|
00001C9E 4421 SHAR R4
|
|
00001CA0 315C ADD R5,R1
|
|
00001CA2 3137 CMP/GT R3,R1
|
|
00001CA4 8B04 BF L1378
|
|
Monochrome 960 if(x+real_width > 128) end_x = 15-(x>>3), bool2 = 0;
|
|
00001CA6 ED0F MOV #15,R13
|
|
00001CA8 3D28 SUB R2,R13
|
|
00001CAA E034 MOV #52,R0
|
|
00001CAC A001 BRA L1379
|
|
00001CAE 0F64 MOV.B R6,@(R0,R15)
|
|
00001CB0 L1378:
|
|
Monochrome 961 else end_x = real_width-1>>3;
|
|
00001CB0 6D43 MOV R4,R13
|
|
00001CB2 L1379:
|
|
Monochrome 962 bool3 = (end_x == real_width-1>>3);
|
|
00001CB2 3D40 CMP/EQ R4,R13
|
|
Monochrome 963 screen = ML_vram_adress()+(y+begin_y<<4)+(x>>3);
|
|
00001CB4 D317 MOV.L L1708+2,R3 ; _ML_vram_adress
|
|
00001CB6 61F3 MOV R15,R1
|
|
00001CB8 0029 MOVT R0
|
|
00001CBA 712C ADD #44,R1
|
|
00001CBC 430B JSR @R3
|
|
00001CBE 2100 MOV.B R0,@R1
|
|
00001CC0 53F1 MOV.L @(4,R15),R3
|
|
00001CC2 61B3 MOV R11,R1
|
|
Monochrome 964
|
|
Monochrome 965 for(i=begin_y ; i<end_y ; i++)
|
|
00001CC4 1F86 MOV.L R8,@(24,R15)
|
|
00001CC6 6A93 MOV R9,R10
|
|
00001CC8 54F3 MOV.L @(12,R15),R4
|
|
00001CCA 7101 ADD #1,R1
|
|
00001CCC 3A8C ADD R8,R10
|
|
00001CCE 4A08 SHLL2 R10
|
|
00001CD0 4A08 SHLL2 R10
|
|
00001CD2 3A0C ADD R0,R10
|
|
00001CD4 3A3C ADD R3,R10
|
|
00001CD6 4421 SHAR R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 88
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001CD8 4421 SHAR R4
|
|
00001CDA 4421 SHAR R4
|
|
00001CDC 1F44 MOV.L R4,@(16,R15)
|
|
00001CDE 53F6 MOV.L @(24,R15),R3
|
|
00001CE0 52F5 MOV.L @(20,R15),R2
|
|
00001CE2 0437 MUL.L R3,R4
|
|
00001CE4 041A STS MACL,R4
|
|
00001CE6 6843 MOV R4,R8
|
|
00001CE8 38DC ADD R13,R8
|
|
00001CEA 382C ADD R2,R8
|
|
00001CEC 6943 MOV R4,R9
|
|
00001CEE 34CC ADD R12,R4
|
|
00001CF0 342C ADD R2,R4
|
|
00001CF2 63C3 MOV R12,R3
|
|
00001CF4 1F48 MOV.L R4,@(32,R15)
|
|
00001CF6 7301 ADD #1,R3
|
|
00001CF8 1F11 MOV.L R1,@(4,R15)
|
|
00001CFA 1F3A MOV.L R3,@(40,R15)
|
|
00001CFC 52F2 MOV.L @(8,R15),R2
|
|
00001CFE 50F3 MOV.L @(12,R15),R0
|
|
00001D00 3028 SUB R2,R0
|
|
00001D02 E1FF MOV #-1,R1
|
|
00001D04 410C SHAD R0,R1
|
|
00001D06 1F13 MOV.L R1,@(12,R15)
|
|
00001D08 55F4 MOV.L @(16,R15),R5
|
|
00001D0A 1F59 MOV.L R5,@(36,R15)
|
|
00001D0C 1F54 MOV.L R5,@(16,R15)
|
|
00001D0E A074 BRA L1380
|
|
00001D10 1F52 MOV.L R5,@(8,R15)
|
|
00001D12 L1708:
|
|
00001D12 0080 .DATA.W H'0080
|
|
00001D14 <00000000> .DATA.L _ML_vram_adress
|
|
00001D18 L1381:
|
|
Monochrome 966 {
|
|
Monochrome 967 if(begin_x < end_x)
|
|
00001D18 3CD3 CMP/GE R13,R12
|
|
00001D1A 893C BT L1382
|
|
Monochrome 968
|
|
Monochrome 969 {
|
|
Monochrome 970 line = ~((unsigned char)~bmp[i*(real_width>>3)+begin_x]<<shift);
|
|
00001D1C 53F8 MOV.L @(32,R15),R3
|
|
00001D1E 64C3 MOV R12,R4
|
|
00001D20 6230 MOV.B @R3,R2
|
|
00001D22 E01C MOV #28,R0
|
|
00001D24 6227 NOT R2,R2
|
|
00001D26 622C EXTU.B R2,R2
|
|
00001D28 42ED SHLD R14,R2
|
|
00001D2A 6227 NOT R2,R2
|
|
00001D2C 2F21 MOV.W R2,@R15
|
|
00001D2E 03FC MOV.B @(R0,R15),R3
|
|
00001D30 2338 TST R3,R3
|
|
00001D32 8D04 BT/S L1383
|
|
00001D34 34AC ADD R10,R4
|
|
Monochrome 971 if(bool1) screen[begin_x] &= *p;
|
|
00001D36 63B0 MOV.B @R11,R3
|
|
00001D38 6140 MOV.B @R4,R1
|
|
00001D3A 2139 AND R3,R1
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 89
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001D3C 2410 MOV.B R1,@R4
|
|
00001D3E L1383:
|
|
Monochrome 972 if(shift!=8) screen[begin_x+1] &= *(p+1);
|
|
00001D3E 60E3 MOV R14,R0
|
|
00001D40 8808 CMP/EQ #8,R0
|
|
00001D42 8904 BT L1384
|
|
00001D44 52F1 MOV.L @(4,R15),R2
|
|
00001D46 6320 MOV.B @R2,R3
|
|
00001D48 8441 MOV.B @(1,R4),R0
|
|
00001D4A 2039 AND R3,R0
|
|
00001D4C 8041 MOV.B R0,@(1,R4)
|
|
00001D4E L1384:
|
|
Monochrome 973 for(j=begin_x+1 ; j<end_x ; j++)
|
|
00001D4E 54FA MOV.L @(40,R15),R4
|
|
00001D50 53F5 MOV.L @(20,R15),R3
|
|
00001D52 34D3 CMP/GE R13,R4
|
|
00001D54 6643 MOV R4,R6
|
|
00001D56 36AC ADD R10,R6
|
|
00001D58 6563 MOV R6,R5
|
|
00001D5A 7501 ADD #1,R5
|
|
00001D5C 6763 MOV R6,R7
|
|
00001D5E 6693 MOV R9,R6
|
|
00001D60 364C ADD R4,R6
|
|
00001D62 8D18 BT/S L1382
|
|
00001D64 363C ADD R3,R6
|
|
00001D66 L1386:
|
|
Monochrome 974 {
|
|
Monochrome 975 line = ~((unsigned char)~bmp[i*(real_width>>3)+j]<<shift);
|
|
Monochrome 976 screen[j] &= *p;
|
|
Monochrome 977 if(shift!=8) screen[j+1] &= *(p+1);
|
|
00001D66 60E3 MOV R14,R0
|
|
00001D68 6360 MOV.B @R6,R3
|
|
00001D6A 8808 CMP/EQ #8,R0
|
|
00001D6C 6337 NOT R3,R3
|
|
00001D6E 633C EXTU.B R3,R3
|
|
00001D70 43ED SHLD R14,R3
|
|
00001D72 6337 NOT R3,R3
|
|
00001D74 2F31 MOV.W R3,@R15
|
|
00001D76 62B0 MOV.B @R11,R2
|
|
00001D78 6170 MOV.B @R7,R1
|
|
00001D7A 2129 AND R2,R1
|
|
00001D7C 8D05 BT/S L1387
|
|
00001D7E 2710 MOV.B R1,@R7
|
|
00001D80 52F1 MOV.L @(4,R15),R2
|
|
00001D82 6320 MOV.B @R2,R3
|
|
00001D84 6150 MOV.B @R5,R1
|
|
00001D86 2139 AND R3,R1
|
|
00001D88 2510 MOV.B R1,@R5
|
|
00001D8A L1387:
|
|
00001D8A 7401 ADD #1,R4
|
|
00001D8C 7501 ADD #1,R5
|
|
00001D8E 7701 ADD #1,R7
|
|
00001D90 34D3 CMP/GE R13,R4
|
|
00001D92 8FE8 BF/S L1386
|
|
00001D94 7601 ADD #1,R6
|
|
00001D96 L1382:
|
|
Monochrome 978 }
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 90
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 979 }
|
|
Monochrome 980 line = (unsigned char)~bmp[i*(real_width>>3)+end_x];
|
|
Monochrome 981 if(bool3) line &= -1<<real_width-width;
|
|
00001D96 E02C MOV #44,R0
|
|
00001D98 6280 MOV.B @R8,R2
|
|
00001D9A 6227 NOT R2,R2
|
|
00001D9C 622C EXTU.B R2,R2
|
|
00001D9E 2F21 MOV.W R2,@R15
|
|
00001DA0 03FC MOV.B @(R0,R15),R3
|
|
00001DA2 2338 TST R3,R3
|
|
00001DA4 8903 BT L1388
|
|
00001DA6 53F3 MOV.L @(12,R15),R3
|
|
00001DA8 61F1 MOV.W @R15,R1
|
|
00001DAA 2139 AND R3,R1
|
|
00001DAC 2F11 MOV.W R1,@R15
|
|
00001DAE L1388:
|
|
00001DAE 64D3 MOV R13,R4
|
|
Monochrome 982 line = ~(line << shift);
|
|
00001DB0 62F1 MOV.W @R15,R2
|
|
00001DB2 3CD3 CMP/GE R13,R12
|
|
00001DB4 622D EXTU.W R2,R2
|
|
00001DB6 42ED SHLD R14,R2
|
|
00001DB8 6227 NOT R2,R2
|
|
00001DBA 2F21 MOV.W R2,@R15
|
|
00001DBC 8F04 BF/S L1390
|
|
00001DBE 34AC ADD R10,R4
|
|
00001DC0 E01C MOV #28,R0
|
|
00001DC2 01FC MOV.B @(R0,R15),R1
|
|
00001DC4 2118 TST R1,R1
|
|
00001DC6 8903 BT L1389
|
|
00001DC8 L1390:
|
|
Monochrome 983 if(begin_x < end_x || bool1) screen[end_x] &= *p;
|
|
00001DC8 63B0 MOV.B @R11,R3
|
|
00001DCA 6240 MOV.B @R4,R2
|
|
00001DCC 2239 AND R3,R2
|
|
00001DCE 2420 MOV.B R2,@R4
|
|
00001DD0 L1389:
|
|
Monochrome 984 if(bool2) screen[end_x+1] &= *(p+1);
|
|
00001DD0 E034 MOV #52,R0
|
|
00001DD2 01FC MOV.B @(R0,R15),R1
|
|
00001DD4 2118 TST R1,R1
|
|
00001DD6 8D05 BT/S L1391
|
|
Monochrome 985 screen += 16;
|
|
00001DD8 7A10 ADD #16,R10
|
|
00001DDA 51F1 MOV.L @(4,R15),R1
|
|
00001DDC 8441 MOV.B @(1,R4),R0
|
|
00001DDE 6310 MOV.B @R1,R3
|
|
00001DE0 2039 AND R3,R0
|
|
00001DE2 8041 MOV.B R0,@(1,R4)
|
|
00001DE4 L1391:
|
|
00001DE4 53F6 MOV.L @(24,R15),R3
|
|
00001DE6 7301 ADD #1,R3
|
|
00001DE8 1F36 MOV.L R3,@(24,R15)
|
|
00001DEA 52F9 MOV.L @(36,R15),R2
|
|
00001DEC 51F4 MOV.L @(16,R15),R1
|
|
00001DEE 382C ADD R2,R8
|
|
00001DF0 53F8 MOV.L @(32,R15),R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 91
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001DF2 391C ADD R1,R9
|
|
00001DF4 50F2 MOV.L @(8,R15),R0
|
|
00001DF6 303C ADD R3,R0
|
|
00001DF8 1F08 MOV.L R0,@(32,R15)
|
|
00001DFA L1380:
|
|
00001DFA 53FC MOV.L @(48,R15),R3
|
|
00001DFC 51F6 MOV.L @(24,R15),R1
|
|
00001DFE 3133 CMP/GE R3,R1
|
|
00001E00 8B8A BF L1381
|
|
00001E02 L1370:
|
|
Monochrome 986 }
|
|
Monochrome 987 }
|
|
00001E02 7F38 ADD #56,R15
|
|
00001E04 4F16 LDS.L @R15+,MACL
|
|
00001E06 4F26 LDS.L @R15+,PR
|
|
00001E08 68F6 MOV.L @R15+,R8
|
|
00001E0A 69F6 MOV.L @R15+,R9
|
|
00001E0C 6AF6 MOV.L @R15+,R10
|
|
00001E0E 6BF6 MOV.L @R15+,R11
|
|
00001E10 6CF6 MOV.L @R15+,R12
|
|
00001E12 6DF6 MOV.L @R15+,R13
|
|
00001E14 000B RTS
|
|
00001E16 6EF6 MOV.L @R15+,R14
|
|
Monochrome 988 #endif
|
|
Monochrome 989
|
|
Monochrome 990 #ifdef ML_BMP_XOR_CL
|
|
Monochrome 991 void ML_bmp_xor_cl(const unsigned char *bmp, int x, int y, int width, int height)
|
|
00001E18 _ML_bmp_xor_cl: ; function: ML_bmp_xor_cl
|
|
; frame size=92
|
|
00001E18 2FE6 MOV.L R14,@-R15
|
|
00001E1A E05C MOV #92,R0
|
|
00001E1C 2FD6 MOV.L R13,@-R15
|
|
00001E1E 2FC6 MOV.L R12,@-R15
|
|
00001E20 2FB6 MOV.L R11,@-R15
|
|
00001E22 2FA6 MOV.L R10,@-R15
|
|
00001E24 2F96 MOV.L R9,@-R15
|
|
00001E26 6963 MOV R6,R9
|
|
00001E28 2F86 MOV.L R8,@-R15
|
|
Monochrome 992 {
|
|
Monochrome 993 unsigned short line;
|
|
Monochrome 994 char shift, *screen, *p;
|
|
Monochrome 995 int i, j, real_width, begin_x, end_x, begin_y, end_y;
|
|
Monochrome 996 char bool1=1, bool2=1, bool3;
|
|
00001E2A E601 MOV #1,R6
|
|
00001E2C 4F22 STS.L PR,@-R15
|
|
00001E2E 4F12 STS.L MACL,@-R15
|
|
00001E30 7FC8 ADD #-56,R15
|
|
00001E32 1F45 MOV.L R4,@(20,R15)
|
|
00001E34 1F72 MOV.L R7,@(8,R15)
|
|
00001E36 04FE MOV.L @(R0,R15),R4
|
|
00001E38 E01C MOV #28,R0
|
|
00001E3A 0F64 MOV.B R6,@(R0,R15)
|
|
00001E3C E034 MOV #52,R0
|
|
00001E3E 0F64 MOV.B R6,@(R0,R15)
|
|
Monochrome 997 if(!bmp || x<1-width || x>127 || y<1-height || y>63 || height<1 || width<1) return;
|
|
00001E40 53F5 MOV.L @(20,R15),R3
|
|
00001E42 2338 TST R3,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 92
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001E44 8B01 BF L1709
|
|
00001E46 A103 BRA L1394
|
|
00001E48 0009 NOP
|
|
00001E4A L1709:
|
|
00001E4A E201 MOV #1,R2
|
|
00001E4C 53F2 MOV.L @(8,R15),R3
|
|
00001E4E 3238 SUB R3,R2
|
|
00001E50 3523 CMP/GE R2,R5
|
|
00001E52 8901 BT L1710
|
|
00001E54 A0FC BRA L1394
|
|
00001E56 0009 NOP
|
|
00001E58 L1710:
|
|
00001E58 E17F MOV #127,R1
|
|
00001E5A 3517 CMP/GT R1,R5
|
|
00001E5C 8B01 BF L1711
|
|
00001E5E A0F7 BRA L1394
|
|
00001E60 0009 NOP
|
|
00001E62 L1711:
|
|
00001E62 E001 MOV #1,R0
|
|
00001E64 3048 SUB R4,R0
|
|
00001E66 3903 CMP/GE R0,R9
|
|
00001E68 8901 BT L1712
|
|
00001E6A A0F1 BRA L1394
|
|
00001E6C 0009 NOP
|
|
00001E6E L1712:
|
|
00001E6E E23F MOV #63,R2
|
|
00001E70 3927 CMP/GT R2,R9
|
|
00001E72 8B01 BF L1713
|
|
00001E74 A0EC BRA L1394
|
|
00001E76 0009 NOP
|
|
00001E78 L1713:
|
|
00001E78 E001 MOV #1,R0
|
|
00001E7A 3403 CMP/GE R0,R4
|
|
00001E7C 8901 BT L1714
|
|
00001E7E A0E7 BRA L1394
|
|
00001E80 0009 NOP
|
|
00001E82 L1714:
|
|
00001E82 52F2 MOV.L @(8,R15),R2
|
|
00001E84 3203 CMP/GE R0,R2
|
|
00001E86 8901 BT L1715
|
|
00001E88 A0E2 BRA L1394
|
|
00001E8A 0009 NOP
|
|
00001E8C L1715:
|
|
Monochrome 998 p = (char*)&line;
|
|
Monochrome 999 real_width = (width-1>>3<<3)+8;
|
|
00001E8C 52F2 MOV.L @(8,R15),R2
|
|
00001E8E 6BF3 MOV R15,R11
|
|
00001E90 72FF ADD #-1,R2
|
|
00001E92 4221 SHAR R2
|
|
00001E94 4221 SHAR R2
|
|
00001E96 4221 SHAR R2
|
|
00001E98 4208 SHLL2 R2
|
|
00001E9A 4200 SHLL R2
|
|
00001E9C 7208 ADD #8,R2
|
|
Monochrome 1000 if(y < 0) begin_y = -y;
|
|
00001E9E 4911 CMP/PZ R9
|
|
00001EA0 1F23 MOV.L R2,@(12,R15)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 93
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001EA2 8D02 BT/S L1395
|
|
00001EA4 E600 MOV #0,R6
|
|
00001EA6 A001 BRA L1396
|
|
00001EA8 689B NEG R9,R8
|
|
00001EAA L1395:
|
|
Monochrome 1001 else begin_y = 0;
|
|
00001EAA 6863 MOV R6,R8
|
|
00001EAC L1396:
|
|
Monochrome 1002 if(y+height > 64) end_y = 64-y;
|
|
00001EAC E740 MOV #64,R7
|
|
00001EAE 6393 MOV R9,R3
|
|
00001EB0 334C ADD R4,R3
|
|
00001EB2 3377 CMP/GT R7,R3
|
|
00001EB4 8B02 BF L1397
|
|
00001EB6 3798 SUB R9,R7
|
|
00001EB8 A001 BRA L1398
|
|
00001EBA 1F7C MOV.L R7,@(48,R15)
|
|
00001EBC L1397:
|
|
Monochrome 1003 else end_y = height;
|
|
00001EBC 1F4C MOV.L R4,@(48,R15)
|
|
00001EBE L1398:
|
|
Monochrome 1004 shift = 8-(x&7);
|
|
00001EBE E307 MOV #7,R3
|
|
00001EC0 2359 AND R5,R3
|
|
00001EC2 E408 MOV #8,R4
|
|
00001EC4 3438 SUB R3,R4
|
|
00001EC6 4511 CMP/PZ R5
|
|
00001EC8 8D0A BT/S L1399
|
|
00001ECA 6E4E EXTS.B R4,R14
|
|
Monochrome 1005 if(x<0)
|
|
Monochrome 1006 {
|
|
Monochrome 1007 begin_x = -x>>3;
|
|
00001ECC 6C5B NEG R5,R12
|
|
00001ECE 4C21 SHAR R12
|
|
00001ED0 4C21 SHAR R12
|
|
00001ED2 4C21 SHAR R12
|
|
Monochrome 1008 if(shift != 8) bool1 = 0;
|
|
00001ED4 60E3 MOV R14,R0
|
|
00001ED6 8808 CMP/EQ #8,R0
|
|
00001ED8 8903 BT L1401
|
|
00001EDA E01C MOV #28,R0
|
|
00001EDC A001 BRA L1401
|
|
00001EDE 0F64 MOV.B R6,@(R0,R15)
|
|
00001EE0 L1399:
|
|
Monochrome 1009 } else begin_x = 0;
|
|
00001EE0 6C63 MOV R6,R12
|
|
00001EE2 L1401:
|
|
00001EE2 6253 MOV R5,R2
|
|
00001EE4 9342 MOV.W L1716,R3 ; H'0080
|
|
00001EE6 4221 SHAR R2
|
|
00001EE8 4221 SHAR R2
|
|
00001EEA 4221 SHAR R2
|
|
00001EEC 1F21 MOV.L R2,@(4,R15)
|
|
00001EEE 54F3 MOV.L @(12,R15),R4
|
|
00001EF0 51F3 MOV.L @(12,R15),R1
|
|
00001EF2 74FF ADD #-1,R4
|
|
00001EF4 4421 SHAR R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 94
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001EF6 4421 SHAR R4
|
|
00001EF8 4421 SHAR R4
|
|
00001EFA 315C ADD R5,R1
|
|
00001EFC 3137 CMP/GT R3,R1
|
|
00001EFE 8B04 BF L1402
|
|
Monochrome 1010 if(x+real_width > 128) end_x = 15-(x>>3), bool2 = 0;
|
|
00001F00 ED0F MOV #15,R13
|
|
00001F02 3D28 SUB R2,R13
|
|
00001F04 E034 MOV #52,R0
|
|
00001F06 A001 BRA L1403
|
|
00001F08 0F64 MOV.B R6,@(R0,R15)
|
|
00001F0A L1402:
|
|
Monochrome 1011 else end_x = real_width-1>>3;
|
|
00001F0A 6D43 MOV R4,R13
|
|
00001F0C L1403:
|
|
Monochrome 1012 bool3 = (end_x == real_width-1>>3);
|
|
Monochrome 1013 screen = ML_vram_adress()+(y+begin_y<<4)+(x>>3);
|
|
00001F0C D318 MOV.L L1716+4,R3 ; _ML_vram_adress
|
|
00001F0E 3D40 CMP/EQ R4,R13
|
|
00001F10 0029 MOVT R0
|
|
00001F12 61F3 MOV R15,R1
|
|
00001F14 712C ADD #44,R1
|
|
00001F16 430B JSR @R3
|
|
00001F18 2100 MOV.B R0,@R1
|
|
00001F1A 6A93 MOV R9,R10
|
|
00001F1C 53F1 MOV.L @(4,R15),R3
|
|
00001F1E 61B3 MOV R11,R1
|
|
Monochrome 1014
|
|
Monochrome 1015 for(i=begin_y ; i<end_y ; i++)
|
|
00001F20 1F86 MOV.L R8,@(24,R15)
|
|
00001F22 3A8C ADD R8,R10
|
|
00001F24 54F3 MOV.L @(12,R15),R4
|
|
00001F26 7101 ADD #1,R1
|
|
00001F28 4A08 SHLL2 R10
|
|
00001F2A 4A08 SHLL2 R10
|
|
00001F2C 3A0C ADD R0,R10
|
|
00001F2E 3A3C ADD R3,R10
|
|
00001F30 4421 SHAR R4
|
|
00001F32 4421 SHAR R4
|
|
00001F34 4421 SHAR R4
|
|
00001F36 1F44 MOV.L R4,@(16,R15)
|
|
00001F38 53F6 MOV.L @(24,R15),R3
|
|
00001F3A 0437 MUL.L R3,R4
|
|
00001F3C 52F5 MOV.L @(20,R15),R2
|
|
00001F3E 63C3 MOV R12,R3
|
|
00001F40 041A STS MACL,R4
|
|
00001F42 6843 MOV R4,R8
|
|
00001F44 38DC ADD R13,R8
|
|
00001F46 382C ADD R2,R8
|
|
00001F48 6943 MOV R4,R9
|
|
00001F4A 34CC ADD R12,R4
|
|
00001F4C 342C ADD R2,R4
|
|
00001F4E 7301 ADD #1,R3
|
|
00001F50 1F48 MOV.L R4,@(32,R15)
|
|
00001F52 1F11 MOV.L R1,@(4,R15)
|
|
00001F54 1F3A MOV.L R3,@(40,R15)
|
|
00001F56 52F2 MOV.L @(8,R15),R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 95
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001F58 50F3 MOV.L @(12,R15),R0
|
|
00001F5A 3028 SUB R2,R0
|
|
00001F5C E1FF MOV #-1,R1
|
|
00001F5E 410C SHAD R0,R1
|
|
00001F60 1F13 MOV.L R1,@(12,R15)
|
|
00001F62 55F4 MOV.L @(16,R15),R5
|
|
00001F64 1F59 MOV.L R5,@(36,R15)
|
|
00001F66 1F54 MOV.L R5,@(16,R15)
|
|
00001F68 A06E BRA L1404
|
|
00001F6A 1F52 MOV.L R5,@(8,R15)
|
|
00001F6C L1716:
|
|
00001F6C 0080 .DATA.W H'0080
|
|
00001F6E 0000 .DATA.W 0
|
|
00001F70 <00000000> .DATA.L _ML_vram_adress
|
|
00001F74 L1405:
|
|
Monochrome 1016 {
|
|
Monochrome 1017 if(begin_x < end_x)
|
|
00001F74 3CD3 CMP/GE R13,R12
|
|
00001F76 8938 BT L1406
|
|
Monochrome 1018 {
|
|
Monochrome 1019 line = bmp[i*(real_width>>3)+begin_x] << shift;
|
|
00001F78 53F8 MOV.L @(32,R15),R3
|
|
00001F7A 64C3 MOV R12,R4
|
|
00001F7C 6230 MOV.B @R3,R2
|
|
00001F7E E01C MOV #28,R0
|
|
00001F80 622C EXTU.B R2,R2
|
|
00001F82 42ED SHLD R14,R2
|
|
00001F84 2F21 MOV.W R2,@R15
|
|
00001F86 03FC MOV.B @(R0,R15),R3
|
|
00001F88 2338 TST R3,R3
|
|
00001F8A 8D04 BT/S L1407
|
|
00001F8C 34AC ADD R10,R4
|
|
Monochrome 1020 if(bool1) screen[begin_x] ^= *p;
|
|
00001F8E 63B0 MOV.B @R11,R3
|
|
00001F90 6140 MOV.B @R4,R1
|
|
00001F92 213A XOR R3,R1
|
|
00001F94 2410 MOV.B R1,@R4
|
|
00001F96 L1407:
|
|
Monochrome 1021 if(shift!=8) screen[begin_x+1] ^= *(p+1);
|
|
00001F96 60E3 MOV R14,R0
|
|
00001F98 8808 CMP/EQ #8,R0
|
|
00001F9A 8904 BT L1408
|
|
00001F9C 52F1 MOV.L @(4,R15),R2
|
|
00001F9E 6320 MOV.B @R2,R3
|
|
00001FA0 8441 MOV.B @(1,R4),R0
|
|
00001FA2 203A XOR R3,R0
|
|
00001FA4 8041 MOV.B R0,@(1,R4)
|
|
00001FA6 L1408:
|
|
Monochrome 1022 for(j=begin_x+1 ; j<end_x ; j++)
|
|
00001FA6 54FA MOV.L @(40,R15),R4
|
|
00001FA8 53F5 MOV.L @(20,R15),R3
|
|
00001FAA 34D3 CMP/GE R13,R4
|
|
00001FAC 6643 MOV R4,R6
|
|
00001FAE 36AC ADD R10,R6
|
|
00001FB0 6563 MOV R6,R5
|
|
00001FB2 7501 ADD #1,R5
|
|
00001FB4 6763 MOV R6,R7
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 96
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00001FB6 6693 MOV R9,R6
|
|
00001FB8 364C ADD R4,R6
|
|
00001FBA 8D16 BT/S L1406
|
|
00001FBC 363C ADD R3,R6
|
|
00001FBE L1410:
|
|
Monochrome 1023 {
|
|
Monochrome 1024 line = bmp[i*(real_width>>3)+j] << shift;
|
|
Monochrome 1025 screen[j] ^= *p;
|
|
Monochrome 1026 if(shift!=8) screen[j+1] ^= *(p+1);
|
|
00001FBE 60E3 MOV R14,R0
|
|
00001FC0 6360 MOV.B @R6,R3
|
|
00001FC2 8808 CMP/EQ #8,R0
|
|
00001FC4 633C EXTU.B R3,R3
|
|
00001FC6 43ED SHLD R14,R3
|
|
00001FC8 2F31 MOV.W R3,@R15
|
|
00001FCA 62B0 MOV.B @R11,R2
|
|
00001FCC 6170 MOV.B @R7,R1
|
|
00001FCE 212A XOR R2,R1
|
|
00001FD0 8D05 BT/S L1411
|
|
00001FD2 2710 MOV.B R1,@R7
|
|
00001FD4 52F1 MOV.L @(4,R15),R2
|
|
00001FD6 6320 MOV.B @R2,R3
|
|
00001FD8 6150 MOV.B @R5,R1
|
|
00001FDA 213A XOR R3,R1
|
|
00001FDC 2510 MOV.B R1,@R5
|
|
00001FDE L1411:
|
|
00001FDE 7401 ADD #1,R4
|
|
00001FE0 7501 ADD #1,R5
|
|
00001FE2 7701 ADD #1,R7
|
|
00001FE4 34D3 CMP/GE R13,R4
|
|
00001FE6 8FEA BF/S L1410
|
|
00001FE8 7601 ADD #1,R6
|
|
00001FEA L1406:
|
|
Monochrome 1027 }
|
|
Monochrome 1028 }
|
|
Monochrome 1029 line = bmp[i*(real_width>>3)+end_x];
|
|
Monochrome 1030 if(bool3) line &= -1<<real_width-width;
|
|
00001FEA E02C MOV #44,R0
|
|
00001FEC 6280 MOV.B @R8,R2
|
|
00001FEE 622C EXTU.B R2,R2
|
|
00001FF0 2F21 MOV.W R2,@R15
|
|
00001FF2 03FC MOV.B @(R0,R15),R3
|
|
00001FF4 2338 TST R3,R3
|
|
00001FF6 8903 BT L1412
|
|
00001FF8 53F3 MOV.L @(12,R15),R3
|
|
00001FFA 61F1 MOV.W @R15,R1
|
|
00001FFC 2139 AND R3,R1
|
|
00001FFE 2F11 MOV.W R1,@R15
|
|
00002000 L1412:
|
|
Monochrome 1031 line <<= shift;
|
|
00002000 62F1 MOV.W @R15,R2
|
|
00002002 64D3 MOV R13,R4
|
|
00002004 42ED SHLD R14,R2
|
|
00002006 3CD3 CMP/GE R13,R12
|
|
00002008 2F21 MOV.W R2,@R15
|
|
0000200A 8F04 BF/S L1414
|
|
0000200C 34AC ADD R10,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 97
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000200E E01C MOV #28,R0
|
|
00002010 01FC MOV.B @(R0,R15),R1
|
|
00002012 2118 TST R1,R1
|
|
00002014 8903 BT L1413
|
|
00002016 L1414:
|
|
Monochrome 1032 if(begin_x < end_x || bool1) screen[end_x] ^= *p;
|
|
00002016 63B0 MOV.B @R11,R3
|
|
00002018 6240 MOV.B @R4,R2
|
|
0000201A 223A XOR R3,R2
|
|
0000201C 2420 MOV.B R2,@R4
|
|
0000201E L1413:
|
|
Monochrome 1033 if(bool2) screen[end_x+1] ^= *(p+1);
|
|
0000201E E034 MOV #52,R0
|
|
00002020 01FC MOV.B @(R0,R15),R1
|
|
00002022 2118 TST R1,R1
|
|
00002024 8D05 BT/S L1415
|
|
Monochrome 1034 screen += 16;
|
|
00002026 7A10 ADD #16,R10
|
|
00002028 51F1 MOV.L @(4,R15),R1
|
|
0000202A 6310 MOV.B @R1,R3
|
|
0000202C 8441 MOV.B @(1,R4),R0
|
|
0000202E 203A XOR R3,R0
|
|
00002030 8041 MOV.B R0,@(1,R4)
|
|
00002032 L1415:
|
|
00002032 53F6 MOV.L @(24,R15),R3
|
|
00002034 7301 ADD #1,R3
|
|
00002036 1F36 MOV.L R3,@(24,R15)
|
|
00002038 52F9 MOV.L @(36,R15),R2
|
|
0000203A 382C ADD R2,R8
|
|
0000203C 51F4 MOV.L @(16,R15),R1
|
|
0000203E 391C ADD R1,R9
|
|
00002040 53F8 MOV.L @(32,R15),R3
|
|
00002042 50F2 MOV.L @(8,R15),R0
|
|
00002044 303C ADD R3,R0
|
|
00002046 1F08 MOV.L R0,@(32,R15)
|
|
00002048 L1404:
|
|
00002048 53FC MOV.L @(48,R15),R3
|
|
0000204A 51F6 MOV.L @(24,R15),R1
|
|
0000204C 3133 CMP/GE R3,R1
|
|
0000204E 8B91 BF L1405
|
|
00002050 L1394:
|
|
Monochrome 1035 }
|
|
Monochrome 1036 }
|
|
00002050 7F38 ADD #56,R15
|
|
00002052 4F16 LDS.L @R15+,MACL
|
|
00002054 4F26 LDS.L @R15+,PR
|
|
00002056 68F6 MOV.L @R15+,R8
|
|
00002058 69F6 MOV.L @R15+,R9
|
|
0000205A 6AF6 MOV.L @R15+,R10
|
|
0000205C 6BF6 MOV.L @R15+,R11
|
|
0000205E 6CF6 MOV.L @R15+,R12
|
|
00002060 6DF6 MOV.L @R15+,R13
|
|
00002062 000B RTS
|
|
00002064 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1037
|
|
Monochrome 1038 #endif
|
|
Monochrome 1039
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 98
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1040 #ifdef ML_BMP_8_OR
|
|
Monochrome 1041 void ML_bmp_8_or(const unsigned char *bmp, int x, int y)
|
|
00002066 _ML_bmp_8_or: ; function: ML_bmp_8_or
|
|
; frame size=36
|
|
00002066 2FE6 MOV.L R14,@-R15
|
|
00002068 2FD6 MOV.L R13,@-R15
|
|
0000206A 6E63 MOV R6,R14
|
|
0000206C 2FC6 MOV.L R12,@-R15
|
|
0000206E 6D53 MOV R5,R13
|
|
00002070 2FB6 MOV.L R11,@-R15
|
|
Monochrome 1042 {
|
|
Monochrome 1043 unsigned short line;
|
|
Monochrome 1044 char i, shift, begin=0, end=8, *screen, *p=(char*)&line;
|
|
00002072 EB00 MOV #0,R11
|
|
00002074 2FA6 MOV.L R10,@-R15
|
|
00002076 2F96 MOV.L R9,@-R15
|
|
00002078 4F22 STS.L PR,@-R15
|
|
0000207A 7FF8 ADD #-8,R15
|
|
0000207C 1F41 MOV.L R4,@(4,R15)
|
|
0000207E E408 MOV #8,R4
|
|
Monochrome 1045 if(!bmp || x<0 || x>120 || y<-7 || y>63) return;
|
|
00002080 53F1 MOV.L @(4,R15),R3
|
|
00002082 6943 MOV R4,R9
|
|
00002084 2338 TST R3,R3
|
|
00002086 8D43 BT/S L1418
|
|
00002088 6CF3 MOV R15,R12
|
|
0000208A 4D11 CMP/PZ R13
|
|
0000208C 8B40 BF L1418
|
|
0000208E E278 MOV #120,R2
|
|
00002090 3D27 CMP/GT R2,R13
|
|
00002092 893D BT L1418
|
|
00002094 E1F9 MOV #-7,R1
|
|
00002096 3E13 CMP/GE R1,R14
|
|
00002098 8B3A BF L1418
|
|
0000209A E03F MOV #63,R0
|
|
0000209C 3E07 CMP/GT R0,R14
|
|
0000209E 8937 BT L1418
|
|
Monochrome 1046 if(y < 0) begin = -y;
|
|
000020A0 4E11 CMP/PZ R14
|
|
000020A2 8D01 BT/S L1419
|
|
Monochrome 1047 if(y > 56) end = 64-y;
|
|
000020A4 E338 MOV #56,R3
|
|
000020A6 6BEB NEG R14,R11
|
|
000020A8 L1419:
|
|
000020A8 3E37 CMP/GT R3,R14
|
|
000020AA 8F02 BF/S L1420
|
|
Monochrome 1048 shift = 8-(x&7);
|
|
000020AC E307 MOV #7,R3
|
|
000020AE E940 MOV #64,R9
|
|
000020B0 39E8 SUB R14,R9
|
|
000020B2 L1420:
|
|
000020B2 23D9 AND R13,R3
|
|
Monochrome 1049 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
000020B4 D24B MOV.L L1717+2,R2 ; _ML_vram_adress
|
|
000020B6 6A43 MOV R4,R10
|
|
000020B8 420B JSR @R2
|
|
000020BA 3A38 SUB R3,R10
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 99
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000020BC 63BE EXTS.B R11,R3
|
|
000020BE 33EC ADD R14,R3
|
|
000020C0 4308 SHLL2 R3
|
|
000020C2 4308 SHLL2 R3
|
|
000020C4 303C ADD R3,R0
|
|
000020C6 4D21 SHAR R13
|
|
000020C8 53F1 MOV.L @(4,R15),R3
|
|
000020CA 6EC3 MOV R12,R14
|
|
000020CC 4D21 SHAR R13
|
|
000020CE 4D21 SHAR R13
|
|
000020D0 6603 MOV R0,R6
|
|
000020D2 36DC ADD R13,R6
|
|
Monochrome 1050 for(i=begin ; i<end ; i++)
|
|
000020D4 65B3 MOV R11,R5
|
|
000020D6 645E EXTS.B R5,R4
|
|
000020D8 343C ADD R3,R4
|
|
000020DA 679E EXTS.B R9,R7
|
|
000020DC 625E EXTS.B R5,R2
|
|
000020DE 3273 CMP/GE R7,R2
|
|
000020E0 8D16 BT/S L1418
|
|
000020E2 7E01 ADD #1,R14
|
|
000020E4 L1422:
|
|
Monochrome 1051 {
|
|
Monochrome 1052 line = bmp[i]<<shift;
|
|
000020E4 6340 MOV.B @R4,R3
|
|
000020E6 6DAE EXTS.B R10,R13
|
|
000020E8 633C EXTU.B R3,R3
|
|
000020EA 43DD SHLD R13,R3
|
|
000020EC 2F31 MOV.W R3,@R15
|
|
Monochrome 1053 screen[0] |= *p;
|
|
Monochrome 1054 if(shift!=8) screen[1] |= *(p+1);
|
|
000020EE 60D3 MOV R13,R0
|
|
000020F0 62C0 MOV.B @R12,R2
|
|
000020F2 8808 CMP/EQ #8,R0
|
|
000020F4 6160 MOV.B @R6,R1
|
|
000020F6 212B OR R2,R1
|
|
000020F8 8D04 BT/S L1423
|
|
000020FA 2610 MOV.B R1,@R6
|
|
000020FC 63E0 MOV.B @R14,R3
|
|
000020FE 8461 MOV.B @(1,R6),R0
|
|
00002100 203B OR R3,R0
|
|
00002102 8061 MOV.B R0,@(1,R6)
|
|
00002104 L1423:
|
|
Monochrome 1055 screen += 16;
|
|
00002104 7610 ADD #16,R6
|
|
00002106 7501 ADD #1,R5
|
|
00002108 635E EXTS.B R5,R3
|
|
0000210A 3373 CMP/GE R7,R3
|
|
0000210C 8FEA BF/S L1422
|
|
0000210E 7401 ADD #1,R4
|
|
00002110 L1418:
|
|
Monochrome 1056 }
|
|
Monochrome 1057 }
|
|
00002110 7F08 ADD #8,R15
|
|
00002112 4F26 LDS.L @R15+,PR
|
|
00002114 69F6 MOV.L @R15+,R9
|
|
00002116 6AF6 MOV.L @R15+,R10
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 100
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002118 6BF6 MOV.L @R15+,R11
|
|
0000211A 6CF6 MOV.L @R15+,R12
|
|
0000211C 6DF6 MOV.L @R15+,R13
|
|
0000211E 000B RTS
|
|
00002120 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1058 #endif
|
|
Monochrome 1059
|
|
Monochrome 1060 #ifdef ML_BMP_8_AND
|
|
Monochrome 1061 void ML_bmp_8_and(const unsigned char *bmp, int x, int y)
|
|
00002122 _ML_bmp_8_and: ; function: ML_bmp_8_and
|
|
; frame size=36
|
|
00002122 2FE6 MOV.L R14,@-R15
|
|
00002124 2FD6 MOV.L R13,@-R15
|
|
00002126 6E63 MOV R6,R14
|
|
00002128 2FC6 MOV.L R12,@-R15
|
|
0000212A 6D53 MOV R5,R13
|
|
0000212C 2FB6 MOV.L R11,@-R15
|
|
Monochrome 1062 {
|
|
Monochrome 1063 unsigned short line;
|
|
Monochrome 1064 char i, shift, begin=0, end=8, *screen, *p=(char*)&line;
|
|
0000212E EB00 MOV #0,R11
|
|
00002130 2FA6 MOV.L R10,@-R15
|
|
00002132 2F96 MOV.L R9,@-R15
|
|
00002134 4F22 STS.L PR,@-R15
|
|
00002136 7FF8 ADD #-8,R15
|
|
00002138 1F41 MOV.L R4,@(4,R15)
|
|
0000213A E408 MOV #8,R4
|
|
Monochrome 1065 if(!bmp || x<0 || x>120 || y<-7 || y>63) return;
|
|
0000213C 53F1 MOV.L @(4,R15),R3
|
|
0000213E 6943 MOV R4,R9
|
|
00002140 2338 TST R3,R3
|
|
00002142 8D45 BT/S L1426
|
|
00002144 6CF3 MOV R15,R12
|
|
00002146 4D11 CMP/PZ R13
|
|
00002148 8B42 BF L1426
|
|
0000214A E278 MOV #120,R2
|
|
0000214C 3D27 CMP/GT R2,R13
|
|
0000214E 893F BT L1426
|
|
00002150 E1F9 MOV #-7,R1
|
|
00002152 3E13 CMP/GE R1,R14
|
|
00002154 8B3C BF L1426
|
|
00002156 E03F MOV #63,R0
|
|
00002158 3E07 CMP/GT R0,R14
|
|
0000215A 8939 BT L1426
|
|
Monochrome 1066 if(y < 0) begin = -y;
|
|
0000215C 4E11 CMP/PZ R14
|
|
0000215E 8D01 BT/S L1427
|
|
Monochrome 1067 if(y > 56) end = 64-y;
|
|
00002160 E338 MOV #56,R3
|
|
00002162 6BEB NEG R14,R11
|
|
00002164 L1427:
|
|
00002164 3E37 CMP/GT R3,R14
|
|
00002166 8F02 BF/S L1428
|
|
Monochrome 1068 shift = 8-(x&7);
|
|
00002168 E307 MOV #7,R3
|
|
0000216A E940 MOV #64,R9
|
|
0000216C 39E8 SUB R14,R9
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 101
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000216E L1428:
|
|
0000216E 23D9 AND R13,R3
|
|
Monochrome 1069 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002170 D21C MOV.L L1717+2,R2 ; _ML_vram_adress
|
|
00002172 6A43 MOV R4,R10
|
|
00002174 420B JSR @R2
|
|
00002176 3A38 SUB R3,R10
|
|
00002178 63BE EXTS.B R11,R3
|
|
0000217A 33EC ADD R14,R3
|
|
0000217C 4308 SHLL2 R3
|
|
0000217E 4308 SHLL2 R3
|
|
00002180 303C ADD R3,R0
|
|
00002182 4D21 SHAR R13
|
|
00002184 53F1 MOV.L @(4,R15),R3
|
|
00002186 6EC3 MOV R12,R14
|
|
00002188 4D21 SHAR R13
|
|
0000218A 4D21 SHAR R13
|
|
0000218C 6603 MOV R0,R6
|
|
0000218E 36DC ADD R13,R6
|
|
Monochrome 1070 for(i=begin ; i<end ; i++)
|
|
00002190 65B3 MOV R11,R5
|
|
00002192 645E EXTS.B R5,R4
|
|
00002194 343C ADD R3,R4
|
|
00002196 679E EXTS.B R9,R7
|
|
00002198 625E EXTS.B R5,R2
|
|
0000219A 3273 CMP/GE R7,R2
|
|
0000219C 8D18 BT/S L1426
|
|
0000219E 7E01 ADD #1,R14
|
|
000021A0 L1430:
|
|
Monochrome 1071 {
|
|
Monochrome 1072 line = ~((unsigned char)~bmp[i]<<shift);
|
|
000021A0 6340 MOV.B @R4,R3
|
|
000021A2 6DAE EXTS.B R10,R13
|
|
000021A4 6337 NOT R3,R3
|
|
000021A6 633C EXTU.B R3,R3
|
|
000021A8 43DD SHLD R13,R3
|
|
000021AA 6337 NOT R3,R3
|
|
000021AC 2F31 MOV.W R3,@R15
|
|
Monochrome 1073 screen[0] &= *p;
|
|
Monochrome 1074 if(shift!=8) screen[1] &= *(p+1);
|
|
000021AE 60D3 MOV R13,R0
|
|
000021B0 62C0 MOV.B @R12,R2
|
|
000021B2 8808 CMP/EQ #8,R0
|
|
000021B4 6160 MOV.B @R6,R1
|
|
000021B6 2129 AND R2,R1
|
|
000021B8 8D04 BT/S L1431
|
|
000021BA 2610 MOV.B R1,@R6
|
|
000021BC 63E0 MOV.B @R14,R3
|
|
000021BE 8461 MOV.B @(1,R6),R0
|
|
000021C0 2039 AND R3,R0
|
|
000021C2 8061 MOV.B R0,@(1,R6)
|
|
000021C4 L1431:
|
|
Monochrome 1075 screen += 16;
|
|
000021C4 7610 ADD #16,R6
|
|
000021C6 7501 ADD #1,R5
|
|
000021C8 635E EXTS.B R5,R3
|
|
000021CA 3373 CMP/GE R7,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 102
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000021CC 8FE8 BF/S L1430
|
|
000021CE 7401 ADD #1,R4
|
|
000021D0 L1426:
|
|
Monochrome 1076 }
|
|
Monochrome 1077 }
|
|
000021D0 7F08 ADD #8,R15
|
|
000021D2 4F26 LDS.L @R15+,PR
|
|
000021D4 69F6 MOV.L @R15+,R9
|
|
000021D6 6AF6 MOV.L @R15+,R10
|
|
000021D8 6BF6 MOV.L @R15+,R11
|
|
000021DA 6CF6 MOV.L @R15+,R12
|
|
000021DC 6DF6 MOV.L @R15+,R13
|
|
000021DE 000B RTS
|
|
000021E0 6EF6 MOV.L @R15+,R14
|
|
000021E2 L1717:
|
|
000021E2 0000 .DATA.W 0
|
|
000021E4 <00000000> .DATA.L _ML_vram_adress
|
|
Monochrome 1078 #endif
|
|
Monochrome 1079
|
|
Monochrome 1080 #ifdef ML_BMP_8_XOR
|
|
Monochrome 1081 void ML_bmp_8_xor(const unsigned char *bmp, int x, int y)
|
|
000021E8 _ML_bmp_8_xor: ; function: ML_bmp_8_xor
|
|
; frame size=40
|
|
000021E8 2FE6 MOV.L R14,@-R15
|
|
Monochrome 1082 {
|
|
Monochrome 1083 unsigned short line;
|
|
Monochrome 1084 char i, shift, begin=0, end=8, *screen, *p=(char*)&line;
|
|
Monochrome 1085 if(!bmp || x<0 || x>120 || y<-7 || y>63) return;
|
|
000021EA 6343 MOV R4,R3
|
|
000021EC 2FD6 MOV.L R13,@-R15
|
|
000021EE 6E63 MOV R6,R14
|
|
000021F0 2FC6 MOV.L R12,@-R15
|
|
000021F2 ED08 MOV #8,R13
|
|
000021F4 2FB6 MOV.L R11,@-R15
|
|
000021F6 2338 TST R3,R3
|
|
000021F8 2FA6 MOV.L R10,@-R15
|
|
000021FA 6B53 MOV R5,R11
|
|
000021FC 2F96 MOV.L R9,@-R15
|
|
000021FE EA00 MOV #0,R10
|
|
00002200 2F86 MOV.L R8,@-R15
|
|
00002202 69D3 MOV R13,R9
|
|
00002204 4F22 STS.L PR,@-R15
|
|
00002206 7FF8 ADD #-8,R15
|
|
00002208 1F41 MOV.L R4,@(4,R15)
|
|
0000220A 8D42 BT/S L1434
|
|
0000220C 6CF3 MOV R15,R12
|
|
0000220E 4B11 CMP/PZ R11
|
|
00002210 8B3F BF L1434
|
|
00002212 E278 MOV #120,R2
|
|
00002214 3B27 CMP/GT R2,R11
|
|
00002216 893C BT L1434
|
|
00002218 E1F9 MOV #-7,R1
|
|
0000221A 3E13 CMP/GE R1,R14
|
|
0000221C 8B39 BF L1434
|
|
0000221E E03F MOV #63,R0
|
|
00002220 3E07 CMP/GT R0,R14
|
|
00002222 8936 BT L1434
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 103
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1086 if(y < 0) begin = -y;
|
|
00002224 4E11 CMP/PZ R14
|
|
00002226 8D01 BT/S L1435
|
|
Monochrome 1087 if(y > 56) end = 64-y;
|
|
00002228 E338 MOV #56,R3
|
|
0000222A 6AEB NEG R14,R10
|
|
0000222C L1435:
|
|
0000222C 3E37 CMP/GT R3,R14
|
|
0000222E 8F02 BF/S L1436
|
|
Monochrome 1088 shift = 8-(x&7);
|
|
00002230 E307 MOV #7,R3
|
|
00002232 E940 MOV #64,R9
|
|
00002234 39E8 SUB R14,R9
|
|
00002236 L1436:
|
|
00002236 23B9 AND R11,R3
|
|
Monochrome 1089 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002238 D255 MOV.L L1718,R2 ; _ML_vram_adress
|
|
0000223A 68D3 MOV R13,R8
|
|
0000223C 420B JSR @R2
|
|
0000223E 3838 SUB R3,R8
|
|
00002240 63AE EXTS.B R10,R3
|
|
00002242 33EC ADD R14,R3
|
|
00002244 4308 SHLL2 R3
|
|
00002246 4308 SHLL2 R3
|
|
00002248 303C ADD R3,R0
|
|
0000224A 4B21 SHAR R11
|
|
0000224C 53F1 MOV.L @(4,R15),R3
|
|
0000224E 679E EXTS.B R9,R7
|
|
00002250 4B21 SHAR R11
|
|
00002252 4B21 SHAR R11
|
|
00002254 6503 MOV R0,R5
|
|
00002256 35BC ADD R11,R5
|
|
Monochrome 1090 for(i=begin ; i<end ; i++)
|
|
00002258 64A3 MOV R10,R4
|
|
0000225A 664E EXTS.B R4,R6
|
|
0000225C 363C ADD R3,R6
|
|
0000225E 6BC3 MOV R12,R11
|
|
00002260 624E EXTS.B R4,R2
|
|
00002262 3273 CMP/GE R7,R2
|
|
00002264 8D15 BT/S L1434
|
|
00002266 7B01 ADD #1,R11
|
|
00002268 L1438:
|
|
Monochrome 1091 {
|
|
Monochrome 1092 line = bmp[i]<<shift;
|
|
00002268 6360 MOV.B @R6,R3
|
|
0000226A 6E8E EXTS.B R8,R14
|
|
0000226C 633C EXTU.B R3,R3
|
|
0000226E 43ED SHLD R14,R3
|
|
00002270 2F31 MOV.W R3,@R15
|
|
Monochrome 1093 screen[0] ^= *p;
|
|
Monochrome 1094 if(shift<8) screen[1] ^= *(p+1);
|
|
00002272 3ED3 CMP/GE R13,R14
|
|
00002274 62C0 MOV.B @R12,R2
|
|
00002276 6150 MOV.B @R5,R1
|
|
00002278 212A XOR R2,R1
|
|
0000227A 8D04 BT/S L1439
|
|
0000227C 2510 MOV.B R1,@R5
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 104
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000227E 63B0 MOV.B @R11,R3
|
|
00002280 8451 MOV.B @(1,R5),R0
|
|
00002282 203A XOR R3,R0
|
|
00002284 8051 MOV.B R0,@(1,R5)
|
|
00002286 L1439:
|
|
Monochrome 1095 screen += 16;
|
|
00002286 7510 ADD #16,R5
|
|
00002288 7401 ADD #1,R4
|
|
0000228A 634E EXTS.B R4,R3
|
|
0000228C 3373 CMP/GE R7,R3
|
|
0000228E 8FEB BF/S L1438
|
|
00002290 7601 ADD #1,R6
|
|
00002292 L1434:
|
|
Monochrome 1096 }
|
|
Monochrome 1097 }
|
|
00002292 7F08 ADD #8,R15
|
|
00002294 4F26 LDS.L @R15+,PR
|
|
00002296 68F6 MOV.L @R15+,R8
|
|
00002298 69F6 MOV.L @R15+,R9
|
|
0000229A 6AF6 MOV.L @R15+,R10
|
|
0000229C 6BF6 MOV.L @R15+,R11
|
|
0000229E 6CF6 MOV.L @R15+,R12
|
|
000022A0 6DF6 MOV.L @R15+,R13
|
|
000022A2 000B RTS
|
|
000022A4 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1098 #endif
|
|
Monochrome 1099
|
|
Monochrome 1100 #ifdef ML_BMP_8_OR_CL
|
|
Monochrome 1101 void ML_bmp_8_or_cl(const unsigned char *bmp, int x, int y)
|
|
000022A6 _ML_bmp_8_or_cl: ; function: ML_bmp_8_or_cl
|
|
; frame size=44
|
|
000022A6 2FE6 MOV.L R14,@-R15
|
|
000022A8 2FD6 MOV.L R13,@-R15
|
|
000022AA 6E63 MOV R6,R14
|
|
000022AC 2FC6 MOV.L R12,@-R15
|
|
000022AE 6D53 MOV R5,R13
|
|
000022B0 2FB6 MOV.L R11,@-R15
|
|
Monochrome 1102 {
|
|
Monochrome 1103 unsigned short line;
|
|
Monochrome 1104 char i, shift, begin=0, end=8, bool1=1, bool2=1, *screen, *p=(char*)&line;
|
|
000022B2 E601 MOV #1,R6
|
|
000022B4 2FA6 MOV.L R10,@-R15
|
|
000022B6 E508 MOV #8,R5
|
|
000022B8 2F96 MOV.L R9,@-R15
|
|
000022BA 6C63 MOV R6,R12
|
|
000022BC 2F86 MOV.L R8,@-R15
|
|
000022BE 6053 MOV R5,R0
|
|
000022C0 4F22 STS.L PR,@-R15
|
|
000022C2 6963 MOV R6,R9
|
|
000022C4 7FF4 ADD #-12,R15
|
|
000022C6 1F41 MOV.L R4,@(4,R15)
|
|
000022C8 80F8 MOV.B R0,@(8,R15)
|
|
000022CA E400 MOV #0,R4
|
|
Monochrome 1105 if(!bmp || x<-7 || x>127 || y<-7 || y>63) return;
|
|
000022CC 53F1 MOV.L @(4,R15),R3
|
|
000022CE 6A43 MOV R4,R10
|
|
000022D0 2338 TST R3,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 105
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000022D2 8D53 BT/S L1442
|
|
000022D4 6BF3 MOV R15,R11
|
|
000022D6 E3F9 MOV #-7,R3
|
|
000022D8 3D33 CMP/GE R3,R13
|
|
000022DA 8B4F BF L1442
|
|
000022DC E17F MOV #127,R1
|
|
000022DE 3D17 CMP/GT R1,R13
|
|
000022E0 894C BT L1442
|
|
000022E2 3E33 CMP/GE R3,R14
|
|
000022E4 8B4A BF L1442
|
|
000022E6 E23F MOV #63,R2
|
|
000022E8 3E27 CMP/GT R2,R14
|
|
000022EA 8947 BT L1442
|
|
Monochrome 1106 if(y < 0) begin = -y;
|
|
000022EC 4E11 CMP/PZ R14
|
|
000022EE 8D01 BT/S L1443
|
|
Monochrome 1107 if(y > 56) end = 64-y;
|
|
000022F0 E238 MOV #56,R2
|
|
000022F2 6AEB NEG R14,R10
|
|
000022F4 L1443:
|
|
000022F4 3E27 CMP/GT R2,R14
|
|
000022F6 8B02 BF L1444
|
|
000022F8 E040 MOV #64,R0
|
|
000022FA 30E8 SUB R14,R0
|
|
000022FC 80F8 MOV.B R0,@(8,R15)
|
|
000022FE L1444:
|
|
Monochrome 1108 shift = 8-(x&7);
|
|
000022FE E307 MOV #7,R3
|
|
00002300 23D9 AND R13,R3
|
|
00002302 6853 MOV R5,R8
|
|
Monochrome 1109 if(x < 0) bool1 = 0;
|
|
00002304 4D11 CMP/PZ R13
|
|
00002306 8D01 BT/S L1445
|
|
00002308 3838 SUB R3,R8
|
|
0000230A 6943 MOV R4,R9
|
|
0000230C L1445:
|
|
Monochrome 1110 if(x>120 || shift==8) bool2 = 0;
|
|
0000230C E378 MOV #120,R3
|
|
0000230E 3D37 CMP/GT R3,R13
|
|
00002310 8902 BT L1447
|
|
00002312 608E EXTS.B R8,R0
|
|
00002314 8808 CMP/EQ #8,R0
|
|
00002316 8B00 BF L1446
|
|
00002318 L1447:
|
|
00002318 6C43 MOV R4,R12
|
|
0000231A L1446:
|
|
Monochrome 1111 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
0000231A D31D MOV.L L1718,R3 ; _ML_vram_adress
|
|
0000231C 430B JSR @R3
|
|
0000231E 0009 NOP
|
|
00002320 53F1 MOV.L @(4,R15),R3
|
|
00002322 62AE EXTS.B R10,R2
|
|
00002324 32EC ADD R14,R2
|
|
00002326 4208 SHLL2 R2
|
|
00002328 4208 SHLL2 R2
|
|
0000232A 302C ADD R2,R0
|
|
0000232C 4D21 SHAR R13
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 106
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000232E 4D21 SHAR R13
|
|
00002330 4D21 SHAR R13
|
|
00002332 6503 MOV R0,R5
|
|
00002334 84F8 MOV.B @(8,R15),R0
|
|
00002336 35DC ADD R13,R5
|
|
Monochrome 1112 for(i=begin ; i<end ; i++)
|
|
00002338 64A3 MOV R10,R4
|
|
0000233A 664E EXTS.B R4,R6
|
|
0000233C 363C ADD R3,R6
|
|
0000233E 6EB3 MOV R11,R14
|
|
00002340 6703 MOV R0,R7
|
|
00002342 624E EXTS.B R4,R2
|
|
00002344 3273 CMP/GE R7,R2
|
|
00002346 8D19 BT/S L1442
|
|
00002348 7E01 ADD #1,R14
|
|
0000234A L1449:
|
|
Monochrome 1113 {
|
|
Monochrome 1114 line = bmp[i]<<shift;
|
|
0000234A 628E EXTS.B R8,R2
|
|
0000234C 6360 MOV.B @R6,R3
|
|
0000234E 633C EXTU.B R3,R3
|
|
00002350 432D SHLD R2,R3
|
|
Monochrome 1115 if(bool1) screen[0] |= *p;
|
|
00002352 629E EXTS.B R9,R2
|
|
00002354 2228 TST R2,R2
|
|
00002356 8D04 BT/S L1450
|
|
00002358 2F31 MOV.W R3,@R15
|
|
0000235A 62B0 MOV.B @R11,R2
|
|
0000235C 6150 MOV.B @R5,R1
|
|
0000235E 212B OR R2,R1
|
|
00002360 2510 MOV.B R1,@R5
|
|
00002362 L1450:
|
|
Monochrome 1116 if(bool2) screen[1] |= *(p+1);
|
|
00002362 63CE EXTS.B R12,R3
|
|
00002364 2338 TST R3,R3
|
|
00002366 8903 BT L1451
|
|
00002368 63E0 MOV.B @R14,R3
|
|
0000236A 8451 MOV.B @(1,R5),R0
|
|
0000236C 203B OR R3,R0
|
|
0000236E 8051 MOV.B R0,@(1,R5)
|
|
00002370 L1451:
|
|
Monochrome 1117 screen += 16;
|
|
00002370 7510 ADD #16,R5
|
|
00002372 7401 ADD #1,R4
|
|
00002374 634E EXTS.B R4,R3
|
|
00002376 3373 CMP/GE R7,R3
|
|
00002378 8FE7 BF/S L1449
|
|
0000237A 7601 ADD #1,R6
|
|
0000237C L1442:
|
|
Monochrome 1118 }
|
|
Monochrome 1119 }
|
|
0000237C 7F0C ADD #12,R15
|
|
0000237E 4F26 LDS.L @R15+,PR
|
|
00002380 68F6 MOV.L @R15+,R8
|
|
00002382 69F6 MOV.L @R15+,R9
|
|
00002384 6AF6 MOV.L @R15+,R10
|
|
00002386 6BF6 MOV.L @R15+,R11
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 107
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002388 6CF6 MOV.L @R15+,R12
|
|
0000238A 6DF6 MOV.L @R15+,R13
|
|
0000238C 000B RTS
|
|
0000238E 6EF6 MOV.L @R15+,R14
|
|
00002390 L1718:
|
|
00002390 <00000000> .DATA.L _ML_vram_adress
|
|
Monochrome 1120 #endif
|
|
Monochrome 1121
|
|
Monochrome 1122 #ifdef ML_BMP_8_AND_CL
|
|
Monochrome 1123 void ML_bmp_8_and_cl(const unsigned char *bmp, int x, int y)
|
|
00002394 _ML_bmp_8_and_cl: ; function: ML_bmp_8_and_cl
|
|
; frame size=44
|
|
00002394 2FE6 MOV.L R14,@-R15
|
|
00002396 6E63 MOV R6,R14
|
|
00002398 2FD6 MOV.L R13,@-R15
|
|
Monochrome 1124 {
|
|
Monochrome 1125 unsigned short line;
|
|
Monochrome 1126 char i, shift, begin=0, end=8, bool1=1, bool2=1, *screen, *p=(char*)&line;
|
|
0000239A E601 MOV #1,R6
|
|
0000239C 2FC6 MOV.L R12,@-R15
|
|
0000239E 6D53 MOV R5,R13
|
|
000023A0 2FB6 MOV.L R11,@-R15
|
|
000023A2 6C63 MOV R6,R12
|
|
000023A4 2FA6 MOV.L R10,@-R15
|
|
000023A6 E508 MOV #8,R5
|
|
000023A8 2F96 MOV.L R9,@-R15
|
|
000023AA 6053 MOV R5,R0
|
|
000023AC 2F86 MOV.L R8,@-R15
|
|
000023AE 6963 MOV R6,R9
|
|
000023B0 4F22 STS.L PR,@-R15
|
|
000023B2 7FF4 ADD #-12,R15
|
|
000023B4 1F41 MOV.L R4,@(4,R15)
|
|
000023B6 E400 MOV #0,R4
|
|
000023B8 80F8 MOV.B R0,@(8,R15)
|
|
000023BA 6A43 MOV R4,R10
|
|
Monochrome 1127 if(!bmp || x<-7 || x>127 || y<-7 || y>63) return;
|
|
000023BC 53F1 MOV.L @(4,R15),R3
|
|
000023BE 2338 TST R3,R3
|
|
000023C0 8D55 BT/S L1454
|
|
000023C2 6BF3 MOV R15,R11
|
|
000023C4 E3F9 MOV #-7,R3
|
|
000023C6 3D33 CMP/GE R3,R13
|
|
000023C8 8B51 BF L1454
|
|
000023CA E17F MOV #127,R1
|
|
000023CC 3D17 CMP/GT R1,R13
|
|
000023CE 894E BT L1454
|
|
000023D0 3E33 CMP/GE R3,R14
|
|
000023D2 8B4C BF L1454
|
|
000023D4 E23F MOV #63,R2
|
|
000023D6 3E27 CMP/GT R2,R14
|
|
000023D8 8949 BT L1454
|
|
Monochrome 1128 if(y < 0) begin = -y;
|
|
000023DA 4E11 CMP/PZ R14
|
|
000023DC 8D01 BT/S L1455
|
|
Monochrome 1129 if(y > 56) end = 64-y;
|
|
000023DE E238 MOV #56,R2
|
|
000023E0 6AEB NEG R14,R10
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 108
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000023E2 L1455:
|
|
000023E2 3E27 CMP/GT R2,R14
|
|
000023E4 8B02 BF L1456
|
|
000023E6 E040 MOV #64,R0
|
|
000023E8 30E8 SUB R14,R0
|
|
000023EA 80F8 MOV.B R0,@(8,R15)
|
|
000023EC L1456:
|
|
Monochrome 1130 shift = 8-(x&7);
|
|
000023EC E307 MOV #7,R3
|
|
000023EE 23D9 AND R13,R3
|
|
000023F0 6853 MOV R5,R8
|
|
Monochrome 1131 if(x < 0) bool1 = 0;
|
|
000023F2 4D11 CMP/PZ R13
|
|
000023F4 8D01 BT/S L1457
|
|
000023F6 3838 SUB R3,R8
|
|
000023F8 6943 MOV R4,R9
|
|
000023FA L1457:
|
|
Monochrome 1132 if(x>120 || shift==8) bool2 = 0;
|
|
000023FA E378 MOV #120,R3
|
|
000023FC 3D37 CMP/GT R3,R13
|
|
000023FE 8902 BT L1459
|
|
00002400 608E EXTS.B R8,R0
|
|
00002402 8808 CMP/EQ #8,R0
|
|
00002404 8B00 BF L1458
|
|
00002406 L1459:
|
|
00002406 6C43 MOV R4,R12
|
|
00002408 L1458:
|
|
Monochrome 1133 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002408 D358 MOV.L L1719,R3 ; _ML_vram_adress
|
|
0000240A 430B JSR @R3
|
|
0000240C 0009 NOP
|
|
0000240E 62AE EXTS.B R10,R2
|
|
00002410 53F1 MOV.L @(4,R15),R3
|
|
00002412 4D21 SHAR R13
|
|
00002414 32EC ADD R14,R2
|
|
00002416 4208 SHLL2 R2
|
|
00002418 4208 SHLL2 R2
|
|
0000241A 302C ADD R2,R0
|
|
0000241C 4D21 SHAR R13
|
|
0000241E 4D21 SHAR R13
|
|
00002420 6503 MOV R0,R5
|
|
00002422 35DC ADD R13,R5
|
|
00002424 84F8 MOV.B @(8,R15),R0
|
|
Monochrome 1134 for(i=begin ; i<end ; i++)
|
|
00002426 64A3 MOV R10,R4
|
|
00002428 664E EXTS.B R4,R6
|
|
0000242A 363C ADD R3,R6
|
|
0000242C 6EB3 MOV R11,R14
|
|
0000242E 6703 MOV R0,R7
|
|
00002430 624E EXTS.B R4,R2
|
|
00002432 3273 CMP/GE R7,R2
|
|
00002434 8D1B BT/S L1454
|
|
00002436 7E01 ADD #1,R14
|
|
00002438 L1461:
|
|
Monochrome 1135 {
|
|
Monochrome 1136 line = ~((unsigned char)~bmp[i]<<shift);
|
|
00002438 6360 MOV.B @R6,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 109
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000243A 628E EXTS.B R8,R2
|
|
0000243C 6337 NOT R3,R3
|
|
0000243E 633C EXTU.B R3,R3
|
|
00002440 432D SHLD R2,R3
|
|
00002442 6337 NOT R3,R3
|
|
Monochrome 1137 if(bool1) screen[0] &= *p;
|
|
00002444 629E EXTS.B R9,R2
|
|
00002446 2228 TST R2,R2
|
|
00002448 8D04 BT/S L1462
|
|
0000244A 2F31 MOV.W R3,@R15
|
|
0000244C 62B0 MOV.B @R11,R2
|
|
0000244E 6150 MOV.B @R5,R1
|
|
00002450 2129 AND R2,R1
|
|
00002452 2510 MOV.B R1,@R5
|
|
00002454 L1462:
|
|
Monochrome 1138 if(bool2) screen[1] &= *(p+1);
|
|
00002454 63CE EXTS.B R12,R3
|
|
00002456 2338 TST R3,R3
|
|
00002458 8903 BT L1463
|
|
0000245A 63E0 MOV.B @R14,R3
|
|
0000245C 8451 MOV.B @(1,R5),R0
|
|
0000245E 2039 AND R3,R0
|
|
00002460 8051 MOV.B R0,@(1,R5)
|
|
00002462 L1463:
|
|
Monochrome 1139 screen += 16;
|
|
00002462 7510 ADD #16,R5
|
|
00002464 7401 ADD #1,R4
|
|
00002466 634E EXTS.B R4,R3
|
|
00002468 3373 CMP/GE R7,R3
|
|
0000246A 8FE5 BF/S L1461
|
|
0000246C 7601 ADD #1,R6
|
|
0000246E L1454:
|
|
Monochrome 1140 }
|
|
Monochrome 1141 }
|
|
0000246E 7F0C ADD #12,R15
|
|
00002470 4F26 LDS.L @R15+,PR
|
|
00002472 68F6 MOV.L @R15+,R8
|
|
00002474 69F6 MOV.L @R15+,R9
|
|
00002476 6AF6 MOV.L @R15+,R10
|
|
00002478 6BF6 MOV.L @R15+,R11
|
|
0000247A 6CF6 MOV.L @R15+,R12
|
|
0000247C 6DF6 MOV.L @R15+,R13
|
|
0000247E 000B RTS
|
|
00002480 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1142 #endif
|
|
Monochrome 1143
|
|
Monochrome 1144 #ifdef ML_BMP_8_XOR_CL
|
|
Monochrome 1145 void ML_bmp_8_xor_cl(const unsigned char *bmp, int x, int y)
|
|
00002482 _ML_bmp_8_xor_cl: ; function: ML_bmp_8_xor_cl
|
|
; frame size=44
|
|
00002482 2FE6 MOV.L R14,@-R15
|
|
00002484 2FD6 MOV.L R13,@-R15
|
|
00002486 6E63 MOV R6,R14
|
|
00002488 2FC6 MOV.L R12,@-R15
|
|
0000248A 6D53 MOV R5,R13
|
|
0000248C 2FB6 MOV.L R11,@-R15
|
|
Monochrome 1146 {
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 110
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1147 unsigned short line;
|
|
Monochrome 1148 char i, shift, begin=0, end=8, bool1=1, bool2=1, *screen, *p=(char*)&line;
|
|
0000248E E601 MOV #1,R6
|
|
00002490 2FA6 MOV.L R10,@-R15
|
|
00002492 E508 MOV #8,R5
|
|
00002494 2F96 MOV.L R9,@-R15
|
|
00002496 6C63 MOV R6,R12
|
|
00002498 2F86 MOV.L R8,@-R15
|
|
0000249A 6053 MOV R5,R0
|
|
0000249C 4F22 STS.L PR,@-R15
|
|
0000249E 6963 MOV R6,R9
|
|
000024A0 7FF4 ADD #-12,R15
|
|
000024A2 1F41 MOV.L R4,@(4,R15)
|
|
000024A4 80F8 MOV.B R0,@(8,R15)
|
|
000024A6 E400 MOV #0,R4
|
|
Monochrome 1149 if(!bmp || x<-7 || x>127 || y<-7 || y>63) return;
|
|
000024A8 53F1 MOV.L @(4,R15),R3
|
|
000024AA 6A43 MOV R4,R10
|
|
000024AC 2338 TST R3,R3
|
|
000024AE 8D53 BT/S L1466
|
|
000024B0 6BF3 MOV R15,R11
|
|
000024B2 E3F9 MOV #-7,R3
|
|
000024B4 3D33 CMP/GE R3,R13
|
|
000024B6 8B4F BF L1466
|
|
000024B8 E17F MOV #127,R1
|
|
000024BA 3D17 CMP/GT R1,R13
|
|
000024BC 894C BT L1466
|
|
000024BE 3E33 CMP/GE R3,R14
|
|
000024C0 8B4A BF L1466
|
|
000024C2 E23F MOV #63,R2
|
|
000024C4 3E27 CMP/GT R2,R14
|
|
000024C6 8947 BT L1466
|
|
Monochrome 1150 if(y < 0) begin = -y;
|
|
000024C8 4E11 CMP/PZ R14
|
|
000024CA 8D01 BT/S L1467
|
|
Monochrome 1151 if(y > 56) end = 64-y;
|
|
000024CC E238 MOV #56,R2
|
|
000024CE 6AEB NEG R14,R10
|
|
000024D0 L1467:
|
|
000024D0 3E27 CMP/GT R2,R14
|
|
000024D2 8B02 BF L1468
|
|
000024D4 E040 MOV #64,R0
|
|
000024D6 30E8 SUB R14,R0
|
|
000024D8 80F8 MOV.B R0,@(8,R15)
|
|
000024DA L1468:
|
|
Monochrome 1152 shift = 8-(x&7);
|
|
000024DA E307 MOV #7,R3
|
|
000024DC 23D9 AND R13,R3
|
|
000024DE 6853 MOV R5,R8
|
|
Monochrome 1153 if(x < 0) bool1 = 0;
|
|
000024E0 4D11 CMP/PZ R13
|
|
000024E2 8D01 BT/S L1469
|
|
000024E4 3838 SUB R3,R8
|
|
000024E6 6943 MOV R4,R9
|
|
000024E8 L1469:
|
|
Monochrome 1154 if(x>120 || shift==8) bool2 = 0;
|
|
000024E8 E378 MOV #120,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 111
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000024EA 3D37 CMP/GT R3,R13
|
|
000024EC 8902 BT L1471
|
|
000024EE 608E EXTS.B R8,R0
|
|
000024F0 8808 CMP/EQ #8,R0
|
|
000024F2 8B00 BF L1470
|
|
000024F4 L1471:
|
|
000024F4 6C43 MOV R4,R12
|
|
000024F6 L1470:
|
|
Monochrome 1155 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
000024F6 D31D MOV.L L1719,R3 ; _ML_vram_adress
|
|
000024F8 430B JSR @R3
|
|
000024FA 0009 NOP
|
|
000024FC 53F1 MOV.L @(4,R15),R3
|
|
000024FE 62AE EXTS.B R10,R2
|
|
00002500 32EC ADD R14,R2
|
|
00002502 4208 SHLL2 R2
|
|
00002504 4208 SHLL2 R2
|
|
00002506 302C ADD R2,R0
|
|
00002508 4D21 SHAR R13
|
|
0000250A 4D21 SHAR R13
|
|
0000250C 4D21 SHAR R13
|
|
0000250E 6503 MOV R0,R5
|
|
00002510 84F8 MOV.B @(8,R15),R0
|
|
00002512 35DC ADD R13,R5
|
|
Monochrome 1156 for(i=begin ; i<end ; i++)
|
|
00002514 64A3 MOV R10,R4
|
|
00002516 664E EXTS.B R4,R6
|
|
00002518 363C ADD R3,R6
|
|
0000251A 6EB3 MOV R11,R14
|
|
0000251C 6703 MOV R0,R7
|
|
0000251E 624E EXTS.B R4,R2
|
|
00002520 3273 CMP/GE R7,R2
|
|
00002522 8D19 BT/S L1466
|
|
00002524 7E01 ADD #1,R14
|
|
00002526 L1473:
|
|
Monochrome 1157 {
|
|
Monochrome 1158 line = bmp[i]<<shift;
|
|
00002526 628E EXTS.B R8,R2
|
|
00002528 6360 MOV.B @R6,R3
|
|
0000252A 633C EXTU.B R3,R3
|
|
0000252C 432D SHLD R2,R3
|
|
Monochrome 1159 if(bool1) screen[0] ^= *p;
|
|
0000252E 629E EXTS.B R9,R2
|
|
00002530 2228 TST R2,R2
|
|
00002532 8D04 BT/S L1474
|
|
00002534 2F31 MOV.W R3,@R15
|
|
00002536 62B0 MOV.B @R11,R2
|
|
00002538 6150 MOV.B @R5,R1
|
|
0000253A 212A XOR R2,R1
|
|
0000253C 2510 MOV.B R1,@R5
|
|
0000253E L1474:
|
|
Monochrome 1160 if(bool2) screen[1] ^= *(p+1);
|
|
0000253E 63CE EXTS.B R12,R3
|
|
00002540 2338 TST R3,R3
|
|
00002542 8903 BT L1475
|
|
00002544 63E0 MOV.B @R14,R3
|
|
00002546 8451 MOV.B @(1,R5),R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 112
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002548 203A XOR R3,R0
|
|
0000254A 8051 MOV.B R0,@(1,R5)
|
|
0000254C L1475:
|
|
Monochrome 1161 screen += 16;
|
|
0000254C 7510 ADD #16,R5
|
|
0000254E 7401 ADD #1,R4
|
|
00002550 634E EXTS.B R4,R3
|
|
00002552 3373 CMP/GE R7,R3
|
|
00002554 8FE7 BF/S L1473
|
|
00002556 7601 ADD #1,R6
|
|
00002558 L1466:
|
|
Monochrome 1162 }
|
|
Monochrome 1163 }
|
|
00002558 7F0C ADD #12,R15
|
|
0000255A 4F26 LDS.L @R15+,PR
|
|
0000255C 68F6 MOV.L @R15+,R8
|
|
0000255E 69F6 MOV.L @R15+,R9
|
|
00002560 6AF6 MOV.L @R15+,R10
|
|
00002562 6BF6 MOV.L @R15+,R11
|
|
00002564 6CF6 MOV.L @R15+,R12
|
|
00002566 6DF6 MOV.L @R15+,R13
|
|
00002568 000B RTS
|
|
0000256A 6EF6 MOV.L @R15+,R14
|
|
0000256C L1719:
|
|
0000256C <00000000> .DATA.L _ML_vram_adress
|
|
Monochrome 1164 #endif
|
|
Monochrome 1165
|
|
Monochrome 1166 #ifdef ML_BMP_16_OR
|
|
Monochrome 1167 void ML_bmp_16_or(const unsigned short *bmp, int x, int y)
|
|
00002570 _ML_bmp_16_or: ; function: ML_bmp_16_or
|
|
; frame size=36
|
|
00002570 2FE6 MOV.L R14,@-R15
|
|
Monochrome 1168 {
|
|
Monochrome 1169 unsigned long line;
|
|
Monochrome 1170 char i, shift, begin=0, end=16, *screen, *p=(char*)&line+1;
|
|
Monochrome 1171 if(!bmp || x<0 || x>112 || y<-15 || y>63) return;
|
|
00002572 6343 MOV R4,R3
|
|
00002574 2FD6 MOV.L R13,@-R15
|
|
00002576 6E63 MOV R6,R14
|
|
00002578 2FC6 MOV.L R12,@-R15
|
|
0000257A 2338 TST R3,R3
|
|
0000257C 2FB6 MOV.L R11,@-R15
|
|
0000257E EC00 MOV #0,R12
|
|
00002580 2FA6 MOV.L R10,@-R15
|
|
00002582 6B53 MOV R5,R11
|
|
00002584 2F96 MOV.L R9,@-R15
|
|
00002586 E910 MOV #16,R9
|
|
00002588 4F22 STS.L PR,@-R15
|
|
0000258A 7FF8 ADD #-8,R15
|
|
0000258C 1F41 MOV.L R4,@(4,R15)
|
|
0000258E 6DF3 MOV R15,R13
|
|
00002590 8D4A BT/S L1478
|
|
00002592 7D01 ADD #1,R13
|
|
00002594 4B11 CMP/PZ R11
|
|
00002596 8B47 BF L1478
|
|
00002598 E270 MOV #112,R2
|
|
0000259A 3B27 CMP/GT R2,R11
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 113
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000259C 8944 BT L1478
|
|
0000259E E1F1 MOV #-15,R1
|
|
000025A0 3E13 CMP/GE R1,R14
|
|
000025A2 8B41 BF L1478
|
|
000025A4 E03F MOV #63,R0
|
|
000025A6 3E07 CMP/GT R0,R14
|
|
000025A8 893E BT L1478
|
|
Monochrome 1172 if(y < 0) begin = -y;
|
|
000025AA 4E11 CMP/PZ R14
|
|
000025AC 8D01 BT/S L1479
|
|
Monochrome 1173 if(y > 48) end = 64-y;
|
|
000025AE E330 MOV #48,R3
|
|
000025B0 6CEB NEG R14,R12
|
|
000025B2 L1479:
|
|
000025B2 3E37 CMP/GT R3,R14
|
|
000025B4 8F02 BF/S L1480
|
|
Monochrome 1174 shift = 8-(x&7);
|
|
000025B6 E307 MOV #7,R3
|
|
000025B8 E940 MOV #64,R9
|
|
000025BA 39E8 SUB R14,R9
|
|
000025BC L1480:
|
|
Monochrome 1175 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
000025BC D285 MOV.L L1720+2,R2 ; _ML_vram_adress
|
|
000025BE 23B9 AND R11,R3
|
|
000025C0 EA08 MOV #8,R10
|
|
000025C2 420B JSR @R2
|
|
000025C4 3A38 SUB R3,R10
|
|
000025C6 63CE EXTS.B R12,R3
|
|
000025C8 33EC ADD R14,R3
|
|
000025CA 4308 SHLL2 R3
|
|
000025CC 4308 SHLL2 R3
|
|
000025CE 303C ADD R3,R0
|
|
000025D0 53F1 MOV.L @(4,R15),R3
|
|
000025D2 679E EXTS.B R9,R7
|
|
000025D4 4B21 SHAR R11
|
|
000025D6 4B21 SHAR R11
|
|
000025D8 4B21 SHAR R11
|
|
000025DA 6403 MOV R0,R4
|
|
000025DC 34BC ADD R11,R4
|
|
Monochrome 1176 for(i=begin ; i<end ; i++)
|
|
000025DE 66C3 MOV R12,R6
|
|
000025E0 656E EXTS.B R6,R5
|
|
000025E2 4500 SHLL R5
|
|
000025E4 353C ADD R3,R5
|
|
000025E6 6BD3 MOV R13,R11
|
|
000025E8 7B01 ADD #1,R11
|
|
000025EA 6CD3 MOV R13,R12
|
|
000025EC 626E EXTS.B R6,R2
|
|
000025EE 3273 CMP/GE R7,R2
|
|
000025F0 8D1A BT/S L1478
|
|
000025F2 7C02 ADD #2,R12
|
|
000025F4 L1482:
|
|
Monochrome 1177 {
|
|
Monochrome 1178 line = bmp[i]<<shift;
|
|
000025F4 6351 MOV.W @R5,R3
|
|
000025F6 6EAE EXTS.B R10,R14
|
|
000025F8 633D EXTU.W R3,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 114
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000025FA 43ED SHLD R14,R3
|
|
000025FC 2F32 MOV.L R3,@R15
|
|
Monochrome 1179 screen[0] |= *p;
|
|
000025FE 62D0 MOV.B @R13,R2
|
|
00002600 6140 MOV.B @R4,R1
|
|
00002602 212B OR R2,R1
|
|
00002604 2410 MOV.B R1,@R4
|
|
Monochrome 1180 screen[1] |= *(p+1);
|
|
00002606 63B0 MOV.B @R11,R3
|
|
00002608 8441 MOV.B @(1,R4),R0
|
|
0000260A 203B OR R3,R0
|
|
0000260C 8041 MOV.B R0,@(1,R4)
|
|
Monochrome 1181 if(shift!=8) screen[2] |= *(p+2);
|
|
0000260E 60E3 MOV R14,R0
|
|
00002610 8808 CMP/EQ #8,R0
|
|
00002612 8903 BT L1483
|
|
00002614 63C0 MOV.B @R12,R3
|
|
00002616 8442 MOV.B @(2,R4),R0
|
|
00002618 203B OR R3,R0
|
|
0000261A 8042 MOV.B R0,@(2,R4)
|
|
0000261C L1483:
|
|
Monochrome 1182 screen += 16;
|
|
0000261C 7410 ADD #16,R4
|
|
0000261E 7601 ADD #1,R6
|
|
00002620 636E EXTS.B R6,R3
|
|
00002622 3373 CMP/GE R7,R3
|
|
00002624 8FE6 BF/S L1482
|
|
00002626 7502 ADD #2,R5
|
|
00002628 L1478:
|
|
Monochrome 1183 }
|
|
Monochrome 1184 }
|
|
00002628 7F08 ADD #8,R15
|
|
0000262A 4F26 LDS.L @R15+,PR
|
|
0000262C 69F6 MOV.L @R15+,R9
|
|
0000262E 6AF6 MOV.L @R15+,R10
|
|
00002630 6BF6 MOV.L @R15+,R11
|
|
00002632 6CF6 MOV.L @R15+,R12
|
|
00002634 6DF6 MOV.L @R15+,R13
|
|
00002636 000B RTS
|
|
00002638 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1185 #endif
|
|
Monochrome 1186
|
|
Monochrome 1187 #ifdef ML_BMP_16_AND
|
|
Monochrome 1188 void ML_bmp_16_and(const unsigned short *bmp, int x, int y)
|
|
0000263A _ML_bmp_16_and: ; function: ML_bmp_16_and
|
|
; frame size=36
|
|
Monochrome 1189 {
|
|
Monochrome 1190 unsigned long line;
|
|
Monochrome 1191 char i, shift, begin=0, end=16, *screen, *p=(char*)&line+1;
|
|
Monochrome 1192 if(!bmp || x<0 || x>112 || y<-15 || y>63) return;
|
|
0000263A 6343 MOV R4,R3
|
|
0000263C 2FE6 MOV.L R14,@-R15
|
|
0000263E 2338 TST R3,R3
|
|
00002640 2FD6 MOV.L R13,@-R15
|
|
00002642 6E63 MOV R6,R14
|
|
00002644 2FC6 MOV.L R12,@-R15
|
|
00002646 EC00 MOV #0,R12
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 115
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002648 2FB6 MOV.L R11,@-R15
|
|
0000264A 6B53 MOV R5,R11
|
|
0000264C 2FA6 MOV.L R10,@-R15
|
|
0000264E 2F96 MOV.L R9,@-R15
|
|
00002650 4F22 STS.L PR,@-R15
|
|
00002652 E910 MOV #16,R9
|
|
00002654 7FF8 ADD #-8,R15
|
|
00002656 6DF3 MOV R15,R13
|
|
00002658 1F41 MOV.L R4,@(4,R15)
|
|
0000265A 8D4C BT/S L1486
|
|
0000265C 7D01 ADD #1,R13
|
|
0000265E 4B11 CMP/PZ R11
|
|
00002660 8B49 BF L1486
|
|
00002662 E270 MOV #112,R2
|
|
00002664 3B27 CMP/GT R2,R11
|
|
00002666 8946 BT L1486
|
|
00002668 E1F1 MOV #-15,R1
|
|
0000266A 3E13 CMP/GE R1,R14
|
|
0000266C 8B43 BF L1486
|
|
0000266E E03F MOV #63,R0
|
|
00002670 3E07 CMP/GT R0,R14
|
|
00002672 8940 BT L1486
|
|
Monochrome 1193 if(y < 0) begin = -y;
|
|
00002674 4E11 CMP/PZ R14
|
|
00002676 8D01 BT/S L1487
|
|
Monochrome 1194 if(y > 48) end = 64-y;
|
|
00002678 E330 MOV #48,R3
|
|
0000267A 6CEB NEG R14,R12
|
|
0000267C L1487:
|
|
0000267C 3E37 CMP/GT R3,R14
|
|
0000267E 8F02 BF/S L1488
|
|
Monochrome 1195 shift = 8-(x&7);
|
|
00002680 E307 MOV #7,R3
|
|
00002682 E940 MOV #64,R9
|
|
00002684 39E8 SUB R14,R9
|
|
00002686 L1488:
|
|
00002686 23B9 AND R11,R3
|
|
Monochrome 1196 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002688 D252 MOV.L L1720+2,R2 ; _ML_vram_adress
|
|
0000268A EA08 MOV #8,R10
|
|
0000268C 420B JSR @R2
|
|
0000268E 3A38 SUB R3,R10
|
|
00002690 63CE EXTS.B R12,R3
|
|
00002692 33EC ADD R14,R3
|
|
00002694 4308 SHLL2 R3
|
|
00002696 4308 SHLL2 R3
|
|
00002698 303C ADD R3,R0
|
|
0000269A 4B21 SHAR R11
|
|
0000269C 53F1 MOV.L @(4,R15),R3
|
|
0000269E 679E EXTS.B R9,R7
|
|
000026A0 4B21 SHAR R11
|
|
000026A2 4B21 SHAR R11
|
|
000026A4 6403 MOV R0,R4
|
|
000026A6 34BC ADD R11,R4
|
|
Monochrome 1197 for(i=begin ; i<end ; i++)
|
|
000026A8 66C3 MOV R12,R6
|
|
000026AA 656E EXTS.B R6,R5
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 116
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000026AC 4500 SHLL R5
|
|
000026AE 353C ADD R3,R5
|
|
000026B0 6BD3 MOV R13,R11
|
|
000026B2 7B01 ADD #1,R11
|
|
000026B4 6CD3 MOV R13,R12
|
|
000026B6 626E EXTS.B R6,R2
|
|
000026B8 3273 CMP/GE R7,R2
|
|
000026BA 8D1C BT/S L1486
|
|
000026BC 7C02 ADD #2,R12
|
|
000026BE L1490:
|
|
Monochrome 1198 {
|
|
Monochrome 1199 line = ~((unsigned short)~bmp[i]<<shift);
|
|
000026BE 6EAE EXTS.B R10,R14
|
|
000026C0 6351 MOV.W @R5,R3
|
|
000026C2 6337 NOT R3,R3
|
|
000026C4 633D EXTU.W R3,R3
|
|
000026C6 43ED SHLD R14,R3
|
|
000026C8 6337 NOT R3,R3
|
|
000026CA 2F32 MOV.L R3,@R15
|
|
Monochrome 1200 screen[0] &= *p;
|
|
000026CC 62D0 MOV.B @R13,R2
|
|
000026CE 6140 MOV.B @R4,R1
|
|
000026D0 2129 AND R2,R1
|
|
000026D2 2410 MOV.B R1,@R4
|
|
Monochrome 1201 screen[1] &= *(p+1);
|
|
000026D4 63B0 MOV.B @R11,R3
|
|
000026D6 8441 MOV.B @(1,R4),R0
|
|
000026D8 2039 AND R3,R0
|
|
000026DA 8041 MOV.B R0,@(1,R4)
|
|
Monochrome 1202 if(shift!=8) screen[2] &= *(p+2);
|
|
000026DC 60E3 MOV R14,R0
|
|
000026DE 8808 CMP/EQ #8,R0
|
|
000026E0 8903 BT L1491
|
|
000026E2 63C0 MOV.B @R12,R3
|
|
000026E4 8442 MOV.B @(2,R4),R0
|
|
000026E6 2039 AND R3,R0
|
|
000026E8 8042 MOV.B R0,@(2,R4)
|
|
000026EA L1491:
|
|
Monochrome 1203 screen += 16;
|
|
000026EA 7410 ADD #16,R4
|
|
000026EC 7601 ADD #1,R6
|
|
000026EE 636E EXTS.B R6,R3
|
|
000026F0 3373 CMP/GE R7,R3
|
|
000026F2 8FE4 BF/S L1490
|
|
000026F4 7502 ADD #2,R5
|
|
000026F6 L1486:
|
|
Monochrome 1204 }
|
|
Monochrome 1205 }
|
|
000026F6 7F08 ADD #8,R15
|
|
000026F8 4F26 LDS.L @R15+,PR
|
|
000026FA 69F6 MOV.L @R15+,R9
|
|
000026FC 6AF6 MOV.L @R15+,R10
|
|
000026FE 6BF6 MOV.L @R15+,R11
|
|
00002700 6CF6 MOV.L @R15+,R12
|
|
00002702 6DF6 MOV.L @R15+,R13
|
|
00002704 000B RTS
|
|
00002706 6EF6 MOV.L @R15+,R14
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 117
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1206 #endif
|
|
Monochrome 1207
|
|
Monochrome 1208 #ifdef ML_BMP_16_XOR
|
|
Monochrome 1209 void ML_bmp_16_xor(const unsigned short *bmp, int x, int y)
|
|
00002708 _ML_bmp_16_xor: ; function: ML_bmp_16_xor
|
|
; frame size=36
|
|
00002708 2FE6 MOV.L R14,@-R15
|
|
Monochrome 1210 {
|
|
Monochrome 1211 unsigned long line;
|
|
Monochrome 1212 char i, shift, begin=0, end=16, *screen, *p=(char*)&line+1;
|
|
Monochrome 1213 if(!bmp || x<0 || x>112 || y<-15 || y>63) return;
|
|
0000270A 6343 MOV R4,R3
|
|
0000270C 2FD6 MOV.L R13,@-R15
|
|
0000270E 6E63 MOV R6,R14
|
|
00002710 2FC6 MOV.L R12,@-R15
|
|
00002712 2338 TST R3,R3
|
|
00002714 2FB6 MOV.L R11,@-R15
|
|
00002716 EC00 MOV #0,R12
|
|
00002718 2FA6 MOV.L R10,@-R15
|
|
0000271A 6B53 MOV R5,R11
|
|
0000271C 2F96 MOV.L R9,@-R15
|
|
0000271E E910 MOV #16,R9
|
|
00002720 4F22 STS.L PR,@-R15
|
|
00002722 7FF8 ADD #-8,R15
|
|
00002724 1F41 MOV.L R4,@(4,R15)
|
|
00002726 6DF3 MOV R15,R13
|
|
00002728 8D4A BT/S L1494
|
|
0000272A 7D01 ADD #1,R13
|
|
0000272C 4B11 CMP/PZ R11
|
|
0000272E 8B47 BF L1494
|
|
00002730 E270 MOV #112,R2
|
|
00002732 3B27 CMP/GT R2,R11
|
|
00002734 8944 BT L1494
|
|
00002736 E1F1 MOV #-15,R1
|
|
00002738 3E13 CMP/GE R1,R14
|
|
0000273A 8B41 BF L1494
|
|
0000273C E03F MOV #63,R0
|
|
0000273E 3E07 CMP/GT R0,R14
|
|
00002740 893E BT L1494
|
|
Monochrome 1214 if(y < 0) begin = -y;
|
|
00002742 4E11 CMP/PZ R14
|
|
00002744 8D01 BT/S L1495
|
|
Monochrome 1215 if(y > 48) end = 64-y;
|
|
00002746 E330 MOV #48,R3
|
|
00002748 6CEB NEG R14,R12
|
|
0000274A L1495:
|
|
0000274A 3E37 CMP/GT R3,R14
|
|
0000274C 8F02 BF/S L1496
|
|
Monochrome 1216 shift = 8-(x&7);
|
|
0000274E E307 MOV #7,R3
|
|
00002750 E940 MOV #64,R9
|
|
00002752 39E8 SUB R14,R9
|
|
00002754 L1496:
|
|
Monochrome 1217 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002754 D21F MOV.L L1720+2,R2 ; _ML_vram_adress
|
|
00002756 23B9 AND R11,R3
|
|
00002758 EA08 MOV #8,R10
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 118
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000275A 420B JSR @R2
|
|
0000275C 3A38 SUB R3,R10
|
|
0000275E 63CE EXTS.B R12,R3
|
|
00002760 33EC ADD R14,R3
|
|
00002762 4308 SHLL2 R3
|
|
00002764 4308 SHLL2 R3
|
|
00002766 303C ADD R3,R0
|
|
00002768 53F1 MOV.L @(4,R15),R3
|
|
0000276A 679E EXTS.B R9,R7
|
|
0000276C 4B21 SHAR R11
|
|
0000276E 4B21 SHAR R11
|
|
00002770 4B21 SHAR R11
|
|
00002772 6403 MOV R0,R4
|
|
00002774 34BC ADD R11,R4
|
|
Monochrome 1218 for(i=begin ; i<end ; i++)
|
|
00002776 66C3 MOV R12,R6
|
|
00002778 656E EXTS.B R6,R5
|
|
0000277A 4500 SHLL R5
|
|
0000277C 353C ADD R3,R5
|
|
0000277E 6BD3 MOV R13,R11
|
|
00002780 7B01 ADD #1,R11
|
|
00002782 6CD3 MOV R13,R12
|
|
00002784 626E EXTS.B R6,R2
|
|
00002786 3273 CMP/GE R7,R2
|
|
00002788 8D1A BT/S L1494
|
|
0000278A 7C02 ADD #2,R12
|
|
0000278C L1498:
|
|
Monochrome 1219 {
|
|
Monochrome 1220 line = bmp[i]<<shift;
|
|
0000278C 6351 MOV.W @R5,R3
|
|
0000278E 6EAE EXTS.B R10,R14
|
|
00002790 633D EXTU.W R3,R3
|
|
00002792 43ED SHLD R14,R3
|
|
00002794 2F32 MOV.L R3,@R15
|
|
Monochrome 1221 screen[0] ^= *p;
|
|
00002796 62D0 MOV.B @R13,R2
|
|
00002798 6140 MOV.B @R4,R1
|
|
0000279A 212A XOR R2,R1
|
|
0000279C 2410 MOV.B R1,@R4
|
|
Monochrome 1222 screen[1] ^= *(p+1);
|
|
0000279E 63B0 MOV.B @R11,R3
|
|
000027A0 8441 MOV.B @(1,R4),R0
|
|
000027A2 203A XOR R3,R0
|
|
000027A4 8041 MOV.B R0,@(1,R4)
|
|
Monochrome 1223 if(shift!=8) screen[2] ^= *(p+2);
|
|
000027A6 60E3 MOV R14,R0
|
|
000027A8 8808 CMP/EQ #8,R0
|
|
000027AA 8903 BT L1499
|
|
000027AC 63C0 MOV.B @R12,R3
|
|
000027AE 8442 MOV.B @(2,R4),R0
|
|
000027B0 203A XOR R3,R0
|
|
000027B2 8042 MOV.B R0,@(2,R4)
|
|
000027B4 L1499:
|
|
Monochrome 1224 screen += 16;
|
|
000027B4 7410 ADD #16,R4
|
|
000027B6 7601 ADD #1,R6
|
|
000027B8 636E EXTS.B R6,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 119
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000027BA 3373 CMP/GE R7,R3
|
|
000027BC 8FE6 BF/S L1498
|
|
000027BE 7502 ADD #2,R5
|
|
000027C0 L1494:
|
|
Monochrome 1225 }
|
|
Monochrome 1226 }
|
|
000027C0 7F08 ADD #8,R15
|
|
000027C2 4F26 LDS.L @R15+,PR
|
|
000027C4 69F6 MOV.L @R15+,R9
|
|
000027C6 6AF6 MOV.L @R15+,R10
|
|
000027C8 6BF6 MOV.L @R15+,R11
|
|
000027CA 6CF6 MOV.L @R15+,R12
|
|
000027CC 6DF6 MOV.L @R15+,R13
|
|
000027CE 000B RTS
|
|
000027D0 6EF6 MOV.L @R15+,R14
|
|
000027D2 L1720:
|
|
000027D2 0000 .DATA.W 0
|
|
000027D4 <00000000> .DATA.L _ML_vram_adress
|
|
Monochrome 1227 #endif
|
|
Monochrome 1228
|
|
Monochrome 1229 #ifdef ML_BMP_16_OR_CL
|
|
Monochrome 1230 void ML_bmp_16_or_cl(const unsigned short *bmp, int x, int y)
|
|
000027D8 _ML_bmp_16_or_cl: ; function: ML_bmp_16_or_cl
|
|
; frame size=48
|
|
000027D8 2FE6 MOV.L R14,@-R15
|
|
Monochrome 1231 {
|
|
Monochrome 1232 unsigned long line;
|
|
Monochrome 1233 char i, shift, begin=0, end=16, bool1=1, bool2=1, bool3=1, *screen, *p=(char*)&line+1;
|
|
000027DA E010 MOV #16,R0
|
|
000027DC 2FD6 MOV.L R13,@-R15
|
|
000027DE 6E53 MOV R5,R14
|
|
000027E0 2FC6 MOV.L R12,@-R15
|
|
000027E2 6D63 MOV R6,R13
|
|
000027E4 2FB6 MOV.L R11,@-R15
|
|
000027E6 E501 MOV #1,R5
|
|
000027E8 2FA6 MOV.L R10,@-R15
|
|
000027EA 2F96 MOV.L R9,@-R15
|
|
000027EC 2F86 MOV.L R8,@-R15
|
|
000027EE 6953 MOV R5,R9
|
|
000027F0 4F22 STS.L PR,@-R15
|
|
000027F2 6B93 MOV R9,R11
|
|
000027F4 7FF0 ADD #-16,R15
|
|
000027F6 6CF3 MOV R15,R12
|
|
000027F8 1F41 MOV.L R4,@(4,R15)
|
|
000027FA E400 MOV #0,R4
|
|
000027FC 80FC MOV.B R0,@(12,R15)
|
|
000027FE 6A43 MOV R4,R10
|
|
00002800 6053 MOV R5,R0
|
|
00002802 80F8 MOV.B R0,@(8,R15)
|
|
Monochrome 1234 if(!bmp || x<-15 || x>127 || y<-15 || y>63) return;
|
|
00002804 53F1 MOV.L @(4,R15),R3
|
|
00002806 2338 TST R3,R3
|
|
00002808 8D65 BT/S L1502
|
|
0000280A 7C01 ADD #1,R12
|
|
0000280C E3F1 MOV #-15,R3
|
|
0000280E 3E33 CMP/GE R3,R14
|
|
00002810 8B61 BF L1502
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 120
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002812 E17F MOV #127,R1
|
|
00002814 3E17 CMP/GT R1,R14
|
|
00002816 895E BT L1502
|
|
00002818 3D33 CMP/GE R3,R13
|
|
0000281A 8B5C BF L1502
|
|
0000281C E23F MOV #63,R2
|
|
0000281E 3D27 CMP/GT R2,R13
|
|
00002820 8959 BT L1502
|
|
Monochrome 1235 if(y < 0) begin = -y;
|
|
00002822 4D11 CMP/PZ R13
|
|
00002824 8D01 BT/S L1503
|
|
Monochrome 1236 if(y > 48) end = 64-y;
|
|
00002826 E230 MOV #48,R2
|
|
00002828 6ADB NEG R13,R10
|
|
0000282A L1503:
|
|
0000282A 3D27 CMP/GT R2,R13
|
|
0000282C 8B02 BF L1504
|
|
0000282E E040 MOV #64,R0
|
|
00002830 30D8 SUB R13,R0
|
|
00002832 80FC MOV.B R0,@(12,R15)
|
|
00002834 L1504:
|
|
Monochrome 1237 shift = 8-(x&7);
|
|
00002834 E307 MOV #7,R3
|
|
00002836 23E9 AND R14,R3
|
|
00002838 E808 MOV #8,R8
|
|
Monochrome 1238 if(x < 0) bool1 = 0;
|
|
0000283A 4E11 CMP/PZ R14
|
|
0000283C 8D01 BT/S L1505
|
|
0000283E 3838 SUB R3,R8
|
|
00002840 6943 MOV R4,R9
|
|
00002842 L1505:
|
|
Monochrome 1239 if(x<-8 || x>119) bool2 = 0;
|
|
00002842 E3F8 MOV #-8,R3
|
|
00002844 3E33 CMP/GE R3,R14
|
|
00002846 8B02 BF L1507
|
|
00002848 E177 MOV #119,R1
|
|
0000284A 3E17 CMP/GT R1,R14
|
|
0000284C 8B01 BF L1506
|
|
0000284E L1507:
|
|
0000284E 6043 MOV R4,R0
|
|
00002850 80F8 MOV.B R0,@(8,R15)
|
|
00002852 L1506:
|
|
Monochrome 1240 if(x>111 || shift==8) bool3 = 0;
|
|
00002852 E36F MOV #111,R3
|
|
00002854 3E37 CMP/GT R3,R14
|
|
00002856 8902 BT L1509
|
|
00002858 608E EXTS.B R8,R0
|
|
0000285A 8808 CMP/EQ #8,R0
|
|
0000285C 8B00 BF L1508
|
|
0000285E L1509:
|
|
0000285E 6B43 MOV R4,R11
|
|
00002860 L1508:
|
|
Monochrome 1241 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002860 D367 MOV.L L1721,R3 ; _ML_vram_adress
|
|
00002862 430B JSR @R3
|
|
00002864 0009 NOP
|
|
00002866 62AE EXTS.B R10,R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 121
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002868 53F1 MOV.L @(4,R15),R3
|
|
0000286A 4E21 SHAR R14
|
|
0000286C 32DC ADD R13,R2
|
|
0000286E 4208 SHLL2 R2
|
|
00002870 4208 SHLL2 R2
|
|
00002872 302C ADD R2,R0
|
|
00002874 4E21 SHAR R14
|
|
00002876 4E21 SHAR R14
|
|
00002878 6403 MOV R0,R4
|
|
0000287A 34EC ADD R14,R4
|
|
0000287C 84FC MOV.B @(12,R15),R0
|
|
Monochrome 1242 for(i=begin ; i<end ; i++)
|
|
0000287E 65A3 MOV R10,R5
|
|
00002880 665E EXTS.B R5,R6
|
|
00002882 4600 SHLL R6
|
|
00002884 363C ADD R3,R6
|
|
00002886 6EC3 MOV R12,R14
|
|
00002888 7E01 ADD #1,R14
|
|
0000288A 6DC3 MOV R12,R13
|
|
0000288C 6703 MOV R0,R7
|
|
0000288E 625E EXTS.B R5,R2
|
|
00002890 3273 CMP/GE R7,R2
|
|
00002892 8D20 BT/S L1502
|
|
00002894 7D02 ADD #2,R13
|
|
00002896 L1511:
|
|
Monochrome 1243 {
|
|
Monochrome 1244 line = bmp[i]<<shift;
|
|
00002896 628E EXTS.B R8,R2
|
|
00002898 6361 MOV.W @R6,R3
|
|
0000289A 633D EXTU.W R3,R3
|
|
0000289C 432D SHLD R2,R3
|
|
Monochrome 1245 if(bool1) screen[0] |= *p;
|
|
0000289E 629E EXTS.B R9,R2
|
|
000028A0 2228 TST R2,R2
|
|
000028A2 8D04 BT/S L1512
|
|
000028A4 2F32 MOV.L R3,@R15
|
|
000028A6 62C0 MOV.B @R12,R2
|
|
000028A8 6140 MOV.B @R4,R1
|
|
000028AA 212B OR R2,R1
|
|
000028AC 2410 MOV.B R1,@R4
|
|
000028AE L1512:
|
|
Monochrome 1246 if(bool2) screen[1] |= *(p+1);
|
|
000028AE 84F8 MOV.B @(8,R15),R0
|
|
000028B0 2008 TST R0,R0
|
|
000028B2 8D04 BT/S L1513
|
|
Monochrome 1247 if(bool3) screen[2] |= *(p+2);
|
|
000028B4 62BE EXTS.B R11,R2
|
|
000028B6 63E0 MOV.B @R14,R3
|
|
000028B8 8441 MOV.B @(1,R4),R0
|
|
000028BA 203B OR R3,R0
|
|
000028BC 8041 MOV.B R0,@(1,R4)
|
|
000028BE L1513:
|
|
000028BE 2228 TST R2,R2
|
|
000028C0 8903 BT L1514
|
|
000028C2 63D0 MOV.B @R13,R3
|
|
000028C4 8442 MOV.B @(2,R4),R0
|
|
000028C6 203B OR R3,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 122
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000028C8 8042 MOV.B R0,@(2,R4)
|
|
000028CA L1514:
|
|
Monochrome 1248 screen += 16;
|
|
000028CA 7410 ADD #16,R4
|
|
000028CC 7501 ADD #1,R5
|
|
000028CE 635E EXTS.B R5,R3
|
|
000028D0 3373 CMP/GE R7,R3
|
|
000028D2 8FE0 BF/S L1511
|
|
000028D4 7602 ADD #2,R6
|
|
000028D6 L1502:
|
|
Monochrome 1249 }
|
|
Monochrome 1250 }
|
|
000028D6 7F10 ADD #16,R15
|
|
000028D8 4F26 LDS.L @R15+,PR
|
|
000028DA 68F6 MOV.L @R15+,R8
|
|
000028DC 69F6 MOV.L @R15+,R9
|
|
000028DE 6AF6 MOV.L @R15+,R10
|
|
000028E0 6BF6 MOV.L @R15+,R11
|
|
000028E2 6CF6 MOV.L @R15+,R12
|
|
000028E4 6DF6 MOV.L @R15+,R13
|
|
000028E6 000B RTS
|
|
000028E8 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1251 #endif
|
|
Monochrome 1252
|
|
Monochrome 1253 #ifdef ML_BMP_16_AND_CL
|
|
Monochrome 1254 void ML_bmp_16_and_cl(const unsigned short *bmp, int x, int y)
|
|
000028EA _ML_bmp_16_and_cl: ; function: ML_bmp_16_and_cl
|
|
; frame size=48
|
|
Monochrome 1255 {
|
|
Monochrome 1256 unsigned long line;
|
|
Monochrome 1257 char i, shift, begin=0, end=16, bool1=1, bool2=1, bool3=1, *screen, *p=(char*)&line+1;
|
|
000028EA E010 MOV #16,R0
|
|
000028EC 2FE6 MOV.L R14,@-R15
|
|
000028EE 6E53 MOV R5,R14
|
|
000028F0 2FD6 MOV.L R13,@-R15
|
|
000028F2 E501 MOV #1,R5
|
|
000028F4 2FC6 MOV.L R12,@-R15
|
|
000028F6 6D63 MOV R6,R13
|
|
000028F8 2FB6 MOV.L R11,@-R15
|
|
000028FA 2FA6 MOV.L R10,@-R15
|
|
000028FC 2F96 MOV.L R9,@-R15
|
|
000028FE 6953 MOV R5,R9
|
|
00002900 2F86 MOV.L R8,@-R15
|
|
00002902 6B93 MOV R9,R11
|
|
00002904 4F22 STS.L PR,@-R15
|
|
00002906 7FF0 ADD #-16,R15
|
|
00002908 1F41 MOV.L R4,@(4,R15)
|
|
0000290A 6CF3 MOV R15,R12
|
|
0000290C 80FC MOV.B R0,@(12,R15)
|
|
0000290E E400 MOV #0,R4
|
|
00002910 6A43 MOV R4,R10
|
|
00002912 6053 MOV R5,R0
|
|
00002914 80F8 MOV.B R0,@(8,R15)
|
|
Monochrome 1258 if(!bmp || x<-15 || x>127 || y<-15 || y>63) return;
|
|
00002916 53F1 MOV.L @(4,R15),R3
|
|
00002918 2338 TST R3,R3
|
|
0000291A 8D67 BT/S L1517
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 123
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000291C 7C01 ADD #1,R12
|
|
0000291E E3F1 MOV #-15,R3
|
|
00002920 3E33 CMP/GE R3,R14
|
|
00002922 8B63 BF L1517
|
|
00002924 E17F MOV #127,R1
|
|
00002926 3E17 CMP/GT R1,R14
|
|
00002928 8960 BT L1517
|
|
0000292A 3D33 CMP/GE R3,R13
|
|
0000292C 8B5E BF L1517
|
|
0000292E E23F MOV #63,R2
|
|
00002930 3D27 CMP/GT R2,R13
|
|
00002932 895B BT L1517
|
|
Monochrome 1259 if(y < 0) begin = -y;
|
|
00002934 4D11 CMP/PZ R13
|
|
00002936 8D01 BT/S L1518
|
|
Monochrome 1260 if(y > 48) end = 64-y;
|
|
00002938 E230 MOV #48,R2
|
|
0000293A 6ADB NEG R13,R10
|
|
0000293C L1518:
|
|
0000293C 3D27 CMP/GT R2,R13
|
|
0000293E 8B02 BF L1519
|
|
00002940 E040 MOV #64,R0
|
|
00002942 30D8 SUB R13,R0
|
|
00002944 80FC MOV.B R0,@(12,R15)
|
|
00002946 L1519:
|
|
Monochrome 1261 shift = 8-(x&7);
|
|
00002946 E307 MOV #7,R3
|
|
00002948 23E9 AND R14,R3
|
|
0000294A E808 MOV #8,R8
|
|
Monochrome 1262 if(x < 0) bool1 = 0;
|
|
0000294C 4E11 CMP/PZ R14
|
|
0000294E 8D01 BT/S L1520
|
|
00002950 3838 SUB R3,R8
|
|
00002952 6943 MOV R4,R9
|
|
00002954 L1520:
|
|
Monochrome 1263 if(x<-8 || x>119) bool2 = 0;
|
|
00002954 E3F8 MOV #-8,R3
|
|
00002956 3E33 CMP/GE R3,R14
|
|
00002958 8B02 BF L1522
|
|
0000295A E177 MOV #119,R1
|
|
0000295C 3E17 CMP/GT R1,R14
|
|
0000295E 8B01 BF L1521
|
|
00002960 L1522:
|
|
00002960 6043 MOV R4,R0
|
|
00002962 80F8 MOV.B R0,@(8,R15)
|
|
00002964 L1521:
|
|
Monochrome 1264 if(x>111 || shift==8) bool3 = 0;
|
|
00002964 E36F MOV #111,R3
|
|
00002966 3E37 CMP/GT R3,R14
|
|
00002968 8902 BT L1524
|
|
0000296A 608E EXTS.B R8,R0
|
|
0000296C 8808 CMP/EQ #8,R0
|
|
0000296E 8B00 BF L1523
|
|
00002970 L1524:
|
|
00002970 6B43 MOV R4,R11
|
|
00002972 L1523:
|
|
Monochrome 1265 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 124
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002972 D323 MOV.L L1721,R3 ; _ML_vram_adress
|
|
00002974 430B JSR @R3
|
|
00002976 0009 NOP
|
|
00002978 53F1 MOV.L @(4,R15),R3
|
|
0000297A 62AE EXTS.B R10,R2
|
|
0000297C 32DC ADD R13,R2
|
|
0000297E 4208 SHLL2 R2
|
|
00002980 4208 SHLL2 R2
|
|
00002982 302C ADD R2,R0
|
|
00002984 4E21 SHAR R14
|
|
00002986 4E21 SHAR R14
|
|
00002988 4E21 SHAR R14
|
|
0000298A 6403 MOV R0,R4
|
|
0000298C 84FC MOV.B @(12,R15),R0
|
|
0000298E 34EC ADD R14,R4
|
|
Monochrome 1266 for(i=begin ; i<end ; i++)
|
|
00002990 65A3 MOV R10,R5
|
|
00002992 665E EXTS.B R5,R6
|
|
00002994 4600 SHLL R6
|
|
00002996 363C ADD R3,R6
|
|
00002998 6EC3 MOV R12,R14
|
|
0000299A 7E01 ADD #1,R14
|
|
0000299C 6DC3 MOV R12,R13
|
|
0000299E 6703 MOV R0,R7
|
|
000029A0 625E EXTS.B R5,R2
|
|
000029A2 3273 CMP/GE R7,R2
|
|
000029A4 8D22 BT/S L1517
|
|
000029A6 7D02 ADD #2,R13
|
|
000029A8 L1526:
|
|
Monochrome 1267 {
|
|
Monochrome 1268 line = ~((unsigned short)~bmp[i]<<shift);
|
|
000029A8 6361 MOV.W @R6,R3
|
|
000029AA 628E EXTS.B R8,R2
|
|
000029AC 6337 NOT R3,R3
|
|
000029AE 633D EXTU.W R3,R3
|
|
000029B0 432D SHLD R2,R3
|
|
000029B2 6337 NOT R3,R3
|
|
Monochrome 1269 if(bool1) screen[0] &= *p;
|
|
000029B4 629E EXTS.B R9,R2
|
|
000029B6 2228 TST R2,R2
|
|
000029B8 8D04 BT/S L1527
|
|
000029BA 2F32 MOV.L R3,@R15
|
|
000029BC 62C0 MOV.B @R12,R2
|
|
000029BE 6140 MOV.B @R4,R1
|
|
000029C0 2129 AND R2,R1
|
|
000029C2 2410 MOV.B R1,@R4
|
|
000029C4 L1527:
|
|
Monochrome 1270 if(bool2) screen[1] &= *(p+1);
|
|
000029C4 84F8 MOV.B @(8,R15),R0
|
|
000029C6 2008 TST R0,R0
|
|
000029C8 8D04 BT/S L1528
|
|
Monochrome 1271 if(bool3) screen[2] &= *(p+2);
|
|
000029CA 62BE EXTS.B R11,R2
|
|
000029CC 63E0 MOV.B @R14,R3
|
|
000029CE 8441 MOV.B @(1,R4),R0
|
|
000029D0 2039 AND R3,R0
|
|
000029D2 8041 MOV.B R0,@(1,R4)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 125
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000029D4 L1528:
|
|
000029D4 2228 TST R2,R2
|
|
000029D6 8903 BT L1529
|
|
000029D8 63D0 MOV.B @R13,R3
|
|
000029DA 8442 MOV.B @(2,R4),R0
|
|
000029DC 2039 AND R3,R0
|
|
000029DE 8042 MOV.B R0,@(2,R4)
|
|
000029E0 L1529:
|
|
Monochrome 1272 screen += 16;
|
|
000029E0 7410 ADD #16,R4
|
|
000029E2 7501 ADD #1,R5
|
|
000029E4 635E EXTS.B R5,R3
|
|
000029E6 3373 CMP/GE R7,R3
|
|
000029E8 8FDE BF/S L1526
|
|
000029EA 7602 ADD #2,R6
|
|
000029EC L1517:
|
|
Monochrome 1273 }
|
|
Monochrome 1274 }
|
|
000029EC 7F10 ADD #16,R15
|
|
000029EE 4F26 LDS.L @R15+,PR
|
|
000029F0 68F6 MOV.L @R15+,R8
|
|
000029F2 69F6 MOV.L @R15+,R9
|
|
000029F4 6AF6 MOV.L @R15+,R10
|
|
000029F6 6BF6 MOV.L @R15+,R11
|
|
000029F8 6CF6 MOV.L @R15+,R12
|
|
000029FA 6DF6 MOV.L @R15+,R13
|
|
000029FC 000B RTS
|
|
000029FE 6EF6 MOV.L @R15+,R14
|
|
00002A00 L1721:
|
|
00002A00 <00000000> .DATA.L _ML_vram_adress
|
|
Monochrome 1275 #endif
|
|
Monochrome 1276
|
|
Monochrome 1277 #ifdef ML_BMP_16_XOR_CL
|
|
Monochrome 1278 void ML_bmp_16_xor_cl(const unsigned short *bmp, int x, int y)
|
|
00002A04 _ML_bmp_16_xor_cl: ; function: ML_bmp_16_xor_cl
|
|
; frame size=48
|
|
00002A04 2FE6 MOV.L R14,@-R15
|
|
Monochrome 1279 {
|
|
Monochrome 1280 unsigned long line;
|
|
Monochrome 1281 char i, shift, begin=0, end=16, bool1=1, bool2=1, bool3=1, *screen, *p=(char*)&line+1;
|
|
00002A06 E010 MOV #16,R0
|
|
00002A08 2FD6 MOV.L R13,@-R15
|
|
00002A0A 6E53 MOV R5,R14
|
|
00002A0C 2FC6 MOV.L R12,@-R15
|
|
00002A0E 6D63 MOV R6,R13
|
|
00002A10 2FB6 MOV.L R11,@-R15
|
|
00002A12 E501 MOV #1,R5
|
|
00002A14 2FA6 MOV.L R10,@-R15
|
|
00002A16 2F96 MOV.L R9,@-R15
|
|
00002A18 2F86 MOV.L R8,@-R15
|
|
00002A1A 6953 MOV R5,R9
|
|
00002A1C 4F22 STS.L PR,@-R15
|
|
00002A1E 6B93 MOV R9,R11
|
|
00002A20 7FF0 ADD #-16,R15
|
|
00002A22 6CF3 MOV R15,R12
|
|
00002A24 1F41 MOV.L R4,@(4,R15)
|
|
00002A26 E400 MOV #0,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 126
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002A28 80FC MOV.B R0,@(12,R15)
|
|
00002A2A 6A43 MOV R4,R10
|
|
00002A2C 6053 MOV R5,R0
|
|
00002A2E 80F8 MOV.B R0,@(8,R15)
|
|
Monochrome 1282 if(!bmp || x<-15 || x>127 || y<-15 || y>63) return;
|
|
00002A30 53F1 MOV.L @(4,R15),R3
|
|
00002A32 2338 TST R3,R3
|
|
00002A34 8D65 BT/S L1532
|
|
00002A36 7C01 ADD #1,R12
|
|
00002A38 E3F1 MOV #-15,R3
|
|
00002A3A 3E33 CMP/GE R3,R14
|
|
00002A3C 8B61 BF L1532
|
|
00002A3E E17F MOV #127,R1
|
|
00002A40 3E17 CMP/GT R1,R14
|
|
00002A42 895E BT L1532
|
|
00002A44 3D33 CMP/GE R3,R13
|
|
00002A46 8B5C BF L1532
|
|
00002A48 E23F MOV #63,R2
|
|
00002A4A 3D27 CMP/GT R2,R13
|
|
00002A4C 8959 BT L1532
|
|
Monochrome 1283 if(y < 0) begin = -y;
|
|
00002A4E 4D11 CMP/PZ R13
|
|
00002A50 8D01 BT/S L1533
|
|
Monochrome 1284 if(y > 48) end = 64-y;
|
|
00002A52 E230 MOV #48,R2
|
|
00002A54 6ADB NEG R13,R10
|
|
00002A56 L1533:
|
|
00002A56 3D27 CMP/GT R2,R13
|
|
00002A58 8B02 BF L1534
|
|
00002A5A E040 MOV #64,R0
|
|
00002A5C 30D8 SUB R13,R0
|
|
00002A5E 80FC MOV.B R0,@(12,R15)
|
|
00002A60 L1534:
|
|
Monochrome 1285 shift = 8-(x&7);
|
|
00002A60 E307 MOV #7,R3
|
|
00002A62 23E9 AND R14,R3
|
|
00002A64 E808 MOV #8,R8
|
|
Monochrome 1286 if(x < 0) bool1 = 0;
|
|
00002A66 4E11 CMP/PZ R14
|
|
00002A68 8D01 BT/S L1535
|
|
00002A6A 3838 SUB R3,R8
|
|
00002A6C 6943 MOV R4,R9
|
|
00002A6E L1535:
|
|
Monochrome 1287 if(x<-8 || x>119) bool2 = 0;
|
|
00002A6E E3F8 MOV #-8,R3
|
|
00002A70 3E33 CMP/GE R3,R14
|
|
00002A72 8B02 BF L1537
|
|
00002A74 E177 MOV #119,R1
|
|
00002A76 3E17 CMP/GT R1,R14
|
|
00002A78 8B01 BF L1536
|
|
00002A7A L1537:
|
|
00002A7A 6043 MOV R4,R0
|
|
00002A7C 80F8 MOV.B R0,@(8,R15)
|
|
00002A7E L1536:
|
|
Monochrome 1288 if(x>111 || shift==8) bool3 = 0;
|
|
00002A7E E36F MOV #111,R3
|
|
00002A80 3E37 CMP/GT R3,R14
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 127
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002A82 8902 BT L1539
|
|
00002A84 608E EXTS.B R8,R0
|
|
00002A86 8808 CMP/EQ #8,R0
|
|
00002A88 8B00 BF L1538
|
|
00002A8A L1539:
|
|
00002A8A 6B43 MOV R4,R11
|
|
00002A8C L1538:
|
|
Monochrome 1289 screen = ML_vram_adress()+(y+begin<<4)+(x>>3);
|
|
00002A8C D349 MOV.L L1722+2,R3 ; _ML_vram_adress
|
|
00002A8E 430B JSR @R3
|
|
00002A90 0009 NOP
|
|
00002A92 62AE EXTS.B R10,R2
|
|
00002A94 53F1 MOV.L @(4,R15),R3
|
|
00002A96 4E21 SHAR R14
|
|
00002A98 32DC ADD R13,R2
|
|
00002A9A 4208 SHLL2 R2
|
|
00002A9C 4208 SHLL2 R2
|
|
00002A9E 302C ADD R2,R0
|
|
00002AA0 4E21 SHAR R14
|
|
00002AA2 4E21 SHAR R14
|
|
00002AA4 6403 MOV R0,R4
|
|
00002AA6 34EC ADD R14,R4
|
|
00002AA8 84FC MOV.B @(12,R15),R0
|
|
Monochrome 1290 for(i=begin ; i<end ; i++)
|
|
00002AAA 65A3 MOV R10,R5
|
|
00002AAC 665E EXTS.B R5,R6
|
|
00002AAE 4600 SHLL R6
|
|
00002AB0 363C ADD R3,R6
|
|
00002AB2 6EC3 MOV R12,R14
|
|
00002AB4 7E01 ADD #1,R14
|
|
00002AB6 6DC3 MOV R12,R13
|
|
00002AB8 6703 MOV R0,R7
|
|
00002ABA 625E EXTS.B R5,R2
|
|
00002ABC 3273 CMP/GE R7,R2
|
|
00002ABE 8D20 BT/S L1532
|
|
00002AC0 7D02 ADD #2,R13
|
|
00002AC2 L1541:
|
|
Monochrome 1291 {
|
|
Monochrome 1292 line = bmp[i]<<shift;
|
|
00002AC2 628E EXTS.B R8,R2
|
|
00002AC4 6361 MOV.W @R6,R3
|
|
00002AC6 633D EXTU.W R3,R3
|
|
00002AC8 432D SHLD R2,R3
|
|
Monochrome 1293 if(bool1) screen[0] ^= *p;
|
|
00002ACA 629E EXTS.B R9,R2
|
|
00002ACC 2228 TST R2,R2
|
|
00002ACE 8D04 BT/S L1542
|
|
00002AD0 2F32 MOV.L R3,@R15
|
|
00002AD2 62C0 MOV.B @R12,R2
|
|
00002AD4 6140 MOV.B @R4,R1
|
|
00002AD6 212A XOR R2,R1
|
|
00002AD8 2410 MOV.B R1,@R4
|
|
00002ADA L1542:
|
|
Monochrome 1294 if(bool2) screen[1] ^= *(p+1);
|
|
00002ADA 84F8 MOV.B @(8,R15),R0
|
|
00002ADC 2008 TST R0,R0
|
|
00002ADE 8D04 BT/S L1543
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 128
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1295 if(bool3) screen[2] ^= *(p+2);
|
|
00002AE0 62BE EXTS.B R11,R2
|
|
00002AE2 63E0 MOV.B @R14,R3
|
|
00002AE4 8441 MOV.B @(1,R4),R0
|
|
00002AE6 203A XOR R3,R0
|
|
00002AE8 8041 MOV.B R0,@(1,R4)
|
|
00002AEA L1543:
|
|
00002AEA 2228 TST R2,R2
|
|
00002AEC 8903 BT L1544
|
|
00002AEE 63D0 MOV.B @R13,R3
|
|
00002AF0 8442 MOV.B @(2,R4),R0
|
|
00002AF2 203A XOR R3,R0
|
|
00002AF4 8042 MOV.B R0,@(2,R4)
|
|
00002AF6 L1544:
|
|
Monochrome 1296 screen += 16;
|
|
00002AF6 7410 ADD #16,R4
|
|
00002AF8 7501 ADD #1,R5
|
|
00002AFA 635E EXTS.B R5,R3
|
|
00002AFC 3373 CMP/GE R7,R3
|
|
00002AFE 8FE0 BF/S L1541
|
|
00002B00 7602 ADD #2,R6
|
|
00002B02 L1532:
|
|
Monochrome 1297 }
|
|
Monochrome 1298 }
|
|
00002B02 7F10 ADD #16,R15
|
|
00002B04 4F26 LDS.L @R15+,PR
|
|
00002B06 68F6 MOV.L @R15+,R8
|
|
00002B08 69F6 MOV.L @R15+,R9
|
|
00002B0A 6AF6 MOV.L @R15+,R10
|
|
00002B0C 6BF6 MOV.L @R15+,R11
|
|
00002B0E 6CF6 MOV.L @R15+,R12
|
|
00002B10 6DF6 MOV.L @R15+,R13
|
|
00002B12 000B RTS
|
|
00002B14 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1299 #endif
|
|
Monochrome 1300
|
|
Monochrome 1301
|
|
Monochrome 1302 #ifdef ML_BMP_OR_ZOOM
|
|
Monochrome 1303 void ML_bmp_or_zoom(const unsigned char *bmp, int x, int y, int width, int height, float zoom_w, float zoo
|
|
+m_h)
|
|
00002B16 _ML_bmp_or_zoom: ; function: ML_bmp_or_zoom
|
|
; frame size=80
|
|
; used runtime library name:
|
|
; __divls, __muls, __stoi, __lts
|
|
00002B16 E054 MOV #84,R0
|
|
Monochrome 1304 {
|
|
Monochrome 1305 int i, j, iz, jz, width_z, height_z, nb_width, i3, bit, x_screen, pixel;
|
|
Monochrome 1306 int zoom_w14, zoom_h14;
|
|
Monochrome 1307 int begin_x, end_x, begin_y, end_y;
|
|
Monochrome 1308 char* vram = ML_vram_adress();
|
|
00002B18 D326 MOV.L L1722+2,R3 ; _ML_vram_adress
|
|
00002B1A 2FE6 MOV.L R14,@-R15
|
|
00002B1C 2FD6 MOV.L R13,@-R15
|
|
00002B1E 6E53 MOV R5,R14
|
|
00002B20 2FC6 MOV.L R12,@-R15
|
|
00002B22 2FB6 MOV.L R11,@-R15
|
|
00002B24 2FA6 MOV.L R10,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 129
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002B26 6A63 MOV R6,R10
|
|
00002B28 2F96 MOV.L R9,@-R15
|
|
00002B2A 2F86 MOV.L R8,@-R15
|
|
00002B2C 4F22 STS.L PR,@-R15
|
|
00002B2E 4F12 STS.L MACL,@-R15
|
|
00002B30 7FD4 ADD #-44,R15
|
|
00002B32 1F41 MOV.L R4,@(4,R15)
|
|
00002B34 2F72 MOV.L R7,@R15
|
|
00002B36 0DFE MOV.L @(R0,R15),R13
|
|
00002B38 E058 MOV #88,R0
|
|
00002B3A 430B JSR @R3
|
|
00002B3C 0CFE MOV.L @(R0,R15),R12
|
|
00002B3E 1F09 MOV.L R0,@(36,R15)
|
|
Monochrome 1309
|
|
Monochrome 1310 if (!bmp) return;
|
|
00002B40 53F1 MOV.L @(4,R15),R3
|
|
00002B42 2338 TST R3,R3
|
|
00002B44 8B01 BF L1723
|
|
00002B46 A0AC BRA L1546
|
|
00002B48 0009 NOP
|
|
00002B4A L1723:
|
|
Monochrome 1311 if (zoom_h < 0) zoom_h = 0;
|
|
00002B4A 61C3 MOV R12,R1
|
|
00002B4C D31A MOV.L L1722+6,R3 ; __lts
|
|
00002B4E 430B JSR @R3
|
|
00002B50 E000 MOV #0,R0
|
|
00002B52 8800 CMP/EQ #0,R0
|
|
00002B54 8D01 BT/S L1547
|
|
Monochrome 1312 if (zoom_w < 0) zoom_w = 0;
|
|
00002B56 61D3 MOV R13,R1
|
|
00002B58 EC00 MOV #0,R12
|
|
00002B5A L1547:
|
|
00002B5A D217 MOV.L L1722+6,R2 ; __lts
|
|
00002B5C 420B JSR @R2
|
|
00002B5E E000 MOV #0,R0
|
|
00002B60 8800 CMP/EQ #0,R0
|
|
00002B62 8900 BT L1548
|
|
00002B64 ED00 MOV #0,R13
|
|
00002B66 L1548:
|
|
Monochrome 1313 zoom_w14 = zoom_w * 16384;
|
|
00002B66 D015 MOV.L L1722+10,R0; H'46800000
|
|
00002B68 D315 MOV.L L1722+14,R3; __muls
|
|
00002B6A 430B JSR @R3
|
|
00002B6C 61D3 MOV R13,R1
|
|
00002B6E D215 MOV.L L1722+18,R2; __stoi
|
|
00002B70 420B JSR @R2
|
|
00002B72 0009 NOP
|
|
00002B74 1F03 MOV.L R0,@(12,R15)
|
|
Monochrome 1314 zoom_h14 = zoom_h * 16384;
|
|
00002B76 D011 MOV.L L1722+10,R0; H'46800000
|
|
00002B78 D311 MOV.L L1722+14,R3; __muls
|
|
00002B7A 430B JSR @R3
|
|
00002B7C 61C3 MOV R12,R1
|
|
00002B7E D211 MOV.L L1722+18,R2; __stoi
|
|
00002B80 420B JSR @R2
|
|
00002B82 0009 NOP
|
|
00002B84 1F02 MOV.L R0,@(8,R15)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 130
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1315 width_z = width * zoom_w14 >> 14 ;
|
|
00002B86 E1F2 MOV #-14,R1
|
|
00002B88 53F3 MOV.L @(12,R15),R3
|
|
Monochrome 1316 height_z = height * zoom_h14 >> 14;
|
|
00002B8A E050 MOV #80,R0
|
|
00002B8C 62F2 MOV.L @R15,R2
|
|
00002B8E 0237 MUL.L R3,R2
|
|
00002B90 00FE MOV.L @(R0,R15),R0
|
|
00002B92 E3F2 MOV #-14,R3
|
|
00002B94 041A STS MACL,R4
|
|
00002B96 441C SHAD R1,R4
|
|
00002B98 51F2 MOV.L @(8,R15),R1
|
|
Monochrome 1317 nb_width = width + 7 >> 3;
|
|
00002B9A 7207 ADD #7,R2
|
|
00002B9C 0017 MUL.L R1,R0
|
|
00002B9E 4221 SHAR R2
|
|
00002BA0 071A STS MACL,R7
|
|
00002BA2 473C SHAD R3,R7
|
|
00002BA4 4221 SHAR R2
|
|
00002BA6 4221 SHAR R2
|
|
Monochrome 1318
|
|
Monochrome 1319 if (x < 0) begin_x = -x;
|
|
00002BA8 4E11 CMP/PZ R14
|
|
00002BAA 8D0D BT/S L1549
|
|
00002BAC 1F27 MOV.L R2,@(28,R15)
|
|
00002BAE A00C BRA L1550
|
|
00002BB0 66EB NEG R14,R6
|
|
00002BB2 L1722:
|
|
00002BB2 0000 .DATA.W 0
|
|
00002BB4 <00000000> .DATA.L _ML_vram_adress
|
|
00002BB8 <00000000> .DATA.L __lts
|
|
00002BBC 46800000 .DATA.L H'46800000
|
|
00002BC0 <00000000> .DATA.L __muls
|
|
00002BC4 <00000000> .DATA.L __stoi
|
|
00002BC8 L1549:
|
|
Monochrome 1320 else begin_x = 0;
|
|
00002BC8 E600 MOV #0,R6
|
|
00002BCA L1550:
|
|
Monochrome 1321 if (x+width_z > 128) end_x = 128-x;
|
|
00002BCA 63E3 MOV R14,R3
|
|
00002BCC 9574 MOV.W L1724,R5 ; H'0080
|
|
00002BCE 334C ADD R4,R3
|
|
00002BD0 3357 CMP/GT R5,R3
|
|
00002BD2 8B03 BF L1551
|
|
00002BD4 6353 MOV R5,R3
|
|
00002BD6 33E8 SUB R14,R3
|
|
00002BD8 A001 BRA L1552
|
|
00002BDA 1F3A MOV.L R3,@(40,R15)
|
|
00002BDC L1551:
|
|
Monochrome 1322 else end_x = width_z;
|
|
00002BDC 1F4A MOV.L R4,@(40,R15)
|
|
00002BDE L1552:
|
|
Monochrome 1323 if (y < 0) begin_y = -y;
|
|
00002BDE 4A11 CMP/PZ R10
|
|
00002BE0 8D03 BT/S L1553
|
|
Monochrome 1324 else begin_y = 0;
|
|
Monochrome 1325 if (y+height_z > 64) end_y = 64-y;
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 131
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002BE2 E440 MOV #64,R4
|
|
00002BE4 62AB NEG R10,R2
|
|
00002BE6 A002 BRA L1554
|
|
00002BE8 1F28 MOV.L R2,@(32,R15)
|
|
00002BEA L1553:
|
|
00002BEA E100 MOV #0,R1
|
|
00002BEC 1F18 MOV.L R1,@(32,R15)
|
|
00002BEE L1554:
|
|
00002BEE 63A3 MOV R10,R3
|
|
00002BF0 337C ADD R7,R3
|
|
00002BF2 3347 CMP/GT R4,R3
|
|
00002BF4 8F03 BF/S L1555
|
|
Monochrome 1326 else end_y = height_z;
|
|
Monochrome 1327
|
|
Monochrome 1328 for (iz=begin_x; iz<end_x; iz++)
|
|
00002BF6 6863 MOV R6,R8
|
|
00002BF8 6C43 MOV R4,R12
|
|
00002BFA A001 BRA L1556
|
|
00002BFC 3CA8 SUB R10,R12
|
|
00002BFE L1555:
|
|
00002BFE 6C73 MOV R7,R12
|
|
00002C00 L1556:
|
|
00002C00 69E3 MOV R14,R9
|
|
00002C02 398C ADD R8,R9
|
|
00002C04 9E59 MOV.W L1724+2,R14; H'4000
|
|
00002C06 E30E MOV #14,R3
|
|
00002C08 ED07 MOV #7,R13
|
|
00002C0A 6B63 MOV R6,R11
|
|
00002C0C A046 BRA L1557
|
|
00002C0E 4B3C SHAD R3,R11
|
|
00002C10 L1558:
|
|
Monochrome 1329 {
|
|
Monochrome 1330 i = (iz << 14) / zoom_w14;
|
|
00002C10 D32A MOV.L L1724+4,R3 ; __divls
|
|
00002C12 61B3 MOV R11,R1
|
|
00002C14 430B JSR @R3
|
|
00002C16 50F3 MOV.L @(12,R15),R0
|
|
00002C18 6403 MOV R0,R4
|
|
Monochrome 1331 i3 = i >> 3;
|
|
00002C1A 6303 MOV R0,R3
|
|
00002C1C 4321 SHAR R3
|
|
00002C1E 4321 SHAR R3
|
|
00002C20 4321 SHAR R3
|
|
Monochrome 1332 bit = 0x80 >> (i & 7);
|
|
00002C22 24D9 AND R13,R4
|
|
00002C24 1F36 MOV.L R3,@(24,R15)
|
|
00002C26 6253 MOV R5,R2
|
|
00002C28 644B NEG R4,R4
|
|
00002C2A 424C SHAD R4,R2
|
|
00002C2C 1F25 MOV.L R2,@(20,R15)
|
|
00002C2E 67A3 MOV R10,R7
|
|
Monochrome 1333 x_screen = x+iz;
|
|
00002C30 2F92 MOV.L R9,@R15
|
|
00002C32 6193 MOV R9,R1
|
|
Monochrome 1334
|
|
Monochrome 1335 for (jz=begin_y; jz<end_y; jz++)
|
|
00002C34 54F8 MOV.L @(32,R15),R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 132
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002C36 E30E MOV #14,R3
|
|
00002C38 374C ADD R4,R7
|
|
00002C3A 4708 SHLL2 R7
|
|
00002C3C 4708 SHLL2 R7
|
|
00002C3E 4121 SHAR R1
|
|
00002C40 4121 SHAR R1
|
|
00002C42 4121 SHAR R1
|
|
00002C44 371C ADD R1,R7
|
|
00002C46 6643 MOV R4,R6
|
|
00002C48 51F9 MOV.L @(36,R15),R1
|
|
00002C4A 6293 MOV R9,R2
|
|
00002C4C 371C ADD R1,R7
|
|
00002C4E 463C SHAD R3,R6
|
|
00002C50 22D9 AND R13,R2
|
|
00002C52 622B NEG R2,R2
|
|
00002C54 6053 MOV R5,R0
|
|
00002C56 402C SHAD R2,R0
|
|
00002C58 34C3 CMP/GE R12,R4
|
|
00002C5A 8D1C BT/S L1559
|
|
00002C5C 1F04 MOV.L R0,@(16,R15)
|
|
00002C5E L1560:
|
|
Monochrome 1336 {
|
|
Monochrome 1337 j = (jz << 14) / zoom_h14;
|
|
00002C5E 6163 MOV R6,R1
|
|
00002C60 D316 MOV.L L1724+4,R3 ; __divls
|
|
00002C62 430B JSR @R3
|
|
00002C64 50F2 MOV.L @(8,R15),R0
|
|
00002C66 2F02 MOV.L R0,@R15
|
|
Monochrome 1338 pixel = bmp[i3 + nb_width * j] & bit;
|
|
00002C68 53F7 MOV.L @(28,R15),R3
|
|
00002C6A 0037 MUL.L R3,R0
|
|
00002C6C 51F6 MOV.L @(24,R15),R1
|
|
00002C6E 001A STS MACL,R0
|
|
00002C70 53F1 MOV.L @(4,R15),R3
|
|
00002C72 301C ADD R1,R0
|
|
00002C74 013C MOV.B @(R0,R3),R1
|
|
00002C76 611C EXTU.B R1,R1
|
|
00002C78 53F5 MOV.L @(20,R15),R3
|
|
00002C7A 2139 AND R3,R1
|
|
Monochrome 1339
|
|
Monochrome 1340 if (pixel != 0) vram[(y+jz<<4)+(x_screen>>3)] |= 128>>(x_screen&7);
|
|
00002C7C 6313 MOV R1,R3
|
|
00002C7E 2338 TST R3,R3
|
|
00002C80 8D04 BT/S L1561
|
|
00002C82 2F12 MOV.L R1,@R15
|
|
00002C84 53F4 MOV.L @(16,R15),R3
|
|
00002C86 6270 MOV.B @R7,R2
|
|
00002C88 223B OR R3,R2
|
|
00002C8A 2720 MOV.B R2,@R7
|
|
00002C8C L1561:
|
|
00002C8C 7401 ADD #1,R4
|
|
00002C8E 7710 ADD #16,R7
|
|
00002C90 34C3 CMP/GE R12,R4
|
|
00002C92 8FE4 BF/S L1560
|
|
00002C94 36EC ADD R14,R6
|
|
00002C96 L1559:
|
|
00002C96 7801 ADD #1,R8
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 133
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002C98 7901 ADD #1,R9
|
|
00002C9A 3BEC ADD R14,R11
|
|
00002C9C L1557:
|
|
00002C9C 52FA MOV.L @(40,R15),R2
|
|
00002C9E 3823 CMP/GE R2,R8
|
|
00002CA0 8BB6 BF L1558
|
|
00002CA2 L1546:
|
|
Monochrome 1341 }
|
|
Monochrome 1342 }
|
|
Monochrome 1343 }
|
|
00002CA2 7F2C ADD #44,R15
|
|
00002CA4 4F16 LDS.L @R15+,MACL
|
|
00002CA6 4F26 LDS.L @R15+,PR
|
|
00002CA8 68F6 MOV.L @R15+,R8
|
|
00002CAA 69F6 MOV.L @R15+,R9
|
|
00002CAC 6AF6 MOV.L @R15+,R10
|
|
00002CAE 6BF6 MOV.L @R15+,R11
|
|
00002CB0 6CF6 MOV.L @R15+,R12
|
|
00002CB2 6DF6 MOV.L @R15+,R13
|
|
00002CB4 000B RTS
|
|
00002CB6 6EF6 MOV.L @R15+,R14
|
|
00002CB8 L1724:
|
|
00002CB8 0080 .DATA.W H'0080
|
|
00002CBA 4000 .DATA.W H'4000
|
|
00002CBC <00000000> .DATA.L __divls
|
|
Monochrome 1344 #endif
|
|
Monochrome 1345
|
|
Monochrome 1346 #ifdef ML_BMP_AND_ZOOM
|
|
Monochrome 1347 void ML_bmp_and_zoom(const unsigned char *bmp, int x, int y, int width, int height, float zoom_w, float zo
|
|
+om_h)
|
|
00002CC0 _ML_bmp_and_zoom: ; function: ML_bmp_and_zoom
|
|
; frame size=80
|
|
; used runtime library name:
|
|
; __divls, __muls, __stoi, __lts
|
|
00002CC0 2FE6 MOV.L R14,@-R15
|
|
00002CC2 E054 MOV #84,R0
|
|
Monochrome 1348 {
|
|
Monochrome 1349 int i, j, iz, jz, width_z, height_z, nb_width, i3, bit, x_screen, pixel;
|
|
Monochrome 1350 int zoom_w14, zoom_h14;
|
|
Monochrome 1351 int begin_x, end_x, begin_y, end_y;
|
|
Monochrome 1352 char* vram = ML_vram_adress();
|
|
00002CC4 D338 MOV.L L1725+4,R3 ; _ML_vram_adress
|
|
00002CC6 6E53 MOV R5,R14
|
|
00002CC8 2FD6 MOV.L R13,@-R15
|
|
00002CCA 2FC6 MOV.L R12,@-R15
|
|
00002CCC 2FB6 MOV.L R11,@-R15
|
|
00002CCE 2FA6 MOV.L R10,@-R15
|
|
00002CD0 2F96 MOV.L R9,@-R15
|
|
00002CD2 6A63 MOV R6,R10
|
|
00002CD4 2F86 MOV.L R8,@-R15
|
|
00002CD6 4F22 STS.L PR,@-R15
|
|
00002CD8 4F12 STS.L MACL,@-R15
|
|
00002CDA 7FD4 ADD #-44,R15
|
|
00002CDC 1F41 MOV.L R4,@(4,R15)
|
|
00002CDE 2F72 MOV.L R7,@R15
|
|
00002CE0 0DFE MOV.L @(R0,R15),R13
|
|
00002CE2 E058 MOV #88,R0
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 134
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002CE4 430B JSR @R3
|
|
00002CE6 0CFE MOV.L @(R0,R15),R12
|
|
00002CE8 1F09 MOV.L R0,@(36,R15)
|
|
Monochrome 1353
|
|
Monochrome 1354 if (!bmp) return;
|
|
00002CEA 53F1 MOV.L @(4,R15),R3
|
|
00002CEC 2338 TST R3,R3
|
|
00002CEE 8B01 BF L1726
|
|
00002CF0 A0B1 BRA L1563
|
|
00002CF2 0009 NOP
|
|
00002CF4 L1726:
|
|
Monochrome 1355 if (zoom_h < 0) zoom_h = 0;
|
|
00002CF4 D32D MOV.L L1725+8,R3 ; __lts
|
|
00002CF6 61C3 MOV R12,R1
|
|
00002CF8 430B JSR @R3
|
|
00002CFA E000 MOV #0,R0
|
|
00002CFC 8800 CMP/EQ #0,R0
|
|
00002CFE 8D01 BT/S L1564
|
|
Monochrome 1356 if (zoom_w < 0) zoom_w = 0;
|
|
00002D00 61D3 MOV R13,R1
|
|
00002D02 EC00 MOV #0,R12
|
|
00002D04 L1564:
|
|
00002D04 D229 MOV.L L1725+8,R2 ; __lts
|
|
00002D06 420B JSR @R2
|
|
00002D08 E000 MOV #0,R0
|
|
00002D0A 8800 CMP/EQ #0,R0
|
|
00002D0C 8900 BT L1565
|
|
00002D0E ED00 MOV #0,R13
|
|
00002D10 L1565:
|
|
Monochrome 1357 zoom_w14 = zoom_w * 16384;
|
|
00002D10 D027 MOV.L L1725+12,R0; H'46800000
|
|
00002D12 D328 MOV.L L1725+16,R3; __muls
|
|
00002D14 430B JSR @R3
|
|
00002D16 61D3 MOV R13,R1
|
|
00002D18 D227 MOV.L L1725+20,R2; __stoi
|
|
00002D1A 420B JSR @R2
|
|
00002D1C 0009 NOP
|
|
00002D1E 1F03 MOV.L R0,@(12,R15)
|
|
Monochrome 1358 zoom_h14 = zoom_h * 16384;
|
|
00002D20 D023 MOV.L L1725+12,R0; H'46800000
|
|
00002D22 D324 MOV.L L1725+16,R3; __muls
|
|
00002D24 430B JSR @R3
|
|
00002D26 61C3 MOV R12,R1
|
|
00002D28 D223 MOV.L L1725+20,R2; __stoi
|
|
00002D2A 420B JSR @R2
|
|
00002D2C 0009 NOP
|
|
Monochrome 1359 width_z = width * zoom_w14 >> 14 ;
|
|
00002D2E E1F2 MOV #-14,R1
|
|
00002D30 1F02 MOV.L R0,@(8,R15)
|
|
Monochrome 1360 height_z = height * zoom_h14 >> 14;
|
|
00002D32 E050 MOV #80,R0
|
|
00002D34 53F3 MOV.L @(12,R15),R3
|
|
00002D36 62F2 MOV.L @R15,R2
|
|
00002D38 00FE MOV.L @(R0,R15),R0
|
|
00002D3A 0237 MUL.L R3,R2
|
|
00002D3C 041A STS MACL,R4
|
|
00002D3E 441C SHAD R1,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 135
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002D40 51F2 MOV.L @(8,R15),R1
|
|
00002D42 E3F2 MOV #-14,R3
|
|
00002D44 0017 MUL.L R1,R0
|
|
Monochrome 1361 nb_width = width + 7 >> 3;
|
|
00002D46 7207 ADD #7,R2
|
|
00002D48 071A STS MACL,R7
|
|
00002D4A 473C SHAD R3,R7
|
|
00002D4C 4221 SHAR R2
|
|
00002D4E 4221 SHAR R2
|
|
00002D50 4221 SHAR R2
|
|
Monochrome 1362
|
|
Monochrome 1363 if (x < 0) begin_x = -x;
|
|
00002D52 4E11 CMP/PZ R14
|
|
00002D54 8D02 BT/S L1566
|
|
00002D56 1F27 MOV.L R2,@(28,R15)
|
|
00002D58 A001 BRA L1567
|
|
00002D5A 66EB NEG R14,R6
|
|
00002D5C L1566:
|
|
Monochrome 1364 else begin_x = 0;
|
|
00002D5C E600 MOV #0,R6
|
|
00002D5E L1567:
|
|
Monochrome 1365 if (x+width_z > 128) end_x = 128-x;
|
|
00002D5E 63E3 MOV R14,R3
|
|
00002D60 9520 MOV.W L1725,R5 ; H'0080
|
|
00002D62 334C ADD R4,R3
|
|
00002D64 3357 CMP/GT R5,R3
|
|
00002D66 8B03 BF L1568
|
|
00002D68 6353 MOV R5,R3
|
|
00002D6A 33E8 SUB R14,R3
|
|
00002D6C A001 BRA L1569
|
|
00002D6E 1F3A MOV.L R3,@(40,R15)
|
|
00002D70 L1568:
|
|
Monochrome 1366 else end_x = width_z;
|
|
00002D70 1F4A MOV.L R4,@(40,R15)
|
|
00002D72 L1569:
|
|
Monochrome 1367 if (y < 0) begin_y = -y;
|
|
00002D72 4A11 CMP/PZ R10
|
|
00002D74 8D03 BT/S L1570
|
|
Monochrome 1368 else begin_y = 0;
|
|
Monochrome 1369 if (y+height_z > 64) end_y = 64-y;
|
|
00002D76 E440 MOV #64,R4
|
|
00002D78 62AB NEG R10,R2
|
|
00002D7A A002 BRA L1571
|
|
00002D7C 1F28 MOV.L R2,@(32,R15)
|
|
00002D7E L1570:
|
|
00002D7E E100 MOV #0,R1
|
|
00002D80 1F18 MOV.L R1,@(32,R15)
|
|
00002D82 L1571:
|
|
00002D82 63A3 MOV R10,R3
|
|
00002D84 337C ADD R7,R3
|
|
00002D86 3347 CMP/GT R4,R3
|
|
00002D88 8F03 BF/S L1572
|
|
Monochrome 1370 else end_y = height_z;
|
|
Monochrome 1371
|
|
Monochrome 1372 for (iz=begin_x; iz<end_x; iz++)
|
|
00002D8A 6863 MOV R6,R8
|
|
00002D8C 6C43 MOV R4,R12
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 136
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002D8E A001 BRA L1573
|
|
00002D90 3CA8 SUB R10,R12
|
|
00002D92 L1572:
|
|
00002D92 6C73 MOV R7,R12
|
|
00002D94 L1573:
|
|
00002D94 69E3 MOV R14,R9
|
|
00002D96 398C ADD R8,R9
|
|
00002D98 9E05 MOV.W L1725+2,R14; H'4000
|
|
00002D9A E30E MOV #14,R3
|
|
00002D9C ED07 MOV #7,R13
|
|
00002D9E 6B63 MOV R6,R11
|
|
00002DA0 A056 BRA L1574
|
|
00002DA2 4B3C SHAD R3,R11
|
|
00002DA4 L1725:
|
|
00002DA4 0080 .DATA.W H'0080
|
|
00002DA6 4000 .DATA.W H'4000
|
|
00002DA8 <00000000> .DATA.L _ML_vram_adress
|
|
00002DAC <00000000> .DATA.L __lts
|
|
00002DB0 46800000 .DATA.L H'46800000
|
|
00002DB4 <00000000> .DATA.L __muls
|
|
00002DB8 <00000000> .DATA.L __stoi
|
|
00002DBC L1575:
|
|
Monochrome 1373 {
|
|
Monochrome 1374 i = (iz << 14) / zoom_w14;
|
|
00002DBC D352 MOV.L L1727,R3 ; __divls
|
|
00002DBE 61B3 MOV R11,R1
|
|
00002DC0 430B JSR @R3
|
|
00002DC2 50F3 MOV.L @(12,R15),R0
|
|
00002DC4 6403 MOV R0,R4
|
|
Monochrome 1375 i3 = i >> 3;
|
|
00002DC6 6303 MOV R0,R3
|
|
00002DC8 4321 SHAR R3
|
|
00002DCA 4321 SHAR R3
|
|
00002DCC 4321 SHAR R3
|
|
Monochrome 1376 bit = 0x80 >> (i & 7);
|
|
00002DCE 24D9 AND R13,R4
|
|
00002DD0 1F36 MOV.L R3,@(24,R15)
|
|
00002DD2 6253 MOV R5,R2
|
|
00002DD4 644B NEG R4,R4
|
|
00002DD6 424C SHAD R4,R2
|
|
00002DD8 1F25 MOV.L R2,@(20,R15)
|
|
00002DDA 67A3 MOV R10,R7
|
|
Monochrome 1377 x_screen = x+iz;
|
|
00002DDC 2F92 MOV.L R9,@R15
|
|
00002DDE 6193 MOV R9,R1
|
|
Monochrome 1378
|
|
Monochrome 1379 for (jz=begin_y; jz<end_y; jz++)
|
|
00002DE0 54F8 MOV.L @(32,R15),R4
|
|
00002DE2 E30E MOV #14,R3
|
|
00002DE4 374C ADD R4,R7
|
|
00002DE6 4708 SHLL2 R7
|
|
00002DE8 4708 SHLL2 R7
|
|
00002DEA 4121 SHAR R1
|
|
00002DEC 4121 SHAR R1
|
|
00002DEE 4121 SHAR R1
|
|
00002DF0 371C ADD R1,R7
|
|
00002DF2 6643 MOV R4,R6
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 137
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002DF4 51F9 MOV.L @(36,R15),R1
|
|
00002DF6 6293 MOV R9,R2
|
|
00002DF8 371C ADD R1,R7
|
|
00002DFA 463C SHAD R3,R6
|
|
00002DFC 22D9 AND R13,R2
|
|
00002DFE 622B NEG R2,R2
|
|
00002E00 6053 MOV R5,R0
|
|
00002E02 402C SHAD R2,R0
|
|
00002E04 6007 NOT R0,R0
|
|
00002E06 62F3 MOV R15,R2
|
|
00002E08 7210 ADD #16,R2
|
|
00002E0A 34C3 CMP/GE R12,R4
|
|
00002E0C 8D1D BT/S L1576
|
|
00002E0E 2200 MOV.B R0,@R2
|
|
00002E10 L1577:
|
|
Monochrome 1380 {
|
|
Monochrome 1381 j = (jz << 14) / zoom_h14;
|
|
00002E10 D33D MOV.L L1727,R3 ; __divls
|
|
00002E12 6163 MOV R6,R1
|
|
00002E14 430B JSR @R3
|
|
00002E16 50F2 MOV.L @(8,R15),R0
|
|
00002E18 2F02 MOV.L R0,@R15
|
|
Monochrome 1382 pixel = bmp[i3 + nb_width * j] & bit;
|
|
00002E1A 53F7 MOV.L @(28,R15),R3
|
|
00002E1C 51F6 MOV.L @(24,R15),R1
|
|
00002E1E 0037 MUL.L R3,R0
|
|
00002E20 53F1 MOV.L @(4,R15),R3
|
|
00002E22 001A STS MACL,R0
|
|
00002E24 301C ADD R1,R0
|
|
00002E26 013C MOV.B @(R0,R3),R1
|
|
00002E28 53F5 MOV.L @(20,R15),R3
|
|
00002E2A 611C EXTU.B R1,R1
|
|
00002E2C 2139 AND R3,R1
|
|
Monochrome 1383 if (pixel == 0) vram[(y+jz<<4)+(x_screen>>3)] &= ~(128>>(x_screen&7));
|
|
00002E2E 6313 MOV R1,R3
|
|
00002E30 2338 TST R3,R3
|
|
00002E32 8F05 BF/S L1578
|
|
00002E34 2F12 MOV.L R1,@R15
|
|
00002E36 E010 MOV #16,R0
|
|
00002E38 6270 MOV.B @R7,R2
|
|
00002E3A 03FC MOV.B @(R0,R15),R3
|
|
00002E3C 2239 AND R3,R2
|
|
00002E3E 2720 MOV.B R2,@R7
|
|
00002E40 L1578:
|
|
00002E40 7401 ADD #1,R4
|
|
00002E42 7710 ADD #16,R7
|
|
00002E44 34C3 CMP/GE R12,R4
|
|
00002E46 8FE3 BF/S L1577
|
|
00002E48 36EC ADD R14,R6
|
|
00002E4A L1576:
|
|
00002E4A 7801 ADD #1,R8
|
|
00002E4C 7901 ADD #1,R9
|
|
00002E4E 3BEC ADD R14,R11
|
|
00002E50 L1574:
|
|
00002E50 52FA MOV.L @(40,R15),R2
|
|
00002E52 3823 CMP/GE R2,R8
|
|
00002E54 8BB2 BF L1575
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 138
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002E56 L1563:
|
|
Monochrome 1384 }
|
|
Monochrome 1385 }
|
|
Monochrome 1386 }
|
|
00002E56 7F2C ADD #44,R15
|
|
00002E58 4F16 LDS.L @R15+,MACL
|
|
00002E5A 4F26 LDS.L @R15+,PR
|
|
00002E5C 68F6 MOV.L @R15+,R8
|
|
00002E5E 69F6 MOV.L @R15+,R9
|
|
00002E60 6AF6 MOV.L @R15+,R10
|
|
00002E62 6BF6 MOV.L @R15+,R11
|
|
00002E64 6CF6 MOV.L @R15+,R12
|
|
00002E66 6DF6 MOV.L @R15+,R13
|
|
00002E68 000B RTS
|
|
00002E6A 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1387 #endif
|
|
Monochrome 1388
|
|
Monochrome 1389 #ifdef ML_BMP_XOR_ZOOM
|
|
Monochrome 1390 void ML_bmp_xor_zoom(const unsigned char *bmp, int x, int y, int width, int height, float zoom_w, float zo
|
|
+om_h)
|
|
00002E6C _ML_bmp_xor_zoom: ; function: ML_bmp_xor_zoom
|
|
; frame size=80
|
|
; used runtime library name:
|
|
; __divls, __muls, __stoi, __lts
|
|
00002E6C 2FE6 MOV.L R14,@-R15
|
|
00002E6E E054 MOV #84,R0
|
|
Monochrome 1391 {
|
|
Monochrome 1392 int i, j, iz, jz, width_z, height_z, nb_width, i3, bit, x_screen, pixel;
|
|
Monochrome 1393 int zoom_w14, zoom_h14;
|
|
Monochrome 1394 int begin_x, end_x, begin_y, end_y;
|
|
Monochrome 1395 char* vram = ML_vram_adress();
|
|
00002E70 D326 MOV.L L1727+4,R3 ; _ML_vram_adress
|
|
00002E72 6E53 MOV R5,R14
|
|
00002E74 2FD6 MOV.L R13,@-R15
|
|
00002E76 2FC6 MOV.L R12,@-R15
|
|
00002E78 2FB6 MOV.L R11,@-R15
|
|
00002E7A 2FA6 MOV.L R10,@-R15
|
|
00002E7C 2F96 MOV.L R9,@-R15
|
|
00002E7E 6A63 MOV R6,R10
|
|
00002E80 2F86 MOV.L R8,@-R15
|
|
00002E82 4F22 STS.L PR,@-R15
|
|
00002E84 4F12 STS.L MACL,@-R15
|
|
00002E86 7FD4 ADD #-44,R15
|
|
00002E88 1F41 MOV.L R4,@(4,R15)
|
|
00002E8A 2F72 MOV.L R7,@R15
|
|
00002E8C 0DFE MOV.L @(R0,R15),R13
|
|
00002E8E E058 MOV #88,R0
|
|
00002E90 430B JSR @R3
|
|
00002E92 0CFE MOV.L @(R0,R15),R12
|
|
00002E94 1F09 MOV.L R0,@(36,R15)
|
|
Monochrome 1396
|
|
Monochrome 1397 if (!bmp) return;
|
|
00002E96 53F1 MOV.L @(4,R15),R3
|
|
00002E98 2338 TST R3,R3
|
|
00002E9A 8B01 BF L1728
|
|
00002E9C A0AD BRA L1580
|
|
00002E9E 0009 NOP
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 139
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002EA0 L1728:
|
|
Monochrome 1398 if (zoom_h < 0) zoom_h = 0;
|
|
00002EA0 D31B MOV.L L1727+8,R3 ; __lts
|
|
00002EA2 61C3 MOV R12,R1
|
|
00002EA4 430B JSR @R3
|
|
00002EA6 E000 MOV #0,R0
|
|
00002EA8 8800 CMP/EQ #0,R0
|
|
00002EAA 8D01 BT/S L1581
|
|
Monochrome 1399 if (zoom_w < 0) zoom_w = 0;
|
|
00002EAC 61D3 MOV R13,R1
|
|
00002EAE EC00 MOV #0,R12
|
|
00002EB0 L1581:
|
|
00002EB0 D217 MOV.L L1727+8,R2 ; __lts
|
|
00002EB2 420B JSR @R2
|
|
00002EB4 E000 MOV #0,R0
|
|
00002EB6 8800 CMP/EQ #0,R0
|
|
00002EB8 8900 BT L1582
|
|
00002EBA ED00 MOV #0,R13
|
|
00002EBC L1582:
|
|
Monochrome 1400 zoom_w14 = zoom_w * 16384;
|
|
00002EBC D015 MOV.L L1727+12,R0; H'46800000
|
|
00002EBE D316 MOV.L L1727+16,R3; __muls
|
|
00002EC0 430B JSR @R3
|
|
00002EC2 61D3 MOV R13,R1
|
|
00002EC4 D215 MOV.L L1727+20,R2; __stoi
|
|
00002EC6 420B JSR @R2
|
|
00002EC8 0009 NOP
|
|
00002ECA 1F03 MOV.L R0,@(12,R15)
|
|
Monochrome 1401 zoom_h14 = zoom_h * 16384;
|
|
00002ECC D011 MOV.L L1727+12,R0; H'46800000
|
|
00002ECE D312 MOV.L L1727+16,R3; __muls
|
|
00002ED0 430B JSR @R3
|
|
00002ED2 61C3 MOV R12,R1
|
|
00002ED4 D211 MOV.L L1727+20,R2; __stoi
|
|
00002ED6 420B JSR @R2
|
|
00002ED8 0009 NOP
|
|
Monochrome 1402 width_z = width * zoom_w14 >> 14 ;
|
|
00002EDA E1F2 MOV #-14,R1
|
|
00002EDC 1F02 MOV.L R0,@(8,R15)
|
|
Monochrome 1403 height_z = height * zoom_h14 >> 14;
|
|
00002EDE E050 MOV #80,R0
|
|
00002EE0 53F3 MOV.L @(12,R15),R3
|
|
00002EE2 62F2 MOV.L @R15,R2
|
|
00002EE4 00FE MOV.L @(R0,R15),R0
|
|
00002EE6 0237 MUL.L R3,R2
|
|
00002EE8 041A STS MACL,R4
|
|
00002EEA 441C SHAD R1,R4
|
|
00002EEC 51F2 MOV.L @(8,R15),R1
|
|
00002EEE E3F2 MOV #-14,R3
|
|
00002EF0 0017 MUL.L R1,R0
|
|
Monochrome 1404 nb_width = width + 7 >> 3;
|
|
00002EF2 7207 ADD #7,R2
|
|
00002EF4 071A STS MACL,R7
|
|
00002EF6 473C SHAD R3,R7
|
|
00002EF8 4221 SHAR R2
|
|
00002EFA 4221 SHAR R2
|
|
00002EFC 4221 SHAR R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 140
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1405
|
|
Monochrome 1406 if (x < 0) begin_x = -x;
|
|
00002EFE 4E11 CMP/PZ R14
|
|
00002F00 8D0E BT/S L1583
|
|
00002F02 1F27 MOV.L R2,@(28,R15)
|
|
00002F04 A00D BRA L1584
|
|
00002F06 66EB NEG R14,R6
|
|
00002F08 L1727:
|
|
00002F08 <00000000> .DATA.L __divls
|
|
00002F0C <00000000> .DATA.L _ML_vram_adress
|
|
00002F10 <00000000> .DATA.L __lts
|
|
00002F14 46800000 .DATA.L H'46800000
|
|
00002F18 <00000000> .DATA.L __muls
|
|
00002F1C <00000000> .DATA.L __stoi
|
|
00002F20 L1583:
|
|
Monochrome 1407 else begin_x = 0;
|
|
00002F20 E600 MOV #0,R6
|
|
00002F22 L1584:
|
|
Monochrome 1408 if (x+width_z > 128) end_x = 128-x;
|
|
00002F22 63E3 MOV R14,R3
|
|
00002F24 9574 MOV.W L1729,R5 ; H'0080
|
|
00002F26 334C ADD R4,R3
|
|
00002F28 3357 CMP/GT R5,R3
|
|
00002F2A 8B03 BF L1585
|
|
00002F2C 6353 MOV R5,R3
|
|
00002F2E 33E8 SUB R14,R3
|
|
00002F30 A001 BRA L1586
|
|
00002F32 1F3A MOV.L R3,@(40,R15)
|
|
00002F34 L1585:
|
|
Monochrome 1409 else end_x = width_z;
|
|
00002F34 1F4A MOV.L R4,@(40,R15)
|
|
00002F36 L1586:
|
|
Monochrome 1410 if (y < 0) begin_y = -y;
|
|
00002F36 4A11 CMP/PZ R10
|
|
00002F38 8D03 BT/S L1587
|
|
Monochrome 1411 else begin_y = 0;
|
|
Monochrome 1412 if (y+height_z > 64) end_y = 64-y;
|
|
00002F3A E440 MOV #64,R4
|
|
00002F3C 62AB NEG R10,R2
|
|
00002F3E A002 BRA L1588
|
|
00002F40 1F28 MOV.L R2,@(32,R15)
|
|
00002F42 L1587:
|
|
00002F42 E100 MOV #0,R1
|
|
00002F44 1F18 MOV.L R1,@(32,R15)
|
|
00002F46 L1588:
|
|
00002F46 63A3 MOV R10,R3
|
|
00002F48 337C ADD R7,R3
|
|
00002F4A 3347 CMP/GT R4,R3
|
|
00002F4C 8F03 BF/S L1589
|
|
Monochrome 1413 else end_y = height_z;
|
|
Monochrome 1414
|
|
Monochrome 1415 for (iz=begin_x; iz<end_x; iz++)
|
|
00002F4E 6863 MOV R6,R8
|
|
00002F50 6C43 MOV R4,R12
|
|
00002F52 A001 BRA L1590
|
|
00002F54 3CA8 SUB R10,R12
|
|
00002F56 L1589:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 141
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002F56 6C73 MOV R7,R12
|
|
00002F58 L1590:
|
|
00002F58 69E3 MOV R14,R9
|
|
00002F5A 398C ADD R8,R9
|
|
00002F5C 9E59 MOV.W L1729+2,R14; H'4000
|
|
00002F5E E30E MOV #14,R3
|
|
00002F60 ED07 MOV #7,R13
|
|
00002F62 6B63 MOV R6,R11
|
|
00002F64 A046 BRA L1591
|
|
00002F66 4B3C SHAD R3,R11
|
|
00002F68 L1592:
|
|
Monochrome 1416 {
|
|
Monochrome 1417 i = (iz << 14) / zoom_w14;
|
|
00002F68 D32A MOV.L L1729+4,R3 ; __divls
|
|
00002F6A 61B3 MOV R11,R1
|
|
00002F6C 430B JSR @R3
|
|
00002F6E 50F3 MOV.L @(12,R15),R0
|
|
00002F70 6403 MOV R0,R4
|
|
Monochrome 1418 i3 = i >> 3;
|
|
00002F72 6303 MOV R0,R3
|
|
00002F74 4321 SHAR R3
|
|
00002F76 4321 SHAR R3
|
|
00002F78 4321 SHAR R3
|
|
Monochrome 1419 bit = 0x80 >> (i & 7);
|
|
00002F7A 24D9 AND R13,R4
|
|
00002F7C 1F36 MOV.L R3,@(24,R15)
|
|
00002F7E 6253 MOV R5,R2
|
|
00002F80 644B NEG R4,R4
|
|
00002F82 424C SHAD R4,R2
|
|
00002F84 1F25 MOV.L R2,@(20,R15)
|
|
00002F86 67A3 MOV R10,R7
|
|
Monochrome 1420 x_screen = x+iz;
|
|
00002F88 2F92 MOV.L R9,@R15
|
|
00002F8A 6193 MOV R9,R1
|
|
Monochrome 1421
|
|
Monochrome 1422 for (jz=begin_y; jz<end_y; jz++)
|
|
00002F8C 54F8 MOV.L @(32,R15),R4
|
|
00002F8E E30E MOV #14,R3
|
|
00002F90 374C ADD R4,R7
|
|
00002F92 4708 SHLL2 R7
|
|
00002F94 4708 SHLL2 R7
|
|
00002F96 4121 SHAR R1
|
|
00002F98 4121 SHAR R1
|
|
00002F9A 4121 SHAR R1
|
|
00002F9C 371C ADD R1,R7
|
|
00002F9E 6643 MOV R4,R6
|
|
00002FA0 51F9 MOV.L @(36,R15),R1
|
|
00002FA2 6293 MOV R9,R2
|
|
00002FA4 371C ADD R1,R7
|
|
00002FA6 463C SHAD R3,R6
|
|
00002FA8 22D9 AND R13,R2
|
|
00002FAA 622B NEG R2,R2
|
|
00002FAC 6053 MOV R5,R0
|
|
00002FAE 402C SHAD R2,R0
|
|
00002FB0 34C3 CMP/GE R12,R4
|
|
00002FB2 8D1C BT/S L1593
|
|
00002FB4 1F04 MOV.L R0,@(16,R15)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 142
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00002FB6 L1594:
|
|
Monochrome 1423 {
|
|
Monochrome 1424 j = (jz << 14) / zoom_h14;
|
|
00002FB6 6163 MOV R6,R1
|
|
00002FB8 D316 MOV.L L1729+4,R3 ; __divls
|
|
00002FBA 430B JSR @R3
|
|
00002FBC 50F2 MOV.L @(8,R15),R0
|
|
00002FBE 2F02 MOV.L R0,@R15
|
|
Monochrome 1425 pixel = bmp[i3 + nb_width * j] & bit;
|
|
00002FC0 53F7 MOV.L @(28,R15),R3
|
|
00002FC2 0037 MUL.L R3,R0
|
|
00002FC4 51F6 MOV.L @(24,R15),R1
|
|
00002FC6 001A STS MACL,R0
|
|
00002FC8 53F1 MOV.L @(4,R15),R3
|
|
00002FCA 301C ADD R1,R0
|
|
00002FCC 013C MOV.B @(R0,R3),R1
|
|
00002FCE 611C EXTU.B R1,R1
|
|
00002FD0 53F5 MOV.L @(20,R15),R3
|
|
00002FD2 2139 AND R3,R1
|
|
Monochrome 1426 if (pixel != 0) vram[(y+jz<<4)+(x_screen>>3)] ^= 128>>(x_screen&7);
|
|
00002FD4 6313 MOV R1,R3
|
|
00002FD6 2338 TST R3,R3
|
|
00002FD8 8D04 BT/S L1595
|
|
00002FDA 2F12 MOV.L R1,@R15
|
|
00002FDC 53F4 MOV.L @(16,R15),R3
|
|
00002FDE 6270 MOV.B @R7,R2
|
|
00002FE0 223A XOR R3,R2
|
|
00002FE2 2720 MOV.B R2,@R7
|
|
00002FE4 L1595:
|
|
00002FE4 7401 ADD #1,R4
|
|
00002FE6 7710 ADD #16,R7
|
|
00002FE8 34C3 CMP/GE R12,R4
|
|
00002FEA 8FE4 BF/S L1594
|
|
00002FEC 36EC ADD R14,R6
|
|
00002FEE L1593:
|
|
00002FEE 7801 ADD #1,R8
|
|
00002FF0 7901 ADD #1,R9
|
|
00002FF2 3BEC ADD R14,R11
|
|
00002FF4 L1591:
|
|
00002FF4 52FA MOV.L @(40,R15),R2
|
|
00002FF6 3823 CMP/GE R2,R8
|
|
00002FF8 8BB6 BF L1592
|
|
00002FFA L1580:
|
|
Monochrome 1427 }
|
|
Monochrome 1428 }
|
|
Monochrome 1429 }
|
|
00002FFA 7F2C ADD #44,R15
|
|
00002FFC 4F16 LDS.L @R15+,MACL
|
|
00002FFE 4F26 LDS.L @R15+,PR
|
|
00003000 68F6 MOV.L @R15+,R8
|
|
00003002 69F6 MOV.L @R15+,R9
|
|
00003004 6AF6 MOV.L @R15+,R10
|
|
00003006 6BF6 MOV.L @R15+,R11
|
|
00003008 6CF6 MOV.L @R15+,R12
|
|
0000300A 6DF6 MOV.L @R15+,R13
|
|
0000300C 000B RTS
|
|
0000300E 6EF6 MOV.L @R15+,R14
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 143
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00003010 L1729:
|
|
00003010 0080 .DATA.W H'0080
|
|
00003012 4000 .DATA.W H'4000
|
|
00003014 <00000000> .DATA.L __divls
|
|
Monochrome 1430 #endif
|
|
Monochrome 1431
|
|
Monochrome 1432 #ifdef ML_BMP_OR_ROTATE
|
|
Monochrome 1433 void ML_bmp_or_rotate(const unsigned char *bmp, int x, int y, int width, int height, int angle)
|
|
00003018 _ML_bmp_or_rotate: ; function: ML_bmp_or_rotate
|
|
; frame size=128
|
|
; used runtime library name:
|
|
; __modls, __muls, __muld, __divdr, __negd, __dtos, __stoi, __itod
|
|
00003018 2FE6 MOV.L R14,@-R15
|
|
0000301A E058 MOV #88,R0
|
|
Monochrome 1434 {
|
|
Monochrome 1435 int i, j, i3, dx, dy, ox, oy, xr, yr, nb_width, pixel, bit;
|
|
Monochrome 1436 int cosinus, sinus;
|
|
Monochrome 1437 char* vram = ML_vram_adress();
|
|
0000301C D347 MOV.L L1730+12,R3; _ML_vram_adress
|
|
0000301E 2FD6 MOV.L R13,@-R15
|
|
00003020 2FC6 MOV.L R12,@-R15
|
|
00003022 2FB6 MOV.L R11,@-R15
|
|
00003024 2FA6 MOV.L R10,@-R15
|
|
00003026 2F96 MOV.L R9,@-R15
|
|
00003028 2F86 MOV.L R8,@-R15
|
|
0000302A E900 MOV #0,R9
|
|
0000302C 4F22 STS.L PR,@-R15
|
|
0000302E 4F12 STS.L MACL,@-R15
|
|
00003030 7FD0 ADD #-48,R15
|
|
00003032 1F47 MOV.L R4,@(28,R15)
|
|
00003034 1F55 MOV.L R5,@(20,R15)
|
|
00003036 1F66 MOV.L R6,@(24,R15)
|
|
00003038 1F74 MOV.L R7,@(16,R15)
|
|
0000303A 430B JSR @R3
|
|
0000303C 0EFE MOV.L @(R0,R15),R14
|
|
0000303E 1F0B MOV.L R0,@(44,R15)
|
|
Monochrome 1438
|
|
Monochrome 1439 if (!bmp) return;
|
|
00003040 53F7 MOV.L @(28,R15),R3
|
|
00003042 2338 TST R3,R3
|
|
00003044 8B01 BF L1731
|
|
00003046 A0F8 BRA L1597
|
|
00003048 0009 NOP
|
|
0000304A L1731:
|
|
Monochrome 1440 ox = x + width / 2;
|
|
0000304A E200 MOV #0,R2
|
|
0000304C 51F5 MOV.L @(20,R15),R1
|
|
Monochrome 1441 oy = y + height / 2;
|
|
0000304E E054 MOV #84,R0
|
|
Monochrome 1442 angle %= 360;
|
|
00003050 946E MOV.W L1730,R4 ; H'0168
|
|
00003052 53F4 MOV.L @(16,R15),R3
|
|
00003054 3237 CMP/GT R3,R2
|
|
00003056 332E ADDC R2,R3
|
|
00003058 4321 SHAR R3
|
|
0000305A 331C ADD R1,R3
|
|
0000305C 1F32 MOV.L R3,@(8,R15)
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 144
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000305E 02FE MOV.L @(R0,R15),R2
|
|
00003060 D337 MOV.L L1730+16,R3; __modls
|
|
00003062 E000 MOV #0,R0
|
|
00003064 3027 CMP/GT R2,R0
|
|
00003066 320E ADDC R0,R2
|
|
00003068 50F6 MOV.L @(24,R15),R0
|
|
0000306A 4221 SHAR R2
|
|
0000306C 320C ADD R0,R2
|
|
0000306E 6043 MOV R4,R0
|
|
00003070 1F21 MOV.L R2,@(4,R15)
|
|
00003072 430B JSR @R3
|
|
00003074 61E3 MOV R14,R1
|
|
00003076 6E03 MOV R0,R14
|
|
Monochrome 1443 if (angle < 0) angle += 360;
|
|
00003078 4E11 CMP/PZ R14
|
|
0000307A 8900 BT L1598
|
|
0000307C 3E4C ADD R4,R14
|
|
0000307E L1598:
|
|
Monochrome 1444 if (angle == 0) {cosinus = 16384; sinus = 0;}
|
|
0000307E 2EE8 TST R14,R14
|
|
00003080 9457 MOV.W L1730+2,R4 ; H'4000
|
|
00003082 8B01 BF L1599
|
|
00003084 A00B BRA L1096
|
|
00003086 6D43 MOV R4,R13
|
|
00003088 L1599:
|
|
Monochrome 1445 else if (angle == 90) {cosinus = 0; sinus = -16384;}
|
|
00003088 9554 MOV.W L1730+4,R5 ; H'C000
|
|
0000308A 60E3 MOV R14,R0
|
|
0000308C 885A CMP/EQ #90,R0
|
|
0000308E 8B02 BF L1601
|
|
00003090 6D93 MOV R9,R13
|
|
00003092 A043 BRA L1600
|
|
00003094 6B53 MOV R5,R11
|
|
00003096 L1601:
|
|
Monochrome 1446 else if (angle == 180) {cosinus = -16384; sinus = 0;}
|
|
00003096 924E MOV.W L1730+6,R2 ; H'00B4
|
|
00003098 3E20 CMP/EQ R2,R14
|
|
0000309A 8B02 BF L1603
|
|
0000309C 6D53 MOV R5,R13
|
|
0000309E L1096:
|
|
0000309E A03D BRA L1600
|
|
000030A0 6B93 MOV R9,R11
|
|
000030A2 L1603:
|
|
Monochrome 1447 else if (angle == 270) {cosinus = 0; sinus = 16384;}
|
|
000030A2 9349 MOV.W L1730+8,R3 ; H'010E
|
|
000030A4 3E30 CMP/EQ R3,R14
|
|
000030A6 8B02 BF L1605
|
|
000030A8 6D93 MOV R9,R13
|
|
000030AA A037 BRA L1600
|
|
000030AC 6B43 MOV R4,R11
|
|
000030AE L1605:
|
|
Monochrome 1448 else
|
|
Monochrome 1449 {
|
|
Monochrome 1450 cosinus = cosf(-3.14 * angle / 180.0) * 16384;
|
|
000030AE 60E3 MOV R14,R0
|
|
000030B0 D124 MOV.L L1730+20,R1; __itod
|
|
000030B2 7FE0 ADD #-32,R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 145
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000030B4 410B JSR @R1
|
|
000030B6 2FF6 MOV.L R15,@-R15
|
|
000030B8 D023 MOV.L L1730+24,R0; H'51EB851F
|
|
000030BA 2F06 MOV.L R0,@-R15
|
|
000030BC D023 MOV.L L1730+28,R0; H'40091EB8
|
|
000030BE 2F06 MOV.L R0,@-R15
|
|
000030C0 D023 MOV.L L1730+32,R0; __muld
|
|
000030C2 61F3 MOV R15,R1
|
|
000030C4 7110 ADD #16,R1
|
|
000030C6 400B JSR @R0
|
|
000030C8 2F16 MOV.L R1,@-R15
|
|
000030CA E108 MOV #8,R1
|
|
000030CC 31FC ADD R15,R1
|
|
000030CE 2F16 MOV.L R1,@-R15
|
|
000030D0 D120 MOV.L L1730+36,R1; __negd
|
|
000030D2 410B JSR @R1
|
|
000030D4 0009 NOP
|
|
000030D6 E000 MOV #0,R0
|
|
000030D8 2F06 MOV.L R0,@-R15
|
|
000030DA D01F MOV.L L1730+40,R0; H'40668000
|
|
000030DC 2F06 MOV.L R0,@-R15
|
|
000030DE 61F3 MOV R15,R1
|
|
000030E0 D01E MOV.L L1730+44,R0; __divdr
|
|
000030E2 7110 ADD #16,R1
|
|
000030E4 400B JSR @R0
|
|
000030E6 2F16 MOV.L R1,@-R15
|
|
000030E8 D11D MOV.L L1730+48,R1; __dtos
|
|
000030EA 410B JSR @R1
|
|
000030EC 0009 NOP
|
|
000030EE 1F03 MOV.L R0,@(12,R15)
|
|
000030F0 D21C MOV.L L1730+52,R2; _cosf
|
|
000030F2 420B JSR @R2
|
|
000030F4 6403 MOV R0,R4
|
|
000030F6 D11C MOV.L L1730+56,R1; H'46800000
|
|
000030F8 D31C MOV.L L1730+60,R3; __muls
|
|
000030FA 430B JSR @R3
|
|
000030FC 0009 NOP
|
|
000030FE D21C MOV.L L1730+64,R2; __stoi
|
|
00003100 420B JSR @R2
|
|
00003102 0009 NOP
|
|
Monochrome 1451 sinus = sinf(-3.14 * angle / 180.0) * 16384;
|
|
00003104 D31B MOV.L L1730+68,R3; _sinf
|
|
00003106 6D03 MOV R0,R13
|
|
00003108 430B JSR @R3
|
|
0000310A 54F3 MOV.L @(12,R15),R4
|
|
0000310C D116 MOV.L L1730+56,R1; H'46800000
|
|
0000310E D217 MOV.L L1730+60,R2; __muls
|
|
00003110 420B JSR @R2
|
|
00003112 0009 NOP
|
|
00003114 D316 MOV.L L1730+64,R3; __stoi
|
|
00003116 430B JSR @R3
|
|
00003118 0009 NOP
|
|
0000311A 6B03 MOV R0,R11
|
|
0000311C L1600:
|
|
Monochrome 1452 }
|
|
Monochrome 1453 nb_width = width + 7 >> 3;
|
|
0000311C 52F4 MOV.L @(16,R15),R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 146
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1454
|
|
Monochrome 1455 for (i=0; i<width; i++)
|
|
0000311E 6693 MOV R9,R6
|
|
00003120 980B MOV.W L1730+10,R8; H'0080
|
|
00003122 7207 ADD #7,R2
|
|
00003124 4221 SHAR R2
|
|
00003126 4221 SHAR R2
|
|
00003128 4221 SHAR R2
|
|
0000312A 2F22 MOV.L R2,@R15
|
|
0000312C A082 BRA L1607
|
|
0000312E EA07 MOV #7,R10
|
|
00003130 L1730:
|
|
00003130 0168 .DATA.W H'0168
|
|
00003132 4000 .DATA.W H'4000
|
|
00003134 C000 .DATA.W H'C000
|
|
00003136 00B4 .DATA.W H'00B4
|
|
00003138 010E .DATA.W H'010E
|
|
0000313A 0080 .DATA.W H'0080
|
|
0000313C <00000000> .DATA.L _ML_vram_adress
|
|
00003140 <00000000> .DATA.L __modls
|
|
00003144 <00000000> .DATA.L __itod
|
|
00003148 51EB851F .DATA.L H'51EB851F
|
|
0000314C 40091EB8 .DATA.L H'40091EB8
|
|
00003150 <00000000> .DATA.L __muld
|
|
00003154 <00000000> .DATA.L __negd
|
|
00003158 40668000 .DATA.L H'40668000
|
|
0000315C <00000000> .DATA.L __divdr
|
|
00003160 <00000000> .DATA.L __dtos
|
|
00003164 <00000000> .DATA.L _cosf
|
|
00003168 46800000 .DATA.L H'46800000
|
|
0000316C <00000000> .DATA.L __muls
|
|
00003170 <00000000> .DATA.L __stoi
|
|
00003174 <00000000> .DATA.L _sinf
|
|
00003178 L1608:
|
|
Monochrome 1456 {
|
|
Monochrome 1457 bit = 0x80 >> (i & 7);
|
|
00003178 6263 MOV R6,R2
|
|
0000317A 22A9 AND R10,R2
|
|
0000317C 622B NEG R2,R2
|
|
0000317E 6383 MOV R8,R3
|
|
00003180 432C SHAD R2,R3
|
|
Monochrome 1458 i3 = i >> 3;
|
|
00003182 6563 MOV R6,R5
|
|
00003184 1F38 MOV.L R3,@(32,R15)
|
|
Monochrome 1459 dx = x + i - ox;
|
|
Monochrome 1460 for (j=0; j<height; j++)
|
|
00003186 6C93 MOV R9,R12
|
|
00003188 54F5 MOV.L @(20,R15),R4
|
|
0000318A E054 MOV #84,R0
|
|
0000318C 52F2 MOV.L @(8,R15),R2
|
|
0000318E 4521 SHAR R5
|
|
00003190 67F2 MOV.L @R15,R7
|
|
00003192 346C ADD R6,R4
|
|
00003194 51F7 MOV.L @(28,R15),R1
|
|
00003196 4521 SHAR R5
|
|
00003198 5EF6 MOV.L @(24,R15),R14
|
|
0000319A 3428 SUB R2,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 147
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000319C 0C77 MUL.L R7,R12
|
|
0000319E 4521 SHAR R5
|
|
000031A0 53F1 MOV.L @(4,R15),R3
|
|
000031A2 071A STS MACL,R7
|
|
000031A4 04D7 MUL.L R13,R4
|
|
000031A6 375C ADD R5,R7
|
|
000031A8 371C ADD R1,R7
|
|
000031AA 021A STS MACL,R2
|
|
000031AC 1F29 MOV.L R2,@(36,R15)
|
|
000031AE 04B7 MUL.L R11,R4
|
|
000031B0 041A STS MACL,R4
|
|
000031B2 1F4A MOV.L R4,@(40,R15)
|
|
000031B4 01FE MOV.L @(R0,R15),R1
|
|
000031B6 4115 CMP/PL R1
|
|
000031B8 8F3B BF/S L1609
|
|
000031BA 3E38 SUB R3,R14
|
|
000031BC L1610:
|
|
Monochrome 1461 {
|
|
Monochrome 1462 dy = y + j - oy;
|
|
Monochrome 1463 xr = ox + (dx * cosinus - dy * sinus >> 14);
|
|
000031BC 54F9 MOV.L @(36,R15),R4
|
|
Monochrome 1464 yr = oy + (dx * sinus + dy * cosinus >> 14);
|
|
000031BE E1F2 MOV #-14,R1
|
|
000031C0 50F1 MOV.L @(4,R15),R0
|
|
000031C2 65E3 MOV R14,R5
|
|
000031C4 52F2 MOV.L @(8,R15),R2
|
|
000031C6 05B7 MUL.L R11,R5
|
|
000031C8 031A STS MACL,R3
|
|
000031CA 3438 SUB R3,R4
|
|
000031CC 05D7 MUL.L R13,R5
|
|
000031CE E3F2 MOV #-14,R3
|
|
000031D0 443C SHAD R3,R4
|
|
000031D2 342C ADD R2,R4
|
|
000031D4 53FA MOV.L @(40,R15),R3
|
|
000031D6 051A STS MACL,R5
|
|
000031D8 353C ADD R3,R5
|
|
000031DA 451C SHAD R1,R5
|
|
Monochrome 1465 if (!(xr < 0 || xr > 127 || yr < 0 || yr > 63))
|
|
000031DC 4411 CMP/PZ R4
|
|
000031DE 8F20 BF/S L1611
|
|
000031E0 350C ADD R0,R5
|
|
000031E2 E17F MOV #127,R1
|
|
000031E4 3417 CMP/GT R1,R4
|
|
000031E6 891C BT L1611
|
|
000031E8 4511 CMP/PZ R5
|
|
000031EA 8B1A BF L1611
|
|
000031EC E33F MOV #63,R3
|
|
000031EE 3537 CMP/GT R3,R5
|
|
000031F0 8917 BT L1611
|
|
Monochrome 1466 {
|
|
Monochrome 1467 pixel = bmp[i3 + nb_width * j] & bit;
|
|
000031F2 6170 MOV.B @R7,R1
|
|
000031F4 53F8 MOV.L @(32,R15),R3
|
|
000031F6 611C EXTU.B R1,R1
|
|
000031F8 2139 AND R3,R1
|
|
Monochrome 1468 if (pixel != 0) vram[(yr<<4)+(xr>>3)] |= 128>>(xr&7);
|
|
000031FA 2118 TST R1,R1
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 148
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000031FC 8D11 BT/S L1611
|
|
000031FE 1F13 MOV.L R1,@(12,R15)
|
|
00003200 50FB MOV.L @(44,R15),R0
|
|
00003202 6183 MOV R8,R1
|
|
00003204 6253 MOV R5,R2
|
|
00003206 4208 SHLL2 R2
|
|
00003208 4208 SHLL2 R2
|
|
0000320A 6343 MOV R4,R3
|
|
0000320C 4321 SHAR R3
|
|
0000320E 4321 SHAR R3
|
|
00003210 4321 SHAR R3
|
|
00003212 323C ADD R3,R2
|
|
00003214 6343 MOV R4,R3
|
|
00003216 23A9 AND R10,R3
|
|
00003218 633B NEG R3,R3
|
|
0000321A 413C SHAD R3,R1
|
|
0000321C 032C MOV.B @(R0,R2),R3
|
|
0000321E 231B OR R1,R3
|
|
00003220 0234 MOV.B R3,@(R0,R2)
|
|
00003222 L1611:
|
|
00003222 7C01 ADD #1,R12
|
|
00003224 62F2 MOV.L @R15,R2
|
|
00003226 E054 MOV #84,R0
|
|
00003228 03FE MOV.L @(R0,R15),R3
|
|
0000322A 372C ADD R2,R7
|
|
0000322C 3C33 CMP/GE R3,R12
|
|
0000322E 8FC5 BF/S L1610
|
|
00003230 7E01 ADD #1,R14
|
|
00003232 L1609:
|
|
00003232 7601 ADD #1,R6
|
|
00003234 L1607:
|
|
00003234 53F4 MOV.L @(16,R15),R3
|
|
00003236 3633 CMP/GE R3,R6
|
|
00003238 8B9E BF L1608
|
|
0000323A L1597:
|
|
Monochrome 1469 }
|
|
Monochrome 1470 }
|
|
Monochrome 1471 }
|
|
Monochrome 1472 }
|
|
0000323A 7F30 ADD #48,R15
|
|
0000323C 4F16 LDS.L @R15+,MACL
|
|
0000323E 4F26 LDS.L @R15+,PR
|
|
00003240 68F6 MOV.L @R15+,R8
|
|
00003242 69F6 MOV.L @R15+,R9
|
|
00003244 6AF6 MOV.L @R15+,R10
|
|
00003246 6BF6 MOV.L @R15+,R11
|
|
00003248 6CF6 MOV.L @R15+,R12
|
|
0000324A 6DF6 MOV.L @R15+,R13
|
|
0000324C 000B RTS
|
|
0000324E 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1473 #endif
|
|
Monochrome 1474
|
|
Monochrome 1475 #ifdef ML_BMP_AND_ROTATE
|
|
Monochrome 1476 void ML_bmp_and_rotate(const unsigned char *bmp, int x, int y, int width, int height, int angle)
|
|
00003250 _ML_bmp_and_rotate: ; function: ML_bmp_and_rotate
|
|
; frame size=128
|
|
; used runtime library name:
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 149
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
; __modls, __muls, __muld, __divdr, __negd, __dtos, __stoi, __itod
|
|
00003250 2FE6 MOV.L R14,@-R15
|
|
00003252 E058 MOV #88,R0
|
|
Monochrome 1477 {
|
|
Monochrome 1478 int i, j, i3, dx, dy, ox, oy, xr, yr, nb_width, pixel, bit;
|
|
Monochrome 1479 int cosinus, sinus;
|
|
Monochrome 1480 char* vram = ML_vram_adress();
|
|
00003254 D31B MOV.L L1732+4,R3 ; _ML_vram_adress
|
|
00003256 2FD6 MOV.L R13,@-R15
|
|
00003258 2FC6 MOV.L R12,@-R15
|
|
0000325A 2FB6 MOV.L R11,@-R15
|
|
0000325C 2FA6 MOV.L R10,@-R15
|
|
0000325E 2F96 MOV.L R9,@-R15
|
|
00003260 2F86 MOV.L R8,@-R15
|
|
00003262 E900 MOV #0,R9
|
|
00003264 4F22 STS.L PR,@-R15
|
|
00003266 4F12 STS.L MACL,@-R15
|
|
00003268 7FD0 ADD #-48,R15
|
|
0000326A 1F47 MOV.L R4,@(28,R15)
|
|
0000326C 1F55 MOV.L R5,@(20,R15)
|
|
0000326E 1F66 MOV.L R6,@(24,R15)
|
|
00003270 1F74 MOV.L R7,@(16,R15)
|
|
00003272 430B JSR @R3
|
|
00003274 0EFE MOV.L @(R0,R15),R14
|
|
00003276 1F0B MOV.L R0,@(44,R15)
|
|
Monochrome 1481
|
|
Monochrome 1482 if (!bmp) return;
|
|
00003278 53F7 MOV.L @(28,R15),R3
|
|
0000327A 2338 TST R3,R3
|
|
0000327C 8B01 BF L1733
|
|
0000327E A0F9 BRA L1614
|
|
00003280 0009 NOP
|
|
00003282 L1733:
|
|
Monochrome 1483 ox = x + width / 2;
|
|
00003282 E200 MOV #0,R2
|
|
00003284 51F5 MOV.L @(20,R15),R1
|
|
Monochrome 1484 oy = y + height / 2;
|
|
00003286 E054 MOV #84,R0
|
|
Monochrome 1485 angle %= 360;
|
|
00003288 941A MOV.W L1732,R4 ; H'0168
|
|
0000328A 53F4 MOV.L @(16,R15),R3
|
|
0000328C 3237 CMP/GT R3,R2
|
|
0000328E 332E ADDC R2,R3
|
|
00003290 4321 SHAR R3
|
|
00003292 331C ADD R1,R3
|
|
00003294 1F32 MOV.L R3,@(8,R15)
|
|
00003296 02FE MOV.L @(R0,R15),R2
|
|
00003298 D30B MOV.L L1732+8,R3 ; __modls
|
|
0000329A E000 MOV #0,R0
|
|
0000329C 3027 CMP/GT R2,R0
|
|
0000329E 320E ADDC R0,R2
|
|
000032A0 50F6 MOV.L @(24,R15),R0
|
|
000032A2 4221 SHAR R2
|
|
000032A4 320C ADD R0,R2
|
|
000032A6 6043 MOV R4,R0
|
|
000032A8 1F21 MOV.L R2,@(4,R15)
|
|
000032AA 430B JSR @R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 150
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000032AC 61E3 MOV R14,R1
|
|
000032AE 6E03 MOV R0,R14
|
|
Monochrome 1486 if (angle < 0) angle += 360;
|
|
000032B0 4E11 CMP/PZ R14
|
|
000032B2 8900 BT L1615
|
|
000032B4 3E4C ADD R4,R14
|
|
000032B6 L1615:
|
|
Monochrome 1487 if (angle == 0) {cosinus = 16384; sinus = 0;}
|
|
000032B6 2EE8 TST R14,R14
|
|
000032B8 9403 MOV.W L1732+2,R4 ; H'4000
|
|
000032BA 8B07 BF L1616
|
|
000032BC A011 BRA L1097
|
|
000032BE 6D43 MOV R4,R13
|
|
000032C0 L1732:
|
|
000032C0 0168 .DATA.W H'0168
|
|
000032C2 4000 .DATA.W H'4000
|
|
000032C4 <00000000> .DATA.L _ML_vram_adress
|
|
000032C8 <00000000> .DATA.L __modls
|
|
000032CC L1616:
|
|
Monochrome 1488 else if (angle == 90) {cosinus = 0; sinus = -16384;}
|
|
000032CC 9552 MOV.W L1734,R5 ; H'C000
|
|
000032CE 60E3 MOV R14,R0
|
|
000032D0 885A CMP/EQ #90,R0
|
|
000032D2 8B02 BF L1618
|
|
000032D4 6D93 MOV R9,R13
|
|
000032D6 A043 BRA L1617
|
|
000032D8 6B53 MOV R5,R11
|
|
000032DA L1618:
|
|
Monochrome 1489 else if (angle == 180) {cosinus = -16384; sinus = 0;}
|
|
000032DA 924C MOV.W L1734+2,R2 ; H'00B4
|
|
000032DC 3E20 CMP/EQ R2,R14
|
|
000032DE 8B02 BF L1620
|
|
000032E0 6D53 MOV R5,R13
|
|
000032E2 L1097:
|
|
000032E2 A03D BRA L1617
|
|
000032E4 6B93 MOV R9,R11
|
|
000032E6 L1620:
|
|
Monochrome 1490 else if (angle == 270) {cosinus = 0; sinus = 16384;}
|
|
000032E6 9347 MOV.W L1734+4,R3 ; H'010E
|
|
000032E8 3E30 CMP/EQ R3,R14
|
|
000032EA 8B02 BF L1622
|
|
000032EC 6D93 MOV R9,R13
|
|
000032EE A037 BRA L1617
|
|
000032F0 6B43 MOV R4,R11
|
|
000032F2 L1622:
|
|
Monochrome 1491 else
|
|
Monochrome 1492 {
|
|
Monochrome 1493 cosinus = cosf(-3.14 * angle / 180.0) * 16384;
|
|
000032F2 60E3 MOV R14,R0
|
|
000032F4 D121 MOV.L L1734+8,R1 ; __itod
|
|
000032F6 7FE0 ADD #-32,R15
|
|
000032F8 410B JSR @R1
|
|
000032FA 2FF6 MOV.L R15,@-R15
|
|
000032FC D020 MOV.L L1734+12,R0; H'51EB851F
|
|
000032FE 2F06 MOV.L R0,@-R15
|
|
00003300 D020 MOV.L L1734+16,R0; H'40091EB8
|
|
00003302 2F06 MOV.L R0,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 151
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00003304 D020 MOV.L L1734+20,R0; __muld
|
|
00003306 61F3 MOV R15,R1
|
|
00003308 7110 ADD #16,R1
|
|
0000330A 400B JSR @R0
|
|
0000330C 2F16 MOV.L R1,@-R15
|
|
0000330E E108 MOV #8,R1
|
|
00003310 31FC ADD R15,R1
|
|
00003312 2F16 MOV.L R1,@-R15
|
|
00003314 D11D MOV.L L1734+24,R1; __negd
|
|
00003316 410B JSR @R1
|
|
00003318 0009 NOP
|
|
0000331A E000 MOV #0,R0
|
|
0000331C 2F06 MOV.L R0,@-R15
|
|
0000331E D01C MOV.L L1734+28,R0; H'40668000
|
|
00003320 2F06 MOV.L R0,@-R15
|
|
00003322 61F3 MOV R15,R1
|
|
00003324 D01B MOV.L L1734+32,R0; __divdr
|
|
00003326 7110 ADD #16,R1
|
|
00003328 400B JSR @R0
|
|
0000332A 2F16 MOV.L R1,@-R15
|
|
0000332C D11A MOV.L L1734+36,R1; __dtos
|
|
0000332E 410B JSR @R1
|
|
00003330 0009 NOP
|
|
00003332 1F03 MOV.L R0,@(12,R15)
|
|
00003334 D219 MOV.L L1734+40,R2; _cosf
|
|
00003336 420B JSR @R2
|
|
00003338 6403 MOV R0,R4
|
|
0000333A D119 MOV.L L1734+44,R1; H'46800000
|
|
0000333C D319 MOV.L L1734+48,R3; __muls
|
|
0000333E 430B JSR @R3
|
|
00003340 0009 NOP
|
|
00003342 D219 MOV.L L1734+52,R2; __stoi
|
|
00003344 420B JSR @R2
|
|
00003346 0009 NOP
|
|
Monochrome 1494 sinus = sinf(-3.14 * angle / 180.0) * 16384;
|
|
00003348 D318 MOV.L L1734+56,R3; _sinf
|
|
0000334A 6D03 MOV R0,R13
|
|
0000334C 430B JSR @R3
|
|
0000334E 54F3 MOV.L @(12,R15),R4
|
|
00003350 D113 MOV.L L1734+44,R1; H'46800000
|
|
00003352 D214 MOV.L L1734+48,R2; __muls
|
|
00003354 420B JSR @R2
|
|
00003356 0009 NOP
|
|
00003358 D313 MOV.L L1734+52,R3; __stoi
|
|
0000335A 430B JSR @R3
|
|
0000335C 0009 NOP
|
|
0000335E 6B03 MOV R0,R11
|
|
00003360 L1617:
|
|
Monochrome 1495 }
|
|
Monochrome 1496 nb_width = width + 7 >> 3;
|
|
00003360 52F4 MOV.L @(16,R15),R2
|
|
Monochrome 1497
|
|
Monochrome 1498 for (i=0; i<width; i++)
|
|
00003362 6693 MOV R9,R6
|
|
00003364 9809 MOV.W L1734+6,R8 ; H'0080
|
|
00003366 7207 ADD #7,R2
|
|
00003368 4221 SHAR R2
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 152
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
0000336A 4221 SHAR R2
|
|
0000336C 4221 SHAR R2
|
|
0000336E 2F22 MOV.L R2,@R15
|
|
00003370 A07D BRA L1624
|
|
00003372 EA07 MOV #7,R10
|
|
00003374 L1734:
|
|
00003374 C000 .DATA.W H'C000
|
|
00003376 00B4 .DATA.W H'00B4
|
|
00003378 010E .DATA.W H'010E
|
|
0000337A 0080 .DATA.W H'0080
|
|
0000337C <00000000> .DATA.L __itod
|
|
00003380 51EB851F .DATA.L H'51EB851F
|
|
00003384 40091EB8 .DATA.L H'40091EB8
|
|
00003388 <00000000> .DATA.L __muld
|
|
0000338C <00000000> .DATA.L __negd
|
|
00003390 40668000 .DATA.L H'40668000
|
|
00003394 <00000000> .DATA.L __divdr
|
|
00003398 <00000000> .DATA.L __dtos
|
|
0000339C <00000000> .DATA.L _cosf
|
|
000033A0 46800000 .DATA.L H'46800000
|
|
000033A4 <00000000> .DATA.L __muls
|
|
000033A8 <00000000> .DATA.L __stoi
|
|
000033AC <00000000> .DATA.L _sinf
|
|
000033B0 L1625:
|
|
Monochrome 1499 {
|
|
Monochrome 1500 bit = 0x80 >> (i & 7);
|
|
000033B0 6263 MOV R6,R2
|
|
000033B2 22A9 AND R10,R2
|
|
000033B4 622B NEG R2,R2
|
|
000033B6 6383 MOV R8,R3
|
|
000033B8 432C SHAD R2,R3
|
|
Monochrome 1501 i3 = i >> 3;
|
|
000033BA 6563 MOV R6,R5
|
|
000033BC 1F38 MOV.L R3,@(32,R15)
|
|
Monochrome 1502 dx = x + i - ox;
|
|
Monochrome 1503 for (j=0; j<height; j++)
|
|
000033BE 6C93 MOV R9,R12
|
|
000033C0 54F5 MOV.L @(20,R15),R4
|
|
000033C2 E054 MOV #84,R0
|
|
000033C4 52F2 MOV.L @(8,R15),R2
|
|
000033C6 4521 SHAR R5
|
|
000033C8 67F2 MOV.L @R15,R7
|
|
000033CA 346C ADD R6,R4
|
|
000033CC 51F7 MOV.L @(28,R15),R1
|
|
000033CE 4521 SHAR R5
|
|
000033D0 5EF6 MOV.L @(24,R15),R14
|
|
000033D2 3428 SUB R2,R4
|
|
000033D4 0C77 MUL.L R7,R12
|
|
000033D6 4521 SHAR R5
|
|
000033D8 53F1 MOV.L @(4,R15),R3
|
|
000033DA 071A STS MACL,R7
|
|
000033DC 04D7 MUL.L R13,R4
|
|
000033DE 375C ADD R5,R7
|
|
000033E0 371C ADD R1,R7
|
|
000033E2 021A STS MACL,R2
|
|
000033E4 1F29 MOV.L R2,@(36,R15)
|
|
000033E6 04B7 MUL.L R11,R4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 153
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000033E8 041A STS MACL,R4
|
|
000033EA 1F4A MOV.L R4,@(40,R15)
|
|
000033EC 01FE MOV.L @(R0,R15),R1
|
|
000033EE 4115 CMP/PL R1
|
|
000033F0 8F3C BF/S L1626
|
|
000033F2 3E38 SUB R3,R14
|
|
000033F4 L1627:
|
|
Monochrome 1504 {
|
|
Monochrome 1505 dy = y + j - oy;
|
|
Monochrome 1506 xr = ox + (dx * cosinus - dy * sinus >> 14);
|
|
000033F4 54F9 MOV.L @(36,R15),R4
|
|
Monochrome 1507 yr = oy + (dx * sinus + dy * cosinus >> 14);
|
|
000033F6 E1F2 MOV #-14,R1
|
|
000033F8 50F1 MOV.L @(4,R15),R0
|
|
000033FA 65E3 MOV R14,R5
|
|
000033FC 52F2 MOV.L @(8,R15),R2
|
|
000033FE 05B7 MUL.L R11,R5
|
|
00003400 031A STS MACL,R3
|
|
00003402 3438 SUB R3,R4
|
|
00003404 05D7 MUL.L R13,R5
|
|
00003406 E3F2 MOV #-14,R3
|
|
00003408 443C SHAD R3,R4
|
|
0000340A 342C ADD R2,R4
|
|
0000340C 53FA MOV.L @(40,R15),R3
|
|
0000340E 051A STS MACL,R5
|
|
00003410 353C ADD R3,R5
|
|
00003412 451C SHAD R1,R5
|
|
Monochrome 1508 if (!(xr < 0 || xr > 127 || yr < 0 || yr > 63))
|
|
00003414 4411 CMP/PZ R4
|
|
00003416 8F21 BF/S L1628
|
|
00003418 350C ADD R0,R5
|
|
0000341A E17F MOV #127,R1
|
|
0000341C 3417 CMP/GT R1,R4
|
|
0000341E 891D BT L1628
|
|
00003420 4511 CMP/PZ R5
|
|
00003422 8B1B BF L1628
|
|
00003424 E33F MOV #63,R3
|
|
00003426 3537 CMP/GT R3,R5
|
|
00003428 8918 BT L1628
|
|
Monochrome 1509 {
|
|
Monochrome 1510 pixel = bmp[i3 + nb_width * j] & bit;
|
|
0000342A 6170 MOV.B @R7,R1
|
|
0000342C 53F8 MOV.L @(32,R15),R3
|
|
0000342E 611C EXTU.B R1,R1
|
|
00003430 2139 AND R3,R1
|
|
Monochrome 1511 if (pixel == 0) vram[(yr<<4)+(xr>>3)] &= ~(128>>(xr&7));
|
|
00003432 2118 TST R1,R1
|
|
00003434 8F12 BF/S L1628
|
|
00003436 1F13 MOV.L R1,@(12,R15)
|
|
00003438 50FB MOV.L @(44,R15),R0
|
|
0000343A 6183 MOV R8,R1
|
|
0000343C 6253 MOV R5,R2
|
|
0000343E 4208 SHLL2 R2
|
|
00003440 4208 SHLL2 R2
|
|
00003442 6343 MOV R4,R3
|
|
00003444 4321 SHAR R3
|
|
00003446 4321 SHAR R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 154
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00003448 4321 SHAR R3
|
|
0000344A 323C ADD R3,R2
|
|
0000344C 6343 MOV R4,R3
|
|
0000344E 23A9 AND R10,R3
|
|
00003450 633B NEG R3,R3
|
|
00003452 413C SHAD R3,R1
|
|
00003454 032C MOV.B @(R0,R2),R3
|
|
00003456 6117 NOT R1,R1
|
|
00003458 2319 AND R1,R3
|
|
0000345A 0234 MOV.B R3,@(R0,R2)
|
|
0000345C L1628:
|
|
0000345C 62F2 MOV.L @R15,R2
|
|
0000345E E054 MOV #84,R0
|
|
00003460 03FE MOV.L @(R0,R15),R3
|
|
00003462 7C01 ADD #1,R12
|
|
00003464 372C ADD R2,R7
|
|
00003466 3C33 CMP/GE R3,R12
|
|
00003468 8FC4 BF/S L1627
|
|
0000346A 7E01 ADD #1,R14
|
|
0000346C L1626:
|
|
0000346C 7601 ADD #1,R6
|
|
0000346E L1624:
|
|
0000346E 53F4 MOV.L @(16,R15),R3
|
|
00003470 3633 CMP/GE R3,R6
|
|
00003472 8B9D BF L1625
|
|
00003474 L1614:
|
|
Monochrome 1512 }
|
|
Monochrome 1513 }
|
|
Monochrome 1514 }
|
|
Monochrome 1515 }
|
|
00003474 7F30 ADD #48,R15
|
|
00003476 4F16 LDS.L @R15+,MACL
|
|
00003478 4F26 LDS.L @R15+,PR
|
|
0000347A 68F6 MOV.L @R15+,R8
|
|
0000347C 69F6 MOV.L @R15+,R9
|
|
0000347E 6AF6 MOV.L @R15+,R10
|
|
00003480 6BF6 MOV.L @R15+,R11
|
|
00003482 6CF6 MOV.L @R15+,R12
|
|
00003484 6DF6 MOV.L @R15+,R13
|
|
00003486 000B RTS
|
|
00003488 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1516 #endif
|
|
Monochrome 1517
|
|
Monochrome 1518 #ifdef ML_BMP_XOR_ROTATE
|
|
Monochrome 1519 void ML_bmp_xor_rotate(const unsigned char *bmp, int x, int y, int width, int height, int angle)
|
|
0000348A _ML_bmp_xor_rotate: ; function: ML_bmp_xor_rotate
|
|
; frame size=128
|
|
; used runtime library name:
|
|
; __modls, __muls, __muld, __divdr, __negd, __dtos, __stoi, __itod
|
|
0000348A E058 MOV #88,R0
|
|
Monochrome 1520 {
|
|
Monochrome 1521 int i, j, i3, dx, dy, ox, oy, xr, yr, nb_width, pixel, bit;
|
|
Monochrome 1522 int cosinus, sinus;
|
|
Monochrome 1523 char* vram = ML_vram_adress();
|
|
0000348C D31C MOV.L L1735+6,R3 ; _ML_vram_adress
|
|
0000348E 2FE6 MOV.L R14,@-R15
|
|
00003490 2FD6 MOV.L R13,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 155
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00003492 2FC6 MOV.L R12,@-R15
|
|
00003494 2FB6 MOV.L R11,@-R15
|
|
00003496 2FA6 MOV.L R10,@-R15
|
|
00003498 2F96 MOV.L R9,@-R15
|
|
0000349A E900 MOV #0,R9
|
|
0000349C 2F86 MOV.L R8,@-R15
|
|
0000349E 4F22 STS.L PR,@-R15
|
|
000034A0 4F12 STS.L MACL,@-R15
|
|
000034A2 7FD0 ADD #-48,R15
|
|
000034A4 1F47 MOV.L R4,@(28,R15)
|
|
000034A6 1F55 MOV.L R5,@(20,R15)
|
|
000034A8 1F66 MOV.L R6,@(24,R15)
|
|
000034AA 1F74 MOV.L R7,@(16,R15)
|
|
000034AC 430B JSR @R3
|
|
000034AE 0EFE MOV.L @(R0,R15),R14
|
|
000034B0 1F0B MOV.L R0,@(44,R15)
|
|
Monochrome 1524
|
|
Monochrome 1525 if (!bmp) return;
|
|
000034B2 53F7 MOV.L @(28,R15),R3
|
|
000034B4 2338 TST R3,R3
|
|
000034B6 8B01 BF L1736
|
|
000034B8 A0F9 BRA L1631
|
|
000034BA 0009 NOP
|
|
000034BC L1736:
|
|
Monochrome 1526 ox = x + width / 2;
|
|
000034BC 53F4 MOV.L @(16,R15),R3
|
|
000034BE E200 MOV #0,R2
|
|
000034C0 51F5 MOV.L @(20,R15),R1
|
|
Monochrome 1527 oy = y + height / 2;
|
|
000034C2 E054 MOV #84,R0
|
|
Monochrome 1528 angle %= 360;
|
|
000034C4 9419 MOV.W L1735,R4 ; H'0168
|
|
000034C6 3237 CMP/GT R3,R2
|
|
000034C8 332E ADDC R2,R3
|
|
000034CA 4321 SHAR R3
|
|
000034CC 331C ADD R1,R3
|
|
000034CE 1F32 MOV.L R3,@(8,R15)
|
|
000034D0 02FE MOV.L @(R0,R15),R2
|
|
000034D2 E000 MOV #0,R0
|
|
000034D4 D30B MOV.L L1735+10,R3; __modls
|
|
000034D6 3027 CMP/GT R2,R0
|
|
000034D8 320E ADDC R0,R2
|
|
000034DA 4221 SHAR R2
|
|
000034DC 50F6 MOV.L @(24,R15),R0
|
|
000034DE 320C ADD R0,R2
|
|
000034E0 1F21 MOV.L R2,@(4,R15)
|
|
000034E2 6043 MOV R4,R0
|
|
000034E4 430B JSR @R3
|
|
000034E6 61E3 MOV R14,R1
|
|
000034E8 6E03 MOV R0,R14
|
|
Monochrome 1529 if (angle < 0) angle += 360;
|
|
000034EA 4E11 CMP/PZ R14
|
|
000034EC 8900 BT L1632
|
|
000034EE 3E4C ADD R4,R14
|
|
000034F0 L1632:
|
|
Monochrome 1530 if (angle == 0) {cosinus = 16384; sinus = 0;}
|
|
000034F0 9404 MOV.W L1735+2,R4 ; H'4000
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 156
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000034F2 2EE8 TST R14,R14
|
|
000034F4 8B08 BF L1633
|
|
000034F6 A012 BRA L1098
|
|
000034F8 6D43 MOV R4,R13
|
|
000034FA L1735:
|
|
000034FA 0168 .DATA.W H'0168
|
|
000034FC 4000 .DATA.W H'4000
|
|
000034FE 0000 .DATA.W 0
|
|
00003500 <00000000> .DATA.L _ML_vram_adress
|
|
00003504 <00000000> .DATA.L __modls
|
|
00003508 L1633:
|
|
Monochrome 1531 else if (angle == 90) {cosinus = 0; sinus = -16384;}
|
|
00003508 9552 MOV.W L1737,R5 ; H'C000
|
|
0000350A 60E3 MOV R14,R0
|
|
0000350C 885A CMP/EQ #90,R0
|
|
0000350E 8B02 BF L1635
|
|
00003510 6D93 MOV R9,R13
|
|
00003512 A043 BRA L1634
|
|
00003514 6B53 MOV R5,R11
|
|
00003516 L1635:
|
|
Monochrome 1532 else if (angle == 180) {cosinus = -16384; sinus = 0;}
|
|
00003516 924C MOV.W L1737+2,R2 ; H'00B4
|
|
00003518 3E20 CMP/EQ R2,R14
|
|
0000351A 8B02 BF L1637
|
|
0000351C 6D53 MOV R5,R13
|
|
0000351E L1098:
|
|
0000351E A03D BRA L1634
|
|
00003520 6B93 MOV R9,R11
|
|
00003522 L1637:
|
|
Monochrome 1533 else if (angle == 270) {cosinus = 0; sinus = 16384;}
|
|
00003522 9347 MOV.W L1737+4,R3 ; H'010E
|
|
00003524 3E30 CMP/EQ R3,R14
|
|
00003526 8B02 BF L1639
|
|
00003528 6D93 MOV R9,R13
|
|
0000352A A037 BRA L1634
|
|
0000352C 6B43 MOV R4,R11
|
|
0000352E L1639:
|
|
Monochrome 1534 else
|
|
Monochrome 1535 {
|
|
Monochrome 1536 cosinus = cosf(-3.14 * angle / 180.0) * 16384;
|
|
0000352E 60E3 MOV R14,R0
|
|
00003530 D121 MOV.L L1737+8,R1 ; __itod
|
|
00003532 7FE0 ADD #-32,R15
|
|
00003534 410B JSR @R1
|
|
00003536 2FF6 MOV.L R15,@-R15
|
|
00003538 D020 MOV.L L1737+12,R0; H'51EB851F
|
|
0000353A 2F06 MOV.L R0,@-R15
|
|
0000353C D020 MOV.L L1737+16,R0; H'40091EB8
|
|
0000353E 2F06 MOV.L R0,@-R15
|
|
00003540 D020 MOV.L L1737+20,R0; __muld
|
|
00003542 61F3 MOV R15,R1
|
|
00003544 7110 ADD #16,R1
|
|
00003546 400B JSR @R0
|
|
00003548 2F16 MOV.L R1,@-R15
|
|
0000354A E108 MOV #8,R1
|
|
0000354C 31FC ADD R15,R1
|
|
0000354E 2F16 MOV.L R1,@-R15
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 157
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00003550 D11D MOV.L L1737+24,R1; __negd
|
|
00003552 410B JSR @R1
|
|
00003554 0009 NOP
|
|
00003556 E000 MOV #0,R0
|
|
00003558 2F06 MOV.L R0,@-R15
|
|
0000355A D01C MOV.L L1737+28,R0; H'40668000
|
|
0000355C 2F06 MOV.L R0,@-R15
|
|
0000355E 61F3 MOV R15,R1
|
|
00003560 D01B MOV.L L1737+32,R0; __divdr
|
|
00003562 7110 ADD #16,R1
|
|
00003564 400B JSR @R0
|
|
00003566 2F16 MOV.L R1,@-R15
|
|
00003568 D11A MOV.L L1737+36,R1; __dtos
|
|
0000356A 410B JSR @R1
|
|
0000356C 0009 NOP
|
|
0000356E 1F03 MOV.L R0,@(12,R15)
|
|
00003570 D219 MOV.L L1737+40,R2; _cosf
|
|
00003572 420B JSR @R2
|
|
00003574 6403 MOV R0,R4
|
|
00003576 D119 MOV.L L1737+44,R1; H'46800000
|
|
00003578 D319 MOV.L L1737+48,R3; __muls
|
|
0000357A 430B JSR @R3
|
|
0000357C 0009 NOP
|
|
0000357E D219 MOV.L L1737+52,R2; __stoi
|
|
00003580 420B JSR @R2
|
|
00003582 0009 NOP
|
|
Monochrome 1537 sinus = sinf(-3.14 * angle / 180.0) * 16384;
|
|
00003584 D318 MOV.L L1737+56,R3; _sinf
|
|
00003586 6D03 MOV R0,R13
|
|
00003588 430B JSR @R3
|
|
0000358A 54F3 MOV.L @(12,R15),R4
|
|
0000358C D113 MOV.L L1737+44,R1; H'46800000
|
|
0000358E D214 MOV.L L1737+48,R2; __muls
|
|
00003590 420B JSR @R2
|
|
00003592 0009 NOP
|
|
00003594 D313 MOV.L L1737+52,R3; __stoi
|
|
00003596 430B JSR @R3
|
|
00003598 0009 NOP
|
|
0000359A 6B03 MOV R0,R11
|
|
0000359C L1634:
|
|
Monochrome 1538 }
|
|
Monochrome 1539 nb_width = width + 7 >> 3;
|
|
0000359C 52F4 MOV.L @(16,R15),R2
|
|
Monochrome 1540
|
|
Monochrome 1541 for (i=0; i<width; i++)
|
|
0000359E 6693 MOV R9,R6
|
|
000035A0 9809 MOV.W L1737+6,R8 ; H'0080
|
|
000035A2 7207 ADD #7,R2
|
|
000035A4 4221 SHAR R2
|
|
000035A6 4221 SHAR R2
|
|
000035A8 4221 SHAR R2
|
|
000035AA 2F22 MOV.L R2,@R15
|
|
000035AC A07C BRA L1641
|
|
000035AE EA07 MOV #7,R10
|
|
000035B0 L1737:
|
|
000035B0 C000 .DATA.W H'C000
|
|
000035B2 00B4 .DATA.W H'00B4
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 158
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
000035B4 010E .DATA.W H'010E
|
|
000035B6 0080 .DATA.W H'0080
|
|
000035B8 <00000000> .DATA.L __itod
|
|
000035BC 51EB851F .DATA.L H'51EB851F
|
|
000035C0 40091EB8 .DATA.L H'40091EB8
|
|
000035C4 <00000000> .DATA.L __muld
|
|
000035C8 <00000000> .DATA.L __negd
|
|
000035CC 40668000 .DATA.L H'40668000
|
|
000035D0 <00000000> .DATA.L __divdr
|
|
000035D4 <00000000> .DATA.L __dtos
|
|
000035D8 <00000000> .DATA.L _cosf
|
|
000035DC 46800000 .DATA.L H'46800000
|
|
000035E0 <00000000> .DATA.L __muls
|
|
000035E4 <00000000> .DATA.L __stoi
|
|
000035E8 <00000000> .DATA.L _sinf
|
|
000035EC L1642:
|
|
Monochrome 1542 {
|
|
Monochrome 1543 bit = 0x80 >> (i & 7);
|
|
000035EC 6263 MOV R6,R2
|
|
000035EE 22A9 AND R10,R2
|
|
000035F0 622B NEG R2,R2
|
|
000035F2 6383 MOV R8,R3
|
|
000035F4 432C SHAD R2,R3
|
|
Monochrome 1544 i3 = i >> 3;
|
|
000035F6 6563 MOV R6,R5
|
|
000035F8 1F38 MOV.L R3,@(32,R15)
|
|
Monochrome 1545 dx = x + i - ox;
|
|
Monochrome 1546 for (j=0; j<height; j++)
|
|
000035FA 6C93 MOV R9,R12
|
|
000035FC 54F5 MOV.L @(20,R15),R4
|
|
000035FE E054 MOV #84,R0
|
|
00003600 52F2 MOV.L @(8,R15),R2
|
|
00003602 4521 SHAR R5
|
|
00003604 67F2 MOV.L @R15,R7
|
|
00003606 346C ADD R6,R4
|
|
00003608 51F7 MOV.L @(28,R15),R1
|
|
0000360A 4521 SHAR R5
|
|
0000360C 5EF6 MOV.L @(24,R15),R14
|
|
0000360E 3428 SUB R2,R4
|
|
00003610 0C77 MUL.L R7,R12
|
|
00003612 4521 SHAR R5
|
|
00003614 53F1 MOV.L @(4,R15),R3
|
|
00003616 071A STS MACL,R7
|
|
00003618 04D7 MUL.L R13,R4
|
|
0000361A 375C ADD R5,R7
|
|
0000361C 371C ADD R1,R7
|
|
0000361E 021A STS MACL,R2
|
|
00003620 1F29 MOV.L R2,@(36,R15)
|
|
00003622 04B7 MUL.L R11,R4
|
|
00003624 041A STS MACL,R4
|
|
00003626 1F4A MOV.L R4,@(40,R15)
|
|
00003628 01FE MOV.L @(R0,R15),R1
|
|
0000362A 4115 CMP/PL R1
|
|
0000362C 8F3B BF/S L1643
|
|
0000362E 3E38 SUB R3,R14
|
|
00003630 L1644:
|
|
Monochrome 1547 {
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 159
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
Monochrome 1548 dy = y + j - oy;
|
|
Monochrome 1549 xr = ox + (dx * cosinus - dy * sinus >> 14);
|
|
00003630 54F9 MOV.L @(36,R15),R4
|
|
Monochrome 1550 yr = oy + (dx * sinus + dy * cosinus >> 14);
|
|
00003632 E1F2 MOV #-14,R1
|
|
00003634 50F1 MOV.L @(4,R15),R0
|
|
00003636 65E3 MOV R14,R5
|
|
00003638 52F2 MOV.L @(8,R15),R2
|
|
0000363A 05B7 MUL.L R11,R5
|
|
0000363C 031A STS MACL,R3
|
|
0000363E 3438 SUB R3,R4
|
|
00003640 05D7 MUL.L R13,R5
|
|
00003642 E3F2 MOV #-14,R3
|
|
00003644 443C SHAD R3,R4
|
|
00003646 342C ADD R2,R4
|
|
00003648 53FA MOV.L @(40,R15),R3
|
|
0000364A 051A STS MACL,R5
|
|
0000364C 353C ADD R3,R5
|
|
0000364E 451C SHAD R1,R5
|
|
Monochrome 1551 if (!(xr < 0 || xr > 127 || yr < 0 || yr > 63))
|
|
00003650 4411 CMP/PZ R4
|
|
00003652 8F20 BF/S L1645
|
|
00003654 350C ADD R0,R5
|
|
00003656 E17F MOV #127,R1
|
|
00003658 3417 CMP/GT R1,R4
|
|
0000365A 891C BT L1645
|
|
0000365C 4511 CMP/PZ R5
|
|
0000365E 8B1A BF L1645
|
|
00003660 E33F MOV #63,R3
|
|
00003662 3537 CMP/GT R3,R5
|
|
00003664 8917 BT L1645
|
|
Monochrome 1552 {
|
|
Monochrome 1553 pixel = bmp[i3 + nb_width * j] & bit;
|
|
00003666 6170 MOV.B @R7,R1
|
|
00003668 53F8 MOV.L @(32,R15),R3
|
|
0000366A 611C EXTU.B R1,R1
|
|
0000366C 2139 AND R3,R1
|
|
Monochrome 1554 if (pixel != 0) vram[(yr<<4)+(xr>>3)] ^= 128>>(xr&7);
|
|
0000366E 2118 TST R1,R1
|
|
00003670 8D11 BT/S L1645
|
|
00003672 1F13 MOV.L R1,@(12,R15)
|
|
00003674 50FB MOV.L @(44,R15),R0
|
|
00003676 6183 MOV R8,R1
|
|
00003678 6253 MOV R5,R2
|
|
0000367A 4208 SHLL2 R2
|
|
0000367C 4208 SHLL2 R2
|
|
0000367E 6343 MOV R4,R3
|
|
00003680 4321 SHAR R3
|
|
00003682 4321 SHAR R3
|
|
00003684 4321 SHAR R3
|
|
00003686 323C ADD R3,R2
|
|
00003688 6343 MOV R4,R3
|
|
0000368A 23A9 AND R10,R3
|
|
0000368C 633B NEG R3,R3
|
|
0000368E 413C SHAD R3,R1
|
|
00003690 032C MOV.B @(R0,R2),R3
|
|
00003692 231A XOR R1,R3
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 160
|
|
|
|
|
|
SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
|
|
|
|
00003694 0234 MOV.B R3,@(R0,R2)
|
|
00003696 L1645:
|
|
00003696 7C01 ADD #1,R12
|
|
00003698 62F2 MOV.L @R15,R2
|
|
0000369A E054 MOV #84,R0
|
|
0000369C 03FE MOV.L @(R0,R15),R3
|
|
0000369E 372C ADD R2,R7
|
|
000036A0 3C33 CMP/GE R3,R12
|
|
000036A2 8FC5 BF/S L1644
|
|
000036A4 7E01 ADD #1,R14
|
|
000036A6 L1643:
|
|
000036A6 7601 ADD #1,R6
|
|
000036A8 L1641:
|
|
000036A8 53F4 MOV.L @(16,R15),R3
|
|
000036AA 3633 CMP/GE R3,R6
|
|
000036AC 8B9E BF L1642
|
|
000036AE L1631:
|
|
Monochrome 1555 }
|
|
Monochrome 1556 }
|
|
Monochrome 1557 }
|
|
Monochrome 1558 }
|
|
000036AE 7F30 ADD #48,R15
|
|
000036B0 4F16 LDS.L @R15+,MACL
|
|
000036B2 4F26 LDS.L @R15+,PR
|
|
000036B4 68F6 MOV.L @R15+,R8
|
|
000036B6 69F6 MOV.L @R15+,R9
|
|
000036B8 6AF6 MOV.L @R15+,R10
|
|
000036BA 6BF6 MOV.L @R15+,R11
|
|
000036BC 6CF6 MOV.L @R15+,R12
|
|
000036BE 6DF6 MOV.L @R15+,R13
|
|
000036C0 000B RTS
|
|
000036C2 6EF6 MOV.L @R15+,R14
|
|
Monochrome 1559 #endif
|
|
D 00000000 __$SysCallCode: ; static: SysCallCode
|
|
00000000 D201422B60 .DATA.L H'D201422B,H'60F20000,H'80010070
|
|
F200008001
|
|
0070
|
|
0000000C __$SysCall: ; static: SysCall
|
|
0000000C <00000000> .DATA.L __$SysCallCode
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SH SERIES C/C++ Compiler (Ver. 6.0C) 29-Apr-2016 12:29:42 PAGE 1
|
|
|
|
|
|
******** STATISTICS INFORMATION ********
|
|
|
|
|
|
********** ERROR INFORMATION ***********
|
|
|
|
NUMBER OF ERRORS: 0
|
|
NUMBER OF WARNINGS: 0
|
|
|
|
|
|
|
|
|
|
******* SOURCE LINE INFORMATION ********
|
|
|
|
COMPILED SOURCE LINE: 1558
|
|
|
|
|
|
|
|
******* SECTION SIZE INFORMATION *******
|
|
|
|
PROGRAM SECTION (P): 000036C4 Byte(s)
|
|
CONSTANT SECTION (C): 00000000 Byte(s)
|
|
DATA SECTION (D): 00000010 Byte(s)
|
|
BSS SECTION (B): 00000000 Byte(s)
|
|
|
|
TOTAL PROGRAM SIZE: 000036D4 Byte(s)
|
|
|
|
|
|
|
|
********** LABEL INFORMATION ***********
|
|
|
|
NUMBER OF EXTERNAL REFERENCE SYMBOLS: 21
|
|
NUMBER OF EXTERNAL DEFINITION SYMBOLS: 47
|
|
NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 581
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*** COMMAND PARAMETER ***
|
|
|
|
|
|
-subcommand=C:\Users\gabillef\AppData\Local\Temp\hmkDA78.tmp
|
|
|