FreeCalypso > hg > freecalypso-reveng
comparison frbl/reconst/command.c @ 326:a4b6b4e389b9
frbl/reconst/command.c: second function reconstruction close to perfect
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 06 Mar 2020 04:04:53 +0000 |
parents | 24d7d7875ee9 |
children | b5b8df53aa51 |
comparison
equal
deleted
inserted
replaced
325:7df08926a4e7 | 326:a4b6b4e389b9 |
---|---|
75 | 75 |
76 long | 76 long |
77 com_build_confirmation(t_com_confirmation *confirmation, | 77 com_build_confirmation(t_com_confirmation *confirmation, |
78 SYS_UWORD8 *confirmation_to_send) | 78 SYS_UWORD8 *confirmation_to_send) |
79 { | 79 { |
80 SYS_WORD32 sp8; | |
81 long sp12 = COM_SUCCESS; | |
82 SYS_UWORD8 sp16; | |
83 SYS_UWORD8 *sp20; | |
84 SYS_UWORD8 sp24; | |
85 SYS_UWORD16 *sp28; | |
86 SYS_UWORD16 sp32; | |
80 | 87 |
81 | 88 sp20 = confirmation_to_send++; |
89 *confirmation_to_send++ = COM_COMMAND_WORD(confirmation); | |
90 sp16 = 1; | |
91 *confirmation_to_send++ = COM_RESULT(confirmation); | |
92 sp16++; | |
93 switch (COM_COMMAND_WORD(confirmation)) { | |
94 case COM_GET_MONITOR_ID: /* 0x202 */ | |
95 if (COM_RESULT(confirmation)) | |
96 break; | |
97 *confirmation_to_send++ = COM_MONITOR_ID(confirmation); | |
98 *confirmation_to_send++ = | |
99 COM_MONITOR_VERSION_FIRST_NBR(confirmation); | |
100 *confirmation_to_send++ = | |
101 COM_MONITOR_VERSION_SECOND_NBR(confirmation); | |
102 sp16 += 3; | |
103 break; | |
104 case COM_GET_FLASH_ID: /* 0x23c */ | |
105 if (COM_RESULT(confirmation)) | |
106 break; | |
107 *confirmation_to_send++ = COM_FLASH_ID(confirmation); | |
108 sp16++; | |
109 break; | |
110 case COM_GET_CHIP_ID: /* 0x25a */ | |
111 if (COM_RESULT(confirmation)) | |
112 break; | |
113 *confirmation_to_send++ = COM_CHIP_ID(confirmation); | |
114 sp16++; | |
115 break; | |
116 case COM_GET_BOARD_ID: /* 0x266 */ | |
117 if (COM_RESULT(confirmation)) | |
118 break; | |
119 *confirmation_to_send++ = COM_BOARD_ID(confirmation); | |
120 sp16++; | |
121 break; | |
122 case COM_ERASE_FLASH: | |
123 break; | |
124 case COM_WRITE_DATA: /* 0x272 */ | |
125 if (COM_RESULT(confirmation)) | |
126 break; | |
127 sp32 = COM_FILE_CHECKSUM(confirmation); | |
128 *confirmation_to_send++ = (sp32 & 0xFF00) >> 8; | |
129 *confirmation_to_send++ = sp32 & 0xFF; | |
130 sp32 = COM_FLASH_CHECKSUM(confirmation); | |
131 *confirmation_to_send++ = (sp32 & 0xFF00) >> 8; | |
132 *confirmation_to_send++ = sp32 & 0xFF; | |
133 sp16 += 4; | |
134 break; | |
135 case COM_START_APPLICATION: /* 0x2dc */ | |
136 if (COM_RESULT(confirmation)) | |
137 break; | |
138 *confirmation_to_send++ = COM_STARTING_STATE(confirmation); | |
139 sp16++; | |
140 break; | |
141 case COM_READ_PARAMETERS: /* 0x2e8 */ | |
142 if (COM_RESULT(confirmation)) | |
143 break; | |
144 sp16++; | |
145 sp24 = COM_NUMBER_OF_PARAMS_READ(confirmation); | |
146 *confirmation_to_send++ = sp24; | |
147 if (sp24 > COM_MAX_NUMBER_OF_16BITS_DATA) { | |
148 sp12 = COM_PARAMETER_ERROR; | |
149 break; | |
150 } | |
151 sp28 = COM_READ_PARAMS_LIST_ADDRESS(confirmation); | |
152 for (sp8 = 0; sp8 < sp24; sp8++) { | |
153 *confirmation_to_send++ = (*sp28 & 0xFF00) >> 8; | |
154 *confirmation_to_send++ = *sp28++ & 0xFF; | |
155 sp16 += 2; | |
156 } | |
157 case COM_WRITE_PARAMETERS: | |
158 break; | |
159 case COM_LOAD_APPLICATION: /* 0x374 */ | |
160 if (COM_RESULT(confirmation)) | |
161 break; | |
162 sp32 = COM_FILE_RAM_CHECKSUM(confirmation); | |
163 *confirmation_to_send++ = (sp32 & 0xFF00) >> 8; | |
164 *confirmation_to_send++ = sp32 & 0xFF; | |
165 sp32 = COM_RAM_CHECKSUM(confirmation); | |
166 *confirmation_to_send++ = (sp32 & 0xFF00) >> 8; | |
167 *confirmation_to_send++ = sp32 & 0xFF; | |
168 sp16 += 4; | |
169 break; | |
170 case COM_SEND_RUN_ADDRESS: | |
171 break; | |
172 default: | |
173 sp12 = COM_COMMAND_UNKNOWN; | |
174 } | |
175 *sp20 = sp16; | |
176 return sp12; | |
82 } | 177 } |